@netless/appliance-plugin 1.1.7-beta.5 → 1.1.7-beta.8
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-CLjll5.js → fullWorker-B8Wi4q.js} +2 -2
- package/cdn/{subWorker-BXx9j-.js → subWorker-BBvrYY.js} +2 -2
- package/dist/appliance-plugin.js +1 -1
- package/dist/appliance-plugin.mjs +1 -1
- package/dist/fullWorker.js +2 -2
- package/dist/{index-Cn734okO.mjs → index-BMdpXRuo.mjs} +1 -1
- package/dist/{index-BaCGmVtJ.mjs → index-Bn_ebN3K.mjs} +3 -3
- package/dist/index-DwkuEfVJ.js +1 -0
- package/dist/{index-5bFcwVyy.js → index-wEW51rON.js} +1 -1
- package/dist/subWorker.js +2 -2
- package/package.json +1 -1
- package/dist/index-BjlW9PDf.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 u=(v,t,e)=>R(v,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./index-BjlW9PDf.js"),b=require("spritejs"),N=require("lodash");require("lineclip");require("white-web-sdk");require("react-dom");require("react");require("eventemitter2");class A{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"serviceWorkShapes",new Map);u(this,"localWorkShapes",new Map);u(this,"tmpOpt");u(this,"animationId");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}getLocalWorkShape(t){return this.localWorkShapes.get(t)}createLocalWorkShape(t,e){if(t&&this.tmpOpt){const s={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},r=this.createWorkShapeNode({...s,workId:t});return r&&this.localWorkShapes.set(t,{node:r,toolsType:r.toolsType,workState:o.EvevtWorkState.Start}),r}}canUseTopLayer(t){return t===o.EToolsKey.LaserPen}destroy(){this.clearAll()}clearAll(){this.thread.topLayer.children.length&&(this.thread.topLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),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,d;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(!((d=this.serviceWorkShapes)!=null&&d.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),d=(n.animationWorkData||[]).slice(y,h);if((n.animationIndex||0)<h&&((r=n.node)==null||r.consumeService({op:d,isFullWork:!1}),n.animationIndex=h,d.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:d.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:d}=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]&&d===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 x{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"workShapes",new Map);u(this,"effectSelectNodeData",new Set);u(this,"batchEraserRemoveNodes",new Set);u(this,"batchEraserWorks",new Set);u(this,"tmpOpt");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);u(this,"drawCount",0);u(this,"drawWorkActiveId");u(this,"batchEraserCombine",o.throttle(()=>{this.updateBatchEraserCombineNode(this.batchEraserWorks,this.batchEraserRemoveNodes),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()},100,{leading:!1}));this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}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(d=>{const k=this.vNodes.get(d);if(k){const{toolsType:f,op:m,opt:T}=k;l.set(d,{opt:T,toolsType:f,ops:(m==null?void 0:m.length)&&o.transformToSerializableData(m)||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 d=this.workShapes.get(o.Cursor_Hover_Id),k=(i=d==null?void 0:d.selectIds)==null?void 0:i[0],f=h.consumeAll({data:t});switch(y){case o.EToolsKey.Selector:f.selectIds&&k&&((c=f.selectIds)!=null&&c.includes(k))&&d.cursorBlur(),f.type===o.EPostMessageType.Select&&(f.selectIds&&e.runReverseSelectWork(f.selectIds),this.thread.post({sp:[{...f,scenePath:r}]})),(l=h.selectIds)!=null&&l.length?h.clearTmpPoints():this.clearWorkShapeNodeCache(p);break;case o.EToolsKey.PencilEraser:this.drawPencilEraser({...f,scenePath:r},a),h.clearTmpPoints();break;case o.EToolsKey.BitMapEraser:(f.rect||(n=f.newWorkDatas)!=null&&n.size)&&this.drawBitMapEraserFull(h,f,a);break;case o.EToolsKey.Eraser:this.drawEraser({...f,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 m=[];a&&m.push({type:o.EPostMessageType.None,isLockSentEventCursor:a}),f&&(m.push(f),this.drawCount=0,this.thread.post({drawCount:this.drawCount,sp:m})),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 F{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"workShapes",new Map);u(this,"selectorWorkShapes",new Map);u(this,"willRunEffectSelectorIds",new Set);u(this,"runEffectId");u(this,"animationId");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}destroy(){this.clearAll()}clearAll(){this.thread.serviceLayer.children.length&&(this.thread.serviceLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),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,d,k,f,m,T;this.animationId=void 0;let t=!1;const e=new Map;for(const[g,S]of this.workShapes.entries())switch(S.toolsType){case o.EToolsKey.Image:{await((s=S.node)==null?void 0:s.consumeServiceAsync({isFullWork:!0,worker:this})),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),this.workShapes.delete(g);break}case o.EToolsKey.Text:{S.node&&(await((r=S.node)==null?void 0:r.consumeServiceAsync({isFullWork:!0,replaceId:g})),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(a=S.node)==null||a.clearTmpPoints(),this.workShapes.delete(g));break}case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Rectangle:case o.EToolsKey.Ellipse:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:{const w=!!S.ops;if((i=S.animationWorkData)!=null&&i.length){const I=S.oldRect;(c=S.node)==null||c.consumeService({op:S.animationWorkData,isFullWork:w}),w&&(this.selectorWorkShapes.forEach((E,M)=>{var L;(L=E.selectIds)!=null&&L.includes(g)&&(this.willRunEffectSelectorIds.add(M),this.runEffect())}),(l=S.node)==null||l.clearTmpPoints(),this.workShapes.delete(g)),e.set(g,{workState:I?S.ops?o.EvevtWorkState.Done:o.EvevtWorkState.Doing:o.EvevtWorkState.Start,op:S.animationWorkData.filter((E,M)=>{if(M%3!==2)return!0}).slice(-2)}),S.animationWorkData.length=0}break}case o.EToolsKey.Pencil:{if(!S.useAnimation&&S.ops)(n=S.node)==null||n.consumeService({op:S.animationWorkData||[],isFullWork:!0,replaceId:g}),(p=S.node)==null||p.updataOptService(S.updateNodeOpt),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(h=S.node)==null||h.clearTmpPoints(),this.workShapes.delete(g);else if(S.useAnimation){if(S.isDel){(y=S.node)==null||y.clearTmpPoints(),this.workShapes.delete(g);break}const w=3,I=this.computNextAnimationIndex(S,w),E=S.isDiff?0:Math.max(0,(S.animationIndex||0)-w),M=(S.animationWorkData||[]).slice(E,I),L=(k=(d=S.node)==null?void 0:d.getWorkId())==null?void 0:k.toString();if((S.animationIndex||0)<I||S.isDiff){if((f=S.node)==null||f.consumeService({op:M,isFullWork:!1}),S.animationIndex=I,S.isDiff&&(S.isDiff=!1),M.length){const D=M.filter((P,O)=>{if(O%w!==w-1)return!0}).slice(-2);e.set(g,{workState:E===0?o.EvevtWorkState.Start:I===((m=S.animationWorkData)==null?void 0:m.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:D})}}else S.ops&&((T=S.node)==null||T.consumeService({op:S.animationWorkData||[],isFullWork:!0,replaceId:L}),S.isDel=!0,e.set(g,{workState:o.EvevtWorkState.Done,op:M.filter((D,P)=>{if(P%w!==w-1)return!0}).slice(-2)}));t=!0;break}break}}if(t&&this.runAnimation(),e.size){const g=[];e.forEach((S,w)=>{g.push({type:o.EPostMessageType.Cursor,uid:w.split(o.Storage_Splitter)[0],op:S.op,workState:S.workState,viewId:this.thread.viewId})}),this.thread.post({sp:g})}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}hasDiffData(t,e,s){const r=t.length;if(e.length<r)return!0;switch(s){case o.EToolsKey.Pencil:{for(let a=0;a<r;a+=3)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}case o.EToolsKey.LaserPen:{for(let a=0;a<r;a+=2)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}}return!1}activeWorkShape(t){var k,f,m,T;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(!((f=this.workShapes)!=null&&f.has(h))){let g={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&&(g=this.setNodeKey(h,g,r,s)),(m=this.workShapes)==null||m.set(h,g)}const d=(T=this.workShapes)==null?void 0:T.get(h);a&&(d.type=a),c&&(d.animationWorkData=o.transformToNormalData(c),d.ops=c),i&&(d.updateNodeOpt=i),l&&(d.isDiff=this.hasDiffData(d.animationWorkData||[],l,d.toolsType),d.animationWorkData=l),d.node&&d.node.getWorkId()!==h&&d.node.setWorkId(h),y&&(d.oldRect=y),r&&s&&(s.syncUnitTime&&(this.syncUnitTime=s.syncUnitTime),d.toolsType!==r&&r&&s&&this.setNodeKey(h,d,r,s),d.node&&d.node.setWorkOptions(s)),p&&(d.imageBitmap=p)}removeNode(t,e){t.indexOf(o.Storage_Selector_key)>-1&&this.removeSelectWork(e),this.thread.fullLayer.getElementsByName(t).forEach(s=>{s.remove()}),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(){u(this,"localWork");u(this,"serviceWork");u(this,"threadEngine")}registerMainThread(t){return this.threadEngine=t,this.localWork=t.localWork,this.serviceWork=t.serviceWork,this}}class B extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.CopyNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.FullWork&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var r;const{workId:s}=e;s&&await((r=this.localWork)==null?void 0:r.consumeFull(e))}}class _ extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetColorNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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 U extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.ZIndexNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData: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 K extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.TranslateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var p,h;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData: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,d=r.sp||[];if(y===o.EvevtWorkState.Start)return{sp:[],render:[]};const k=c==null?void 0:c.selectRect;if(l){y===o.EvevtWorkState.Doing&&d.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:k,willSyncService:!0,isSync:!0,points:i.getChildrenPoints(),textOpt:i.textOpt});for(const[f,m]of a.entries())h&&m.toolsType===o.EToolsKey.Text?d.push({...m,workId:f,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):d.push({...m,workId:f,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:d}}}class z extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.DeleteNode)}async consume(){return!1}}class q extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.ScaleNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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[d,k]of c.entries())k.toolsType===o.EToolsKey.Text?h.push({...k,workId:d,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):h.push({...k,workId:d,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:!0})}return{sp:h}}}class H extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.RotateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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,d=r.sp||[],k=i==null?void 0:i.selectRect;if(n){p&&y===o.EvevtWorkState.Done&&d.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:k,willSyncService:!0,isSync:h,points:a.getChildrenPoints()});for(const[f,m]of c.entries())d.push({...m,workId:f,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:h})}return{sp:d}}}class V extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetFontStyle)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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||[],d=c==null?void 0:c.selectRect;if(l&&y){p.fontSize&&y.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:d,willSyncService:l,isSync:n,points:i.getChildrenPoints()});for(const[k,f]of a.entries())h&&f.toolsType===o.EToolsKey.Text?y.push({...f,workId:k,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):y.push({...f,workId:k,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:y}}}class $ extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetPoint)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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,d]of a.entries())p.push({...d,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 G extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetLock)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData: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[d,k]of a.entries())h.push({...k,workId:d,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 j extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetShapeOpt)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData: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{constructor(t){u(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case o.EmitEventType.TranslateNode:return new K;case o.EmitEventType.ZIndexNode:return new U;case o.EmitEventType.CopyNode:return new B;case o.EmitEventType.SetColorNode:return new _;case o.EmitEventType.DeleteNode:return new z;case o.EmitEventType.ScaleNode:return new q;case o.EmitEventType.RotateNode:return new H;case o.EmitEventType.SetFontStyle:return new V;case o.EmitEventType.SetPoint:return new $;case o.EmitEventType.SetLock:return new G;case o.EmitEventType.SetShapeOpt:return new j}}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 X{constructor(t,e){u(this,"viewId");u(this,"fullLayer");u(this,"topLayer");u(this,"localLayer");u(this,"serviceLayer");u(this,"snapshotFullLayer");u(this,"vNodes");u(this,"master");u(this,"opt");u(this,"cameraOpt");u(this,"scene");u(this,"localWork");u(this,"serviceWork");u(this,"topWork");u(this,"taskUpdateCameraId");u(this,"debounceUpdateCameraId");u(this,"debounceUpdateCache",new Set);u(this,"mainThreadPostId");u(this,"combinePostMsg",new Set);u(this,"methodBuilder");u(this,"cacheImages",new Map);u(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master;const s=o.DefaultAppliancePluginOptions.bufferSize.full,r=o.DefaultAppliancePluginOptions.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?s:r}),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 o.VNodeManager(t,this.scene);const a={thread:this,vNodes:this.vNodes};this.localWork=new x(a),this.serviceWork=new F(a),this.topWork=new A(a),this.vNodes.init(this.fullLayer),this.methodBuilder=new Z([o.EmitEventType.CopyNode,o.EmitEventType.SetColorNode,o.EmitEventType.DeleteNode,o.EmitEventType.RotateNode,o.EmitEventType.ScaleNode,o.EmitEventType.TranslateNode,o.EmitEventType.ZIndexNode,o.EmitEventType.SetFontStyle,o.EmitEventType.SetPoint,o.EmitEventType.SetLock,o.EmitEventType.SetShapeOpt]).registerForMainThread(this)}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())if(e===t&&s.imageBitmap)return s.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())s.workId===t&&(s.imageBitmap.close(),this.cacheImages.delete(e))}clearCacheImages(){this.cacheImages.forEach(t=>t.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t})=>{t&&clearTimeout(t)}),this.imageResolveMap.clear()}post(t){this.combinePostMsg.add(t),this.runBatchPostData()}async on(t){if(!await this.methodBuilder.consumeForMainThread(t)){const{msgType:e,toolsType:s,opt:r,dataType:a,workId:i,workState:c,imageSrc:l,imageBitmap:n,workIds:p}=t,h=i==null?void 0:i.toString();switch(e){case o.EPostMessageType.AuthClear:{const{clearUids:y,localUid:d}=t;this.vNodes.setCanClearUids(y),this.vNodes.setLocalUid(d);break}case o.EPostMessageType.Destroy:this.destroy();break;case o.EPostMessageType.Clear:this.clearAll();break;case o.EPostMessageType.UpdateCamera:await this.updateCamera(t);break;case o.EPostMessageType.UpdateTools:if(s&&r){const y={toolsType:s,toolsOpt:r};this.topWork.canUseTopLayer(s)?this.topWork.setToolsOpt(y):this.localWork.setToolsOpt(y)}break;case o.EPostMessageType.CreateWork:if(h&&r&&s){if(this.topWork.canUseTopLayer(s)){this.topWork.getToolsOpt()||this.topWork.setToolsOpt({toolsType:s,toolsOpt:r}),this.topWork.setWorkOptions(h,r);break}this.localWork.getToolsOpt()||this.localWork.setToolsOpt({toolsType:s,toolsOpt:r}),this.localWork.setWorkOptions(h,r)}break;case o.EPostMessageType.DrawWork:c===o.EvevtWorkState.Done&&a===o.EDataType.Local?this.consumeDrawAll(a,t):this.consumeDraw(a,t);break;case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:if(s&&this.topWork.canUseTopLayer(s)){this.consumeDrawAll(a,t);break}this.consumeFull(a,t);break;case o.EPostMessageType.RemoveNode:await this.removeNode(t);return;case o.EPostMessageType.Select:a===o.EDataType.Service&&(i===o.Storage_Selector_key?this.localWork.updateFullSelectWork(t):this.serviceWork.runSelectWork(t));break;case o.EPostMessageType.CursorHover:this.localWork.cursorHover(t);break;case o.EPostMessageType.GetTextActive:a===o.EDataType.Local&&this.localWork.checkTextActive(t);break;case o.EPostMessageType.GetImageBitMap:if(l&&n&&i){const y=i.toString();this.deleteCachedImagesByWorkId(y),this.cacheImages.set(l,{imageBitmap:n,workId:y});const d=this.imageResolveMap.get(l);if(d){const{resolve:k,timer:f}=d;f&&clearTimeout(f),k&&k(l)}}break;case o.EPostMessageType.GetVNodeInfo:if(i&&p){const y=p.map(d=>this.vNodes.get(d));this.post({sp:[{type:o.EPostMessageType.GetVNodeInfo,dataType:o.EDataType.Local,workId:i,vInfo:y}]})}break}}}getIconSize(t,e,s){const r=t*s,a=e*s;return r<=50||a<=50?[50,50]:r<=100||a<=100?[100,100]:r<=200||a<=200?[200,200]:r<=400||a<=400?[400,400]:r<=800||a<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&r){const a=r.toString(),{src:i,type:c,width:l,height:n,strokeColor:p}=s;if(!i||!c||!l||!n)return;let h=i;if(c===o.EImageType.Iconify){const[f,m]=this.getIconSize(l,n,this.opt.displayer.dpr);h=`${i}?width=${f}&height=${m}&color=${p}`}if(this.cacheImages.has(h)){const f=this.getCachedImages(h);if(f)return f}if(this.imageResolveMap.has(h)){const f=this.getCachedImagesByWorkId(a);if(f)return f}const k=await new Promise(f=>{const m=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};m.timer&&clearTimeout(m.timer),m.resolve=f,m.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,m),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!1,type:o.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(k),this.getCachedImages(h)}}async removeNode(t){const{dataType:e,workId:s,removeIds:r}=t,a=r||[];if(s&&a.push(s.toString()),a.length)for(const i of a){if(i===o.Storage_Selector_key){await this.localWork.removeSelector(t);continue}e===o.EDataType.Local?this.localWork.removeWork(t):e===o.EDataType.Service&&this.serviceWork.removeWork(t),await this.localWork.colloctEffectSelectWork(t)}}async consumeFull(t,e){const s=await this.localWork.colloctEffectSelectWork(e);s&&t===o.EDataType.Local&&await this.localWork.consumeFull(s),s&&t===o.EDataType.Service&&this.serviceWork.consumeFull(s)}setCameraOpt(t){this.cameraOpt=t;const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;(a!==this.scene.width||i!==this.scene.height)&&this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r]),this.topLayer.setAttribute("scale",[e,e]),this.topLayer.setAttribute("translate",[-s,-r]),this.localLayer.setAttribute("scale",[e,e]),this.localLayer.setAttribute("translate",[-s,-r]),this.serviceLayer.setAttribute("scale",[e,e]),this.serviceLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var 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,d=h.rect,k=this.getSceneRect(),f=o.getRectMatrixrRelation(y,k),m=o.getRectMatrixrRelation(d,k);let T=!1;if((f!==m||y.w!==d.w||y.h!==d.h||m===o.EMatrixrRelationType.intersect)&&(T=!0),T){const{toolsType:g,opt:S}=h;g===o.EToolsKey.Text&&S.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 d=this.vNodes.get(h);if(d){const{toolsType:k,opt:f,rect:m}=d,T=this.localWork.setFullWork({toolsType:k,opt:f,workId:h});if(T){const g=this.getSceneRect(),S=o.getRectMatrixrRelation(m,g);n.push(T.consumeServiceAsync({isFullWork:!0,replaceId:h,isDrawLabel:S!==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 b.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 b.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 Y{constructor(t,e){u(this,"viewId");u(this,"fullLayer");u(this,"master");u(this,"opt");u(this,"scene");u(this,"mainThreadPostId");u(this,"combinePostMsg",new Set);u(this,"workShapes",new Map);u(this,"cacheImages",new Map);u(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master,this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?6e3:3e3})}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())if(e===t&&s.imageBitmap)return s.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())s.workId===t&&(s.imageBitmap.close(),this.cacheImages.delete(e))}clearCacheImages(){this.cacheImages.forEach(t=>t.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t})=>{t&&clearTimeout(t)}),this.imageResolveMap.clear()}post(t){this.combinePostMsg.add(t),this.runBatchPostData()}async on(t){const{msgType:e,imageSrc:s,imageBitmap:r,workId:a}=t;switch(e){case o.EPostMessageType.Snapshot:await this.getSnapshot(t),this.destroy();return;case o.EPostMessageType.BoundingBox:await this.getBoundingRect(t),this.destroy();return;case o.EPostMessageType.GetImageBitMap:if(s&&r&&a){const i=a.toString();this.deleteCachedImagesByWorkId(i),this.cacheImages.set(s,{imageBitmap:r,workId:i});const c=this.imageResolveMap.get(s);if(c){const{resolve:l,timer:n}=c;n&&clearTimeout(n),l&&l(s)}}break}}getIconSize(t,e,s){const r=t*s,a=e*s;return r<=50||a<=50?[50,50]:r<=100||a<=100?[100,100]:r<=200||a<=200?[200,200]:r<=400||a<=400?[400,400]:r<=800||a<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&r){const a=r.toString(),{src:i,type:c,width:l,height:n,strokeColor:p}=s;if(!i||!c||!l||!n)return;let h=i;if(c===o.EImageType.Iconify){const[f,m]=this.getIconSize(l,n,this.opt.displayer.dpr);h=`${i}?width=${f}&height=${m}&color=${p}`}if(this.cacheImages.has(h)){const f=this.getCachedImages(h);if(f)return f}if(this.imageResolveMap.has(h)){const f=this.getCachedImagesByWorkId(a);if(f)return f}const k=await new Promise(f=>{const m=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};m.timer&&clearTimeout(m.timer),m.resolve=f,m.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,m),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!0,type:o.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(k),this.getCachedImages(h)}}createWorkShapeNode(t){return o.getShapeInstance({...t,fullLayer:this.fullLayer,drawLayer:void 0})}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async runFullWork(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){let a,i;const 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},d=await this.runFullWork(y);c=o.computRect(c,d);break}}let l;a&&i&&(l={resizeWidth:a,resizeHeight:i}),await this.getSnapshotRender({scenePath:e,options:l})}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}getRectImageBitmap(t,e){const s=Math.floor(t.x*this.opt.displayer.dpr),r=Math.floor(t.y*this.opt.displayer.dpr),a=t.w>0&&Math.floor(t.w*this.opt.displayer.dpr||1)||1,i=t.h>0&&Math.floor(t.h*this.opt.displayer.dpr||1)||1;return createImageBitmap(this.fullLayer.parent.canvas,s,r,a,i,e)}async getSnapshotRender(t){var a,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 b.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 b.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 Q{constructor(t){u(this,"mainThreadMap",new Map);u(this,"snapshotThread");u(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 X(t,e)}createSnapshotThread(t,e){return new Y(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:d,isSubWorker:k}=i;if(c===o.EPostMessageType.Console){console.log(this);continue}if(c===o.EPostMessageType.Init){const m=(e=this.master.control.viewContainerManager.getView(l))==null?void 0:e.displayer,T=m==null?void 0:m.canvasContainerRef.current;if(m&&T&&h&&y){const g=this.createMainThread(l,{displayer:m,container:T,layerOpt:h,master:this.master,canvasOpt:y,post:this.post.bind(this)});this.mainThreadMap.set(l,g),g&&d&&g.setCameraOpt(d)}continue}if((c===o.EPostMessageType.Snapshot||c===o.EPostMessageType.BoundingBox)&&l===((s=this.master.control.viewContainerManager.mainView)==null?void 0:s.id)){const m=(r=this.master.control.viewContainerManager.getView(l))==null?void 0:r.displayer,T=(a=m.snapshotContainerRef)==null?void 0:a.current;if(m&&T&&d){T.style.width=`${d.width}px`,T.style.height=`${d.height}px`;const g={...o.ViewContainerManager.defaultLayerOpt,offscreen:!1,width:d.width,height:d.height},S={...o.ViewContainerManager.defaultScreenCanvasOpt,width:d.width,height:d.height};this.snapshotThread=this.createSnapshotThread(l,{displayer:m,container:T,layerOpt:g,master:this.master,canvasOpt:S,post:this.post.bind(this)}),this.snapshotThread.on(i).then(()=>{this.snapshotThread=void 0,T.innerHTML="",T.style.width="",T.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[m,T]of this.mainThreadMap.entries()){const g=n.get(m);g&&(await T.on(g),p&&this.post({workerTasksqueueCount:p}))}continue}if(l===o.Storage_ViewId_ALL){for(const m of this.mainThreadMap.values())m.on(i),c===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l);continue}const f=this.mainThreadMap.get(l);f&&(f.on(i),c===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l))}}}exports.MainThreadManagerImpl=Q;
|
|
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 u=(v,t,e)=>R(v,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./index-DwkuEfVJ.js"),b=require("spritejs"),N=require("lodash");require("lineclip");require("white-web-sdk");require("react-dom");require("react");require("eventemitter2");class A{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"serviceWorkShapes",new Map);u(this,"localWorkShapes",new Map);u(this,"tmpOpt");u(this,"animationId");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}getLocalWorkShape(t){return this.localWorkShapes.get(t)}createLocalWorkShape(t,e){if(t&&this.tmpOpt){const s={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},r=this.createWorkShapeNode({...s,workId:t});return r&&this.localWorkShapes.set(t,{node:r,toolsType:r.toolsType,workState:o.EvevtWorkState.Start}),r}}canUseTopLayer(t){return t===o.EToolsKey.LaserPen}destroy(){this.clearAll()}clearAll(){this.thread.topLayer.children.length&&(this.thread.topLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),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,d;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(!((d=this.serviceWorkShapes)!=null&&d.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),d=(n.animationWorkData||[]).slice(y,h);if((n.animationIndex||0)<h&&((r=n.node)==null||r.consumeService({op:d,isFullWork:!1}),n.animationIndex=h,d.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:d.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:d}=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]&&d===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 x{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"workShapes",new Map);u(this,"effectSelectNodeData",new Set);u(this,"batchEraserRemoveNodes",new Set);u(this,"batchEraserWorks",new Set);u(this,"tmpOpt");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);u(this,"drawCount",0);u(this,"drawWorkActiveId");u(this,"batchEraserCombine",o.throttle(()=>{this.updateBatchEraserCombineNode(this.batchEraserWorks,this.batchEraserRemoveNodes),this.batchEraserWorks.clear(),this.batchEraserRemoveNodes.clear()},100,{leading:!1}));this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}createLocalWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s){const a=e.toString();!this.getToolsOpt()&&r&&this.setToolsOpt({toolsType:r,toolsOpt:s}),this.setWorkOptions(a,s)}}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(d=>{const k=this.vNodes.get(d);if(k){const{toolsType:f,op:m,opt:T}=k;l.set(d,{opt:T,toolsType:f,ops:(m==null?void 0:m.length)&&o.transformToSerializableData(m)||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 d=this.workShapes.get(o.Cursor_Hover_Id),k=(i=d==null?void 0:d.selectIds)==null?void 0:i[0],f=h.consumeAll({data:t});switch(y){case o.EToolsKey.Selector:f.selectIds&&k&&((c=f.selectIds)!=null&&c.includes(k))&&d.cursorBlur(),f.type===o.EPostMessageType.Select&&(f.selectIds&&e.runReverseSelectWork(f.selectIds),this.thread.post({sp:[{...f,scenePath:r}]})),(l=h.selectIds)!=null&&l.length?h.clearTmpPoints():this.clearWorkShapeNodeCache(p);break;case o.EToolsKey.PencilEraser:this.drawPencilEraser({...f,scenePath:r},a),h.clearTmpPoints();break;case o.EToolsKey.BitMapEraser:(f.rect||(n=f.newWorkDatas)!=null&&n.size)&&this.drawBitMapEraserFull(h,f,a);break;case o.EToolsKey.Eraser:this.drawEraser({...f,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 m=[];a&&m.push({type:o.EPostMessageType.None,isLockSentEventCursor:a}),f&&(m.push(f),this.drawCount=0,this.thread.post({drawCount:this.drawCount,sp:m})),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 F{constructor(t){u(this,"vNodes");u(this,"thread");u(this,"workShapes",new Map);u(this,"selectorWorkShapes",new Map);u(this,"willRunEffectSelectorIds",new Set);u(this,"runEffectId");u(this,"animationId");u(this,"syncUnitTime",o.DefaultAppliancePluginOptions.syncOpt.interval);this.vNodes=t.vNodes,this.thread=t.thread}async loadImageBitMap(t){return await this.thread.loadImageBitMap(t)}destroy(){this.clearAll()}clearAll(){this.thread.serviceLayer.children.length&&(this.thread.serviceLayer.parent.children.forEach(t=>{t.name!=="viewport"&&t.remove()}),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,d,k,f,m,T;this.animationId=void 0;let t=!1;const e=new Map;for(const[g,S]of this.workShapes.entries())switch(S.toolsType){case o.EToolsKey.Image:{await((s=S.node)==null?void 0:s.consumeServiceAsync({isFullWork:!0,worker:this})),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),this.workShapes.delete(g);break}case o.EToolsKey.Text:{S.node&&(await((r=S.node)==null?void 0:r.consumeServiceAsync({isFullWork:!0,replaceId:g})),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(a=S.node)==null||a.clearTmpPoints(),this.workShapes.delete(g));break}case o.EToolsKey.Arrow:case o.EToolsKey.Straight:case o.EToolsKey.Rectangle:case o.EToolsKey.Ellipse:case o.EToolsKey.Star:case o.EToolsKey.Polygon:case o.EToolsKey.SpeechBalloon:{const w=!!S.ops;if((i=S.animationWorkData)!=null&&i.length){const I=S.oldRect;(c=S.node)==null||c.consumeService({op:S.animationWorkData,isFullWork:w}),w&&(this.selectorWorkShapes.forEach((E,M)=>{var L;(L=E.selectIds)!=null&&L.includes(g)&&(this.willRunEffectSelectorIds.add(M),this.runEffect())}),(l=S.node)==null||l.clearTmpPoints(),this.workShapes.delete(g)),e.set(g,{workState:I?S.ops?o.EvevtWorkState.Done:o.EvevtWorkState.Doing:o.EvevtWorkState.Start,op:S.animationWorkData.filter((E,M)=>{if(M%3!==2)return!0}).slice(-2)}),S.animationWorkData.length=0}break}case o.EToolsKey.Pencil:{if(!S.useAnimation&&S.ops)(n=S.node)==null||n.consumeService({op:S.animationWorkData||[],isFullWork:!0,replaceId:g}),(p=S.node)==null||p.updataOptService(S.updateNodeOpt),this.selectorWorkShapes.forEach((w,I)=>{var E;(E=w.selectIds)!=null&&E.includes(g)&&(this.willRunEffectSelectorIds.add(I),this.runEffect())}),(h=S.node)==null||h.clearTmpPoints(),this.workShapes.delete(g);else if(S.useAnimation){if(S.isDel){(y=S.node)==null||y.clearTmpPoints(),this.workShapes.delete(g);break}const w=3,I=this.computNextAnimationIndex(S,w),E=S.isDiff?0:Math.max(0,(S.animationIndex||0)-w),M=(S.animationWorkData||[]).slice(E,I),L=(k=(d=S.node)==null?void 0:d.getWorkId())==null?void 0:k.toString();if((S.animationIndex||0)<I||S.isDiff){if((f=S.node)==null||f.consumeService({op:M,isFullWork:!1}),S.animationIndex=I,S.isDiff&&(S.isDiff=!1),M.length){const D=M.filter((P,O)=>{if(O%w!==w-1)return!0}).slice(-2);e.set(g,{workState:E===0?o.EvevtWorkState.Start:I===((m=S.animationWorkData)==null?void 0:m.length)?o.EvevtWorkState.Done:o.EvevtWorkState.Doing,op:D})}}else S.ops&&((T=S.node)==null||T.consumeService({op:S.animationWorkData||[],isFullWork:!0,replaceId:L}),S.isDel=!0,e.set(g,{workState:o.EvevtWorkState.Done,op:M.filter((D,P)=>{if(P%w!==w-1)return!0}).slice(-2)}));t=!0;break}break}}if(t&&this.runAnimation(),e.size){const g=[];e.forEach((S,w)=>{g.push({type:o.EPostMessageType.Cursor,uid:w.split(o.Storage_Splitter)[0],op:S.op,workState:S.workState,viewId:this.thread.viewId})}),this.thread.post({sp:g})}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationDraw.bind(this)))}hasDiffData(t,e,s){const r=t.length;if(e.length<r)return!0;switch(s){case o.EToolsKey.Pencil:{for(let a=0;a<r;a+=3)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}case o.EToolsKey.LaserPen:{for(let a=0;a<r;a+=2)if(e[a]!==t[a]||e[a+1]!==t[a+1])return!0;break}}return!1}activeWorkShape(t){var k,f,m,T;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(!((f=this.workShapes)!=null&&f.has(h))){let g={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&&(g=this.setNodeKey(h,g,r,s)),(m=this.workShapes)==null||m.set(h,g)}const d=(T=this.workShapes)==null?void 0:T.get(h);a&&(d.type=a),c&&(d.animationWorkData=o.transformToNormalData(c),d.ops=c),i&&(d.updateNodeOpt=i),l&&(d.isDiff=this.hasDiffData(d.animationWorkData||[],l,d.toolsType),d.animationWorkData=l),d.node&&d.node.getWorkId()!==h&&d.node.setWorkId(h),y&&(d.oldRect=y),r&&s&&(s.syncUnitTime&&(this.syncUnitTime=s.syncUnitTime),d.toolsType!==r&&r&&s&&this.setNodeKey(h,d,r,s),d.node&&d.node.setWorkOptions(s)),p&&(d.imageBitmap=p)}removeNode(t,e){t.indexOf(o.Storage_Selector_key)>-1&&this.removeSelectWork(e),this.thread.fullLayer.getElementsByName(t).forEach(s=>{s.remove()}),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(){u(this,"localWork");u(this,"serviceWork");u(this,"threadEngine")}registerMainThread(t){return this.threadEngine=t,this.localWork=t.localWork,this.serviceWork=t.serviceWork,this}}class B extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.CopyNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.FullWork&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var r;const{workId:s}=e;s&&await((r=this.localWork)==null?void 0:r.consumeFull(e))}}class _ extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetColorNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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 U extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.ZIndexNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData: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 K extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.TranslateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var p,h;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData: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,d=r.sp||[];if(y===o.EvevtWorkState.Start)return{sp:[],render:[]};const k=c==null?void 0:c.selectRect;if(l){y===o.EvevtWorkState.Doing&&d.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:k,willSyncService:!0,isSync:!0,points:i.getChildrenPoints(),textOpt:i.textOpt});for(const[f,m]of a.entries())h&&m.toolsType===o.EToolsKey.Text?d.push({...m,workId:f,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):d.push({...m,workId:f,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:d}}}class z extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.DeleteNode)}async consume(){return!1}}class q extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.ScaleNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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[d,k]of c.entries())k.toolsType===o.EToolsKey.Text?h.push({...k,workId:d,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):h.push({...k,workId:d,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:!0})}return{sp:h}}}class H extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.RotateNode)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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,d=r.sp||[],k=i==null?void 0:i.selectRect;if(n){p&&y===o.EvevtWorkState.Done&&d.push({type:o.EPostMessageType.Select,selectIds:a.selectIds,selectRect:k,willSyncService:!0,isSync:h,points:a.getChildrenPoints()});for(const[f,m]of c.entries())d.push({...m,workId:f,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:h})}return{sp:d}}}class V extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetFontStyle)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return await this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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||[],d=c==null?void 0:c.selectRect;if(l&&y){p.fontSize&&y.push({type:o.EPostMessageType.Select,selectIds:i.selectIds,selectRect:d,willSyncService:l,isSync:n,points:i.getChildrenPoints()});for(const[k,f]of a.entries())h&&f.toolsType===o.EToolsKey.Text?y.push({...f,workId:k,type:o.EPostMessageType.TextUpdate,dataType:o.EDataType.Local,willSyncService:!0}):y.push({...f,workId:k,type:o.EPostMessageType.UpdateNode,updateNodeOpt:{useAnimation:!1},isSync:n})}return{sp:y}}}class $ extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetPoint)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var 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,d]of a.entries())p.push({...d,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 G extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetLock)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData: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[d,k]of a.entries())h.push({...k,workId:d,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 j extends W{constructor(){super(...arguments);u(this,"emitEventType",o.EmitEventType.SetShapeOpt)}async consume(e){const{msgType:s,dataType:r,emitEventType:a}=e;if(s===o.EPostMessageType.UpdateNode&&r===o.EDataType.Local&&a===this.emitEventType)return this.consumeForLocalWorker(e),!0}async consumeForLocalWorker(e){var l;const{workId:s,updateNodeOpt:r,willRefreshSelector:a,willSyncService:i,willSerializeData: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{constructor(t){u(this,"builders",new Map);this.builders=new Map(t.map(e=>[e,this.build(e)]))}build(t){switch(t){case o.EmitEventType.TranslateNode:return new K;case o.EmitEventType.ZIndexNode:return new U;case o.EmitEventType.CopyNode:return new B;case o.EmitEventType.SetColorNode:return new _;case o.EmitEventType.DeleteNode:return new z;case o.EmitEventType.ScaleNode:return new q;case o.EmitEventType.RotateNode:return new H;case o.EmitEventType.SetFontStyle:return new V;case o.EmitEventType.SetPoint:return new $;case o.EmitEventType.SetLock:return new G;case o.EmitEventType.SetShapeOpt:return new j}}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 X{constructor(t,e){u(this,"viewId");u(this,"fullLayer");u(this,"topLayer");u(this,"localLayer");u(this,"serviceLayer");u(this,"snapshotFullLayer");u(this,"vNodes");u(this,"master");u(this,"opt");u(this,"cameraOpt");u(this,"scene");u(this,"localWork");u(this,"serviceWork");u(this,"topWork");u(this,"taskUpdateCameraId");u(this,"debounceUpdateCameraId");u(this,"debounceUpdateCache",new Set);u(this,"mainThreadPostId");u(this,"combinePostMsg",new Set);u(this,"methodBuilder");u(this,"cacheImages",new Map);u(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master;const s=o.DefaultAppliancePluginOptions.bufferSize.full,r=o.DefaultAppliancePluginOptions.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?s:r}),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 o.VNodeManager(t,this.scene);const a={thread:this,vNodes:this.vNodes};this.localWork=new x(a),this.serviceWork=new F(a),this.topWork=new A(a),this.vNodes.init(this.fullLayer),this.methodBuilder=new Z([o.EmitEventType.CopyNode,o.EmitEventType.SetColorNode,o.EmitEventType.DeleteNode,o.EmitEventType.RotateNode,o.EmitEventType.ScaleNode,o.EmitEventType.TranslateNode,o.EmitEventType.ZIndexNode,o.EmitEventType.SetFontStyle,o.EmitEventType.SetPoint,o.EmitEventType.SetLock,o.EmitEventType.SetShapeOpt]).registerForMainThread(this)}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())if(e===t&&s.imageBitmap)return s.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())s.workId===t&&(s.imageBitmap.close(),this.cacheImages.delete(e))}clearCacheImages(){this.cacheImages.forEach(t=>t.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t})=>{t&&clearTimeout(t)}),this.imageResolveMap.clear()}post(t){this.combinePostMsg.add(t),this.runBatchPostData()}async on(t){if(!await this.methodBuilder.consumeForMainThread(t)){const{msgType:e,toolsType:s,opt:r,dataType:a,workId:i,workState:c,imageSrc:l,imageBitmap:n,workIds:p}=t,h=i==null?void 0:i.toString();switch(e){case o.EPostMessageType.AuthClear:{const{clearUids:y,localUid:d}=t;this.vNodes.setCanClearUids(y),this.vNodes.setLocalUid(d);break}case o.EPostMessageType.Destroy:this.destroy();break;case o.EPostMessageType.Clear:this.clearAll();break;case o.EPostMessageType.UpdateCamera:await this.updateCamera(t);break;case o.EPostMessageType.UpdateTools:if(s&&r){const y={toolsType:s,toolsOpt:r};this.topWork.canUseTopLayer(s)?this.topWork.setToolsOpt(y):this.localWork.setToolsOpt(y)}break;case o.EPostMessageType.CreateWork:if(h&&r&&s){if(this.topWork.canUseTopLayer(s)){this.topWork.getToolsOpt()||this.topWork.setToolsOpt({toolsType:s,toolsOpt:r}),this.topWork.setWorkOptions(h,r);break}this.localWork.getToolsOpt()||this.localWork.setToolsOpt({toolsType:s,toolsOpt:r}),this.localWork.setWorkOptions(h,r)}break;case o.EPostMessageType.DrawWork:c===o.EvevtWorkState.Done&&a===o.EDataType.Local?this.consumeDrawAll(a,t):this.consumeDraw(a,t);break;case o.EPostMessageType.UpdateNode:case o.EPostMessageType.FullWork:if(s&&this.topWork.canUseTopLayer(s)){this.consumeDrawAll(a,t);break}this.consumeFull(a,t);break;case o.EPostMessageType.RemoveNode:await this.removeNode(t);return;case o.EPostMessageType.Select:a===o.EDataType.Service&&(i===o.Storage_Selector_key?this.localWork.updateFullSelectWork(t):this.serviceWork.runSelectWork(t));break;case o.EPostMessageType.CursorHover:this.localWork.cursorHover(t);break;case o.EPostMessageType.GetTextActive:a===o.EDataType.Local&&this.localWork.checkTextActive(t);break;case o.EPostMessageType.GetImageBitMap:if(l&&n&&i){const y=i.toString();this.deleteCachedImagesByWorkId(y),this.cacheImages.set(l,{imageBitmap:n,workId:y});const d=this.imageResolveMap.get(l);if(d){const{resolve:k,timer:f}=d;f&&clearTimeout(f),k&&k(l)}}break;case o.EPostMessageType.GetVNodeInfo:if(i&&p){const y=p.map(d=>this.vNodes.get(d));this.post({sp:[{type:o.EPostMessageType.GetVNodeInfo,dataType:o.EDataType.Local,workId:i,vInfo:y}]})}break}}}getIconSize(t,e,s){const r=t*s,a=e*s;return r<=50||a<=50?[50,50]:r<=100||a<=100?[100,100]:r<=200||a<=200?[200,200]:r<=400||a<=400?[400,400]:r<=800||a<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&r){const a=r.toString(),{src:i,type:c,width:l,height:n,strokeColor:p}=s;if(!i||!c||!l||!n)return;let h=i;if(c===o.EImageType.Iconify){const[f,m]=this.getIconSize(l,n,this.opt.displayer.dpr);h=`${i}?width=${f}&height=${m}&color=${p}`}if(this.cacheImages.has(h)){const f=this.getCachedImages(h);if(f)return f}if(this.imageResolveMap.has(h)){const f=this.getCachedImagesByWorkId(a);if(f)return f}const k=await new Promise(f=>{const m=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};m.timer&&clearTimeout(m.timer),m.resolve=f,m.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,m),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!1,type:o.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(k),this.getCachedImages(h)}}async removeNode(t){const{dataType:e,workId:s,removeIds:r}=t,a=r||[];if(s&&a.push(s.toString()),a.length)for(const i of a){if(i===o.Storage_Selector_key){await this.localWork.removeSelector(t);continue}e===o.EDataType.Local?this.localWork.removeWork(t):e===o.EDataType.Service&&this.serviceWork.removeWork(t),await this.localWork.colloctEffectSelectWork(t)}}async consumeFull(t,e){const s=await this.localWork.colloctEffectSelectWork(e);s&&t===o.EDataType.Local&&await this.localWork.consumeFull(s),s&&t===o.EDataType.Service&&this.serviceWork.consumeFull(s)}setCameraOpt(t){this.cameraOpt=t;const{scale:e,centerX:s,centerY:r,width:a,height:i}=t;(a!==this.scene.width||i!==this.scene.height)&&this.updateScene({width:a,height:i}),this.fullLayer.setAttribute("scale",[e,e]),this.fullLayer.setAttribute("translate",[-s,-r]),this.topLayer.setAttribute("scale",[e,e]),this.topLayer.setAttribute("translate",[-s,-r]),this.localLayer.setAttribute("scale",[e,e]),this.localLayer.setAttribute("translate",[-s,-r]),this.serviceLayer.setAttribute("scale",[e,e]),this.serviceLayer.setAttribute("translate",[-s,-r])}runBatchPostData(){this.mainThreadPostId||(this.mainThreadPostId=requestAnimationFrame(this.combinePost.bind(this)))}combinePostData(){var 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,d=h.rect,k=this.getSceneRect(),f=o.getRectMatrixrRelation(y,k),m=o.getRectMatrixrRelation(d,k);let T=!1;if((f!==m||y.w!==d.w||y.h!==d.h||m===o.EMatrixrRelationType.intersect)&&(T=!0),T){const{toolsType:g,opt:S}=h;g===o.EToolsKey.Text&&S.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 d=this.vNodes.get(h);if(d){const{toolsType:k,opt:f,rect:m}=d,T=this.localWork.setFullWork({toolsType:k,opt:f,workId:h});if(T){const g=this.getSceneRect(),S=o.getRectMatrixrRelation(m,g);n.push(T.consumeServiceAsync({isFullWork:!0,replaceId:h,isDrawLabel:S!==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 b.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 b.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 Y{constructor(t,e){u(this,"viewId");u(this,"fullLayer");u(this,"master");u(this,"opt");u(this,"scene");u(this,"mainThreadPostId");u(this,"combinePostMsg",new Set);u(this,"workShapes",new Map);u(this,"cacheImages",new Map);u(this,"imageResolveMap",new Map);this.viewId=t,this.opt=e,this.scene=this.createScene({...e.canvasOpt,container:e.container}),this.master=e.master,this.fullLayer=this.createLayer("fullLayer",this.scene,{...e.layerOpt,bufferSize:this.viewId===o.Main_View_Id?6e3:3e3})}getCachedImages(t){var e;return(e=this.cacheImages.get(t))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())if(e===t&&s.imageBitmap)return s.imageBitmap}deleteCachedImagesByWorkId(t){for(const[e,s]of this.cacheImages.entries())s.workId===t&&(s.imageBitmap.close(),this.cacheImages.delete(e))}clearCacheImages(){this.cacheImages.forEach(t=>t.imageBitmap.close()),this.cacheImages.clear()}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:t})=>{t&&clearTimeout(t)}),this.imageResolveMap.clear()}post(t){this.combinePostMsg.add(t),this.runBatchPostData()}async on(t){const{msgType:e,imageSrc:s,imageBitmap:r,workId:a}=t;switch(e){case o.EPostMessageType.Snapshot:await this.getSnapshot(t),this.destroy();return;case o.EPostMessageType.BoundingBox:await this.getBoundingRect(t),this.destroy();return;case o.EPostMessageType.GetImageBitMap:if(s&&r&&a){const i=a.toString();this.deleteCachedImagesByWorkId(i),this.cacheImages.set(s,{imageBitmap:r,workId:i});const c=this.imageResolveMap.get(s);if(c){const{resolve:l,timer:n}=c;n&&clearTimeout(n),l&&l(s)}}break}}getIconSize(t,e,s){const r=t*s,a=e*s;return r<=50||a<=50?[50,50]:r<=100||a<=100?[100,100]:r<=200||a<=200?[200,200]:r<=400||a<=400?[400,400]:r<=800||a<=800?[800,800]:[1600,1600]}async loadImageBitMap(t){const{toolsType:e,opt:s,workId:r}=t;if(e===o.EToolsKey.Image&&s&&r){const a=r.toString(),{src:i,type:c,width:l,height:n,strokeColor:p}=s;if(!i||!c||!l||!n)return;let h=i;if(c===o.EImageType.Iconify){const[f,m]=this.getIconSize(l,n,this.opt.displayer.dpr);h=`${i}?width=${f}&height=${m}&color=${p}`}if(this.cacheImages.has(h)){const f=this.getCachedImages(h);if(f)return f}if(this.imageResolveMap.has(h)){const f=this.getCachedImagesByWorkId(a);if(f)return f}const k=await new Promise(f=>{const m=this.imageResolveMap.get(h)||{resolve:void 0,timer:void 0};m.timer&&clearTimeout(m.timer),m.resolve=f,m.timer=setTimeout(()=>{const T=this.imageResolveMap.get(h);T!=null&&T.resolve&&T.resolve(h)},5e3),this.imageResolveMap.set(h,m),this.opt.post({sp:[{imageSrc:h,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:!0,type:o.EPostMessageType.GetImageBitMap}]})});return this.imageResolveMap.delete(k),this.getCachedImages(h)}}createWorkShapeNode(t){return o.getShapeInstance({...t,fullLayer:this.fullLayer,drawLayer:void 0})}setFullWork(t){const{workId:e,opt:s,toolsType:r}=t;if(e&&s&&r){const a=e.toString();let i;return e&&this.workShapes.has(a)?(i=this.workShapes.get(a),i==null||i.setWorkOptions(s)):i=this.createWorkShapeNode({toolsOpt:s,toolsType:r,workId:a}),i?(this.workShapes.set(a,i),i):void 0}}async runFullWork(t){var r;const e=this.setFullWork(t),s=t.ops&&o.transformToNormalData(t.ops);if(e){let a,i;const 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},d=await this.runFullWork(y);c=o.computRect(c,d);break}}let l;a&&i&&(l={resizeWidth:a,resizeHeight:i}),await this.getSnapshotRender({scenePath:e,options:l})}}getSceneRect(){const{width:t,height:e}=this.scene;return{x:0,y:0,w:Math.floor(t),h:Math.floor(e)}}getRectImageBitmap(t,e){const s=Math.floor(t.x*this.opt.displayer.dpr),r=Math.floor(t.y*this.opt.displayer.dpr),a=t.w>0&&Math.floor(t.w*this.opt.displayer.dpr||1)||1,i=t.h>0&&Math.floor(t.h*this.opt.displayer.dpr||1)||1;return createImageBitmap(this.fullLayer.parent.canvas,s,r,a,i,e)}async getSnapshotRender(t){var a,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 b.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 b.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 Q{constructor(t){u(this,"mainThreadMap",new Map);u(this,"snapshotThread");u(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 X(t,e)}createSnapshotThread(t,e){return new Y(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:d,isSubWorker:k}=i;if(c===o.EPostMessageType.Console){console.log(this);continue}if(c===o.EPostMessageType.Init){const m=(e=this.master.control.viewContainerManager.getView(l))==null?void 0:e.displayer,T=m==null?void 0:m.canvasContainerRef.current;if(m&&T&&h&&y){const g=this.createMainThread(l,{displayer:m,container:T,layerOpt:h,master:this.master,canvasOpt:y,post:this.post.bind(this)});this.mainThreadMap.set(l,g),g&&d&&g.setCameraOpt(d)}continue}if((c===o.EPostMessageType.Snapshot||c===o.EPostMessageType.BoundingBox)&&l===((s=this.master.control.viewContainerManager.mainView)==null?void 0:s.id)){const m=(r=this.master.control.viewContainerManager.getView(l))==null?void 0:r.displayer,T=(a=m.snapshotContainerRef)==null?void 0:a.current;if(m&&T&&d){T.style.width=`${d.width}px`,T.style.height=`${d.height}px`;const g={...o.ViewContainerManager.defaultLayerOpt,offscreen:!1,width:d.width,height:d.height},S={...o.ViewContainerManager.defaultScreenCanvasOpt,width:d.width,height:d.height};this.snapshotThread=this.createSnapshotThread(l,{displayer:m,container:T,layerOpt:g,master:this.master,canvasOpt:S,post:this.post.bind(this)}),this.snapshotThread.on(i).then(()=>{this.snapshotThread=void 0,T.innerHTML="",T.style.width="",T.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[m,T]of this.mainThreadMap.entries()){const g=n.get(m);g&&(await T.on(g),p&&this.post({workerTasksqueueCount:p}))}continue}if(l===o.Storage_ViewId_ALL){for(const m of this.mainThreadMap.values())m.on(i),c===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l);continue}const f=this.mainThreadMap.get(l);f&&(f.on(i),c===o.EPostMessageType.Destroy&&this.mainThreadMap.delete(l))}}}exports.MainThreadManagerImpl=Q;
|
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
|
-
mc(l,s)))&&o.push(l);return o;}var Jn=xc,Tc=Object.prototype;function Mc(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Tc;return h===t;}var Er=Mc;function Pc(h,r){return function(t){return h(r(t));};}var Zn=Pc,Oc=Zn,Ec=Oc(Object.keys,Object),Cc=Ec,Ac=Er,Rc=Cc,Ic=Object.prototype,Lc=Ic.hasOwnProperty;function bc(h){if(!Ac(h))return Rc(h);var r=[];for(var t in Object(h))Lc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var wc=bc,Dc=Un,Nc=Xn;function Wc(h){return h!=null&&Nc(h.length)&&!Dc(h);}var Cr=Wc,Bc=Jn,Fc=wc,Uc=Cr;function jc(h){return Uc(h)?Bc(h):Fc(h);}var Ar=jc,$c=ir,zc=Ar;function Gc(h,r){return h&&$c(r,zc(r),h);}var Hc=Gc;function Kc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Yc=Kc,Vc=he,Xc=Er,kc=Yc,Jc=Object.prototype,Zc=Jc.hasOwnProperty;function Qc(h){if(!Vc(h))return kc(h);var r=Xc(h),t=[];for(var e in h)e=="constructor"&&(r||!Zc.call(h,e))||t.push(e);return t;}var qc=Qc,_c=Jn,tf=qc,ef=Cr;function rf(h){return ef(h)?_c(h,!0):tf(h);}var Rr=rf,nf=ir,sf=Rr;function of(h,r){return h&&nf(r,sf(r),h);}var af=of,He={exports:{}};He.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;})(He,He.exports);var lf=He.exports;function cf(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var ff=cf;function hf(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 Qn=hf;function uf(){return[];}var qn=uf,df=Qn,gf=qn,pf=Object.prototype,mf=pf.propertyIsEnumerable,_r=Object.getOwnPropertySymbols,vf=_r?function(h){return h==null?[]:(h=Object(h),df(_r(h),function(r){return mf.call(h,r);}));}:gf,Ir=vf,yf=ir,Sf=Ir;function xf(h,r){return yf(h,Sf(h),r);}var Tf=xf;function Mf(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var Lr=Mf,Pf=Zn,Of=Pf(Object.getPrototypeOf,Object),_n=Of,Ef=Lr,Cf=_n,Af=Ir,Rf=qn,If=Object.getOwnPropertySymbols,Lf=If?function(h){for(var r=[];h;)Ef(r,Af(h)),h=Cf(h);return r;}:Rf,ti=Lf,bf=ir,wf=ti;function Df(h,r){return bf(h,wf(h),r);}var Nf=Df,Wf=Lr,Bf=Fe;function Ff(h,r,t){var e=r(h);return Bf(h)?e:Wf(e,t(h));}var ei=Ff,Uf=ei,jf=Ir,$f=Ar;function zf(h){return Uf(h,$f,jf);}var ri=zf,Gf=ei,Hf=ti,Kf=Rr;function Yf(h){return Gf(h,Kf,Hf);}var Vf=Yf,Xf=ge,kf=ee,Jf=Xf(kf,"DataView"),Zf=Jf,Qf=ge,qf=ee,_f=Qf(qf,"Promise"),th=_f,eh=ge,rh=ee,nh=eh(rh,"Set"),ni=nh,ih=ge,sh=ee,oh=ih(sh,"WeakMap"),ah=oh,dr=Zf,gr=Mr,pr=th,mr=ni,vr=ah,ii=de,Ae=jn,tn="[object Map]",lh="[object Object]",en="[object Promise]",rn="[object Set]",nn="[object WeakMap]",sn="[object DataView]",ch=Ae(dr),fh=Ae(gr),hh=Ae(pr),uh=Ae(mr),dh=Ae(vr),ue=ii;(dr&&ue(new dr(new ArrayBuffer(1)))!=sn||gr&&ue(new gr())!=tn||pr&&ue(pr.resolve())!=en||mr&&ue(new mr())!=rn||vr&&ue(new vr())!=nn)&&(ue=function ue(h){var r=ii(h),t=r==lh?h.constructor:void 0,e=t?Ae(t):"";if(e)switch(e){case ch:return sn;case fh:return tn;case hh:return en;case uh:return rn;case dh:return nn;}return r;});var or=ue,gh=Object.prototype,ph=gh.hasOwnProperty;function mh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&ph.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var vh=mh,yh=ee,Sh=yh.Uint8Array,si=Sh,on=si;function xh(h){var r=new h.constructor(h.byteLength);return new on(r).set(new on(h)),r;}var br=xh,Th=br;function Mh(h,r){var t=r?Th(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Ph=Mh,Oh=/\w*$/;function Eh(h){var r=new h.constructor(h.source,Oh.exec(h));return r.lastIndex=h.lastIndex,r;}var Ch=Eh,an=Be,ln=an?an.prototype:void 0,cn=ln?ln.valueOf:void 0;function Ah(h){return cn?Object(cn.call(h)):{};}var Rh=Ah,Ih=br;function Lh(h,r){var t=r?Ih(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var bh=Lh,wh=br,Dh=Ph,Nh=Ch,Wh=Rh,Bh=bh,Fh="[object Boolean]",Uh="[object Date]",jh="[object Map]",$h="[object Number]",zh="[object RegExp]",Gh="[object Set]",Hh="[object String]",Kh="[object Symbol]",Yh="[object ArrayBuffer]",Vh="[object DataView]",Xh="[object Float32Array]",kh="[object Float64Array]",Jh="[object Int8Array]",Zh="[object Int16Array]",Qh="[object Int32Array]",qh="[object Uint8Array]",_h="[object Uint8ClampedArray]",tu="[object Uint16Array]",eu="[object Uint32Array]";function ru(h,r,t){var e=h.constructor;switch(r){case Yh:return wh(h);case Fh:case Uh:return new e(+h);case Vh:return Dh(h,t);case Xh:case kh:case Jh:case Zh:case Qh:case qh:case _h:case tu:case eu:return Bh(h,t);case jh:return new e();case $h:case Hh:return new e(h);case zh:return Nh(h);case Gh:return new e();case Kh:return Wh(h);}}var nu=ru,iu=he,fn=Object.create,su=/* @__PURE__ */function(){function h(){}return function(r){if(!iu(r))return{};if(fn)return fn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),ou=su,au=ou,lu=_n,cu=Er;function fu(h){return typeof h.constructor=="function"&&!cu(h)?au(lu(h)):{};}var hu=fu,uu=or,du=ne,gu="[object Map]";function pu(h){return du(h)&&uu(h)==gu;}var mu=pu,vu=mu,yu=sr,hn=Or,un=hn&&hn.isMap,Su=un?yu(un):vu,xu=Su,Tu=or,Mu=ne,Pu="[object Set]";function Ou(h){return Mu(h)&&Tu(h)==Pu;}var Eu=Ou,Cu=Eu,Au=sr,dn=Or,gn=dn&&dn.isSet,Ru=gn?Au(gn):Cu,oi=Ru,Iu=/* @__PURE__ */fe(oi),Lu=zn,bu=el,wu=Kn,Du=Hc,Nu=af,Wu=lf,Bu=ff,Fu=Tf,Uu=Nf,ju=ri,$u=Vf,zu=or,Gu=vh,Hu=nu,Ku=hu,Yu=Fe,Vu=Pr,Xu=xu,ku=he,Ju=oi,Zu=Ar,Qu=Rr,qu=1,_u=2,td=4,ai="[object Arguments]",ed="[object Array]",rd="[object Boolean]",nd="[object Date]",id="[object Error]",li="[object Function]",sd="[object GeneratorFunction]",od="[object Map]",ad="[object Number]",ci="[object Object]",ld="[object RegExp]",cd="[object Set]",fd="[object String]",hd="[object Symbol]",ud="[object WeakMap]",dd="[object ArrayBuffer]",gd="[object DataView]",pd="[object Float32Array]",md="[object Float64Array]",vd="[object Int8Array]",yd="[object Int16Array]",Sd="[object Int32Array]",xd="[object Uint8Array]",Td="[object Uint8ClampedArray]",Md="[object Uint16Array]",Pd="[object Uint32Array]",Ft={};Ft[ai]=Ft[ed]=Ft[dd]=Ft[gd]=Ft[rd]=Ft[nd]=Ft[pd]=Ft[md]=Ft[vd]=Ft[yd]=Ft[Sd]=Ft[od]=Ft[ad]=Ft[ci]=Ft[ld]=Ft[cd]=Ft[fd]=Ft[hd]=Ft[xd]=Ft[Td]=Ft[Md]=Ft[Pd]=!0;Ft[id]=Ft[li]=Ft[ud]=!1;function $e(h,r,t,e,n,i){var a,o=r&qu,s=r&_u,l=r&td;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!ku(h))return h;var d=Yu(h);if(d){if(a=Gu(h),!o)return Bu(h,a);}else{var c=zu(h),p=c==li||c==sd;if(Vu(h))return Wu(h,o);if(c==ci||c==ai||p&&!n){if(a=s||p?{}:Ku(h),!o)return s?Uu(h,Nu(a,h)):Fu(h,Du(a,h));}else{if(!Ft[c])return n?h:{};a=Hu(h,c,o);}}i||(i=new Lu());var y=i.get(h);if(y)return y;i.set(h,a),Ju(h)?h.forEach(function(v){a.add($e(v,r,t,v,h,i));}):Xu(h)&&h.forEach(function(v,T){a.set(T,$e(v,r,t,T,h,i));});var P=l?s?$u:ju:s?Qu:Zu,x=d?void 0:P(h);return bu(x||h,function(v,T){x&&(T=v,v=h[T]),wu(a,T,$e(v,r,t,T,h,i));}),a;}var Od=$e,Ed=Od,Cd=1,Ad=4;function Rd(h){return Ed(h,Cd|Ad);}var Id=Rd,Xt=/* @__PURE__ */fe(Id);var fi="1.1.7-beta.5",Ld="@netless/appliance-plugin",bd=typeof OffscreenCanvas=="function"?"worker":"mainThread";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Ld,"@").concat(fi,"_").concat(bd),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(T,f){return f%2?T-n[1]:T-n[0];}),y=this.computEraserPoints(p,l),P=ae(y,!0),x={pos:[0,0],d:P,fillColor:"rgba(0,0,0,1)"},v=new ce(x);a&&(v.addEventListener("beforerender",function(_ref165){var T=_ref165.detail;var f=T.context;o?f.blendFuncSeparate(f.ZERO,f.ZERO,f.ZERO,f.ZERO):f.globalCompositeOperation="destination-out";}),v.addEventListener("afterrender",function(_ref166){var T=_ref166.detail;var f=T.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 x;var v=a&&Xt(a)||n.get(t.name);if(!v)return;_t(o)&&(t.setAttribute("zIndex",o),v.opt.zIndex=o);var T=t.parent;if(T){if(d&&p&&a){var g=[v.op[0],v.op[1]];Ur(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,A=M.thickness;M.thickness=A*Math.max(p[0],p[1]);for(var b=0;b<E.length;b++)jr(E[b],c,p,s);}}else if(s){if(t.setAttribute("translate",s),v.opt.translate=s,a){var _g6=[s[0]*T.worldScaling[0],s[1]*T.worldScaling[1]];x=Sr(v.rect,_g6),v.rect=x;}else{var _g7=Jt.getRectFromLayer(T,t.name);v.rect=_g7||v.rect;}}else if(_t(l))if(t.setAttribute("rotate",l),v.opt.rotate=l,a)x=Ei(v.rect,l),v.rect=x;else{var _g8=Jt.getRectFromLayer(T,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(A,b){return b%2?A+s[1]:A+s[0];});_u11.op[_M6]=_E3;}}}else if(_t(l)){var _g11=v.op;if(K0(_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++)Y0(_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 wr={exports:{}};wr.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
|
+
mc(l,s)))&&o.push(l);return o;}var Jn=xc,Tc=Object.prototype;function Mc(h){var r=h&&h.constructor,t=typeof r=="function"&&r.prototype||Tc;return h===t;}var Er=Mc;function Pc(h,r){return function(t){return h(r(t));};}var Zn=Pc,Oc=Zn,Ec=Oc(Object.keys,Object),Cc=Ec,Ac=Er,Rc=Cc,Ic=Object.prototype,Lc=Ic.hasOwnProperty;function bc(h){if(!Ac(h))return Rc(h);var r=[];for(var t in Object(h))Lc.call(h,t)&&t!="constructor"&&r.push(t);return r;}var wc=bc,Dc=Un,Nc=Xn;function Wc(h){return h!=null&&Nc(h.length)&&!Dc(h);}var Cr=Wc,Bc=Jn,Fc=wc,Uc=Cr;function jc(h){return Uc(h)?Bc(h):Fc(h);}var Ar=jc,$c=ir,zc=Ar;function Gc(h,r){return h&&$c(r,zc(r),h);}var Hc=Gc;function Kc(h){var r=[];if(h!=null)for(var t in Object(h))r.push(t);return r;}var Yc=Kc,Vc=he,Xc=Er,kc=Yc,Jc=Object.prototype,Zc=Jc.hasOwnProperty;function Qc(h){if(!Vc(h))return kc(h);var r=Xc(h),t=[];for(var e in h)e=="constructor"&&(r||!Zc.call(h,e))||t.push(e);return t;}var qc=Qc,_c=Jn,tf=qc,ef=Cr;function rf(h){return ef(h)?_c(h,!0):tf(h);}var Rr=rf,nf=ir,sf=Rr;function of(h,r){return h&&nf(r,sf(r),h);}var af=of,He={exports:{}};He.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;})(He,He.exports);var lf=He.exports;function cf(h,r){var t=-1,e=h.length;for(r||(r=Array(e));++t<e;)r[t]=h[t];return r;}var ff=cf;function hf(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 Qn=hf;function uf(){return[];}var qn=uf,df=Qn,gf=qn,pf=Object.prototype,mf=pf.propertyIsEnumerable,_r=Object.getOwnPropertySymbols,vf=_r?function(h){return h==null?[]:(h=Object(h),df(_r(h),function(r){return mf.call(h,r);}));}:gf,Ir=vf,yf=ir,Sf=Ir;function xf(h,r){return yf(h,Sf(h),r);}var Tf=xf;function Mf(h,r){for(var t=-1,e=r.length,n=h.length;++t<e;)h[n+t]=r[t];return h;}var Lr=Mf,Pf=Zn,Of=Pf(Object.getPrototypeOf,Object),_n=Of,Ef=Lr,Cf=_n,Af=Ir,Rf=qn,If=Object.getOwnPropertySymbols,Lf=If?function(h){for(var r=[];h;)Ef(r,Af(h)),h=Cf(h);return r;}:Rf,ti=Lf,bf=ir,wf=ti;function Df(h,r){return bf(h,wf(h),r);}var Nf=Df,Wf=Lr,Bf=Fe;function Ff(h,r,t){var e=r(h);return Bf(h)?e:Wf(e,t(h));}var ei=Ff,Uf=ei,jf=Ir,$f=Ar;function zf(h){return Uf(h,$f,jf);}var ri=zf,Gf=ei,Hf=ti,Kf=Rr;function Yf(h){return Gf(h,Kf,Hf);}var Vf=Yf,Xf=ge,kf=ee,Jf=Xf(kf,"DataView"),Zf=Jf,Qf=ge,qf=ee,_f=Qf(qf,"Promise"),th=_f,eh=ge,rh=ee,nh=eh(rh,"Set"),ni=nh,ih=ge,sh=ee,oh=ih(sh,"WeakMap"),ah=oh,dr=Zf,gr=Mr,pr=th,mr=ni,vr=ah,ii=de,Ae=jn,tn="[object Map]",lh="[object Object]",en="[object Promise]",rn="[object Set]",nn="[object WeakMap]",sn="[object DataView]",ch=Ae(dr),fh=Ae(gr),hh=Ae(pr),uh=Ae(mr),dh=Ae(vr),ue=ii;(dr&&ue(new dr(new ArrayBuffer(1)))!=sn||gr&&ue(new gr())!=tn||pr&&ue(pr.resolve())!=en||mr&&ue(new mr())!=rn||vr&&ue(new vr())!=nn)&&(ue=function ue(h){var r=ii(h),t=r==lh?h.constructor:void 0,e=t?Ae(t):"";if(e)switch(e){case ch:return sn;case fh:return tn;case hh:return en;case uh:return rn;case dh:return nn;}return r;});var or=ue,gh=Object.prototype,ph=gh.hasOwnProperty;function mh(h){var r=h.length,t=new h.constructor(r);return r&&typeof h[0]=="string"&&ph.call(h,"index")&&(t.index=h.index,t.input=h.input),t;}var vh=mh,yh=ee,Sh=yh.Uint8Array,si=Sh,on=si;function xh(h){var r=new h.constructor(h.byteLength);return new on(r).set(new on(h)),r;}var br=xh,Th=br;function Mh(h,r){var t=r?Th(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.byteLength);}var Ph=Mh,Oh=/\w*$/;function Eh(h){var r=new h.constructor(h.source,Oh.exec(h));return r.lastIndex=h.lastIndex,r;}var Ch=Eh,an=Be,ln=an?an.prototype:void 0,cn=ln?ln.valueOf:void 0;function Ah(h){return cn?Object(cn.call(h)):{};}var Rh=Ah,Ih=br;function Lh(h,r){var t=r?Ih(h.buffer):h.buffer;return new h.constructor(t,h.byteOffset,h.length);}var bh=Lh,wh=br,Dh=Ph,Nh=Ch,Wh=Rh,Bh=bh,Fh="[object Boolean]",Uh="[object Date]",jh="[object Map]",$h="[object Number]",zh="[object RegExp]",Gh="[object Set]",Hh="[object String]",Kh="[object Symbol]",Yh="[object ArrayBuffer]",Vh="[object DataView]",Xh="[object Float32Array]",kh="[object Float64Array]",Jh="[object Int8Array]",Zh="[object Int16Array]",Qh="[object Int32Array]",qh="[object Uint8Array]",_h="[object Uint8ClampedArray]",tu="[object Uint16Array]",eu="[object Uint32Array]";function ru(h,r,t){var e=h.constructor;switch(r){case Yh:return wh(h);case Fh:case Uh:return new e(+h);case Vh:return Dh(h,t);case Xh:case kh:case Jh:case Zh:case Qh:case qh:case _h:case tu:case eu:return Bh(h,t);case jh:return new e();case $h:case Hh:return new e(h);case zh:return Nh(h);case Gh:return new e();case Kh:return Wh(h);}}var nu=ru,iu=he,fn=Object.create,su=/* @__PURE__ */function(){function h(){}return function(r){if(!iu(r))return{};if(fn)return fn(r);h.prototype=r;var t=new h();return h.prototype=void 0,t;};}(),ou=su,au=ou,lu=_n,cu=Er;function fu(h){return typeof h.constructor=="function"&&!cu(h)?au(lu(h)):{};}var hu=fu,uu=or,du=ne,gu="[object Map]";function pu(h){return du(h)&&uu(h)==gu;}var mu=pu,vu=mu,yu=sr,hn=Or,un=hn&&hn.isMap,Su=un?yu(un):vu,xu=Su,Tu=or,Mu=ne,Pu="[object Set]";function Ou(h){return Mu(h)&&Tu(h)==Pu;}var Eu=Ou,Cu=Eu,Au=sr,dn=Or,gn=dn&&dn.isSet,Ru=gn?Au(gn):Cu,oi=Ru,Iu=/* @__PURE__ */fe(oi),Lu=zn,bu=el,wu=Kn,Du=Hc,Nu=af,Wu=lf,Bu=ff,Fu=Tf,Uu=Nf,ju=ri,$u=Vf,zu=or,Gu=vh,Hu=nu,Ku=hu,Yu=Fe,Vu=Pr,Xu=xu,ku=he,Ju=oi,Zu=Ar,Qu=Rr,qu=1,_u=2,td=4,ai="[object Arguments]",ed="[object Array]",rd="[object Boolean]",nd="[object Date]",id="[object Error]",li="[object Function]",sd="[object GeneratorFunction]",od="[object Map]",ad="[object Number]",ci="[object Object]",ld="[object RegExp]",cd="[object Set]",fd="[object String]",hd="[object Symbol]",ud="[object WeakMap]",dd="[object ArrayBuffer]",gd="[object DataView]",pd="[object Float32Array]",md="[object Float64Array]",vd="[object Int8Array]",yd="[object Int16Array]",Sd="[object Int32Array]",xd="[object Uint8Array]",Td="[object Uint8ClampedArray]",Md="[object Uint16Array]",Pd="[object Uint32Array]",Ft={};Ft[ai]=Ft[ed]=Ft[dd]=Ft[gd]=Ft[rd]=Ft[nd]=Ft[pd]=Ft[md]=Ft[vd]=Ft[yd]=Ft[Sd]=Ft[od]=Ft[ad]=Ft[ci]=Ft[ld]=Ft[cd]=Ft[fd]=Ft[hd]=Ft[xd]=Ft[Td]=Ft[Md]=Ft[Pd]=!0;Ft[id]=Ft[li]=Ft[ud]=!1;function $e(h,r,t,e,n,i){var a,o=r&qu,s=r&_u,l=r&td;if(t&&(a=n?t(h,e,n,i):t(h)),a!==void 0)return a;if(!ku(h))return h;var d=Yu(h);if(d){if(a=Gu(h),!o)return Bu(h,a);}else{var c=zu(h),p=c==li||c==sd;if(Vu(h))return Wu(h,o);if(c==ci||c==ai||p&&!n){if(a=s||p?{}:Ku(h),!o)return s?Uu(h,Nu(a,h)):Fu(h,Du(a,h));}else{if(!Ft[c])return n?h:{};a=Hu(h,c,o);}}i||(i=new Lu());var y=i.get(h);if(y)return y;i.set(h,a),Ju(h)?h.forEach(function(v){a.add($e(v,r,t,v,h,i));}):Xu(h)&&h.forEach(function(v,T){a.set(T,$e(v,r,t,T,h,i));});var P=l?s?$u:ju:s?Qu:Zu,x=d?void 0:P(h);return bu(x||h,function(v,T){x&&(T=v,v=h[T]),wu(a,T,$e(v,r,t,T,h,i));}),a;}var Od=$e,Ed=Od,Cd=1,Ad=4;function Rd(h){return Ed(h,Cd|Ad);}var Id=Rd,Xt=/* @__PURE__ */fe(Id);var fi="1.1.7-beta.8",Ld="@netless/appliance-plugin",bd=typeof OffscreenCanvas=="function"?"worker":"mainThread";if((typeof window==="undefined"?"undefined":_typeof(window))<"u"){var h=window.__netlessUA||"";h+=" ".concat(Ld,"@").concat(fi,"_").concat(bd),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(T,f){return f%2?T-n[1]:T-n[0];}),y=this.computEraserPoints(p,l),P=ae(y,!0),x={pos:[0,0],d:P,fillColor:"rgba(0,0,0,1)"},v=new ce(x);a&&(v.addEventListener("beforerender",function(_ref165){var T=_ref165.detail;var f=T.context;o?f.blendFuncSeparate(f.ZERO,f.ZERO,f.ZERO,f.ZERO):f.globalCompositeOperation="destination-out";}),v.addEventListener("afterrender",function(_ref166){var T=_ref166.detail;var f=T.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 x;var v=a&&Xt(a)||n.get(t.name);if(!v)return;_t(o)&&(t.setAttribute("zIndex",o),v.opt.zIndex=o);var T=t.parent;if(T){if(d&&p&&a){var g=[v.op[0],v.op[1]];Ur(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,A=M.thickness;M.thickness=A*Math.max(p[0],p[1]);for(var b=0;b<E.length;b++)jr(E[b],c,p,s);}}else if(s){if(t.setAttribute("translate",s),v.opt.translate=s,a){var _g6=[s[0]*T.worldScaling[0],s[1]*T.worldScaling[1]];x=Sr(v.rect,_g6),v.rect=x;}else{var _g7=Jt.getRectFromLayer(T,t.name);v.rect=_g7||v.rect;}}else if(_t(l))if(t.setAttribute("rotate",l),v.opt.rotate=l,a)x=Ei(v.rect,l),v.rect=x;else{var _g8=Jt.getRectFromLayer(T,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(A,b){return b%2?A+s[1]:A+s[0];});_u11.op[_M6]=_E3;}}}else if(_t(l)){var _g11=v.op;if(K0(_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++)Y0(_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 wr={exports:{}};wr.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
|
|
@@ -404,7 +404,7 @@ decompressFromEncodedURIComponent:function decompressFromEncodedURIComponent(s){
|
|
|
404
404
|
t&4?[h[0]+(r[0]-h[0])*(e[1]-h[1])/(r[1]-h[1]),e[1]]:// bottom
|
|
405
405
|
t&2?[e[2],h[1]+(r[1]-h[1])*(e[2]-h[0])/(r[0]-h[0])]:// right
|
|
406
406
|
t&1?[e[0],h[1]+(r[1]-h[1])*(e[0]-h[0])/(r[0]-h[0])]:// left
|
|
407
|
-
null;}function ve(h,r){var t=0;return h[0]<r[0]?t|=1:h[0]>r[2]&&(t|=2),h[1]<r[1]?t|=4:h[1]>r[3]&&(t|=8),t;}var Dr=/* @__PURE__ */fe(wd);var Se=/*#__PURE__*/function(_vt3){function Se(t,e){var _this67;_classCallCheck(this,Se);_this67=_callSuper(this,Se,[t]);et(_this67,"canRotate",!1);et(_this67,"scaleType",jt.none);et(_this67,"toolsType",ut.Eraser);et(_this67,"serviceWork");et(_this67,"tmpPoints",[]);et(_this67,"workOptions");et(_this67,"worldPosition");et(_this67,"worldScaling");et(_this67,"eraserRect");et(_this67,"eraserPolyline");_this67.serviceWork=e,_this67.workOptions=t.toolsOpt,_this67.worldPosition=_this67.fullLayer.worldPosition,_this67.worldScaling=_this67.fullLayer.worldScaling;return _this67;}_inherits(Se,_vt3);return _createClass(Se,[{key:"combineConsume",value:function combineConsume(){}},{key:"consumeService",value:function consumeService(){}},{key:"setWorkOptions",value:function setWorkOptions(t){_superPropGet(Se,"setWorkOptions",this,3)([t]);}},{key:"createEraserRect",value:function createEraserRect(t){var e=t[0]*this.worldScaling[0]+this.worldPosition[0],n=t[1]*this.worldScaling[1]+this.worldPosition[1],_Se$eraserSizes$this$=Se.eraserSizes[this.workOptions.thickness],i=_Se$eraserSizes$this$.width,a=_Se$eraserSizes$this$.height;this.eraserRect={x:e-i*0.5,y:n-a*0.5,w:i,h:a},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h];}},{key:"computRectCenterPoints",value:function computRectCenterPoints(){var t=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){var _e3=new _(this.tmpPoints[0],this.tmpPoints[1]),n=new _(this.tmpPoints[2],this.tmpPoints[3]),i=_.Sub(n,_e3).uni(),a=_.Dist(_e3,n),_Se$eraserSizes$this$2=Se.eraserSizes[this.workOptions.thickness],o=_Se$eraserSizes$this$2.width,s=_Se$eraserSizes$this$2.height,l=Math.min(o,s),d=Math.round(a/l);if(d>1){var c=[];for(var p=0;p<d;p++){var y=_.Mul(i,p*l);c.push(this.tmpPoints[0]+y.x,this.tmpPoints[1]+y.y);}return c.concat(t);}}return t;}},{key:"isNear",value:function isNear(t,e){var n=new _(t[0],t[1]),i=new _(e[0],e[1]),_Se$eraserSizes$this$3=Se.eraserSizes[this.workOptions.thickness],a=_Se$eraserSizes$this$3.width,o=_Se$eraserSizes$this$3.height;return _.Dist(n,i)<Math.hypot(a,o)*0.5;}},{key:"remove",value:function remove(t){var _this68=this;var e=t.curNodeMap,n=t.removeIds;var i;var _iterator16=_createForOfIteratorHelper(e.values()),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var a=_step16.value;if(a.rect&&this.eraserRect&&this.eraserPolyline&&We(this.eraserRect,a.rect)){var o=a.op,s=[],l=[];for(var c=0;c<o.length;c+=3){var p=new _(o[c]*this.worldScaling[0]+this.worldPosition[0],o[c+1]*this.worldScaling[1]+this.worldPosition[1],o[c+2]);l.push(p),s.push(new xt(p.x,p.y));}var d=s.length&&Bt(s)||a.rect;We(d,this.eraserRect)&&(l.length>1?Dr.polyline(l.map(function(p){return p.XY;}),this.eraserPolyline).length&&n.add(a.name):n.add(a.name),i=Pt(i,d));}}}catch(err){_iterator16.e(err);}finally{_iterator16.f();}return n.forEach(function(a){var s;var o=_this68.fullLayer.getElementsByName(a);_this68.fullLayer.removeChild(o[0]),(s=_this68.vNodes)==null||s["delete"](a);}),i&&(i.x-=vt.SafeBorderPadding,i.y-=vt.SafeBorderPadding,i.w+=vt.SafeBorderPadding*2,i.h+=vt.SafeBorderPadding*2),i;}},{key:"consume",value:function consume(t){var e=t.data.op;if(!e||e.length===0)return _objectSpread({type:at.None},this.baseConsumeResult);var n=this.tmpPoints.length;if(n>1&&this.isNear([e[0],e[1]],[this.tmpPoints[n-2],this.tmpPoints[n-1]]))return _objectSpread({type:at.None},this.baseConsumeResult);n<3?this.tmpPoints.push(e[0],e[1]):this.tmpPoints.splice(2,2,e[0],e[1]);var i=this.computRectCenterPoints();var a;var o=/* @__PURE__ */new Set();if(!this.vNodes)return _objectSpread({type:at.None},this.baseConsumeResult);var s=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.curNodeMap));for(var l=0;l<i.length-1;l+=2){this.createEraserRect(i.slice(l,l+2));var d=this.remove({curNodeMap:s,removeIds:o});a=Pt(a,d);}return a&&o.size?{type:at.RemoveNode,rect:a,removeIds:_toConsumableArray(o)}:_objectSpread({type:at.None},this.baseConsumeResult);}},{key:"consumeAll",value:function consumeAll(t){return this.consume(t);}},{key:"clearTmpPoints",value:function clearTmpPoints(){this.tmpPoints.length=0;}},{key:"getCanEraserNodeMap",value:function getCanEraserNodeMap(t){var e;if(this.serviceWork){var n=new Map(t),i=this.serviceWork.selectorWorkShapes,a=this.serviceWork.workShapes;var _iterator17=_createForOfIteratorHelper(i.values()),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var o=_step17.value;if((e=o.selectIds)!=null&&e.length){var _iterator19=_createForOfIteratorHelper(o.selectIds),_step19;try{for(_iterator19.s();!(_step19=_iterator19.n()).done;){var s=_step19.value;n["delete"](s);}}catch(err){_iterator19.e(err);}finally{_iterator19.f();}}}}catch(err){_iterator17.e(err);}finally{_iterator17.f();}var _iterator18=_createForOfIteratorHelper(a.keys()),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var _o4=_step18.value;n["delete"](_o4);}}catch(err){_iterator18.e(err);}finally{_iterator18.f();}return n;}return t;}}]);}(vt);// 来源于white-sdk
|
|
407
|
+
null;}function ve(h,r){var t=0;return h[0]<r[0]?t|=1:h[0]>r[2]&&(t|=2),h[1]<r[1]?t|=4:h[1]>r[3]&&(t|=8),t;}var Dr=/* @__PURE__ */fe(wd);var Se=/*#__PURE__*/function(_vt3){function Se(t,e){var _this67;_classCallCheck(this,Se);_this67=_callSuper(this,Se,[t]);et(_this67,"canRotate",!1);et(_this67,"scaleType",jt.none);et(_this67,"toolsType",ut.Eraser);et(_this67,"serviceWork");et(_this67,"tmpPoints",[]);et(_this67,"workOptions");et(_this67,"worldPosition");et(_this67,"worldScaling");et(_this67,"eraserRect");et(_this67,"eraserPolyline");_this67.serviceWork=e,_this67.workOptions=t.toolsOpt,_this67.worldPosition=_this67.fullLayer.worldPosition,_this67.worldScaling=_this67.fullLayer.worldScaling;return _this67;}_inherits(Se,_vt3);return _createClass(Se,[{key:"combineConsume",value:function combineConsume(){}},{key:"consumeService",value:function consumeService(){}},{key:"setWorkOptions",value:function setWorkOptions(t){_superPropGet(Se,"setWorkOptions",this,3)([t]);}},{key:"createEraserRect",value:function createEraserRect(t){var e=t[0]*this.worldScaling[0]+this.worldPosition[0],n=t[1]*this.worldScaling[1]+this.worldPosition[1],_Se$eraserSizes$this$=Se.eraserSizes[this.workOptions.thickness],i=_Se$eraserSizes$this$.width,a=_Se$eraserSizes$this$.height;this.eraserRect={x:e-i*0.5,y:n-a*0.5,w:i,h:a},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h];}},{key:"computRectCenterPoints",value:function computRectCenterPoints(){var t=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){var _e3=new _(this.tmpPoints[0],this.tmpPoints[1]),n=new _(this.tmpPoints[2],this.tmpPoints[3]),i=_.Sub(n,_e3).uni(),a=_.Dist(_e3,n),_Se$eraserSizes$this$2=Se.eraserSizes[this.workOptions.thickness],o=_Se$eraserSizes$this$2.width,s=_Se$eraserSizes$this$2.height,l=Math.min(o,s),d=Math.round(a/l);if(d>1){var c=[];for(var p=0;p<d;p++){var y=_.Mul(i,p*l);c.push(this.tmpPoints[0]+y.x,this.tmpPoints[1]+y.y);}return c.concat(t);}}return t;}},{key:"isNear",value:function isNear(t,e){var n=new _(t[0],t[1]),i=new _(e[0],e[1]),_Se$eraserSizes$this$3=Se.eraserSizes[this.workOptions.thickness],a=_Se$eraserSizes$this$3.width,o=_Se$eraserSizes$this$3.height;return _.Dist(n,i)<Math.hypot(a,o)*0.5;}},{key:"remove",value:function remove(t){var _this68=this;var e=t.curNodeMap,n=t.removeIds;var i;var _iterator16=_createForOfIteratorHelper(e.values()),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var a=_step16.value;if(a.rect&&this.eraserRect&&this.eraserPolyline&&We(this.eraserRect,a.rect)){var o=a.op,s=[],l=[];for(var c=0;c<o.length;c+=3){var p=new _(o[c]*this.worldScaling[0]+this.worldPosition[0],o[c+1]*this.worldScaling[1]+this.worldPosition[1],o[c+2]);l.push(p),s.push(new xt(p.x,p.y));}var d=s.length&&Bt(s)||a.rect;We(d,this.eraserRect)&&(l.length>1?Dr.polyline(l.map(function(p){return p.XY;}),this.eraserPolyline).length&&n.add(a.name):n.add(a.name),i=Pt(i,a.rect||d));}}}catch(err){_iterator16.e(err);}finally{_iterator16.f();}return n.forEach(function(a){var s;var o=_this68.fullLayer.getElementsByName(a);_this68.fullLayer.removeChild(o[0]),(s=_this68.vNodes)==null||s["delete"](a);}),i&&(i.x-=vt.SafeBorderPadding,i.y-=vt.SafeBorderPadding,i.w+=vt.SafeBorderPadding*2,i.h+=vt.SafeBorderPadding*2),i;}},{key:"consume",value:function consume(t){var e=t.data.op;if(!e||e.length===0)return _objectSpread({type:at.None},this.baseConsumeResult);var n=this.tmpPoints.length;if(n>1&&this.isNear([e[0],e[1]],[this.tmpPoints[n-2],this.tmpPoints[n-1]]))return _objectSpread({type:at.None},this.baseConsumeResult);n<3?this.tmpPoints.push(e[0],e[1]):this.tmpPoints.splice(2,2,e[0],e[1]);var i=this.computRectCenterPoints();var a;var o=/* @__PURE__ */new Set();if(!this.vNodes)return _objectSpread({type:at.None},this.baseConsumeResult);var s=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.curNodeMap));for(var l=0;l<i.length-1;l+=2){this.createEraserRect(i.slice(l,l+2));var d=this.remove({curNodeMap:s,removeIds:o});a=Pt(a,d);}return a&&o.size?{type:at.RemoveNode,rect:a,removeIds:_toConsumableArray(o)}:_objectSpread({type:at.None},this.baseConsumeResult);}},{key:"consumeAll",value:function consumeAll(t){return this.consume(t);}},{key:"clearTmpPoints",value:function clearTmpPoints(){this.tmpPoints.length=0;}},{key:"getCanEraserNodeMap",value:function getCanEraserNodeMap(t){var e;if(this.serviceWork){var n=new Map(t),i=this.serviceWork.selectorWorkShapes,a=this.serviceWork.workShapes;var _iterator17=_createForOfIteratorHelper(i.values()),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var o=_step17.value;if((e=o.selectIds)!=null&&e.length){var _iterator19=_createForOfIteratorHelper(o.selectIds),_step19;try{for(_iterator19.s();!(_step19=_iterator19.n()).done;){var s=_step19.value;n["delete"](s);}}catch(err){_iterator19.e(err);}finally{_iterator19.f();}}}}catch(err){_iterator17.e(err);}finally{_iterator17.f();}var _iterator18=_createForOfIteratorHelper(a.keys()),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var _o4=_step18.value;n["delete"](_o4);}}catch(err){_iterator18.e(err);}finally{_iterator18.f();}return n;}return t;}}]);}(vt);// 来源于white-sdk
|
|
408
408
|
et(Se,"eraserSizes",Object.freeze([Object.freeze({width:18,height:26}),Object.freeze({width:26,height:34}),Object.freeze({width:34,height:50})]));var se=Se;var Nd="__lodash_hash_undefined__";function Wd(h){return this.__data__.set(h,Nd),this;}var Bd=Wd;function Fd(h){return this.__data__.has(h);}var Ud=Fd,jd=$n,$d=Bd,zd=Ud;function Ye(h){var r=-1,t=h==null?0:h.length;for(this.__data__=new jd();++r<t;)this.add(h[r]);}Ye.prototype.add=Ye.prototype.push=$d;Ye.prototype.has=zd;var Nr=Ye;function Gd(h,r){for(var t=-1,e=h==null?0:h.length;++t<e;)if(r(h[t],t,h))return!0;return!1;}var Hd=Gd;function Kd(h,r){return h.has(r);}var Wr=Kd,Yd=Nr,Vd=Hd,Xd=Wr,kd=1,Jd=2;function Zd(h,r,t,e,n,i){var a=t&kd,o=h.length,s=r.length;if(o!=s&&!(a&&s>o))return!1;var l=i.get(h),d=i.get(r);if(l&&d)return l==r&&d==h;var c=-1,p=!0,y=t&Jd?new Yd():void 0;for(i.set(h,r),i.set(r,h);++c<o;){var P=h[c],x=r[c];if(e)var v=a?e(x,P,c,r,h,i):e(P,x,c,h,r,i);if(v!==void 0){if(v)continue;p=!1;break;}if(y){if(!Vd(r,function(T,f){if(!Xd(y,f)&&(P===T||n(P,T,t,e,i)))return y.push(f);})){p=!1;break;}}else if(!(P===x||n(P,x,t,e,i))){p=!1;break;}}return i["delete"](h),i["delete"](r),p;}var gi=Zd;function Qd(h){var r=-1,t=Array(h.size);return h.forEach(function(e,n){t[++r]=[n,e];}),t;}var qd=Qd;function _d(h){var r=-1,t=Array(h.size);return h.forEach(function(e){t[++r]=e;}),t;}var Br=_d,pn=Be,mn=si,t0=Tr,e0=gi,r0=qd,n0=Br,i0=1,s0=2,o0="[object Boolean]",a0="[object Date]",l0="[object Error]",c0="[object Map]",f0="[object Number]",h0="[object RegExp]",u0="[object Set]",d0="[object String]",g0="[object Symbol]",p0="[object ArrayBuffer]",m0="[object DataView]",vn=pn?pn.prototype:void 0,lr=vn?vn.valueOf:void 0;function v0(h,r,t,e,n,i,a){switch(t){case m0:if(h.byteLength!=r.byteLength||h.byteOffset!=r.byteOffset)return!1;h=h.buffer,r=r.buffer;case p0:return!(h.byteLength!=r.byteLength||!i(new mn(h),new mn(r)));case o0:case a0:case f0:return t0(+h,+r);case l0:return h.name==r.name&&h.message==r.message;case h0:case d0:return h==r+"";case c0:var o=r0;case u0:var s=e&i0;if(o||(o=n0),h.size!=r.size&&!s)return!1;var l=a.get(h);if(l)return l==r;e|=s0,a.set(h,r);var d=e0(o(h),o(r),e,n,i,a);return a["delete"](h),d;case g0:if(lr)return lr.call(h)==lr.call(r);}return!1;}var y0=v0,yn=ri,S0=1,x0=Object.prototype,T0=x0.hasOwnProperty;function M0(h,r,t,e,n,i){var a=t&S0,o=yn(h),s=o.length,l=yn(r),d=l.length;if(s!=d&&!a)return!1;for(var c=s;c--;){var p=o[c];if(!(a?p in r:T0.call(r,p)))return!1;}var y=i.get(h),P=i.get(r);if(y&&P)return y==r&&P==h;var x=!0;i.set(h,r),i.set(r,h);for(var v=a;++c<s;){p=o[c];var T=h[p],f=r[p];if(e)var g=a?e(f,T,p,r,h,i):e(T,f,p,h,r,i);if(!(g===void 0?T===f||n(T,f,t,e,i):g)){x=!1;break;}v||(v=p=="constructor");}if(x&&!v){var u=h.constructor,m=r.constructor;u!=m&&"constructor"in h&&"constructor"in r&&!(typeof u=="function"&&u instanceof u&&typeof m=="function"&&m instanceof m)&&(x=!1);}return i["delete"](h),i["delete"](r),x;}var P0=M0,cr=zn,O0=gi,E0=y0,C0=P0,Sn=or,xn=Fe,Tn=Pr,A0=kn,R0=1,Mn="[object Arguments]",Pn="[object Array]",je="[object Object]",I0=Object.prototype,On=I0.hasOwnProperty;function L0(h,r,t,e,n,i){var a=xn(h),o=xn(r),s=a?Pn:Sn(h),l=o?Pn:Sn(r);s=s==Mn?je:s,l=l==Mn?je:l;var d=s==je,c=l==je,p=s==l;if(p&&Tn(h)){if(!Tn(r))return!1;a=!0,d=!1;}if(p&&!d)return i||(i=new cr()),a||A0(h)?O0(h,r,t,e,n,i):E0(h,r,s,t,e,n,i);if(!(t&R0)){var y=d&&On.call(h,"__wrapped__"),P=c&&On.call(r,"__wrapped__");if(y||P){var x=y?h.value():h,v=P?r.value():r;return i||(i=new cr()),n(x,v,t,e,i);}}return p?(i||(i=new cr()),C0(h,r,t,e,n,i)):!1;}var b0=L0,w0=b0,En=ne;function pi(h,r,t,e,n){return h===r?!0:h==null||r==null||!En(h)&&!En(r)?h!==h&&r!==r:w0(h,r,t,e,pi,n);}var D0=pi,N0=D0;function W0(h,r){return N0(h,r);}var B0=W0,oe=/* @__PURE__ */fe(B0);var _e=/*#__PURE__*/function(_vt4){function _e(t){var _this69;_classCallCheck(this,_e);_this69=_callSuper(this,_e,[t]);et(_this69,"toolsType",ut.Selector);et(_this69,"tmpPoints",[]);et(_this69,"workOptions");et(_this69,"vNodes");et(_this69,"selectIds");et(_this69,"selectorColor");et(_this69,"strokeColor");et(_this69,"fillColor");et(_this69,"oldSelectRect");et(_this69,"canRotate",!1);et(_this69,"canTextEdit",!1);et(_this69,"canLock",!1);et(_this69,"scaleType",jt.all);et(_this69,"toolsTypes");et(_this69,"shapeOpt");et(_this69,"textOpt");et(_this69,"isLocked");et(_this69,"thickness");et(_this69,"strokeType");et(_this69,"useStroke");_this69.workOptions=t.toolsOpt,_this69.vNodes=t.vNodes;return _this69;}_inherits(_e,_vt4);return _createClass(_e,[{key:"computSelector",value:function computSelector(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;var e=Bt(this.tmpPoints);if(e.w===0||e.h===0)return{selectIds:[],intersectRect:void 0,subNodeMap:/* @__PURE__ */new Map()};var _this$vNodes$getRectI=this.vNodes.getRectIntersectRange(e,t),n=_this$vNodes$getRectI.rectRange,i=_this$vNodes$getRectI.nodeRange;return{selectIds:_toConsumableArray(i.keys()),intersectRect:n,subNodeMap:i};}},{key:"updateTempPoints",value:function updateTempPoints(t){var e=this.tmpPoints.length,n=t.length;if(n>1){var i=new xt(t[n-2]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],t[n-1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]);e===2?this.tmpPoints.splice(1,1,i):this.tmpPoints.push(i);}}},{key:"drawSelector",value:function drawSelector(t){var _this70=this;var e=t.drawRect,n=t.subNodeMap,i=t.selectorId,a=t.layer,o=t.isService,s=new kt({pos:[e.x,e.y],anchor:[0,0],size:[e.w,e.h],id:i,name:i,zIndex:9999}),l=[];if(o){var d=new Gr({normalize:!0,pos:[e.w/2,e.h/2],lineWidth:1,strokeColor:this.selectorColor||this.workOptions.strokeColor,width:e.w,height:e.h,name:_e.selectorBorderId});l.push(d);}n.forEach(function(d,c){var p=[d.rect.x+d.rect.w/2-e.x,d.rect.y+d.rect.h/2-e.y],y=new Gr({normalize:!0,pos:p,lineWidth:1,strokeColor:n.size>1?_this70.selectorColor||_this70.workOptions.strokeColor:void 0,width:d.rect.w,height:d.rect.h,id:"selector-".concat(c),name:"selector-".concat(c)});l.push(y);}),l&&s.append.apply(s,l),(a==null?void 0:a.parent).appendChild(s);}},{key:"draw",value:function draw(t,e,n){var i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:!1;var s,l;var a=n.intersectRect,o=n.subNodeMap;(l=(s=e.parent)==null?void 0:s.getElementById(t))==null||l.remove(),a&&this.drawSelector({drawRect:a,subNodeMap:o,selectorId:t,layer:e,isService:i});}},{key:"getSelecteorInfo",value:function getSelecteorInfo(t){this.scaleType=jt.all,this.canRotate=!1,this.textOpt=void 0,this.strokeColor=void 0,this.fillColor=void 0,this.canTextEdit=!1,this.canLock=!1,this.isLocked=!1,this.toolsTypes=void 0,this.shapeOpt=void 0,this.thickness=void 0,this.strokeType=void 0,this.useStroke=!1;var e=/* @__PURE__ */new Set();var n,i=!0;var _iterator20=_createForOfIteratorHelper(t.values()),_step20;try{for(_iterator20.s();!(_step20=_iterator20.n()).done;){var a=_step20.value;var o=a.opt,s=a.canRotate,l=a.scaleType,d=a.toolsType;this.selectorColor=this.workOptions.strokeColor,o.strokeColor&&(this.strokeColor=o.strokeColor),o.fillColor&&(this.fillColor=o.fillColor),o.textOpt&&(this.textOpt=o.textOpt),o.thickness&&(this.thickness=o.thickness),d!==ut.Pencil&&(i=!1),o.strokeType&&(this.strokeType=o.strokeType),d===ut.SpeechBalloon&&(e.add(d),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.placement=o.placement),d===ut.Polygon&&(e.add(d),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=o.vertices),d===ut.Star&&(e.add(d),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=o.vertices,this.shapeOpt.innerRatio=o.innerRatio,this.shapeOpt.innerVerticeStep=o.innerVerticeStep),d===ut.Text&&(this.textOpt=o),t.size===1&&(this.textOpt&&(this.canTextEdit=!0),this.canRotate=s,this.scaleType=l),l===jt.none&&(this.scaleType=l),d===ut.Image&&(n=a);}}catch(err){_iterator20.e(err);}finally{_iterator20.f();}i&&(this.useStroke=!0),e.size&&(this.toolsTypes=_toConsumableArray(e)),n&&(t.size===1?(this.canLock=!0,n.opt.locked&&(this.isLocked=!0,this.scaleType=jt.none,this.canRotate=!1,this.textOpt=void 0,this.fillColor=void 0,this.selectorColor="rgb(177,177,177)",this.strokeColor=void 0,this.canTextEdit=!1,this.thickness=void 0,this.strokeType=void 0,this.useStroke=void 0)):t.size>1&&!n.opt.locked&&(this.canLock=!1,this.canRotate=!1));}},{key:"getChildrenPoints",value:function getChildrenPoints(){var t,e;if(this.scaleType===jt.both&&((t=this.selectIds)==null?void 0:t.length)===1){var n=this.selectIds[0],i=(e=this.vNodes.get(n))==null?void 0:e.op;if(i){var a=[];for(var o=0;o<i.length;o+=3)a.push([i[o],i[o+1]]);return a;}}}},{key:"consume",value:function consume(t){var _t$data2=t.data,e=_t$data2.op,n=_t$data2.workState;var i=this.oldSelectRect;if(n===It.Start&&(i=this.unSelectedAllIds()),!(e!=null&&e.length)||!this.vNodes.curNodeMap.size)return{type:at.None};this.updateTempPoints(e);var a=this.computSelector();if(this.selectIds&&oe(this.selectIds,a.selectIds))return{type:at.None};this.selectIds=a.selectIds;var o=a.intersectRect;this.getSelecteorInfo(a.subNodeMap),this.draw(Nt,this.fullLayer,a),this.oldSelectRect=o;var s=this.getChildrenPoints();return _objectSpread({type:at.Select,dataType:Mt.Local,rect:Pt(o,i),selectIds:a.selectIds,selectRect:o,selectorColor:this.selectorColor,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:s,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType},this.baseConsumeResult);}},{key:"consumeAll",value:function consumeAll(){var e,n;var t=this.oldSelectRect;if(!((e=this.selectIds)!=null&&e.length)&&this.tmpPoints[0]&&this.selectSingleTool(this.tmpPoints[0].XY,Nt,!1),(n=this.selectIds)!=null&&n.length&&(t=this.selectedByIds(this.selectIds)),t){var i=this.getChildrenPoints();return _objectSpread({type:at.Select,dataType:Mt.Local,rect:this.oldSelectRect,selectIds:this.selectIds,selectorColor:this.selectorColor,selectRect:this.oldSelectRect,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:i,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType},this.baseConsumeResult);}return{type:at.None};}},{key:"consumeService",value:function consumeService(){}},{key:"clearTmpPoints",value:function clearTmpPoints(){this.tmpPoints.length=0;}},{key:"clearSelectData",value:function clearSelectData(){this.selectIds=void 0,this.oldSelectRect=void 0;}},{key:"selectSingleTool",value:function selectSingleTool(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Nt;var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:!1;if(t.length===2){var i=t[0],a=t[1];var o;var _this$vNodes$getRectI2=this.vNodes.getRectIntersectRange({x:i,y:a,w:0,h:0},!1),s=_this$vNodes$getRectI2.nodeRange,l=_toConsumableArray(s.values()).sort(function(d,c){return(c.opt.zIndex||0)-(d.opt.zIndex||0);});var _iterator21=_createForOfIteratorHelper(l),_step21;try{for(_iterator21.s();!(_step21=_iterator21.n()).done;){var _d9=_step21.value;var _c5=this.fullLayer.getElementsByName(_d9.name);if(Oi(_c5).find(function(y){return y.isPointCollision(i,a);})){o=_d9;break;}}}catch(err){_iterator21.e(err);}finally{_iterator21.f();}if(o){var d=o.name;if(!oe(this.oldSelectRect,o.rect)){var c=/* @__PURE__ */new Map([[d,o]]);this.getSelecteorInfo(c),this.draw(e,this.fullLayer,{intersectRect:o.rect,subNodeMap:c,selectIds:this.selectIds||[]},n);}this.selectIds=[d],this.oldSelectRect=o.rect;}}}},{key:"unSelectedAllIds",value:function unSelectedAllIds(){var t;var _iterator22=_createForOfIteratorHelper(this.vNodes.curNodeMap.entries()),_step22;try{for(_iterator22.s();!(_step22=_iterator22.n()).done;){var _step22$value=_slicedToArray(_step22.value,2),_e4=_step22$value[0],n=_step22$value[1];n.isSelected&&(t=Pt(t,n.rect),this.vNodes.unSelected(_e4));}}catch(err){_iterator22.e(err);}finally{_iterator22.f();}return t;}},{key:"unSelectedByIds",value:function unSelectedByIds(t){var e;var _iterator23=_createForOfIteratorHelper(t),_step23;try{for(_iterator23.s();!(_step23=_iterator23.n()).done;){var n=_step23.value;var i=this.vNodes.get(n);i&&i.isSelected&&(e=Pt(e,i.rect),this.vNodes.unSelected(n));}}catch(err){_iterator23.e(err);}finally{_iterator23.f();}return e;}},{key:"selectedByIds",value:function selectedByIds(t){var e;var _iterator24=_createForOfIteratorHelper(t),_step24;try{for(_iterator24.s();!(_step24=_iterator24.n()).done;){var n=_step24.value;var i=this.vNodes.get(n);i&&(e=Pt(e,i.rect),this.vNodes.selected(n));}}catch(err){_iterator24.e(err);}finally{_iterator24.f();}return e;}},{key:"getSelectorRect",value:function getSelectorRect(t,e){var o;var n;var i=(o=t.parent)==null?void 0:o.getElementById(e),a=i==null?void 0:i.getBoundingClientRect();return a&&(n=Pt(n,{x:Math.floor(a.x),y:Math.floor(a.y),w:Math.floor(a.width+1),h:Math.floor(a.height+1)})),n;}},{key:"isCanFillColor",value:function isCanFillColor(t){return t===ut.Ellipse||t===ut.Triangle||t===ut.Rectangle||t===ut.Polygon||t===ut.Star||t===ut.SpeechBalloon;}},{key:"updateSelector",value:function(){var _updateSelector=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee22(t){var m,e,n,i,a,o,s,l,d,c,p,y,P,x,v,T,f,_iterator25,_step25,M,E,A,b,O,L,w,I,R,W,z,K,g,_M9,_E4,_A5,u;return _regeneratorRuntime().wrap(function _callee22$(_context24){while(1)switch(_context24.prev=_context24.next){case 0:e=t.updateSelectorOpt,n=t.selectIds,i=t.vNodes,a=t.willSerializeData,o=t.worker,s=t.offset,l=this.fullLayer;if(l){_context24.next=3;break;}return _context24.abrupt("return");case 3:c=/* @__PURE__ */new Map(),p=e.originPoint,y=e.workState,P=e.angle,x=e.translate,v=e.dir,T=e.scale;s&&(x?e.translate=[x[0]+s[0],x[1]+s[1]]:e.translate=s);if(!(p||x||_t(P))){_context24.next=9;break;}if(!(y===It.Start&&n)){_context24.next=8;break;}return _context24.abrupt("return",(i.setTargetAssignKeys(n),{type:at.Select,dataType:Mt.Local,selectRect:this.oldSelectRect,rect:this.oldSelectRect}));case 8:f=i.getLastTarget();case 9:if(!n){_context24.next=60;break;}_iterator25=_createForOfIteratorHelper(n);_context24.prev=11;_iterator25.s();case 13:if((_step25=_iterator25.n()).done){_context24.next=52;break;}M=_step25.value;E=i.get(M);if(!E){_context24.next=50;break;}A=E.toolsType,b=E.opt,O=(l==null?void 0:l.getElementsByName(M))[0];if(!O){_context24.next=50;break;}L=!1,w=!1;I=_objectSpread({},e);R=void 0;if(!A){_context24.next=50;break;}I.thickness&&E.opt.thickness&&(L=E.opt.thickness!==I.thickness),I.strokeType&&(m=E.opt)!=null&&m.strokeType&&(w=E.opt.strokeType!==I.strokeType),R=f==null?void 0:f.get(M);W=Pi(A);if(!(W==null||W.updateNodeOpt({node:O,opt:I,vNodes:i,willSerializeData:a,targetNode:R}),E&&o&&(a&&(I.angle||I.translate)||I.originPoint&&I.scenePoint&&I.scale||I.pointMap&&I.pointMap.has(M)||A===ut.Text&&(I.fontSize||I.translate||I.textInfos&&I.textInfos.get(M))||A===ut.Image&&(I.angle||I.translate||I.scale||I.strokeColor&&b.type===xr.Iconify)||A===I.toolsType&&I.willRefresh||L||w))){_context24.next=49;break;}z=o.createWorkShapeNode({workId:M,toolsType:A,toolsOpt:E.opt});z==null||z.setWorkId(M);K=void 0;if(!(A===ut.Image)){_context24.next=35;break;}_context24.next=32;return z.consumeServiceAsync({isFullWork:!0,replaceId:M,worker:o});case 32:K=_context24.sent;_context24.next=48;break;case 35:if(!(A===ut.Text)){_context24.next=41;break;}_context24.next=38;return z.consumeServiceAsync({isFullWork:!0,replaceId:M});case 38:K=_context24.sent;_context24.next=48;break;case 41:_context24.prev=41;K=z==null?void 0:z.consumeService({op:E.op,isFullWork:!0,replaceId:M});_context24.next=48;break;case 45:_context24.prev=45;_context24.t0=_context24["catch"](41);return _context24.abrupt("continue",50);case 48:K&&(E.rect=K);case 49:E&&(c.set(M,E),d=Pt(d,E.rect));case 50:_context24.next=13;break;case 52:_context24.next=57;break;case 54:_context24.prev=54;_context24.t1=_context24["catch"](11);_iterator25.e(_context24.t1);case 57:_context24.prev=57;_iterator25.f();return _context24.finish(57);case 60:f&&y===It.Done&&(i.deleteLastTarget(),f=void 0);g=d;if(!(p&&x&&T&&v&&g&&!s)){_context24.next=80;break;}_M9=[[g.x,g.y],[g.x+g.w,g.y],[g.x+g.w,g.y+g.h],[g.x,g.y+g.h]];_context24.t2=v;_context24.next=_context24.t2==="top"?67:_context24.t2==="topLeft"?67:_context24.t2==="left"?67:_context24.t2==="topRight"?69:_context24.t2==="right"?71:_context24.t2==="bottomRight"?71:_context24.t2==="bottom"?71:_context24.t2==="bottomLeft"?73:75;break;case 67:x[0]>0&&x[1]>0?_E4=_M9[0]:x[0]>0?_E4=_M9[3]:x[1]>0?_E4=_M9[1]:_E4=_M9[2];return _context24.abrupt("break",75);case 69:x[0]<0&&x[1]>0?_E4=_M9[1]:x[0]<0?_E4=_M9[2]:x[1]>0?_E4=_M9[0]:_E4=_M9[3];return _context24.abrupt("break",75);case 71:x[0]<0&&x[1]<0?_E4=_M9[2]:x[0]<0?_E4=_M9[1]:x[1]<0?_E4=_M9[3]:_E4=_M9[0];return _context24.abrupt("break",75);case 73:x[0]>0&&x[1]<0?_E4=_M9[3]:x[0]>0?_E4=_M9[0]:x[1]<0?_E4=_M9[2]:_E4=_M9[1];return _context24.abrupt("break",75);case 75:_A5=_E4&&[p[0]-_E4[0],p[1]-_E4[1]]||[0,0];if(oe(_A5,[0,0])){_context24.next=80;break;}_context24.next=79;return this.updateSelector(_objectSpread(_objectSpread({},t),{},{updateSelectorOpt:{},offset:_A5}));case 79:return _context24.abrupt("return",_context24.sent);case 80:this.getSelecteorInfo(c),this.draw(Nt,l,{selectIds:n||[],subNodeMap:c,intersectRect:g});u=Pt(this.oldSelectRect,g);return _context24.abrupt("return",(this.oldSelectRect=g,{type:at.Select,dataType:Mt.Local,selectRect:g,renderRect:d,rect:Pt(u,g),selectIds:n}));case 83:case"end":return _context24.stop();}},_callee22,this,[[11,54,57,60],[41,45]]);}));function updateSelector(_x26){return _updateSelector.apply(this,arguments);}return updateSelector;}()},{key:"blurSelector",value:function blurSelector(){var t=this.unSelectedAllIds();return{type:at.Select,dataType:Mt.Local,rect:t,selectIds:[],willSyncService:!0};}},{key:"getRightServiceId",value:function getRightServiceId(t){return t.replace(De,"-");}},{key:"selectServiceNode",value:function selectServiceNode(t,e,n){var _this71=this;var i=e.selectIds,a=this.getRightServiceId(t),o=this.getSelectorRect(this.fullLayer,a);var s;var l=/* @__PURE__ */new Map();return i==null||i.forEach(function(d){var c=_this71.vNodes.get(d);c&&(s=Pt(s,c.rect),l.set(d,c));}),this.getSelecteorInfo(l),this.draw(a,this.fullLayer,{intersectRect:s,selectIds:i||[],subNodeMap:l},n),Pt(s,o);}},{key:"reRenderSelector",value:function reRenderSelector(){var _this72=this;var n;var t;var e=/* @__PURE__ */new Map();return(n=this.selectIds)==null||n.forEach(function(i){var a=_this72.vNodes.get(i);a&&(t=Pt(t,a.rect),e.set(i,a));},this),this.getSelecteorInfo(e),this.draw(Nt,this.fullLayer,{intersectRect:t,subNodeMap:e,selectIds:this.selectIds||[]}),this.oldSelectRect=t,t;}},{key:"updateSelectIds",value:function updateSelectIds(t){var a;var e;var n=(a=this.selectIds)==null?void 0:a.filter(function(o){return!t.includes(o);});if(n!=null&&n.length&&(e=this.unSelectedByIds(n)),t.length){var o=this.selectedByIds(t);e=Pt(e,o);}this.selectIds=t;var i=this.reRenderSelector();return{bgRect:e,selectRect:i};}},{key:"cursorHover",value:function cursorHover(t){var a,o;var e=this.oldSelectRect;this.selectIds=[];var n=(a=this.workId)==null?void 0:a.toString(),i=[t[0]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],t[1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]];if(this.selectSingleTool(i,n,!0),this.oldSelectRect&&!oe(e,this.oldSelectRect))return{type:at.CursorHover,dataType:Mt.Local,rect:Pt(e,this.oldSelectRect),selectorColor:this.selectorColor,willSyncService:!1};if((o=this.selectIds)!=null&&o.length||(this.oldSelectRect=void 0),e&&!this.oldSelectRect)return this.cursorBlur(),{type:at.CursorHover,dataType:Mt.Local,rect:e,selectorColor:this.selectorColor,willSyncService:!1};}},{key:"cursorBlur",value:function cursorBlur(){var e,n;this.selectIds=[];var t=(e=this.workId)==null?void 0:e.toString();((n=this.fullLayer)==null?void 0:n.parent).children.forEach(function(i){i.name===t&&i.remove();});}}]);}(vt);et(_e,"selectorBorderId","selector-border");var Ve=_e;var mi=/*#__PURE__*/function(_vt5){function mi(t){var _this73;_classCallCheck(this,mi);_this73=_callSuper(this,mi,[t]);et(_this73,"canRotate",!1);et(_this73,"scaleType",jt.both);et(_this73,"toolsType",ut.Arrow);et(_this73,"tmpPoints",[]);et(_this73,"workOptions");et(_this73,"oldRect");et(_this73,"arrowTipWidth");et(_this73,"syncTimestamp");_this73.workOptions=t.toolsOpt,_this73.arrowTipWidth=_this73.workOptions.thickness*4,_this73.syncTimestamp=0,_this73.syncUnitTime=50;return _this73;}_inherits(mi,_vt5);return _createClass(mi,[{key:"consume",value:function consume(t){var e=t.data,n=t.isFullWork,i=t.isSubWorker,a=t.isMainThread,o=this.workId,s=e.op,l=s==null?void 0:s.length;if(!l||l<2)return{type:at.None};var d;if(this.tmpPoints.length===0?(this.tmpPoints=[new xt(s[0],s[1])],d=!1):d=this.updateTempPoints(s),!d)return{type:at.None};var c;if(i||a){var y=n?this.fullLayer:this.drawLayer||this.fullLayer;c=this.draw({workId:o,layer:y});}if(!i){var _y8=Date.now();return _y8-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=_y8,_objectSpread(_objectSpread({},this.baseConsumeResult),{},{type:at.DrawWork,dataType:Mt.Local,op:this.tmpPoints.map(function(P){return[].concat(_toConsumableArray(P.XY),[0]);}).flat(1),isSync:!0,index:0})):{type:at.None};}var p=Pt(c,this.oldRect);return this.oldRect=c,_objectSpread(_objectSpread({rect:p},this.baseConsumeResult),{},{type:at.DrawWork,dataType:Mt.Local});}},{key:"consumeAll",value:function consumeAll(){var o;var t=this.workId;if(this.tmpPoints.length<2)return{type:at.RemoveNode,removeIds:[t]};var e=this.fullLayer,n=this.draw({workId:t,layer:e});this.oldRect=n;var i=this.tmpPoints.map(function(s){return[].concat(_toConsumableArray(s.XY),[0]);}).flat(1),a=Zt(i);return(o=this.vNodes)==null||o.setInfo(t,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:vt.getCenterPos(n,e)}),_objectSpread(_objectSpread({rect:n},this.baseConsumeResult),{},{type:at.FullWork,dataType:Mt.Local,ops:a,isSync:!0});}},{key:"draw",value:function draw(t){var e=t.workId,n=t.layer,_this$workOptions6=this.workOptions,i=_this$workOptions6.strokeColor,a=_this$workOptions6.thickness,o=_this$workOptions6.zIndex,s=_this$workOptions6.scale,l=_this$workOptions6.rotate,d=_this$workOptions6.translate,c=_this$workOptions6.strokeType,p=_this$workOptions6.eraserlines,y=n.worldPosition,P=n.worldScaling,_this$computDrawPoint2=this.computDrawPoints(a),x=_this$computDrawPoint2.points,v=_this$computDrawPoint2.pos,T=_this$computDrawPoint2.rect,f=_this$computDrawPoint2.isTriangle,g=_this$computDrawPoint2.trianglePoints,u=_this$computDrawPoint2.trianglePos,m=[T.x+T.w/2,T.y+T.h/2],M={pos:m,name:e,id:e,zIndex:o,anchor:[0.5,0.5],size:[T.w,T.h]};s&&(M.scale=s),l&&(M.rotate=l),d&&(M.translate=d);var E=new kt(M),A={points:g,pos:[u[0]-m[0],u[1]-m[1]],fillColor:i,strokeColor:i,lineWidth:0,normalize:!1},b=new le(A);if(E.append(b),!f&&x&&v){var O={points:x,pos:[v[0]-m[0],v[1]-m[1]],fillColor:i,strokeColor:i,lineDash:c===Lt.Dotted&&!f?[1,a*2]:c===Lt.LongDotted&&!f?[a,a*2]:void 0,lineCap:c===Lt.Normal?void 0:"round",lineWidth:a,normalize:!1},L=new le(O);E.append(L);}if(p&&this.drawEraserlines({group:E,eraserlines:p,pos:m,layer:n}),this.replace(n,e,E),s||l||d){var _O9=E.getBoundingClientRect();return{x:Math.floor(_O9.x-vt.SafeBorderPadding),y:Math.floor(_O9.y-vt.SafeBorderPadding),w:Math.floor(_O9.width+vt.SafeBorderPadding*2),h:Math.floor(_O9.height+vt.SafeBorderPadding*2)};}return{x:Math.floor(T.x*P[0]+y[0]-vt.SafeBorderPadding),y:Math.floor(T.y*P[1]+y[1]-vt.SafeBorderPadding),w:Math.floor(T.w*P[0]+2*vt.SafeBorderPadding),h:Math.floor(T.h*P[1]+2*vt.SafeBorderPadding)};}},{key:"computDrawPoints",value:function computDrawPoints(t){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.arrowTipWidth?this.computFullArrowPoints(t):this.computTrianglePoints();}},{key:"computFullArrowPoints",value:function computFullArrowPoints(t){var _this74=this;var e=_.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),n=_.Per(e).mul(t/2),i=xt.Sub(this.tmpPoints[0],n),a=xt.Add(this.tmpPoints[0],n),o=_.Mul(e,this.arrowTipWidth),s=_.Sub(this.tmpPoints[1],o),l=xt.Sub(s,n),d=xt.Add(s,n),c=_.Per(e).mul(t*1.5),p=xt.Sub(s,c),y=xt.Add(s,c),P=[this.tmpPoints[0],s],x=[p,this.tmpPoints[1],y],v=[i,a].concat(x,[l,d]);return{trianglePoints:x.map(function(T){return xt.Sub(T,_this74.tmpPoints[1]).XY;}).flat(1),trianglePos:this.tmpPoints[1].XY,points:P.map(function(T){return xt.Sub(T,_this74.tmpPoints[0]).XY;}).flat(1),rect:Bt(v),isTriangle:!1,pos:this.tmpPoints[0].XY};}},{key:"computTrianglePoints",value:function computTrianglePoints(){var _this75=this;var t=_.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),e=this.tmpPoints[1].distance(this.tmpPoints[0]),n=_.Per(t).mul(Math.floor(e*3/8)),i=xt.Sub(this.tmpPoints[0],n),a=xt.Add(this.tmpPoints[0],n),o=[i,this.tmpPoints[1],a];return{trianglePoints:o.map(function(s){return xt.Sub(s,_this75.tmpPoints[1]).XY;}).flat(1),trianglePos:this.tmpPoints[1].XY,rect:Bt(o),isTriangle:!0};}},{key:"updateTempPoints",value:function updateTempPoints(t){var e=t.slice(-2),n=new xt(e[0],e[1]),i=this.tmpPoints[0],a=this.workOptions.thickness;if(i.isNear(n,a))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n;}else this.tmpPoints.push(n);return!0;}},{key:"consumeService",value:function consumeService(t){var s,l;var e=t.op,n=t.isFullWork,i=(s=this.workId)==null?void 0:s.toString();if(!i)return;this.tmpPoints.length=0;for(var d=0;d<e.length;d+=3)this.tmpPoints.push(new xt(e[d],e[d+1],e[d+2]));var a=n?this.fullLayer:this.drawLayer||this.fullLayer,o=this.draw({workId:i,layer:a});return this.oldRect=o,(l=this.vNodes)==null||l.setInfo(i,{rect:o,op:e,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:vt.getCenterPos(o,a)}),o;}},{key:"clearTmpPoints",value:function clearTmpPoints(){this.tmpPoints.length=0;}}],[{key:"updateNodeOpt",value:function updateNodeOpt(t){var l,d;var e=t.node,n=t.opt,i=t.vNodes,a=n.strokeColor,o=n.strokeType,s=i.get(e.name);return a&&(e.tagName==="GROUP"?e.children.forEach(function(c){c.setAttribute("strokeColor",a),c.getAttribute("fillColor")&&c.setAttribute("fillColor",a);}):(e.setAttribute("strokeColor",a),e.setAttribute("fillColor",a)),(l=s==null?void 0:s.opt)!=null&&l.strokeColor&&(s.opt.strokeColor=a)),o&&s!=null&&s.opt&&(d=s.opt)!=null&&d.strokeType&&(s.opt.strokeType=o),s&&i.setInfo(e.name,s),vt.updateNodeOpt(t);}}]);}(vt);var vi=/*#__PURE__*/function(_vt6){function vi(t){var _this76;_classCallCheck(this,vi);_this76=_callSuper(this,vi,[t]);et(_this76,"canRotate",!1);et(_this76,"scaleType",jt.all);et(_this76,"toolsType",ut.Ellipse);et(_this76,"tmpPoints",[]);et(_this76,"workOptions");et(_this76,"oldRect");et(_this76,"syncTimestamp");_this76.workOptions=t.toolsOpt,_this76.syncTimestamp=0,_this76.syncUnitTime=50;return _this76;}_inherits(vi,_vt6);return _createClass(vi,[{key:"consume",value:function consume(t){var e=t.data,n=t.isFullWork,i=t.isSubWorker,a=t.isMainThread,o=this.workId,s=e.op,l=s==null?void 0:s.length;if(!l||l<2)return{type:at.None};var d;if(this.tmpPoints.length===0?(this.tmpPoints=[new xt(s[0],s[1])],d=!1):d=this.updateTempPoints(s),!d)return{type:at.None};var c;if(i||a){var y=n?this.fullLayer:this.drawLayer||this.fullLayer;c=this.draw({workId:o,layer:y,isDrawing:!0});}if(!i){var _y9=Date.now();return _y9-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=_y9,_objectSpread(_objectSpread({type:at.DrawWork,dataType:Mt.Local},this.baseConsumeResult),{},{op:this.tmpPoints.map(function(P){return[].concat(_toConsumableArray(P.XY),[0]);}).flat(1),isSync:!0,index:0})):{type:at.None};}var p=Pt(c,this.oldRect);return this.oldRect=c,_objectSpread({rect:p,type:at.DrawWork,dataType:Mt.Local},this.baseConsumeResult);}},{key:"consumeAll",value:function consumeAll(){var o;var t=this.workId;if(this.tmpPoints.length<2)return{type:at.RemoveNode,removeIds:[t]};var e=this.fullLayer,n=this.draw({workId:t,layer:e,isDrawing:!1});this.oldRect=n;var i=this.tmpPoints.map(function(s){return[].concat(_toConsumableArray(s.XY),[0]);}).flat(1),a=Zt(i);return(o=this.vNodes)==null||o.setInfo(t,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:n&&vt.getCenterPos(n,e)}),_objectSpread(_objectSpread({rect:n,type:at.FullWork,dataType:Mt.Local},this.baseConsumeResult),{},{ops:a,isSync:!0});}},{key:"draw",value:function draw(t){var e=t.workId,n=t.layer,i=t.isDrawing,_this$workOptions7=this.workOptions,a=_this$workOptions7.strokeColor,o=_this$workOptions7.fillColor,s=_this$workOptions7.thickness,l=_this$workOptions7.zIndex,d=_this$workOptions7.scale,c=_this$workOptions7.rotate,p=_this$workOptions7.translate,y=_this$workOptions7.strokeType,P=_this$workOptions7.eraserlines,x=n.worldScaling,_this$computDrawPoint3=this.computDrawPoints(s),v=_this$computDrawPoint3.radius,T=_this$computDrawPoint3.rect,f=_this$computDrawPoint3.pos,g={pos:f,name:e,id:e,radius:v,lineWidth:s,fillColor:o!=="transparent"&&o||void 0,strokeColor:a,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:y===Lt.Dotted?[1,s*2]:y===Lt.LongDotted?[s,s*2]:void 0},u={name:e,id:e,zIndex:l,pos:f,anchor:[0.5,0.5],size:[T.w,T.h]};d&&(u.scale=d),c&&(u.rotate=c),p&&(u.translate=p);var m=new kt(u);if(i){var A=new ce({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/x[0],1/x[1]]});m.append(A);}var M=new Qi(_objectSpread(_objectSpread({},g),{},{pos:[0,0]}));m.append(M),P&&this.drawEraserlines({group:m,eraserlines:P,pos:f,layer:n}),this.replace(n,e,m);var E=m.getBoundingClientRect();return{x:Math.floor(E.x-vt.SafeBorderPadding),y:Math.floor(E.y-vt.SafeBorderPadding),w:Math.floor(E.width+vt.SafeBorderPadding*2),h:Math.floor(E.height+vt.SafeBorderPadding*2)};}},{key:"computDrawPoints",value:function computDrawPoints(t){var e=Bt(this.tmpPoints),n=Bt(this.tmpPoints,t),i=[Math.floor(e.x+e.w/2),Math.floor(e.y+e.h/2)];return{rect:n,pos:i,radius:[Math.floor(e.w/2),Math.floor(e.h/2)]};}},{key:"updateTempPoints",value:function updateTempPoints(t){var e=t.slice(-2),n=new xt(e[0],e[1]),i=this.tmpPoints[0],a=this.workOptions.thickness;if(i.isNear(n,a))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n;}else this.tmpPoints.push(n);return!0;}},{key:"consumeService",value:function consumeService(t){var s,l;var e=t.op,n=t.isFullWork,i=(s=this.workId)==null?void 0:s.toString();if(!i)return;this.tmpPoints.length=0;for(var d=0;d<e.length;d+=3)this.tmpPoints.push(new xt(e[d],e[d+1],e[d+2]));var a=n?this.fullLayer:this.drawLayer||this.fullLayer,o=this.draw({workId:i,layer:a,isDrawing:!1});return this.oldRect=o,(l=this.vNodes)==null||l.setInfo(i,{rect:o,op:e,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:vt.getCenterPos(o,a)}),o;}},{key:"clearTmpPoints",value:function clearTmpPoints(){this.tmpPoints.length=0;}}],[{key:"updateNodeOpt",value:function updateNodeOpt(t){var c,p,y;var e=t.node,n=t.opt,i=t.vNodes,a=n.strokeColor,o=n.fillColor,s=n.strokeType,l=i.get(e.name);var d=e;return e.tagName==="GROUP"&&(d=e.children[0]),a&&(d.setAttribute("strokeColor",a),(c=l==null?void 0:l.opt)!=null&&c.strokeColor&&(l.opt.strokeColor=a)),o&&(o==="transparent"?d.setAttribute("fillColor","rgba(0,0,0,0)"):d.setAttribute("fillColor",o),(p=l==null?void 0:l.opt)!=null&&p.fillColor&&(l.opt.fillColor=o)),s&&l!=null&&l.opt&&(y=l.opt)!=null&&y.strokeType&&(l.opt.strokeType=s),l&&i.setInfo(e.name,l),vt.updateNodeOpt(t);}}]);}(vt);var yi=/*#__PURE__*/function(_vt7){function yi(t){var _this77;_classCallCheck(this,yi);_this77=_callSuper(this,yi,[t]);et(_this77,"canRotate",!0);et(_this77,"scaleType",jt.all);et(_this77,"toolsType",ut.Rectangle);et(_this77,"tmpPoints",[]);et(_this77,"workOptions");et(_this77,"oldRect");et(_this77,"syncTimestamp");_this77.workOptions=t.toolsOpt,_this77.syncTimestamp=0,_this77.syncUnitTime=50;return _this77;}_inherits(yi,_vt7);return _createClass(yi,[{key:"transformData",value:function transformData(){var t=Bt(this.tmpPoints);return[[t.x,t.y,0],[t.x+t.w,t.y,0],[t.x+t.w,t.y+t.h,0],[t.x,t.y+t.h,0]];}},{key:"computDrawPoints",value:function computDrawPoints(t){var e=this.workOptions.thickness,n=[];var _iterator26=_createForOfIteratorHelper(t),_step26;try{for(_iterator26.s();!(_step26=_iterator26.n()).done;){var o=_step26.value;n.push(_construct(_,_toConsumableArray(o)));}}catch(err){_iterator26.e(err);}finally{_iterator26.f();}var i=Bt(n,e),a=[i.x+i.w/2,i.y+i.h/2];return{rect:i,pos:a,points:n.map(function(o){return o.XY;}).flat(1)};}},{key:"consume",value:function consume(t){var e=t.data,n=t.isFullWork,i=t.isSubWorker,a=t.isMainThread,o=this.workId,s=e.op,l=s==null?void 0:s.length;if(!l||l<2)return{type:at.None};var d;if(this.tmpPoints.length===0?(this.tmpPoints=[new xt(s[0],s[1])],d=!1):d=this.updateTempPoints(s),!d)return{type:at.None};var c=this.transformData();var p;if(i||a){var P=n?this.fullLayer:this.drawLayer||this.fullLayer;p=this.draw({ps:c,workId:o,layer:P,isDrawing:!0});}if(!i){var _P2=Date.now();return _P2-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=_P2,_objectSpread({type:at.DrawWork,dataType:Mt.Local,op:c.flat(1),isSync:!0,index:0},this.baseConsumeResult)):{type:at.None};}var y=Pt(p,this.oldRect);return this.oldRect=p,_objectSpread({rect:y,type:at.DrawWork,dataType:Mt.Local},this.baseConsumeResult);}},{key:"consumeAll",value:function consumeAll(){var s;var t=this.workId;if(this.tmpPoints.length<2)return{type:at.RemoveNode,removeIds:[t]};var e=this.transformData(),n=this.fullLayer,i=this.draw({ps:e,workId:t,layer:n,isDrawing:!1});this.oldRect=i;var a=e.flat(1),o=Zt(a);return(s=this.vNodes)==null||s.setInfo(t,{rect:i,op:a,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&vt.getCenterPos(i,n)}),_objectSpread({rect:i,type:at.FullWork,dataType:Mt.Local,ops:o,isSync:!0},this.baseConsumeResult);}},{key:"draw",value:function draw(t){var e=t.workId,n=t.layer,i=t.isDrawing,a=t.ps,o=t.replaceId,_this$workOptions8=this.workOptions,s=_this$workOptions8.strokeColor,l=_this$workOptions8.fillColor,d=_this$workOptions8.thickness,c=_this$workOptions8.zIndex,p=_this$workOptions8.scale,y=_this$workOptions8.rotate,P=_this$workOptions8.translate,x=_this$workOptions8.strokeType,v=_this$workOptions8.eraserlines,T=n.worldPosition,f=n.worldScaling,_this$computDrawPoint4=this.computDrawPoints(a),g=_this$computDrawPoint4.points,u=_this$computDrawPoint4.rect,m=_this$computDrawPoint4.pos,M={close:!0,normalize:!0,points:g,lineWidth:d,fillColor:l!=="transparent"&&l||void 0,strokeColor:s,lineJoin:"round",lineCap:"round",lineDash:x===Lt.Dotted?[1,d*2]:x===Lt.LongDotted?[d,d*2]:void 0},E={x:Math.floor(u.x*f[0]+T[0]-vt.SafeBorderPadding),y:Math.floor(u.y*f[1]+T[1]-vt.SafeBorderPadding),w:Math.floor(u.w*f[0]+2*vt.SafeBorderPadding),h:Math.floor(u.h*f[0]+2*vt.SafeBorderPadding)},A=new kt({name:e,id:e,zIndex:c,pos:m,anchor:[0.5,0.5],size:[u.w,u.h],scale:p,rotate:y,translate:P}),b=new le(_objectSpread(_objectSpread({},M),{},{pos:[0,0]}));if(A.appendChild(b),i){var O=new ce({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:s,lineWidth:1,scale:[1/f[0],1/f[1]]});A.appendChild(O);}if(v&&this.drawEraserlines({group:A,eraserlines:v,pos:m,layer:n}),this.replace(n,o||e,A),p||y||P){var _O10=A.getBoundingClientRect();return{x:Math.floor(_O10.x-vt.SafeBorderPadding),y:Math.floor(_O10.y-vt.SafeBorderPadding),w:Math.floor(_O10.width+2*vt.SafeBorderPadding),h:Math.floor(_O10.height+2*vt.SafeBorderPadding)};}return E;}},{key:"updateTempPoints",value:function updateTempPoints(t){var e=t.slice(-2),n=new xt(e[0],e[1]),i=this.tmpPoints[0],a=this.workOptions.thickness;if(i.isNear(n,a))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n;}else this.tmpPoints.push(n);return!0;}},{key:"consumeService",value:function consumeService(t){var d,c;var e=t.op,n=t.isFullWork,i=t.replaceId,a=(d=this.workId)==null?void 0:d.toString();if(!a)return;var o=[];for(var p=0;p<e.length;p+=3)o.push([e[p],e[p+1],e[p+2]]);var s=n?this.fullLayer:this.drawLayer||this.fullLayer,l=this.draw({ps:o,workId:a,layer:s,isDrawing:!1,replaceId:i});return this.oldRect=l,(c=this.vNodes)==null||c.setInfo(a,{rect:l,op:e,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:l&&vt.getCenterPos(l,s)}),l;}},{key:"clearTmpPoints",value:function clearTmpPoints(){this.tmpPoints.length=0;}}],[{key:"updateNodeOpt",value:function updateNodeOpt(t){var c,p,y;var e=t.node,n=t.opt,i=t.vNodes,a=n.strokeColor,o=n.fillColor,s=n.strokeType,l=i.get(e.name);var d=e;return e.tagName==="GROUP"&&(d=e.children[0]),a&&(d.setAttribute("strokeColor",a),(c=l==null?void 0:l.opt)!=null&&c.strokeColor&&(l.opt.strokeColor=a)),o&&(o==="transparent"?d.setAttribute("fillColor","rgba(0,0,0,0)"):d.setAttribute("fillColor",o),(p=l==null?void 0:l.opt)!=null&&p.fillColor&&(l.opt.fillColor=o)),s&&l!=null&&l.opt&&(y=l.opt)!=null&&y.strokeType&&(l.opt.strokeType=s),l&&i.setInfo(e.name,l),vt.updateNodeOpt(t);}}]);}(vt);var Si=/*#__PURE__*/function(_vt8){function Si(t){var _this78;_classCallCheck(this,Si);_this78=_callSuper(this,Si,[t]);et(_this78,"canRotate",!1);et(_this78,"scaleType",jt.all);et(_this78,"toolsType",ut.Star);et(_this78,"tmpPoints",[]);et(_this78,"workOptions");et(_this78,"oldRect");et(_this78,"syncTimestamp");_this78.workOptions=t.toolsOpt,_this78.syncTimestamp=0,_this78.syncUnitTime=50;return _this78;}_inherits(Si,_vt8);return _createClass(Si,[{key:"consume",value:function consume(t){var e=t.data,n=t.isFullWork,i=t.isSubWorker,a=t.isMainThread,o=this.workId,s=e.op,l=s==null?void 0:s.length;if(!l||l<2)return{type:at.None};var d;if(this.tmpPoints.length===0?(this.tmpPoints=[new xt(s[0],s[1])],d=!1):d=this.updateTempPoints(s),!d)return{type:at.None};var c;if(i||a){var y=n?this.fullLayer:this.drawLayer||this.fullLayer;c=this.draw({workId:o,layer:y,isDrawing:!0});}if(!i){var _y10=Date.now();return _y10-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=_y10,_objectSpread({type:at.DrawWork,dataType:Mt.Local,op:this.tmpPoints.map(function(P){return[].concat(_toConsumableArray(P.XY),[0]);}).flat(1),isSync:!0,index:0},this.baseConsumeResult)):{type:at.None};}var p=Pt(c,this.oldRect);return this.oldRect=c,_objectSpread({rect:p,type:at.DrawWork,dataType:Mt.Local},this.baseConsumeResult);}},{key:"consumeAll",value:function consumeAll(){var o;var t=this.workId;if(this.tmpPoints.length<2)return{type:at.RemoveNode,removeIds:[t]};var e=this.fullLayer,n=this.draw({workId:t,layer:e,isDrawing:!1});this.oldRect=n;var i=this.tmpPoints.map(function(s){return[].concat(_toConsumableArray(s.XY),[0]);}).flat(1),a=Zt(i);return(o=this.vNodes)==null||o.setInfo(t,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&vt.getCenterPos(n,e)}),_objectSpread({rect:n,type:at.FullWork,dataType:Mt.Local,ops:a,isSync:!0},this.baseConsumeResult);}},{key:"draw",value:function draw(t){var e=t.workId,n=t.layer,i=t.isDrawing,_this$workOptions9=this.workOptions,a=_this$workOptions9.strokeColor,o=_this$workOptions9.fillColor,s=_this$workOptions9.thickness,l=_this$workOptions9.zIndex,d=_this$workOptions9.vertices,c=_this$workOptions9.innerVerticeStep,p=_this$workOptions9.innerRatio,y=_this$workOptions9.scale,P=_this$workOptions9.rotate,x=_this$workOptions9.translate,v=_this$workOptions9.strokeType,T=_this$workOptions9.eraserlines,f=n.worldScaling,_this$computDrawPoint5=this.computDrawPoints(s,d,c,p),g=_this$computDrawPoint5.rect,u=_this$computDrawPoint5.pos,m=_this$computDrawPoint5.points,M={close:!0,points:m,lineWidth:s,fillColor:o!=="transparent"&&o||void 0,strokeColor:a,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:v===Lt.Dotted?[1,s*2]:v===Lt.LongDotted?[s,s*2]:void 0},E={name:e,id:e,zIndex:l,pos:u,anchor:[0.5,0.5],size:[g.w,g.h]};y&&(E.scale=y),P&&(E.rotate=P),x&&(E.translate=x);var A=new kt(E);if(i){var L=new ce({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/f[0],1/f[1]]});A.append(L);}var b=new le(_objectSpread(_objectSpread({},M),{},{pos:[0,0]}));A.append(b),T&&this.drawEraserlines({group:A,eraserlines:T,pos:u,layer:n}),this.replace(n,e,A);var O=A.getBoundingClientRect();return{x:Math.floor(O.x-vt.SafeBorderPadding),y:Math.floor(O.y-vt.SafeBorderPadding),w:Math.floor(O.width+vt.SafeBorderPadding*2),h:Math.floor(O.height+vt.SafeBorderPadding*2)};}},{key:"computDrawPoints",value:function computDrawPoints(t,e,n,i){var a=Bt(this.tmpPoints),o=[Math.floor(a.x+a.w/2),Math.floor(a.y+a.h/2)],s=Ci(a.w,a.h),l=Math.floor(Math.min(a.w,a.h)/2),d=i*l,c=[],p=2*Math.PI/e;for(var P=0;P<e;P++){var x=P*p-0.5*Math.PI;var v=void 0,_T32=void 0;P%n===1?(v=d*s[0]*Math.cos(x),_T32=d*s[1]*Math.sin(x)):(v=l*s[0]*Math.cos(x),_T32=l*s[1]*Math.sin(x),c.push(v,_T32)),c.push(v,_T32);}return{rect:Bt(this.tmpPoints,t),pos:o,points:c};}},{key:"updateTempPoints",value:function updateTempPoints(t){var e=t.slice(-2),n=new xt(e[0],e[1]),i=this.tmpPoints[0],a=this.workOptions.thickness;if(i.isNear(n,a)||xt.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n;}else this.tmpPoints.push(n);return!0;}},{key:"consumeService",value:function consumeService(t){var s,l;var e=t.op,n=t.isFullWork,i=(s=this.workId)==null?void 0:s.toString();if(!i)return;this.tmpPoints.length=0;for(var d=0;d<e.length;d+=3)this.tmpPoints.push(new xt(e[d],e[d+1],e[d+2]));var a=n?this.fullLayer:this.drawLayer||this.fullLayer,o=this.draw({workId:i,layer:a,isDrawing:!1});return this.oldRect=o,(l=this.vNodes)==null||l.setInfo(i,{rect:o,op:e,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:o&&vt.getCenterPos(o,a)}),o;}},{key:"clearTmpPoints",value:function clearTmpPoints(){this.tmpPoints.length=0;}}],[{key:"updateNodeOpt",value:function updateNodeOpt(t){var v;var e=t.node,n=t.opt,i=t.vNodes,a=n.strokeColor,o=n.fillColor,s=n.toolsType,l=n.vertices,d=n.innerVerticeStep,c=n.innerRatio,p=n.strokeType,y=i.get(e.name),P=y==null?void 0:y.opt;var x=e;return e.tagName==="GROUP"&&(x=e.children[0]),a&&(x.setAttribute("strokeColor",a),P!=null&&P.strokeColor&&(P.strokeColor=a)),o&&(o==="transparent"?x.setAttribute("fillColor","rgba(0,0,0,0)"):x.setAttribute("fillColor",o),P!=null&&P.fillColor&&(P.fillColor=o)),s===ut.Star&&(l&&(P.vertices=l),d&&(P.innerVerticeStep=d),c&&(P.innerRatio=c)),p&&y!=null&&y.opt&&(v=y.opt)!=null&&v.strokeType&&(y.opt.strokeType=p),y&&i.setInfo(e.name,_objectSpread(_objectSpread({},y),{},{opt:P})),vt.updateNodeOpt(t);}}]);}(vt);var xi=/*#__PURE__*/function(_vt9){function xi(t){var _this79;_classCallCheck(this,xi);_this79=_callSuper(this,xi,[t]);et(_this79,"canRotate",!1);et(_this79,"scaleType",jt.all);et(_this79,"toolsType",ut.Polygon);et(_this79,"tmpPoints",[]);et(_this79,"workOptions");et(_this79,"oldRect");et(_this79,"syncTimestamp");_this79.workOptions=t.toolsOpt,_this79.syncTimestamp=0,_this79.syncUnitTime=50;return _this79;}_inherits(xi,_vt9);return _createClass(xi,[{key:"consume",value:function consume(t){var e=t.data,n=t.isFullWork,i=t.isSubWorker,a=t.isMainThread,o=e.op,s=this.workId,l=o==null?void 0:o.length;if(!l||l<2)return{type:at.None};var d;if(this.tmpPoints.length===0?(this.tmpPoints=[new xt(o[0],o[1])],d=!1):d=this.updateTempPoints(o),!d)return{type:at.None};var c;if(i||a){var y=n?this.fullLayer:this.drawLayer||this.fullLayer;c=this.draw({workId:s,layer:y,isDrawing:!0});}if(!i){var _y11=Date.now();return _y11-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=_y11,_objectSpread({type:at.DrawWork,dataType:Mt.Local,op:this.tmpPoints.map(function(P){return[].concat(_toConsumableArray(P.XY),[0]);}).flat(1),isSync:!0,index:0},this.baseConsumeResult)):{type:at.None};}var p=Pt(c,this.oldRect);return this.oldRect=c,_objectSpread({rect:p,type:at.DrawWork,dataType:Mt.Local},this.baseConsumeResult);}},{key:"consumeAll",value:function consumeAll(){var o;var t=this.workId;if(this.tmpPoints.length<2)return{type:at.RemoveNode,removeIds:[t]};var e=this.fullLayer,n=this.draw({workId:t,layer:e,isDrawing:!1});this.oldRect=n;var i=this.tmpPoints.map(function(s){return[].concat(_toConsumableArray(s.XY),[0]);}).flat(1),a=Zt(i);return(o=this.vNodes)==null||o.setInfo(t,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&vt.getCenterPos(n,e)}),_objectSpread({rect:n,type:at.FullWork,dataType:Mt.Local,ops:a,isSync:!0},this.baseConsumeResult);}},{key:"draw",value:function draw(t){var e=t.workId,n=t.layer,i=t.isDrawing,_this$workOptions10=this.workOptions,a=_this$workOptions10.strokeColor,o=_this$workOptions10.fillColor,s=_this$workOptions10.thickness,l=_this$workOptions10.zIndex,d=_this$workOptions10.vertices,c=_this$workOptions10.scale,p=_this$workOptions10.rotate,y=_this$workOptions10.translate,P=_this$workOptions10.strokeType,x=_this$workOptions10.eraserlines,v=n.worldScaling,_this$computDrawPoint6=this.computDrawPoints(s,d),T=_this$computDrawPoint6.rect,f=_this$computDrawPoint6.pos,g=_this$computDrawPoint6.points,u={close:!0,points:g,lineWidth:s,fillColor:o!=="transparent"&&o||void 0,strokeColor:a,normalize:!0,lineJoin:"round",lineCap:"round",lineDash:P===Lt.Dotted?[1,s*2]:P===Lt.LongDotted?[s,s*2]:void 0},m={name:e,id:e,zIndex:l,pos:f,anchor:[0.5,0.5],size:[T.w,T.h]};c&&(m.scale=c),p&&(m.rotate=p),y&&(m.translate=y);var M=new kt(m);if(i){var b=new ce({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/v[0],1/v[1]]});M.append(b);}var E=new le(_objectSpread(_objectSpread({},u),{},{pos:[0,0]}));M.append(E),x&&this.drawEraserlines({group:M,eraserlines:x,pos:f,layer:n}),this.replace(n,e,M);var A=M.getBoundingClientRect();return{x:Math.floor(A.x-vt.SafeBorderPadding),y:Math.floor(A.y-vt.SafeBorderPadding),w:Math.floor(A.width+vt.SafeBorderPadding*2),h:Math.floor(A.height+vt.SafeBorderPadding*2)};}},{key:"computDrawPoints",value:function computDrawPoints(t,e){var n=Bt(this.tmpPoints),i=[Math.floor(n.x+n.w/2),Math.floor(n.y+n.h/2)],a=Ci(n.w,n.h),o=Math.floor(Math.min(n.w,n.h)/2),s=[],l=2*Math.PI/e;for(var c=0;c<e;c++){var p=c*l-0.5*Math.PI,y=o*a[0]*Math.cos(p),P=o*a[1]*Math.sin(p);s.push(y,P);}return{rect:Bt(this.tmpPoints,t),pos:i,points:s};}},{key:"updateTempPoints",value:function updateTempPoints(t){var e=t.slice(-2),n=new xt(e[0],e[1]),i=this.tmpPoints[0],a=this.workOptions.thickness;if(i.isNear(n,a)||xt.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n;}else this.tmpPoints.push(n);return!0;}},{key:"consumeService",value:function consumeService(t){var s,l;var e=t.op,n=t.isFullWork,i=(s=this.workId)==null?void 0:s.toString();if(!i)return;this.tmpPoints.length=0;for(var d=0;d<e.length;d+=3)this.tmpPoints.push(new xt(e[d],e[d+1],e[d+2]));var a=n?this.fullLayer:this.drawLayer||this.fullLayer,o=this.draw({workId:i,layer:a,isDrawing:!1});return this.oldRect=o,(l=this.vNodes)==null||l.setInfo(i,{rect:o,op:e,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:o&&vt.getCenterPos(o,a)}),o;}},{key:"clearTmpPoints",value:function clearTmpPoints(){this.tmpPoints.length=0;}}],[{key:"updateNodeOpt",value:function updateNodeOpt(t){var P;var e=t.node,n=t.opt,i=t.vNodes,a=n.strokeColor,o=n.fillColor,s=n.toolsType,l=n.vertices,d=n.strokeType,c=i.get(e.name),p=c==null?void 0:c.opt;var y=e;return e.tagName==="GROUP"&&(y=e.children[0]),a&&(y.setAttribute("strokeColor",a),p!=null&&p.strokeColor&&(p.strokeColor=a)),o&&(o==="transparent"?y.setAttribute("fillColor","rgba(0,0,0,0)"):y.setAttribute("fillColor",o),p!=null&&p.fillColor&&(p.fillColor=o)),s===ut.Polygon&&l&&(p.vertices=l),d&&c!=null&&c.opt&&(P=c.opt)!=null&&P.strokeType&&(c.opt.strokeType=d),c&&i.setInfo(e.name,_objectSpread(_objectSpread({},c),{},{opt:p})),vt.updateNodeOpt(t);}}]);}(vt);var qt=/*#__PURE__*/function(){function qt(){_classCallCheck(this,qt);}return _createClass(qt,null,[{key:"bezier",value:function bezier(r,t){var e=[];for(var n=0;n<t.length;n+=4){var i=t[n],a=t[n+1],o=t[n+2],s=t[n+3];i&&a&&o&&s?e.push.apply(e,_toConsumableArray(qt.getBezierPoints(r,i,a,o,s))):i&&a&&o?e.push.apply(e,_toConsumableArray(qt.getBezierPoints(r,i,a,o))):i&&a?e.push.apply(e,_toConsumableArray(qt.getBezierPoints(r,i,a))):i&&e.push(i);}return e;}/**
|
|
409
409
|
* @desc 获取点,这里可以设置点的个数
|
|
410
410
|
* @param {number} num 点个数
|