oolong-engine 0.0.6 → 0.0.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/dist/{arc-BtJeKKkB.js → arc-C_y3qedO.js} +1 -1
- package/dist/architecture-PBZL5I3N-D_kV15Uy.js +6 -0
- package/dist/{architectureDiagram-2XIMDMQ5-YnW13o0c.js → architectureDiagram-2XIMDMQ5-CFovujim.js} +4 -4
- package/dist/{blockDiagram-WCTKOSBZ-0ZhtWBa0.js → blockDiagram-WCTKOSBZ-DkHvySoJ.js} +3 -3
- package/dist/{c4Diagram-IC4MRINW-Bb0OYyy4.js → c4Diagram-IC4MRINW-GH15FTSa.js} +2 -2
- package/dist/{channel-BSjh1qd5.js → channel-DxRVJY1f.js} +1 -1
- package/dist/{chunk-4BX2VUAB-Dzl90Ix2.js → chunk-4BX2VUAB-BVuZyGyH.js} +1 -1
- package/dist/{chunk-55IACEB6-D-CcaEtV.js → chunk-55IACEB6-Ckc6OzJS.js} +1 -1
- package/dist/{chunk-FMBD7UC4-KSpuDAPs.js → chunk-FMBD7UC4-l0-uthLm.js} +1 -1
- package/dist/{chunk-JSJVCQXG-mLwz_PpT.js → chunk-JSJVCQXG-D04qGeri.js} +1 -1
- package/dist/{chunk-KX2RTZJC-DNejCQPE.js → chunk-KX2RTZJC-RqjD0z78.js} +1 -1
- package/dist/{chunk-NQ4KR5QH-DN0OxL1K.js → chunk-NQ4KR5QH-CcT4pTxt.js} +3 -3
- package/dist/{chunk-QZHKN3VN-2Oshb2xB.js → chunk-QZHKN3VN-iMN5s8af.js} +1 -1
- package/dist/{chunk-WL4C6EOR-BJ1Z_fvu.js → chunk-WL4C6EOR-Ck2Yy6uj.js} +5 -5
- package/dist/{classDiagram-VBA2DB6C-B4SiNtom.js → classDiagram-VBA2DB6C-DX-9qW9O.js} +2 -2
- package/dist/{classDiagram-v2-RAHNMMFH-B4SiNtom.js → classDiagram-v2-RAHNMMFH-DX-9qW9O.js} +2 -2
- package/dist/{cose-bilkent-S5V4N54A-D3VHWOS2.js → cose-bilkent-S5V4N54A-CoxpT8G0.js} +2 -2
- package/dist/{dagre-KLK3FWXG-A18S9xtt.js → dagre-KLK3FWXG-DcJkQZ_p.js} +1 -1
- package/dist/{diagram-E7M64L7V-Ctl2S3Fc.js → diagram-E7M64L7V-Bkph-xMw.js} +4 -4
- package/dist/{diagram-IFDJBPK2-DrNV_ORM.js → diagram-IFDJBPK2-B26IA7hG.js} +3 -3
- package/dist/{diagram-P4PSJMXO-DEoH54BE.js → diagram-P4PSJMXO-BwNsT7k6.js} +3 -3
- package/dist/engine.js +1 -1
- package/dist/engine.umd.cjs +2 -2
- package/dist/{erDiagram-INFDFZHY-Bjcb17FO.js → erDiagram-INFDFZHY-CyxMYxG1.js} +4 -4
- package/dist/{flowDiagram-PKNHOUZH-Czj_FMXZ.js → flowDiagram-PKNHOUZH-sF7bfsi3.js} +6 -6
- package/dist/{ganttDiagram-A5KZAMGK-DQkIgLcB.js → ganttDiagram-A5KZAMGK-CupcYhuA.js} +2 -2
- package/dist/gitGraph-HDMCJU4V-Sq1dMY38.js +6 -0
- package/dist/{gitGraphDiagram-K3NZZRJ6-CcS9As23.js → gitGraphDiagram-K3NZZRJ6-D5QxofDd.js} +4 -4
- package/dist/graphics/mathFormula/MathFormula.d.ts.map +1 -1
- package/dist/{index-BQiaix3t.js → index-B-7emRZE.js} +4 -4
- package/dist/{index.es-70-9jf5I.js → index.es-xljcddpj.js} +1 -1
- package/dist/info-3K5VOQVL-CBMv2UMM.js +6 -0
- package/dist/{infoDiagram-LFFYTUFH-C-zNsc4y.js → infoDiagram-LFFYTUFH-BpKTSXxe.js} +2 -2
- package/dist/{ishikawaDiagram-PHBUUO56-_bWB0H2X.js → ishikawaDiagram-PHBUUO56-7AjbrWmZ.js} +1 -1
- package/dist/{journeyDiagram-4ABVD52K-CSBhB1pa.js → journeyDiagram-4ABVD52K-v_5C7gTq.js} +4 -4
- package/dist/{kanban-definition-K7BYSVSG-B1h8hmNV.js → kanban-definition-K7BYSVSG-BOt0i_-Q.js} +2 -2
- package/dist/{mermaid-parser.core-CVwkcM3M.js → mermaid-parser.core-ByccFDF0.js} +8 -8
- package/dist/{mermaid.core-C8NL4cTM.js → mermaid.core-D7h6yywH.js} +32 -32
- package/dist/{mindmap-definition-YRQLILUH-DY3Ui4YB.js → mindmap-definition-YRQLILUH-C3SC2LWI.js} +3 -3
- package/dist/packet-RMMSAZCW-BjlHpM8H.js +6 -0
- package/dist/pie-UPGHQEXC-BgSH-VgX.js +6 -0
- package/dist/{pieDiagram-SKSYHLDU-BnyYhiZj.js → pieDiagram-SKSYHLDU-Dhgk_X0P.js} +4 -4
- package/dist/{quadrantDiagram-337W2JSQ-xC9ov7ao.js → quadrantDiagram-337W2JSQ-B6rK8bAv.js} +1 -1
- package/dist/radar-KQ55EAFF-Gy0f1u5s.js +6 -0
- package/dist/{requirementDiagram-Z7DCOOCP-CVXoii5m.js → requirementDiagram-Z7DCOOCP-DozFtSIN.js} +3 -3
- package/dist/{sankeyDiagram-WA2Y5GQK-D-Vigui4.js → sankeyDiagram-WA2Y5GQK-DyfwoSoh.js} +1 -1
- package/dist/{sequenceDiagram-2WXFIKYE-Cj8p2Wsl.js → sequenceDiagram-2WXFIKYE-DWgprYVq.js} +3 -3
- package/dist/{stateDiagram-RAJIS63D-Ijd8gGch.js → stateDiagram-RAJIS63D-CgMZscj8.js} +2 -2
- package/dist/{stateDiagram-v2-FVOUBMTO-CpDSocjy.js → stateDiagram-v2-FVOUBMTO-BeHwBb7y.js} +2 -2
- package/dist/{timeline-definition-YZTLITO2-DpqwlFum.js → timeline-definition-YZTLITO2-DESrZ81I.js} +2 -2
- package/dist/treemap-KZPCXAKY-D_mPmg5V.js +6 -0
- package/dist/{vennDiagram-LZ73GAT5-j-cpWMbx.js → vennDiagram-LZ73GAT5-BVw9WZXQ.js} +1 -1
- package/dist/{xychartDiagram-JWTSCODW-EvfMEaXf.js → xychartDiagram-JWTSCODW-DAIh5TsK.js} +1 -1
- package/package.json +1 -1
- package/dist/architecture-PBZL5I3N-DakcP8IF.js +0 -6
- package/dist/gitGraph-HDMCJU4V-DrilLgKG.js +0 -6
- package/dist/info-3K5VOQVL-tQlQ-iOl.js +0 -6
- package/dist/packet-RMMSAZCW-CVLQsfVX.js +0 -6
- package/dist/pie-UPGHQEXC-1rCbW3_l.js +0 -6
- package/dist/radar-KQ55EAFF-KyYeoGCP.js +0 -6
- package/dist/treemap-KZPCXAKY-Df4nUlcE.js +0 -6
package/dist/engine.umd.cjs
CHANGED
|
@@ -260,7 +260,7 @@ ${i.trimEnd()}
|
|
|
260
260
|
`)}checkboxContain(e){return this.contains(e)}canQuickCreate(){return!1}canBeConnected(){return!0}static load(e,r,i,s,a,o){const l=new Ck(e,o);return l.type=r,l.zIndex=i,l.setParent(a),l.updateProps(s),l}}const Sre=1;class R_ extends Ck{constructor(r,i){super(r,i);U(this,"renderText");U(this,"checkboxTopPadding",Sre);this.props.set(ne.Text,new _n),this.props.set(ne.CheckSize,new P1),this.renderText=new R1}get textProps(){return this.props.get(ne.Text)}get chickSize(){return this.props.get(ne.CheckSize).size}updateProps(r){super.updateProps(r);const i=r.find(o=>o.type===ne.Text),s=r.find(o=>o.type===ne.Base),a=r.find(o=>o.type===ne.CheckSize);if(i||s||a){const o=this.getTextContentRect();if(this.renderText.typesetting(this.graphicContext,this.textProps,o),this.baseProps.height=this.renderText.height+2*An,this.renderText.rect.height=this.renderText.height+2*An,this.renderText.paragraphs.length>0){const l=this.renderText.paragraphs[0];if(l.lines.length>0){const u=l.lines[0];this.checkboxTopPadding=.5*(u.height-this.chickSize)}}}}drawOnGLCtx(r){super.drawOnGLCtx(r),this.drawText(r)}drawCheckboxBorder(r){const i=this.getProp(ne.Border);if(i.color!==""&&i.alpha!==0&&i.dashType!==Hn.None){const s=this.chickSize,{a,b:o,c:l,d:u,e:h,f:d}=this.globalTransform();r.save(),r.transform(a,o,l,u,h,d),r.beginPath(),r.roundRect(0,An+this.checkboxTopPadding,s,s,4),r.lineWidth=i.width,r.strokeStyle=i.color,r.globalAlpha=i.alpha,ae.setDashLine(i,r),r.stroke(),r.restore()}}drawCheckboxIcon(r){if(!this.checkStatus)return;const i=this.getProp(ne.Color);if(i.color!==""&&i.alpha!==0){r.save();const s=this.chickSize,a=Qr.generateMatrix().scale(s/16,s/16),o=Qr.generateMatrix().translate(0,this.checkboxTopPadding+An),{a:l,b:u,c:h,d,e:f,f:p}=this.globalTransform().crossProduct(o).crossProduct(a);r.transform(l,u,h,d,f,p),r.fillStyle=i.color,r.globalAlpha=i.alpha,r.scale(1,1),r.beginPath();const A=new Path2D(Tk);r.fill(A),r.restore()}}svgContent(){const r=this.chickSize,i=An+this.checkboxTopPadding,s=[],a=this.getProp(ne.Border);At.hasStroke(a)&&s.push(`<rect x="0" y="${At.num(i)}" width="${At.num(r)}" height="${At.num(r)}" rx="4" ry="4" fill="none" ${At.strokeAttrs(a)} />`);const o=this.getProp(ne.Color);this.checkStatus&&At.hasFill(o)&&s.push(`<path transform="translate(0 ${At.num(i)}) scale(${At.num(r/16)} ${At.num(r/16)})" d="${Tk}" ${At.fillAttrs(o)} />`);const l=this.renderText.toSvg(new he(0,0)).trimEnd();if(l!==""){const u=o.alpha*(this.checkStatus?.6:1);s.push(u!==1?`<g opacity="${At.num(u)}">
|
|
261
261
|
${l}
|
|
262
262
|
</g>`:l)}return s.join(`
|
|
263
|
-
`)}drawText(r){let{alpha:i}=this.getProp(ne.Color);this.checkStatus&&(i=i*.6),r.save(),r.beginPath();const s=this.globalPos;this.renderText.draw(r,new he(s.x,s.y),i),r.restore()}isEmptyText(){return this.renderText.isEmptyText()}checkboxContain(r){const i=this.chickSize,s=this.toLocal(r);return ae.rectContains(s,new _t(0,An+this.checkboxTopPadding,i,i))}getTextContentRect(){const{width:r,height:i}=this.baseProps,s=this.chickSize;return{x:s+An,y:An,width:r-2*An-s-Sre,height:i-2*An}}getRenderText(){return this.renderText}static load(r,i,s,a,o,l){const u=new R_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class __ extends rh{constructor(r,i){super(r,i);U(this,"type",X.SlideContainer);this.props.set(ne.Base,new mr),this.props.set(ne.Slide,new Dc)}get slideProps(){return this.props.get(ne.Slide)}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}drawOnGLCtx(r){const{width:i,height:s}=this.baseProps,{a,b:o,c:l,d:u,e:h,f:d}=this.globalTransform();r.save(),r.transform(a,o,l,u,h,d),r.shadowColor="rgba(0, 0, 0, 0.1)",r.shadowBlur=15,r.shadowOffsetX=0,r.shadowOffsetY=6,r.fillStyle="rgba(255, 255, 255, 0.6)",r.beginPath(),r.roundRect(0,0,i,s,8),r.fill(),r.shadowColor="transparent",r.fillStyle="rgba(240, 242, 245, 0.5)",r.fill(),r.strokeStyle="rgba(0, 0, 0, 0.1)",r.lineWidth=1,r.stroke(),r.restore()}canQuickCreate(){return!1}getStretchMinSize(){return{x:20,y:20}}getTextContentRect(){return this.baseProps}static load(r,i,s,a,o,l){const u=new __(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}getChildIdByIndex(r){const i=this.slideProps.children;let s=0;for(let a=0;a<i.length;a++){if(r<s+i[a].ids.length){const o=r-s;return i[a].ids[o]}s+=i[a].ids.length}return null}getTotalCount(){return this.slideProps.children.reduce((i,s)=>i+s.ids.length,0)}}class D_ extends rh{constructor(r,i){super(r,i);U(this,"type",X.DocContainer);U(this,"inDocEditMode",!1);this.props.set(ne.Base,new mr),this.props.set(ne.Doc,new I1)}get docProps(){return this.props.get(ne.Doc)}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}drawOnGLCtx(r){const{width:i,height:s}=this.baseProps,{a,b:o,c:l,d:u,e:h,f:d}=this.globalTransform();r.save(),r.transform(a,o,l,u,h,d),this.inDocEditMode||(r.shadowColor="rgba(0, 0, 0, 0.08)",r.shadowBlur=20,r.shadowOffsetX=0,r.shadowOffsetY=4,r.fillStyle="rgba(240, 242, 245, 0.6)",r.beginPath(),r.roundRect(0,0,i,s,12),r.fill(),r.shadowColor="transparent",r.strokeStyle="rgba(0, 0, 0, 0.08)",r.lineWidth=1,r.stroke());const f=kA,p=kA,A=i-kA*2,g=s-kA*2;r.shadowColor="rgba(0, 0, 0, 0.1)",r.shadowBlur=10,r.shadowOffsetX=0,r.shadowOffsetY=2,r.fillStyle="#ffffff",r.beginPath(),r.roundRect(f,p,A,g,4),r.fill(),r.shadowColor="transparent",r.strokeStyle="rgba(0, 0, 0, 0.06)",r.lineWidth=.5,r.stroke(),r.restore()}canQuickCreate(){return!1}getTextContentRect(){return this.baseProps}static load(r,i,s,a,o,l){const u=new D_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class r2{}class RFe extends r2{refreshBox(e){const r=e.mindmapChildren,i=e.getBounds();if(r.length===0){e.layoutbox={rect:{x:0,y:0,width:i.maxX-i.minX,height:i.maxY-i.minY},dx:0,dy:0};return}let s=0,a=0;for(const l of r){const u=l.layoutbox.rect;s=Math.max(s,u.width),a+=u.height}const o=a;a=Math.max(a,i.maxY-i.minY),e.layoutbox={rect:{x:0,y:0,width:s+i.maxX-i.minX+ho,height:a+Ko*(r.length-1)},dx:0,dy:.5*(a-o)}}layoutBox(e){const r=e.layoutbox.rect,i=e.layoutbox.dy,s=e.mindmapChildren;if(s.length===0)return;let o=r.y+i;for(let l=0;l<s.length;l++){const h=s[l].layoutbox.rect;h.x=e.baseProps.x-h.width-ho,h.y=o,o+=h.height+Ko}}updateNodePosition(e,r){const i=e.layoutbox.rect,s=e.baseProps;r.removeIndexNode(e.getBounds()),s.x=i.x+i.width-s.width,s.y=i.y+.5*i.height-.5*s.height,e.updateTransformMatrix(),r.addIndexNode(e.getBounds())}}class _Fe extends r2{refreshBox(e){const r=e.mindmapChildren,i=e.getBounds();if(r.length===0){e.layoutbox={rect:{x:0,y:0,width:i.maxX-i.minX,height:i.maxY-i.minY},dx:0,dy:0};return}let s=0,a=0;for(const l of r){const u=l.layoutbox.rect;s=Math.max(s,u.width),a+=u.height}const o=a;a=Math.max(a,i.maxY-i.minY),e.layoutbox={rect:{x:0,y:0,width:s+i.maxX-i.minX+ho,height:a+Ko*(r.length-1)},dx:0,dy:.5*(a-o)}}layoutBox(e){const r=e.layoutbox.rect,i=e.layoutbox.dy,s=e.mindmapChildren;if(s.length===0)return;const a=r.y+i,o=e.baseProps.x+e.baseProps.width+ho;let l=a;for(let u=0;u<s.length;u++){const d=s[u].layoutbox.rect;d.x=o,d.y=l,l+=d.height+Ko}}updateNodePosition(e,r){const i=e.layoutbox.rect,s=e.baseProps;r.removeIndexNode(e.getBounds()),s.x=i.x,s.y=i.y+.5*i.height-.5*s.height,e.updateTransformMatrix(),r.addIndexNode(e.getBounds())}}class DFe extends r2{refreshBox(e){const r=e.mindmapChildren,i=e.getBounds();if(r.length===0){e.layoutbox={rect:{x:0,y:0,width:i.maxX-i.minX,height:i.maxY-i.minY},dx:0,dy:0};return}let s=0,a=0;for(const l of r){const u=l.layoutbox.rect;s+=u.width,a=Math.max(a,u.height)}const o=s;s=Math.max(s,i.maxX-i.minX),e.layoutbox={rect:{x:0,y:0,width:s+ho*(r.length-1),height:a+i.maxY-i.minY+Ko},dx:.5*(s-o),dy:0}}layoutBox(e){const r=e.layoutbox.rect,i=e.layoutbox.dx,s=e.mindmapChildren;if(s.length===0)return;const a=r.x+i,o=e.baseProps.y+e.baseProps.height+Ko;let l=a;for(let u=0;u<s.length;u++){const d=s[u].layoutbox.rect;d.x=l,d.y=o,l+=d.width+ho}}updateNodePosition(e,r){const i=e.layoutbox.rect,s=e.baseProps;r.removeIndexNode(e.getBounds()),s.x=i.x+.5*i.width-.5*s.width,s.y=i.y,e.updateTransformMatrix(),r.addIndexNode(e.getBounds())}}class OFe extends r2{refreshBox(e){const r=e.subMindMapChildren,i=e.mindmapChildren,s=e.getBounds();if(r.length===0&&i.length===0){e.layoutbox={rect:{x:0,y:0,width:s.maxX-s.minX,height:s.maxY-s.minY},dx:0,dy:0};return}let a=0,o=0;for(const f of r){const p=f.layoutbox.rect;a+=p.width,o=Math.max(o,p.height)}r.length>0&&(a+=ho*(r.length-1));let l=0,u=0;for(const f of i){const p=f.layoutbox.rect;l+=p.width,u=Math.max(u,p.height)}i.length>0&&(l+=ho*(i.length-1));let h=s.maxY-s.minY;r.length>0&&(h+=o+Ko),i.length>0&&(h+=u+Ko);const d=Math.max(a,l);e.layoutbox={rect:{x:0,y:0,width:Math.max(d,s.maxX-s.minX),height:h},dx:0,dy:0}}layoutBox(e){const r=e.subMindMapChildren,i=e.mindmapChildren,s=e.layoutbox.rect;if(r.length>0){let a=0;for(const h of r)a+=h.layoutbox.rect.width;a+=ho*(r.length-1);const o=s.x+.5*s.width-a/2,l=s.y;let u=o;for(const h of r){const d=h.layoutbox.rect;d.x=u,d.y=l,u+=d.width+ho}}if(i.length>0){let a=0;for(const h of i)a+=h.layoutbox.rect.width;a+=ho*(i.length-1);const o=s.x+.5*s.width-a/2,l=e.baseProps.y+e.baseProps.height+Ko;let u=o;for(const h of i){const d=h.layoutbox.rect;d.x=u,d.y=l,u+=d.width+ho}}}updateNodePosition(e,r){}}class FFe extends r2{refreshBox(e){const r=e.mindmapChildren,i=e.getBounds();if(r.length===0){e.layoutbox={rect:{x:0,y:0,width:i.maxX-i.minX,height:i.maxY-i.minY},dx:0,dy:0};return}let s=0,a=0;for(const l of r){const u=l.layoutbox.rect;s+=u.width,a=Math.max(a,u.height)}const o=s;s=Math.max(s,i.maxX-i.minX),e.layoutbox={rect:{x:0,y:0,width:s+ho*(r.length-1),height:a+i.maxY-i.minY+Ko},dx:.5*(s-o),dy:0}}layoutBox(e){const r=e.layoutbox.rect,i=e.layoutbox.dx,s=e.mindmapChildren;if(s.length===0)return;const a=r.x+i,o=e.baseProps.y-s[0].layoutbox.rect.height-Ko;let l=a;for(let u=0;u<s.length;u++){const d=s[u].layoutbox.rect;d.x=l,d.y=o,l+=d.width+ho}}updateNodePosition(e,r){const i=e.layoutbox.rect,s=e.baseProps;r.removeIndexNode(e.getBounds()),s.x=i.x+.5*i.width-.5*s.width,s.y=i.y+i.height-s.height,e.updateTransformMatrix(),r.addIndexNode(e.getBounds())}}class UFe extends r2{refreshBox(e){const r=e.subMindMapChildren,i=e.mindmapChildren,s=e.getBounds();if(r.length===0&&i.length===0){e.layoutbox={rect:{x:0,y:0,width:s.maxX-s.minX,height:s.maxY-s.minY},dx:0,dy:0};return}let a=0,o=0;for(const d of r){const f=d.layoutbox.rect;a=Math.max(a,f.width),o+=f.height}r.length>0&&(o+=Ko*(r.length-1));let l=0,u=0;for(const d of i){const f=d.layoutbox.rect;l=Math.max(l,f.width),u+=f.height}i.length>0&&(u+=Ko*(i.length-1));let h=e.baseProps.width;if(r.length>0&&(h+=a+ho),i.length>0&&(h+=l+ho),e.layoutbox={rect:{x:0,y:0,width:h,height:Math.max(o,u,s.maxY-s.minY)},dx:0,dy:0},!e.mindMapParent){const d=e.layoutbox.rect;r.length>0?d.x=e.baseProps.x-a-ho:d.x=e.baseProps.x,d.y=e.baseProps.y+.5*e.baseProps.height-.5*d.height}}layoutBox(e){const r=e.subMindMapChildren,i=e.mindmapChildren;if(r.length>0){let s=0;for(const l of r)s+=l.layoutbox.rect.height;s+=Ko*(r.length-1);let o=e.baseProps.y+.5*e.baseProps.height-s/2;for(const l of r){const u=l.layoutbox.rect;u.x=e.baseProps.x-l.layoutbox.rect.width-ho,u.y=o,o+=u.height+Ko}}if(i.length>0){let s=0;for(const u of i)s+=u.layoutbox.rect.height;s+=Ko*(i.length-1);const a=e.baseProps.y+.5*e.baseProps.height-s/2,o=e.baseProps.x+e.baseProps.width+ho;let l=a;for(const u of i){const h=u.layoutbox.rect;h.x=o,h.y=l,l+=h.height+Ko}}}updateNodePosition(e,r){}}class $Fe{constructor(){U(this,"points",[])}update(e,r){const i=e.getBounds(),s=r.getBounds();switch(e.layoutType){case ji.Left:{const o={x:i.maxX,y:.5*(i.minY+i.maxY)},l={x:s.minX,y:.5*(s.minY+s.maxY)};this.points=Lt.computeZLinePoints(o,l,!1);break}case ji.Right:{const o={x:s.maxX,y:.5*(s.minY+s.maxY)},l={x:i.minX,y:.5*(i.minY+i.maxY)};this.points=Lt.computeZLinePoints(o,l,!1);break}case ji.Top:{const o={x:.5*(i.minX+i.maxX),y:i.maxY},l={x:.5*(s.minX+s.maxX),y:s.minY};this.points=Lt.computeZLinePoints(o,l,!0);break}case ji.Bottom:{const o={x:.5*(s.minX+s.maxX),y:s.maxY},l={x:.5*(i.minX+i.maxX),y:i.minY};this.points=Lt.computeZLinePoints(o,l,!0);break}}}drawOnCtx(e,r){const i=this.points;if(i.length<2)return;const s=r.mindMapProps.lineStyleType;switch(e.save(),e.beginPath(),s){case lE.Rounded:i.length===2?(e.moveTo(i[0].x,i[0].y),e.lineTo(i[1].x,i[1].y),e.stroke()):ae.acrPolyDraw(e,i);break;case lE.Straight:default:this.drawStraightLine(e,r,i)}e.restore()}drawStraightLine(e,r,i){const s=r.borderProps.color,a=r.borderProps.alpha;e.strokeStyle=s,e.lineWidth=1,e.globalAlpha=a,e.beginPath();const o=i[0];e.moveTo(o.x,o.y);for(const l of i)e.lineTo(l.x,l.y);e.stroke()}}const hb=class hb extends l4{constructor(r,i){super(r,i);U(this,"type",X.MindmapNode);U(this,"layoutbox",null);U(this,"mindMapParent",null);U(this,"mindmapChildren",[]);U(this,"subMindMapChildren",[]);U(this,"renderLine");U(this,"rootContainer",new _t);this.props.set(ne.Base,new mr),this.props.set(ne.Color,new zn),this.props.set(ne.Border,new nn),this.props.set(ne.Text,new _n),this.props.set(ne.Shape,new Sn),this.props.set(ne.MindMap,new lp),this.props.set(ne.TextParagraph,new tc),this.props.set(ne.TextParagraphQuote,new _c),this.renderText=new R1,this.renderLine=new $Fe}get borderProps(){return this.props.get(ne.Border)}get colorProps(){return this.props.get(ne.Color)}get textProps(){return this.props.get(ne.Text)}get shapeProps(){return this.props.get(ne.Shape)}get mindMapProps(){return this.props.get(ne.MindMap)}get paragraphProps(){return this.props.get(ne.TextParagraph)}get paragraphQuoteProps(){return this.props.get(ne.TextParagraphQuote)}get layoutType(){return this.mindMapProps.layoutType}refreshRootContainer(){const r=new Set;ae.addAllMindMapChildren(this,r);const i=[...r],s=this.rootContainer,a=this.globalBaseProps;if(i.length===0){s.x=a.x-Q5,s.y=a.y-G5,s.width=2*Q5,s.height=2*G5;return}const o=[...i].map(u=>u.getBounds()),l=ae.getBounds(o);s.x=l.minX-Q5,s.y=l.minY-G5,s.width=l.maxX-l.minX+2*Q5,s.height=l.maxY-l.minY+2*G5}refreshLayoutBox(){for(const i of this.mindmapChildren)i.refreshLayoutBox();for(const i of this.subMindMapChildren)i.refreshLayoutBox();const r=hb.layoutWorkers.get(this.layoutType);r?r.refreshBox(this):console.error(`Unsupported layout type: ${this.layoutType}`)}layout(r){const i=hb.layoutWorkers.get(this.layoutType);i?(this.mindMapParent&&i.updateNodePosition(this,r),i.layoutBox(this),this.updateTransformMatrix()):console.error(`Unsupported layout type: ${this.layoutType}`);for(const s of this.mindmapChildren)s.layout(r);for(const s of this.subMindMapChildren)s.layout(r);this.mindMapParent?this.renderLine.update(this,this.mindMapParent):this.refreshRootContainer()}updateMindMapChildren(r){const i=this.mindMapProps;this.mindmapChildren=[];for(const s of i.children){const a=r.getNode(s);if(a&&a.type===X.MindmapNode){const o=a;o.mindMapParent=this,this.mindmapChildren.push(o),o.updateMindMapChildren(r)}else console.error(`Mindmap child node with ID ${s} not found or not a MindmapNode.`)}this.subMindMapChildren=[];for(const s of i.subChildren){const a=r.getNode(s);if(a&&a.type===X.MindmapNode){const o=a;o.mindMapParent=this,this.subMindMapChildren.push(o),o.updateMindMapChildren(r)}else console.error(`Mindmap sub-child node with ID ${s} not found or not a MindmapNode.`)}}root(){let r=this;for(;r.mindMapParent;)r=r.mindMapParent;return r}updateLayoutType(){}updateProps(r){super.updateProps(r);const i=r.find(l=>l.type===ne.Text),s=r.find(l=>l.type===ne.TextParagraph),a=r.find(l=>l.type===ne.TextParagraphQuote),o=r.find(l=>l.type===ne.Base);if(o&&this.updateTransformMatrix(),i||o||s||a){const l=this.getTextContentRect();this.renderText.typesetting(this.graphicContext,this.textProps,l,this.paragraphProps,this.paragraphQuoteProps)}}isRoot(){return this.mindMapParent===null}drawOnGLCtx(r){this.mindMapParent||this.drawContainerBox(r),r.save();const{a:i,b:s,c:a,d:o,e:l,f:u}=this.globalTransform();r.transform(i,s,a,o,l,u);const{width:h,height:d}=this.baseProps,{color:f,alpha:p}=this.colorProps,{color:A,width:g,alpha:m,dashType:y}=this.borderProps;if(h<=0||d<=0||!Number.isFinite(h)||!Number.isFinite(d)){r.restore();return}r.beginPath(),r.roundRect(0,0,h,d,10),f!==""&&(r.fillStyle=f,r.globalAlpha=p,r.fill()),A!==""&&y!==Hn.None&&Math.abs(m)>.001&&(r.strokeStyle=A,r.lineWidth=g,r.globalAlpha=m,ae.setDashLine(this.borderProps,r),r.stroke()),this.drawText(r),r.restore(),this.renderLine.drawOnCtx(r,this)}drawContainerBox(r){const{x:i,y:s,width:a,height:o}=this.rootContainer;r.save(),r.shadowColor="rgba(0, 0, 0, 0.08)",r.shadowBlur=20,r.shadowOffsetX=0,r.shadowOffsetY=4,r.fillStyle=BZ,r.globalAlpha=1,r.beginPath(),r.roundRect(i,s,a,o,12),r.fill(),r.shadowColor="transparent",r.strokeStyle=PZ,r.lineWidth=1,r.stroke(),r.restore()}drawText(r){const{x:i,y:s,width:a,height:o}=this.getTextContentRect();r.save(),r.beginPath(),r.rect(i,s,a,o),r.clip();const l=new he;this.renderText.draw(r,l,1),r.restore()}modifyPosInEditing(r){const i=this.getTextContentRect();return this.renderText.modifyPosInEditing(i,r)}resetFromEditing(){const r=this.getTextContentRect();return this.renderText.resetFromEditing(r)}isEmptyText(){return this.renderText.isEmptyText()}getTextContentRect(){const{width:r,height:i}=this.baseProps,{width:s}=this.borderProps,a=s+4;return{x:a,y:a,width:Math.max(0,r-2*a),height:Math.max(0,i-2*a)}}canBeConnected(){return!1}canQuickCreate(){return this.canBeConnected()}contains(r,i=1){const{width:s,height:a}=this.baseProps,o=this.toLocal(r);return ae.rectContains(o,new _t(0,0,s,a))}getRenderText(){return this.renderText}static load(r,i,s,a,o,l){const u=new hb(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}};U(hb,"layoutWorkers",new Map([[ji.Left,new RFe],[ji.Right,new _Fe],[ji.LeftRight,new UFe],[ji.Top,new FFe],[ji.Bottom,new DFe],[ji.TopBottom,new OFe]]));let h4=hb;class HFe{draw(e,r){const i=e.colorProps,s=e.borderProps,a=e.getProp(ne.Editable),{width:o,height:l}=e.baseProps;if(!a||a.points.length<3){this.fallbackDraw(e,r);return}r.lineJoin="round",r.beginPath();const u=a.points.map(h=>({x:h.x*o,y:h.y*l}));r.moveTo(u[0].x,u[0].y);for(const h of u)r.lineTo(h.x,h.y);r.closePath(),i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),s.color!==""&&!s.noFill&&s.dashType!==Hn.None&&(ae.setDashLine(s,r),r.strokeStyle=s.color,r.lineWidth=s.width,r.globalAlpha=s.alpha,r.stroke())}toSvg(e){const r=e.getProp(ne.Editable),{width:i,height:s}=e.baseProps,a=[At.fillAttrs(e.colorProps),At.strokeAttrs(e.borderProps)].filter(l=>l!=="").join(" ");if(!r||r.points.length<3)return`<rect x="0" y="0" width="${At.num(i)}" height="${At.num(s)}" ${a} />`;const o=r.points.map(l=>({x:l.x*i,y:l.y*s}));return`<polygon points="${At.points(o)}" ${a} stroke-linejoin="round" />`}nodeShapeInfo(e){const{width:r,height:i}=e.baseProps;return vr.rectangle({top:0,left:0,width:r,height:i})}borderContains(e,r,i){const s=this.nodeShapeInfo(e),a=vr.line({x:r.x-i,y:r.y},{x:r.x+i,y:r.y}),o=vr.line({x:r.x,y:r.y-i},{x:r.x,y:r.y+i});for(const l of[a,o]){const u=er.intersect(s,l);if(u.points.length>0)return u.points[0]}return null}getConnectAnchor(){return[new he(.5,0),new he(1,.5),new he(.5,1),new he(0,.5)]}fallbackDraw(e,r){const i=e.colorProps,s=e.baseProps,a=e.borderProps;i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fillRect(0,0,s.width,s.height)),a.color!==""&&!a.noFill&&a.dashType!==Hn.None&&(ae.setDashLine(a,r),r.strokeStyle=a.color,r.lineWidth=a.width,r.globalAlpha=a.alpha,r.strokeRect(0,0,s.width,s.height))}}function Ere(n,e){const r=Qr.generateMatrix().translate(-e.x,-e.y);return Qr.generateMatrix().rotate(-e.angle).crossProduct(r).crossPoint(n)}function zFe(n,e){const r=Qr.generateMatrix().translate(e.x,e.y),i=Qr.generateMatrix().rotate(e.angle);return r.crossProduct(i).crossPoint(n)}function QFe(n){let e=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,s=Number.NEGATIVE_INFINITY;for(const a of n)e=Math.min(e,a.x),r=Math.min(r,a.y),i=Math.max(i,a.x),s=Math.max(s,a.y);return{x:e,y:r,width:i-e,height:s-r}}function GFe(n,e,r,i){const s=n.map(g=>Ere(g,e)),{x:a,y:o,width:l,height:u}=QFe(s),h=zFe({x:a,y:o},e),d=i?i.inverseMatrix().crossPoint(h):h,f={x:h.x,y:h.y,width:l,height:u,angle:r},p={x:d.x,y:d.y,width:l,height:u,angle:r},A=n.map(g=>{const m=Ere(g,f);return{x:l===0?0:m.x/l,y:u===0?0:m.y/u}});return{baseProps:p,globalBaseProps:f,points:A}}class O_ extends rh{constructor(r,i){super(r,i);U(this,"type",X.Editable);U(this,"drawer",new HFe);U(this,"editStatus",null);this.props.set(ne.Base,new mr),this.props.set(ne.Editable,new oA),this.props.set(ne.Color,new zn),this.props.set(ne.Border,new nn)}get editProps(){return this.props.get(ne.Editable)}get globalEditPoints(){const{width:r,height:i}=this.baseProps;return this.editProps.points.map(s=>{const a={x:s.x*r,y:s.y*i};return this.toGlobal(a)})}get borderProps(){return this.props.get(ne.Border)}get colorProps(){return this.props.get(ne.Color)}rebuildFromGlobalEditPoints(r){var s;const i=GFe(r,this.globalBaseProps,this.baseProps.angle,(s=this.parent)==null?void 0:s.globalTransform());return{baseProps:{type:ne.Base,...i.baseProps},globalBaseProps:{type:ne.Base,...i.globalBaseProps},points:i.points}}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}drawOnGLCtx(r){r.save(),r.beginPath();const{a:i,b:s,c:a,d:o,e:l,f:u}=this.globalTransform();r.transform(i,s,a,o,l,u),this.drawer.draw(this,r),r.restore()}loseFocus(){this.editStatus=null}svgContent(){return this.drawer.toSvg(this)}borderContains(r,i){const s=this.toLocal(r);return this.drawer.borderContains(this,s,i)}contains(r){const{width:i,height:s}=this.baseProps,a=this.toLocal(r);return ae.rectContains(a,new _t(0,0,i,s))}getStretchMinSize(){return new he(20,20)}getTextContentRect(){return new _t}getConnectAnchor(){return this.drawer.getConnectAnchor()}canQuickCreate(){var r;return((r=this.parent)==null?void 0:r.type)===X.DocContainer?!1:super.canQuickCreate()}canBeConnected(){var r;return((r=this.parent)==null?void 0:r.type)!==X.DocContainer}static load(r,i,s,a,o,l){const u=new O_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class F_ extends t2{constructor(e,r){super(e,r),this.props.set(ne.Shape,new Sn),this.props.set(ne.Chart,new gs)}static load(e,r,i,s,a,o){const l=new F_(e,o);return l.type=r,l.zIndex=i,l.setParent(a),l.updateProps(s),l}}class WFe{draw(e,r){const i=e.colorProps,s=e.borderProps,a=e.globalBaseProps,o=e.pieRingProps,l=eh,u=o.startAngle+l,h=o.endAngle+l,d={x:a.width/2,y:a.height/2},f=.5*Math.min(a.height,a.width);r.beginPath();const p=new he(d.x+f*Math.cos(u),d.y+f*Math.sin(u));r.moveTo(d.x,d.y),r.lineTo(p.x,p.y),r.arc(d.x,d.y,f,u,h),r.closePath(),r.lineJoin="round",i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),s.color!==""&&!s.noFill&&s.dashType!==Hn.None&&(ae.setDashLine(s,r),r.strokeStyle=s.color,r.lineWidth=s.width,r.globalAlpha=s.alpha,r.stroke())}toSvg(e){const{width:r,height:i}=e.baseProps,s=[At.fillAttrs(e.colorProps),At.strokeAttrs(e.borderProps)].filter(v=>v!=="").join(" "),a=r/2,o=i/2,l=.5*Math.min(r,i);if(l<=0)return"";const u=e.pieRingProps.startAngle+eh,h=e.pieRingProps.endAngle+eh,d=h-u;if(d>=2*Math.PI-1e-6)return`<circle cx="${At.num(a)}" cy="${At.num(o)}" r="${At.num(l)}" ${s} />`;const f=a+l*Math.cos(u),p=o+l*Math.sin(u),A=a+l*Math.cos(h),g=o+l*Math.sin(h),m=(d%(2*Math.PI)+2*Math.PI)%(2*Math.PI)>Math.PI?1:0;return`<path d="${`M${At.num(a)} ${At.num(o)}L${At.num(f)} ${At.num(p)}A${At.num(l)} ${At.num(l)} 0 ${m} 1 ${At.num(A)} ${At.num(g)}Z`}" ${s} stroke-linejoin="round" />`}fallbackDraw(e,r){const i=e.colorProps,s=e.baseProps,a=e.borderProps,o={x:s.width/2,y:s.height/2},l=.5*Math.min(s.height,s.width);r.arc(o.x,o.y,l,0,2*Math.PI),i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),a.color!==""&&!a.noFill&&a.dashType!==Hn.None&&(ae.setDashLine(a,r),r.strokeStyle=a.color,r.lineWidth=a.width,r.globalAlpha=a.alpha,r.stroke())}nodeShapeInfo(e){const{width:r,height:i}=e.baseProps;return vr.rectangle({top:0,left:0,width:r,height:i})}borderContains(e,r,i){const s=this.nodeShapeInfo(e),a=vr.line({x:r.x-i,y:r.y},{x:r.x+i,y:r.y}),o=vr.line({x:r.x,y:r.y-i},{x:r.x,y:r.y+i});for(const l of[a,o]){const u=er.intersect(s,l);if(u.points.length>0)return u.points[0]}return null}getConnectAnchor(){return[new he(.5,0),new he(1,.5),new he(.5,1),new he(0,.5)]}}class VFe{draw(e,r){const i=e.colorProps,s=e.borderProps,a=e.baseProps,o=e.pieRingProps,l=-.5*Math.PI,u=o.startAngle+l,h=o.endAngle+l,d={x:a.width/2,y:a.height/2},f=.5*Math.min(a.height,a.width),p=o.innerRadius,A=new he(d.x+p*Math.cos(u),d.y+p*Math.sin(u)),g=new he(d.x+p*Math.cos(h),d.y+p*Math.sin(h)),m=new he(d.x+f*Math.cos(u),d.y+f*Math.sin(u));r.beginPath(),r.moveTo(A.x,A.y),r.lineTo(m.x,m.y),r.arc(d.x,d.y,f,u,h),r.lineTo(g.x,g.y),r.arc(d.x,d.y,p,h,u,!0),r.closePath(),r.lineJoin="round",i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),s.color!==""&&!s.noFill&&s.dashType!==Hn.None&&(ae.setDashLine(s,r),r.strokeStyle=s.color,r.lineWidth=s.width,r.globalAlpha=s.alpha,r.stroke())}toSvg(e){const{width:r,height:i}=e.baseProps,s=[At.fillAttrs(e.colorProps),At.strokeAttrs(e.borderProps)].filter(S=>S!=="").join(" "),a=r/2,o=i/2,l=.5*Math.min(r,i);if(l<=0)return"";const u=e.pieRingProps.innerRadius,h=-.5*Math.PI,d=e.pieRingProps.startAngle+h,f=e.pieRingProps.endAngle+h,p=f-d;if(p>=2*Math.PI-1e-6)return`<path d="${`${this.circlePath(a,o,l)} ${this.circlePath(a,o,u)}`}" fill-rule="evenodd" ${s} stroke-linejoin="round" />`;const A=a+u*Math.cos(d),g=o+u*Math.sin(d),m=a+l*Math.cos(d),y=o+l*Math.sin(d),v=a+u*Math.cos(f),x=o+u*Math.sin(f),w=a+l*Math.cos(f),b=o+l*Math.sin(f),T=(p%(2*Math.PI)+2*Math.PI)%(2*Math.PI)>Math.PI?1:0;return`<path d="${`M${At.num(A)} ${At.num(g)}L${At.num(m)} ${At.num(y)}A${At.num(l)} ${At.num(l)} 0 ${T} 1 ${At.num(w)} ${At.num(b)}L${At.num(v)} ${At.num(x)}A${At.num(u)} ${At.num(u)} 0 ${T} 0 ${At.num(A)} ${At.num(g)}Z`}" ${s} stroke-linejoin="round" />`}circlePath(e,r,i){return`M${At.num(e-i)} ${At.num(r)}A${At.num(i)} ${At.num(i)} 0 1 0 ${At.num(e+i)} ${At.num(r)}A${At.num(i)} ${At.num(i)} 0 1 0 ${At.num(e-i)} ${At.num(r)}Z`}fallbackDraw(e,r){const i=e.colorProps,s=e.baseProps,a=e.borderProps,o={x:s.width/2,y:s.height/2},l=.5*Math.min(s.height,s.width);r.arc(o.x,o.y,l,0,2*Math.PI),i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),a.color!==""&&!a.noFill&&a.dashType!==Hn.None&&(ae.setDashLine(a,r),r.strokeStyle=a.color,r.lineWidth=a.width,r.globalAlpha=a.alpha,r.stroke())}nodeShapeInfo(e){const{width:r,height:i}=e.baseProps;return vr.rectangle({top:0,left:0,width:r,height:i})}borderContains(e,r,i){const s=this.nodeShapeInfo(e),a=vr.line({x:r.x-i,y:r.y},{x:r.x+i,y:r.y}),o=vr.line({x:r.x,y:r.y-i},{x:r.x,y:r.y+i});for(const l of[a,o]){const u=er.intersect(s,l);if(u.points.length>0)return u.points[0]}return null}getConnectAnchor(){return[new he(.5,0),new he(1,.5),new he(.5,1),new he(0,.5)]}}class U_ extends rh{constructor(r,i){super(r,i);U(this,"type",X.Pie);U(this,"pieDrawer",new WFe);U(this,"ringDrawer",new VFe);U(this,"editStatus",null);this.props.set(ne.Base,new mr),this.props.set(ne.PieRing,new L1),this.props.set(ne.Color,new zn),this.props.set(ne.Border,new nn),this.props.set(ne.Shape,new Sn)}get drawer(){return this.props.get(ne.Shape).shapeCode===0?this.pieDrawer:this.ringDrawer}get borderProps(){return this.props.get(ne.Border)}get colorProps(){return this.props.get(ne.Color)}get pieRingProps(){return this.props.get(ne.PieRing)}get shapeProps(){return this.props.get(ne.Shape)}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}drawOnGLCtx(r){r.save(),r.beginPath();const{a:i,b:s,c:a,d:o,e:l,f:u}=this.globalTransform();r.transform(i,s,a,o,l,u),this.drawer.draw(this,r),r.restore()}loseFocus(){this.editStatus=null}svgContent(){return this.drawer.toSvg(this)}borderContains(r,i){const s=this.toLocal(r);return this.drawer.borderContains(this,s,i)}contains(r){const{width:i,height:s}=this.baseProps,a=this.toLocal(r),o=new he(i/2,s/2),l=.5*Math.min(i,s);if(l<=0)return!1;const u=a.x-o.x,h=a.y-o.y,d=Math.hypot(u,h);if(d>l||this.shapeProps.shapeCode!==0&&d<this.pieRingProps.innerRadius)return!1;const f=this.normalizeAngle(Math.atan2(h,u)),p=this.normalizeAngle(this.pieRingProps.startAngle+eh),A=this.normalizeAngle(this.pieRingProps.endAngle+eh);return this.isAngleInRange(f,p,A,this.pieRingProps.endAngle-this.pieRingProps.startAngle)}normalizeAngle(r){const i=Math.PI*2;return(r%i+i)%i}isAngleInRange(r,i,s,a){return a>=Math.PI*2?!0:a<=0?!1:i<=s?r>=i&&r<=s:r>=i||r<=s}getStretchMinSize(){return new he(20,20)}getTextContentRect(){return new _t}getConnectAnchor(){return this.drawer.getConnectAnchor()}canQuickCreate(){var r;return((r=this.parent)==null?void 0:r.type)===X.DocContainer?!1:super.canQuickCreate()}canBeConnected(){var r;return((r=this.parent)==null?void 0:r.type)!==X.DocContainer}static load(r,i,s,a,o,l){const u=new U_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class tm extends hp{constructor(r,i){super(r,i);U(this,"type",X.MathFormula);U(this,"svgCode","");this.props.set(ne.Base,new mr),this.props.set(ne.Border,new nn),this.props.set(ne.Color,zn.create({color:"",noFill:!0})),this.props.set(ne.Formula,new Xd),this.props.set(ne.Crop,new iA)}get colorProps(){return this.props.get(ne.Color)}get formulaProps(){return this.props.get(ne.Formula)}get formula(){return this.formulaProps.formula}get resourceKey(){return`${this.colorProps.noFill?"none":`${this.colorProps.color}:${this.colorProps.alpha}`}|${this.formulaProps.fontColor}|${this.formula}`}setSvgCode(r){this.svgCode=r}drawOnGLCtx(r){const i=this.colorProps;if(i.color!==""&&!i.noFill){r.save();const{a:s,b:a,c:o,d:l,e:u,f:h}=this.globalTransform();r.transform(s,a,o,l,u,h),r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fillRect(0,0,this.baseProps.width,this.baseProps.height),r.restore()}super.drawOnGLCtx(r)}exportVectorSvg(){return this.addBackgroundToSvg(this.svgCode)}addBackgroundToSvg(r){if(this.colorProps.color===""||this.colorProps.noFill||r==="")return r;const s=`<rect x="0" y="0" width="100%" height="100%" ${At.fillAttrs(this.colorProps)}/>`;return r.replace(/(<svg[^>]*>)/,`$1${s}`)}static load(r,i,s,a,o,l){const u=new tm(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class YFe{draw(e,r){const i=e.borderProps,s=e.paintProps,{width:a,height:o}=e.baseProps,l=s.points.map(u=>({x:u.x*a,y:u.y*o}));if(!(l.length<1)){if(l.length===1){this.fallbackDraw(l[0],e,r);return}if(!(l.length<3)&&i.color!==""&&!i.noFill&&i.dashType!==Hn.None){r.lineJoin="round",ae.setDashLine(i,r),r.strokeStyle=i.color,r.lineWidth=i.width,r.globalAlpha=i.alpha,r.save(),r.beginPath();for(let u=1;u<l.length-2;u=u+3){const h=l[u-1],d=l[u],f=l[u+1],p=l[u+2];r.moveTo(h.x,h.y),r.bezierCurveTo(d.x,d.y,f.x,f.y,p.x,p.y)}r.stroke(),r.restore()}}}fallbackDraw(e,r,i){const s=r.borderProps;s.color!==""&&!s.noFill&&s.dashType!==Hn.None&&(i.beginPath(),i.arc(e.x,e.y,2,0,Math.PI*2),i.fillStyle=s.color,i.globalAlpha=s.alpha,i.fill())}nodeShapeInfo(e){const{width:r,height:i}=e.baseProps;return vr.rectangle({top:0,left:0,width:r,height:i})}borderContains(e,r,i){const s=this.nodeShapeInfo(e),a=vr.line({x:r.x-i,y:r.y},{x:r.x+i,y:r.y}),o=vr.line({x:r.x,y:r.y-i},{x:r.x,y:r.y+i});for(const l of[a,o]){const u=er.intersect(s,l);if(u.points.length>0)return u.points[0]}return null}getConnectAnchor(){return[new he(.5,0),new he(1,.5),new he(.5,1),new he(0,.5)]}}class $_ extends rh{constructor(r,i){super(r,i);U(this,"type",X.Paint);U(this,"drawer",new YFe);this.props.set(ne.Base,new mr),this.props.set(ne.Border,new nn),this.props.set(ne.Paint,new Iv),this.props.set(ne.Shape,new Sn)}get borderProps(){return this.props.get(ne.Border)}get paintProps(){return this.props.get(ne.Paint)}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}contains(r){const{width:i,height:s}=this.baseProps,a=this.toLocal(r);return ae.rectContains(a,new _t(0,0,i,s))}drawOnGLCtx(r){r.save(),r.beginPath();const{a:i,b:s,c:a,d:o,e:l,f:u}=this.globalTransform();r.transform(i,s,a,o,l,u),this.drawer.draw(this,r),r.restore()}getStretchMinSize(){return new he(4,4)}getTextContentRect(){return new _t}getConnectAnchor(){return this.drawer.getConnectAnchor()}canQuickCreate(){var r;return((r=this.parent)==null?void 0:r.type)===X.DocContainer?!1:super.canQuickCreate()}canBeConnected(){var r;return((r=this.parent)==null?void 0:r.type)!==X.DocContainer}static load(r,i,s,a,o,l){const u=new $_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}const rN=class rN{static getInstance(){return this.instance||(this.instance=new rN),this.instance}create(e,r,i,s,a,o){switch(r){case X.Line:return PA.load(e,r,i,s,a,o);case X.SVG:return e2.load(e,r,i,s,a,o);case X.IMG:return Lv.load(e,r,i,s,a,o);case X.Section:return t2.load(e,r,i,s,a,o);case X.Group:return u4.load(e,r,i,s,a,o);case X.Checkbox:return Ck.load(e,r,i,s,a,o);case X.CheckboxText:return R_.load(e,r,i,s,a,o);case X.SlideContainer:return __.load(e,r,i,s,a,o);case X.DocContainer:return D_.load(e,r,i,s,a,o);case X.MindmapNode:return h4.load(e,r,i,s,a,o);case X.Editable:return O_.load(e,r,i,s,a,o);case X.ChartSection:return F_.load(e,r,i,s,a,o);case X.Pie:return U_.load(e,r,i,s,a,o);case X.MathFormula:return tm.load(e,r,i,s,a,o);case X.Mermaid:return Ek.load(e,r,i,s,a,o);case X.Paint:return $_.load(e,r,i,s,a,o);case X.Shape:default:return Jo.load(e,r,i,s,a,o)}}createByNodeInfo(e,r,i){const s=ae.convertCapInfoToProps(e.capInfo);return this.create(e.id,e.type,e.zIndex,s,r,i)}};U(rN,"instance",null);let la=rN;class H_ extends rh{constructor(r){const s=document.createElement("canvas").getContext("2d");super(r,s);U(this,"type",X.ROOT);U(this,"transform",Qr.generateMatrix())}updateProps(r){}drawOnGLCtx(r){}getTextContentRect(){return new _t}toGlobal(r){return r}toLocal(r){return r}}const Sk=800;class z_{static async getImageSize(e){return new Promise((r,i)=>{const s=URL.createObjectURL(e),a=new Image;a.crossOrigin="anonymous",a.onload=()=>{let o=a.naturalWidth*.5,l=a.naturalHeight*.5;URL.revokeObjectURL(s);const u=o/l;o>l&&o>Sk?(o=Sk,l=o/u):l>o&&l>Sk&&(l=Sk,o=l*u),r({width:o,height:l})},a.onerror=()=>{URL.revokeObjectURL(s),i(new Error("无法加载图片"))},a.src=s})}}class wp extends As{constructor(){super(...arguments);U(this,"type",ne.Mermaid);U(this,"data","")}static from(r){const i=new wp;return i.data=r.data,i}static create(r){const i=new wp;return i.update(r),i}clone(){const r=new wp;return r.data=this.data,r}update(r){const{data:i}=r;i!==void 0&&(this.data=i)}}class Ek extends t2{constructor(r,i){super(r,i);U(this,"type",X.Mermaid);this.props.set(ne.Shape,new Sn),this.props.set(ne.Mermaid,new wp)}get mermaidProps(){return this.props.get(ne.Mermaid)}get data(){return this.mermaidProps.data}static load(r,i,s,a,o,l){const u=new Ek(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class kre extends tA{constructor(){super(...arguments);U(this,"type",zi.RemoveNode)}execData(r,i){for(const s of r.idList){const a=i.nodeManager.getNode(s);a&&(this.effectOnDeleteNode(a,i),i.nodeManager.removeNode(s),i.resourceManager.removeNodeResourceInfo(s))}i.auxiliaryManager.removeHoverGraphics(),i.slotManager.addSlotState(Qn.ImgUrls,i.resourceManager.getImgUrls()),i.renderManager.addContentRenderTask(),i.renderManager.addAuxiliaryDrawTask()}effectOnDeleteNode(r,i){if(i.inputManager.editTextInfo&&i.inputManager.editTextInfo.node.id===r.id&&(i.inputManager.blur(),i.auxiliaryManager.remove(Xe.PlaceHolder),i.auxiliaryManager.selectManager.refreshSelectStatus()),i.auxiliaryManager.selectManager.include(r)){r.loseFocus();const a=i.auxiliaryManager.selectManager.getSelectNodes().filter(o=>o.id!==r.id);i.auxiliaryManager.selectManager.set(new Set(a))}}reverseLog(r,i){var a;const s=[];for(const o of r.idList){const l=i.nodeManager.getNode(o);if(!l){console.error("错误,生成逆消息时节点不存在:",o);continue}const u=[...l.props.values()];s.push({id:l.id,type:l.type,zIndex:l.zIndex,parentId:((a=l.parent)==null?void 0:a.id)||Va,props:u})}return new hn({nodes:s})}}class kt extends rA{constructor(){super(...arguments);U(this,"type",zi.UpdateNode)}static create(r,i,s){const a={id:r,props:i};return new kt({infos:[a]},s)}clone(){const r=JSON.parse(JSON.stringify(this.data));return new kt(r,this.meta)}}class n2{}class Bre extends n2{handle(e,r,i){const s=r.find(l=>l.type===ne.Connect);if(!s)return;const{start:a,end:o}=s;if(a!==void 0)if(a!==null){const l=i.nodeManager.getNode(a.objectId)||null;i.nodeManager.addLink(e,l,!0)}else i.nodeManager.addLink(e,null,!0);if(o!==void 0)if(o!==null){const l=i.nodeManager.getNode(o.objectId)||null;i.nodeManager.addLink(e,l,!1)}else i.nodeManager.addLink(e,null,!1)}}class Pre extends n2{handle(e,r,i){if(!r.find(o=>o.type===ne.MindMap)||e.type!==X.MindmapNode)return;const a=e;i.mindMapManager.addMindMap(a)}}class XFe extends n2{handle(e,r,i){if(e.type!==X.MindmapNode)return;const s=r.find(o=>o.type===ne.Base);if(!s)return;const a=e;s.width===void 0&&s.height===void 0||i.mindMapManager.addMindMap(a)}}class Ire extends n2{handle(e,r,i){const s=r.find(A=>A.type===ne.Formula);if(e.type!==X.MathFormula||!s)return;const a=e,o=a.formulaProps.clone(),l=r.find(A=>A.type===ne.Base),u=(l==null?void 0:l.width)!==void 0,h=(l==null?void 0:l.height)!==void 0,d=this.getFormulaSvgNaturalSize(a),f=d?a.baseProps.width/d.width:1,p=d?a.baseProps.height/d.height:1;o.formula&&Zd.convert(o.formula,o.fontColor).then(A=>{if(i.nodeManager.getNode(a.id)!==a)return;const g=a.formulaProps;g.formula!==o.formula||g.fontColor!==o.fontColor||(i.nodeManager.removeIndexNode(a.getRectNode()),a.setSvgCode(A.svgCode),u||(a.baseProps.width=A.width*f),h||(a.baseProps.height=A.height*p),i.nodeManager.addIndexNode(a.getRectNode()),i.auxiliaryManager.selectManager.refreshSelectStatus(),i.renderManager.addAuxiliaryDrawTask(),i.asyncRenderNodeManager.addRenderNode(a))})}getFormulaSvgNaturalSize(e){const r=e.svgCode.match(/\bwidth="([\d.]+)(?:px)?"/),i=e.svgCode.match(/\bheight="([\d.]+)(?:px)?"/),s=r?Number(r[1]):NaN,a=i?Number(i[1]):NaN;return!Number.isFinite(s)||!Number.isFinite(a)||s<=0||a<=0?null:{width:s,height:a}}}class Lre extends tA{constructor(){super(...arguments);U(this,"type",zi.UpdateNode);U(this,"handlers",[new Bre,new Pre,new XFe,new Ire])}execData(r,i){for(const s of r.infos)this.execNodeInfo(s,i);i.mindMapManager.work(i.nodeManager),i.renderManager.addContentRenderTask()}execNodeInfo(r,i){const{id:s,zIndex:a,props:o,parentId:l}=r,u=i.nodeManager.getNode(s);if(!u){console.error("错误:节点不存在:",s);return}const h=i.auxiliaryManager.selectManager.include(u),d=h?this.getToolBarBounds(u):null;if(this.removeIndexNode(u,i),a!==void 0&&(u.zIndex=a),this.changeParent(u,i,l),o.length>0){u.updateProps(o);for(const f of this.handlers)f.handle(u,o,i);!i.docState.isStreaming&&this.shouldRegenerateSvgBitmap(u,o)&&i.asyncRenderNodeManager.addRenderNode(u)}this.addIndexNode(u,i),h&&(i.auxiliaryManager.selectManager.refreshSelectStatus(),i.renderManager.addAuxiliaryDrawTask(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0),d&&this.boundsChanged(d,this.getToolBarBounds(u))&&i.auxiliaryManager.slotManager.addSlotState(Qn.ForceUpdateToolMenu,!0))}shouldRegenerateSvgBitmap(r,i){return r.type!==X.SVG&&r.type!==X.MathFormula||r.type===X.MathFormula&&i.some(s=>s.type===ne.Formula)?!1:i.some(s=>{if(s.type!==ne.Base)return!1;const a=s;return a.width!==void 0||a.height!==void 0})}getToolBarBounds(r){if(r.type!==X.Line)return r.getBounds();const i=r;return i.isEmptyText()?i.getBounds():i.getRectNode()}boundsChanged(r,i){return r.minX!==i.minX||r.minY!==i.minY||r.maxX!==i.maxX||r.maxY!==i.maxY}changeParent(r,i,s){if(s===void 0||s===r.parent.id)return;const a=i.nodeManager.getNode(s);if(a){if(a===r||this.isDescendantParent(r,a)){console.error("错误:检测到非法父子关系,已阻止形成循环引用:",{nodeId:r.id,parentId:a.id});return}r.parent.children.delete(r),a.children.add(r),r.parent=a}}isDescendantParent(r,i){let s=i;for(;s;){if(s===r)return!0;s=s.parent}return!1}removeIndexNode(r,i){this.walkNodeTree(r,s=>i.nodeManager.removeIndexNode(s.getRectNode()))}addIndexNode(r,i){this.walkNodeTree(r,s=>i.nodeManager.addIndexNode(s.getRectNode()))}walkNodeTree(r,i,s=new Set){if(!s.has(r)){s.add(r),i(r);for(const a of r.children)this.walkNodeTree(a,i,s)}}reverseLog(r,i){const s=[];for(const a of r.infos){const o=i.nodeManager.getNode(a.id);if(!o)continue;const l=o.parent?o.parent.id:i.nodeManager.root.id,u=o.serializeTo(),h=ae.convertCapInfoToProps(u.capInfo);s.push({id:o.id,zIndex:o.zIndex,props:h,parentId:l})}return new kt({infos:s})}}var rm=(n=>(n[n.Node=0]="Node",n[n.BrokenPoint=1]="BrokenPoint",n[n.EditableNodePoint=2]="EditableNodePoint",n))(rm||{});class Tr extends rA{constructor(){super(...arguments);U(this,"type",zi.SelectNode)}static create(r){return new Tr({idList:r,selectType:rm.Node})}static createBrokenPoint(r,i){return new Tr({idList:[r],selectType:rm.BrokenPoint,brokenPointIndex:i})}static createEditableNodePoint(r,i){return new Tr({idList:[r],selectType:rm.EditableNodePoint,editableNodePointIndex:i})}clone(){const r=JSON.parse(JSON.stringify(this.data));return new Tr(r,this.meta)}}class Mre extends tA{constructor(){super(...arguments);U(this,"type",zi.SelectNode)}execData(r,i){i.auxiliaryManager.selectManager.getSelectNodes().forEach(l=>l.loseFocus());const s=r.selectType,a=r.idList,o=new Set;if(a.forEach(l=>{const u=i.nodeManager.getNode(l);u&&o.add(u)}),s===rm.BrokenPoint&&r.brokenPointIndex!==void 0&&o.size===1){const l=Array.from(o)[0];if(l.type===X.Line){const u=l;u.lineStatus={selectPointIndex:r.brokenPointIndex}}}if(s===rm.EditableNodePoint&&r.editableNodePointIndex!==void 0&&o.size===1){const l=Array.from(o)[0];if(l.type===X.Editable){const u=l;u.editStatus={selectPointIndex:r.editableNodePointIndex}}}i.auxiliaryManager.selectManager.set(o),i.renderManager.addAuxiliaryDrawTask(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0)}reverseLog(r,i){const s=i.auxiliaryManager.selectManager.getSelectNodes();if(s.length===1&&s[0].type===X.Line){const o=s[0],l=o.lineStatus;if(l){const u=l.selectPointIndex,h=o.points;if(u>-1&&u<h.length){const d=s[0].id;return Tr.createBrokenPoint(d,u)}}}if(s.length===1&&s[0].type===X.Editable){const o=s[0],l=o.editStatus;if(l){const u=l.selectPointIndex,h=o.editProps.points;if(u>-1&&u<h.length){const d=s[0].id;return Tr.createEditableNodePoint(d,u)}}}const a=s.map(o=>o.id);return Tr.create(a)}}class Tt extends rA{constructor(){super(null);U(this,"type",zi.End)}clone(){return new Tt}}class Nre extends tA{constructor(){super(...arguments);U(this,"type",zi.Start)}execData(r,i){}reverseLog(r,i){return new Tt}}class St extends rA{constructor(){super(null);U(this,"type",zi.Start)}clone(){return new St}}class Rre extends tA{constructor(){super(...arguments);U(this,"type",zi.End)}execData(r,i){}reverseLog(r,i){return new St}}class _re extends tA{constructor(){super(...arguments);U(this,"type",zi.TextFocus)}checkValidNode(r,i){const s=i.nodeManager.getNode(r);if(!s)throw new Error("错误:节点不存在:"+r);const a=s.renderText;return{node:s,renderText:a}}execData(r,i){const{focusType:s,blur:a,selection:o,focus:l}=r;if(s!==xu.Empty){if(i.renderManager.addAuxiliaryDrawTask(),s===xu.Focus){const{id:u,textCursorPosition:h}=l,{node:d,renderText:f}=this.checkValidNode(u,i);d.modifyPosInEditing(h)&&i.renderManager.addContentRenderTask(),i.inputManager.focus({node:d,renderText:f,textCursorPosition:h}),i.auxiliaryManager.selectManager.refreshSelectStatus(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0);return}if(s===xu.Selection){const{id:u,start:h,end:d}=o,{node:f,renderText:p}=this.checkValidNode(u,i);i.inputManager.selection(f,p,h,d),i.auxiliaryManager.selectManager.refreshSelectStatus(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0);return}if(s===xu.Blur){i.inputManager.blur(),i.auxiliaryManager.selectManager.refreshSelectStatus(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0);return}}}reverseLog(r,i){const{focusType:s}=r,a=i.inputManager.editTextInfo,o=i.inputManager.selectionManager.selectionInfo;if(s===xu.Focus){const l=r.focus.id;return a?o?Gt.selection(a.node.id,o.start,o.end):Gt.focus(a.node.id,a.renderText.getTextCursorPosByIndex(a.renderText.getIndexByTextCursorPos(a.textCursorPosition))):Gt.blur(l)}if(s===xu.Blur)return a?o?Gt.selection(a.node.id,o.start,o.end):Gt.focus(a.node.id,a.renderText.getTextCursorPosByIndex(a.renderText.getIndexByTextCursorPos(a.textCursorPosition))):(console.warn("选中消息不符合预期,已容错处理"),Gt.empty());if(s===xu.Selection){const l=r.selection.id;return a?o?Gt.selection(a.node.id,o.start,o.end):Gt.focus(a.node.id,a.renderText.getTextCursorPosByIndex(a.renderText.getIndexByTextCursorPos(a.textCursorPosition))):Gt.blur(l)}return Gt.empty()}}class Xa extends rA{constructor(){super(...arguments);U(this,"type",zi.RemoveNode)}static create(r){return new Xa({idList:r})}clone(){const r=JSON.parse(JSON.stringify(this.data));return new Xa(r,this.meta)}}class qFe extends n2{handle(e,r,i){if(!r.find(o=>o.type===ne.Image)||e.type!==X.IMG)return;const a=e;i.asyncRenderNodeManager.addRenderNode(a)}}let jFe=class extends n2{handle(e,r,i){const s=r.find(o=>o.type===ne.Svg);if(!s||e.type!==X.SVG)return;const a=e;if(a.svgProps.useCode){const o=vu.trimSvgCode(a.svgProps.code);a.setSvgCode(o.svgCode),i.asyncRenderNodeManager.addRenderNode(a);return}i.resourceManager.loadSvgUrl(s.url).then(o=>{const l=vu.trimSvgCode(o);a.setSvgCode(l.svgCode),i.asyncRenderNodeManager.addRenderNode(a)}).catch(o=>{console.error("加载图片出现问题",o),a.setBroken(),i.renderManager.dirtyDraw(e.getBounds())})}};class Dre extends tA{constructor(){super(...arguments);U(this,"type",zi.AddNode);U(this,"handlers",[new qFe,new jFe,new Ire,new Pre]);U(this,"postHandlers",[new Bre])}execData(r,i){const s=r.nodes,a=[];for(const o of s){const l=this.execNodeInfo(o,i);i.nodeManager.addNode(l),a.push({nodeInfo:o,node:l})}for(const{nodeInfo:o,node:l}of a)for(const u of this.postHandlers)u.handle(l,o.props,i);i.mindMapManager.work(i.nodeManager),i.renderManager.addContentRenderTask()}execNodeInfo(r,i){const s=i.gmlRender.glCtx,a=i.nodeManager.getParentNode(r.parentId),o=la.getInstance().create(r.id,r.type,r.zIndex,r.props,a,s);for(const l of this.handlers)l.handle(o,r.props,i);return o}reverseLog(r,i){const s=r.nodes.map(a=>a.id);return new Xa({idList:s})}}const Ore=[new Dre,new kre,new Lre,new Mre,new _re,new Nre,new Rre];class d4{}class KFe extends d4{constructor(){super(...arguments);U(this,"slideContainer",null)}enable(r,i){if(r.meta.streaming||i.docState.docMode!==Hr.SLIDE_EDIT)return!1;const s=i.docState.slideStatus.slideContainer;return s?(this.slideContainer=s,!0):!1}handle(r,i){this.slideContainer&&this.handleRemoveLog(r,i,this.slideContainer)}handleRemoveLog(r,i,s){if(r.type===zi.RemoveNode){const a=r.data;for(const o of a.idList){const l=i.nodeManager.getNode(o);if(!l)continue;const u=ae.judgeSlideSectionChildren(l,s);u&&i.slideManager.slideCoverManager.updateSlideCover(u)}}}}class ZFe extends d4{constructor(){super(...arguments);U(this,"slideContainer",null)}enable(r,i){if(r.meta.streaming||i.docState.docMode!==Hr.SLIDE_EDIT)return!1;const s=i.docState.slideStatus.slideContainer;return s?(this.slideContainer=s,!0):!1}handle(r,i){this.slideContainer&&this.handleUpdateLog(r,i,this.slideContainer)}handleUpdateLog(r,i,s){if(r.type===zi.UpdateNode){const a=r.data;for(const o of a.infos){const l=i.nodeManager.getNode(o.id);!l||l.id!==s.id||!o.props.find(h=>h.type===ne.Slide)||i.slideManager.slideCoverManager.updateSlideContainerCover(s)}}}}class JFe extends d4{constructor(){super(...arguments);U(this,"slideContainer",null)}enable(r,i){if(r.meta.streaming||i.docState.docMode!==Hr.SLIDE_EDIT)return!1;const s=i.docState.slideStatus.slideContainer;return s?(this.slideContainer=s,!0):!1}handle(r,i){this.slideContainer&&(this.handleUpdateLog(r,i,this.slideContainer),this.handleAddLog(r,i,this.slideContainer))}handleUpdateLog(r,i,s){var a;if(r.type===zi.UpdateNode){const o=r.data;for(const l of o.infos){const u=i.nodeManager.getNode(l.id);if(!u)continue;if(((a=u.parent)==null?void 0:a.id)===s.id&&this.judgeOnlyPosChange(l.props,u)){this.judgeSlideEditCurrent(u,i)&&(console.log("协同端正在更新此幻灯片位置,触发器重置视图"),setTimeout(()=>{i.slideManager.refocusSlide(i,50)},10));continue}if(u.id===s.id){const d=i.renderManager.getScale(),f=this.judgeOnlyPosChange(l.props,u);if(f){i.renderManager.scroll(f.x*d,f.y*d);continue}}const h=ae.judgeSlideSectionRelatedNode(u,s,i);h&&i.slideManager.slideCoverManager.updateSlideCover(h)}}}judgeSlideEditCurrent(r,i){const s=i.docState.slideStatus;return s.slideContainer?s.slideContainer.getChildIdByIndex(s.currentIndex)===r.id:!1}judgeOnlyPosChange(r,i){if(r.length!==1)return null;const s=r[0];if(s.type!==ne.Base)return null;const a=i.baseProps,o=s.width===void 0||Math.abs(s.width-a.width)<.1;if(!(s.height===void 0||Math.abs(s.height-a.height)<.1)||!o)return null;if(s.x!==void 0||s.y!==void 0){const u=new he;return s.x!==void 0&&(u.x=s.x-a.x),s.y!==void 0&&(u.y=s.y-a.y),u}return null}handleAddLog(r,i,s){if(r.type===zi.AddNode){const a=r.data;for(const o of a.nodes){const l=i.nodeManager.getNode(o.parentId);if(!l)continue;const u=ae.judgeSlideSectionRelatedNode(l,s,i);u&&i.slideManager.slideCoverManager.updateSlideCover(u)}}}}class eUe extends d4{enable(e,r){return e.meta.streaming?!1:e.type===zi.UpdateNode}handle(e,r){const i=e.data;for(const s of i.infos){if(!this.containsLineStyleProps(s.props))continue;const a=r.nodeManager.getNode(s.id);!a||a.type!==X.Line||Qte(r.memoryManager,a)}}containsLineStyleProps(e){return e.some(r=>r.type===ne.Border||r.type===ne.Shape||r.type===ne.Arrow)}}class tUe extends d4{enable(e,r){return e.meta.streaming?!1:e.type===zi.UpdateNode}handle(e,r){const i=e.data;for(const s of i.infos){if(!this.containsTextStyleProps(s.props))continue;const a=r.nodeManager.getNode(s.id),o=this.getTextProps(a);o&&r.memoryManager.remember(qh.TextStyle,{fontColor:o.fontColor,fontBgColor:o.fontBgColor,noFill:o.noFill,bgNoFill:o.bgNoFill})}}containsTextStyleProps(e){return e.some(r=>r.type===ne.Text&&("fontColor"in r||"fontBgColor"in r||"noFill"in r||"bgNoFill"in r))}getTextProps(e){return e?e.getProp(ne.Text):null}}class Fre{constructor(e){U(this,"executors",new Map);U(this,"ctx");U(this,"beforeInterceptors",[new KFe,new ZFe]);U(this,"afterInterceptors",[new JFe,new eUe,new tUe]);for(const r of e)this.executors.set(r.type,r)}init(e){this.ctx=e}exec(e,r){const i=this.executors.get(e.type);if(!i){console.error("缺乏对应的消息处理器,已忽略该消息");return}for(const s of this.beforeInterceptors)s.enable(e,this.ctx)&&s.handle(e,this.ctx);i.exec(e,r);for(const s of this.afterInterceptors)s.enable(e,this.ctx)&&s.handle(e,this.ctx)}}class Ure{constructor(){U(this,"undoStack",[]);U(this,"redoStack",[])}add(e){const r=e.reverse();this.undoStack.push(r),this.redoStack=[]}undo(e,r){const i=this.undoStack.pop()||null;if(!i)return null;for(const s of i.actionLogs)e.exec(s,r);return this.redoStack.push(i.reverse()),i}redo(e,r){const i=this.redoStack.pop()||null;if(!i)return null;for(const s of i.actionLogs)e.exec(s,r);return this.undoStack.push(i.reverse()),i}}class kk{constructor(e=[]){U(this,"actionLogs",[]);this.actionLogs=e}reverse(){const e=new kk;for(let r=this.actionLogs.length-1;r>-1;r--){const i=this.actionLogs[r];e.actionLogs.push(i.reverse())}return e}}class $re{constructor(){U(this,"cacheLogs",[]);U(this,"duringGroup",!1)}add(e){e.type===zi.Start&&(this.duringGroup=!0),this.cacheLogs.push(e),e.type===zi.End&&(this.duringGroup=!1)}getActionGroup(){if(this.duringGroup)return null;const e=new kk(this.cacheLogs);return this.cacheLogs=[],e}}const Hre=new Set([zi.Start,zi.End,zi.SelectNode,zi.TextFocus]);class zre{constructor(e,r,i,s,a,o,l,u,h,d,f,p,A){U(this,"execCtx");U(this,"executor");U(this,"undoManager");U(this,"networkPlugin",null);U(this,"actionCache");U(this,"renderManager");U(this,"docState");this.executor=new Fre(Ore),this.undoManager=new Ure,this.renderManager=o,this.execCtx={inputManager:r,nodeManager:e,gmlRender:i,auxiliaryManager:s,toolManager:a,renderManager:this.renderManager,resourceManager:l,idGenerator:h,slotManager:d,asyncRenderNodeManager:f,docState:u,slideManager:p,mindMapManager:A},this.actionCache=new $re,this.docState=u}addNetworkPlugin(e){this.networkPlugin=e}execAction(e){var i;this.dealDocSeq(e),this.executor.exec(e,this.execCtx),Hre.has(e.type)||(i=this.networkPlugin)==null||i.addMessage(e),this.actionCache.add(e);const r=this.actionCache.getActionGroup();r&&this.undoManager.add(r)}dealDocSeq(e){Hre.has(e.type)||this.docState.seq++}undo(){var r;const e=this.undoManager.undo(this.executor,this.execCtx);e&&((r=this.networkPlugin)==null||r.addActionGroup(e))}redo(){var r;const e=this.undoManager.redo(this.executor,this.execCtx);e&&((r=this.networkPlugin)==null||r.addActionGroup(e))}}function rUe(n){return n.type===zi.AddNode?{addNodeData:{data:n.data.nodes.map(i=>{const s=i.props,a=new Map;s.forEach(u=>a.set(u.type,u));const o=ae.convertPropsToCapInfo(a);return{id:i.id,type:i.type,zIndex:i.zIndex,parentId:i.parentId,capInfo:o}})}}:n.type===zi.UpdateNode?{updateNodeData:{data:n.data.infos.map(i=>{const s=i.props,a=new Map;s.forEach(u=>a.set(u.type,u));const o=ae.convertPropsToCapInfo(a);return{id:i.id,zIndex:i.zIndex,parentId:i.parentId,capInfo:o}})}}:n instanceof Xa?{removeNodeData:{data:n.data.idList}}:null}function nUe(n){const{updateNodeData:e,addNodeData:r,removeNodeData:i}=n;if(r){const s=[];for(const a of r.data)s.push({id:a.id,parentId:a.parentId,zIndex:a.zIndex,type:a.type,props:ae.convertCapInfoToProps(a.capInfo)});return new hn({nodes:s})}if(e){const s=[];for(const a of e.data)s.push({id:a.id,zIndex:a.zIndex,parentId:a.parentId,props:ae.convertCapInfoToProps(a.capInfo)});return new kt({infos:s})}if(i)return Xa.create(i.data);throw new Error("类型转换错误!")}const Bk=.04,Pk=4;class Q_{static isMobile(){const e=navigator.userAgent||navigator.vendor||window.opera;if(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i.test(e.toLowerCase()))return!0;const i="ontouchstart"in window||navigator.maxTouchPoints>0,s=window.innerWidth<768;return i&&s}}const Qre=20,Gre=10;class iUe{zoomScale(e,r,i){const s=i.getScale();let a=e;s*e>Pk&&(a=Pk/s),s*e<Bk&&(a=Bk/s),this.zoomToScale(a,r,i.gmlRender),this.zoomToScale(a,r,i.auxiliaryManager.gmlRender);const o=i.getScale();i.slotManager.addSlotState(Qn.Scale,o),i.addContentRenderTask(),i.addAuxiliaryDrawTask()}zoomToSelect(e){if(e.auxiliaryManager.selectManager.getSelectNodes().length===0)return;const i=e.auxiliaryManager.selectManager.getSelectBounds();this.zoomToBounds(i,e)}zoomToFit(e){if(e.nodeManager.nodeMap.size===0){this.zoomTo100(e);return}const i=e.nodeManager.getNodeBounds();this.zoomToBounds(i,e)}zoomTo100(e){const r=e.gmlRender.canvas.getBoundingClientRect(),i=window.devicePixelRatio,s=1*i,a=new he(.5*i*r.width,.5*i*r.height);let o;if(e.nodeManager.nodeMap.size>0){const d=e.nodeManager.getNodeBounds();o=new he(.5*(d.minX+d.maxX),.5*(d.minY+d.maxY))}else{const{a:d,e:f,f:p}=e.gmlRender.globalTransform;o=new he((a.x-f)/d,(a.y-p)/d)}const u=new he(-o.x*s+a.x,-o.y*s+a.y);this.zoomToMatrix(s,u.x,u.y,e.gmlRender),this.zoomToMatrix(s,u.x,u.y,e.auxiliaryManager.gmlRender);const h=e.getScale();e.slotManager.addSlotState(Qn.Scale,h),e.addContentRenderTask(),e.addAuxiliaryDrawTask()}zoomToBounds(e,r,i){const s=Q_.isMobile()?Gre:Qre,a=i!==void 0?i:s,o=_t.rectNode2Rect(e),l=r.gmlRender.canvas.getBoundingClientRect(),u=window.devicePixelRatio,h=l.width-a*2*u,d=l.height-a*2*u,f=h/o.width,p=d/o.height,A=Math.min(Math.max(Math.min(f,p),Bk),Pk)*u,g=new he(.5*u*l.width,.5*u*l.height),m=new he(.5*(e.minX+e.maxX),.5*(e.minY+e.maxY)),y=new he(-m.x*A+g.x,-m.y*A+g.y);this.zoomToMatrix(A,y.x,y.y,r.gmlRender),this.zoomToMatrix(A,y.x,y.y,r.auxiliaryManager.gmlRender);const v=r.getScale();r.slotManager.addSlotState(Qn.Scale,v),r.addContentRenderTask(),r.addAuxiliaryDrawTask()}ensureBoundsVisible(e,r,i){const s=Q_.isMobile()?Gre:Qre,a=i!==void 0?i:s,o=r.gmlRender.canvas.getBoundingClientRect(),l=window.devicePixelRatio,u=r.getScale(),h=a/u,d=r.gmlRender.getViewPortBounds(),f={minX:d.minX+h,minY:d.minY+h,maxX:d.maxX-h,maxY:d.maxY-h};if(f.minX<=e.minX&&f.minY<=e.minY&&f.maxX>=e.maxX&&f.maxY>=e.maxY)return;const A=_t.rectNode2Rect(e),g=o.width-a*2*l,m=o.height-a*2*l;if(g<=0||m<=0||A.width<=0||A.height<=0)return;const y=new he(.5*(d.minX+d.maxX),.5*(d.minY+d.maxY)),v=Math.max(Math.abs(e.minX-y.x),Math.abs(e.maxX-y.x)),x=Math.max(Math.abs(e.minY-y.y),Math.abs(e.maxY-y.y)),w=Math.min(g/(2*v),m/(2*x))*l,b=Math.min(u*l,w);b>=u*l||this.zoomScale(b/(u*l),y,r)}zoomToScale(e,r,i){i.scale(e,e,r);const s=i.glCtx,{a,b:o,c:l,d:u,e:h,f:d}=i.globalTransform;s.setTransform(a,o,l,u,h,d)}zoomToMatrix(e,r,i,s){const a=e,o=e,l=r,u=i;s.setTransform(a,0,0,o,l,u)}}class sUe{exportToOfflineCanvas(e,r,i,s){const a=_t.rectNode2Rect(e),o=document.createElement("canvas");o.width=i*a.width,o.height=i*a.height;const l=o.getContext("2d");l.scale(i,i),l.translate(-a.x,-a.y);let u=r.searchNodesByRectNode(e);u=ae.sortGraphics(u),l.save(),s&&(l.fillStyle=s,l.fillRect(a.x,a.y,a.width,a.height)),l.restore();for(const h of u)h.drawOnGLCtx(l);return o}exportToOfflineCanvasByFilterNodes(e,r,i,s,a){const o=_t.rectNode2Rect(e),l=document.createElement("canvas");l.width=i*o.width,l.height=i*o.height;const u=l.getContext("2d");u.scale(i,i),u.translate(-o.x,-o.y);let h=r.searchNodesByRectNode(e);h=ae.sortGraphics(h),u.save(),s&&(u.fillStyle=s,u.fillRect(o.x,o.y,o.width,o.height)),u.restore();for(const d of h)a.has(d)&&d.drawOnGLCtx(u);return l}}class Ik{}var jh=(n=>(n[n.None=0]="None",n[n.DotGrid=1]="DotGrid",n[n.LineGrid=2]="LineGrid",n))(jh||{});class aUe extends Ik{enable(e,r){return e?r.auxiliaryManager.selectManager.docState.docMode===Hr.SLIDE_PLAY:!1}draw(e,r){const i=e.getBounds(),s=ae.computeRelatedSlideSectionChildrenNode(e,{nodeManager:r.nodeManager}),a=ae.sortGraphics([e,...s]);r.gmlRender.dirtyDraw(i,a,jh.None),r.contentDraw=!1}}class oUe extends Ik{enable(e,r){return e?r.auxiliaryManager.selectManager.docState.docMode===Hr.SLIDE_EDIT:!1}draw(e,r){const i=r.gmlRender.getViewPortBounds(),s=ae.computeRelatedSlideSectionChildrenNode(e,{nodeManager:r.nodeManager}),a=ae.sortGraphics([e,...s]);r.gmlRender.dirtyDraw(i,a,jh.None),r.contentDraw=!1}}class lUe extends Ik{enable(e,r){return!0}draw(e,r){const i=r.gmlRender.getViewPortBounds(),s=r.nodeManager.tree.search(i),a=new Set;for(const l of s){const u=r.nodeManager.nodeMap.get(l.id);u&&a.add(u)}let o=[...a];o=ae.sortGraphics(o),r.gmlRender.dirtyDraw(i,o,r.docState.gridType),r.contentDraw=!1}}class cUe extends Ik{enable(e,r){return e?r.auxiliaryManager.selectManager.docState.docMode===Hr.DOC_EDIT:!1}draw(e,r){const i=r.gmlRender.getViewPortBounds(),s=new Set;ae.getAllChildren(e,s);const a=ae.sortGraphics([e,...s]);r.gmlRender.dirtyDraw(i,a,jh.None),r.contentDraw=!1}}class Wre{constructor(e,r,i,s,a){U(this,"gmlRender");U(this,"nodeManager");U(this,"auxiliaryManager");U(this,"slotManager");U(this,"zoomWorker",new iUe);U(this,"exportWorker",new sUe);U(this,"drawModes",[new aUe,new oUe,new cUe,new lUe]);U(this,"working",!1);U(this,"nextContentDrawCompleteCallbacks",new Set);U(this,"contentDraw",!1);U(this,"auxiliaryDraw",!1);U(this,"focusId","");U(this,"docState");U(this,"tickerRun",()=>{this.flushDrawTasks(),this.working&&requestAnimationFrame(this.tickerRun)});this.gmlRender=e,this.nodeManager=r,this.auxiliaryManager=i,this.slotManager=s,this.docState=a}getScale(){return this.gmlRender.getScale()}zoomScale(e,r){this.zoomWorker.zoomScale(e,r,this)}zoomToFit(){this.zoomWorker.zoomToFit(this)}zoomToSelect(){this.zoomWorker.zoomToSelect(this)}zoomTo100(){this.zoomWorker.zoomTo100(this)}exportOfflineCanvas(e,r,i){return this.exportWorker.exportToOfflineCanvas(e,this.nodeManager,r,i)}exportOfflineCanvasByFilterNodes(e,r,i,s){return this.exportWorker.exportToOfflineCanvasByFilterNodes(e,this.nodeManager,r,i,s)}exportNodesImg(e,r,i=""){const s=[];for(const a of e){const o=this.nodeManager.getNode(a);o&&s.push(o.getBounds())}if(s.length===0){const a={minX:0,minY:0,maxX:600,maxY:600};return this.exportOfflineCanvas(a,r,i)}return this.exportOfflineCanvas(ae.getBounds(s),r,i)}scroll(e,r){this.scrollTo(e,r,this.gmlRender),this.scrollTo(e,r,this.auxiliaryManager.gmlRender),this.addContentRenderTask(),this.addAuxiliaryDrawTask()}start(){this.working=!0,this.tickerRun()}stop(){this.working=!1}onNextContentDrawComplete(e){return this.nextContentDrawCompleteCallbacks.add(e),()=>{this.nextContentDrawCompleteCallbacks.delete(e)}}addAuxiliaryDrawTask(){this.auxiliaryDraw=!0}addContentRenderTask(){this.contentDraw=!0}dirtyDraw(e){const r=this.nodeManager.tree.search(e),i=new Set;for(const o of r){const l=this.nodeManager.nodeMap.get(o.id);l&&i.add(l)}let s=[...i];s=ae.sortGraphics(s);const a=this.judgeFocusNode();if(a){const o=ae.computeRelatedSlideSectionChildrenNode(a,{nodeManager:this.nodeManager});o.add(a),s=s.filter(l=>o.has(l))}this.gmlRender.dirtyDraw(e,s,this.docState.gridType)}drawAsSvg(e,r){if(hE.reset(),r&&r.size>0){const l=ae.sortGraphics([...r]);return this.gmlRender.drawSvg(e,l,this.docState.gridType)}const i=this.nodeManager.tree.search(e),s=new Set;for(const l of i){const u=this.nodeManager.nodeMap.get(l.id);u&&s.add(u)}let a=[...s];a=ae.sortGraphics(a);const o=this.judgeFocusNode();if(o){const l=ae.computeRelatedSlideSectionChildrenNode(o,{nodeManager:this.nodeManager});l.add(o),a=a.filter(u=>l.has(u))}return this.gmlRender.drawSvg(e,a,this.docState.gridType)}flushDrawTasks(){if(this.contentDraw){const e=this.judgeFocusNode();for(const r of this.drawModes)if(r.enable(e,this)){r.draw(e,this),this.notifyNextContentDrawComplete();break}}this.auxiliaryDraw&&(this.auxiliaryManager.redraw(),this.auxiliaryDraw=!1)}scrollTo(e,r,i){const s=i.getScale();i.translation(-e/s,-r/s);const a=i.glCtx,{a:o,b:l,c:u,d:h,e:d,f}=i.globalTransform;a.setTransform(o,l,u,h,d,f)}notifyNextContentDrawComplete(){if(this.nextContentDrawCompleteCallbacks.size===0)return;const e=[...this.nextContentDrawCompleteCallbacks];this.nextContentDrawCompleteCallbacks.clear(),e.forEach(r=>r())}judgeFocusNode(){if(this.focusId){const e=this.nodeManager.nodeMap.get(this.focusId);if(e)return e}return null}}const uUe={default:"default"};class Vre{constructor(){U(this,"currentCursor","default");U(this,"currentAngle")}resetCursor(){this.currentCursor=null}setCursor(e,r){if(this.currentCursor!==null){const s=r!==void 0?`${e}-${r}`:e;if((this.currentAngle!==void 0?`${this.currentCursor}-${this.currentAngle}`:this.currentCursor)===s)return}if(e==="stretch"&&r!==void 0){const s=this.generateRotatedStretchCursorSvg(r),o=`url("data:image/svg+xml,${encodeURIComponent(s)}") 16 16, auto`;document.body.style.cursor=o,this.currentCursor=e,this.currentAngle=r;return}if(e==="rotate"&&r!==void 0){const s=this.generateRotatedRotateCursorSvg(r),o=`url("data:image/svg+xml,${encodeURIComponent(s)}") 16 16, auto`;document.body.style.cursor=o,this.currentCursor=e,this.currentAngle=r;return}const i=uUe[e];i?document.body.style.cursor=i:document.body.style.cursor=e,this.currentCursor=e,this.currentAngle=void 0}generateRotatedStretchCursorSvg(e){return`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
|
|
263
|
+
`)}drawText(r){let{alpha:i}=this.getProp(ne.Color);this.checkStatus&&(i=i*.6),r.save(),r.beginPath();const s=this.globalPos;this.renderText.draw(r,new he(s.x,s.y),i),r.restore()}isEmptyText(){return this.renderText.isEmptyText()}checkboxContain(r){const i=this.chickSize,s=this.toLocal(r);return ae.rectContains(s,new _t(0,An+this.checkboxTopPadding,i,i))}getTextContentRect(){const{width:r,height:i}=this.baseProps,s=this.chickSize;return{x:s+An,y:An,width:r-2*An-s-Sre,height:i-2*An}}getRenderText(){return this.renderText}static load(r,i,s,a,o,l){const u=new R_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class __ extends rh{constructor(r,i){super(r,i);U(this,"type",X.SlideContainer);this.props.set(ne.Base,new mr),this.props.set(ne.Slide,new Dc)}get slideProps(){return this.props.get(ne.Slide)}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}drawOnGLCtx(r){const{width:i,height:s}=this.baseProps,{a,b:o,c:l,d:u,e:h,f:d}=this.globalTransform();r.save(),r.transform(a,o,l,u,h,d),r.shadowColor="rgba(0, 0, 0, 0.1)",r.shadowBlur=15,r.shadowOffsetX=0,r.shadowOffsetY=6,r.fillStyle="rgba(255, 255, 255, 0.6)",r.beginPath(),r.roundRect(0,0,i,s,8),r.fill(),r.shadowColor="transparent",r.fillStyle="rgba(240, 242, 245, 0.5)",r.fill(),r.strokeStyle="rgba(0, 0, 0, 0.1)",r.lineWidth=1,r.stroke(),r.restore()}canQuickCreate(){return!1}getStretchMinSize(){return{x:20,y:20}}getTextContentRect(){return this.baseProps}static load(r,i,s,a,o,l){const u=new __(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}getChildIdByIndex(r){const i=this.slideProps.children;let s=0;for(let a=0;a<i.length;a++){if(r<s+i[a].ids.length){const o=r-s;return i[a].ids[o]}s+=i[a].ids.length}return null}getTotalCount(){return this.slideProps.children.reduce((i,s)=>i+s.ids.length,0)}}class D_ extends rh{constructor(r,i){super(r,i);U(this,"type",X.DocContainer);U(this,"inDocEditMode",!1);this.props.set(ne.Base,new mr),this.props.set(ne.Doc,new I1)}get docProps(){return this.props.get(ne.Doc)}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}drawOnGLCtx(r){const{width:i,height:s}=this.baseProps,{a,b:o,c:l,d:u,e:h,f:d}=this.globalTransform();r.save(),r.transform(a,o,l,u,h,d),this.inDocEditMode||(r.shadowColor="rgba(0, 0, 0, 0.08)",r.shadowBlur=20,r.shadowOffsetX=0,r.shadowOffsetY=4,r.fillStyle="rgba(240, 242, 245, 0.6)",r.beginPath(),r.roundRect(0,0,i,s,12),r.fill(),r.shadowColor="transparent",r.strokeStyle="rgba(0, 0, 0, 0.08)",r.lineWidth=1,r.stroke());const f=kA,p=kA,A=i-kA*2,g=s-kA*2;r.shadowColor="rgba(0, 0, 0, 0.1)",r.shadowBlur=10,r.shadowOffsetX=0,r.shadowOffsetY=2,r.fillStyle="#ffffff",r.beginPath(),r.roundRect(f,p,A,g,4),r.fill(),r.shadowColor="transparent",r.strokeStyle="rgba(0, 0, 0, 0.06)",r.lineWidth=.5,r.stroke(),r.restore()}canQuickCreate(){return!1}getTextContentRect(){return this.baseProps}static load(r,i,s,a,o,l){const u=new D_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class r2{}class RFe extends r2{refreshBox(e){const r=e.mindmapChildren,i=e.getBounds();if(r.length===0){e.layoutbox={rect:{x:0,y:0,width:i.maxX-i.minX,height:i.maxY-i.minY},dx:0,dy:0};return}let s=0,a=0;for(const l of r){const u=l.layoutbox.rect;s=Math.max(s,u.width),a+=u.height}const o=a;a=Math.max(a,i.maxY-i.minY),e.layoutbox={rect:{x:0,y:0,width:s+i.maxX-i.minX+ho,height:a+Ko*(r.length-1)},dx:0,dy:.5*(a-o)}}layoutBox(e){const r=e.layoutbox.rect,i=e.layoutbox.dy,s=e.mindmapChildren;if(s.length===0)return;let o=r.y+i;for(let l=0;l<s.length;l++){const h=s[l].layoutbox.rect;h.x=e.baseProps.x-h.width-ho,h.y=o,o+=h.height+Ko}}updateNodePosition(e,r){const i=e.layoutbox.rect,s=e.baseProps;r.removeIndexNode(e.getBounds()),s.x=i.x+i.width-s.width,s.y=i.y+.5*i.height-.5*s.height,e.updateTransformMatrix(),r.addIndexNode(e.getBounds())}}class _Fe extends r2{refreshBox(e){const r=e.mindmapChildren,i=e.getBounds();if(r.length===0){e.layoutbox={rect:{x:0,y:0,width:i.maxX-i.minX,height:i.maxY-i.minY},dx:0,dy:0};return}let s=0,a=0;for(const l of r){const u=l.layoutbox.rect;s=Math.max(s,u.width),a+=u.height}const o=a;a=Math.max(a,i.maxY-i.minY),e.layoutbox={rect:{x:0,y:0,width:s+i.maxX-i.minX+ho,height:a+Ko*(r.length-1)},dx:0,dy:.5*(a-o)}}layoutBox(e){const r=e.layoutbox.rect,i=e.layoutbox.dy,s=e.mindmapChildren;if(s.length===0)return;const a=r.y+i,o=e.baseProps.x+e.baseProps.width+ho;let l=a;for(let u=0;u<s.length;u++){const d=s[u].layoutbox.rect;d.x=o,d.y=l,l+=d.height+Ko}}updateNodePosition(e,r){const i=e.layoutbox.rect,s=e.baseProps;r.removeIndexNode(e.getBounds()),s.x=i.x,s.y=i.y+.5*i.height-.5*s.height,e.updateTransformMatrix(),r.addIndexNode(e.getBounds())}}class DFe extends r2{refreshBox(e){const r=e.mindmapChildren,i=e.getBounds();if(r.length===0){e.layoutbox={rect:{x:0,y:0,width:i.maxX-i.minX,height:i.maxY-i.minY},dx:0,dy:0};return}let s=0,a=0;for(const l of r){const u=l.layoutbox.rect;s+=u.width,a=Math.max(a,u.height)}const o=s;s=Math.max(s,i.maxX-i.minX),e.layoutbox={rect:{x:0,y:0,width:s+ho*(r.length-1),height:a+i.maxY-i.minY+Ko},dx:.5*(s-o),dy:0}}layoutBox(e){const r=e.layoutbox.rect,i=e.layoutbox.dx,s=e.mindmapChildren;if(s.length===0)return;const a=r.x+i,o=e.baseProps.y+e.baseProps.height+Ko;let l=a;for(let u=0;u<s.length;u++){const d=s[u].layoutbox.rect;d.x=l,d.y=o,l+=d.width+ho}}updateNodePosition(e,r){const i=e.layoutbox.rect,s=e.baseProps;r.removeIndexNode(e.getBounds()),s.x=i.x+.5*i.width-.5*s.width,s.y=i.y,e.updateTransformMatrix(),r.addIndexNode(e.getBounds())}}class OFe extends r2{refreshBox(e){const r=e.subMindMapChildren,i=e.mindmapChildren,s=e.getBounds();if(r.length===0&&i.length===0){e.layoutbox={rect:{x:0,y:0,width:s.maxX-s.minX,height:s.maxY-s.minY},dx:0,dy:0};return}let a=0,o=0;for(const f of r){const p=f.layoutbox.rect;a+=p.width,o=Math.max(o,p.height)}r.length>0&&(a+=ho*(r.length-1));let l=0,u=0;for(const f of i){const p=f.layoutbox.rect;l+=p.width,u=Math.max(u,p.height)}i.length>0&&(l+=ho*(i.length-1));let h=s.maxY-s.minY;r.length>0&&(h+=o+Ko),i.length>0&&(h+=u+Ko);const d=Math.max(a,l);e.layoutbox={rect:{x:0,y:0,width:Math.max(d,s.maxX-s.minX),height:h},dx:0,dy:0}}layoutBox(e){const r=e.subMindMapChildren,i=e.mindmapChildren,s=e.layoutbox.rect;if(r.length>0){let a=0;for(const h of r)a+=h.layoutbox.rect.width;a+=ho*(r.length-1);const o=s.x+.5*s.width-a/2,l=s.y;let u=o;for(const h of r){const d=h.layoutbox.rect;d.x=u,d.y=l,u+=d.width+ho}}if(i.length>0){let a=0;for(const h of i)a+=h.layoutbox.rect.width;a+=ho*(i.length-1);const o=s.x+.5*s.width-a/2,l=e.baseProps.y+e.baseProps.height+Ko;let u=o;for(const h of i){const d=h.layoutbox.rect;d.x=u,d.y=l,u+=d.width+ho}}}updateNodePosition(e,r){}}class FFe extends r2{refreshBox(e){const r=e.mindmapChildren,i=e.getBounds();if(r.length===0){e.layoutbox={rect:{x:0,y:0,width:i.maxX-i.minX,height:i.maxY-i.minY},dx:0,dy:0};return}let s=0,a=0;for(const l of r){const u=l.layoutbox.rect;s+=u.width,a=Math.max(a,u.height)}const o=s;s=Math.max(s,i.maxX-i.minX),e.layoutbox={rect:{x:0,y:0,width:s+ho*(r.length-1),height:a+i.maxY-i.minY+Ko},dx:.5*(s-o),dy:0}}layoutBox(e){const r=e.layoutbox.rect,i=e.layoutbox.dx,s=e.mindmapChildren;if(s.length===0)return;const a=r.x+i,o=e.baseProps.y-s[0].layoutbox.rect.height-Ko;let l=a;for(let u=0;u<s.length;u++){const d=s[u].layoutbox.rect;d.x=l,d.y=o,l+=d.width+ho}}updateNodePosition(e,r){const i=e.layoutbox.rect,s=e.baseProps;r.removeIndexNode(e.getBounds()),s.x=i.x+.5*i.width-.5*s.width,s.y=i.y+i.height-s.height,e.updateTransformMatrix(),r.addIndexNode(e.getBounds())}}class UFe extends r2{refreshBox(e){const r=e.subMindMapChildren,i=e.mindmapChildren,s=e.getBounds();if(r.length===0&&i.length===0){e.layoutbox={rect:{x:0,y:0,width:s.maxX-s.minX,height:s.maxY-s.minY},dx:0,dy:0};return}let a=0,o=0;for(const d of r){const f=d.layoutbox.rect;a=Math.max(a,f.width),o+=f.height}r.length>0&&(o+=Ko*(r.length-1));let l=0,u=0;for(const d of i){const f=d.layoutbox.rect;l=Math.max(l,f.width),u+=f.height}i.length>0&&(u+=Ko*(i.length-1));let h=e.baseProps.width;if(r.length>0&&(h+=a+ho),i.length>0&&(h+=l+ho),e.layoutbox={rect:{x:0,y:0,width:h,height:Math.max(o,u,s.maxY-s.minY)},dx:0,dy:0},!e.mindMapParent){const d=e.layoutbox.rect;r.length>0?d.x=e.baseProps.x-a-ho:d.x=e.baseProps.x,d.y=e.baseProps.y+.5*e.baseProps.height-.5*d.height}}layoutBox(e){const r=e.subMindMapChildren,i=e.mindmapChildren;if(r.length>0){let s=0;for(const l of r)s+=l.layoutbox.rect.height;s+=Ko*(r.length-1);let o=e.baseProps.y+.5*e.baseProps.height-s/2;for(const l of r){const u=l.layoutbox.rect;u.x=e.baseProps.x-l.layoutbox.rect.width-ho,u.y=o,o+=u.height+Ko}}if(i.length>0){let s=0;for(const u of i)s+=u.layoutbox.rect.height;s+=Ko*(i.length-1);const a=e.baseProps.y+.5*e.baseProps.height-s/2,o=e.baseProps.x+e.baseProps.width+ho;let l=a;for(const u of i){const h=u.layoutbox.rect;h.x=o,h.y=l,l+=h.height+Ko}}}updateNodePosition(e,r){}}class $Fe{constructor(){U(this,"points",[])}update(e,r){const i=e.getBounds(),s=r.getBounds();switch(e.layoutType){case ji.Left:{const o={x:i.maxX,y:.5*(i.minY+i.maxY)},l={x:s.minX,y:.5*(s.minY+s.maxY)};this.points=Lt.computeZLinePoints(o,l,!1);break}case ji.Right:{const o={x:s.maxX,y:.5*(s.minY+s.maxY)},l={x:i.minX,y:.5*(i.minY+i.maxY)};this.points=Lt.computeZLinePoints(o,l,!1);break}case ji.Top:{const o={x:.5*(i.minX+i.maxX),y:i.maxY},l={x:.5*(s.minX+s.maxX),y:s.minY};this.points=Lt.computeZLinePoints(o,l,!0);break}case ji.Bottom:{const o={x:.5*(s.minX+s.maxX),y:s.maxY},l={x:.5*(i.minX+i.maxX),y:i.minY};this.points=Lt.computeZLinePoints(o,l,!0);break}}}drawOnCtx(e,r){const i=this.points;if(i.length<2)return;const s=r.mindMapProps.lineStyleType;switch(e.save(),e.beginPath(),s){case lE.Rounded:i.length===2?(e.moveTo(i[0].x,i[0].y),e.lineTo(i[1].x,i[1].y),e.stroke()):ae.acrPolyDraw(e,i);break;case lE.Straight:default:this.drawStraightLine(e,r,i)}e.restore()}drawStraightLine(e,r,i){const s=r.borderProps.color,a=r.borderProps.alpha;e.strokeStyle=s,e.lineWidth=1,e.globalAlpha=a,e.beginPath();const o=i[0];e.moveTo(o.x,o.y);for(const l of i)e.lineTo(l.x,l.y);e.stroke()}}const hb=class hb extends l4{constructor(r,i){super(r,i);U(this,"type",X.MindmapNode);U(this,"layoutbox",null);U(this,"mindMapParent",null);U(this,"mindmapChildren",[]);U(this,"subMindMapChildren",[]);U(this,"renderLine");U(this,"rootContainer",new _t);this.props.set(ne.Base,new mr),this.props.set(ne.Color,new zn),this.props.set(ne.Border,new nn),this.props.set(ne.Text,new _n),this.props.set(ne.Shape,new Sn),this.props.set(ne.MindMap,new lp),this.props.set(ne.TextParagraph,new tc),this.props.set(ne.TextParagraphQuote,new _c),this.renderText=new R1,this.renderLine=new $Fe}get borderProps(){return this.props.get(ne.Border)}get colorProps(){return this.props.get(ne.Color)}get textProps(){return this.props.get(ne.Text)}get shapeProps(){return this.props.get(ne.Shape)}get mindMapProps(){return this.props.get(ne.MindMap)}get paragraphProps(){return this.props.get(ne.TextParagraph)}get paragraphQuoteProps(){return this.props.get(ne.TextParagraphQuote)}get layoutType(){return this.mindMapProps.layoutType}refreshRootContainer(){const r=new Set;ae.addAllMindMapChildren(this,r);const i=[...r],s=this.rootContainer,a=this.globalBaseProps;if(i.length===0){s.x=a.x-Q5,s.y=a.y-G5,s.width=2*Q5,s.height=2*G5;return}const o=[...i].map(u=>u.getBounds()),l=ae.getBounds(o);s.x=l.minX-Q5,s.y=l.minY-G5,s.width=l.maxX-l.minX+2*Q5,s.height=l.maxY-l.minY+2*G5}refreshLayoutBox(){for(const i of this.mindmapChildren)i.refreshLayoutBox();for(const i of this.subMindMapChildren)i.refreshLayoutBox();const r=hb.layoutWorkers.get(this.layoutType);r?r.refreshBox(this):console.error(`Unsupported layout type: ${this.layoutType}`)}layout(r){const i=hb.layoutWorkers.get(this.layoutType);i?(this.mindMapParent&&i.updateNodePosition(this,r),i.layoutBox(this),this.updateTransformMatrix()):console.error(`Unsupported layout type: ${this.layoutType}`);for(const s of this.mindmapChildren)s.layout(r);for(const s of this.subMindMapChildren)s.layout(r);this.mindMapParent?this.renderLine.update(this,this.mindMapParent):this.refreshRootContainer()}updateMindMapChildren(r){const i=this.mindMapProps;this.mindmapChildren=[];for(const s of i.children){const a=r.getNode(s);if(a&&a.type===X.MindmapNode){const o=a;o.mindMapParent=this,this.mindmapChildren.push(o),o.updateMindMapChildren(r)}else console.error(`Mindmap child node with ID ${s} not found or not a MindmapNode.`)}this.subMindMapChildren=[];for(const s of i.subChildren){const a=r.getNode(s);if(a&&a.type===X.MindmapNode){const o=a;o.mindMapParent=this,this.subMindMapChildren.push(o),o.updateMindMapChildren(r)}else console.error(`Mindmap sub-child node with ID ${s} not found or not a MindmapNode.`)}}root(){let r=this;for(;r.mindMapParent;)r=r.mindMapParent;return r}updateLayoutType(){}updateProps(r){super.updateProps(r);const i=r.find(l=>l.type===ne.Text),s=r.find(l=>l.type===ne.TextParagraph),a=r.find(l=>l.type===ne.TextParagraphQuote),o=r.find(l=>l.type===ne.Base);if(o&&this.updateTransformMatrix(),i||o||s||a){const l=this.getTextContentRect();this.renderText.typesetting(this.graphicContext,this.textProps,l,this.paragraphProps,this.paragraphQuoteProps)}}isRoot(){return this.mindMapParent===null}drawOnGLCtx(r){this.mindMapParent||this.drawContainerBox(r),r.save();const{a:i,b:s,c:a,d:o,e:l,f:u}=this.globalTransform();r.transform(i,s,a,o,l,u);const{width:h,height:d}=this.baseProps,{color:f,alpha:p}=this.colorProps,{color:A,width:g,alpha:m,dashType:y}=this.borderProps;if(h<=0||d<=0||!Number.isFinite(h)||!Number.isFinite(d)){r.restore();return}r.beginPath(),r.roundRect(0,0,h,d,10),f!==""&&(r.fillStyle=f,r.globalAlpha=p,r.fill()),A!==""&&y!==Hn.None&&Math.abs(m)>.001&&(r.strokeStyle=A,r.lineWidth=g,r.globalAlpha=m,ae.setDashLine(this.borderProps,r),r.stroke()),this.drawText(r),r.restore(),this.renderLine.drawOnCtx(r,this)}drawContainerBox(r){const{x:i,y:s,width:a,height:o}=this.rootContainer;r.save(),r.shadowColor="rgba(0, 0, 0, 0.08)",r.shadowBlur=20,r.shadowOffsetX=0,r.shadowOffsetY=4,r.fillStyle=BZ,r.globalAlpha=1,r.beginPath(),r.roundRect(i,s,a,o,12),r.fill(),r.shadowColor="transparent",r.strokeStyle=PZ,r.lineWidth=1,r.stroke(),r.restore()}drawText(r){const{x:i,y:s,width:a,height:o}=this.getTextContentRect();r.save(),r.beginPath(),r.rect(i,s,a,o),r.clip();const l=new he;this.renderText.draw(r,l,1),r.restore()}modifyPosInEditing(r){const i=this.getTextContentRect();return this.renderText.modifyPosInEditing(i,r)}resetFromEditing(){const r=this.getTextContentRect();return this.renderText.resetFromEditing(r)}isEmptyText(){return this.renderText.isEmptyText()}getTextContentRect(){const{width:r,height:i}=this.baseProps,{width:s}=this.borderProps,a=s+4;return{x:a,y:a,width:Math.max(0,r-2*a),height:Math.max(0,i-2*a)}}canBeConnected(){return!1}canQuickCreate(){return this.canBeConnected()}contains(r,i=1){const{width:s,height:a}=this.baseProps,o=this.toLocal(r);return ae.rectContains(o,new _t(0,0,s,a))}getRenderText(){return this.renderText}static load(r,i,s,a,o,l){const u=new hb(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}};U(hb,"layoutWorkers",new Map([[ji.Left,new RFe],[ji.Right,new _Fe],[ji.LeftRight,new UFe],[ji.Top,new FFe],[ji.Bottom,new DFe],[ji.TopBottom,new OFe]]));let h4=hb;class HFe{draw(e,r){const i=e.colorProps,s=e.borderProps,a=e.getProp(ne.Editable),{width:o,height:l}=e.baseProps;if(!a||a.points.length<3){this.fallbackDraw(e,r);return}r.lineJoin="round",r.beginPath();const u=a.points.map(h=>({x:h.x*o,y:h.y*l}));r.moveTo(u[0].x,u[0].y);for(const h of u)r.lineTo(h.x,h.y);r.closePath(),i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),s.color!==""&&!s.noFill&&s.dashType!==Hn.None&&(ae.setDashLine(s,r),r.strokeStyle=s.color,r.lineWidth=s.width,r.globalAlpha=s.alpha,r.stroke())}toSvg(e){const r=e.getProp(ne.Editable),{width:i,height:s}=e.baseProps,a=[At.fillAttrs(e.colorProps),At.strokeAttrs(e.borderProps)].filter(l=>l!=="").join(" ");if(!r||r.points.length<3)return`<rect x="0" y="0" width="${At.num(i)}" height="${At.num(s)}" ${a} />`;const o=r.points.map(l=>({x:l.x*i,y:l.y*s}));return`<polygon points="${At.points(o)}" ${a} stroke-linejoin="round" />`}nodeShapeInfo(e){const{width:r,height:i}=e.baseProps;return vr.rectangle({top:0,left:0,width:r,height:i})}borderContains(e,r,i){const s=this.nodeShapeInfo(e),a=vr.line({x:r.x-i,y:r.y},{x:r.x+i,y:r.y}),o=vr.line({x:r.x,y:r.y-i},{x:r.x,y:r.y+i});for(const l of[a,o]){const u=er.intersect(s,l);if(u.points.length>0)return u.points[0]}return null}getConnectAnchor(){return[new he(.5,0),new he(1,.5),new he(.5,1),new he(0,.5)]}fallbackDraw(e,r){const i=e.colorProps,s=e.baseProps,a=e.borderProps;i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fillRect(0,0,s.width,s.height)),a.color!==""&&!a.noFill&&a.dashType!==Hn.None&&(ae.setDashLine(a,r),r.strokeStyle=a.color,r.lineWidth=a.width,r.globalAlpha=a.alpha,r.strokeRect(0,0,s.width,s.height))}}function Ere(n,e){const r=Qr.generateMatrix().translate(-e.x,-e.y);return Qr.generateMatrix().rotate(-e.angle).crossProduct(r).crossPoint(n)}function zFe(n,e){const r=Qr.generateMatrix().translate(e.x,e.y),i=Qr.generateMatrix().rotate(e.angle);return r.crossProduct(i).crossPoint(n)}function QFe(n){let e=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,s=Number.NEGATIVE_INFINITY;for(const a of n)e=Math.min(e,a.x),r=Math.min(r,a.y),i=Math.max(i,a.x),s=Math.max(s,a.y);return{x:e,y:r,width:i-e,height:s-r}}function GFe(n,e,r,i){const s=n.map(g=>Ere(g,e)),{x:a,y:o,width:l,height:u}=QFe(s),h=zFe({x:a,y:o},e),d=i?i.inverseMatrix().crossPoint(h):h,f={x:h.x,y:h.y,width:l,height:u,angle:r},p={x:d.x,y:d.y,width:l,height:u,angle:r},A=n.map(g=>{const m=Ere(g,f);return{x:l===0?0:m.x/l,y:u===0?0:m.y/u}});return{baseProps:p,globalBaseProps:f,points:A}}class O_ extends rh{constructor(r,i){super(r,i);U(this,"type",X.Editable);U(this,"drawer",new HFe);U(this,"editStatus",null);this.props.set(ne.Base,new mr),this.props.set(ne.Editable,new oA),this.props.set(ne.Color,new zn),this.props.set(ne.Border,new nn)}get editProps(){return this.props.get(ne.Editable)}get globalEditPoints(){const{width:r,height:i}=this.baseProps;return this.editProps.points.map(s=>{const a={x:s.x*r,y:s.y*i};return this.toGlobal(a)})}get borderProps(){return this.props.get(ne.Border)}get colorProps(){return this.props.get(ne.Color)}rebuildFromGlobalEditPoints(r){var s;const i=GFe(r,this.globalBaseProps,this.baseProps.angle,(s=this.parent)==null?void 0:s.globalTransform());return{baseProps:{type:ne.Base,...i.baseProps},globalBaseProps:{type:ne.Base,...i.globalBaseProps},points:i.points}}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}drawOnGLCtx(r){r.save(),r.beginPath();const{a:i,b:s,c:a,d:o,e:l,f:u}=this.globalTransform();r.transform(i,s,a,o,l,u),this.drawer.draw(this,r),r.restore()}loseFocus(){this.editStatus=null}svgContent(){return this.drawer.toSvg(this)}borderContains(r,i){const s=this.toLocal(r);return this.drawer.borderContains(this,s,i)}contains(r){const{width:i,height:s}=this.baseProps,a=this.toLocal(r);return ae.rectContains(a,new _t(0,0,i,s))}getStretchMinSize(){return new he(20,20)}getTextContentRect(){return new _t}getConnectAnchor(){return this.drawer.getConnectAnchor()}canQuickCreate(){var r;return((r=this.parent)==null?void 0:r.type)===X.DocContainer?!1:super.canQuickCreate()}canBeConnected(){var r;return((r=this.parent)==null?void 0:r.type)!==X.DocContainer}static load(r,i,s,a,o,l){const u=new O_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class F_ extends t2{constructor(e,r){super(e,r),this.props.set(ne.Shape,new Sn),this.props.set(ne.Chart,new gs)}static load(e,r,i,s,a,o){const l=new F_(e,o);return l.type=r,l.zIndex=i,l.setParent(a),l.updateProps(s),l}}class WFe{draw(e,r){const i=e.colorProps,s=e.borderProps,a=e.globalBaseProps,o=e.pieRingProps,l=eh,u=o.startAngle+l,h=o.endAngle+l,d={x:a.width/2,y:a.height/2},f=.5*Math.min(a.height,a.width);r.beginPath();const p=new he(d.x+f*Math.cos(u),d.y+f*Math.sin(u));r.moveTo(d.x,d.y),r.lineTo(p.x,p.y),r.arc(d.x,d.y,f,u,h),r.closePath(),r.lineJoin="round",i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),s.color!==""&&!s.noFill&&s.dashType!==Hn.None&&(ae.setDashLine(s,r),r.strokeStyle=s.color,r.lineWidth=s.width,r.globalAlpha=s.alpha,r.stroke())}toSvg(e){const{width:r,height:i}=e.baseProps,s=[At.fillAttrs(e.colorProps),At.strokeAttrs(e.borderProps)].filter(v=>v!=="").join(" "),a=r/2,o=i/2,l=.5*Math.min(r,i);if(l<=0)return"";const u=e.pieRingProps.startAngle+eh,h=e.pieRingProps.endAngle+eh,d=h-u;if(d>=2*Math.PI-1e-6)return`<circle cx="${At.num(a)}" cy="${At.num(o)}" r="${At.num(l)}" ${s} />`;const f=a+l*Math.cos(u),p=o+l*Math.sin(u),A=a+l*Math.cos(h),g=o+l*Math.sin(h),m=(d%(2*Math.PI)+2*Math.PI)%(2*Math.PI)>Math.PI?1:0;return`<path d="${`M${At.num(a)} ${At.num(o)}L${At.num(f)} ${At.num(p)}A${At.num(l)} ${At.num(l)} 0 ${m} 1 ${At.num(A)} ${At.num(g)}Z`}" ${s} stroke-linejoin="round" />`}fallbackDraw(e,r){const i=e.colorProps,s=e.baseProps,a=e.borderProps,o={x:s.width/2,y:s.height/2},l=.5*Math.min(s.height,s.width);r.arc(o.x,o.y,l,0,2*Math.PI),i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),a.color!==""&&!a.noFill&&a.dashType!==Hn.None&&(ae.setDashLine(a,r),r.strokeStyle=a.color,r.lineWidth=a.width,r.globalAlpha=a.alpha,r.stroke())}nodeShapeInfo(e){const{width:r,height:i}=e.baseProps;return vr.rectangle({top:0,left:0,width:r,height:i})}borderContains(e,r,i){const s=this.nodeShapeInfo(e),a=vr.line({x:r.x-i,y:r.y},{x:r.x+i,y:r.y}),o=vr.line({x:r.x,y:r.y-i},{x:r.x,y:r.y+i});for(const l of[a,o]){const u=er.intersect(s,l);if(u.points.length>0)return u.points[0]}return null}getConnectAnchor(){return[new he(.5,0),new he(1,.5),new he(.5,1),new he(0,.5)]}}class VFe{draw(e,r){const i=e.colorProps,s=e.borderProps,a=e.baseProps,o=e.pieRingProps,l=-.5*Math.PI,u=o.startAngle+l,h=o.endAngle+l,d={x:a.width/2,y:a.height/2},f=.5*Math.min(a.height,a.width),p=o.innerRadius,A=new he(d.x+p*Math.cos(u),d.y+p*Math.sin(u)),g=new he(d.x+p*Math.cos(h),d.y+p*Math.sin(h)),m=new he(d.x+f*Math.cos(u),d.y+f*Math.sin(u));r.beginPath(),r.moveTo(A.x,A.y),r.lineTo(m.x,m.y),r.arc(d.x,d.y,f,u,h),r.lineTo(g.x,g.y),r.arc(d.x,d.y,p,h,u,!0),r.closePath(),r.lineJoin="round",i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),s.color!==""&&!s.noFill&&s.dashType!==Hn.None&&(ae.setDashLine(s,r),r.strokeStyle=s.color,r.lineWidth=s.width,r.globalAlpha=s.alpha,r.stroke())}toSvg(e){const{width:r,height:i}=e.baseProps,s=[At.fillAttrs(e.colorProps),At.strokeAttrs(e.borderProps)].filter(S=>S!=="").join(" "),a=r/2,o=i/2,l=.5*Math.min(r,i);if(l<=0)return"";const u=e.pieRingProps.innerRadius,h=-.5*Math.PI,d=e.pieRingProps.startAngle+h,f=e.pieRingProps.endAngle+h,p=f-d;if(p>=2*Math.PI-1e-6)return`<path d="${`${this.circlePath(a,o,l)} ${this.circlePath(a,o,u)}`}" fill-rule="evenodd" ${s} stroke-linejoin="round" />`;const A=a+u*Math.cos(d),g=o+u*Math.sin(d),m=a+l*Math.cos(d),y=o+l*Math.sin(d),v=a+u*Math.cos(f),x=o+u*Math.sin(f),w=a+l*Math.cos(f),b=o+l*Math.sin(f),T=(p%(2*Math.PI)+2*Math.PI)%(2*Math.PI)>Math.PI?1:0;return`<path d="${`M${At.num(A)} ${At.num(g)}L${At.num(m)} ${At.num(y)}A${At.num(l)} ${At.num(l)} 0 ${T} 1 ${At.num(w)} ${At.num(b)}L${At.num(v)} ${At.num(x)}A${At.num(u)} ${At.num(u)} 0 ${T} 0 ${At.num(A)} ${At.num(g)}Z`}" ${s} stroke-linejoin="round" />`}circlePath(e,r,i){return`M${At.num(e-i)} ${At.num(r)}A${At.num(i)} ${At.num(i)} 0 1 0 ${At.num(e+i)} ${At.num(r)}A${At.num(i)} ${At.num(i)} 0 1 0 ${At.num(e-i)} ${At.num(r)}Z`}fallbackDraw(e,r){const i=e.colorProps,s=e.baseProps,a=e.borderProps,o={x:s.width/2,y:s.height/2},l=.5*Math.min(s.height,s.width);r.arc(o.x,o.y,l,0,2*Math.PI),i.color!==""&&!i.noFill&&(r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fill()),a.color!==""&&!a.noFill&&a.dashType!==Hn.None&&(ae.setDashLine(a,r),r.strokeStyle=a.color,r.lineWidth=a.width,r.globalAlpha=a.alpha,r.stroke())}nodeShapeInfo(e){const{width:r,height:i}=e.baseProps;return vr.rectangle({top:0,left:0,width:r,height:i})}borderContains(e,r,i){const s=this.nodeShapeInfo(e),a=vr.line({x:r.x-i,y:r.y},{x:r.x+i,y:r.y}),o=vr.line({x:r.x,y:r.y-i},{x:r.x,y:r.y+i});for(const l of[a,o]){const u=er.intersect(s,l);if(u.points.length>0)return u.points[0]}return null}getConnectAnchor(){return[new he(.5,0),new he(1,.5),new he(.5,1),new he(0,.5)]}}class U_ extends rh{constructor(r,i){super(r,i);U(this,"type",X.Pie);U(this,"pieDrawer",new WFe);U(this,"ringDrawer",new VFe);U(this,"editStatus",null);this.props.set(ne.Base,new mr),this.props.set(ne.PieRing,new L1),this.props.set(ne.Color,new zn),this.props.set(ne.Border,new nn),this.props.set(ne.Shape,new Sn)}get drawer(){return this.props.get(ne.Shape).shapeCode===0?this.pieDrawer:this.ringDrawer}get borderProps(){return this.props.get(ne.Border)}get colorProps(){return this.props.get(ne.Color)}get pieRingProps(){return this.props.get(ne.PieRing)}get shapeProps(){return this.props.get(ne.Shape)}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}drawOnGLCtx(r){r.save(),r.beginPath();const{a:i,b:s,c:a,d:o,e:l,f:u}=this.globalTransform();r.transform(i,s,a,o,l,u),this.drawer.draw(this,r),r.restore()}loseFocus(){this.editStatus=null}svgContent(){return this.drawer.toSvg(this)}borderContains(r,i){const s=this.toLocal(r);return this.drawer.borderContains(this,s,i)}contains(r){const{width:i,height:s}=this.baseProps,a=this.toLocal(r),o=new he(i/2,s/2),l=.5*Math.min(i,s);if(l<=0)return!1;const u=a.x-o.x,h=a.y-o.y,d=Math.hypot(u,h);if(d>l||this.shapeProps.shapeCode!==0&&d<this.pieRingProps.innerRadius)return!1;const f=this.normalizeAngle(Math.atan2(h,u)),p=this.normalizeAngle(this.pieRingProps.startAngle+eh),A=this.normalizeAngle(this.pieRingProps.endAngle+eh);return this.isAngleInRange(f,p,A,this.pieRingProps.endAngle-this.pieRingProps.startAngle)}normalizeAngle(r){const i=Math.PI*2;return(r%i+i)%i}isAngleInRange(r,i,s,a){return a>=Math.PI*2?!0:a<=0?!1:i<=s?r>=i&&r<=s:r>=i||r<=s}getStretchMinSize(){return new he(20,20)}getTextContentRect(){return new _t}getConnectAnchor(){return this.drawer.getConnectAnchor()}canQuickCreate(){var r;return((r=this.parent)==null?void 0:r.type)===X.DocContainer?!1:super.canQuickCreate()}canBeConnected(){var r;return((r=this.parent)==null?void 0:r.type)!==X.DocContainer}static load(r,i,s,a,o,l){const u=new U_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class tm extends hp{constructor(r,i){super(r,i);U(this,"type",X.MathFormula);U(this,"svgCode","");this.props.set(ne.Base,new mr),this.props.set(ne.Border,new nn),this.props.set(ne.Color,zn.create({color:"",noFill:!0})),this.props.set(ne.Formula,new Xd),this.props.set(ne.Crop,new iA)}get colorProps(){return this.props.get(ne.Color)}get formulaProps(){return this.props.get(ne.Formula)}get formula(){return this.formulaProps.formula}get resourceKey(){return`${this.formulaProps.fontColor}|${this.formula}`}setSvgCode(r){this.svgCode=r}drawOnGLCtx(r){const i=this.colorProps;if(i.color!==""&&!i.noFill){r.save();const{a:s,b:a,c:o,d:l,e:u,f:h}=this.globalTransform();r.transform(s,a,o,l,u,h),r.fillStyle=i.color,r.globalAlpha=i.alpha,r.fillRect(0,0,this.baseProps.width,this.baseProps.height),r.restore()}super.drawOnGLCtx(r)}exportVectorSvg(){return this.addBackgroundToSvg(this.svgCode)}addBackgroundToSvg(r){if(this.colorProps.color===""||this.colorProps.noFill||r==="")return r;const s=`<rect x="0" y="0" width="100%" height="100%" ${At.fillAttrs(this.colorProps)}/>`;return r.replace(/(<svg[^>]*>)/,`$1${s}`)}static load(r,i,s,a,o,l){const u=new tm(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class YFe{draw(e,r){const i=e.borderProps,s=e.paintProps,{width:a,height:o}=e.baseProps,l=s.points.map(u=>({x:u.x*a,y:u.y*o}));if(!(l.length<1)){if(l.length===1){this.fallbackDraw(l[0],e,r);return}if(!(l.length<3)&&i.color!==""&&!i.noFill&&i.dashType!==Hn.None){r.lineJoin="round",ae.setDashLine(i,r),r.strokeStyle=i.color,r.lineWidth=i.width,r.globalAlpha=i.alpha,r.save(),r.beginPath();for(let u=1;u<l.length-2;u=u+3){const h=l[u-1],d=l[u],f=l[u+1],p=l[u+2];r.moveTo(h.x,h.y),r.bezierCurveTo(d.x,d.y,f.x,f.y,p.x,p.y)}r.stroke(),r.restore()}}}fallbackDraw(e,r,i){const s=r.borderProps;s.color!==""&&!s.noFill&&s.dashType!==Hn.None&&(i.beginPath(),i.arc(e.x,e.y,2,0,Math.PI*2),i.fillStyle=s.color,i.globalAlpha=s.alpha,i.fill())}nodeShapeInfo(e){const{width:r,height:i}=e.baseProps;return vr.rectangle({top:0,left:0,width:r,height:i})}borderContains(e,r,i){const s=this.nodeShapeInfo(e),a=vr.line({x:r.x-i,y:r.y},{x:r.x+i,y:r.y}),o=vr.line({x:r.x,y:r.y-i},{x:r.x,y:r.y+i});for(const l of[a,o]){const u=er.intersect(s,l);if(u.points.length>0)return u.points[0]}return null}getConnectAnchor(){return[new he(.5,0),new he(1,.5),new he(.5,1),new he(0,.5)]}}class $_ extends rh{constructor(r,i){super(r,i);U(this,"type",X.Paint);U(this,"drawer",new YFe);this.props.set(ne.Base,new mr),this.props.set(ne.Border,new nn),this.props.set(ne.Paint,new Iv),this.props.set(ne.Shape,new Sn)}get borderProps(){return this.props.get(ne.Border)}get paintProps(){return this.props.get(ne.Paint)}updateProps(r){super.updateProps(r),r.find(s=>s.type===ne.Base)&&this.updateTransformMatrix()}contains(r){const{width:i,height:s}=this.baseProps,a=this.toLocal(r);return ae.rectContains(a,new _t(0,0,i,s))}drawOnGLCtx(r){r.save(),r.beginPath();const{a:i,b:s,c:a,d:o,e:l,f:u}=this.globalTransform();r.transform(i,s,a,o,l,u),this.drawer.draw(this,r),r.restore()}getStretchMinSize(){return new he(4,4)}getTextContentRect(){return new _t}getConnectAnchor(){return this.drawer.getConnectAnchor()}canQuickCreate(){var r;return((r=this.parent)==null?void 0:r.type)===X.DocContainer?!1:super.canQuickCreate()}canBeConnected(){var r;return((r=this.parent)==null?void 0:r.type)!==X.DocContainer}static load(r,i,s,a,o,l){const u=new $_(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}const rN=class rN{static getInstance(){return this.instance||(this.instance=new rN),this.instance}create(e,r,i,s,a,o){switch(r){case X.Line:return PA.load(e,r,i,s,a,o);case X.SVG:return e2.load(e,r,i,s,a,o);case X.IMG:return Lv.load(e,r,i,s,a,o);case X.Section:return t2.load(e,r,i,s,a,o);case X.Group:return u4.load(e,r,i,s,a,o);case X.Checkbox:return Ck.load(e,r,i,s,a,o);case X.CheckboxText:return R_.load(e,r,i,s,a,o);case X.SlideContainer:return __.load(e,r,i,s,a,o);case X.DocContainer:return D_.load(e,r,i,s,a,o);case X.MindmapNode:return h4.load(e,r,i,s,a,o);case X.Editable:return O_.load(e,r,i,s,a,o);case X.ChartSection:return F_.load(e,r,i,s,a,o);case X.Pie:return U_.load(e,r,i,s,a,o);case X.MathFormula:return tm.load(e,r,i,s,a,o);case X.Mermaid:return Ek.load(e,r,i,s,a,o);case X.Paint:return $_.load(e,r,i,s,a,o);case X.Shape:default:return Jo.load(e,r,i,s,a,o)}}createByNodeInfo(e,r,i){const s=ae.convertCapInfoToProps(e.capInfo);return this.create(e.id,e.type,e.zIndex,s,r,i)}};U(rN,"instance",null);let la=rN;class H_ extends rh{constructor(r){const s=document.createElement("canvas").getContext("2d");super(r,s);U(this,"type",X.ROOT);U(this,"transform",Qr.generateMatrix())}updateProps(r){}drawOnGLCtx(r){}getTextContentRect(){return new _t}toGlobal(r){return r}toLocal(r){return r}}const Sk=800;class z_{static async getImageSize(e){return new Promise((r,i)=>{const s=URL.createObjectURL(e),a=new Image;a.crossOrigin="anonymous",a.onload=()=>{let o=a.naturalWidth*.5,l=a.naturalHeight*.5;URL.revokeObjectURL(s);const u=o/l;o>l&&o>Sk?(o=Sk,l=o/u):l>o&&l>Sk&&(l=Sk,o=l*u),r({width:o,height:l})},a.onerror=()=>{URL.revokeObjectURL(s),i(new Error("无法加载图片"))},a.src=s})}}class wp extends As{constructor(){super(...arguments);U(this,"type",ne.Mermaid);U(this,"data","")}static from(r){const i=new wp;return i.data=r.data,i}static create(r){const i=new wp;return i.update(r),i}clone(){const r=new wp;return r.data=this.data,r}update(r){const{data:i}=r;i!==void 0&&(this.data=i)}}class Ek extends t2{constructor(r,i){super(r,i);U(this,"type",X.Mermaid);this.props.set(ne.Shape,new Sn),this.props.set(ne.Mermaid,new wp)}get mermaidProps(){return this.props.get(ne.Mermaid)}get data(){return this.mermaidProps.data}static load(r,i,s,a,o,l){const u=new Ek(r,l);return u.type=i,u.zIndex=s,u.setParent(o),u.updateProps(a),u}}class kre extends tA{constructor(){super(...arguments);U(this,"type",zi.RemoveNode)}execData(r,i){for(const s of r.idList){const a=i.nodeManager.getNode(s);a&&(this.effectOnDeleteNode(a,i),i.nodeManager.removeNode(s),i.resourceManager.removeNodeResourceInfo(s))}i.auxiliaryManager.removeHoverGraphics(),i.slotManager.addSlotState(Qn.ImgUrls,i.resourceManager.getImgUrls()),i.renderManager.addContentRenderTask(),i.renderManager.addAuxiliaryDrawTask()}effectOnDeleteNode(r,i){if(i.inputManager.editTextInfo&&i.inputManager.editTextInfo.node.id===r.id&&(i.inputManager.blur(),i.auxiliaryManager.remove(Xe.PlaceHolder),i.auxiliaryManager.selectManager.refreshSelectStatus()),i.auxiliaryManager.selectManager.include(r)){r.loseFocus();const a=i.auxiliaryManager.selectManager.getSelectNodes().filter(o=>o.id!==r.id);i.auxiliaryManager.selectManager.set(new Set(a))}}reverseLog(r,i){var a;const s=[];for(const o of r.idList){const l=i.nodeManager.getNode(o);if(!l){console.error("错误,生成逆消息时节点不存在:",o);continue}const u=[...l.props.values()];s.push({id:l.id,type:l.type,zIndex:l.zIndex,parentId:((a=l.parent)==null?void 0:a.id)||Va,props:u})}return new hn({nodes:s})}}class kt extends rA{constructor(){super(...arguments);U(this,"type",zi.UpdateNode)}static create(r,i,s){const a={id:r,props:i};return new kt({infos:[a]},s)}clone(){const r=JSON.parse(JSON.stringify(this.data));return new kt(r,this.meta)}}class n2{}class Bre extends n2{handle(e,r,i){const s=r.find(l=>l.type===ne.Connect);if(!s)return;const{start:a,end:o}=s;if(a!==void 0)if(a!==null){const l=i.nodeManager.getNode(a.objectId)||null;i.nodeManager.addLink(e,l,!0)}else i.nodeManager.addLink(e,null,!0);if(o!==void 0)if(o!==null){const l=i.nodeManager.getNode(o.objectId)||null;i.nodeManager.addLink(e,l,!1)}else i.nodeManager.addLink(e,null,!1)}}class Pre extends n2{handle(e,r,i){if(!r.find(o=>o.type===ne.MindMap)||e.type!==X.MindmapNode)return;const a=e;i.mindMapManager.addMindMap(a)}}class XFe extends n2{handle(e,r,i){if(e.type!==X.MindmapNode)return;const s=r.find(o=>o.type===ne.Base);if(!s)return;const a=e;s.width===void 0&&s.height===void 0||i.mindMapManager.addMindMap(a)}}class Ire extends n2{handle(e,r,i){const s=r.find(A=>A.type===ne.Formula);if(e.type!==X.MathFormula||!s)return;const a=e,o=a.formulaProps.clone(),l=r.find(A=>A.type===ne.Base),u=(l==null?void 0:l.width)!==void 0,h=(l==null?void 0:l.height)!==void 0,d=this.getFormulaSvgNaturalSize(a),f=d?a.baseProps.width/d.width:1,p=d?a.baseProps.height/d.height:1;o.formula&&Zd.convert(o.formula,o.fontColor).then(A=>{if(i.nodeManager.getNode(a.id)!==a)return;const g=a.formulaProps;g.formula!==o.formula||g.fontColor!==o.fontColor||(i.nodeManager.removeIndexNode(a.getRectNode()),a.setSvgCode(A.svgCode),u||(a.baseProps.width=A.width*f),h||(a.baseProps.height=A.height*p),i.nodeManager.addIndexNode(a.getRectNode()),i.auxiliaryManager.selectManager.refreshSelectStatus(),i.renderManager.addAuxiliaryDrawTask(),i.asyncRenderNodeManager.addRenderNode(a))})}getFormulaSvgNaturalSize(e){const r=e.svgCode.match(/\bwidth="([\d.]+)(?:px)?"/),i=e.svgCode.match(/\bheight="([\d.]+)(?:px)?"/),s=r?Number(r[1]):NaN,a=i?Number(i[1]):NaN;return!Number.isFinite(s)||!Number.isFinite(a)||s<=0||a<=0?null:{width:s,height:a}}}class Lre extends tA{constructor(){super(...arguments);U(this,"type",zi.UpdateNode);U(this,"handlers",[new Bre,new Pre,new XFe,new Ire])}execData(r,i){for(const s of r.infos)this.execNodeInfo(s,i);i.mindMapManager.work(i.nodeManager),i.renderManager.addContentRenderTask()}execNodeInfo(r,i){const{id:s,zIndex:a,props:o,parentId:l}=r,u=i.nodeManager.getNode(s);if(!u){console.error("错误:节点不存在:",s);return}const h=i.auxiliaryManager.selectManager.include(u),d=h?this.getToolBarBounds(u):null;if(this.removeIndexNode(u,i),a!==void 0&&(u.zIndex=a),this.changeParent(u,i,l),o.length>0){u.updateProps(o);for(const f of this.handlers)f.handle(u,o,i);!i.docState.isStreaming&&this.shouldRegenerateSvgBitmap(u,o)&&i.asyncRenderNodeManager.addRenderNode(u)}this.addIndexNode(u,i),h&&(i.auxiliaryManager.selectManager.refreshSelectStatus(),i.renderManager.addAuxiliaryDrawTask(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0),d&&this.boundsChanged(d,this.getToolBarBounds(u))&&i.auxiliaryManager.slotManager.addSlotState(Qn.ForceUpdateToolMenu,!0))}shouldRegenerateSvgBitmap(r,i){return r.type!==X.SVG&&r.type!==X.MathFormula||r.type===X.MathFormula&&i.some(s=>s.type===ne.Formula)?!1:i.some(s=>{if(s.type!==ne.Base)return!1;const a=s;return a.width!==void 0||a.height!==void 0})}getToolBarBounds(r){if(r.type!==X.Line)return r.getBounds();const i=r;return i.isEmptyText()?i.getBounds():i.getRectNode()}boundsChanged(r,i){return r.minX!==i.minX||r.minY!==i.minY||r.maxX!==i.maxX||r.maxY!==i.maxY}changeParent(r,i,s){if(s===void 0||s===r.parent.id)return;const a=i.nodeManager.getNode(s);if(a){if(a===r||this.isDescendantParent(r,a)){console.error("错误:检测到非法父子关系,已阻止形成循环引用:",{nodeId:r.id,parentId:a.id});return}r.parent.children.delete(r),a.children.add(r),r.parent=a}}isDescendantParent(r,i){let s=i;for(;s;){if(s===r)return!0;s=s.parent}return!1}removeIndexNode(r,i){this.walkNodeTree(r,s=>i.nodeManager.removeIndexNode(s.getRectNode()))}addIndexNode(r,i){this.walkNodeTree(r,s=>i.nodeManager.addIndexNode(s.getRectNode()))}walkNodeTree(r,i,s=new Set){if(!s.has(r)){s.add(r),i(r);for(const a of r.children)this.walkNodeTree(a,i,s)}}reverseLog(r,i){const s=[];for(const a of r.infos){const o=i.nodeManager.getNode(a.id);if(!o)continue;const l=o.parent?o.parent.id:i.nodeManager.root.id,u=o.serializeTo(),h=ae.convertCapInfoToProps(u.capInfo);s.push({id:o.id,zIndex:o.zIndex,props:h,parentId:l})}return new kt({infos:s})}}var rm=(n=>(n[n.Node=0]="Node",n[n.BrokenPoint=1]="BrokenPoint",n[n.EditableNodePoint=2]="EditableNodePoint",n))(rm||{});class Tr extends rA{constructor(){super(...arguments);U(this,"type",zi.SelectNode)}static create(r){return new Tr({idList:r,selectType:rm.Node})}static createBrokenPoint(r,i){return new Tr({idList:[r],selectType:rm.BrokenPoint,brokenPointIndex:i})}static createEditableNodePoint(r,i){return new Tr({idList:[r],selectType:rm.EditableNodePoint,editableNodePointIndex:i})}clone(){const r=JSON.parse(JSON.stringify(this.data));return new Tr(r,this.meta)}}class Mre extends tA{constructor(){super(...arguments);U(this,"type",zi.SelectNode)}execData(r,i){i.auxiliaryManager.selectManager.getSelectNodes().forEach(l=>l.loseFocus());const s=r.selectType,a=r.idList,o=new Set;if(a.forEach(l=>{const u=i.nodeManager.getNode(l);u&&o.add(u)}),s===rm.BrokenPoint&&r.brokenPointIndex!==void 0&&o.size===1){const l=Array.from(o)[0];if(l.type===X.Line){const u=l;u.lineStatus={selectPointIndex:r.brokenPointIndex}}}if(s===rm.EditableNodePoint&&r.editableNodePointIndex!==void 0&&o.size===1){const l=Array.from(o)[0];if(l.type===X.Editable){const u=l;u.editStatus={selectPointIndex:r.editableNodePointIndex}}}i.auxiliaryManager.selectManager.set(o),i.renderManager.addAuxiliaryDrawTask(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0)}reverseLog(r,i){const s=i.auxiliaryManager.selectManager.getSelectNodes();if(s.length===1&&s[0].type===X.Line){const o=s[0],l=o.lineStatus;if(l){const u=l.selectPointIndex,h=o.points;if(u>-1&&u<h.length){const d=s[0].id;return Tr.createBrokenPoint(d,u)}}}if(s.length===1&&s[0].type===X.Editable){const o=s[0],l=o.editStatus;if(l){const u=l.selectPointIndex,h=o.editProps.points;if(u>-1&&u<h.length){const d=s[0].id;return Tr.createEditableNodePoint(d,u)}}}const a=s.map(o=>o.id);return Tr.create(a)}}class Tt extends rA{constructor(){super(null);U(this,"type",zi.End)}clone(){return new Tt}}class Nre extends tA{constructor(){super(...arguments);U(this,"type",zi.Start)}execData(r,i){}reverseLog(r,i){return new Tt}}class St extends rA{constructor(){super(null);U(this,"type",zi.Start)}clone(){return new St}}class Rre extends tA{constructor(){super(...arguments);U(this,"type",zi.End)}execData(r,i){}reverseLog(r,i){return new St}}class _re extends tA{constructor(){super(...arguments);U(this,"type",zi.TextFocus)}checkValidNode(r,i){const s=i.nodeManager.getNode(r);if(!s)throw new Error("错误:节点不存在:"+r);const a=s.renderText;return{node:s,renderText:a}}execData(r,i){const{focusType:s,blur:a,selection:o,focus:l}=r;if(s!==xu.Empty){if(i.renderManager.addAuxiliaryDrawTask(),s===xu.Focus){const{id:u,textCursorPosition:h}=l,{node:d,renderText:f}=this.checkValidNode(u,i);d.modifyPosInEditing(h)&&i.renderManager.addContentRenderTask(),i.inputManager.focus({node:d,renderText:f,textCursorPosition:h}),i.auxiliaryManager.selectManager.refreshSelectStatus(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0);return}if(s===xu.Selection){const{id:u,start:h,end:d}=o,{node:f,renderText:p}=this.checkValidNode(u,i);i.inputManager.selection(f,p,h,d),i.auxiliaryManager.selectManager.refreshSelectStatus(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0);return}if(s===xu.Blur){i.inputManager.blur(),i.auxiliaryManager.selectManager.refreshSelectStatus(),i.auxiliaryManager.slotManager.addSlotState(Qn.FocusPropsChange,!0);return}}}reverseLog(r,i){const{focusType:s}=r,a=i.inputManager.editTextInfo,o=i.inputManager.selectionManager.selectionInfo;if(s===xu.Focus){const l=r.focus.id;return a?o?Gt.selection(a.node.id,o.start,o.end):Gt.focus(a.node.id,a.renderText.getTextCursorPosByIndex(a.renderText.getIndexByTextCursorPos(a.textCursorPosition))):Gt.blur(l)}if(s===xu.Blur)return a?o?Gt.selection(a.node.id,o.start,o.end):Gt.focus(a.node.id,a.renderText.getTextCursorPosByIndex(a.renderText.getIndexByTextCursorPos(a.textCursorPosition))):(console.warn("选中消息不符合预期,已容错处理"),Gt.empty());if(s===xu.Selection){const l=r.selection.id;return a?o?Gt.selection(a.node.id,o.start,o.end):Gt.focus(a.node.id,a.renderText.getTextCursorPosByIndex(a.renderText.getIndexByTextCursorPos(a.textCursorPosition))):Gt.blur(l)}return Gt.empty()}}class Xa extends rA{constructor(){super(...arguments);U(this,"type",zi.RemoveNode)}static create(r){return new Xa({idList:r})}clone(){const r=JSON.parse(JSON.stringify(this.data));return new Xa(r,this.meta)}}class qFe extends n2{handle(e,r,i){if(!r.find(o=>o.type===ne.Image)||e.type!==X.IMG)return;const a=e;i.asyncRenderNodeManager.addRenderNode(a)}}let jFe=class extends n2{handle(e,r,i){const s=r.find(o=>o.type===ne.Svg);if(!s||e.type!==X.SVG)return;const a=e;if(a.svgProps.useCode){const o=vu.trimSvgCode(a.svgProps.code);a.setSvgCode(o.svgCode),i.asyncRenderNodeManager.addRenderNode(a);return}i.resourceManager.loadSvgUrl(s.url).then(o=>{const l=vu.trimSvgCode(o);a.setSvgCode(l.svgCode),i.asyncRenderNodeManager.addRenderNode(a)}).catch(o=>{console.error("加载图片出现问题",o),a.setBroken(),i.renderManager.dirtyDraw(e.getBounds())})}};class Dre extends tA{constructor(){super(...arguments);U(this,"type",zi.AddNode);U(this,"handlers",[new qFe,new jFe,new Ire,new Pre]);U(this,"postHandlers",[new Bre])}execData(r,i){const s=r.nodes,a=[];for(const o of s){const l=this.execNodeInfo(o,i);i.nodeManager.addNode(l),a.push({nodeInfo:o,node:l})}for(const{nodeInfo:o,node:l}of a)for(const u of this.postHandlers)u.handle(l,o.props,i);i.mindMapManager.work(i.nodeManager),i.renderManager.addContentRenderTask()}execNodeInfo(r,i){const s=i.gmlRender.glCtx,a=i.nodeManager.getParentNode(r.parentId),o=la.getInstance().create(r.id,r.type,r.zIndex,r.props,a,s);for(const l of this.handlers)l.handle(o,r.props,i);return o}reverseLog(r,i){const s=r.nodes.map(a=>a.id);return new Xa({idList:s})}}const Ore=[new Dre,new kre,new Lre,new Mre,new _re,new Nre,new Rre];class d4{}class KFe extends d4{constructor(){super(...arguments);U(this,"slideContainer",null)}enable(r,i){if(r.meta.streaming||i.docState.docMode!==Hr.SLIDE_EDIT)return!1;const s=i.docState.slideStatus.slideContainer;return s?(this.slideContainer=s,!0):!1}handle(r,i){this.slideContainer&&this.handleRemoveLog(r,i,this.slideContainer)}handleRemoveLog(r,i,s){if(r.type===zi.RemoveNode){const a=r.data;for(const o of a.idList){const l=i.nodeManager.getNode(o);if(!l)continue;const u=ae.judgeSlideSectionChildren(l,s);u&&i.slideManager.slideCoverManager.updateSlideCover(u)}}}}class ZFe extends d4{constructor(){super(...arguments);U(this,"slideContainer",null)}enable(r,i){if(r.meta.streaming||i.docState.docMode!==Hr.SLIDE_EDIT)return!1;const s=i.docState.slideStatus.slideContainer;return s?(this.slideContainer=s,!0):!1}handle(r,i){this.slideContainer&&this.handleUpdateLog(r,i,this.slideContainer)}handleUpdateLog(r,i,s){if(r.type===zi.UpdateNode){const a=r.data;for(const o of a.infos){const l=i.nodeManager.getNode(o.id);!l||l.id!==s.id||!o.props.find(h=>h.type===ne.Slide)||i.slideManager.slideCoverManager.updateSlideContainerCover(s)}}}}class JFe extends d4{constructor(){super(...arguments);U(this,"slideContainer",null)}enable(r,i){if(r.meta.streaming||i.docState.docMode!==Hr.SLIDE_EDIT)return!1;const s=i.docState.slideStatus.slideContainer;return s?(this.slideContainer=s,!0):!1}handle(r,i){this.slideContainer&&(this.handleUpdateLog(r,i,this.slideContainer),this.handleAddLog(r,i,this.slideContainer))}handleUpdateLog(r,i,s){var a;if(r.type===zi.UpdateNode){const o=r.data;for(const l of o.infos){const u=i.nodeManager.getNode(l.id);if(!u)continue;if(((a=u.parent)==null?void 0:a.id)===s.id&&this.judgeOnlyPosChange(l.props,u)){this.judgeSlideEditCurrent(u,i)&&(console.log("协同端正在更新此幻灯片位置,触发器重置视图"),setTimeout(()=>{i.slideManager.refocusSlide(i,50)},10));continue}if(u.id===s.id){const d=i.renderManager.getScale(),f=this.judgeOnlyPosChange(l.props,u);if(f){i.renderManager.scroll(f.x*d,f.y*d);continue}}const h=ae.judgeSlideSectionRelatedNode(u,s,i);h&&i.slideManager.slideCoverManager.updateSlideCover(h)}}}judgeSlideEditCurrent(r,i){const s=i.docState.slideStatus;return s.slideContainer?s.slideContainer.getChildIdByIndex(s.currentIndex)===r.id:!1}judgeOnlyPosChange(r,i){if(r.length!==1)return null;const s=r[0];if(s.type!==ne.Base)return null;const a=i.baseProps,o=s.width===void 0||Math.abs(s.width-a.width)<.1;if(!(s.height===void 0||Math.abs(s.height-a.height)<.1)||!o)return null;if(s.x!==void 0||s.y!==void 0){const u=new he;return s.x!==void 0&&(u.x=s.x-a.x),s.y!==void 0&&(u.y=s.y-a.y),u}return null}handleAddLog(r,i,s){if(r.type===zi.AddNode){const a=r.data;for(const o of a.nodes){const l=i.nodeManager.getNode(o.parentId);if(!l)continue;const u=ae.judgeSlideSectionRelatedNode(l,s,i);u&&i.slideManager.slideCoverManager.updateSlideCover(u)}}}}class eUe extends d4{enable(e,r){return e.meta.streaming?!1:e.type===zi.UpdateNode}handle(e,r){const i=e.data;for(const s of i.infos){if(!this.containsLineStyleProps(s.props))continue;const a=r.nodeManager.getNode(s.id);!a||a.type!==X.Line||Qte(r.memoryManager,a)}}containsLineStyleProps(e){return e.some(r=>r.type===ne.Border||r.type===ne.Shape||r.type===ne.Arrow)}}class tUe extends d4{enable(e,r){return e.meta.streaming?!1:e.type===zi.UpdateNode}handle(e,r){const i=e.data;for(const s of i.infos){if(!this.containsTextStyleProps(s.props))continue;const a=r.nodeManager.getNode(s.id),o=this.getTextProps(a);o&&r.memoryManager.remember(qh.TextStyle,{fontColor:o.fontColor,fontBgColor:o.fontBgColor,noFill:o.noFill,bgNoFill:o.bgNoFill})}}containsTextStyleProps(e){return e.some(r=>r.type===ne.Text&&("fontColor"in r||"fontBgColor"in r||"noFill"in r||"bgNoFill"in r))}getTextProps(e){return e?e.getProp(ne.Text):null}}class Fre{constructor(e){U(this,"executors",new Map);U(this,"ctx");U(this,"beforeInterceptors",[new KFe,new ZFe]);U(this,"afterInterceptors",[new JFe,new eUe,new tUe]);for(const r of e)this.executors.set(r.type,r)}init(e){this.ctx=e}exec(e,r){const i=this.executors.get(e.type);if(!i){console.error("缺乏对应的消息处理器,已忽略该消息");return}for(const s of this.beforeInterceptors)s.enable(e,this.ctx)&&s.handle(e,this.ctx);i.exec(e,r);for(const s of this.afterInterceptors)s.enable(e,this.ctx)&&s.handle(e,this.ctx)}}class Ure{constructor(){U(this,"undoStack",[]);U(this,"redoStack",[])}add(e){const r=e.reverse();this.undoStack.push(r),this.redoStack=[]}undo(e,r){const i=this.undoStack.pop()||null;if(!i)return null;for(const s of i.actionLogs)e.exec(s,r);return this.redoStack.push(i.reverse()),i}redo(e,r){const i=this.redoStack.pop()||null;if(!i)return null;for(const s of i.actionLogs)e.exec(s,r);return this.undoStack.push(i.reverse()),i}}class kk{constructor(e=[]){U(this,"actionLogs",[]);this.actionLogs=e}reverse(){const e=new kk;for(let r=this.actionLogs.length-1;r>-1;r--){const i=this.actionLogs[r];e.actionLogs.push(i.reverse())}return e}}class $re{constructor(){U(this,"cacheLogs",[]);U(this,"duringGroup",!1)}add(e){e.type===zi.Start&&(this.duringGroup=!0),this.cacheLogs.push(e),e.type===zi.End&&(this.duringGroup=!1)}getActionGroup(){if(this.duringGroup)return null;const e=new kk(this.cacheLogs);return this.cacheLogs=[],e}}const Hre=new Set([zi.Start,zi.End,zi.SelectNode,zi.TextFocus]);class zre{constructor(e,r,i,s,a,o,l,u,h,d,f,p,A){U(this,"execCtx");U(this,"executor");U(this,"undoManager");U(this,"networkPlugin",null);U(this,"actionCache");U(this,"renderManager");U(this,"docState");this.executor=new Fre(Ore),this.undoManager=new Ure,this.renderManager=o,this.execCtx={inputManager:r,nodeManager:e,gmlRender:i,auxiliaryManager:s,toolManager:a,renderManager:this.renderManager,resourceManager:l,idGenerator:h,slotManager:d,asyncRenderNodeManager:f,docState:u,slideManager:p,mindMapManager:A},this.actionCache=new $re,this.docState=u}addNetworkPlugin(e){this.networkPlugin=e}execAction(e){var i;this.dealDocSeq(e),this.executor.exec(e,this.execCtx),Hre.has(e.type)||(i=this.networkPlugin)==null||i.addMessage(e),this.actionCache.add(e);const r=this.actionCache.getActionGroup();r&&this.undoManager.add(r)}dealDocSeq(e){Hre.has(e.type)||this.docState.seq++}undo(){var r;const e=this.undoManager.undo(this.executor,this.execCtx);e&&((r=this.networkPlugin)==null||r.addActionGroup(e))}redo(){var r;const e=this.undoManager.redo(this.executor,this.execCtx);e&&((r=this.networkPlugin)==null||r.addActionGroup(e))}}function rUe(n){return n.type===zi.AddNode?{addNodeData:{data:n.data.nodes.map(i=>{const s=i.props,a=new Map;s.forEach(u=>a.set(u.type,u));const o=ae.convertPropsToCapInfo(a);return{id:i.id,type:i.type,zIndex:i.zIndex,parentId:i.parentId,capInfo:o}})}}:n.type===zi.UpdateNode?{updateNodeData:{data:n.data.infos.map(i=>{const s=i.props,a=new Map;s.forEach(u=>a.set(u.type,u));const o=ae.convertPropsToCapInfo(a);return{id:i.id,zIndex:i.zIndex,parentId:i.parentId,capInfo:o}})}}:n instanceof Xa?{removeNodeData:{data:n.data.idList}}:null}function nUe(n){const{updateNodeData:e,addNodeData:r,removeNodeData:i}=n;if(r){const s=[];for(const a of r.data)s.push({id:a.id,parentId:a.parentId,zIndex:a.zIndex,type:a.type,props:ae.convertCapInfoToProps(a.capInfo)});return new hn({nodes:s})}if(e){const s=[];for(const a of e.data)s.push({id:a.id,zIndex:a.zIndex,parentId:a.parentId,props:ae.convertCapInfoToProps(a.capInfo)});return new kt({infos:s})}if(i)return Xa.create(i.data);throw new Error("类型转换错误!")}const Bk=.04,Pk=4;class Q_{static isMobile(){const e=navigator.userAgent||navigator.vendor||window.opera;if(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i.test(e.toLowerCase()))return!0;const i="ontouchstart"in window||navigator.maxTouchPoints>0,s=window.innerWidth<768;return i&&s}}const Qre=20,Gre=10;class iUe{zoomScale(e,r,i){const s=i.getScale();let a=e;s*e>Pk&&(a=Pk/s),s*e<Bk&&(a=Bk/s),this.zoomToScale(a,r,i.gmlRender),this.zoomToScale(a,r,i.auxiliaryManager.gmlRender);const o=i.getScale();i.slotManager.addSlotState(Qn.Scale,o),i.addContentRenderTask(),i.addAuxiliaryDrawTask()}zoomToSelect(e){if(e.auxiliaryManager.selectManager.getSelectNodes().length===0)return;const i=e.auxiliaryManager.selectManager.getSelectBounds();this.zoomToBounds(i,e)}zoomToFit(e){if(e.nodeManager.nodeMap.size===0){this.zoomTo100(e);return}const i=e.nodeManager.getNodeBounds();this.zoomToBounds(i,e)}zoomTo100(e){const r=e.gmlRender.canvas.getBoundingClientRect(),i=window.devicePixelRatio,s=1*i,a=new he(.5*i*r.width,.5*i*r.height);let o;if(e.nodeManager.nodeMap.size>0){const d=e.nodeManager.getNodeBounds();o=new he(.5*(d.minX+d.maxX),.5*(d.minY+d.maxY))}else{const{a:d,e:f,f:p}=e.gmlRender.globalTransform;o=new he((a.x-f)/d,(a.y-p)/d)}const u=new he(-o.x*s+a.x,-o.y*s+a.y);this.zoomToMatrix(s,u.x,u.y,e.gmlRender),this.zoomToMatrix(s,u.x,u.y,e.auxiliaryManager.gmlRender);const h=e.getScale();e.slotManager.addSlotState(Qn.Scale,h),e.addContentRenderTask(),e.addAuxiliaryDrawTask()}zoomToBounds(e,r,i){const s=Q_.isMobile()?Gre:Qre,a=i!==void 0?i:s,o=_t.rectNode2Rect(e),l=r.gmlRender.canvas.getBoundingClientRect(),u=window.devicePixelRatio,h=l.width-a*2*u,d=l.height-a*2*u,f=h/o.width,p=d/o.height,A=Math.min(Math.max(Math.min(f,p),Bk),Pk)*u,g=new he(.5*u*l.width,.5*u*l.height),m=new he(.5*(e.minX+e.maxX),.5*(e.minY+e.maxY)),y=new he(-m.x*A+g.x,-m.y*A+g.y);this.zoomToMatrix(A,y.x,y.y,r.gmlRender),this.zoomToMatrix(A,y.x,y.y,r.auxiliaryManager.gmlRender);const v=r.getScale();r.slotManager.addSlotState(Qn.Scale,v),r.addContentRenderTask(),r.addAuxiliaryDrawTask()}ensureBoundsVisible(e,r,i){const s=Q_.isMobile()?Gre:Qre,a=i!==void 0?i:s,o=r.gmlRender.canvas.getBoundingClientRect(),l=window.devicePixelRatio,u=r.getScale(),h=a/u,d=r.gmlRender.getViewPortBounds(),f={minX:d.minX+h,minY:d.minY+h,maxX:d.maxX-h,maxY:d.maxY-h};if(f.minX<=e.minX&&f.minY<=e.minY&&f.maxX>=e.maxX&&f.maxY>=e.maxY)return;const A=_t.rectNode2Rect(e),g=o.width-a*2*l,m=o.height-a*2*l;if(g<=0||m<=0||A.width<=0||A.height<=0)return;const y=new he(.5*(d.minX+d.maxX),.5*(d.minY+d.maxY)),v=Math.max(Math.abs(e.minX-y.x),Math.abs(e.maxX-y.x)),x=Math.max(Math.abs(e.minY-y.y),Math.abs(e.maxY-y.y)),w=Math.min(g/(2*v),m/(2*x))*l,b=Math.min(u*l,w);b>=u*l||this.zoomScale(b/(u*l),y,r)}zoomToScale(e,r,i){i.scale(e,e,r);const s=i.glCtx,{a,b:o,c:l,d:u,e:h,f:d}=i.globalTransform;s.setTransform(a,o,l,u,h,d)}zoomToMatrix(e,r,i,s){const a=e,o=e,l=r,u=i;s.setTransform(a,0,0,o,l,u)}}class sUe{exportToOfflineCanvas(e,r,i,s){const a=_t.rectNode2Rect(e),o=document.createElement("canvas");o.width=i*a.width,o.height=i*a.height;const l=o.getContext("2d");l.scale(i,i),l.translate(-a.x,-a.y);let u=r.searchNodesByRectNode(e);u=ae.sortGraphics(u),l.save(),s&&(l.fillStyle=s,l.fillRect(a.x,a.y,a.width,a.height)),l.restore();for(const h of u)h.drawOnGLCtx(l);return o}exportToOfflineCanvasByFilterNodes(e,r,i,s,a){const o=_t.rectNode2Rect(e),l=document.createElement("canvas");l.width=i*o.width,l.height=i*o.height;const u=l.getContext("2d");u.scale(i,i),u.translate(-o.x,-o.y);let h=r.searchNodesByRectNode(e);h=ae.sortGraphics(h),u.save(),s&&(u.fillStyle=s,u.fillRect(o.x,o.y,o.width,o.height)),u.restore();for(const d of h)a.has(d)&&d.drawOnGLCtx(u);return l}}class Ik{}var jh=(n=>(n[n.None=0]="None",n[n.DotGrid=1]="DotGrid",n[n.LineGrid=2]="LineGrid",n))(jh||{});class aUe extends Ik{enable(e,r){return e?r.auxiliaryManager.selectManager.docState.docMode===Hr.SLIDE_PLAY:!1}draw(e,r){const i=e.getBounds(),s=ae.computeRelatedSlideSectionChildrenNode(e,{nodeManager:r.nodeManager}),a=ae.sortGraphics([e,...s]);r.gmlRender.dirtyDraw(i,a,jh.None),r.contentDraw=!1}}class oUe extends Ik{enable(e,r){return e?r.auxiliaryManager.selectManager.docState.docMode===Hr.SLIDE_EDIT:!1}draw(e,r){const i=r.gmlRender.getViewPortBounds(),s=ae.computeRelatedSlideSectionChildrenNode(e,{nodeManager:r.nodeManager}),a=ae.sortGraphics([e,...s]);r.gmlRender.dirtyDraw(i,a,jh.None),r.contentDraw=!1}}class lUe extends Ik{enable(e,r){return!0}draw(e,r){const i=r.gmlRender.getViewPortBounds(),s=r.nodeManager.tree.search(i),a=new Set;for(const l of s){const u=r.nodeManager.nodeMap.get(l.id);u&&a.add(u)}let o=[...a];o=ae.sortGraphics(o),r.gmlRender.dirtyDraw(i,o,r.docState.gridType),r.contentDraw=!1}}class cUe extends Ik{enable(e,r){return e?r.auxiliaryManager.selectManager.docState.docMode===Hr.DOC_EDIT:!1}draw(e,r){const i=r.gmlRender.getViewPortBounds(),s=new Set;ae.getAllChildren(e,s);const a=ae.sortGraphics([e,...s]);r.gmlRender.dirtyDraw(i,a,jh.None),r.contentDraw=!1}}class Wre{constructor(e,r,i,s,a){U(this,"gmlRender");U(this,"nodeManager");U(this,"auxiliaryManager");U(this,"slotManager");U(this,"zoomWorker",new iUe);U(this,"exportWorker",new sUe);U(this,"drawModes",[new aUe,new oUe,new cUe,new lUe]);U(this,"working",!1);U(this,"nextContentDrawCompleteCallbacks",new Set);U(this,"contentDraw",!1);U(this,"auxiliaryDraw",!1);U(this,"focusId","");U(this,"docState");U(this,"tickerRun",()=>{this.flushDrawTasks(),this.working&&requestAnimationFrame(this.tickerRun)});this.gmlRender=e,this.nodeManager=r,this.auxiliaryManager=i,this.slotManager=s,this.docState=a}getScale(){return this.gmlRender.getScale()}zoomScale(e,r){this.zoomWorker.zoomScale(e,r,this)}zoomToFit(){this.zoomWorker.zoomToFit(this)}zoomToSelect(){this.zoomWorker.zoomToSelect(this)}zoomTo100(){this.zoomWorker.zoomTo100(this)}exportOfflineCanvas(e,r,i){return this.exportWorker.exportToOfflineCanvas(e,this.nodeManager,r,i)}exportOfflineCanvasByFilterNodes(e,r,i,s){return this.exportWorker.exportToOfflineCanvasByFilterNodes(e,this.nodeManager,r,i,s)}exportNodesImg(e,r,i=""){const s=[];for(const a of e){const o=this.nodeManager.getNode(a);o&&s.push(o.getBounds())}if(s.length===0){const a={minX:0,minY:0,maxX:600,maxY:600};return this.exportOfflineCanvas(a,r,i)}return this.exportOfflineCanvas(ae.getBounds(s),r,i)}scroll(e,r){this.scrollTo(e,r,this.gmlRender),this.scrollTo(e,r,this.auxiliaryManager.gmlRender),this.addContentRenderTask(),this.addAuxiliaryDrawTask()}start(){this.working=!0,this.tickerRun()}stop(){this.working=!1}onNextContentDrawComplete(e){return this.nextContentDrawCompleteCallbacks.add(e),()=>{this.nextContentDrawCompleteCallbacks.delete(e)}}addAuxiliaryDrawTask(){this.auxiliaryDraw=!0}addContentRenderTask(){this.contentDraw=!0}dirtyDraw(e){const r=this.nodeManager.tree.search(e),i=new Set;for(const o of r){const l=this.nodeManager.nodeMap.get(o.id);l&&i.add(l)}let s=[...i];s=ae.sortGraphics(s);const a=this.judgeFocusNode();if(a){const o=ae.computeRelatedSlideSectionChildrenNode(a,{nodeManager:this.nodeManager});o.add(a),s=s.filter(l=>o.has(l))}this.gmlRender.dirtyDraw(e,s,this.docState.gridType)}drawAsSvg(e,r){if(hE.reset(),r&&r.size>0){const l=ae.sortGraphics([...r]);return this.gmlRender.drawSvg(e,l,this.docState.gridType)}const i=this.nodeManager.tree.search(e),s=new Set;for(const l of i){const u=this.nodeManager.nodeMap.get(l.id);u&&s.add(u)}let a=[...s];a=ae.sortGraphics(a);const o=this.judgeFocusNode();if(o){const l=ae.computeRelatedSlideSectionChildrenNode(o,{nodeManager:this.nodeManager});l.add(o),a=a.filter(u=>l.has(u))}return this.gmlRender.drawSvg(e,a,this.docState.gridType)}flushDrawTasks(){if(this.contentDraw){const e=this.judgeFocusNode();for(const r of this.drawModes)if(r.enable(e,this)){r.draw(e,this),this.notifyNextContentDrawComplete();break}}this.auxiliaryDraw&&(this.auxiliaryManager.redraw(),this.auxiliaryDraw=!1)}scrollTo(e,r,i){const s=i.getScale();i.translation(-e/s,-r/s);const a=i.glCtx,{a:o,b:l,c:u,d:h,e:d,f}=i.globalTransform;a.setTransform(o,l,u,h,d,f)}notifyNextContentDrawComplete(){if(this.nextContentDrawCompleteCallbacks.size===0)return;const e=[...this.nextContentDrawCompleteCallbacks];this.nextContentDrawCompleteCallbacks.clear(),e.forEach(r=>r())}judgeFocusNode(){if(this.focusId){const e=this.nodeManager.nodeMap.get(this.focusId);if(e)return e}return null}}const uUe={default:"default"};class Vre{constructor(){U(this,"currentCursor","default");U(this,"currentAngle")}resetCursor(){this.currentCursor=null}setCursor(e,r){if(this.currentCursor!==null){const s=r!==void 0?`${e}-${r}`:e;if((this.currentAngle!==void 0?`${this.currentCursor}-${this.currentAngle}`:this.currentCursor)===s)return}if(e==="stretch"&&r!==void 0){const s=this.generateRotatedStretchCursorSvg(r),o=`url("data:image/svg+xml,${encodeURIComponent(s)}") 16 16, auto`;document.body.style.cursor=o,this.currentCursor=e,this.currentAngle=r;return}if(e==="rotate"&&r!==void 0){const s=this.generateRotatedRotateCursorSvg(r),o=`url("data:image/svg+xml,${encodeURIComponent(s)}") 16 16, auto`;document.body.style.cursor=o,this.currentCursor=e,this.currentAngle=r;return}const i=uUe[e];i?document.body.style.cursor=i:document.body.style.cursor=e,this.currentCursor=e,this.currentAngle=void 0}generateRotatedStretchCursorSvg(e){return`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
|
|
264
264
|
<g transform="rotate(${e} 16 16)">
|
|
265
265
|
<mask id="path-1-outside-1_0_11070" maskUnits="userSpaceOnUse" x="5" y="10" width="22" height="12" fill="black">
|
|
266
266
|
<rect fill="white" x="5" y="10" width="22" height="12"/>
|
|
@@ -288,7 +288,7 @@ ${l}
|
|
|
288
288
|
`)+(A.length?`
|
|
289
289
|
`:""),p+="</svg>",p}drawGrid(e,r,i){if(i===jh.None)return;const s=this.getScale(),a=20;let o=20;for(;o*s<a;)o*=2;const l=Math.floor(r.minX/o)*o,u=Math.floor(r.minY/o)*o;if(e.save(),i===jh.DotGrid){const h=1.5/s;e.fillStyle="rgba(0, 0, 0, 0.25)";for(let d=l;d<=r.maxX;d+=o)for(let f=u;f<=r.maxY;f+=o)e.beginPath(),e.arc(d,f,h,0,Math.PI*2),e.fill()}else if(i===jh.LineGrid){e.strokeStyle="rgba(0, 0, 0, 0.12)",e.lineWidth=.5/s,e.beginPath();for(let h=l;h<=r.maxX;h+=o)e.moveTo(h,r.minY),e.lineTo(h,r.maxY);for(let h=u;h<=r.maxY;h+=o)e.moveTo(r.minX,h),e.lineTo(r.maxX,h);e.stroke()}e.restore()}getViewPortBounds(){const e=this.canvas.getBoundingClientRect(),r=new he(e.width,e.height),i=this.transformToGlobal(new he(0,0)),s=this.transformToGlobal(r);return{id:"rect",minX:i.x,minY:i.y,maxX:s.x,maxY:s.y}}getGlobalPoint(e){const r=this.canvas.getBoundingClientRect(),i=new he(e.clientX-r.x,e.clientY-r.y);return this.transformToGlobal(i)}getScale(){const e=window.devicePixelRatio;return this.globalTransform.a/e}scaleToCenter(e){const r=this.getScale(),i=e/r,s=this.getViewPortBounds(),a=new he(.5*(s.minX+s.maxX),.5*(s.minY+s.maxY));this.scale(i,i,a)}}function F$e(n,e,r,i,s){Sne(n,e,r||0,i||n.length-1,s||U$e)}function Sne(n,e,r,i,s){for(;i>r;){if(i-r>600){var a=i-r+1,o=e-r+1,l=Math.log(a),u=.5*Math.exp(2*l/3),h=.5*Math.sqrt(l*u*(a-u)/a)*(o-a/2<0?-1:1),d=Math.max(r,Math.floor(e-o*u/a+h)),f=Math.min(i,Math.floor(e+(a-o)*u/a+h));Sne(n,e,d,f,s)}var p=n[e],A=r,g=i;for(f4(n,r,e),s(n[i],p)>0&&f4(n,r,i);A<g;){for(f4(n,A,g),A++,g--;s(n[A],p)<0;)A++;for(;s(n[g],p)>0;)g--}s(n[r],p)===0?f4(n,r,g):(g++,f4(n,g,i)),g<=e&&(r=g+1),e<=g&&(i=g-1)}}function f4(n,e,r){var i=n[e];n[e]=n[r],n[r]=i}function U$e(n,e){return n<e?-1:n>e?1:0}class $$e{constructor(e=9){this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(e){let r=this.data;const i=[];if(!Fk(e,r))return i;const s=this.toBBox,a=[];for(;r;){for(let o=0;o<r.children.length;o++){const l=r.children[o],u=r.leaf?s(l):l;Fk(e,u)&&(r.leaf?i.push(l):J_(e,u)?this._all(l,i):a.push(l))}r=a.pop()}return i}collides(e){let r=this.data;if(!Fk(e,r))return!1;const i=[];for(;r;){for(let s=0;s<r.children.length;s++){const a=r.children[s],o=r.leaf?this.toBBox(a):a;if(Fk(e,o)){if(r.leaf||J_(e,o))return!0;i.push(a)}}r=i.pop()}return!1}load(e){if(!(e&&e.length))return this;if(e.length<this._minEntries){for(let i=0;i<e.length;i++)this.insert(e[i]);return this}let r=this._build(e.slice(),0,e.length-1,0);if(!this.data.children.length)this.data=r;else if(this.data.height===r.height)this._splitRoot(this.data,r);else{if(this.data.height<r.height){const i=this.data;this.data=r,r=i}this._insert(r,this.data.height-r.height-1,!0)}return this}insert(e){return e&&this._insert(e,this.data.height-1),this}clear(){return this.data=s2([]),this}remove(e,r){if(!e)return this;let i=this.data;const s=this.toBBox(e),a=[],o=[];let l,u,h;for(;i||a.length;){if(i||(i=a.pop(),u=a[a.length-1],l=o.pop(),h=!0),i.leaf){const d=H$e(e,i.children,r);if(d!==-1)return i.children.splice(d,1),a.push(i),this._condense(a),this}!h&&!i.leaf&&J_(i,s)?(a.push(i),o.push(l),l=0,u=i,i=i.children[0]):u?(l++,i=u.children[l],h=!1):i=null}return this}toBBox(e){return e}compareMinX(e,r){return e.minX-r.minX}compareMinY(e,r){return e.minY-r.minY}toJSON(){return this.data}fromJSON(e){return this.data=e,this}_all(e,r){const i=[];for(;e;)e.leaf?r.push(...e.children):i.push(...e.children),e=i.pop();return r}_build(e,r,i,s){const a=i-r+1;let o=this._maxEntries,l;if(a<=o)return l=s2(e.slice(r,i+1)),i2(l,this.toBBox),l;s||(s=Math.ceil(Math.log(a)/Math.log(o)),o=Math.ceil(a/Math.pow(o,s-1))),l=s2([]),l.leaf=!1,l.height=s;const u=Math.ceil(a/o),h=u*Math.ceil(Math.sqrt(o));Ene(e,r,i,h,this.compareMinX);for(let d=r;d<=i;d+=h){const f=Math.min(d+h-1,i);Ene(e,d,f,u,this.compareMinY);for(let p=d;p<=f;p+=u){const A=Math.min(p+u-1,f);l.children.push(this._build(e,p,A,s-1))}}return i2(l,this.toBBox),l}_chooseSubtree(e,r,i,s){for(;s.push(r),!(r.leaf||s.length-1===i);){let a=1/0,o=1/0,l;for(let u=0;u<r.children.length;u++){const h=r.children[u],d=Z_(h),f=G$e(e,h)-d;f<o?(o=f,a=d<a?d:a,l=h):f===o&&d<a&&(a=d,l=h)}r=l||r.children[0]}return r}_insert(e,r,i){const s=i?e:this.toBBox(e),a=[],o=this._chooseSubtree(s,this.data,r,a);for(o.children.push(e),A4(o,s);r>=0&&a[r].children.length>this._maxEntries;)this._split(a,r),r--;this._adjustParentBBoxes(s,a,r)}_split(e,r){const i=e[r],s=i.children.length,a=this._minEntries;this._chooseSplitAxis(i,a,s);const o=this._chooseSplitIndex(i,a,s),l=s2(i.children.splice(o,i.children.length-o));l.height=i.height,l.leaf=i.leaf,i2(i,this.toBBox),i2(l,this.toBBox),r?e[r-1].children.push(l):this._splitRoot(i,l)}_splitRoot(e,r){this.data=s2([e,r]),this.data.height=e.height+1,this.data.leaf=!1,i2(this.data,this.toBBox)}_chooseSplitIndex(e,r,i){let s,a=1/0,o=1/0;for(let l=r;l<=i-r;l++){const u=p4(e,0,l,this.toBBox),h=p4(e,l,i,this.toBBox),d=W$e(u,h),f=Z_(u)+Z_(h);d<a?(a=d,s=l,o=f<o?f:o):d===a&&f<o&&(o=f,s=l)}return s||i-r}_chooseSplitAxis(e,r,i){const s=e.leaf?this.compareMinX:z$e,a=e.leaf?this.compareMinY:Q$e,o=this._allDistMargin(e,r,i,s),l=this._allDistMargin(e,r,i,a);o<l&&e.children.sort(s)}_allDistMargin(e,r,i,s){e.children.sort(s);const a=this.toBBox,o=p4(e,0,r,a),l=p4(e,i-r,i,a);let u=Ok(o)+Ok(l);for(let h=r;h<i-r;h++){const d=e.children[h];A4(o,e.leaf?a(d):d),u+=Ok(o)}for(let h=i-r-1;h>=r;h--){const d=e.children[h];A4(l,e.leaf?a(d):d),u+=Ok(l)}return u}_adjustParentBBoxes(e,r,i){for(let s=i;s>=0;s--)A4(r[s],e)}_condense(e){for(let r=e.length-1,i;r>=0;r--)e[r].children.length===0?r>0?(i=e[r-1].children,i.splice(i.indexOf(e[r]),1)):this.clear():i2(e[r],this.toBBox)}}function H$e(n,e,r){if(!r)return e.indexOf(n);for(let i=0;i<e.length;i++)if(r(n,e[i]))return i;return-1}function i2(n,e){p4(n,0,n.children.length,e,n)}function p4(n,e,r,i,s){s||(s=s2(null)),s.minX=1/0,s.minY=1/0,s.maxX=-1/0,s.maxY=-1/0;for(let a=e;a<r;a++){const o=n.children[a];A4(s,n.leaf?i(o):o)}return s}function A4(n,e){return n.minX=Math.min(n.minX,e.minX),n.minY=Math.min(n.minY,e.minY),n.maxX=Math.max(n.maxX,e.maxX),n.maxY=Math.max(n.maxY,e.maxY),n}function z$e(n,e){return n.minX-e.minX}function Q$e(n,e){return n.minY-e.minY}function Z_(n){return(n.maxX-n.minX)*(n.maxY-n.minY)}function Ok(n){return n.maxX-n.minX+(n.maxY-n.minY)}function G$e(n,e){return(Math.max(e.maxX,n.maxX)-Math.min(e.minX,n.minX))*(Math.max(e.maxY,n.maxY)-Math.min(e.minY,n.minY))}function W$e(n,e){const r=Math.max(n.minX,e.minX),i=Math.max(n.minY,e.minY),s=Math.min(n.maxX,e.maxX),a=Math.min(n.maxY,e.maxY);return Math.max(0,s-r)*Math.max(0,a-i)}function J_(n,e){return n.minX<=e.minX&&n.minY<=e.minY&&e.maxX<=n.maxX&&e.maxY<=n.maxY}function Fk(n,e){return e.minX<=n.maxX&&e.minY<=n.maxY&&e.maxX>=n.minX&&e.maxY>=n.minY}function s2(n){return{children:n,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Ene(n,e,r,i,s){const a=[e,r];for(;a.length;){if(r=a.pop(),e=a.pop(),r-e<=i)continue;const o=e+Math.ceil((r-e)/i/2)*i;F$e(n,o,e,r,s),a.push(e,o,o,r)}}class kne extends Cne{constructor(){super();U(this,"root");U(this,"previewRoot");U(this,"nodeMap");U(this,"tree");U(this,"linkMap");this.nodeMap=new Map,this.tree=new $$e,this.root=new H_(Va),this.previewRoot=new H_(Dj),this.linkMap=new Map}clear(){this.tree.clear(),this.nodeMap.clear()}reset(){this.clear(),this.linkMap.clear()}searchNodesByRectNode(r){const{minY:i,minX:s,maxY:a,maxX:o}=r;return this.searchNodes(s,i,o,a)}searchNodes(r,i,s=r,a=i){const o={id:"pointer",minX:r,minY:i,maxX:s,maxY:a},l=this.tree.search(o),u=[];for(const h of l){const d=this.nodeMap.get(h.id);d&&u.push(d)}return u}getParentNode(r){const i=this.nodeMap.get(r);return i||this.root}getNode(r){if(r===Va||r==="")return this.root;const i=this.nodeMap.get(r);return i||null}addNode(r){this.nodeMap.set(r.id,r),this.addIndexNode(r.getRectNode())}removeNode(r){const i=this.getNode(r);if(!i){console.warn("警告:删除节点不存在:",r);return}this.nodeMap.delete(r),this.removeIndexNode(i.getRectNode()),i.type===X.Line&&this.linkMap.delete(i),this.deleteNodeFromParent(i)}deleteNodeFromParent(r){var s;const i=(s=r.parent)==null?void 0:s.id;if(i)if(i===this.root.id)this.root.children.delete(r);else{const a=this.nodeMap.get(i);a&&a.children.delete(r)}}removeIndexNode(r){this.tree.remove(r,(i,s)=>i.id===s.id)}addIndexNode(r){this.tree.insert(r)}getNodeBounds(){const r=[];for(const[i,s]of this.nodeMap)r.push(s.getRectNode());return ae.getBounds(r,"all-node-bounds")}addLink(r,i,s=!0){const a=this.linkMap.get(r);if(a){s?a.startNode=i:a.endNode=i,this.checkLinkLine(r);return}const o={startNode:null,endNode:null};s?o.startNode=i:o.endNode=i,this.linkMap.set(r,o),this.checkLinkLine(r)}checkLinkLine(r){const i=this.linkMap.get(r);i&&i.endNode===null&&i.startNode===null&&this.linkMap.delete(r)}getNodeLinks(r){const i=new Set;if(r.type===X.Line)return i;for(const[s,a]of this.linkMap){if(!s.getProp(ne.Connect))continue;const{startNode:l,endNode:u}=a;l===r&&i.add(s),u===r&&i.add(s)}return i}}const pb=class pb{constructor(){U(this,"previewGraphics",[]);U(this,"createWorker",new Yte);U(this,"inQuickPreview",!1)}enterQuickPreview(e,r,i){if(this.inQuickPreview){this.previewGraphics.length>0&&i.addOrUpdate(Xe.PreviewGraphics,{previewNodes:this.previewGraphics});return}this.inQuickPreview=!0,this.resetPreviewNode(i);const s=this.createWorker.judgeQuickCreateMode(e,r,i);if(s){this.computeDrawLine(s,e,r,i),i.addOrUpdate(Xe.PreviewGraphics,{previewNodes:this.previewGraphics});return}this.computeDrawLineAndNode(e,r,i)}computeDrawLine(e,r,i,s){const a=r.baseProps,o=r.toGlobal({x:i.x*a.width,y:i.y*a.height}),l=this.createWorker.computeEndNodeRelative(e,i),u=e.baseProps,h=e.toGlobal({x:l.x*u.width,y:l.y*u.height}),d={point:o,nodeConnect:{rect:_t.rectNode2Rect(r.getBounds()),endType:ae.computeNodeConnectEnd(i,r.baseProps.angle)}},f={point:h,nodeConnect:{rect:_t.rectNode2Rect(e.getBounds()),endType:ae.computeNodeConnectEnd(l,e.baseProps.angle)}},p=this.makeupLineProps(d,f,s),A=la.getInstance().create(pb.PREVIEW_LINE_ID,X.Line,0,p,s.nodeManager.previewRoot,s.gmlRender.glCtx);this.previewGraphics.push(A)}computeDrawLineAndNode(e,r,i){const s=this.createWorker.computePreviewNodePos(e,r,i),a=this.makeupNodeProps(e,s),o=this.getQuickCreateNodeType(e),l=la.getInstance().create(pb.PREVIEW_ID,o,0,a,i.nodeManager.previewRoot,i.gmlRender.glCtx);(o===X.IMG||o===X.SVG||o===X.MathFormula)&&e.imgBitmap&&l.setImageBitmap(e.imgBitmap),this.previewGraphics.push(l),this.computeDrawLine(l,e,r,i),i.addOrUpdate(Xe.PreviewGraphics,{previewNodes:this.previewGraphics})}exitQuickPreview(e){this.resetPreviewNode(e),this.inQuickPreview=!1,e.removeAuxGraphic(Xe.PreviewGraphics)}resetPreviewNode(e){this.previewGraphics=[],e.nodeManager.previewRoot.children.clear()}makeupNodeProps(e,r){const i=e.baseProps,s=r.x,a=r.y;if(e.type===X.IMG){const d=e,f=d.getProp(ne.Image);return[{type:ne.Base,x:s,y:a,width:i.width,height:i.height,angle:i.angle},f.clone(),nn.create({...d.borderProps,alpha:.5}),d.cropProps.clone()]}if(e.type===X.SVG){const d=e;return[{type:ne.Base,x:s,y:a,width:i.width,height:i.height,angle:i.angle},d.svgProps.clone(),nn.create({...d.borderProps,alpha:.5}),d.cropProps.clone()]}if(e.type===X.Paint){const d=e;return[{type:ne.Base,x:s,y:a,width:i.width,height:i.height,angle:i.angle},nn.create({...d.borderProps,alpha:.5}),d.paintProps.clone(),d.getProp(ne.Shape).clone()]}if(e.type===X.Editable){const d=e;return[{type:ne.Base,x:s,y:a,width:i.width,height:i.height,angle:i.angle},zn.create({...d.colorProps,alpha:.5}),nn.create({...d.borderProps,alpha:.5}),d.editProps.clone()]}if(e.type===X.Pie){const d=e;return[{type:ne.Base,x:s,y:a,width:i.width,height:i.height,angle:i.angle},zn.create({...d.colorProps,alpha:.5}),nn.create({...d.borderProps,alpha:.5}),d.shapeProps.clone(),d.pieRingProps.clone()]}if(e.type===X.MathFormula){const d=e;return[{type:ne.Base,x:s,y:a,width:i.width,height:i.height,angle:i.angle},d.formulaProps.clone(),zn.create({...d.colorProps,alpha:.5}),nn.create({...d.borderProps,alpha:.5}),d.cropProps.clone()]}const o=e.shapeType,l=e.colorProps,u=e.borderProps,h=[{type:ne.Base,x:s,y:a,width:i.width,height:i.height,angle:i.angle},zn.create({...l,alpha:.5}),nn.create({...u,alpha:.5}),new Sn(o)];if(e.type===X.Shape){const d=e.textProps.clone();d.text="",d.richText="",h.push(d);const f=e.paragraphProps;h.push(f.clone());const p=e.paragraphQuoteProps;h.push(p.clone())}return h}getQuickCreateNodeType(e){return e.type===X.IMG?X.IMG:e.type===X.SVG?X.SVG:e.type===X.Paint?X.Paint:e.type===X.Editable?X.Editable:e.type===X.Pie?X.Pie:e.type===X.MathFormula?X.MathFormula:X.Shape}makeupLineProps(e,r,i){var h;const s=((h=i.memoryManager.getValue(qh.LineStyle))==null?void 0:h.shapeType)??cr.RoundPolyLine,o=this.createLineLayoutHandler(s).layoutToPointsPro(e,r),l=_t.rectNode2Rect(ae.getBoundsByPoints(o));return[Vs.create(o),mr.create({x:l.x,y:l.y,width:l.width,height:l.height}),i.memoryManager.resolveLineArrowProps(),new Sn(s),i.memoryManager.resolveLineBorderProps({alpha:.5})]}createLineLayoutHandler(e){switch(e){case cr.Line:return new uA;case cr.PolyLine:case cr.RoundPolyLine:return new lh;case cr.BrokenLine:return new c4;case cr.Curve:default:return new fp}}};U(pb,"PREVIEW_ID","quick_preview"),U(pb,"PREVIEW_LINE_ID","quick_preview_line");let Uk=pb;class Qc{computePreviewPos(e,r,i){var u;e.toolManager.shapeType;const s=e.toolManager.grab,a=((u=e.lastInteractiveEvent)==null?void 0:u.globalPoint)||new he,o=s?a.x-.5*r:a.x,l=s?a.y-.5*i:a.y;return new he(o,l)}}class V$e extends Qc{enable(e){return e===_r.SHAPE}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,100,100),a=r.createWorker.makeupPreviewProps(X.Shape,r,i,s);return la.getInstance().create(e,X.Shape,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class Y$e extends Qc{enable(e){return e===_r.SECTION}async handle(e,r){const i=r.toolManager.shapeType,s=tk[i],a=this.computePreviewPos(r,s.width,s.height),o=r.createWorker.makeupPreviewProps(X.Section,r,i,a);return la.getInstance().create(e,X.Section,0,o,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class $k{async work(e,r,i,s){const a=i.getScale();try{const o=e.baseProps,l=a*o.width,u=a*o.height,h=Math.max(1,Math.ceil(2*l)),d=Math.max(1,Math.ceil(2*u));let f;const p=s.getSVGBlobUrl(r,l,u);if(p)f=p.imageBitmap;else{const A=new Blob([r],{type:"image/svg+xml"}),g=URL.createObjectURL(A),m=new Image;m.width=h,m.height=d,await new Promise((w,b)=>{m.onload=w,m.onerror=b,m.src=g});const y=new OffscreenCanvas(h,d);y.getContext("2d").drawImage(m,0,0,h,d);const x=y.transferToImageBitmap();f=x,s.setSvgInfo(r,{imageBitmap:x},l,u),URL.revokeObjectURL(g)}e.setImageBitmap(f)}catch(o){console.error("加载svg图片出现问题",o),e.setBroken()}i.dirtyDraw(e.getBounds())}}class X$e extends Qc{constructor(){super(...arguments);U(this,"svgWorker",new EA)}enable(r){return r===_r.Resource}async handle(r,i){const s=new he(0,0),a=i.previewManager.previewResourceManager.previewSvgCode;a===""&&console.error("出现错误,svg code为空");const o=this.svgWorker.computeAddSvgNodeByCode(a,s,i),l=la.getInstance().create(Uk.PREVIEW_ID,X.SVG,0,o.props,i.nodeManager.previewRoot,i.gmlRender.glCtx),u=vu.trimSvgCode(a);return l.setSvgCode(u.svgCode),await new $k().work(l,u.svgCode,i.renderManager,i.resourceManager),l}makeupShapeDefaultProps(r,i,s){const a=Dn.Resource,o=bu[a],l=100,u=100,h=s?i.x-.5*l:i.x,d=s?i.y-.5*u:i.y;return[mr.create({x:h,y:d,width:l,height:u}),nn.create({color:o,alpha:.5})]}}class q$e extends Qc{enable(e,r){return e===_r.Widget&&r===jv.Checkbox}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,16,16),a=r.createWorker.makeupPreviewProps(X.Checkbox,r,i,s);return la.getInstance().create(e,X.Checkbox,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class j$e extends Qc{enable(e,r){return e===_r.Widget&&r===jv.CheckboxText}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,102,32),a=r.createWorker.makeupPreviewProps(X.CheckboxText,r,i,s);return la.getInstance().create(e,X.CheckboxText,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class Hk{makeupLineDefaultProps(e,r,i){const o=r.x,l=r.y,u=ae.computeShapeCategory(X.Line,e),h=bu[u],d=this.makeupLinePoints(o,l,100,-100),f=_t.rectNode2Rect(ae.getBoundsByPoints(d)),p=mr.create({x:f.x,y:f.y,width:f.width,height:f.height}),A=i.memoryManager.resolveLineBorderProps({alpha:.5}),g=i.memoryManager.resolveLineArrowProps();return i.memoryManager.getValue(qh.LineStyle)||(A.color=h),[p,new Sn(e),Vs.create(d),A,g]}}class K$e extends Hk{makeupLineDefaultProps(e,r,i){const o=r.x,l=r.y,u=ae.computeShapeCategory(X.Line,e),h=bu[u],d=[{x:o,y:l},{x:o+100,y:l+-100}],f=_t.rectNode2Rect(ae.getBoundsByPoints(d)),p=mr.create({x:f.x,y:f.y,width:f.width,height:f.height}),A=i.memoryManager.resolveLineBorderProps({alpha:.5}),g=i.memoryManager.resolveLineArrowProps();return i.memoryManager.getValue(qh.LineStyle)||(A.color=h),[p,new Sn(e),Vs.create(d),A,g]}makeupLinePoints(e,r,i,s){return[{x:e,y:r},{x:e+i,y:r+s}]}}class Z$e extends Hk{makeupLinePoints(e,r,i,s){return[{x:e,y:r},{x:e+.5*i,y:r},{x:e+.5*i,y:r+s},{x:e+i,y:r+s}]}}class J$e extends Hk{makeupLinePoints(e,r,i,s){return[{x:e,y:r},{x:e+.5*i,y:r},{x:e+.5*i,y:r+s},{x:e+i,y:r+s}]}}class eHe extends Hk{makeupLinePoints(e,r,i,s){return[{x:e,y:r},{x:e+.5*i,y:r},{x:e+.5*i,y:r+s},{x:e+i,y:r+s}]}}class tHe extends Qc{constructor(){super(...arguments);U(this,"helpers",new Map([[cr.Line,new K$e],[cr.Curve,new Z$e],[cr.PolyLine,new J$e],[cr.RoundPolyLine,new eHe]]))}enable(r){return r===_r.LINE}async handle(r,i){var u;const s=i.toolManager.shapeType,a=((u=i.lastInteractiveEvent)==null?void 0:u.globalPoint)||new he,o=this.makeupLineDefaultProps(s,a,i);return la.getInstance().create(r,X.Line,0,o,i.nodeManager.previewRoot,i.gmlRender.glCtx)}makeupLineDefaultProps(r,i,s){const a=this.helpers.get(r);return a?a.makeupLineDefaultProps(r,i,s):this.helpers.get(cr.Line).makeupLineDefaultProps(r,i,s)}}class rHe extends Qc{enable(e,r){return e===_r.SlideContainer}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,200,180),a=r.createWorker.makeupPreviewProps(X.SlideContainer,r,i,s);return la.getInstance().create(e,X.SlideContainer,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class nHe extends Qc{enable(e,r){return e===_r.DocContainer}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,fk,Kv),a=r.createWorker.makeupPreviewProps(X.DocContainer,r,i,s);return la.getInstance().create(e,X.DocContainer,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class iHe extends Qc{enable(e,r){return e===_r.Mindmap}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,TE,CE),a=r.createWorker.makeupPreviewProps(X.MindmapNode,r,i,s);return la.getInstance().create(e,X.MindmapNode,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class sHe extends Qc{enable(e,r,i){return e===_r.EditableNode&&i===X.Editable}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,100,100),a=r.createWorker.makeupPreviewProps(X.Editable,r,i,s);return la.getInstance().create(e,X.Editable,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class aHe extends Qc{enable(e,r,i){return e===_r.EditableNode&&i===X.Pie}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,100,100),a=r.createWorker.makeupPreviewProps(X.Pie,r,i,s);return la.getInstance().create(e,X.Pie,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}class oHe extends Qc{constructor(){super(...arguments);U(this,"pasteWorker",new xE)}enable(r){return r===_r.ChartSection}async handle(r,i){const s=i.toolManager.shapeType,{width:a,height:o,children:l}=this.makeupPreviewChartInfo(i,r,s),u=this.computePreviewPos(i,a,o),h=i.createWorker.makeupPreviewProps(X.ChartSection,i,s,u),d=h.find(p=>p.type===ne.Base);d&&(d.width=a,d.height=o);const f=la.getInstance().create(r,X.ChartSection,0,h,i.nodeManager.previewRoot,i.gmlRender.glCtx);return this.createPreviewChildren(i,f,l),f}makeupPreviewChartInfo(r,i,s){if(!r.syntaxAPI)return{width:400,height:300,children:[]};const a=gs.createDefaultByShapeCode(s),o=gs.getParseTypeByShapeCode(s),l=r.syntaxAPI.parse(o,a[`${o}Info`]),u=Kh.convertDocumentInfoToPasteData({documentId:"",nodes:l.nodes},$1.Template),{x:h,y:d,width:f,height:p}=u.bounds,{addNodeData:A}=this.pasteWorker.work(r,u.nodes,{x:10-h,y:10-d},i);return{width:f+20,height:p+20,children:A.nodes}}createPreviewChildren(r,i,s){const a=new Map([[i.id,i]]);for(const{id:o,type:l,zIndex:u,props:h,parentId:d}of s){const f=a.get(d);if(!f)continue;const p=la.getInstance().create(o,l,u,h,f,r.gmlRender.glCtx);a.set(p.id,p)}}}const lHe="E=mc^2";class cHe extends Qc{enable(e){return e===_r.MathFormula}async handle(e,r){const i=await Zd.convert(lHe,"#000000"),s=this.computePreviewPos(r,i.width,i.height),a=r.createWorker.makeupPreviewProps(X.MathFormula,r,0,s),o=la.getInstance().create(e,X.MathFormula,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx);return o.setSvgCode(i.svgCode),o.baseProps.width=i.width,o.baseProps.height=i.height,await new $k().work(o,i.svgCode,r.renderManager,r.resourceManager),o}}class uHe extends Qc{enable(e){return e===_r.MermaidSection}async handle(e,r){const i=r.toolManager.shapeType,s=this.computePreviewPos(r,400,300),a=r.createWorker.makeupPreviewProps(X.Mermaid,r,i,s);return la.getInstance().create(e,X.Mermaid,0,a,r.nodeManager.previewRoot,r.gmlRender.glCtx)}}const nN=class nN{constructor(){U(this,"previewGraphics",null);U(this,"handlers",[new V$e,new Y$e,new X$e,new tHe,new q$e,new j$e,new rHe,new nHe,new iHe,new sHe,new aHe,new oHe,new cHe,new uHe])}addPreviewNode(e,r){const i=e.toolManager.currentTool,s=e.toolManager.shapeType,a=e.toolManager.nodeType;for(const o of this.handlers)if(o.enable(i,s,a)){o.handle(nN.PREVIEW_ID,e).then(l=>{this.previewGraphics=l,r==null||r()});return}}updatePos(e){if(!this.previewGraphics)return;if(this.previewGraphics.type===X.Line){const i=this.previewGraphics.pos,s={x:e.x-i.x,y:e.y-i.y},a=this.previewGraphics.points;for(const u of a)u.x+=s.x,u.y+=s.y;const o={type:ne.Line,points:a},l={type:ne.Base,x:e.x,y:e.y};this.previewGraphics.updateProps([l,o]);return}const r={type:ne.Base,x:e.x,y:e.y};this.previewGraphics.updateProps([r])}resetPreviewNode(e){this.previewGraphics=null,e.nodeManager.previewRoot.children.clear()}};U(nN,"PREVIEW_ID","create_preview");let eD=nN;class hHe{constructor(){U(this,"previewSvgCode","");U(this,"previewSvgResourceUrl","")}setPreviewSvgCode(e){this.previewSvgCode=e}setPreviewResourceUrl(e){this.previewSvgResourceUrl=e}}class dHe{constructor(){U(this,"createManager",new eD);U(this,"quickCreateManager",new Uk);U(this,"previewResourceManager",new hHe)}addPreviewNode(e,r){this.resetPreviewNode(e),this.createManager.addPreviewNode(e,r)}updatePos(e){this.createManager.updatePos(e)}resetPreviewNode(e){this.createManager.resetPreviewNode(e)}}var a2=(n=>(n[n.Img=0]="Img",n[n.Svg=1]="Svg",n))(a2||{});class fHe{constructor(e,r,i){U(this,"tasks",[]);U(this,"working",!1);U(this,"resourceManager");U(this,"nodeManager");U(this,"renderManager");U(this,"tickerRun",async()=>{this.tasks.length>0&&await this.onTicker(),this.working&&requestAnimationFrame(this.tickerRun)});U(this,"onTicker",async()=>{const e=this.tasks.pop();e&&(e.type===a2.Svg&&await this.genSvgTexture(e),e.type===a2.Img&&(await this.genImgTexture(e),this.renderManager.slotManager.addSlotState(Qn.ImgUrls,this.resourceManager.getImgUrls())))});this.resourceManager=e,this.nodeManager=r,this.renderManager=i}batchAddRenderNode(e){e.forEach(r=>this.addRenderNode(r))}addRenderNode(e){if(e.type===X.IMG){const r=e;this.tasks.push({type:a2.Img,nodeId:e.id,url:r.imgSrc})}if(e.type===X.SVG){const r=e;r.svgCode!==""&&this.tasks.push({type:a2.Svg,nodeId:e.id,svgCode:r.svgCode})}if(e.type===X.MathFormula){const r=e;r.svgCode!==""&&this.tasks.push({type:a2.Svg,nodeId:e.id,svgCode:r.svgCode})}}start(){this.working=!0,this.tickerRun()}stop(){this.working=!1}reset(){this.tasks=[]}async genImgTexture(e){const{nodeId:r,url:i}=e,s=this.nodeManager.getNode(r);if(!s||s.type!==X.IMG)return;const a=s;try{const o=await this.resourceManager.loadImgUrl(i);a.setImageBitmap(o.imageBitmap),this.resourceManager.addNodeResourceInfo(a.id,o)}catch(o){console.error("加载图片出现问题",o),a.setBroken()}this.renderManager.dirtyDraw(s.getBounds())}async genSvgTexture(e){const{svgCode:r,nodeId:i}=e,s=this.nodeManager.getNode(i);if(s){if(s.type===X.SVG){const a=s;if(a.svgCode!==r)return;await new $k().work(a,r,this.renderManager,this.resourceManager)}else if(s.type===X.MathFormula){const a=s;if(a.svgCode!==r)return;await new $k().work(a,r,this.renderManager,this.resourceManager)}}}}class pHe{constructor(){U(this,"duringCrop",!1)}intoCrop(){this.duringCrop=!0}exitCrop(){this.duringCrop=!1}}class AHe{constructor(){U(this,"slideSet",new Set);U(this,"slideContainerSet",new Set);U(this,"working",!1);U(this,"appCtx");U(this,"tickerRun",()=>{for(const r of this.slideContainerSet)this.appCtx.slideManager.updateSlideContainerCover(this.appCtx);this.slideContainerSet.clear();const e=this.appCtx;for(const r of this.slideSet)this.appCtx.slideManager.updateSlideCover(r,e);this.slideSet.clear(),this.working&&requestAnimationFrame(this.tickerRun)})}init(e){this.appCtx=e}start(){this.working=!0,this.tickerRun()}stop(){this.working=!1}updateSlideCover(e){this.slideSet.add(e)}updateSlideContainerCover(e){this.slideContainerSet.add(e)}}const ch=50,g4=40;class gHe{constructor(){U(this,"slidePlayWorker");U(this,"slideCoverManager");this.slidePlayWorker=new cne,this.slideCoverManager=new AHe}init(e){this.slideCoverManager.init(e)}start(){this.slideCoverManager.start()}stop(){this.slideCoverManager.stop()}enterEditing(e){const r=[...e.getSelectNodes()];if(r.length!==1)return;const i=r[0];i.type===X.SlideContainer&&(e.execAction(new St),e.execAction(Tr.create([])),e.execAction(new Tt),e.docModeManager.switchMode(Hr.SLIDE_EDIT,e,{slideContainer:i}))}exitEditing(e){e.docState.docMode!==Hr.BOARD&&e.docModeManager.switchMode(Hr.BOARD,e,{slideContainer:e.docState.slideStatus.slideContainer||void 0})}jumpTo(e,r){if(e.docMode!==Hr.SLIDE_EDIT||!e.slideStatus.slideContainer)return null;const i=e.slideStatus.slideContainer.slideProps.children,s=e.slideStatus.slideContainer.getTotalCount();return r<s&&r>-1?(e.slideStatus.currentIndex=r,this.getChildIdByIndex(i,r)):null}jumpToWhenEditing(e,r){const i=this.jumpTo(r.docState,e);i&&(r.focus(i,0,50),r.slotManager.addSlotState(Qn.SlideIndex,{index:e}))}enterPlayBySlideContainer(e,r){e.execAction(new St),e.execAction(Tr.create([])),e.execAction(new Tt),e.docState.changePermission({canEdit:!1}),e.docModeManager.switchMode(Hr.SLIDE_PLAY,e,{slideContainer:r})}enterPlay(e){const r=[...e.getSelectNodes()];if(r.length!==1)return;const i=r[0];i.type===X.SlideContainer&&this.enterPlayBySlideContainer(e,i)}playToNext(e){const r=this.slidePlayWorker.playToNext(e.docState);r&&e.focus(r)}playToPrev(e){const r=this.slidePlayWorker.playToPrev(e.docState);r&&e.focus(r)}insertSlide(e,r,i,s){var B;const a=e.slideProps.children,o=e.getTotalCount();if(r<0||r>=o)return null;const{rowIndex:l,colIndex:u}=this.getRowColByIndex(a,r);if(l===-1)return null;const h=a[l];if(!h||!h.ids||h.ids.length===0)return null;const d=i?u+1:u,f=h.ids[u],p=s.nodeManager.getNode(f);if(!p)return null;const A=p.baseProps,g=(B=p.getProp(ne.Color))==null?void 0:B.color,m=p.getProp(ne.Border),y=A.width,v=A.height;let x;if(d===0)x=ch;else{const L=h.ids[d-1],M=s.nodeManager.getNode(L);M?x=M.baseProps.x+M.baseProps.width+ch:x=p.baseProps.x+p.baseProps.width+ch}const w=p.baseProps.y,b=[mr.create({x,y:w,width:y,height:v})];g!==void 0&&b.push(zn.create({color:g})),m&&b.push(m.clone());const T=s.idGenerator.genId(X.Section),C={id:T,type:X.Section,zIndex:en.genZIndex(e),parentId:e.id,props:b};s.execAction(hn.create(C));const S=a.map((L,M)=>{if(M===l){const P=[...L.ids];return P.splice(d,0,T),{ids:P}}return{ids:[...L.ids]}}),k=[{id:e.id,props:[Dc.create({children:S})]}];if(d===0){let L=ch;const M=S[l];for(let P=0;P<M.ids.length;P++){const R=M.ids[P],_=s.nodeManager.getNode(R);_&&(k.push({id:R,props:[mr.create({x:L,y:w,width:_.baseProps.width,height:_.baseProps.height})]}),L+=_.baseProps.width+ch)}}else if(d<h.ids.length+1){let L=x+y+ch;for(let M=d;M<h.ids.length;M++){const P=h.ids[M],R=s.nodeManager.getNode(P);R&&(k.push({id:P,props:[mr.create({x:L,y:R.baseProps.y,width:R.baseProps.width,height:R.baseProps.height})]}),L+=R.baseProps.width+ch)}}s.execAction(new kt({infos:k}));const I=[];for(const L of S)for(const M of L.ids){const P=s.nodeManager.getNode(M);P&&I.push(P.baseProps)}if(I.length>0){const L=ae.getBoundsByBasePropsList(I),M=L.maxX-L.minX+2*ch,P=L.maxY-L.minY+2*g4;s.execAction(kt.create(e.id,[{type:ne.Base,width:M,height:P}]))}return s.nodeManager.getNode(T)}exitPlay(e){e.docState.docMode===Hr.SLIDE_PLAY&&e.docModeManager.backToPrevMode(e,{slideContainer:e.docState.slideStatus.slideContainer||void 0})}refocusSlide(e,r=0){if(e.docState.docMode===Hr.BOARD)return;const{currentIndex:s,slideContainer:a}=e.docState.slideStatus;if(!a)return;const o=a.getChildIdByIndex(s);o&&e.focus(o,0,r)}unGroupSlideContainerBySelective(e){const i=[...e.getSelectNodes()].filter(s=>s.type===X.SlideContainer);for(const s of i)this.unGroupSlideContainer(s,e)}unGroupSlideContainer(e,r){const i=e.globalBaseProps,s=i.x,a=i.y,o=Array.from(e.children);if(o.length===0)return;r.execAction(new St);const l=o.map(h=>{const d=h.baseProps,f=s+d.x,p=a+d.y;return{id:h.id,parentId:"",props:[mr.create({x:f,y:p,width:d.width,height:d.height,angle:d.angle})]}});l.length>0&&r.execAction(new kt({infos:l})),r.execAction(Xa.create([e.id]));const u=o.map(h=>h.id);r.execAction(Tr.create(u)),r.execAction(new Tt)}getChildIdByIndex(e,r){let i=0;for(let s=0;s<e.length;s++){if(r<i+e[s].ids.length){const a=r-i;return e[s].ids[a]}i+=e[s].ids.length}return null}getRowColByIndex(e,r){let i=0;for(let s=0;s<e.length;s++){if(r<i+e[s].ids.length){const a=r-i;return{rowIndex:s,colIndex:a}}i+=e[s].ids.length}return{rowIndex:-1,colIndex:-1}}updateSlideCover(e,r){ae.getSlideInfo(e,r).then(i=>{const s=r.docState.slideStatus.slideCoverList.findIndex(a=>a.id===e.id);if(s>-1){const a=r.docState.slideStatus.slideCoverList[s];URL.revokeObjectURL(a.blobUrl),r.docState.slideStatus.slideCoverList.splice(s,1,i),r.slotManager.addSlotState(Qn.SlideCovers,{covers:r.docState.slideStatus.slideCoverList})}else URL.revokeObjectURL(i.blobUrl)})}async updateSlideContainerCover(e){const r=e.docState.slideStatus.slideContainer;if(!r)return;const i=e.docState.slideStatus.slideCoverList,s=new Map;i.forEach(l=>s.set(l.id,l));const a=r.slideProps.children,o=[];for(const l of a)for(const u of l.ids){const h=s.get(u);if(h)o.push(h),s.delete(u);else{const d=e.nodeManager.getNode(u);if(d){const f=await ae.getSlideInfo(d,e);o.push(f)}}}for(const l of s.values())URL.revokeObjectURL(l.blobUrl);e.docState.slideStatus.slideCoverList=o,e.slotManager.addSlotState(Qn.SlideCovers,{covers:e.docState.slideStatus.slideCoverList})}updateSlideContainers(e,r,i){for(const s of e){const a=s.slideProps.children,o=[];for(const d of a){const f=d.ids.filter(p=>!r.has(p));f.length>0&&o.push({ids:f})}if(o.length===0){i.actionManager.execAction(kt.create(s.id,[Dc.create({children:[]}),{type:ne.Base,width:100+2*ch,height:100+2*g4}]));continue}const l=[];let u=g4;for(let d=0;d<o.length;d++){const f=o[d];let p=ch,A=0;for(const g of f.ids){const m=i.nodeManager.getNode(g);m&&(l.push({id:g,props:[mr.create({x:p,y:u,width:m.baseProps.width,height:m.baseProps.height})]}),p+=m.baseProps.width+ch,A=Math.max(A,m.baseProps.height))}u+=A+g4}l.unshift({id:s.id,props:[Dc.create({children:o})]}),i.actionManager.execAction(new kt({infos:l}));const h=[];for(const d of o)for(const f of d.ids){const p=i.nodeManager.getNode(f);p&&h.push(p.baseProps)}if(h.length>0){const d=ae.getBoundsByBasePropsList(h),f=d.maxX-d.minX+2*ch,p=d.maxY-d.minY+2*g4;i.actionManager.execAction(kt.create(s.id,[{type:ne.Base,width:f,height:p}]))}}}}class mHe{enterDocEditing(e){const r=[...e.getSelectNodes()];if(r.length!==1)return;const i=r[0];i.type===X.DocContainer&&(e.execAction(new St),e.execAction(Tr.create([])),e.execAction(new Tt),e.docModeManager.switchMode(Hr.DOC_EDIT,e,{docContainer:i}))}exitDocEditing(e){e.docState.docMode!==Hr.BOARD&&e.docModeManager.switchMode(Hr.BOARD,e,{docContainer:e.docState.docModeStatus.docContainer||void 0})}}class yHe{constructor(){U(this,"rootMap",new Map)}addMindMap(e){const r=e.root();this.rootMap.set(r.id,r)}work(e){for(const[r,i]of this.rootMap){const s=i;s.updateMindMapChildren(e),s.refreshLayoutBox(),s.layout(e)}this.rootMap.clear()}}class vHe extends Dk{constructor(){super(...arguments);U(this,"type","line")}syntaxParse(r,i){var Y;const{showTitle:s,showXGrid:a,showYGrid:o,showDot:l,title:u,times:h,members:d}=r,f=o!==!1,p=[];let A=0;const g=40,m=20,y=400,v=250,x=m+v,w=36,b=48,T=12;let C=0;for(const Z of d)for(const j of Z.value)j>C&&(C=j);C===0&&(C=10);const S=h.value.length,k=S>1?y/(S-1):0,I=[];for(const Z of d)I.push({points:[],auto:!0});for(let Z=0;Z<S;Z++){const j=g+Z*k;for(let oe=0;oe<d.length;oe++){const J=d[oe].value[Z]??0,re=x-J/C*v;I[oe].points.push({x:j,y:re})}}for(let Z=0;Z<I.length;Z++){if(I[Z].points.length<2)continue;const j=$h(r.colors,Z),oe=Un.generateBrokenLine(I[Z].points,{id:i.idGenerator.genId(X.Line),zIndex:A,parentId:""},j);p.push(oe),A++}const N={x:g,y:x},B={x:g+y,y:x},L=Un.generateStraightLine(N,B,{id:i.idGenerator.genId(X.Line),zIndex:A,parentId:""});p.push(L),A++;const M={x:g,y:m},P={x:g,y:x},R=Un.generateStraightLine(M,P,{id:i.idGenerator.genId(X.Line),zIndex:A,parentId:""});if(p.push(R),A++,f)for(let j=1;j<=5;j++){const oe=j/5,J=x-oe*v,re=Un.generateStraightLine({x:g,y:J},{x:g+y,y:J},{id:i.idGenerator.genId(X.Line),zIndex:A,parentId:""},"#000000",.15,1);re.capInfo.colorProps&&(re.capInfo.colorProps.alpha=.15),p.push(re),A++}if(a)for(let Z=0;Z<S;Z++){const j=g+Z*k;if(Z===0)continue;const oe=Un.generateStraightLine({x:j,y:m},{x:j,y:x},{id:i.idGenerator.genId(X.Line),zIndex:A,parentId:""},"#000000",.15,1);oe.capInfo.colorProps&&(oe.capInfo.colorProps.alpha=.15),p.push(oe),A++}if(l)for(let j=0;j<I.length;j++){const oe=$h(r.colors,j);for(const J of I[j].points){const re=Un.generateEllipse(J.x,J.y,8,oe,{id:i.idGenerator.genId(X.Shape),zIndex:A,parentId:""});p.push(re),A++}}const _=5;for(let Z=0;Z<=_;Z++){const j=Z/_,oe=C*j,J=x-j*v,re=Number.isInteger(oe)?`${oe}`:oe.toFixed(1),se=g-10,ie=Un.generateText(g-15,J,re,!0,{id:i.idGenerator.genId(X.Shape),zIndex:A,parentId:""},11,"Noto Sans SC","#999999",!1);ie.capInfo.baseProps.x=se-ie.capInfo.baseProps.width,p.push(ie),A++}for(let Z=0;Z<S;Z++){const j=g+Z*k,oe=((Y=(h.value[Z].label||`${Z}`).match(/.{1,5}/g))==null?void 0:Y.join(`
|
|
290
290
|
`))??"",J=x+5,re=Un.generateText(j,x+T,oe,!0,{id:i.idGenerator.genId(X.Shape),zIndex:A,parentId:""},12,"Noto Sans SC","#666666",!1);re.capInfo.baseProps.y=J,p.push(re),A++}const O=8,D=6,F=16,G=24,z=3,H=4,Q=x+b,V=d.map((Z,j)=>{var re,se,ie;const oe=Z.title||`系列${j+1}`,J=Un.generateText(0,0,oe,!1,{id:"",zIndex:0,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);return{name:oe,textWidth:((re=J.capInfo.baseProps)==null?void 0:re.width)??0,textHeight:((se=J.capInfo.baseProps)==null?void 0:se.height)??0,width:O+D+(((ie=J.capInfo.baseProps)==null?void 0:ie.width)??0)}});for(let Z=0;Z<V.length;Z+=z){const j=V.slice(Z,Z+z),oe=j.reduce((se,ie)=>se+ie.width,0)+F*Math.max(j.length-1,0);let J=g+(y-oe)/2;const re=Q+Z/z*G;for(let se=0;se<j.length;se++){const ie=Z+se,Ae=$h(r.colors,ie),pe=re+(j[se].textHeight-O)/2+H,le=Un.generateRect(J,pe,O,O,Ae,{id:i.idGenerator.genId(X.Shape),zIndex:A,parentId:""});p.push(le),A++;const Le=Un.generateText(J+O+D,re,j[se].name,!1,{id:i.idGenerator.genId(X.Shape),zIndex:A,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);p.push(Le),A++,J+=j[se].width+F}}if(s&&u){const Z=Un.generateText(g+y/2,0,u,!0,{id:i.idGenerator.genId(X.Shape),zIndex:A,parentId:""},16,"Noto Sans SC","#0A0A0A",!0);Z.capInfo.baseProps&&(Z.capInfo.baseProps.y=m-w-Z.capInfo.baseProps.height),p.push(Z),A++}return{nodes:p}}}class xHe extends Dk{constructor(){super(...arguments);U(this,"type","bar")}syntaxParse(r,i){var le;const{showTitle:s,showXGrid:a,showYGrid:o,title:l,times:u,members:h}=r,d=r.type===Zu.StackedBar,f=a!==!1,p=o!==!1,A=[];let g=0;const m=40,y=20,v=400,x=250,w=y+x,b=36,T=48,C=12,S=16,k=2;let I=0;if(d)for(let Le=0;Le<u.value.length;Le++){let We=0;for(const Me of h)We+=Math.max(Me.value[Le]??0,0);We>I&&(I=We)}else for(const Le of h)for(const We of Le.value)We>I&&(I=We);I===0&&(I=10);const N=u.value.length,B=h.length,M=(N>0?(v-S)/N:v)-S,P=d?Math.max(M,4):B>0?Math.max((M-k*(B-1))/B,4):0,R=d?P:B>0?B*P+(B-1)*k:0,_=Math.max(R,M),O=_+S,D=N>0?O*N+S:v,F=5;if(p)for(let Le=1;Le<=F;Le++){const We=Le/F,Me=w-We*x,Ee=Un.generateStraightLine({x:m,y:Me},{x:m+D,y:Me},{id:i.idGenerator.genId(X.Line),zIndex:g,parentId:""},"#000000",.15,1);A.push(Ee),g++}if(f)for(let Le=0;Le<N;Le++){const Me=m+S/2+Le*O+_,Ee=Un.generateStraightLine({x:Me,y},{x:Me,y:w},{id:i.idGenerator.genId(X.Line),zIndex:g,parentId:""},"#000000",.15,1);A.push(Ee),g++}d?g=this.renderStackedBar(A,i,r,g,{chartLeft:m,chartHeight:x,chartBottom:w,categoryCount:N,seriesCount:B,groupWidth:O,groupPadding:S,barWidth:P,maxY:I}):g=this.renderNormalBar(A,i,r,g,{chartLeft:m,chartHeight:x,chartBottom:w,categoryCount:N,seriesCount:B,groupWidth:O,groupPadding:S,barGap:k,barWidth:P,maxY:I});const G={x:m,y:w},z={x:m+D,y:w},H=Un.generateStraightLine(G,z,{id:i.idGenerator.genId(X.Line),zIndex:g,parentId:""});A.push(H),g++;const Q={x:m,y},V={x:m,y:w},Y=Un.generateStraightLine(Q,V,{id:i.idGenerator.genId(X.Line),zIndex:g,parentId:""});A.push(Y),g++;const Z=5;for(let Le=0;Le<=Z;Le++){const We=Le/Z,Me=I*We,Ee=w-We*x,Ve=Number.isInteger(Me)?`${Me}`:Me.toFixed(1),be=m-10,dt=Un.generateText(m-15,Ee,Ve,!0,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""},11,"Noto Sans SC","#999999",!1);dt.capInfo.baseProps.x=be-dt.capInfo.baseProps.width,A.push(dt),g++}for(let Le=0;Le<N;Le++){const We=m+S/2+Le*O+_/2,Me=((le=(u.value[Le].label||`${Le}`).match(/.{1,5}/g))==null?void 0:le.join(`
|
|
291
|
-
`))??"",Ee=w+5,Ve=Un.generateText(We,w+C,Me,!0,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""},12,"Noto Sans SC","#666666",!1);Ve.capInfo.baseProps.y=Ee,A.push(Ve),g++}const j=8,oe=6,J=16,re=24,se=3,ie=4,Ae=w+T,pe=h.map((Le,We)=>{var Ve,be,dt;const Me=Le.title||`系列${We+1}`,Ee=Un.generateText(0,0,Me,!1,{id:"",zIndex:0,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);return{name:Me,textWidth:((Ve=Ee.capInfo.baseProps)==null?void 0:Ve.width)??0,textHeight:((be=Ee.capInfo.baseProps)==null?void 0:be.height)??0,width:j+oe+(((dt=Ee.capInfo.baseProps)==null?void 0:dt.width)??0)}});for(let Le=0;Le<pe.length;Le+=se){const We=pe.slice(Le,Le+se),Me=We.reduce((be,dt)=>be+dt.width,0)+J*Math.max(We.length-1,0);let Ee=m+(D-Me)/2;const Ve=Ae+Le/se*re;for(let be=0;be<We.length;be++){const dt=Le+be,$e=$h(r.colors,dt),it=Ve+(We[be].textHeight-j)/2+ie,mt=Un.generateRect(Ee,it,j,j,$e,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""});A.push(mt),g++;const st=Un.generateText(Ee+j+oe,Ve,We[be].name,!1,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);A.push(st),g++,Ee+=We[be].width+J}}if(s&&l){const Le=Un.generateText(m+D/2,0,l,!0,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""},16,"Noto Sans SC","#0A0A0A",!0);Le.capInfo.baseProps&&(Le.capInfo.baseProps.y=y-b-Le.capInfo.baseProps.height),A.push(Le),g++}return{nodes:A}}renderNormalBar(r,i,s,a,o){let l=a;for(let u=0;u<o.categoryCount;u++){const h=o.chartLeft+o.groupPadding/2+u*o.groupWidth;for(let d=0;d<o.seriesCount;d++){if(!s.members[d])continue;const p=(s.members[d].value[u]??0)/o.maxY*o.chartHeight,A=h+d*(o.barWidth+o.barGap),g=o.chartBottom-p;r.push(Un.generateRect(A,g,o.barWidth,p,$h(s.colors,d),{id:i.idGenerator.genId(X.Shape),zIndex:l,parentId:""})),l++}}return l}renderStackedBar(r,i,s,a,o){let l=a;for(let u=0;u<o.categoryCount;u++){const h=o.chartLeft+o.groupPadding/2+u*o.groupWidth;let d=o.chartBottom;for(let f=0;f<o.seriesCount;f++){if(!s.members[f])continue;const A=Math.max(s.members[f].value[u]??0,0)/o.maxY*o.chartHeight,g=d-A;r.push(Un.generateRect(h,g,o.barWidth,A,$h(s.colors,f),{id:i.idGenerator.genId(X.Shape),zIndex:l,parentId:""})),l++,d=g}}return l}}const wHe=8;class bHe extends Dk{constructor(){super(...arguments);U(this,"type","scatter")}syntaxParse(r,i){const{showTitle:s,showLine:a,showXGrid:o,showYGrid:l,title:u,members:h}=r,d=l!==!1,f=[];let p=0;const A=40,g=20,m=400,y=250,v=g+y,x=36,w=48,b=12;let T=0,C=0;for(const Q of h)for(const V of Q.points)V.x>T&&(T=V.x),V.y>C&&(C=V.y);T===0&&(T=10),C===0&&(C=10);for(let Q=0;Q<h.length;Q++){const V=$h(r.colors,Q),Y=[];for(const Z of h[Q].points){const j=A+Z.x/T*m,oe=v-Z.y/C*y;Y.push({x:j,y:oe});const J=Un.generateEllipse(j,oe,wHe,V,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""});f.push(J),p++}if(a&&Y.length>1){const Z=Un.generateBrokenLine(Y,{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""},V);f.push(Z),p++}}const S={x:A,y:v},k={x:A+m,y:v},I=Un.generateStraightLine(S,k,{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""});f.push(I),p++;const N={x:A,y:g},B={x:A,y:v},L=Un.generateStraightLine(N,B,{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""});if(f.push(L),p++,d)for(let V=1;V<=5;V++){const Y=V/5,Z=v-Y*y,j=Un.generateStraightLine({x:A,y:Z},{x:A+m,y:Z},{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""},"#000000",.15,1);f.push(j),p++}if(o)for(let V=1;V<=5;V++){const Y=V/5,Z=A+Y*m,j=Un.generateStraightLine({x:Z,y:g},{x:Z,y:v},{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""},"#000000",.15,1);f.push(j),p++}const M=5;for(let Q=0;Q<=M;Q++){const V=Q/M,Y=C*V,Z=v-V*y,j=Number.isInteger(Y)?`${Y}`:Y.toFixed(1),oe=A-8,J=Un.generateText(A-15,Z,j,!0,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""},11,"Noto Sans SC","#999999",!1);J.capInfo.baseProps.x=oe-J.capInfo.baseProps.width,f.push(J),p++}const P=5;for(let Q=0;Q<=P;Q++){const V=Q/P,Y=T*V,Z=A+V*m,j=Number.isInteger(Y)?`${Y}`:Y.toFixed(1),oe=Un.generateText(Z,v+b,j,!0,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""},12,"Noto Sans SC","#666666",!1);f.push(oe),p++}const R=8,_=6;h.length;const O=16,D=24,F=3,G=4,z=v+w,H=h.map((Q,V)=>{var j,oe,J;const Y=Q.title||`系列${V+1}`,Z=Un.generateText(0,0,Y,!1,{id:"",zIndex:0,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);return{name:Y,textWidth:((j=Z.capInfo.baseProps)==null?void 0:j.width)??0,textHeight:((oe=Z.capInfo.baseProps)==null?void 0:oe.height)??0,width:R+_+(((J=Z.capInfo.baseProps)==null?void 0:J.width)??0)}});for(let Q=0;Q<H.length;Q+=F){const V=H.slice(Q,Q+F),Y=V.reduce((oe,J)=>oe+J.width,0)+O*Math.max(V.length-1,0);let Z=A+(m-Y)/2;const j=z+Q/F*D;for(let oe=0;oe<V.length;oe++){const J=Q+oe,re=$h(r.colors,J),se=j+(V[oe].textHeight-R)/2+G,ie=Un.generateEllipse(Z+R/2,se+R/2,R,re,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""});f.push(ie),p++;const Ae=Un.generateText(Z+R+_,j,V[oe].name,!1,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);f.push(Ae),p++,Z+=V[oe].width+O}}if(s&&u){const Q=Un.generateText(A+m/2,0,u,!0,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""},16,"Noto Sans SC","#0A0A0A",!0);Q.capInfo.baseProps&&(Q.capInfo.baseProps.y=g-x-Q.capInfo.baseProps.height),f.push(Q),p++}return{nodes:f}}}class THe{constructor(){U(this,"syntaxEngines",new Map);this.registerSyntaxEngine(new yne),this.registerSyntaxEngine(new vHe),this.registerSyntaxEngine(new xHe),this.registerSyntaxEngine(new bHe)}parse(e,r,i){const s=this.syntaxEngines.get(e);if(!s)throw new Error(`No syntax engine found for type: ${e}`);return s.syntaxParse(r,i)}registerSyntaxEngine(e){this.syntaxEngines.set(e.type,e)}}class tD{constructor(e){U(this,"inputManager");U(this,"cursorManager");U(this,"toolManager");U(this,"gmlRender");U(this,"auxGMLRender");U(this,"nodeManager");U(this,"serializeManager");U(this,"actionManager");U(this,"renderManager");U(this,"auxiliaryManager");U(this,"previewManager");U(this,"asyncRenderNodeManager");U(this,"docState");U(this,"idGenerator");U(this,"slotManager");U(this,"resourceManager");U(this,"cropManager");U(this,"slideManager");U(this,"docManager");U(this,"mindmapManager");U(this,"memoryManager");U(this,"appContext");U(this,"plugins",[]);U(this,"syntaxEngineManager");U(this,"api");U(this,"aiAPI");this.docState=new bne,this.idGenerator=new en,this.gmlRender=new K_,this.auxGMLRender=new K_,this.cursorManager=new Vre,this.nodeManager=new kne,this.slotManager=new aK,this.resourceManager=new dne(this.docState),this.cropManager=new pHe,this.slideManager=new gHe,this.docManager=new mHe,this.mindmapManager=new yHe,this.memoryManager=new Hte(e.memory),this.syntaxEngineManager=new THe,this.auxiliaryManager=new cK(this.auxGMLRender,this.slotManager,this.cropManager,this.docState),this.renderManager=new Wre(this.gmlRender,this.nodeManager,this.auxiliaryManager,this.slotManager,this.docState),this.inputManager=new D$e(this.renderManager,this.cursorManager),this.previewManager=new dHe,this.toolManager=new Mte(this.nodeManager,this.inputManager,this.slotManager,this.cursorManager),this.asyncRenderNodeManager=new fHe(this.resourceManager,this.nodeManager,this.renderManager),this.actionManager=new zre(this.nodeManager,this.inputManager,this.gmlRender,this.auxiliaryManager,this.toolManager,this.renderManager,this.resourceManager,this.docState,this.idGenerator,this.slotManager,this.asyncRenderNodeManager,this.slideManager,this.mindmapManager),this.serializeManager=new O$e(this.nodeManager,this.docState),this.appContext=new Yre(this.nodeManager,this.gmlRender,e.detectors,this.toolManager,this.inputManager,this.actionManager,this.renderManager,this.auxiliaryManager,this.docState,this.idGenerator,this.cursorManager,this.previewManager,this.resourceManager,this.slotManager,this.asyncRenderNodeManager,this.cropManager,this.slideManager,this.docManager,this.memoryManager),this.api=new vne(this),this.appContext.syntaxAPI=this.api.syntaxAPI,this.aiAPI=new wne(this),this.slideManager.init(this.appContext),this.actionManager.executor.init(this.appContext),this.auxiliaryManager.selectManager.register(this.inputManager),this.appContext.refreshEvent=r=>{const i=this.getPlugin(AE);i&&i.interactiveManager.refreshEvent(this.appContext,r)}}registerPlugin(e){this.plugins.push(e)}getPlugin(e){for(const r of this.plugins)if(r instanceof e)return r;return null}start(){this.slotManager.start(),this.auxiliaryManager.start(),this.renderManager.start(),this.asyncRenderNodeManager.start(),this.slideManager.start();for(const e of this.plugins)e.start()}stop(){this.slotManager.stop(),this.renderManager.stop(),this.asyncRenderNodeManager.stop(),this.slideManager.stop();for(const e of this.plugins)e.stop()}reset(){this.nodeManager.reset(),this.auxiliaryManager.reset(),this.resourceManager.reset(),this.asyncRenderNodeManager.reset(),this.slotManager.reset(),this.idGenerator.reset(),this.docState.reset()}load(e){return this.loadDocumentInfo(e)}asyncLoad(e,r){return this.asyncLoadDocumentInfo(e,r)}asyncLoadDocumentInfo(e,r){const i=Tne();this.docState.load(i);try{const s=this.initData(e);this.asyncAfterInit(s,r),this.renderManager.zoomToFit(),this.renderManager.addContentRenderTask()}catch(s){console.error("初始化过程中出现错误;",s)}return this.docState.seq}loadDocumentInfo(e){const r=Tne();this.docState.load(r);try{const i=this.initData(e);this.afterInit(i),this.mindmapManager.work(this.nodeManager),this.renderManager.zoomToFit(),this.renderManager.addContentRenderTask()}catch(i){console.error("初始化过程中出现错误;",i)}return this.docState.seq}initData(e){this.nodeManager.clear(),this.gmlRender.reset();const r=this.gmlRender.canvas.getContext("2d");let i=[];const s=ae.correctZIndex(e.nodes);for(const a of s){const o=this.nodeManager.root;this.initNode(a,o,r,i)}return i=ae.sortGraphics(i),i}initNode(e,r,i,s){this.idGenerator.loadNode(e);const a=la.getInstance().createByNodeInfo(e,r,i);this.nodeManager.addNode(a),s.push(a);const o=e.children??[],l=ae.correctZIndex(o);for(const u of l)this.initNode(u,a,i,s);return a}async afterInit(e){const r=new Set;for(const s of e){if(s.type===X.Line){const{start:a,end:o}=s.connectProps;if(a){const l=this.nodeManager.getNode(a.objectId)||null;this.nodeManager.addLink(s,l,!0)}if(o){const l=this.nodeManager.getNode(o.objectId)||null;this.nodeManager.addLink(s,l,!1)}}if(s instanceof Lv&&this.asyncRenderNodeManager.addRenderNode(s),s instanceof e2)try{let a="";if(s.svgProps.useCode)a=vu.trimSvgCode(s.svgProps.code).svgCode;else{const l=s.svgUrl;a=await this.resourceManager.loadSvgUrl(l)}const o=vu.trimSvgCode(a);s.setSvgCode(o.svgCode),this.asyncRenderNodeManager.addRenderNode(s)}catch(a){console.error("加载svg图片出现问题",a),s.setBroken()}if(s instanceof tm)try{const a=s.formula;if(a){const o=await Zd.convert(a,s.formulaProps.fontColor);s.setSvgCode(o.svgCode),this.asyncRenderNodeManager.addRenderNode(s)}}catch(a){console.error("加载数学公式出现问题",a),s.setBroken()}s instanceof h4&&r.add(s)}const i=ae.filterMindMapRoots(r);i.size>0&&i.forEach(s=>this.mindmapManager.addMindMap(s))}asyncAfterInit(e,r){for(const i of e){if(i.type===X.Line){const{start:s,end:a}=i.connectProps;if(s){const o=this.nodeManager.getNode(s.objectId)||null;this.nodeManager.addLink(i,o,!0)}if(a){const o=this.nodeManager.getNode(a.objectId)||null;this.nodeManager.addLink(i,o,!1)}}if(i instanceof Lv){const s=i,a=s.imgSrc;if(r&&r.has(a))try{const o=r.get(a);s.setImageBitmap(o)}catch(o){console.error("从 resourceMap 加载图片出现问题",o),s.setBroken()}else{console.warn("图片资源未在 resourceMap 中找到:",a),i.setBroken();continue}}if(i instanceof e2)try{if(i.svgProps.useCode){const a=vu.trimSvgCode(i.svgProps.code).svgCode;if(i.setSvgCode(a),r&&r.has(a)){const o=r.get(a);i.setImageBitmap(o)}else{console.warn("SVG useCode 资源未在 resourceMap 中找到"),i.setBroken();continue}}else{const s=i.svgUrl;if(r&&r.has(s)){const a=r.get(s);i.setImageBitmap(a)}else{console.warn("SVG 资源未在 resourceMap 中找到:",s),i.setBroken();continue}}}catch(s){console.error("加载svg图片出现问题",s),i.setBroken()}if(i instanceof tm)try{if(i.formula){const a=i.resourceKey;if(r&&r.has(a)){const o=r.get(a);i.setImageBitmap(o)}else{console.warn("MathFormula 资源未在 resourceMap 中找到"),i.setBroken();continue}}}catch(s){console.error("加载数学公式出现问题",s),i.setBroken()}}}}const CHe={width:595,height:942};var rD={exports:{}},m4={};/**
|
|
291
|
+
`))??"",Ee=w+5,Ve=Un.generateText(We,w+C,Me,!0,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""},12,"Noto Sans SC","#666666",!1);Ve.capInfo.baseProps.y=Ee,A.push(Ve),g++}const j=8,oe=6,J=16,re=24,se=3,ie=4,Ae=w+T,pe=h.map((Le,We)=>{var Ve,be,dt;const Me=Le.title||`系列${We+1}`,Ee=Un.generateText(0,0,Me,!1,{id:"",zIndex:0,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);return{name:Me,textWidth:((Ve=Ee.capInfo.baseProps)==null?void 0:Ve.width)??0,textHeight:((be=Ee.capInfo.baseProps)==null?void 0:be.height)??0,width:j+oe+(((dt=Ee.capInfo.baseProps)==null?void 0:dt.width)??0)}});for(let Le=0;Le<pe.length;Le+=se){const We=pe.slice(Le,Le+se),Me=We.reduce((be,dt)=>be+dt.width,0)+J*Math.max(We.length-1,0);let Ee=m+(D-Me)/2;const Ve=Ae+Le/se*re;for(let be=0;be<We.length;be++){const dt=Le+be,$e=$h(r.colors,dt),it=Ve+(We[be].textHeight-j)/2+ie,mt=Un.generateRect(Ee,it,j,j,$e,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""});A.push(mt),g++;const st=Un.generateText(Ee+j+oe,Ve,We[be].name,!1,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);A.push(st),g++,Ee+=We[be].width+J}}if(s&&l){const Le=Un.generateText(m+D/2,0,l,!0,{id:i.idGenerator.genId(X.Shape),zIndex:g,parentId:""},16,"Noto Sans SC","#0A0A0A",!0);Le.capInfo.baseProps&&(Le.capInfo.baseProps.y=y-b-Le.capInfo.baseProps.height),A.push(Le),g++}return{nodes:A}}renderNormalBar(r,i,s,a,o){let l=a;for(let u=0;u<o.categoryCount;u++){const h=o.chartLeft+o.groupPadding/2+u*o.groupWidth;for(let d=0;d<o.seriesCount;d++){if(!s.members[d])continue;const p=(s.members[d].value[u]??0)/o.maxY*o.chartHeight,A=h+d*(o.barWidth+o.barGap),g=o.chartBottom-p;r.push(Un.generateRect(A,g,o.barWidth,p,$h(s.colors,d),{id:i.idGenerator.genId(X.Shape),zIndex:l,parentId:""})),l++}}return l}renderStackedBar(r,i,s,a,o){let l=a;for(let u=0;u<o.categoryCount;u++){const h=o.chartLeft+o.groupPadding/2+u*o.groupWidth;let d=o.chartBottom;for(let f=0;f<o.seriesCount;f++){if(!s.members[f])continue;const A=Math.max(s.members[f].value[u]??0,0)/o.maxY*o.chartHeight,g=d-A;r.push(Un.generateRect(h,g,o.barWidth,A,$h(s.colors,f),{id:i.idGenerator.genId(X.Shape),zIndex:l,parentId:""})),l++,d=g}}return l}}const wHe=8;class bHe extends Dk{constructor(){super(...arguments);U(this,"type","scatter")}syntaxParse(r,i){const{showTitle:s,showLine:a,showXGrid:o,showYGrid:l,title:u,members:h}=r,d=l!==!1,f=[];let p=0;const A=40,g=20,m=400,y=250,v=g+y,x=36,w=48,b=12;let T=0,C=0;for(const Q of h)for(const V of Q.points)V.x>T&&(T=V.x),V.y>C&&(C=V.y);T===0&&(T=10),C===0&&(C=10);for(let Q=0;Q<h.length;Q++){const V=$h(r.colors,Q),Y=[];for(const Z of h[Q].points){const j=A+Z.x/T*m,oe=v-Z.y/C*y;Y.push({x:j,y:oe});const J=Un.generateEllipse(j,oe,wHe,V,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""});f.push(J),p++}if(a&&Y.length>1){const Z=Un.generateBrokenLine(Y,{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""},V);f.push(Z),p++}}const S={x:A,y:v},k={x:A+m,y:v},I=Un.generateStraightLine(S,k,{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""});f.push(I),p++;const N={x:A,y:g},B={x:A,y:v},L=Un.generateStraightLine(N,B,{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""});if(f.push(L),p++,d)for(let V=1;V<=5;V++){const Y=V/5,Z=v-Y*y,j=Un.generateStraightLine({x:A,y:Z},{x:A+m,y:Z},{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""},"#000000",.15,1);f.push(j),p++}if(o)for(let V=1;V<=5;V++){const Y=V/5,Z=A+Y*m,j=Un.generateStraightLine({x:Z,y:g},{x:Z,y:v},{id:i.idGenerator.genId(X.Line),zIndex:p,parentId:""},"#000000",.15,1);f.push(j),p++}const M=5;for(let Q=0;Q<=M;Q++){const V=Q/M,Y=C*V,Z=v-V*y,j=Number.isInteger(Y)?`${Y}`:Y.toFixed(1),oe=A-8,J=Un.generateText(A-15,Z,j,!0,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""},11,"Noto Sans SC","#999999",!1);J.capInfo.baseProps.x=oe-J.capInfo.baseProps.width,f.push(J),p++}const P=5;for(let Q=0;Q<=P;Q++){const V=Q/P,Y=T*V,Z=A+V*m,j=Number.isInteger(Y)?`${Y}`:Y.toFixed(1),oe=Un.generateText(Z,v+b,j,!0,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""},12,"Noto Sans SC","#666666",!1);f.push(oe),p++}const R=8,_=6;h.length;const O=16,D=24,F=3,G=4,z=v+w,H=h.map((Q,V)=>{var j,oe,J;const Y=Q.title||`系列${V+1}`,Z=Un.generateText(0,0,Y,!1,{id:"",zIndex:0,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);return{name:Y,textWidth:((j=Z.capInfo.baseProps)==null?void 0:j.width)??0,textHeight:((oe=Z.capInfo.baseProps)==null?void 0:oe.height)??0,width:R+_+(((J=Z.capInfo.baseProps)==null?void 0:J.width)??0)}});for(let Q=0;Q<H.length;Q+=F){const V=H.slice(Q,Q+F),Y=V.reduce((oe,J)=>oe+J.width,0)+O*Math.max(V.length-1,0);let Z=A+(m-Y)/2;const j=z+Q/F*D;for(let oe=0;oe<V.length;oe++){const J=Q+oe,re=$h(r.colors,J),se=j+(V[oe].textHeight-R)/2+G,ie=Un.generateEllipse(Z+R/2,se+R/2,R,re,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""});f.push(ie),p++;const Ae=Un.generateText(Z+R+_,j,V[oe].name,!1,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""},12,"Noto Sans SC","#0A0A0A",!1);f.push(Ae),p++,Z+=V[oe].width+O}}if(s&&u){const Q=Un.generateText(A+m/2,0,u,!0,{id:i.idGenerator.genId(X.Shape),zIndex:p,parentId:""},16,"Noto Sans SC","#0A0A0A",!0);Q.capInfo.baseProps&&(Q.capInfo.baseProps.y=g-x-Q.capInfo.baseProps.height),f.push(Q),p++}return{nodes:f}}}class THe{constructor(){U(this,"syntaxEngines",new Map);this.registerSyntaxEngine(new yne),this.registerSyntaxEngine(new vHe),this.registerSyntaxEngine(new xHe),this.registerSyntaxEngine(new bHe)}parse(e,r,i){const s=this.syntaxEngines.get(e);if(!s)throw new Error(`No syntax engine found for type: ${e}`);return s.syntaxParse(r,i)}registerSyntaxEngine(e){this.syntaxEngines.set(e.type,e)}}class tD{constructor(e){U(this,"inputManager");U(this,"cursorManager");U(this,"toolManager");U(this,"gmlRender");U(this,"auxGMLRender");U(this,"nodeManager");U(this,"serializeManager");U(this,"actionManager");U(this,"renderManager");U(this,"auxiliaryManager");U(this,"previewManager");U(this,"asyncRenderNodeManager");U(this,"docState");U(this,"idGenerator");U(this,"slotManager");U(this,"resourceManager");U(this,"cropManager");U(this,"slideManager");U(this,"docManager");U(this,"mindmapManager");U(this,"memoryManager");U(this,"appContext");U(this,"plugins",[]);U(this,"syntaxEngineManager");U(this,"api");U(this,"aiAPI");this.docState=new bne,this.idGenerator=new en,this.gmlRender=new K_,this.auxGMLRender=new K_,this.cursorManager=new Vre,this.nodeManager=new kne,this.slotManager=new aK,this.resourceManager=new dne(this.docState),this.cropManager=new pHe,this.slideManager=new gHe,this.docManager=new mHe,this.mindmapManager=new yHe,this.memoryManager=new Hte(e.memory),this.syntaxEngineManager=new THe,this.auxiliaryManager=new cK(this.auxGMLRender,this.slotManager,this.cropManager,this.docState),this.renderManager=new Wre(this.gmlRender,this.nodeManager,this.auxiliaryManager,this.slotManager,this.docState),this.inputManager=new D$e(this.renderManager,this.cursorManager),this.previewManager=new dHe,this.toolManager=new Mte(this.nodeManager,this.inputManager,this.slotManager,this.cursorManager),this.asyncRenderNodeManager=new fHe(this.resourceManager,this.nodeManager,this.renderManager),this.actionManager=new zre(this.nodeManager,this.inputManager,this.gmlRender,this.auxiliaryManager,this.toolManager,this.renderManager,this.resourceManager,this.docState,this.idGenerator,this.slotManager,this.asyncRenderNodeManager,this.slideManager,this.mindmapManager),this.serializeManager=new O$e(this.nodeManager,this.docState),this.appContext=new Yre(this.nodeManager,this.gmlRender,e.detectors,this.toolManager,this.inputManager,this.actionManager,this.renderManager,this.auxiliaryManager,this.docState,this.idGenerator,this.cursorManager,this.previewManager,this.resourceManager,this.slotManager,this.asyncRenderNodeManager,this.cropManager,this.slideManager,this.docManager,this.memoryManager),this.api=new vne(this),this.appContext.syntaxAPI=this.api.syntaxAPI,this.aiAPI=new wne(this),this.slideManager.init(this.appContext),this.actionManager.executor.init(this.appContext),this.auxiliaryManager.selectManager.register(this.inputManager),this.appContext.refreshEvent=r=>{const i=this.getPlugin(AE);i&&i.interactiveManager.refreshEvent(this.appContext,r)}}registerPlugin(e){this.plugins.push(e)}getPlugin(e){for(const r of this.plugins)if(r instanceof e)return r;return null}start(){this.slotManager.start(),this.auxiliaryManager.start(),this.renderManager.start(),this.asyncRenderNodeManager.start(),this.slideManager.start();for(const e of this.plugins)e.start()}stop(){this.slotManager.stop(),this.renderManager.stop(),this.asyncRenderNodeManager.stop(),this.slideManager.stop();for(const e of this.plugins)e.stop()}reset(){this.nodeManager.reset(),this.auxiliaryManager.reset(),this.resourceManager.reset(),this.asyncRenderNodeManager.reset(),this.slotManager.reset(),this.idGenerator.reset(),this.docState.reset()}load(e){return this.loadDocumentInfo(e)}asyncLoad(e,r){return this.asyncLoadDocumentInfo(e,r)}asyncLoadDocumentInfo(e,r){const i=Tne();this.docState.load(i);try{const s=this.initData(e);this.asyncAfterInit(s,r),this.renderManager.zoomToFit(),this.renderManager.addContentRenderTask()}catch(s){console.error("初始化过程中出现错误;",s)}return this.docState.seq}loadDocumentInfo(e){const r=Tne();this.docState.load(r);try{const i=this.initData(e);this.afterInit(i),this.mindmapManager.work(this.nodeManager),this.renderManager.zoomToFit(),this.renderManager.addContentRenderTask()}catch(i){console.error("初始化过程中出现错误;",i)}return this.docState.seq}initData(e){this.nodeManager.clear(),this.gmlRender.reset();const r=this.gmlRender.canvas.getContext("2d");let i=[];const s=ae.correctZIndex(e.nodes);for(const a of s){const o=this.nodeManager.root;this.initNode(a,o,r,i)}return i=ae.sortGraphics(i),i}initNode(e,r,i,s){this.idGenerator.loadNode(e);const a=la.getInstance().createByNodeInfo(e,r,i);this.nodeManager.addNode(a),s.push(a);const o=e.children??[],l=ae.correctZIndex(o);for(const u of l)this.initNode(u,a,i,s);return a}async afterInit(e){const r=new Set;for(const s of e){if(s.type===X.Line){const{start:a,end:o}=s.connectProps;if(a){const l=this.nodeManager.getNode(a.objectId)||null;this.nodeManager.addLink(s,l,!0)}if(o){const l=this.nodeManager.getNode(o.objectId)||null;this.nodeManager.addLink(s,l,!1)}}if(s instanceof Lv&&this.asyncRenderNodeManager.addRenderNode(s),s instanceof e2)try{let a="";if(s.svgProps.useCode)a=vu.trimSvgCode(s.svgProps.code).svgCode;else{const l=s.svgUrl;a=await this.resourceManager.loadSvgUrl(l)}const o=vu.trimSvgCode(a);s.setSvgCode(o.svgCode),this.asyncRenderNodeManager.addRenderNode(s)}catch(a){console.error("加载svg图片出现问题",a),s.setBroken()}if(s instanceof tm)try{const a=s.formula;if(a){const o=await Zd.convert(a,s.formulaProps.fontColor);s.setSvgCode(o.svgCode),this.asyncRenderNodeManager.addRenderNode(s)}}catch(a){console.error("加载数学公式出现问题",a),s.setBroken()}s instanceof h4&&r.add(s)}const i=ae.filterMindMapRoots(r);i.size>0&&i.forEach(s=>this.mindmapManager.addMindMap(s))}asyncAfterInit(e,r){for(const i of e){if(i.type===X.Line){const{start:s,end:a}=i.connectProps;if(s){const o=this.nodeManager.getNode(s.objectId)||null;this.nodeManager.addLink(i,o,!0)}if(a){const o=this.nodeManager.getNode(a.objectId)||null;this.nodeManager.addLink(i,o,!1)}}if(i instanceof Lv){const s=i,a=s.imgSrc;if(r&&r.has(a))try{const o=r.get(a);s.setImageBitmap(o)}catch(o){console.error("从 resourceMap 加载图片出现问题",o),s.setBroken()}else{console.warn("图片资源未在 resourceMap 中找到:",a),i.setBroken();continue}}if(i instanceof e2)try{if(i.svgProps.useCode){const a=vu.trimSvgCode(i.svgProps.code).svgCode;if(i.setSvgCode(a),r&&r.has(a)){const o=r.get(a);i.setImageBitmap(o)}else{console.warn("SVG useCode 资源未在 resourceMap 中找到"),i.setBroken();continue}}else{const s=i.svgUrl;if(r&&r.has(s)){const a=r.get(s);i.setImageBitmap(a)}else{console.warn("SVG 资源未在 resourceMap 中找到:",s),i.setBroken();continue}}}catch(s){console.error("加载svg图片出现问题",s),i.setBroken()}if(i instanceof tm)try{if(i.formula){const a=i.resourceKey;if(r&&r.has(a)){const o=r.get(a);i.setImageBitmap(o)}else{console.warn("MathFormula 资源未在 resourceMap 中找到",a),i.setBroken();continue}}}catch(s){console.error("加载数学公式出现问题",s),i.setBroken()}}}}const CHe={width:595,height:942};var rD={exports:{}},m4={};/**
|
|
292
292
|
* @license React
|
|
293
293
|
* react-jsx-runtime.production.min.js
|
|
294
294
|
*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { g as Vt } from "./chunk-55IACEB6-
|
|
2
|
-
import { s as Mt } from "./chunk-KX2RTZJC-
|
|
3
|
-
import { _ as u, b as Bt, a as Ft, s as Yt, g as Pt, o as zt, p as Gt, c as it, l as L, x as Kt, v as Ut, z as Zt, A as jt, n as Wt, r as Qt, u as Xt } from "./mermaid.core-
|
|
1
|
+
import { g as Vt } from "./chunk-55IACEB6-Ckc6OzJS.js";
|
|
2
|
+
import { s as Mt } from "./chunk-KX2RTZJC-RqjD0z78.js";
|
|
3
|
+
import { _ as u, b as Bt, a as Ft, s as Yt, g as Pt, o as zt, p as Gt, c as it, l as L, x as Kt, v as Ut, z as Zt, A as jt, n as Wt, r as Qt, u as Xt } from "./mermaid.core-D7h6yywH.js";
|
|
4
4
|
import { s as qt } from "./transform-QfIdy88w.js";
|
|
5
|
-
import { c as Ht } from "./channel-
|
|
5
|
+
import { c as Ht } from "./channel-DxRVJY1f.js";
|
|
6
6
|
var _t = function() {
|
|
7
7
|
var s = /* @__PURE__ */ u(function(R, n, a, c) {
|
|
8
8
|
for (a = a || {}, c = R.length; c--; a[R[c]] = n) ;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { g as Ht } from "./chunk-FMBD7UC4-
|
|
2
|
-
import { _ as m, m as Mt, l as t1, c as b1, n as Xt, r as Qt, u as rt, b as Jt, s as Zt, o as $t, a as te, g as ee, p as se, j as ie, q as re, J as ae, t as ne, v as it, x as ue, y as oe, z as le } from "./mermaid.core-
|
|
3
|
-
import { c as ce } from "./chunk-JSJVCQXG-
|
|
4
|
-
import { g as he } from "./chunk-55IACEB6-
|
|
5
|
-
import { s as de } from "./chunk-KX2RTZJC-
|
|
1
|
+
import { g as Ht } from "./chunk-FMBD7UC4-l0-uthLm.js";
|
|
2
|
+
import { _ as m, m as Mt, l as t1, c as b1, n as Xt, r as Qt, u as rt, b as Jt, s as Zt, o as $t, a as te, g as ee, p as se, j as ie, q as re, J as ae, t as ne, v as it, x as ue, y as oe, z as le } from "./mermaid.core-D7h6yywH.js";
|
|
3
|
+
import { c as ce } from "./chunk-JSJVCQXG-D04qGeri.js";
|
|
4
|
+
import { g as he } from "./chunk-55IACEB6-Ckc6OzJS.js";
|
|
5
|
+
import { s as de } from "./chunk-KX2RTZJC-RqjD0z78.js";
|
|
6
6
|
import { s as O1 } from "./transform-QfIdy88w.js";
|
|
7
7
|
import pe from "./purify.es-BpFm6ZGf.js";
|
|
8
|
-
import { c as fe } from "./channel-
|
|
8
|
+
import { c as fe } from "./channel-DxRVJY1f.js";
|
|
9
9
|
var ge = "flowchart-", G1, be = (G1 = class {
|
|
10
10
|
// cspell:ignore funs
|
|
11
11
|
constructor() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { g as En, s as In, p as An, o as Wn, a as On, b as $n, _ as d, c as _t, d as Hn, aF as rt, l as Tt, j as Nn, i as Pn, x as Vn, u as zn } from "./mermaid.core-
|
|
2
|
-
import { c as ne, g as re } from "./index-
|
|
1
|
+
import { g as En, s as In, p as An, o as Wn, a as On, b as $n, _ as d, c as _t, d as Hn, aF as rt, l as Tt, j as Nn, i as Pn, x as Vn, u as zn } from "./mermaid.core-D7h6yywH.js";
|
|
2
|
+
import { c as ne, g as re } from "./index-B-7emRZE.js";
|
|
3
3
|
import { R as Je, r as Rn, h as Ke, j as tn, C as en, n as se, k as Zn, s as Bt } from "./transform-QfIdy88w.js";
|
|
4
4
|
import { b as Bn, t as We, c as Xn, a as jn, l as qn } from "./linear-Dzjs91Hs.js";
|
|
5
5
|
import { i as Gn } from "./init-DjUOC4st.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { p as V } from "./chunk-4BX2VUAB-
|
|
2
|
-
import { I as X } from "./chunk-QZHKN3VN-
|
|
3
|
-
import { p as J, o as Q, s as Z, g as rr, a as er, b as tr, _ as $, l as m, u as ar, B as sr, x as nr, j as E, C as or, D as cr, E as ir, F as dr } from "./mermaid.core-
|
|
4
|
-
import { p as hr } from "./mermaid-parser.core-
|
|
1
|
+
import { p as V } from "./chunk-4BX2VUAB-BVuZyGyH.js";
|
|
2
|
+
import { I as X } from "./chunk-QZHKN3VN-iMN5s8af.js";
|
|
3
|
+
import { p as J, o as Q, s as Z, g as rr, a as er, b as tr, _ as $, l as m, u as ar, B as sr, x as nr, j as E, C as or, D as cr, E as ir, F as dr } from "./mermaid.core-D7h6yywH.js";
|
|
4
|
+
import { p as hr } from "./mermaid-parser.core-ByccFDF0.js";
|
|
5
5
|
import { s as lr } from "./transform-QfIdy88w.js";
|
|
6
6
|
var p = {
|
|
7
7
|
NORMAL: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MathFormula.d.ts","sourceRoot":"","sources":["../../../src/graphics/mathFormula/MathFormula.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,UAAU,EAAa,WAAW,EAAY,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIvD;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,IAAI,EAAE,QAAQ,CAAwB;IAEtC,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAM;gBAET,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB;IASrD,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,WAAW,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"MathFormula.d.ts","sourceRoot":"","sources":["../../../src/graphics/mathFormula/MathFormula.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,UAAU,EAAa,WAAW,EAAY,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIvD;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,IAAI,EAAE,QAAQ,CAAwB;IAEtC,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAM;gBAET,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB;IASrD,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,WAAW,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IAchD,SAAS,CAAC,eAAe,IAAI,MAAM;IAInC,OAAO,CAAC,kBAAkB;IAU1B,MAAM,CAAC,IAAI,CACT,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAC1B,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,wBAAwB,GAC5B,WAAW;CAQf"}
|
|
@@ -25792,7 +25792,7 @@ function(c) {
|
|
|
25792
25792
|
var h = l.getContext("2d");
|
|
25793
25793
|
h.fillStyle = "#fff", h.fillRect(0, 0, l.width, l.height);
|
|
25794
25794
|
var d = { ignoreMouse: !0, ignoreAnimation: !0, ignoreDimensions: !0 }, u = this;
|
|
25795
|
-
return (Gt.canvg ? Promise.resolve(Gt.canvg) : import("./index.es-
|
|
25795
|
+
return (Gt.canvg ? Promise.resolve(Gt.canvg) : import("./index.es-xljcddpj.js")).catch(function(p) {
|
|
25796
25796
|
return Promise.reject(new Error("Could not load canvg: " + p));
|
|
25797
25797
|
}).then(function(p) {
|
|
25798
25798
|
return p.default ? p.default : p;
|
|
@@ -40120,7 +40120,7 @@ class yl extends Fi {
|
|
|
40120
40120
|
return this.formulaProps.formula;
|
|
40121
40121
|
}
|
|
40122
40122
|
get resourceKey() {
|
|
40123
|
-
return `${this.
|
|
40123
|
+
return `${this.formulaProps.fontColor}|${this.formula}`;
|
|
40124
40124
|
}
|
|
40125
40125
|
setSvgCode(e) {
|
|
40126
40126
|
this.svgCode = e;
|
|
@@ -47416,7 +47416,7 @@ const ja = class ja {
|
|
|
47416
47416
|
}
|
|
47417
47417
|
async loadMermaid() {
|
|
47418
47418
|
if (!this.mermaidInstance) {
|
|
47419
|
-
const n = await import("./mermaid.core-
|
|
47419
|
+
const n = await import("./mermaid.core-D7h6yywH.js").then((r) => r.aG), e = n.default ?? n;
|
|
47420
47420
|
e.initialize({
|
|
47421
47421
|
startOnLoad: !1,
|
|
47422
47422
|
securityLevel: "loose",
|
|
@@ -53659,7 +53659,7 @@ class Yx {
|
|
|
53659
53659
|
const i = e.get(s);
|
|
53660
53660
|
r.setImageBitmap(i);
|
|
53661
53661
|
} else {
|
|
53662
|
-
console.warn("MathFormula 资源未在 resourceMap 中找到"), r.setBroken();
|
|
53662
|
+
console.warn("MathFormula 资源未在 resourceMap 中找到", s), r.setBroken();
|
|
53663
53663
|
continue;
|
|
53664
53664
|
}
|
|
53665
53665
|
}
|