package.dist.chunks.mermaid.esm.min.chunk-AO5Q4NQQ.mjs.map Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mermaid Show documentation
Show all versions of mermaid Show documentation
Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.
{
"version": 3,
"sources": ["../../../../../node_modules/.pnpm/[email protected]/node_modules/roughjs/bundled/rough.esm.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-rect.js", "../../../src/rendering-util/rendering-elements/createLabel.js", "../../../src/rendering-util/rendering-elements/shapes/roundedRectPath.ts", "../../../src/rendering-util/rendering-elements/shapes/handDrawnShapeStyles.ts", "../../../src/rendering-util/rendering-elements/clusters.js", "../../../src/rendering-util/rendering-elements/edgeMarker.ts", "../../../src/rendering-util/rendering-elements/edges.js", "../../../src/rendering-util/rendering-elements/markers.js", "../../../src/rendering-util/rendering-elements/shapes/util.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-node.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-ellipse.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-circle.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-line.js", "../../../src/rendering-util/rendering-elements/intersect/intersect-polygon.js", "../../../src/rendering-util/rendering-elements/intersect/index.js", "../../../src/rendering-util/rendering-elements/shapes/drawRect.ts", "../../../src/rendering-util/rendering-elements/shapes/state.ts", "../../../src/rendering-util/rendering-elements/shapes/roundedRect.ts", "../../../src/rendering-util/rendering-elements/shapes/squareRect.ts", "../../../src/rendering-util/rendering-elements/shapes/stateStart.ts", "../../../src/rendering-util/rendering-elements/shapes/stateEnd.ts", "../../../src/rendering-util/rendering-elements/shapes/forkJoin.ts", "../../../src/rendering-util/rendering-elements/shapes/choice.ts", "../../../src/rendering-util/rendering-elements/shapes/note.ts", "../../../src/rendering-util/rendering-elements/shapes/stadium.ts", "../../../src/rendering-util/rendering-elements/shapes/rectWithTitle.ts", "../../../src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts", "../../../src/rendering-util/rendering-elements/shapes/subroutine.ts", "../../../src/rendering-util/rendering-elements/shapes/cylinder.ts", "../../../src/rendering-util/rendering-elements/shapes/circle.ts", "../../../src/rendering-util/rendering-elements/shapes/doubleCircle.ts", "../../../src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts", "../../../src/rendering-util/rendering-elements/shapes/question.ts", "../../../src/rendering-util/rendering-elements/shapes/hexagon.ts", "../../../src/rendering-util/rendering-elements/shapes/leanRight.ts", "../../../src/rendering-util/rendering-elements/shapes/leanLeft.ts", "../../../src/rendering-util/rendering-elements/shapes/trapezoid.ts", "../../../src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts", "../../../src/rendering-util/rendering-elements/shapes/labelRect.ts", "../../../src/rendering-util/rendering-elements/nodes.js"],
"sourcesContent": ["function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;et.ymine.ymin?1:t.xe.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;ei);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;tn%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),td&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e2){const o=[];for(let e=0;e2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+21&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;ni&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n", "const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // https://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n", "import { select } from 'd3';\nimport { log } from '../../logger.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport common, { evaluate, renderKatex, hasKatex } from '../../diagrams/common/common.js';\nimport { decodeEntities } from '../../utils.js';\n\n/**\n * @param dom\n * @param styleFn\n */\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\n/**\n * @param {any} node\n * @returns {Promise} Node\n */\nasync function addHtmlLabel(node) {\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n let label = node.label;\n if (node.label && hasKatex(node.label)) {\n label = await renderKatex(node.label.replace(common.lineBreakRegex, '\\n'), getConfig());\n }\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html(\n '' +\n label +\n ''\n );\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n div.style('padding-right', '1px');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n/**\n * @param _vertexText\n * @param style\n * @param isTitle\n * @param isNode\n * @deprecated svg-util/createText instead\n */\nconst createLabel = async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') {\n vertexText = vertexText[0];\n }\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\n log.info('vertexText' + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style ? style.replace('fill:', 'color:') : style,\n };\n let vertexNode = await addHtmlLabel(node);\n // vertexNode.parentNode.removeChild(vertexNode);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n let rows = [];\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\n for (const row of rows) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\n\nexport default createLabel;\n", "export const createRoundedRectPathD = (\n x: number,\n y: number,\n totalWidth: number,\n totalHeight: number,\n radius: number\n) =>\n [\n 'M',\n x + radius,\n y, // Move to the first point\n 'H',\n x + totalWidth - radius, // Draw horizontal line to the beginning of the right corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius, // Draw arc to the right top corner\n 'V',\n y + totalHeight - radius, // Draw vertical line down to the beginning of the right bottom corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight, // Draw arc to the right bottom corner\n 'H',\n x + radius, // Draw horizontal line to the beginning of the left bottom corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius, // Draw arc to the left bottom corner\n 'V',\n y + radius, // Draw vertical line up to the beginning of the left top corner\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y, // Draw arc to the left top corner\n 'Z', // Close the path\n ].join(' ');\n", "import { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport type { Node } from '../../types.js';\n\n// Striped fill like start or fork nodes in state diagrams\nexport const solidStateFill = (color: string) => {\n const { handDrawnSeed } = getConfig();\n return {\n fill: color,\n hachureAngle: 120, // angle of hachure,\n hachureGap: 4,\n fillWeight: 2,\n roughness: 0.7,\n stroke: color,\n seed: handDrawnSeed,\n };\n};\n\nexport const compileStyles = (node: Node) => {\n // node.cssCompiledStyles is an array of strings in the form of 'key: value' where jey is the css property and value is the value\n // the array is the styles of node node from the classes it is using\n // node.cssStyles is an array of styles directly set on the node\n // concat the arrays and remove duplicates such that the values from node.cssStyles are used if there are duplicates\n const stylesMap = styles2Map([...(node.cssCompiledStyles || []), ...(node.cssStyles || [])]);\n return { stylesMap, stylesArray: [...stylesMap] };\n};\n\nexport const styles2Map = (styles: string[]) => {\n const styleMap = new Map();\n styles.forEach((style) => {\n const [key, value] = style.split(':');\n styleMap.set(key.trim(), value?.trim());\n });\n return styleMap;\n};\n\nexport const styles2String = (node: Node) => {\n const { stylesArray } = compileStyles(node);\n const labelStyles: string[] = [];\n const nodeStyles: string[] = [];\n const borderStyles: string[] = [];\n const backgroundStyles: string[] = [];\n\n stylesArray.forEach((style) => {\n const key = style[0];\n if (\n key === 'color' ||\n key === 'font-size' ||\n key === 'font-family' ||\n key === 'font-weight' ||\n key === 'font-style' ||\n key === 'text-decoration' ||\n key === 'text-align' ||\n key === 'text-transform' ||\n key === 'line-height' ||\n key === 'letter-spacing' ||\n key === 'word-spacing' ||\n key === 'text-shadow' ||\n key === 'text-overflow' ||\n key === 'white-space' ||\n key === 'word-wrap' ||\n key === 'word-break' ||\n key === 'overflow-wrap' ||\n key === 'hyphens'\n ) {\n labelStyles.push(style.join(':') + ' !important');\n } else {\n nodeStyles.push(style.join(':') + ' !important');\n if (key.includes('stroke')) {\n borderStyles.push(style.join(':') + ' !important');\n }\n if (key === 'fill') {\n backgroundStyles.push(style.join(':') + ' !important');\n }\n }\n });\n\n return {\n labelStyles: labelStyles.join(';'),\n nodeStyles: nodeStyles.join(';'),\n stylesArray,\n borderStyles,\n backgroundStyles,\n };\n};\n\n// Striped fill like start or fork nodes in state diagrams\n// TODO remove any\nexport const userNodeOverrides = (node: Node, options: any) => {\n const { themeVariables, handDrawnSeed } = getConfig();\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n\n // index the style array to a map object\n const result = Object.assign(\n {\n roughness: 0.7,\n fill: stylesMap.get('fill') || mainBkg,\n fillStyle: 'hachure', // solid fill\n fillWeight: 4,\n stroke: stylesMap.get('stroke') || nodeBorder,\n seed: handDrawnSeed,\n strokeWidth: 1.3,\n },\n options\n );\n return result;\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { evaluate } from '../../diagrams/common/common.js';\nimport { log } from '../../logger.js';\nimport { getSubGraphTitleMargins } from '../../utils/subGraphTitleMargins.js';\nimport { select } from 'd3';\nimport rough from 'roughjs';\nimport { createText } from '../createText.ts';\nimport intersectRect from '../rendering-elements/intersect/intersect-rect.js';\nimport createLabel from './createLabel.js';\nimport { createRoundedRectPathD } from './shapes/roundedRectPath.ts';\nimport { styles2String, userNodeOverrides } from './shapes/handDrawnShapeStyles.js';\n\nconst rect = async (parent, node) => {\n log.info('Creating subgraph rect for ', node.id, node);\n const siteConfig = getConfig();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster ' + node.cssClasses)\n .attr('id', node.id)\n .attr('data-look', node.look);\n\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n\n // Create the label and insert it after the rect\n const labelEl = shapeSvg.insert('g').attr('class', 'cluster-label ');\n\n const text = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n });\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n\n log.trace('Data ', node, JSON.stringify(node));\n let rect;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed,\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughNode;\n }, ':first-child');\n // Should we affect the options instead of doing this?\n rect.select('path:nth-child(2)').attr('style', borderStyles.join(';'));\n rect.select('path').attr('style', backgroundStyles.join(';').replace('fill', 'stroke'));\n } else {\n // add the rect\n rect = shapeSvg.insert('rect', ':first-child');\n // center the rect around its coordinate\n rect\n .attr('style', nodeStyles)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n 'transform',\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n\n if (labelStyles) {\n const span = labelEl.select('span');\n if (span) {\n span.attr('style', labelStyles);\n }\n }\n // Center the label\n\n const rectBox = rect.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n // Used by layout engine to position subgraph in parent\n node.offsetY = bbox.height - node.padding / 2;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: bbox };\n};\n\n/**\n * Non visible cluster where the note is group with its\n *\n * @param {any} parent\n * @param {any} node\n * @returns {any} ShapeSvg\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n};\n\nconst roundedWithTitle = async (parent, node) => {\n const siteConfig = getConfig();\n\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } =\n themeVariables;\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.cssClasses)\n .attr('id', node.id)\n .attr('data-id', node.id)\n .attr('data-look', node.look);\n\n // add the rect\n const outerRectG = shapeSvg.insert('g', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n let innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(await createLabel(node.label, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Rounded With Title\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width =\n (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n\n const height = node.height + padding;\n // const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n\n // add the rect\n let rect;\n if (node.look === 'handDrawn') {\n const isAlt = node.cssClasses.includes('statediagram-cluster-alt');\n const rc = rough.svg(shapeSvg);\n const roughOuterNode =\n node.rx || node.ry\n ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: 'solid',\n stroke: nodeBorder,\n seed: handDrawnSeed,\n })\n : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? 'hachure' : 'solid',\n stroke: nodeBorder,\n seed: handDrawnSeed,\n });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect = outerRectG.insert('rect', ':first-child');\n const outerRectClass = 'outer';\n\n // center the rect around its coordinate\n rect\n .attr('class', outerRectClass)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('data-look', node.look);\n innerRect\n .attr('class', 'inner')\n .attr('x', x)\n .attr('y', innerY)\n .attr('width', width)\n .attr('height', innerHeight);\n }\n\n label.attr(\n 'transform',\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})`\n );\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n // Used by layout engine to position subgraph in parent\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: bbox };\n};\nconst divider = (parent, node) => {\n const siteConfig = getConfig();\n\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', node.cssClasses)\n .attr('id', node.id)\n .attr('data-look', node.look);\n\n // add the rect\n const outerRectG = shapeSvg.insert('g', ':first-child');\n\n const padding = 0 * node.padding;\n\n const width = node.width + padding;\n\n node.diff = -node.padding;\n\n const height = node.height + padding;\n // const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n\n // add the rect\n let rect;\n if (node.look === 'handDrawn') {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: 'lightgrey',\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed,\n });\n\n rect = shapeSvg.insert(() => roughOuterNode, ':first-child');\n } else {\n rect = outerRectG.insert('rect', ':first-child');\n const outerRectClass = 'divider';\n\n // center the rect around its coordinate\n rect\n .attr('class', outerRectClass)\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('data-look', node.look);\n }\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n // Used by layout engine to position subgraph in parent\n node.offsetY = 0;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return { cluster: shapeSvg, labelBBox: {} };\n};\n\nconst squareRect = rect;\nconst shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n};\n\nlet clusterElems = new Map();\n\nexport const insertCluster = async (elem, node) => {\n const shape = node.shape || 'rect';\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n};\n\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.label, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = new Map();\n};\n\nexport const positionCluster = (node) => {\n log.info(\n 'Position cluster (' +\n node.id +\n ', ' +\n node.x +\n ', ' +\n node.y +\n ') (' +\n node?.width +\n ', ' +\n node?.height +\n ')',\n clusterElems.get(node.id)\n );\n const el = clusterElems.get(node.id);\n el.cluster.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n", "import type { SVG } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport type { EdgeData } from '../../types.js';\n/**\n * Adds SVG markers to a path element based on the arrow types specified in the edge.\n *\n * @param svgPath - The SVG path element to add markers to.\n * @param edge - The edge data object containing the arrow types.\n * @param url - The URL of the SVG marker definitions.\n * @param id - The ID prefix for the SVG marker definitions.\n * @param diagramType - The type of diagram being rendered.\n */\nexport const addEdgeMarkers = (\n svgPath: SVG,\n edge: Pick,\n url: string,\n id: string,\n diagramType: string\n) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, 'start', edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, 'end', edge.arrowTypeEnd, url, id, diagramType);\n }\n};\n\nconst arrowTypesMap = {\n arrow_cross: 'cross',\n arrow_point: 'point',\n arrow_barb: 'barb',\n arrow_circle: 'circle',\n aggregation: 'aggregation',\n extension: 'extension',\n composition: 'composition',\n dependency: 'dependency',\n lollipop: 'lollipop',\n} as const;\n\nconst addEdgeMarker = (\n svgPath: SVG,\n position: 'start' | 'end',\n arrowType: string,\n url: string,\n id: string,\n diagramType: string\n) => {\n const endMarkerType = arrowTypesMap[arrowType as keyof typeof arrowTypesMap];\n\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return; // unknown arrow type, ignore\n }\n\n const suffix = position === 'start' ? 'Start' : 'End';\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n};\n", "import { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { evaluate } from '../../diagrams/common/common.js';\nimport { log } from '../../logger.js';\nimport { createText } from '../createText.js';\nimport utils from '../../utils.js';\nimport { getLineFunctionsWithOffset } from '../../utils/lineWithOffset.js';\nimport { getSubGraphTitleMargins } from '../../utils/subGraphTitleMargins.js';\nimport { curveBasis, line, select } from 'd3';\nimport rough from 'roughjs';\nimport createLabel from './createLabel.js';\nimport { addEdgeMarkers } from './edgeMarker.ts';\n\nconst edgeLabels = new Map();\nconst terminalLabels = new Map();\n\nexport const clear = () => {\n edgeLabels.clear();\n terminalLabels.clear();\n};\n\nexport const getLabelStyles = (styleArray) => {\n let styles = styleArray ? styleArray.reduce((acc, style) => acc + ';' + style, '') : '';\n return styles;\n};\n\nexport const insertEdgeLabel = async (elem, edge) => {\n let useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n\n const labelElement = await createText(elem, edge.label, {\n style: getLabelStyles(edge.labelStyle),\n useHtmlLabels,\n addSvgBackground: true,\n isNode: false,\n });\n log.info('abc82', edge, edge.labelType);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement);\n\n // Center the label\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n // Make element accessible by id for positioning\n edgeLabels.set(edge.id, edgeLabel);\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startLabelElement = await createLabel(\n edge.startLabelLeft,\n getLabelStyles(edge.labelStyle)\n );\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n // Create the actual text element\n const startLabelElement = await createLabel(\n edge.startLabelRight,\n getLabelStyles(edge.labelStyle)\n );\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n // Create the actual text element\n const endLabelElement = await createLabel(edge.endLabelLeft, getLabelStyles(edge.labelStyle));\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n // Create the actual text element\n const endLabelElement = await createLabel(edge.endLabelRight, getLabelStyles(edge.labelStyle));\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels.get(edge.id)) {\n terminalLabels.set(edge.id, {});\n }\n terminalLabels.get(edge.id).endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\n\n/**\n * @param {any} fo\n * @param {any} value\n */\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.debug('Moving label abc88 ', edge.id, edge.label, edgeLabels.get(edge.id), paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels.get(edge.id);\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.debug(\n 'Moving label ' + edge.label + ' from (',\n x,\n ',',\n y,\n ') to (',\n pos.x,\n ',',\n pos.y,\n ') abc88'\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr('transform', `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n\n if (edge.startLabelLeft) {\n const el = terminalLabels.get(edge.id).startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels.get(edge.id).startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels.get(edge.id).endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels.get(edge.id).endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', `translate(${x}, ${y})`);\n }\n};\n\nconst outsideNode = (node, point) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n return dx >= w || dy >= h;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n // Intersection is top or bottom of rect.\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.debug(`abc89 top/bottom calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection on sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n\nconst cutPathAtIntersect = (_points, boundaryNode) => {\n log.warn('abc88 cutPathAtIntersect', _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n log.info('abc88 checking point', point, boundaryNode);\n\n if (!outsideNode(boundaryNode, point) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point);\n log.debug('abc88 inside', point, lastPointOutside, inter);\n log.debug('abc88 intersection', inter, boundaryNode);\n\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn('abc88 no intersect', inter, points);\n }\n isInside = true;\n } else {\n log.warn('abc88 outside', point, lastPointOutside);\n lastPointOutside = point;\n if (!isInside) {\n points.push(point);\n }\n }\n });\n log.debug('returning points', points);\n return points;\n};\n\nfunction extractCornerPoints(points) {\n const cornerPoints = [];\n const cornerPointPositions = [];\n for (let i = 1; i < points.length - 1; i++) {\n const prev = points[i - 1];\n const curr = points[i];\n const next = points[i + 1];\n if (\n prev.x === curr.x &&\n curr.y === next.y &&\n Math.abs(curr.x - next.x) > 5 &&\n Math.abs(curr.y - prev.y) > 5\n ) {\n cornerPoints.push(curr);\n cornerPointPositions.push(i);\n } else if (\n prev.y === curr.y &&\n curr.x === next.x &&\n Math.abs(curr.x - prev.x) > 5 &&\n Math.abs(curr.y - next.y) > 5\n ) {\n cornerPoints.push(curr);\n cornerPointPositions.push(i);\n }\n }\n return { cornerPoints, cornerPointPositions };\n}\n\nconst findAdjacentPoint = function (pointA, pointB, distance) {\n const xDiff = pointB.x - pointA.x;\n const yDiff = pointB.y - pointA.y;\n const length = Math.sqrt(xDiff * xDiff + yDiff * yDiff);\n const ratio = distance / length;\n return { x: pointB.x - ratio * xDiff, y: pointB.y - ratio * yDiff };\n};\n\nconst fixCorners = function (lineData) {\n const { cornerPointPositions } = extractCornerPoints(lineData);\n const newLineData = [];\n for (let i = 0; i < lineData.length; i++) {\n if (cornerPointPositions.includes(i)) {\n const prevPoint = lineData[i - 1];\n const nextPoint = lineData[i + 1];\n const cornerPoint = lineData[i];\n\n const newPrevPoint = findAdjacentPoint(prevPoint, cornerPoint, 5);\n const newNextPoint = findAdjacentPoint(nextPoint, cornerPoint, 5);\n\n const xDiff = newNextPoint.x - newPrevPoint.x;\n const yDiff = newNextPoint.y - newPrevPoint.y;\n newLineData.push(newPrevPoint);\n\n const a = Math.sqrt(2) * 2;\n let newCornerPoint = { x: cornerPoint.x, y: cornerPoint.y };\n if (Math.abs(nextPoint.x - prevPoint.x) > 10 && Math.abs(nextPoint.y - prevPoint.y) >= 10) {\n log.debug(\n 'Corner point fixing',\n Math.abs(nextPoint.x - prevPoint.x),\n Math.abs(nextPoint.y - prevPoint.y)\n );\n const r = 5;\n if (cornerPoint.x === newPrevPoint.x) {\n newCornerPoint = {\n x: xDiff < 0 ? newPrevPoint.x - r + a : newPrevPoint.x + r - a,\n y: yDiff < 0 ? newPrevPoint.y - a : newPrevPoint.y + a,\n };\n } else {\n newCornerPoint = {\n x: xDiff < 0 ? newPrevPoint.x - a : newPrevPoint.x + a,\n y: yDiff < 0 ? newPrevPoint.y - r + a : newPrevPoint.y + r - a,\n };\n }\n } else {\n log.debug(\n 'Corner point skipping fixing',\n Math.abs(nextPoint.x - prevPoint.x),\n Math.abs(nextPoint.y - prevPoint.y)\n );\n }\n newLineData.push(newCornerPoint, newNextPoint);\n } else {\n newLineData.push(lineData[i]);\n }\n }\n return newLineData;\n};\n\nexport const insertEdge = function (elem, edge, clusterDb, diagramType, startNode, endNode, id) {\n const { handDrawnSeed } = getConfig();\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = startNode;\n var head = endNode;\n\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.debug(\n 'Last point APA12',\n edge.start,\n '-->',\n edge.end,\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info('to cluster abc88', clusterDb.get(edge.toCluster));\n points = cutPathAtIntersect(edge.points, clusterDb.get(edge.toCluster).node);\n\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.debug(\n 'from cluster abc88',\n clusterDb.get(edge.fromCluster),\n JSON.stringify(points, null, 2)\n );\n points = cutPathAtIntersect(points.reverse(), clusterDb.get(edge.fromCluster).node).reverse();\n\n pointsHasChanged = true;\n }\n\n let lineData = points.filter((p) => !Number.isNaN(p.y));\n lineData = fixCorners(lineData);\n let lastPoint = lineData[lineData.length - 1];\n if (lineData.length > 1) {\n lastPoint = lineData[lineData.length - 1];\n const secondLastPoint = lineData[lineData.length - 2];\n const diffX = (lastPoint.x - secondLastPoint.x) / 2;\n const diffY = (lastPoint.y - secondLastPoint.y) / 2;\n const midPoint = { x: secondLastPoint.x + diffX, y: secondLastPoint.y + diffY };\n lineData.splice(-1, 0, midPoint);\n }\n let curve = curveBasis;\n if (edge.curve) {\n curve = edge.curve;\n }\n\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n case 'invisible':\n strokeClasses = 'edge-thickness-invisible';\n break;\n default:\n strokeClasses = 'edge-thickness-normal';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n default:\n strokeClasses += ' edge-pattern-solid';\n }\n let svgPath;\n let linePath = lineFunction(lineData);\n const edgeStyles = Array.isArray(edge.style) ? edge.style : [edge.style];\n if (edge.look === 'handDrawn') {\n const rc = rough.svg(elem);\n Object.assign([], lineData);\n\n const svgPathNode = rc.path(linePath, {\n roughness: 0.3,\n seed: handDrawnSeed,\n });\n\n strokeClasses += ' transition';\n\n svgPath = select(svgPathNode)\n .select('path')\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\n .attr('style', edgeStyles ? edgeStyles.reduce((acc, style) => acc + ';' + style, '') : '');\n let d = svgPath.attr('d');\n svgPath.attr('d', d);\n elem.node().appendChild(svgPath.node());\n } else {\n svgPath = elem\n .append('path')\n .attr('d', linePath)\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\n .attr('style', edgeStyles ? edgeStyles.reduce((acc, style) => acc + ';' + style, '') : '');\n }\n\n // DEBUG code, DO NOT REMOVE\n // adds a red circle at each edge coordinate\n // cornerPoints.forEach((point) => {\n // elem\n // .append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 3)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // lineData.forEach((point) => {\n // elem\n // .append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 3)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(').replace(/\\)/g, '\\\\)');\n }\n log.info('arrowTypeStart', edge.arrowTypeStart);\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n", "/** Setup arrow head and define the marker. The result is appended to the svg. */\nimport { log } from '../../logger.js';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 6)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst lollipop = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopStart')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 13)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('stroke', 'black')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-lollipopEnd')\n .attr('class', 'marker lollipop ' + type)\n .attr('refX', 1)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('circle')\n .attr('stroke', 'black')\n .attr('fill', 'transparent')\n .attr('cx', 7)\n .attr('cy', 7)\n .attr('r', 6);\n};\nconst point = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 5)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 8)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 4.5)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 8)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type, id) => {\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', id + '_' + type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type, id) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', id + '_' + type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semantic free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb,\n};\nexport default insertMarkers;\n", "import { createText } from '../../createText.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport { select } from 'd3';\nimport { evaluate, sanitizeText } from '../../../diagrams/common/common.js';\nimport { decodeEntities } from '../../../utils.js';\n\nexport const labelHelper = async (parent, node, _classes) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);\n if (!_classes) {\n cssClasses = 'node default';\n } else {\n cssClasses = _classes;\n }\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', cssClasses)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const labelEl = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\n\n // Replace label with default value if undefined\n let label;\n if (node.label === undefined) {\n label = '';\n } else {\n label = typeof node.label === 'string' ? node.label : node.label[0];\n }\n\n let text;\n text = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig()), {\n useHtmlLabels,\n width: node.width || getConfig().flowchart.wrappingWidth,\n cssClasses: 'markdown-node-label',\n style: node.labelStyle,\n });\n // Get the size of the label\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n\n // if there are images, need to wait for them to load before getting the bounding box\n const images = div.getElementsByTagName('img');\n if (images) {\n const noImgText = label.replace(/]*>/g, '').trim() === '';\n\n await Promise.all(\n [...images].map(\n (img) =>\n new Promise((res) => {\n /**\n *\n */\n function setupImage() {\n img.style.display = 'flex';\n img.style.flexDirection = 'column';\n\n if (noImgText) {\n // default size if no text\n const bodyFontSize = getConfig().fontSize\n ? getConfig().fontSize\n : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + 'px';\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = '100%';\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener('error', setupImage);\n img.addEventListener('load', setupImage);\n })\n )\n );\n }\n\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n // Center the label\n if (useHtmlLabels) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n } else {\n labelEl.attr('transform', 'translate(' + 0 + ', ' + -bbox.height / 2 + ')');\n }\n if (node.centerLabel) {\n labelEl.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n }\n labelEl.insert('rect', ':first-child');\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\n */\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport const getNodeClasses = (node, extra) =>\n (node.look === 'handDrawn' ? 'rough-node' : 'node') + ' ' + node.cssClasses + ' ' + (extra || '');\n", "function intersectNode(node, point) {\n return node.intersect(point);\n}\n\nexport default intersectNode;\n", "function intersectEllipse(node, rx, ry, point) {\n // Formulae from: https://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n", "import intersectEllipse from './intersect-ellipse.js';\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n", "/**\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DON'T_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n", "import intersectLine from './intersect-line.js';\n\n/**\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\n * that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n\n let intersections = [];\n\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n\nexport default intersectPolygon;\n", "/*\n * Borrowed with love from from dagre-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node, RectOptions } from '../../types.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { userNodeOverrides, styles2String } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\n\nexport const drawRect = async (parent: SVGAElement, node: Node, options: RectOptions) => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n // console.log('IPI labelStyles:', labelStyles);\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n // log.info('IPI node = ', node);\n\n let rect;\n let { rx, ry } = node;\n const { cssStyles } = node;\n\n //use options rx, ry overrides if present\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const roughNode =\n rx || ry\n ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options)\n : rc.rectangle(x, y, totalWidth, totalHeight, options);\n\n rect = shapeSvg.insert(() => roughNode, ':first-child');\n rect.attr('class', 'basic label-container').attr('style', cssStyles);\n } else {\n rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('rx', rx)\n .attr('data-id', 'abc')\n .attr('data-et', 'node')\n .attr('ry', ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n", "import type { Node, RectOptions } from '../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport const state = async (parent: SVGAElement, node: Node) => {\n const options = {\n rx: 5,\n ry: 5,\n classes: 'flowchart-node',\n } as RectOptions;\n return drawRect(parent, node, options);\n};\n", "import type { Node, RectOptions } from '../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport const roundedRect = async (parent: SVGAElement, node: Node) => {\n const options = {\n rx: 5,\n ry: 5,\n classes: '',\n labelPaddingX: (node?.padding || 0) * 1,\n labelPaddingY: (node?.padding || 0) * 1,\n } as RectOptions;\n\n return drawRect(parent, node, options);\n};\n", "import type { Node, RectOptions } from '../../types.js';\nimport { drawRect } from './drawRect.js';\n\nexport const squareRect = async (parent: SVGAElement, node: Node) => {\n const options = {\n rx: 0,\n ry: 0,\n classes: '',\n labelPaddingX: (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1,\n } as RectOptions;\n return drawRect(parent, node, options);\n};\n", "import { updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport type { SVG } from '../../../diagram-api/types.js';\nimport rough from 'roughjs';\nimport { solidStateFill } from './handDrawnShapeStyles.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\n\nexport const stateStart = (parent: SVG, node: Node) => {\n const { themeVariables } = getConfig();\n const { lineColor } = themeVariables;\n\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let circle;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle = shapeSvg.insert(() => roughNode);\n } else {\n circle = shapeSvg.insert('circle', ':first-child');\n }\n\n // center the circle around its coordinate\n // @ts-ignore TODO: Fix typings\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n", "import { updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport type { SVG } from '../../../diagram-api/types.js';\nimport rough from 'roughjs';\nimport { solidStateFill } from './handDrawnShapeStyles.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\n\nexport const stateEnd = (parent: SVG, node: Node) => {\n const { themeVariables } = getConfig();\n const { lineColor } = themeVariables;\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let circle;\n let innerCircle;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, { ...solidStateFill(lineColor), roughness: 0.5 });\n const roughInnerNode = rc.circle(0, 0, 5, { ...solidStateFill(lineColor), fillStyle: 'solid' });\n circle = shapeSvg.insert(() => roughNode);\n innerCircle = shapeSvg.insert(() => roughInnerNode);\n } else {\n innerCircle = shapeSvg.insert('circle', ':first-child');\n circle = shapeSvg.insert('circle', ':first-child');\n\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\n }\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n", "import { updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport type { SVG } from '../../../diagram-api/types.js';\nimport rough from 'roughjs';\nimport { solidStateFill } from './handDrawnShapeStyles.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\n\nexport const forkJoin = (parent: SVG, node: Node, dir: string) => {\n const { themeVariables } = getConfig();\n const { lineColor } = themeVariables;\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n const x = (-1 * width) / 2;\n const y = (-1 * height) / 2;\n\n let shape;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const roughNode = rc.rectangle(x, y, width, height, solidStateFill(lineColor));\n shape = shapeSvg.insert(() => roughNode);\n } else {\n shape = shapeSvg\n .append('rect')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n }\n\n updateNodeBounds(node, shape);\n let nodeHeight = 0;\n let nodeWidth = 0;\n let nodePadding = 10;\n if (node.height) {\n nodeHeight = node.height;\n }\n if (node.width) {\n nodeWidth = node.width;\n }\n\n if (node.padding) {\n nodePadding = node.padding;\n }\n\n node.height = nodeHeight + nodePadding / 2;\n node.width = nodeWidth + nodePadding / 2;\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n", "import intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport type { SVG } from '../../../diagram-api/types.js';\n// @ts-ignore TODO: Fix rough typings\nimport rough from 'roughjs';\nimport { solidStateFill, styles2String } from './handDrawnShapeStyles.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\n\nexport const choice = (parent: SVG, node: Node) => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { themeVariables } = getConfig();\n const { lineColor } = themeVariables;\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n let choice;\n if (node.look === 'handDrawn') {\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const pointArr = points.map(function (d) {\n return [d.x, d.y];\n });\n const roughNode = rc.polygon(pointArr, solidStateFill(lineColor));\n choice = shapeSvg.insert(() => roughNode);\n } else {\n choice = shapeSvg.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n );\n }\n\n // center the circle around its coordinate\n choice\n .attr('class', 'state-start')\n // @ts-ignore TODO: Fix rough typings\n .attr('r', 7)\n .attr('width', 28)\n .attr('height', 28)\n .attr('style', nodeStyles);\n\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.circle(node, 14, point);\n };\n\n return shapeSvg;\n};\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport type { Node } from '../../types.js';\nimport rough from 'roughjs';\n\nexport const note = async (parent: SVGAElement, node: Node) => {\n const { themeVariables, handDrawnSeed } = getConfig();\n const { noteBorderColor, noteBkgColor } = themeVariables;\n\n const useHtmlLabels = node.useHtmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox } = await labelHelper(parent, node, 'node ' + node.cssClasses);\n\n log.info('Classes = ', node.cssClasses);\n const { cssStyles } = node;\n let rect;\n const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n\n if (node.look === 'handDrawn') {\n // add the rect\n // @ts-ignore TODO: Fix rough typings\n const rc = rough.svg(shapeSvg);\n const roughNode = rc.rectangle(x, y, totalWidth, totalHeight, {\n roughness: 0.7,\n fill: noteBkgColor,\n fillWeight: 3,\n seed: handDrawnSeed,\n // fillStyle: 'solid', // solid fill'\n stroke: noteBorderColor,\n });\n\n rect = shapeSvg.insert(() => roughNode, ':first-child');\n rect.attr('class', 'basic label-container').attr('style', cssStyles);\n } else {\n rect = shapeSvg.insert('rect', ':first-child');\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', x)\n .attr('y', y)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\n\nexport const createStadiumPathD = (\n x: number,\n y: number,\n totalWidth: number,\n totalHeight: number\n) => {\n const radius = totalHeight / 2;\n return [\n 'M',\n x + radius,\n y, // Move to the start of the top-left arc\n 'H',\n x + totalWidth - radius, // Draw horizontal line to the start of the top-right arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius, // Draw top-right arc\n 'H',\n x, // Draw horizontal line to the start of the bottom-right arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight, // Draw bottom-right arc\n 'H',\n x + radius, // Draw horizontal line to the start of the bottom-left arc\n 'A',\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + radius, // Draw bottom-left arc\n 'Z', // Close the path\n ].join(' ');\n};\n\nexport const stadium = async (parent: SVGAElement, node: Node) => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n let rect;\n const { cssStyles } = node;\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const pathData = createRoundedRectPathD(-w / 2, -h / 2, w, h, h / 2);\n const roughNode = rc.path(pathData, options);\n\n rect = shapeSvg.insert(() => roughNode, ':first-child');\n rect.attr('class', 'basic label-container').attr('style', cssStyles);\n } else {\n rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n", "import type { Node } from '../../types.js';\nimport { select } from 'd3';\nimport { evaluate } from '../../../diagrams/common/common.js';\nimport { updateNodeBounds } from './util.js';\nimport createLabel from '../createLabel.js';\nimport intersect from '../intersect/index.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { getConfig } from '../../../diagram-api/diagramAPI.js';\nimport { createRoundedRectPathD } from './roundedRectPath.js';\nimport { log } from '../../../logger.js';\n\nexport const rectWithTitle = async (parent: SVGElement, node: Node) => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n let classes;\n if (!node.cssClasses) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.cssClasses;\n }\n\n // Add outer g element\n const shapeSvg = parent\n // @ts-ignore - d3 typings are not correct\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const g = shapeSvg.insert('g');\n\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', nodeStyles);\n\n const description = node.description;\n\n const title = node.label;\n\n const text = label.node().appendChild(await createLabel(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig()?.flowchart?.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', description);\n const textRows = description || [];\n const titleBox = text.getBBox();\n const descr = label\n .node()\n .appendChild(\n await createLabel(\n textRows.join ? textRows.join('
') : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n\n //if (evaluate(getConfig()?.flowchart?.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n // }\n\n const halfPadding = (node.padding || 0) / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect;\n let innerLine;\n if (node.look === 'handDrawn') {\n // @ts-ignore No typings for rough\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n\n innerLine = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughLine;\n }, ':first-child');\n rect = shapeSvg.insert(() => {\n log.debug('Rough node insert CXC', roughNode);\n return roughNode;\n }, ':first-child');\n } else {\n rect = g.insert('rect', ':first-child');\n innerLine = g.insert('line');\n rect\n .attr('class', 'outer title-state')\n .attr('style', nodeStyles)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + (node.padding || 0))\n .attr('height', bbox.height + (node.padding || 0));\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n", "export function insertPolygonShape(\n parent: any,\n w: number,\n h: number,\n points: { x: number; y: number }[]\n) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\n\nexport const createSubroutinePathD = (\n x: number,\n y: number,\n width: number,\n height: number\n): string => {\n const offset = 8;\n return [\n `M${x - offset},${y}`,\n `H${x + width + offset}`,\n `V${y + height}`,\n `H${x - offset}`,\n `V${y}`,\n 'M',\n x,\n y,\n 'H',\n x + width,\n 'V',\n y + height,\n 'H',\n x,\n 'Z',\n ].join(' ');\n};\n\nexport const subroutine = async (parent: SVGAElement, node: Node) => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = (node?.padding || 0) / 2;\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n\n const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n const l1 = rc.line(x, y, x, y + h, options);\n const l2 = rc.line(x + w, y, x + w, y + h, options);\n\n shapeSvg.insert(() => l1, ':first-child');\n shapeSvg.insert(() => l2, ':first-child');\n const rect = shapeSvg.insert(() => roughNode, ':first-child');\n const { cssStyles } = node;\n rect.attr('class', 'basic label-container').attr('style', cssStyles);\n updateNodeBounds(node, rect);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr('style', nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nexport default subroutine;\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\n\nexport const createCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n ].join(' ');\n};\nexport const createOuterCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n ].join(' ');\n};\nexport const createInnerCylinderPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n rx: number,\n ry: number\n): string => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(' ');\n};\nexport const cylinder = async (parent: SVGAElement, node: Node) => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n let cylinder: d3.Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: 'none' }));\n\n cylinder = shapeSvg.insert(() => innerLine, ':first-child');\n cylinder = shapeSvg.insert(() => outerNode, ':first-child');\n cylinder.attr('class', 'basic label-container');\n if (cssStyles) {\n cylinder.attr('style', cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder = shapeSvg\n .insert('path', ':first-child')\n .attr('d', pathData)\n .attr('class', 'basic label-container')\n .attr('style', cssStyles)\n .attr('style', nodeStyles);\n }\n\n cylinder.attr('label-offset-y', ry);\n cylinder.attr('transform', `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n\n updateNodeBounds(node, cylinder);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n\n if (\n rx != 0 &&\n (Math.abs(x) < (node.width ?? 0) / 2 ||\n (Math.abs(x) == (node.width ?? 0) / 2 &&\n Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry))\n ) {\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\n\nexport const circle = async (parent: SVGAElement, node: Node): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n\n const radius = bbox.width / 2 + halfPadding;\n let circleElem;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options);\n\n circleElem = shapeSvg.insert(() => roughNode, ':first-child');\n circleElem.attr('class', 'basic label-container').attr('style', cssStyles);\n } else {\n circleElem = shapeSvg\n .insert('circle', ':first-child')\n .attr('class', 'basic label-container')\n .attr('style', nodeStyles)\n .attr('r', radius)\n .attr('cx', 0)\n .attr('cy', 0);\n }\n\n updateNodeBounds(node, circleElem);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, radius, point);\n return intersect.circle(node, radius, point);\n };\n\n return shapeSvg;\n};\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\n\nexport const doublecircle = async (parent: SVGAElement, node: Node): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const gap = 5;\n const outerRadius = bbox.width / 2 + halfPadding + gap;\n const innerRadius = bbox.width / 2 + halfPadding;\n\n let circleGroup;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n\n circleGroup = shapeSvg.insert('g', ':first-child');\n // circleGroup = circleGroup.insert(() => outerRoughNode, ':first-child');\n circleGroup.attr('class', node.cssClasses).attr('style', cssStyles);\n\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert('g', ':first-child');\n\n const outerCircle = circleGroup.insert('circle', ':first-child');\n const innerCircle = circleGroup.insert('circle');\n circleGroup.attr('class', 'basic label-container').attr('style', nodeStyles);\n\n outerCircle\n .attr('class', 'outer-circle')\n .attr('style', nodeStyles)\n .attr('r', outerRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n\n innerCircle\n .attr('class', 'inner-circle')\n .attr('style', nodeStyles)\n .attr('r', innerRadius)\n .attr('cx', 0)\n .attr('cy', 0);\n }\n\n updateNodeBounds(node, circleGroup);\n\n node.intersect = function (point) {\n log.info('DoubleCircle intersect', node, outerRadius, point);\n return intersect.circle(node, outerRadius, point);\n };\n\n return shapeSvg;\n};\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\n\nexport const createPolygonPathD = (x: number, y: number, width: number, height: number): string => {\n return [\n `M${x - height / 2},${y}`,\n `L${x + width},${y}`,\n `L${x + width},${y - height}`,\n `L${x - height / 2},${y - height}`,\n `L${x},${y - height / 2}`,\n 'Z',\n ].join(' ');\n};\n\nexport const rect_left_inv_arrow = async (\n parent: SVGAElement,\n node: Node\n): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n let polygon;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPolygonPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n node.width = w + h;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n", "import { log } from '../../../logger.js';\nimport { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\n\nexport const createDecisionBoxPathD = (x: number, y: number, size: number): string => {\n return [\n `M${x + size / 2},${y}`,\n `L${x + size},${y - size / 2}`,\n `L${x + size / 2},${y - size}`,\n `L${x},${y - size / 2}`,\n 'Z',\n ].join(' ');\n};\n\nexport const question = async (parent: SVGAElement, node: Node): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n let polygon: d3.Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-s / 2}, ${s / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n log.debug(\n 'APA12 Intersect called SPLIT\\npoint:',\n point,\n '\\nnode:\\n',\n node,\n '\\nres:',\n intersect.polygon(node, points, point)\n );\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\n\nimport { insertPolygonShape } from './insertPolygonShape.js';\n\nexport const createHexagonPathD = (\n x: number,\n y: number,\n width: number,\n height: number,\n m: number\n): string => {\n return [\n `M${x + m},${y}`,\n `L${x + width - m},${y}`,\n `L${x + width},${y - height / 2}`,\n `L${x + width - m},${y - height}`,\n `L${x + m},${y - height}`,\n `L${x},${y - height / 2}`,\n 'Z',\n ].join(' ');\n};\n\nexport const hexagon = async (parent: SVGAElement, node: Node): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n let polygon: d3.Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createHexagonPathD(0, 0, w, h, m);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\n\nexport const createLeanRightPathD = (\n x: number,\n y: number,\n width: number,\n height: number\n): string => {\n return [\n `M${x - (2 * height) / 6},${y}`,\n `L${x + width - height / 6},${y}`,\n `L${x + width + (2 * height) / 6},${y - height}`,\n `L${x + height / 6},${y - height}`,\n 'Z',\n ].join(' ');\n};\n\nexport const lean_right = async (parent: SVGAElement, node: Node): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n let polygon: d3.Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createLeanRightPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\n\nexport const createLeanLeftPathD = (\n x: number,\n y: number,\n width: number,\n height: number\n): string => {\n return [\n `M${x + (2 * height) / 6},${y}`,\n `L${x + width + height / 6},${y}`,\n `L${x + width - (2 * height) / 6},${y - height}`,\n `L${x - height / 6},${y - height}`,\n 'Z',\n ].join(' ');\n};\n\nexport const lean_left = async (parent: SVGAElement, node: Node): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h },\n ];\n\n let polygon: d3.Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createLeanLeftPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\n\nexport const createTrapezoidPathD = (\n x: number,\n y: number,\n width: number,\n height: number\n): string => {\n return [\n `M${x - (2 * height) / 6},${y}`,\n `L${x + width + (2 * height) / 6},${y}`,\n `L${x + width - height / 6},${y - height}`,\n `L${x + height / 6},${y - height}`,\n 'Z',\n ].join(' ');\n};\n\nexport const trapezoid = async (parent: SVGAElement, node: Node): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n let polygon: d3.Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createTrapezoidPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n", "import { labelHelper, updateNodeBounds, getNodeClasses } from './util.js';\nimport intersect from '../intersect/index.js';\nimport type { Node } from '../../types.js';\nimport { styles2String, userNodeOverrides } from './handDrawnShapeStyles.js';\nimport rough from 'roughjs';\nimport { insertPolygonShape } from './insertPolygonShape.js';\n\nexport const createInvertedTrapezoidPathD = (\n x: number,\n y: number,\n width: number,\n height: number\n): string => {\n return [\n `M${x + height / 6},${y}`,\n `L${x + width - height / 6},${y}`,\n `L${x + width + (2 * height) / 6},${y - height}`,\n `L${x - (2 * height) / 6},${y - height}`,\n 'Z',\n ].join(' ');\n};\n\nexport const inv_trapezoid = async (parent: SVGAElement, node: Node): Promise => {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h },\n ];\n\n let polygon: d3.Selection;\n const { cssStyles } = node;\n\n if (node.look === 'handDrawn') {\n // @ts-ignore - rough is not typed\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createInvertedTrapezoidPathD(0, 0, w, h);\n const roughNode = rc.path(pathData, options);\n\n polygon = shapeSvg\n .insert(() => roughNode, ':first-child')\n .attr('transform', `translate(${-w / 2}, ${h / 2})`);\n\n if (cssStyles) {\n polygon.attr('style', cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n\n if (nodeStyles) {\n polygon.attr('style', nodeStyles);\n }\n\n node.width = w;\n node.height = h;\n\n updateNodeBounds(node, polygon);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n", "import type { Node, RectOptions } from '../../types.js';\nimport { drawRect } from './drawRect.js';\nimport { labelHelper, updateNodeBounds } from './util.js';\nimport intersect from '../intersect/index.js';\n\nexport const roundedRect = async (parent: SVGAElement, node: Node) => {\n const options = {\n rx: 5,\n ry: 5,\n classes: '',\n labelPaddingX: (node?.padding || 0) * 1,\n labelPaddingY: (node?.padding || 0) * 1,\n } as RectOptions;\n\n return drawRect(parent, node, options);\n};\n\nexport const labelRect = async (parent: SVGElement, node: Node) => {\n const { shapeSvg } = await labelHelper(parent, node, 'label');\n\n // log.trace('Classes = ', node.class);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Hide the rect we are only after the label\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect.attr('width', totalWidth).attr('height', totalHeight);\n shapeSvg.attr('class', 'label edgeLabel');\n\n // if (node.props) {\n // const propKeys = new Set(Object.keys(node.props));\n // if (node.props.borders) {\n // applyNodePropertyBorders(rect, node.borders, totalWidth, totalHeight);\n // propKeys.delete('borders');\n // }\n // propKeys.forEach((propKey) => {\n // log.warn(`Unknown node property ${propKey}`);\n // });\n // }\n\n updateNodeBounds(node, rect);\n // node.width = 1;\n // node.height = 1;\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n", "import { log } from '../../logger.js';\nimport { state } from './shapes/state.ts';\nimport { roundedRect } from './shapes/roundedRect.ts';\nimport { squareRect } from './shapes/squareRect.ts';\nimport { stateStart } from './shapes/stateStart.ts';\nimport { stateEnd } from './shapes/stateEnd.ts';\nimport { forkJoin } from './shapes/forkJoin.ts';\nimport { choice } from './shapes/choice.ts';\nimport { note } from './shapes/note.ts';\nimport { stadium } from './shapes/stadium.js';\nimport { rectWithTitle } from './shapes/rectWithTitle.js';\nimport { getConfig } from '../../diagram-api/diagramAPI.js';\nimport { subroutine } from './shapes/subroutine.js';\nimport { cylinder } from './shapes/cylinder.js';\nimport { circle } from './shapes/circle.js';\nimport { doublecircle } from './shapes/doubleCircle.js';\nimport { rect_left_inv_arrow } from './shapes/rectLeftInvArrow.js';\nimport { question } from './shapes/question.js';\nimport { hexagon } from './shapes/hexagon.js';\nimport { lean_right } from './shapes/leanRight.js';\nimport { lean_left } from './shapes/leanLeft.js';\nimport { trapezoid } from './shapes/trapezoid.js';\nimport { inv_trapezoid } from './shapes/invertedTrapezoid.js';\nimport { labelRect } from './shapes/labelRect.js';\n\nconst shapes = {\n state,\n stateStart,\n stateEnd,\n fork: forkJoin,\n join: forkJoin,\n choice,\n note,\n roundedRect,\n rectWithTitle,\n squareRect,\n stadium,\n subroutine,\n cylinder,\n circle,\n doublecircle,\n odd: rect_left_inv_arrow,\n diamond: question,\n hexagon,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n labelRect,\n};\n\nconst nodeElems = new Map();\n\nexport const insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n\n //special check for rect shape (with or without rounded corners)\n if (node.shape === 'rect') {\n if (node.rx && node.ry) {\n node.shape = 'roundedRect';\n } else {\n node.shape = 'squareRect';\n }\n }\n\n // Add link when appropriate\n if (node.link) {\n let target;\n if (getConfig().securityLevel === 'sandbox') {\n target = '_top';\n } else if (node.linkTarget) {\n target = node.linkTarget || '_blank';\n }\n newEl = elem.insert('svg:a').attr('xlink:href', node.link).attr('target', target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n\n nodeElems.set(node.id, newEl);\n\n if (node.haveCallback) {\n nodeElems.get(node.id).attr('class', nodeElems.get(node.id).attr('class') + ' clickable');\n }\n return newEl;\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems.set(node.id, elem);\n};\nexport const clear = () => {\n nodeElems.clear();\n};\n\nexport const positionNode = (node) => {\n const el = nodeElems.get(node.id);\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n"],
"mappings": "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",
"names": ["t", "e", "s", "n", "o", "a", "h", "r", "__name", "c", "i", "l", "u", "p", "f", "d", "g", "M", "k", "b", "y", "m", "x", "w", "P", "v", "S", "O", "L", "T", "D", "A", "G", "E", "$", "j", "z", "F", "q", "V", "_", "Z", "I", "C", "W", "R", "Q", "H", "N", "B", "K", "U", "X", "Y", "tt", "et", "st", "nt", "ot", "at", "intersectRect", "__name", "node", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "applyStyle", "dom", "styleFn", "__name", "addHtmlLabel", "node", "fo", "select_default", "div", "label", "hasKatex", "renderKatex", "common_default", "getConfig", "labelClass", "createLabel", "_vertexText", "style", "isTitle", "isNode", "vertexText", "evaluate", "log", "decodeEntities", "s", "svgLabel", "rows", "row", "tspan", "createLabel_default", "createRoundedRectPathD", "__name", "x", "y", "totalWidth", "totalHeight", "radius", "solidStateFill", "__name", "color", "handDrawnSeed", "getConfig", "compileStyles", "node", "stylesMap", "styles2Map", "styles", "styleMap", "style", "key", "value", "styles2String", "stylesArray", "labelStyles", "nodeStyles", "borderStyles", "backgroundStyles", "userNodeOverrides", "options", "themeVariables", "nodeBorder", "mainBkg", "rect", "__name", "parent", "node", "log", "siteConfig", "getConfig", "themeVariables", "handDrawnSeed", "clusterBkg", "clusterBorder", "labelStyles", "nodeStyles", "borderStyles", "backgroundStyles", "styles2String", "shapeSvg", "useHtmlLabels", "evaluate", "labelEl", "text", "createText", "bbox", "div", "dv", "select_default", "width", "height", "y", "rc", "at", "options", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "subGraphTitleTopMargin", "getSubGraphTitleMargins", "span", "rectBox", "point", "intersect_rect_default", "noteGroup", "padding", "halfPadding", "roundedWithTitle", "altBackground", "compositeBackground", "compositeTitleBackground", "nodeBorder", "outerRectG", "label", "innerRect", "createLabel_default", "innerHeight", "x", "innerY", "isAlt", "roughOuterNode", "roughInnerNode", "divider", "squareRect", "shapes", "clusterElems", "insertCluster", "elem", "shape", "cluster", "clear", "__name", "clusterElems", "addEdgeMarkers", "__name", "svgPath", "edge", "url", "id", "diagramType", "addEdgeMarker", "arrowTypesMap", "position", "arrowType", "endMarkerType", "log", "suffix", "edgeLabels", "terminalLabels", "clear", "__name", "getLabelStyles", "styleArray", "acc", "style", "insertEdgeLabel", "elem", "edge", "useHtmlLabels", "evaluate", "getConfig", "labelElement", "createText", "log", "edgeLabel", "label", "bbox", "div", "dv", "select_default", "fo", "startLabelElement", "createLabel_default", "startEdgeLabelLeft", "inner", "slBox", "setTerminalWidth", "startEdgeLabelRight", "endLabelElement", "endEdgeLabelLeft", "endEdgeLabelRight", "value", "positionEdgeLabel", "paths", "path", "siteConfig", "subGraphTitleTotalMargin", "getSubGraphTitleMargins", "el", "x", "y", "pos", "utils_default", "outsideNode", "node", "point", "dx", "dy", "w", "h", "intersection", "outsidePoint", "insidePoint", "r", "Q", "R", "q", "res", "_x", "_y", "cutPathAtIntersect", "_points", "boundaryNode", "points", "lastPointOutside", "isInside", "inter", "pointPresent", "p", "e", "extractCornerPoints", "cornerPoints", "cornerPointPositions", "i", "prev", "curr", "next", "findAdjacentPoint", "pointA", "pointB", "distance", "xDiff", "yDiff", "length", "ratio", "fixCorners", "lineData", "newLineData", "prevPoint", "nextPoint", "cornerPoint", "newPrevPoint", "newNextPoint", "a", "newCornerPoint", "insertEdge", "clusterDb", "diagramType", "startNode", "endNode", "id", "handDrawnSeed", "pointsHasChanged", "tail", "head", "lastPoint", "secondLastPoint", "diffX", "diffY", "midPoint", "curve", "basis_default", "getLineFunctionsWithOffset", "lineFunction", "line_default", "strokeClasses", "svgPath", "linePath", "edgeStyles", "rc", "at", "svgPathNode", "d", "url", "addEdgeMarkers", "insertMarkers", "__name", "elem", "markerArray", "type", "id", "markerName", "markers", "extension", "log", "composition", "aggregation", "dependency", "lollipop", "point", "circle", "cross", "barb", "markers_default", "labelHelper", "__name", "parent", "node", "_classes", "cssClasses", "useHtmlLabels", "evaluate", "getConfig", "shapeSvg", "labelEl", "label", "text", "createText", "sanitizeText", "decodeEntities", "bbox", "halfPadding", "div", "dv", "select_default", "images", "noImgText", "img", "res", "setupImage", "bodyFontSize", "width", "updateNodeBounds", "element", "getNodeClasses", "__name", "node", "extra", "intersectNode", "node", "point", "__name", "intersect_node_default", "intersectEllipse", "node", "rx", "ry", "point", "cx", "cy", "px", "py", "det", "dx", "dy", "__name", "intersect_ellipse_default", "intersectCircle", "node", "rx", "point", "intersect_ellipse_default", "__name", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "a2", "b1", "b2", "c1", "c2", "r1", "r2", "r3", "r4", "denom", "offset", "num", "x", "y", "sameSign", "__name", "intersect_line_default", "intersectPolygon", "node", "polyPoints", "point", "x1", "y1", "intersections", "minX", "minY", "entry", "left", "top", "i", "p1", "p2", "intersect", "intersect_line_default", "p", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "__name", "intersect_polygon_default", "intersect_default", "intersect_node_default", "intersect_circle_default", "intersect_ellipse_default", "intersect_polygon_default", "intersect_rect_default", "drawRect", "__name", "parent", "node", "options", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "totalWidth", "totalHeight", "x", "y", "rect", "rx", "ry", "cssStyles", "rc", "at", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "updateNodeBounds", "point", "intersect_default", "state", "__name", "parent", "node", "drawRect", "roundedRect", "__name", "parent", "node", "options", "drawRect", "squareRect", "__name", "parent", "node", "options", "drawRect", "stateStart", "__name", "parent", "node", "themeVariables", "getConfig", "lineColor", "shapeSvg", "circle", "roughNode", "at", "solidStateFill", "updateNodeBounds", "point", "intersect_default", "stateEnd", "__name", "parent", "node", "themeVariables", "getConfig", "lineColor", "shapeSvg", "circle", "innerCircle", "rc", "at", "roughNode", "solidStateFill", "roughInnerNode", "updateNodeBounds", "point", "intersect_default", "forkJoin", "__name", "parent", "node", "dir", "themeVariables", "getConfig", "lineColor", "shapeSvg", "width", "height", "x", "y", "shape", "roughNode", "at", "solidStateFill", "updateNodeBounds", "nodeHeight", "nodeWidth", "nodePadding", "point", "intersect_default", "choice", "__name", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "themeVariables", "getConfig", "lineColor", "shapeSvg", "s", "points", "rc", "at", "pointArr", "d", "roughNode", "solidStateFill", "point", "intersect_default", "note", "__name", "parent", "node", "themeVariables", "handDrawnSeed", "getConfig", "noteBorderColor", "noteBkgColor", "shapeSvg", "bbox", "labelHelper", "log", "cssStyles", "rect", "totalWidth", "totalHeight", "x", "y", "roughNode", "at", "updateNodeBounds", "point", "intersect_default", "stadium", "__name", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "h", "w", "rect", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "createRoundedRectPathD", "roughNode", "updateNodeBounds", "point", "intersect_default", "rectWithTitle", "__name", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "classes", "shapeSvg", "g", "label", "description", "title", "text", "createLabel_default", "bbox", "evaluate", "getConfig", "div", "dv", "select_default", "log", "textRows", "titleBox", "descr", "halfPadding", "totalWidth", "totalHeight", "x", "y", "rect", "innerLine", "rc", "at", "options", "userNodeOverrides", "roughNode", "createRoundedRectPathD", "roughLine", "updateNodeBounds", "point", "intersect_default", "insertPolygonShape", "parent", "w", "h", "points", "d", "__name", "subroutine", "__name", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "halfPadding", "w", "h", "x", "y", "points", "rc", "at", "options", "userNodeOverrides", "roughNode", "l1", "l2", "rect", "cssStyles", "updateNodeBounds", "el", "insertPolygonShape", "point", "intersect_default", "createCylinderPathD", "__name", "x", "y", "width", "height", "rx", "ry", "createOuterCylinderPathD", "createInnerCylinderPathD", "cylinder", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "cssStyles", "rc", "at", "outerPathData", "innerPathData", "outerNode", "userNodeOverrides", "innerLine", "pathData", "updateNodeBounds", "point", "pos", "intersect_default", "circle", "__name", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "labelHelper", "getNodeClasses", "radius", "circleElem", "cssStyles", "rc", "at", "options", "userNodeOverrides", "roughNode", "updateNodeBounds", "point", "log", "intersect_default", "doublecircle", "__name", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "halfPadding", "labelHelper", "getNodeClasses", "outerRadius", "innerRadius", "circleGroup", "cssStyles", "rc", "at", "outerOptions", "userNodeOverrides", "innerOptions", "outerRoughNode", "innerRoughNode", "outerCircle", "innerCircle", "updateNodeBounds", "point", "log", "intersect_default", "createPolygonPathD", "__name", "x", "y", "width", "height", "rect_left_inv_arrow", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "createDecisionBoxPathD", "__name", "x", "y", "size", "question", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "s", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "log", "intersect_default", "createHexagonPathD", "__name", "x", "y", "width", "height", "m", "hexagon", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "f", "h", "w", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "createLeanRightPathD", "__name", "x", "y", "width", "height", "lean_right", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "createLeanLeftPathD", "__name", "x", "y", "width", "height", "lean_left", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "createTrapezoidPathD", "__name", "x", "y", "width", "height", "trapezoid", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "createInvertedTrapezoidPathD", "__name", "x", "y", "width", "height", "inv_trapezoid", "parent", "node", "labelStyles", "nodeStyles", "styles2String", "shapeSvg", "bbox", "labelHelper", "getNodeClasses", "w", "h", "points", "polygon", "cssStyles", "rc", "at", "options", "userNodeOverrides", "pathData", "roughNode", "insertPolygonShape", "updateNodeBounds", "point", "intersect_default", "labelRect", "__name", "parent", "node", "shapeSvg", "labelHelper", "rect", "updateNodeBounds", "point", "intersect_default", "shapes", "state", "stateStart", "stateEnd", "forkJoin", "choice", "note", "roundedRect", "rectWithTitle", "squareRect", "stadium", "subroutine", "cylinder", "circle", "doublecircle", "rect_left_inv_arrow", "question", "hexagon", "lean_right", "lean_left", "trapezoid", "inv_trapezoid", "labelRect", "nodeElems", "insertNode", "__name", "elem", "node", "dir", "newEl", "el", "target", "getConfig", "setNodeElem", "clear", "positionNode", "log", "padding", "diff"]
}