8 lines
435 KiB
Plaintext
8 lines
435 KiB
Plaintext
{
|
|
"version": 3,
|
|
"sources": ["../../node_modules/roughjs/bundled/rough.esm.js", "../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-JZLCHNYA.mjs"],
|
|
"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;e<t.length-1;e++){const s=t[e],n=t[e+1];if(s[1]!==n[1]){const t=Math.min(s[1],n[1]);h.push({ymin:t,ymax:Math.max(s[1],n[1]),x:t===s[1]?s[0]:n[0],islope:(n[0]-s[0])/(n[1]-s[1])})}}if(h.sort(((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.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;e<h.length&&!(h[e].ymin>i);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;t+=2){const e=t+1;if(e>=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<c;t++){const a=p+l+t*n,r=u-h+2*Math.random()*h,i=a-h+2*Math.random()*h,c=this.helper.ellipse(r,i,o,o,e);s.push(...c.ops)}}return{type:\"fillSketch\",ops:s}}}class c{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.dashedLine(s,e)}}dashedLine(t,e){const s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach((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<r;t++){const a=t*(s+n),h=a+s,r=[c[0]+a*Math.cos(u)+i*Math.cos(u),c[1]+a*Math.sin(u)+i*Math.sin(u)],l=[c[0]+h*Math.cos(u)+i*Math.cos(u),c[1]+h*Math.sin(u)+i*Math.sin(u)];o.push(...this.helper.doubleLineOps(r[0],r[1],l[0],l[1],e))}})),o}}class l{constructor(t){this.helper=t}fillPolygons(t,e){const s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,o=e.zigzagOffset<0?s:e.zigzagOffset,a=n(t,e=Object.assign({},e,{hachureGap:s+o}));return{type:\"fillSketch\",ops:this.zigzagLines(a,o,e)}}zigzagLines(t,e,s){const n=[];return t.forEach((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;t<h;t++){const o=2*t*e,a=2*(t+1)*e,h=Math.sqrt(2*Math.pow(e,2)),i=[r[0]+o*Math.cos(c),r[1]+o*Math.sin(c)],l=[r[0]+a*Math.cos(c),r[1]+a*Math.sin(c)],u=[i[0]+h*Math.cos(c+Math.PI/4),i[1]+h*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(i[0],i[1],u[0],u[1],s),...this.helper.doubleLineOps(u[0],u[1],l[0],l[1],s))}})),n}}const u={};class p{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const f=0,d=1,g=2,M={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function k(t,e){return t.type===e}function b(t){const e=[],s=function(t){const e=new Array;for(;\"\"!==t;)if(t.match(/^([ \\t\\r\\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:f,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:d,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:g,text:\"\"},e}(t);let n=\"BOD\",o=0,a=s[o];for(;!k(a,g);){let h=0;const r=[];if(\"BOD\"===n){if(\"M\"!==a.text&&\"m\"!==a.text)return b(\"M0,0\"+t);o++,h=M[a.text],n=a.text}else k(a,d)?h=M[n]:(o++,h=M[a.text],n=a.text);if(!(o+h<s.length))throw new Error(\"Path data ended short\");for(let t=o;t<o+h;t++){const e=s[t];if(!k(e,d))throw new Error(\"Param not a number: \"+n+\",\"+e.text);r[r.length]=+e.text}if(\"number\"!=typeof M[n])throw new Error(\"Bad segment: \"+n);{const t={key:n,data:r};e.push(t),o+=h,a=s[o],\"M\"===n&&(n=\"L\"),\"m\"===n&&(n=\"l\")}}return e}function y(t){let e=0,s=0,n=0,o=0;const a=[];for(const{key:h,data:r}of t)switch(h){case\"M\":a.push({key:\"M\",data:[...r]}),[e,s]=r,[n,o]=r;break;case\"m\":e+=r[0],s+=r[1],a.push({key:\"M\",data:[e,s]}),n=e,o=s;break;case\"L\":a.push({key:\"L\",data:[...r]}),[e,s]=r;break;case\"l\":e+=r[0],s+=r[1],a.push({key:\"L\",data:[e,s]});break;case\"C\":a.push({key:\"C\",data:[...r]}),e=r[4],s=r[5];break;case\"c\":{const t=r.map(((t,n)=>n%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))),t<g&&(f=Math.PI-f),s<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),i&&f>d&&(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;e<p.length;e+=3){const s=w(p[e][0],p[e][1],l),n=w(p[e+1][0],p[e+1][1],l),o=w(p[e+2][0],p[e+2][1],l);t.push([s[0],s[1],n[0],n[1],o[0],o[1]])}return t}}const P={randOffset:function(t,e){return G(t,e)},randOffsetWithRange:function(t,e,s){return E(t,e,s)},ellipse:function(t,e,s,n,o){const a=T(s,n,o);return D(t,e,o,a).opset},doubleLineOps:function(t,e,s,n,o){return $(t,e,s,n,o,!0)}};function v(t,e,s,n,o){return{type:\"path\",ops:$(t,e,s,n,o)}}function S(t,e,s){const n=(t||[]).length;if(n>2){const o=[];for(let e=0;e<n-1;e++)o.push(...$(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&o.push(...$(t[n-1][0],t[n-1][1],t[0][0],t[0][1],s)),{type:\"path\",ops:o}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:\"path\",ops:[]}}function O(t,e,s,n,o){return function(t,e){return S(t,!0,e)}([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],o)}function L(t,e){if(t.length){const s=\"number\"==typeof t[0][0]?[t]:t,n=j(s[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:j(s[0],1.5*(1+.22*e.roughness),z(e));for(let t=1;t<s.length;t++){const a=s[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),z(e));for(const e of t)\"move\"!==e.op&&n.push(e);for(const t of s)\"move\"!==t.op&&o.push(t)}}return{type:\"path\",ops:n.concat(o)}}return{type:\"path\",ops:[]}}function T(t,e,s){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/o;let h=Math.abs(t/2),r=Math.abs(e/2);const i=1-s.curveFitting;return h+=G(h*i,s),r+=G(r*i,s),{increment:a,rx:h,ry:r}}function D(t,e,s,n){const[o,a]=F(n.increment,t,e,n.rx,n.ry,1,n.increment*E(.1,E(.4,1,s),s),s);let h=q(o,null,s);if(!s.disableMultiStroke&&0!==s.roughness){const[o]=F(n.increment,t,e,n.rx,n.ry,1.5,0,s),a=q(o,null,s);h=h.concat(a)}return{estimatedPoints:a,opset:{type:\"path\",ops:h}}}function A(t,e,s,n,o,a,h,r,i){const c=t,l=e;let u=Math.abs(s/2),p=Math.abs(n/2);u+=G(.01*u,i),p+=G(.01*p,i);let f=o,d=a;for(;f<0;)f+=2*Math.PI,d+=2*Math.PI;d-f>2*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;a<o;a++)s.push({op:\"lineTo\",data:[n[a][0]+G(t,e),n[a][1]+G(t,e)]})}}return{type:\"fillPath\",ops:s}}function C(t,e){return function(t,e){let s=t.fillStyle||\"hachure\";if(!u[s])switch(s){case\"zigzag\":u[s]||(u[s]=new h(e));break;case\"cross-hatch\":u[s]||(u[s]=new r(e));break;case\"dots\":u[s]||(u[s]=new i(e));break;case\"dashed\":u[s]||(u[s]=new c(e));break;case\"zigzag-line\":u[s]||(u[s]=new l(e));break;default:s=\"hachure\",u[s]||(u[s]=new o(e))}return u[s]}(e,P).fillPolygons(t,e)}function z(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function W(t){return t.randomizer||(t.randomizer=new p(t.seed||0)),t.randomizer.next()}function E(t,e,s,n=1){return s.roughness*n*(W(s)*(e-t)+t)}function G(t,e,s=1){return E(-t,t,e,s)}function $(t,e,s,n,o,a=!1){const h=a?o.disableMultiStrokeFill:o.disableMultiStroke,r=R(t,e,s,n,o,!0,!1);if(h)return r;const i=R(t,e,s,n,o,!0,!0);return r.concat(i)}function R(t,e,s,n,o,a,h){const r=Math.pow(t-s,2)+Math.pow(e-n,2),i=Math.sqrt(r);let c=1;c=i<200?1:i>500?.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;o<t.length;o++)n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]),o===t.length-1&&n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]);return q(n,null,s)}function q(t,e,s){const n=t.length,o=[];if(n>3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(h*t[e+1][0]-h*t[e-1][0])/6,s[1]+(h*t[e+1][1]-h*t[e-1][1])/6],a[2]=[t[e+1][0]+(h*t[e][0]-h*t[e+2][0])/6,t[e+1][1]+(h*t[e][1]-h*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],o.push({op:\"bcurveTo\",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=s.maxRandomnessOffset;o.push({op:\"lineTo\",data:[e[0]+G(t,s),e[1]+G(t,s)]})}}else 3===n?(o.push({op:\"move\",data:[t[1][0],t[1][1]]}),o.push({op:\"bcurveTo\",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&o.push(...R(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return o}function F(t,e,s,n,o,a,h,r){const i=[],c=[];if(0===r.roughness){t/=4,c.push([e+n*Math.cos(-t),s+o*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),s+o*Math.sin(a)];i.push(t),c.push(t)}c.push([e+n*Math.cos(0),s+o*Math.sin(0)]),c.push([e+n*Math.cos(t),s+o*Math.sin(t)])}else{const l=G(.5,r)-Math.PI/2;c.push([G(a,r)+e+.9*n*Math.cos(l-t),G(a,r)+s+.9*o*Math.sin(l-t)]);const u=2*Math.PI+l-.01;for(let h=l;h<u;h+=t){const t=[G(a,r)+e+n*Math.cos(h),G(a,r)+s+o*Math.sin(h)];i.push(t),c.push(t)}c.push([G(a,r)+e+n*Math.cos(l+2*Math.PI+.5*h),G(a,r)+s+o*Math.sin(l+2*Math.PI+.5*h)]),c.push([G(a,r)+e+.98*n*Math.cos(l+h),G(a,r)+s+.98*o*Math.sin(l+h)]),c.push([G(a,r)+e+.9*n*Math.cos(l+.5*h),G(a,r)+s+.9*o*Math.sin(l+.5*h)])}return[c,i]}function V(t,e,s,n,o,a,h,r,i){const c=a+G(.1,i),l=[];l.push([G(r,i)+e+.9*n*Math.cos(c-t),G(r,i)+s+.9*o*Math.sin(c-t)]);for(let a=c;a<=h;a+=t)l.push([G(r,i)+e+n*Math.cos(a),G(r,i)+s+o*Math.sin(a)]);return l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),q(l,null,i)}function Z(t,e,s,n,o,a,h,r){const i=[],c=[r.maxRandomnessOffset||1,(r.maxRandomnessOffset||1)+.3];let l=[0,0];const u=r.disableMultiStroke?1:2,p=r.preserveVertices;for(let f=0;f<u;f++)0===f?i.push({op:\"move\",data:[h[0],h[1]]}):i.push({op:\"move\",data:[h[0]+(p?0:G(c[0],r)),h[1]+(p?0:G(c[0],r))]}),l=p?[o,a]:[o+G(c[f],r),a+G(c[f],r)],i.push({op:\"bcurveTo\",data:[t+G(c[f],r),e+G(c[f],r),s+G(c[f],r),n+G(c[f],r),l[0],l[1]]});return i}function Q(t){return[...t]}function H(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(Q(t[0]),Q(t[1]),Q(t[2]),Q(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);const o=[],a=1-e;n.push(Q(s[0]));for(let t=1;t+2<s.length;t++){const e=s[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],o[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],o[3]=[s[t+1][0],s[t+1][1]],n.push(o[1],o[2],o[3])}}return n}function N(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function B(t,e,s){const n=N(e,s);if(0===n)return N(t,e);let o=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/n;return o=Math.max(0,Math.min(1,o)),N(t,J(e,s,o))}function J(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function K(t,e,s,n){const o=n||[];if(function(t,e){const s=t[e+0],n=t[e+1],o=t[e+2],a=t[e+3];let h=3*n[0]-2*s[0]-a[0];h*=h;let r=3*n[1]-2*s[1]-a[1];r*=r;let i=3*o[0]-2*a[0]-s[0];i*=i;let c=3*o[1]-2*a[1]-s[1];return c*=c,h<i&&(h=i),r<c&&(r=c),h+r}(t,e)<s){const s=t[e+0];if(o.length){(a=o[o.length-1],h=s,Math.sqrt(N(a,h)))>1&&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;n<s-1;++n){const e=B(t[n],h,r);e>i&&(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;s<o;s++){K(t,3*s,e,n)}return s&&s>0?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", "import {\n getSubGraphTitleMargins\n} from \"./chunk-CVBHYZKI.mjs\";\nimport {\n compileStyles,\n solidStateFill,\n styles2String,\n userNodeOverrides\n} from \"./chunk-ATLVNIR6.mjs\";\nimport {\n createText,\n getIconSVG\n} from \"./chunk-JA3XYJ7Z.mjs\";\nimport {\n calculateTextWidth,\n decodeEntities,\n handleUndefinedAttr,\n parseFontSize\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n common_default,\n defaultConfig_default,\n evaluate,\n getConfig,\n getConfig2,\n hasKatex,\n parseGenericTypes,\n renderKatexSanitized,\n sanitizeText,\n sanitizeText2\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/rendering-elements/shapes/util.ts\nimport { select } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig2()?.htmlLabels);\n if (!_classes) {\n cssClasses = \"node default\";\n } else {\n cssClasses = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", handleUndefinedAttr(node.labelStyle));\n let label;\n if (node.label === void 0) {\n label = \"\";\n } else {\n label = typeof node.label === \"string\" ? node.label : node.label[0];\n }\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: node.width || getConfig2().flowchart?.wrappingWidth,\n // @ts-expect-error -- This is currently not used. Should this be `classes` instead?\n cssClasses: \"markdown-node-label\",\n style: node.labelStyle,\n addSvgBackground: !!node.icon || !!node.img\n });\n let bbox = text2.getBBox();\n const halfPadding = (node?.padding ?? 0) / 2;\n if (useHtmlLabels) {\n const div = text2.children[0];\n const dv = select(text2);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = label.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n const width = parsedBodyFontSize * 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 __name(setupImage, \"setupImage\");\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 bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\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}, \"labelHelper\");\nvar insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {\n const useHtmlLabels = options.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels);\n const labelEl = parent.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", options.labelStyle || \"\");\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: options.width || getConfig2()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img\n });\n let bbox = text2.getBBox();\n const halfPadding = options.padding / 2;\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div = text2.children[0];\n const dv = select(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\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 (options.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n}, \"insertLabel\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nvar getNodeClasses = /* @__PURE__ */ __name((node, extra) => (node.look === \"handDrawn\" ? \"rough-node\" : \"node\") + \" \" + node.cssClasses + \" \" + (extra || \"\"), \"getNodeClasses\");\nfunction createPathFromPoints(points) {\n const pointStrings = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`);\n pointStrings.push(\"Z\");\n return pointStrings.join(\" \");\n}\n__name(createPathFromPoints, \"createPathFromPoints\");\nfunction generateFullSineWavePoints(x1, y1, x2, y2, amplitude, numCycles) {\n const points = [];\n const steps = 50;\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n const frequency = 2 * Math.PI / cycleLength;\n const midY = y1 + deltaY / 2;\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n points.push({ x, y });\n }\n return points;\n}\n__name(generateFullSineWavePoints, \"generateFullSineWavePoints\");\nfunction generateCirclePoints(centerX, centerY, radius, numPoints, startAngle, endAngle) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints, \"generateCirclePoints\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select3 } from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point) => {\n var x = node.x;\n var y = node.y;\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 var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/rendering-util/rendering-elements/createLabel.js\nimport { select as select2 } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nasync function addHtmlLabel(node) {\n const fo = select2(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const config = getConfig2();\n let label = node.label;\n if (node.label && hasKatex(node.label)) {\n label = await renderKatexSanitized(node.label.replace(common_default.lineBreakRegex, \"\\n\"), config);\n }\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n const labelSpan = '<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + // codeql [js/html-constructed-from-input] : false positive\n \">\" + label + \"</span>\";\n div.html(sanitizeText(labelSpan, config));\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"padding-right\", \"1px\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n labelStyle: style ? style.replace(\"fill:\", \"color:\") : style\n };\n let vertexNode = await addHtmlLabel(node);\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|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\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}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n \"M\",\n x + radius,\n y,\n // Move to the first point\n \"H\",\n x + totalWidth - radius,\n // 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,\n // Draw arc to the right top corner\n \"V\",\n y + totalHeight - radius,\n // 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,\n // Draw arc to the right bottom corner\n \"H\",\n x + radius,\n // 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,\n // Draw arc to the left bottom corner\n \"V\",\n y + radius,\n // 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,\n // Draw arc to the left top corner\n \"Z\"\n // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\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 const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\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 rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).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 if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n let innerRect = shapeSvg.append(\"rect\");\n const text2 = label.node().appendChild(await createLabel_default(node.label, node.labelStyle, void 0, true));\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = (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 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 let rect2;\n if (node.look === \"handDrawn\") {\n const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = node.rx || node.ry ? 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 }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n rect2 = 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 rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"outer\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n }\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\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 const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\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: 4,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).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 if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const padding = 0 * node.padding;\n const width = node.width + padding;\n node.diff = -node.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 let rect2;\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 rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"divider\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n }\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = 0;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(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}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/rendering-util/rendering-elements/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\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 return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/rendering-util/rendering-elements/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n {\n const a1 = p2.y - p1.y;\n const b1 = p1.x - p2.x;\n const c1 = p2.x * p1.y - p1.x * p2.y;\n const r3 = a1 * q1.x + b1 * q1.y + c1;\n const r4 = a1 * q2.x + b1 * q2.y + c1;\n const epsilon = 1e-6;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n const a2 = q2.y - q1.y;\n const b2 = q1.x - q2.x;\n const c2 = q2.x * q1.y - q1.x * q2.y;\n const r1 = a2 * p1.x + b2 * p1.y + c2;\n const r2 = a2 * p2.x + b2 * p2.y + c2;\n if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {\n return;\n }\n const denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n const offset = Math.abs(denom / 2);\n let num = b1 * c2 - b2 * c1;\n const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n }\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n let intersections = [];\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 let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\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 = intersect_line_default(\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 if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\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 let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = \"anchor\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const radius = 1;\n const { cssStyles } = node;\n const rc = rough2.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nasync function bowTieRect(parent, 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 + 20;\n const h = bbox.height + node.padding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const { cssStyles } = node;\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n ];\n const rc = rough3.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n bowTieRectShape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n updateNodeBounds(node, bowTieRectShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const padding = 12;\n const w = bbox.width + node.padding + padding;\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + padding, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + padding },\n { x: left + padding, y: top }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough4.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").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 if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const s = Math.max(28, node.width ?? 0);\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 const rc = rough5.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const padding = options?.padding ?? halfPadding;\n const radius = bbox.width / 2 + padding;\n let circleElem;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough6.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options2);\n circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleElem);\n node.calcIntersect = function(bounds, point) {\n const radius2 = bounds.width / 2;\n return intersect_default.circle(bounds, radius2, point);\n };\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n const xAxis45 = Math.cos(Math.PI / 4);\n const yAxis45 = Math.sin(Math.PI / 4);\n const lineLength = r * 2;\n const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n const rc = rough7.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n crossedCircle2.insert(() => lineNode);\n if (cssStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, crossedCircle2);\n node.intersect = function(point) {\n log.info(\"crossedCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius }\n ];\n const rc = rough8.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n curlyBraceLeftShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceLeftShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius }\n ];\n const rc = rough9.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n curlyBraceRightShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceRightShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const leftCurlyBracePoints = [\n ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rightCurlyBracePoints = [\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rc = rough10.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n curlyBracesShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBracesShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 80, minHeight = 20;\n const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough11.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const totalWidth = w, totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\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}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\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}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function cylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + node.padding, node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough12.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 cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\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 pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough13 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const rectOffset = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 2;\n const { cssStyles } = node;\n const rc = rough13.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pts = [\n { x, y: y + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset }\n ];\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n const polygon = shapeSvg.insert(() => poly, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough14 from \"roughjs\";\nasync function doublecircle(parent, node) {\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 let circleGroup;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough14.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\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 circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\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 outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleGroup);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n return intersect_default.circle(node, outerRadius, point);\n };\n return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough15 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n const rc = rough15.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, filledCircle2);\n node.intersect = function(point) {\n log.info(\"filledCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough16 from \"roughjs\";\nasync function flippedTriangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 }\n ];\n const { cssStyles } = node;\n const rc = rough16.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, flippedTriangle2);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough17 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n if (dir === \"LR\") {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n const x = -1 * width / 2;\n const y = -1 * height / 2;\n const rc = rough17.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.rectangle(x, y, width, height, options);\n const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, shape);\n const padding = state2?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough18 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 80, minHeight = 50;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough18.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { radius, point });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough19 from \"roughjs\";\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + (node.padding ?? 0);\n const w = bbox.width + (node.padding ?? 0) * 2.5;\n const { cssStyles } = node;\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let halfWidth = w / 2;\n const m = halfWidth / 6;\n halfWidth = halfWidth + m;\n const halfHeight = h / 2;\n const fixedLength = halfHeight / 2;\n const deducedWidth = halfWidth - fixedLength;\n const points = [\n { x: -deducedWidth, y: -halfHeight },\n { x: 0, y: -halfHeight },\n { x: deducedWidth, y: -halfHeight },\n { x: halfWidth, y: 0 },\n { x: deducedWidth, y: halfHeight },\n { x: 0, y: halfHeight },\n { x: -deducedWidth, y: halfHeight },\n { x: -halfWidth, y: 0 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough20 from \"roughjs\";\nasync function hourglass(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough20.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { points });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough21 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const topLabel = node.pos === \"t\";\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough21.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const iconNode = rc.rectangle(x, y, width, height, options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(icon, \"icon\");\n\n// src/rendering-util/rendering-elements/shapes/iconCircle.ts\nimport rough22 from \"roughjs\";\nasync function iconCircle(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const padding = 20;\n const labelPadding = node.label ? 8 : 0;\n const topLabel = node.pos === \"t\";\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const rc = rough22.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconElem = shapeSvg.append(\"g\");\n if (node.icon) {\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n }\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n const iconNode = rc.circle(0, 0, diameter, options);\n const outerWidth = Math.max(diameter, bbox.width);\n const outerHeight = diameter + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconCircle, \"iconCircle\");\n\n// src/rendering-util/rendering-elements/shapes/iconRounded.ts\nimport rough23 from \"roughjs\";\nasync function iconRounded(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough23.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\").attr(\"class\", \"icon-shape2\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconRounded, \"iconRounded\");\n\n// src/rendering-util/rendering-elements/shapes/iconSquare.ts\nimport rough24 from \"roughjs\";\nasync function iconSquare(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough24.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconSquare, \"iconSquare\");\n\n// src/rendering-util/rendering-elements/shapes/imageSquare.ts\nimport rough25 from \"roughjs\";\nasync function imageSquare(parent, node, { config: { flowchart } }) {\n const img = new Image();\n img.src = node?.img ?? \"\";\n await img.decode();\n const imageNaturalWidth = Number(img.naturalWidth.toString().replace(\"px\", \"\"));\n const imageNaturalHeight = Number(img.naturalHeight.toString().replace(\"px\", \"\"));\n node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const defaultWidth = flowchart?.wrappingWidth;\n node.defaultWidth = flowchart?.wrappingWidth;\n const imageRawWidth = Math.max(\n node.label ? defaultWidth ?? 0 : 0,\n node?.assetWidth ?? imageNaturalWidth\n );\n const imageWidth = node.constraint === \"on\" ? node?.assetHeight ? node.assetHeight * node.imageAspectRatio : imageRawWidth : imageRawWidth;\n const imageHeight = node.constraint === \"on\" ? imageWidth / node.imageAspectRatio : node?.assetHeight ?? imageNaturalHeight;\n node.width = Math.max(imageWidth, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"image-shape default\");\n const topLabel = node.pos === \"t\";\n const x = -imageWidth / 2;\n const y = -imageHeight / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough25.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n const outerWidth = Math.max(imageWidth, bbox.width);\n const outerHeight = imageHeight + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"none\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => imageNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.img) {\n const image = shapeSvg.append(\"image\");\n image.attr(\"href\", node.img);\n image.attr(\"width\", imageWidth);\n image.attr(\"height\", imageHeight);\n image.attr(\"preserveAspectRatio\", \"none\");\n image.attr(\n \"transform\",\n `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n );\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2 : imageHeight / 2 - bbox.height / 2 + labelPadding / 2})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(imageSquare, \"imageSquare\");\n\n// src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts\nimport rough26 from \"roughjs\";\nasync function inv_trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: -3 * h / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough26.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").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 if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(inv_trapezoid, \"inv_trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/drawRect.ts\nimport rough27 from \"roughjs\";\nasync function drawRect(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\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 let rect2;\n let { rx, ry } = node;\n const { cssStyles } = node;\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n if (node.look === \"handDrawn\") {\n const rc = rough27.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", handleUndefinedAttr(rx)).attr(\"ry\", handleUndefinedAttr(ry)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n }\n updateNodeBounds(node, rect2);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(drawRect, \"drawRect\");\n\n// src/rendering-util/rendering-elements/shapes/labelRect.ts\nasync function labelRect(parent, node) {\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"label\");\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(labelRect, \"labelRect\");\n\n// src/rendering-util/rendering-elements/shapes/leanLeft.ts\nimport rough28 from \"roughjs\";\nasync function lean_left(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: -(3 * h) / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough28.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").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 if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_left, \"lean_left\");\n\n// src/rendering-util/rendering-elements/shapes/leanRight.ts\nimport rough29 from \"roughjs\";\nasync function lean_right(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough29.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").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 if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_right, \"lean_right\");\n\n// src/rendering-util/rendering-elements/shapes/lightningBolt.ts\nimport rough30 from \"roughjs\";\nfunction lightningBolt(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const width = Math.max(35, node?.width ?? 0);\n const height = Math.max(35, node?.height ?? 0);\n const gap = 7;\n const points = [\n { x: width, y: 0 },\n { x: 0, y: height + gap / 2 },\n { x: width - 2 * gap, y: height + gap / 2 },\n { x: 0, y: 2 * height },\n { x: width, y: height - gap / 2 },\n { x: 2 * gap, y: height - gap / 2 }\n ];\n const rc = rough30.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const linePath = createPathFromPoints(points);\n const lineNode = rc.path(linePath, options);\n const lightningBolt2 = shapeSvg.insert(() => lineNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n lightningBolt2.attr(\"transform\", `translate(-${width / 2},${-height})`);\n updateNodeBounds(node, lightningBolt2);\n node.intersect = function(point) {\n log.info(\"lightningBolt intersect\", node, point);\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(lightningBolt, \"lightningBolt\");\n\n// src/rendering-util/rendering-elements/shapes/linedCylinder.ts\nimport rough31 from \"roughjs\";\nvar createCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\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 `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\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 `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function linedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + (node.padding ?? 0), node.height ?? 0);\n const outerOffset = h * 0.1;\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough31.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n const innerPathData = createInnerCylinderPathD2(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, options);\n const innerLineEl = shapeSvg.insert(() => innerLine, \":first-child\");\n innerLineEl.attr(\"class\", \"line\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\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 pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(linedCylinder, \"linedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts\nimport rough32 from \"roughjs\";\nasync function linedWaveEdgedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough32.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2, y: -finalH / 2 },\n { x: -w / 2, y: finalH / 2 * 1.1 },\n { x: -w / 2, y: -finalH / 2 }\n ];\n const poly = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const waveEdgeRect = shapeSvg.insert(() => poly, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) + w / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(linedWaveEdgedRect, \"linedWaveEdgedRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiRect.ts\nimport rough33 from \"roughjs\";\nasync function multiRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough33.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y },\n { x, y }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, { ...options, fill: \"none\" });\n const multiRect2 = shapeSvg.insert(() => innerNode, \":first-child\");\n multiRect2.insert(() => outerNode, \":first-child\");\n multiRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, multiRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiRect, \"multiRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts\nimport rough34 from \"roughjs\";\nasync function multiWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset = 5;\n const { cssStyles } = node;\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset,\n y + finalH + rectOffset,\n x + w - rectOffset,\n y + finalH + rectOffset,\n waveAmplitude,\n 0.8\n );\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + finalH + rectOffset },\n ...wavePoints,\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y },\n { x, y }\n ];\n const rc = rough34.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, options);\n const shape = shapeSvg.insert(() => outerNode, \":first-child\");\n shape.insert(() => innerNode);\n shape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n shape.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, shape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiWaveEdgedRectangle, \"multiWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/note.ts\nimport rough35 from \"roughjs\";\nasync function note(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart?.htmlLabels !== false;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n const rc = rough35.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n fill: themeVariables.noteBkgColor,\n stroke: themeVariables.noteBorderColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => noteShapeNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(note, \"note\");\n\n// src/rendering-util/rendering-elements/shapes/question.ts\nimport rough36 from \"roughjs\";\nvar createDecisionBoxPathD = /* @__PURE__ */ __name((x, y, size) => {\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}, \"createDecisionBoxPathD\");\nasync function question(parent, 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 h = bbox.height + node.padding;\n const s = w + h;\n const adjustment = 0.5;\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 let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough36.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n polygon.attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.calcIntersect = function(bounds, point) {\n const s2 = bounds.width;\n const points2 = [\n { x: s2 / 2, y: 0 },\n { x: s2, y: -s2 / 2 },\n { x: s2 / 2, y: -s2 },\n { x: 0, y: -s2 / 2 }\n ];\n const res = intersect_default.polygon(bounds, points2, point);\n return { x: res.x - 0.5, y: res.y - 0.5 };\n };\n node.intersect = function(point) {\n return this.calcIntersect(node, point);\n };\n return shapeSvg;\n}\n__name(question, \"question\");\n\n// src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts\nimport rough37 from \"roughjs\";\nasync function rect_left_inv_arrow(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const notch = y / 2;\n const points = [\n { x: x + notch, y },\n { x, y: 0 },\n { x: x + notch, y: -y },\n { x: -x, y: -y },\n { x: -x, y }\n ];\n const { cssStyles } = node;\n const rc = rough37.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-notch / 2},0)`);\n label.attr(\n \"transform\",\n `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(rect_left_inv_arrow, \"rect_left_inv_arrow\");\n\n// src/rendering-util/rendering-elements/shapes/rectWithTitle.ts\nimport { select as select4 } from \"d3\";\nimport rough38 from \"roughjs\";\nasync function rectWithTitle(parent, 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 const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const g = shapeSvg.insert(\"g\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", nodeStyles);\n const description = node.description;\n const title = node.label;\n const text2 = label.node().appendChild(await createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div2 = text2.children[0];\n const dv2 = select4(text2);\n bbox = div2.getBoundingClientRect();\n dv2.attr(\"width\", bbox.width);\n dv2.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", description);\n const textRows = description || [];\n const titleBox = text2.getBBox();\n const descr = label.node().appendChild(\n await createLabel_default(\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n const halfPadding = (node.padding || 0) / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text2).attr(\n \"transform\",\n \"translate( \" + (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\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 rect2;\n let innerLine;\n if (node.look === \"handDrawn\") {\n const rc = rough38.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 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 innerLine = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughLine;\n }, \":first-child\");\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n } else {\n rect2 = g.insert(\"rect\", \":first-child\");\n innerLine = g.insert(\"line\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nimport rough39 from \"roughjs\";\nfunction generateArcPoints2(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints2, \"generateArcPoints\");\nasync function roundedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node?.padding ?? 0;\n const labelPaddingY = node?.padding ?? 0;\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const radius = node.radius || 5;\n const taper = node.taper || 5;\n const { cssStyles } = node;\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.stroke) {\n options.stroke = node.stroke;\n }\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n // Top edge (left to right)\n { x: -w / 2 + taper, y: -h / 2 },\n // Top-left corner start (1)\n { x: w / 2 - taper, y: -h / 2 },\n // Top-right corner start (2)\n ...generateArcPoints2(w / 2 - taper, -h / 2, w / 2, -h / 2 + taper, radius, radius, true),\n // Top-left arc (2 to 3)\n // Right edge (top to bottom)\n { x: w / 2, y: -h / 2 + taper },\n // Top-right taper point (3)\n { x: w / 2, y: h / 2 - taper },\n // Bottom-right taper point (4)\n ...generateArcPoints2(w / 2, h / 2 - taper, w / 2 - taper, h / 2, radius, radius, true),\n // Top-left arc (4 to 5)\n // Bottom edge (right to left)\n { x: w / 2 - taper, y: h / 2 },\n // Bottom-right corner start (5)\n { x: -w / 2 + taper, y: h / 2 },\n // Bottom-left corner start (6)\n ...generateArcPoints2(-w / 2 + taper, h / 2, -w / 2, h / 2 - taper, radius, radius, true),\n // Top-left arc (4 to 5)\n // Left edge (bottom to top)\n { x: -w / 2, y: h / 2 - taper },\n // Bottom-left taper point (7)\n { x: -w / 2, y: -h / 2 + taper },\n // Top-left taper point (8)\n ...generateArcPoints2(-w / 2, -h / 2 + taper, -w / 2 + taper, -h / 2, radius, radius, true)\n // Top-left arc (4 to 5)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough40 from \"roughjs\";\nasync function shadedProcess(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = node?.padding ?? 0;\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const { cssStyles } = node;\n const rc = rough40.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x: x + w + 8, y },\n { x: x + w + 8, y: y + h },\n { x: x - 8, y: y + h },\n { x: x - 8, y },\n { x, y },\n { x, y: y + h }\n ];\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough41 from \"roughjs\";\nasync function slopedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough41.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n const options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: node.labelPaddingX ?? (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough42 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough42.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 + radius, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2 - radius, 0, radius, 50, 270, 450)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: \"flowchart-node\"\n };\n return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough43 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const rc = rough43.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.circle(0, 0, 14, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const roughInnerNode = rc.circle(0, 0, 5, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: \"solid\"\n });\n const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n circle2.insert(() => roughInnerNode);\n if (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough44 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let circle2;\n if (node.look === \"handDrawn\") {\n const rc = rough44.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough45 from \"roughjs\";\nasync function subroutine(parent, 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 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 if (node.look === \"handDrawn\") {\n const rc = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\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 shapeSvg.insert(() => l1, \":first-child\");\n shapeSvg.insert(() => l2, \":first-child\");\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n const { cssStyles } = node;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect2);\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 node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough46 from \"roughjs\";\nasync function taggedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const tagWidth = 0.2 * h;\n const tagHeight = 0.2 * h;\n const { cssStyles } = node;\n const rc = rough46.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h }\n ];\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n taggedRect2.insert(() => rectNode, \":first-child\");\n taggedRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, taggedRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough47 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough47.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n ];\n const x = -w / 2 + w / 2 * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.4 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.3,\n x + w - tagWidth,\n (y + h) * 1.5,\n -h * 0.03,\n 0.5\n )\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: \"solid\"\n });\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + node.padding, node?.width || 0);\n const totalHeight = Math.max(bbox.height + node.padding, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough48 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const labelPadding = node.look === \"neo\" ? halfPadding * 2 : halfPadding;\n const h = bbox.height + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = bbox.width + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough48.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n }\n cylinder2.attr(\"label-offset-x\", rx);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, cylinder2);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n let x = rx * rx * (1 - y * y / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n pos.x += x;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough49 from \"roughjs\";\nasync function trapezoid(parent, 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 h = bbox.height + node.padding;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough49.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").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 if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough50 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 60, minHeight = 20;\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough50.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 * 0.8, y: -h / 2 },\n { x: w / 2 * 0.8, y: -h / 2 },\n { x: w / 2, y: -h / 2 * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: -h / 2 * 0.6 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough51 from \"roughjs\";\nasync function triangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h }\n ];\n const { cssStyles } = node;\n const rc = rough51.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const minWidth = 70;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n const rc = rough52.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 }\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough53 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 100;\n const minHeight = 50;\n const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const aspectRatio = baseWidth / baseHeight;\n let w = baseWidth;\n let h = baseHeight;\n if (w > h * aspectRatio) {\n h = w / aspectRatio;\n } else {\n w = h * aspectRatio;\n }\n w = Math.max(w, minWidth);\n h = Math.max(h, minHeight);\n const waveAmplitude = Math.min(h * 0.2, h / 4);\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough53.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n ];\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n waveRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, waveRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough54 from \"roughjs\";\nasync function windowPane(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough54.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset }\n ];\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const no = rc.path(path, options);\n const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n windowPane2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, windowPane2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/erBox.ts\nimport rough55 from \"roughjs\";\nimport { select as select5 } from \"d3\";\nasync function erBox(parent, node) {\n const entityNode = node;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\n if (node.look === \"handDrawn\") {\n const { themeVariables: themeVariables2 } = getConfig();\n const { background } = themeVariables2;\n const backgroundNode = {\n ...node,\n id: node.id + \"-background\",\n look: \"default\",\n cssStyles: [\"stroke: none\", `fill: ${background}`]\n };\n await erBox(parent, backgroundNode);\n }\n const config = getConfig();\n node.useHtmlLabels = config.htmlLabels;\n let PADDING = config.er?.diagramPadding ?? 10;\n let TEXT_PADDING = config.er?.entityPadding ?? 6;\n const { cssStyles } = node;\n const { labelStyles, nodeStyles } = styles2String(node);\n if (entityNode.attributes.length === 0 && node.label) {\n const options2 = {\n rx: 0,\n ry: 0,\n labelPaddingX: PADDING,\n labelPaddingY: PADDING * 1.5,\n classes: \"\"\n };\n if (calculateTextWidth(node.label, config) + options2.labelPaddingX * 2 < config.er.minEntityWidth) {\n node.width = config.er.minEntityWidth;\n }\n const shapeSvg2 = await drawRect(parent, node, options2);\n if (!evaluate(config.htmlLabels)) {\n const textElement = shapeSvg2.select(\"text\");\n const bbox = textElement.node()?.getBBox();\n textElement.attr(\"transform\", `translate(${-bbox.width / 2}, 0)`);\n }\n return shapeSvg2;\n }\n if (!config.htmlLabels) {\n PADDING *= 1.25;\n TEXT_PADDING *= 1.25;\n }\n let cssClasses = getNodeClasses(node);\n if (!cssClasses) {\n cssClasses = \"node default\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const nameBBox = await addText(shapeSvg, node.label ?? \"\", config, 0, 0, [\"name\"], labelStyles);\n nameBBox.height += TEXT_PADDING;\n let yOffset = 0;\n const yOffsets = [];\n const rows = [];\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeysWidth = 0;\n let maxCommentWidth = 0;\n let keysPresent = true;\n let commentPresent = true;\n for (const attribute of entityNode.attributes) {\n const typeBBox = await addText(\n shapeSvg,\n attribute.type,\n config,\n 0,\n yOffset,\n [\"attribute-type\"],\n labelStyles\n );\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n const nameBBox2 = await addText(\n shapeSvg,\n attribute.name,\n config,\n 0,\n yOffset,\n [\"attribute-name\"],\n labelStyles\n );\n maxNameWidth = Math.max(maxNameWidth, nameBBox2.width + PADDING);\n const keysBBox = await addText(\n shapeSvg,\n attribute.keys.join(),\n config,\n 0,\n yOffset,\n [\"attribute-keys\"],\n labelStyles\n );\n maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n const commentBBox = await addText(\n shapeSvg,\n attribute.comment,\n config,\n 0,\n yOffset,\n [\"attribute-comment\"],\n labelStyles\n );\n maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n const rowHeight = Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING;\n rows.push({ yOffset, rowHeight });\n yOffset += rowHeight;\n }\n let totalWidthSections = 4;\n if (maxKeysWidth <= PADDING) {\n keysPresent = false;\n maxKeysWidth = 0;\n totalWidthSections--;\n }\n if (maxCommentWidth <= PADDING) {\n commentPresent = false;\n maxCommentWidth = 0;\n totalWidthSections--;\n }\n const shapeBBox = shapeSvg.node().getBBox();\n if (nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) > 0) {\n const difference = nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n maxTypeWidth += difference / totalWidthSections;\n maxNameWidth += difference / totalWidthSections;\n if (maxKeysWidth > 0) {\n maxKeysWidth += difference / totalWidthSections;\n }\n if (maxCommentWidth > 0) {\n maxCommentWidth += difference / totalWidthSections;\n }\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n const rc = rough55.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let totalShapeBBoxHeight = 0;\n if (rows.length > 0) {\n totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0);\n }\n const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0);\n const x = -w / 2;\n const y = -h / 2;\n shapeSvg.selectAll(\"g:not(:first-child)\").each((_, i, nodes) => {\n const text2 = select5(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n if (text2.attr(\"class\").includes(\"attribute-name\")) {\n translateX += maxTypeWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-keys\")) {\n translateX += maxTypeWidth + maxNameWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-comment\")) {\n translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n }\n }\n }\n text2.attr(\n \"transform\",\n `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n );\n });\n shapeSvg.select(\".name\").attr(\"transform\", \"translate(\" + -nameBBox.width / 2 + \", \" + (y + TEXT_PADDING / 2) + \")\");\n const roughRect = rc.rectangle(x, y, w, h, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\").attr(\"style\", cssStyles.join(\"\"));\n const { themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder } = themeVariables;\n yOffsets.push(0);\n for (const [i, row] of rows.entries()) {\n const contentRowIndex = i + 1;\n const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0;\n const roughRect2 = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, {\n ...options,\n fill: isEven ? rowEven : rowOdd,\n stroke: nodeBorder\n });\n shapeSvg.insert(() => roughRect2, \"g.label\").attr(\"style\", cssStyles.join(\"\")).attr(\"class\", `row-rect-${isEven ? \"even\" : \"odd\"}`);\n }\n let roughLine = rc.line(x, nameBBox.height + y, w + x, nameBBox.height + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n roughLine = rc.line(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n if (keysPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n if (commentPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n for (const yOffset2 of yOffsets) {\n roughLine = rc.line(\n x,\n nameBBox.height + y + yOffset2,\n w + x,\n nameBBox.height + y + yOffset2,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n if (nodeStyles && node.look !== \"handDrawn\") {\n const allStyle = nodeStyles.split(\";\");\n const strokeStyles = allStyle?.filter((e) => {\n return e.includes(\"stroke\");\n })?.map((s) => `${s}`).join(\"; \");\n shapeSvg.selectAll(\"path\").attr(\"style\", strokeStyles ?? \"\");\n shapeSvg.selectAll(\".row-rect-even path\").attr(\"style\", nodeStyles);\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(erBox, \"erBox\");\nasync function addText(shapeSvg, labelText, config, translateX = 0, translateY = 0, classes = [], style = \"\") {\n const label = shapeSvg.insert(\"g\").attr(\"class\", `label ${classes.join(\" \")}`).attr(\"transform\", `translate(${translateX}, ${translateY})`).attr(\"style\", style);\n if (labelText !== parseGenericTypes(labelText)) {\n labelText = parseGenericTypes(labelText);\n labelText = labelText.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n const text2 = label.node().appendChild(\n await createText(\n label,\n labelText,\n {\n width: calculateTextWidth(labelText, config) + 100,\n style,\n useHtmlLabels: config.htmlLabels\n },\n config\n )\n );\n if (labelText.includes(\"<\") || labelText.includes(\">\")) {\n let child = text2.children[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n while (child.childNodes[0]) {\n child = child.childNodes[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n }\n let bbox = text2.getBBox();\n if (evaluate(config.htmlLabels)) {\n const div = text2.children[0];\n div.style.textAlign = \"start\";\n const dv = select5(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n return bbox;\n}\n__name(addText, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select7 } from \"d3\";\nimport rough56 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select6 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText2(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n await addText2(labelGroup, node, 0, [\"font-weight: bolder\"]);\n const labelGroupBBox = labelGroup.node().getBBox();\n labelGroupHeight = labelGroupBBox.height;\n membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText2(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node().getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText2(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n let bbox = shapeSvg.node().getBBox();\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n }\n labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n bbox = shapeSvg.node().getBBox();\n membersGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node().getBBox();\n methodsGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n bbox = shapeSvg.node().getBBox();\n return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText2(parentGroup, node, yOffset, styles = []) {\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n const config = getConfig();\n let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n let textContent = \"\";\n if (\"text\" in node) {\n textContent = node.text;\n } else {\n textContent = node.label;\n }\n if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n textContent = textContent.substring(1);\n }\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n if (!useHtmlLabels) {\n if (styles.includes(\"font-weight: bolder\")) {\n select6(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n }\n numberOfLines = text2.children.length;\n const textChild = text2.children[0];\n if (text2.textContent === \"\" || text2.textContent.includes(\">\")) {\n textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\">\", \">\").replaceAll(\"<\", \"<\").trim();\n const preserveSpace = textContent[1] === \" \";\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n }\n }\n if (textChild.textContent === \"undefined\") {\n textChild.textContent = \"\";\n }\n bbox = text2.getBBox();\n } else {\n const div = text2.children[0];\n const dv = select6(text2);\n numberOfLines = div.innerHTML.split(\"<br>\").length;\n if (div.innerHTML.includes(\"</math>\")) {\n numberOfLines += div.innerHTML.split(\"<mrow>\").length - 1;\n }\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = textContent.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config.fontSize?.toString() ?? 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 __name(setupImage, \"setupImage\");\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 bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", \"translate(0,\" + (-bbox.height / (2 * numberOfLines) + yOffset) + \")\");\n return bbox.height;\n}\n__name(addText2, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nasync function classBox(parent, node) {\n const config = getConfig2();\n const PADDING = config.class.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n const classNode = node;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.cssStyles = classNode.styles || \"\";\n const styles = classNode.styles?.join(\";\") || nodeStyles || \"\";\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll(\"!important\", \"\").split(\";\");\n }\n const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config.class?.hideEmptyMembersBox;\n const rc = rough56.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const w = bbox.width;\n let h = bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n const x = -w / 2;\n const y = -h / 2;\n const roughRect = rc.rectangle(\n x - PADDING,\n y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0),\n w + 2 * PADDING,\n h + 2 * PADDING + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0),\n options\n );\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n const rectBBox = rect2.node().getBBox();\n shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n const text2 = select7(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n let newTranslateY = translateY + y + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0);\n if (!useHtmlLabels) {\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (text2.attr(\"class\").includes(\"label-group\") || text2.attr(\"class\").includes(\"annotation-group\")) {\n newTranslateX = -text2.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll(\"text\").each(function(_2, i2, nodes2) {\n if (window.getComputedStyle(nodes2[i2]).textAnchor === \"middle\") {\n newTranslateX = 0;\n }\n });\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY})`);\n });\n const annotationGroupHeight = shapeSvg.select(\".annotation-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight = shapeSvg.select(\".label-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight = shapeSvg.select(\".members-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + PADDING + GAP * 2,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (classNode.look !== \"handDrawn\") {\n shapeSvg.selectAll(\"path\").attr(\"style\", styles);\n }\n rect2.select(\":nth-child(2)\").attr(\"style\", styles);\n shapeSvg.selectAll(\".divider\").select(\"path\").attr(\"style\", styles);\n if (node.labelStyle) {\n shapeSvg.selectAll(\"span\").attr(\"style\", node.labelStyle);\n } else {\n shapeSvg.selectAll(\"span\").attr(\"style\", styles);\n }\n if (!useHtmlLabels) {\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n } else if (labelStyles) {\n const match2 = colorRegex.exec(labelStyles);\n if (match2) {\n const colorStyle = match2[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n }\n }\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(classBox, \"classBox\");\n\n// src/rendering-util/rendering-elements/shapes/requirementBox.ts\nimport rough57 from \"roughjs\";\nimport { select as select8 } from \"d3\";\nasync function requirementBox(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const requirementNode = node;\n const elementNode = node;\n const padding = 20;\n const gap = 20;\n const isRequirementNode = \"verifyMethod\" in node;\n const classes = getNodeClasses(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId ?? node.id);\n let typeHeight;\n if (isRequirementNode) {\n typeHeight = await addText3(\n shapeSvg,\n `<<${requirementNode.type}>>`,\n 0,\n node.labelStyle\n );\n } else {\n typeHeight = await addText3(shapeSvg, \"<<Element>>\", 0, node.labelStyle);\n }\n let accumulativeHeight = typeHeight;\n const nameHeight = await addText3(\n shapeSvg,\n requirementNode.name,\n accumulativeHeight,\n node.labelStyle + \"; font-weight: bold;\"\n );\n accumulativeHeight += nameHeight + gap;\n if (isRequirementNode) {\n const idHeight = await addText3(\n shapeSvg,\n `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += idHeight;\n const textHeight = await addText3(\n shapeSvg,\n `${requirementNode.text ? `Text: ${requirementNode.text}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += textHeight;\n const riskHeight = await addText3(\n shapeSvg,\n `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += riskHeight;\n await addText3(\n shapeSvg,\n `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n } else {\n const typeHeight2 = await addText3(\n shapeSvg,\n `${elementNode.type ? `Type: ${elementNode.type}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += typeHeight2;\n await addText3(\n shapeSvg,\n `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n }\n const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rc = rough57.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n shapeSvg.selectAll(\".label\").each((_, i, nodes) => {\n const text2 = select8(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n }\n }\n const newTranslateY = translateY - totalHeight / 2;\n let newTranslateX = x + padding / 2;\n if (i === 0 || i === 1) {\n newTranslateX = translateX;\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY + padding})`);\n });\n if (accumulativeHeight > typeHeight + nameHeight + gap) {\n const roughLine = rc.line(\n x,\n y + typeHeight + nameHeight + gap,\n x + totalWidth,\n y + typeHeight + nameHeight + gap,\n options\n );\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(requirementBox, \"requirementBox\");\nasync function addText3(parentGroup, inputText, yOffset, style = \"\") {\n if (inputText === \"\") {\n return 0;\n }\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", style);\n const config = getConfig2();\n const useHtmlLabels = config.htmlLabels ?? true;\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(inputText)),\n {\n width: calculateTextWidth(inputText, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels,\n style\n },\n config\n );\n let bbox;\n if (!useHtmlLabels) {\n const textChild = text2.children[0];\n for (const child of textChild.children) {\n child.textContent = child.textContent.replaceAll(\">\", \">\").replaceAll(\"<\", \"<\");\n if (style) {\n child.setAttribute(\"style\", style);\n }\n }\n bbox = text2.getBBox();\n bbox.height += 6;\n } else {\n const div = text2.children[0];\n const dv = select8(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n return bbox.height;\n}\n__name(addText3, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/kanbanItem.ts\nimport rough58 from \"roughjs\";\nvar colorFromPriority = /* @__PURE__ */ __name((priority) => {\n switch (priority) {\n case \"Very High\":\n return \"red\";\n case \"High\":\n return \"orange\";\n case \"Medium\":\n return null;\n // no stroke\n case \"Low\":\n return \"blue\";\n case \"Very Low\":\n return \"lightblue\";\n }\n}, \"colorFromPriority\");\nasync function kanbanItem(parent, kanbanNode, { config }) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || \"\";\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n const {\n shapeSvg,\n bbox,\n label: labelElTitle\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n let ticketUrl = \"\";\n let link;\n if (\"ticket\" in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace(\"#TICKET#\", kanbanNode.ticket);\n link = shapeSvg.insert(\"svg:a\", \":first-child\").attr(\"class\", \"kanban-ticket-link\").attr(\"xlink:href\", ticketUrl).attr(\"target\", \"_blank\");\n }\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || \"\",\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n \"assigned\" in kanbanNode && kanbanNode.assigned || \"\",\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj - bbox.height / 2) + \")\"\n );\n labelEl.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n labelElAssigned.attr(\n \"transform\",\n \"translate(\" + (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n let rect2;\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n if (kanbanNode.look === \"handDrawn\") {\n const rc = rough58.svg(shapeSvg);\n const options2 = userNodeOverrides(kanbanNode, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", cssStyles ? cssStyles : null);\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container __APA__\").attr(\"style\", nodeStyles).attr(\"rx\", rx ?? 5).attr(\"ry\", ry ?? 5).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n const priority = \"priority\" in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append(\"line\");\n const lineX = x + 2;\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line.attr(\"x1\", lineX).attr(\"y1\", y1).attr(\"x2\", lineX).attr(\"y2\", y2).attr(\"stroke-width\", \"4\").attr(\"stroke\", colorFromPriority(priority));\n }\n }\n updateNodeBounds(kanbanNode, rect2);\n kanbanNode.height = totalHeight;\n kanbanNode.intersect = function(point) {\n return intersect_default.rect(kanbanNode, point);\n };\n return shapeSvg;\n}\n__name(kanbanItem, \"kanbanItem\");\n\n// src/rendering-util/rendering-elements/shapes/bang.ts\nimport rough59 from \"roughjs\";\nasync function bang(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 10 * halfPadding;\n const h = bbox.height + 8 * halfPadding;\n const r = 0.15 * w;\n const { cssStyles } = node;\n const minWidth = bbox.width + 20;\n const minHeight = bbox.height + 20;\n const effectiveWidth = Math.max(w, minWidth);\n const effectiveHeight = Math.max(h, minHeight);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n let bangElem;\n const path = `M0 0 \n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1}\n\n a${r},${r} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough59.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n bangElem = shapeSvg.insert(() => roughNode, \":first-child\");\n bangElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n bangElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n bangElem.attr(\"transform\", `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`);\n updateNodeBounds(node, bangElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Bang intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(bang, \"bang\");\n\n// src/rendering-util/rendering-elements/shapes/cloud.ts\nimport rough60 from \"roughjs\";\nasync function cloud(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 2 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n const { cssStyles } = node;\n let cloudElem;\n const path = `M0 0 \n a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},0\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough60.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n cloudElem = shapeSvg.insert(() => roughNode, \":first-child\");\n cloudElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n cloudElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n cloudElem.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, cloudElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Cloud intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(cloud, \"cloud\");\n\n// src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts\nasync function defaultMindmapNode(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 8 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const rd = 5;\n const rectPath = `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - 2 * rd}\n q0,${rd} -${rd},${rd}\n h${-w + 2 * rd}\n q-${rd},0 -${rd},-${rd}\n Z\n `;\n const bg = shapeSvg.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\"style\", nodeStyles).attr(\"d\", rectPath);\n shapeSvg.append(\"line\").attr(\"class\", \"node-line-\").attr(\"x1\", -w / 2).attr(\"y1\", h / 2).attr(\"x2\", w / 2).attr(\"y2\", h / 2);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n shapeSvg.append(() => label.node());\n updateNodeBounds(node, bg);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(defaultMindmapNode, \"defaultMindmapNode\");\n\n// src/rendering-util/rendering-elements/shapes/mindmapCircle.ts\nasync function mindmapCircle(parent, node) {\n const options = {\n padding: node.padding ?? 0\n };\n return circle(parent, node, options);\n}\n__name(mindmapCircle, \"mindmapCircle\");\n\n// src/rendering-util/rendering-elements/shapes.ts\nvar shapesDefs = [\n {\n semanticName: \"Process\",\n name: \"Rectangle\",\n shortName: \"rect\",\n description: \"Standard process shape\",\n aliases: [\"proc\", \"process\", \"rectangle\"],\n internalAliases: [\"squareRect\"],\n handler: squareRect2\n },\n {\n semanticName: \"Event\",\n name: \"Rounded Rectangle\",\n shortName: \"rounded\",\n description: \"Represents an event\",\n aliases: [\"event\"],\n internalAliases: [\"roundedRect\"],\n handler: roundedRect\n },\n {\n semanticName: \"Terminal Point\",\n name: \"Stadium\",\n shortName: \"stadium\",\n description: \"Terminal point\",\n aliases: [\"terminal\", \"pill\"],\n handler: stadium\n },\n {\n semanticName: \"Subprocess\",\n name: \"Framed Rectangle\",\n shortName: \"fr-rect\",\n description: \"Subprocess\",\n aliases: [\"subprocess\", \"subproc\", \"framed-rectangle\", \"subroutine\"],\n handler: subroutine\n },\n {\n semanticName: \"Database\",\n name: \"Cylinder\",\n shortName: \"cyl\",\n description: \"Database storage\",\n aliases: [\"db\", \"database\", \"cylinder\"],\n handler: cylinder\n },\n {\n semanticName: \"Start\",\n name: \"Circle\",\n shortName: \"circle\",\n description: \"Starting point\",\n aliases: [\"circ\"],\n handler: circle\n },\n {\n semanticName: \"Bang\",\n name: \"Bang\",\n shortName: \"bang\",\n description: \"Bang\",\n aliases: [\"bang\"],\n handler: bang\n },\n {\n semanticName: \"Cloud\",\n name: \"Cloud\",\n shortName: \"cloud\",\n description: \"cloud\",\n aliases: [\"cloud\"],\n handler: cloud\n },\n {\n semanticName: \"Decision\",\n name: \"Diamond\",\n shortName: \"diam\",\n description: \"Decision-making step\",\n aliases: [\"decision\", \"diamond\", \"question\"],\n handler: question\n },\n {\n semanticName: \"Prepare Conditional\",\n name: \"Hexagon\",\n shortName: \"hex\",\n description: \"Preparation or condition step\",\n aliases: [\"hexagon\", \"prepare\"],\n handler: hexagon\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Right\",\n shortName: \"lean-r\",\n description: \"Represents input or output\",\n aliases: [\"lean-right\", \"in-out\"],\n internalAliases: [\"lean_right\"],\n handler: lean_right\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Left\",\n shortName: \"lean-l\",\n description: \"Represents output or input\",\n aliases: [\"lean-left\", \"out-in\"],\n internalAliases: [\"lean_left\"],\n handler: lean_left\n },\n {\n semanticName: \"Priority Action\",\n name: \"Trapezoid Base Bottom\",\n shortName: \"trap-b\",\n description: \"Priority action\",\n aliases: [\"priority\", \"trapezoid-bottom\", \"trapezoid\"],\n handler: trapezoid\n },\n {\n semanticName: \"Manual Operation\",\n name: \"Trapezoid Base Top\",\n shortName: \"trap-t\",\n description: \"Represents a manual task\",\n aliases: [\"manual\", \"trapezoid-top\", \"inv-trapezoid\"],\n internalAliases: [\"inv_trapezoid\"],\n handler: inv_trapezoid\n },\n {\n semanticName: \"Stop\",\n name: \"Double Circle\",\n shortName: \"dbl-circ\",\n description: \"Represents a stop point\",\n aliases: [\"double-circle\"],\n internalAliases: [\"doublecircle\"],\n handler: doublecircle\n },\n {\n semanticName: \"Text Block\",\n name: \"Text Block\",\n shortName: \"text\",\n description: \"Text block\",\n handler: text\n },\n {\n semanticName: \"Card\",\n name: \"Notched Rectangle\",\n shortName: \"notch-rect\",\n description: \"Represents a card\",\n aliases: [\"card\", \"notched-rectangle\"],\n handler: card\n },\n {\n semanticName: \"Lined/Shaded Process\",\n name: \"Lined Rectangle\",\n shortName: \"lin-rect\",\n description: \"Lined process shape\",\n aliases: [\"lined-rectangle\", \"lined-process\", \"lin-proc\", \"shaded-process\"],\n handler: shadedProcess\n },\n {\n semanticName: \"Start\",\n name: \"Small Circle\",\n shortName: \"sm-circ\",\n description: \"Small starting point\",\n aliases: [\"start\", \"small-circle\"],\n internalAliases: [\"stateStart\"],\n handler: stateStart\n },\n {\n semanticName: \"Stop\",\n name: \"Framed Circle\",\n shortName: \"fr-circ\",\n description: \"Stop point\",\n aliases: [\"stop\", \"framed-circle\"],\n internalAliases: [\"stateEnd\"],\n handler: stateEnd\n },\n {\n semanticName: \"Fork/Join\",\n name: \"Filled Rectangle\",\n shortName: \"fork\",\n description: \"Fork or join in process flow\",\n aliases: [\"join\"],\n internalAliases: [\"forkJoin\"],\n handler: forkJoin\n },\n {\n semanticName: \"Collate\",\n name: \"Hourglass\",\n shortName: \"hourglass\",\n description: \"Represents a collate operation\",\n aliases: [\"hourglass\", \"collate\"],\n handler: hourglass\n },\n {\n semanticName: \"Comment\",\n name: \"Curly Brace\",\n shortName: \"brace\",\n description: \"Adds a comment\",\n aliases: [\"comment\", \"brace-l\"],\n handler: curlyBraceLeft\n },\n {\n semanticName: \"Comment Right\",\n name: \"Curly Brace\",\n shortName: \"brace-r\",\n description: \"Adds a comment\",\n handler: curlyBraceRight\n },\n {\n semanticName: \"Comment with braces on both sides\",\n name: \"Curly Braces\",\n shortName: \"braces\",\n description: \"Adds a comment\",\n handler: curlyBraces\n },\n {\n semanticName: \"Com Link\",\n name: \"Lightning Bolt\",\n shortName: \"bolt\",\n description: \"Communication link\",\n aliases: [\"com-link\", \"lightning-bolt\"],\n handler: lightningBolt\n },\n {\n semanticName: \"Document\",\n name: \"Document\",\n shortName: \"doc\",\n description: \"Represents a document\",\n aliases: [\"doc\", \"document\"],\n handler: waveEdgedRectangle\n },\n {\n semanticName: \"Delay\",\n name: \"Half-Rounded Rectangle\",\n shortName: \"delay\",\n description: \"Represents a delay\",\n aliases: [\"half-rounded-rectangle\"],\n handler: halfRoundedRectangle\n },\n {\n semanticName: \"Direct Access Storage\",\n name: \"Horizontal Cylinder\",\n shortName: \"h-cyl\",\n description: \"Direct access storage\",\n aliases: [\"das\", \"horizontal-cylinder\"],\n handler: tiltedCylinder\n },\n {\n semanticName: \"Disk Storage\",\n name: \"Lined Cylinder\",\n shortName: \"lin-cyl\",\n description: \"Disk storage\",\n aliases: [\"disk\", \"lined-cylinder\"],\n handler: linedCylinder\n },\n {\n semanticName: \"Display\",\n name: \"Curved Trapezoid\",\n shortName: \"curv-trap\",\n description: \"Represents a display\",\n aliases: [\"curved-trapezoid\", \"display\"],\n handler: curvedTrapezoid\n },\n {\n semanticName: \"Divided Process\",\n name: \"Divided Rectangle\",\n shortName: \"div-rect\",\n description: \"Divided process shape\",\n aliases: [\"div-proc\", \"divided-rectangle\", \"divided-process\"],\n handler: dividedRectangle\n },\n {\n semanticName: \"Extract\",\n name: \"Triangle\",\n shortName: \"tri\",\n description: \"Extraction process\",\n aliases: [\"extract\", \"triangle\"],\n handler: triangle\n },\n {\n semanticName: \"Internal Storage\",\n name: \"Window Pane\",\n shortName: \"win-pane\",\n description: \"Internal storage\",\n aliases: [\"internal-storage\", \"window-pane\"],\n handler: windowPane\n },\n {\n semanticName: \"Junction\",\n name: \"Filled Circle\",\n shortName: \"f-circ\",\n description: \"Junction point\",\n aliases: [\"junction\", \"filled-circle\"],\n handler: filledCircle\n },\n {\n semanticName: \"Loop Limit\",\n name: \"Trapezoidal Pentagon\",\n shortName: \"notch-pent\",\n description: \"Loop limit step\",\n aliases: [\"loop-limit\", \"notched-pentagon\"],\n handler: trapezoidalPentagon\n },\n {\n semanticName: \"Manual File\",\n name: \"Flipped Triangle\",\n shortName: \"flip-tri\",\n description: \"Manual file operation\",\n aliases: [\"manual-file\", \"flipped-triangle\"],\n handler: flippedTriangle\n },\n {\n semanticName: \"Manual Input\",\n name: \"Sloped Rectangle\",\n shortName: \"sl-rect\",\n description: \"Manual input step\",\n aliases: [\"manual-input\", \"sloped-rectangle\"],\n handler: slopedRect\n },\n {\n semanticName: \"Multi-Document\",\n name: \"Stacked Document\",\n shortName: \"docs\",\n description: \"Multiple documents\",\n aliases: [\"documents\", \"st-doc\", \"stacked-document\"],\n handler: multiWaveEdgedRectangle\n },\n {\n semanticName: \"Multi-Process\",\n name: \"Stacked Rectangle\",\n shortName: \"st-rect\",\n description: \"Multiple processes\",\n aliases: [\"procs\", \"processes\", \"stacked-rectangle\"],\n handler: multiRect\n },\n {\n semanticName: \"Stored Data\",\n name: \"Bow Tie Rectangle\",\n shortName: \"bow-rect\",\n description: \"Stored data\",\n aliases: [\"stored-data\", \"bow-tie-rectangle\"],\n handler: bowTieRect\n },\n {\n semanticName: \"Summary\",\n name: \"Crossed Circle\",\n shortName: \"cross-circ\",\n description: \"Summary\",\n aliases: [\"summary\", \"crossed-circle\"],\n handler: crossedCircle\n },\n {\n semanticName: \"Tagged Document\",\n name: \"Tagged Document\",\n shortName: \"tag-doc\",\n description: \"Tagged document\",\n aliases: [\"tag-doc\", \"tagged-document\"],\n handler: taggedWaveEdgedRectangle\n },\n {\n semanticName: \"Tagged Process\",\n name: \"Tagged Rectangle\",\n shortName: \"tag-rect\",\n description: \"Tagged process\",\n aliases: [\"tagged-rectangle\", \"tag-proc\", \"tagged-process\"],\n handler: taggedRect\n },\n {\n semanticName: \"Paper Tape\",\n name: \"Flag\",\n shortName: \"flag\",\n description: \"Paper tape\",\n aliases: [\"paper-tape\"],\n handler: waveRectangle\n },\n {\n semanticName: \"Odd\",\n name: \"Odd\",\n shortName: \"odd\",\n description: \"Odd shape\",\n internalAliases: [\"rect_left_inv_arrow\"],\n handler: rect_left_inv_arrow\n },\n {\n semanticName: \"Lined Document\",\n name: \"Lined Document\",\n shortName: \"lin-doc\",\n description: \"Lined document\",\n aliases: [\"lined-document\"],\n handler: linedWaveEdgedRect\n }\n];\nvar generateShapeMap = /* @__PURE__ */ __name(() => {\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n // Rectangles\n rectWithTitle,\n labelRect,\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n // Kanban diagram\n kanbanItem,\n //Mindmap diagram\n mindmapCircle,\n defaultMindmapNode,\n // class diagram\n classBox,\n // er diagram\n erBox,\n // Requirement diagram\n requirementBox\n };\n const entries = [\n ...Object.entries(undocumentedShapes),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...\"aliases\" in shape ? shape.aliases : [],\n ...\"internalAliases\" in shape ? shape.internalAliases : []\n ];\n return aliases.map((alias) => [alias, shape.handler]);\n })\n ];\n return Object.fromEntries(entries);\n}, \"generateShapeMap\");\nvar shapes2 = generateShapeMap();\nfunction isValidShape(shape) {\n return shape in shapes2;\n}\n__name(isValidShape, \"isValidShape\");\n\n// src/rendering-util/rendering-elements/nodes.ts\nvar nodeElems = /* @__PURE__ */ new Map();\nasync function insertNode(elem, node, renderOptions) {\n let newEl;\n let el;\n if (node.shape === \"rect\") {\n if (node.rx && node.ry) {\n node.shape = \"roundedRect\";\n } else {\n node.shape = \"squareRect\";\n }\n }\n const shapeHandler = node.shape ? shapes2[node.shape] : void 0;\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n if (node.link) {\n let target;\n if (renderOptions.config.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 ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n nodeElems.set(node.id, newEl);\n if (node.haveCallback) {\n newEl.attr(\"class\", newEl.attr(\"class\") + \" clickable\");\n }\n return newEl;\n}\n__name(insertNode, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n nodeElems.set(node.id, elem);\n}, \"setNodeElem\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n nodeElems.clear();\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((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(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\nexport {\n labelHelper,\n updateNodeBounds,\n createLabel_default,\n isValidShape,\n insertCluster,\n clear,\n insertNode,\n setNodeElem,\n clear2,\n positionNode\n};\n"],
|
|
"mappings": "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",
|
|
"names": ["t", "e", "s", "n", "o", "a", "r", "h", "i", "c", "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", "J", "K", "U", "X", "Y", "tt", "et", "st", "nt", "ot", "at", "labelHelper", "__name", "parent", "node", "_classes", "cssClasses", "useHtmlLabels", "evaluate", "getConfig2", "shapeSvg", "labelEl", "handleUndefinedAttr", "label", "text2", "createText", "sanitizeText", "decodeEntities", "bbox", "halfPadding", "div", "dv", "select_default", "images", "noImgText", "img", "res", "setupImage", "bodyFontSize", "enlargingFactor", "parsedBodyFontSize", "defaultConfig_default", "parseFontSize", "width", "insertLabel", "options", "updateNodeBounds", "element", "getNodeClasses", "extra", "createPathFromPoints", "points", "pointStrings", "p", "i", "generateFullSineWavePoints", "x1", "y1", "x2", "y2", "amplitude", "numCycles", "deltaX", "deltaY", "cycleLength", "frequency", "midY", "t", "x", "y", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "startAngleRad", "angleStep", "angle", "intersectRect", "point", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "applyStyle", "dom", "styleFn", "addHtmlLabel", "fo", "config", "hasKatex", "renderKatexSanitized", "common_default", "labelSpan", "createLabel", "_vertexText", "style", "isTitle", "isNode", "vertexText", "log", "svgLabel", "rows", "row", "tspan", "createLabel_default", "createRoundedRectPathD", "totalWidth", "totalHeight", "rect", "siteConfig", "themeVariables", "handDrawnSeed", "clusterBkg", "clusterBorder", "labelStyles", "nodeStyles", "borderStyles", "backgroundStyles", "styles2String", "height", "rect2", "rc", "at", "userNodeOverrides", "roughNode", "subGraphTitleTopMargin", "getSubGraphTitleMargins", "span", "rectBox", "noteGroup", "padding", "roundedWithTitle", "altBackground", "compositeBackground", "compositeTitleBackground", "nodeBorder", "outerRectG", "innerRect", "innerHeight", "innerY", "isAlt", "roughOuterNode", "roughInnerNode", "kanbanSection", "divider", "squareRect", "shapes", "clusterElems", "insertCluster", "elem", "shape", "cluster", "clear", "intersectNode", "intersect_node_default", "intersectEllipse", "rx", "ry", "cx", "cy", "px", "py", "det", "intersect_ellipse_default", "intersectCircle", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "b1", "c1", "r3", "r4", "epsilon", "sameSign", "a2", "b2", "c2", "r1", "r2", "denom", "offset", "num", "intersect_line_default", "intersectPolygon", "polyPoints", "intersections", "minX", "minY", "entry", "left", "top", "intersect", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "intersect_polygon_default", "intersect_default", "anchor", "classes", "cssStyles", "circleElem", "generateArcPoints", "clockwise", "midX", "transformedX", "transformedY", "distance", "scaledCenterDistance", "angleRange", "angle2", "bowTieRect", "bowTieRectPath", "bowTieRectShapePath", "bowTieRectShape", "insertPolygonShape", "d", "card", "right", "bottom", "polygon", "pathData", "choice", "s", "choicePath", "choiceShape", "circle", "options2", "bounds", "radius2", "createLine", "r", "xAxis45", "yAxis45", "lineLength", "pointQ1", "pointQ2", "pointQ3", "pointQ4", "crossedCircle", "circleNode", "linePath", "lineNode", "crossedCircle2", "generateCirclePoints2", "curlyBraceLeft", "rectPoints", "newCurlyBracePath", "curlyBraceLeftNode", "rectPath", "rectShape", "curlyBraceLeftShape", "generateCirclePoints3", "curlyBraceRight", "curlyBraceRightNode", "curlyBraceRightShape", "generateCirclePoints4", "curlyBraces", "leftCurlyBracePoints", "rightCurlyBracePoints", "newLeftCurlyBracePath", "leftCurlyBraceNode", "newRightCurlyBracePath", "rightCurlyBraceNode", "curlyBracesShape", "curvedTrapezoid", "minWidth", "minHeight", "rw", "tw", "shapeNode", "createCylinderPathD", "createOuterCylinderPathD", "createInnerCylinderPathD", "cylinder", "cylinder2", "outerPathData", "innerPathData", "outerNode", "innerLine", "pos", "dividedRectangle", "rectOffset", "pts", "poly", "doublecircle", "outerRadius", "innerRadius", "circleGroup", "outerOptions", "innerOptions", "outerRoughNode", "innerRoughNode", "outerCircle", "innerCircle", "filledCircle", "filledCircle2", "flippedTriangle", "flippedTriangle2", "forkJoin", "dir", "state2", "halfRoundedRectangle", "hexagon", "halfWidth", "m", "halfHeight", "fixedLength", "deducedWidth", "hourglass", "icon", "flowchart", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "topLabel", "stylesMap", "compileStyles", "labelPadding", "iconNode", "outerWidth", "outerHeight", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "nodeHeight", "iconCircle", "mainBkg", "fill", "diameter", "iconRounded", "iconSquare", "imageSquare", "imageNaturalWidth", "imageNaturalHeight", "imageRawWidth", "imageWidth", "imageHeight", "imageNode", "image", "inv_trapezoid", "drawRect", "labelRect", "lean_left", "lean_right", "lightningBolt", "gap", "lightningBolt2", "createCylinderPathD2", "outerOffset", "createOuterCylinderPathD2", "createInnerCylinderPathD2", "linedCylinder", "linedWaveEdgedRect", "waveAmplitude", "finalH", "waveEdgeRect", "multiRect", "outerPathPoints", "innerPathPoints", "outerPath", "innerPath", "innerNode", "multiRect2", "multiWaveEdgedRectangle", "wavePoints", "lastWavePoint", "note", "getConfig", "noteShapeNode", "createDecisionBoxPathD", "size", "question", "adjustment", "s2", "points2", "rect_left_inv_arrow", "notch", "rectWithTitle", "g", "description", "title", "div2", "dv2", "textRows", "titleBox", "descr", "roughLine", "generateArcPoints2", "roundedRect", "labelPaddingX", "labelPaddingY", "taper", "shadedProcess", "slopedRect", "squareRect2", "stadium", "state", "stateEnd", "lineColor", "stateBorder", "innerFill", "circle2", "stateStart", "solidStateFill", "subroutine", "l1", "l2", "el", "taggedRect", "tagWidth", "tagHeight", "tagPoints", "rectNode", "tagPath", "tagNode", "taggedRect2", "taggedWaveEdgedRectangle", "waveEdgeRectPath", "waveEdgeRectNode", "taggedWaveEdgeRectPath", "taggedWaveEdgeRectNode", "text", "createCylinderPathD3", "createOuterCylinderPathD3", "createInnerCylinderPathD3", "tiltedCylinder", "trapezoid", "trapezoidalPentagon", "triangle", "waveEdgedRectangle", "widthDif", "extraW", "waveRectangle", "baseWidth", "baseHeight", "aspectRatio", "waveRectPath", "waveRectNode", "waveRect", "windowPane", "path", "no", "windowPane2", "erBox", "entityNode", "themeVariables2", "background", "backgroundNode", "PADDING", "TEXT_PADDING", "calculateTextWidth", "shapeSvg2", "textElement", "nameBBox", "addText", "yOffset", "yOffsets", "maxTypeWidth", "maxNameWidth", "maxKeysWidth", "maxCommentWidth", "keysPresent", "commentPresent", "attribute", "typeBBox", "nameBBox2", "keysBBox", "commentBBox", "rowHeight", "totalWidthSections", "shapeBBox", "difference", "maxWidth", "totalShapeBBoxHeight", "sum", "_", "nodes", "transform", "translateX", "translateY", "translate", "roughRect", "rowEven", "rowOdd", "isEven", "roughRect2", "yOffset2", "strokeStyles", "e", "labelText", "parseGenericTypes", "child", "textHelper", "GAP", "annotationGroup", "labelGroup", "membersGroup", "methodsGroup", "annotationGroupHeight", "labelGroupHeight", "membersGroupHeight", "annotation", "addText2", "labelGroupBBox", "member", "methodsYOffset", "method", "annotationGroupBBox", "parentGroup", "styles", "textEl", "textContent", "sanitizeText3", "numberOfLines", "textChild", "classBox", "classNode", "renderExtraBox", "rectBBox", "newTranslateY", "newTranslateX", "_2", "i2", "nodes2", "colorRegex", "match", "colorStyle", "match2", "requirementBox", "requirementNode", "elementNode", "isRequirementNode", "typeHeight", "addText3", "accumulativeHeight", "nameHeight", "idHeight", "textHeight", "riskHeight", "typeHeight2", "inputText", "colorFromPriority", "priority", "kanbanItem", "kanbanNode", "orgWidth", "labelElTitle", "ticketUrl", "link", "bbox2", "labelElAssigned", "bboxAssigned", "heightAdj", "line", "lineX", "bang", "effectiveWidth", "effectiveHeight", "bangElem", "cloud", "cloudElem", "defaultMindmapNode", "rd", "bg", "mindmapCircle", "shapesDefs", "generateShapeMap", "entries", "alias", "shapes2", "isValidShape", "nodeElems", "insertNode", "renderOptions", "newEl", "shapeHandler", "target", "setNodeElem", "clear2", "positionNode", "diff"]
|
|
}
|