@netless/appliance-plugin 1.1.20 → 1.1.21

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.
@@ -0,0 +1 @@
1
+ "use strict";var x=Object.defineProperty;var F=(w,t,e)=>t in w?x(w,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):w[t]=e;var d=(w,t,e)=>F(w,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./index-BdJLKyTl.js"),C=require("spritejs"),N=require("lodash");require("clipper-lib");require("lineclip");require("white-web-sdk");require("react-dom");require("react");require("eventemitter2");class B{constructor(t){d(this,"vNodes");d(this,"thread");d(this,"serviceWorkShapes",new Map);d(this,"localWorkShapes",new Map);d(this,"tmpOpt");d(this,"animationId");d(this,"syncUnitTime",s.DefaultAppliancePluginExtrasOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}createLocalWork(t){const{workId:e,opt:o,toolsType:r}=t;if(e&&o){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:o}),this.setWorkOptions(a,o)}}getLocalWorkShape(t){return this.localWorkShapes.get(t)}createLocalWorkShape(t,e){if(t&&this.tmpOpt){const o={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},r=this.createWorkShapeNode({...o,workId:t});return r&&this.localWorkShapes.set(t,{node:r,toolsType:r.toolsType,workState:s.EvevtWorkState.Start}),r}}canUseTopLayer(t){return t===s.EToolsKey.LaserPen}destroy(){this.clearAll()}clearAll(){this.thread.topLayer.children.length&&(this.thread.topLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),s.removeAllChildren(this.thread.serviceLayer,this.thread.serviceLayer.parent)),this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}consumeDraw(t){const{workId:e,dataType:o}=t;if(o===s.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=s.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===s.EToolsKey.LaserPen)return s.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.topLayer,drawLayer:this.thread.topLayer})}setNodeKey(t,e,o,r){return e.toolsType=o,e.node=this.createWorkShapeNode({workId:t,toolsType:o,toolsOpt:r}),e}activeServiceWorkShape(t){var y,f;const{workId:e,opt:o,toolsType:r,type:a,updateNodeOpt:i,ops:l,op:c}=t;if(!e)return;const n=e.toString(),p=(y=this.vNodes.get(n))==null?void 0:y.rect;if(!((f=this.serviceWorkShapes)!=null&&f.has(n))){let u={toolsType:r,animationWorkData:c||[],animationIndex:0,type:a,updateNodeOpt:i,ops:l,oldRect:p};r&&o&&(u=this.setNodeKey(n,u,r,o)),this.serviceWorkShapes.set(n,u)}const h=this.serviceWorkShapes.get(n);a&&(h.type=a),l&&(h.animationWorkData=s.transformToNormalData(l),h.ops=l),i&&(h.updateNodeOpt=i),c&&(h.animationWorkData=c),h.node&&h.node.getWorkId()!==n&&h.node.setWorkId(n),p&&(h.oldRect=p),r&&o&&(h.toolsType!==r&&r&&o&&this.setNodeKey(n,h,r,o),h.node&&h.node.setWorkOptions(o))}computNextAnimationIndex(t,e){var a;const o=((a=t.node)==null?void 0:a.syncUnitTime)||this.syncUnitTime,r=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/o)*e;return Math.min((t.animationIndex||0)+(r||e),(t.animationWorkData||[]).length)}animationDraw(){var r,a,i,l;this.animationId=void 0;let t=!1;const e=new Map,o=[];for(const[c,n]of this.serviceWorkShapes.entries())switch(n.toolsType){case s.EToolsKey.LaserPen:{const h=this.computNextAnimationIndex(n,8),y=Math.max(0,n.animationIndex||0),f=(n.animationWorkData||[]).slice(y,h);if((n.animationIndex||0)<h&&((r=n.node)==null||r.consumeService({op:f,isFullWork:!1}),n.animationIndex=h,f.length&&e.set(c,{workState:y===0?s.EvevtWorkState.Start:h===((a=n.animationWorkData)==null?void 0:a.length)?s.EvevtWorkState.Done:s.EvevtWorkState.Doing,op:f.slice(-2)})),n.isDel){(i=n.node)==null||i.clearTmpPoints(),this.serviceWorkShapes.delete(c);break}n.ops&&n.animationIndex===((l=n.animationWorkData)==null?void 0:l.length)&&!n.isDel&&(this.thread.topLayer.getElementsByName(c.toString())[0]||(n.isDel=!0,this.serviceWorkShapes.set(c,n))),t=!0;break}}for(const[c,n]of this.localWorkShapes.entries()){const{result:p,toolsType:h,isDel:y,workState:f}=n;switch(h){case s.EToolsKey.LaserPen:{if(y){n.node.clearTmpPoints(),this.localWorkShapes.delete(c),o.push({removeIds:[c.toString()],type:s.EPostMessageType.RemoveNode});break}p&&((p.op||p.ops)&&o.push(p),n.result=void 0),!this.thread.topLayer.getElementsByName(c.toString())[0]&&f===s.EvevtWorkState.Done&&(n.isDel=!0,this.localWorkShapes.set(c,n)),t=!0;break}}}t&&this.runAnimation(),e.size&&e.forEach((c,n)=>{o.push({type:s.EPostMessageType.Cursor,uid:n.split(s.Storage_Splitter)[0],op:c.op,workState:c.workState,viewId:this.thread.viewId})}),o.length&&this.thread.post({sp:o})}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}setWorkOptions(t,e){var r;let o=(r=this.localWorkShapes.get(t))==null?void 0:r.node;if(!o&&this.tmpOpt){const{toolsType:a}=this.tmpOpt;this.tmpOpt.toolsOpt=e,o=this.createWorkShapeNode({workId:t,toolsType:a,toolsOpt:e}),o&&this.localWorkShapes.set(t,{node:o,toolsType:a,workState:s.EvevtWorkState.Start}),this.setToolsOpt(this.tmpOpt)}e!=null&&e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),o&&o.setWorkOptions(e)}consumeDrawAll(t){const{workId:e,dataType:o}=t;if(o===s.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=s.EvevtWorkState.Done,r&&this.localWorkShapes.set(r,a)}this.runAnimation()}}class _{constructor(t){d(this,"vNodes");d(this,"thread");d(this,"workShapes",new Map);d(this,"effectSelectNodeData",new Set);d(this,"batchEraserRemoveNodes",new Set);d(this,"batchEraserWorks",new Set);d(this,"tmpOpt");d(this,"syncUnitTime",s.DefaultAppliancePluginExtrasOptions.syncOpt.interval);d(this,"fullWorkerDrawCount",0);d(this,"drawWorkActiveId");d(this,"consumeCount",0);d(this,"combineTimerId");d(this,"combineDrawResolve");d(this,"combineDrawActiveId");this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}createLocalWork(t){const{workId:e,opt:o,toolsType:r}=t;if(e&&o){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:o}),this.setWorkOptions(a,o)}}async updateSelector(t){var f;const e=this.workShapes.get(s.Storage_Selector_key);if(!((f=e==null?void 0:e.selectIds)!=null&&f.length))return;const{callback:o,...r}=t,{updateSelectorOpt:a,willSerializeData:i,smoothSync:l}=r,c=await(e==null?void 0:e.updateSelector({updateSelectorOpt:a,selectIds:N.cloneDeep(e.selectIds),vNodes:this.vNodes,willSerializeData:i,worker:this})),n=new Map;let p;c!=null&&c.selectIds&&(p=N.xor(e.selectIds,c.selectIds),c.selectIds.forEach(u=>{const m=this.vNodes.get(u);if(m){const{toolsType:S,op:T,opt:v}=m;n.set(u,{opt:v,toolsType:S,ops:(T==null?void 0:T.length)&&s.transformToSerializableData(T)||void 0})}}),e.selectIds=c.selectIds);const h=[],y=o&&o({res:c,workShapeNode:e,param:r,postData:{sp:h},newServiceStore:n,smoothSync:l})||{sp:h};p&&y.sp.push({type:s.EPostMessageType.RemoveNode,removeIds:p,viewId:this.thread.viewId}),y.sp.length&&this.thread.post(y)}destroy(){this.clearAll()}clearAll(){if(this.thread.localLayer.children.length&&(this.thread.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),s.removeAllChildren(this.thread.localLayer,this.thread.localLayer.parent)),this.workShapes.get(s.Storage_Selector_key)){const e=[];e.push({type:s.EPostMessageType.Select,dataType:s.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:o,dataType:r}=t;if(e!=null&&e.length){let a;for(const i of this.vNodes.curNodeMap.values()){const{rect:l,name:c,toolsType:n,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(n===s.EToolsKey.Text&&s.isIntersectForPoint([h,y],l)&&p.workState===s.EvevtWorkState.Done){a=c;break}}a&&(await this.blurSelector({viewId:o,msgType:s.EPostMessageType.Select,dataType:r,isSync:!0}),this.thread.post({sp:[{type:s.EPostMessageType.GetTextActive,toolsType:s.EToolsKey.Text,workId:a}]}))}}cursorHover(t){const{opt:e,toolsType:o,point:r}=t,a=this.setFullWork({workId:s.Cursor_Hover_Id,toolsType:o,opt:e});a&&r&&a.cursorHover(r)}cursorBlur(){var e;const t=this.getWorkShape(s.Cursor_Hover_Id);t&&((e=t.selectIds)!=null&&e.length)&&(t.cursorBlur(),this.clearWorkShapeNodeCache(s.Cursor_Hover_Id)),this.thread.fullLayer.parent.children.forEach(o=>{o.name==="Cursor_Hover_Id"&&o.remove()})}updateFullSelectWork(t){var r,a,i,l,c;const e=this.workShapes.get(s.Storage_Selector_key),{selectIds:o}=t;if(!(o!=null&&o.length)){this.blurSelector(t);return}if(!e){const n=this.setFullWork(t);!n&&t.workId&&this.tmpOpt&&((r=this.tmpOpt)==null?void 0:r.toolsType)===s.EToolsKey.Selector&&this.setWorkOptions(t.workId.toString(),t.opt||this.tmpOpt.toolsOpt),n&&this.updateFullSelectWork(t);return}if(e&&(o!=null&&o.length)){const{selectRect:n}=e.updateSelectIds(o),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:((l=t.opt)==null?void 0:l.fillColor)||e.fillColor,textOpt:((c=t.opt)==null?void 0:c.textOpt)||e.textOpt,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,type:s.EPostMessageType.Select,selectRect:n,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===s.EToolsKey.Text)return{type:s.EPostMessageType.TextUpdate,toolsType:s.EToolsKey.Text,workId:t,dataType:s.EDataType.Local}}async removeSelector(t){const{willSyncService:e}=t,o=[],r=[],a=this.workShapes.get(s.Storage_Selector_key);if(!a)return;const i=a.selectIds&&[...a.selectIds]||[];for(const l of i){if(this.vNodes.get(l)){const n=this.commandDeleteText(l);n&&o.push(n)}this.removeNode(l),r.push(l)}r.length&&o.push({type:s.EPostMessageType.RemoveNode,removeIds:r}),o.push({type:s.EPostMessageType.Select,selectIds:[],willSyncService:e}),await this.blurSelector(),o.length&&this.thread.post({sp:o})}removeWork(t){const{workId:e}=t,o=e==null?void 0:e.toString();o&&this.removeNode(o)}removeNode(t){var r;this.vNodes.get(t)&&((r=this.thread.fullLayer)==null||r.getElementsByName(t).forEach(a=>{a.remove(),s.removeTexture(a,this.thread.fullLayer.parent)}),this.vNodes.delete(t)),this.workShapes.has(t)&&(this.thread.localLayer.getElementsByName(t).forEach(a=>{a.remove(),s.removeTexture(a,this.thread.localLayer.parent)}),this.clearWorkShapeNodeCache(t))}setFullWork(t){const{workId:e,opt:o,toolsType:r}=t;if(e&&o&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(o)):i=this.createWorkShapeNode({toolsOpt:o,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async consumeFull(t){var r;const e=this.setFullWork(t),o=t.ops&&s.transformToNormalData(t.ops);if(e){const a=(r=t.workId)==null?void 0:r.toString();e.toolsType===s.EToolsKey.Image?await e.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this}):e.toolsType===s.EToolsKey.Text?await e.consumeServiceAsync({isFullWork:!0,replaceId:a}):e.consumeService({op:o,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:s.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(s.Storage_Selector_key),{workId:o,msgType:r}=t;if(e&&o&&e.selectIds&&e.selectIds.includes(o.toString())){r===s.EPostMessageType.RemoveNode?e.selectIds=e.selectIds.filter(a=>a!==o.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 o of this.effectSelectNodeData.values()){const r=this.setFullWork(o);if(r){const a=(e=o.workId)==null?void 0:e.toString();if(r.toolsType===s.EToolsKey.Image)await r.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this});else if(r.toolsType===s.EToolsKey.Text)await r.consumeServiceAsync({isFullWork:!0,replaceId:a});else{const i=o.ops&&s.transformToNormalData(o.ops);r.consumeService({op:i,isFullWork:!0,replaceId:a}),o!=null&&o.updateNodeOpt&&r.updataOptService(o.updateNodeOpt)}o.workId&&this.workShapes.delete(o.workId.toString())}}this.reRenderSelector(t)}hasSelector(){return this.workShapes.has(s.Storage_Selector_key)}getSelector(){return this.workShapes.get(s.Storage_Selector_key)}reRenderSelector(t=!1){var r;const e=this.workShapes.get(s.Storage_Selector_key);if(!e)return;if(e&&!((r=e.selectIds)!=null&&r.length))return this.blurSelector();const o=e.reRenderSelector();o&&this.thread.post({sp:[{type:s.EPostMessageType.Select,selectIds:e.selectIds,selectRect:o,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(s.Storage_Selector_key),o=e==null?void 0:e.blurSelector();if(this.clearWorkShapeNodeCache(s.Storage_Selector_key),((r=this.thread.fullLayer)==null?void 0:r.parent).children.forEach(a=>{a.name===s.Storage_Selector_key&&a.remove()}),o){const a=[];a.push({...o,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,o){const{willUpdateNodes:r,willDeleteNodes:a}=e,i=t.getWorkId(),l=[{type:s.EPostMessageType.RemoveNode,removeIds:[i],viewId:this.thread.viewId}];if(o&&l.push({type:s.EPostMessageType.None,isLockSentEventCursor:o}),r!=null&&r.size||a!=null&&a.size){if(r!=null&&r.size)for(const[c,n]of r)l.push({type:s.EPostMessageType.UpdateNode,dataType:s.EDataType.Local,opt:n.opt,workId:c,updateNodeOpt:{useAnimation:!1}});a!=null&&a.size&&l.push({type:s.EPostMessageType.RemoveNode,removeIds:[...a],viewId:this.thread.viewId})}l.length&&this.thread.post({sp:l})}drawPencilEraserFull(t,e,o){const{willNewNodes:r,willDeleteNodes:a}=e,i=t.getWorkId(),l=[{type:s.EPostMessageType.RemoveNode,removeIds:[i],viewId:this.thread.viewId}];if(o&&l.push({type:s.EPostMessageType.None,isLockSentEventCursor:o}),r!=null&&r.size||a!=null&&a.size){if(r!=null&&r.size)for(const[c,n]of r)l.push({type:s.EPostMessageType.FullWork,dataType:s.EDataType.Local,toolsType:n.toolsType,ops:s.transformToSerializableData(n.op),opt:n.opt,workId:c,updateNodeOpt:{useAnimation:!1}});a!=null&&a.size&&l.push({type:s.EPostMessageType.RemoveNode,removeIds:[...a],viewId:this.thread.viewId})}l.length&&this.thread.post({sp:l})}drawEraser(t,e){const o=[];t.removeIds&&o.push(t),e&&o.push({type:s.EPostMessageType.None,isLockSentEventCursor:e}),this.thread.post({sp:o,consumeCount:this.consumeCount})}getWorkShape(t){return this.workShapes.get(t)}getWorkShapes(){return this.workShapes}consumeDraw(t,e){const{op:o,workId:r,scenePath:a,postCount:i,smoothSync:l}=t;if(o!=null&&o.length&&r){const c=r.toString(),n=this.workShapes.get(c);if(!n)return;const p=n.toolsType;if(p===s.EToolsKey.LaserPen)return;switch(this.combineDrawActiveId&&this.combineDrawActiveId!==c&&(this.combineTimerId&&(clearTimeout(this.combineTimerId),this.combineTimerId=void 0,this.combineDrawResolve&&this.combineDrawResolve(!1),this.combineDrawActiveId=void 0),this.consumeDrawAll({workId:this.combineDrawActiveId,scenePath:a,viewId:this.thread.viewId,msgType:s.EPostMessageType.DrawWork,dataType:s.EDataType.Local},e)),this.drawWorkActiveId&&this.drawWorkActiveId!==c&&(this.consumeDrawAll({workId:this.drawWorkActiveId,scenePath:a,viewId:this.thread.viewId,msgType:s.EPostMessageType.DrawWork,dataType:s.EDataType.Local},e),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&c!==s.Storage_Selector_key&&(this.drawWorkActiveId=c),N.isNumber(i)&&(this.consumeCount=i),p){case s.EToolsKey.Selector:{const h=n.consume({data:t,isFullWork:!0,isMainThread:!0});this.fullWorkerDrawCount++;const y=[];h.type===s.EPostMessageType.Select&&(h.selectIds&&e.runReverseSelectWork(h.selectIds),y.push(h)),this.thread.post({consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount,sp:y});break}case s.EToolsKey.PencilEraser:case s.EToolsKey.BitMapEraser:{n.consume({data:t,isFullWork:!1,isMainThread:!0}),this.fullWorkerDrawCount++,this.thread.post({sp:void 0,consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount}),this.combineTimerId||new Promise(h=>{this.combineDrawActiveId=c,this.combineDrawResolve=h,this.combineTimerId=s.requestAsyncCallBack(()=>{this.combineTimerId=void 0,this.combineDrawResolve&&this.combineDrawResolve(!0)},this.thread.master.maxCombineEraserTime,this.thread.master.control.hasPolyfillMethod("requestIdleCallback"))}).then(h=>{h&&this.drawEraserCombine(c),this.combineDrawResolve=void 0});break}case s.EToolsKey.Eraser:{const h=n.consume({data:t,isFullWork:!0});this.drawEraser(h)}break;case s.EToolsKey.Arrow:case s.EToolsKey.Straight:case s.EToolsKey.Ellipse:case s.EToolsKey.Rectangle:case s.EToolsKey.Star:case s.EToolsKey.Polygon:case s.EToolsKey.SpeechBalloon:case s.EToolsKey.Pencil:{const h=n.consume({data:t,isFullWork:!1,isMainThread:!0,smoothSync:l});h&&(this.fullWorkerDrawCount++,this.thread.post({consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount,sp:h.op&&[{...h,scenePath:a}]||void 0}))}break}}}drawEraserCombine(t){var o,r,a,i;const e=(o=this.workShapes.get(t))==null?void 0:o.combineConsume({workerEngine:this});if(e){const{willDeleteNodes:l,willNewNodes:c}=e,n={render:[],sp:[]};if(e!=null&&e.rect){const p=s.getSafetyRect(e.rect);(r=n.render)==null||r.push({rect:p,isClear:!0,clearCanvas:s.ECanvasShowType.Bg,viewId:this.thread.viewId},{rect:p,drawCanvas:s.ECanvasShowType.Bg,viewId:this.thread.viewId})}if(l!=null&&l.size&&((a=n.sp)==null||a.push({type:s.EPostMessageType.RemoveNode,removeIds:[...l],viewId:this.thread.viewId})),c!=null&&c.size)for(const[p,h]of c)(i=n.sp)==null||i.push({type:s.EPostMessageType.FullWork,dataType:s.EDataType.Local,toolsType:h.toolsType,ops:s.transformToSerializableData(h.op),opt:h.opt,workId:p,updateNodeOpt:{useAnimation:!1}});this.thread.post(n)}}consumeDrawAll(t,e){var i,l,c;const{workId:o,scenePath:r,isLockSentEventCursor:a}=t;if(o){this.combineTimerId&&(clearTimeout(this.combineTimerId),this.combineTimerId=void 0,this.combineDrawResolve&&this.combineDrawResolve(!1),this.combineDrawActiveId=void 0);const n=o.toString();this.drawWorkActiveId===n&&(this.drawWorkActiveId=void 0);const p=this.workShapes.get(n);if(!p)return;const h=p.toolsType;if(h===s.EToolsKey.LaserPen)return;const y=this.workShapes.get(s.Cursor_Hover_Id),f=(i=y==null?void 0:y.selectIds)==null?void 0:i[0],u=p.consumeAll({data:t,workerEngine:this});switch(h){case s.EToolsKey.Selector:{u.selectIds&&f&&((l=u.selectIds)!=null&&l.includes(f))&&y.cursorBlur();const m=[];a&&m.push({type:s.EPostMessageType.None,isLockSentEventCursor:a}),u.type===s.EPostMessageType.Select&&(u.selectIds&&e.runReverseSelectWork(u.selectIds),m.push({...u,scenePath:r})),m.length&&this.thread.post({sp:m}),(c=p.selectIds)!=null&&c.length?p.clearTmpPoints():this.clearWorkShapeNodeCache(n)}break;case s.EToolsKey.PencilEraser:this.drawPencilEraserFull(p,u,a),this.fullWorkerDrawCount=0,this.clearWorkShapeNodeCache(n);break;case s.EToolsKey.BitMapEraser:this.drawBitMapEraserFull(p,u,a),this.fullWorkerDrawCount=0,this.clearWorkShapeNodeCache(n);break;case s.EToolsKey.Eraser:this.drawEraser({...u,scenePath:r},a),p.clearTmpPoints();break;case s.EToolsKey.Arrow:case s.EToolsKey.Straight:case s.EToolsKey.Ellipse:case s.EToolsKey.Rectangle:case s.EToolsKey.Star:case s.EToolsKey.Polygon:case s.EToolsKey.SpeechBalloon:case s.EToolsKey.Pencil:{const m=[];a&&m.push({type:s.EPostMessageType.None,isLockSentEventCursor:a}),u&&(m.push(u),this.fullWorkerDrawCount=0,this.thread.post({fullWorkerDrawCount:this.fullWorkerDrawCount,sp:m})),this.clearWorkShapeNodeCache(n);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 o=this.workShapes.get(t);if(!o&&this.tmpOpt){const{toolsType:r}=this.tmpOpt;this.tmpOpt.toolsOpt=e,o=this.createWorkShapeNode({workId:t,toolsType:r,toolsOpt:e}),o&&this.workShapes.set(t,o),this.setToolsOpt(this.tmpOpt)}e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),o==null||o.setWorkOptions(e)}createWorkShapeNode(t){return s.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.localLayer},this.thread.serviceWork)}}class U{constructor(t){d(this,"vNodes");d(this,"thread");d(this,"workShapes",new Map);d(this,"selectorWorkShapes",new Map);d(this,"willRunEffectSelectorIds",new Set);d(this,"runEffectId");d(this,"animationId");d(this,"syncUnitTime",s.DefaultAppliancePluginExtrasOptions.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()}),s.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 o,r;const e=this.selectorWorkShapes.get(t);e&&e.selectIds&&((o=e.node)==null||o.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,o=e==null?void 0:e.toString();o&&this.willRunEffectSelectorIds.add(o),this.runEffect()}removeWork(t){const{workId:e}=t,o=e==null?void 0:e.toString();if(o){if(this.workShapes.get(o)){this.workShapes.delete(o),this.removeNode(o,t);return}this.removeNode(o,t)}}consumeFull(t){this.activeWorkShape(t),this.runAnimation()}runReverseSelectWork(t){t.forEach(e=>{this.selectorWorkShapes.forEach((o,r)=>{var a;if((a=o.selectIds)!=null&&a.length){const i=o.selectIds.indexOf(e);i>-1&&(o.selectIds.splice(i,1),this.willRunEffectSelectorIds.add(r))}})}),this.willRunEffectSelectorIds.size&&this.runEffect()}consumeDraw(t){this.activeWorkShape(t),this.runAnimation()}computNextAnimationIndex(t,e){const o=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((t.animationIndex||0)+(o||e),(t.animationWorkData||[]).length)}async animationDraw(){var o,r,a,i,l,c,n,p,h,y,f,u,m,S,T,v,W,P,O,R;this.animationId=void 0;let t=!1;const e=new Map;for(const[g,k]of this.workShapes.entries())switch(k.toolsType){case s.EToolsKey.Image:{await((o=k.node)==null?void 0:o.consumeServiceAsync({isFullWork:!0,worker:this})),this.selectorWorkShapes.forEach((E,I)=>{var M;(M=E.selectIds)!=null&&M.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),this.workShapes.delete(g);break}case s.EToolsKey.Text:{k.node&&(await((r=k.node)==null?void 0:r.consumeServiceAsync({isFullWork:!0,replaceId:g})),this.selectorWorkShapes.forEach((E,I)=>{var M;(M=E.selectIds)!=null&&M.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(a=k.node)==null||a.clearTmpPoints(),this.workShapes.delete(g));break}case s.EToolsKey.Arrow:case s.EToolsKey.Straight:case s.EToolsKey.Rectangle:case s.EToolsKey.Ellipse:case s.EToolsKey.Star:case s.EToolsKey.Polygon:case s.EToolsKey.SpeechBalloon:{const E=!!k.ops;if((i=k.animationWorkData)!=null&&i.length){const I=k.oldRect;(l=k.node)==null||l.consumeService({op:k.animationWorkData,isFullWork:E}),E&&(this.selectorWorkShapes.forEach((M,L)=>{var b;(b=M.selectIds)!=null&&b.includes(g)&&(this.willRunEffectSelectorIds.add(L),this.runEffect())}),(c=k.node)==null||c.clearTmpPoints(),this.workShapes.delete(g)),k.isEnableCursor?e.set(g,{workState:I?k.ops?s.EvevtWorkState.Done:s.EvevtWorkState.Doing:s.EvevtWorkState.Start,op:k.animationWorkData.slice(-3,-1)}):E&&!k.useAnimation&&((n=k.updateNodeOpt)!=null&&n.useAnimation)&&e.set(g,{workState:s.EvevtWorkState.Done,op:k.animationWorkData.slice(-3,-1),uid:(p=k.updateNodeOpt)==null?void 0:p.uid}),k.animationWorkData.length=0}break}case s.EToolsKey.Pencil:{if(k.useAnimation){if(k.useAnimation){if(k.isDel){(T=k.node)==null||T.clearTmpPoints(),this.workShapes.delete(g);break}const E=3,I=this.computNextAnimationIndex(k,E),M=k.isDiff?0:Math.max(0,(k.animationIndex||0)-E),L=(k.animationWorkData||[]).slice(M,I),b=(W=(v=k.node)==null?void 0:v.getWorkId())==null?void 0:W.toString();if((k.animationIndex||0)<I||k.isDiff){if((P=k.node)==null||P.consumeService({op:L,isFullWork:!1}),k.animationIndex=I,k.isDiff&&(k.isDiff=!1),L.length&&k.isEnableCursor){const A=L.slice(-3,-1);e.set(g,{workState:M===0?s.EvevtWorkState.Start:I===((O=k.animationWorkData)==null?void 0:O.length)?s.EvevtWorkState.Done:s.EvevtWorkState.Doing,op:A})}}else k.ops&&((R=k.node)==null||R.consumeService({op:k.animationWorkData||[],isFullWork:!0,replaceId:b}),k.isDel=!0,k.isEnableCursor&&e.set(g,{workState:s.EvevtWorkState.Done,op:L.slice(-3,-1)}));t=!0;break}}else{const E=!!k.ops;if((h=k.node)==null||h.consumeService({op:k.animationWorkData||[],isFullWork:E,replaceId:g}),(y=k.node)==null||y.updataOptService(k.updateNodeOpt),E){if(!k.isEnableCursor&&((f=k.updateNodeOpt)!=null&&f.useAnimation)&&((u=k.animationWorkData)!=null&&u.length)){const I=k.animationWorkData.slice(-3,-1);e.set(g,{workState:s.EvevtWorkState.Done,op:I,uid:(m=k.updateNodeOpt)==null?void 0:m.uid})}this.selectorWorkShapes.forEach((I,M)=>{var L;(L=I.selectIds)!=null&&L.includes(g)&&(this.willRunEffectSelectorIds.add(M),this.runEffect())}),(S=k.node)==null||S.clearTmpPoints(),this.workShapes.delete(g)}}break}}if(t&&this.runAnimation(),e.size){const g=[];e.forEach((k,E)=>{g.push({type:s.EPostMessageType.Cursor,uid:k.uid||E.split(s.Storage_Splitter)[0],op:k.op,workState:k.workState,viewId:this.thread.viewId})}),this.thread.post({sp:g})}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}hasDiffData(t,e,o){const r=t.length;if(e.length<r)return!0;switch(o){case s.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 s.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,T,v;const{workId:e,opt:o,toolsType:r,type:a,updateNodeOpt:i,ops:l,op:c,useAnimation:n,imageBitmap:p,isEnableCursor:h}=t;if(!e)return;const y=e.toString(),f=(m=this.vNodes.get(y))==null?void 0:m.rect;if(!((S=this.workShapes)!=null&&S.has(y))){let W={toolsType:r,animationWorkData:c||[],animationIndex:0,type:a,updateNodeOpt:i,ops:l,useAnimation:typeof n<"u"?n:typeof(i==null?void 0:i.useAnimation)<"u"?i==null?void 0:i.useAnimation:!0,oldRect:f,isDiff:!1,imageBitmap:p,isEnableCursor:h};r&&o&&(W=this.setNodeKey(y,W,r,o)),(T=this.workShapes)==null||T.set(y,W)}const u=(v=this.workShapes)==null?void 0:v.get(y);u.isEnableCursor=h,a&&(u.type=a),l&&(u.animationWorkData=s.transformToNormalData(l),u.ops=l),i&&(u.updateNodeOpt=i),c&&(u.isDiff=this.hasDiffData(u.animationWorkData||[],c,u.toolsType),u.animationWorkData=c),u.node&&u.node.getWorkId()!==y&&u.node.setWorkId(y),f&&(u.oldRect=f),r&&o&&(o.syncUnitTime&&(this.syncUnitTime=o.syncUnitTime),u.toolsType!==r&&r&&o&&this.setNodeKey(y,u,r,o),u.node&&u.node.setWorkOptions(o)),p&&(u.imageBitmap=p)}removeNode(t,e){t.indexOf(s.Storage_Selector_key)>-1&&this.removeSelectWork(e),this.thread.fullLayer.getElementsByName(t).forEach(o=>{o.remove(),s.removeTexture(o,this.thread.fullLayer.parent)}),this.thread.serviceLayer.getElementsByName(t).forEach(o=>{o.remove(),s.removeTexture(o,this.thread.serviceLayer.parent)}),this.vNodes.delete(t)}removeSelectWork(t){const{workId:e}=t,o=e==null?void 0:e.toString();o&&(this.activeSelectorShape(t),this.willRunEffectSelectorIds.add(o)),this.runEffect()}activeSelectorShape(t){var n,p,h;const{workId:e,opt:o,toolsType:r,type:a,selectIds:i}=t;if(!e)return;const l=e.toString();if(!((n=this.selectorWorkShapes)!=null&&n.has(l))){let y={toolsType:r,selectIds:i,type:a,opt:o};r&&o&&(y=this.setNodeKey(l,y,r,o)),(p=this.selectorWorkShapes)==null||p.set(l,y)}const c=(h=this.selectorWorkShapes)==null?void 0:h.get(l);a&&(c.type=a),c.node&&c.node.getWorkId()!==l&&c.node.setWorkId(l),c.selectIds=i||[]}setNodeKey(t,e,o,r){return e.toolsType=o,e.node=s.getShapeInstance({toolsType:o,toolsOpt:r,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.serviceLayer,workId:t},this),e}}class D{constructor(){d(this,"localWork");d(this,"serviceWork");d(this,"threadEngine")}registerMainThread(t){return this.threadEngine=t,this.localWork=t.localWork,this.serviceWork=t.serviceWork,this}}class K extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.CopyNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.FullWork&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var r;const{workId:o}=e;o&&await((r=this.localWork)==null?void 0:r.consumeFull(e))}}class z extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetColorNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c}=e;o===s.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:l,textUpdateForWoker:c}=o,n=r.sp||[];if(i)for(const[p,h]of a.entries())c&&h.toolsType===s.EToolsKey.Text?n.push({...h,workId:p,type:s.EPostMessageType.TextUpdate,dataType:s.EDataType.Local,willSyncService:!0}):n.push({...h,workId:p,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:l});return{sp:n}}}class q extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.ZIndexNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l}=e;o===s.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:l}=o,c=r.sp||[];if(i&&c)for(const[n,p]of a.entries())c.push({...p,workId:n,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:l});return{sp:c}}}class H extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.TranslateNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var h,y;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c,emitEventType:n,smoothSync:p}=e;o===s.Storage_Selector_key&&r&&(r.workState===s.EvevtWorkState.Done&&(r!=null&&r.translate)&&(r.translate[0]||r.translate[1])||r.workState!==s.EvevtWorkState.Done?await((h=this.localWork)==null?void 0:h.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,isSync:!0,textUpdateForWoker:c,emitEventType:n,callback:this.updateSelectorCallback,smoothSync:p})):r.workState===s.EvevtWorkState.Done&&((y=this.localWork)==null||y.vNodes.deleteLastTarget()))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a,workShapeNode:i,res:l,smoothSync:c}=e,{willSyncService:n,isSync:p,updateSelectorOpt:h,textUpdateForWoker:y}=o,f=h.workState,u=r.sp||[];if(f===s.EvevtWorkState.Start)return{sp:[],render:[]};const m=l==null?void 0:l.selectRect;if(n){u.push({type:s.EPostMessageType.Select,selectIds:i.selectIds,selectRect:m,willSyncService:f===s.EvevtWorkState.Done?!0:c,isSync:!0,points:f===s.EvevtWorkState.Done&&i.getChildrenPoints()||void 0,textOpt:i.textOpt});const S={useAnimation:h.useAnimation||!1};h.uid&&(S.uid=h.uid);for(const[T,v]of a.entries())y&&v.toolsType===s.EToolsKey.Text?u.push({...v,workId:T,type:s.EPostMessageType.TextUpdate,dataType:s.EDataType.Local,willSyncService:f===s.EvevtWorkState.Done?!0:c,updateNodeOpt:S}):(c||f===s.EvevtWorkState.Done)&&u.push({...v,workId:T,type:s.EPostMessageType.UpdateNode,updateNodeOpt:S,isSync:p})}return{sp:u}}}class V extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.DeleteNode)}async consume(){return!1}}class $ extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.ScaleNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:o,updateNodeOpt:r,willSyncService:a,willSerializeData:i,smoothSync:l}=e;o===s.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willSyncService:a,willSerializeData:i,isSync:!0,callback:this.updateSelectorCallback.bind(this),smoothSync:l}))}updateSelectorCallback(e){const{param:o,postData:r,workShapeNode:a,res:i,newServiceStore:l,smoothSync:c}=e,{updateSelectorOpt:n,willSyncService:p}=o,h=n.workState,y=r.sp||[],f=i==null?void 0:i.selectRect;if(h===s.EvevtWorkState.Start)return{sp:[],render:[]};if(p){y.push({type:s.EPostMessageType.Select,selectIds:a.selectIds,selectRect:f,willSyncService:h===s.EvevtWorkState.Done?!0:c,isSync:!0,points:h===s.EvevtWorkState.Done&&a.getChildrenPoints()||void 0,textOpt:a.textOpt});const u={useAnimation:n.useAnimation||!1};n.uid&&(u.uid=n.uid);for(const[m,S]of l.entries())S.toolsType===s.EToolsKey.Text?y.push({...S,workId:m,type:s.EPostMessageType.TextUpdate,dataType:s.EDataType.Local,willSyncService:h===s.EvevtWorkState.Done?!0:c,updateNodeOpt:u}):(c||h===s.EvevtWorkState.Done)&&y.push({...S,workId:m,type:s.EPostMessageType.UpdateNode,updateNodeOpt:u,isSync:!0})}return{sp:y}}}class G extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.RotateNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var p;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,emitEventType:c,smoothSync:n}=e;o===s.Storage_Selector_key&&r&&await((p=this.localWork)==null?void 0:p.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,emitEventType:c,isSync:!0,callback:this.updateSelectorCallback,smoothSync:n}))}updateSelectorCallback(e){const{param:o,postData:r,workShapeNode:a,res:i,newServiceStore:l,smoothSync:c}=e,{updateSelectorOpt:n,willSyncService:p,willSerializeData:h,isSync:y}=o,f=n.workState,u=r.sp||[],m=i==null?void 0:i.selectRect;if(p){h&&f===s.EvevtWorkState.Done&&u.push({type:s.EPostMessageType.Select,selectIds:a.selectIds,selectRect:m,willSyncService:f===s.EvevtWorkState.Done?!0:c,isSync:y,points:a.getChildrenPoints()});const S={useAnimation:n.useAnimation||!1};if(n.uid&&(S.uid=n.uid),c||f===s.EvevtWorkState.Done)for(const[T,v]of l.entries())u.push({...v,workId:T,type:s.EPostMessageType.UpdateNode,updateNodeOpt:S,isSync:y})}return{sp:u}}}class j extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetFontStyle)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c}=e;o===s.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a,workShapeNode:i,res:l}=e,{willSyncService:c,isSync:n,updateSelectorOpt:p,textUpdateForWoker:h}=o,y=r.sp||[],f=l==null?void 0:l.selectRect;if(c&&y){p.fontSize&&y.push({type:s.EPostMessageType.Select,selectIds:i.selectIds,selectRect:f,willSyncService:c,isSync:n,points:i.getChildrenPoints()});for(const[u,m]of a.entries())h&&m.toolsType===s.EToolsKey.Text?y.push({...m,workId:u,type:s.EPostMessageType.TextUpdate,dataType:s.EDataType.Local,willSyncService:!0}):y.push({...m,workId:u,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:y}}}class Z extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetPoint)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c}=e;o===s.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,emitEventType:this.emitEventType,willSerializeData:l,isSync:!0,textUpdateForWoker:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a,workShapeNode:i,res:l}=e,{willSyncService:c,isSync:n}=o,p=r.sp||[],h=l==null?void 0:l.selectRect;if(c&&p){for(const[y,f]of a.entries())p.push({...f,workId:y,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});p.push({type:s.EPostMessageType.Select,selectIds:i.selectIds,selectRect:h,willSyncService:c,isSync:n,points:i.getChildrenPoints()})}return{sp:p}}}class X extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetLock)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l}=e;o===s.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a,workShapeNode:i,res:l}=e,{willSyncService:c,isSync:n,updateSelectorOpt:p}=o,h=r.sp||[],y=l==null?void 0:l.selectRect;if(c&&h){for(const[f,u]of a.entries())h.push({...u,workId:f,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});h.push({isLocked:p.isLocked,selectorColor:i.selectorColor,scaleType:i.scaleType,canRotate:i.canRotate,type:s.EPostMessageType.Select,selectIds:i.selectIds,selectRect:y,willSyncService:c,isSync:n})}return{sp:h}}}class Y extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetShapeOpt)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l}=e;o===s.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:l}=o,c=r.sp||[];if(i&&c)for(const[n,p]of a.entries())c.push({...p,workId:n,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:l});return{sp:c}}}class Q{constructor(t){d(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case s.EmitEventType.TranslateNode:return new H;case s.EmitEventType.ZIndexNode:return new q;case s.EmitEventType.CopyNode:return new K;case s.EmitEventType.SetColorNode:return new z;case s.EmitEventType.DeleteNode:return new V;case s.EmitEventType.ScaleNode:return new $;case s.EmitEventType.RotateNode:return new G;case s.EmitEventType.SetFontStyle:return new j;case s.EmitEventType.SetPoint:return new Z;case s.EmitEventType.SetLock:return new X;case s.EmitEventType.SetShapeOpt:return new Y}}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 J{constructor(t,e){d(this,"viewId");d(this,"fullLayer");d(this,"topLayer");d(this,"localLayer");d(this,"serviceLayer");d(this,"snapshotFullLayer");d(this,"vNodes");d(this,"master");d(this,"opt");d(this,"cameraOpt");d(this,"scene");d(this,"localWork");d(this,"serviceWork");d(this,"topWork");d(this,"taskUpdateCameraId");d(this,"debounceUpdateCameraId");d(this,"debounceUpdateCache",new Set);d(this,"mainThreadPostId");d(this,"combinePostMsg",new Set);d(this,"methodBuilder");d(this,"cacheImages",new Map);d(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master;const o=s.DefaultAppliancePluginExtrasOptions.bufferSize.full,r=s.DefaultAppliancePluginExtrasOptions.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===s.Main_View_Id?o:r*2}),this.topLayer=this.createLayer("topLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===s.Main_View_Id,r),contextType:"2d"}),this.localLayer=this.createLayer("localLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===s.Main_View_Id,r),contextType:"2d"}),this.serviceLayer=this.createLayer("serviceLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===s.Main_View_Id,r),contextType:"2d"}),this.vNodes=new s.VNodeManager(t,this.scene);const a={thread:this,vNodes:this.vNodes};this.localWork=new _(a),this.serviceWork=new U(a),this.topWork=new B(a),this.vNodes.init(this.fullLayer),this.methodBuilder=new Q([s.EmitEventType.CopyNode,s.EmitEventType.SetColorNode,s.EmitEventType.DeleteNode,s.EmitEventType.RotateNode,s.EmitEventType.ScaleNode,s.EmitEventType.TranslateNode,s.EmitEventType.ZIndexNode,s.EmitEventType.SetFontStyle,s.EmitEventType.SetPoint,s.EmitEventType.SetLock,s.EmitEventType.SetShapeOpt]).registerForMainThread(this)}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,o]of this.cacheImages.entries())if(e===t&&o.imageBitmap)return o.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,o]of this.cacheImages.entries())o.workId===t&&(o.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:o,opt:r,dataType:a,workId:i,workState:l,imageSrc:c,imageBitmap:n,workIds:p,isLockSentEventCursor:h}=t,y=i==null?void 0:i.toString();switch(e){case s.EPostMessageType.UpdateDpr:N.isNumber(t.dpr)&&this.updateDpr(t.dpr);break;case s.EPostMessageType.AuthClear:{const{clearUids:f,localUid:u}=t;this.vNodes.setCanClearUids(f),this.vNodes.setLocalUid(u);break}case s.EPostMessageType.Destroy:this.destroy();break;case s.EPostMessageType.Clear:this.clearAll();break;case s.EPostMessageType.UpdateCamera:await this.updateCamera(t);break;case s.EPostMessageType.UpdateTools:if(o&&r){const f={toolsType:o,toolsOpt:r};this.topWork.canUseTopLayer(o)?this.topWork.setToolsOpt(f):this.localWork.setToolsOpt(f)}break;case s.EPostMessageType.CreateWork:if(y&&r&&o){if(this.topWork.canUseTopLayer(o)){this.topWork.getToolsOpt()||this.topWork.setToolsOpt({toolsType:o,toolsOpt:r}),this.topWork.setWorkOptions(y,r);break}this.localWork.getToolsOpt()||this.localWork.setToolsOpt({toolsType:o,toolsOpt:r}),this.localWork.setWorkOptions(y,r)}break;case s.EPostMessageType.DrawWork:l===s.EvevtWorkState.Done&&a===s.EDataType.Local?(this.consumeDrawAll(a,t),o===s.EToolsKey.LaserPen&&h&&this.post({sp:[{type:s.EPostMessageType.None,isLockSentEventCursor:h}]})):this.consumeDraw(a,t);break;case s.EPostMessageType.UpdateNode:case s.EPostMessageType.FullWork:if(o&&this.topWork.canUseTopLayer(o)){this.consumeDrawAll(a,t);break}this.consumeFull(a,t);break;case s.EPostMessageType.RemoveNode:await this.removeNode(t);return;case s.EPostMessageType.Select:a===s.EDataType.Service&&(i===s.Storage_Selector_key?this.localWork.updateFullSelectWork(t):this.serviceWork.runSelectWork(t));break;case s.EPostMessageType.CursorBlur:this.localWork.cursorBlur();return;case s.EPostMessageType.CursorHover:this.localWork.cursorHover(t);break;case s.EPostMessageType.GetTextActive:a===s.EDataType.Local&&this.localWork.checkTextActive(t);break;case s.EPostMessageType.GetImageBitMap:if(c&&n&&i){const f=i.toString();this.deleteCachedImagesByWorkId(f),this.cacheImages.set(c,{imageBitmap:n,workId:f});const u=this.imageResolveMap.get(c);if(u){const{resolve:m,timer:S}=u;S&&clearTimeout(S),m&&m(c)}}break;case s.EPostMessageType.GetVNodeInfo:if(i&&p){const f=p.map(u=>this.vNodes.get(u));this.post({sp:[{type:s.EPostMessageType.GetVNodeInfo,dataType:s.EDataType.Local,workId:i,vInfo:f}]})}break}}}getIconSize(t,e,o){const r=t*o,a=e*o;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:o,workId:r}=t;if(e===s.EToolsKey.Image&&o&&r){const a=r.toString(),{src:i,type:l,width:c,height:n,strokeColor:p}=o;if(!i||!l||!c||!n)return;let h=i;if(l===s.EImageType.Iconify){const[m,S]=this.getIconSize(c,n,this.opt.displayer.dpr);h=`${i}?width=${m}&height=${S}&color=${p}`}if(this.cacheImages.has(h)){const m=this.getCachedImages(h);if(m)return m}if(this.imageResolveMap.has(h)){const m=this.getCachedImagesByWorkId(a);if(m)return m}const u=await new Promise(m=>{const S=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};S.timer&&clearTimeout(S.timer),S.resolve=m,S.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,S),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!1,type:s.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(u),this.getCachedImages(h)}}async removeNode(t){const{dataType:e,workId:o,removeIds:r}=t,a=r||[];if(o&&a.push(o.toString()),a.length)for(const i of a){if(i===s.Storage_Selector_key){await this.localWork.removeSelector(t);continue}e===s.EDataType.Local?this.localWork.removeWork(t):e===s.EDataType.Service&&this.serviceWork.removeWork(t),await this.localWork.colloctEffectSelectWork(t)}}async consumeFull(t,e){const o=await this.localWork.colloctEffectSelectWork(e);o&&t===s.EDataType.Local&&await this.localWork.consumeFull(o),o&&t===s.EDataType.Service&&this.serviceWork.consumeFull(o)}setCameraOpt(t){this.cameraOpt=t;const{scale:e,centerX:o,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",[-o,-r]),this.topLayer.setAttribute("scale",[e,e]),this.topLayer.setAttribute("translate",[-o,-r]),this.localLayer.setAttribute("scale",[e,e]),this.localLayer.setAttribute("translate",[-o,-r]),this.serviceLayer.setAttribute("scale",[e,e]),this.serviceLayer.setAttribute("translate",[-o,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var r;this.mainThreadPostId=void 0;const t=[];let e,o;for(const a of this.combinePostMsg.values()){if((r=a.sp)!=null&&r.length)for(const i of a.sp){let l=!1;for(const c of t)if(N.isEqual(i,c)){l=!0;break}l||t.push(i)}N.isNumber(a.fullWorkerDrawCount)&&(e=a.fullWorkerDrawCount),N.isNumber(a.consumeCount)&&(o=a.consumeCount)}return this.combinePostMsg.clear(),{sp:t,fullWorkerDrawCount:e,consumeCount:o}}combinePost(){var o,r;const t=this.combinePostData(),e=(o=t.sp)==null?void 0:o.filter(a=>a.type!==s.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()}),s.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:s.EPostMessageType.Clear}]})}consumeDrawAll(t,e){const{toolsType:o,workId:r}=e;if(r){const a=r.toString();if(o&&this.topWork.canUseTopLayer(o)){t===s.EDataType.Local&&(this.topWork.getLocalWorkShape(r.toString())||this.topWork.createLocalWork(e)),this.topWork.consumeDrawAll(e);return}t===s.EDataType.Local&&(this.localWork.getWorkShape(a)||this.localWork.createLocalWork(e),this.localWork.consumeDrawAll(e,this.serviceWork))}}consumeDraw(t,e){const{opt:o,workId:r,toolsType:a}=e;if(r&&a&&o){const i=r.toString();if(this.topWork.canUseTopLayer(a)){t===s.EDataType.Local&&(this.topWork.getLocalWorkShape(i)||this.topWork.createLocalWork(e)),this.topWork.consumeDraw(e);return}t===s.EDataType.Local?(this.localWork.getWorkShape(i)||this.localWork.createLocalWork(e),this.localWork.consumeDraw(e,this.serviceWork)):t===s.EDataType.Service&&this.serviceWork.consumeDraw(e);return}}async updateCamera(t){var r;const{cameraOpt:e,scenePath:o}=t;if(e&&!N.isEqual(this.cameraOpt,e)){if(this.taskUpdateCameraId&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0),o){let n=!1;for(const[p,h]of this.localWork.getWorkShapes().entries())switch(h.toolsType){case s.EToolsKey.Text:case s.EToolsKey.BitMapEraser:case s.EToolsKey.PencilEraser:case s.EToolsKey.Eraser:case s.EToolsKey.Selector:case s.EToolsKey.LaserPen:break;default:p!==s.Cursor_Hover_Id&&p!==s.Storage_Selector_key&&(n=!0);break}if(n){this.taskUpdateCameraId=setTimeout(()=>{this.taskUpdateCameraId=void 0,this.updateCamera(t)},s.Task_Time_Interval);return}}const a=new Map;for(const[n,p]of this.vNodes.getNodesByType(s.EToolsKey.Text).entries()){const h=p.rect;a.set(n,N.cloneDeep(h))}const i=new Set(a.keys());let l=!1;if(this.localWork.hasSelector()){const n=(r=this.localWork.getSelector())==null?void 0:r.selectIds;if(n){l=!0;for(const p of n)i.add(p)}}let c=!1;if(this.serviceWork.selectorWorkShapes.size)for(const n of this.serviceWork.selectorWorkShapes.values()){const p=n.selectIds;if(p){c=!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[n,p]of a.entries()){const h=this.vNodes.get(n);if(h){const y=p,f=h.rect,u=this.getSceneRect(),m=s.getRectMatrixrRelation(y,u),S=s.getRectMatrixrRelation(f,u);let T=!1;if((m!==S||y.w!==f.w||y.h!==f.h||S===s.EMatrixrRelationType.intersect)&&(T=!0),T){const{toolsType:v,opt:W}=h;v===s.EToolsKey.Text&&W.workState===s.EvevtWorkState.Done&&this.debounceUpdateCache.add(n)}}}if(l&&this.localWork.reRenderSelector(),c)for(const[n,p]of this.serviceWork.selectorWorkShapes.entries())this.serviceWork.runSelectWork({workId:n,selectIds:p.selectIds,msgType:s.EPostMessageType.Select,dataType:s.EDataType.Service,viewId:this.viewId});this.debounceUpdateCameraId=setTimeout(()=>{var p;this.debounceUpdateCameraId=void 0;const n=[];for(const h of this.debounceUpdateCache.values()){if((p=this.fullLayer)==null?void 0:p.getElementsByName(h)[0]){const f=this.vNodes.get(h);if(f){const{toolsType:u,opt:m,rect:S}=f,T=this.localWork.setFullWork({toolsType:u,opt:m,workId:h});if(T){const v=this.getSceneRect(),W=s.getRectMatrixrRelation(S,v);n.push(T.consumeServiceAsync({isFullWork:!0,replaceId:h,isDrawLabel:W!==s.EMatrixrRelationType.outside}))}}}this.debounceUpdateCache.delete(h)}this.vNodes.updateLowLevelNodesRect(),this.vNodes.clearHighLevelIds()},s.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,o){const{width:r,height:a}=o,i=`canvas-${t}`,l=e.layer(i,{...o,offscreen:!1}),c=new C.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return l.append(c),c}updateScene(t){this.scene.attr({...t});const{width:e,height:o}=t;this.scene.width=e,this.scene.height=o,this.updateLayer({width:e,height:o})}updateLayer(t){const{width:e,height:o}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",o),this.fullLayer.setAttribute("size",[e,o]),this.fullLayer.setAttribute("pos",[e*.5,o*.5]),this.topLayer.parent.setAttribute("width",e),this.topLayer.parent.setAttribute("height",o),this.topLayer.setAttribute("size",[e,o]),this.topLayer.setAttribute("pos",[e*.5,o*.5]),this.localLayer.parent.setAttribute("width",e),this.localLayer.parent.setAttribute("height",o),this.localLayer.setAttribute("size",[e,o]),this.localLayer.setAttribute("pos",[e*.5,o*.5]),this.serviceLayer.parent.setAttribute("width",e),this.serviceLayer.parent.setAttribute("height",o),this.serviceLayer.setAttribute("size",[e,o]),this.serviceLayer.setAttribute("pos",[e*.5,o*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.vNodes.clear(),this.fullLayer.remove(),s.removeTexture(this.fullLayer,this.fullLayer.parent),this.topLayer.remove(),s.removeTexture(this.topLayer,this.topLayer.parent),this.localLayer.remove(),s.removeTexture(this.localLayer,this.localLayer.parent),this.serviceLayer.remove(),s.removeTexture(this.serviceLayer,this.serviceLayer.parent),this.scene.remove(),this.localWork.destroy(),this.serviceWork.destroy(),this.topWork.destroy()}}class ee{constructor(t,e){d(this,"viewId");d(this,"fullLayer");d(this,"master");d(this,"opt");d(this,"scene");d(this,"mainThreadPostId");d(this,"combinePostMsg",new Set);d(this,"workShapes",new Map);d(this,"cacheImages",new Map);d(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===s.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,o]of this.cacheImages.entries())if(e===t&&o.imageBitmap)return o.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,o]of this.cacheImages.entries())o.workId===t&&(o.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:o,imageBitmap:r,workId:a}=t;switch(e){case s.EPostMessageType.Snapshot:await this.getSnapshot(t),this.destroy();return;case s.EPostMessageType.BoundingBox:await this.getBoundingRect(t),this.destroy();return;case s.EPostMessageType.GetImageBitMap:if(o&&r&&a){const i=a.toString();this.deleteCachedImagesByWorkId(i),this.cacheImages.set(o,{imageBitmap:r,workId:i});const l=this.imageResolveMap.get(o);if(l){const{resolve:c,timer:n}=l;n&&clearTimeout(n),c&&c(o)}}break}}getIconSize(t,e,o){const r=t*o,a=e*o;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:o,workId:r}=t;if(e===s.EToolsKey.Image&&o&&r){const a=r.toString(),{src:i,type:l,width:c,height:n,strokeColor:p}=o;if(!i||!l||!c||!n)return;let h=i;if(l===s.EImageType.Iconify){const[m,S]=this.getIconSize(c,n,this.opt.displayer.dpr);h=`${i}?width=${m}&height=${S}&color=${p}`}if(this.cacheImages.has(h)){const m=this.getCachedImages(h);if(m)return m}if(this.imageResolveMap.has(h)){const m=this.getCachedImagesByWorkId(a);if(m)return m}const u=await new Promise(m=>{const S=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};S.timer&&clearTimeout(S.timer),S.resolve=m,S.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,S),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!0,type:s.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(u),this.getCachedImages(h)}}createWorkShapeNode(t){return s.getShapeInstance({...t,fullLayer:this.fullLayer,drawLayer:void 0})}setFullWork(t){const{workId:e,opt:o,toolsType:r}=t;if(e&&o&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(o)):i=this.createWorkShapeNode({toolsOpt:o,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async runFullWork(t){var r;const e=this.setFullWork(t),o=t.ops&&s.transformToNormalData(t.ops);if(e){let a,i;const l=(r=e.getWorkId())==null?void 0:r.toString();return e.toolsType===s.EToolsKey.Image?a=await e.consumeServiceAsync({isFullWork:!0,worker:this}):e.toolsType===s.EToolsKey.Text?a=await e.consumeServiceAsync({isFullWork:!0,replaceId:l,isDrawLabel:!0}):(a=e.consumeService({op:o,isFullWork:!0,replaceId:l}),i=(t==null?void 0:t.updateNodeOpt)&&e.updataOptService(t.updateNodeOpt)),s.computRect(a,i)}}async getSnapshot(t){const{scenePath:e,scenes:o,cameraOpt:r,w:a,h:i}=t;if(e&&o&&r){this.setCameraOpt(r);let l;for(const[n,p]of Object.entries(o))if(p!=null&&p.type)switch(p==null?void 0:p.type){case s.EPostMessageType.UpdateNode:case s.EPostMessageType.FullWork:{const{opt:h}=p,y={...p,opt:h,workId:n,msgType:s.EPostMessageType.FullWork,dataType:s.EDataType.Service,viewId:this.viewId},f=await this.runFullWork(y);l=s.computRect(l,f);break}}let c;a&&i&&(c={resizeWidth:a,resizeHeight:i}),await this.getSnapshotRender({scenePath:e,options:c})}}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 o=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,o,r,a,i,e)}async getSnapshotRender(t){var a;const{scenePath:e,options:o}=t;((a=this.fullLayer)==null?void 0:a.parent).render();const r=await this.getRectImageBitmap(this.getSceneRect(),o);r&&(this.post({sp:[{type:s.EPostMessageType.Snapshot,scenePath:e,imageBitmap:r,viewId:this.viewId}]}),this.fullLayer&&s.removeAllChildren(this.fullLayer,this.fullLayer.parent))}async getBoundingRect(t){const{scenePath:e,scenes:o,cameraOpt:r}=t;if(e&&o&&r){this.setCameraOpt(r);let a;for(const[i,l]of Object.entries(o))if(l!=null&&l.type)switch(l==null?void 0:l.type){case s.EPostMessageType.UpdateNode:case s.EPostMessageType.FullWork:{const c=await this.runFullWork({...l,workId:i,msgType:s.EPostMessageType.FullWork,dataType:s.EDataType.Service,viewId:this.viewId});a=s.computRect(a,c);break}}a&&this.post({sp:[{type:s.EPostMessageType.BoundingBox,scenePath:e,rect:a}]})}}setCameraOpt(t){const{scale:e,centerX:o,centerY:r,width:a,height:i}=t;this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-o,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var e;this.mainThreadPostId=void 0;const t=[];for(const o of this.combinePostMsg.values())if((e=o.sp)!=null&&e.length)for(const r of o.sp){let a=!1;for(const i of t)if(s.isEqual(r,i)){a=!0;break}a||t.push(r)}return this.combinePostMsg.clear(),{sp:t}}combinePost(){var o,r;const t=this.combinePostData(),e=(o=t.sp)==null?void 0:o.filter(a=>a.type!==s.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,o){const{width:r,height:a}=o,i=`canvas-${t}`,l=e.layer(i,o),c=new C.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return l.append(c),c}updateScene(t){this.scene.attr({...t});const{width:e,height:o}=t;this.scene.width=e,this.scene.height=o,this.updateLayer({width:e,height:o})}updateLayer(t){const{width:e,height:o}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",o),this.fullLayer.setAttribute("size",[e,o]),this.fullLayer.setAttribute("pos",[e*.5,o*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.fullLayer.remove(),s.removeTexture(this.fullLayer,this.fullLayer.parent),this.scene.remove()}}class te{constructor(t){d(this,"mainThreadMap",new Map);d(this,"snapshotThread");d(this,"master");this.master=t}post(t){const{fullWorkerDrawCount:e,sp:o,workerTasksqueueCount:r,consumeCount:a}=t;this.master.isBusy&&s.isNumber(r)&&this.master.setWorkerTasksqueueCount(r),s.isNumber(e)&&this.master.setMaxDrawCount(e),s.isNumber(a)&&this.master.setConsumeCount(a),o&&this.master.collectorSyncData(o)}destroy(){this.mainThreadMap.clear()}createMainThread(t,e){return new J(t,e)}createSnapshotThread(t,e){return new ee(t,e)}async consume(t){var e,o,r,a;for(const i of t.values()){const{msgType:l,viewId:c,tasksqueue:n,mainTasksqueueCount:p,layerOpt:h,offscreenCanvasOpt:y,cameraOpt:f,isSubWorker:u}=i;if(l===s.EPostMessageType.Console){console.log(this);continue}if(l===s.EPostMessageType.Init){const S=(e=this.master.control.viewContainerManager.getView(c))==null?void 0:e.displayer,T=S==null?void 0:S.canvasContainerRef.current;if(S&&T&&h&&y){const v=this.createMainThread(c,{displayer:S,container:T,layerOpt:h,master:this.master,canvasOpt:y,post:this.post.bind(this)});this.mainThreadMap.set(c,v),v&&f&&v.setCameraOpt(f)}continue}if((l===s.EPostMessageType.Snapshot||l===s.EPostMessageType.BoundingBox)&&c===((o=this.master.control.viewContainerManager.mainView)==null?void 0:o.id)){const S=(r=this.master.control.viewContainerManager.getView(c))==null?void 0:r.displayer,T=(a=S.snapshotContainerRef)==null?void 0:a.current;if(S&&T&&f){T.style.width=`${f.width}px`,T.style.height=`${f.height}px`;const v={...s.ViewContainerManager.defaultLayerOpt,offscreen:!1,width:f.width,height:f.height},W={...s.ViewContainerManager.defaultScreenCanvasOpt,width:f.width,height:f.height};this.snapshotThread=this.createSnapshotThread(c,{displayer:S,container:T,layerOpt:v,master:this.master,canvasOpt:W,post:this.post.bind(this)}),this.snapshotThread.on(i).then(()=>{this.snapshotThread=void 0,T.innerHTML="",T.style.width="",T.style.height=""});continue}}if(l===s.EPostMessageType.GetImageBitMap&&u&&this.snapshotThread){this.snapshotThread.on(i);continue}if(l===s.EPostMessageType.TasksQueue&&(n!=null&&n.size)){for(const[S,T]of this.mainThreadMap.entries()){const v=n.get(S);v&&(await T.on(v),p&&this.post({workerTasksqueueCount:p}))}continue}if(c===s.Storage_ViewId_ALL){for(const S of this.mainThreadMap.values())S.on(i),l===s.EPostMessageType.Destroy&&this.mainThreadMap.delete(c);continue}const m=this.mainThreadMap.get(c);m&&(m.on(i),l===s.EPostMessageType.Destroy&&this.mainThreadMap.delete(c))}}}exports.MainThreadManagerImpl=te;
@@ -1147,7 +1147,7 @@ function Cg(r) {
1147
1147
  return vg(r, Ng | Sg);
1148
1148
  }
1149
1149
  var kg = Cg;
1150
- const Ye = /* @__PURE__ */ Jt(kg), fn = "1.1.20", xg = "@netless/appliance-plugin", lo = typeof OffscreenCanvas == "function" ? "worker" : "mainThread";
1150
+ const Ye = /* @__PURE__ */ Jt(kg), fn = "1.1.21", xg = "@netless/appliance-plugin", lo = typeof OffscreenCanvas == "function" ? "worker" : "mainThread";
1151
1151
  if (typeof window < "u") {
1152
1152
  let r = window.__netlessUA || "";
1153
1153
  r += ` ${xg}@${fn}`, window.__netlessUA = r;
@@ -11410,7 +11410,7 @@ class rm extends nm {
11410
11410
  }
11411
11411
  async useMainThread() {
11412
11412
  console.info("no OffscreenCanvas");
11413
- const { MainThreadManagerImpl: e } = await import("./index-B1bgEw1H.mjs");
11413
+ const { MainThreadManagerImpl: e } = await import("./index-BZCUBik5.mjs");
11414
11414
  this.mainThread = new e(this);
11415
11415
  }
11416
11416
  async on() {
@@ -21327,25 +21327,26 @@ class SI extends hm {
21327
21327
  }
21328
21328
  export {
21329
21329
  Lo as A,
21330
- ne as B,
21330
+ ae as B,
21331
21331
  NI as C,
21332
21332
  Ce as D,
21333
21333
  A as E,
21334
- dt as F,
21335
- Kn as G,
21336
- us as H,
21334
+ ne as F,
21335
+ dt as G,
21336
+ Kn as H,
21337
21337
  re as I,
21338
- yi as J,
21339
- wi as K,
21340
- he as L,
21338
+ us as J,
21339
+ yi as K,
21340
+ wi as L,
21341
21341
  me as M,
21342
- qn as N,
21343
- Ze as O,
21344
- gt as P,
21345
- hm as Q,
21346
- SI as R,
21342
+ he as N,
21343
+ qn as O,
21344
+ Ze as P,
21345
+ gt as Q,
21346
+ hm as R,
21347
21347
  st as S,
21348
21348
  Ln as T,
21349
+ SI as U,
21349
21350
  Vf as V,
21350
21351
  T as a,
21351
21352
  F as b,
@@ -21354,23 +21355,23 @@ export {
21354
21355
  Xe as e,
21355
21356
  ot as f,
21356
21357
  xs as g,
21357
- Dt as h,
21358
+ ft as h,
21358
21359
  Ly as i,
21359
- Ne as j,
21360
- B as k,
21361
- Gt as l,
21362
- Wn as m,
21363
- Ht as n,
21364
- de as o,
21365
- Nt as p,
21366
- Ge as q,
21360
+ Dt as j,
21361
+ Ne as k,
21362
+ B as l,
21363
+ Gt as m,
21364
+ Wn as n,
21365
+ Ht as o,
21366
+ de as p,
21367
+ Nt as q,
21367
21368
  et as r,
21368
- ri as s,
21369
+ Ge as s,
21369
21370
  ii as t,
21370
- Vi as u,
21371
- TI as v,
21372
- vI as w,
21373
- Po as x,
21374
- Eo as y,
21375
- ae as z
21371
+ ri as u,
21372
+ Vi as v,
21373
+ TI as w,
21374
+ vI as x,
21375
+ Po as y,
21376
+ Eo as z
21376
21377
  };
package/dist/subWorker.js CHANGED
@@ -396,7 +396,7 @@ _inherits(o,_r$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
  s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||// Skip index properties.
399
- Rf(c,a)))&&o.push(c);return o;}var Ii=Bf,Wf=Object.prototype;function Ff(u){var e=u&&u.constructor,t=typeof e=="function"&&e.prototype||Wf;return u===t;}var tn=Ff;function Uf(u,e){return function(t){return u(e(t));};}var Mi=Uf,jf=Mi,Yf=jf(Object.keys,Object),Xf=Yf,zf=tn,$f=Xf,Gf=Object.prototype,Hf=Gf.hasOwnProperty;function Vf(u){if(!zf(u))return $f(u);var e=[];for(var t in Object(u))Hf.call(u,t)&&t!="constructor"&&e.push(t);return e;}var Kf=Vf,kf=pi,Zf=Ci;function Jf(u){return u!=null&&Zf(u.length)&&!kf(u);}var en=Jf,Qf=Ii,qf=Kf,_f=en;function th(u){return _f(u)?Qf(u):qf(u);}var rn=th,eh=Br,rh=rn;function nh(u,e){return u&&eh(e,rh(e),u);}var ih=nh;function sh(u){var e=[];if(u!=null)for(var t in Object(u))e.push(t);return e;}var oh=sh,ah=hr,lh=tn,ch=oh,fh=Object.prototype,hh=fh.hasOwnProperty;function uh(u){if(!ah(u))return ch(u);var e=lh(u),t=[];for(var r in u)r=="constructor"&&(e||!hh.call(u,r))||t.push(r);return t;}var dh=uh,ph=Ii,mh=dh,vh=en;function gh(u){return vh(u)?ph(u,!0):mh(u);}var nn=gh,yh=Br,Ph=nn;function xh(u,e){return u&&yh(e,Ph(e),u);}var Sh=xh,xr={exports:{}};xr.exports;(function(u,e){var t=Ee,r=e&&!e.nodeType&&e,n=r&&!0&&u&&!u.nodeType&&u,s=n&&n.exports===r,l=s?t.Buffer:void 0,o=l?l.allocUnsafe:void 0;function a(c,y){if(y)return c.slice();var f=c.length,g=o?o(f):new c.constructor(f);return c.copy(g),g;}u.exports=a;})(xr,xr.exports);var Th=xr.exports;function Ch(u,e){var t=-1,r=u.length;for(e||(e=Array(r));++t<r;)e[t]=u[t];return e;}var Oh=Ch;function Ih(u,e){for(var t=-1,r=u==null?0:u.length,n=0,s=[];++t<r;){var l=u[t];e(l,t,u)&&(s[n++]=l);}return s;}var Ei=Ih;function Mh(){return[];}var Ai=Mh,Eh=Ei,Ah=Ai,Lh=Object.prototype,wh=Lh.propertyIsEnumerable,wn=Object.getOwnPropertySymbols,Rh=wn?function(u){return u==null?[]:(u=Object(u),Eh(wn(u),function(e){return wh.call(u,e);}));}:Ah,sn=Rh,Dh=Br,bh=sn;function Nh(u,e){return Dh(u,bh(u),e);}var Bh=Nh;function Wh(u,e){for(var t=-1,r=e.length,n=u.length;++t<r;)u[n+t]=e[t];return u;}var on=Wh,Fh=Mi,Uh=Fh(Object.getPrototypeOf,Object),Li=Uh,jh=on,Yh=Li,Xh=sn,zh=Ai,$h=Object.getOwnPropertySymbols,Gh=$h?function(u){for(var e=[];u;)jh(e,Xh(u)),u=Yh(u);return e;}:zh,wi=Gh,Hh=Br,Vh=wi;function Kh(u,e){return Hh(u,Vh(u),e);}var kh=Kh,Zh=on,Jh=ur;function Qh(u,e,t){var r=e(u);return Jh(u)?r:Zh(r,t(u));}var Ri=Qh,qh=Ri,_h=sn,tu=rn;function eu(u){return qh(u,tu,_h);}var Di=eu,ru=Ri,nu=wi,iu=nn;function su(u){return ru(u,iu,nu);}var ou=su,au=Ue,lu=Ee,cu=au(lu,"DataView"),fu=cu,hu=Ue,uu=Ee,du=hu(uu,"Promise"),pu=du,mu=Ue,vu=Ee,gu=mu(vu,"Set"),bi=gu,yu=Ue,Pu=Ee,xu=yu(Pu,"WeakMap"),Su=xu,zr=fu,$r=Qr,Gr=pu,Hr=bi,Vr=Su,Ni=Je,er=mi,Rn="[object Map]",Tu="[object Object]",Dn="[object Promise]",bn="[object Set]",Nn="[object WeakMap]",Bn="[object DataView]",Cu=er(zr),Ou=er($r),Iu=er(Gr),Mu=er(Hr),Eu=er(Vr),Fe=Ni;(zr&&Fe(new zr(new ArrayBuffer(1)))!=Bn||$r&&Fe(new $r())!=Rn||Gr&&Fe(Gr.resolve())!=Dn||Hr&&Fe(new Hr())!=bn||Vr&&Fe(new Vr())!=Nn)&&(Fe=function Fe(u){var e=Ni(u),t=e==Tu?u.constructor:void 0,r=t?er(t):"";if(r)switch(r){case Cu:return Bn;case Ou:return Rn;case Iu:return Dn;case Mu:return bn;case Eu:return Nn;}return e;});var Fr=Fe,Au=Object.prototype,Lu=Au.hasOwnProperty;function wu(u){var e=u.length,t=new u.constructor(e);return e&&typeof u[0]=="string"&&Lu.call(u,"index")&&(t.index=u.index,t.input=u.input),t;}var Ru=wu,Du=Ee,bu=Du.Uint8Array,Bi=bu,Wn=Bi;function Nu(u){var e=new u.constructor(u.byteLength);return new Wn(e).set(new Wn(u)),e;}var an=Nu,Bu=an;function Wu(u,e){var t=e?Bu(u.buffer):u.buffer;return new u.constructor(t,u.byteOffset,u.byteLength);}var Fu=Wu,Uu=/\w*$/;function ju(u){var e=new u.constructor(u.source,Uu.exec(u));return e.lastIndex=u.lastIndex,e;}var Yu=ju,Fn=fr,Un=Fn?Fn.prototype:void 0,jn=Un?Un.valueOf:void 0;function Xu(u){return jn?Object(jn.call(u)):{};}var zu=Xu,$u=an;function Gu(u,e){var t=e?$u(u.buffer):u.buffer;return new u.constructor(t,u.byteOffset,u.length);}var Hu=Gu,Vu=an,Ku=Fu,ku=Yu,Zu=zu,Ju=Hu,Qu="[object Boolean]",qu="[object Date]",_u="[object Map]",td="[object Number]",ed="[object RegExp]",rd="[object Set]",nd="[object String]",id="[object Symbol]",sd="[object ArrayBuffer]",od="[object DataView]",ad="[object Float32Array]",ld="[object Float64Array]",cd="[object Int8Array]",fd="[object Int16Array]",hd="[object Int32Array]",ud="[object Uint8Array]",dd="[object Uint8ClampedArray]",pd="[object Uint16Array]",md="[object Uint32Array]";function vd(u,e,t){var r=u.constructor;switch(e){case sd:return Vu(u);case Qu:case qu:return new r(+u);case od:return Ku(u,t);case ad:case ld:case cd:case fd:case hd:case ud:case dd:case pd:case md:return Ju(u,t);case _u:return new r();case td:case nd:return new r(u);case ed:return ku(u);case rd:return new r();case id:return Zu(u);}}var gd=vd,yd=hr,Yn=Object.create,Pd=/* @__PURE__ */function(){function u(){}return function(e){if(!yd(e))return{};if(Yn)return Yn(e);u.prototype=e;var t=new u();return u.prototype=void 0,t;};}(),xd=Pd,Sd=xd,Td=Li,Cd=tn;function Od(u){return typeof u.constructor=="function"&&!Cd(u)?Sd(Td(u)):{};}var Id=Od,Md=Fr,Ed=we,Ad="[object Map]";function Ld(u){return Ed(u)&&Md(u)==Ad;}var wd=Ld,Rd=wd,Dd=Wr,Xn=_r,zn=Xn&&Xn.isMap,bd=zn?Dd(zn):Rd,Nd=bd,Bd=Fr,Wd=we,Fd="[object Set]";function Ud(u){return Wd(u)&&Bd(u)==Fd;}var jd=Ud,Yd=jd,Xd=Wr,$n=_r,Gn=$n&&$n.isSet,zd=Gn?Xd(Gn):Yd,Wi=zd,$d=/* @__PURE__ */Ne(Wi),Gd=gi,Hd=mc,Vd=xi,Kd=ih,kd=Sh,Zd=Th,Jd=Oh,Qd=Bh,qd=kh,_d=Di,tp=ou,ep=Fr,rp=Ru,np=gd,ip=Id,sp=ur,op=qr,ap=Nd,lp=hr,cp=Wi,fp=rn,hp=nn,up=1,dp=2,pp=4,Fi="[object Arguments]",mp="[object Array]",vp="[object Boolean]",gp="[object Date]",yp="[object Error]",Ui="[object Function]",Pp="[object GeneratorFunction]",xp="[object Map]",Sp="[object Number]",ji="[object Object]",Tp="[object RegExp]",Cp="[object Set]",Op="[object String]",Ip="[object Symbol]",Mp="[object WeakMap]",Ep="[object ArrayBuffer]",Ap="[object DataView]",Lp="[object Float32Array]",wp="[object Float64Array]",Rp="[object Int8Array]",Dp="[object Int16Array]",bp="[object Int32Array]",Np="[object Uint8Array]",Bp="[object Uint8ClampedArray]",Wp="[object Uint16Array]",Fp="[object Uint32Array]",re={};re[Fi]=re[mp]=re[Ep]=re[Ap]=re[vp]=re[gp]=re[Lp]=re[wp]=re[Rp]=re[Dp]=re[bp]=re[xp]=re[Sp]=re[ji]=re[Tp]=re[Cp]=re[Op]=re[Ip]=re[Np]=re[Bp]=re[Wp]=re[Fp]=!0;re[yp]=re[Ui]=re[Mp]=!1;function gr(u,e,t,r,n,s){var l,o=e&up,a=e&dp,c=e&pp;if(t&&(l=n?t(u,r,n,s):t(u)),l!==void 0)return l;if(!lp(u))return u;var y=sp(u);if(y){if(l=rp(u),!o)return Jd(u,l);}else{var f=ep(u),g=f==Ui||f==Pp;if(op(u))return Zd(u,o);if(f==ji||f==Fi||g&&!n){if(l=a||g?{}:ip(u),!o)return a?qd(u,kd(l,u)):Qd(u,Kd(l,u));}else{if(!re[f])return n?u:{};l=np(u,f,o);}}s||(s=new Gd());var x=s.get(u);if(x)return x;s.set(u,l),cp(u)?u.forEach(function(P){l.add(gr(P,e,t,P,u,s));}):ap(u)&&u.forEach(function(P,C){l.set(C,gr(P,e,t,C,u,s));});var M=c?a?tp:_d:a?hp:fp,S=y?void 0:M(u);return Hd(S||u,function(P,C){S&&(C=P,P=u[C]),Vd(l,C,gr(P,e,t,C,u,s));}),l;}var Up=gr,jp=Up,Yp=1,Xp=4;function zp(u){return jp(u,Yp|Xp);}var $p=zp,he=/* @__PURE__ */Ne($p);var Yi="1.1.20",Gp="@netless/appliance-plugin";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var u=window.__netlessUA||"";u+=" ".concat(Gp,"@").concat(Yi),window.__netlessUA=u;}var Te={useWorker:"auto",syncOpt:{interval:300,smoothSync:!0},cursor:{enable:!0,expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{enable:!0,maxDrawCount:1/0,combineUnitTime:300},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920,maxCombineTime:500},strokeWidth:{min:1,max:10},textEditor:{showFloatBar:!0,canSelectorSwitch:!0,rightBoundBreak:!1}};function De(u){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=u.length;if(t<2)return"";var r=u[0],n=u[1];if(t===2)return"M".concat(ze(r),"L").concat(ze(n));var s="";for(var l=2,o=t-1;l<o;l++)r=u[l],n=u[l+1],s+=$e(r,n);return e?"M".concat($e(u[0],u[1]),"Q").concat(ze(u[1])).concat($e(u[1],u[2]),"T").concat(s).concat($e(u[t-1],u[0])).concat($e(u[0],u[1]),"Z"):"M".concat(ze(u[0]),"Q").concat(ze(u[1])).concat($e(u[1],u[2])).concat(u.length>3?"T":"").concat(s,"L").concat(ze(u[t-1]));}var xe=/*#__PURE__*/function(){function xe(e){_classCallCheck(this,xe);at(this,"maxImageWidth",Te.pencilEraser.maxImageWidth);at(this,"maxImageHeight",Te.pencilEraser.maxImageHeight);at(this,"syncUnitTime",Te.syncOpt.interval);at(this,"vNodes");at(this,"drawLayer");at(this,"fullLayer");at(this,"workId");at(this,"isDelete",!1);var t=e.vNodes,r=e.fullLayer,n=e.drawLayer,s=e.workId,l=e.toolsOpt;this.vNodes=t,this.fullLayer=r,this.drawLayer=n,this.workId=s,this.syncUnitTime=l.syncUnitTime||this.syncUnitTime;}return _createClass(xe,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return e.reduce(function(r,n){var s=r[r.length-1];return(n&&!s||n&&s&&!n.isNear(s,t))&&r.push(n),r;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(e){this.workId=e;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(e){var n,s,l;this.workOptions=e,this.syncUnitTime=e.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),r=t&&((s=this.vNodes)==null?void 0:s.get(t))||void 0;t&&r&&(r.opt=e,(l=this.vNodes)==null||l.setInfo(t,r));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(e){var n,s;var t;var r=(n=this.workId)==null?void 0:n.toString();if(r&&e){var l=this.fullLayer.getElementsByName(r)||this.drawLayer&&this.drawLayer.getElementsByName(r)||[];if(l.length!==1)return;var o=l[0],a=e.pos,c=e.zIndex,y=e.scale,f=e.angle,g=e.translate,x={};ue(c)&&(x.zIndex=c),a&&(x.pos=[a[0],a[1]]),y&&(x.scale=y),f&&(x.rotate=f),g&&(x.translate=g),o.attr(x);var M=o==null?void 0:o.getBoundingClientRect();return M&&(t=Wt(t,{x:Math.floor(M.x-xe.SafeBorderPadding),y:Math.floor(M.y-xe.SafeBorderPadding),w:Math.floor(M.width+xe.SafeBorderPadding*2),h:Math.floor(M.height+xe.SafeBorderPadding*2)})),(s=this.vNodes)==null||s.setInfo(r,{rect:t,centerPos:a}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(e,t){var r=e.group,n=e.eraserlines,s=e.pos,l=e.layer,o=l.parent;if(t)try{var c=(l.renderer.glRenderer||l.renderer.canvasRenderer).options.displayRatio,y=r.getBoundingClientRect(),f=y.width*c*l.worldScaling[0],g=y.height*c*l.worldScaling[1];var x=1;(f>this.maxImageWidth||g>this.maxImageHeight)&&(x=Math.min(this.maxImageWidth/f,this.maxImageHeight/g));var M=l.getAttribute("scale");M=[M[0]*x,M[1]*x];var S=l.parent.parent,P=l.getAttribute("translate"),_C28=this.createVmRenderNode("".concat(this.workId,"_bitMapLayer"),S,{offscreen:o.offscreen,width:o.width,height:o.height,contextType:"2d",autoRender:!1,bufferSize:500},M,P),_h26=r.cloneNode(!0);if(!n||!n.length)return;this.addEraserlines(_h26,n,s,!1),_C28.appendChild(_h26);var p=_C28.parent;p.render();var d=_C28.renderer.canvasRenderer,v=d.context;if(!v)return;var I=d.options.displayRatio,L=_h26.getBoundingClientRect(),w={x:L.x,y:L.y,w:L.width,h:L.height},B={x:0,y:0,w:S.width,h:S.height};if(sr(w,B)===ge.outside){Se(_h26,p),S.removeChild(p),this.isDelete=!0;return;}var b=he(w);b.x=Math.floor(Math.max(w.x,0)),b.y=Math.floor(Math.max(w.y,0)),b.w=Math.min(w.x+w.w,S.width)-b.x,b.h=Math.min(w.y+w.h,S.height)-b.y;var W=this.getGroupRect(b,I),D=W.x,R=W.y,Y=W.w,V=W.h;var Q=v.getImageData(D,R,Y,V);if(this.isTransparentRectByCanvas(Q)){Se(_h26,p),S.removeChild(p),this.isDelete=!0,Q=null;return;}Se(r,o);var it=this.createSpriteNode({imageData:Q,safariRect:b,originRect:w,worldScaling:_C28.worldScaling});it&&r.append(it),Se(_h26,p),S.removeChild(p),o.deleteTexture(Q),Q=null;}catch(a){console.error("[BaseShapeTool] drawEraserlines error:",a);return;}}},{key:"createVmRenderNode",value:function createVmRenderNode(e,t,r,n,s){var l=r.width,o=r.height,a="bitMap-".concat(e),c=t.layer(a,r),y=new me({anchor:[0.5,0.5],pos:[l*0.5,o*0.5],size:[l,o],name:"viewport",id:e});return y.setAttribute("scale",n),y.setAttribute("translate",s),c.append(y),y;}},{key:"getGroupRect",value:function getGroupRect(e,t){var r=Math.floor(e.x*t),n=Math.floor(e.y*t),s=Math.floor(e.w*t),l=Math.floor(e.h*t);return{x:r,y:n,w:s,h:l};}},{key:"addEraserlines",value:function addEraserlines(e,t,r){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 s=_step13.value;var l=s.thickness,o=s.op;var _iterator14=_createForOfIteratorHelper(o),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var a=_step14.value;var c=a.map(function(M,S){return S%2?M-r[1]:M-r[0];}),y=this.computEraserPoints(c,l),f=De(y,!0),g={pos:[0,0],d:f,fillColor:"rgba(0,0,0,1)"},x=new be(g);x.addEventListener("beforerender",function(_ref164){var M=_ref164.detail;var S=M.context;n?S.blendFuncSeparate(S.ZERO,S.ZERO,S.ZERO,S.ZERO):S.globalCompositeOperation="destination-out";}),x.addEventListener("afterrender",function(_ref165){var M=_ref165.detail;var S=M.context;n?S.blendFuncSeparate(S.SRC_ALPHA,S.ONE_MINUS_SRC_ALPHA,S.ONE,S.ONE_MINUS_SRC_ALPHA):S.globalCompositeOperation="source-over";}),e.append(x);}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}},{key:"isTransparentRectByCanvas",value:function isTransparentRectByCanvas(e){var t=!0;for(var r=0;r<e.data.length;r+=4)if(e.data[r+3]!==0){t=!1;break;}return t;}},{key:"createSpriteNode",value:function createSpriteNode(e){var t=e.imageData,r=e.worldScaling,n=e.safariRect,s=e.originRect;var l;if(typeof OffscreenCanvas=="function"){l=new OffscreenCanvas(t.width,t.height);var y=l.getContext("2d");y&&y.putImageData(t,0,0);}else if((typeof document==="undefined"?"undefined":_typeof(document))<"u"){l=document.createElement("canvas"),l.width=t.width,l.height=t.height;var _y3=l.getContext("2d");_y3&&_y3.putImageData(t,0,0);}if(!l)return console.warn("Failed to create imageEraserBitmap Sprite"),null;var o=[Math.floor(s.w/r[0]),Math.floor(s.h/r[1])],a=[Math.floor((n.x-s.x)/r[0]),Math.floor((n.y-s.y)/r[1]),Math.floor(n.w/r[0]),Math.floor(n.h/r[1])],c={name:"eraserTexture",anchor:[0.5,0.5],pos:[0,0],size:o,texture:l,textureRect:a};return new hi(c);}},{key:"computEraserPoints",value:function computEraserPoints(e,t){var r=Math.ceil(t/2);return e.length===2?this.computDot(e,r):this.computLine(e,r);}},{key:"computDot",value:function computDot(e,t){var r=new Dt(e[0],e[1]);return Dt.GetDotStroke(r,t,8);}},{key:"computLine",value:function computLine(e,t){var r=[],n=[];var s,l;for(var o=0;o<e.length;o+=2){var a=new Dt(e[o],e[o+1]);var c=void 0;if(o==e.length-2){var y=new Dt(e[o-2],e[o-1]);c=ot.Sub(a,y).uni(),s=a;}else{o===0&&(l=a);var _y4=new Dt(e[o+2],e[o+3]);c=ot.Sub(_y4,a).uni();}if(c){var _y5=ot.Per(c).mul(t);r.push(Dt.Sub(a,_y5)),n.push(Dt.Add(a,_y5));}}if(s&&l){var _o3=Dt.GetSemicircleStroke(s,r[r.length-1],-1,8),_a4=Dt.GetSemicircleStroke(l,n[0],-1,8);return r.concat(_o3,n.reverse(),_a4);}return[];}},{key:"replace",value:function replace(e,t,r){var _this61=this;var s;if(!t){r&&e.append(r);return;}var n=e.getElementsByName(t);if(n.length){var _iterator15=_createForOfIteratorHelper(n),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var l=_step15.value;r?ym(r,l,e):(l.remove(),_pe(l,e.parent));}}catch(err){_iterator15.e(err);}finally{_iterator15.f();}}else r&&e.append(r);this.fullLayer!==this.drawLayer&&(this.fullLayer===e?(s=this.drawLayer)==null||s.getElementsByName(t).forEach(function(o){var a;o.remove(),_pe(o,(a=_this61.drawLayer)==null?void 0:a.parent);}):this.fullLayer.getElementsByName(t).forEach(function(o){o.remove(),_pe(o,_this61.fullLayer.parent);}));}},{key:"removeDrawCountNodes",value:function removeDrawCountNodes(e,t){var r=[];e.getElementsByName(this.workId).forEach(function(n){n.id&&t&&Number(n.id)<t&&r.push(n);});for(var _i2=0,_r3=r;_i2<_r3.length;_i2++){var n=_r3[_i2];n.remove(),_pe(n,e.parent);}}}],[{key:"updateNodeOpt",value:function updateNodeOpt(e){var h;var t=e.node,r=e.opt,n=e.vNodes,s=e.willSerializeData,l=e.targetNode,o=r.zIndex,a=r.translate,c=r.angle,y=r.originPoint,f=r.scenePoint,g=r.scale,x=r.pointMap,M=r.thickness;var S;var P=l&&he(l)||n.get(t.name);if(!P)return;ue(o)&&(t.setAttribute("zIndex",o),P.opt.zIndex=o);var C=t.parent;if(C){if(y&&g&&l){var p=[P.op[0],P.op[1]];mn(P.op,f,g,a);var d=[P.op[0],P.op[1]],v=[d[0]-p[0],d[1]-p[1]];if(P.centerPos=[P.centerPos[0]+v[0],P.centerPos[1]+v[1]],P.opt.translate=void 0,P.opt.scale=void 0,P.opt.eraserlines)for(var I=0;I<P.opt.eraserlines.length;I++){var _P$opt$eraserlines$I=P.opt.eraserlines[I],L=_P$opt$eraserlines$I.op,w=_P$opt$eraserlines$I.thickness;P.opt.eraserlines[I].thickness=Math.round(w*Math.max(g[0],g[1]));for(var B=0;B<L.length;B++)vn(L[B],f,g,a);}}else if(a){if(t.setAttribute("translate",a),P.opt.translate=a,l){var _p6=[a[0]*C.worldScaling[0],a[1]*C.worldScaling[1]];S=cr(P.rect,_p6),P.rect=S;}else{var _p7=xe.getRectFromLayer(C,t.name);P.rect=_p7||P.rect;}}else if(ue(c))if(t.setAttribute("rotate",c),P.opt.rotate=c,l)S=ns(P.rect,c),P.rect=S;else{var _p8=xe.getRectFromLayer(C,t.name);P.rect=_p8||P.rect;}if(x){var _p9=x.get(t.name);if(_p9)for(var _d11=0,_v10=0;_d11<P.op.length;_d11+=3,_v10++)P.op[_d11]=_p9[_v10][0],P.op[_d11+1]=_p9[_v10][1];}if(M&&(h=P==null?void 0:P.opt)!=null&&h.thickness&&(P.opt.thickness=M),s&&!(y&&g&&l)){if(a){var _p10=P.op.map(function(d,v){var I=v%3;return I===0?d+a[0]:I===1?d+a[1]:d;});if(P.op=_p10,P.centerPos=[P.centerPos[0]+a[0],P.centerPos[1]+a[1]],P!=null&&P.opt&&(P.opt.translate=void 0),P.opt.eraserlines)for(var _d12=0;_d12<P.opt.eraserlines.length;_d12++){var _v11=P.opt.eraserlines[_d12].op;for(var _I6=0;_I6<_v11.length;_I6++){var _L3=_v11[_I6].map(function(w,B){return B%2?w+a[1]:w+a[0];});P.opt.eraserlines[_d12].op[_I6]=_L3;}}}else if(ue(c)){var _p11=P.op;if(fm(_p11,P.centerPos,c),P.op=_p11,P!=null&&P.opt&&(P.opt.rotate=void 0),P.opt.eraserlines)for(var _d13=0;_d13<P.opt.eraserlines.length;_d13++){var _v12=P.opt.eraserlines[_d13].op;for(var _I7=0;_I7<_v12.length;_I7++)hm(_v12[_I7],P.centerPos,c);}}}P&&n.setInfo(t.name,P);}}},{key:"getCenterPos",value:function getCenterPos(e,t){var r=t.worldPosition,n=t.worldScaling;return[(e.x+e.w/2-r[0])/n[0],(e.y+e.h/2-r[1])/n[1]];}},{key:"getRectFromLayer",value:function getRectFromLayer(e,t){var r=e.getElementsByName(t)[0];if(r){var n=r.getBoundingClientRect();return{x:Math.floor(n.x-xe.SafeBorderPadding),y:Math.floor(n.y-xe.SafeBorderPadding),w:Math.floor(n.width+xe.SafeBorderPadding*2),h:Math.floor(n.height+xe.SafeBorderPadding*2)};}}},{key:"isWillRefresh",value:function isWillRefresh(e){var t=e.toolsType,r=e.opt,n=e.node,s=e.updateOpt,l=e.willSerializeData;return!!(l&&(s.angle||s.translate)||s.thickness&&r.thickness&&r.thickness!==s.thickness||s.strokeType&&r.strokeType&&r.strokeType!==s.strokeType||s.originPoint&&s.scenePoint&&s.scale||s.pointMap&&s.pointMap.has(n.name)||t===xt.Text&&(s.fontSize||s.translate||s.textInfos&&s.textInfos.get(n.name))||t===xt.Image&&(s.angle||s.translate||s.scale||s.strokeColor&&s.type===Zr.Iconify)||t===s.toolsType&&s.willRefresh||r.eraserlines&&r.eraserlines.length&&(s.strokeColor||s.fillColor));}}]);}();at(xe,"SafeBorderPadding",10);var Et=xe;var ln=Object.freeze([Object.freeze({width:18,height:26}),Object.freeze({width:26,height:34}),Object.freeze({width:34,height:50}),Object.freeze({width:48,height:74})]);var cn={exports:{}};cn.exports;(function(u){var e=function(){var t=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",s={};function l(a,c){if(!s[a]){s[a]={};for(var y=0;y<a.length;y++)s[a][a.charAt(y)]=y;}return s[a][c];}var o={compressToBase64:function compressToBase64(a){if(a==null)return"";var c=o._compress(a,6,function(y){return r.charAt(y);});switch(c.length%4){default:case 0:return c;case 1:return c+"===";case 2:return c+"==";case 3:return c+"=";}},decompressFromBase64:function decompressFromBase64(a){return a==null?"":a==""?null:o._decompress(a.length,32,function(c){return l(r,a.charAt(c));});},compressToUTF16:function compressToUTF16(a){return a==null?"":o._compress(a,15,function(c){return t(c+32);})+" ";},decompressFromUTF16:function decompressFromUTF16(a){return a==null?"":a==""?null:o._decompress(a.length,16384,function(c){return a.charCodeAt(c)-32;});},//compress into uint8array (UCS-2 big endian format)
399
+ Rf(c,a)))&&o.push(c);return o;}var Ii=Bf,Wf=Object.prototype;function Ff(u){var e=u&&u.constructor,t=typeof e=="function"&&e.prototype||Wf;return u===t;}var tn=Ff;function Uf(u,e){return function(t){return u(e(t));};}var Mi=Uf,jf=Mi,Yf=jf(Object.keys,Object),Xf=Yf,zf=tn,$f=Xf,Gf=Object.prototype,Hf=Gf.hasOwnProperty;function Vf(u){if(!zf(u))return $f(u);var e=[];for(var t in Object(u))Hf.call(u,t)&&t!="constructor"&&e.push(t);return e;}var Kf=Vf,kf=pi,Zf=Ci;function Jf(u){return u!=null&&Zf(u.length)&&!kf(u);}var en=Jf,Qf=Ii,qf=Kf,_f=en;function th(u){return _f(u)?Qf(u):qf(u);}var rn=th,eh=Br,rh=rn;function nh(u,e){return u&&eh(e,rh(e),u);}var ih=nh;function sh(u){var e=[];if(u!=null)for(var t in Object(u))e.push(t);return e;}var oh=sh,ah=hr,lh=tn,ch=oh,fh=Object.prototype,hh=fh.hasOwnProperty;function uh(u){if(!ah(u))return ch(u);var e=lh(u),t=[];for(var r in u)r=="constructor"&&(e||!hh.call(u,r))||t.push(r);return t;}var dh=uh,ph=Ii,mh=dh,vh=en;function gh(u){return vh(u)?ph(u,!0):mh(u);}var nn=gh,yh=Br,Ph=nn;function xh(u,e){return u&&yh(e,Ph(e),u);}var Sh=xh,xr={exports:{}};xr.exports;(function(u,e){var t=Ee,r=e&&!e.nodeType&&e,n=r&&!0&&u&&!u.nodeType&&u,s=n&&n.exports===r,l=s?t.Buffer:void 0,o=l?l.allocUnsafe:void 0;function a(c,y){if(y)return c.slice();var f=c.length,g=o?o(f):new c.constructor(f);return c.copy(g),g;}u.exports=a;})(xr,xr.exports);var Th=xr.exports;function Ch(u,e){var t=-1,r=u.length;for(e||(e=Array(r));++t<r;)e[t]=u[t];return e;}var Oh=Ch;function Ih(u,e){for(var t=-1,r=u==null?0:u.length,n=0,s=[];++t<r;){var l=u[t];e(l,t,u)&&(s[n++]=l);}return s;}var Ei=Ih;function Mh(){return[];}var Ai=Mh,Eh=Ei,Ah=Ai,Lh=Object.prototype,wh=Lh.propertyIsEnumerable,wn=Object.getOwnPropertySymbols,Rh=wn?function(u){return u==null?[]:(u=Object(u),Eh(wn(u),function(e){return wh.call(u,e);}));}:Ah,sn=Rh,Dh=Br,bh=sn;function Nh(u,e){return Dh(u,bh(u),e);}var Bh=Nh;function Wh(u,e){for(var t=-1,r=e.length,n=u.length;++t<r;)u[n+t]=e[t];return u;}var on=Wh,Fh=Mi,Uh=Fh(Object.getPrototypeOf,Object),Li=Uh,jh=on,Yh=Li,Xh=sn,zh=Ai,$h=Object.getOwnPropertySymbols,Gh=$h?function(u){for(var e=[];u;)jh(e,Xh(u)),u=Yh(u);return e;}:zh,wi=Gh,Hh=Br,Vh=wi;function Kh(u,e){return Hh(u,Vh(u),e);}var kh=Kh,Zh=on,Jh=ur;function Qh(u,e,t){var r=e(u);return Jh(u)?r:Zh(r,t(u));}var Ri=Qh,qh=Ri,_h=sn,tu=rn;function eu(u){return qh(u,tu,_h);}var Di=eu,ru=Ri,nu=wi,iu=nn;function su(u){return ru(u,iu,nu);}var ou=su,au=Ue,lu=Ee,cu=au(lu,"DataView"),fu=cu,hu=Ue,uu=Ee,du=hu(uu,"Promise"),pu=du,mu=Ue,vu=Ee,gu=mu(vu,"Set"),bi=gu,yu=Ue,Pu=Ee,xu=yu(Pu,"WeakMap"),Su=xu,zr=fu,$r=Qr,Gr=pu,Hr=bi,Vr=Su,Ni=Je,er=mi,Rn="[object Map]",Tu="[object Object]",Dn="[object Promise]",bn="[object Set]",Nn="[object WeakMap]",Bn="[object DataView]",Cu=er(zr),Ou=er($r),Iu=er(Gr),Mu=er(Hr),Eu=er(Vr),Fe=Ni;(zr&&Fe(new zr(new ArrayBuffer(1)))!=Bn||$r&&Fe(new $r())!=Rn||Gr&&Fe(Gr.resolve())!=Dn||Hr&&Fe(new Hr())!=bn||Vr&&Fe(new Vr())!=Nn)&&(Fe=function Fe(u){var e=Ni(u),t=e==Tu?u.constructor:void 0,r=t?er(t):"";if(r)switch(r){case Cu:return Bn;case Ou:return Rn;case Iu:return Dn;case Mu:return bn;case Eu:return Nn;}return e;});var Fr=Fe,Au=Object.prototype,Lu=Au.hasOwnProperty;function wu(u){var e=u.length,t=new u.constructor(e);return e&&typeof u[0]=="string"&&Lu.call(u,"index")&&(t.index=u.index,t.input=u.input),t;}var Ru=wu,Du=Ee,bu=Du.Uint8Array,Bi=bu,Wn=Bi;function Nu(u){var e=new u.constructor(u.byteLength);return new Wn(e).set(new Wn(u)),e;}var an=Nu,Bu=an;function Wu(u,e){var t=e?Bu(u.buffer):u.buffer;return new u.constructor(t,u.byteOffset,u.byteLength);}var Fu=Wu,Uu=/\w*$/;function ju(u){var e=new u.constructor(u.source,Uu.exec(u));return e.lastIndex=u.lastIndex,e;}var Yu=ju,Fn=fr,Un=Fn?Fn.prototype:void 0,jn=Un?Un.valueOf:void 0;function Xu(u){return jn?Object(jn.call(u)):{};}var zu=Xu,$u=an;function Gu(u,e){var t=e?$u(u.buffer):u.buffer;return new u.constructor(t,u.byteOffset,u.length);}var Hu=Gu,Vu=an,Ku=Fu,ku=Yu,Zu=zu,Ju=Hu,Qu="[object Boolean]",qu="[object Date]",_u="[object Map]",td="[object Number]",ed="[object RegExp]",rd="[object Set]",nd="[object String]",id="[object Symbol]",sd="[object ArrayBuffer]",od="[object DataView]",ad="[object Float32Array]",ld="[object Float64Array]",cd="[object Int8Array]",fd="[object Int16Array]",hd="[object Int32Array]",ud="[object Uint8Array]",dd="[object Uint8ClampedArray]",pd="[object Uint16Array]",md="[object Uint32Array]";function vd(u,e,t){var r=u.constructor;switch(e){case sd:return Vu(u);case Qu:case qu:return new r(+u);case od:return Ku(u,t);case ad:case ld:case cd:case fd:case hd:case ud:case dd:case pd:case md:return Ju(u,t);case _u:return new r();case td:case nd:return new r(u);case ed:return ku(u);case rd:return new r();case id:return Zu(u);}}var gd=vd,yd=hr,Yn=Object.create,Pd=/* @__PURE__ */function(){function u(){}return function(e){if(!yd(e))return{};if(Yn)return Yn(e);u.prototype=e;var t=new u();return u.prototype=void 0,t;};}(),xd=Pd,Sd=xd,Td=Li,Cd=tn;function Od(u){return typeof u.constructor=="function"&&!Cd(u)?Sd(Td(u)):{};}var Id=Od,Md=Fr,Ed=we,Ad="[object Map]";function Ld(u){return Ed(u)&&Md(u)==Ad;}var wd=Ld,Rd=wd,Dd=Wr,Xn=_r,zn=Xn&&Xn.isMap,bd=zn?Dd(zn):Rd,Nd=bd,Bd=Fr,Wd=we,Fd="[object Set]";function Ud(u){return Wd(u)&&Bd(u)==Fd;}var jd=Ud,Yd=jd,Xd=Wr,$n=_r,Gn=$n&&$n.isSet,zd=Gn?Xd(Gn):Yd,Wi=zd,$d=/* @__PURE__ */Ne(Wi),Gd=gi,Hd=mc,Vd=xi,Kd=ih,kd=Sh,Zd=Th,Jd=Oh,Qd=Bh,qd=kh,_d=Di,tp=ou,ep=Fr,rp=Ru,np=gd,ip=Id,sp=ur,op=qr,ap=Nd,lp=hr,cp=Wi,fp=rn,hp=nn,up=1,dp=2,pp=4,Fi="[object Arguments]",mp="[object Array]",vp="[object Boolean]",gp="[object Date]",yp="[object Error]",Ui="[object Function]",Pp="[object GeneratorFunction]",xp="[object Map]",Sp="[object Number]",ji="[object Object]",Tp="[object RegExp]",Cp="[object Set]",Op="[object String]",Ip="[object Symbol]",Mp="[object WeakMap]",Ep="[object ArrayBuffer]",Ap="[object DataView]",Lp="[object Float32Array]",wp="[object Float64Array]",Rp="[object Int8Array]",Dp="[object Int16Array]",bp="[object Int32Array]",Np="[object Uint8Array]",Bp="[object Uint8ClampedArray]",Wp="[object Uint16Array]",Fp="[object Uint32Array]",re={};re[Fi]=re[mp]=re[Ep]=re[Ap]=re[vp]=re[gp]=re[Lp]=re[wp]=re[Rp]=re[Dp]=re[bp]=re[xp]=re[Sp]=re[ji]=re[Tp]=re[Cp]=re[Op]=re[Ip]=re[Np]=re[Bp]=re[Wp]=re[Fp]=!0;re[yp]=re[Ui]=re[Mp]=!1;function gr(u,e,t,r,n,s){var l,o=e&up,a=e&dp,c=e&pp;if(t&&(l=n?t(u,r,n,s):t(u)),l!==void 0)return l;if(!lp(u))return u;var y=sp(u);if(y){if(l=rp(u),!o)return Jd(u,l);}else{var f=ep(u),g=f==Ui||f==Pp;if(op(u))return Zd(u,o);if(f==ji||f==Fi||g&&!n){if(l=a||g?{}:ip(u),!o)return a?qd(u,kd(l,u)):Qd(u,Kd(l,u));}else{if(!re[f])return n?u:{};l=np(u,f,o);}}s||(s=new Gd());var x=s.get(u);if(x)return x;s.set(u,l),cp(u)?u.forEach(function(P){l.add(gr(P,e,t,P,u,s));}):ap(u)&&u.forEach(function(P,C){l.set(C,gr(P,e,t,C,u,s));});var M=c?a?tp:_d:a?hp:fp,S=y?void 0:M(u);return Hd(S||u,function(P,C){S&&(C=P,P=u[C]),Vd(l,C,gr(P,e,t,C,u,s));}),l;}var Up=gr,jp=Up,Yp=1,Xp=4;function zp(u){return jp(u,Yp|Xp);}var $p=zp,he=/* @__PURE__ */Ne($p);var Yi="1.1.21",Gp="@netless/appliance-plugin";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var u=window.__netlessUA||"";u+=" ".concat(Gp,"@").concat(Yi),window.__netlessUA=u;}var Te={useWorker:"auto",syncOpt:{interval:300,smoothSync:!0},cursor:{enable:!0,expirationTime:5e3},bufferSize:{full:2e4,sub:600},bezier:{enable:!0,maxDrawCount:1/0,combineUnitTime:300},pencilEraser:{useBitMap:!0,maxImageWidth:1920,maxImageHeight:1920,maxCombineTime:500},strokeWidth:{min:1,max:10},textEditor:{showFloatBar:!0,canSelectorSwitch:!0,rightBoundBreak:!1}};function De(u){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=u.length;if(t<2)return"";var r=u[0],n=u[1];if(t===2)return"M".concat(ze(r),"L").concat(ze(n));var s="";for(var l=2,o=t-1;l<o;l++)r=u[l],n=u[l+1],s+=$e(r,n);return e?"M".concat($e(u[0],u[1]),"Q").concat(ze(u[1])).concat($e(u[1],u[2]),"T").concat(s).concat($e(u[t-1],u[0])).concat($e(u[0],u[1]),"Z"):"M".concat(ze(u[0]),"Q").concat(ze(u[1])).concat($e(u[1],u[2])).concat(u.length>3?"T":"").concat(s,"L").concat(ze(u[t-1]));}var xe=/*#__PURE__*/function(){function xe(e){_classCallCheck(this,xe);at(this,"maxImageWidth",Te.pencilEraser.maxImageWidth);at(this,"maxImageHeight",Te.pencilEraser.maxImageHeight);at(this,"syncUnitTime",Te.syncOpt.interval);at(this,"vNodes");at(this,"drawLayer");at(this,"fullLayer");at(this,"workId");at(this,"isDelete",!1);var t=e.vNodes,r=e.fullLayer,n=e.drawLayer,s=e.workId,l=e.toolsOpt;this.vNodes=t,this.fullLayer=r,this.drawLayer=n,this.workId=s,this.syncUnitTime=l.syncUnitTime||this.syncUnitTime;}return _createClass(xe,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return e.reduce(function(r,n){var s=r[r.length-1];return(n&&!s||n&&s&&!n.isNear(s,t))&&r.push(n),r;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(e){this.workId=e;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(e){var n,s,l;this.workOptions=e,this.syncUnitTime=e.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),r=t&&((s=this.vNodes)==null?void 0:s.get(t))||void 0;t&&r&&(r.opt=e,(l=this.vNodes)==null||l.setInfo(t,r));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(e){var n,s;var t;var r=(n=this.workId)==null?void 0:n.toString();if(r&&e){var l=this.fullLayer.getElementsByName(r)||this.drawLayer&&this.drawLayer.getElementsByName(r)||[];if(l.length!==1)return;var o=l[0],a=e.pos,c=e.zIndex,y=e.scale,f=e.angle,g=e.translate,x={};ue(c)&&(x.zIndex=c),a&&(x.pos=[a[0],a[1]]),y&&(x.scale=y),f&&(x.rotate=f),g&&(x.translate=g),o.attr(x);var M=o==null?void 0:o.getBoundingClientRect();return M&&(t=Wt(t,{x:Math.floor(M.x-xe.SafeBorderPadding),y:Math.floor(M.y-xe.SafeBorderPadding),w:Math.floor(M.width+xe.SafeBorderPadding*2),h:Math.floor(M.height+xe.SafeBorderPadding*2)})),(s=this.vNodes)==null||s.setInfo(r,{rect:t,centerPos:a}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(e,t){var r=e.group,n=e.eraserlines,s=e.pos,l=e.layer,o=l.parent;if(t)try{var c=(l.renderer.glRenderer||l.renderer.canvasRenderer).options.displayRatio,y=r.getBoundingClientRect(),f=y.width*c*l.worldScaling[0],g=y.height*c*l.worldScaling[1];var x=1;(f>this.maxImageWidth||g>this.maxImageHeight)&&(x=Math.min(this.maxImageWidth/f,this.maxImageHeight/g));var M=l.getAttribute("scale");M=[M[0]*x,M[1]*x];var S=l.parent.parent,P=l.getAttribute("translate"),_C28=this.createVmRenderNode("".concat(this.workId,"_bitMapLayer"),S,{offscreen:o.offscreen,width:o.width,height:o.height,contextType:"2d",autoRender:!1,bufferSize:500},M,P),_h26=r.cloneNode(!0);if(!n||!n.length)return;this.addEraserlines(_h26,n,s,!1),_C28.appendChild(_h26);var p=_C28.parent;p.render();var d=_C28.renderer.canvasRenderer,v=d.context;if(!v)return;var I=d.options.displayRatio,L=_h26.getBoundingClientRect(),w={x:L.x,y:L.y,w:L.width,h:L.height},B={x:0,y:0,w:S.width,h:S.height};if(sr(w,B)===ge.outside){Se(_h26,p),S.removeChild(p),this.isDelete=!0;return;}var b=he(w);b.x=Math.floor(Math.max(w.x,0)),b.y=Math.floor(Math.max(w.y,0)),b.w=Math.min(w.x+w.w,S.width)-b.x,b.h=Math.min(w.y+w.h,S.height)-b.y;var W=this.getGroupRect(b,I),D=W.x,R=W.y,Y=W.w,V=W.h;var Q=v.getImageData(D,R,Y,V);if(this.isTransparentRectByCanvas(Q)){Se(_h26,p),S.removeChild(p),this.isDelete=!0,Q=null;return;}Se(r,o);var it=this.createSpriteNode({imageData:Q,safariRect:b,originRect:w,worldScaling:_C28.worldScaling});it&&r.append(it),Se(_h26,p),S.removeChild(p),o.deleteTexture(Q),Q=null;}catch(a){console.error("[BaseShapeTool] drawEraserlines error:",a);return;}}},{key:"createVmRenderNode",value:function createVmRenderNode(e,t,r,n,s){var l=r.width,o=r.height,a="bitMap-".concat(e),c=t.layer(a,r),y=new me({anchor:[0.5,0.5],pos:[l*0.5,o*0.5],size:[l,o],name:"viewport",id:e});return y.setAttribute("scale",n),y.setAttribute("translate",s),c.append(y),y;}},{key:"getGroupRect",value:function getGroupRect(e,t){var r=Math.floor(e.x*t),n=Math.floor(e.y*t),s=Math.floor(e.w*t),l=Math.floor(e.h*t);return{x:r,y:n,w:s,h:l};}},{key:"addEraserlines",value:function addEraserlines(e,t,r){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 s=_step13.value;var l=s.thickness,o=s.op;var _iterator14=_createForOfIteratorHelper(o),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var a=_step14.value;var c=a.map(function(M,S){return S%2?M-r[1]:M-r[0];}),y=this.computEraserPoints(c,l),f=De(y,!0),g={pos:[0,0],d:f,fillColor:"rgba(0,0,0,1)"},x=new be(g);x.addEventListener("beforerender",function(_ref164){var M=_ref164.detail;var S=M.context;n?S.blendFuncSeparate(S.ZERO,S.ZERO,S.ZERO,S.ZERO):S.globalCompositeOperation="destination-out";}),x.addEventListener("afterrender",function(_ref165){var M=_ref165.detail;var S=M.context;n?S.blendFuncSeparate(S.SRC_ALPHA,S.ONE_MINUS_SRC_ALPHA,S.ONE,S.ONE_MINUS_SRC_ALPHA):S.globalCompositeOperation="source-over";}),e.append(x);}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}},{key:"isTransparentRectByCanvas",value:function isTransparentRectByCanvas(e){var t=!0;for(var r=0;r<e.data.length;r+=4)if(e.data[r+3]!==0){t=!1;break;}return t;}},{key:"createSpriteNode",value:function createSpriteNode(e){var t=e.imageData,r=e.worldScaling,n=e.safariRect,s=e.originRect;var l;if(typeof OffscreenCanvas=="function"){l=new OffscreenCanvas(t.width,t.height);var y=l.getContext("2d");y&&y.putImageData(t,0,0);}else if((typeof document==="undefined"?"undefined":_typeof(document))<"u"){l=document.createElement("canvas"),l.width=t.width,l.height=t.height;var _y3=l.getContext("2d");_y3&&_y3.putImageData(t,0,0);}if(!l)return console.warn("Failed to create imageEraserBitmap Sprite"),null;var o=[Math.floor(s.w/r[0]),Math.floor(s.h/r[1])],a=[Math.floor((n.x-s.x)/r[0]),Math.floor((n.y-s.y)/r[1]),Math.floor(n.w/r[0]),Math.floor(n.h/r[1])],c={name:"eraserTexture",anchor:[0.5,0.5],pos:[0,0],size:o,texture:l,textureRect:a};return new hi(c);}},{key:"computEraserPoints",value:function computEraserPoints(e,t){var r=Math.ceil(t/2);return e.length===2?this.computDot(e,r):this.computLine(e,r);}},{key:"computDot",value:function computDot(e,t){var r=new Dt(e[0],e[1]);return Dt.GetDotStroke(r,t,8);}},{key:"computLine",value:function computLine(e,t){var r=[],n=[];var s,l;for(var o=0;o<e.length;o+=2){var a=new Dt(e[o],e[o+1]);var c=void 0;if(o==e.length-2){var y=new Dt(e[o-2],e[o-1]);c=ot.Sub(a,y).uni(),s=a;}else{o===0&&(l=a);var _y4=new Dt(e[o+2],e[o+3]);c=ot.Sub(_y4,a).uni();}if(c){var _y5=ot.Per(c).mul(t);r.push(Dt.Sub(a,_y5)),n.push(Dt.Add(a,_y5));}}if(s&&l){var _o3=Dt.GetSemicircleStroke(s,r[r.length-1],-1,8),_a4=Dt.GetSemicircleStroke(l,n[0],-1,8);return r.concat(_o3,n.reverse(),_a4);}return[];}},{key:"replace",value:function replace(e,t,r){var _this61=this;var s;if(!t){r&&e.append(r);return;}var n=e.getElementsByName(t);if(n.length){var _iterator15=_createForOfIteratorHelper(n),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var l=_step15.value;r?ym(r,l,e):(l.remove(),_pe(l,e.parent));}}catch(err){_iterator15.e(err);}finally{_iterator15.f();}}else r&&e.append(r);this.fullLayer!==this.drawLayer&&(this.fullLayer===e?(s=this.drawLayer)==null||s.getElementsByName(t).forEach(function(o){var a;o.remove(),_pe(o,(a=_this61.drawLayer)==null?void 0:a.parent);}):this.fullLayer.getElementsByName(t).forEach(function(o){o.remove(),_pe(o,_this61.fullLayer.parent);}));}},{key:"removeDrawCountNodes",value:function removeDrawCountNodes(e,t){var r=[];e.getElementsByName(this.workId).forEach(function(n){n.id&&t&&Number(n.id)<t&&r.push(n);});for(var _i2=0,_r3=r;_i2<_r3.length;_i2++){var n=_r3[_i2];n.remove(),_pe(n,e.parent);}}}],[{key:"updateNodeOpt",value:function updateNodeOpt(e){var h;var t=e.node,r=e.opt,n=e.vNodes,s=e.willSerializeData,l=e.targetNode,o=r.zIndex,a=r.translate,c=r.angle,y=r.originPoint,f=r.scenePoint,g=r.scale,x=r.pointMap,M=r.thickness;var S;var P=l&&he(l)||n.get(t.name);if(!P)return;ue(o)&&(t.setAttribute("zIndex",o),P.opt.zIndex=o);var C=t.parent;if(C){if(y&&g&&l){var p=[P.op[0],P.op[1]];mn(P.op,f,g,a);var d=[P.op[0],P.op[1]],v=[d[0]-p[0],d[1]-p[1]];if(P.centerPos=[P.centerPos[0]+v[0],P.centerPos[1]+v[1]],P.opt.translate=void 0,P.opt.scale=void 0,P.opt.eraserlines)for(var I=0;I<P.opt.eraserlines.length;I++){var _P$opt$eraserlines$I=P.opt.eraserlines[I],L=_P$opt$eraserlines$I.op,w=_P$opt$eraserlines$I.thickness;P.opt.eraserlines[I].thickness=Math.round(w*Math.max(g[0],g[1]));for(var B=0;B<L.length;B++)vn(L[B],f,g,a);}}else if(a){if(t.setAttribute("translate",a),P.opt.translate=a,l){var _p6=[a[0]*C.worldScaling[0],a[1]*C.worldScaling[1]];S=cr(P.rect,_p6),P.rect=S;}else{var _p7=xe.getRectFromLayer(C,t.name);P.rect=_p7||P.rect;}}else if(ue(c))if(t.setAttribute("rotate",c),P.opt.rotate=c,l)S=ns(P.rect,c),P.rect=S;else{var _p8=xe.getRectFromLayer(C,t.name);P.rect=_p8||P.rect;}if(x){var _p9=x.get(t.name);if(_p9)for(var _d11=0,_v10=0;_d11<P.op.length;_d11+=3,_v10++)P.op[_d11]=_p9[_v10][0],P.op[_d11+1]=_p9[_v10][1];}if(M&&(h=P==null?void 0:P.opt)!=null&&h.thickness&&(P.opt.thickness=M),s&&!(y&&g&&l)){if(a){var _p10=P.op.map(function(d,v){var I=v%3;return I===0?d+a[0]:I===1?d+a[1]:d;});if(P.op=_p10,P.centerPos=[P.centerPos[0]+a[0],P.centerPos[1]+a[1]],P!=null&&P.opt&&(P.opt.translate=void 0),P.opt.eraserlines)for(var _d12=0;_d12<P.opt.eraserlines.length;_d12++){var _v11=P.opt.eraserlines[_d12].op;for(var _I6=0;_I6<_v11.length;_I6++){var _L3=_v11[_I6].map(function(w,B){return B%2?w+a[1]:w+a[0];});P.opt.eraserlines[_d12].op[_I6]=_L3;}}}else if(ue(c)){var _p11=P.op;if(fm(_p11,P.centerPos,c),P.op=_p11,P!=null&&P.opt&&(P.opt.rotate=void 0),P.opt.eraserlines)for(var _d13=0;_d13<P.opt.eraserlines.length;_d13++){var _v12=P.opt.eraserlines[_d13].op;for(var _I7=0;_I7<_v12.length;_I7++)hm(_v12[_I7],P.centerPos,c);}}}P&&n.setInfo(t.name,P);}}},{key:"getCenterPos",value:function getCenterPos(e,t){var r=t.worldPosition,n=t.worldScaling;return[(e.x+e.w/2-r[0])/n[0],(e.y+e.h/2-r[1])/n[1]];}},{key:"getRectFromLayer",value:function getRectFromLayer(e,t){var r=e.getElementsByName(t)[0];if(r){var n=r.getBoundingClientRect();return{x:Math.floor(n.x-xe.SafeBorderPadding),y:Math.floor(n.y-xe.SafeBorderPadding),w:Math.floor(n.width+xe.SafeBorderPadding*2),h:Math.floor(n.height+xe.SafeBorderPadding*2)};}}},{key:"isWillRefresh",value:function isWillRefresh(e){var t=e.toolsType,r=e.opt,n=e.node,s=e.updateOpt,l=e.willSerializeData;return!!(l&&(s.angle||s.translate)||s.thickness&&r.thickness&&r.thickness!==s.thickness||s.strokeType&&r.strokeType&&r.strokeType!==s.strokeType||s.originPoint&&s.scenePoint&&s.scale||s.pointMap&&s.pointMap.has(n.name)||t===xt.Text&&(s.fontSize||s.translate||s.textInfos&&s.textInfos.get(n.name))||t===xt.Image&&(s.angle||s.translate||s.scale||s.strokeColor&&s.type===Zr.Iconify)||t===s.toolsType&&s.willRefresh||r.eraserlines&&r.eraserlines.length&&(s.strokeColor||s.fillColor));}}]);}();at(xe,"SafeBorderPadding",10);var Et=xe;var ln=Object.freeze([Object.freeze({width:18,height:26}),Object.freeze({width:26,height:34}),Object.freeze({width:34,height:50}),Object.freeze({width:48,height:74})]);var cn={exports:{}};cn.exports;(function(u){var e=function(){var t=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",s={};function l(a,c){if(!s[a]){s[a]={};for(var y=0;y<a.length;y++)s[a][a.charAt(y)]=y;}return s[a][c];}var o={compressToBase64:function compressToBase64(a){if(a==null)return"";var c=o._compress(a,6,function(y){return r.charAt(y);});switch(c.length%4){default:case 0:return c;case 1:return c+"===";case 2:return c+"==";case 3:return c+"=";}},decompressFromBase64:function decompressFromBase64(a){return a==null?"":a==""?null:o._decompress(a.length,32,function(c){return l(r,a.charAt(c));});},compressToUTF16:function compressToUTF16(a){return a==null?"":o._compress(a,15,function(c){return t(c+32);})+" ";},decompressFromUTF16:function decompressFromUTF16(a){return a==null?"":a==""?null:o._decompress(a.length,16384,function(c){return a.charCodeAt(c)-32;});},//compress into uint8array (UCS-2 big endian format)
400
400
  compressToUint8Array:function compressToUint8Array(a){for(var c=o.compress(a),y=new Uint8Array(c.length*2),f=0,g=c.length;f<g;f++){var x=c.charCodeAt(f);y[f*2]=x>>>8,y[f*2+1]=x%256;}return y;},//decompress from uint8array (UCS-2 big endian format)
401
401
  decompressFromUint8Array:function decompressFromUint8Array(a){if(a==null)return o.decompress(a);for(var c=new Array(a.length/2),y=0,f=c.length;y<f;y++)c[y]=a[y*2]*256+a[y*2+1];var g=[];return c.forEach(function(x){g.push(t(x));}),o.decompress(g.join(""));},//compress into a string that is already URI encoded
402
402
  compressToEncodedURIComponent:function compressToEncodedURIComponent(a){return a==null?"":o._compress(a,6,function(c){return n.charAt(c);});},//decompress from an output of compressToEncodedURIComponent
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netless/appliance-plugin",
3
- "version": "1.1.20",
3
+ "version": "1.1.21",
4
4
  "files": [
5
5
  "dist",
6
6
  "cdn"
@@ -1 +0,0 @@
1
- "use strict";var x=Object.defineProperty;var F=(w,t,e)=>t in w?x(w,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):w[t]=e;var d=(w,t,e)=>F(w,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./index-CQSkUdiP.js"),C=require("spritejs"),N=require("lodash");require("clipper-lib");require("lineclip");require("white-web-sdk");require("react-dom");require("react");require("eventemitter2");class B{constructor(t){d(this,"vNodes");d(this,"thread");d(this,"serviceWorkShapes",new Map);d(this,"localWorkShapes",new Map);d(this,"tmpOpt");d(this,"animationId");d(this,"syncUnitTime",s.DefaultAppliancePluginExtrasOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}createLocalWork(t){const{workId:e,opt:o,toolsType:r}=t;if(e&&o){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:o}),this.setWorkOptions(a,o)}}getLocalWorkShape(t){return this.localWorkShapes.get(t)}createLocalWorkShape(t,e){if(t&&this.tmpOpt){const o={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},r=this.createWorkShapeNode({...o,workId:t});return r&&this.localWorkShapes.set(t,{node:r,toolsType:r.toolsType,workState:s.EvevtWorkState.Start}),r}}canUseTopLayer(t){return t===s.EToolsKey.LaserPen}destroy(){this.clearAll()}clearAll(){this.thread.topLayer.children.length&&(this.thread.topLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),s.removeAllChildren(this.thread.serviceLayer,this.thread.serviceLayer.parent)),this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}consumeDraw(t){const{workId:e,dataType:o}=t;if(o===s.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=s.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===s.EToolsKey.LaserPen)return s.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.topLayer,drawLayer:this.thread.topLayer})}setNodeKey(t,e,o,r){return e.toolsType=o,e.node=this.createWorkShapeNode({workId:t,toolsType:o,toolsOpt:r}),e}activeServiceWorkShape(t){var y,f;const{workId:e,opt:o,toolsType:r,type:a,updateNodeOpt:i,ops:l,op:c}=t;if(!e)return;const n=e.toString(),p=(y=this.vNodes.get(n))==null?void 0:y.rect;if(!((f=this.serviceWorkShapes)!=null&&f.has(n))){let u={toolsType:r,animationWorkData:c||[],animationIndex:0,type:a,updateNodeOpt:i,ops:l,oldRect:p};r&&o&&(u=this.setNodeKey(n,u,r,o)),this.serviceWorkShapes.set(n,u)}const h=this.serviceWorkShapes.get(n);a&&(h.type=a),l&&(h.animationWorkData=s.transformToNormalData(l),h.ops=l),i&&(h.updateNodeOpt=i),c&&(h.animationWorkData=c),h.node&&h.node.getWorkId()!==n&&h.node.setWorkId(n),p&&(h.oldRect=p),r&&o&&(h.toolsType!==r&&r&&o&&this.setNodeKey(n,h,r,o),h.node&&h.node.setWorkOptions(o))}computNextAnimationIndex(t,e){var a;const o=((a=t.node)==null?void 0:a.syncUnitTime)||this.syncUnitTime,r=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/o)*e;return Math.min((t.animationIndex||0)+(r||e),(t.animationWorkData||[]).length)}animationDraw(){var r,a,i,l;this.animationId=void 0;let t=!1;const e=new Map,o=[];for(const[c,n]of this.serviceWorkShapes.entries())switch(n.toolsType){case s.EToolsKey.LaserPen:{const h=this.computNextAnimationIndex(n,8),y=Math.max(0,n.animationIndex||0),f=(n.animationWorkData||[]).slice(y,h);if((n.animationIndex||0)<h&&((r=n.node)==null||r.consumeService({op:f,isFullWork:!1}),n.animationIndex=h,f.length&&e.set(c,{workState:y===0?s.EvevtWorkState.Start:h===((a=n.animationWorkData)==null?void 0:a.length)?s.EvevtWorkState.Done:s.EvevtWorkState.Doing,op:f.slice(-2)})),n.isDel){(i=n.node)==null||i.clearTmpPoints(),this.serviceWorkShapes.delete(c);break}n.ops&&n.animationIndex===((l=n.animationWorkData)==null?void 0:l.length)&&!n.isDel&&(this.thread.topLayer.getElementsByName(c.toString())[0]||(n.isDel=!0,this.serviceWorkShapes.set(c,n))),t=!0;break}}for(const[c,n]of this.localWorkShapes.entries()){const{result:p,toolsType:h,isDel:y,workState:f}=n;switch(h){case s.EToolsKey.LaserPen:{if(y){n.node.clearTmpPoints(),this.localWorkShapes.delete(c),o.push({removeIds:[c.toString()],type:s.EPostMessageType.RemoveNode});break}p&&((p.op||p.ops)&&o.push(p),n.result=void 0),!this.thread.topLayer.getElementsByName(c.toString())[0]&&f===s.EvevtWorkState.Done&&(n.isDel=!0,this.localWorkShapes.set(c,n)),t=!0;break}}}t&&this.runAnimation(),e.size&&e.forEach((c,n)=>{o.push({type:s.EPostMessageType.Cursor,uid:n.split(s.Storage_Splitter)[0],op:c.op,workState:c.workState,viewId:this.thread.viewId})}),o.length&&this.thread.post({sp:o})}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}setWorkOptions(t,e){var r;let o=(r=this.localWorkShapes.get(t))==null?void 0:r.node;if(!o&&this.tmpOpt){const{toolsType:a}=this.tmpOpt;this.tmpOpt.toolsOpt=e,o=this.createWorkShapeNode({workId:t,toolsType:a,toolsOpt:e}),o&&this.localWorkShapes.set(t,{node:o,toolsType:a,workState:s.EvevtWorkState.Start}),this.setToolsOpt(this.tmpOpt)}e!=null&&e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),o&&o.setWorkOptions(e)}consumeDrawAll(t){const{workId:e,dataType:o}=t;if(o===s.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=s.EvevtWorkState.Done,r&&this.localWorkShapes.set(r,a)}this.runAnimation()}}class _{constructor(t){d(this,"vNodes");d(this,"thread");d(this,"workShapes",new Map);d(this,"effectSelectNodeData",new Set);d(this,"batchEraserRemoveNodes",new Set);d(this,"batchEraserWorks",new Set);d(this,"tmpOpt");d(this,"syncUnitTime",s.DefaultAppliancePluginExtrasOptions.syncOpt.interval);d(this,"fullWorkerDrawCount",0);d(this,"drawWorkActiveId");d(this,"consumeCount",0);d(this,"combineTimerId");d(this,"combineDrawResolve");d(this,"combineDrawActiveId");this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}createLocalWork(t){const{workId:e,opt:o,toolsType:r}=t;if(e&&o){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:o}),this.setWorkOptions(a,o)}}async updateSelector(t){var f;const e=this.workShapes.get(s.Storage_Selector_key);if(!((f=e==null?void 0:e.selectIds)!=null&&f.length))return;const{callback:o,...r}=t,{updateSelectorOpt:a,willSerializeData:i,smoothSync:l}=r,c=await(e==null?void 0:e.updateSelector({updateSelectorOpt:a,selectIds:N.cloneDeep(e.selectIds),vNodes:this.vNodes,willSerializeData:i,worker:this})),n=new Map;let p;c!=null&&c.selectIds&&(p=N.xor(e.selectIds,c.selectIds),c.selectIds.forEach(u=>{const m=this.vNodes.get(u);if(m){const{toolsType:S,op:T,opt:v}=m;n.set(u,{opt:v,toolsType:S,ops:(T==null?void 0:T.length)&&s.transformToSerializableData(T)||void 0})}}),e.selectIds=c.selectIds);const h=[],y=o&&o({res:c,workShapeNode:e,param:r,postData:{sp:h},newServiceStore:n,smoothSync:l})||{sp:h};p&&y.sp.push({type:s.EPostMessageType.RemoveNode,removeIds:p,viewId:this.thread.viewId}),y.sp.length&&this.thread.post(y)}destroy(){this.clearAll()}clearAll(){if(this.thread.localLayer.children.length&&(this.thread.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),s.removeAllChildren(this.thread.localLayer,this.thread.localLayer.parent)),this.workShapes.get(s.Storage_Selector_key)){const e=[];e.push({type:s.EPostMessageType.Select,dataType:s.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:o,dataType:r}=t;if(e!=null&&e.length){let a;for(const i of this.vNodes.curNodeMap.values()){const{rect:l,name:c,toolsType:n,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(n===s.EToolsKey.Text&&s.isIntersectForPoint([h,y],l)&&p.workState===s.EvevtWorkState.Done){a=c;break}}a&&(await this.blurSelector({viewId:o,msgType:s.EPostMessageType.Select,dataType:r,isSync:!0}),this.thread.post({sp:[{type:s.EPostMessageType.GetTextActive,toolsType:s.EToolsKey.Text,workId:a}]}))}}cursorHover(t){const{opt:e,toolsType:o,point:r}=t,a=this.setFullWork({workId:s.Cursor_Hover_Id,toolsType:o,opt:e});a&&r&&a.cursorHover(r)}cursorBlur(){var e;const t=this.getWorkShape(s.Cursor_Hover_Id);t&&((e=t.selectIds)!=null&&e.length)&&(t.cursorBlur(),this.clearWorkShapeNodeCache(s.Cursor_Hover_Id)),this.thread.fullLayer.parent.children.forEach(o=>{o.name==="Cursor_Hover_Id"&&o.remove()})}updateFullSelectWork(t){var r,a,i,l,c;const e=this.workShapes.get(s.Storage_Selector_key),{selectIds:o}=t;if(!(o!=null&&o.length)){this.blurSelector(t);return}if(!e){const n=this.setFullWork(t);!n&&t.workId&&this.tmpOpt&&((r=this.tmpOpt)==null?void 0:r.toolsType)===s.EToolsKey.Selector&&this.setWorkOptions(t.workId.toString(),t.opt||this.tmpOpt.toolsOpt),n&&this.updateFullSelectWork(t);return}if(e&&(o!=null&&o.length)){const{selectRect:n}=e.updateSelectIds(o),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:((l=t.opt)==null?void 0:l.fillColor)||e.fillColor,textOpt:((c=t.opt)==null?void 0:c.textOpt)||e.textOpt,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,type:s.EPostMessageType.Select,selectRect:n,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===s.EToolsKey.Text)return{type:s.EPostMessageType.TextUpdate,toolsType:s.EToolsKey.Text,workId:t,dataType:s.EDataType.Local}}async removeSelector(t){const{willSyncService:e}=t,o=[],r=[],a=this.workShapes.get(s.Storage_Selector_key);if(!a)return;const i=a.selectIds&&[...a.selectIds]||[];for(const l of i){if(this.vNodes.get(l)){const n=this.commandDeleteText(l);n&&o.push(n)}this.removeNode(l),r.push(l)}r.length&&o.push({type:s.EPostMessageType.RemoveNode,removeIds:r}),o.push({type:s.EPostMessageType.Select,selectIds:[],willSyncService:e}),await this.blurSelector(),o.length&&this.thread.post({sp:o})}removeWork(t){const{workId:e}=t,o=e==null?void 0:e.toString();o&&this.removeNode(o)}removeNode(t){var r;this.vNodes.get(t)&&((r=this.thread.fullLayer)==null||r.getElementsByName(t).forEach(a=>{a.remove(),s.removeTexture(a,this.thread.fullLayer.parent)}),this.vNodes.delete(t)),this.workShapes.has(t)&&(this.thread.localLayer.getElementsByName(t).forEach(a=>{a.remove(),s.removeTexture(a,this.thread.localLayer.parent)}),this.clearWorkShapeNodeCache(t))}setFullWork(t){const{workId:e,opt:o,toolsType:r}=t;if(e&&o&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(o)):i=this.createWorkShapeNode({toolsOpt:o,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async consumeFull(t){var r;const e=this.setFullWork(t),o=t.ops&&s.transformToNormalData(t.ops);if(e){const a=(r=t.workId)==null?void 0:r.toString();e.toolsType===s.EToolsKey.Image?await e.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this}):e.toolsType===s.EToolsKey.Text?await e.consumeServiceAsync({isFullWork:!0,replaceId:a}):e.consumeService({op:o,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:s.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(s.Storage_Selector_key),{workId:o,msgType:r}=t;if(e&&o&&e.selectIds&&e.selectIds.includes(o.toString())){r===s.EPostMessageType.RemoveNode?e.selectIds=e.selectIds.filter(a=>a!==o.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 o of this.effectSelectNodeData.values()){const r=this.setFullWork(o);if(r){const a=(e=o.workId)==null?void 0:e.toString();if(r.toolsType===s.EToolsKey.Image)await r.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this});else if(r.toolsType===s.EToolsKey.Text)await r.consumeServiceAsync({isFullWork:!0,replaceId:a});else{const i=o.ops&&s.transformToNormalData(o.ops);r.consumeService({op:i,isFullWork:!0,replaceId:a}),o!=null&&o.updateNodeOpt&&r.updataOptService(o.updateNodeOpt)}o.workId&&this.workShapes.delete(o.workId.toString())}}this.reRenderSelector(t)}hasSelector(){return this.workShapes.has(s.Storage_Selector_key)}getSelector(){return this.workShapes.get(s.Storage_Selector_key)}reRenderSelector(t=!1){var r;const e=this.workShapes.get(s.Storage_Selector_key);if(!e)return;if(e&&!((r=e.selectIds)!=null&&r.length))return this.blurSelector();const o=e.reRenderSelector();o&&this.thread.post({sp:[{type:s.EPostMessageType.Select,selectIds:e.selectIds,selectRect:o,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(s.Storage_Selector_key),o=e==null?void 0:e.blurSelector();if(this.clearWorkShapeNodeCache(s.Storage_Selector_key),((r=this.thread.fullLayer)==null?void 0:r.parent).children.forEach(a=>{a.name===s.Storage_Selector_key&&a.remove()}),o){const a=[];a.push({...o,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,o){const{willUpdateNodes:r,willDeleteNodes:a}=e,i=t.getWorkId(),l=[{type:s.EPostMessageType.RemoveNode,removeIds:[i],viewId:this.thread.viewId}];if(o&&l.push({type:s.EPostMessageType.None,isLockSentEventCursor:o}),r!=null&&r.size||a!=null&&a.size){if(r!=null&&r.size)for(const[c,n]of r)l.push({type:s.EPostMessageType.UpdateNode,dataType:s.EDataType.Local,opt:n.opt,workId:c,updateNodeOpt:{useAnimation:!1}});a!=null&&a.size&&l.push({type:s.EPostMessageType.RemoveNode,removeIds:[...a],viewId:this.thread.viewId})}l.length&&this.thread.post({sp:l})}drawPencilEraserFull(t,e,o){const{willNewNodes:r,willDeleteNodes:a}=e,i=t.getWorkId(),l=[{type:s.EPostMessageType.RemoveNode,removeIds:[i],viewId:this.thread.viewId}];if(o&&l.push({type:s.EPostMessageType.None,isLockSentEventCursor:o}),r!=null&&r.size||a!=null&&a.size){if(r!=null&&r.size)for(const[c,n]of r)l.push({type:s.EPostMessageType.FullWork,dataType:s.EDataType.Local,toolsType:n.toolsType,ops:s.transformToSerializableData(n.op),opt:n.opt,workId:c,updateNodeOpt:{useAnimation:!1}});a!=null&&a.size&&l.push({type:s.EPostMessageType.RemoveNode,removeIds:[...a],viewId:this.thread.viewId})}l.length&&this.thread.post({sp:l})}drawEraser(t,e){const o=[];t.removeIds&&o.push(t),e&&o.push({type:s.EPostMessageType.None,isLockSentEventCursor:e}),this.thread.post({sp:o,consumeCount:this.consumeCount})}getWorkShape(t){return this.workShapes.get(t)}getWorkShapes(){return this.workShapes}consumeDraw(t,e){const{op:o,workId:r,scenePath:a,postCount:i,smoothSync:l}=t;if(o!=null&&o.length&&r){const c=r.toString(),n=this.workShapes.get(c);if(!n)return;const p=n.toolsType;if(p===s.EToolsKey.LaserPen)return;switch(this.combineDrawActiveId&&this.combineDrawActiveId!==c&&(this.combineTimerId&&(clearTimeout(this.combineTimerId),this.combineTimerId=void 0,this.combineDrawResolve&&this.combineDrawResolve(!1),this.combineDrawActiveId=void 0),this.consumeDrawAll({workId:this.combineDrawActiveId,scenePath:a,viewId:this.thread.viewId,msgType:s.EPostMessageType.DrawWork,dataType:s.EDataType.Local},e)),this.drawWorkActiveId&&this.drawWorkActiveId!==c&&(this.consumeDrawAll({workId:this.drawWorkActiveId,scenePath:a,viewId:this.thread.viewId,msgType:s.EPostMessageType.DrawWork,dataType:s.EDataType.Local},e),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&c!==s.Storage_Selector_key&&(this.drawWorkActiveId=c),N.isNumber(i)&&(this.consumeCount=i),p){case s.EToolsKey.Selector:{const h=n.consume({data:t,isFullWork:!0,isMainThread:!0});this.fullWorkerDrawCount++;const y=[];h.type===s.EPostMessageType.Select&&(h.selectIds&&e.runReverseSelectWork(h.selectIds),y.push(h)),this.thread.post({consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount,sp:y});break}case s.EToolsKey.PencilEraser:case s.EToolsKey.BitMapEraser:{n.consume({data:t,isFullWork:!1,isMainThread:!0}),this.fullWorkerDrawCount++,this.thread.post({sp:void 0,consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount}),this.combineTimerId||new Promise(h=>{this.combineDrawActiveId=c,this.combineDrawResolve=h,this.combineTimerId=requestIdleCallback(()=>{this.combineTimerId=void 0,this.combineDrawResolve&&this.combineDrawResolve(!0)},{timeout:this.thread.master.maxCombineEraserTime})}).then(h=>{h&&this.drawEraserCombine(c),this.combineDrawResolve=void 0});break}case s.EToolsKey.Eraser:{const h=n.consume({data:t,isFullWork:!0});this.drawEraser(h)}break;case s.EToolsKey.Arrow:case s.EToolsKey.Straight:case s.EToolsKey.Ellipse:case s.EToolsKey.Rectangle:case s.EToolsKey.Star:case s.EToolsKey.Polygon:case s.EToolsKey.SpeechBalloon:case s.EToolsKey.Pencil:{const h=n.consume({data:t,isFullWork:!1,isMainThread:!0,smoothSync:l});h&&(this.fullWorkerDrawCount++,this.thread.post({consumeCount:this.consumeCount,fullWorkerDrawCount:this.fullWorkerDrawCount,sp:h.op&&[{...h,scenePath:a}]||void 0}))}break}}}drawEraserCombine(t){var o,r,a,i;const e=(o=this.workShapes.get(t))==null?void 0:o.combineConsume({workerEngine:this});if(e){const{willDeleteNodes:l,willNewNodes:c}=e,n={render:[],sp:[]};if(e!=null&&e.rect){const p=s.getSafetyRect(e.rect);(r=n.render)==null||r.push({rect:p,isClear:!0,clearCanvas:s.ECanvasShowType.Bg,viewId:this.thread.viewId},{rect:p,drawCanvas:s.ECanvasShowType.Bg,viewId:this.thread.viewId})}if(l!=null&&l.size&&((a=n.sp)==null||a.push({type:s.EPostMessageType.RemoveNode,removeIds:[...l],viewId:this.thread.viewId})),c!=null&&c.size)for(const[p,h]of c)(i=n.sp)==null||i.push({type:s.EPostMessageType.FullWork,dataType:s.EDataType.Local,toolsType:h.toolsType,ops:s.transformToSerializableData(h.op),opt:h.opt,workId:p,updateNodeOpt:{useAnimation:!1}});this.thread.post(n)}}consumeDrawAll(t,e){var i,l,c;const{workId:o,scenePath:r,isLockSentEventCursor:a}=t;if(o){this.combineTimerId&&(clearTimeout(this.combineTimerId),this.combineTimerId=void 0,this.combineDrawResolve&&this.combineDrawResolve(!1),this.combineDrawActiveId=void 0);const n=o.toString();this.drawWorkActiveId===n&&(this.drawWorkActiveId=void 0);const p=this.workShapes.get(n);if(!p)return;const h=p.toolsType;if(h===s.EToolsKey.LaserPen)return;const y=this.workShapes.get(s.Cursor_Hover_Id),f=(i=y==null?void 0:y.selectIds)==null?void 0:i[0],u=p.consumeAll({data:t,workerEngine:this});switch(h){case s.EToolsKey.Selector:{u.selectIds&&f&&((l=u.selectIds)!=null&&l.includes(f))&&y.cursorBlur();const m=[];a&&m.push({type:s.EPostMessageType.None,isLockSentEventCursor:a}),u.type===s.EPostMessageType.Select&&(u.selectIds&&e.runReverseSelectWork(u.selectIds),m.push({...u,scenePath:r})),m.length&&this.thread.post({sp:m}),(c=p.selectIds)!=null&&c.length?p.clearTmpPoints():this.clearWorkShapeNodeCache(n)}break;case s.EToolsKey.PencilEraser:this.drawPencilEraserFull(p,u,a),this.fullWorkerDrawCount=0,this.clearWorkShapeNodeCache(n);break;case s.EToolsKey.BitMapEraser:this.drawBitMapEraserFull(p,u,a),this.fullWorkerDrawCount=0,this.clearWorkShapeNodeCache(n);break;case s.EToolsKey.Eraser:this.drawEraser({...u,scenePath:r},a),p.clearTmpPoints();break;case s.EToolsKey.Arrow:case s.EToolsKey.Straight:case s.EToolsKey.Ellipse:case s.EToolsKey.Rectangle:case s.EToolsKey.Star:case s.EToolsKey.Polygon:case s.EToolsKey.SpeechBalloon:case s.EToolsKey.Pencil:{const m=[];a&&m.push({type:s.EPostMessageType.None,isLockSentEventCursor:a}),u&&(m.push(u),this.fullWorkerDrawCount=0,this.thread.post({fullWorkerDrawCount:this.fullWorkerDrawCount,sp:m})),this.clearWorkShapeNodeCache(n);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 o=this.workShapes.get(t);if(!o&&this.tmpOpt){const{toolsType:r}=this.tmpOpt;this.tmpOpt.toolsOpt=e,o=this.createWorkShapeNode({workId:t,toolsType:r,toolsOpt:e}),o&&this.workShapes.set(t,o),this.setToolsOpt(this.tmpOpt)}e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),o==null||o.setWorkOptions(e)}createWorkShapeNode(t){return s.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.localLayer},this.thread.serviceWork)}}class U{constructor(t){d(this,"vNodes");d(this,"thread");d(this,"workShapes",new Map);d(this,"selectorWorkShapes",new Map);d(this,"willRunEffectSelectorIds",new Set);d(this,"runEffectId");d(this,"animationId");d(this,"syncUnitTime",s.DefaultAppliancePluginExtrasOptions.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()}),s.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 o,r;const e=this.selectorWorkShapes.get(t);e&&e.selectIds&&((o=e.node)==null||o.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,o=e==null?void 0:e.toString();o&&this.willRunEffectSelectorIds.add(o),this.runEffect()}removeWork(t){const{workId:e}=t,o=e==null?void 0:e.toString();if(o){if(this.workShapes.get(o)){this.workShapes.delete(o),this.removeNode(o,t);return}this.removeNode(o,t)}}consumeFull(t){this.activeWorkShape(t),this.runAnimation()}runReverseSelectWork(t){t.forEach(e=>{this.selectorWorkShapes.forEach((o,r)=>{var a;if((a=o.selectIds)!=null&&a.length){const i=o.selectIds.indexOf(e);i>-1&&(o.selectIds.splice(i,1),this.willRunEffectSelectorIds.add(r))}})}),this.willRunEffectSelectorIds.size&&this.runEffect()}consumeDraw(t){this.activeWorkShape(t),this.runAnimation()}computNextAnimationIndex(t,e){const o=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((t.animationIndex||0)+(o||e),(t.animationWorkData||[]).length)}async animationDraw(){var o,r,a,i,l,c,n,p,h,y,f,u,m,S,T,v,W,P,O,R;this.animationId=void 0;let t=!1;const e=new Map;for(const[g,k]of this.workShapes.entries())switch(k.toolsType){case s.EToolsKey.Image:{await((o=k.node)==null?void 0:o.consumeServiceAsync({isFullWork:!0,worker:this})),this.selectorWorkShapes.forEach((E,I)=>{var M;(M=E.selectIds)!=null&&M.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),this.workShapes.delete(g);break}case s.EToolsKey.Text:{k.node&&(await((r=k.node)==null?void 0:r.consumeServiceAsync({isFullWork:!0,replaceId:g})),this.selectorWorkShapes.forEach((E,I)=>{var M;(M=E.selectIds)!=null&&M.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(a=k.node)==null||a.clearTmpPoints(),this.workShapes.delete(g));break}case s.EToolsKey.Arrow:case s.EToolsKey.Straight:case s.EToolsKey.Rectangle:case s.EToolsKey.Ellipse:case s.EToolsKey.Star:case s.EToolsKey.Polygon:case s.EToolsKey.SpeechBalloon:{const E=!!k.ops;if((i=k.animationWorkData)!=null&&i.length){const I=k.oldRect;(l=k.node)==null||l.consumeService({op:k.animationWorkData,isFullWork:E}),E&&(this.selectorWorkShapes.forEach((M,L)=>{var b;(b=M.selectIds)!=null&&b.includes(g)&&(this.willRunEffectSelectorIds.add(L),this.runEffect())}),(c=k.node)==null||c.clearTmpPoints(),this.workShapes.delete(g)),k.isEnableCursor?e.set(g,{workState:I?k.ops?s.EvevtWorkState.Done:s.EvevtWorkState.Doing:s.EvevtWorkState.Start,op:k.animationWorkData.slice(-3,-1)}):E&&!k.useAnimation&&((n=k.updateNodeOpt)!=null&&n.useAnimation)&&e.set(g,{workState:s.EvevtWorkState.Done,op:k.animationWorkData.slice(-3,-1),uid:(p=k.updateNodeOpt)==null?void 0:p.uid}),k.animationWorkData.length=0}break}case s.EToolsKey.Pencil:{if(k.useAnimation){if(k.useAnimation){if(k.isDel){(T=k.node)==null||T.clearTmpPoints(),this.workShapes.delete(g);break}const E=3,I=this.computNextAnimationIndex(k,E),M=k.isDiff?0:Math.max(0,(k.animationIndex||0)-E),L=(k.animationWorkData||[]).slice(M,I),b=(W=(v=k.node)==null?void 0:v.getWorkId())==null?void 0:W.toString();if((k.animationIndex||0)<I||k.isDiff){if((P=k.node)==null||P.consumeService({op:L,isFullWork:!1}),k.animationIndex=I,k.isDiff&&(k.isDiff=!1),L.length&&k.isEnableCursor){const A=L.slice(-3,-1);e.set(g,{workState:M===0?s.EvevtWorkState.Start:I===((O=k.animationWorkData)==null?void 0:O.length)?s.EvevtWorkState.Done:s.EvevtWorkState.Doing,op:A})}}else k.ops&&((R=k.node)==null||R.consumeService({op:k.animationWorkData||[],isFullWork:!0,replaceId:b}),k.isDel=!0,k.isEnableCursor&&e.set(g,{workState:s.EvevtWorkState.Done,op:L.slice(-3,-1)}));t=!0;break}}else{const E=!!k.ops;if((h=k.node)==null||h.consumeService({op:k.animationWorkData||[],isFullWork:E,replaceId:g}),(y=k.node)==null||y.updataOptService(k.updateNodeOpt),E){if(!k.isEnableCursor&&((f=k.updateNodeOpt)!=null&&f.useAnimation)&&((u=k.animationWorkData)!=null&&u.length)){const I=k.animationWorkData.slice(-3,-1);e.set(g,{workState:s.EvevtWorkState.Done,op:I,uid:(m=k.updateNodeOpt)==null?void 0:m.uid})}this.selectorWorkShapes.forEach((I,M)=>{var L;(L=I.selectIds)!=null&&L.includes(g)&&(this.willRunEffectSelectorIds.add(M),this.runEffect())}),(S=k.node)==null||S.clearTmpPoints(),this.workShapes.delete(g)}}break}}if(t&&this.runAnimation(),e.size){const g=[];e.forEach((k,E)=>{g.push({type:s.EPostMessageType.Cursor,uid:k.uid||E.split(s.Storage_Splitter)[0],op:k.op,workState:k.workState,viewId:this.thread.viewId})}),this.thread.post({sp:g})}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}hasDiffData(t,e,o){const r=t.length;if(e.length<r)return!0;switch(o){case s.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 s.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,T,v;const{workId:e,opt:o,toolsType:r,type:a,updateNodeOpt:i,ops:l,op:c,useAnimation:n,imageBitmap:p,isEnableCursor:h}=t;if(!e)return;const y=e.toString(),f=(m=this.vNodes.get(y))==null?void 0:m.rect;if(!((S=this.workShapes)!=null&&S.has(y))){let W={toolsType:r,animationWorkData:c||[],animationIndex:0,type:a,updateNodeOpt:i,ops:l,useAnimation:typeof n<"u"?n:typeof(i==null?void 0:i.useAnimation)<"u"?i==null?void 0:i.useAnimation:!0,oldRect:f,isDiff:!1,imageBitmap:p,isEnableCursor:h};r&&o&&(W=this.setNodeKey(y,W,r,o)),(T=this.workShapes)==null||T.set(y,W)}const u=(v=this.workShapes)==null?void 0:v.get(y);u.isEnableCursor=h,a&&(u.type=a),l&&(u.animationWorkData=s.transformToNormalData(l),u.ops=l),i&&(u.updateNodeOpt=i),c&&(u.isDiff=this.hasDiffData(u.animationWorkData||[],c,u.toolsType),u.animationWorkData=c),u.node&&u.node.getWorkId()!==y&&u.node.setWorkId(y),f&&(u.oldRect=f),r&&o&&(o.syncUnitTime&&(this.syncUnitTime=o.syncUnitTime),u.toolsType!==r&&r&&o&&this.setNodeKey(y,u,r,o),u.node&&u.node.setWorkOptions(o)),p&&(u.imageBitmap=p)}removeNode(t,e){t.indexOf(s.Storage_Selector_key)>-1&&this.removeSelectWork(e),this.thread.fullLayer.getElementsByName(t).forEach(o=>{o.remove(),s.removeTexture(o,this.thread.fullLayer.parent)}),this.thread.serviceLayer.getElementsByName(t).forEach(o=>{o.remove(),s.removeTexture(o,this.thread.serviceLayer.parent)}),this.vNodes.delete(t)}removeSelectWork(t){const{workId:e}=t,o=e==null?void 0:e.toString();o&&(this.activeSelectorShape(t),this.willRunEffectSelectorIds.add(o)),this.runEffect()}activeSelectorShape(t){var n,p,h;const{workId:e,opt:o,toolsType:r,type:a,selectIds:i}=t;if(!e)return;const l=e.toString();if(!((n=this.selectorWorkShapes)!=null&&n.has(l))){let y={toolsType:r,selectIds:i,type:a,opt:o};r&&o&&(y=this.setNodeKey(l,y,r,o)),(p=this.selectorWorkShapes)==null||p.set(l,y)}const c=(h=this.selectorWorkShapes)==null?void 0:h.get(l);a&&(c.type=a),c.node&&c.node.getWorkId()!==l&&c.node.setWorkId(l),c.selectIds=i||[]}setNodeKey(t,e,o,r){return e.toolsType=o,e.node=s.getShapeInstance({toolsType:o,toolsOpt:r,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.serviceLayer,workId:t},this),e}}class D{constructor(){d(this,"localWork");d(this,"serviceWork");d(this,"threadEngine")}registerMainThread(t){return this.threadEngine=t,this.localWork=t.localWork,this.serviceWork=t.serviceWork,this}}class K extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.CopyNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.FullWork&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var r;const{workId:o}=e;o&&await((r=this.localWork)==null?void 0:r.consumeFull(e))}}class z extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetColorNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c}=e;o===s.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:l,textUpdateForWoker:c}=o,n=r.sp||[];if(i)for(const[p,h]of a.entries())c&&h.toolsType===s.EToolsKey.Text?n.push({...h,workId:p,type:s.EPostMessageType.TextUpdate,dataType:s.EDataType.Local,willSyncService:!0}):n.push({...h,workId:p,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:l});return{sp:n}}}class q extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.ZIndexNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l}=e;o===s.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:l}=o,c=r.sp||[];if(i&&c)for(const[n,p]of a.entries())c.push({...p,workId:n,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:l});return{sp:c}}}class H extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.TranslateNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var h,y;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c,emitEventType:n,smoothSync:p}=e;o===s.Storage_Selector_key&&r&&(r.workState===s.EvevtWorkState.Done&&(r!=null&&r.translate)&&(r.translate[0]||r.translate[1])||r.workState!==s.EvevtWorkState.Done?await((h=this.localWork)==null?void 0:h.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,isSync:!0,textUpdateForWoker:c,emitEventType:n,callback:this.updateSelectorCallback,smoothSync:p})):r.workState===s.EvevtWorkState.Done&&((y=this.localWork)==null||y.vNodes.deleteLastTarget()))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a,workShapeNode:i,res:l,smoothSync:c}=e,{willSyncService:n,isSync:p,updateSelectorOpt:h,textUpdateForWoker:y}=o,f=h.workState,u=r.sp||[];if(f===s.EvevtWorkState.Start)return{sp:[],render:[]};const m=l==null?void 0:l.selectRect;if(n){u.push({type:s.EPostMessageType.Select,selectIds:i.selectIds,selectRect:m,willSyncService:f===s.EvevtWorkState.Done?!0:c,isSync:!0,points:f===s.EvevtWorkState.Done&&i.getChildrenPoints()||void 0,textOpt:i.textOpt});const S={useAnimation:h.useAnimation||!1};h.uid&&(S.uid=h.uid);for(const[T,v]of a.entries())y&&v.toolsType===s.EToolsKey.Text?u.push({...v,workId:T,type:s.EPostMessageType.TextUpdate,dataType:s.EDataType.Local,willSyncService:f===s.EvevtWorkState.Done?!0:c,updateNodeOpt:S}):(c||f===s.EvevtWorkState.Done)&&u.push({...v,workId:T,type:s.EPostMessageType.UpdateNode,updateNodeOpt:S,isSync:p})}return{sp:u}}}class V extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.DeleteNode)}async consume(){return!1}}class $ extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.ScaleNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:o,updateNodeOpt:r,willSyncService:a,willSerializeData:i,smoothSync:l}=e;o===s.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willSyncService:a,willSerializeData:i,isSync:!0,callback:this.updateSelectorCallback.bind(this),smoothSync:l}))}updateSelectorCallback(e){const{param:o,postData:r,workShapeNode:a,res:i,newServiceStore:l,smoothSync:c}=e,{updateSelectorOpt:n,willSyncService:p}=o,h=n.workState,y=r.sp||[],f=i==null?void 0:i.selectRect;if(h===s.EvevtWorkState.Start)return{sp:[],render:[]};if(p){y.push({type:s.EPostMessageType.Select,selectIds:a.selectIds,selectRect:f,willSyncService:h===s.EvevtWorkState.Done?!0:c,isSync:!0,points:h===s.EvevtWorkState.Done&&a.getChildrenPoints()||void 0,textOpt:a.textOpt});const u={useAnimation:n.useAnimation||!1};n.uid&&(u.uid=n.uid);for(const[m,S]of l.entries())S.toolsType===s.EToolsKey.Text?y.push({...S,workId:m,type:s.EPostMessageType.TextUpdate,dataType:s.EDataType.Local,willSyncService:h===s.EvevtWorkState.Done?!0:c,updateNodeOpt:u}):(c||h===s.EvevtWorkState.Done)&&y.push({...S,workId:m,type:s.EPostMessageType.UpdateNode,updateNodeOpt:u,isSync:!0})}return{sp:y}}}class G extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.RotateNode)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var p;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,emitEventType:c,smoothSync:n}=e;o===s.Storage_Selector_key&&r&&await((p=this.localWork)==null?void 0:p.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,emitEventType:c,isSync:!0,callback:this.updateSelectorCallback,smoothSync:n}))}updateSelectorCallback(e){const{param:o,postData:r,workShapeNode:a,res:i,newServiceStore:l,smoothSync:c}=e,{updateSelectorOpt:n,willSyncService:p,willSerializeData:h,isSync:y}=o,f=n.workState,u=r.sp||[],m=i==null?void 0:i.selectRect;if(p){h&&f===s.EvevtWorkState.Done&&u.push({type:s.EPostMessageType.Select,selectIds:a.selectIds,selectRect:m,willSyncService:f===s.EvevtWorkState.Done?!0:c,isSync:y,points:a.getChildrenPoints()});const S={useAnimation:n.useAnimation||!1};if(n.uid&&(S.uid=n.uid),c||f===s.EvevtWorkState.Done)for(const[T,v]of l.entries())u.push({...v,workId:T,type:s.EPostMessageType.UpdateNode,updateNodeOpt:S,isSync:y})}return{sp:u}}}class j extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetFontStyle)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c}=e;o===s.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a,workShapeNode:i,res:l}=e,{willSyncService:c,isSync:n,updateSelectorOpt:p,textUpdateForWoker:h}=o,y=r.sp||[],f=l==null?void 0:l.selectRect;if(c&&y){p.fontSize&&y.push({type:s.EPostMessageType.Select,selectIds:i.selectIds,selectRect:f,willSyncService:c,isSync:n,points:i.getChildrenPoints()});for(const[u,m]of a.entries())h&&m.toolsType===s.EToolsKey.Text?y.push({...m,workId:u,type:s.EPostMessageType.TextUpdate,dataType:s.EDataType.Local,willSyncService:!0}):y.push({...m,workId:u,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:y}}}class Z extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetPoint)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,textUpdateForWoker:c}=e;o===s.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,emitEventType:this.emitEventType,willSerializeData:l,isSync:!0,textUpdateForWoker:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a,workShapeNode:i,res:l}=e,{willSyncService:c,isSync:n}=o,p=r.sp||[],h=l==null?void 0:l.selectRect;if(c&&p){for(const[y,f]of a.entries())p.push({...f,workId:y,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});p.push({type:s.EPostMessageType.Select,selectIds:i.selectIds,selectRect:h,willSyncService:c,isSync:n,points:i.getChildrenPoints()})}return{sp:p}}}class X extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetLock)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l}=e;o===s.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a,workShapeNode:i,res:l}=e,{willSyncService:c,isSync:n,updateSelectorOpt:p}=o,h=r.sp||[],y=l==null?void 0:l.selectRect;if(c&&h){for(const[f,u]of a.entries())h.push({...u,workId:f,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});h.push({isLocked:p.isLocked,selectorColor:i.selectorColor,scaleType:i.scaleType,canRotate:i.canRotate,type:s.EPostMessageType.Select,selectIds:i.selectIds,selectRect:y,willSyncService:c,isSync:n})}return{sp:h}}}class Y extends D{constructor(){super(...arguments);d(this,"emitEventType",s.EmitEventType.SetShapeOpt)}async consume(e){const{msgType:o,dataType:r,emitEventType:a}=e;if(o===s.EPostMessageType.UpdateNode&&r===s.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:o,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l}=e;o===s.Storage_Selector_key&&r&&await((c=this.localWork)==null?void 0:c.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:o,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:l}=o,c=r.sp||[];if(i&&c)for(const[n,p]of a.entries())c.push({...p,workId:n,type:s.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:l});return{sp:c}}}class Q{constructor(t){d(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case s.EmitEventType.TranslateNode:return new H;case s.EmitEventType.ZIndexNode:return new q;case s.EmitEventType.CopyNode:return new K;case s.EmitEventType.SetColorNode:return new z;case s.EmitEventType.DeleteNode:return new V;case s.EmitEventType.ScaleNode:return new $;case s.EmitEventType.RotateNode:return new G;case s.EmitEventType.SetFontStyle:return new j;case s.EmitEventType.SetPoint:return new Z;case s.EmitEventType.SetLock:return new X;case s.EmitEventType.SetShapeOpt:return new Y}}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 J{constructor(t,e){d(this,"viewId");d(this,"fullLayer");d(this,"topLayer");d(this,"localLayer");d(this,"serviceLayer");d(this,"snapshotFullLayer");d(this,"vNodes");d(this,"master");d(this,"opt");d(this,"cameraOpt");d(this,"scene");d(this,"localWork");d(this,"serviceWork");d(this,"topWork");d(this,"taskUpdateCameraId");d(this,"debounceUpdateCameraId");d(this,"debounceUpdateCache",new Set);d(this,"mainThreadPostId");d(this,"combinePostMsg",new Set);d(this,"methodBuilder");d(this,"cacheImages",new Map);d(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master;const o=s.DefaultAppliancePluginExtrasOptions.bufferSize.full,r=s.DefaultAppliancePluginExtrasOptions.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===s.Main_View_Id?o:r*2}),this.topLayer=this.createLayer("topLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===s.Main_View_Id,r),contextType:"2d"}),this.localLayer=this.createLayer("localLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===s.Main_View_Id,r),contextType:"2d"}),this.serviceLayer=this.createLayer("serviceLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===s.Main_View_Id,r),contextType:"2d"}),this.vNodes=new s.VNodeManager(t,this.scene);const a={thread:this,vNodes:this.vNodes};this.localWork=new _(a),this.serviceWork=new U(a),this.topWork=new B(a),this.vNodes.init(this.fullLayer),this.methodBuilder=new Q([s.EmitEventType.CopyNode,s.EmitEventType.SetColorNode,s.EmitEventType.DeleteNode,s.EmitEventType.RotateNode,s.EmitEventType.ScaleNode,s.EmitEventType.TranslateNode,s.EmitEventType.ZIndexNode,s.EmitEventType.SetFontStyle,s.EmitEventType.SetPoint,s.EmitEventType.SetLock,s.EmitEventType.SetShapeOpt]).registerForMainThread(this)}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,o]of this.cacheImages.entries())if(e===t&&o.imageBitmap)return o.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,o]of this.cacheImages.entries())o.workId===t&&(o.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:o,opt:r,dataType:a,workId:i,workState:l,imageSrc:c,imageBitmap:n,workIds:p,isLockSentEventCursor:h}=t,y=i==null?void 0:i.toString();switch(e){case s.EPostMessageType.UpdateDpr:N.isNumber(t.dpr)&&this.updateDpr(t.dpr);break;case s.EPostMessageType.AuthClear:{const{clearUids:f,localUid:u}=t;this.vNodes.setCanClearUids(f),this.vNodes.setLocalUid(u);break}case s.EPostMessageType.Destroy:this.destroy();break;case s.EPostMessageType.Clear:this.clearAll();break;case s.EPostMessageType.UpdateCamera:await this.updateCamera(t);break;case s.EPostMessageType.UpdateTools:if(o&&r){const f={toolsType:o,toolsOpt:r};this.topWork.canUseTopLayer(o)?this.topWork.setToolsOpt(f):this.localWork.setToolsOpt(f)}break;case s.EPostMessageType.CreateWork:if(y&&r&&o){if(this.topWork.canUseTopLayer(o)){this.topWork.getToolsOpt()||this.topWork.setToolsOpt({toolsType:o,toolsOpt:r}),this.topWork.setWorkOptions(y,r);break}this.localWork.getToolsOpt()||this.localWork.setToolsOpt({toolsType:o,toolsOpt:r}),this.localWork.setWorkOptions(y,r)}break;case s.EPostMessageType.DrawWork:l===s.EvevtWorkState.Done&&a===s.EDataType.Local?(this.consumeDrawAll(a,t),o===s.EToolsKey.LaserPen&&h&&this.post({sp:[{type:s.EPostMessageType.None,isLockSentEventCursor:h}]})):this.consumeDraw(a,t);break;case s.EPostMessageType.UpdateNode:case s.EPostMessageType.FullWork:if(o&&this.topWork.canUseTopLayer(o)){this.consumeDrawAll(a,t);break}this.consumeFull(a,t);break;case s.EPostMessageType.RemoveNode:await this.removeNode(t);return;case s.EPostMessageType.Select:a===s.EDataType.Service&&(i===s.Storage_Selector_key?this.localWork.updateFullSelectWork(t):this.serviceWork.runSelectWork(t));break;case s.EPostMessageType.CursorBlur:this.localWork.cursorBlur();return;case s.EPostMessageType.CursorHover:this.localWork.cursorHover(t);break;case s.EPostMessageType.GetTextActive:a===s.EDataType.Local&&this.localWork.checkTextActive(t);break;case s.EPostMessageType.GetImageBitMap:if(c&&n&&i){const f=i.toString();this.deleteCachedImagesByWorkId(f),this.cacheImages.set(c,{imageBitmap:n,workId:f});const u=this.imageResolveMap.get(c);if(u){const{resolve:m,timer:S}=u;S&&clearTimeout(S),m&&m(c)}}break;case s.EPostMessageType.GetVNodeInfo:if(i&&p){const f=p.map(u=>this.vNodes.get(u));this.post({sp:[{type:s.EPostMessageType.GetVNodeInfo,dataType:s.EDataType.Local,workId:i,vInfo:f}]})}break}}}getIconSize(t,e,o){const r=t*o,a=e*o;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:o,workId:r}=t;if(e===s.EToolsKey.Image&&o&&r){const a=r.toString(),{src:i,type:l,width:c,height:n,strokeColor:p}=o;if(!i||!l||!c||!n)return;let h=i;if(l===s.EImageType.Iconify){const[m,S]=this.getIconSize(c,n,this.opt.displayer.dpr);h=`${i}?width=${m}&height=${S}&color=${p}`}if(this.cacheImages.has(h)){const m=this.getCachedImages(h);if(m)return m}if(this.imageResolveMap.has(h)){const m=this.getCachedImagesByWorkId(a);if(m)return m}const u=await new Promise(m=>{const S=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};S.timer&&clearTimeout(S.timer),S.resolve=m,S.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,S),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!1,type:s.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(u),this.getCachedImages(h)}}async removeNode(t){const{dataType:e,workId:o,removeIds:r}=t,a=r||[];if(o&&a.push(o.toString()),a.length)for(const i of a){if(i===s.Storage_Selector_key){await this.localWork.removeSelector(t);continue}e===s.EDataType.Local?this.localWork.removeWork(t):e===s.EDataType.Service&&this.serviceWork.removeWork(t),await this.localWork.colloctEffectSelectWork(t)}}async consumeFull(t,e){const o=await this.localWork.colloctEffectSelectWork(e);o&&t===s.EDataType.Local&&await this.localWork.consumeFull(o),o&&t===s.EDataType.Service&&this.serviceWork.consumeFull(o)}setCameraOpt(t){this.cameraOpt=t;const{scale:e,centerX:o,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",[-o,-r]),this.topLayer.setAttribute("scale",[e,e]),this.topLayer.setAttribute("translate",[-o,-r]),this.localLayer.setAttribute("scale",[e,e]),this.localLayer.setAttribute("translate",[-o,-r]),this.serviceLayer.setAttribute("scale",[e,e]),this.serviceLayer.setAttribute("translate",[-o,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var r;this.mainThreadPostId=void 0;const t=[];let e,o;for(const a of this.combinePostMsg.values()){if((r=a.sp)!=null&&r.length)for(const i of a.sp){let l=!1;for(const c of t)if(N.isEqual(i,c)){l=!0;break}l||t.push(i)}N.isNumber(a.fullWorkerDrawCount)&&(e=a.fullWorkerDrawCount),N.isNumber(a.consumeCount)&&(o=a.consumeCount)}return this.combinePostMsg.clear(),{sp:t,fullWorkerDrawCount:e,consumeCount:o}}combinePost(){var o,r;const t=this.combinePostData(),e=(o=t.sp)==null?void 0:o.filter(a=>a.type!==s.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()}),s.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:s.EPostMessageType.Clear}]})}consumeDrawAll(t,e){const{toolsType:o,workId:r}=e;if(r){const a=r.toString();if(o&&this.topWork.canUseTopLayer(o)){t===s.EDataType.Local&&(this.topWork.getLocalWorkShape(r.toString())||this.topWork.createLocalWork(e)),this.topWork.consumeDrawAll(e);return}t===s.EDataType.Local&&(this.localWork.getWorkShape(a)||this.localWork.createLocalWork(e),this.localWork.consumeDrawAll(e,this.serviceWork))}}consumeDraw(t,e){const{opt:o,workId:r,toolsType:a}=e;if(r&&a&&o){const i=r.toString();if(this.topWork.canUseTopLayer(a)){t===s.EDataType.Local&&(this.topWork.getLocalWorkShape(i)||this.topWork.createLocalWork(e)),this.topWork.consumeDraw(e);return}t===s.EDataType.Local?(this.localWork.getWorkShape(i)||this.localWork.createLocalWork(e),this.localWork.consumeDraw(e,this.serviceWork)):t===s.EDataType.Service&&this.serviceWork.consumeDraw(e);return}}async updateCamera(t){var r;const{cameraOpt:e,scenePath:o}=t;if(e&&!N.isEqual(this.cameraOpt,e)){if(this.taskUpdateCameraId&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0),o){let n=!1;for(const[p,h]of this.localWork.getWorkShapes().entries())switch(h.toolsType){case s.EToolsKey.Text:case s.EToolsKey.BitMapEraser:case s.EToolsKey.PencilEraser:case s.EToolsKey.Eraser:case s.EToolsKey.Selector:case s.EToolsKey.LaserPen:break;default:p!==s.Cursor_Hover_Id&&p!==s.Storage_Selector_key&&(n=!0);break}if(n){this.taskUpdateCameraId=setTimeout(()=>{this.taskUpdateCameraId=void 0,this.updateCamera(t)},s.Task_Time_Interval);return}}const a=new Map;for(const[n,p]of this.vNodes.getNodesByType(s.EToolsKey.Text).entries()){const h=p.rect;a.set(n,N.cloneDeep(h))}const i=new Set(a.keys());let l=!1;if(this.localWork.hasSelector()){const n=(r=this.localWork.getSelector())==null?void 0:r.selectIds;if(n){l=!0;for(const p of n)i.add(p)}}let c=!1;if(this.serviceWork.selectorWorkShapes.size)for(const n of this.serviceWork.selectorWorkShapes.values()){const p=n.selectIds;if(p){c=!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[n,p]of a.entries()){const h=this.vNodes.get(n);if(h){const y=p,f=h.rect,u=this.getSceneRect(),m=s.getRectMatrixrRelation(y,u),S=s.getRectMatrixrRelation(f,u);let T=!1;if((m!==S||y.w!==f.w||y.h!==f.h||S===s.EMatrixrRelationType.intersect)&&(T=!0),T){const{toolsType:v,opt:W}=h;v===s.EToolsKey.Text&&W.workState===s.EvevtWorkState.Done&&this.debounceUpdateCache.add(n)}}}if(l&&this.localWork.reRenderSelector(),c)for(const[n,p]of this.serviceWork.selectorWorkShapes.entries())this.serviceWork.runSelectWork({workId:n,selectIds:p.selectIds,msgType:s.EPostMessageType.Select,dataType:s.EDataType.Service,viewId:this.viewId});this.debounceUpdateCameraId=setTimeout(()=>{var p;this.debounceUpdateCameraId=void 0;const n=[];for(const h of this.debounceUpdateCache.values()){if((p=this.fullLayer)==null?void 0:p.getElementsByName(h)[0]){const f=this.vNodes.get(h);if(f){const{toolsType:u,opt:m,rect:S}=f,T=this.localWork.setFullWork({toolsType:u,opt:m,workId:h});if(T){const v=this.getSceneRect(),W=s.getRectMatrixrRelation(S,v);n.push(T.consumeServiceAsync({isFullWork:!0,replaceId:h,isDrawLabel:W!==s.EMatrixrRelationType.outside}))}}}this.debounceUpdateCache.delete(h)}this.vNodes.updateLowLevelNodesRect(),this.vNodes.clearHighLevelIds()},s.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,o){const{width:r,height:a}=o,i=`canvas-${t}`,l=e.layer(i,{...o,offscreen:!1}),c=new C.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return l.append(c),c}updateScene(t){this.scene.attr({...t});const{width:e,height:o}=t;this.scene.width=e,this.scene.height=o,this.updateLayer({width:e,height:o})}updateLayer(t){const{width:e,height:o}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",o),this.fullLayer.setAttribute("size",[e,o]),this.fullLayer.setAttribute("pos",[e*.5,o*.5]),this.topLayer.parent.setAttribute("width",e),this.topLayer.parent.setAttribute("height",o),this.topLayer.setAttribute("size",[e,o]),this.topLayer.setAttribute("pos",[e*.5,o*.5]),this.localLayer.parent.setAttribute("width",e),this.localLayer.parent.setAttribute("height",o),this.localLayer.setAttribute("size",[e,o]),this.localLayer.setAttribute("pos",[e*.5,o*.5]),this.serviceLayer.parent.setAttribute("width",e),this.serviceLayer.parent.setAttribute("height",o),this.serviceLayer.setAttribute("size",[e,o]),this.serviceLayer.setAttribute("pos",[e*.5,o*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.vNodes.clear(),this.fullLayer.remove(),s.removeTexture(this.fullLayer,this.fullLayer.parent),this.topLayer.remove(),s.removeTexture(this.topLayer,this.topLayer.parent),this.localLayer.remove(),s.removeTexture(this.localLayer,this.localLayer.parent),this.serviceLayer.remove(),s.removeTexture(this.serviceLayer,this.serviceLayer.parent),this.scene.remove(),this.localWork.destroy(),this.serviceWork.destroy(),this.topWork.destroy()}}class ee{constructor(t,e){d(this,"viewId");d(this,"fullLayer");d(this,"master");d(this,"opt");d(this,"scene");d(this,"mainThreadPostId");d(this,"combinePostMsg",new Set);d(this,"workShapes",new Map);d(this,"cacheImages",new Map);d(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===s.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,o]of this.cacheImages.entries())if(e===t&&o.imageBitmap)return o.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,o]of this.cacheImages.entries())o.workId===t&&(o.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:o,imageBitmap:r,workId:a}=t;switch(e){case s.EPostMessageType.Snapshot:await this.getSnapshot(t),this.destroy();return;case s.EPostMessageType.BoundingBox:await this.getBoundingRect(t),this.destroy();return;case s.EPostMessageType.GetImageBitMap:if(o&&r&&a){const i=a.toString();this.deleteCachedImagesByWorkId(i),this.cacheImages.set(o,{imageBitmap:r,workId:i});const l=this.imageResolveMap.get(o);if(l){const{resolve:c,timer:n}=l;n&&clearTimeout(n),c&&c(o)}}break}}getIconSize(t,e,o){const r=t*o,a=e*o;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:o,workId:r}=t;if(e===s.EToolsKey.Image&&o&&r){const a=r.toString(),{src:i,type:l,width:c,height:n,strokeColor:p}=o;if(!i||!l||!c||!n)return;let h=i;if(l===s.EImageType.Iconify){const[m,S]=this.getIconSize(c,n,this.opt.displayer.dpr);h=`${i}?width=${m}&height=${S}&color=${p}`}if(this.cacheImages.has(h)){const m=this.getCachedImages(h);if(m)return m}if(this.imageResolveMap.has(h)){const m=this.getCachedImagesByWorkId(a);if(m)return m}const u=await new Promise(m=>{const S=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};S.timer&&clearTimeout(S.timer),S.resolve=m,S.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,S),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!0,type:s.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(u),this.getCachedImages(h)}}createWorkShapeNode(t){return s.getShapeInstance({...t,fullLayer:this.fullLayer,drawLayer:void 0})}setFullWork(t){const{workId:e,opt:o,toolsType:r}=t;if(e&&o&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(o)):i=this.createWorkShapeNode({toolsOpt:o,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async runFullWork(t){var r;const e=this.setFullWork(t),o=t.ops&&s.transformToNormalData(t.ops);if(e){let a,i;const l=(r=e.getWorkId())==null?void 0:r.toString();return e.toolsType===s.EToolsKey.Image?a=await e.consumeServiceAsync({isFullWork:!0,worker:this}):e.toolsType===s.EToolsKey.Text?a=await e.consumeServiceAsync({isFullWork:!0,replaceId:l,isDrawLabel:!0}):(a=e.consumeService({op:o,isFullWork:!0,replaceId:l}),i=(t==null?void 0:t.updateNodeOpt)&&e.updataOptService(t.updateNodeOpt)),s.computRect(a,i)}}async getSnapshot(t){const{scenePath:e,scenes:o,cameraOpt:r,w:a,h:i}=t;if(e&&o&&r){this.setCameraOpt(r);let l;for(const[n,p]of Object.entries(o))if(p!=null&&p.type)switch(p==null?void 0:p.type){case s.EPostMessageType.UpdateNode:case s.EPostMessageType.FullWork:{const{opt:h}=p,y={...p,opt:h,workId:n,msgType:s.EPostMessageType.FullWork,dataType:s.EDataType.Service,viewId:this.viewId},f=await this.runFullWork(y);l=s.computRect(l,f);break}}let c;a&&i&&(c={resizeWidth:a,resizeHeight:i}),await this.getSnapshotRender({scenePath:e,options:c})}}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 o=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,o,r,a,i,e)}async getSnapshotRender(t){var a;const{scenePath:e,options:o}=t;((a=this.fullLayer)==null?void 0:a.parent).render();const r=await this.getRectImageBitmap(this.getSceneRect(),o);r&&(this.post({sp:[{type:s.EPostMessageType.Snapshot,scenePath:e,imageBitmap:r,viewId:this.viewId}]}),this.fullLayer&&s.removeAllChildren(this.fullLayer,this.fullLayer.parent))}async getBoundingRect(t){const{scenePath:e,scenes:o,cameraOpt:r}=t;if(e&&o&&r){this.setCameraOpt(r);let a;for(const[i,l]of Object.entries(o))if(l!=null&&l.type)switch(l==null?void 0:l.type){case s.EPostMessageType.UpdateNode:case s.EPostMessageType.FullWork:{const c=await this.runFullWork({...l,workId:i,msgType:s.EPostMessageType.FullWork,dataType:s.EDataType.Service,viewId:this.viewId});a=s.computRect(a,c);break}}a&&this.post({sp:[{type:s.EPostMessageType.BoundingBox,scenePath:e,rect:a}]})}}setCameraOpt(t){const{scale:e,centerX:o,centerY:r,width:a,height:i}=t;this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-o,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var e;this.mainThreadPostId=void 0;const t=[];for(const o of this.combinePostMsg.values())if((e=o.sp)!=null&&e.length)for(const r of o.sp){let a=!1;for(const i of t)if(s.isEqual(r,i)){a=!0;break}a||t.push(r)}return this.combinePostMsg.clear(),{sp:t}}combinePost(){var o,r;const t=this.combinePostData(),e=(o=t.sp)==null?void 0:o.filter(a=>a.type!==s.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,o){const{width:r,height:a}=o,i=`canvas-${t}`,l=e.layer(i,o),c=new C.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return l.append(c),c}updateScene(t){this.scene.attr({...t});const{width:e,height:o}=t;this.scene.width=e,this.scene.height=o,this.updateLayer({width:e,height:o})}updateLayer(t){const{width:e,height:o}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",o),this.fullLayer.setAttribute("size",[e,o]),this.fullLayer.setAttribute("pos",[e*.5,o*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.fullLayer.remove(),s.removeTexture(this.fullLayer,this.fullLayer.parent),this.scene.remove()}}class te{constructor(t){d(this,"mainThreadMap",new Map);d(this,"snapshotThread");d(this,"master");this.master=t}post(t){const{fullWorkerDrawCount:e,sp:o,workerTasksqueueCount:r,consumeCount:a}=t;this.master.isBusy&&s.isNumber(r)&&this.master.setWorkerTasksqueueCount(r),s.isNumber(e)&&this.master.setMaxDrawCount(e),s.isNumber(a)&&this.master.setConsumeCount(a),o&&this.master.collectorSyncData(o)}destroy(){this.mainThreadMap.clear()}createMainThread(t,e){return new J(t,e)}createSnapshotThread(t,e){return new ee(t,e)}async consume(t){var e,o,r,a;for(const i of t.values()){const{msgType:l,viewId:c,tasksqueue:n,mainTasksqueueCount:p,layerOpt:h,offscreenCanvasOpt:y,cameraOpt:f,isSubWorker:u}=i;if(l===s.EPostMessageType.Console){console.log(this);continue}if(l===s.EPostMessageType.Init){const S=(e=this.master.control.viewContainerManager.getView(c))==null?void 0:e.displayer,T=S==null?void 0:S.canvasContainerRef.current;if(S&&T&&h&&y){const v=this.createMainThread(c,{displayer:S,container:T,layerOpt:h,master:this.master,canvasOpt:y,post:this.post.bind(this)});this.mainThreadMap.set(c,v),v&&f&&v.setCameraOpt(f)}continue}if((l===s.EPostMessageType.Snapshot||l===s.EPostMessageType.BoundingBox)&&c===((o=this.master.control.viewContainerManager.mainView)==null?void 0:o.id)){const S=(r=this.master.control.viewContainerManager.getView(c))==null?void 0:r.displayer,T=(a=S.snapshotContainerRef)==null?void 0:a.current;if(S&&T&&f){T.style.width=`${f.width}px`,T.style.height=`${f.height}px`;const v={...s.ViewContainerManager.defaultLayerOpt,offscreen:!1,width:f.width,height:f.height},W={...s.ViewContainerManager.defaultScreenCanvasOpt,width:f.width,height:f.height};this.snapshotThread=this.createSnapshotThread(c,{displayer:S,container:T,layerOpt:v,master:this.master,canvasOpt:W,post:this.post.bind(this)}),this.snapshotThread.on(i).then(()=>{this.snapshotThread=void 0,T.innerHTML="",T.style.width="",T.style.height=""});continue}}if(l===s.EPostMessageType.GetImageBitMap&&u&&this.snapshotThread){this.snapshotThread.on(i);continue}if(l===s.EPostMessageType.TasksQueue&&(n!=null&&n.size)){for(const[S,T]of this.mainThreadMap.entries()){const v=n.get(S);v&&(await T.on(v),p&&this.post({workerTasksqueueCount:p}))}continue}if(c===s.Storage_ViewId_ALL){for(const S of this.mainThreadMap.values())S.on(i),l===s.EPostMessageType.Destroy&&this.mainThreadMap.delete(c);continue}const m=this.mainThreadMap.get(c);m&&(m.on(i),l===s.EPostMessageType.Destroy&&this.mainThreadMap.delete(c))}}}exports.MainThreadManagerImpl=te;