agentic-mermaid 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/agent-core.d.ts +8 -3
  3. package/dist/agent-core.js +2 -2
  4. package/dist/agent.d.ts +2 -2
  5. package/dist/agent.js +4 -4
  6. package/dist/agentic-mermaid-mcp.js +5 -5
  7. package/dist/am.js +6 -6
  8. package/dist/browser-lazy/chunks/architecture-WMSX5L4P.js +31 -0
  9. package/dist/browser-lazy/chunks/chunk-32FWKUUV.js +1 -0
  10. package/dist/browser-lazy/chunks/chunk-5Q4S74UO.js +1 -0
  11. package/dist/browser-lazy/chunks/chunk-A7L4WWVW.js +143 -0
  12. package/dist/browser-lazy/chunks/chunk-ANTNEVJC.js +1 -0
  13. package/dist/browser-lazy/chunks/chunk-AOCFMYYH.js +4 -0
  14. package/dist/browser-lazy/chunks/chunk-CCTZFX43.js +4 -0
  15. package/dist/browser-lazy/chunks/chunk-EBPTM2RP.js +1 -0
  16. package/dist/browser-lazy/chunks/chunk-EPFMQPXX.js +1 -0
  17. package/dist/browser-lazy/chunks/chunk-EX6TP7QM.js +46 -0
  18. package/dist/browser-lazy/chunks/chunk-FFOHLPDA.js +2 -0
  19. package/dist/browser-lazy/chunks/chunk-FLD63DXE.js +2 -0
  20. package/dist/browser-lazy/chunks/chunk-GRXCKTHX.js +0 -0
  21. package/dist/browser-lazy/chunks/chunk-I6VE56S7.js +1 -0
  22. package/dist/browser-lazy/chunks/chunk-KJVNXJ5Y.js +1 -0
  23. package/dist/browser-lazy/chunks/chunk-M6BT2HIP.js +1 -0
  24. package/dist/browser-lazy/chunks/chunk-OFRMKQA6.js +1 -0
  25. package/dist/browser-lazy/chunks/chunk-P7HMSKHJ.js +1 -0
  26. package/dist/browser-lazy/chunks/chunk-PZEWZT35.js +1 -0
  27. package/dist/browser-lazy/chunks/chunk-QMZ4Y6I7.js +1 -0
  28. package/dist/browser-lazy/chunks/chunk-QYJMRNS3.js +11 -0
  29. package/dist/browser-lazy/chunks/chunk-RLS545DI.js +1 -0
  30. package/dist/browser-lazy/chunks/chunk-STQRDZ67.js +1 -0
  31. package/dist/browser-lazy/chunks/chunk-T7IJ6V4B.js +3 -0
  32. package/dist/browser-lazy/chunks/chunk-TBZAU7KC.js +7 -0
  33. package/dist/browser-lazy/chunks/chunk-TDGTBGV3.js +1 -0
  34. package/dist/browser-lazy/chunks/chunk-TEH2PRKN.js +1 -0
  35. package/dist/browser-lazy/chunks/chunk-W6Q4PHPC.js +24 -0
  36. package/dist/browser-lazy/chunks/chunk-WEUWIFG3.js +1 -0
  37. package/dist/browser-lazy/chunks/chunk-WN7SFUCZ.js +1 -0
  38. package/dist/browser-lazy/chunks/chunk-ZZECLXC3.js +1 -0
  39. package/dist/browser-lazy/chunks/class-7JRALQIM.js +9 -0
  40. package/dist/browser-lazy/chunks/er-UDCGHKBX.js +9 -0
  41. package/dist/browser-lazy/chunks/flowchart-5FP7RRIK.js +4 -0
  42. package/dist/browser-lazy/chunks/gantt-NTOIC5CW.js +28 -0
  43. package/dist/browser-lazy/chunks/gitgraph-JYAPXUIJ.js +8 -0
  44. package/dist/browser-lazy/chunks/journey-646EFIB6.js +40 -0
  45. package/dist/browser-lazy/chunks/mindmap-2SBTQHQO.js +9 -0
  46. package/dist/browser-lazy/chunks/pie-7FDXZ24K.js +19 -0
  47. package/dist/browser-lazy/chunks/quadrant-72UT4XAW.js +24 -0
  48. package/dist/browser-lazy/chunks/radar-SU7BO56J.js +32 -0
  49. package/dist/browser-lazy/chunks/render-core-Q2JWXDDL.js +12 -0
  50. package/dist/browser-lazy/chunks/sequence-5O5ET264.js +12 -0
  51. package/dist/browser-lazy/chunks/state-IWPLFQ6R.js +4 -0
  52. package/dist/browser-lazy/chunks/timeline-WJWYHH5Y.js +20 -0
  53. package/dist/browser-lazy/chunks/xychart-HHQVQA5O.js +36 -0
  54. package/dist/browser-lazy/index.d.ts +1012 -0
  55. package/dist/browser-lazy/index.js +1 -0
  56. package/dist/browser.global.js +322 -321
  57. package/dist/{chunk-WHYJLDYG.js → chunk-3D4EHVQ4.js} +47784 -47711
  58. package/dist/{chunk-AVCWKYII.js → chunk-GX7UT56Q.js} +18 -5
  59. package/dist/{chunk-UJNY65QS.js → chunk-IVN6KP3W.js} +2 -2
  60. package/dist/{chunk-HFD4MALA.js → chunk-NE6JBHSE.js} +682 -44
  61. package/dist/{chunk-3QCXO4V6.js → chunk-R5U67OIW.js} +4 -4
  62. package/dist/{chunk-GILQUGFK.js → chunk-YWKCUBQN.js} +2 -2
  63. package/dist/{index-CLwYn6Im.d.ts → index-BFg_LoZS.d.ts} +5409 -5391
  64. package/dist/index.d.ts +1 -1
  65. package/dist/index.js +1 -1
  66. package/dist/mcp-cli-XGZP6CMW.js +17 -0
  67. package/docs/README.md +1 -1
  68. package/docs/browser.md +355 -47
  69. package/docs/mcp-http-transport.md +2 -0
  70. package/package.json +17 -6
  71. package/server.json +2 -2
  72. package/dist/mcp-cli-SJVOGRA6.js +0 -17
@@ -0,0 +1 @@
1
+ function l(o){let i=[],t=0,n=0,r=!1;for(let e=0;e<o.length;e++){let s=o[e];if(r){r=!1;continue}if(s==="\\"){r=!0;continue}s==="("?t++:s===")"?t=Math.max(0,t-1):s===","&&t===0&&(i.push(o.slice(n,e)),n=e+1)}return i.push(o.slice(n)),i.map(e=>e.replace(/\\,/g,","))}function a(o){let i=o.replace(/;\s*$/,""),t={};for(let n of l(i)){let r=n.indexOf(":");if(r<=0)continue;let e=n.slice(0,r).trim(),s=n.slice(r+1).trim();e&&s&&(t[e]=s)}return t}export{a};
@@ -0,0 +1 @@
1
+ import{i as l}from"./chunk-32FWKUUV.js";import{f as S}from"./chunk-P7HMSKHJ.js";var h=["compositTitleSize","dividerMargin","fontSize","forkHeight","forkWidth","nodeSpacing","noteMargin","padding","radius","rankSpacing"],F=["arrowMarkerAbsolute","edgeLengthFactor","fontSizeFactor","labelHeight","miniPadding","sizeUnit","textHeight","titleShift","titleTopMargin"],k=["arrowMarkerAbsolute","compositTitleSize","defaultRenderer","dividerMargin","edgeLengthFactor","fontSize","fontSizeFactor","forkHeight","forkWidth","labelHeight","miniPadding","nodeSpacing","noteMargin","padding","radius","rankSpacing","sizeUnit","textHeight","titleShift","titleTopMargin"],C=new Set(k),E=new Set(h),R=new Set(F),I=new Set(["fontSize","compositTitleSize","forkWidth","forkHeight"]),f=e=>typeof e=="number"&&Number.isFinite(e)&&e>0?e:void 0,a=e=>typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0;function y(e){return e.filter(n=>!!n&&typeof n=="object"&&!Array.isArray(n))}function w(e,n=!1){let i=new Map;for(let t of y(e))for(let[o,r]of Object.entries(t))i.set(o,r);let s=[];for(let[t,o]of[...i].sort(([r],[d])=>S(r,d))){if(!C.has(t)){n&&s.push({code:"INEFFECTIVE_CONFIG",field:`state.${t}`,message:`State config field "state.${t}" is unknown and has no effect; check the spelling or remove it.`});continue}if(R.has(t)){s.push({code:"INEFFECTIVE_CONFIG",field:`state.${t}`,message:`State config field "state.${t}" is a legacy Dagre/fixed-metric option with no faithful effect in the ELK measured-text renderer.`});continue}if(t==="defaultRenderer"){o!=="elk"&&s.push({code:"INEFFECTIVE_CONFIG",field:"state.defaultRenderer",message:`State config field "state.defaultRenderer" requested ${JSON.stringify(o)}; this renderer supports only "elk" and will not silently select a different engine.`});continue}if(E.has(t)){let r=I.has(t);(r?f(o)!==void 0:a(o)!==void 0)||s.push({code:"INEFFECTIVE_CONFIG",field:`state.${t}`,message:`State config field "state.${t}" must be a ${r?"positive":"non-negative"} finite number; the supplied value was ignored.`})}}return s}function p(e){let n=e?.state;return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function D(e,n){let i={...p(e),...p(n.mermaidConfig)},s=a(i.nodeSpacing),t=a(i.rankSpacing),o=a(i.padding),r=a(i.radius),d=f(i.fontSize),c=f(i.compositTitleSize),m={...l,...o===void 0?{}:{nodePaddingX:o,nodePaddingY:o},...r===void 0?{}:{nodeCornerRadius:r},...d===void 0?{}:{nodeLabelFontSize:d,edgeLabelFontSize:d},...c===void 0?{}:{groupHeaderFontSize:c}},g=n.nodeSpacing??s,u=n.layerSpacing??t;return{...n,...g===void 0?{}:{nodeSpacing:g},...u===void 0?{}:{layerSpacing:u},stateVisual:{forkWidth:f(i.forkWidth)??70,forkHeight:f(i.forkHeight)??10,noteMargin:a(i.noteMargin)??18,dividerMargin:a(i.dividerMargin)??0,styleDefaults:m}}}export{w as a,D as b};
@@ -0,0 +1 @@
1
+ import{k as S,l as O,m as L,q as y,s as M,t as w}from"./chunk-EX6TP7QM.js";var A="#3b82f6";function R(t){let[e,n,i]=S(t),r=e/255,o=n/255,c=i/255,s=Math.max(r,o,c),a=Math.min(r,o,c),u=(s+a)/2;if(s===a)return[0,0,u*100];let l=s-a,f=u>.5?l/(2-s-a):l/(s+a),d;return s===r?d=((o-c)/l+(o<c?6:0))/6:s===o?d=((c-r)/l+2)/6:d=((r-o)/l+4)/6,[d*360,f*100,u*100]}function j(t,e,n){let i=e/100,r=n/100,o=(1-Math.abs(2*r-1))*i,c=o*(1-Math.abs(t/60%2-1)),s=r-o/2,a,u,l;t<60?(a=o,u=c,l=0):t<120?(a=c,u=o,l=0):t<180?(a=0,u=o,l=c):t<240?(a=0,u=c,l=o):t<300?(a=c,u=0,l=o):(a=o,u=0,l=c);let f=d=>Math.round((d+s)*255).toString(16).padStart(2,"0");return`#${f(a)}${f(u)}${f(l)}`}function B(t){return y(t)}function q(t){return R(t)[2]<50}function v(t,e,n){if(t===0)return e;let i=B(e)?e:A,r=n&&B(n)?n:void 0,[o,c]=R(i),s=Math.max(55,Math.min(85,c)),a=Math.ceil(t/2),u=t%2===1,l=r&&q(r)?!u:u,f=l?Math.max(25,48-a*13):Math.min(78,55+a*11),d=(l?-8:12)*a,m=((o+d)%360+360)%360;return j(m,s,f)}function P(t){return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function k(t){return t<=.0031308?12.92*t:1.055*t**(1/2.4)-.055}function b(t){let e=O(t);if(!e)return null;let n=P(e[0]/255),i=P(e[1]/255),r=P(e[2]/255),o=.4122214708*n+.5363325363*i+.0514459929*r,c=.2119034982*n+.6806995451*i+.1073969566*r,s=.0883024619*n+.2817188376*i+.6299787005*r,a=Math.cbrt(o),u=Math.cbrt(c),l=Math.cbrt(s);return{L:.2104542553*a+.793617785*u-.0040720468*l,a:1.9779984951*a-2.428592205*u+.4505937099*l,b:.0259040371*a+.7827717662*u-.808675766*l}}function Y(t){let e=t.L+.3963377774*t.a+.2158037573*t.b,n=t.L-.1055613458*t.a-.0638541728*t.b,i=t.L-.0894841775*t.a-1.291485548*t.b,r=e*e*e,o=n*n*n,c=i*i*i,s=4.0767416621*r-3.3077115913*o+.2309699292*c,a=-1.2684380046*r+2.6097574011*o-.3413193965*c,u=-.0041960863*r-.7034186147*o+1.707614701*c;return L(k(s)*255,k(a)*255,k(u)*255)}function z(t){let e=Math.hypot(t.a,t.b),n=(Math.atan2(t.b,t.a)*180/Math.PI+360)%360;return{L:t.L,C:e,h:n}}function J(t){let e=t.h*Math.PI/180;return{L:t.L,a:t.C*Math.cos(e),b:t.C*Math.sin(e)}}function g(t){return Y(J(t))}function _(t){let e=b(t);return e?z(e):null}function D(t,e){let n=b(t),i=b(e);return!n||!i?null:Math.hypot(n.L-i.L,n.a-i.a,n.b-i.b)}function W(t){let e=1/0;for(let n=0;n<t.length;n++)for(let i=n+1;i<t.length;i++){let r=D(t[n],t[i]);r!==null&&r<e&&(e=r)}return e}var E=2.4,Q=.2126729,Z=.7151522,tt=.072175,N=.022,nt=1.414,et=1.14,rt=1.14,ot=.027,it=.027,at=5e-4,F=.1;function K(t){let e=O(t);if(!e)return null;let n=Q*(e[0]/255)**E+Z*(e[1]/255)**E+tt*(e[2]/255)**E;return n<N?n+(N-n)**nt:n}function st(t,e){let n=K(t),i=K(e);if(n===null||i===null)return null;if(Math.abs(i-n)<at)return 0;let r,o;return i>n?(r=(i**.56-n**.57)*et,o=r<F?0:r-ot):(r=(i**.65-n**.62)*rt,o=r>-F?0:r+it),o*100}function x(t,e){let n=st(t,e);return n===null?null:Math.abs(n)}var ct=6,ut=1.25,lt=15,H=.1,ft=24,G=264,dt=.11,T=.16;function Tt(t,e={}){return mt(t,e)}function mt(t,e,n){if(t<=ct){let o=e.accent??A;return Array.from({length:Math.max(0,t)},(c,s)=>v(s,o,e.bg))}let i=U(e.bg),r=U(e.accent,i)??A;return bt(t,r,i,n)}function U(t,e){if(t===void 0)return;let n=M(t);if(!n)return;if(n[3]===1)return L(n[0],n[1],n[2]);if(e===void 0)return;let i=M(e);if(!(!i||i[3]!==1))return L(n[0]*n[3]+i[0]*(1-n[3]),n[1]*n[3]+i[1]*(1-n[3]),n[2]*n[3]+i[2]*(1-n[3]))}function bt(t,e,n,i){let r=_(e)??{L:.6,C:T,h:G},o=r.C<.03,c=o?G:r.h,s=Math.max(dt,Math.min(T,o?T:r.C)),a=((n===void 0?null:b(n))?.L??1)<.55,u=a?[.74,.6]:[.56,.7],l=360/t,f=Array.from({length:t},(d,m)=>{if(m===0&&h(e,n))return e;let C=m===0?c:((c+m*l)%360+360)%360,$=m===0?r.L:u[m%2];return X({L:$,C:s,h:C},n,a,i)});return t<=ft?Ct(f,n,a,i):pt(f,n,a,i)}function h(t,e){if(e===void 0)return!0;let n=w(t,e),i=x(t,e);return n!==null&&i!==null&&n>=ut&&i>=lt}function X(t,e,n,i){i&&i.candidateEvaluations++;let r=g(t);if(e===void 0||h(r,e))return r;let o=b(e)?.L??(n?0:1),c=t.L>=o?1:-1;for(let a=1;a<=24;a++){let u=a*.04;for(let l of[c,-c]){i&&i.candidateEvaluations++;let f=g({...t,L:p(t.L+l*u)});if(h(f,e))return f}}let s=["#000000","#ffffff"].filter(a=>h(a,e));return s.length>0?s.sort((a,u)=>(x(u,e)??0)-(x(a,e)??0))[0]:r}function Ct(t,e,n,i){let r=[];for(let o=0;o<t.length;o++){let c=t[o],s=o===0&&h(c,e);r.push(s||I(c,r,i)>=H?c:ht(c,r,e,n,i))}return i&&(i.pairDistanceChecks+=r.length*(r.length-1)/2),W(r)>=H?r:Lt(r,e,i)}function I(t,e,n){let i=1/0;for(let r of e){n&&n.pairDistanceChecks++;let o=D(t,r);o!==null&&o<i&&(i=o)}return i}var p=t=>Math.max(.08,Math.min(.97,t));function ht(t,e,n,i,r){let o=_(t);if(!o)return t;let c=t,s=I(t,e,r);for(let a=1;a<=12;a++){let u=a*.03,l=a*7,f=[{...o,L:p(o.L+u)},{...o,L:p(o.L-u)},{...o,h:(o.h+l)%360},{...o,h:(o.h-l+360)%360},{...o,L:p(i?o.L+u:o.L-u),h:(o.h+l)%360}];for(let d of f){r&&r.candidateEvaluations++;let m=g(d);if(n!==void 0&&!h(m,n))continue;let C=I(m,e,r);if(C>=H)return m;C>s&&(s=C,c=m)}}return c}function gt(t,e){let n=new Map,i=r=>{if(e&&e.candidateEvaluations++,n.has(r)||t!==void 0&&!h(r,t))return;let o=b(r);o&&n.set(r,{hex:r,lab:o})};i("#000000"),i("#ffffff");for(let r=0;r<=22;r++){let o=.08+r*.04;i(g({L:o,C:0,h:0}));for(let c of[.04,.08,.12,.16,.2,.24,.28])for(let s=0;s<360;s+=10)i(g({L:o,C:c,h:s}))}return[...n.values()]}var V=(t,e)=>Math.hypot(t.L-e.L,t.a-e.a,t.b-e.b);function Lt(t,e,n){if(t.length<2)return t;let i=gt(e,n),r=b(t[0]);if(!r)return t;let o=[{hex:t[0],lab:r}],c=new Set([t[0].toLowerCase()]);for(;o.length<t.length;){let s,a=-1,u=1/0,l=b(t[o.length]);for(let f of i){if(c.has(f.hex.toLowerCase()))continue;n&&n.candidateEvaluations++;let d=1/0;for(let C of o)n&&n.pairDistanceChecks++,d=Math.min(d,V(f.lab,C.lab));let m=l?V(f.lab,l):0;(d>a+1e-12||Math.abs(d-a)<=1e-12&&m<u)&&(s=f,a=d,u=m)}if(!s)return t;o.push(s),c.add(s.hex.toLowerCase())}return o.map(s=>s.hex)}function pt(t,e,n,i){let r=new Set;return t.map((o,c)=>{if(i&&i.tailItems++,!r.has(o.toLowerCase()))return r.add(o.toLowerCase()),o;let s=_(o);if(s)for(let a=1;a<=24;a++){i&&i.candidateEvaluations++;let u=X({...s,L:p(s.L+(a%2===0?1:-1)*Math.ceil(a/2)*.008),h:(s.h+a*137.508+c*.01)%360},e,n,i);if(!r.has(u.toLowerCase()))return r.add(u.toLowerCase()),u}return o})}export{A as a,R as b,j as c,B as d,q as e,Tt as f};
@@ -0,0 +1,9 @@
1
+ import{a as he,b as fe,d as ue,e as ge}from"./chunk-TEH2PRKN.js";import"./chunk-GRXCKTHX.js";import"./chunk-W6Q4PHPC.js";import{a as Y}from"./chunk-WEUWIFG3.js";import"./chunk-A7L4WWVW.js";import"./chunk-EBPTM2RP.js";import"./chunk-KJVNXJ5Y.js";import{a as K}from"./chunk-M6BT2HIP.js";import"./chunk-FFOHLPDA.js";import{a as me}from"./chunk-I6VE56S7.js";import{a as pe}from"./chunk-OFRMKQA6.js";import{b as U,c as Z,e as J}from"./chunk-FLD63DXE.js";import{e as te,f as X,j as E,k as ie}from"./chunk-32FWKUUV.js";import{a as Q,b as V,c as ee}from"./chunk-EPFMQPXX.js";import{G as ne,H as re,I as oe,L as A,N as se,O as m,P,fa as q,ia as F,ja as O,ka as M,la as N,na as ae,oa as ce,pa as G,qa as le,xa as de}from"./chunk-EX6TP7QM.js";import"./chunk-P7HMSKHJ.js";var ze=Object.freeze({id:"class",upstreamId:"classDiagram",maturity:"stable",label:"Class",headers:["classDiagram"],aliases:[],config:{section:"class",keys:["nodeSpacing","rankSpacing","titleTopMargin","arrowMarkerAbsolute","dividerMargin","padding","textHeight","defaultRenderer","diagramPadding","htmlLabels","hideEmptyMembersBox","hierarchicalNamespaces"],noopKeys:["arrowMarkerAbsolute","defaultRenderer","diagramPadding","dividerMargin","hideEmptyMembersBox","htmlLabels","padding","textHeight","titleTopMargin"]},identity:{id:"family:class",kind:"family",version:"1.0.0",compatibility:{core:"^0.3.0"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:[],semanticRoles:["prelude","defs","chrome","group","group-header","class-box","member","relationship","cardinality","note","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"class-box",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"class-box",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"member",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"relationship",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"cardinality",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"note",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"note",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`classDiagram
2
+ class Account {
3
+ +id: string
4
+ +close() void
5
+ }
6
+ Account <|-- Savings
7
+ Account "1" o-- "*" Transaction : logs`,detect:e=>/^classdiagram\s*$/.test(e),detectLoose:e=>/^classdiagram(?:\s|$)/.test(e)}),ye=ze;var Ae=/^namespace\s+([\w$]+(?:\.[\w$]+)*)(?:\s*\[\s*"?([^\]"]*)"?\s*\])?\s*\{$/;function ke(e){let t=e.match(Ae);return t?{path:t[1].split("."),label:t[2]||void 0}:null}function Te(e){let t=e.match(/^(namespace\s+.+?)\s*\{\s*([^{}]*)\s*\}$/);if(!t)return[e];let i=`${t[1]} {`;if(!ke(i))return[e];let n=t[2].split(";").map(a=>a.trim()).filter(Boolean);return[i,...n,"}"]}var Me=/^class\s+(`[^`]+`|[\w$]+)(?:\s*~([^~]+)~)?(?:\s*\[\s*"([^"]*)"\s*\])?(?:\s+as\s+"([^"]+)")?(?:\s+~([^~]+)~)?\s*(\{)?\s*$/;function Ne(e){let t=e.match(Me);if(!t)return null;let i=t[1];return{id:i.startsWith("`")?i.slice(1,-1):i,generic:(t[2]??t[5])?.trim(),label:t[3]??t[4],opensBody:t[6]==="{"}}function _(e){let t=e.trim().match(/^(`[^`]+`|[\w$]+)(?:~([^~]+)~)?$/);if(!t)return null;let i=t[1];return{id:i.startsWith("`")?i.slice(1,-1):i,generic:t[2]?.trim()||void 0}}function De(e){let t=e.match(/^(?:click|link)\s+(`[^`]+`(?:~[^~]+~)?|[\w$]+(?:~[^~]+~)?)\s+(?:href\s+)?(?:"((?:\\.|[^"])*)"|(https?:\/\/\S+|mailto:\S+))/i);if(!t)return null;let i=_(t[1]),n=(t[2]??t[3]??"").replace(/\\(["\\])/g,"$1");return i&&/^(?:https?:|mailto:)/i.test(n)?{...i,href:n}:null}function xe(e){let t=U(e);Z(t),e=t.familyLines.flatMap(Te);let i={classes:[],classDefs:new Map,relationships:[],notes:[],namespaces:[],...t.accessibility.title!==void 0?{accessibilityTitle:A(t.accessibility.title)}:{},...t.accessibility.descr!==void 0?{accessibilityDescription:A(t.accessibility.descr)}:{}},n=new Map,a=new Map,r=[],o=[],s=new Set,g=(k,f)=>{let $=o.join("."),b=r.length>0?r[r.length-1].children:i.namespaces,u;for(let l of k){let h=$?`${$}.${l}`:l;u=a.get(h),u||(u={name:l,classIds:[],children:[]},a.set(h,u),b.push(u)),$=h,b=u.children,o.push(l),r.push(u)}return f&&u&&(u.label=f),u},c=k=>{r.length===0||s.has(k)||(s.add(k),r[r.length-1].classIds.push(k))},y=null,v=0,S=[];for(let k=1;k<e.length;k++){let f=e[k];if(y&&v>0){if(f==="}"){v--,v===0&&(y=null);continue}let p=f.match(/^<<(\w+)>>$/);if(p){y.annotation=p[1];continue}let d=$e(f);d&&(d.isMethod?y.methods.push(d.member):y.attributes.push(d.member));continue}let $=De(f);if($){T(n,$.id,$.generic).href=$.href;continue}let b=f.match(/^note(?:\s+for\s+(\S+))?\s+"((?:\\.|[^"\\])*)"\s*$/i);if(b){let p=b[1]?_(b[1]):null;b[1]&&p&&T(n,p.id,p.generic),i.notes.push({text:b[2].replace(/\\(["\\])/g,"$1"),...p?{for:p.id}:{}});continue}let u=ge(f);if(u){i.direction=u;continue}let l=ke(f);if(l){g(l.path,l.label),S.push(l.path.length);continue}if(f==="}"&&S.length>0){let p=S.pop();r.length-=p,o.length-=p;continue}let h=f.match(/^classDef\s+([\w,-]+)\s+(.+)$/);if(h){let p=Y(h[2]);for(let d of h[1].split(",").map(x=>x.trim()).filter(Boolean))i.classDefs.set(d,{...p});continue}let C=f.match(/^(?:class|cssClass)\s+(.+?)\s+([\w-]+)$/);if(C&&!f.includes("{")&&!f.includes("[")&&!f.includes(" as ")){let p=C[1].replace(/^"|"$/g,"").split(",").map(d=>_(d.trim())).filter(d=>d!==null);if(p.length>0){for(let d of p){let x=T(n,d.id,d.generic);x.className=C[2],c(x.id)}continue}}let W=f.match(/^style\s+(.+?)\s+(.+)$/);if(W){let p=W[1].replace(/^"|"$/g,"").split(",").map(x=>_(x.trim())).filter(x=>x!==null),d=Y(W[2]);if(p.length>0&&Object.keys(d).length>0){for(let x of p){let w=T(n,x.id,x.generic);w.inlineStyle={...w.inlineStyle,...d},c(w.id)}continue}}let R=Ne(f);if(R){let p=T(n,R.id,R.generic);R.label!==void 0&&(p.label=A(R.label)),R.opensBody&&(y=p,v=1),c(R.id);continue}let L=f.match(/^class\s+(\S+?)\s*\{\s*<<(\w+)>>\s*\}$/);if(L){let p=_(L[1]);if(!p)continue;let d=T(n,p.id,p.generic);d.annotation=L[2],c(d.id);continue}let B=f.match(/^(.+?):::([\w-]+)$/);if(B){let p=_(B[1]);if(p){let d=T(n,p.id,p.generic);d.className=B[2],c(p.id);continue}}let D=f.match(/^(\S+?)\s*:\s*(.+)$/);if(D){let p=D[2];if(!p.match(/<\|--|--|\*--|o--|-->|\.\.>|\.\.\|>/)){let d=_(D[1]);if(!d)continue;let x=T(n,d.id,d.generic),w=$e(p);w&&(w.isMethod?x.methods.push(w.member):x.attributes.push(w.member));continue}}let z=Pe(f);if(z){T(n,z.from,z.fromGeneric),T(n,z.to,z.toGeneric);let{fromGeneric:p,toGeneric:d,...x}=z;i.relationships.push(x);continue}}return i.classes=[...n.values()],i}function T(e,t,i){let n=e.get(t);return n?i&&!n.generic&&(n.generic=i,n.label===t&&(n.label=`${t}<${i}>`)):(n={id:t,label:i?`${t}<${i}>`:t,generic:i,attributes:[],methods:[]},e.set(t,n)),n}function $e(e){let t=e.trim().replace(/;$/,"");if(!t)return null;let i="",n=t;/^[+\-#~]/.test(n)&&(i=n[0],n=n.slice(1).trim());let a=n.match(/^(.+?)\(([^)]*)\)(?:\s*(.+))?$/);if(a){let y=a[1].trim(),v=a[2]?.trim()||void 0,S=a[3]?.trim(),k=y.endsWith("$")||n.includes("$"),f=y.endsWith("*")||n.includes("*");return{member:{visibility:i,name:y.replace(/[$*]$/,""),type:S||void 0,isStatic:k,isAbstract:f,isMethod:!0,params:v},isMethod:!0}}let r=n.split(/\s+/),o,s;r.length>=2?(s=r[0],o=r.slice(1).join(" ")):o=r[0]??n;let g=o.endsWith("$"),c=o.endsWith("*");return{member:{visibility:i,name:o.replace(/[$*]$/,""),type:s||void 0,isStatic:g,isAbstract:c,isMethod:!1},isMethod:!1}}function Pe(e){let t=e.match(/^(\S+?)\s+(\(\)--|--\(\))\s+(\S+?)(?:\s*:\s*(.+))?$/);if(t){let b=_(t[1]),u=_(t[3]);return!b||!u?null:{from:b.id,to:u.id,type:"lollipop",markerAt:t[2]==="()--"?"from":"to",...t[4]?.trim()?{label:A(t[4].trim())}:{},...b.generic?{fromGeneric:b.generic}:{},...u.generic?{toGeneric:u.generic}:{}}}let i=e.match(/^(\S+?)\s+(?:"([^"]*?)"\s+)?(<\||\*|o|<|>)(--|\.\.)(\|>|\*|o|>|<)\s+(?:"([^"]*?)"\s+)?(\S+?)(?:\s*:\s*(.+))?$/);if(i){let b=_(i[1]),u=_(i[7]);if(!b||!u)return null;let l=i[4]==="..",h=be(i[3],l),C=be(i[5],l);return{from:b.id,to:u.id,type:h,markerAt:"both",fromType:h,toType:C,...i[2]?{fromCardinality:A(i[2])}:{},...i[6]?{toCardinality:A(i[6])}:{},...i[8]?.trim()?{label:A(i[8].trim())}:{},...b.generic?{fromGeneric:b.generic}:{},...u.generic?{toGeneric:u.generic}:{}}}let n=e.match(/^(\S+?)\s+(?:"([^"]*?)"\s+)?(<\|--|<\|\.\.|\*--|o--|-->|--\*|--o|--\|>|\.\.>|\.\.\|>|<--|<\.\.?|--)\s+(?:"([^"]*?)"\s+)?(\S+?)(?:\s*:\s*(.+))?$/);if(!n)return null;let a=_(n[1]),r=_(n[5]);if(!a||!r)return null;let o=a.id,s=n[2],g=s?A(s):void 0,c=n[3].trim(),y=n[4],v=y?A(y):void 0,S=r.id,k=n[6]?.trim(),f=k?A(k):void 0,$=Fe(c);return $?{from:o,to:S,type:$.type,markerAt:$.markerAt,label:f,fromCardinality:g,toCardinality:v,...a.generic?{fromGeneric:a.generic}:{},...r.generic?{toGeneric:r.generic}:{}}:null}function be(e,t){return e==="*"?"composition":e==="o"?"aggregation":e.includes("|")?t?"realization":"inheritance":t?"dependency":"association"}function Fe(e){switch(e.trim()){case"<|--":return{type:"inheritance",markerAt:"from"};case"--|>":return{type:"inheritance",markerAt:"to"};case"<|..":return{type:"realization",markerAt:"from"};case"..|>":return{type:"realization",markerAt:"to"};case"*--":return{type:"composition",markerAt:"from"};case"--*":return{type:"composition",markerAt:"to"};case"o--":return{type:"aggregation",markerAt:"from"};case"--o":return{type:"aggregation",markerAt:"to"};case"-->":return{type:"association",markerAt:"to"};case"<--":return{type:"association",markerAt:"from"};case"..>":return{type:"dependency",markerAt:"to"};case"<..":return{type:"dependency",markerAt:"from"};case"--":return{type:"association",markerAt:"to"};default:return null}}var I={memberSize:11,memberWeight:400,annotationSize:10,annotationWeight:500};function _e(e){let{positioned:t,colors:i,resolved:n}=e,a=n.renderOptions,r=i.font??"Inter",o=a.transparent??!1,s=[],g=ie(a,he,n.styleFace),c=`class-${me(t.width,t.height,t.classes.length,t.relationships.length)}`,y=`${c}-title`,v=`${c}-desc`,S=pe(t.accessibilityTitle,t.accessibilityDescription,y,v);s.push(le({id:"prelude",width:t.width,height:t.height,colors:i,transparent:o,font:r,hasMonoFont:!0},oe(t.width,t.height,i,o,S)+`
8
+ `+re(r,!0,i.shadow,i.embedFontImport)));let k=[];k.push("<defs>");let f=we(g);k.push(de(f));let $=ne(i);$&&k.push($),k.push("</defs>"),s.push(ae({id:"defs",markerResources:f},k.join(`
9
+ `))),t.accessibilityTitle&&s.push(N({id:"title",role:"chrome"},`<title id="${y}">${H(t.accessibilityTitle)}</title>`)),t.accessibilityDescription&&s.push(N({id:"desc",role:"chrome"},`<desc id="${v}">${H(t.accessibilityDescription)}</desc>`));for(let l of t.namespaces)s.push(We(l,g));let b=new Map;for(let l of t.relationships){let h=`${l.from}->${l.to}`,C=b.get(h)??0;b.set(h,C+1),s.push(Ie(l,g,`rel:${h}#${C}`))}for(let l of t.classes)s.push(Le(l,g,a.security!=="strict"));t.relationships.forEach((l,h)=>{s.push(He(l,g,h))});for(let l=0;l<t.notes.length;l++)s.push(Be(t.notes[l],g,l));let u=new Map;for(let l of t.relationships){let h=`${l.from}->${l.to}`,C=u.get(h)??0;u.set(h,C+1),s.push(...Oe(l,g,`${h}#${C}`))}return s.push(ce()),{family:"class",width:t.width,height:t.height,colors:i,transparent:o,parts:s}}function we(e){let t=e.edgeStrokeColor??"var(--_arrow)",i=[{x:0,y:0},{x:12,y:5},{x:0,y:10}],n=[{x:7,y:1},{x:13,y:6},{x:7,y:11},{x:1,y:6}];return[{id:"cls-inherit",shape:"triangle",size:{width:12,height:10},ref:{x:12,y:5},orient:"auto-start-reverse",overflow:"visible",geometry:{kind:"polygon",points:i},paint:{fill:"var(--bg)",stroke:t,strokeWidth:"1.5"}},{id:"cls-composition",shape:"diamond",size:{width:14,height:12},viewBox:{x:0,y:0,width:14,height:12},ref:{x:13,y:6},orient:"auto-start-reverse",overflow:"hidden",geometry:{kind:"polygon",points:n},paint:{fill:t,stroke:t,strokeWidth:"1"}},{id:"cls-aggregation",shape:"diamond-open",size:{width:14,height:12},viewBox:{x:0,y:0,width:14,height:12},ref:{x:13,y:6},orient:"auto-start-reverse",overflow:"hidden",geometry:{kind:"polygon",points:n},paint:{fill:"var(--bg)",stroke:t,strokeWidth:"1.5"}},{id:"cls-arrow",shape:"open-arrow",size:{width:8,height:6},ref:{x:8,y:3},orient:"auto-start-reverse",overflow:"visible",geometry:{kind:"polyline",points:[{x:0,y:0},{x:8,y:3},{x:0,y:6}]},paint:{fill:"none",stroke:t,strokeWidth:"1.5"}},{id:"cls-lollipop",shape:"circle",size:{width:14,height:14},viewBox:{x:0,y:0,width:14,height:14},ref:{x:12,y:7},orient:"auto-start-reverse",overflow:"hidden",geometry:{kind:"circle",cx:7,cy:7,r:5},paint:{fill:"var(--bg)",stroke:t,strokeWidth:"1.5"}}]}function We(e,t){let i=[],n=`<g class="namespace" data-id="${m(e.id)}" data-label="${m(e.label)}"${e.parentId?` data-parent-id="${m(e.parentId)}"`:""}>`,a=t.groupFillColor??"var(--_group-fill)",r=t.groupBorderColor??"var(--_node-stroke)";i.push({indent:2,node:F({id:`namespace-rect:${e.id}`,role:"group",geometry:{kind:"rect",x:e.x,y:e.y,width:e.width,height:e.height,rx:t.groupCornerRadius,ry:t.groupCornerRadius},paint:{fill:a,stroke:r,strokeWidth:String(t.groupLineWidth)}},`<rect x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" rx="${t.groupCornerRadius}" ry="${t.groupCornerRadius}" fill="${m(a)}" stroke="${m(r)}" stroke-width="${t.groupLineWidth}" />`)});let o=t.groupHeaderFillColor??"var(--_group-hdr)",s=K(e.x,e.y,e.width,e.headerHeight,t.groupCornerRadius);i.push({indent:2,node:F({id:`namespace-header:${e.id}`,role:"group-header",geometry:{kind:"path",d:s},paint:{fill:o,stroke:r,strokeWidth:String(t.groupLineWidth)}},`<path d="${s}" fill="${m(o)}" stroke="${m(r)}" stroke-width="${t.groupLineWidth}" />`)});let g=E(e.label,t.groupTextTransform),c=t.groupTextColor??"var(--_text-sec)";return i.push({indent:2,node:M({id:`namespace-label:${e.id}`,role:"group-header",text:g,x:e.x+t.groupLabelPaddingX,y:e.y+e.headerHeight/2,fontSize:t.groupHeaderFontSize,anchor:"start",paint:{fill:c}},P(g,e.x+t.groupLabelPaddingX,e.y+e.headerHeight/2,t.groupHeaderFontSize,`font-size="${t.groupHeaderFontSize}" font-weight="${t.groupHeaderFontWeight}"${t.groupFont?` font-family="${m(t.groupFont)}"`:""}${t.groupLetterSpacing!==0?` letter-spacing="${t.groupLetterSpacing}"`:""} fill="${m(c)}"`))}),G({id:`namespace:${e.id}`,role:"group",open:n,close:"</g>",children:i})}function Le(e,t,i){let{x:n,y:a,width:r,height:o,headerHeight:s,attrHeight:g}=e,c=[],y=e.annotation?` data-annotation="${m(e.annotation)}"`:"",v=e.className?` ${m(e.className)}`:"",S=e.className?` data-class="${m(e.className)}"`:"",k=i&&e.href?` data-href="${m(e.href)}" role="link" tabindex="0"`:"",f=`<g class="class-node${v}" data-id="${m(e.id)}" data-label="${m(e.label)}"${y}${S}${k}>`,$=e.inlineStyle??{},b=$.fill??t.nodeFillColor??"var(--_node-fill)",u=$.stroke??t.nodeBorderColor??"var(--_node-stroke)",l=Number.parseFloat($["stroke-width"]??""),h=Number.isFinite(l)&&l>0?l:t.nodeLineWidth;c.push({indent:2,node:F({id:`class:${e.id}:box`,role:"class-box",geometry:{kind:"rect",x:n,y:a,width:r,height:o,rx:t.cornerRadius??0,ry:t.cornerRadius??0},paint:{fill:b,stroke:u,strokeWidth:String(h)}},`<rect x="${n}" y="${a}" width="${r}" height="${o}" rx="${t.cornerRadius??0}" ry="${t.cornerRadius??0}" fill="${m(b)}" stroke="${m(u)}" stroke-width="${h}" />`)});let C=$.fill??t.groupHeaderFillColor??"var(--_group-hdr)",W=K(n,a,r,s,t.cornerRadius??0);c.push({indent:2,node:F({id:`class:${e.id}:header`,role:"group-header",geometry:{kind:"path",d:W},paint:{fill:C,stroke:u,strokeWidth:String(h)}},`<path d="${W}" fill="${m(C)}" stroke="${m(u)}" stroke-width="${h}" />`)});let R=a+s/2;if(e.annotation){let d=a+12,x=$.color??t.nodeTextColor??"var(--_text-muted)";c.push({indent:2,node:M({id:`class:${e.id}:annotation`,role:"label",text:`<<${e.annotation}>>`,x:n+r/2,y:d,fontSize:I.annotationSize,anchor:"middle",paint:{fill:x}},`<text x="${n+r/2}" y="${d}" text-anchor="middle" dy="${X}" font-size="${I.annotationSize}" font-weight="${I.annotationWeight}" font-style="italic" fill="${m(x)}">&lt;&lt;${H(e.annotation)}&gt;&gt;</text>`)}),R=a+s/2+6}let L=$.color??t.nodeTextColor??"var(--_text)",B=E(e.label,t.nodeTextTransform);c.push({indent:2,node:M({id:`class:${e.id}:name`,role:"label",text:B,x:n+r/2,y:R,fontSize:t.nodeLabelFontSize,anchor:"middle",paint:{fill:L}},P(B,n+r/2,R,t.nodeLabelFontSize,`text-anchor="middle" font-size="${t.nodeLabelFontSize}" font-weight="${t.nodeLabelFontWeight}"${Re(t.nodeLetterSpacing)} fill="${m(L)}"`))});let D=a+s;c.push({indent:2,node:ve(e.id,"attrs",n,D,r,t)});let z=20;for(let d=0;d<e.attributes.length;d++){let x=e.attributes[d],w=D+4+d*z+z/2;c.push({indent:2,node:Se(x,n+t.nodePaddingX,w,t,`member:${e.id}:${x.name}`)})}let p=D+g;c.push({indent:2,node:ve(e.id,"methods",n,p,r,t)});for(let d=0;d<e.methods.length;d++){let x=e.methods[d],w=p+4+d*z+z/2;c.push({indent:2,node:Se(x,n+t.nodePaddingX,w,t,`member:${e.id}:${x.name}`)})}return G({id:`class:${e.id}`,role:"class-box",open:f,close:"</g>",children:c})}function ve(e,t,i,n,a,r){let o=r.nodeBorderColor??"var(--_node-stroke)",s=Math.min(r.nodeLineWidth,te.innerBox);return F({id:`class:${e}:divider:${t}`,role:"chrome",geometry:{kind:"line",x1:i,y1:n,x2:i+a,y2:n},paint:{stroke:o,strokeWidth:String(s)}},`<line x1="${i}" y1="${n}" x2="${i+a}" y2="${n}" stroke="${m(o)}" stroke-width="${s}" />`)}function Se(e,t,i,n,a){let r=e.isAbstract?' font-style="italic"':"",o=e.isStatic?' text-decoration="underline"':"",s=[];e.visibility&&s.push(`<tspan fill="var(--_text-faint)">${H(e.visibility)} </tspan>`);let g=e.isMethod?`${e.name}(${e.params||""})`:e.name;s.push(`<tspan fill="${m(n.nodeTextColor??"var(--_text-sec)")}">${H(g)}</tspan>`),e.type&&(s.push('<tspan fill="var(--_text-faint)">: </tspan>'),s.push(`<tspan fill="var(--_text-muted)">${H(e.type)}</tspan>`));let c=`${e.visibility?`${e.visibility} `:""}${g}${e.type?`: ${e.type}`:""}`;return M({id:a,role:"member",text:c,x:t,y:i,fontSize:I.memberSize,anchor:"start",paint:{fill:n.nodeTextColor??"var(--_text-sec)"}},`<text x="${t}" y="${i}" class="mono" dy="${X}" font-size="${I.memberSize}" font-weight="${I.memberWeight}"${r}${o}>${s.join("")}</text>`)}function Be(e,t,i){let n=t.groupBorderColor??"var(--_node-stroke)",a=t.groupFillColor??"var(--_group-hdr)",r=t.groupTextColor??"var(--_text)",o=[];return e.targetX!==void 0&&e.targetY!==void 0&&o.push({node:O({id:`class-note:${i}:connector`,role:"relationship",geometry:{kind:"line",x1:e.targetX,y1:e.targetY,x2:e.noteX??e.x,y2:e.noteY??e.y+e.height/2},lineStyle:"dashed",paint:{stroke:n,strokeWidth:"1",strokeDasharray:"4 3"}},`<line class="class-note-connector" x1="${e.targetX}" y1="${e.targetY}" x2="${e.noteX??e.x}" y2="${e.noteY??e.y+e.height/2}" stroke="${m(n)}" stroke-width="1" stroke-dasharray="4 3" />`),indent:2}),o.push({node:F({id:`class-note:${i}:box`,role:"note",geometry:{kind:"rect",x:e.x,y:e.y,width:e.width,height:e.height,rx:2,ry:2},paint:{fill:a,stroke:n,strokeWidth:"1"}},`<rect x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" rx="2" fill="${m(a)}" stroke="${m(n)}" />`),indent:2}),o.push({node:M({id:`class-note:${i}:label`,role:"label",text:e.text,x:e.x+e.width/2,y:e.y+e.height/2,fontSize:12,anchor:"middle",paint:{fill:r}},P(e.text,e.x+e.width/2,e.y+e.height/2,12,`text-anchor="middle" fill="${m(r)}"`)),indent:2}),G({id:`class-note:${i}`,role:"note",open:`<g class="class-note" data-note-index="${i}"${e.for?` data-for="${m(e.for)}"`:""}>`,close:"</g>",children:o})}function Ie(e,t,i){if(e.points.length<2)return O({id:i,role:"relationship",geometry:{kind:"polyline",points:e.points},lineStyle:"invisible",paint:{},endpoints:{from:e.from,to:e.to},relationship:{kind:e.type},labels:e.label?[{text:e.label,...e.labelPosition?{anchor:e.labelPosition}:{}}]:[]},"");let n=e.points.map(h=>`${h.x},${h.y}`).join(" "),a=e.type==="dependency"||e.type==="realization",r=a?' stroke-dasharray="6 4"':"",o=a?"dashed":"solid",s=e.markerAt==="from"||e.markerAt==="both"?e.fromType??e.type:void 0,g=e.markerAt==="to"||e.markerAt==="both"?e.toType??e.type:void 0,c=s?j(s):null,y=g?j(g):null,v=we(t),S=c?v.find(h=>h.id===c):void 0,k=y?v.find(h=>h.id===y):void 0,f=`${c?` marker-start="url(#${c})"`:""}${y?` marker-end="url(#${y})"`:""}`,$=['class="class-relationship"',`data-from="${m(e.from)}"`,`data-to="${m(e.to)}"`,`data-type="${e.type}"`,`data-relation-type="${e.type}"`,`data-marker-at="${e.markerAt}"`];e.label&&$.push(`data-label="${m(e.label)}"`),e.fromCardinality&&$.push(`data-from-cardinality="${m(e.fromCardinality)}"`),e.toCardinality&&$.push(`data-to-cardinality="${m(e.toCardinality)}"`);let b=t.edgeStrokeColor??"var(--_line)",u={stroke:b,strokeWidth:String(t.lineWidth),...a?{strokeDasharray:"6 4"}:{}},l={endpoints:{from:e.from,to:e.to},relationship:{kind:e.type},route:{ownership:"layout",bendRadius:t.edgeBendRadius,labelAnchors:e.labelPosition?[e.labelPosition]:[]},labels:e.label?[{text:e.label,...e.labelPosition?{anchor:e.labelPosition}:{}}]:[]};if(t.edgeBendRadius>0&&e.points.length>2){let h=q(e.points,t.edgeBendRadius,{metric:"manhattan",precision:3});return O({id:i,role:"relationship",geometry:h.geometry,lineStyle:o,paint:u,markers:{...S?{start:S}:{},mid:[],...k?{end:k}:{}},...l,route:{...l.route,contours:h.contours}},`<path ${$.join(" ")} d="${h.geometry.d}" fill="none" stroke="${m(b)}" stroke-width="${t.lineWidth}"${r}${f} />`)}return O({id:i,role:"relationship",geometry:{kind:"polyline",points:e.points},lineStyle:o,paint:u,markers:{...S?{start:S}:{},mid:[],...k?{end:k}:{}},...l},`<polyline ${$.join(" ")} points="${n}" fill="none" stroke="${m(b)}" stroke-width="${t.lineWidth}"${r}${f} />`)}function He(e,t,i){if(e.points.length<2)return N({id:`marker-overlay:${i}`,role:"chrome"},"");let n=e.markerAt==="from"||e.markerAt==="both"?e.fromType??e.type:void 0,a=e.markerAt==="to"||e.markerAt==="both"?e.toType??e.type:void 0,r=n?j(n):null,o=a?j(a):null;if(!r&&!o)return N({id:`marker-overlay:${i}`,role:"chrome"},"");let s=`${r?` marker-start="url(#${r})"`:""}${o?` marker-end="url(#${o})"`:""}`,g=`fill="none" stroke="${m(t.edgeStrokeColor??"var(--_line)")}" stroke-width="${t.lineWidth}" stroke-opacity="0"${s} pointer-events="none" aria-hidden="true"`;if(t.edgeBendRadius>0&&e.points.length>2){let y=q(e.points,t.edgeBendRadius,{metric:"manhattan",precision:3});return N({id:`marker-overlay:${i}`,role:"chrome"},`<path class="class-marker-overlay" d="${y.geometry.d}" ${g} />`)}let c=e.points.map(y=>`${y.x},${y.y}`).join(" ");return N({id:`marker-overlay:${i}`,role:"chrome"},`<polyline class="class-marker-overlay" points="${c}" ${g} />`)}function j(e){switch(e){case"inheritance":case"realization":return"cls-inherit";case"composition":return"cls-composition";case"aggregation":return"cls-aggregation";case"association":case"dependency":return"cls-arrow";case"lollipop":return"cls-lollipop";default:return null}}function Oe(e,t,i){if(!e.label&&!e.fromCardinality&&!e.toCardinality||e.points.length<2)return[N({id:`rel-labels:${i}`,role:"chrome"},"")];let n=[],a=t.edgeTextColor??"var(--_text-muted)",r=`font-size="${t.edgeLabelFontSize}" text-anchor="middle" font-weight="${t.edgeLabelFontWeight}"${Re(t.edgeLetterSpacing)} fill="${m(a)}"`;if(e.label){let o=e.labelPosition??Ee(e.points),s=E(e.label,t.edgeTextTransform);n.push(M({id:`rel-label:${i}`,role:"label",text:s,x:o.x,y:o.y-8,fontSize:t.edgeLabelFontSize,anchor:"middle",paint:{fill:a}},P(s,o.x,o.y-8,t.edgeLabelFontSize,r)))}if(e.fromCardinality){let o=e.points[0],s=e.points[1],g=Ce(o,s),c=e.fromCardinalityPosition??{x:o.x+g.x,y:o.y+g.y};n.push(M({id:`rel-card:${i}:from`,role:"cardinality",text:e.fromCardinality,x:c.x,y:c.y,fontSize:t.edgeLabelFontSize,anchor:"middle",paint:{fill:a}},P(e.fromCardinality,c.x,c.y,t.edgeLabelFontSize,r)))}if(e.toCardinality){let o=e.points[e.points.length-1],s=e.points[e.points.length-2],g=Ce(o,s),c=e.toCardinalityPosition??{x:o.x+g.x,y:o.y+g.y};n.push(M({id:`rel-card:${i}:to`,role:"cardinality",text:e.toCardinality,x:c.x,y:c.y,fontSize:t.edgeLabelFontSize,anchor:"middle",paint:{fill:a}},P(e.toCardinality,c.x,c.y,t.edgeLabelFontSize,r)))}return n}function Ee(e){if(e.length===0)return{x:0,y:0};let t=Math.floor(e.length/2);return e[t]}function Ce(e,t){let i=t.x-e.x,n=t.y-e.y;return Math.abs(i)>Math.abs(n)?{x:i>0?14:-14,y:-10}:{x:-14,y:n>0?14:-14}}function Re(e){return e!==0?` letter-spacing="${e}"`:""}var H=se;var yt=ee(ye,{normalizeRequest:e=>({renderOptions:fe(e.source.frontmatter,e.renderOptions)}),layout:e=>V(ue(J(xe(e.source.familyLines),e.source.accessibility),e.renderOptions,e.styleFace)),lowerScene:Q(_e)});export{yt as default};
@@ -0,0 +1,9 @@
1
+ import{c as it,e as Tt}from"./chunk-TEH2PRKN.js";import"./chunk-GRXCKTHX.js";import{a as ft,b as bt}from"./chunk-W6Q4PHPC.js";import{a as tt}from"./chunk-WEUWIFG3.js";import{d as dt}from"./chunk-A7L4WWVW.js";import"./chunk-EBPTM2RP.js";import"./chunk-KJVNXJ5Y.js";import{a as Et}from"./chunk-M6BT2HIP.js";import{e as K}from"./chunk-QMZ4Y6I7.js";import"./chunk-FFOHLPDA.js";import{a as vt}from"./chunk-I6VE56S7.js";import{a as _t}from"./chunk-OFRMKQA6.js";import{b as at,c as ct,e as lt}from"./chunk-FLD63DXE.js";import{a as A,b as mt,c as X,d as V,e as C,f as N,j as z,k as Y}from"./chunk-32FWKUUV.js";import{a as pt,b as ht,c as yt}from"./chunk-EPFMQPXX.js";import{G as gt,H as ut,I as xt,L as O,N as $t,O as R,P as G,fa as kt,i as L,ia as P,ja as U,ka as F,la as et,na as St,oa as wt,pa as j,qa as Rt}from"./chunk-EX6TP7QM.js";import"./chunk-P7HMSKHJ.js";var Bt=Object.freeze({id:"er",upstreamId:"er",maturity:"stable",label:"ER",headers:["erDiagram"],aliases:[],config:{section:"er",keys:["layoutDirection","nodeSpacing","rankSpacing","titleTopMargin","diagramPadding","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","fontSize"],noopKeys:["diagramPadding","entityPadding","fill","fontSize","minEntityHeight","minEntityWidth","stroke","titleTopMargin"]},identity:{id:"family:er",kind:"family",version:"1.0.0",compatibility:{core:"^0.3.0"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["category"],semanticRoles:["prelude","defs","chrome","group","group-header","entity","attribute","relationship","cardinality","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"entity",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"entity",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"attribute",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"attribute",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"relationship",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"cardinality",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`erDiagram
2
+ CUSTOMER ||--o{ ORDER : places
3
+ ORDER {
4
+ string id
5
+ }`,detect:t=>/^erdiagram(?:\s+subgraph\b.*)?\s*$/.test(t),detectLoose:t=>/^erdiagram(?:\s|$)/.test(t)}),Mt=Bt;var _={padding:40,boxPadX:14,headerHeight:34,rowHeight:22,minWidth:140,attrFontSize:11,attrFontWeight:400,nodeSpacing:70,layerSpacing:90},nt={nodeLabelFontSize:X.nodeLabel,edgeLabelFontSize:X.edgeLabel,groupHeaderFontSize:X.groupHeader,nodeLabelFontWeight:700,edgeLabelFontWeight:V.edgeLabel,groupHeaderFontWeight:V.groupHeader,nodePaddingX:_.boxPadX,nodePaddingY:8,nodeCornerRadius:0,nodeLineWidth:C.outerBox,edgeLineWidth:C.connector,groupCornerRadius:0,groupPaddingX:_.boxPadX,groupPaddingY:8,groupLineWidth:C.outerBox};function Dt(t,e){if(!e)return t;let o=dt(e,["er","layoutDirection"]),i=typeof o=="string"&&/^(TB|TD|BT|LR|RL)$/i.test(o)?o.toUpperCase():void 0;return t.direction===void 0&&i!==void 0?{...t,direction:i}:t}function Pt(t,e){if(!t)return e;let o=it(t,"er","nodeSpacing"),i=it(t,"er","rankSpacing");return o===void 0&&i===void 0?e:{...e,nodeSpacing:e.nodeSpacing??o,layerSpacing:e.layerSpacing??i}}function At(t,e,o){let i=Y(e,nt,o),r=new Map;for(let a of t.entities){let l=z(a.label,i.nodeTextTransform),y=A(l,i.nodeLabelFontSize,i.nodeLabelFontWeight),d=0;for(let b of a.attributes){let f=`${b.type} ${b.name}${b.keys.length>0?" "+b.keys.join(","):""}`,n=mt(f,_.attrFontSize);n>d&&(d=n)}let c=Math.max(_.minWidth,y+i.nodePaddingX*2,d+i.nodePaddingX*2),x=Math.max(_.headerHeight,L(l,i.nodeLabelFontSize,i.nodeLabelFontWeight).height+i.nodePaddingY*2),g=x+Math.max(a.attributes.length,1)*_.rowHeight;r.set(a.id,{width:c,height:g,headerHeight:x})}let s={id:"root",layoutOptions:{"elk.algorithm":"layered","elk.direction":bt(t.direction??"LR"),"elk.spacing.nodeNode":String(e.nodeSpacing??_.nodeSpacing),"elk.layered.spacing.nodeNodeBetweenLayers":String(e.layerSpacing??_.layerSpacing),"elk.padding":`[top=${_.padding},left=${_.padding},bottom=${_.padding},right=${_.padding}]`,"elk.edgeRouting":"ORTHOGONAL","elk.edgeLabels.placement":"CENTER"},children:[],edges:[]};for(let a of t.entities){let l=r.get(a.id);s.children.push({id:a.id,width:l.width,height:l.height})}let h=new Set(t.entities.map(a=>a.id));for(let a=0;a<t.relationships.length;a++){let l=t.relationships[a];if(!h.has(l.entity1)||!h.has(l.entity2))continue;let y={id:`e${a}`,sources:[l.entity1],targets:[l.entity2]};if(l.label){let d=z(l.label,i.edgeTextTransform),c=L(d,i.edgeLabelFontSize,i.edgeLabelFontWeight);y.labels=[{text:d,width:c.width+8,height:c.height+6}]}s.edges.push(y)}return{elkGraph:s,entitySizes:r}}function Xt(t,e,o){let i=new Map;for(let n of e.entities)i.set(n.id,n);let r=[];for(let n of t.children??[]){let p=i.get(n.id);p&&r.push({id:p.id,label:p.label,attributes:p.attributes,x:n.x??0,y:n.y??0,width:n.width??o.get(p.id).width,height:n.height??o.get(p.id).height,headerHeight:o.get(p.id).headerHeight,rowHeight:_.rowHeight,...p.className?{className:p.className}:{},...p.className&&e.classDefs.get(p.className)||p.inlineStyle?{inlineStyle:{...p.className?e.classDefs.get(p.className):{},...p.inlineStyle}}:{},...p.groupId?{groupId:p.groupId}:{}})}let s=Yt(e,r),h=Gt(e,r),a=new Map;r.forEach(n=>a.set(n.id,n)),h.forEach(n=>a.set(n.id,n));let l=new Map((t.edges??[]).map(n=>[n.id,n])),y=[];for(let n=0;n<e.relationships.length;n++){let p=e.relationships[n],u=s.has(p.entity1)||s.has(p.entity2)?void 0:l.get(`e${n}`),m=[];if(u?.sections?.length){let $=u.sections[0];m.push({x:$.startPoint.x,y:$.startPoint.y});for(let S of $.bendPoints??[])m.push({x:S.x,y:S.y});m.push({x:$.endPoint.x,y:$.endPoint.y})}else{let $=a.get(p.entity1),S=a.get(p.entity2);if($&&S){let E={x:$.x+$.width/2,y:$.y+$.height/2},w={x:S.x+S.width/2,y:S.y+S.height/2},k=q($,w),v=q(S,E);if(m.push(k),Math.abs(k.x-v.x)>.5&&Math.abs(k.y-v.y)>.5)if(Math.abs(w.x-E.x)>=Math.abs(w.y-E.y)){let M=(k.x+v.x)/2;m.push({x:M,y:k.y},{x:M,y:v.y})}else{let M=(k.y+v.y)/2;m.push({x:k.x,y:M},{x:v.x,y:M})}m.push(v)}}y.push({entity1:p.entity1,entity2:p.entity2,cardinality1:p.cardinality1,cardinality2:p.cardinality2,label:p.label,identifying:p.identifying,points:m})}let d=[...r.flatMap(n=>[n.x,n.x+n.width]),...h.flatMap(n=>[n.x,n.x+n.width]),...y.flatMap(n=>n.points.map(p=>p.x))],c=[...r.flatMap(n=>[n.y,n.y+n.height]),...h.flatMap(n=>[n.y,n.y+n.height]),...y.flatMap(n=>n.points.map(p=>p.y))],x=d.length>0&&Math.min(...d)<_.padding?_.padding-Math.min(...d):0,g=c.length>0&&Math.min(...c)<_.padding?_.padding-Math.min(...c):0;if(x!==0||g!==0){for(let n of r)n.x+=x,n.y+=g;for(let n of h)n.x+=x,n.y+=g;for(let n of y)for(let p of n.points)p.x+=x,p.y+=g}let b=Math.max((t.width??600)+x,...r.map(n=>n.x+n.width+_.padding),...h.map(n=>n.x+n.width+_.padding),...y.flatMap(n=>n.points.map(p=>p.x+_.padding))),f=Math.max((t.height??400)+g,...r.map(n=>n.y+n.height+_.padding),...h.map(n=>n.y+n.height+_.padding),...y.flatMap(n=>n.points.map(p=>p.y+_.padding)));return{width:b,height:f,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,entities:r,relationships:y,groups:h}}function q(t,e){let o={x:t.x+t.width/2,y:t.y+t.height/2},i=e.x-o.x,r=e.y-o.y;return Math.abs(i)*t.height>=Math.abs(r)*t.width?{x:i>=0?t.x+t.width:t.x,y:o.y+r/(Math.abs(i)||1)*t.width/2}:{x:o.x+i/(Math.abs(r)||1)*t.height/2,y:r>=0?t.y+t.height:t.y}}function Yt(t,e){let o=new Set;for(let i of t.groups){if(!i.direction)continue;let r=i.entityIds.map(d=>e.find(c=>c.id===d)).filter(d=>!!d);if(r.length<2)continue;for(let d of r)o.add(d.id);let s=i.direction==="LR"||i.direction==="RL",h=i.direction==="RL"||i.direction==="BT"?[...r].reverse():r,a=Math.min(...r.map(d=>d.x)),l=Math.min(...r.map(d=>d.y)),y=s?a:l;for(let d of h)s?(d.x=y,d.y=l,y+=d.width+48):(d.x=a,d.y=y,y+=d.height+48)}return o}function Gt(t,e){let o=[];for(let i of[...t.groups].reverse()){let r=[...e.filter(c=>c.groupId===i.id),...o.filter(c=>c.parentId===i.id)],s=20,h=28,a=r.length?Math.min(...r.map(c=>c.x))-s:_.padding,l=r.length?Math.min(...r.map(c=>c.y))-s-h:_.padding,y=r.length?Math.max(...r.map(c=>c.x+c.width))+s:a+140,d=r.length?Math.max(...r.map(c=>c.y+c.height))+s:l+90;o.unshift({id:i.id,label:i.label,...i.parentId?{parentId:i.parentId}:{},x:a,y:l,width:y-a,height:d-l,headerHeight:h})}return o}function Ut(t){let e=(t.direction??"LR")==="LR"||(t.direction??"LR")==="RL",o=t.direction==="RL"||t.direction==="BT",i=t.groups.filter(c=>!c.parentId),r=o?[...i].reverse():i,s=[],h=(c,x,g)=>{let f=t.groups.filter(m=>m.parentId===c.parentId).findIndex(m=>m.id===c.id),n=g?g.x+20+f*150:_.padding+(e?x*200:0),p=g?g.y+36+f*80:_.padding+(e?0:x*130),u={id:c.id,label:c.label,...c.parentId?{parentId:c.parentId}:{},x:n,y:p,width:160,height:100,headerHeight:28};s.push(u);for(let[m,$]of t.groups.filter(S=>S.parentId===c.id).entries())h($,m,u)};r.forEach((c,x)=>h(c,x));let a=new Map(s.map(c=>[c.id,c])),l=t.relationships.map(c=>{let x=a.get(c.entity1),g=a.get(c.entity2),b=[];if(x&&g){let f={x:x.x+x.width/2,y:x.y+x.height/2},n={x:g.x+g.width/2,y:g.y+g.height/2},p=q(x,n),u=q(g,f);if(b.push(p),Math.abs(p.x-u.x)>.5&&Math.abs(p.y-u.y)>.5){let m=e?(p.x+u.x)/2:(p.y+u.y)/2;e?b.push({x:m,y:p.y},{x:m,y:u.y}):b.push({x:p.x,y:m},{x:u.x,y:m})}b.push(u)}return{entity1:c.entity1,entity2:c.entity2,cardinality1:c.cardinality1,cardinality2:c.cardinality2,label:c.label,identifying:c.identifying,points:b}}),y=Math.max(...s.map(c=>c.x+c.width+_.padding),0),d=Math.max(...s.map(c=>c.y+c.height+_.padding),0);return{width:y,height:d,accessibilityTitle:t.accessibilityTitle,accessibilityDescription:t.accessibilityDescription,entities:[],relationships:l,groups:s}}function Ft(t,e={},o){if(t.entities.length===0)return t.groups.length>0?Ut(t):{width:0,height:0,accessibilityTitle:t.accessibilityTitle,accessibilityDescription:t.accessibilityDescription,entities:[],relationships:[],groups:[]};let{elkGraph:i,entitySizes:r}=At(t,e,o),s=ft(i);return Xt(s,t,r)}var Lt=String.raw`[A-Za-z0-9_][\w.-]*`,jt=String.raw`"(?:\\.|[^"\\])+"`,Ct=`(?:${jt}|${Lt})`,$e=new RegExp(`^${Lt}$`),ot=`${Ct}(?:\\[\\s*(?:"(?:\\\\.|[^"\\\\])*"|[^\\]"\\r\\n]+)\\s*\\])?(?::::[\\w-]+)?`;function I(t){let e=new RegExp(`^(${Ct})(?:\\[\\s*(?:"((?:\\\\.|[^"\\\\])*)"|([^\\]"\\r\\n]+))\\s*\\])?(?::::([\\w-]+))?$`),o=t.trim().match(e);if(!o)return null;let i=o[1].startsWith('"'),r=i?o[1].slice(1,-1).replace(/\\(["\\])/g,"$1"):o[1],s=(o[2]??o[3]?.trim())?.replace(/\\(["\\])/g,"$1");return{id:r,...s!==void 0?{label:Z(s)}:i?{label:Z(r)}:{},...o[4]?{className:o[4]}:{}}}function Z(t){return O(t).replace(/\*\*([\s\S]+?)\*\*/g,"<b>$1</b>").replace(/_([^_\n]+)_/g,"<i>$1</i>").replace(/(?<!\*)\*([^*\n]+)\*(?!\*)/g,"<i>$1</i>")}function Kt(t){let e=t.match(/^subgraph\s+("(?:\\.|[^"])+"|\S+?)(?:\s*\[([^\]]+)\])?$/i);if(!e)return null;let o=e[1],r=o.startsWith('"')?o.slice(1,-1).replace(/\\(["\\])/g,"$1"):o;return{id:r,label:Z(e[2]?.trim()||r)}}function Wt(t){let e=at(t);ct(e),t=e.familyLines;let o={entities:[],classDefs:new Map,relationships:[],groups:[],...e.accessibility.title!==void 0?{accessibilityTitle:O(e.accessibility.title)}:{},...e.accessibility.descr!==void 0?{accessibilityDescription:O(e.accessibility.descr)}:{}},i=new Map,r=null,s=[],h=new Map,a=()=>s.at(-1);for(let l=1;l<t.length;l++){let y=t[l];if(r){if(y==="}"){r=null;continue}let u=qt(y);u&&r.attributes.push(u);continue}let d=Kt(y);if(d){if(h.has(d.id))throw new Error(`Duplicate ER subgraph id '${d.id}'`);let u={...d,...a()?{parentId:a()}:{},entityIds:[]};h.set(u.id,u),o.groups.push(u),s.push(u.id);continue}if(y==="end"&&s.length>0){s.pop();continue}let c=Tt(y);if(c){let u=a()?h.get(a()):void 0;u?u.direction=c:o.direction=c;continue}let x=y.match(/^classDef\s+([\w,-]+)\s+(.+)$/i);if(x){let u=tt(x[2]);for(let m of x[1].split(",").map($=>$.trim()).filter(Boolean))o.classDefs.set(m,{...u});continue}let g=y.match(/^class\s+(.+?)\s+([\w-]+)$/i);if(g){let u=g[1].split(",").map(m=>I(m.trim())?.id).filter(m=>m!==void 0);for(let m of u)W(i,m).className=g[2];continue}let b=y.match(/^style\s+(.+?)\s+(.+)$/i);if(b){let u=b[1].split(",").map($=>I($.trim())?.id).filter($=>$!==void 0),m=tt(b[2]);for(let $ of u){let S=W(i,$);S.inlineStyle={...S.inlineStyle,...m}}continue}let f=y.match(new RegExp(`^(${ot})\\s*\\{$`));if(f){let u=I(f[1]);if(!u)continue;let m=W(i,u.id,u.label,u.className,a());a()&&h.get(a())?.entityIds.push(u.id),r=m;continue}let n=Qt(y);if(n){h.has(n.entity1)||W(i,n.entity1,n.entity1Label,n.entity1Class,a()),h.has(n.entity2)||W(i,n.entity2,n.entity2Label,n.entity2Class,a()),o.relationships.push(n);continue}let p=I(y);p&&(W(i,p.id,p.label,p.className,a()),a()&&h.get(a())?.entityIds.push(p.id))}return o.entities=[...i.values()],o}function W(t,e,o,i,r){let s=t.get(e);return s?(o!==void 0&&(s.label=o),i!==void 0&&(s.className=i),r!==void 0&&s.groupId===void 0&&(s.groupId=r)):(s={id:e,label:o??e,attributes:[],...i?{className:i}:{},...r?{groupId:r}:{}},t.set(e,s)),s}function qt(t){let e=t.match(/^(\S+)\s+(\S+)(?:\s+(.+))?$/);if(!e)return null;let o=e[1],i=e[2],r=e[3]?.trim()??"",s=[],h,a=r.match(/"([^"]*)"/);a&&(h=O(a[1]));let l=r.replace(/"[^"]*"/,"").trim();for(let y of l.split(/[\s,]+/)){let d=y.toUpperCase();(d==="PK"||d==="FK"||d==="UK")&&s.push(d)}return{type:o,name:i,keys:s,comment:h}}function Zt(t){let e=new RegExp(`^(${ot})\\s+([|o}{]+)(--|\\.\\.)([|o}{]+)\\s+(${ot})(?:\\s*:\\s*(.*))?$`),o=t.match(e);if(!o)return null;let i=I(o[1]),r=I(o[5]);if(!i||!r)return null;let s=(o[6]??"").trim().replace(/^["']|["']$/g,"");return{entity1:i,entity2:r,leftToken:o[2],rightToken:o[4],identifying:o[3]==="--",label:Z(s)}}function Qt(t){let e=Zt(t);if(!e)return null;let o=zt(e.leftToken),i=zt(e.rightToken);if(!o||!i)throw new Error(`Invalid ER cardinality "${e.leftToken}${e.identifying?"--":".."}${e.rightToken}" in "${t}" (valid tokens on either side: ||, |o, o|, }o, o{, }|, |{)`);return{entity1:e.entity1.id,entity2:e.entity2.id,...e.entity1.label!==void 0?{entity1Label:e.entity1.label}:{},...e.entity2.label!==void 0?{entity2Label:e.entity2.label}:{},...e.entity1.className!==void 0?{entity1Class:e.entity1.className}:{},...e.entity2.className!==void 0?{entity2Class:e.entity2.className}:{},cardinality1:o,cardinality2:i,label:e.label,identifying:e.identifying}}function zt(t){switch(t){case"||":return"one";case"|o":case"o|":return"zero-one";case"}|":case"|{":return"many";case"}o":case"o{":return"zero-many";default:return null}}var D={attrSize:11,attrWeight:400,keySize:9,keyWeight:600};function Nt(t){let{positioned:e,colors:o,resolved:i}=t,r=i.renderOptions,s=o.font??"Inter",h=r.transparent??!1,a=[],l=Y(r,nt,i.styleFace),y=`er-${vt(e.width,e.height,e.entities.length,e.relationships.length)}`,d=`${y}-title`,c=`${y}-desc`,x=_t(e.accessibilityTitle,e.accessibilityDescription,d,c);a.push(Rt({id:"prelude",width:e.width,height:e.height,colors:o,transparent:h,font:s,hasMonoFont:!0},xt(e.width,e.height,o,h,x)+`
6
+ `+ut(s,!0,o.shadow,o.embedFontImport)));let g=[];g.push("<defs>");let b=gt(o);b&&g.push(b),g.push("</defs>"),a.push(St({id:"defs"},g.join(`
7
+ `))),e.accessibilityTitle&&a.push(et({id:"acc-title",role:"chrome"},`<title id="${d}">${H(e.accessibilityTitle)}</title>`)),e.accessibilityDescription&&a.push(et({id:"acc-desc",role:"chrome"},`<desc id="${c}">${H(e.accessibilityDescription)}</desc>`));for(let m of e.groups)a.push(Jt(m,l));let f=new Map;for(let m of e.relationships){let $=`${m.entity1}-${m.entity2}`,S=f.get($)??0;f.set($,S+1),a.push(ee(m,l,i.styleFace,`rel:${$}#${S}`))}for(let m of e.entities)a.push(Vt(m,l));let n=new Map;for(let m of e.relationships){let $=`${m.entity1}-${m.entity2}`,S=n.get($)??0;n.set($,S+1),a.push(...oe(m,l,`card:${$}#${S}`))}let p=ie(e,l,i.styleFace),u=new Map;for(let m of e.relationships){let $=`${m.entity1}-${m.entity2}`,S=u.get($)??0;u.set($,S+1),a.push(...ne(m,l,i.styleFace,`rel-label:${$}#${S}`,p.get(m)))}return a.push(wt()),{family:"er",width:e.width,height:e.height,colors:o,transparent:h,parts:a}}function Jt(t,e){let o=e.groupBorderColor??"var(--_node-stroke)",i=e.groupFillColor??"var(--_group-fill)",r=e.groupHeaderFillColor??"var(--_group-hdr)",s=e.groupTextColor??"var(--_text)";return j({id:`er-group:${t.id}`,role:"group",open:`<g class="er-subgraph" data-id="${R(t.id)}" data-label="${R(t.label)}"${t.parentId?` data-parent-id="${R(t.parentId)}"`:""}>`,close:"</g>",children:[{node:P({id:`er-group:${t.id}:box`,role:"group",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:6,ry:6},paint:{fill:i,stroke:o,strokeWidth:"1.5"}},`<rect x="${t.x}" y="${t.y}" width="${t.width}" height="${t.height}" rx="6" fill="${R(i)}" stroke="${R(o)}" stroke-width="1.5" />`),indent:2},{node:P({id:`er-group:${t.id}:header`,role:"group-header",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.headerHeight,rx:6,ry:6},paint:{fill:r,stroke:"none"}},`<rect x="${t.x}" y="${t.y}" width="${t.width}" height="${t.headerHeight}" rx="6" fill="${R(r)}" />`),indent:2},{node:F({id:`er-group:${t.id}:label`,role:"label",text:t.label,x:t.x+10,y:t.y+t.headerHeight/2,fontSize:12,anchor:"start",paint:{fill:s}},G(t.label,t.x+10,t.y+t.headerHeight/2,12,`text-anchor="start" font-weight="600" fill="${R(s)}"`)),indent:2}]})}function Vt(t,e){let{id:o,x:i,y:r,width:s,height:h,headerHeight:a,rowHeight:l,label:y,attributes:d}=t,c=[],x=t.className?` ${R(t.className)}`:"",g=t.className?` data-class="${R(t.className)}"`:"",b=`<g class="entity${x}" data-id="${R(o)}" data-label="${R(y)}"${g}>`,f=t.inlineStyle??{},n=f.fill??e.nodeFillColor??"var(--_node-fill)",p=f.stroke??e.nodeBorderColor??"var(--_node-stroke)",u=Number.parseFloat(f["stroke-width"]??""),m=Number.isFinite(u)&&u>0?u:e.nodeLineWidth;c.push({indent:2,node:P({id:`entity-rect:${o}`,role:"entity",geometry:{kind:"rect",x:i,y:r,width:s,height:h,rx:e.cornerRadius??0,ry:e.cornerRadius??0},paint:{fill:n,stroke:p,strokeWidth:String(m)}},`<rect x="${i}" y="${r}" width="${s}" height="${h}" rx="${e.cornerRadius??0}" ry="${e.cornerRadius??0}" fill="${R(n)}" stroke="${R(p)}" stroke-width="${m}" />`)});let $=f.fill??e.groupHeaderFillColor??"var(--_group-hdr)",S=Et(i,r,s,a,e.cornerRadius??0);c.push({indent:2,node:P({id:`entity-header:${o}`,role:"group-header",geometry:{kind:"path",d:S},paint:{fill:$,stroke:p,strokeWidth:String(m)}},`<path d="${S}" fill="${R($)}" stroke="${R(p)}" stroke-width="${m}" />`)});let E=f.color??e.nodeTextColor??"var(--_text)",w=z(y,e.nodeTextTransform);c.push({indent:2,node:F({id:`entity-name:${o}`,role:"label",text:w,x:i+s/2,y:r+a/2,fontSize:e.nodeLabelFontSize,anchor:"middle",paint:{fill:E}},G(w,i+s/2,r+a/2,e.nodeLabelFontSize,`text-anchor="middle" font-size="${e.nodeLabelFontSize}" font-weight="${e.nodeLabelFontWeight}"${Ht(e.nodeLetterSpacing)} fill="${R(E)}"`))});let k=r+a,v=Math.min(e.nodeLineWidth,C.innerBox);c.push({indent:2,node:P({id:`entity-divider:${o}`,role:"chrome",geometry:{kind:"line",x1:i,y1:k,x2:i+s,y2:k},paint:{stroke:p,strokeWidth:String(v)}},`<line x1="${i}" y1="${k}" x2="${i+s}" y2="${k}" stroke="${R(p)}" stroke-width="${v}" />`)});for(let T=0;T<d.length;T++){let M=d[T],Q=k+T*l+l/2;for(let B of te(M,o,i,Q,s,e))c.push({indent:2,node:B})}if(d.length===0){let T=e.nodeTextColor??"var(--_text-faint)";c.push({indent:2,node:F({id:`entity-empty:${o}`,role:"attribute",text:"(no attributes)",x:i+s/2,y:k+l/2,fontSize:D.attrSize,anchor:"middle",paint:{fill:T}},`<text x="${i+s/2}" y="${k+l/2}" text-anchor="middle" dy="${N}" font-size="${D.attrSize}" fill="${R(T)}" font-style="italic">(no attributes)</text>`)})}return j({id:`entity:${o}`,role:"entity",open:b,close:"</g>",children:c})}function te(t,e,o,i,r,s){let h=[],a=`attr:${e}:${t.name}`,l=s.nodeTextColor??"var(--_text-sec)",y=s.nodeTextColor??"var(--_text-muted)",d=0;if(t.keys.length>0){let b=t.keys.join(",");d=A(b,D.keySize,D.keyWeight)+8;let f=o+Math.max(6,s.nodePaddingX/2);h.push(P({id:`${a}:key-badge`,role:"chrome",geometry:{kind:"rect",x:f,y:i-7,width:d,height:14,rx:2,ry:2},paint:{fill:"var(--_key-badge)"}},`<rect x="${f}" y="${i-7}" width="${d}" height="14" rx="2" ry="2" fill="var(--_key-badge)" />`)),h.push(F({id:`${a}:key-text`,role:"attribute",text:b,x:f+d/2,y:i,fontSize:D.keySize,anchor:"middle",paint:{fill:l}},`<text x="${f+d/2}" y="${i}" text-anchor="middle" dy="${N}" font-size="${D.keySize}" font-weight="${D.keyWeight}" fill="${R(l)}">${t.keys.join(",")}</text>`))}let c=o+Math.max(8,s.nodePaddingX/2)+(d>0?d+6:0);h.push(F({id:`${a}:type`,role:"attribute",text:t.type,x:c,y:i,fontSize:D.attrSize,anchor:"start",paint:{fill:y}},`<text x="${c}" y="${i}" class="mono" dy="${N}" font-size="${D.attrSize}" font-weight="${D.attrWeight}"><tspan fill="${R(y)}">${H(t.type)}</tspan></text>`));let x=o+r-Math.max(8,s.nodePaddingX/2);if(h.push(F({id:a,role:"attribute",text:t.name,x,y:i,fontSize:D.attrSize,anchor:"end",paint:{fill:l}},`<text x="${x}" y="${i}" class="mono" text-anchor="end" dy="${N}" font-size="${D.attrSize}" font-weight="${D.attrWeight}"><tspan fill="${R(l)}">${H(t.name)}</tspan></text>`)),t.comment&&t.comment.length>0){let b=t.comment.replace(/<br\s*\/?>/gi,`
8
+ `);return[j({id:`${a}:row`,role:"attribute",open:`<g><title>${H(b)}</title>`,close:"</g>",children:h.map(f=>({node:f,indent:0}))})]}return h}function ee(t,e,o,i){let r=t.identifying?"solid":"dashed",s={category:t.identifying?"identifying":"non-identifying"},h=K(o,"relationship",s,{includeFallback:!1}),a=h?.bendRadius??e.edgeBendRadius,l={endpoints:{from:t.entity1,to:t.entity2},relationship:{kind:t.identifying?"identifying":"non-identifying"},route:{ownership:"layout",bendRadius:a},labels:t.label?[{text:t.label}]:[]};if(t.points.length<2)return U({id:i,role:"relationship",geometry:{kind:"polyline",points:t.points},lineStyle:"invisible",paint:{},channels:s,...l},"");let y=t.points.map(n=>`${n.x},${n.y}`).join(" "),d=t.identifying?"":' stroke-dasharray="6 4"',c=t.label?` data-label="${R(t.label)}"`:"",x=['class="er-relationship"',`data-from="${R(t.entity1)}"`,`data-to="${R(t.entity2)}"`,`data-cardinality1="${t.cardinality1}"`,`data-cardinality2="${t.cardinality2}"`,`data-identifying="${t.identifying}"`],g=h?.strokeColor??e.edgeStrokeColor??"var(--_line)",b=h?.lineWidth??e.lineWidth,f={stroke:g,strokeWidth:String(b),...t.identifying?{}:{strokeDasharray:"6 4"}};if(a>0&&t.points.length>2){let n=kt(t.points,a,{metric:"manhattan",precision:3});return U({id:i,role:"relationship",geometry:n.geometry,lineStyle:r,paint:f,channels:s,...l,route:{...l.route,contours:n.contours}},`<path ${x.join(" ")}${c} d="${n.geometry.d}" fill="none" stroke="${R(g)}" stroke-width="${b}"${d} />`)}return U({id:i,role:"relationship",geometry:{kind:"polyline",points:t.points},lineStyle:r,paint:f,channels:s,...l},`<polyline ${x.join(" ")}${c} points="${y}" fill="none" stroke="${R(g)}" stroke-width="${b}"${d} />`)}function ie(t,e,o){let i=new Map,r=(l,y)=>Math.min(l.x1,y.x1)-Math.max(l.x0,y.x0)>.5&&Math.min(l.y1,y.y1)-Math.max(l.y0,y.y0)>.5,s=t.entities.map(l=>({x0:l.x,y0:l.y,x1:l.x+l.width,y1:l.y+l.height})),h=t.relationships.flatMap(l=>l.points.length===0?[]:[l.points[0],l.points[l.points.length-1]].map(d=>({x0:d.x-18,y0:d.y-18,x1:d.x+18,y1:d.y+18}))),a=[];for(let l of t.relationships){if(!l.label||l.points.length<2)continue;let y=K(o,"relationship",{category:l.identifying?"identifying":"non-identifying"},{includeFallback:!1}),d=L(z(l.label,y?.textTransform??e.edgeTextTransform),y?.fontSize??e.edgeLabelFontSize,y?.fontWeight??e.edgeLabelFontWeight,y?.letterSpacing??e.edgeLetterSpacing),c=d.width+16,x=d.height+16,g=(E,w)=>({x0:E-c/2,y0:w-x/2,x1:E+c/2,y1:w+x/2}),b=E=>E.x0<0||E.y0<0||E.x1>t.width||E.y1>t.height||a.some(w=>r(E,w))||s.some(w=>r(E,w))||h.some(w=>r(E,w)),f=l.points,n=[],p=0;for(let E=1;E<f.length;E++){let w=Math.hypot(f[E].x-f[E-1].x,f[E].y-f[E-1].y);n.push(w),p+=w}let u=E=>{let w=E;for(let k=0;k<n.length;k++){if(w<=n[k]||k===n.length-1){let v=n[k]===0?0:Math.max(0,Math.min(1,w/n[k]));return{x:f[k].x+(f[k+1].x-f[k].x)*v,y:f[k].y+(f[k+1].y-f[k].y)*v}}w-=n[k]}return f[f.length-1]},m=Ot(f),$={x:m.x,y:m.y},S=g(m.x,m.y);if(b(S))for(let E of[.4,.6,.3,.7,.25,.75,.2,.8,.15,.85]){let w=u(p*E),k=g(w.x,w.y);if(!b(k)){$=w,S=k;break}}if(b(S)){let E=f[0],w=f[f.length-1],k=w.x-E.x,v=w.y-E.y,T=Math.hypot(k,v)||1,M=-v/T,Q=k/T,B=Math.max(18,x+6);for(let rt of[1,-1,2,-2,3,-3]){let J={x:m.x+M*B*rt,y:m.y+Q*B*rt},st=g(J.x,J.y);if(!b(st)){$=J,S=st;break}}}a.push(S),i.set(l,$)}return i}function ne(t,e,o,i,r){if(!t.label||t.points.length<2)return[];let s={category:t.identifying?"identifying":"non-identifying"},h=K(o,"relationship",s,{includeFallback:!1}),a=h?.fontSize??e.edgeLabelFontSize,l=h?.fontWeight??e.edgeLabelFontWeight,y=h?.letterSpacing??e.edgeLetterSpacing,d=r??Ot(t.points),c=z(t.label,h?.textTransform??e.edgeTextTransform),x=L(c,a,l,y),g=x.width+8,b=x.height+6,f=P({id:`${i}:bg`,role:"chrome",geometry:{kind:"rect",x:d.x-g/2,y:d.y-b/2,width:g,height:b,rx:2,ry:2},paint:{fill:"var(--bg)",stroke:"var(--_inner-stroke)",strokeWidth:"0.5"},channels:s},`<rect x="${d.x-g/2}" y="${d.y-b/2}" width="${g}" height="${b}" rx="2" ry="2" fill="var(--bg)" stroke="var(--_inner-stroke)" stroke-width="0.5" />`),n=h?.textColor??e.edgeTextColor??"var(--_text-muted)",p=F({id:i,role:"label",text:c,x:d.x,y:d.y,fontSize:a,anchor:"middle",paint:{fill:n},channels:s},G(c,d.x,d.y,a,`text-anchor="middle" font-size="${a}" font-weight="${l}"${Ht(y)} fill="${R(n)}"`));return[f,p]}function oe(t,e,o){if(t.points.length<2)return[P({id:o,role:"cardinality",geometry:{kind:"compound",children:[]},paint:{}},"")];let i=t.points[0],r=t.points[1],s=t.points[t.points.length-1],h=t.points[t.points.length-2];return[It(i,r,t.cardinality1,e,`${o}:1`),It(s,h,t.cardinality2,e,`${o}:2`)]}function It(t,e,o,i,r){let s=re(t,e,o,i);return P({id:r,role:"cardinality",geometry:{kind:"compound",children:s.map(h=>h.geometry)},paint:{stroke:i.edgeStrokeColor??"var(--_line)",strokeWidth:String(i.lineWidth+.25)},channels:{category:o}},s.map(h=>h.crisp).join(`
9
+ `))}function re(t,e,o,i){let r=[],s=i.lineWidth+.25,h=R(i.edgeStrokeColor??"var(--_line)"),a=t.x-e.x,l=t.y-e.y,y=Math.sqrt(a*a+l*l);if(y===0)return[];let d=a/y,c=l/y,x=-c,g=d,b=t.x-d*4,f=t.y-c*4,n=t.x-d*16,p=t.y-c*16,u=o==="many"||o==="zero-many",m=o==="zero-one"||o==="zero-many",$=(S,E)=>{let k=S+x*6,v=E+g*6,T=S-x*6,M=E-g*6;r.push({geometry:{kind:"line",x1:k,y1:v,x2:T,y2:M},crisp:`<line x1="${k}" y1="${v}" x2="${T}" y2="${M}" stroke="${h}" stroke-width="${s}" />`})};if(o==="one"?($(b,f),$(b-d*4,f-c*4)):o==="zero-one"&&$(b,f),u){let E=b,w=f,k=E+x*7,v=w+g*7;r.push({geometry:{kind:"line",x1:k,y1:v,x2:n,y2:p},crisp:`<line x1="${k}" y1="${v}" x2="${n}" y2="${p}" stroke="${h}" stroke-width="${s}" />`}),r.push({geometry:{kind:"line",x1:E,y1:w,x2:n,y2:p},crisp:`<line x1="${E}" y1="${w}" x2="${n}" y2="${p}" stroke="${h}" stroke-width="${s}" />`});let T=E-x*7,M=w-g*7;r.push({geometry:{kind:"line",x1:T,y1:M,x2:n,y2:p},crisp:`<line x1="${T}" y1="${M}" x2="${n}" y2="${p}" stroke="${h}" stroke-width="${s}" />`}),o==="many"&&$(t.x-d*20,t.y-c*20)}if(m){let S=u?20:12,E=t.x-d*S,w=t.y-c*S;r.push({geometry:{kind:"circle",cx:E,cy:w,r:4},crisp:`<circle cx="${E}" cy="${w}" r="4" fill="var(--bg)" stroke="${h}" stroke-width="${s}" />`})}return r}function Ot(t){if(t.length===0)return{x:0,y:0};if(t.length===1)return t[0];let e=0;for(let r=1;r<t.length;r++){let s=t[r].x-t[r-1].x,h=t[r].y-t[r-1].y;e+=Math.sqrt(s*s+h*h)}if(e===0)return t[0];let o=e/2,i=0;for(let r=1;r<t.length;r++){let s=t[r].x-t[r-1].x,h=t[r].y-t[r-1].y,a=Math.sqrt(s*s+h*h);if(i+a>=o){let l=a>0?(o-i)/a:0;return{x:t[r-1].x+s*l,y:t[r-1].y+h*l}}i+=a}return t[t.length-1]}function Ht(t){return t!==0?` letter-spacing="${t}"`:""}var H=$t;var Ye=yt(Mt,{normalizeRequest:t=>({renderOptions:Pt(t.source.frontmatter,t.renderOptions)}),layout:t=>{let e=Dt(lt(Wt(t.source.familyLines),t.source.accessibility),t.source.frontmatter);return ht(Ft(e,t.renderOptions,t.styleFace))},lowerScene:pt(Nt)});export{Ye as default};
@@ -0,0 +1,4 @@
1
+ import{a as b}from"./chunk-QYJMRNS3.js";import{a as _}from"./chunk-CCTZFX43.js";import"./chunk-T7IJ6V4B.js";import"./chunk-5Q4S74UO.js";import"./chunk-STQRDZ67.js";import{c as y}from"./chunk-W6Q4PHPC.js";import"./chunk-WEUWIFG3.js";import{d as s}from"./chunk-A7L4WWVW.js";import"./chunk-EBPTM2RP.js";import"./chunk-KJVNXJ5Y.js";import"./chunk-M6BT2HIP.js";import{a as u}from"./chunk-AOCFMYYH.js";import"./chunk-FFOHLPDA.js";import"./chunk-FLD63DXE.js";import{k as f}from"./chunk-32FWKUUV.js";import{a as p,b as d,c as m}from"./chunk-EPFMQPXX.js";import"./chunk-EX6TP7QM.js";import"./chunk-P7HMSKHJ.js";var w=Object.freeze({id:"flowchart",upstreamId:"flowchart-v2",maturity:"stable",label:"Flowchart",headers:["flowchart","graph"],aliases:["swimlane"],config:{section:"flowchart",keys:["nodeSpacing","rankSpacing","wrappingWidth","titleTopMargin","subGraphTitleMargin","arrowMarkerAbsolute","diagramPadding","htmlLabels","curve","padding","defaultRenderer","inheritDir"],noopKeys:["arrowMarkerAbsolute","curve","defaultRenderer","diagramPadding","htmlLabels","inheritDir","padding","subGraphTitleMargin","titleTopMargin"]},identity:{id:"family:flowchart",kind:"family",version:"1.0.0",compatibility:{core:"^0.3.0"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:[],semanticRoles:["prelude","defs","chrome","group","group-header","edge","edge-label","node","label","icon"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge-label",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`flowchart TD
2
+ A[Start] --> B{Ship?}
3
+ B -->|yes| C[Deploy]
4
+ B -->|no| D[Fix]`,detect:function(i){let t=(i.split(";")[0]??"").trim().toLowerCase();return/^(?:flowchart|graph|swimlane)(?:\s|$)/.test(t)},detectLoose:function(i){let t=(i.split(";")[0]??"").trim().toLowerCase();return/^(?:flowchart|graph|swimlane)(?:\s|$)/.test(t)}}),v=w;var F=200;function g(e,i){if(!e)return i;let t=o(e,"nodeSpacing"),n=o(e,"rankSpacing"),r=o(e,"wrappingWidth");return t===void 0&&n===void 0&&r===void 0?i:{...i,nodeSpacing:i.nodeSpacing??t,layerSpacing:i.layerSpacing??n,wrappingWidth:i.wrappingWidth??r}}function o(e,i){let t=s(e,["flowchart",i]);return typeof t=="number"&&Number.isFinite(t)&&t>0?t:void 0}function h(e,i,t){let n=i.wrappingWidth,r=f(i,void 0,t);for(let a of e.nodes.values()){let c=n??(a.markdownLabel?F:void 0);if(c===void 0||!a.label)continue;let l=u(a.label,c,r.nodeLabelFontSize,r.nodeLabelFontWeight);l!==a.label&&(a.label=l)}}var x=m(v,{normalizeRequest:e=>({renderOptions:g(e.source.frontmatter,e.renderOptions)}),layout:e=>{let i=_(e.source.familyText);return h(i,e.renderOptions,e.styleFace),d(y(i,{...e.renderOptions,...e.styleFace?{styleFace:e.styleFace}:{}}))},lowerScene:p(b)});export{x as default};
@@ -0,0 +1,28 @@
1
+ import"./chunk-CCTZFX43.js";import"./chunk-T7IJ6V4B.js";import{a as te}from"./chunk-WEUWIFG3.js";import{c as Yt,d as et}from"./chunk-A7L4WWVW.js";import"./chunk-KJVNXJ5Y.js";import{a as Jt}from"./chunk-AOCFMYYH.js";import{e as $t}from"./chunk-QMZ4Y6I7.js";import"./chunk-FFOHLPDA.js";import{a as oe}from"./chunk-I6VE56S7.js";import{b as Ut}from"./chunk-FLD63DXE.js";import{a as jt,e as bt,j as K,k as Vt}from"./chunk-32FWKUUV.js";import{a as zt,b as Xt,c as Kt}from"./chunk-EPFMQPXX.js";import{G as Zt,H as qt,I as Qt,N as lt,O as nt,ia as tt,ja as ee,ka as ne,na as Ft,oa as ae,qa as re,xa as ie}from"./chunk-EX6TP7QM.js";import"./chunk-P7HMSKHJ.js";var Re=Object.freeze({id:"gantt",upstreamId:"gantt",maturity:"stable",label:"Gantt",headers:["gantt"],aliases:[],config:{section:"gantt",keys:["displayMode","barHeight","topAxis","tickInterval","axisFormat","barGap","topPadding","leftPadding","gridLineStartPadding","fontSize","sectionFontSize","numberSectionStyles","todayMarker","weekday"],noopKeys:["barGap","topPadding","leftPadding","gridLineStartPadding","fontSize","sectionFontSize","numberSectionStyles","todayMarker","weekday"]},identity:{id:"family:gantt",kind:"family",version:"1.0.0",compatibility:{core:"^0.3.0"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["status","progress","emphasis","category"],semanticRoles:["prelude","defs","chrome","section","grid","axis","label","task","milestone","edge","marker-line","title"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"grid",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"axis",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"milestone",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"marker-line",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`gantt
2
+ title Plan
3
+ dateFormat YYYY-MM-DD
4
+ section Build
5
+ Implement :a1, 2026-01-05, 5d
6
+ Review :after a1, 2d`,detect:t=>/^gantt\s*$/.test(t),detectLoose:t=>/^gantt(?:\s|$)/.test(t)}),se=Re;var $=class extends Error{code;line;constructor(e,r,n){super(`${e}: ${r}`),this.name="GanttError",this.code=e,this.line=n}};var We=["active","done","crit","milestone","vert"],ce=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],Et=/^(\d+(?:\.\d+)?)(ms|s|m|h|d|w|M|y)$/,le=/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/;function Pe(t){let e=t.split(",").map(d=>d.trim());if(e.some(d=>d.length===0))return null;let r=[],n=0;for(;n<e.length&&We.includes(e[n]);){let d=e[n];if(r.includes(d))return null;r.push(d),n++}let i=e.slice(n);if(i.length===0||i.length>3)return null;let o=d=>{let l=d.match(/^after\s+(.+)$/);return l?{kind:"after",refs:l[1].split(/\s+/).filter(Boolean)}:{kind:"date",raw:d}},s=d=>{let l=d.match(/^until\s+(.+)$/);return l?{kind:"until",refs:l[1].split(/\s+/).filter(Boolean)}:Et.test(d)?{kind:"duration",raw:d}:{kind:"date",raw:d}};if(i.length===1)return{tags:r,end:s(i[0])};if(i.length===2)return{tags:r,start:o(i[0]),end:s(i[1])};let a=i[0];return/^[\w-]+$/.test(a)?{tags:r,id:a,start:o(i[1]),end:s(i[2])}:null}function de(t){return t.split(/[,\s]+/).filter(Boolean).map(e=>{let r=e.toLowerCase();return r==="weekends"?{kind:"weekends"}:ce.includes(r)?{kind:"weekday",day:r}:{kind:"date",raw:e}})}var U={title:/^title\s+(.+)$/i,dateFormat:/^dateFormat\s+(.+)$/i,axisFormat:/^axisFormat\s+(.+)$/i,tickInterval:/^tickInterval\s+(.+)$/i,excludes:/^excludes\s+(.+)$/i,includes:/^includes\s+(.+)$/i,todayMarker:/^todayMarker\s+(.+)$/i,weekday:/^weekday\s+(.+)$/i,weekend:/^weekend\s+(.+)$/i,section:/^section\s+(.+)$/i,click:/^click\s+([\w-]+)\s+(href|call)\s+(.+)$/i};function ue(t){let e=Ut(t);if(e.unclosedIndex!==void 0)throw new $("GANTT_BAD_DIRECTIVE","Unclosed accDescr block",e.unclosedIndex+1);t=e.familyLines;let r=(t[0]??"").trim();if(!/^gantt\s*$/i.test(r))throw new $("GANTT_BAD_DIRECTIVE",`Expected "gantt" header, got "${r}"`,1);let n={dateFormat:"YYYY-MM-DD",inclusiveEndDates:!1,topAxis:!1,excludes:[],includes:[],weekendStart:"saturday",weekStart:"sunday",sections:[{taskIndexes:[]}],tasks:[],clicks:[],...e.accessibility.title!==void 0?{accTitle:e.accessibility.title}:{},...e.accessibility.descr!==void 0?{accDescr:e.accessibility.descr.replace(/\s*\n\s*/g," ")}:{}},i=new Set,o=0;for(let s=1;s<t.length;s++){let a=t[s].trim(),d=s+1;if(!a||a.startsWith("%%"))continue;let l;if(l=a.match(U.title)){n.title=l[1].trim();continue}if(l=a.match(U.dateFormat)){n.dateFormat=l[1].trim();continue}if(l=a.match(U.axisFormat)){n.axisFormat=l[1].trim();continue}if(l=a.match(U.tickInterval)){let u=l[1].trim().match(le);u&&(n.tickInterval={count:Number(u[1]),unit:u[2]});continue}if(/^inclusiveEndDates\s*$/i.test(a)){n.inclusiveEndDates=!0;continue}if(/^topAxis\s*$/i.test(a)){n.topAxis=!0;continue}if(l=a.match(U.excludes)){n.excludes.push(...de(l[1].trim()));continue}if(l=a.match(U.includes)){n.includes.push(...de(l[1].trim()));continue}if(l=a.match(U.todayMarker)){let u=l[1].trim();n.todayMarker=u.toLowerCase()==="off"?{off:!0}:{off:!1,style:u};continue}if(l=a.match(U.weekday)){let u=l[1].trim().toLowerCase();if(!ce.includes(u))throw new $("GANTT_BAD_DIRECTIVE",`Invalid weekday "${l[1].trim()}"`,d);n.weekStart=u;continue}if(l=a.match(U.weekend)){let u=l[1].trim().toLowerCase();if(u!=="friday"&&u!=="saturday")throw new $("GANTT_BAD_DIRECTIVE",`Invalid weekend "${l[1].trim()}" (friday or saturday)`,d);n.weekendStart=u;continue}if(l=a.match(U.click)){n.clicks.push({taskId:l[1],action:l[2].toLowerCase(),rest:l[3].trim(),line:d});continue}if(l=a.match(U.section)){n.sections.push({label:l[1].trim(),taskIndexes:[],line:d}),o=n.sections.length-1;continue}let x=a.indexOf(":");if(x>0&&x<a.length-1){let u=a.slice(0,x).trim(),S=a.slice(x+1).trim(),f=Pe(S);if(!f)throw new $("GANTT_BAD_TASK",`Invalid task metadata "${S}"`,d);if(!u)throw new $("GANTT_BAD_TASK","Task label is empty",d);if(f.id!==void 0){if(i.has(f.id))throw new $("GANTT_DUPLICATE_TASK_ID",`Duplicate task id "${f.id}"`,d);i.add(f.id)}let M={index:n.tasks.length,id:f.id,label:u,tags:f.tags,start:f.start,end:f.end,sectionIndex:o,line:d};n.tasks.push(M),n.sections[o].taskIndexes.push(M.index);continue}throw new $("GANTT_BAD_DIRECTIVE",`Unrecognized gantt line "${a}"`,d)}return n}function Tt(t){if(!t)return{};let e={},r=et(t,["displayMode"]),o=(Yt(t,["gantt"])?et(t,["gantt","displayMode"]):void 0)??r;typeof o=="string"&&o.toLowerCase()==="compact"&&(e.displayMode="compact");let s=et(t,["gantt","barHeight"]);typeof s=="number"&&Number.isFinite(s)&&s>0&&(e.barHeight=s),et(t,["gantt","topAxis"])===!0&&(e.topAxis=!0);let d=et(t,["gantt","axisFormat"]);typeof d=="string"&&(e.axisFormat=d);let l=et(t,["gantt","tickInterval"]);if(typeof l=="string"){let x=l.match(le);x&&(e.tickInterval={count:Number(x[1]),unit:x[2]})}return e}function fe(t,e){return e.displayMode&&(t.displayMode=e.displayMode),e.barHeight!==void 0&&(t.barHeight=e.barHeight),e.topAxis&&(t.topAxis=!0),e.axisFormat!==void 0&&t.axisFormat===void 0&&(t.axisFormat=e.axisFormat),e.tickInterval!==void 0&&t.tickInterval===void 0&&(t.tickInterval=e.tickInterval),t}var I=864e5,pe=1e4;function Mt(t){return Math.floor(t/I)}function ut(t){return Mt(t)*I}function rt(t){return((Mt(t)+4)%7+7)%7}var vt={sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6};function Be(t,e,r,n=0,i=0,o=0,s=0){if(e<1||e>12||r<1||r>31||n<0||n>23||i<0||i>59||o<0||o>59)return null;let a=Date.UTC(t,e-1,r,n,i,o,s),d=new Date(a);return d.getUTCFullYear()!==t||d.getUTCMonth()!==e-1||d.getUTCDate()!==r?null:a}var Oe=["YYYY","YY","MM","M","DD","D","HH","H","mm","m","ss","s","SSS","X","x"],Ne=new Set(["HH","H","mm","m","ss","s","SSS","X","x"]);function he(t){let e=[],r=0;t:for(;r<t.length;){for(let n of Oe)if(t.startsWith(n,r)){e.push({kind:"field",field:n}),r+=n.length;continue t}e.push({kind:"literal",text:t[r]}),r++}return e}function He(t){return!he(t).some(e=>e.kind==="field"&&Ne.has(e.field))}function at(t,e){let r=he(e),n=0,i={},o=(s,a)=>{let d=0;for(;d<a&&n+d<t.length&&t[n+d]>="0"&&t[n+d]<="9";)d++;if(d<s)return null;let l=Number(t.slice(n,n+d));return n+=d,l};for(let s of r){if(s.kind==="literal"){if(t[n]!==s.text)return null;n++;continue}switch(s.field){case"YYYY":{let a=o(4,4);if(a===null)return null;i.year=a;break}case"YY":{let a=o(2,2);if(a===null)return null;i.year=2e3+a;break}case"MM":{let a=o(2,2);if(a===null)return null;i.month=a;break}case"M":{let a=o(1,2);if(a===null)return null;i.month=a;break}case"DD":{let a=o(2,2);if(a===null)return null;i.day=a;break}case"D":{let a=o(1,2);if(a===null)return null;i.day=a;break}case"HH":{let a=o(2,2);if(a===null)return null;i.hour=a;break}case"H":{let a=o(1,2);if(a===null)return null;i.hour=a;break}case"mm":{let a=o(2,2);if(a===null)return null;i.minute=a;break}case"m":{let a=o(1,2);if(a===null)return null;i.minute=a;break}case"ss":{let a=o(2,2);if(a===null)return null;i.second=a;break}case"s":{let a=o(1,2);if(a===null)return null;i.second=a;break}case"SSS":{let a=o(3,3);if(a===null)return null;i.msec=a;break}case"X":{let a=o(1,11);if(a===null)return null;i.unix=a;break}case"x":{let a=o(1,14);if(a===null)return null;i.unixMs=a;break}}}return n!==t.length?null:i.unixMs!==void 0?i.unixMs:i.unix!==void 0?i.unix*1e3:Be(i.year??1970,i.month??1,i.day??1,i.hour??0,i.minute??0,i.second??0,i.msec??0)}var Ue={ms:1,s:1e3,m:6e4,h:36e5,d:I,w:7*I};function Ye(t,e){let r=e.match(Et);if(!r)return null;let n=Number(r[1]),i=r[2];if(!Number.isFinite(n))return null;if(i==="M"||i==="y"){let o=i==="y"?n*12:n,s=Math.trunc(o),a=o-s,d=new Date(t),l=d.getUTCMonth()+s,x=new Date(Date.UTC(d.getUTCFullYear(),l,1,d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds())),u=new Date(Date.UTC(x.getUTCFullYear(),x.getUTCMonth()+1,0)).getUTCDate();x.setUTCDate(Math.min(d.getUTCDate(),u));let S=x.getTime();return a>0&&(S+=Math.round(a*30*I)),S}return t+Math.round(n*Ue[i])}function ze(t){return{dateFormat:t.dateFormat,inclusiveEndDates:t.inclusiveEndDates,excludes:t.excludes,includes:t.includes,weekendStart:t.weekendStart,weekStart:t.weekStart}}function me(t,e){let r=new Set,n=new Set,i=!1;for(let o of t){if(o.kind==="weekends"){i=!0;continue}if(o.kind==="weekday"){n.add(vt[o.day]);continue}let s=at(o.raw,e.dateFormat)??at(o.raw,"YYYY-MM-DD");if(s===null)throw new $("GANTT_BAD_DATE",`Invalid calendar date "${o.raw}" for dateFormat "${e.dateFormat}"`);r.add(Mt(s))}return{days:r,weekdays:n,weekends:i}}function Xe(t){let e=me(t.excludes,t),r=me(t.includes,t),n=t.weekendStart==="friday"?[5,6]:[6,0];return i=>{let o=Mt(i),s=rt(i);return r.days.has(o)||r.weekdays.has(s)||r.weekends&&n.includes(s)?!1:!!(e.days.has(o)||e.weekdays.has(s)||e.weekends&&n.includes(s))}}function Ke(t,e,r,n){let i=t+I,o=e,s=e,a=!1,d=0;for(;i<=o;){if(++d>pe)throw new $("GANTT_SCHEDULE_OVERFLOW",`Calendar exclusion walk exceeded ${pe} days (is every day excluded?)`,n);a||(s=o),a=r(i),a&&(o+=I),i+=I}return{end:o,renderEnd:s}}function je(t,e,r){let n=[];if(t.start===void 0&&r&&n.push(r.index),t.start?.kind==="after")for(let i of t.start.refs){let o=e.get(i);if(!o)throw new $("GANTT_UNKNOWN_TASK_REF",`Task "${t.label}" starts after unknown id "${i}"`,t.line);n.push(o.index)}if(t.end.kind==="until")for(let i of t.end.refs){let o=e.get(i);if(!o)throw new $("GANTT_UNKNOWN_TASK_REF",`Task "${t.label}" runs until unknown id "${i}"`,t.line);n.push(o.index)}return n}function Ve(t,e,r){let n=new Array(t).fill(0),i=[],o=s=>{n[s]=1,i.push(s);for(let a of e[s])if(n[a]===0)o(a);else if(n[a]===1){let d=i.indexOf(a),l=i.slice(d).concat(a).map(r);throw new $("GANTT_DEPENDENCY_CYCLE",`Dependency cycle: ${l.join(" -> ")}`)}i.pop(),n[s]=2};for(let s=0;s<t;s++)n[s]===0&&o(s)}function ge(t,e={}){let r=ze(t),n=Xe(r),i=He(t.dateFormat),o=new Map;for(let f of t.tasks)f.id!==void 0&&o.set(f.id,f);let s=t.tasks.map((f,M)=>je(f,o,t.tasks[M-1]));Ve(t.tasks.length,s,f=>t.tasks[f].id??t.tasks[f].label);let a=new Array(t.tasks.length),d=f=>{if(a[f.index])return a[f.index];for(let g of s[f.index])a[g]||d(t.tasks[g]);let M;if(f.start===void 0){let g=f.index>0?a[f.index-1]:void 0;if(!g)throw new $("GANTT_NO_START",`Task "${f.label}" has no start date and no previous task to follow`,f.line);M=g.end}else if(f.start.kind==="after")M=Math.max(...f.start.refs.map(g=>a[o.get(g).index].end));else{let g=at(f.start.raw,t.dateFormat);if(g===null)throw new $("GANTT_BAD_DATE",`Invalid start date "${f.start.raw}" for dateFormat "${t.dateFormat}"`,f.line);M=g}let G,m=!1;if(f.end.kind==="until")G=Math.min(...f.end.refs.map(g=>a[o.get(g).index].start)),m=!0;else if(f.end.kind==="duration"){let g=Ye(M,f.end.raw);if(g===null)throw new $("GANTT_BAD_DURATION",`Invalid duration "${f.end.raw}"`,f.line);G=g}else{let g=at(f.end.raw,t.dateFormat);if(g===null)throw new $("GANTT_BAD_DATE",`Invalid end date "${f.end.raw}" for dateFormat "${t.dateFormat}"`,f.line);G=r.inclusiveEndDates&&i?g+I:g,m=!0}let D=G;if(!m&&r.excludes.length>0){let g=Ke(M,G,n,f.line);G=g.end,D=g.renderEnd}G<M&&(G=M),D<M&&(D=M),D>G&&(D=G);let F={index:f.index,id:f.id,label:f.label,tags:f.tags,sectionIndex:f.sectionIndex,start:M,end:G,renderEnd:D,manualEnd:m,line:f.line};return a[f.index]=F,F};for(let f of t.tasks)d(f);let l=a;if(l.length===0)throw new $("GANTT_EMPTY","Gantt diagram has no tasks");let x=1/0,u=-1/0;for(let f of l)x=Math.min(x,f.start),u=Math.max(u,f.renderEnd);u===x&&(u=x+(i?I:36e5));let S;if(e.today!==void 0&&!t.todayMarker?.off){let f=at(e.today,t.dateFormat)??at(e.today,"YYYY-MM-DD");if(f===null)throw new $("GANTT_BAD_DATE",`Invalid clock value "${e.today}" for dateFormat "${t.dateFormat}"`);S=f}return{tasks:l,timeMin:x,timeMax:u,dateOnly:i,today:S,analysis:Je(t,l,o),isExcludedDay:n}}function ye(t){let e=new Map;for(let o of t.tasks)o.id!==void 0&&e.set(o.id,o);let r=[],n=new Set,i=(o,s,a)=>{let d=`${o}>${s}:${a}`;n.has(d)||(n.add(d),r.push({from:o,to:s,kind:a}))};for(let o of t.tasks){if(o.start?.kind==="after")for(let s of o.start.refs){let a=e.get(s);a&&i(a.index,o.index,"after")}if(o.end.kind==="until")for(let s of o.end.refs){let a=e.get(s);a&&i(o.index,a.index,"until")}}return r}function Je(t,e,r){let n=[],i=new Set;for(let m of t.tasks){if(m.start?.kind==="after")for(let D of m.start.refs){let F=r.get(D);n.push({from:F.index,to:m.index}),i.add(F.index)}if(m.end.kind==="until")for(let D of m.end.refs)i.add(r.get(D).index)}if(n.length===0)return;let o=Math.min(...e.map(m=>m.start)),s=Math.max(...e.map(m=>m.end)),a=e.map(()=>[]);for(let m of n)a[m.from].push(m.to);let d=new Array(e.length).fill(Number.NaN),l=m=>{if(!Number.isNaN(d[m]))return d[m];let D=a[m],F=s;for(let g of D){let v=e[g].end-e[g].start;F=Math.min(F,l(g)-v)}return d[m]=F,F};for(let m=0;m<e.length;m++)l(m);let x={},u=new Set;for(let m of n)u.add(m.from),u.add(m.to);let S=[];for(let m of e){let D=d[m.index]-m.end;m.id!==void 0&&(x[m.id]=D),u.has(m.index)&&D===0&&m.id!==void 0&&S.push(m.id)}let f=new Set(n.map(m=>m.to)),M=e.filter(m=>m.id!==void 0&&!f.has(m.index)).map(m=>m.id),G=e.filter(m=>m.id!==void 0&&!i.has(m.index)).map(m=>m.id);return{criticalPathTaskIds:S,slackByTaskId:x,projectStart:o,projectEnd:s,entryTaskIds:M,sinkTaskIds:G}}var Ze=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],qe=["January","February","March","April","May","June","July","August","September","October","November","December"],Qe=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],tn=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function Ct(t,e){let r=new Date(t),n=(a,d=2)=>String(a).padStart(d,"0"),i=()=>{let a=Date.UTC(r.getUTCFullYear(),0,1);return Math.floor((t-a)/I)+1},o=a=>{let d=Date.UTC(r.getUTCFullYear(),0,1),x=(7+rt(d)-a)%7;return Math.floor((i()-1+x)/7)},s="";for(let a=0;a<e.length;a++){let d=e[a];if(d!=="%"){s+=d;continue}let l=e[++a];switch(l){case"Y":s+=String(r.getUTCFullYear());break;case"y":s+=n(r.getUTCFullYear()%100);break;case"m":s+=n(r.getUTCMonth()+1);break;case"d":s+=n(r.getUTCDate());break;case"e":s+=String(r.getUTCDate()).padStart(2," ");break;case"b":s+=Ze[r.getUTCMonth()];break;case"B":s+=qe[r.getUTCMonth()];break;case"a":s+=Qe[rt(t)];break;case"A":s+=tn[rt(t)];break;case"H":s+=n(r.getUTCHours());break;case"I":s+=n((r.getUTCHours()+11)%12+1);break;case"M":s+=n(r.getUTCMinutes());break;case"S":s+=n(r.getUTCSeconds());break;case"L":s+=n(r.getUTCMilliseconds(),3);break;case"p":s+=r.getUTCHours()<12?"AM":"PM";break;case"j":s+=n(i(),3);break;case"U":s+=n(o(0));break;case"W":s+=n(o(1));break;case"%":s+="%";break;default:s+=l===void 0?"%":`%${l}`}}return s}var Rt=120,xe=220,en=1e4,W={plotWidth:600,padding:16,titleHeight:34,axisHeight:24,rowGap:8,sectionGap:6,barHeight:22,labelGap:12,labelFontSize:13,sectionFontSize:13},nn={nodeLabelFontSize:W.labelFontSize,edgeLabelFontSize:11,groupHeaderFontSize:W.sectionFontSize,nodeLabelFontWeight:500,edgeLabelFontWeight:500,groupHeaderFontWeight:600,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:bt.innerBox,edgeLineWidth:bt.connector,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:bt.outerBox},pt={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:I,week:7*I,month:30*I},At=[{unit:"minute",count:1,format:"%H:%M"},{unit:"minute",count:15,format:"%H:%M"},{unit:"hour",count:1,format:"%H:%M"},{unit:"hour",count:6,format:"%H:%M"},{unit:"day",count:1,format:"%m-%d"},{unit:"week",count:1,format:"%m-%d"},{unit:"week",count:2,format:"%m-%d"},{unit:"month",count:1,format:"%b %Y"},{unit:"month",count:3,format:"%b %Y"},{unit:"month",count:12,format:"%Y"}],an=/<\/?(?:b|strong|i|em|u|s|del)\s*>/gi;function Wt(t={},e){return Vt(t,nn,e)}function Pt(t){return Math.max(17,t.groupHeaderFontSize)}function Te(t){let e=Me(t);return e===W.titleHeight?18:e/2}function Bt(t){return Math.max(10,t.edgeLabelFontSize*.75)}function mt(t,e,r,n=0){let i=t.replace(an,""),o=[...i].length,s=Math.max(0,o-1)*n;return Math.max(0,jt(i,e,r)+s)}function Me(t){return Math.max(W.titleHeight,Math.ceil(Pt(t)*1.3)+8)}function rn(t){return Math.max(W.axisHeight,Math.ceil(Bt(t)+t.edgeLabelFontSize*.65+4))}function on(t,e){let r=Math.max(t.nodeLabelFontSize,t.groupHeaderFontSize)*1.3;return Math.ceil(Math.max(e,r))+W.rowGap}function sn(t,e,r=8){let n=t.timeMax-t.timeMin;if(e.tickInterval){let s=pt[e.tickInterval.unit]*e.tickInterval.count;if(n/s<=Rt)return{...e.tickInterval,format:e.axisFormat??dn(e.tickInterval.unit)}}for(let s of At){let a=pt[s.unit]*s.count;if(n/a<=r)return{unit:s.unit,count:s.count,format:e.axisFormat??s.format}}let i=At[At.length-1],o=i.count;for(;n/(pt.month*o)>Rt;)o*=2;return{unit:"month",count:o,format:e.axisFormat??i.format}}function dn(t){switch(t){case"millisecond":case"second":return"%H:%M:%S";case"minute":case"hour":return"%H:%M";case"day":case"week":return"%m-%d";case"month":return"%b %Y"}}function cn(t,e,r){if(e.unit==="week"){let i=ut(t),o=0;for(;rt(i)!==r&&o++<7;)i-=I;return i}if(e.unit==="month"){let i=new Date(t);return Date.UTC(i.getUTCFullYear(),i.getUTCMonth(),1)}if(e.unit==="day")return ut(t);let n=pt[e.unit]*e.count;return Math.floor(t/n)*n}function ln(t,e){if(e.unit==="month"){let r=new Date(t);return Date.UTC(r.getUTCFullYear(),r.getUTCMonth()+e.count,1)}return t+pt[e.unit]*e.count}function un(t,e,r=8){let n=sn(t,e,r),i=vt[e.weekStart],o=[],s=cn(t.timeMin,n,i),a=0;for(;s<=t.timeMax&&a++<=Rt;)s>=t.timeMin&&o.push({time:s,label:Ct(s,n.format)}),s=ln(s,n);return o.length===0&&o.push({time:t.timeMin,label:Ct(t.timeMin,n.format)}),o}function fn(t){let e=[],r=[];for(let n of t){let i=e.findIndex(o=>o<=n.start);i===-1?(i=e.length,e.push(n.end)):e[i]=n.end,r.push(i)}return r}var we=8,E=.01;function _t(t){return t.milestoneX!==void 0?{x:t.milestoneX-t.h/2,y:t.y,w:t.h,h:t.h}:{x:t.x,y:t.y,w:t.w,h:t.h}}function pn(t,e,r,n){let[i,o]=e<=r?[e,r]:[r,e];return t>n.y+E&&t<n.y+n.h-E&&o>n.x+E&&i<n.x+n.w-E}function Ot(t,e,r,n){let[i,o]=e<=r?[e,r]:[r,e];return t>n.x+E&&t<n.x+n.w-E&&o>n.y+E&&i<n.y+n.h-E}function ft(t,e,r){return Math.abs(t.x-e.x)<=E?r.some(n=>Ot(t.x,t.y,e.y,n)):r.some(n=>pn(t.y,t.x,e.x,n))}function mn(t){return t.map(e=>({y:e.y,h:e.h})).sort((e,r)=>e.y-r.y)}function ke(t,e){return t.findIndex(r=>e>=r.y-E&&e<=r.y+r.h+E)}function Lt(t,e,r){let n=t[e].y+t[e].h,i=e+1<t.length?t[e+1].y:r.y+r.h;return(n+i)/2}function It(t,e,r){let n=t[e].y;return((e>0?t[e-1].y+t[e-1].h:r.y)+n)/2}function hn(t,e,r,n){let i=we,o=r.x-i,s=r.x+r.w+i,a=e.filter(u=>u.y<t.y+t.h-E&&u.y+u.h>t.y+E),d=new Set([o]);for(let u of a)d.add(Math.max(o,Math.min(s,u.x-i))),d.add(Math.max(o,Math.min(s,u.x+u.w+i)));let l=o,x=1/0;for(let u of d){if(a.some(f=>Ot(u,t.y-1,t.y+t.h+1,f)))continue;let S=Math.abs(u-n);(S<x-E||Math.abs(S-x)<=E&&u<l)&&(l=u,x=S)}return l}function gn(t){let e=[];for(let r of t){let n=e[e.length-1];if(n&&Math.abs(n.x-r.x)<=E&&Math.abs(n.y-r.y)<=E)continue;e.push({x:r.x,y:r.y});let i=e.length;if(i>=3){let o=e[i-3],s=e[i-2],a=e[i-1];(Math.abs(o.x-s.x)<=E&&Math.abs(s.x-a.x)<=E||Math.abs(o.y-s.y)<=E&&Math.abs(s.y-a.y)<=E)&&e.splice(i-2,1)}}return e}function yn(t,e,r,n,i){let o=we,s=t.rect,a=e.rect,d=s.y+s.h/2,l=a.y+a.h/2,x=ke(n,d),u=ke(n,l);if(x===-1||u===-1)return null;let S=x===u,f=S||u>x,M=f?Lt(n,x,i):It(n,x,i),G=S?M:f?It(n,u,i):Lt(n,u,i),m=[],D=s.x+s.w,F=[{x:D,y:d},{x:D+o,y:d},{x:D+o,y:M}];if(!ft(F[0],F[1],r)&&!ft(F[1],F[2],r))m.push(...F);else{let _=t.tipX??(s.w>=2*o?D-o:s.x+s.w/2);m.push({x:_,y:f?s.y+s.h:s.y},{x:_,y:M})}let g=m[m.length-1].x,v=a.x-o;if(!S){let _=f?1:-1;for(let O=x+_;O!==u;O+=_){let N=n[O];if(r.some(V=>Ot(g,N.y-1,N.y+N.h+1,V))){let V=f?It(n,O,i):Lt(n,O,i),J=hn(N,r,i,v);m.push({x:g,y:V},{x:J,y:V}),g=J}}}let Y=a.x-o,B=[{x:Y,y:G},{x:Y,y:l},{x:a.x,y:l}],j,C;if(!ft(B[0],B[1],r)&&!ft(B[1],B[2],r))C=B,j="right";else{let _=e.tipX??(a.w>=2*o?a.x+o:a.x+a.w/2),O=G<a.y;C=[{x:_,y:G},{x:_,y:O?a.y:a.y+a.h}],j=O?"down":"up"}m.push({x:g,y:G},...C);let z=gn(m);for(let _=1;_<z.length;_++)if(ft(z[_-1],z[_],r))return null;return{points:z,arrowDir:j}}function xn(t,e,r,n,i){let o=ye(t);if(o.length===0)return[];let s=new Map(r.map(u=>[u.taskIndex,u])),a=r.map(_t),d=mn(n),l=new Set(e.analysis?.criticalPathTaskIds??[]),x=[];for(let u of o){let S=s.get(u.from),f=s.get(u.to);if(!S||!f)continue;let M=yn({rect:_t(S),tipX:S.milestoneX},{rect:_t(f),tipX:f.milestoneX},a,d,i);if(!M)continue;let G=e.tasks[u.from],m=e.tasks[u.to],D=u.kind==="after"&&G.id!==void 0&&m.id!==void 0&&l.has(G.id)&&l.has(m.id)&&G.end===m.start;x.push({fromTaskIndex:u.from,toTaskIndex:u.to,kind:u.kind,critical:D,points:M.points,arrowDir:M.arrowDir})}return x}function be(t,e,r,n,i){let o=K(t,e),s=mt(o,r,n,i);if(s<=xe)return{lines:[o],width:s};let a=Jt(o,xe,r,n).split(`
7
+ `);return{lines:a,width:Math.max(...a.map(d=>mt(d,r,n,i)))}}function Se(t,e,r={}){let n=Wt(r.renderOptions,r.styleFace),i=r.compact??t.displayMode==="compact",o=r.barHeight??t.barHeight??W.barHeight,s=on(n,o),a=e.tasks.filter(p=>p.tags.includes("vert")),d=e.tasks.filter(p=>!p.tags.includes("vert")),l=new Map,x=new Map,u=0;for(let p of d)if(i){let b=K(p.label,n.nodeTextTransform);u=Math.max(u,mt(b,n.nodeLabelFontSize,n.nodeLabelFontWeight,n.nodeLetterSpacing))}else{let b=be(p.label,n.nodeTextTransform,n.nodeLabelFontSize,n.nodeLabelFontWeight,n.nodeLetterSpacing);l.set(p.index,b),u=Math.max(u,b.width)}for(let p=0;p<t.sections.length;p++){let b=t.sections[p];if(b.label){let T=be(b.label,n.groupTextTransform,n.groupHeaderFontSize,n.groupHeaderFontWeight,n.groupLetterSpacing);x.set(p,T),u=Math.max(u,T.width)}}u=Math.ceil(u)+W.labelGap;let S=r.width??W.padding*2+u+W.plotWidth,f=W.padding+u,M=Math.max(120,S-f-W.padding),G=t.title?Me(n):0,m=rn(n),D=t.topAxis?m:0,F=W.padding+G+D,g=e.timeMax-e.timeMin,v=p=>f+(p-e.timeMin)/g*M,Y=[],B=[],j=[],C=F,z=(p,b)=>p<=1?s:Math.max(s,Math.ceil(o/2+(p-.5)*b)+W.rowGap),_=n.nodeLabelFontSize*1.3,O=n.groupHeaderFontSize*1.3;for(let p=0;p<t.sections.length;p++){let b=t.sections[p],T=d.filter(w=>w.sectionIndex===p);if(T.length===0&&b.label===void 0)continue;let A=j.length,L=C,Z=B.length,H=x.get(p)?.lines;b.label!==void 0&&(C+=z(H?.length??1,O));let Q=i?fn(T):T.map((w,P)=>P),X=T.length===0?0:Math.max(...Q)+1,R=[];if(i)for(let w=0;w<X;w++)R.push({barIndexes:[],sectionIndex:A,y:C+w*s,h:o});else{let w=C;for(let P of T)R.push({barIndexes:[],sectionIndex:A,y:w,h:o}),w+=z(l.get(P.index)?.lines.length??1,_)}if(T.forEach((w,P)=>{let kt=Q[P],it=R[kt],ot=v(w.start),st=Math.max(w.renderEnd>w.start?2:0,v(w.renderEnd)-ot),dt=w.tags.includes("milestone"),ct;if(dt){let Nt=o/2,Ht=f+Nt,Ie=Math.max(Ht,f+M-Nt);ct=Math.min(Ie,Math.max(Ht,ot+st/2))}let Dt=l.get(w.index)?.lines;Y.push({taskIndex:w.index,id:w.id,label:w.label,tags:w.tags,sectionIndex:A,x:ot,y:it.y,w:st,h:o,milestoneX:ct,rowIndex:Z+(b.label!==void 0?1:0)+kt,start:w.start,end:w.renderEnd,...Dt&&Dt.length>1?{labelLines:Dt}:{}}),it.barIndexes.push(Y.length-1)}),B.push(...R),i)C+=X*s;else for(let w of T)C+=z(l.get(w.index)?.lines.length??1,_);j.push({label:b.label,y:L,h:C-L,rowStart:Z,rowEnd:B.length,...H&&H.length>1?{labelLines:H}:{}}),C+=W.sectionGap}let N=Math.max(s,C-F),V=F+N+m+W.padding,J=un(e,t).map(p=>({time:p.time,x:v(p.time),label:p.label})),ht=a.map(p=>({taskIndex:p.index,label:p.label,x:v(p.start+(p.renderEnd-p.start)/2),time:p.start})),gt=r.today!==void 0&&r.today>=e.timeMin&&r.today<=e.timeMax?v(r.today):void 0,yt=[];if(t.excludes.length>0&&e.dateOnly&&(e.timeMax-ut(e.timeMin))/I<=en){let p,b=T=>{if(p===void 0)return;let A=Math.max(p,e.timeMin),L=Math.min(T,e.timeMax);L>A&&yt.push({x:v(A),w:v(L)-v(A),start:A,end:L}),p=void 0};for(let T=ut(e.timeMin);T<e.timeMax;T+=I)e.isExcludedDay(T)?p===void 0&&(p=T):b(T);b(e.timeMax)}let Gt=new Set(e.analysis?.criticalPathTaskIds??[]),xt=e.tasks.filter(p=>p.id!==void 0&&Gt.has(p.id)).map(p=>p.index),c=xn(t,e,Y,B,{x:f,y:F,w:M,h:N}),k=new Map(t.tasks.flatMap(p=>p.id?[[p.id,p.index]]:[])),y=t.clicks.flatMap(p=>{if(p.action!=="href")return[];let b=k.get(p.taskId),T=p.rest.match(/^"((?:\\.|[^"])*)"|^(\S+)/)?.slice(1).find(Boolean);return b===void 0||!T||!/^(?:https?:|mailto:)/i.test(T)?[]:[{taskIndex:b,href:T.replace(/\\(["\\])/g,"$1")}]});return{title:t.title,width:S,height:V,plot:{x:f,y:F,w:M,h:N},labelColumnWidth:u,rows:B,sections:j,bars:Y,links:y,verts:ht,ticks:J,dependencies:c,criticalTaskIndexes:xt,excludedBands:yt,topAxis:t.topAxis,todayX:gt,...t.todayMarker?.style!==void 0?{todayMarkerStyle:t.todayMarker.style}:{},timeMin:e.timeMin,timeMax:e.timeMax,dateOnly:e.dateOnly,compact:i,barHeight:o}}function Ge(t,e,r={}){let n=fe(ue(t),e),i=ge(n,r.clock),o=Se(n,i,{...r.layout,today:i.today});return{model:n,schedule:i,positioned:o}}var kn=["stroke","stroke-width","opacity","stroke-dasharray"],bn=/^[#\w][\w#(),.%\s/-]*$/;function De(t){let e=[],r=[],n=te(t);for(let[i,o]of Object.entries(n)){let s=i.toLowerCase();if(!kn.includes(s)||!bn.test(o)){r.push(s);continue}e.push([s,o])}return{applied:e,ignored:r}}function Fe(t){return t.applied.map(([e,r])=>`${e}:${r}`).join(";")}var wt={barRadius:3};function _e(t){return{groupFill:t.groupFillColor??"var(--surface, var(--fg))",groupOpacity:t.groupFillColor?"1":"0.07",excludedFill:t.edgeStrokeColor??"var(--muted, var(--line, var(--fg)))",edgeStroke:t.edgeStrokeColor??"var(--line, var(--border, var(--fg)))",nodeFill:t.nodeFillColor??"var(--accent, var(--fg))",nodeBorder:t.nodeBorderColor??"var(--fg)",doneFill:t.nodeFillColor??"var(--muted, var(--line, var(--fg)))",criticalFill:t.nodeFillColor??"var(--fg)",criticalStroke:t.nodeBorderColor??t.edgeStrokeColor??"var(--accent, var(--fg))",titleFill:t.groupTextColor??t.nodeTextColor??"var(--fg)",groupText:t.groupTextColor??t.nodeTextColor??"var(--fg)",taskText:t.nodeTextColor??"var(--fg)",axisText:t.edgeTextColor??t.groupTextColor??"var(--muted, var(--fg))"}}var Tn={dependencyArrows:!1,criticalBars:!1,criticalArrows:!1},Mn={excludedBands:!1,milestoneDone:!1,milestoneActive:!1};function wn(t,e=Tn,r=Mn){let n=_e(t),i=[];r.excludedBands&&i.push(` .gantt-excluded-band { fill: ${n.excludedFill}; opacity: 0.1; }`),r.milestoneDone&&i.push(` .gantt-milestone-done { fill: ${n.doneFill}; opacity: ${t.nodeFillColor?"0.72":"0.55"}; }`),r.milestoneActive&&i.push(` .gantt-milestone-active { fill: ${n.nodeFill}; stroke: ${n.nodeBorder}; stroke-width: ${Math.max(1.5,t.nodeLineWidth)}; opacity: 1; }`),e.dependencyArrows&&i.push(` .gantt-dep-arrow { fill: none; stroke: ${n.edgeStroke}; stroke-width: ${Math.max(1.2,t.lineWidth)}; opacity: 0.6; }`),e.criticalArrows&&i.push(` .gantt-dep-arrow-crit { stroke: ${n.criticalStroke}; stroke-width: ${Math.max(1.8,t.lineWidth*1.5)}; opacity: 0.95; }`),e.criticalBars&&i.push(` .gantt-bar-critical-path { stroke: ${n.criticalStroke}; stroke-width: ${Math.max(2,t.nodeLineWidth*1.5)}; }`);let o=i.length>0?`${i.join(`
8
+ `)}
9
+ `:"";return`<style>
10
+ .gantt-section-band { fill: ${n.groupFill}; opacity: ${n.groupOpacity}; }
11
+ .gantt-grid-line { stroke: ${n.edgeStroke}; stroke-width: ${t.lineWidth}; opacity: ${t.edgeStrokeColor?"0.6":"0.45"}; }
12
+ .gantt-bar { fill: ${n.nodeFill}; stroke: ${t.nodeBorderColor?n.nodeBorder:"none"};${t.nodeBorderColor?` stroke-width: ${t.nodeLineWidth};`:""} opacity: 0.92; }
13
+ .gantt-bar-active { fill: ${n.nodeFill}; stroke: ${n.nodeBorder}; stroke-width: ${Math.max(1.5,t.nodeLineWidth)}; opacity: 1; }
14
+ .gantt-bar-done { fill: ${n.doneFill}; opacity: ${t.nodeFillColor?"0.72":"0.55"}; }
15
+ .gantt-bar-crit { fill: ${n.criticalFill}; stroke: ${n.criticalStroke}; stroke-width: ${Math.max(1.5,t.nodeLineWidth)}; opacity: 0.95; }
16
+ .gantt-milestone { fill: ${n.nodeFill}; stroke: ${n.nodeBorder}; stroke-width: ${Math.max(1,t.nodeLineWidth)}; }
17
+ .gantt-milestone-crit { fill: ${n.criticalFill}; stroke: ${n.criticalStroke}; stroke-width: ${Math.max(1.5,t.nodeLineWidth)}; }
18
+ .gantt-vert-marker { stroke: ${n.edgeStroke}; stroke-width: ${Math.max(2,t.lineWidth)}; stroke-dasharray: 6 3; }
19
+ .gantt-today-marker { stroke: ${t.edgeStrokeColor??"var(--accent, var(--fg))"}; stroke-width: ${Math.max(2,t.lineWidth)}; stroke-dasharray: 4 3; }
20
+ .gantt-title { fill: ${n.titleFill}; }
21
+ .gantt-section-label { fill: ${n.groupText}; }
22
+ .gantt-task-label { fill: ${n.taskText}; }
23
+ .gantt-axis-label { fill: ${n.axisText}; }
24
+ ${o}</style>`}function Sn(t){return t.includes("crit")?"gantt-bar gantt-bar-crit":t.includes("active")?"gantt-bar gantt-bar-active":t.includes("done")?"gantt-bar gantt-bar-done":"gantt-bar"}function St(t){if(t.includes("crit"))return"crit";if(t.includes("active"))return"active";if(t.includes("done"))return"done"}function Gn(t,e,r){switch(t){case"crit":return{fill:e.criticalFill,stroke:e.criticalStroke,strokeWidth:String(Math.max(1.5,r.nodeLineWidth)),opacity:"0.95"};case"active":return{fill:e.nodeFill,stroke:e.nodeBorder,strokeWidth:String(Math.max(1.5,r.nodeLineWidth)),opacity:"1"};case"done":return{fill:e.doneFill,opacity:r.nodeFillColor?"0.72":"0.55"};default:return{fill:e.nodeFill,stroke:r.nodeBorderColor?e.nodeBorder:"none",...r.nodeBorderColor?{strokeWidth:String(r.nodeLineWidth)}:{},opacity:"0.92"}}}function Dn(t,e,r,n,i,o,s="start",a=0){let d=a!==0?` letter-spacing="${a}"`:"";return`<text class="${n}" x="${h(t)}" y="${h(e)}" text-anchor="${s}" dominant-baseline="middle" font-size="${i}" font-weight="${o}"${d}>${lt(r)}</text>`}function q(t,e,r,n,i,o,s,a,d,l="start",x=0,u){return ne({id:t,role:e,text:i,x:h(r),y:h(n),fontSize:s,anchor:l,paint:{fill:d},channels:u},Dn(r,n,i,o,s,a,l,x))}function $e(t){if(!t)return{};let e=t.lineWidth===void 0?void 0:t.cue==="outline"?t.lineWidth+1:t.cue==="double-line"?t.lineWidth+2:t.lineWidth,r=t.cue==="pattern"?"3 2":t.cue==="double-line"?"8 2 2 2":void 0;return{...t.fillColor!==void 0?{fill:t.fillColor}:{},...t.strokeColor??t.borderColor?{stroke:t.strokeColor??t.borderColor}:{},...e!==void 0?{strokeWidth:String(e)}:{},...r!==void 0?{strokeDasharray:r}:{}}}function Ee(t,e){if(!t||t.fillColor===void 0&&t.strokeColor===void 0&&t.borderColor===void 0&&t.lineWidth===void 0&&(t.cue===void 0||t.cue==="none"))return"";let r=[e.fill!==void 0?`fill:${e.fill}`:void 0,e.stroke!==void 0?`stroke:${e.stroke}`:void 0,e.strokeWidth!==void 0?`stroke-width:${e.strokeWidth}`:void 0,e.strokeDasharray!==void 0?`stroke-dasharray:${e.strokeDasharray}`:void 0,e.opacity!==void 0?`opacity:${e.opacity}`:void 0].filter(n=>n!==void 0);return r.length>0?` style="${nt(r.join(";"))}"`:""}function ve(t){return t?.cue&&t.cue!=="none"?` data-brand-cue="${nt(t.cue)}"`:""}function h(t){return Math.round(t*100)/100}function Le(t){let{positioned:e,colors:r,resolved:n}=t,i=n.renderOptions,o=r.font??"Inter",s=i.transparent??!1,a=Wt(i,n.styleFace),d=_e(a),l=[],x=i.gantt??{},u={dependencyArrows:x.dependencyArrows===!0&&e.dependencies.length>0,criticalBars:x.criticalPath===!0&&e.criticalTaskIndexes.length>0,criticalArrows:x.dependencyArrows===!0&&x.criticalPath===!0&&e.dependencies.some(c=>c.critical)},S=new Set(u.criticalBars?e.criticalTaskIndexes:[]),f={excludedBands:e.excludedBands.length>0,milestoneDone:e.bars.some(c=>c.milestoneX!==void 0&&St(c.tags)==="done"),milestoneActive:e.bars.some(c=>c.milestoneX!==void 0&&St(c.tags)==="active")},M=wn(a,u,f);l.push(re({id:"prelude",width:e.width,height:e.height,colors:r,transparent:s,font:o,hasMonoFont:!1,extraCss:M},Qt(e.width,e.height,r,s)+`
25
+ `+qt(o,!1,r.shadow,r.embedFontImport)+`
26
+ `+M));let G=Zt(r);G&&l.push(Ft({id:"shadow-defs"},`<defs>${G}</defs>`));let m=`${Fn(e)}-dep-arrow`,D=`${m}-crit`,F=[Ce(m,d.edgeStroke),...u.criticalArrows?[Ce(D,d.criticalStroke)]:[]];u.dependencyArrows&&l.push(Ft({id:"defs",markerResources:F},`<defs>
27
+ ${ie(F)}
28
+ </defs>`));let g=e.plot,v=g.y+g.h,Y=new Map;e.sections.forEach((c,k)=>{if(k%2===0){let y=c.label??"",p=Y.get(y)??0;Y.set(y,p+1),l.push(tt({id:`section-band:${y}#${p}`,role:"section",geometry:{kind:"rect",x:h(g.x),y:h(c.y),width:h(g.w),height:h(c.h)},paint:{fill:d.groupFill,opacity:d.groupOpacity},channels:c.label!==void 0?{category:c.label}:void 0},`<rect class="gantt-section-band" x="${h(g.x)}" y="${h(c.y)}" width="${h(g.w)}" height="${h(c.h)}" />`))}});let B={fill:d.excludedFill,opacity:"0.1"};for(let c of e.excludedBands)l.push(tt({id:`excluded:${c.start}`,role:"grid",geometry:{kind:"rect",x:h(c.x),y:h(g.y),width:h(c.w),height:h(g.h)},paint:B},`<rect class="gantt-excluded-band" x="${h(c.x)}" y="${h(g.y)}" width="${h(c.w)}" height="${h(g.h)}" />`));let j={stroke:d.edgeStroke,strokeWidth:String(a.lineWidth),opacity:a.edgeStrokeColor?"0.6":"0.45"};for(let c of e.ticks)l.push(tt({id:`grid:${c.time}`,role:"grid",geometry:{kind:"line",x1:h(c.x),y1:h(g.y),x2:h(c.x),y2:h(v)},paint:j},`<line class="gantt-grid-line" x1="${h(c.x)}" y1="${h(g.y)}" x2="${h(c.x)}" y2="${h(v)}" />`));let C=Bt(a),z=C===10&&a.edgeLabelFontSize===11?12:Math.max(12,C);for(let c of e.ticks){let k=K(c.label,a.edgeTextTransform);l.push(q(`axis:${c.time}:bottom`,"axis",c.x,v+z,k,"gantt-axis-label",a.edgeLabelFontSize,a.edgeLabelFontWeight,d.axisText,"middle",a.edgeLetterSpacing)),e.topAxis&&l.push(q(`axis:${c.time}:top`,"axis",c.x,g.y-C,k,"gantt-axis-label",a.edgeLabelFontSize,a.edgeLabelFontWeight,d.axisText,"middle",a.edgeLetterSpacing))}let _=a.groupHeaderFontSize*1.3,O=a.nodeLabelFontSize*1.3,N=new Map;for(let c of e.sections)if(c.label!==void 0){let k=N.get(c.label)??0;N.set(c.label,k+1),(c.labelLines??[K(c.label,a.groupTextTransform)]).forEach((p,b)=>{let T=b===0?`section-label:${c.label}#${k}`:`section-label:${c.label}#${k}/${b}`;l.push(q(T,"section",8,c.y+e.barHeight/2+4+b*_,p,"gantt-section-label",a.groupHeaderFontSize,a.groupHeaderFontWeight,d.groupText,"start",a.groupLetterSpacing,{category:c.label}))})}let V=new Map,J=c=>{let k=V.get(c)??0;return V.set(c,k+1),k===0?`task-label:${c}`:`task-label:${c}#${k}`};if(e.compact){let c=new Map;for(let k of e.bars){let y=c.get(k.y)??[];y.push(k),c.set(k.y,y)}for(let k of c.values())k.sort((y,p)=>y.x-p.x),k.forEach((y,p)=>{let b=K(y.label,a.nodeTextTransform),T=mt(b,a.nodeLabelFontSize,a.nodeLabelFontWeight,a.nodeLetterSpacing),A=y.y+y.h/2,L=p>0?k[p-1].x+k[p-1].w+4:2,Z=p+1<k.length?k[p+1].x-4:e.width-2;y.x-6-T>=L?l.push(q(J(y.id??y.label),"label",y.x-6,A,b,"gantt-task-label",a.nodeLabelFontSize,a.nodeLabelFontWeight,d.taskText,"end",a.nodeLetterSpacing)):y.x+y.w+6+T<=Z?l.push(q(J(y.id??y.label),"label",y.x+y.w+6,A,b,"gantt-task-label",a.nodeLabelFontSize,a.nodeLabelFontWeight,d.taskText,"start",a.nodeLetterSpacing)):l.push(q(J(y.id??y.label),"label",16,A,b,"gantt-task-label",a.nodeLabelFontSize,a.nodeLabelFontWeight,d.taskText,"start",a.nodeLetterSpacing))})}else for(let c of e.bars){let k=c.labelLines??[K(c.label,a.nodeTextTransform)],y=J(c.id??c.label);k.forEach((p,b)=>{let T=b===0?y:`${y}/${b}`;l.push(q(T,"label",16,c.y+c.h/2+b*O,p,"gantt-task-label",a.nodeLabelFontSize,a.nodeLabelFontWeight,d.taskText,"start",a.nodeLetterSpacing))})}let ht=new Map,gt=c=>{let k=ht.get(c)??0;return ht.set(c,k+1),k===0?`task:${c}`:`task:${c}#${k}`},yt=new Map(e.links.map(c=>[c.taskIndex,c.href]));for(let c of e.bars){let k=e.sections[c.sectionIndex]?.label,y=i.security==="strict"?void 0:yt.get(c.taskIndex),p=y?` data-href="${lt(y)}"`:"",b=S.has(c.taskIndex),T=b?" gantt-bar-critical-path":"",A=b?{stroke:d.criticalStroke,strokeWidth:String(Math.max(2,a.nodeLineWidth*1.5))}:{};if(c.milestoneX!==void 0){let X=c.milestoneX,R=c.y+c.h/2,w=c.h/2,P=St(c.tags),kt="gantt-milestone"+(P!==void 0?` gantt-milestone-${P}`:"")+T,it=`M ${h(X)} ${h(R-w)} L ${h(X+w)} ${h(R)} L ${h(X)} ${h(R+w)} L ${h(X-w)} ${h(R)} Z`,ot=P==="crit"?{fill:d.criticalFill,stroke:d.criticalStroke,strokeWidth:String(Math.max(1.5,a.nodeLineWidth))}:P==="active"?{fill:d.nodeFill,stroke:d.nodeBorder,strokeWidth:String(Math.max(1.5,a.nodeLineWidth)),opacity:"1"}:P==="done"?{fill:d.doneFill,stroke:d.nodeBorder,strokeWidth:String(Math.max(1,a.nodeLineWidth)),opacity:a.nodeFillColor?"0.72":"0.55"}:{fill:d.nodeFill,stroke:d.nodeBorder,strokeWidth:String(Math.max(1,a.nodeLineWidth))},st={...P!==void 0?{status:P}:{},...P==="done"?{progress:1}:{},...b?{emphasis:!0}:{},...k!==void 0?{category:k}:{}},dt=$t(n.styleFace,"milestone",st,{includeFallback:!1}),ct={...ot,...$e(dt),...A};l.push(tt({id:gt(c.id??c.label),role:"milestone",geometry:{kind:"path",d:it},paint:ct,channels:st},`<path class="${kt}" d="${it}" data-task="${lt(c.id??c.label)}"${Ee(dt,ct)}${ve(dt)}${p} />`));continue}let L=St(c.tags),Z={...L!==void 0?{status:L}:{},...L==="done"?{progress:1}:{},...b?{emphasis:!0}:{},...k!==void 0?{category:k}:{}},H=$t(n.styleFace,"task",Z,{includeFallback:!1}),Q={...Gn(L,d,a),...$e(H),...A};l.push(tt({id:gt(c.id??c.label),role:"task",geometry:{kind:"rect",x:h(c.x),y:h(c.y),width:h(Math.max(2,c.w)),height:h(c.h),rx:wt.barRadius,ry:wt.barRadius},paint:Q,channels:Z},`<rect class="${Sn(c.tags)}${T}" x="${h(c.x)}" y="${h(c.y)}" width="${h(Math.max(2,c.w))}" height="${h(c.h)}" rx="${wt.barRadius}" ry="${wt.barRadius}" data-task="${lt(c.id??c.label)}"${Ee(H,Q)}${ve(H)}${p} />`))}if(u.dependencyArrows){let c=new Map(e.bars.map(y=>[y.taskIndex,y])),k=new Map;for(let y of e.dependencies){let p=Ae(c.get(y.fromTaskIndex)),b=Ae(c.get(y.toTaskIndex)),T=`${p}->${b}:${y.kind}`,A=k.get(T)??0;k.set(T,A+1);let L=u.criticalArrows&&y.critical,Z=L?"gantt-dep-arrow gantt-dep-arrow-crit":"gantt-dep-arrow",H=L?D:m,Q=y.points.map(R=>({x:h(R.x),y:h(R.y)})),X=Q.map((R,w)=>`${w===0?"M":"L"} ${R.x} ${R.y}`).join(" ");l.push(ee({id:A===0?`dep:${T}`:`dep:${T}#${A}`,role:"edge",geometry:{kind:"path",d:X,points:Q},lineStyle:"solid",paint:L?{stroke:d.criticalStroke,strokeWidth:String(Math.max(1.8,a.lineWidth*1.5)),opacity:"0.95"}:{stroke:d.edgeStroke,strokeWidth:String(Math.max(1.2,a.lineWidth)),opacity:"0.6"},markers:{mid:[],end:F.find(R=>R.id===H)},endpoints:{from:p,to:b},relationship:{kind:y.kind,direction:"forward"},route:{ownership:"layout"},channels:L?{status:"crit",emphasis:!0}:void 0},`<path class="${Z}" d="${X}" marker-end="url(#${nt(H)})" data-from="${nt(p)}" data-to="${nt(b)}" />`))}}let Gt={stroke:d.edgeStroke,strokeWidth:String(Math.max(2,a.lineWidth)),strokeDasharray:"6 3"},xt=new Map;for(let c of e.verts){let k=xt.get(c.label)??0;xt.set(c.label,k+1),l.push(tt({id:`vert:${c.label}#${k}`,role:"marker-line",geometry:{kind:"line",x1:h(c.x),y1:h(g.y),x2:h(c.x),y2:h(v)},paint:Gt},`<line class="gantt-vert-marker" x1="${h(c.x)}" y1="${h(g.y)}" x2="${h(c.x)}" y2="${h(v)}" />`));let y=K(c.label,a.edgeTextTransform),p=e.topAxis?Math.max(24,C+a.edgeLabelFontSize*1.25):C===10&&a.edgeLabelFontSize===11?8:C;l.push(q(`vert-label:${c.label}#${k}`,"axis",c.x,g.y-p,y,"gantt-axis-label",a.edgeLabelFontSize,Math.max(a.edgeLabelFontWeight,600),d.axisText,"middle",a.edgeLetterSpacing))}if(e.todayX!==void 0){let c=e.todayMarkerStyle!==void 0?De(e.todayMarkerStyle):void 0,k=c!==void 0?Fe(c):"",y=Object.fromEntries(c?.applied??[]);l.push(tt({id:"today-marker",role:"marker-line",geometry:{kind:"line",x1:h(e.todayX),y1:h(g.y),x2:h(e.todayX),y2:h(v)},paint:{stroke:y.stroke??a.edgeStrokeColor??"var(--accent, var(--fg))",strokeWidth:y["stroke-width"]??String(Math.max(2,a.lineWidth)),strokeDasharray:y["stroke-dasharray"]??"4 3",...y.opacity!==void 0?{opacity:y.opacity}:{}}},`<line class="gantt-today-marker"${k?` style="${nt(k)}"`:""} x1="${h(e.todayX)}" y1="${h(g.y)}" x2="${h(e.todayX)}" y2="${h(v)}" />`))}if(e.title){let c=K(e.title,a.groupTextTransform);l.push(q("title","title",e.width/2,Te(a),c,"gantt-title",Pt(a),Math.max(a.groupHeaderFontWeight,600),d.titleFill,"middle",a.groupLetterSpacing))}return l.push(ae()),{family:"gantt",width:e.width,height:e.height,colors:r,transparent:s,parts:l}}function Fn(t){return`gantt-${oe(t.width,t.height,...t.bars.map(e=>`${e.taskIndex}:${e.id??e.label}`),...t.dependencies.map(e=>`${e.fromTaskIndex}>${e.toTaskIndex}:${e.kind}`))}`}function Ce(t,e){return{id:t,shape:"arrow",size:{width:8,height:7},ref:{x:8,y:3.5},orient:"auto",geometry:{kind:"path",d:"M0,0 L8,3.5 L0,7 Z"},paint:{fill:e}}}function Ae(t){return t===void 0?"":t.id??t.label}var la=Kt(se,{normalizeRequest:t=>({familyConfig:{config:Tt(t.source.frontmatter)}}),layout:t=>{let e=t.familyConfig?.config??Tt(void 0),r=Ge(t.source.familyLines,e,{clock:{today:t.renderOptions.ganttToday},layout:{renderOptions:t.renderOptions,...t.styleFace?{styleFace:t.styleFace}:{}}});return Xt(r.positioned)},lowerScene:zt(Le)});export{la as default};
@@ -0,0 +1,8 @@
1
+ import{a as $e}from"./chunk-ANTNEVJC.js";import{f as ke}from"./chunk-ZZECLXC3.js";import{a as Ge}from"./chunk-OFRMKQA6.js";import{b as ae,e as se}from"./chunk-FLD63DXE.js";import{a as ce,b as me,c as le}from"./chunk-EPFMQPXX.js";import{C as Y,G as pe,H as de,I as fe,N as j,O as v,aa as ue,ba as z,ca as ge,e as A,ia as N,ja as ye,ka as q,ma as K,n as U,o as he,oa as be,p as H,pa as Z,qa as xe,ya as J}from"./chunk-EX6TP7QM.js";import{f as oe}from"./chunk-P7HMSKHJ.js";var Re=Object.freeze({id:"gitgraph",upstreamId:"gitGraph",maturity:"stable",label:"GitGraph",headers:["gitGraph"],aliases:[],config:{section:"gitGraph",keys:["showBranches","showCommitLabel","mainBranchName","mainBranchOrder","parallelCommits","rotateCommitLabel"]},identity:{id:"family:gitgraph",kind:"family",version:"1.0.0",compatibility:{core:"^0.3.0"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["status","category"],semanticRoles:["prelude","chrome","title","group","rail","edge","node","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"rail",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`gitGraph
2
+ commit id:"base"
3
+ branch feature
4
+ commit id:"work"
5
+ checkout main
6
+ commit id:"release"
7
+ merge feature id:"merge"`,detect:e=>/^gitgraph(?:\s+(?:lr|tb|bt))?\s*:?\s*$/.test(e),detectLoose:e=>/^gitgraph(?:\s|:|$)/.test(e)}),we=Re;var $=class extends Error{constructor(n,r){super(n);this.line=r;this.name="GitGraphParseError"}line},te=class extends ${constructor(n,r){super(`Duplicate gitGraph commit id '${n}' on line ${r}; commit IDs must be unique.`,r);this.id=n}id;code="GITGRAPH_DUPLICATE_COMMIT_ID"};function Ce(e,t={}){let n=ae(e.replace(/^\uFEFF/,"").split(/\r?\n/));if(n.unclosedIndex!==void 0)throw new $("Unclosed accDescr block",n.unclosedIndex+1);let r=n.familyLines,s=r.findIndex(a=>/^\s*gitgraph\b/i.test(a));if(s<0)throw new $("gitGraph source must start with a gitGraph header");let c=r[s].trim().match(/^gitGraph(?:\s+(LR|TB|BT))?\s*:?[ \t]*$/i);if(!c)throw new $("Invalid gitGraph header; expected gitGraph, gitGraph LR:, gitGraph TB:, or gitGraph BT:",s+1);let f=c[1]?.toUpperCase()??"LR",h=typeof t.mainBranchName=="string"&&t.mainBranchName.trim()?t.mainBranchName.trim():"main",p=Te(t.mainBranchOrder,0),b=typeof t.title=="string"&&t.title.trim()?t.title.trim():void 0,B=[],u=new Map([[h,{name:h,order:p,sequence:0}]]),k=[],w=new Map,y=h,P=0,I=n.accessibility.title,o=n.accessibility.descr,M=(a,C,L,D={},S)=>{let E=a.id!==void 0,T=a.id??`c${P}`;if(w.has(T))throw new te(T,L);let m=C==="merge"?"MERGE":C==="cherry-pick"?"CHERRY_PICK":a.type??"NORMAL",g=u.get(y),i={id:T,...a.msg?{message:a.msg}:{},type:m,tags:a.tags,branch:y,parents:S??(g.head?[g.head]:[]),sequence:P++,source:C,customId:E,...D};return B.push(i),w.set(T,i),g.head=T,i};for(let a=s+1;a<r.length;a++){let C=r[a].trim();if(!C||C.startsWith("%%"))continue;let L=C.match(/^commit(?:\s+(.*))?$/i);if(L){let m=L[1]??"",g=m.match(/^"((?:\\.|[^"])*)"$/),i=g?{tags:[],msg:g[1].replace(/\\(["\\])/g,"$1")}:Q(m,a+1,["id","tag","type","msg"]),l=M(i,"commit",a+1);k.push({kind:"commit",ref:l.id});continue}let D=C.match(/^branch\s+("(?:\\.|[^"])+"|\S+)(?:\s+order\s*:\s*(-?\d+))?$/i);if(D){let m=ee(D[1]);if(u.has(m))throw new $(`Trying to create existing branch '${m}'; use checkout ${_e(m)} instead.`,a+1);let g=D[2]===void 0?void 0:Number(D[2]);if(g!==void 0&&g<=0)throw new $("Branch order must be a positive integer.",a+1);let i=g??De(u.size);u.set(m,{name:m,order:i,sequence:u.size,...u.get(y)?.head?{head:u.get(y).head}:{}}),y=m,k.push({kind:"branch",name:m,...D[2]!==void 0?{order:i}:{}});continue}let S=C.match(/^(checkout|switch)\s+("(?:\\.|[^"])+"|\S+)$/i);if(S){let m=ee(S[2]);if(!u.has(m))throw new $(`Trying to checkout branch '${m}' before it is created.`,a+1);y=m,k.push({kind:"checkout",branch:m,keyword:S[1].toLowerCase()});continue}let E=C.match(/^merge\s+("(?:\\.|[^"])+"|\S+)(?:\s+(.*))?$/i);if(E){let m=ee(E[1]),g=Q(E[2]??"",a+1,["id","tag","type"]);if(m===y)throw new $(`Cannot merge branch '${m}' into itself.`,a+1);let i=u.get(y),l=u.get(m);if(!l)throw new $(`Branch to be merged ('${m}') does not exist.`,a+1);if(!i.head)throw new $(`Current branch '${y}' has no commits.`,a+1);if(!l.head)throw new $(`Branch to be merged ('${m}') has no commits.`,a+1);if(l.head===i.head)throw new $("Cannot merge branches with the same head commit.",a+1);let x=M(g,"merge",a+1,{mergeBranch:m,message:`merged branch ${m} into ${y}`,...g.type?{customType:g.type}:{}},[i.head,l.head]);k.push({kind:"merge",ref:x.id,branch:m});continue}let T=C.match(/^cherry-pick\s+(.+)$/i);if(T){let m=Q(T[1],a+1,["id","tag","parent"]);if(!m.id)throw new $('cherry-pick requires id:"existing commit".',a+1);let g=w.get(m.id);if(!g)throw new $(`Cherry-pick source commit '${m.id}' does not exist.`,a+1);let i=u.get(y);if(!i.head)throw new $(`Current branch '${y}' has no commits.`,a+1);if(Ie(i.head,g.id,w))throw new $(`Cherry-pick source '${g.id}' is already reachable from current branch '${y}'.`,a+1);if(g.parents.length===2){if(!m.parent)throw new $(`Cherry-picking merge commit '${g.id}' requires parent:"immediate parent".`,a+1);if(!g.parents.includes(m.parent))throw new $(`Cherry-pick parent '${m.parent}' is not an immediate parent of '${g.id}'.`,a+1)}let l=m.tags.length===0?`cherry-pick:${g.id}${m.parent?`|parent:${m.parent}`:""}`:void 0,x={tags:l?[l]:m.tags},G=M(x,"cherry-pick",a+1,{message:`cherry-picked ${g.message??g.id} into ${y}`,cherrySource:g.id,...m.parent?{cherryParent:m.parent}:{},...l?{syntheticCherryTag:l}:{}},[i.head,g.id]);k.push({kind:"cherry-pick",ref:G.id,source:g.id,...m.parent?{parent:m.parent}:{}});continue}throw new $(`Unsupported gitGraph statement on line ${a+1}: ${C}`,a+1)}return{direction:f,mainBranchName:h,...b?{title:b}:{},commits:B,branches:[...u.values()],statements:k,...I?{accessibilityTitle:I}:{},...o?{accessibilityDescription:o}:{}}}function Q(e,t,n){let r={tags:[]},s=0,c=/([A-Za-z][\w-]*)\s*:\s*(?:"((?:\\.|[^"])*)"|(\S+))/gy;for(;s<e.length;){for(;/\s/.test(e[s]??"");)s++;if(s>=e.length)break;c.lastIndex=s;let f=c.exec(e);if(!f)throw new $(`Invalid gitGraph attribute syntax near '${e.slice(s)}'.`,t);let h=f[1].toLowerCase();if(!n.includes(h))throw new $(`Attribute '${h}' is not valid for this gitGraph statement.`,t);let p=(f[2]??f[3]??"").replace(/\\(["\\])/g,"$1");if(h==="id")r.id=p;else if(h==="msg")r.msg=p;else if(h==="tag")r.tags.push(p);else if(h==="parent")r.parent=p;else{let b=p.toUpperCase();if(!["NORMAL","REVERSE","HIGHLIGHT"].includes(b))throw new $(`Invalid commit type '${p}'.`,t);r.type=b}s=c.lastIndex}return r}function ee(e){return e.startsWith('"')?e.slice(1,-1).replace(/\\(["\\])/g,"$1"):e}function _e(e){return/^[A-Za-z0-9_./-]+$/.test(e)&&!/^(commit|branch|checkout|switch|merge|cherry-pick)$/i.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Te(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function Ie(e,t,n){let r=[e],s=new Set;for(;r.length>0;){let c=r.pop();if(c===t)return!0;s.has(c)||(s.add(c),r.push(...n.get(c)?.parents??[]))}return!1}function De(e){return e<=9?e/10:1-1/(e+1)}var W=12;function Le(e,t={}){let n=Ae(t.padding,44),r=t.showBranches!==!1,s=t.showCommitLabel!==!1,c=t.rotateCommitLabel!==!1,f=Xe(t.commitLabelFontSize,11),h=e.title?40:0,p=[...e.branches].sort((i,l)=>i.order-l.order||i.sequence-l.sequence||oe(i.name,l.name)),b=new Map(p.map((i,l)=>[i.name,l])),B=new Map(e.commits.map(i=>[i.id,i])),u=new Map;for(let i of e.commits){let l=i.parents.length===0?0:Math.max(...i.parents.map(x=>u.get(x)??0))+1;u.set(i.id,l)}let k=i=>t.parallelCommits?u.get(i.id):i.sequence,w=Math.max(0,...e.commits.map(k)),y=82,P=94,I=r?Math.max(80,...p.map(i=>A(i.name,12,600)+24)):20,o=new Map;for(let i of e.commits){let l=k(i),x=Se(i,e.direction,c,f,s),G=o.get(l);o.set(l,G?{minX:Math.min(G.minX,x.minX),minY:Math.min(G.minY,x.minY),maxX:Math.max(G.maxX,x.maxX),maxY:Math.max(G.maxY,x.maxY)}:x)}let M=new Map;for(let i=0;i<=w;i++){let l=o.get(i)??{minX:-10,minY:-10,maxX:10,maxY:10};if(i===0){M.set(i,Math.max(0,-l.minX));continue}let x=o.get(i-1)??{minX:-10,minY:-10,maxX:10,maxY:10},G=M.get(i-1);M.set(i,Math.max(G+P,G+x.maxX-l.minX+18))}let a=n+I+20,C=n+h+38,L=e.commits.map(i=>{let l=b.get(i.branch)??0,x=k(i);return e.direction==="LR"?{...i,lane:l,x:a+M.get(x),y:n+h+l*y}:{...i,lane:l,x:n+I+l*150,y:C+(e.direction==="BT"?w-x:x)*P}}),D=new Map(L.map(i=>[i.id,i])),S=[];for(let i of L)for(let[l,x]of[...new Set(i.parents)].entries()){let G=D.get(x);if(!G)continue;let R=e.direction==="LR"?(G.x+i.x)/2:(G.y+i.y)/2,O=e.direction==="LR"?[{x:G.x,y:G.y},{x:R,y:G.y},{x:R,y:i.y},{x:i.x,y:i.y}]:[{x:G.x,y:G.y},{x:G.x,y:R},{x:i.x,y:R},{x:i.x,y:i.y}],F=l===0?"parent":i.source==="cherry-pick"?"cherry-pick":"merge";S.push({from:G.id,to:i.id,kind:F,points:O})}let E=p.map((i,l)=>{let x=L.filter(R=>R.branch===i.name);if(e.direction==="LR"){let R=n+h+l*y;return{...i,lane:l,x1:a-14,y1:R,x2:Math.max(a,...x.map(O=>O.x)),y2:R}}let G=n+I+l*150;return{...i,lane:l,x1:G,y1:n+h-14,x2:G,y2:Math.max(C,...x.map(R=>R.y))}}),T,m;e.direction==="LR"?(T=Math.max(n*2+I+80,...L.map(i=>i.x+(s?Math.max(26,A(i.message||i.id,f,500)*.75):18)))+n,m=n*2+h+Math.max(1,p.length)*y+(s?f*2+26:0)):(T=n*2+I+Math.max(1,p.length)*150,m=Math.max(n*2+h+80,...L.map(i=>i.y+(s?38:18)))+n),e.title&&(T=Math.max(T,A(e.title,16,600)+n*2));let g=L.flatMap(i=>[...s?[ze(i,e.direction,c,f)]:[],...i.tags.map((l,x)=>Be(l,i.x+14,i.y-16-x*17,10,600,"start",0))]);if(g.length>0){let i=Math.min(...g.map(_=>_.minX)),l=Math.min(...g.map(_=>_.minY)),x=Math.max(...g.map(_=>_.maxX)),G=Math.max(...g.map(_=>_.maxY)),R=i<n?n-i:0,O=n+h,F=l<O?O-l:0;if(R!==0||F!==0){for(let _ of L)_.x+=R,_.y+=F;for(let _ of E)_.x1+=R,_.x2+=R,_.y1+=F,_.y2+=F;for(let _ of S)for(let re of _.points)re.x+=R,re.y+=F}T=Math.max(T+R,x+R+n),m=Math.max(m+F,G+F+n)}for(let i of L)i.x=X(i.x),i.y=X(i.y);for(let i of E)i.x1=X(i.x1),i.y1=X(i.y1),i.x2=X(i.x2),i.y2=X(i.y2);for(let i of S)for(let l of i.points)l.x=X(l.x),l.y=X(l.y);return{width:X(T),height:X(m),direction:e.direction,...e.title?{title:e.title}:{},commits:L,branches:E,edges:S,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,showBranches:r,showCommitLabel:s,rotateCommitLabel:c}}function Se(e,t,n,r,s){let c=[{minX:-10,minY:-10,maxX:10,maxY:10}];if(s){let f=e.message||e.id;c.push(ie(f,t==="LR"?0:14,t==="LR"?24:4,r,t==="LR"?"middle":"start",t==="LR"&&n?45:0))}for(let[f,h]of e.tags.entries()){let p=Be(h,14,-16-f*17,10,600,"start",0);c.push({...p,minX:p.minX-4,maxX:p.maxX+6,minY:p.minY-2,maxY:p.maxY+2})}return{minX:Math.min(...c.map(f=>f.minX)),minY:Math.min(...c.map(f=>f.minY)),maxX:Math.max(...c.map(f=>f.maxX)),maxY:Math.max(...c.map(f=>f.maxY))}}function ze(e,t,n,r){let s=e.message||e.id;return t==="LR"?ie(s,e.x,e.y+24,r,"middle",n?45:0):ie(s,e.x+14,e.y+4,r,"start",0)}function ie(e,t,n,r,s,c){let f=Math.max(18,A(e,r,500)+W*2),h=s==="middle"?-f/2:-W,p=J({x0:t+h,y0:n-r,x1:t+h+f,y1:n+6},{x:t,y:n},c);return{minX:p.x0,minY:p.y0,maxX:p.x1,maxY:p.y1}}function Be(e,t,n,r,s,c,f){let h=A(e,r,s),p=c==="middle"?-h/2:0,b=-r,B=r*.28,u=J({x0:t+p,y0:n+b,x1:t+p+h,y1:n+B},{x:t,y:n},f);return{minX:u.x0,minY:u.y0,maxX:u.x1,maxY:u.y1}}function Ae(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:t}function Xe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function X(e){return Math.round(e*1e3)/1e3}function V(e){let n=(e&&typeof e=="object"&&!Array.isArray(e)?e:{}).commitLabelFontSize,r=typeof n=="number"?n:typeof n=="string"?Number.parseFloat(n):11;return Number.isFinite(r)&&r>0?r:11}function ne(e,t){let n={commitLabelFontSize:V(t)};if(!e||typeof e!="object"||Array.isArray(e))return n;let r=e;for(let s of["showBranches","showCommitLabel","rotateCommitLabel","parallelCommits"])typeof r[s]=="boolean"&&(n[s]=r[s]);return typeof r.mainBranchName=="string"&&r.mainBranchName.trim()&&(n.mainBranchName=r.mainBranchName.trim()),typeof r.mainBranchOrder=="number"&&Number.isFinite(r.mainBranchOrder)&&(n.mainBranchOrder=r.mainBranchOrder),n}function Pe(e,t){return Le(e,t)}function ve(e){let t=e&&typeof e=="object"&&!Array.isArray(e)?e:{},n={commitLabelFontSize:V(t)};for(let r=0;r<8;r++)for(let s of[`git${r}`,`gitBranchLabel${r}`,`gitInv${r}`]){let c=Y(t[s]);c!==void 0&&(n[s]=c)}for(let r of["commitLabelColor","commitLabelBackground"]){let s=Y(t[r]);s!==void 0&&(n[r]=s)}return n}function Me(e){let{positioned:t,colors:n,resolved:r}=e,s=r.renderOptions,c=n.font??"Inter",f=s.transparent??!1,h="gitgraph-title",p="gitgraph-desc",b=Ge(t.accessibilityTitle??"Git graph",t.accessibilityDescription,h,p,"git graph"),B=[fe(t.width,t.height,n,f,{attrs:b}),de(c,!1,n.shadow,n.embedFontImport)],u=pe(n);u&&B.push(`<defs>${u}</defs>`);let k=r.familyAppearance;if(!k)throw new Error("GitGraph rendering requires request-boundary family appearance resolution");let w=k.themeVariables,y=Ye(t,w,n),P=[xe({id:"prelude",width:t.width,height:t.height,colors:n,transparent:f,font:c,hasMonoFont:!1},B.join(`
8
+ `))];if(P.push(K({id:"acc-title",element:"title",domId:h,text:t.accessibilityTitle??"Git graph"})),t.accessibilityDescription&&P.push(K({id:"acc-desc",element:"description",domId:p,text:t.accessibilityDescription})),t.title&&P.push(q({id:"gitgraph-visible-title",role:"title",text:t.title,x:t.width/2,y:24,fontSize:16,anchor:"middle",paint:{fill:"var(--_text)"}},`<text class="gitgraph-title" data-id="gitgraph-title" x="${d(t.width/2)}" y="24" text-anchor="middle" font-size="16" font-weight="600" fill="var(--_text)">${j(t.title)}</text>`)),t.showBranches)for(let o of t.branches){let M=ge("branch",o.name),a=y.branches.get(o.name),C=d(t.direction==="LR"?o.x1-10:o.x1),L=d(t.direction==="LR"?o.y1:o.y1-16),D=d(A(o.name,12,600)+10),S=d(t.direction==="LR"?C-D:C-D/2);P.push(Z({id:M,role:"group",channels:{category:o.name},open:`<g class="git-branch" data-id="${v(M)}" data-branch="${v(o.name)}">`,close:"</g>",children:[{node:N({id:z(M,"label-bg"),role:"chrome",geometry:{kind:"rect",x:S,y:L-13,width:D,height:18,rx:4,ry:4},paint:{fill:a.labelBackground,stroke:a.line,strokeWidth:"1"}},`<rect class="git-branch-label-background" x="${d(S)}" y="${d(L-13)}" width="${d(D)}" height="18" rx="4" fill="${v(a.labelBackground)}" stroke="${v(a.line)}" stroke-width="1" />`),indent:2},{node:N({id:z(M,"line"),role:"rail",geometry:{kind:"line",x1:o.x1,y1:o.y1,x2:o.x2,y2:o.y2},paint:{stroke:a.line,strokeWidth:"3",opacity:"0.86"},channels:{category:o.name}},`<line class="git-branch-line" data-branch="${v(o.name)}" x1="${d(o.x1)}" y1="${d(o.y1)}" x2="${d(o.x2)}" y2="${d(o.y2)}" stroke="${v(a.line)}" stroke-width="3" opacity="0.86" />`),indent:2},{node:q({id:z(M,"label"),role:"label",text:o.name,x:C,y:L,fontSize:12,anchor:t.direction==="LR"?"end":"middle",paint:{fill:a.label},channels:{category:o.name}},`<text class="git-branch-label" data-branch="${v(o.name)}" x="${d(C)}" y="${d(L)}" text-anchor="${t.direction==="LR"?"end":"middle"}" font-size="12" font-weight="600" fill="${v(a.label)}">${j(o.name)}</text>`),indent:2}]}))}let I=new Map(t.commits.map(o=>[o.id,o]));for(let o of t.edges){let M=o.points.map(L=>`${d(L.x)},${d(L.y)}`).join(" "),a=I.get(o.to)?.branch,C=a?y.branches.get(a)?.line??"var(--_line)":"var(--_line)";P.push(ye({id:ue(o.from,o.to),role:"edge",geometry:{kind:"polyline",points:o.points},lineStyle:o.kind==="cherry-pick"?"dashed":"solid",paint:{fill:"none",stroke:C,strokeWidth:o.kind==="parent"?"2":"2.5",...o.kind==="cherry-pick"?{strokeDasharray:"4 3"}:{}},endpoints:{from:o.from,to:o.to},relationship:{kind:o.kind,direction:"forward"},route:{ownership:"layout"},channels:{category:o.kind}},`<polyline class="git-edge git-edge-${o.kind}" data-from="${v(o.from)}" data-to="${v(o.to)}" points="${M}" fill="none" stroke="${v(C)}" stroke-width="${o.kind==="parent"?2:2.5}"${o.kind==="cherry-pick"?' stroke-dasharray="4 3"':""} />`))}for(let o of t.commits)P.push(Ee(o,t,y));return P.push(be()),{family:"gitgraph",width:t.width,height:t.height,colors:n,transparent:f,parts:P}}function Ee(e,t,n){let r=e.customType??e.type,s=Fe(e),c=n.branches.get(e.branch),f=r==="HIGHLIGHT"?c.highlight:r==="MERGE"?c.line:c.normalFill,h=c.line,p=[{node:N({id:z(e.id,"shape"),role:"chrome",geometry:s,paint:{fill:f,stroke:h,strokeWidth:"2"},channels:{status:r.toLowerCase(),category:e.branch}},$e(s,{fill:f,stroke:h,strokeWidth:"2"})),indent:2}];if(r==="MERGE"&&p.push({node:N({id:z(e.id,"inner"),role:"chrome",geometry:{kind:"circle",cx:e.x,cy:e.y,r:5},paint:{fill:"none",stroke:"var(--bg)",strokeWidth:"1.5"}},`<circle cx="${d(e.x)}" cy="${d(e.y)}" r="5" fill="none" stroke="var(--bg)" stroke-width="1.5" />`),indent:2}),r==="REVERSE")for(let b of[-1,1])p.push({node:N({id:z(e.id,"cross",b),role:"chrome",geometry:{kind:"line",x1:e.x-6,y1:e.y+b*6,x2:e.x+6,y2:e.y-b*6},paint:{stroke:"var(--_arrow)",strokeWidth:"2"}},`<line x1="${d(e.x-6)}" y1="${d(e.y+b*6)}" x2="${d(e.x+6)}" y2="${d(e.y-b*6)}" stroke="var(--_arrow)" stroke-width="2" />`),indent:2});if(t.showCommitLabel){let b=e.message||e.id,B=t.direction==="LR"?e.x:e.x+14,u=t.direction==="LR"?e.y+24:e.y+4,k=t.direction==="LR"?"middle":"start",w=t.direction==="LR"&&t.rotateCommitLabel?{kind:"rotate",angle:45,cx:d(B),cy:d(u)}:void 0,y=w?` transform="rotate(${w.angle} ${w.cx} ${w.cy})"`:"";if(n.commitLabelBackground){let P=d(Math.max(18,A(b,n.commitLabelFontSize,500)+W*2)),I=d(k==="middle"?B-P/2:B-W);p.push({node:N({id:z(e.id,"label-bg"),role:"chrome",geometry:{kind:"rect",x:I,y:u-n.commitLabelFontSize,width:P,height:n.commitLabelFontSize+6,rx:3,ry:3},paint:{fill:n.commitLabelBackground,stroke:c.line,strokeWidth:"0.75"},transform:w},`<rect class="git-commit-label-background" x="${d(I)}" y="${d(u-n.commitLabelFontSize)}" width="${d(P)}" height="${d(n.commitLabelFontSize+6)}" rx="3" fill="${v(n.commitLabelBackground)}" fill-opacity="0.94" stroke="${v(c.line)}" stroke-width="0.75"${y} />`),indent:2})}p.push({node:q({id:z(e.id,"label"),role:"label",text:b,x:B,y:u,fontSize:n.commitLabelFontSize,anchor:k,paint:{fill:n.commitLabelColor},transform:w},`<text class="git-commit-label" x="${d(B)}" y="${d(u)}" text-anchor="${k}" font-size="${d(n.commitLabelFontSize)}" fill="${v(n.commitLabelColor)}"${y}>${j(b)}</text>`),indent:2})}return e.tags.forEach((b,B)=>{let u=e.x+14,k=e.y-16-B*17,w=d(A(b,10,600)+10);p.push({node:N({id:z(e.id,"tag-bg",B),role:"chrome",geometry:{kind:"rect",x:u-4,y:k-11,width:w,height:15,rx:4,ry:4},paint:{fill:c.labelBackground,stroke:c.line,strokeWidth:"0.75"}},`<rect class="git-tag-background" x="${d(u-4)}" y="${d(k-11)}" width="${d(w)}" height="15" rx="4" fill="${v(c.labelBackground)}" stroke="${v(c.line)}" stroke-width="0.75" />`),indent:2}),p.push({node:q({id:z(e.id,"tag",B),role:"label",text:b,x:u,y:k,fontSize:10,anchor:"start",paint:{fill:c.label}},`<text class="git-tag" x="${d(u)}" y="${d(k)}" text-anchor="start" font-size="10" font-weight="600" fill="${v(c.label)}">${j(b)}</text>`),indent:2})}),Z({id:e.id,role:"node",channels:{status:r.toLowerCase(),category:e.branch},open:`<g class="git-commit type-${r.toLowerCase()}" data-id="${v(e.id)}" data-branch="${v(e.branch)}" data-commit-type="${e.type}"${r!==e.type?` data-visual-type="${r}"`:""}>`,close:"</g>",children:p})}function Fe(e){let t=e.customType??e.type;return t==="HIGHLIGHT"?{kind:"rect",x:e.x-9,y:e.y-9,width:18,height:18,rx:2,ry:2}:t==="CHERRY_PICK"?{kind:"polygon",points:[{x:e.x,y:e.y-10},{x:e.x+10,y:e.y},{x:e.x,y:e.y+10},{x:e.x-10,y:e.y}]}:{kind:"circle",cx:e.x,cy:e.y,r:t==="MERGE"?10:8}}function Ye(e,t,n){let r=t&&typeof t=="object"&&!Array.isArray(t)?t:{},s=typeof n.accent=="string"?n.accent:"#3b82f6",c=typeof n.bg=="string"?n.bg:"#ffffff",f=/^#[0-9a-f]{6}$/i.test(s)?s:"#3b82f6",h=/^#[0-9a-f]{6}$/i.test(c)?c:"#ffffff",p=ke(e.branches.length,e.branches.length<=6?{accent:f,bg:h}:{accent:s,bg:c}),b=new Map;e.branches.forEach((u,k)=>{let w=k%8,y=Y(r[`git${w}`])??p[k],P=Y(r[`gitBranchLabel${w}`])??y,I=Y(r[`gitInv${w}`])??y,o=H(y)&&H(h)?U(y,h,18):"var(--_node-fill)",M=H(y)&&H(h)?U(y,h,9):"var(--bg)",a=he(P,M,4.5,n.fg);b.set(u.name,{line:y,label:a,highlight:I,normalFill:o,labelBackground:M})});let B=V(r);return{branches:b,commitLabelColor:Y(r.commitLabelColor)??"var(--_text-sec)",commitLabelBackground:Y(r.commitLabelBackground)??(H(h)?h:"var(--bg)"),commitLabelFontSize:B}}function d(e){return Math.round(e*1e3)/1e3}var bt=le(we,{normalizeRequest:e=>({familyConfig:{position:ne(e.source.config.gitGraph,e.source.config.themeVariables),...typeof e.source.frontmatter.title=="string"?{title:e.source.frontmatter.title}:{}},appearance:{family:{themeVariables:ve(e.source.config.themeVariables)}}}),layout:e=>{let t=e.familyConfig,n=t?.position??ne(void 0),r=se(Ce(e.source.familyBody,{mainBranchName:n.mainBranchName,mainBranchOrder:n.mainBranchOrder,title:t?.title}),e.source.accessibility);return me(Pe(r,n),{injectAccessibility:!1})},lowerScene:ce(Me)});export{bt as default};
@@ -0,0 +1,40 @@
1
+ import{b as je,c as Le,e as Ae,f as ee}from"./chunk-ZZECLXC3.js";import{a as se}from"./chunk-AOCFMYYH.js";import{a as me}from"./chunk-PZEWZT35.js";import{e as Z}from"./chunk-QMZ4Y6I7.js";import"./chunk-FFOHLPDA.js";import{a as De}from"./chunk-I6VE56S7.js";import{a as ze}from"./chunk-OFRMKQA6.js";import{a as de,d as ke}from"./chunk-FLD63DXE.js";import{e as re,j as L,k as ie}from"./chunk-32FWKUUV.js";import{a as $e,b as Se,c as Fe}from"./chunk-EPFMQPXX.js";import{G as ve,H as Ce,I as Je,J as ge,M as Re,N as pe,O as _,P as Y,e as _e,ea as Me,i as V,ia as M,ja as K,ka as H,la as Q,na as Pe,oa as we,p as N,pa as O,qa as Te,s as ue,u as ae,wa as We}from"./chunk-EX6TP7QM.js";import"./chunk-P7HMSKHJ.js";var ut=Object.freeze({id:"journey",upstreamId:"journey",maturity:"stable",label:"Journey",headers:["journey"],aliases:[],config:{section:"journey",keys:["diagramMarginX","diagramMarginY","leftMargin","maxLabelWidth","width","height","taskFontSize","taskFontFamily","taskMargin","actorColours","sectionFills","sectionColours","titleColor","titleFontFamily","titleFontSize","useMaxWidth","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","bottomMarginAdj","rightAngles","activationWidth","textPlacement"],noopKeys:["boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","bottomMarginAdj","rightAngles","activationWidth","textPlacement"]},identity:{id:"family:journey",kind:"family",version:"1.0.0",compatibility:{core:"^0.3.0"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["value","category"],semanticRoles:["prelude","defs","chrome","title","series","grid","axis","rail","legend","actor","section","group-header","task","marker-line","label","score"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"series",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"grid",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"grid",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"axis",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"rail",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"legend",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"legend",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"actor",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"data-mark",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"marker-line",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"score",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"score",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"score",primitive:"data-mark",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`journey
2
+ title Checkout
3
+ section Browse
4
+ Find product: 4: Shopper
5
+ section Buy
6
+ Pay: 3: Shopper`,detect:e=>/^journey\s*$/.test(e),detectLoose:e=>/^journey(?:\s|$)/.test(e)}),Ye=ut;var d={paddingX:32,paddingY:28,titleFontSize:18,titleFontWeight:600,titleGap:22,sectionFontSize:12,sectionFontWeight:600,sectionHeaderMinHeight:36,sectionHeaderPadX:16,sectionTaskGap:30,sectionSpanPadX:10,sectionGap:8,legendGap:26,legendMinWidth:96,legendTitleGap:26,legendRowGap:22,legendDotRadius:5,legendDotLabelGap:12,scoreLabelGutter:22,scoreLabelGap:12,taskGap:26,taskMinWidth:124,taskMinHeight:58,taskFontSize:13,taskFontWeight:500,taskPadX:14,taskPadY:12,actorDotRadius:4,actorDotGap:8,taskToGuideGap:56,scoreStep:40,markerRadius:16,baselineGap:32,baselineClearance:6,arrowOverhang:28,minPlotWidth:200},He={nodeLabelFontSize:d.taskFontSize,edgeLabelFontSize:11,groupHeaderFontSize:d.sectionFontSize,nodeLabelFontWeight:d.taskFontWeight,edgeLabelFontWeight:600,groupHeaderFontWeight:d.sectionFontWeight,nodePaddingX:d.taskPadX,nodePaddingY:d.taskPadY,nodeCornerRadius:5,nodeLineWidth:re.outerBox,edgeLineWidth:re.connector,groupCornerRadius:6,groupPaddingX:d.sectionHeaderPadX,groupPaddingY:10,groupLabelPaddingX:d.sectionHeaderPadX,groupLineWidth:re.outerBox};function gt(e){let t=e.mermaidConfig?.journey,n=Ee(t?.titleFontSize,d.titleFontSize);return{visual:{paddingX:I(t?.diagramMarginX,d.paddingX),paddingY:I(t?.diagramMarginY,d.paddingY),legendMinWidth:I(t?.leftMargin,d.legendMinWidth),maxLabelWidth:I(t?.maxLabelWidth,360),taskGap:I(t?.taskMargin,d.taskGap),taskMinWidth:I(t?.width,d.taskMinWidth),taskMinHeight:I(t?.height,d.taskMinHeight),titleFontSize:n,titleFontSizeCss:String(t?.titleFontSize??n),titleFontFamily:ye(t?.titleFontFamily),titleColor:ye(t?.titleColor),taskFontFamily:ye(t?.taskFontFamily),actorColours:t?.actorColours??[],sectionFills:t?.sectionFills??[],sectionColours:t?.sectionColours??[]},styleDefaults:pt(t),useMaxWidth:t?.useMaxWidth===!0}}function he(e={}){return gt(e)}function pt(e){return{...He,nodeLabelFontSize:Ee(e?.taskFontSize,He.nodeLabelFontSize)}}function Ge(e,t,n={},o){let r=t.visual,i=ie(n,t.styleDefaults,o),a=e.sections.some(g=>!!g.label),s=e.title?L(e.title,i.groupTextTransform):void 0,l=s?V(s,r.titleFontSize,d.titleFontWeight):void 0,c=yt(e).map(g=>{let f=L(g,i.edgeTextTransform);return{raw:g,label:se(f,r.maxLabelWidth,i.edgeLabelFontSize,i.edgeLabelFontWeight)}}),u=new Map(c.map((g,f)=>[g.raw,f])),p=c.map(g=>V(Re(g.label),i.edgeLabelFontSize,i.edgeLabelFontWeight)),m=c.length>0?Math.max(r.legendMinWidth,d.legendDotRadius*2+d.legendDotLabelGap+Math.max(_e("Actors",i.groupHeaderFontSize,i.groupHeaderFontWeight),...p.map(g=>g.width))):0,h=e.sections.map(g=>{let f=g.label??g.id,b=Z(o,"group-header",{category:f},{includeFallback:!1}),P=b?.fontSize??i.groupHeaderFontSize,w=b?.fontWeight??i.groupHeaderFontWeight,A=b?.letterSpacing??i.groupLetterSpacing,j=g.label?se(L(g.label,b?.textTransform??i.groupTextTransform),r.maxLabelWidth,P,w,A):void 0,B=j?V(j,P,w,A):void 0,X=B?.width??0,T=B?.height??0,J=g.tasks.map(q=>mt(q.text,q.actors.length,i,r)),R=Math.max(r.taskMinWidth,X+d.sectionHeaderPadX*2);return{category:f,label:j,labelWidth:X,labelHeight:T,tasks:J,emptyWidth:R}}),v=Math.max(r.taskMinHeight,...h.flatMap(g=>g.tasks.map(f=>f.height))),x=r.paddingY;l&&(x+=l.height+d.titleGap);let k=a?Math.max(d.sectionHeaderMinHeight,...h.map(g=>g.label?g.labelHeight+i.groupPaddingY*2:0)):0,$=x,y=$+(a?k+d.sectionTaskGap:0),S=y+v+d.taskToGuideGap,z=d.scoreStep*4,E=S+z+d.baselineGap,F=r.paddingX+m+(m>0?d.legendGap:0)+d.scoreLabelGutter,C=F,le=[];for(let g=0;g<e.sections.length;g++){let f=e.sections[g],b=h[g],P=!!b.label;g>0&&(C+=d.sectionGap);let w=b.tasks.length>0?b.tasks.reduce((T,J)=>T+J.width,0)+(b.tasks.length-1)*r.taskGap:0,A=P?Math.max(w>0?w+d.sectionSpanPadX*2:b.emptyWidth,b.labelWidth+d.sectionHeaderPadX*2):Math.max(w,b.tasks.length===0?b.emptyWidth:0),j=C,B=[],X=j+(A-w)/2;for(let T=0;T<f.tasks.length;T++){let J=f.tasks[T],R=b.tasks[T];T>0&&(X+=r.taskGap);let q=X,U=q+R.width/2,lt=Ie(J.score,S),dt=ht(J,u,U,y+R.height-i.nodePaddingY-d.actorDotRadius);B.push({id:J.id,sectionId:f.id,text:R.text,score:J.score,actors:J.actors,x:q,y,width:R.width,height:R.height,textX:U,textY:y+i.nodePaddingY+R.textHeight/2,centerX:U,track:{x:U,y1:y+R.height,y2:E},marker:{cx:U,cy:lt,r:d.markerRadius,score:J.score},actorDots:dt}),X+=R.width}C=j+A,le.push({id:f.id,category:b.category,label:b.label,x:j,y:$,width:A,height:P?k:0,labelX:j+A/2,labelY:$+k/2,framed:P,headerHeight:P?k:0,tasks:B})}let st=C+d.arrowOverhang,ne=Math.max(st,F+d.minPlotWidth),be=Math.max(ne,...le.map(g=>g.x+g.width))+r.paddingX,xe=y+d.legendDotRadius,oe=c.map((g,f)=>{let b=p[f],P={label:g.label,x:r.paddingX+d.legendDotRadius,y:xe,colorIndex:f},w=g.label.includes(`
7
+ `);return xe+=w?Math.max(d.legendRowGap,b.height+8):d.legendRowGap,P}),at=oe.length>0?oe[oe.length-1].y+d.legendDotRadius:0,ct=Math.max(E+d.baselineClearance+r.paddingY,at+r.paddingY);return{width:be,height:ct,title:s?{text:s,x:be/2,y:r.paddingY+l.height/2}:void 0,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,actors:oe,scoreGuide:{x:F,y:S,width:ne-F,height:z,ticks:[5,4,3,2,1].map(g=>{let f=Ie(g,S);return{score:g,x1:F,x2:ne,y:f,labelX:F-d.scoreLabelGap,labelY:f}}),baseline:{x1:F,y1:E,x2:ne,y2:E}},sections:le}}function mt(e,t,n,o){let r=se(L(e,n.nodeTextTransform),o.maxLabelWidth,n.nodeLabelFontSize,n.nodeLabelFontWeight),i=V(r,n.nodeLabelFontSize,n.nodeLabelFontWeight),a=t>0?t*d.actorDotRadius*2+(t-1)*d.actorDotGap:0,s=Math.max(o.taskMinWidth,i.width+n.nodePaddingX*2,a+n.nodePaddingX*2),l=t>0?d.actorDotRadius*2:0,c=Math.max(o.taskMinHeight,n.nodePaddingY*2+i.height+(l>0?12+l:0));return{text:r,textWidth:i.width,textHeight:i.height,actorDotsWidth:a,width:s,height:c}}function yt(e){let t=[],n=new Set;for(let o of e.sections)for(let r of o.tasks)for(let i of r.actors)n.has(i)||(n.add(i),t.push(i));return t}function Ee(e,t){if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;if(typeof e!="string")return t;let n=e.trim(),o=Number.parseFloat(n);return!Number.isFinite(o)||o<=0?t:/^[0-9.]+(?:px)?$/i.test(n)?o:/^[0-9.]+ex$/i.test(n)?o*8:/^[0-9.]+em$/i.test(n)?o*t:t}function I(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ye(e){return typeof e=="string"&&e.trim().length>0?e.trim():void 0}function ht(e,t,n,o){let r=e.actors.length;if(r===0)return[];let i=r*d.actorDotRadius*2+(r-1)*d.actorDotGap,a=n-i/2+d.actorDotRadius;return e.actors.map(s=>{let l={label:s,colorIndex:t.get(s)??0,x:a,y:o,r:d.actorDotRadius};return a+=d.actorDotRadius*2+d.actorDotGap,l})}function Ie(e,t){return t+(ft-e)*d.scoreStep}var ft=5;var Be=1,qe=5,fe=256,bt=/^title\s+(.+)$/i,xt=/^section\s+(.+)$/i,kt=/^([^:]+?)\s*:\s*([0-9]+)\s*(?::\s*(.*))?$/,$t=/^([^:]+?)\s*:\s*([^:]+?)(?:\s*:\s*.*)?$/;function St(e){return e.replace(/<br\s*\/?>/gi,`
8
+ `).replace(/\\n/g,`
9
+ `).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,"").replace(/\*\*(.+?)\*\*/g,"<b>$1</b>").replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,"<i>$1</i>").replace(/~~(.+?)~~/g,"<s>$1</s>")}function G(e){return St(e).split(/\r?\n/).map(t=>t.trim()).filter(Boolean).join(`
10
+ `)}function Ft(e){return G(e).split(`
11
+ `).join(" / ")}function Ue(e){return e.startsWith("%%")||e.startsWith("#")||e.startsWith("%")}function _t(e){return Number.isInteger(e)&&e>=Be&&e<=qe}function Ve(e,t,n){for(let o=t;o<e.length;o++){let r=e[o].trim();if(!r||Ue(r))continue;let i=de(e,o);if(i===void 0)return n.issue?.({code:"unclosed_accdescr",lineIndex:o,statement:r,detail:'Journey accDescr block is missing a closing "}"'})==="stop",void 0;if(i?.form==="block"){n.accDescr?.(G(i.value),o),o=i.endIndex;for(let a of Oe(i.suffixLine??""))if(Xe(a,i.endIndex,n)==="stop")return;continue}for(let a of Oe(r))if(Xe(a,o,n)==="stop")return}}function Xe(e,t,n){let o=(c,u)=>n.issue?.({code:c,lineIndex:t,statement:e,detail:u}),r=de([e],0);if(r){let c=G(r.value);r.title?n.accTitle?.(c,t):n.accDescr?.(c,t);return}let i=e.match(bt);if(i){let c=G(i[1]);if(!c)return o("empty_title",`Journey title is empty: "${e}"`);n.title?.(c,t);return}let a=e.match(xt);if(a){let c=G(a[1]);if(!c||c.includes(":"))return o("section_colon",`Journey section labels must not contain ':': "${e}"`);n.section?.(c,t);return}let s=e.match(kt);if(s){let c=G(s[1]);if(!c)return o("empty_task_text",`Journey task text is empty: "${e}"`);let u=s[2],p=Number.parseInt(u,10);if(!_t(p))return o("invalid_score",Ne(c,u));let m=(s[3]??"").split(",").map(Ft).filter(Boolean);n.task?.(c,p,m,t);return}let l=e.match($t);if(l){let c=G(l[1]),u=l[2].trim();if(c&&u)return o("invalid_score",Ne(c,u))}return o("unrecognized_line",`Invalid user journey line: "${e}". Expected title, section, accessibility metadata, or "Task name: 3: Actor"`)}function Ne(e,t){return`Journey task "${e}" has invalid score ${t}. Expected an integer from ${Be} through ${qe}`}var vt=/^&(?:[a-zA-Z][a-zA-Z0-9]{1,31}|#[0-9]{1,7}|#x[0-9a-fA-F]{1,6});$/;function Oe(e){if(!e.trim())return[];if(!e.includes(";"))return[e.trim()];let t=[],n=0;for(let o=0;o<e.length;o++){if(e[o]!==";")continue;let r=e.lastIndexOf("&",o);r>=n&&vt.test(e.slice(r,o+1))||(t.push(e.slice(n,o)),n=o+1)}return t.push(e.slice(n)),t.map(o=>o.trim()).filter(o=>o&&!Ue(o))}function Ke(e,t={}){let n={sections:[],...ke(t)},o,r=0,i=0,a=()=>o||(o={id:`section-${r++}`,tasks:[]},n.sections.push(o),o);if(Ve(e,1,{title:s=>{n.title=s},accTitle:s=>{n.accessibilityTitle=s},accDescr:s=>{n.accessibilityDescription=s},section:s=>{o={id:`section-${r++}`,label:s,tasks:[]},n.sections.push(o)},task:(s,l,c)=>{let u={id:`task-${i++}`,text:s,score:l,actors:c};a().tasks.push(u)},issue:s=>{throw Ct(s)}}),n.sections.length===0&&!n.title&&n.sections.every(s=>s.tasks.length===0)&&!n.accessibilityTitle&&!n.accessibilityDescription)throw new Error("Journey diagram must include at least one scored task, a section, or a title");return n}function Ct(e){switch(e.code){case"section_colon":return me({what:`Invalid user journey section: "${e.statement}"`,expectedForm:"section Section name",example:"section Go to work"});case"empty_task_text":return me({what:`Invalid user journey task: "${e.statement}"`,expectedForm:"Task name: score: Actor[, Actor\u2026]",example:"Pay: 3: Shopper"});case"invalid_score":case"unclosed_accdescr":return new Error(e.detail);case"empty_title":case"unrecognized_line":case"empty_journey":return new Error(`Invalid user journey line: "${e.statement}". Expected title, section, accessibility metadata, or "Task name: 3: Actor"`)}}var W={titleFontSize:18,titleFontWeight:600,sectionFontSize:12,sectionFontWeight:600,taskFontSize:13,taskFontWeight:500,actorFontSize:11,actorFontWeight:600,legendDotRadius:5,legendLabelGap:12,legendTitleGap:26},ce=5;function et(e){let{positioned:t,colors:n,resolved:o}=e,r=o.renderOptions,i=n.font??"Inter",a=r.transparent??!1,s=[],l=o.familyAppearance;if(!l)throw new Error("Journey rendering requires request-boundary family appearance resolution");let c=ie(r,l.styleDefaults,o.styleFace),u=l.visual,p=Ot(c,u,n,{sectionCount:t.sections.length,actorCount:t.actors.length}),m=Rt(t),h=Jt(t),v=`${h}-arrowhead`,x=Pt(v,p.arrow),k=`${h}-title`,$=`${h}-desc`,y=r.journey?.experienceCurve!==!1?t.sections.flatMap(F=>F.tasks.map(C=>C.marker)):[],S=y.length>=2,z=Tt(c,u,p,S);s.push(Te({id:"prelude",width:t.width,height:t.height,colors:n,transparent:a,font:i,hasMonoFont:!1,extraCss:z},Mt(t,n,a,m,k,$,l.useMaxWidth))),m.title&&s.push(Q({id:"a11y-title",role:"chrome"},`<title id="${k}">${pe(m.title)}</title>`)),m.description&&s.push(Q({id:"a11y-desc",role:"chrome"},`<desc id="${$}">${pe(m.description)}</desc>`)),s.push(Q({id:"style",role:"chrome"},Ce(i,!1,n.shadow,n.embedFontImport))),s.push(Pe({id:"defs",markerResources:[x]},wt(n,x))),s.push(Q({id:"journey-style",role:"chrome"},z)),s.push(Dt(t.scoreGuide,c,x)),t.actors.length>0&&s.push(jt(t.actors,c,p));let D=r.mermaidConfig?.journey,E=D?.sectionFills!==void 0||D?.sectionColours!==void 0;t.sections.forEach((F,C)=>{F.framed&&s.push(Lt(F,c,p,C,o.styleFace,E))}),S&&s.push(Wt(y,c,p));for(let F of t.sections)for(let C of F.tasks)s.push(Yt(C,F.label,c,p));return t.title&&s.push(H({id:"title",role:"title",text:t.title.text,x:t.title.x,y:t.title.y,fontSize:u.titleFontSize,anchor:"middle",paint:{fill:p.titleColor}},Y(t.title.text,t.title.x,t.title.y,u.titleFontSize,`class="journey-title" text-anchor="middle" font-size="${_(u.titleFontSizeCss)}" font-weight="${W.titleFontWeight}"${u.titleFontFamily?` font-family="${_(u.titleFontFamily)}"`:""}`))),s.push(we()),{family:"journey",width:t.width,height:t.height,colors:n,transparent:a,parts:s}}function Jt(e){let t=e.sections.flatMap(n=>[n.id,n.label??"",...n.tasks.flatMap(o=>[o.id,o.text,String(o.score),...o.actors])]);return`journey-${De(e.width,e.height,e.title?.text??"",e.accessibilityTitle??"",e.accessibilityDescription??"",...t)}`}function Rt(e){return{title:e.accessibilityTitle??e.title?.text,description:e.accessibilityDescription}}function Mt(e,t,n,o,r,i,a){return Je(e.width,e.height,t,n,{...a?{width:"100%",height:"100%",style:`max-width:${e.width}px`}:{},attrs:ze(o.title,o.description,r,i,"user journey")})}function Pt(e,t){return{id:e,shape:"arrow",size:{width:10,height:8},ref:{x:9,y:4},orient:"auto",geometry:{kind:"path",d:"M0,0 L10,4 L0,8 Z"},paint:{fill:t}}}function wt(e,t){return`<defs>
12
+ ${[ve(e),We(t)].filter(Boolean).join(`
13
+ `)}
14
+ </defs>`}function Tt(e,t,n,o){let r=en(n),i=tn(n),a=nn(n),s=on(n);return`<style>
15
+ .journey-title { fill: ${n.titleColor}; }
16
+ .journey-section-bg { fill: ${n.groupFill}; stroke: ${n.groupStroke}; stroke-width: ${e.groupLineWidth}; }
17
+ ${r}
18
+ .journey-section-label-band { fill: ${n.sectionBands[0]}; stroke: none; }
19
+ ${i}
20
+ .journey-section-label { fill: ${n.sectionTextColors[0]??"var(--_text)"}; }
21
+ ${a}
22
+ .journey-task-box { fill: ${n.nodeFill}; stroke: ${n.nodeStroke}; stroke-width: ${e.nodeLineWidth}; }
23
+ .journey-task-text { fill: ${e.nodeTextColor??"var(--_text)"};${t.taskFontFamily?` font-family: ${t.taskFontFamily};`:""} }
24
+ .journey-track { stroke: color-mix(in srgb, ${n.nodeStroke} 78%, var(--bg)); stroke-width: ${e.lineWidth}; stroke-dasharray: 4 7; }${o?`
25
+ .journey-curve { fill: none; stroke: color-mix(in srgb, ${n.arrow} 55%, var(--bg)); stroke-width: ${Math.max(2,e.lineWidth*2)}; stroke-linecap: round; }`:""}
26
+ .journey-guide { stroke: color-mix(in srgb, ${n.nodeStroke} 62%, var(--bg)); stroke-width: 1; }
27
+ .journey-score-label { fill: ${e.edgeTextColor??"var(--_text-sec)"}; }
28
+ .journey-baseline { stroke: ${n.arrow}; stroke-width: ${Math.max(2,e.lineWidth*2)}; }
29
+ .journey-score-face { fill: ${n.scoreFaceFill}; stroke: ${n.scoreFaceStroke}; stroke-width: 1.2; }
30
+ .journey-face-eye { fill: ${n.scoreFaceInk}; }
31
+ .journey-face-mouth { fill: none; stroke: ${n.scoreFaceInk}; stroke-width: 1.6; stroke-linecap: round; }
32
+ .journey-actor-legend-title { fill: ${n.groupText}; }
33
+ .journey-actor-legend-text { fill: ${n.groupText}; }
34
+ .journey-actor-dot { stroke: var(--bg); stroke-width: 1; }
35
+ ${s}
36
+ </style>`}function Wt(e,t,n){let o=e.map(i=>({x:i.cx,y:i.cy})),r=zt(o);return K({id:"experience-curve",role:"series",geometry:r.geometry,lineStyle:"solid",paint:{stroke:`color-mix(in srgb, ${n.arrow} 55%, var(--bg))`,strokeWidth:String(Math.max(2,t.lineWidth*2))},route:{ownership:"family",contours:r.contours}},`<path class="journey-curve" d="${r.geometry.d}" />`)}function zt(e){let t=e[0],n=`M${t.x},${t.y}`,o=[];for(let r=1;r<e.length;r++){let i=e[r-1],a=e[r],s=(a.x-i.x)/3,l={x:i.x+s,y:i.y},c={x:a.x-s,y:a.y};n+=` C${l.x},${l.y} ${c.x},${c.y} ${a.x},${a.y}`,o.push({kind:"cubic",control1:l,control2:c,end:a})}return Me(n,t,o)}function Dt(e,t,n){let o=[];for(let i of e.ticks)o.push({indent:2,node:K({id:`score-guide:${i.score}`,role:"grid",geometry:{kind:"line",x1:i.x1,y1:i.y,x2:i.x2,y2:i.y},lineStyle:"solid",paint:{stroke:`color-mix(in srgb, ${t.nodeBorderColor??"var(--_node-stroke)"} 62%, var(--bg))`,strokeWidth:"1"},channels:{value:i.score/ce}},`<line class="journey-guide" x1="${i.x1}" y1="${i.y}" x2="${i.x2}" y2="${i.y}" />`)}),o.push({indent:2,node:H({id:`score-label:${i.score}`,role:"axis",text:String(i.score),x:i.labelX,y:i.labelY,fontSize:t.edgeLabelFontSize,anchor:"end",paint:{fill:t.edgeTextColor??"var(--_text-sec)"},channels:{value:i.score/ce}},Y(String(i.score),i.labelX,i.labelY,t.edgeLabelFontSize,`class="journey-score-label" text-anchor="end" font-size="${t.edgeLabelFontSize}" font-weight="${t.edgeLabelFontWeight}"${te(t.edgeLetterSpacing)}`))});let r=e.baseline;return o.push({indent:2,node:K({id:"journey-baseline",role:"rail",geometry:{kind:"line",x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2},lineStyle:"solid",paint:{stroke:t.edgeStrokeColor??"var(--_arrow)",strokeWidth:String(Math.max(2,t.lineWidth*2))},markers:{mid:[],end:n}},`<line class="journey-baseline" x1="${r.x1}" y1="${r.y1}" x2="${r.x2}" y2="${r.y2}" marker-end="url(#${_(n.id)})" />`)}),O({id:"score-guide",role:"grid",open:'<g class="journey-score-guide" data-score-min="1" data-score-max="5">',close:"</g>",children:o})}function jt(e,t,n){let o=e[0],r=o.x-W.legendDotRadius,i=o.y-W.legendTitleGap,a=L("Actors",t.groupTextTransform),s=[{indent:2,node:H({id:"actor-legend-title",role:"legend",text:a,x:r,y:i,fontSize:t.groupHeaderFontSize,anchor:"start",paint:{fill:t.groupTextColor??"var(--_text-sec)"}},Y(a,r,i,t.groupHeaderFontSize,`class="journey-actor-legend-title" text-anchor="start" font-size="${t.groupHeaderFontSize}" font-weight="${t.groupHeaderFontWeight}"${te(t.groupLetterSpacing)}`))}];for(let l of e)s.push({indent:2,node:M({id:`actor-legend-dot:${l.label}`,role:"actor",geometry:{kind:"circle",cx:l.x,cy:l.y,r:W.legendDotRadius},paint:{fill:it(l.colorIndex,n),stroke:"var(--bg)",strokeWidth:"1"},channels:{category:l.label}},`<circle class="journey-actor-dot ${rt(l.colorIndex,n)}" data-actor="${_(l.label)}" cx="${l.x}" cy="${l.y}" r="${W.legendDotRadius}" />`)}),s.push({indent:2,node:H({id:`actor-legend-label:${l.label}`,role:"legend",text:l.label,x:l.x+W.legendDotRadius+W.legendLabelGap,y:l.y,fontSize:t.edgeLabelFontSize,anchor:"start",paint:{fill:t.groupTextColor??"var(--_text-sec)"},channels:{category:l.label}},Y(l.label,l.x+W.legendDotRadius+W.legendLabelGap,l.y,t.edgeLabelFontSize,`class="journey-actor-legend-text" text-anchor="start" font-size="${t.edgeLabelFontSize}" font-weight="${t.edgeLabelFontWeight}"${te(t.edgeLetterSpacing)}`))});return O({id:"actor-legend",role:"legend",open:'<g class="journey-actor-legend">',close:"</g>",children:s})}function Lt(e,t,n,o,r,i){let a=e.category,s=e.label?` data-label="${_(e.label)}"`:"",l=[];if(l.push({indent:2,node:M({id:`section-bg:${e.id}`,role:"section",geometry:{kind:"rect",x:e.x,y:e.y,width:e.width,height:e.height,rx:t.groupCornerRadius,ry:t.groupCornerRadius},paint:{fill:Qt(o,n),stroke:Zt(o,n),strokeWidth:String(t.groupLineWidth)}},`<rect class="journey-section-bg journey-section-${o%n.sectionFills.length}" x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" rx="${t.groupCornerRadius}" ry="${t.groupCornerRadius}" />`)}),e.label){let u=Z(r,"group-header",{category:a},{includeFallback:!1}),p=L(e.label,u?.textTransform??t.groupTextTransform),m=u?.fontSize??t.groupHeaderFontSize,h=u?.fontWeight??t.groupHeaderFontWeight,v=u?.fontFamily??t.groupFont,x=u?.letterSpacing??t.groupLetterSpacing,k=i?Ze(o,n):u?.textColor??Ze(o,n);l.push({indent:2,node:At(e,t,n,o,r,i)}),l.push({indent:2,node:H({id:`section-label:${e.id}`,role:"group-header",text:p,x:e.labelX,y:e.labelY,fontSize:m,anchor:"middle",paint:{fill:k}},Y(p,e.labelX,e.labelY,m,`class="journey-section-label journey-section-label-${o%n.sectionTextColors.length}" text-anchor="middle" font-size="${m}" font-weight="${h}"${v?` font-family="${_(v)}"`:""}${te(x)}${u?.textColor&&!i?` style="fill:${_(k)}"`:""}`))})}return O({id:`section:${e.id}`,role:"section",open:`<g class="journey-section" data-id="${_(e.id)}"${s}>`,close:"</g>",children:l,channels:{category:a}})}function At(e,t,n,o,r,i){let a={category:e.category},s=Z(r,"group-header",a,{includeFallback:!1}),l=i?Qe(o,n):s?.fillColor??Qe(o,n),c=s?.cue??"none",u=s?.strokeColor??s?.borderColor??(c!=="none"?"var(--fg)":"none"),p=s?.lineWidth??(c!=="none"?t.groupLineWidth:void 0),m=p===void 0?void 0:c==="outline"?p+1:c==="double-line"?p+2:p,h=c==="pattern"?"3 2":c==="double-line"?"8 2 2 2":void 0,v=s&&(s.fillColor!==void 0||u!=="none"||m!==void 0||h!==void 0)?` style="${_([`fill:${l}`,u!=="none"?`stroke:${u}`:void 0,m!==void 0?`stroke-width:${m}`:void 0,h?`stroke-dasharray:${h}`:void 0].filter(Boolean).join(";"))}"`:"",x=c!=="none"?` data-brand-cue="${_(c)}"`:"",k=Math.min(6,Math.max(3,e.height/6)),$=Math.max(18,Math.min(e.height-k*2,t.groupHeaderFontSize+t.groupPaddingY)),y=e.x+k,S=e.labelY-$/2,z=Math.max(0,e.width-k*2),D=Math.min(t.groupCornerRadius,$/2);return M({id:`section-band:${e.id}`,role:"group-header",geometry:{kind:"rect",x:y,y:S,width:z,height:$,rx:D,ry:D},paint:{fill:l,stroke:u,...m!==void 0?{strokeWidth:String(m)}:{},...h?{strokeDasharray:h}:{}},channels:a},`<rect class="journey-section-label-band journey-section-band-${o%n.sectionBands.length}" x="${y}" y="${S}" width="${z}" height="${$}" rx="${D}" ry="${D}"${v}${x} />`)}function Yt(e,t,n,o){let r=t?` data-section="${_(t)}"`:"",i=e.actors.length>0?` data-actors="${_(e.actors.join(", "))}"`:"",a=e.score/ce,s=t?{value:a,category:t}:{value:a},l=[{indent:2,node:Ht(e.track,e,n,o)},{indent:2,node:It(e,n,o,s)},{indent:2,node:Gt(e,n,s)}];for(let c of e.actorDots)l.push({indent:2,node:Et(c,e.id,o)});return l.push({indent:2,node:Xt(e.marker,e.id,o,s)}),O({id:`task:${e.id}`,role:"task",open:`<g class="journey-task" data-id="${_(e.id)}" data-score="${e.score}"${r}${i}>`,close:"</g>",children:l,channels:s})}function Ht(e,t,n,o){return K({id:`track:${t.id}`,role:"marker-line",geometry:{kind:"line",x1:e.x,y1:e.y1,x2:e.x,y2:e.y2},lineStyle:"dashed",paint:{stroke:`color-mix(in srgb, ${o.nodeStroke} 78%, var(--bg))`,strokeWidth:String(n.lineWidth),strokeDasharray:"4 7"},channels:{value:t.score/ce}},`<line class="journey-track" x1="${e.x}" y1="${e.y1}" x2="${e.x}" y2="${e.y2}" />`)}function It(e,t,n,o){return M({id:`task-box:${e.id}`,role:"task",geometry:{kind:"rect",x:e.x,y:e.y,width:e.width,height:e.height,rx:t.cornerRadius??0,ry:t.cornerRadius??0},paint:{fill:n.nodeFill,stroke:n.nodeStroke,strokeWidth:String(t.nodeLineWidth)},channels:o},`<rect class="journey-task-box" x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" rx="${t.cornerRadius??0}" ry="${t.cornerRadius??0}" />`)}function Gt(e,t,n){return H({id:`task-label:${e.id}`,role:"label",text:e.text,x:e.textX,y:e.textY,fontSize:t.nodeLabelFontSize,anchor:"middle",paint:{fill:t.nodeTextColor??"var(--_text)"},channels:n},Y(e.text,e.textX,e.textY,t.nodeLabelFontSize,`class="journey-task-text" text-anchor="middle" font-size="${t.nodeLabelFontSize}" font-weight="${t.nodeLabelFontWeight}"${te(t.nodeLetterSpacing)}`))}function Et(e,t,n){return M({id:`actor-dot:${t}:${e.label}`,role:"actor",geometry:{kind:"circle",cx:e.x,cy:e.y,r:e.r},paint:{fill:it(e.colorIndex,n),stroke:"var(--bg)",strokeWidth:"1"},channels:{category:e.label}},`<circle class="journey-actor-dot ${rt(e.colorIndex,n)}" data-actor="${_(e.label)}" cx="${e.x}" cy="${e.y}" r="${e.r}" />`)}function Xt(e,t,n,o){let r=e.cy-4.5,i=e.cx-5.5,a=e.cx+5.5,s=Nt(e);return O({id:`score-marker:${t}`,role:"score",open:`<g class="journey-score-marker" data-score="${e.score}">`,close:"</g>",children:[{indent:2,node:M({id:`score-face:${t}`,role:"score",geometry:{kind:"circle",cx:e.cx,cy:e.cy,r:e.r},paint:{fill:n.scoreFaceFill,stroke:n.scoreFaceStroke,strokeWidth:"1.2"},channels:o},`<circle class="journey-score-face" cx="${e.cx}" cy="${e.cy}" r="${e.r}" />`)},{indent:2,node:M({id:`score-eye-left:${t}`,role:"score",geometry:{kind:"circle",cx:i,cy:r,r:2},paint:{fill:n.scoreFaceInk},channels:o},`<circle class="journey-face-eye" cx="${i}" cy="${r}" r="2" />`)},{indent:2,node:M({id:`score-eye-right:${t}`,role:"score",geometry:{kind:"circle",cx:a,cy:r,r:2},paint:{fill:n.scoreFaceInk},channels:o},`<circle class="journey-face-eye" cx="${a}" cy="${r}" r="2" />`)},{indent:2,node:M({id:`score-mouth:${t}`,role:"score",geometry:{kind:"path",d:s},paint:{fill:"none",stroke:n.scoreFaceInk,strokeWidth:"1.6"},channels:o},`<path class="journey-face-mouth" d="${s}" />`)}],channels:o})}function Nt(e){let t=e.cx,n=e.cy;return e.score>=5?`M${t-8},${n+4} Q${t},${n+13} ${t+8},${n+4}`:e.score>=4?`M${t-8},${n+5} Q${t},${n+11} ${t+8},${n+5}`:e.score===3?`M${t-8},${n+6} L${t+8},${n+6}`:e.score===2?`M${t-8},${n+10} Q${t},${n+2} ${t+8},${n+10}`:`M${t-9},${n+11} Q${t},${n} ${t+9},${n+11}`}function Ot(e,t,n,o){let r=e.edgeStrokeColor??"var(--_arrow)",i=e.nodeFillColor??"var(--_node-fill)",a=e.nodeBorderColor??"var(--_node-stroke)",s=e.groupFillColor??`color-mix(in srgb, ${r} 8%, var(--bg))`,l=e.groupBorderColor??"var(--_node-stroke)",c=e.groupTextColor??"var(--_text-sec)",u=Bt(r,n,e,o.sectionCount),p=Math.max(t.sectionFills.length,t.sectionColours.length,Math.min(u.length,Math.max(o.sectionCount,1))),m=Array.from({length:p},($,y)=>t.sectionFills[y%t.sectionFills.length]??e.groupFillColor??`color-mix(in srgb, ${u[y%u.length]} ${y===0?8:9}%, var(--bg))`),h=Array.from({length:p},($,y)=>t.sectionFills[y%t.sectionFills.length]??e.groupHeaderFillColor??`color-mix(in srgb, ${u[y%u.length]} ${y===0?14:16}%, var(--bg))`),v=Array.from({length:p},($,y)=>{let S=t.sectionFills[y%t.sectionFills.length];return S?`color-mix(in srgb, ${S} ${y===0?42:38}%, var(--bg))`:e.groupBorderColor??`color-mix(in srgb, ${u[y%u.length]} ${y===0?42:38}%, var(--bg))`}),x=Array.from({length:p},($,y)=>qt(t.sectionColours.length>0?t.sectionColours[y%t.sectionColours.length]:void 0,h[y],e.groupTextColor??"var(--_text)",n.bg)),k=t.actorColours.length>0?t.actorColours:Ut(r,n,e,o.actorCount);return{arrow:r,nodeFill:i,nodeStroke:a,groupFill:s,groupStroke:l,groupText:c,titleColor:t.titleColor??e.groupTextColor??e.nodeTextColor??"var(--_text)",sectionFills:m,sectionBands:h,sectionStrokes:v,sectionTextColors:x,actorColors:k,scoreFaceFill:`color-mix(in srgb, ${r} 22%, var(--bg))`,scoreFaceStroke:r,scoreFaceInk:e.edgeTextColor??e.nodeTextColor??"var(--_text)"}}function Bt(e,t,n,o){let r=Kt(t,n,Math.max(6,o));return r||[e,"var(--line, var(--_line))","var(--accent, var(--_arrow))","var(--muted, var(--_text-sec))","var(--border, var(--_node-stroke))","var(--fg)"]}function qt(e,t,n,o){if(e){let a=ae(e,t,o);if(a!==null&&a>=4.5)return e}let r=ae("#000000",t,o),i=ae("#ffffff",t,o);return r!==null&&i!==null?r>=i?"#000000":"#ffffff":n}function Ut(e,t,n,o){let r=Math.max(o,1);if(r>6&&ot(t.bg)){let a=nt(n.edgeStrokeColor,t.accent);if(a)return ee(r,{accent:a,bg:t.bg})}if(N(t.bg)&&N(t.fg)){let a=ge(t),s=tt(n.edgeStrokeColor,t.accent,a.arrow);if(s)return r<=6?Vt(s,t.bg,r):ee(r,{accent:s,bg:t.bg})}let i=[e,"var(--line, var(--_line))","var(--accent, var(--_arrow))","var(--muted, var(--_text-sec))","var(--border, var(--_node-stroke))","var(--fg)","color-mix(in srgb, var(--accent, var(--_arrow)) 62%, var(--bg))","color-mix(in srgb, var(--line, var(--_line)) 72%, var(--bg))"];return i.slice(0,Math.max(r<=i.length?r:i.length,1))}function Vt(e,t,n){let[o,r]=je(e),i=Ae(t),a=r<20?230:o,s=Math.min(72,Math.max(42,r<20?46:r)),l=i?64:38,c=[],u=new Set,p=Math.min(n,fe);for(let m=0;c.length<p&&m<fe*16;m++){let h=Math.floor(m/360),v=(a+m%360*137.508)%360,x=Le(v,Math.max(34,s-h%4*7),Math.max(i?46:24,Math.min(i?78:58,l+(h%2===0?-h*2:h*2))));u.has(x)||(u.add(x),c.push(x))}return Array.from({length:n},(m,h)=>c[h%c.length])}function Kt(e,t,n){if(n>6&&ot(e.bg)){let i=nt(t.edgeStrokeColor,e.accent);if(i)return ee(n,{accent:i,bg:e.bg})}if(!N(e.bg)||!N(e.fg))return;let o=ge(e),r=tt(t.edgeStrokeColor,e.accent,o.arrow);if(r)return ee(n,{accent:r,bg:e.bg})}function tt(...e){return e.find(t=>t!==void 0&&N(t))}function nt(...e){return e.find(t=>t!==void 0&&ue(t)!==null)}function ot(e){return ue(e)?.[3]===1}function rt(e,t){return`journey-actor-${e%t.actorColors.length}`}function it(e,t){return t.actorColors[e%t.actorColors.length]}function Qt(e,t){return t.sectionFills[e%t.sectionFills.length]}function Qe(e,t){return t.sectionBands[e%t.sectionBands.length]}function Zt(e,t){return t.sectionStrokes[e%t.sectionStrokes.length]}function Ze(e,t){return t.sectionTextColors[e%t.sectionTextColors.length]}function en(e){return e.sectionFills.map((t,n)=>` .journey-section-${n} { fill: ${t}; stroke: ${e.sectionStrokes[n]}; }`).join(`
37
+ `)}function tn(e){return e.sectionBands.map((t,n)=>` .journey-section-band-${n} { fill: ${t}; }`).join(`
38
+ `)}function nn(e){return e.sectionTextColors.map((t,n)=>` .journey-section-label-${n} { fill: ${t}; }`).join(`
39
+ `)}function on(e){return e.actorColors.map((t,n)=>` .journey-actor-${n} { fill: ${t}; }`).join(`
40
+ `)}function te(e){return e!==0?` letter-spacing="${e}"`:""}var Hn=Fe(Ye,{normalizeRequest:e=>({appearance:{family:he(e.renderOptions)}}),layout:e=>Se(Ge(Ke(e.source.familyLines,e.source.accessibility),e.familyAppearance??he(e.renderOptions),e.renderOptions,e.styleFace)),lowerScene:$e(et)});export{Hn as default};