@netless/appliance-plugin 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdn/cdn.js +1 -1
- package/cdn/{fullWorker-cbo6pm.js → fullWorker-BMUrhG.js} +1 -1
- package/cdn/{subWorker-BFcARi.js → subWorker-CuaPMN.js} +1 -1
- package/dist/appliance-plugin.js +1 -1
- package/dist/appliance-plugin.mjs +1 -1
- package/dist/collector/collector.d.ts +0 -1
- package/dist/fullWorker.js +1 -1
- package/dist/{index-BAy7v2Ki.mjs → index-9ShgZO4H.mjs} +4 -7
- package/dist/index-B8PVRB8H.js +1 -0
- package/dist/{index-BppjVY_l.js → index-BG79OM_x.js} +1 -1
- package/dist/{index-CXJAxvGe.mjs → index-D03v2p6y.mjs} +1 -1
- package/dist/subWorker.js +1 -1
- package/package.json +1 -1
- package/dist/index-B6T_rYrQ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var C=Object.defineProperty;var R=(v,t,e)=>t in v?C(v,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):v[t]=e;var d=(v,t,e)=>R(v,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./index-B6T_rYrQ.js"),D=require("spritejs"),N=require("lodash");require("lineclip");require("white-web-sdk");require("react-dom");require("react");require("eventemitter2");class A{constructor(t,e){d(this,"viewId");d(this,"scene");d(this,"fullLayer");d(this,"curNodeMap",new Map);d(this,"targetNodeMap",[]);d(this,"highLevelIds");d(this,"canClearUids");d(this,"localUid");this.viewId=t,this.scene=e}init(t){this.fullLayer=t}get(t){return this.curNodeMap.get(t)}setLocalUid(t){this.localUid=t}getLocalUid(){return this.localUid}setCanClearUids(t){this.canClearUids=t}getCanClearUids(){return this.canClearUids}getCanEraserNodes(t){const e=new Map;for(const[s,r]of t.entries())r.toolsType===o.EToolsKey.Image&&r.opt.locked||r.toolsType===o.EToolsKey.Text&&(r.opt.workState===o.EvevtWorkState.Doing||r.opt.workState===o.EvevtWorkState.Start)||this.isCanClearWorkId(s)&&e.set(s,r);return e}getNodesByType(t){const e=new Map;return this.curNodeMap.forEach((s,r)=>{s.toolsType===t&&e.set(r,s)}),e}hasRenderNodes(){return!0}has(t){return this.curNodeMap.has(t)}setInfo(t,e){const s=this.curNodeMap.get(t)||{name:t,rect:e.rect};e.rect&&(s.rect=o.cloneDeep(e.rect)),e.op&&o.checkOp(e.op)&&(s.op=o.cloneDeep(e.op)),e.canRotate&&(s.canRotate=e.canRotate),e.scaleType&&(s.scaleType=e.scaleType),e.opt&&(s.opt=o.cloneDeep(e.opt)),e.toolsType&&(s.toolsType=e.toolsType),e.centerPos&&(s.centerPos=o.cloneDeep(e.centerPos)),o.isBoolean(e.isSelected)&&(s.isSelected=e.isSelected),s.rect?this.curNodeMap.set(t,s):this.curNodeMap.delete(t)}selected(t){this.setInfo(t,{isSelected:!0})}unSelected(t){this.setInfo(t,{isSelected:!1})}delete(t){this.curNodeMap.delete(t)}clear(){this.curNodeMap.clear(),this.targetNodeMap.length=0}getRectIntersectRange(t,e=!0,s=!0){let r;const a=new Map;for(const[i,c]of this.curNodeMap.entries())if(o.isIntersect(t,c.rect)){if(e&&c.toolsType===o.EToolsKey.Image&&c.opt.locked||s&&c.toolsType===o.EToolsKey.Text&&(c.opt.workState===o.EvevtWorkState.Doing||c.opt.workState===o.EvevtWorkState.Start))continue;r=o.computRect(r,c.rect),a.set(i,c)}return{rectRange:r,nodeRange:a}}getNodeRectFormShape(t,e){const s=o.getShapeTools(e.toolsType);return this.fullLayer&&(s==null?void 0:s.getRectFromLayer(this.fullLayer,t))}updateNodeRect(t){const e=this.curNodeMap.get(t);if(e){const s=this.getNodeRectFormShape(t,e);if(!s){this.curNodeMap.delete(t);return}e.rect=s,this.curNodeMap.set(t,e)}}updateHighLevelNodesRect(t){this.highLevelIds=t;for(const e of this.highLevelIds.keys())this.updateNodeRect(e)}updateLowLevelNodesRect(){var t;for(const e of this.curNodeMap.keys())(t=this.highLevelIds)!=null&&t.has(e)||this.updateNodeRect(e)}clearHighLevelIds(){this.highLevelIds=void 0}setTargetAssignKeys(t){const e=new Map;for(const s of t){const r=this.curNodeMap.get(s);r&&e.set(s,o.cloneDeep(r))}return this.targetNodeMap.push(o.cloneDeep(e)),this.targetNodeMap.length-1}setTarget(){return this.targetNodeMap.push(o.cloneDeep(this.curNodeMap)),this.targetNodeMap.length-1}getLastTarget(){return this.targetNodeMap[this.targetNodeMap.length-1]}deleteLastTarget(){this.targetNodeMap.length&&(this.targetNodeMap.length=this.targetNodeMap.length-1)}getTarget(t){return this.targetNodeMap[t]}deleteTarget(t){this.targetNodeMap.length=t}clearTarget(){this.targetNodeMap.length=0}isLocalWorkId(t){return t.split(o.Storage_Splitter).length===1}isCanClearWorkId(t){if(this.canClearUids===void 0||this.canClearUids===!0)return!0;if(o.isSet(this.canClearUids)){const e=t.split(o.Storage_Splitter);if(e.length===1)return this.canClearUids.has("localSelf")||this.localUid&&this.canClearUids.has(this.localUid);if(e.length===2)return this.canClearUids.has(e[0])}return!1}}class x{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",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}getLocalWorkShape(t){return this.localWorkShapes.get(t)}createLocalWorkShape(t,e){if(t&&this.tmpOpt){const s={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},r=this.createWorkShapeNode({...s,workId:t});return r&&this.localWorkShapes.set(t,{node:r,toolsType:r.toolsType,workState:o.EvevtWorkState.Start}),r}}canUseTopLayer(t){return t===o.EToolsKey.LaserPen}destroy(){this.clearAll()}clearAll(){this.thread.topLayer.children.length&&(this.thread.topLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),this.thread.serviceLayer.removeAllChildren()),this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}consumeDraw(t){const{workId:e,dataType:s}=t;if(s===o.EDataType.Service)this.activeServiceWorkShape(t);else{const r=e==null?void 0:e.toString(),a=r&&this.localWorkShapes.get(r);if(!a)return;const i=a.node.consume({data:t,isFullWork:!1,isSubWorker:!0});i.rect&&(a.result=i,a.workState=o.EvevtWorkState.Doing,r&&this.localWorkShapes.set(r,a))}this.runAnimation()}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}createWorkShapeNode(t){const{toolsType:e}=t;if(e===o.EToolsKey.LaserPen)return o.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.topLayer,drawLayer:this.thread.topLayer})}setNodeKey(t,e,s,r){return e.toolsType=s,e.node=this.createWorkShapeNode({workId:t,toolsType:s,toolsOpt:r}),e}activeServiceWorkShape(t){var y,u;const{workId:e,opt:s,toolsType:r,type:a,updateNodeOpt:i,ops:c,op:l}=t;if(!e)return;const n=e.toString(),p=(y=this.vNodes.get(n))==null?void 0:y.rect;if(!((u=this.serviceWorkShapes)!=null&&u.has(n))){let k={toolsType:r,animationWorkData:l||[],animationIndex:0,type:a,updateNodeOpt:i,ops:c,oldRect:p};r&&s&&(k=this.setNodeKey(n,k,r,s)),this.serviceWorkShapes.set(n,k)}const h=this.serviceWorkShapes.get(n);a&&(h.type=a),c&&(h.animationWorkData=o.transformToNormalData(c),h.ops=c),i&&(h.updateNodeOpt=i),l&&(h.animationWorkData=l),h.node&&h.node.getWorkId()!==n&&h.node.setWorkId(n),p&&(h.oldRect=p),r&&s&&(h.toolsType!==r&&r&&s&&this.setNodeKey(n,h,r,s),h.node&&h.node.setWorkOptions(s))}computNextAnimationIndex(t,e){var a;const s=((a=t.node)==null?void 0:a.syncUnitTime)||this.syncUnitTime,r=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/s)*e;return Math.min((t.animationIndex||0)+(r||e),(t.animationWorkData||[]).length)}animationDraw(){var r,a,i,c;this.animationId=void 0;let t=!1;const e=new Map,s=[];for(const[l,n]of this.serviceWorkShapes.entries())switch(n.toolsType){case o.EToolsKey.LaserPen:{const h=this.computNextAnimationIndex(n,8),y=Math.max(0,n.animationIndex||0),u=(n.animationWorkData||[]).slice(y,h);if((n.animationIndex||0)<h&&((r=n.node)==null||r.consumeService({op:u,isFullWork:!1}),n.animationIndex=h,u.length&&e.set(l,{workState:y===0?o.EvevtWorkState.Start:h===((a=n.animationWorkData)==null?void 0:a.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:u.slice(-2)})),n.isDel){(i=n.node)==null||i.clearTmpPoints(),this.serviceWorkShapes.delete(l);break}n.ops&&n.animationIndex===((c=n.animationWorkData)==null?void 0:c.length)&&!n.isDel&&(this.thread.topLayer.getElementsByName(l.toString())[0]||(n.isDel=!0,this.serviceWorkShapes.set(l,n))),t=!0;break}}for(const[l,n]of this.localWorkShapes.entries()){const{result:p,toolsType:h,isDel:y,workState:u}=n;switch(h){case o.EToolsKey.LaserPen:{if(y){n.node.clearTmpPoints(),this.localWorkShapes.delete(l),s.push({removeIds:[l.toString()],type:o.EPostMessageType.RemoveNode});break}p&&((p.op||p.ops)&&s.push(p),n.result=void 0),!this.thread.topLayer.getElementsByName(l.toString())[0]&&u===o.EvevtWorkState.Done&&(n.isDel=!0,this.localWorkShapes.set(l,n)),t=!0;break}}}t&&this.runAnimation(),e.size&&e.forEach((l,n)=>{s.push({type:o.EPostMessageType.Cursor,uid:n.split(o.Storage_Splitter)[0],op:l.op,workState:l.workState,viewId:this.thread.viewId})}),s.length&&this.thread.post({sp:s})}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}setWorkOptions(t,e){var r;let s=(r=this.localWorkShapes.get(t))==null?void 0:r.node;if(!s&&this.tmpOpt){const{toolsType:a}=this.tmpOpt;this.tmpOpt.toolsOpt=e,s=this.createWorkShapeNode({workId:t,toolsType:a,toolsOpt:e}),s&&this.localWorkShapes.set(t,{node:s,toolsType:a,workState:o.EvevtWorkState.Start}),this.setToolsOpt(this.tmpOpt)}e!=null&&e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),s&&s.setWorkOptions(e)}consumeDrawAll(t){const{workId:e,dataType:s}=t;if(s===o.EDataType.Service)this.activeServiceWorkShape(t);else{const r=e==null?void 0:e.toString(),a=r&&this.localWorkShapes.get(r);if(!a)return;const i=a.node.consumeAll({data:t});a.result=i,a.workState=o.EvevtWorkState.Done,r&&this.localWorkShapes.set(r,a)}this.runAnimation()}}class F{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",o.DefaultAppliancePluginOptions.syncOpt.interval);d(this,"drawCount",0);d(this,"drawWorkActiveId");d(this,"batchEraserCombine",o.throttle(()=>{this.updateBatchEraserCombineNode(this.batchEraserWorks,this.batchEraserRemoveNodes),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()},100,{leading:!1}));this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return this.thread.loadImageBitMap(t)}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}workShapesDone(t,e){for(const s of this.workShapes.keys())this.consumeDrawAll({workId:s,scenePath:t,viewId:this.thread.viewId,msgType:o.EPostMessageType.DrawWork,dataType:o.EDataType.Local},e)}async updateSelector(t){var y;const e=this.workShapes.get(o.Storage_Selector_key);if(!((y=e==null?void 0:e.selectIds)!=null&&y.length))return;const{callback:s,...r}=t,{updateSelectorOpt:a,willSerializeData:i}=r,c=await(e==null?void 0:e.updateSelector({updateSelectorOpt:a,selectIds:N.cloneDeep(e.selectIds),vNodes:this.vNodes,willSerializeData:i,worker:this})),l=new Map;let n;c!=null&&c.selectIds&&(n=N.xor(e.selectIds,c.selectIds),c.selectIds.forEach(u=>{const k=this.vNodes.get(u);if(k){const{toolsType:m,op:S,opt:g}=k;l.set(u,{opt:g,toolsType:m,ops:(S==null?void 0:S.length)&&o.transformToSerializableData(S)||void 0})}}),e.selectIds=c.selectIds);const p=[],h=s&&s({res:c,workShapeNode:e,param:r,postData:{sp:p},newServiceStore:l})||{sp:p};n&&h.sp.push({type:o.EPostMessageType.RemoveNode,removeIds:n,viewId:this.thread.viewId}),h.sp.length&&this.thread.post(h)}destroy(){this.clearAll()}clearAll(){if(this.thread.localLayer.children.length&&(this.thread.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),this.thread.localLayer.removeAllChildren()),this.workShapes.get(o.Storage_Selector_key)){const e=[];e.push({type:o.EPostMessageType.Select,dataType:o.EDataType.Local,selectIds:[],willSyncService:!1}),this.thread.post({sp:e})}this.workShapes.clear(),this.effectSelectNodeData.clear(),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()}async checkTextActive(t){const{op:e,viewId:s,dataType:r}=t;if(e!=null&&e.length){let a;for(const i of this.vNodes.curNodeMap.values()){const{rect:c,name:l,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===o.EToolsKey.Text&&o.isIntersectForPoint([h,y],c)&&p.workState===o.EvevtWorkState.Done){a=l;break}}a&&(await this.blurSelector({viewId:s,msgType:o.EPostMessageType.Select,dataType:r,isSync:!0}),this.thread.post({sp:[{type:o.EPostMessageType.GetTextActive,toolsType:o.EToolsKey.Text,workId:a}]}))}}cursorHover(t){const{opt:e,toolsType:s,point:r}=t,a=this.setFullWork({workId:o.Cursor_Hover_Id,toolsType:s,opt:e});a&&r&&a.cursorHover(r)}updateFullSelectWork(t){var r,a,i,c,l;const e=this.workShapes.get(o.Storage_Selector_key),{selectIds:s}=t;if(!(s!=null&&s.length)){this.blurSelector(t);return}if(!e){const n=this.setFullWork(t);!n&&t.workId&&this.tmpOpt&&((r=this.tmpOpt)==null?void 0:r.toolsType)===o.EToolsKey.Selector&&this.setWorkOptions(t.workId.toString(),t.opt||this.tmpOpt.toolsOpt),n&&this.updateFullSelectWork(t);return}if(e&&(s!=null&&s.length)){const{selectRect:n}=e.updateSelectIds(s),p=[{...t,selectorColor:((a=t.opt)==null?void 0:a.strokeColor)||e.selectorColor,strokeColor:((i=t.opt)==null?void 0:i.strokeColor)||e.strokeColor,fillColor:((c=t.opt)==null?void 0:c.fillColor)||e.fillColor,textOpt:((l=t.opt)==null?void 0:l.textOpt)||e.textOpt,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,type:o.EPostMessageType.Select,selectRect: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===o.EToolsKey.Text)return{type:o.EPostMessageType.TextUpdate,toolsType:o.EToolsKey.Text,workId:t,dataType:o.EDataType.Local}}async removeSelector(t){const{willSyncService:e}=t,s=[],r=[],a=this.workShapes.get(o.Storage_Selector_key);if(!a)return;const i=a.selectIds&&[...a.selectIds]||[];for(const c of i){if(this.vNodes.get(c)){const n=this.commandDeleteText(c);n&&s.push(n)}this.removeNode(c),r.push(c)}r.length&&s.push({type:o.EPostMessageType.RemoveNode,removeIds:r}),s.push({type:o.EPostMessageType.Select,selectIds:[],willSyncService:e}),await this.blurSelector(),s.length&&this.thread.post({sp:s})}removeWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();s&&this.removeNode(s)}removeNode(t){var r;this.vNodes.get(t)&&((r=this.thread.fullLayer)==null||r.getElementsByName(t).forEach(a=>{a.remove()}),this.vNodes.delete(t)),this.workShapes.has(t)&&(this.thread.localLayer.getElementsByName(t).forEach(a=>{a.remove()}),this.clearWorkShapeNodeCache(t))}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async consumeFull(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){const a=(r=t.workId)==null?void 0:r.toString();e.toolsType===o.EToolsKey.Image?await e.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this}):e.toolsType===o.EToolsKey.Text?await e.consumeServiceAsync({isFullWork:!0,replaceId:a}):e.consumeService({op:s,isFullWork:!0,replaceId:a}),t!=null&&t.updateNodeOpt&&e.updataOptService(t.updateNodeOpt);const i=[];t.workId&&this.workShapes.delete(t.workId.toString()),t.willSyncService&&i.push({opt:t.opt,toolsType:t.toolsType,type:o.EPostMessageType.FullWork,workId:t.workId,ops:t.ops,updateNodeOpt:t.updateNodeOpt,viewId:this.thread.viewId}),i.length&&this.thread.post({sp:i})}}async colloctEffectSelectWork(t){const e=this.workShapes.get(o.Storage_Selector_key),{workId:s,msgType:r}=t;if(e&&s&&e.selectIds&&e.selectIds.includes(s.toString())){r===o.EPostMessageType.RemoveNode?e.selectIds=e.selectIds.filter(a=>a!==s.toString()):this.effectSelectNodeData.add(t),await new Promise(a=>{setTimeout(()=>{a(!0)},0)}),await this.runEffectSelectWork(!0).then(()=>{var a;(a=this.effectSelectNodeData)==null||a.clear()});return}return t}async runEffectSelectWork(t){var e;for(const s of this.effectSelectNodeData.values()){const r=this.setFullWork(s);if(r){const a=(e=s.workId)==null?void 0:e.toString();if(r.toolsType===o.EToolsKey.Image)await r.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this});else if(r.toolsType===o.EToolsKey.Text)await r.consumeServiceAsync({isFullWork:!0,replaceId:a});else{const i=s.ops&&o.transformToNormalData(s.ops);r.consumeService({op:i,isFullWork:!0,replaceId:a}),s!=null&&s.updateNodeOpt&&r.updataOptService(s.updateNodeOpt)}s.workId&&this.workShapes.delete(s.workId.toString())}}this.reRenderSelector(t)}hasSelector(){return this.workShapes.has(o.Storage_Selector_key)}getSelector(){return this.workShapes.get(o.Storage_Selector_key)}reRenderSelector(t=!1){var r;const e=this.workShapes.get(o.Storage_Selector_key);if(!e)return;if(e&&!((r=e.selectIds)!=null&&r.length))return this.blurSelector();const s=e.reRenderSelector();s&&this.thread.post({sp:[{type:o.EPostMessageType.Select,selectIds:e.selectIds,selectRect:s,willSyncService:t,viewId:this.thread.viewId,points:e.getChildrenPoints(),textOpt:e.textOpt,selectorColor:e.selectorColor,strokeColor:e.strokeColor,fillColor:e.fillColor,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,opt:e.getWorkOptions()||void 0,canLock:e.canLock,isLocked:e.isLocked,toolsTypes:e.toolsTypes,shapeOpt:e.shapeOpt,thickness:e.thickness,useStroke:e.useStroke,strokeType:e.strokeType}]})}async blurSelector(t){var r;const e=this.workShapes.get(o.Storage_Selector_key),s=e==null?void 0:e.blurSelector();if(this.clearWorkShapeNodeCache(o.Storage_Selector_key),((r=this.thread.fullLayer)==null?void 0:r.parent).children.forEach(a=>{a.name===o.Storage_Selector_key&&a.remove()}),s){const a=[];a.push({...s,isSync:t==null?void 0:t.isSync}),this.thread.post({sp:a})}}clearWorkShapeNodeCache(t){var e;(e=this.getWorkShape(t))==null||e.clearTmpPoints(),this.workShapes.delete(t)}drawBitMapEraser(t){const e=[];t.op&&e.push(t),e.length&&this.thread.post({sp:e})}async drawBitMapEraserFull(t,e,s){const{willUpdateNodes:r,scenePath:a,...i}=e,c=t.getWorkId(),l=[{...i,workId:c,scenePath:a,updateNodeOpt:{useAnimation:!1},isSync:!0,nextTasks:[{type:o.EPostMessageType.RemoveNode,removeIds:[c],viewId:this.thread.viewId}]}];if(s&&l.push({type:o.EPostMessageType.None,isLockSentEventCursor:s}),r!=null&&r.size){await(t==null?void 0:t.reRenderEffectNodes({willUpdateNodes:r,worker:this}));for(const[n,p]of r)l.push({type:o.EPostMessageType.UpdateNode,dataType:o.EDataType.Local,opt:p.opt,workId:n,updateNodeOpt:{useAnimation:!1}})}l.length&&this.thread.post({sp:l})}drawPencilEraser(t,e){var r,a;const s=[];if((r=t.newWorkDatas)!=null&&r.size){for(const i of t.newWorkDatas.values()){const c=i.workId.toString();this.batchEraserWorks.add(c),s.push({type:o.EPostMessageType.FullWork,workId:c,ops:o.transformToSerializableData(i.op),opt:i.opt,toolsType:i.toolsType,updateNodeOpt:{useAnimation:!1}})}delete t.newWorkDatas}(a=t.removeIds)==null||a.forEach(i=>{this.batchEraserRemoveNodes.add(i)}),e&&s.push({type:o.EPostMessageType.None,isLockSentEventCursor:e}),t.rect,this.thread.post({sp:s}),this.batchEraserCombine()}drawEraser(t,e){const s=[];t.removeIds&&s.push(t),e&&s.push({type:o.EPostMessageType.None,isLockSentEventCursor:e}),this.thread.post({sp:s})}updateBatchEraserCombineNode(t,e){for(const s of e.keys())this.thread.fullLayer.getElementsByName(s).forEach(r=>{r.remove()});t.forEach(s=>{const r=this.vNodes.get(s);if(r&&r.toolsType===o.EToolsKey.Pencil&&!this.thread.fullLayer.getElementsByName(s)[0]){const i=this.setFullWork({...r,workId:s});i&&i.consumeService({op:r.op,isFullWork:!0})}})}getWorkShape(t){return this.workShapes.get(t)}getWorkShapes(){return this.workShapes}consumeDraw(t,e){const{op:s,workId:r,scenePath:a}=t;if(s!=null&&s.length&&r){const i=r.toString(),c=this.workShapes.get(i);if(!c)return;const l=c.toolsType;if(l===o.EToolsKey.LaserPen)return;switch(this.drawWorkActiveId&&this.drawWorkActiveId!==i&&(this.consumeDrawAll({workId:this.drawWorkActiveId,scenePath:a,viewId:this.thread.viewId,msgType:o.EPostMessageType.DrawWork,dataType:o.EDataType.Local},e),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&i!==o.Storage_Selector_key&&(this.drawWorkActiveId=i),l){case o.EToolsKey.Selector:{const n=c.consume({data:t,isFullWork:!0});n.type===o.EPostMessageType.Select&&(n.selectIds&&e.runReverseSelectWork(n.selectIds),this.thread.post({sp:[n]}))}break;case o.EToolsKey.PencilEraser:{const n=c.consume({data:t,isFullWork:!0});n!=null&&n.rect&&this.drawPencilEraser(n)}break;case o.EToolsKey.BitMapEraser:{const n=c.consume({data:t,isFullWork:!0});n!=null&&n.rect&&this.drawBitMapEraser(n);break}case o.EToolsKey.Eraser:{const n=c.consume({data:t,isFullWork:!0});n!=null&&n.rect&&this.drawEraser(n)}break;case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Ellipse:case o.EToolsKey.Rectangle:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:case o.EToolsKey.Pencil:{const n=c.consume({data:t,isFullWork:!1,isMainThread:!0});n&&(this.drawCount++,this.thread.post({drawCount:this.drawCount,sp:n.op&&[{...n,scenePath:a}]||void 0}))}break}}}consumeDrawAll(t,e){var i,c,l,n;const{workId:s,scenePath:r,isLockSentEventCursor:a}=t;if(s){const p=s.toString();this.drawWorkActiveId===p&&(this.drawWorkActiveId=void 0);const h=this.workShapes.get(p);if(!h)return;const y=h.toolsType;if(y===o.EToolsKey.LaserPen)return;const u=this.workShapes.get(o.Cursor_Hover_Id),k=(i=u==null?void 0:u.selectIds)==null?void 0:i[0],m=h.consumeAll({data:t});switch(y){case o.EToolsKey.Selector:m.selectIds&&k&&((c=m.selectIds)!=null&&c.includes(k))&&u.cursorBlur(),m.type===o.EPostMessageType.Select&&(m.selectIds&&e.runReverseSelectWork(m.selectIds),this.thread.post({sp:[{...m,scenePath:r}]})),(l=h.selectIds)!=null&&l.length?h.clearTmpPoints():this.clearWorkShapeNodeCache(p);break;case o.EToolsKey.PencilEraser:this.drawPencilEraser({...m,scenePath:r},a),h.clearTmpPoints();break;case o.EToolsKey.BitMapEraser:(m.rect||(n=m.newWorkDatas)!=null&&n.size)&&this.drawBitMapEraserFull(h,m,a);break;case o.EToolsKey.Eraser:this.drawEraser({...m,scenePath:r},a),h.clearTmpPoints();break;case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Ellipse:case o.EToolsKey.Rectangle:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:case o.EToolsKey.Pencil:{const S=[];a&&S.push({type:o.EPostMessageType.None,isLockSentEventCursor:a}),m&&(S.push(m),this.drawCount=0,this.thread.post({drawCount:this.drawCount,sp:S})),this.clearWorkShapeNodeCache(p);break}}}}getToolsOpt(){return this.tmpOpt}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}setWorkOptions(t,e){let s=this.workShapes.get(t);if(!s&&this.tmpOpt){const{toolsType:r}=this.tmpOpt;this.tmpOpt.toolsOpt=e,s=this.createWorkShapeNode({workId:t,toolsType:r,toolsOpt:e}),s&&this.workShapes.set(t,s),this.setToolsOpt(this.tmpOpt)}e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),s==null||s.setWorkOptions(e)}createWorkShapeNode(t){return o.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.localLayer},this.thread.serviceWork)}}class 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",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return 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()}),this.thread.serviceLayer.removeAllChildren()),this.workShapes.clear(),this.selectorWorkShapes.clear(),this.willRunEffectSelectorIds.clear()}runEffect(){this.runEffectId||(this.runEffectId=setTimeout(this.effectRunSelector.bind(this),0))}effectRunSelector(){this.runEffectId=void 0,this.willRunEffectSelectorIds.forEach(t=>{var s,r;const e=this.selectorWorkShapes.get(t);e&&e.selectIds&&((s=e.node)==null||s.selectServiceNode(t,e,!0)),(r=e==null?void 0:e.selectIds)!=null&&r.length||this.selectorWorkShapes.delete(t)}),this.willRunEffectSelectorIds.clear()}runSelectWork(t){this.activeSelectorShape(t);const{workId:e}=t,s=e==null?void 0:e.toString();s&&this.willRunEffectSelectorIds.add(s),this.runEffect()}removeWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();if(s){if(this.workShapes.get(s)){this.workShapes.delete(s),this.removeNode(s,t);return}this.removeNode(s,t)}}consumeFull(t){this.activeWorkShape(t),this.runAnimation()}runReverseSelectWork(t){t.forEach(e=>{this.selectorWorkShapes.forEach((s,r)=>{var a;if((a=s.selectIds)!=null&&a.length){const i=s.selectIds.indexOf(e);i>-1&&(s.selectIds.splice(i,1),this.willRunEffectSelectorIds.add(r))}})}),this.willRunEffectSelectorIds.size&&this.runEffect()}consumeDraw(t){this.activeWorkShape(t),this.runAnimation()}computNextAnimationIndex(t,e){const s=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((t.animationIndex||0)+(s||e),(t.animationWorkData||[]).length)}async animationDraw(){var s,r,a,i,c,l,n,p,h,y,u,k,m,S,g;this.animationId=void 0;let t=!1;const e=new Map;for(const[T,f]of this.workShapes.entries())switch(f.toolsType){case o.EToolsKey.Image:{await((s=f.node)==null?void 0:s.consumeServiceAsync({isFullWork:!0,worker:this})),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(T)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),this.workShapes.delete(T);break}case o.EToolsKey.Text:{f.node&&(await((r=f.node)==null?void 0:r.consumeServiceAsync({isFullWork:!0,replaceId:T})),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(T)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(a=f.node)==null||a.clearTmpPoints(),this.workShapes.delete(T));break}case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Rectangle:case o.EToolsKey.Ellipse:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:{const w=!!f.ops;if((i=f.animationWorkData)!=null&&i.length){const I=f.oldRect;(c=f.node)==null||c.consumeService({op:f.animationWorkData,isFullWork:w}),w&&(this.selectorWorkShapes.forEach((E,M)=>{var L;(L=E.selectIds)!=null&&L.includes(T)&&(this.willRunEffectSelectorIds.add(M),this.runEffect())}),(l=f.node)==null||l.clearTmpPoints(),this.workShapes.delete(T)),e.set(T,{workState:I?f.ops?o.EvevtWorkState.Done:o.EvevtWorkState.Doing:o.EvevtWorkState.Start,op:f.animationWorkData.filter((E,M)=>{if(M%3!==2)return!0}).slice(-2)}),f.animationWorkData.length=0}break}case o.EToolsKey.Pencil:{if(!f.useAnimation&&f.ops)(n=f.node)==null||n.consumeService({op:f.animationWorkData||[],isFullWork:!0,replaceId:T}),(p=f.node)==null||p.updataOptService(f.updateNodeOpt),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(T)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(h=f.node)==null||h.clearTmpPoints(),this.workShapes.delete(T);else if(f.useAnimation){if(f.isDel){(y=f.node)==null||y.clearTmpPoints(),this.workShapes.delete(T);break}const w=3,I=this.computNextAnimationIndex(f,w),E=f.isDiff?0:Math.max(0,(f.animationIndex||0)-w),M=(f.animationWorkData||[]).slice(E,I),L=(k=(u=f.node)==null?void 0:u.getWorkId())==null?void 0:k.toString();if((f.animationIndex||0)<I||f.isDiff){if((m=f.node)==null||m.consumeService({op:M,isFullWork:!1}),f.animationIndex=I,f.isDiff&&(f.isDiff=!1),M.length){const b=M.filter((P,O)=>{if(O%w!==w-1)return!0}).slice(-2);e.set(T,{workState:E===0?o.EvevtWorkState.Start:I===((S=f.animationWorkData)==null?void 0:S.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:b})}}else f.ops&&((g=f.node)==null||g.consumeService({op:f.animationWorkData||[],isFullWork:!0,replaceId:L}),f.isDel=!0,e.set(T,{workState:o.EvevtWorkState.Done,op:M.filter((b,P)=>{if(P%w!==w-1)return!0}).slice(-2)}));t=!0;break}break}}if(t&&this.runAnimation(),e.size){const T=[];e.forEach((f,w)=>{T.push({type:o.EPostMessageType.Cursor,uid:w.split(o.Storage_Splitter)[0],op:f.op,workState:f.workState,viewId:this.thread.viewId})}),this.thread.post({sp:T})}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}hasDiffData(t,e,s){const r=t.length;if(e.length<r)return!0;switch(s){case o.EToolsKey.Pencil:{for(let a=0;a<r;a+=3)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}case o.EToolsKey.LaserPen:{for(let a=0;a<r;a+=2)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}}return!1}activeWorkShape(t){var k,m,S,g;const{workId:e,opt:s,toolsType:r,type:a,updateNodeOpt:i,ops:c,op:l,useAnimation:n,imageBitmap:p}=t;if(!e)return;const h=e.toString(),y=(k=this.vNodes.get(h))==null?void 0:k.rect;if(!((m=this.workShapes)!=null&&m.has(h))){let T={toolsType:r,animationWorkData:l||[],animationIndex:0,type:a,updateNodeOpt:i,ops:c,useAnimation:typeof n<"u"?n:typeof(i==null?void 0:i.useAnimation)<"u"?i==null?void 0:i.useAnimation:!0,oldRect:y,isDiff:!1,imageBitmap:p};r&&s&&(T=this.setNodeKey(h,T,r,s)),(S=this.workShapes)==null||S.set(h,T)}const u=(g=this.workShapes)==null?void 0:g.get(h);a&&(u.type=a),c&&(u.animationWorkData=o.transformToNormalData(c),u.ops=c),i&&(u.updateNodeOpt=i),l&&(u.isDiff=this.hasDiffData(u.animationWorkData||[],l,u.toolsType),u.animationWorkData=l),u.node&&u.node.getWorkId()!==h&&u.node.setWorkId(h),y&&(u.oldRect=y),r&&s&&(s.syncUnitTime&&(this.syncUnitTime=s.syncUnitTime),u.toolsType!==r&&r&&s&&this.setNodeKey(h,u,r,s),u.node&&u.node.setWorkOptions(s)),p&&(u.imageBitmap=p)}removeNode(t,e){t.indexOf(o.Storage_Selector_key)>-1&&this.removeSelectWork(e),this.thread.fullLayer.getElementsByName(t).forEach(s=>{s.remove()}),this.thread.serviceLayer.getElementsByName(t).forEach(s=>{s.remove()}),this.vNodes.delete(t)}removeSelectWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();s&&(this.activeSelectorShape(t),this.willRunEffectSelectorIds.add(s)),this.runEffect()}activeSelectorShape(t){var n,p,h;const{workId:e,opt:s,toolsType:r,type:a,selectIds:i}=t;if(!e)return;const c=e.toString();if(!((n=this.selectorWorkShapes)!=null&&n.has(c))){let y={toolsType:r,selectIds:i,type:a,opt:s};r&&s&&(y=this.setNodeKey(c,y,r,s)),(p=this.selectorWorkShapes)==null||p.set(c,y)}const l=(h=this.selectorWorkShapes)==null?void 0:h.get(c);a&&(l.type=a),l.node&&l.node.getWorkId()!==c&&l.node.setWorkId(c),l.selectIds=i||[]}setNodeKey(t,e,s,r){return e.toolsType=s,e.node=o.getShapeInstance({toolsType:s,toolsOpt:r,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.serviceLayer,workId:t},this),e}}class W{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 _ extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.CopyNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.FullWork&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var r;const{workId:s}=e;s&&await((r=this.localWork)==null?void 0:r.consumeFull(e))}}class K extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetColorNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:c,textUpdateForWoker:l}=s,n=r.sp||[];if(i)for(const[p,h]of a.entries())l&&h.toolsType===o.EToolsKey.Text?n.push({...h,workId:p,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):n.push({...h,workId:p,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});return{sp:n}}}class B extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.ZIndexNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:c}=s,l=r.sp||[];if(i&&l)for(const[n,p]of a.entries())l.push({...p,workId:n,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});return{sp:l}}}class z extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.TranslateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var p,h;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l,emitEventType:n}=e;s===o.Storage_Selector_key&&r&&(r.workState===o.EvevtWorkState.Done&&(r!=null&&r.translate)&&(r.translate[0]||r.translate[1])||r.workState!==o.EvevtWorkState.Done?await((p=this.localWork)==null?void 0:p.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,isSync:!0,textUpdateForWoker:l,emitEventType:n,callback:this.updateSelectorCallback})):r.workState===o.EvevtWorkState.Done&&((h=this.localWork)==null||h.vNodes.deleteLastTarget()))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:c}=e,{willSyncService:l,isSync:n,updateSelectorOpt:p,textUpdateForWoker:h}=s,y=p.workState,u=r.sp||[];if(y===o.EvevtWorkState.Start)return{sp:[],render:[]};const k=c==null?void 0:c.selectRect;if(l){y===o.EvevtWorkState.Doing&&u.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:k,willSyncService:!0,isSync:!0,points:i.getChildrenPoints(),textOpt:i.textOpt});for(const[m,S]of a.entries())h&&S.toolsType===o.EToolsKey.Text?u.push({...S,workId:m,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):u.push({...S,workId:m,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:u}}}class q extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.DeleteNode)}async consume(){return!1}}class H extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.ScaleNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willSyncService:a,willSerializeData:i}=e;s===o.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)}))}updateSelectorCallback(e){const{param:s,postData:r,workShapeNode:a,res:i,newServiceStore:c}=e,{updateSelectorOpt:l,willSyncService:n}=s,p=l.workState,h=r.sp||[],y=i==null?void 0:i.selectRect;if(p===o.EvevtWorkState.Start)return{sp:[],render:[]};if(n){h.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:y,willSyncService:!0,isSync:!0,points:p===o.EvevtWorkState.Done&&a.getChildrenPoints()||void 0,textOpt:a.textOpt});for(const[u,k]of c.entries())k.toolsType===o.EToolsKey.Text?h.push({...k,workId:u,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):h.push({...k,workId:u,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:!0})}return{sp:h}}}class V extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.RotateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,emitEventType:l}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,emitEventType:l,isSync:!0,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,workShapeNode:a,res:i,newServiceStore:c}=e,{updateSelectorOpt:l,willSyncService:n,willSerializeData:p,isSync:h}=s,y=l.workState,u=r.sp||[],k=i==null?void 0:i.selectRect;if(n){p&&y===o.EvevtWorkState.Done&&u.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:k,willSyncService:!0,isSync:h,points:a.getChildrenPoints()});for(const[m,S]of c.entries())u.push({...S,workId:m,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:h})}return{sp:u}}}class G extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetFontStyle)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:c}=e,{willSyncService:l,isSync:n,updateSelectorOpt:p,textUpdateForWoker:h}=s,y=r.sp||[],u=c==null?void 0:c.selectRect;if(l&&y){p.fontSize&&y.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:u,willSyncService:l,isSync:n,points:i.getChildrenPoints()});for(const[k,m]of a.entries())h&&m.toolsType===o.EToolsKey.Text?y.push({...m,workId:k,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):y.push({...m,workId:k,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:y}}}class j extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetPoint)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,emitEventType:this.emitEventType,willSerializeData:c,isSync:!0,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:c}=e,{willSyncService:l,isSync:n}=s,p=r.sp||[],h=c==null?void 0:c.selectRect;if(l&&p){for(const[y,u]of a.entries())p.push({...u,workId:y,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});p.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:h,willSyncService:l,isSync:n,points:i.getChildrenPoints()})}return{sp:p}}}class Z extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetLock)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:c}=e,{willSyncService:l,isSync:n,updateSelectorOpt:p}=s,h=r.sp||[],y=c==null?void 0:c.selectRect;if(l&&h){for(const[u,k]of a.entries())h.push({...k,workId:u,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});h.push({isLocked:p.isLocked,selectorColor:i.selectorColor,scaleType:i.scaleType,canRotate:i.canRotate,type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:y,willSyncService:l,isSync:n})}return{sp:h}}}class $ extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetShapeOpt)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:c}=s,l=r.sp||[];if(i&&l)for(const[n,p]of a.entries())l.push({...p,workId:n,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});return{sp:l}}}class X{constructor(t){d(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case o.EmitEventType.TranslateNode:return new z;case o.EmitEventType.ZIndexNode:return new B;case o.EmitEventType.CopyNode:return new _;case o.EmitEventType.SetColorNode:return new K;case o.EmitEventType.DeleteNode:return new q;case o.EmitEventType.ScaleNode:return new H;case o.EmitEventType.RotateNode:return new V;case o.EmitEventType.SetFontStyle:return new G;case o.EmitEventType.SetPoint:return new j;case o.EmitEventType.SetLock:return new Z;case o.EmitEventType.SetShapeOpt:return new $}}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 Y{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 s=o.DefaultAppliancePluginOptions.bufferSize.full,r=o.DefaultAppliancePluginOptions.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?s:r}),this.topLayer=this.createLayer("topLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r)}),this.localLayer=this.createLayer("localLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r)}),this.serviceLayer=this.createLayer("serviceLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r)}),this.vNodes=new A(t,this.scene);const a={thread:this,vNodes:this.vNodes};this.localWork=new F(a),this.serviceWork=new U(a),this.topWork=new x(a),this.vNodes.init(this.fullLayer),this.methodBuilder=new X([o.EmitEventType.CopyNode,o.EmitEventType.SetColorNode,o.EmitEventType.DeleteNode,o.EmitEventType.RotateNode,o.EmitEventType.ScaleNode,o.EmitEventType.TranslateNode,o.EmitEventType.ZIndexNode,o.EmitEventType.SetFontStyle,o.EmitEventType.SetPoint,o.EmitEventType.SetLock,o.EmitEventType.SetShapeOpt]).registerForMainThread(this)}getCachedImages(t){return this.cacheImages.get(t)}clearCacheImages(){this.cacheImages.forEach(t=>t.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){var e;if(!await this.methodBuilder.consumeForMainThread(t)){const{msgType:s,toolsType:r,opt:a,dataType:i,workId:c,workState:l,imageSrc:n,imageBitmap:p}=t,h=c==null?void 0:c.toString();switch(s){case o.EPostMessageType.AuthClear:{const{clearUids:y,localUid:u}=t;this.vNodes.setCanClearUids(y),this.vNodes.setLocalUid(u);break}case o.EPostMessageType.Destroy:this.destroy();break;case o.EPostMessageType.Clear:this.clearAll();break;case o.EPostMessageType.UpdateCamera:await this.updateCamera(t);break;case o.EPostMessageType.UpdateTools:if(r&&a){const y={toolsType:r,toolsOpt:a};this.topWork.canUseTopLayer(r)?this.topWork.setToolsOpt(y):this.localWork.setToolsOpt(y)}break;case o.EPostMessageType.CreateWork:if(h&&a&&r){if(this.topWork.canUseTopLayer(r)){this.topWork.getToolsOpt()||this.topWork.setToolsOpt({toolsType:r,toolsOpt:a}),this.topWork.setWorkOptions(h,a);break}this.localWork.getToolsOpt()||this.localWork.setToolsOpt({toolsType:r,toolsOpt:a}),this.localWork.setWorkOptions(h,a)}break;case o.EPostMessageType.DrawWork:l===o.EvevtWorkState.Done&&i===o.EDataType.Local?this.consumeDrawAll(i,t):this.consumeDraw(i,t);break;case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:if(r&&this.topWork.canUseTopLayer(r)){this.consumeDrawAll(i,t);break}this.consumeFull(i,t);break;case o.EPostMessageType.RemoveNode:await this.removeNode(t);return;case o.EPostMessageType.Select:i===o.EDataType.Service&&(c===o.Storage_Selector_key?this.localWork.updateFullSelectWork(t):this.serviceWork.runSelectWork(t));break;case o.EPostMessageType.CursorHover:this.localWork.cursorHover(t);break;case o.EPostMessageType.GetTextActive:i===o.EDataType.Local&&this.localWork.checkTextActive(t);break;case o.EPostMessageType.GetImageBitMap:if(n&&p&&this.cacheImages.set(n,p),c){const y=c.toString(),u=(e=this.imageResolveMap.get(y))==null?void 0:e.resolve;u&&u(y)}break}}}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&s.src&&r){const a=s.src,i=this.cacheImages.has(a),c=r.toString();if(!i){const l=await new Promise(n=>{const p=this.imageResolveMap.get(c)||{resolve:void 0,timer:void 0};p.timer&&clearTimeout(p.timer),p.resolve=n,p.timer=setTimeout(()=>{const h=this.imageResolveMap.get(c);h!=null&&h.resolve&&h.resolve(c)},5e3),this.imageResolveMap.set(c,p),this.opt.post({sp:[{imageSrc:a,workId:c,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!1,type:o.EPostMessageType.GetImageBitMap}]})});this.imageResolveMap.delete(l)}return this.cacheImages.get(a)}}async removeNode(t){const{dataType:e,workId:s,removeIds:r}=t,a=r||[];if(s&&a.push(s.toString()),a.length)for(const i of a){if(i===o.Storage_Selector_key){await this.localWork.removeSelector(t);continue}e===o.EDataType.Local?this.localWork.removeWork(t):e===o.EDataType.Service&&this.serviceWork.removeWork(t),await this.localWork.colloctEffectSelectWork(t)}}async consumeFull(t,e){const s=await this.localWork.colloctEffectSelectWork(e);s&&t===o.EDataType.Local&&await this.localWork.consumeFull(s),s&&t===o.EDataType.Service&&this.serviceWork.consumeFull(s)}setCameraOpt(t){this.cameraOpt=t;const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;(a!==this.scene.width||i!==this.scene.height)&&this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r]),this.topLayer.setAttribute("scale",[e,e]),this.topLayer.setAttribute("translate",[-s,-r]),this.localLayer.setAttribute("scale",[e,e]),this.localLayer.setAttribute("translate",[-s,-r]),this.serviceLayer.setAttribute("scale",[e,e]),this.serviceLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var s;this.mainThreadPostId=void 0;const t=[];let e;for(const r of this.combinePostMsg.values()){if((s=r.sp)!=null&&s.length)for(const a of r.sp){let i=!1;for(const c of t)if(N.isEqual(a,c)){i=!0;break}i||t.push(a)}N.isNumber(r.drawCount)&&(e=r.drawCount)}return this.combinePostMsg.clear(),{sp:t,drawCount:e}}combinePost(){var s,r;const t=this.combinePostData(),e=(s=t.sp)==null?void 0:s.filter(a=>a.type!==o.EPostMessageType.None||a.isLockSentEventCursor);e!=null&&e.length?t.sp=e.map(a=>a.viewId?a:{...a,viewId:this.viewId}):delete t.sp,t.drawCount===void 0&&delete t.drawCount,(t!=null&&t.drawCount||(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()}),this.fullLayer.removeAllChildren()),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.clearAll(),this.topWork.clearAll(),this.serviceWork.clearAll(),this.vNodes.clear(),this.post({sp:[{type:o.EPostMessageType.Clear}]})}consumeDrawAll(t,e){const{toolsType:s,workId:r}=e;if(r){const a=r.toString();if(s&&this.topWork.canUseTopLayer(s)){t===o.EDataType.Local&&(this.topWork.getLocalWorkShape(r.toString())||this.topWork.createLocalWork(e)),this.topWork.consumeDrawAll(e);return}t===o.EDataType.Local&&(this.localWork.getWorkShape(a)||this.localWork.createLocalWork(e),this.localWork.consumeDrawAll(e,this.serviceWork))}}consumeDraw(t,e){const{opt:s,workId:r,toolsType:a}=e;if(r&&a&&s){const i=r.toString();if(this.topWork.canUseTopLayer(a)){t===o.EDataType.Local&&(this.topWork.getLocalWorkShape(i)||this.topWork.createLocalWork(e)),this.topWork.consumeDraw(e);return}t===o.EDataType.Local?(this.localWork.getWorkShape(i)||this.localWork.createLocalWork(e),this.localWork.consumeDraw(e,this.serviceWork)):t===o.EDataType.Service&&this.serviceWork.consumeDraw(e);return}}async updateCamera(t){var r;const{cameraOpt:e,scenePath:s}=t;if(e&&!N.isEqual(this.cameraOpt,e)){if(this.taskUpdateCameraId&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0),s){let n=!1;for(const[p,h]of this.localWork.getWorkShapes().entries())switch(h.toolsType){case o.EToolsKey.Text:case o.EToolsKey.BitMapEraser:case o.EToolsKey.PencilEraser:case o.EToolsKey.Eraser:case o.EToolsKey.Selector:case o.EToolsKey.LaserPen:break;default:p!==o.Cursor_Hover_Id&&p!==o.Storage_Selector_key&&(n=!0);break}if(n){this.taskUpdateCameraId=setTimeout(()=>{this.taskUpdateCameraId=void 0,this.updateCamera(t)},o.Task_Time_Interval);return}}const a=new Map;for(const[n,p]of this.vNodes.getNodesByType(o.EToolsKey.Text).entries()){const h=p.rect;a.set(n,N.cloneDeep(h))}const i=new Set(a.keys());let c=!1;if(this.localWork.hasSelector()){const n=(r=this.localWork.getSelector())==null?void 0:r.selectIds;if(n){c=!0;for(const p of n)i.add(p)}}let l=!1;if(this.serviceWork.selectorWorkShapes.size)for(const n of this.serviceWork.selectorWorkShapes.values()){const p=n.selectIds;if(p){l=!0;for(const h of p)i.add(h)}}if(this.setCameraOpt(e),this.vNodes.curNodeMap.size){this.vNodes.clearTarget(),this.vNodes.updateHighLevelNodesRect(i),this.debounceUpdateCameraId&&clearTimeout(this.debounceUpdateCameraId);for(const[n,p]of a.entries()){const h=this.vNodes.get(n);if(h){const y=p,u=h.rect,k=this.getSceneRect(),m=o.getRectMatrixrRelation(y,k),S=o.getRectMatrixrRelation(u,k);let g=!1;if((m!==S||y.w!==u.w||y.h!==u.h||S===o.EMatrixrRelationType.intersect)&&(g=!0),g){const{toolsType:T,opt:f}=h;T===o.EToolsKey.Text&&f.workState===o.EvevtWorkState.Done&&this.debounceUpdateCache.add(n)}}}if(c&&this.localWork.reRenderSelector(),l)for(const[n,p]of this.serviceWork.selectorWorkShapes.entries())this.serviceWork.runSelectWork({workId:n,selectIds:p.selectIds,msgType:o.EPostMessageType.Select,dataType:o.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 u=this.vNodes.get(h);if(u){const{toolsType:k,opt:m,rect:S}=u,g=this.localWork.setFullWork({toolsType:k,opt:m,workId:h});if(g){const T=this.getSceneRect(),f=o.getRectMatrixrRelation(S,T);n.push(g.consumeServiceAsync({isFullWork:!0,replaceId:h,isDrawLabel:f!==o.EMatrixrRelationType.outside}))}}}this.debounceUpdateCache.delete(h)}this.vNodes.updateLowLevelNodesRect(),this.vNodes.clearHighLevelIds()},o.Task_Time_Interval)}}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}createScene(t){return new D.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...t,autoRender:!0,id:this.viewId,contextType:"2d"})}createLayer(t,e,s){const{width:r,height:a}=s,i=`canvas-${t}`,c=e.layer(i,{...s,offscreen:!1}),l=new D.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return c.append(l),l}updateScene(t){this.scene.attr({...t});const{width:e,height:s}=t;this.scene.width=e,this.scene.height=s,this.updateLayer({width:e,height:s})}updateLayer(t){const{width:e,height:s}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",s),this.fullLayer.setAttribute("size",[e,s]),this.fullLayer.setAttribute("pos",[e*.5,s*.5]),this.topLayer.parent.setAttribute("width",e),this.topLayer.parent.setAttribute("height",s),this.topLayer.setAttribute("size",[e,s]),this.topLayer.setAttribute("pos",[e*.5,s*.5]),this.localLayer.parent.setAttribute("width",e),this.localLayer.parent.setAttribute("height",s),this.localLayer.setAttribute("size",[e,s]),this.localLayer.setAttribute("pos",[e*.5,s*.5]),this.serviceLayer.parent.setAttribute("width",e),this.serviceLayer.parent.setAttribute("height",s),this.serviceLayer.setAttribute("size",[e,s]),this.serviceLayer.setAttribute("pos",[e*.5,s*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.vNodes.clear(),this.fullLayer.remove(),this.topLayer.remove(),this.localLayer.remove(),this.serviceLayer.remove(),this.scene.remove(),this.localWork.destroy(),this.serviceWork.destroy(),this.topWork.destroy()}}class Q{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===o.Main_View_Id?6e3:3e3})}getCachedImages(t){return this.cacheImages.get(t)}clearCacheImages(){this.cacheImages.forEach(t=>t.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){var i;const{msgType:e,imageSrc:s,imageBitmap:r,workId:a}=t;switch(e){case o.EPostMessageType.Snapshot:await this.getSnapshot(t),this.destroy();return;case o.EPostMessageType.BoundingBox:await this.getBoundingRect(t),this.destroy();return;case o.EPostMessageType.GetImageBitMap:if(s&&r&&this.cacheImages.set(s,r),a){const c=a.toString(),l=(i=this.imageResolveMap.get(c))==null?void 0:i.resolve;l&&l(c)}break}}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&s.src&&r){const a=s.src,i=this.cacheImages.has(a),c=r.toString();if(!i){const l=await new Promise(n=>{const p=this.imageResolveMap.get(c)||{resolve:void 0,timer:void 0};p.timer&&clearTimeout(p.timer),p.resolve=n,p.timer=setTimeout(()=>{const h=this.imageResolveMap.get(c);h!=null&&h.resolve&&h.resolve(c)},5e3),this.imageResolveMap.set(c,p),this.opt.post({sp:[{imageSrc:a,workId:c,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!0,type:o.EPostMessageType.GetImageBitMap}]})});this.imageResolveMap.delete(l)}return this.cacheImages.get(a)}}createWorkShapeNode(t){return o.getShapeInstance({...t,fullLayer:this.fullLayer,drawLayer:void 0})}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async runFullWork(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){let a,i;const c=(r=e.getWorkId())==null?void 0:r.toString();return e.toolsType===o.EToolsKey.Image?a=await e.consumeServiceAsync({isFullWork:!0,worker:this}):e.toolsType===o.EToolsKey.Text?a=await e.consumeServiceAsync({isFullWork:!0,replaceId:c,isDrawLabel:!0}):(a=e.consumeService({op:s,isFullWork:!0,replaceId:c}),i=(t==null?void 0:t.updateNodeOpt)&&e.updataOptService(t.updateNodeOpt)),o.computRect(a,i)}}async getSnapshot(t){const{scenePath:e,scenes:s,cameraOpt:r,w:a,h:i}=t;if(e&&s&&r){this.setCameraOpt(r);let c;for(const[n,p]of Object.entries(s))if(p!=null&&p.type)switch(p==null?void 0:p.type){case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:{const{opt:h}=p,y={...p,opt:h,workId:n,msgType:o.EPostMessageType.FullWork,dataType:o.EDataType.Service,viewId:this.viewId},u=await this.runFullWork(y);c=o.computRect(c,u);break}}let l;a&&i&&(l={resizeWidth:a,resizeHeight:i}),await this.getSnapshotRender({scenePath:e,options:l})}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}getRectImageBitmap(t,e){const s=Math.floor(t.x*this.opt.displayer.dpr),r=Math.floor(t.y*this.opt.displayer.dpr),a=t.w>0&&Math.floor(t.w*this.opt.displayer.dpr||1)||1,i=t.h>0&&Math.floor(t.h*this.opt.displayer.dpr||1)||1;return createImageBitmap(this.fullLayer.parent.canvas,s,r,a,i,e)}async getSnapshotRender(t){var a,i;const{scenePath:e,options:s}=t;((a=this.fullLayer)==null?void 0:a.parent).render();const r=await this.getRectImageBitmap(this.getSceneRect(),s);r&&(this.post({sp:[{type:o.EPostMessageType.Snapshot,scenePath:e,imageBitmap:r,viewId:this.viewId}]}),(i=this.fullLayer)==null||i.removeAllChildren())}async getBoundingRect(t){const{scenePath:e,scenes:s,cameraOpt:r}=t;if(e&&s&&r){this.setCameraOpt(r);let a;for(const[i,c]of Object.entries(s))if(c!=null&&c.type)switch(c==null?void 0:c.type){case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:{const l=await this.runFullWork({...c,workId:i,msgType:o.EPostMessageType.FullWork,dataType:o.EDataType.Service,viewId:this.viewId});a=o.computRect(a,l);break}}a&&this.post({sp:[{type:o.EPostMessageType.BoundingBox,scenePath:e,rect:a}]})}}setCameraOpt(t){const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var e;this.mainThreadPostId=void 0;const t=[];for(const s of this.combinePostMsg.values())if((e=s.sp)!=null&&e.length)for(const r of s.sp){let a=!1;for(const i of t)if(o.isEqual(r,i)){a=!0;break}a||t.push(r)}return this.combinePostMsg.clear(),{sp:t}}combinePost(){var s,r;const t=this.combinePostData(),e=(s=t.sp)==null?void 0:s.filter(a=>a.type!==o.EPostMessageType.None||a.isLockSentEventCursor);e!=null&&e.length?t.sp=e.map(a=>a.viewId?a:{...a,viewId:this.viewId}):delete t.sp,(t!=null&&t.drawCount||(r=t.sp)!=null&&r.length)&&this.opt.post(t)}createScene(t){return new D.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...t,autoRender:!1,contextType:"2d"})}createLayer(t,e,s){const{width:r,height:a}=s,i=`canvas-${t}`,c=e.layer(i,s),l=new D.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return c.append(l),l}updateScene(t){this.scene.attr({...t});const{width:e,height:s}=t;this.scene.width=e,this.scene.height=s,this.updateLayer({width:e,height:s})}updateLayer(t){const{width:e,height:s}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",s),this.fullLayer.setAttribute("size",[e,s]),this.fullLayer.setAttribute("pos",[e*.5,s*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.fullLayer.remove(),this.scene.remove()}}class J{constructor(t){d(this,"mainThreadMap",new Map);d(this,"snapshotThread");d(this,"master");this.master=t}post(t){const{drawCount:e,sp:s,workerTasksqueueCount:r}=t;this.master.isBusy&&o.isNumber(r)&&this.master.setWorkerTasksqueueCount(r),o.isNumber(e)&&this.master.setMaxDrawCount(e),s&&this.master.collectorSyncData(s)}destroy(){this.mainThreadMap.clear()}createMainThread(t,e){return new Y(t,e)}createSnapshotThread(t,e){return new Q(t,e)}async consume(t){var e,s,r,a;for(const i of t.values()){const{msgType:c,viewId:l,tasksqueue:n,mainTasksqueueCount:p,layerOpt:h,offscreenCanvasOpt:y,cameraOpt:u,isSubWorker:k}=i;if(c===o.EPostMessageType.Console){console.log(this);continue}if(c===o.EPostMessageType.Init){const S=(e=this.master.control.viewContainerManager.getView(l))==null?void 0:e.displayer,g=S==null?void 0:S.canvasContainerRef.current;if(S&&g&&h&&y){const T=this.createMainThread(l,{displayer:S,container:g,layerOpt:h,master:this.master,canvasOpt:y,post:this.post.bind(this)});this.mainThreadMap.set(l,T),T&&u&&T.setCameraOpt(u)}continue}if((c===o.EPostMessageType.Snapshot||c===o.EPostMessageType.BoundingBox)&&l===((s=this.master.control.viewContainerManager.mainView)==null?void 0:s.id)){const S=(r=this.master.control.viewContainerManager.getView(l))==null?void 0:r.displayer,g=(a=S.snapshotContainerRef)==null?void 0:a.current;if(S&&g&&u){g.style.width=`${u.width}px`,g.style.height=`${u.height}px`;const T={...o.ViewContainerManager.defaultLayerOpt,offscreen:!1,width:u.width,height:u.height},f={...o.ViewContainerManager.defaultScreenCanvasOpt,width:u.width,height:u.height};this.snapshotThread=this.createSnapshotThread(l,{displayer:S,container:g,layerOpt:T,master:this.master,canvasOpt:f,post:this.post.bind(this)}),this.snapshotThread.on(i).then(()=>{this.snapshotThread=void 0,g.innerHTML="",g.style.width="",g.style.height=""});continue}}if(c===o.EPostMessageType.GetImageBitMap&&k&&this.snapshotThread){this.snapshotThread.on(i);continue}if(c===o.EPostMessageType.TasksQueue&&(n!=null&&n.size)){for(const[S,g]of this.mainThreadMap.entries()){const T=n.get(S);T&&(await g.on(T),p&&this.post({workerTasksqueueCount:p}))}continue}if(l===o.Storage_ViewId_ALL){for(const S of this.mainThreadMap.values())S.on(i),c===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l);continue}const m=this.mainThreadMap.get(l);m&&(m.on(i),c===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l))}}}exports.MainThreadManagerImpl=J;
|
|
1
|
+
"use strict";var C=Object.defineProperty;var R=(v,t,e)=>t in v?C(v,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):v[t]=e;var d=(v,t,e)=>R(v,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./index-B8PVRB8H.js"),D=require("spritejs"),N=require("lodash");require("lineclip");require("white-web-sdk");require("react-dom");require("react");require("eventemitter2");class A{constructor(t,e){d(this,"viewId");d(this,"scene");d(this,"fullLayer");d(this,"curNodeMap",new Map);d(this,"targetNodeMap",[]);d(this,"highLevelIds");d(this,"canClearUids");d(this,"localUid");this.viewId=t,this.scene=e}init(t){this.fullLayer=t}get(t){return this.curNodeMap.get(t)}setLocalUid(t){this.localUid=t}getLocalUid(){return this.localUid}setCanClearUids(t){this.canClearUids=t}getCanClearUids(){return this.canClearUids}getCanEraserNodes(t){const e=new Map;for(const[s,r]of t.entries())r.toolsType===o.EToolsKey.Image&&r.opt.locked||r.toolsType===o.EToolsKey.Text&&(r.opt.workState===o.EvevtWorkState.Doing||r.opt.workState===o.EvevtWorkState.Start)||this.isCanClearWorkId(s)&&e.set(s,r);return e}getNodesByType(t){const e=new Map;return this.curNodeMap.forEach((s,r)=>{s.toolsType===t&&e.set(r,s)}),e}hasRenderNodes(){return!0}has(t){return this.curNodeMap.has(t)}setInfo(t,e){const s=this.curNodeMap.get(t)||{name:t,rect:e.rect};e.rect&&(s.rect=o.cloneDeep(e.rect)),e.op&&o.checkOp(e.op)&&(s.op=o.cloneDeep(e.op)),e.canRotate&&(s.canRotate=e.canRotate),e.scaleType&&(s.scaleType=e.scaleType),e.opt&&(s.opt=o.cloneDeep(e.opt)),e.toolsType&&(s.toolsType=e.toolsType),e.centerPos&&(s.centerPos=o.cloneDeep(e.centerPos)),o.isBoolean(e.isSelected)&&(s.isSelected=e.isSelected),s.rect?this.curNodeMap.set(t,s):this.curNodeMap.delete(t)}selected(t){this.setInfo(t,{isSelected:!0})}unSelected(t){this.setInfo(t,{isSelected:!1})}delete(t){this.curNodeMap.delete(t)}clear(){this.curNodeMap.clear(),this.targetNodeMap.length=0}getRectIntersectRange(t,e=!0,s=!0){let r;const a=new Map;for(const[i,c]of this.curNodeMap.entries())if(o.isIntersect(t,c.rect)){if(e&&c.toolsType===o.EToolsKey.Image&&c.opt.locked||s&&c.toolsType===o.EToolsKey.Text&&(c.opt.workState===o.EvevtWorkState.Doing||c.opt.workState===o.EvevtWorkState.Start))continue;r=o.computRect(r,c.rect),a.set(i,c)}return{rectRange:r,nodeRange:a}}getNodeRectFormShape(t,e){const s=o.getShapeTools(e.toolsType);return this.fullLayer&&(s==null?void 0:s.getRectFromLayer(this.fullLayer,t))}updateNodeRect(t){const e=this.curNodeMap.get(t);if(e){const s=this.getNodeRectFormShape(t,e);if(!s){this.curNodeMap.delete(t);return}e.rect=s,this.curNodeMap.set(t,e)}}updateHighLevelNodesRect(t){this.highLevelIds=t;for(const e of this.highLevelIds.keys())this.updateNodeRect(e)}updateLowLevelNodesRect(){var t;for(const e of this.curNodeMap.keys())(t=this.highLevelIds)!=null&&t.has(e)||this.updateNodeRect(e)}clearHighLevelIds(){this.highLevelIds=void 0}setTargetAssignKeys(t){const e=new Map;for(const s of t){const r=this.curNodeMap.get(s);r&&e.set(s,o.cloneDeep(r))}return this.targetNodeMap.push(o.cloneDeep(e)),this.targetNodeMap.length-1}setTarget(){return this.targetNodeMap.push(o.cloneDeep(this.curNodeMap)),this.targetNodeMap.length-1}getLastTarget(){return this.targetNodeMap[this.targetNodeMap.length-1]}deleteLastTarget(){this.targetNodeMap.length&&(this.targetNodeMap.length=this.targetNodeMap.length-1)}getTarget(t){return this.targetNodeMap[t]}deleteTarget(t){this.targetNodeMap.length=t}clearTarget(){this.targetNodeMap.length=0}isLocalWorkId(t){return t.split(o.Storage_Splitter).length===1}isCanClearWorkId(t){if(this.canClearUids===void 0||this.canClearUids===!0)return!0;if(o.isSet(this.canClearUids)){const e=t.split(o.Storage_Splitter);if(e.length===1)return this.canClearUids.has("localSelf")||this.localUid&&this.canClearUids.has(this.localUid);if(e.length===2)return this.canClearUids.has(e[0])}return!1}}class x{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",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}getLocalWorkShape(t){return this.localWorkShapes.get(t)}createLocalWorkShape(t,e){if(t&&this.tmpOpt){const s={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},r=this.createWorkShapeNode({...s,workId:t});return r&&this.localWorkShapes.set(t,{node:r,toolsType:r.toolsType,workState:o.EvevtWorkState.Start}),r}}canUseTopLayer(t){return t===o.EToolsKey.LaserPen}destroy(){this.clearAll()}clearAll(){this.thread.topLayer.children.length&&(this.thread.topLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),this.thread.serviceLayer.removeAllChildren()),this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}consumeDraw(t){const{workId:e,dataType:s}=t;if(s===o.EDataType.Service)this.activeServiceWorkShape(t);else{const r=e==null?void 0:e.toString(),a=r&&this.localWorkShapes.get(r);if(!a)return;const i=a.node.consume({data:t,isFullWork:!1,isSubWorker:!0});i.rect&&(a.result=i,a.workState=o.EvevtWorkState.Doing,r&&this.localWorkShapes.set(r,a))}this.runAnimation()}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}createWorkShapeNode(t){const{toolsType:e}=t;if(e===o.EToolsKey.LaserPen)return o.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.topLayer,drawLayer:this.thread.topLayer})}setNodeKey(t,e,s,r){return e.toolsType=s,e.node=this.createWorkShapeNode({workId:t,toolsType:s,toolsOpt:r}),e}activeServiceWorkShape(t){var y,u;const{workId:e,opt:s,toolsType:r,type:a,updateNodeOpt:i,ops:c,op:l}=t;if(!e)return;const n=e.toString(),p=(y=this.vNodes.get(n))==null?void 0:y.rect;if(!((u=this.serviceWorkShapes)!=null&&u.has(n))){let k={toolsType:r,animationWorkData:l||[],animationIndex:0,type:a,updateNodeOpt:i,ops:c,oldRect:p};r&&s&&(k=this.setNodeKey(n,k,r,s)),this.serviceWorkShapes.set(n,k)}const h=this.serviceWorkShapes.get(n);a&&(h.type=a),c&&(h.animationWorkData=o.transformToNormalData(c),h.ops=c),i&&(h.updateNodeOpt=i),l&&(h.animationWorkData=l),h.node&&h.node.getWorkId()!==n&&h.node.setWorkId(n),p&&(h.oldRect=p),r&&s&&(h.toolsType!==r&&r&&s&&this.setNodeKey(n,h,r,s),h.node&&h.node.setWorkOptions(s))}computNextAnimationIndex(t,e){var a;const s=((a=t.node)==null?void 0:a.syncUnitTime)||this.syncUnitTime,r=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/s)*e;return Math.min((t.animationIndex||0)+(r||e),(t.animationWorkData||[]).length)}animationDraw(){var r,a,i,c;this.animationId=void 0;let t=!1;const e=new Map,s=[];for(const[l,n]of this.serviceWorkShapes.entries())switch(n.toolsType){case o.EToolsKey.LaserPen:{const h=this.computNextAnimationIndex(n,8),y=Math.max(0,n.animationIndex||0),u=(n.animationWorkData||[]).slice(y,h);if((n.animationIndex||0)<h&&((r=n.node)==null||r.consumeService({op:u,isFullWork:!1}),n.animationIndex=h,u.length&&e.set(l,{workState:y===0?o.EvevtWorkState.Start:h===((a=n.animationWorkData)==null?void 0:a.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:u.slice(-2)})),n.isDel){(i=n.node)==null||i.clearTmpPoints(),this.serviceWorkShapes.delete(l);break}n.ops&&n.animationIndex===((c=n.animationWorkData)==null?void 0:c.length)&&!n.isDel&&(this.thread.topLayer.getElementsByName(l.toString())[0]||(n.isDel=!0,this.serviceWorkShapes.set(l,n))),t=!0;break}}for(const[l,n]of this.localWorkShapes.entries()){const{result:p,toolsType:h,isDel:y,workState:u}=n;switch(h){case o.EToolsKey.LaserPen:{if(y){n.node.clearTmpPoints(),this.localWorkShapes.delete(l),s.push({removeIds:[l.toString()],type:o.EPostMessageType.RemoveNode});break}p&&((p.op||p.ops)&&s.push(p),n.result=void 0),!this.thread.topLayer.getElementsByName(l.toString())[0]&&u===o.EvevtWorkState.Done&&(n.isDel=!0,this.localWorkShapes.set(l,n)),t=!0;break}}}t&&this.runAnimation(),e.size&&e.forEach((l,n)=>{s.push({type:o.EPostMessageType.Cursor,uid:n.split(o.Storage_Splitter)[0],op:l.op,workState:l.workState,viewId:this.thread.viewId})}),s.length&&this.thread.post({sp:s})}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}setWorkOptions(t,e){var r;let s=(r=this.localWorkShapes.get(t))==null?void 0:r.node;if(!s&&this.tmpOpt){const{toolsType:a}=this.tmpOpt;this.tmpOpt.toolsOpt=e,s=this.createWorkShapeNode({workId:t,toolsType:a,toolsOpt:e}),s&&this.localWorkShapes.set(t,{node:s,toolsType:a,workState:o.EvevtWorkState.Start}),this.setToolsOpt(this.tmpOpt)}e!=null&&e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),s&&s.setWorkOptions(e)}consumeDrawAll(t){const{workId:e,dataType:s}=t;if(s===o.EDataType.Service)this.activeServiceWorkShape(t);else{const r=e==null?void 0:e.toString(),a=r&&this.localWorkShapes.get(r);if(!a)return;const i=a.node.consumeAll({data:t});a.result=i,a.workState=o.EvevtWorkState.Done,r&&this.localWorkShapes.set(r,a)}this.runAnimation()}}class F{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",o.DefaultAppliancePluginOptions.syncOpt.interval);d(this,"drawCount",0);d(this,"drawWorkActiveId");d(this,"batchEraserCombine",o.throttle(()=>{this.updateBatchEraserCombineNode(this.batchEraserWorks,this.batchEraserRemoveNodes),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()},100,{leading:!1}));this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return this.thread.loadImageBitMap(t)}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}workShapesDone(t,e){for(const s of this.workShapes.keys())this.consumeDrawAll({workId:s,scenePath:t,viewId:this.thread.viewId,msgType:o.EPostMessageType.DrawWork,dataType:o.EDataType.Local},e)}async updateSelector(t){var y;const e=this.workShapes.get(o.Storage_Selector_key);if(!((y=e==null?void 0:e.selectIds)!=null&&y.length))return;const{callback:s,...r}=t,{updateSelectorOpt:a,willSerializeData:i}=r,c=await(e==null?void 0:e.updateSelector({updateSelectorOpt:a,selectIds:N.cloneDeep(e.selectIds),vNodes:this.vNodes,willSerializeData:i,worker:this})),l=new Map;let n;c!=null&&c.selectIds&&(n=N.xor(e.selectIds,c.selectIds),c.selectIds.forEach(u=>{const k=this.vNodes.get(u);if(k){const{toolsType:m,op:S,opt:g}=k;l.set(u,{opt:g,toolsType:m,ops:(S==null?void 0:S.length)&&o.transformToSerializableData(S)||void 0})}}),e.selectIds=c.selectIds);const p=[],h=s&&s({res:c,workShapeNode:e,param:r,postData:{sp:p},newServiceStore:l})||{sp:p};n&&h.sp.push({type:o.EPostMessageType.RemoveNode,removeIds:n,viewId:this.thread.viewId}),h.sp.length&&this.thread.post(h)}destroy(){this.clearAll()}clearAll(){if(this.thread.localLayer.children.length&&(this.thread.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),this.thread.localLayer.removeAllChildren()),this.workShapes.get(o.Storage_Selector_key)){const e=[];e.push({type:o.EPostMessageType.Select,dataType:o.EDataType.Local,selectIds:[],willSyncService:!1}),this.thread.post({sp:e})}this.workShapes.clear(),this.effectSelectNodeData.clear(),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()}async checkTextActive(t){const{op:e,viewId:s,dataType:r}=t;if(e!=null&&e.length){let a;for(const i of this.vNodes.curNodeMap.values()){const{rect:c,name:l,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===o.EToolsKey.Text&&o.isIntersectForPoint([h,y],c)&&p.workState===o.EvevtWorkState.Done){a=l;break}}a&&(await this.blurSelector({viewId:s,msgType:o.EPostMessageType.Select,dataType:r,isSync:!0}),this.thread.post({sp:[{type:o.EPostMessageType.GetTextActive,toolsType:o.EToolsKey.Text,workId:a}]}))}}cursorHover(t){const{opt:e,toolsType:s,point:r}=t,a=this.setFullWork({workId:o.Cursor_Hover_Id,toolsType:s,opt:e});a&&r&&a.cursorHover(r)}updateFullSelectWork(t){var r,a,i,c,l;const e=this.workShapes.get(o.Storage_Selector_key),{selectIds:s}=t;if(!(s!=null&&s.length)){this.blurSelector(t);return}if(!e){const n=this.setFullWork(t);!n&&t.workId&&this.tmpOpt&&((r=this.tmpOpt)==null?void 0:r.toolsType)===o.EToolsKey.Selector&&this.setWorkOptions(t.workId.toString(),t.opt||this.tmpOpt.toolsOpt),n&&this.updateFullSelectWork(t);return}if(e&&(s!=null&&s.length)){const{selectRect:n}=e.updateSelectIds(s),p=[{...t,selectorColor:((a=t.opt)==null?void 0:a.strokeColor)||e.selectorColor,strokeColor:((i=t.opt)==null?void 0:i.strokeColor)||e.strokeColor,fillColor:((c=t.opt)==null?void 0:c.fillColor)||e.fillColor,textOpt:((l=t.opt)==null?void 0:l.textOpt)||e.textOpt,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,type:o.EPostMessageType.Select,selectRect: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===o.EToolsKey.Text)return{type:o.EPostMessageType.TextUpdate,toolsType:o.EToolsKey.Text,workId:t,dataType:o.EDataType.Local}}async removeSelector(t){const{willSyncService:e}=t,s=[],r=[],a=this.workShapes.get(o.Storage_Selector_key);if(!a)return;const i=a.selectIds&&[...a.selectIds]||[];for(const c of i){if(this.vNodes.get(c)){const n=this.commandDeleteText(c);n&&s.push(n)}this.removeNode(c),r.push(c)}r.length&&s.push({type:o.EPostMessageType.RemoveNode,removeIds:r}),s.push({type:o.EPostMessageType.Select,selectIds:[],willSyncService:e}),await this.blurSelector(),s.length&&this.thread.post({sp:s})}removeWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();s&&this.removeNode(s)}removeNode(t){var r;this.vNodes.get(t)&&((r=this.thread.fullLayer)==null||r.getElementsByName(t).forEach(a=>{a.remove()}),this.vNodes.delete(t)),this.workShapes.has(t)&&(this.thread.localLayer.getElementsByName(t).forEach(a=>{a.remove()}),this.clearWorkShapeNodeCache(t))}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async consumeFull(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){const a=(r=t.workId)==null?void 0:r.toString();e.toolsType===o.EToolsKey.Image?await e.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this}):e.toolsType===o.EToolsKey.Text?await e.consumeServiceAsync({isFullWork:!0,replaceId:a}):e.consumeService({op:s,isFullWork:!0,replaceId:a}),t!=null&&t.updateNodeOpt&&e.updataOptService(t.updateNodeOpt);const i=[];t.workId&&this.workShapes.delete(t.workId.toString()),t.willSyncService&&i.push({opt:t.opt,toolsType:t.toolsType,type:o.EPostMessageType.FullWork,workId:t.workId,ops:t.ops,updateNodeOpt:t.updateNodeOpt,viewId:this.thread.viewId}),i.length&&this.thread.post({sp:i})}}async colloctEffectSelectWork(t){const e=this.workShapes.get(o.Storage_Selector_key),{workId:s,msgType:r}=t;if(e&&s&&e.selectIds&&e.selectIds.includes(s.toString())){r===o.EPostMessageType.RemoveNode?e.selectIds=e.selectIds.filter(a=>a!==s.toString()):this.effectSelectNodeData.add(t),await new Promise(a=>{setTimeout(()=>{a(!0)},0)}),await this.runEffectSelectWork(!0).then(()=>{var a;(a=this.effectSelectNodeData)==null||a.clear()});return}return t}async runEffectSelectWork(t){var e;for(const s of this.effectSelectNodeData.values()){const r=this.setFullWork(s);if(r){const a=(e=s.workId)==null?void 0:e.toString();if(r.toolsType===o.EToolsKey.Image)await r.consumeServiceAsync({isFullWork:!0,replaceId:a,worker:this});else if(r.toolsType===o.EToolsKey.Text)await r.consumeServiceAsync({isFullWork:!0,replaceId:a});else{const i=s.ops&&o.transformToNormalData(s.ops);r.consumeService({op:i,isFullWork:!0,replaceId:a}),s!=null&&s.updateNodeOpt&&r.updataOptService(s.updateNodeOpt)}s.workId&&this.workShapes.delete(s.workId.toString())}}this.reRenderSelector(t)}hasSelector(){return this.workShapes.has(o.Storage_Selector_key)}getSelector(){return this.workShapes.get(o.Storage_Selector_key)}reRenderSelector(t=!1){var r;const e=this.workShapes.get(o.Storage_Selector_key);if(!e)return;if(e&&!((r=e.selectIds)!=null&&r.length))return this.blurSelector();const s=e.reRenderSelector();s&&this.thread.post({sp:[{type:o.EPostMessageType.Select,selectIds:e.selectIds,selectRect:s,willSyncService:t,viewId:this.thread.viewId,points:e.getChildrenPoints(),textOpt:e.textOpt,selectorColor:e.selectorColor,strokeColor:e.strokeColor,fillColor:e.fillColor,canTextEdit:e.canTextEdit,canRotate:e.canRotate,scaleType:e.scaleType,opt:e.getWorkOptions()||void 0,canLock:e.canLock,isLocked:e.isLocked,toolsTypes:e.toolsTypes,shapeOpt:e.shapeOpt,thickness:e.thickness,useStroke:e.useStroke,strokeType:e.strokeType}]})}async blurSelector(t){var r;const e=this.workShapes.get(o.Storage_Selector_key),s=e==null?void 0:e.blurSelector();if(this.clearWorkShapeNodeCache(o.Storage_Selector_key),((r=this.thread.fullLayer)==null?void 0:r.parent).children.forEach(a=>{a.name===o.Storage_Selector_key&&a.remove()}),s){const a=[];a.push({...s,isSync:t==null?void 0:t.isSync}),this.thread.post({sp:a})}}clearWorkShapeNodeCache(t){var e;(e=this.getWorkShape(t))==null||e.clearTmpPoints(),this.workShapes.delete(t)}drawBitMapEraser(t){const e=[];t.op&&e.push(t),e.length&&this.thread.post({sp:e})}async drawBitMapEraserFull(t,e,s){const{willUpdateNodes:r,scenePath:a,...i}=e,c=t.getWorkId(),l=[{...i,workId:c,scenePath:a,updateNodeOpt:{useAnimation:!1},isSync:!0,nextTasks:[{type:o.EPostMessageType.RemoveNode,removeIds:[c],viewId:this.thread.viewId}]}];if(s&&l.push({type:o.EPostMessageType.None,isLockSentEventCursor:s}),r!=null&&r.size){await(t==null?void 0:t.reRenderEffectNodes({willUpdateNodes:r,worker:this}));for(const[n,p]of r)l.push({type:o.EPostMessageType.UpdateNode,dataType:o.EDataType.Local,opt:p.opt,workId:n,updateNodeOpt:{useAnimation:!1}})}l.length&&this.thread.post({sp:l})}drawPencilEraser(t,e){var r,a;const s=[];if((r=t.newWorkDatas)!=null&&r.size){for(const i of t.newWorkDatas.values()){const c=i.workId.toString();this.batchEraserWorks.add(c),s.push({type:o.EPostMessageType.FullWork,workId:c,ops:o.transformToSerializableData(i.op),opt:i.opt,toolsType:i.toolsType,updateNodeOpt:{useAnimation:!1}})}delete t.newWorkDatas}(a=t.removeIds)==null||a.forEach(i=>{this.batchEraserRemoveNodes.add(i)}),e&&s.push({type:o.EPostMessageType.None,isLockSentEventCursor:e}),t.rect,this.thread.post({sp:s}),this.batchEraserCombine()}drawEraser(t,e){const s=[];t.removeIds&&s.push(t),e&&s.push({type:o.EPostMessageType.None,isLockSentEventCursor:e}),this.thread.post({sp:s})}updateBatchEraserCombineNode(t,e){for(const s of e.keys())this.thread.fullLayer.getElementsByName(s).forEach(r=>{r.remove()});t.forEach(s=>{const r=this.vNodes.get(s);if(r&&r.toolsType===o.EToolsKey.Pencil&&!this.thread.fullLayer.getElementsByName(s)[0]){const i=this.setFullWork({...r,workId:s});i&&i.consumeService({op:r.op,isFullWork:!0})}})}getWorkShape(t){return this.workShapes.get(t)}getWorkShapes(){return this.workShapes}consumeDraw(t,e){const{op:s,workId:r,scenePath:a}=t;if(s!=null&&s.length&&r){const i=r.toString(),c=this.workShapes.get(i);if(!c)return;const l=c.toolsType;if(l===o.EToolsKey.LaserPen)return;switch(this.drawWorkActiveId&&this.drawWorkActiveId!==i&&(this.consumeDrawAll({workId:this.drawWorkActiveId,scenePath:a,viewId:this.thread.viewId,msgType:o.EPostMessageType.DrawWork,dataType:o.EDataType.Local},e),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&i!==o.Storage_Selector_key&&(this.drawWorkActiveId=i),l){case o.EToolsKey.Selector:{const n=c.consume({data:t,isFullWork:!0});n.type===o.EPostMessageType.Select&&(n.selectIds&&e.runReverseSelectWork(n.selectIds),this.thread.post({sp:[n]}))}break;case o.EToolsKey.PencilEraser:{const n=c.consume({data:t,isFullWork:!0});n!=null&&n.rect&&this.drawPencilEraser(n)}break;case o.EToolsKey.BitMapEraser:{const n=c.consume({data:t,isFullWork:!0});n!=null&&n.rect&&this.drawBitMapEraser(n);break}case o.EToolsKey.Eraser:{const n=c.consume({data:t,isFullWork:!0});n!=null&&n.rect&&this.drawEraser(n)}break;case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Ellipse:case o.EToolsKey.Rectangle:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:case o.EToolsKey.Pencil:{const n=c.consume({data:t,isFullWork:!1,isMainThread:!0});n&&(this.drawCount++,this.thread.post({drawCount:this.drawCount,sp:n.op&&[{...n,scenePath:a}]||void 0}))}break}}}consumeDrawAll(t,e){var i,c,l,n;const{workId:s,scenePath:r,isLockSentEventCursor:a}=t;if(s){const p=s.toString();this.drawWorkActiveId===p&&(this.drawWorkActiveId=void 0);const h=this.workShapes.get(p);if(!h)return;const y=h.toolsType;if(y===o.EToolsKey.LaserPen)return;const u=this.workShapes.get(o.Cursor_Hover_Id),k=(i=u==null?void 0:u.selectIds)==null?void 0:i[0],m=h.consumeAll({data:t});switch(y){case o.EToolsKey.Selector:m.selectIds&&k&&((c=m.selectIds)!=null&&c.includes(k))&&u.cursorBlur(),m.type===o.EPostMessageType.Select&&(m.selectIds&&e.runReverseSelectWork(m.selectIds),this.thread.post({sp:[{...m,scenePath:r}]})),(l=h.selectIds)!=null&&l.length?h.clearTmpPoints():this.clearWorkShapeNodeCache(p);break;case o.EToolsKey.PencilEraser:this.drawPencilEraser({...m,scenePath:r},a),h.clearTmpPoints();break;case o.EToolsKey.BitMapEraser:(m.rect||(n=m.newWorkDatas)!=null&&n.size)&&this.drawBitMapEraserFull(h,m,a);break;case o.EToolsKey.Eraser:this.drawEraser({...m,scenePath:r},a),h.clearTmpPoints();break;case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Ellipse:case o.EToolsKey.Rectangle:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:case o.EToolsKey.Pencil:{const S=[];a&&S.push({type:o.EPostMessageType.None,isLockSentEventCursor:a}),m&&(S.push(m),this.drawCount=0,this.thread.post({drawCount:this.drawCount,sp:S})),this.clearWorkShapeNodeCache(p);break}}}}getToolsOpt(){return this.tmpOpt}setToolsOpt(t){var e;this.tmpOpt=t,(e=t.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=t.toolsOpt.syncUnitTime)}setWorkOptions(t,e){let s=this.workShapes.get(t);if(!s&&this.tmpOpt){const{toolsType:r}=this.tmpOpt;this.tmpOpt.toolsOpt=e,s=this.createWorkShapeNode({workId:t,toolsType:r,toolsOpt:e}),s&&this.workShapes.set(t,s),this.setToolsOpt(this.tmpOpt)}e.syncUnitTime||(e.syncUnitTime=this.syncUnitTime),s==null||s.setWorkOptions(e)}createWorkShapeNode(t){return o.getShapeInstance({...t,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.localLayer},this.thread.serviceWork)}}class 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",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return 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()}),this.thread.serviceLayer.removeAllChildren()),this.workShapes.clear(),this.selectorWorkShapes.clear(),this.willRunEffectSelectorIds.clear()}runEffect(){this.runEffectId||(this.runEffectId=setTimeout(this.effectRunSelector.bind(this),0))}effectRunSelector(){this.runEffectId=void 0,this.willRunEffectSelectorIds.forEach(t=>{var s,r;const e=this.selectorWorkShapes.get(t);e&&e.selectIds&&((s=e.node)==null||s.selectServiceNode(t,e,!0)),(r=e==null?void 0:e.selectIds)!=null&&r.length||this.selectorWorkShapes.delete(t)}),this.willRunEffectSelectorIds.clear()}runSelectWork(t){this.activeSelectorShape(t);const{workId:e}=t,s=e==null?void 0:e.toString();s&&this.willRunEffectSelectorIds.add(s),this.runEffect()}removeWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();if(s){if(this.workShapes.get(s)){this.workShapes.delete(s),this.removeNode(s,t);return}this.removeNode(s,t)}}consumeFull(t){this.activeWorkShape(t),this.runAnimation()}runReverseSelectWork(t){t.forEach(e=>{this.selectorWorkShapes.forEach((s,r)=>{var a;if((a=s.selectIds)!=null&&a.length){const i=s.selectIds.indexOf(e);i>-1&&(s.selectIds.splice(i,1),this.willRunEffectSelectorIds.add(r))}})}),this.willRunEffectSelectorIds.size&&this.runEffect()}consumeDraw(t){this.activeWorkShape(t),this.runAnimation()}computNextAnimationIndex(t,e){const s=Math.floor((t.animationWorkData||[]).slice(t.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((t.animationIndex||0)+(s||e),(t.animationWorkData||[]).length)}async animationDraw(){var s,r,a,i,c,l,n,p,h,y,u,k,m,S,g;this.animationId=void 0;let t=!1;const e=new Map;for(const[T,f]of this.workShapes.entries())switch(f.toolsType){case o.EToolsKey.Image:{await((s=f.node)==null?void 0:s.consumeServiceAsync({isFullWork:!0,worker:this})),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(T)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),this.workShapes.delete(T);break}case o.EToolsKey.Text:{f.node&&(await((r=f.node)==null?void 0:r.consumeServiceAsync({isFullWork:!0,replaceId:T})),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(T)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(a=f.node)==null||a.clearTmpPoints(),this.workShapes.delete(T));break}case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Rectangle:case o.EToolsKey.Ellipse:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:{const w=!!f.ops;if((i=f.animationWorkData)!=null&&i.length){const I=f.oldRect;(c=f.node)==null||c.consumeService({op:f.animationWorkData,isFullWork:w}),w&&(this.selectorWorkShapes.forEach((E,M)=>{var L;(L=E.selectIds)!=null&&L.includes(T)&&(this.willRunEffectSelectorIds.add(M),this.runEffect())}),(l=f.node)==null||l.clearTmpPoints(),this.workShapes.delete(T)),e.set(T,{workState:I?f.ops?o.EvevtWorkState.Done:o.EvevtWorkState.Doing:o.EvevtWorkState.Start,op:f.animationWorkData.filter((E,M)=>{if(M%3!==2)return!0}).slice(-2)}),f.animationWorkData.length=0}break}case o.EToolsKey.Pencil:{if(!f.useAnimation&&f.ops)(n=f.node)==null||n.consumeService({op:f.animationWorkData||[],isFullWork:!0,replaceId:T}),(p=f.node)==null||p.updataOptService(f.updateNodeOpt),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(T)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(h=f.node)==null||h.clearTmpPoints(),this.workShapes.delete(T);else if(f.useAnimation){if(f.isDel){(y=f.node)==null||y.clearTmpPoints(),this.workShapes.delete(T);break}const w=3,I=this.computNextAnimationIndex(f,w),E=f.isDiff?0:Math.max(0,(f.animationIndex||0)-w),M=(f.animationWorkData||[]).slice(E,I),L=(k=(u=f.node)==null?void 0:u.getWorkId())==null?void 0:k.toString();if((f.animationIndex||0)<I||f.isDiff){if((m=f.node)==null||m.consumeService({op:M,isFullWork:!1}),f.animationIndex=I,f.isDiff&&(f.isDiff=!1),M.length){const b=M.filter((P,O)=>{if(O%w!==w-1)return!0}).slice(-2);e.set(T,{workState:E===0?o.EvevtWorkState.Start:I===((S=f.animationWorkData)==null?void 0:S.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:b})}}else f.ops&&((g=f.node)==null||g.consumeService({op:f.animationWorkData||[],isFullWork:!0,replaceId:L}),f.isDel=!0,e.set(T,{workState:o.EvevtWorkState.Done,op:M.filter((b,P)=>{if(P%w!==w-1)return!0}).slice(-2)}));t=!0;break}break}}if(t&&this.runAnimation(),e.size){const T=[];e.forEach((f,w)=>{T.push({type:o.EPostMessageType.Cursor,uid:w.split(o.Storage_Splitter)[0],op:f.op,workState:f.workState,viewId:this.thread.viewId})}),this.thread.post({sp:T})}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}hasDiffData(t,e,s){const r=t.length;if(e.length<r)return!0;switch(s){case o.EToolsKey.Pencil:{for(let a=0;a<r;a+=3)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}case o.EToolsKey.LaserPen:{for(let a=0;a<r;a+=2)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}}return!1}activeWorkShape(t){var k,m,S,g;const{workId:e,opt:s,toolsType:r,type:a,updateNodeOpt:i,ops:c,op:l,useAnimation:n,imageBitmap:p}=t;if(!e)return;const h=e.toString(),y=(k=this.vNodes.get(h))==null?void 0:k.rect;if(!((m=this.workShapes)!=null&&m.has(h))){let T={toolsType:r,animationWorkData:l||[],animationIndex:0,type:a,updateNodeOpt:i,ops:c,useAnimation:typeof n<"u"?n:typeof(i==null?void 0:i.useAnimation)<"u"?i==null?void 0:i.useAnimation:!0,oldRect:y,isDiff:!1,imageBitmap:p};r&&s&&(T=this.setNodeKey(h,T,r,s)),(S=this.workShapes)==null||S.set(h,T)}const u=(g=this.workShapes)==null?void 0:g.get(h);a&&(u.type=a),c&&(u.animationWorkData=o.transformToNormalData(c),u.ops=c),i&&(u.updateNodeOpt=i),l&&(u.isDiff=this.hasDiffData(u.animationWorkData||[],l,u.toolsType),u.animationWorkData=l),u.node&&u.node.getWorkId()!==h&&u.node.setWorkId(h),y&&(u.oldRect=y),r&&s&&(s.syncUnitTime&&(this.syncUnitTime=s.syncUnitTime),u.toolsType!==r&&r&&s&&this.setNodeKey(h,u,r,s),u.node&&u.node.setWorkOptions(s)),p&&(u.imageBitmap=p)}removeNode(t,e){t.indexOf(o.Storage_Selector_key)>-1&&this.removeSelectWork(e),this.thread.fullLayer.getElementsByName(t).forEach(s=>{s.remove()}),this.thread.serviceLayer.getElementsByName(t).forEach(s=>{s.remove()}),this.vNodes.delete(t)}removeSelectWork(t){const{workId:e}=t,s=e==null?void 0:e.toString();s&&(this.activeSelectorShape(t),this.willRunEffectSelectorIds.add(s)),this.runEffect()}activeSelectorShape(t){var n,p,h;const{workId:e,opt:s,toolsType:r,type:a,selectIds:i}=t;if(!e)return;const c=e.toString();if(!((n=this.selectorWorkShapes)!=null&&n.has(c))){let y={toolsType:r,selectIds:i,type:a,opt:s};r&&s&&(y=this.setNodeKey(c,y,r,s)),(p=this.selectorWorkShapes)==null||p.set(c,y)}const l=(h=this.selectorWorkShapes)==null?void 0:h.get(c);a&&(l.type=a),l.node&&l.node.getWorkId()!==c&&l.node.setWorkId(c),l.selectIds=i||[]}setNodeKey(t,e,s,r){return e.toolsType=s,e.node=o.getShapeInstance({toolsType:s,toolsOpt:r,vNodes:this.vNodes,fullLayer:this.thread.fullLayer,drawLayer:this.thread.serviceLayer,workId:t},this),e}}class W{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 _ extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.CopyNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.FullWork&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var r;const{workId:s}=e;s&&await((r=this.localWork)==null?void 0:r.consumeFull(e))}}class K extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetColorNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:c,textUpdateForWoker:l}=s,n=r.sp||[];if(i)for(const[p,h]of a.entries())l&&h.toolsType===o.EToolsKey.Text?n.push({...h,workId:p,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):n.push({...h,workId:p,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});return{sp:n}}}class B extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.ZIndexNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:c}=s,l=r.sp||[];if(i&&l)for(const[n,p]of a.entries())l.push({...p,workId:n,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});return{sp:l}}}class z extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.TranslateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var p,h;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l,emitEventType:n}=e;s===o.Storage_Selector_key&&r&&(r.workState===o.EvevtWorkState.Done&&(r!=null&&r.translate)&&(r.translate[0]||r.translate[1])||r.workState!==o.EvevtWorkState.Done?await((p=this.localWork)==null?void 0:p.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,isSync:!0,textUpdateForWoker:l,emitEventType:n,callback:this.updateSelectorCallback})):r.workState===o.EvevtWorkState.Done&&((h=this.localWork)==null||h.vNodes.deleteLastTarget()))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:c}=e,{willSyncService:l,isSync:n,updateSelectorOpt:p,textUpdateForWoker:h}=s,y=p.workState,u=r.sp||[];if(y===o.EvevtWorkState.Start)return{sp:[],render:[]};const k=c==null?void 0:c.selectRect;if(l){y===o.EvevtWorkState.Doing&&u.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:k,willSyncService:!0,isSync:!0,points:i.getChildrenPoints(),textOpt:i.textOpt});for(const[m,S]of a.entries())h&&S.toolsType===o.EToolsKey.Text?u.push({...S,workId:m,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):u.push({...S,workId:m,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:u}}}class q extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.DeleteNode)}async consume(){return!1}}class H extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.ScaleNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var c;const{workId:s,updateNodeOpt:r,willSyncService:a,willSerializeData:i}=e;s===o.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)}))}updateSelectorCallback(e){const{param:s,postData:r,workShapeNode:a,res:i,newServiceStore:c}=e,{updateSelectorOpt:l,willSyncService:n}=s,p=l.workState,h=r.sp||[],y=i==null?void 0:i.selectRect;if(p===o.EvevtWorkState.Start)return{sp:[],render:[]};if(n){h.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:y,willSyncService:!0,isSync:!0,points:p===o.EvevtWorkState.Done&&a.getChildrenPoints()||void 0,textOpt:a.textOpt});for(const[u,k]of c.entries())k.toolsType===o.EToolsKey.Text?h.push({...k,workId:u,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):h.push({...k,workId:u,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:!0})}return{sp:h}}}class V extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.RotateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,emitEventType:l}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,emitEventType:l,isSync:!0,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,workShapeNode:a,res:i,newServiceStore:c}=e,{updateSelectorOpt:l,willSyncService:n,willSerializeData:p,isSync:h}=s,y=l.workState,u=r.sp||[],k=i==null?void 0:i.selectRect;if(n){p&&y===o.EvevtWorkState.Done&&u.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:k,willSyncService:!0,isSync:h,points:a.getChildrenPoints()});for(const[m,S]of c.entries())u.push({...S,workId:m,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:h})}return{sp:u}}}class G extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetFontStyle)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:c}=e,{willSyncService:l,isSync:n,updateSelectorOpt:p,textUpdateForWoker:h}=s,y=r.sp||[],u=c==null?void 0:c.selectRect;if(l&&y){p.fontSize&&y.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:u,willSyncService:l,isSync:n,points:i.getChildrenPoints()});for(const[k,m]of a.entries())h&&m.toolsType===o.EToolsKey.Text?y.push({...m,workId:k,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):y.push({...m,workId:k,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:y}}}class j extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetPoint)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var n;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,textUpdateForWoker:l}=e;s===o.Storage_Selector_key&&r&&await((n=this.localWork)==null?void 0:n.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,emitEventType:this.emitEventType,willSerializeData:c,isSync:!0,textUpdateForWoker:l,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:c}=e,{willSyncService:l,isSync:n}=s,p=r.sp||[],h=c==null?void 0:c.selectRect;if(l&&p){for(const[y,u]of a.entries())p.push({...u,workId:y,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});p.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:h,willSyncService:l,isSync:n,points:i.getChildrenPoints()})}return{sp:p}}}class Z extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetLock)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a,workShapeNode:i,res:c}=e,{willSyncService:l,isSync:n,updateSelectorOpt:p}=s,h=r.sp||[],y=c==null?void 0:c.selectRect;if(l&&h){for(const[u,k]of a.entries())h.push({...k,workId:u,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n});h.push({isLocked:p.isLocked,selectorColor:i.selectorColor,scaleType:i.scaleType,canRotate:i.canRotate,type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:y,willSyncService:l,isSync:n})}return{sp:h}}}class $ extends W{constructor(){super(...arguments);d(this,"emitEventType",o.EmitEventType.SetShapeOpt)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c}=e;s===o.Storage_Selector_key&&r&&await((l=this.localWork)==null?void 0:l.updateSelector({updateSelectorOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData:c,callback:this.updateSelectorCallback}))}updateSelectorCallback(e){const{param:s,postData:r,newServiceStore:a}=e,{willSyncService:i,isSync:c}=s,l=r.sp||[];if(i&&l)for(const[n,p]of a.entries())l.push({...p,workId:n,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:c});return{sp:l}}}class X{constructor(t){d(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case o.EmitEventType.TranslateNode:return new z;case o.EmitEventType.ZIndexNode:return new B;case o.EmitEventType.CopyNode:return new _;case o.EmitEventType.SetColorNode:return new K;case o.EmitEventType.DeleteNode:return new q;case o.EmitEventType.ScaleNode:return new H;case o.EmitEventType.RotateNode:return new V;case o.EmitEventType.SetFontStyle:return new G;case o.EmitEventType.SetPoint:return new j;case o.EmitEventType.SetLock:return new Z;case o.EmitEventType.SetShapeOpt:return new $}}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 Y{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 s=o.DefaultAppliancePluginOptions.bufferSize.full,r=o.DefaultAppliancePluginOptions.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?s:r}),this.topLayer=this.createLayer("topLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r)}),this.localLayer=this.createLayer("localLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r)}),this.serviceLayer=this.createLayer("serviceLayer",this.scene,{...e.layerOpt,bufferSize:(this.viewId===o.Main_View_Id,r)}),this.vNodes=new A(t,this.scene);const a={thread:this,vNodes:this.vNodes};this.localWork=new F(a),this.serviceWork=new U(a),this.topWork=new x(a),this.vNodes.init(this.fullLayer),this.methodBuilder=new X([o.EmitEventType.CopyNode,o.EmitEventType.SetColorNode,o.EmitEventType.DeleteNode,o.EmitEventType.RotateNode,o.EmitEventType.ScaleNode,o.EmitEventType.TranslateNode,o.EmitEventType.ZIndexNode,o.EmitEventType.SetFontStyle,o.EmitEventType.SetPoint,o.EmitEventType.SetLock,o.EmitEventType.SetShapeOpt]).registerForMainThread(this)}getCachedImages(t){return this.cacheImages.get(t)}clearCacheImages(){this.cacheImages.forEach(t=>t.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){var e;if(!await this.methodBuilder.consumeForMainThread(t)){const{msgType:s,toolsType:r,opt:a,dataType:i,workId:c,workState:l,imageSrc:n,imageBitmap:p}=t,h=c==null?void 0:c.toString();switch(s){case o.EPostMessageType.AuthClear:{const{clearUids:y,localUid:u}=t;this.vNodes.setCanClearUids(y),this.vNodes.setLocalUid(u);break}case o.EPostMessageType.Destroy:this.destroy();break;case o.EPostMessageType.Clear:this.clearAll();break;case o.EPostMessageType.UpdateCamera:await this.updateCamera(t);break;case o.EPostMessageType.UpdateTools:if(r&&a){const y={toolsType:r,toolsOpt:a};this.topWork.canUseTopLayer(r)?this.topWork.setToolsOpt(y):this.localWork.setToolsOpt(y)}break;case o.EPostMessageType.CreateWork:if(h&&a&&r){if(this.topWork.canUseTopLayer(r)){this.topWork.getToolsOpt()||this.topWork.setToolsOpt({toolsType:r,toolsOpt:a}),this.topWork.setWorkOptions(h,a);break}this.localWork.getToolsOpt()||this.localWork.setToolsOpt({toolsType:r,toolsOpt:a}),this.localWork.setWorkOptions(h,a)}break;case o.EPostMessageType.DrawWork:l===o.EvevtWorkState.Done&&i===o.EDataType.Local?this.consumeDrawAll(i,t):this.consumeDraw(i,t);break;case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:if(r&&this.topWork.canUseTopLayer(r)){this.consumeDrawAll(i,t);break}this.consumeFull(i,t);break;case o.EPostMessageType.RemoveNode:await this.removeNode(t);return;case o.EPostMessageType.Select:i===o.EDataType.Service&&(c===o.Storage_Selector_key?this.localWork.updateFullSelectWork(t):this.serviceWork.runSelectWork(t));break;case o.EPostMessageType.CursorHover:this.localWork.cursorHover(t);break;case o.EPostMessageType.GetTextActive:i===o.EDataType.Local&&this.localWork.checkTextActive(t);break;case o.EPostMessageType.GetImageBitMap:if(n&&p&&this.cacheImages.set(n,p),c){const y=c.toString(),u=(e=this.imageResolveMap.get(y))==null?void 0:e.resolve;u&&u(y)}break}}}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&s.src&&r){const a=s.src,i=this.cacheImages.has(a),c=r.toString();if(!i){const l=await new Promise(n=>{const p=this.imageResolveMap.get(c)||{resolve:void 0,timer:void 0};p.timer&&clearTimeout(p.timer),p.resolve=n,p.timer=setTimeout(()=>{const h=this.imageResolveMap.get(c);h!=null&&h.resolve&&h.resolve(c)},5e3),this.imageResolveMap.set(c,p),this.opt.post({sp:[{imageSrc:a,workId:c,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!1,type:o.EPostMessageType.GetImageBitMap}]})});this.imageResolveMap.delete(l)}return this.cacheImages.get(a)}}async removeNode(t){const{dataType:e,workId:s,removeIds:r}=t,a=r||[];if(s&&a.push(s.toString()),a.length)for(const i of a){if(i===o.Storage_Selector_key){await this.localWork.removeSelector(t);continue}e===o.EDataType.Local?this.localWork.removeWork(t):e===o.EDataType.Service&&this.serviceWork.removeWork(t),await this.localWork.colloctEffectSelectWork(t)}}async consumeFull(t,e){const s=await this.localWork.colloctEffectSelectWork(e);s&&t===o.EDataType.Local&&await this.localWork.consumeFull(s),s&&t===o.EDataType.Service&&this.serviceWork.consumeFull(s)}setCameraOpt(t){this.cameraOpt=t;const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;(a!==this.scene.width||i!==this.scene.height)&&this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r]),this.topLayer.setAttribute("scale",[e,e]),this.topLayer.setAttribute("translate",[-s,-r]),this.localLayer.setAttribute("scale",[e,e]),this.localLayer.setAttribute("translate",[-s,-r]),this.serviceLayer.setAttribute("scale",[e,e]),this.serviceLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var s;this.mainThreadPostId=void 0;const t=[];let e;for(const r of this.combinePostMsg.values()){if((s=r.sp)!=null&&s.length)for(const a of r.sp){let i=!1;for(const c of t)if(N.isEqual(a,c)){i=!0;break}i||t.push(a)}N.isNumber(r.drawCount)&&(e=r.drawCount)}return this.combinePostMsg.clear(),{sp:t,drawCount:e}}combinePost(){var s,r;const t=this.combinePostData(),e=(s=t.sp)==null?void 0:s.filter(a=>a.type!==o.EPostMessageType.None||a.isLockSentEventCursor);e!=null&&e.length?t.sp=e.map(a=>a.viewId?a:{...a,viewId:this.viewId}):delete t.sp,t.drawCount===void 0&&delete t.drawCount,(t!=null&&t.drawCount||(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()}),this.fullLayer.removeAllChildren()),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.clearAll(),this.topWork.clearAll(),this.serviceWork.clearAll(),this.vNodes.clear(),this.post({sp:[{type:o.EPostMessageType.Clear}]})}consumeDrawAll(t,e){const{toolsType:s,workId:r}=e;if(r){const a=r.toString();if(s&&this.topWork.canUseTopLayer(s)){t===o.EDataType.Local&&(this.topWork.getLocalWorkShape(r.toString())||this.topWork.createLocalWork(e)),this.topWork.consumeDrawAll(e);return}t===o.EDataType.Local&&(this.localWork.getWorkShape(a)||this.localWork.createLocalWork(e),this.localWork.consumeDrawAll(e,this.serviceWork))}}consumeDraw(t,e){const{opt:s,workId:r,toolsType:a}=e;if(r&&a&&s){const i=r.toString();if(this.topWork.canUseTopLayer(a)){t===o.EDataType.Local&&(this.topWork.getLocalWorkShape(i)||this.topWork.createLocalWork(e)),this.topWork.consumeDraw(e);return}t===o.EDataType.Local?(this.localWork.getWorkShape(i)||this.localWork.createLocalWork(e),this.localWork.consumeDraw(e,this.serviceWork)):t===o.EDataType.Service&&this.serviceWork.consumeDraw(e);return}}async updateCamera(t){var r;const{cameraOpt:e,scenePath:s}=t;if(e&&!N.isEqual(this.cameraOpt,e)){if(this.taskUpdateCameraId&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0),s){let n=!1;for(const[p,h]of this.localWork.getWorkShapes().entries())switch(h.toolsType){case o.EToolsKey.Text:case o.EToolsKey.BitMapEraser:case o.EToolsKey.PencilEraser:case o.EToolsKey.Eraser:case o.EToolsKey.Selector:case o.EToolsKey.LaserPen:break;default:p!==o.Cursor_Hover_Id&&p!==o.Storage_Selector_key&&(n=!0);break}if(n){this.taskUpdateCameraId=setTimeout(()=>{this.taskUpdateCameraId=void 0,this.updateCamera(t)},o.Task_Time_Interval);return}}const a=new Map;for(const[n,p]of this.vNodes.getNodesByType(o.EToolsKey.Text).entries()){const h=p.rect;a.set(n,N.cloneDeep(h))}const i=new Set(a.keys());let c=!1;if(this.localWork.hasSelector()){const n=(r=this.localWork.getSelector())==null?void 0:r.selectIds;if(n){c=!0;for(const p of n)i.add(p)}}let l=!1;if(this.serviceWork.selectorWorkShapes.size)for(const n of this.serviceWork.selectorWorkShapes.values()){const p=n.selectIds;if(p){l=!0;for(const h of p)i.add(h)}}if(this.setCameraOpt(e),this.vNodes.curNodeMap.size){this.vNodes.clearTarget(),this.vNodes.updateHighLevelNodesRect(i),this.debounceUpdateCameraId&&clearTimeout(this.debounceUpdateCameraId);for(const[n,p]of a.entries()){const h=this.vNodes.get(n);if(h){const y=p,u=h.rect,k=this.getSceneRect(),m=o.getRectMatrixrRelation(y,k),S=o.getRectMatrixrRelation(u,k);let g=!1;if((m!==S||y.w!==u.w||y.h!==u.h||S===o.EMatrixrRelationType.intersect)&&(g=!0),g){const{toolsType:T,opt:f}=h;T===o.EToolsKey.Text&&f.workState===o.EvevtWorkState.Done&&this.debounceUpdateCache.add(n)}}}if(c&&this.localWork.reRenderSelector(),l)for(const[n,p]of this.serviceWork.selectorWorkShapes.entries())this.serviceWork.runSelectWork({workId:n,selectIds:p.selectIds,msgType:o.EPostMessageType.Select,dataType:o.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 u=this.vNodes.get(h);if(u){const{toolsType:k,opt:m,rect:S}=u,g=this.localWork.setFullWork({toolsType:k,opt:m,workId:h});if(g){const T=this.getSceneRect(),f=o.getRectMatrixrRelation(S,T);n.push(g.consumeServiceAsync({isFullWork:!0,replaceId:h,isDrawLabel:f!==o.EMatrixrRelationType.outside}))}}}this.debounceUpdateCache.delete(h)}this.vNodes.updateLowLevelNodesRect(),this.vNodes.clearHighLevelIds()},o.Task_Time_Interval)}}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}createScene(t){return new D.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...t,autoRender:!0,id:this.viewId,contextType:"2d"})}createLayer(t,e,s){const{width:r,height:a}=s,i=`canvas-${t}`,c=e.layer(i,{...s,offscreen:!1}),l=new D.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return c.append(l),l}updateScene(t){this.scene.attr({...t});const{width:e,height:s}=t;this.scene.width=e,this.scene.height=s,this.updateLayer({width:e,height:s})}updateLayer(t){const{width:e,height:s}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",s),this.fullLayer.setAttribute("size",[e,s]),this.fullLayer.setAttribute("pos",[e*.5,s*.5]),this.topLayer.parent.setAttribute("width",e),this.topLayer.parent.setAttribute("height",s),this.topLayer.setAttribute("size",[e,s]),this.topLayer.setAttribute("pos",[e*.5,s*.5]),this.localLayer.parent.setAttribute("width",e),this.localLayer.parent.setAttribute("height",s),this.localLayer.setAttribute("size",[e,s]),this.localLayer.setAttribute("pos",[e*.5,s*.5]),this.serviceLayer.parent.setAttribute("width",e),this.serviceLayer.parent.setAttribute("height",s),this.serviceLayer.setAttribute("size",[e,s]),this.serviceLayer.setAttribute("pos",[e*.5,s*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.vNodes.clear(),this.fullLayer.remove(),this.topLayer.remove(),this.localLayer.remove(),this.serviceLayer.remove(),this.scene.remove(),this.localWork.destroy(),this.serviceWork.destroy(),this.topWork.destroy()}}class Q{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===o.Main_View_Id?6e3:3e3})}getCachedImages(t){return this.cacheImages.get(t)}clearCacheImages(){this.cacheImages.forEach(t=>t.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){var i;const{msgType:e,imageSrc:s,imageBitmap:r,workId:a}=t;switch(e){case o.EPostMessageType.Snapshot:await this.getSnapshot(t),this.destroy();return;case o.EPostMessageType.BoundingBox:await this.getBoundingRect(t),this.destroy();return;case o.EPostMessageType.GetImageBitMap:if(s&&r&&this.cacheImages.set(s,r),a){const c=a.toString(),l=(i=this.imageResolveMap.get(c))==null?void 0:i.resolve;l&&l(c)}break}}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&s.src&&r){const a=s.src,i=this.cacheImages.has(a),c=r.toString();if(!i){const l=await new Promise(n=>{const p=this.imageResolveMap.get(c)||{resolve:void 0,timer:void 0};p.timer&&clearTimeout(p.timer),p.resolve=n,p.timer=setTimeout(()=>{const h=this.imageResolveMap.get(c);h!=null&&h.resolve&&h.resolve(c)},5e3),this.imageResolveMap.set(c,p),this.opt.post({sp:[{imageSrc:a,workId:c,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!0,type:o.EPostMessageType.GetImageBitMap}]})});this.imageResolveMap.delete(l)}return this.cacheImages.get(a)}}createWorkShapeNode(t){return o.getShapeInstance({...t,fullLayer:this.fullLayer,drawLayer:void 0})}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async runFullWork(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){let a,i;const c=(r=e.getWorkId())==null?void 0:r.toString();return e.toolsType===o.EToolsKey.Image?a=await e.consumeServiceAsync({isFullWork:!0,worker:this}):e.toolsType===o.EToolsKey.Text?a=await e.consumeServiceAsync({isFullWork:!0,replaceId:c,isDrawLabel:!0}):(a=e.consumeService({op:s,isFullWork:!0,replaceId:c}),i=(t==null?void 0:t.updateNodeOpt)&&e.updataOptService(t.updateNodeOpt)),o.computRect(a,i)}}async getSnapshot(t){const{scenePath:e,scenes:s,cameraOpt:r,w:a,h:i}=t;if(e&&s&&r){this.setCameraOpt(r);let c;for(const[n,p]of Object.entries(s))if(p!=null&&p.type)switch(p==null?void 0:p.type){case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:{const{opt:h}=p,y={...p,opt:h,workId:n,msgType:o.EPostMessageType.FullWork,dataType:o.EDataType.Service,viewId:this.viewId},u=await this.runFullWork(y);c=o.computRect(c,u);break}}let l;a&&i&&(l={resizeWidth:a,resizeHeight:i}),await this.getSnapshotRender({scenePath:e,options:l})}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}getRectImageBitmap(t,e){const s=Math.floor(t.x*this.opt.displayer.dpr),r=Math.floor(t.y*this.opt.displayer.dpr),a=t.w>0&&Math.floor(t.w*this.opt.displayer.dpr||1)||1,i=t.h>0&&Math.floor(t.h*this.opt.displayer.dpr||1)||1;return createImageBitmap(this.fullLayer.parent.canvas,s,r,a,i,e)}async getSnapshotRender(t){var a,i;const{scenePath:e,options:s}=t;((a=this.fullLayer)==null?void 0:a.parent).render();const r=await this.getRectImageBitmap(this.getSceneRect(),s);r&&(this.post({sp:[{type:o.EPostMessageType.Snapshot,scenePath:e,imageBitmap:r,viewId:this.viewId}]}),(i=this.fullLayer)==null||i.removeAllChildren())}async getBoundingRect(t){const{scenePath:e,scenes:s,cameraOpt:r}=t;if(e&&s&&r){this.setCameraOpt(r);let a;for(const[i,c]of Object.entries(s))if(c!=null&&c.type)switch(c==null?void 0:c.type){case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:{const l=await this.runFullWork({...c,workId:i,msgType:o.EPostMessageType.FullWork,dataType:o.EDataType.Service,viewId:this.viewId});a=o.computRect(a,l);break}}a&&this.post({sp:[{type:o.EPostMessageType.BoundingBox,scenePath:e,rect:a}]})}}setCameraOpt(t){const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var e;this.mainThreadPostId=void 0;const t=[];for(const s of this.combinePostMsg.values())if((e=s.sp)!=null&&e.length)for(const r of s.sp){let a=!1;for(const i of t)if(o.isEqual(r,i)){a=!0;break}a||t.push(r)}return this.combinePostMsg.clear(),{sp:t}}combinePost(){var s,r;const t=this.combinePostData(),e=(s=t.sp)==null?void 0:s.filter(a=>a.type!==o.EPostMessageType.None||a.isLockSentEventCursor);e!=null&&e.length?t.sp=e.map(a=>a.viewId?a:{...a,viewId:this.viewId}):delete t.sp,(t!=null&&t.drawCount||(r=t.sp)!=null&&r.length)&&this.opt.post(t)}createScene(t){return new D.Scene({displayRatio:this.opt.displayer.dpr,depth:!1,desynchronized:!0,...t,autoRender:!1,contextType:"2d"})}createLayer(t,e,s){const{width:r,height:a}=s,i=`canvas-${t}`,c=e.layer(i,s),l=new D.Group({anchor:[.5,.5],pos:[r*.5,a*.5],size:[r,a],name:"viewport",id:t});return c.append(l),l}updateScene(t){this.scene.attr({...t});const{width:e,height:s}=t;this.scene.width=e,this.scene.height=s,this.updateLayer({width:e,height:s})}updateLayer(t){const{width:e,height:s}=t;this.fullLayer.parent.setAttribute("width",e),this.fullLayer.parent.setAttribute("height",s),this.fullLayer.setAttribute("size",[e,s]),this.fullLayer.setAttribute("pos",[e*.5,s*.5])}destroy(){this.clearCacheImages(),this.clearImageResolveMap(),this.fullLayer.remove(),this.scene.remove()}}class J{constructor(t){d(this,"mainThreadMap",new Map);d(this,"snapshotThread");d(this,"master");this.master=t}post(t){const{drawCount:e,sp:s,workerTasksqueueCount:r}=t;this.master.isBusy&&o.isNumber(r)&&this.master.setWorkerTasksqueueCount(r),o.isNumber(e)&&this.master.setMaxDrawCount(e),s&&this.master.collectorSyncData(s)}destroy(){this.mainThreadMap.clear()}createMainThread(t,e){return new Y(t,e)}createSnapshotThread(t,e){return new Q(t,e)}async consume(t){var e,s,r,a;for(const i of t.values()){const{msgType:c,viewId:l,tasksqueue:n,mainTasksqueueCount:p,layerOpt:h,offscreenCanvasOpt:y,cameraOpt:u,isSubWorker:k}=i;if(c===o.EPostMessageType.Console){console.log(this);continue}if(c===o.EPostMessageType.Init){const S=(e=this.master.control.viewContainerManager.getView(l))==null?void 0:e.displayer,g=S==null?void 0:S.canvasContainerRef.current;if(S&&g&&h&&y){const T=this.createMainThread(l,{displayer:S,container:g,layerOpt:h,master:this.master,canvasOpt:y,post:this.post.bind(this)});this.mainThreadMap.set(l,T),T&&u&&T.setCameraOpt(u)}continue}if((c===o.EPostMessageType.Snapshot||c===o.EPostMessageType.BoundingBox)&&l===((s=this.master.control.viewContainerManager.mainView)==null?void 0:s.id)){const S=(r=this.master.control.viewContainerManager.getView(l))==null?void 0:r.displayer,g=(a=S.snapshotContainerRef)==null?void 0:a.current;if(S&&g&&u){g.style.width=`${u.width}px`,g.style.height=`${u.height}px`;const T={...o.ViewContainerManager.defaultLayerOpt,offscreen:!1,width:u.width,height:u.height},f={...o.ViewContainerManager.defaultScreenCanvasOpt,width:u.width,height:u.height};this.snapshotThread=this.createSnapshotThread(l,{displayer:S,container:g,layerOpt:T,master:this.master,canvasOpt:f,post:this.post.bind(this)}),this.snapshotThread.on(i).then(()=>{this.snapshotThread=void 0,g.innerHTML="",g.style.width="",g.style.height=""});continue}}if(c===o.EPostMessageType.GetImageBitMap&&k&&this.snapshotThread){this.snapshotThread.on(i);continue}if(c===o.EPostMessageType.TasksQueue&&(n!=null&&n.size)){for(const[S,g]of this.mainThreadMap.entries()){const T=n.get(S);T&&(await g.on(T),p&&this.post({workerTasksqueueCount:p}))}continue}if(l===o.Storage_ViewId_ALL){for(const S of this.mainThreadMap.values())S.on(i),c===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l);continue}const m=this.mainThreadMap.get(l);m&&(m.on(i),c===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l))}}}exports.MainThreadManagerImpl=J;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var ee = Object.defineProperty;
|
|
2
2
|
var te = (N, t, e) => t in N ? ee(N, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : N[t] = e;
|
|
3
3
|
var d = (N, t, e) => te(N, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
-
import { E as f, a as T, c as D, b as se, i as oe, d as re, e as U, g as ie, S as P, f as ae, D as A, h as v, j as B, t as x, k as p, l as L, m as K, n as ce, C as _, o as ne, p as I, M as R, T as G, q as z, r as V, s as le, u as $, V as Z, v as he } from "./index-
|
|
4
|
+
import { E as f, a as T, c as D, b as se, i as oe, d as re, e as U, g as ie, S as P, f as ae, D as A, h as v, j as B, t as x, k as p, l as L, m as K, n as ce, C as _, o as ne, p as I, M as R, T as G, q as z, r as V, s as le, u as $, V as Z, v as he } from "./index-9ShgZO4H.mjs";
|
|
5
5
|
import { Scene as X, Group as Y } from "spritejs";
|
|
6
6
|
import { cloneDeep as Q, xor as pe, isEqual as j, isNumber as de } from "lodash";
|
|
7
7
|
import "lineclip";
|
package/dist/subWorker.js
CHANGED
|
@@ -396,7 +396,7 @@ _inherits(o,_e$default22);return _createClass(o,[{key:"texture",get:function get
|
|
|
396
396
|
l=="length"||// Node.js 0.10 has enumerable non-index properties on buffers.
|
|
397
397
|
n&&(l=="offset"||l=="parent")||// PhantomJS 2 has enumerable non-index properties on typed arrays.
|
|
398
398
|
i&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||// Skip index properties.
|
|
399
|
-
gc(l,s)))&&o.push(l);return o;}var kn=yc,Sc=Object.prototype;function xc(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Sc;return h===t;}var Or=xc;function Tc(h,r){return function(t){return h(r(t));};}var Jn=Tc,Mc=Jn,Pc=Mc(Object.keys,Object),Oc=Pc,Ec=Or,Cc=Oc,Ac=Object.prototype,Rc=Ac.hasOwnProperty;function Ic(h){if(!Ec(h))return Cc(h);var r=[];for(var t in Object(h))Rc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var Lc=Ic,bc=Fn,wc=Vn;function Dc(h){return h!=null&&wc(h.length)&&!bc(h);}var Er=Dc,Nc=kn,Wc=Lc,Bc=Er;function Fc(h){return Bc(h)?Nc(h):Wc(h);}var Cr=Fc,Uc=ir,jc=Cr;function $c(h,r){return h&&Uc(r,jc(r),h);}var zc=$c;function Gc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Hc=Gc,Kc=he,Yc=Or,Vc=Hc,Xc=Object.prototype,kc=Xc.hasOwnProperty;function Jc(h){if(!Kc(h))return Vc(h);var r=Yc(h),t=[];for(var e in h)e=="constructor"&&(r||!kc.call(h,e))||t.push(e);return t;}var Zc=Jc,Qc=kn,qc=Zc,_c=Er;function tf(h){return _c(h)?Qc(h,!0):qc(h);}var Ar=tf,ef=ir,rf=Ar;function nf(h,r){return h&&ef(r,rf(r),h);}var sf=nf,Ke={exports:{}};Ke.exports;(function(h,r){var t=ee,e=r&&!r.nodeType&&r,n=e&&!0&&h&&!h.nodeType&&h,i=n&&n.exports===e,a=i?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function s(l,d){if(d)return l.slice();var c=l.length,p=o?o(c):new l.constructor(c);return l.copy(p),p;}h.exports=s;})(Ke,Ke.exports);var of=Ke.exports;function af(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var lf=af;function cf(h,r){for(var t=-1,e=h==null?0:h.length,n=0,i=[];++t<e;){var a=h[t];r(a,t,h)&&(i[n++]=a);}return i;}var Zn=cf;function ff(){return[];}var Qn=ff,hf=Zn,uf=Qn,df=Object.prototype,gf=df.propertyIsEnumerable,qr=Object.getOwnPropertySymbols,pf=qr?function(h){return h==null?[]:(h=Object(h),hf(qr(h),function(r){return gf.call(h,r);}));}:uf,Rr=pf,mf=ir,vf=Rr;function yf(h,r){return mf(h,vf(h),r);}var Sf=yf;function xf(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var Ir=xf,Tf=Jn,Mf=Tf(Object.getPrototypeOf,Object),qn=Mf,Pf=Ir,Of=qn,Ef=Rr,Cf=Qn,Af=Object.getOwnPropertySymbols,Rf=Af?function(h){for(var r=[];h;)Pf(r,Ef(h)),h=Of(h);return r;}:Cf,_n=Rf,If=ir,Lf=_n;function bf(h,r){return If(h,Lf(h),r);}var wf=bf,Df=Ir,Nf=Ue;function Wf(h,r,t){var e=r(h);return Nf(h)?e:Df(e,t(h));}var ti=Wf,Bf=ti,Ff=Rr,Uf=Cr;function jf(h){return Bf(h,Uf,Ff);}var ei=jf,$f=ti,zf=_n,Gf=Ar;function Hf(h){return $f(h,Gf,zf);}var Kf=Hf,Yf=ge,Vf=ee,Xf=Yf(Vf,"DataView"),kf=Xf,Jf=ge,Zf=ee,Qf=Jf(Zf,"Promise"),qf=Qf,_f=ge,th=ee,eh=_f(th,"Set"),ri=eh,rh=ge,nh=ee,ih=rh(nh,"WeakMap"),sh=ih,dr=kf,gr=Tr,pr=qf,mr=ri,vr=sh,ni=de,Ae=Un,_r="[object Map]",oh="[object Object]",tn="[object Promise]",en="[object Set]",rn="[object WeakMap]",nn="[object DataView]",ah=Ae(dr),lh=Ae(gr),ch=Ae(pr),fh=Ae(mr),hh=Ae(vr),ue=ni;(dr&&ue(new dr(new ArrayBuffer(1)))!=nn||gr&&ue(new gr())!=_r||pr&&ue(pr.resolve())!=tn||mr&&ue(new mr())!=en||vr&&ue(new vr())!=rn)&&(ue=function ue(h){var r=ni(h),t=r==oh?h.constructor:void 0,e=t?Ae(t):"";if(e)switch(e){case ah:return nn;case lh:return _r;case ch:return tn;case fh:return en;case hh:return rn;}return r;});var or=ue,uh=Object.prototype,dh=uh.hasOwnProperty;function gh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&dh.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var ph=gh,mh=ee,vh=mh.Uint8Array,ii=vh,sn=ii;function yh(h){var r=new h.constructor(h.byteLength);return new sn(r).set(new sn(h)),r;}var Lr=yh,Sh=Lr;function xh(h,r){var t=r?Sh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Th=xh,Mh=/\w*$/;function Ph(h){var r=new h.constructor(h.source,Mh.exec(h));return r.lastIndex=h.lastIndex,r;}var Oh=Ph,on=Fe,an=on?on.prototype:void 0,ln=an?an.valueOf:void 0;function Eh(h){return ln?Object(ln.call(h)):{};}var Ch=Eh,Ah=Lr;function Rh(h,r){var t=r?Ah(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var Ih=Rh,Lh=Lr,bh=Th,wh=Oh,Dh=Ch,Nh=Ih,Wh="[object Boolean]",Bh="[object Date]",Fh="[object Map]",Uh="[object Number]",jh="[object RegExp]",$h="[object Set]",zh="[object String]",Gh="[object Symbol]",Hh="[object ArrayBuffer]",Kh="[object DataView]",Yh="[object Float32Array]",Vh="[object Float64Array]",Xh="[object Int8Array]",kh="[object Int16Array]",Jh="[object Int32Array]",Zh="[object Uint8Array]",Qh="[object Uint8ClampedArray]",qh="[object Uint16Array]",_h="[object Uint32Array]";function tu(h,r,t){var e=h.constructor;switch(r){case Hh:return Lh(h);case Wh:case Bh:return new e(+h);case Kh:return bh(h,t);case Yh:case Vh:case Xh:case kh:case Jh:case Zh:case Qh:case qh:case _h:return Nh(h,t);case Fh:return new e();case Uh:case zh:return new e(h);case jh:return wh(h);case $h:return new e();case Gh:return Dh(h);}}var eu=tu,ru=he,cn=Object.create,nu=/* @__PURE__ */function(){function h(){}return function(r){if(!ru(r))return{};if(cn)return cn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),iu=nu,su=iu,ou=qn,au=Or;function lu(h){return typeof h.constructor=="function"&&!au(h)?su(ou(h)):{};}var cu=lu,fu=or,hu=ne,uu="[object Map]";function du(h){return hu(h)&&fu(h)==uu;}var gu=du,pu=gu,mu=sr,fn=Pr,hn=fn&&fn.isMap,vu=hn?mu(hn):pu,yu=vu,Su=or,xu=ne,Tu="[object Set]";function Mu(h){return xu(h)&&Su(h)==Tu;}var Pu=Mu,Ou=Pu,Eu=sr,un=Pr,dn=un&&un.isSet,Cu=dn?Eu(dn):Ou,si=Cu,Au=/* @__PURE__ */fe(si),Ru=$n,Iu=_a,Lu=Hn,bu=zc,wu=sf,Du=of,Nu=lf,Wu=Sf,Bu=wf,Fu=ei,Uu=Kf,ju=or,$u=ph,zu=eu,Gu=cu,Hu=Ue,Ku=Mr,Yu=yu,Vu=he,Xu=si,ku=Cr,Ju=Ar,Zu=1,Qu=2,qu=4,oi="[object Arguments]",_u="[object Array]",td="[object Boolean]",ed="[object Date]",rd="[object Error]",ai="[object Function]",nd="[object GeneratorFunction]",id="[object Map]",sd="[object Number]",li="[object Object]",od="[object RegExp]",ad="[object Set]",ld="[object String]",cd="[object Symbol]",fd="[object WeakMap]",hd="[object ArrayBuffer]",ud="[object DataView]",dd="[object Float32Array]",gd="[object Float64Array]",pd="[object Int8Array]",md="[object Int16Array]",vd="[object Int32Array]",yd="[object Uint8Array]",Sd="[object Uint8ClampedArray]",xd="[object Uint16Array]",Td="[object Uint32Array]",Ft={};Ft[oi]=Ft[_u]=Ft[hd]=Ft[ud]=Ft[td]=Ft[ed]=Ft[dd]=Ft[gd]=Ft[pd]=Ft[md]=Ft[vd]=Ft[id]=Ft[sd]=Ft[li]=Ft[od]=Ft[ad]=Ft[ld]=Ft[cd]=Ft[yd]=Ft[Sd]=Ft[xd]=Ft[Td]=!0;Ft[rd]=Ft[ai]=Ft[fd]=!1;function ze(h,r,t,e,n,i){var a,o=r&Zu,s=r&Qu,l=r&qu;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!Vu(h))return h;var d=Hu(h);if(d){if(a=$u(h),!o)return Nu(h,a);}else{var c=ju(h),p=c==ai||c==nd;if(Ku(h))return Du(h,o);if(c==li||c==oi||p&&!n){if(a=s||p?{}:Gu(h),!o)return s?Bu(h,wu(a,h)):Wu(h,bu(a,h));}else{if(!Ft[c])return n?h:{};a=zu(h,c,o);}}i||(i=new Ru());var y=i.get(h);if(y)return y;i.set(h,a),Xu(h)?h.forEach(function(v){a.add(ze(v,r,t,v,h,i));}):Yu(h)&&h.forEach(function(v,x){a.set(x,ze(v,r,t,x,h,i));});var P=l?s?Uu:Fu:s?Ju:ku,T=d?void 0:P(h);return Iu(T||h,function(v,x){T&&(x=v,v=h[x]),Lu(a,x,ze(v,r,t,x,h,i));}),a;}var Md=ze,Pd=Md,Od=1,Ed=4;function Cd(h){return Pd(h,Od|Ed);}var Ad=Cd,Xt=/* @__PURE__ */fe(Ad);var ci="1.1.3",Rd="@netless/appliance-plugin",Id=typeof OffscreenCanvas=="function"?"worker":"mainThread";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Rd,"@").concat(ci,"_").concat(Id),window.__netlessUA=h;}var re={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:1e3},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0}};function ae(h){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=h.length;if(t<2)return"";var e=h[0],n=h[1];if(t===2)return"M".concat(pe(e),"L").concat(pe(n));var i="";for(var a=2,o=t-1;a<o;a++)e=h[a],n=h[a+1],i+=me(e,n);return r?"M".concat(me(h[0],h[1]),"Q").concat(pe(h[1])).concat(me(h[1],h[2]),"T").concat(i).concat(me(h[t-1],h[0])).concat(me(h[0],h[1]),"Z"):"M".concat(pe(h[0]),"Q").concat(pe(h[1])).concat(me(h[1],h[2])).concat(h.length>3?"T":"").concat(i,"L").concat(pe(h[t-1]));}var Jt=/*#__PURE__*/function(){function Jt(r){_classCallCheck(this,Jt);et(this,"syncUnitTime",re.syncOpt.interval);et(this,"vNodes");et(this,"drawLayer");et(this,"fullLayer");et(this,"workId");var t=r.vNodes,e=r.fullLayer,n=r.drawLayer,i=r.workId,a=r.toolsOpt;this.vNodes=t,this.fullLayer=e,this.drawLayer=n,this.workId=i,this.syncUnitTime=a.syncUnitTime||this.syncUnitTime;}return _createClass(Jt,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return r.reduce(function(e,n){var i=e[e.length-1];return(n&&!i||n&&i&&!n.isNear(i,t))&&e.push(n),e;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(r){this.workId=r;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(r){var n,i,a;this.workOptions=r,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),e=t&&((i=this.vNodes)==null?void 0:i.get(t))||void 0;t&&e&&(e.opt=r,(a=this.vNodes)==null||a.setInfo(t,e));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(r){var n,i;var t;var e=(n=this.workId)==null?void 0:n.toString();if(e&&r){var a=this.fullLayer.getElementsByName(e)||this.drawLayer&&this.drawLayer.getElementsByName(e)||[];if(a.length!==1)return;var o=a[0],s=r.pos,l=r.zIndex,d=r.scale,c=r.angle,p=r.translate,y={};_t(l)&&(y.zIndex=l),s&&(y.pos=[s[0],s[1]]),d&&(y.scale=d),c&&(y.rotate=c),p&&(y.translate=p),o.attr(y);var P=o==null?void 0:o.getBoundingClientRect();return P&&(t=Pt(t,{x:Math.floor(P.x-Jt.SafeBorderPadding),y:Math.floor(P.y-Jt.SafeBorderPadding),w:Math.floor(P.width+Jt.SafeBorderPadding*2),h:Math.floor(P.height+Jt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(e,{rect:t,centerPos:s}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(r){var t=r.group,e=r.eraserlines,n=r.pos,i=r.layer,_r$isClear=r.isClear,a=_r$isClear===void 0?!0:_r$isClear,o=!!i.parent.gl;var _iterator13=_createForOfIteratorHelper(e),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var s=_step13.value;var l=s.thickness,d=s.op;var _iterator14=_createForOfIteratorHelper(d),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var c=_step14.value;var p=c.map(function(x,f){return f%2?x-n[1]:x-n[0];}),y=this.computEraserPoints(p,l),P=ae(y,!0),T={pos:[0,0],d:P,fillColor:"rgba(0,0,0,1)"},v=new ce(T);a&&(v.addEventListener("beforerender",function(_ref165){var x=_ref165.detail;var f=x.context;o?f.blendFuncSeparate(f.ZERO,f.ZERO,f.ZERO,f.ZERO):f.globalCompositeOperation="destination-out";}),v.addEventListener("afterrender",function(_ref166){var x=_ref166.detail;var f=x.context;o?f.blendFuncSeparate(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA,f.ONE,f.ONE_MINUS_SRC_ALPHA):f.globalCompositeOperation="source-over";})),t.append(v);}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}},{key:"computEraserPoints",value:function computEraserPoints(r,t){var e=Math.ceil(t/2);return r.length===2?this.computDot(r,e):this.computLine(r,e);}},{key:"computDot",value:function computDot(r,t){var e=new xt(r[0],r[1]);return xt.GetDotStroke(e,t,8);}},{key:"computLine",value:function computLine(r,t){var e=[],n=[];var i,a;for(var o=0;o<r.length;o+=2){var s=new xt(r[o],r[o+1]);var l=void 0;if(o==r.length-2){var d=new xt(r[o-2],r[o-1]);l=_.Sub(s,d).uni(),i=s;}else{o===0&&(a=s);var _d4=new xt(r[o+2],r[o+3]);l=_.Sub(_d4,s).uni();}if(l){var _d5=_.Per(l).mul(t);e.push(xt.Sub(s,_d5)),n.push(xt.Add(s,_d5));}}if(i&&a){var _o3=xt.GetSemicircleStroke(i,e[e.length-1],-1,8),_s4=xt.GetSemicircleStroke(a,n[0],-1,8);return e.concat(_o3,n.reverse(),_s4);}return[];}},{key:"replace",value:function replace(r,t,e){var _this61=this;var o;var n=r.getElementsByName(t),i=n.length;if(i){if(i>1)for(var s=1;s<n.length;s++)r.removeChild(n[s]),n[s].disconnect();e?r.replaceChild(e,n[0]):r.removeChild(n[0]),n[0].disconnect();}else e&&r.append(e);this.fullLayer===r?(o=this.drawLayer)==null||o.getElementsByName(t).forEach(function(s){var l;(l=_this61.drawLayer)==null||l.removeChild(s),s.disconnect();}):this.fullLayer.getElementsByName(t).forEach(function(s){_this61.fullLayer.removeChild(s),s.disconnect();});}}],[{key:"updateNodeOpt",value:function updateNodeOpt(r){var f;var t=r.node,e=r.opt,n=r.vNodes,i=r.willSerializeData,a=r.targetNode,o=e.zIndex,s=e.translate,l=e.angle,d=e.originPoint,c=e.scenePoint,p=e.scale,y=e.pointMap,P=e.thickness;var T;var v=a&&Xt(a)||n.get(t.name);if(!v)return;_t(o)&&(t.setAttribute("zIndex",o),v.opt.zIndex=o);var x=t.parent;if(x){if(d&&p&&a){var g=[v.op[0],v.op[1]];Fr(v.op,c,p,s);var u=[v.op[0],v.op[1]],m=[u[0]-g[0],u[1]-g[1]];if(v.centerPos=[v.centerPos[0]+m[0],v.centerPos[1]+m[1]],v.opt.translate=void 0,v.opt.scale=void 0,v.opt.eraserlines)for(var _i2=0,_Object$values=Object.values(v.opt.eraserlines);_i2<_Object$values.length;_i2++){var M=_Object$values[_i2];var E=M.op,R=M.thickness;M.thickness=R*Math.max(p[0],p[1]);for(var b=0;b<E.length;b++)Ur(E[b],c,p,s);}}else if(s){if(t.setAttribute("translate",s),v.opt.translate=s,a){var _g6=[s[0]*x.worldScaling[0],s[1]*x.worldScaling[1]];T=Sr(v.rect,_g6),v.rect=T;}else{var _g7=Jt.getRectFromLayer(x,t.name);v.rect=_g7||v.rect;}}else if(_t(l))if(t.setAttribute("rotate",l),v.opt.rotate=l,a)T=Oi(v.rect,l),v.rect=T;else{var _g8=Jt.getRectFromLayer(x,t.name);v.rect=_g8||v.rect;}if(y){var _g9=y.get(t.name);if(_g9)for(var _u10=0,_m9=0;_u10<v.op.length;_u10+=3,_m9++)v.op[_u10]=_g9[_m9][0],v.op[_u10+1]=_g9[_m9][1];}if(P&&(f=v==null?void 0:v.opt)!=null&&f.thickness&&(v.opt.thickness=P),i&&!(d&&p&&a)){if(s){var _g10=v.op.map(function(u,m){var M=m%3;return M===0?u+s[0]:M===1?u+s[1]:u;});if(v.op=_g10,v.centerPos=[v.centerPos[0]+s[0],v.centerPos[1]+s[1]],v!=null&&v.opt&&(v.opt.translate=void 0),v.opt.eraserlines)for(var _i3=0,_Object$values2=Object.values(v.opt.eraserlines);_i3<_Object$values2.length;_i3++){var _u11=_Object$values2[_i3];var _m10=_u11.op;for(var _M6=0;_M6<_m10.length;_M6++){var _E3=_m10[_M6].map(function(R,b){return b%2?R+s[1]:R+s[0];});_u11.op[_M6]=_E3;}}}else if(_t(l)){var _g11=v.op;if(Gg(_g11,v.centerPos,l),v.op=_g11,v!=null&&v.opt&&(v.opt.rotate=void 0),v.opt.eraserlines)for(var _i4=0,_Object$values3=Object.values(v.opt.eraserlines);_i4<_Object$values3.length;_i4++){var _u12=_Object$values3[_i4];var _m11=_u12.op;for(var _M7=0;_M7<_m11.length;_M7++)Hg(_m11[_M7],v.centerPos,l);}}}v&&n.setInfo(t.name,v);}}},{key:"getCenterPos",value:function getCenterPos(r,t){var e=t.worldPosition,n=t.worldScaling;return[(r.x+r.w/2-e[0])/n[0],(r.y+r.h/2-e[1])/n[1]];}},{key:"getRectFromLayer",value:function getRectFromLayer(r,t){var e=r.getElementsByName(t)[0];if(e){var n=e.getBoundingClientRect();return{x:Math.floor(n.x-Jt.SafeBorderPadding),y:Math.floor(n.y-Jt.SafeBorderPadding),w:Math.floor(n.width+Jt.SafeBorderPadding*2),h:Math.floor(n.height+Jt.SafeBorderPadding*2)};}}}]);}();et(Jt,"SafeBorderPadding",10);var vt=Jt;var br={exports:{}};br.exports;(function(h){var r=function(){var t=String.fromCharCode,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function a(s,l){if(!i[s]){i[s]={};for(var d=0;d<s.length;d++)i[s][s.charAt(d)]=d;}return i[s][l];}var o={compressToBase64:function compressToBase64(s){if(s==null)return"";var l=o._compress(s,6,function(d){return e.charAt(d);});switch(l.length%4){default:case 0:return l;case 1:return l+"===";case 2:return l+"==";case 3:return l+"=";}},decompressFromBase64:function decompressFromBase64(s){return s==null?"":s==""?null:o._decompress(s.length,32,function(l){return a(e,s.charAt(l));});},compressToUTF16:function compressToUTF16(s){return s==null?"":o._compress(s,15,function(l){return t(l+32);})+" ";},decompressFromUTF16:function decompressFromUTF16(s){return s==null?"":s==""?null:o._decompress(s.length,16384,function(l){return s.charCodeAt(l)-32;});},//compress into uint8array (UCS-2 big endian format)
|
|
399
|
+
gc(l,s)))&&o.push(l);return o;}var kn=yc,Sc=Object.prototype;function xc(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Sc;return h===t;}var Or=xc;function Tc(h,r){return function(t){return h(r(t));};}var Jn=Tc,Mc=Jn,Pc=Mc(Object.keys,Object),Oc=Pc,Ec=Or,Cc=Oc,Ac=Object.prototype,Rc=Ac.hasOwnProperty;function Ic(h){if(!Ec(h))return Cc(h);var r=[];for(var t in Object(h))Rc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var Lc=Ic,bc=Fn,wc=Vn;function Dc(h){return h!=null&&wc(h.length)&&!bc(h);}var Er=Dc,Nc=kn,Wc=Lc,Bc=Er;function Fc(h){return Bc(h)?Nc(h):Wc(h);}var Cr=Fc,Uc=ir,jc=Cr;function $c(h,r){return h&&Uc(r,jc(r),h);}var zc=$c;function Gc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Hc=Gc,Kc=he,Yc=Or,Vc=Hc,Xc=Object.prototype,kc=Xc.hasOwnProperty;function Jc(h){if(!Kc(h))return Vc(h);var r=Yc(h),t=[];for(var e in h)e=="constructor"&&(r||!kc.call(h,e))||t.push(e);return t;}var Zc=Jc,Qc=kn,qc=Zc,_c=Er;function tf(h){return _c(h)?Qc(h,!0):qc(h);}var Ar=tf,ef=ir,rf=Ar;function nf(h,r){return h&&ef(r,rf(r),h);}var sf=nf,Ke={exports:{}};Ke.exports;(function(h,r){var t=ee,e=r&&!r.nodeType&&r,n=e&&!0&&h&&!h.nodeType&&h,i=n&&n.exports===e,a=i?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function s(l,d){if(d)return l.slice();var c=l.length,p=o?o(c):new l.constructor(c);return l.copy(p),p;}h.exports=s;})(Ke,Ke.exports);var of=Ke.exports;function af(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var lf=af;function cf(h,r){for(var t=-1,e=h==null?0:h.length,n=0,i=[];++t<e;){var a=h[t];r(a,t,h)&&(i[n++]=a);}return i;}var Zn=cf;function ff(){return[];}var Qn=ff,hf=Zn,uf=Qn,df=Object.prototype,gf=df.propertyIsEnumerable,qr=Object.getOwnPropertySymbols,pf=qr?function(h){return h==null?[]:(h=Object(h),hf(qr(h),function(r){return gf.call(h,r);}));}:uf,Rr=pf,mf=ir,vf=Rr;function yf(h,r){return mf(h,vf(h),r);}var Sf=yf;function xf(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var Ir=xf,Tf=Jn,Mf=Tf(Object.getPrototypeOf,Object),qn=Mf,Pf=Ir,Of=qn,Ef=Rr,Cf=Qn,Af=Object.getOwnPropertySymbols,Rf=Af?function(h){for(var r=[];h;)Pf(r,Ef(h)),h=Of(h);return r;}:Cf,_n=Rf,If=ir,Lf=_n;function bf(h,r){return If(h,Lf(h),r);}var wf=bf,Df=Ir,Nf=Ue;function Wf(h,r,t){var e=r(h);return Nf(h)?e:Df(e,t(h));}var ti=Wf,Bf=ti,Ff=Rr,Uf=Cr;function jf(h){return Bf(h,Uf,Ff);}var ei=jf,$f=ti,zf=_n,Gf=Ar;function Hf(h){return $f(h,Gf,zf);}var Kf=Hf,Yf=ge,Vf=ee,Xf=Yf(Vf,"DataView"),kf=Xf,Jf=ge,Zf=ee,Qf=Jf(Zf,"Promise"),qf=Qf,_f=ge,th=ee,eh=_f(th,"Set"),ri=eh,rh=ge,nh=ee,ih=rh(nh,"WeakMap"),sh=ih,dr=kf,gr=Tr,pr=qf,mr=ri,vr=sh,ni=de,Ae=Un,_r="[object Map]",oh="[object Object]",tn="[object Promise]",en="[object Set]",rn="[object WeakMap]",nn="[object DataView]",ah=Ae(dr),lh=Ae(gr),ch=Ae(pr),fh=Ae(mr),hh=Ae(vr),ue=ni;(dr&&ue(new dr(new ArrayBuffer(1)))!=nn||gr&&ue(new gr())!=_r||pr&&ue(pr.resolve())!=tn||mr&&ue(new mr())!=en||vr&&ue(new vr())!=rn)&&(ue=function ue(h){var r=ni(h),t=r==oh?h.constructor:void 0,e=t?Ae(t):"";if(e)switch(e){case ah:return nn;case lh:return _r;case ch:return tn;case fh:return en;case hh:return rn;}return r;});var or=ue,uh=Object.prototype,dh=uh.hasOwnProperty;function gh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&dh.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var ph=gh,mh=ee,vh=mh.Uint8Array,ii=vh,sn=ii;function yh(h){var r=new h.constructor(h.byteLength);return new sn(r).set(new sn(h)),r;}var Lr=yh,Sh=Lr;function xh(h,r){var t=r?Sh(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Th=xh,Mh=/\w*$/;function Ph(h){var r=new h.constructor(h.source,Mh.exec(h));return r.lastIndex=h.lastIndex,r;}var Oh=Ph,on=Fe,an=on?on.prototype:void 0,ln=an?an.valueOf:void 0;function Eh(h){return ln?Object(ln.call(h)):{};}var Ch=Eh,Ah=Lr;function Rh(h,r){var t=r?Ah(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var Ih=Rh,Lh=Lr,bh=Th,wh=Oh,Dh=Ch,Nh=Ih,Wh="[object Boolean]",Bh="[object Date]",Fh="[object Map]",Uh="[object Number]",jh="[object RegExp]",$h="[object Set]",zh="[object String]",Gh="[object Symbol]",Hh="[object ArrayBuffer]",Kh="[object DataView]",Yh="[object Float32Array]",Vh="[object Float64Array]",Xh="[object Int8Array]",kh="[object Int16Array]",Jh="[object Int32Array]",Zh="[object Uint8Array]",Qh="[object Uint8ClampedArray]",qh="[object Uint16Array]",_h="[object Uint32Array]";function tu(h,r,t){var e=h.constructor;switch(r){case Hh:return Lh(h);case Wh:case Bh:return new e(+h);case Kh:return bh(h,t);case Yh:case Vh:case Xh:case kh:case Jh:case Zh:case Qh:case qh:case _h:return Nh(h,t);case Fh:return new e();case Uh:case zh:return new e(h);case jh:return wh(h);case $h:return new e();case Gh:return Dh(h);}}var eu=tu,ru=he,cn=Object.create,nu=/* @__PURE__ */function(){function h(){}return function(r){if(!ru(r))return{};if(cn)return cn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),iu=nu,su=iu,ou=qn,au=Or;function lu(h){return typeof h.constructor=="function"&&!au(h)?su(ou(h)):{};}var cu=lu,fu=or,hu=ne,uu="[object Map]";function du(h){return hu(h)&&fu(h)==uu;}var gu=du,pu=gu,mu=sr,fn=Pr,hn=fn&&fn.isMap,vu=hn?mu(hn):pu,yu=vu,Su=or,xu=ne,Tu="[object Set]";function Mu(h){return xu(h)&&Su(h)==Tu;}var Pu=Mu,Ou=Pu,Eu=sr,un=Pr,dn=un&&un.isSet,Cu=dn?Eu(dn):Ou,si=Cu,Au=/* @__PURE__ */fe(si),Ru=$n,Iu=_a,Lu=Hn,bu=zc,wu=sf,Du=of,Nu=lf,Wu=Sf,Bu=wf,Fu=ei,Uu=Kf,ju=or,$u=ph,zu=eu,Gu=cu,Hu=Ue,Ku=Mr,Yu=yu,Vu=he,Xu=si,ku=Cr,Ju=Ar,Zu=1,Qu=2,qu=4,oi="[object Arguments]",_u="[object Array]",td="[object Boolean]",ed="[object Date]",rd="[object Error]",ai="[object Function]",nd="[object GeneratorFunction]",id="[object Map]",sd="[object Number]",li="[object Object]",od="[object RegExp]",ad="[object Set]",ld="[object String]",cd="[object Symbol]",fd="[object WeakMap]",hd="[object ArrayBuffer]",ud="[object DataView]",dd="[object Float32Array]",gd="[object Float64Array]",pd="[object Int8Array]",md="[object Int16Array]",vd="[object Int32Array]",yd="[object Uint8Array]",Sd="[object Uint8ClampedArray]",xd="[object Uint16Array]",Td="[object Uint32Array]",Ft={};Ft[oi]=Ft[_u]=Ft[hd]=Ft[ud]=Ft[td]=Ft[ed]=Ft[dd]=Ft[gd]=Ft[pd]=Ft[md]=Ft[vd]=Ft[id]=Ft[sd]=Ft[li]=Ft[od]=Ft[ad]=Ft[ld]=Ft[cd]=Ft[yd]=Ft[Sd]=Ft[xd]=Ft[Td]=!0;Ft[rd]=Ft[ai]=Ft[fd]=!1;function ze(h,r,t,e,n,i){var a,o=r&Zu,s=r&Qu,l=r&qu;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!Vu(h))return h;var d=Hu(h);if(d){if(a=$u(h),!o)return Nu(h,a);}else{var c=ju(h),p=c==ai||c==nd;if(Ku(h))return Du(h,o);if(c==li||c==oi||p&&!n){if(a=s||p?{}:Gu(h),!o)return s?Bu(h,wu(a,h)):Wu(h,bu(a,h));}else{if(!Ft[c])return n?h:{};a=zu(h,c,o);}}i||(i=new Ru());var y=i.get(h);if(y)return y;i.set(h,a),Xu(h)?h.forEach(function(v){a.add(ze(v,r,t,v,h,i));}):Yu(h)&&h.forEach(function(v,x){a.set(x,ze(v,r,t,x,h,i));});var P=l?s?Uu:Fu:s?Ju:ku,T=d?void 0:P(h);return Iu(T||h,function(v,x){T&&(x=v,v=h[x]),Lu(a,x,ze(v,r,t,x,h,i));}),a;}var Md=ze,Pd=Md,Od=1,Ed=4;function Cd(h){return Pd(h,Od|Ed);}var Ad=Cd,Xt=/* @__PURE__ */fe(Ad);var ci="1.1.4",Rd="@netless/appliance-plugin",Id=typeof OffscreenCanvas=="function"?"worker":"mainThread";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Rd,"@").concat(ci,"_").concat(Id),window.__netlessUA=h;}var re={syncOpt:{interval:500},cdn:{subWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/subWorker.js",fullWorkerUrl:"https://cdn.jsdelivr.net/npm/@netless/appliance-plugin@latest/dist/fullWorker.js"},cursor:{expirationTime:5e3},bufferSize:{full:2e4,sub:1e3},bezier:{combineUnitTime:100},pencilEraser:{useBitMap:!0}};function ae(h){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var t=h.length;if(t<2)return"";var e=h[0],n=h[1];if(t===2)return"M".concat(pe(e),"L").concat(pe(n));var i="";for(var a=2,o=t-1;a<o;a++)e=h[a],n=h[a+1],i+=me(e,n);return r?"M".concat(me(h[0],h[1]),"Q").concat(pe(h[1])).concat(me(h[1],h[2]),"T").concat(i).concat(me(h[t-1],h[0])).concat(me(h[0],h[1]),"Z"):"M".concat(pe(h[0]),"Q").concat(pe(h[1])).concat(me(h[1],h[2])).concat(h.length>3?"T":"").concat(i,"L").concat(pe(h[t-1]));}var Jt=/*#__PURE__*/function(){function Jt(r){_classCallCheck(this,Jt);et(this,"syncUnitTime",re.syncOpt.interval);et(this,"vNodes");et(this,"drawLayer");et(this,"fullLayer");et(this,"workId");var t=r.vNodes,e=r.fullLayer,n=r.drawLayer,i=r.workId,a=r.toolsOpt;this.vNodes=t,this.fullLayer=e,this.drawLayer=n,this.workId=i,this.syncUnitTime=a.syncUnitTime||this.syncUnitTime;}return _createClass(Jt,[{key:"baseConsumeResult",get:function get(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions};}},{key:"filterSamePoints",value:function filterSamePoints(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0.01;return r.reduce(function(e,n){var i=e[e.length-1];return(n&&!i||n&&i&&!n.isNear(i,t))&&e.push(n),e;},[]);}/** 设置工作id */},{key:"setWorkId",value:function setWorkId(r){this.workId=r;}},{key:"getWorkId",value:function getWorkId(){return this.workId;}/** 获取工作选项配置 */},{key:"getWorkOptions",value:function getWorkOptions(){return this.workOptions;}/** 设置工作选项配置 */},{key:"setWorkOptions",value:function setWorkOptions(r){var n,i,a;this.workOptions=r,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;var t=(n=this.workId)==null?void 0:n.toString(),e=t&&((i=this.vNodes)==null?void 0:i.get(t))||void 0;t&&e&&(e.opt=r,(a=this.vNodes)==null||a.setInfo(t,e));}/** 更新服务端同步配置,返回绘制结果 */},{key:"updataOptService",value:function updataOptService(r){var n,i;var t;var e=(n=this.workId)==null?void 0:n.toString();if(e&&r){var a=this.fullLayer.getElementsByName(e)||this.drawLayer&&this.drawLayer.getElementsByName(e)||[];if(a.length!==1)return;var o=a[0],s=r.pos,l=r.zIndex,d=r.scale,c=r.angle,p=r.translate,y={};_t(l)&&(y.zIndex=l),s&&(y.pos=[s[0],s[1]]),d&&(y.scale=d),c&&(y.rotate=c),p&&(y.translate=p),o.attr(y);var P=o==null?void 0:o.getBoundingClientRect();return P&&(t=Pt(t,{x:Math.floor(P.x-Jt.SafeBorderPadding),y:Math.floor(P.y-Jt.SafeBorderPadding),w:Math.floor(P.width+Jt.SafeBorderPadding*2),h:Math.floor(P.height+Jt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(e,{rect:t,centerPos:s}),t;}}},{key:"drawEraserlines",value:function drawEraserlines(r){var t=r.group,e=r.eraserlines,n=r.pos,i=r.layer,_r$isClear=r.isClear,a=_r$isClear===void 0?!0:_r$isClear,o=!!i.parent.gl;var _iterator13=_createForOfIteratorHelper(e),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var s=_step13.value;var l=s.thickness,d=s.op;var _iterator14=_createForOfIteratorHelper(d),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var c=_step14.value;var p=c.map(function(x,f){return f%2?x-n[1]:x-n[0];}),y=this.computEraserPoints(p,l),P=ae(y,!0),T={pos:[0,0],d:P,fillColor:"rgba(0,0,0,1)"},v=new ce(T);a&&(v.addEventListener("beforerender",function(_ref165){var x=_ref165.detail;var f=x.context;o?f.blendFuncSeparate(f.ZERO,f.ZERO,f.ZERO,f.ZERO):f.globalCompositeOperation="destination-out";}),v.addEventListener("afterrender",function(_ref166){var x=_ref166.detail;var f=x.context;o?f.blendFuncSeparate(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA,f.ONE,f.ONE_MINUS_SRC_ALPHA):f.globalCompositeOperation="source-over";})),t.append(v);}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}}}catch(err){_iterator13.e(err);}finally{_iterator13.f();}}},{key:"computEraserPoints",value:function computEraserPoints(r,t){var e=Math.ceil(t/2);return r.length===2?this.computDot(r,e):this.computLine(r,e);}},{key:"computDot",value:function computDot(r,t){var e=new xt(r[0],r[1]);return xt.GetDotStroke(e,t,8);}},{key:"computLine",value:function computLine(r,t){var e=[],n=[];var i,a;for(var o=0;o<r.length;o+=2){var s=new xt(r[o],r[o+1]);var l=void 0;if(o==r.length-2){var d=new xt(r[o-2],r[o-1]);l=_.Sub(s,d).uni(),i=s;}else{o===0&&(a=s);var _d4=new xt(r[o+2],r[o+3]);l=_.Sub(_d4,s).uni();}if(l){var _d5=_.Per(l).mul(t);e.push(xt.Sub(s,_d5)),n.push(xt.Add(s,_d5));}}if(i&&a){var _o3=xt.GetSemicircleStroke(i,e[e.length-1],-1,8),_s4=xt.GetSemicircleStroke(a,n[0],-1,8);return e.concat(_o3,n.reverse(),_s4);}return[];}},{key:"replace",value:function replace(r,t,e){var _this61=this;var o;var n=r.getElementsByName(t),i=n.length;if(i){if(i>1)for(var s=1;s<n.length;s++)r.removeChild(n[s]),n[s].disconnect();e?r.replaceChild(e,n[0]):r.removeChild(n[0]),n[0].disconnect();}else e&&r.append(e);this.fullLayer===r?(o=this.drawLayer)==null||o.getElementsByName(t).forEach(function(s){var l;(l=_this61.drawLayer)==null||l.removeChild(s),s.disconnect();}):this.fullLayer.getElementsByName(t).forEach(function(s){_this61.fullLayer.removeChild(s),s.disconnect();});}}],[{key:"updateNodeOpt",value:function updateNodeOpt(r){var f;var t=r.node,e=r.opt,n=r.vNodes,i=r.willSerializeData,a=r.targetNode,o=e.zIndex,s=e.translate,l=e.angle,d=e.originPoint,c=e.scenePoint,p=e.scale,y=e.pointMap,P=e.thickness;var T;var v=a&&Xt(a)||n.get(t.name);if(!v)return;_t(o)&&(t.setAttribute("zIndex",o),v.opt.zIndex=o);var x=t.parent;if(x){if(d&&p&&a){var g=[v.op[0],v.op[1]];Fr(v.op,c,p,s);var u=[v.op[0],v.op[1]],m=[u[0]-g[0],u[1]-g[1]];if(v.centerPos=[v.centerPos[0]+m[0],v.centerPos[1]+m[1]],v.opt.translate=void 0,v.opt.scale=void 0,v.opt.eraserlines)for(var _i2=0,_Object$values=Object.values(v.opt.eraserlines);_i2<_Object$values.length;_i2++){var M=_Object$values[_i2];var E=M.op,R=M.thickness;M.thickness=R*Math.max(p[0],p[1]);for(var b=0;b<E.length;b++)Ur(E[b],c,p,s);}}else if(s){if(t.setAttribute("translate",s),v.opt.translate=s,a){var _g6=[s[0]*x.worldScaling[0],s[1]*x.worldScaling[1]];T=Sr(v.rect,_g6),v.rect=T;}else{var _g7=Jt.getRectFromLayer(x,t.name);v.rect=_g7||v.rect;}}else if(_t(l))if(t.setAttribute("rotate",l),v.opt.rotate=l,a)T=Oi(v.rect,l),v.rect=T;else{var _g8=Jt.getRectFromLayer(x,t.name);v.rect=_g8||v.rect;}if(y){var _g9=y.get(t.name);if(_g9)for(var _u10=0,_m9=0;_u10<v.op.length;_u10+=3,_m9++)v.op[_u10]=_g9[_m9][0],v.op[_u10+1]=_g9[_m9][1];}if(P&&(f=v==null?void 0:v.opt)!=null&&f.thickness&&(v.opt.thickness=P),i&&!(d&&p&&a)){if(s){var _g10=v.op.map(function(u,m){var M=m%3;return M===0?u+s[0]:M===1?u+s[1]:u;});if(v.op=_g10,v.centerPos=[v.centerPos[0]+s[0],v.centerPos[1]+s[1]],v!=null&&v.opt&&(v.opt.translate=void 0),v.opt.eraserlines)for(var _i3=0,_Object$values2=Object.values(v.opt.eraserlines);_i3<_Object$values2.length;_i3++){var _u11=_Object$values2[_i3];var _m10=_u11.op;for(var _M6=0;_M6<_m10.length;_M6++){var _E3=_m10[_M6].map(function(R,b){return b%2?R+s[1]:R+s[0];});_u11.op[_M6]=_E3;}}}else if(_t(l)){var _g11=v.op;if(Gg(_g11,v.centerPos,l),v.op=_g11,v!=null&&v.opt&&(v.opt.rotate=void 0),v.opt.eraserlines)for(var _i4=0,_Object$values3=Object.values(v.opt.eraserlines);_i4<_Object$values3.length;_i4++){var _u12=_Object$values3[_i4];var _m11=_u12.op;for(var _M7=0;_M7<_m11.length;_M7++)Hg(_m11[_M7],v.centerPos,l);}}}v&&n.setInfo(t.name,v);}}},{key:"getCenterPos",value:function getCenterPos(r,t){var e=t.worldPosition,n=t.worldScaling;return[(r.x+r.w/2-e[0])/n[0],(r.y+r.h/2-e[1])/n[1]];}},{key:"getRectFromLayer",value:function getRectFromLayer(r,t){var e=r.getElementsByName(t)[0];if(e){var n=e.getBoundingClientRect();return{x:Math.floor(n.x-Jt.SafeBorderPadding),y:Math.floor(n.y-Jt.SafeBorderPadding),w:Math.floor(n.width+Jt.SafeBorderPadding*2),h:Math.floor(n.height+Jt.SafeBorderPadding*2)};}}}]);}();et(Jt,"SafeBorderPadding",10);var vt=Jt;var br={exports:{}};br.exports;(function(h){var r=function(){var t=String.fromCharCode,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function a(s,l){if(!i[s]){i[s]={};for(var d=0;d<s.length;d++)i[s][s.charAt(d)]=d;}return i[s][l];}var o={compressToBase64:function compressToBase64(s){if(s==null)return"";var l=o._compress(s,6,function(d){return e.charAt(d);});switch(l.length%4){default:case 0:return l;case 1:return l+"===";case 2:return l+"==";case 3:return l+"=";}},decompressFromBase64:function decompressFromBase64(s){return s==null?"":s==""?null:o._decompress(s.length,32,function(l){return a(e,s.charAt(l));});},compressToUTF16:function compressToUTF16(s){return s==null?"":o._compress(s,15,function(l){return t(l+32);})+" ";},decompressFromUTF16:function decompressFromUTF16(s){return s==null?"":s==""?null:o._decompress(s.length,16384,function(l){return s.charCodeAt(l)-32;});},//compress into uint8array (UCS-2 big endian format)
|
|
400
400
|
compressToUint8Array:function compressToUint8Array(s){for(var l=o.compress(s),d=new Uint8Array(l.length*2),c=0,p=l.length;c<p;c++){var y=l.charCodeAt(c);d[c*2]=y>>>8,d[c*2+1]=y%256;}return d;},//decompress from uint8array (UCS-2 big endian format)
|
|
401
401
|
decompressFromUint8Array:function decompressFromUint8Array(s){if(s==null)return o.decompress(s);for(var l=new Array(s.length/2),d=0,c=l.length;d<c;d++)l[d]=s[d*2]*256+s[d*2+1];var p=[];return l.forEach(function(y){p.push(t(y));}),o.decompress(p.join(""));},//compress into a string that is already URI encoded
|
|
402
402
|
compressToEncodedURIComponent:function compressToEncodedURIComponent(s){return s==null?"":o._compress(s,6,function(l){return n.charAt(l);});},//decompress from an output of compressToEncodedURIComponent
|