@smartmemory/compose 0.2.1-beta → 0.2.3-beta

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 (90) hide show
  1. package/contracts/checkpoint.schema.json +85 -0
  2. package/dist/assets/{App-VU2lfA8m.js → App-j8fWZcGr.js} +155 -155
  3. package/dist/assets/arc-BFqOo_jJ.js +1 -0
  4. package/dist/assets/{architectureDiagram-3BPJPVTR-itmOSZLE.js → architectureDiagram-3BPJPVTR-D722w0RE.js} +3 -3
  5. package/dist/assets/{blockDiagram-GPEHLZMM-N7MotI_5.js → blockDiagram-GPEHLZMM-B4w0mOAJ.js} +4 -4
  6. package/dist/assets/{c4Diagram-AAUBKEIU-DRKW39LH.js → c4Diagram-AAUBKEIU-D6LE8-j8.js} +3 -3
  7. package/dist/assets/channel-BD-5_hPW.js +1 -0
  8. package/dist/assets/chunk-2J33WTMH-CrazA7xu.js +1 -0
  9. package/dist/assets/{chunk-4BX2VUAB-BTe-QE0R.js → chunk-4BX2VUAB-Cp90GiCM.js} +1 -1
  10. package/dist/assets/chunk-55IACEB6-Bnais1SK.js +1 -0
  11. package/dist/assets/{chunk-727SXJPM-CBRmkSvh.js → chunk-727SXJPM-kD07Sqp5.js} +5 -5
  12. package/dist/assets/{chunk-AQP2D5EJ-BdtQ63fN.js → chunk-AQP2D5EJ-DmIxhJc8.js} +2 -2
  13. package/dist/assets/{chunk-FMBD7UC4-DfYQ2YmB.js → chunk-FMBD7UC4-Jti_und8.js} +1 -1
  14. package/dist/assets/chunk-ND2GUHAM-Ipx3noKz.js +1 -0
  15. package/dist/assets/{chunk-QZHKN3VN-DwjqJ9xB.js → chunk-QZHKN3VN-CeblRnPF.js} +1 -1
  16. package/dist/assets/classDiagram-4FO5ZUOK-mSW5R7DY.js +1 -0
  17. package/dist/assets/classDiagram-v2-Q7XG4LA2-mSW5R7DY.js +1 -0
  18. package/dist/assets/cose-bilkent-S5V4N54A-fNQlSmHt.js +1 -0
  19. package/dist/assets/dagre-BM42HDAG-D27D6YAL.js +4 -0
  20. package/dist/assets/{defaultLocale-CrowFXzY.js → defaultLocale-DX6XiGOO.js} +1 -1
  21. package/dist/assets/diagram-2AECGRRQ-CtXeohzN.js +43 -0
  22. package/dist/assets/diagram-5GNKFQAL-C_BqZkx0.js +10 -0
  23. package/dist/assets/{diagram-KO2AKTUF-BPalYJed.js → diagram-KO2AKTUF-B29ynQz4.js} +3 -3
  24. package/dist/assets/diagram-LMA3HP47-DAYJMc2I.js +24 -0
  25. package/dist/assets/diagram-OG6HWLK6-CBJMis3l.js +24 -0
  26. package/dist/assets/{erDiagram-TEJ5UH35-B3OLgtKK.js → erDiagram-TEJ5UH35-nd3GWiPn.js} +1 -1
  27. package/dist/assets/{flowDiagram-I6XJVG4X-DdpxVf-5.js → flowDiagram-I6XJVG4X-HFUno_nV.js} +4 -4
  28. package/dist/assets/ganttDiagram-6RSMTGT7-CPPAAjwR.js +292 -0
  29. package/dist/assets/gitGraphDiagram-PVQCEYII-NBq1F6K2.js +106 -0
  30. package/dist/assets/{graph-BEmEBUp_.js → graph-CAnANduQ.js} +1 -1
  31. package/dist/assets/{graph-DnLKqSPg.js → graph-CJVNlri5.js} +2 -2
  32. package/dist/assets/{index-CLb8RFcn.js → index-uHKnp74B.js} +4 -4
  33. package/dist/assets/infoDiagram-5YYISTIA-D-TOBtCq.js +2 -0
  34. package/dist/assets/{ishikawaDiagram-YF4QCWOH-OyKVgxOz.js → ishikawaDiagram-YF4QCWOH-nXOztZiZ.js} +6 -6
  35. package/dist/assets/{journeyDiagram-JHISSGLW-3FaFyfLR.js → journeyDiagram-JHISSGLW-Bko3tTdh.js} +1 -1
  36. package/dist/assets/{kanban-definition-UN3LZRKU-DUPnRo3q.js → kanban-definition-UN3LZRKU-1e-7i8st.js} +7 -7
  37. package/dist/assets/layout-DGIYPm2g.js +1 -0
  38. package/dist/assets/linear-Dx5ZJB7F.js +1 -0
  39. package/dist/assets/{mindmap-definition-RKZ34NQL-C0CwWNdR.js → mindmap-definition-RKZ34NQL-CNwNkDqN.js} +10 -10
  40. package/dist/assets/{mobile-qvdJ5p0m.js → mobile-CG5tLa2S.js} +1 -1
  41. package/dist/assets/pieDiagram-4H26LBE5-C5fvCej-.js +30 -0
  42. package/dist/assets/{quadrantDiagram-W4KKPZXB-HFtjZSAT.js → quadrantDiagram-W4KKPZXB-4NoQsF61.js} +1 -1
  43. package/dist/assets/{requirementDiagram-4Y6WPE33-CX_Mz3gv.js → requirementDiagram-4Y6WPE33-q5WxB9LO.js} +3 -3
  44. package/dist/assets/{sankeyDiagram-5OEKKPKP-BR2_eTy9.js → sankeyDiagram-5OEKKPKP-DlQNB367.js} +2 -2
  45. package/dist/assets/{sequenceDiagram-3UESZ5HK-CtHp0Qnp.js → sequenceDiagram-3UESZ5HK-BzHclOKt.js} +4 -4
  46. package/dist/assets/stateDiagram-AJRCARHV-BvWRI9zK.js +1 -0
  47. package/dist/assets/stateDiagram-v2-BHNVJYJU-CDlF0VA8.js +1 -0
  48. package/dist/assets/{timeline-definition-PNZ67QCA-GSHqrJ3A.js → timeline-definition-PNZ67QCA-j2wKjAti.js} +3 -3
  49. package/dist/assets/vennDiagram-CIIHVFJN-B77g7htC.js +34 -0
  50. package/dist/assets/{wardley-L42UT6IY-Bf-gQIFY.js → wardley-L42UT6IY-83Im2mo2.js} +1 -1
  51. package/dist/assets/{wardleyDiagram-YWT4CUSO-RGxoapr7.js → wardleyDiagram-YWT4CUSO-CK-XB-bO.js} +4 -4
  52. package/dist/assets/{xychartDiagram-2RQKCTM6-1_H1qVde.js → xychartDiagram-2RQKCTM6-D42FcVOY.js} +4 -4
  53. package/dist/index.html +2 -2
  54. package/lib/checkpoint/anchor.js +66 -0
  55. package/lib/checkpoint/atomic.js +83 -0
  56. package/lib/checkpoint/checkpoint-writer.js +131 -0
  57. package/lib/checkpoint/fingerprint.js +145 -0
  58. package/lib/checkpoint/git.js +58 -0
  59. package/lib/checkpoint/prompts.js +206 -0
  60. package/lib/checkpoint/reconciler.js +207 -0
  61. package/lib/checkpoint/render.js +107 -0
  62. package/lib/checkpoint/store/index.js +67 -0
  63. package/lib/checkpoint/store/jsonl.js +80 -0
  64. package/package.json +1 -1
  65. package/server/compose-mcp-tools.js +30 -0
  66. package/server/compose-mcp.js +40 -0
  67. package/server/session-routes.js +65 -0
  68. package/server/vision-routes.js +15 -0
  69. package/dist/assets/arc-CIeqpX37.js +0 -1
  70. package/dist/assets/channel-DugSMLKi.js +0 -1
  71. package/dist/assets/chunk-2J33WTMH-CF6iSwEb.js +0 -1
  72. package/dist/assets/chunk-55IACEB6-E2hHEsl9.js +0 -1
  73. package/dist/assets/chunk-ND2GUHAM-CDrOVOW5.js +0 -1
  74. package/dist/assets/classDiagram-4FO5ZUOK-D2RRwp7J.js +0 -1
  75. package/dist/assets/classDiagram-v2-Q7XG4LA2-D2RRwp7J.js +0 -1
  76. package/dist/assets/cose-bilkent-S5V4N54A-MHpsrtBZ.js +0 -1
  77. package/dist/assets/dagre-BM42HDAG-DaPz_mPt.js +0 -4
  78. package/dist/assets/diagram-2AECGRRQ-DIdstuOm.js +0 -43
  79. package/dist/assets/diagram-5GNKFQAL-DbkTGVES.js +0 -10
  80. package/dist/assets/diagram-LMA3HP47-vnySSoyd.js +0 -24
  81. package/dist/assets/diagram-OG6HWLK6-Dv3BUJft.js +0 -24
  82. package/dist/assets/ganttDiagram-6RSMTGT7-QALT_Lj9.js +0 -292
  83. package/dist/assets/gitGraphDiagram-PVQCEYII-nITcPPED.js +0 -106
  84. package/dist/assets/infoDiagram-5YYISTIA-CjlRce3x.js +0 -2
  85. package/dist/assets/layout-Bw0msyOw.js +0 -1
  86. package/dist/assets/linear-BeL8i3rv.js +0 -1
  87. package/dist/assets/pieDiagram-4H26LBE5-DaU2jPjX.js +0 -30
  88. package/dist/assets/stateDiagram-AJRCARHV-DmiEmD6G.js +0 -1
  89. package/dist/assets/stateDiagram-v2-BHNVJYJU-7rdO1Tgp.js +0 -1
  90. package/dist/assets/vennDiagram-CIIHVFJN-CNxhQnCU.js +0 -34
@@ -48,6 +48,7 @@ function getSchemaValidator() {
48
48
 
49
49
  import { randomUUID } from 'node:crypto';
50
50
  import { getTargetRoot, resolveProjectPath, loadProjectConfig } from './project-root.js';
51
+ import { anchorBoundary } from '../lib/checkpoint/checkpoint-writer.js';
51
52
  import { appendGateLogEntry, readGateLog, mapResolveOutcomeToSchema } from './gate-log-store.js';
52
53
  import { addOpenLoop, resolveOpenLoop, listOpenLoops } from './open-loops-store.js';
53
54
 
@@ -281,6 +282,8 @@ export function attachVisionRoutes(app, { store, scheduleBroadcast, broadcastMes
281
282
  emitDriftAxes(broadcastMessage, store, item, projectRoot, now);
282
283
  // COMP-OBS-STATUS: emit status snapshot after lifecycle transition (advance)
283
284
  emitStatusSnapshot(broadcastMessage, store, item.lifecycle.featureCode, now);
285
+ // COMP-RESUME: best-effort anchor checkpoint at the phase boundary
286
+ anchorBoundary(getTargetRoot(), { item, trigger: 'phase-transition' });
284
287
  res.json({ from, to: targetPhase, outcome });
285
288
  } catch (err) {
286
289
  const status = err.message.includes('not found') ? 404 : 400;
@@ -311,6 +314,8 @@ export function attachVisionRoutes(app, { store, scheduleBroadcast, broadcastMes
311
314
  emitDriftAxes(broadcastMessage, store, item, projectRoot, now);
312
315
  // COMP-OBS-STATUS: emit status snapshot after lifecycle transition (skip)
313
316
  emitStatusSnapshot(broadcastMessage, store, item.lifecycle.featureCode, now);
317
+ // COMP-RESUME: best-effort anchor checkpoint at the phase boundary
318
+ anchorBoundary(getTargetRoot(), { item, trigger: 'phase-transition' });
314
319
  res.json({ from, to: targetPhase, outcome: 'skipped', reason });
315
320
  } catch (err) {
316
321
  const status = err.message.includes('not found') ? 404 : 400;
@@ -341,6 +346,8 @@ export function attachVisionRoutes(app, { store, scheduleBroadcast, broadcastMes
341
346
  emitDriftAxes(broadcastMessage, store, item, projectRoot, now);
342
347
  // COMP-OBS-STATUS: emit status snapshot after lifecycle transition (kill)
343
348
  emitStatusSnapshot(broadcastMessage, store, item.lifecycle.featureCode, now);
349
+ // COMP-RESUME: best-effort anchor checkpoint at the (terminal) phase boundary
350
+ anchorBoundary(getTargetRoot(), { item, trigger: 'phase-transition' });
344
351
  res.json({ phase: from, reason });
345
352
  } catch (err) {
346
353
  const status = err.message.includes('not found') ? 404 : 400;
@@ -370,6 +377,8 @@ export function attachVisionRoutes(app, { store, scheduleBroadcast, broadcastMes
370
377
  emitDriftAxes(broadcastMessage, store, item, projectRoot, now);
371
378
  // COMP-OBS-STATUS: emit status snapshot after lifecycle transition (complete)
372
379
  emitStatusSnapshot(broadcastMessage, store, item.lifecycle.featureCode, now);
380
+ // COMP-RESUME: best-effort anchor checkpoint at the (terminal) phase boundary
381
+ anchorBoundary(getTargetRoot(), { item, trigger: 'phase-transition' });
373
382
 
374
383
  // COMP-MCP-MIGRATION: reconcile cockpit complete with record_completion
375
384
  // (commit-bound completion writer). Best-effort: failures emit a decision
@@ -561,6 +570,8 @@ export function attachVisionRoutes(app, { store, scheduleBroadcast, broadcastMes
561
570
  emitDriftAxes(broadcastMessage, store, item, projectRoot, now);
562
571
  // COMP-OBS-STATUS: emit status snapshot after iteration complete
563
572
  emitStatusSnapshot(broadcastMessage, store, item.lifecycle.featureCode, now);
573
+ // COMP-RESUME: best-effort anchor checkpoint at iteration-complete boundary
574
+ anchorBoundary(getTargetRoot(), { item, trigger: 'iteration-complete' });
564
575
  }
565
576
  } else {
566
577
  // per-attempt update: NO DecisionEvent (Decision 2 — would flood strip)
@@ -614,6 +625,8 @@ export function attachVisionRoutes(app, { store, scheduleBroadcast, broadcastMes
614
625
  emitDriftAxes(broadcastMessage, store, item, projectRoot, now);
615
626
  // COMP-OBS-STATUS: emit status snapshot after iteration abort
616
627
  emitStatusSnapshot(broadcastMessage, store, item.lifecycle.featureCode, now);
628
+ // COMP-RESUME: best-effort anchor checkpoint at iteration-complete (abort) boundary
629
+ anchorBoundary(getTargetRoot(), { item, trigger: 'iteration-complete' });
617
630
  }
618
631
  res.json({ aborted: true });
619
632
  } catch (err) {
@@ -835,6 +848,8 @@ export function attachVisionRoutes(app, { store, scheduleBroadcast, broadcastMes
835
848
  // COMP-OBS-DRIFT: emit drift axes before status so STATUS reads fresh drift_axes
836
849
  emitDriftAxes(broadcastMessage, store, resolvedItem, projectRoot, resolvedAt);
837
850
  emitStatusSnapshot(broadcastMessage, store, resolvedItem.lifecycle.featureCode, resolvedAt);
851
+ // COMP-RESUME: best-effort anchor checkpoint at gate-resolution boundary
852
+ anchorBoundary(getTargetRoot(), { item: resolvedItem, trigger: 'gate-resolution' });
838
853
  }
839
854
  }
840
855
  res.json({ gateId: req.params.id, gateOutcome: outcome });
@@ -1 +0,0 @@
1
- import{bl as ln,aO as an,I as B,b8 as b,G as H,ai as un,X as y,bd as tn,b9 as J,aI as _,c as rn,m as o,aH as on,j as sn,d as fn}from"./App-VU2lfA8m.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,j,w,v,A,S,a){var q=j-l,i=w-h,n=S-v,d=a-A,u=d*q-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*q,h+u*i]}function U(l,h,j,w,v,A,S){var a=l-j,q=h-w,i=(S?A:-A)/J(a*a+q*q),n=i*q,d=-i*a,u=l+n,s=h+d,f=j+n,c=w+d,X=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,D=(g<0?-1:1)*J(on(0,T*T*R-P*P)),E=(P*g-m*D)/R,G=(-P*m-g*D)/R,I=(P*g+m*D)/R,p=(-P*m+g*D)/R,x=E-X,e=G-t,r=I-X,z=p-t;return x*x+e*e>r*r+z*z&&(E=I,G=p),{cx:E,cy:G,x01:-n,y01:-d,x11:E*(v/T-1),y11:G*(v/T-1)}}function hn(){var l=cn,h=yn,j=H(0),w=null,v=gn,A=dn,S=mn,a=null,q=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,X=rn(c-f),t=c>f;if(a||(a=n=q()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(X>tn-y)a.moveTo(s*B(f),s*b(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*B(c),u*b(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=X,D=X,E=S.apply(this,arguments)/2,G=E>y&&(w?+w.apply(this,arguments):J(u*u+s*s)),I=_(rn(s-u)/2,+j.apply(this,arguments)),p=I,x=I,e,r;if(G>y){var z=sn(G/u*b(E)),K=sn(G/s*b(E));(P-=z*2)>y?(z*=t?1:-1,R+=z,T-=z):(P=0,R=T=(f+c)/2),(D-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(D=0,m=g=(f+c)/2)}var C=s*B(m),F=s*b(m),L=u*B(T),M=u*b(T);if(I>y){var N=s*B(g),Q=s*b(g),V=u*B(R),W=u*b(R),O;if(X<an)if(O=pn(C,F,V,W,N,Q,L,M)){var Y=C-O[0],Z=F-O[1],$=N-O[0],k=Q-O[1],nn=1/b(fn((Y*$+Z*k)/(J(Y*Y+Z*Z)*J($*$+k*k)))/2),en=J(O[0]*O[0]+O[1]*O[1]);p=_(I,(u-en)/(nn-1)),x=_(I,(s-en)/(nn+1))}else p=x=0}D>y?x>y?(e=U(V,W,C,F,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<I?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(C,F),a.arc(0,0,s,m,g,!t)):a.moveTo(C,F),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(C,F,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<I?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[B(d)*n,b(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:H(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:H(+n),i):h},i.cornerRadius=function(n){return arguments.length?(j=typeof n=="function"?n:H(+n),i):j},i.padRadius=function(n){return arguments.length?(w=n==null?null:typeof n=="function"?n:H(+n),i):w},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:H(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:H(+n),i):A},i.padAngle=function(n){return arguments.length?(S=typeof n=="function"?n:H(+n),i):S},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
@@ -1 +0,0 @@
1
- import{U as a,C as n}from"./App-VU2lfA8m.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
@@ -1 +0,0 @@
1
- import{b as a,F as w,aE as x}from"./App-VU2lfA8m.js";var g=a((e,t,i,o)=>{e.attr("class",i);const{width:r,height:h,x:n,y:c}=u(e,t);w(e,h,r,o);const s=B(n,c,r,h,t);e.attr("viewBox",s),x.debug(`viewBox configured: ${s} with padding: ${t}`)},"setupViewPortForSVG"),u=a((e,t)=>{var o;const i=((o=e.node())==null?void 0:o.getBBox())||{width:0,height:0,x:0,y:0};return{width:i.width+t*2,height:i.height+t*2,x:i.x,y:i.y}},"calculateDimensionsWithPadding"),B=a((e,t,i,o,r)=>`${e-r} ${t-r} ${i} ${o}`,"createViewBox");export{g as s};
@@ -1 +0,0 @@
1
- import{b as a,a_ as o}from"./App-VU2lfA8m.js";var g=a((t,e)=>{let n;return e==="sandbox"&&(n=o("#i"+t)),(e==="sandbox"?o(n.nodes()[0].contentDocument.body):o("body")).select(`[id="${t}"]`)},"getDiagramElement");export{g};
@@ -1 +0,0 @@
1
- import{b as i,a_ as l,aC as d,W as o}from"./App-VU2lfA8m.js";var x=i((r,t)=>{const e=r.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(const s in t.attrs)e.attr(s,t.attrs[s]);return t.class&&e.attr("class",t.class),e},"drawRect"),p=i((r,t)=>{const e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};x(r,e).lower()},"drawBackgroundRect"),y=i((r,t)=>{const e=t.text.replace(d," "),s=r.append("text");s.attr("x",t.x),s.attr("y",t.y),s.attr("class","legend"),s.style("text-anchor",t.anchor),t.class&&s.attr("class",t.class);const a=s.append("tspan");return a.attr("x",t.x+t.textMargin*2),a.text(e),s},"drawText"),m=i((r,t,e,s)=>{const a=r.append("image");a.attr("x",t),a.attr("y",e);const n=o.sanitizeUrl(s);a.attr("xlink:href",n)},"drawImage"),g=i((r,t,e,s)=>{const a=r.append("use");a.attr("x",t),a.attr("y",e);const n=o.sanitizeUrl(s);a.attr("xlink:href",`#${n}`)},"drawEmbeddedImage"),h=i(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),f=i(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),w=i(()=>{let r=l(".mermaidTooltip");return r.empty()&&(r=l("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),r},"createTooltip");export{g as a,m as b,w as c,p as d,x as e,y as f,h as g,f as h};
@@ -1 +0,0 @@
1
- import{s as a,a as s,c as e,C as t}from"./chunk-727SXJPM-CBRmkSvh.js";import{b as i}from"./App-VU2lfA8m.js";import"./chunk-FMBD7UC4-DfYQ2YmB.js";import"./chunk-ND2GUHAM-CDrOVOW5.js";import"./chunk-55IACEB6-E2hHEsl9.js";import"./chunk-2J33WTMH-CF6iSwEb.js";import"./mobile-qvdJ5p0m.js";import"./index-CLb8RFcn.js";import"./graph-DnLKqSPg.js";var f={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{f as diagram};
@@ -1 +0,0 @@
1
- import{s as a,a as s,c as e,C as t}from"./chunk-727SXJPM-CBRmkSvh.js";import{b as i}from"./App-VU2lfA8m.js";import"./chunk-FMBD7UC4-DfYQ2YmB.js";import"./chunk-ND2GUHAM-CDrOVOW5.js";import"./chunk-55IACEB6-E2hHEsl9.js";import"./chunk-2J33WTMH-CF6iSwEb.js";import"./mobile-qvdJ5p0m.js";import"./index-CLb8RFcn.js";import"./graph-DnLKqSPg.js";var f={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{f as diagram};
@@ -1 +0,0 @@
1
- import{b as l,aE as m,a_ as k}from"./App-VU2lfA8m.js";import{a as P,c as q}from"./graph-DnLKqSPg.js";import"./mobile-qvdJ5p0m.js";import"./index-CLb8RFcn.js";P.use(q);function D(t,o){t.forEach(e=>{const n={id:e.id,labelText:e.label,height:e.height,width:e.width,padding:e.padding??0};Object.keys(e).forEach(r=>{["id","label","height","width","padding","x","y"].includes(r)||(n[r]=e[r])}),o.add({group:"nodes",data:n,position:{x:e.x??0,y:e.y??0}})})}l(D,"addNodes");function I(t,o){t.forEach(e=>{const n={id:e.id,source:e.start,target:e.end};Object.keys(e).forEach(r=>{["id","start","end"].includes(r)||(n[r]=e[r])}),o.add({group:"edges",data:n})})}l(I,"addEdges");function $(t){return new Promise(o=>{const e=k("body").append("div").attr("id","cy").attr("style","display:none"),n=P({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});e.remove(),D(t.nodes,n),I(t.edges,n),n.nodes().forEach(function(a){a.layoutDimensions=()=>{const y=a.data();return{w:y.width,h:y.height}}});const r={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(r).run(),n.ready(a=>{m.info("Cytoscape ready",a),o(n)})})}l($,"createCytoscapeInstance");function X(t){return t.nodes().map(o=>{const e=o.data(),n=o.position(),r={id:e.id,x:n.x,y:n.y};return Object.keys(e).forEach(a=>{a!=="id"&&(r[a]=e[a])}),r})}l(X,"extractPositionedNodes");function Y(t){return t.edges().map(o=>{const e=o.data(),n=o._private.rscratch,r={id:e.id,source:e.source,target:e.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(e).forEach(a=>{["id","source","target"].includes(a)||(r[a]=e[a])}),r})}l(Y,"extractPositionedEdges");async function v(t,o){m.debug("Starting cose-bilkent layout algorithm");try{B(t);const e=await $(t),n=X(e),r=Y(e);return m.debug(`Layout completed: ${n.length} nodes, ${r.length} edges`),{nodes:n,edges:r}}catch(e){throw m.error("Error in cose-bilkent layout algorithm:",e),e}}l(v,"executeCoseBilkentLayout");function B(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(t.edges))throw new Error("Edges array is required in layout data");return!0}l(B,"validateLayoutData");var O=l(async(t,o,{insertCluster:e,insertEdge:n,insertEdgeLabel:r,insertMarkers:a,insertNode:y,log:c,positionEdgeLabel:x},{algorithm:j})=>{const u={},p={},f=o.select("g");a(f,t.markers,t.type,t.diagramId);const C=f.insert("g").attr("class","subgraphs"),E=f.insert("g").attr("class","edgePaths"),A=f.insert("g").attr("class","edgeLabels"),N=f.insert("g").attr("class","nodes");c.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map(async s=>{if(s.isGroup){const i={...s};p[s.id]=i,u[s.id]=i,await e(C,s)}else{const i={...s};u[s.id]=i;const d=await y(N,s,{config:t.config,dir:t.direction||"TB"}),g=d.node().getBBox();i.width=g.width,i.height=g.height,i.domId=d,c.debug(`Node ${s.id} dimensions: ${g.width}x${g.height}`)}})),c.debug("Running cose-bilkent layout algorithm");const _={...t,nodes:t.nodes.map(s=>{const i=u[s.id];return{...s,width:i.width,height:i.height}})},b=await v(_,t.config);c.debug("Positioning nodes based on layout results"),b.nodes.forEach(s=>{const i=u[s.id];i!=null&&i.domId&&(i.domId.attr("transform",`translate(${s.x}, ${s.y})`),i.x=s.x,i.y=s.y,c.debug(`Positioned node ${i.id} at center (${s.x}, ${s.y})`))}),b.edges.forEach(s=>{const i=t.edges.find(d=>d.id===s.id);i&&(i.points=[{x:s.startX,y:s.startY},{x:s.midX,y:s.midY},{x:s.endX,y:s.endY}])}),c.debug("Inserting and positioning edges"),await Promise.all(t.edges.map(async s=>{await r(A,s);const i=u[s.start??""],d=u[s.end??""];if(i&&d){const g=b.edges.find(h=>h.id===s.id);if(g){c.debug("APA01 positionedEdge",g);const h={...s},w=n(E,h,p,t.type,i,d,t.diagramId);x(h,w)}else{const h={...s,points:[{x:i.x||0,y:i.y||0},{x:d.x||0,y:d.y||0}]},w=n(E,h,p,t.type,i,d,t.diagramId);x(h,w)}}})),c.debug("Cose-bilkent rendering completed")},"render"),z=O;export{z as render};
@@ -1,4 +0,0 @@
1
- import{b,aG as j,w as F,u as Y,v as _,aE as r,a5 as H,bj as Q,b4 as V,ao as U,ad as $,aQ as P,al as q,am as z,aP as K,an as W}from"./App-VU2lfA8m.js";import{Q as x,G as B}from"./graph-BEmEBUp_.js";import{b as Z,m as R,l as I}from"./layout-Bw0msyOw.js";import"./mobile-qvdJ5p0m.js";import"./index-CLb8RFcn.js";import"./graph-DnLKqSPg.js";var ee=4;function ne(e){return Z(e,ee)}function E(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:te(e),edges:se(e)};return x(e.graph())||(t.value=ne(e.graph())),t}function te(e){return R(e.nodes(),function(t){var n=e.node(t),o=e.parent(t),c={v:t};return x(n)||(c.value=n),x(o)||(c.parent=o),c})}function se(e){return R(e.edges(),function(t){var n=e.edge(t),o={v:t.v,w:t.w};return x(t.name)||(o.name=t.name),x(n)||(o.value=n),o})}var f=new Map,N=new Map,A=new Map,re=b(()=>{N.clear(),A.clear(),f.clear()},"clear"),O=b((e,t)=>{const n=N.get(t)||[];return r.trace("In isDescendant",t," ",e," = ",n.includes(e)),n.includes(e)},"isDescendant"),ie=b((e,t)=>{const n=N.get(t)||[];return r.info("Descendants of ",t," is ",n),r.info("Edge is ",e),e.v===t||e.w===t?!1:n?n.includes(e.v)||O(e.v,t)||O(e.w,t)||n.includes(e.w):(r.debug("Tilt, ",t,",not in descendants"),!1)},"edgeInCluster"),G=b((e,t,n,o)=>{r.warn("Copying children of ",e,"root",o,"data",t.node(e),o);const c=t.children(e)||[];e!==o&&c.push(e),r.warn("Copying (nodes) clusterId",e,"nodes",c),c.forEach(a=>{if(t.children(a).length>0)G(a,t,n,o);else{const i=t.node(a);r.info("cp ",a," to ",o," with parent ",e),n.setNode(a,i),o!==t.parent(a)&&(r.warn("Setting parent",a,t.parent(a)),n.setParent(a,t.parent(a))),e!==o&&a!==e?(r.debug("Setting parent",a,e),n.setParent(a,e)):(r.info("In copy ",e,"root",o,"data",t.node(e),o),r.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==o,"node!==clusterId",a!==e));const u=t.edges(a);r.debug("Copying Edges",u),u.forEach(l=>{r.info("Edge",l);const v=t.edge(l.v,l.w,l.name);r.info("Edge data",v,o);try{ie(l,o)?(r.info("Copying as ",l.v,l.w,v,l.name),n.setEdge(l.v,l.w,v,l.name),r.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):r.info("Skipping copy of edge ",l.v,"-->",l.w," rootId: ",o," clusterId:",e)}catch(C){r.error(C)}})}r.debug("Removing node",a),t.removeNode(a)})},"copy"),J=b((e,t)=>{const n=t.children(e);let o=[...n];for(const c of n)A.set(c,e),o=[...o,...J(c,t)];return o},"extractDescendants"),oe=b((e,t,n)=>{const o=e.edges().filter(l=>l.v===t||l.w===t),c=e.edges().filter(l=>l.v===n||l.w===n),a=o.map(l=>({v:l.v===t?n:l.v,w:l.w===t?t:l.w})),i=c.map(l=>({v:l.v,w:l.w}));return a.filter(l=>i.some(v=>l.v===v.v&&l.w===v.w))},"findCommonEdges"),D=b((e,t,n)=>{const o=t.children(e);if(r.trace("Searching children of id ",e,o),o.length<1)return e;let c;for(const a of o){const i=D(a,t,n),u=oe(t,n,i);if(i)if(u.length>0)c=i;else return i}return c},"findNonClusterChild"),k=b(e=>!f.has(e)||!f.get(e).externalConnections?e:f.has(e)?f.get(e).id:e,"getAnchorId"),ae=b((e,t)=>{if(!e||t>10){r.debug("Opting out, no graph ");return}else r.debug("Opting in, graph ");e.nodes().forEach(function(n){e.children(n).length>0&&(r.warn("Cluster identified",n," Replacement id in edges: ",D(n,e,n)),N.set(n,J(n,e)),f.set(n,{id:D(n,e,n),clusterData:e.node(n)}))}),e.nodes().forEach(function(n){const o=e.children(n),c=e.edges();o.length>0?(r.debug("Cluster identified",n,N),c.forEach(a=>{const i=O(a.v,n),u=O(a.w,n);i^u&&(r.warn("Edge: ",a," leaves cluster ",n),r.warn("Descendants of XXX ",n,": ",N.get(n)),f.get(n).externalConnections=!0)})):r.debug("Not a cluster ",n,N)});for(let n of f.keys()){const o=f.get(n).id,c=e.parent(o);c!==n&&f.has(c)&&!f.get(c).externalConnections&&(f.get(n).id=c)}e.edges().forEach(function(n){const o=e.edge(n);r.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),r.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let c=n.v,a=n.w;if(r.warn("Fix XXX",f,"ids:",n.v,n.w,"Translating: ",f.get(n.v)," --- ",f.get(n.w)),f.get(n.v)||f.get(n.w)){if(r.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),c=k(n.v),a=k(n.w),e.removeEdge(n.v,n.w,n.name),c!==n.v){const i=e.parent(c);f.get(i).externalConnections=!0,o.fromCluster=n.v}if(a!==n.w){const i=e.parent(a);f.get(i).externalConnections=!0,o.toCluster=n.w}r.warn("Fix Replacing with XXX",c,a,n.name),e.setEdge(c,a,o,n.name)}}),r.warn("Adjusted Graph",E(e)),T(e,0),r.trace(f)},"adjustClustersAndEdges"),T=b((e,t)=>{var c,a;if(r.warn("extractor - ",t,E(e),e.children("D")),t>10){r.error("Bailing out");return}let n=e.nodes(),o=!1;for(const i of n){const u=e.children(i);o=o||u.length>0}if(!o){r.debug("Done, no node has children",e.nodes());return}r.debug("Nodes = ",n,t);for(const i of n)if(r.debug("Extracting node",i,f,f.has(i)&&!f.get(i).externalConnections,!e.parent(i),e.node(i),e.children("D")," Depth ",t),!f.has(i))r.debug("Not a cluster",i,t);else if(!f.get(i).externalConnections&&e.children(i)&&e.children(i).length>0){r.warn("Cluster without external connections, without a parent and with children",i,t);let l=e.graph().rankdir==="TB"?"LR":"TB";(a=(c=f.get(i))==null?void 0:c.clusterData)!=null&&a.dir&&(l=f.get(i).clusterData.dir,r.warn("Fixing dir",f.get(i).clusterData.dir,l));const v=new B({multigraph:!0,compound:!0}).setGraph({rankdir:l,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});r.warn("Old graph before copy",E(e)),G(i,e,v,i),e.setNode(i,{clusterNode:!0,id:i,clusterData:f.get(i).clusterData,label:f.get(i).label,graph:v}),r.warn("New graph after copy node: (",i,")",E(v)),r.debug("Old graph after copy",E(e))}else r.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!f.get(i).externalConnections," no parent: ",!e.parent(i)," children ",e.children(i)&&e.children(i).length>0,e.children("D"),t),r.debug(f);n=e.nodes(),r.warn("New list of nodes",n);for(const i of n){const u=e.node(i);r.warn(" Now next level",i,u),u!=null&&u.clusterNode&&T(u.graph,t+1)}},"extractor"),L=b((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(o=>{const c=e.children(o),a=L(e,c);n=[...n,...a]}),n},"sorter"),ce=b(e=>L(e,e.children()),"sortNodesByHierarchy"),M=b(async(e,t,n,o,c,a)=>{r.warn("Graph in recursive render:XAX",E(t),c);const i=t.graph().rankdir;r.trace("Dir in recursive render - dir:",i);const u=e.insert("g").attr("class","root");t.nodes()?r.info("Recursive render XXX",t.nodes()):r.info("No nodes found for",t),t.edges().length>0&&r.info("Recursive edges",t.edge(t.edges()[0]));const l=u.insert("g").attr("class","clusters"),v=u.insert("g").attr("class","edgePaths"),C=u.insert("g").attr("class","edgeLabels"),w=u.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(d){const s=t.node(d);if(c!==void 0){const g=JSON.parse(JSON.stringify(c.clusterData));r.trace(`Setting data for parent cluster XXX
2
- Node.id = `,d,`
3
- data=`,g.height,`
4
- Parent cluster`,c.height),t.setNode(c.id,g),t.parent(d)||(r.trace("Setting parent",d,c.id),t.setParent(d,c.id,g))}if(r.info("(Insert) Node XXX"+d+": "+JSON.stringify(t.node(d))),s!=null&&s.clusterNode){r.info("Cluster identified XBX",d,s.width,t.node(d));const{ranksep:g,nodesep:m}=t.graph();s.graph.setGraph({...s.graph.graph(),ranksep:g+25,nodesep:m});const p=await M(w,s.graph,n,o,t.node(d),a),S=p.elem;Q(s,S),s.diff=p.diff||0,r.info("New compound node after recursive render XAX",d,"width",s.width,"height",s.height),V(S,s)}else t.children(d).length>0?(r.trace("Cluster - the non recursive path XBX",d,s.id,s,s.width,"Graph:",t),r.trace(D(s.id,t)),f.set(s.id,{id:D(s.id,t),node:s})):(r.trace("Node - the non recursive path XAX",d,w,t.node(d),i),await U(w,t.node(d),{config:a,dir:i}))})),await b(async()=>{const d=t.edges().map(async function(s){const g=t.edge(s.v,s.w,s.name);r.info("Edge "+s.v+" -> "+s.w+": "+JSON.stringify(s)),r.info("Edge "+s.v+" -> "+s.w+": ",s," ",JSON.stringify(t.edge(s))),r.info("Fix",f,"ids:",s.v,s.w,"Translating: ",f.get(s.v),f.get(s.w)),await W(C,g)});await Promise.all(d)},"processEdges")(),r.info("Graph before layout:",JSON.stringify(E(t))),r.info("############################################# XXX"),r.info("### Layout ### XXX"),r.info("############################################# XXX"),I(t),r.info("Graph after layout:",JSON.stringify(E(t)));let y=0,{subGraphTitleTotalMargin:X}=$(a);return await Promise.all(ce(t).map(async function(d){var g;const s=t.node(d);if(r.info("Position XBX => "+d+": ("+s.x,","+s.y,") width: ",s.width," height: ",s.height),s!=null&&s.clusterNode)s.y+=X,r.info("A tainted cluster node XBX1",d,s.id,s.width,s.height,s.x,s.y,t.parent(d)),f.get(s.id).node=s,P(s);else if(t.children(d).length>0){r.info("A pure cluster node XBX1",d,s.id,s.x,s.y,s.width,s.height,t.parent(d)),s.height+=X,t.node(s.parentId);const m=(s==null?void 0:s.padding)/2||0,p=((g=s==null?void 0:s.labelBBox)==null?void 0:g.height)||0,S=p-m||0;r.debug("OffsetY",S,"labelHeight",p,"halfPadding",m),await q(l,s),f.get(s.id).node=s}else{const m=t.node(s.parentId);s.y+=X/2,r.info("A regular node XBX1 - using the padding",s.id,"parent",s.parentId,s.width,s.height,s.x,s.y,"offsetY",s.offsetY,"parent",m,m==null?void 0:m.offsetY,s),P(s)}})),t.edges().forEach(function(d){const s=t.edge(d);r.info("Edge "+d.v+" -> "+d.w+": "+JSON.stringify(s),s),s.points.forEach(S=>S.y+=X/2);const g=t.node(d.v);var m=t.node(d.w);const p=z(v,s,f,n,g,m,o);K(s,p)}),t.nodes().forEach(function(d){const s=t.node(d);r.info(d,s.type,s.diff),s.isGroup&&(y=s.diff)}),r.warn("Returning from recursive render XAX",u,y),{elem:u,diff:y}},"recursiveRender"),me=b(async(e,t)=>{var a,i,u,l,v,C;const n=new B({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:((a=e.config)==null?void 0:a.nodeSpacing)||((u=(i=e.config)==null?void 0:i.flowchart)==null?void 0:u.nodeSpacing)||e.nodeSpacing,ranksep:((l=e.config)==null?void 0:l.rankSpacing)||((C=(v=e.config)==null?void 0:v.flowchart)==null?void 0:C.rankSpacing)||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),o=t.select("g");j(o,e.markers,e.type,e.diagramId),F(),Y(),_(),re(),e.nodes.forEach(w=>{n.setNode(w.id,{...w}),w.parentId&&n.setParent(w.id,w.parentId)}),r.debug("Edges:",e.edges),e.edges.forEach(w=>{if(w.start===w.end){const h=w.start,y=h+"---"+h+"---1",X=h+"---"+h+"---2",d=n.node(h);n.setNode(y,{domId:y,id:y,parentId:d.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),n.setParent(y,d.parentId),n.setNode(X,{domId:X,id:X,parentId:d.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),n.setParent(X,d.parentId);const s=structuredClone(w),g=structuredClone(w),m=structuredClone(w);s.label="",s.arrowTypeEnd="none",s.endLabelLeft="",s.endLabelRight="",s.startLabelLeft="",s.id=h+"-cyclic-special-1",g.startLabelRight="",g.startLabelLeft="",g.endLabelLeft="",g.endLabelRight="",g.arrowTypeStart="none",g.arrowTypeEnd="none",g.id=h+"-cyclic-special-mid",m.label="",m.startLabelRight="",m.startLabelLeft="",m.arrowTypeStart="none",d.isGroup&&(s.fromCluster=h,m.toCluster=h),m.id=h+"-cyclic-special-2",m.arrowTypeStart="none",n.setEdge(h,y,s,h+"-cyclic-special-0"),n.setEdge(y,X,g,h+"-cyclic-special-1"),n.setEdge(X,h,m,h+"-cyc<lic-special-2")}else n.setEdge(w.start,w.end,{...w},w.id)}),r.warn("Graph at first:",JSON.stringify(E(n))),ae(n),r.warn("Graph after XAX:",JSON.stringify(E(n)));const c=H();await M(o,n,e.type,e.diagramId,void 0,c)},"render");export{me as render};
@@ -1,43 +0,0 @@
1
- import{b0 as k,a2 as R,a6 as E,b3 as F,a3 as I,b1 as _,b as l,a$ as D,t as z,s as y,a4 as C,T as G,aE as P,af as W,F as B}from"./App-VU2lfA8m.js";import{p as V}from"./chunk-4BX2VUAB-BTe-QE0R.js";import{p as H}from"./wardley-L42UT6IY-Bf-gQIFY.js";import"./mobile-qvdJ5p0m.js";import"./index-CLb8RFcn.js";import"./graph-DnLKqSPg.js";var x={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},b={axes:[],curves:[],options:x},m=structuredClone(b),j=G.radar,N=l(()=>y({...j,...C().radar}),"getConfig"),w=l(()=>m.axes,"getAxes"),U=l(()=>m.curves,"getCurves"),X=l(()=>m.options,"getOptions"),Y=l(a=>{m.axes=a.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),Z=l(a=>{m.curves=a.map(t=>({name:t.name,label:t.label??t.name,entries:q(t.entries)}))},"setCurves"),q=l(a=>{if(a[0].axis==null)return a.map(e=>e.value);const t=w();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(e=>{const r=a.find(s=>{var o;return((o=s.axis)==null?void 0:o.$refText)===e.name});if(r===void 0)throw new Error("Missing entry for axis "+e.label);return r.value})},"computeCurveEntries"),J=l(a=>{var e,r,s,o,i;const t=a.reduce((n,c)=>(n[c.name]=c,n),{});m.options={showLegend:((e=t.showLegend)==null?void 0:e.value)??x.showLegend,ticks:((r=t.ticks)==null?void 0:r.value)??x.ticks,max:((s=t.max)==null?void 0:s.value)??x.max,min:((o=t.min)==null?void 0:o.value)??x.min,graticule:((i=t.graticule)==null?void 0:i.value)??x.graticule}},"setOptions"),K=l(()=>{z(),m=structuredClone(b)},"clear"),$={getAxes:w,getCurves:U,getOptions:X,setAxes:Y,setCurves:Z,setOptions:J,getConfig:N,clear:K,setAccTitle:_,getAccTitle:I,setDiagramTitle:F,getDiagramTitle:E,getAccDescription:R,setAccDescription:k},Q=l(a=>{V(a,$);const{axes:t,curves:e,options:r}=a;$.setAxes(t),$.setCurves(e),$.setOptions(r)},"populate"),tt={parse:l(async a=>{const t=await H("radar",a);P.debug(t),Q(t)},"parse")},et=l((a,t,e,r)=>{const s=r.db,o=s.getAxes(),i=s.getCurves(),n=s.getOptions(),c=s.getConfig(),d=s.getDiagramTitle(),p=D(t),u=at(p,c),g=n.max??Math.max(...i.map(f=>Math.max(...f.entries))),h=n.min,v=Math.min(c.width,c.height)/2;rt(u,o,v,n.ticks,n.graticule),st(u,o,v,c),M(u,o,i,h,g,n.graticule,c),T(u,i,n.showLegend,c),u.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),at=l((a,t)=>{const e=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,s={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return B(a,r,e,t.useMaxWidth??!0),a.attr("viewBox",`0 0 ${e} ${r}`),a.append("g").attr("transform",`translate(${s.x}, ${s.y})`)},"drawFrame"),rt=l((a,t,e,r,s)=>{if(s==="circle")for(let o=0;o<r;o++){const i=e*(o+1)/r;a.append("circle").attr("r",i).attr("class","radarGraticule")}else if(s==="polygon"){const o=t.length;for(let i=0;i<r;i++){const n=e*(i+1)/r,c=t.map((d,p)=>{const u=2*p*Math.PI/o-Math.PI/2,g=n*Math.cos(u),h=n*Math.sin(u);return`${g},${h}`}).join(" ");a.append("polygon").attr("points",c).attr("class","radarGraticule")}}},"drawGraticule"),st=l((a,t,e,r)=>{const s=t.length;for(let o=0;o<s;o++){const i=t[o].label,n=2*o*Math.PI/s-Math.PI/2;a.append("line").attr("x1",0).attr("y1",0).attr("x2",e*r.axisScaleFactor*Math.cos(n)).attr("y2",e*r.axisScaleFactor*Math.sin(n)).attr("class","radarAxisLine"),a.append("text").text(i).attr("x",e*r.axisLabelFactor*Math.cos(n)).attr("y",e*r.axisLabelFactor*Math.sin(n)).attr("class","radarAxisLabel")}},"drawAxes");function M(a,t,e,r,s,o,i){const n=t.length,c=Math.min(i.width,i.height)/2;e.forEach((d,p)=>{if(d.entries.length!==n)return;const u=d.entries.map((g,h)=>{const v=2*Math.PI*h/n-Math.PI/2,f=A(g,r,s,c),S=f*Math.cos(v),O=f*Math.sin(v);return{x:S,y:O}});o==="circle"?a.append("path").attr("d",L(u,i.curveTension)).attr("class",`radarCurve-${p}`):o==="polygon"&&a.append("polygon").attr("points",u.map(g=>`${g.x},${g.y}`).join(" ")).attr("class",`radarCurve-${p}`)})}l(M,"drawCurves");function A(a,t,e,r){const s=Math.min(Math.max(a,t),e);return r*(s-t)/(e-t)}l(A,"relativeRadius");function L(a,t){const e=a.length;let r=`M${a[0].x},${a[0].y}`;for(let s=0;s<e;s++){const o=a[(s-1+e)%e],i=a[s],n=a[(s+1)%e],c=a[(s+2)%e],d={x:i.x+(n.x-o.x)*t,y:i.y+(n.y-o.y)*t},p={x:n.x-(c.x-i.x)*t,y:n.y-(c.y-i.y)*t};r+=` C${d.x},${d.y} ${p.x},${p.y} ${n.x},${n.y}`}return`${r} Z`}l(L,"closedRoundCurve");function T(a,t,e,r){if(!e)return;const s=(r.width/2+r.marginRight)*3/4,o=-(r.height/2+r.marginTop)*3/4,i=20;t.forEach((n,c)=>{const d=a.append("g").attr("transform",`translate(${s}, ${o+c*i})`);d.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${c}`),d.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(n.label)})}l(T,"drawLegend");var nt={draw:et},ot=l((a,t)=>{let e="";for(let r=0;r<a.THEME_COLOR_LIMIT;r++){const s=a[`cScale${r}`];e+=`
2
- .radarCurve-${r} {
3
- color: ${s};
4
- fill: ${s};
5
- fill-opacity: ${t.curveOpacity};
6
- stroke: ${s};
7
- stroke-width: ${t.curveStrokeWidth};
8
- }
9
- .radarLegendBox-${r} {
10
- fill: ${s};
11
- fill-opacity: ${t.curveOpacity};
12
- stroke: ${s};
13
- }
14
- `}return e},"genIndexStyles"),it=l(a=>{const t=W(),e=C(),r=y(t,e.themeVariables),s=y(r.radar,a);return{themeVariables:r,radarOptions:s}},"buildRadarStyleOptions"),lt=l(({radar:a}={})=>{const{themeVariables:t,radarOptions:e}=it(a);return`
15
- .radarTitle {
16
- font-size: ${t.fontSize};
17
- color: ${t.titleColor};
18
- dominant-baseline: hanging;
19
- text-anchor: middle;
20
- }
21
- .radarAxisLine {
22
- stroke: ${e.axisColor};
23
- stroke-width: ${e.axisStrokeWidth};
24
- }
25
- .radarAxisLabel {
26
- dominant-baseline: middle;
27
- text-anchor: middle;
28
- font-size: ${e.axisLabelFontSize}px;
29
- color: ${e.axisColor};
30
- }
31
- .radarGraticule {
32
- fill: ${e.graticuleColor};
33
- fill-opacity: ${e.graticuleOpacity};
34
- stroke: ${e.graticuleColor};
35
- stroke-width: ${e.graticuleStrokeWidth};
36
- }
37
- .radarLegendText {
38
- text-anchor: start;
39
- font-size: ${e.legendFontSize}px;
40
- dominant-baseline: hanging;
41
- }
42
- ${ot(t,e)}
43
- `},"styles"),xt={parser:tt,db:$,renderer:nt,styles:lt};export{xt as diagram};
@@ -1,10 +0,0 @@
1
- import{b3 as x,b1 as f,b0 as C,a6 as T,a2 as B,a3 as y,b as s,s as u,aE as k,a$ as V,F as N,a4 as S,t as _,T as $}from"./App-VU2lfA8m.js";import{p as D}from"./chunk-4BX2VUAB-BTe-QE0R.js";import{I as A}from"./chunk-QZHKN3VN-DwjqJ9xB.js";import{p as I}from"./wardley-L42UT6IY-Bf-gQIFY.js";import"./mobile-qvdJ5p0m.js";import"./index-CLb8RFcn.js";import"./graph-DnLKqSPg.js";var l=new A(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",children:[]}]})),X=s(()=>{l.reset(),_()},"clear"),z=s(()=>l.records.stack[0],"getRoot"),E=s(()=>l.records.cnt,"getCount"),H=$.treeView,L=s(()=>u(H,S().treeView),"getConfig"),R=s((e,t)=>{for(;e<=l.records.stack[l.records.stack.length-1].level;)l.records.stack.pop();const a={id:l.records.cnt++,level:e,name:t,children:[]};l.records.stack[l.records.stack.length-1].children.push(a),l.records.stack.push(a)},"addNode"),W={clear:X,addNode:R,getRoot:z,getCount:E,getConfig:L,getAccTitle:y,getAccDescription:B,getDiagramTitle:T,setAccDescription:C,setAccTitle:f,setDiagramTitle:x},b=W,F=s(e=>{D(e,b),e.nodes.map(t=>b.addNode(t.indent?parseInt(t.indent):0,t.name))},"populate"),M={parse:s(async e=>{const t=await I("treeView",e);k.debug(t),F(t)},"parse")},Y=s((e,t,a,n,o)=>{const c=n.append("text").text(a.name).attr("dominant-baseline","middle").attr("class","treeView-node-label"),{height:p,width:r}=c.node().getBBox(),d=p+o.paddingY*2,i=r+o.paddingX*2;c.attr("x",e+o.paddingX),c.attr("y",t+d/2),a.BBox={x:e,y:t,width:i,height:d}},"positionLabel"),w=s((e,t,a,n,o,c)=>e.append("line").attr("x1",t).attr("y1",a).attr("x2",n).attr("y2",o).attr("stroke-width",c).attr("class","treeView-node-line"),"positionLine"),j=s((e,t,a)=>{let n=0,o=0;const c=s((r,d,i,h)=>{const v=h*(i.rowIndent+i.paddingX);Y(v,n,d,r,i);const{height:g,width:m}=d.BBox;w(r,v-i.rowIndent,n+g/2,v,n+g/2,i.lineThickness),o=Math.max(o,v+m),n+=g},"drawNode"),p=s((r,d=0)=>{c(e,r,a,d),r.children.forEach(g=>{p(g,d+1)});const{x:i,y:h,height:v}=r.BBox;if(r.children.length){const{y:g,height:m}=r.children[r.children.length-1].BBox;w(e,i+a.paddingX,h+v,i+a.paddingX,g+m/2+a.lineThickness/2,a.lineThickness)}},"processNode");return p(t),{totalHeight:n,totalWidth:o}},"drawTree"),q=s((e,t,a,n)=>{k.debug(`Rendering treeView diagram
2
- `+e);const o=n.db,c=o.getRoot(),p=o.getConfig(),r=V(t),d=r.append("g");d.attr("class","tree-view");const{totalHeight:i,totalWidth:h}=j(d,c,p);r.attr("viewBox",`-${p.lineThickness/2} 0 ${h} ${i}`),N(r,i,h,p.useMaxWidth)},"draw"),G={draw:q},J=G,K={labelFontSize:"16px",labelColor:"black",lineColor:"black"},O=s(({treeView:e})=>{const{labelFontSize:t,labelColor:a,lineColor:n}=u(K,e);return`
3
- .treeView-node-label {
4
- font-size: ${t};
5
- fill: ${a};
6
- }
7
- .treeView-node-line {
8
- stroke: ${n};
9
- }
10
- `},"styles"),P=O,se={db:b,renderer:J,parser:M,styles:P};export{se as diagram};
@@ -1,24 +0,0 @@
1
- import{b,s as m,a$ as B,F as C,aE as w,b1 as S,a3 as T,b3 as D,a6 as E,a2 as F,b0 as P,a4 as z,T as A,t as W}from"./App-VU2lfA8m.js";import{p as _}from"./chunk-4BX2VUAB-BTe-QE0R.js";import{p as N}from"./wardley-L42UT6IY-Bf-gQIFY.js";import"./mobile-qvdJ5p0m.js";import"./index-CLb8RFcn.js";import"./graph-DnLKqSPg.js";var L=A.packet,u,v=(u=class{constructor(){this.packet=[],this.setAccTitle=S,this.getAccTitle=T,this.setDiagramTitle=D,this.getDiagramTitle=E,this.getAccDescription=F,this.setAccDescription=P}getConfig(){const t=m({...L,...z().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){W(),this.packet=[]}},b(u,"PacketDB"),u),M=1e4,Y=b((e,t)=>{_(e,t);let o=-1,r=[],n=1;const{bitsPerRow:l}=t.getConfig();for(let{start:a,end:i,bits:d,label:c}of e.blocks){if(a!==void 0&&i!==void 0&&i<a)throw new Error(`Packet block ${a} - ${i} is invalid. End must be greater than start.`);if(a??(a=o+1),a!==o+1)throw new Error(`Packet block ${a} - ${i??a} is not contiguous. It should start from ${o+1}.`);if(d===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(i??(i=a+(d??1)-1),d??(d=i-a+1),o=i,w.debug(`Packet block ${a} - ${o} with label ${c}`);r.length<=l+1&&t.getPacket().length<M;){const[p,s]=I({start:a,end:i,bits:d,label:c},n,l);if(r.push(p),p.end+1===n*l&&(t.pushWord(r),r=[],n++),!s)break;({start:a,end:i,bits:d,label:c}=s)}}t.pushWord(r)},"populate"),I=b((e,t,o)=>{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*o)return[e,void 0];const r=t*o-1,n=t*o;return[{start:e.start,end:r,label:e.label,bits:r-e.start},{start:n,end:e.end,label:e.label,bits:e.end-n}]},"getNextFittingBlock"),x={parser:{yy:void 0},parse:b(async e=>{var r;const t=await N("packet",e),o=(r=x.parser)==null?void 0:r.yy;if(!(o instanceof v))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");w.debug(t),Y(t,o)},"parse")},O=b((e,t,o,r)=>{const n=r.db,l=n.getConfig(),{rowHeight:a,paddingY:i,bitWidth:d,bitsPerRow:c}=l,p=n.getPacket(),s=n.getDiagramTitle(),h=a+i,g=h*(p.length+1)-(s?0:a),k=d*c+2,f=B(t);f.attr("viewBox",`0 0 ${k} ${g}`),C(f,g,k,l.useMaxWidth);for(const[y,$]of p.entries())j(f,$,y,l);f.append("text").text(s).attr("x",k/2).attr("y",g-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),j=b((e,t,o,{rowHeight:r,paddingX:n,paddingY:l,bitWidth:a,bitsPerRow:i,showBits:d})=>{const c=e.append("g"),p=o*(r+l)+l;for(const s of t){const h=s.start%i*a+1,g=(s.end-s.start+1)*a-n;if(c.append("rect").attr("x",h).attr("y",p).attr("width",g).attr("height",r).attr("class","packetBlock"),c.append("text").attr("x",h+g/2).attr("y",p+r/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(s.label),!d)continue;const k=s.end===s.start,f=p-2;c.append("text").attr("x",h+(k?g/2:0)).attr("y",f).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(s.start),k||c.append("text").attr("x",h+g).attr("y",f).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(s.end)}},"drawWord"),G={draw:O},H={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},K=b(({packet:e}={})=>{const t=m(H,e);return`
2
- .packetByte {
3
- font-size: ${t.byteFontSize};
4
- }
5
- .packetByte.start {
6
- fill: ${t.startByteColor};
7
- }
8
- .packetByte.end {
9
- fill: ${t.endByteColor};
10
- }
11
- .packetLabel {
12
- fill: ${t.labelColor};
13
- font-size: ${t.labelFontSize};
14
- }
15
- .packetTitle {
16
- fill: ${t.titleColor};
17
- font-size: ${t.titleFontSize};
18
- }
19
- .packetBlock {
20
- stroke: ${t.blockStrokeColor};
21
- stroke-width: ${t.blockStrokeWidth};
22
- fill: ${t.blockFillColor};
23
- }
24
- `},"styles"),V={parser:x,get db(){return new v},renderer:G,styles:K};export{V as diagram};
@@ -1,24 +0,0 @@
1
- import{b as w,af as he,a4 as ee,s as K,a$ as ue,F as pe,aE as Q,bb as P,a_ as j,b1 as fe,a3 as ge,b3 as me,a6 as ye,a2 as Se,b0 as ve,T as xe,aw as be,t as we}from"./App-VU2lfA8m.js";import{s as Ce}from"./chunk-2J33WTMH-CF6iSwEb.js";import{p as Te}from"./chunk-4BX2VUAB-BTe-QE0R.js";import{p as Le}from"./wardley-L42UT6IY-Bf-gQIFY.js";import{f as O}from"./defaultLocale-CrowFXzY.js";import{o as J}from"./ordinal-Cboi1Yqb.js";import"./mobile-qvdJ5p0m.js";import"./index-CLb8RFcn.js";import"./graph-DnLKqSPg.js";import"./init-Gi6I4Gst.js";function $e(t){var a=0,l=t.children,n=l&&l.length;if(!n)a=1;else for(;--n>=0;)a+=l[n].value;t.value=a}function Ae(){return this.eachAfter($e)}function Fe(t,a){let l=-1;for(const n of this)t.call(a,n,++l,this);return this}function Ne(t,a){for(var l=this,n=[l],r,s,d=-1;l=n.pop();)if(t.call(a,l,++d,this),r=l.children)for(s=r.length-1;s>=0;--s)n.push(r[s]);return this}function Me(t,a){for(var l=this,n=[l],r=[],s,d,h,g=-1;l=n.pop();)if(r.push(l),s=l.children)for(d=0,h=s.length;d<h;++d)n.push(s[d]);for(;l=r.pop();)t.call(a,l,++g,this);return this}function Ve(t,a){let l=-1;for(const n of this)if(t.call(a,n,++l,this))return n}function _e(t){return this.eachAfter(function(a){for(var l=+t(a.data)||0,n=a.children,r=n&&n.length;--r>=0;)l+=n[r].value;a.value=l})}function ke(t){return this.eachBefore(function(a){a.children&&a.children.sort(t)})}function ze(t){for(var a=this,l=De(a,t),n=[a];a!==l;)a=a.parent,n.push(a);for(var r=n.length;t!==l;)n.splice(r,0,t),t=t.parent;return n}function De(t,a){if(t===a)return t;var l=t.ancestors(),n=a.ancestors(),r=null;for(t=l.pop(),a=n.pop();t===a;)r=t,t=l.pop(),a=n.pop();return r}function Pe(){for(var t=this,a=[t];t=t.parent;)a.push(t);return a}function Be(){return Array.from(this)}function Ee(){var t=[];return this.eachBefore(function(a){a.children||t.push(a)}),t}function Re(){var t=this,a=[];return t.each(function(l){l!==t&&a.push({source:l.parent,target:l})}),a}function*We(){var t=this,a,l=[t],n,r,s;do for(a=l.reverse(),l=[];t=a.pop();)if(yield t,n=t.children)for(r=0,s=n.length;r<s;++r)l.push(n[r]);while(l.length)}function te(t,a){t instanceof Map?(t=[void 0,t],a===void 0&&(a=Oe)):a===void 0&&(a=Ie);for(var l=new U(t),n,r=[l],s,d,h,g;n=r.pop();)if((d=a(n.data))&&(g=(d=Array.from(d)).length))for(n.children=d,h=g-1;h>=0;--h)r.push(s=d[h]=new U(d[h])),s.parent=n,s.depth=n.depth+1;return l.eachBefore(qe)}function He(){return te(this).eachBefore(Ge)}function Ie(t){return t.children}function Oe(t){return Array.isArray(t)?t[1]:null}function Ge(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}function qe(t){var a=0;do t.height=a;while((t=t.parent)&&t.height<++a)}function U(t){this.data=t,this.depth=this.height=0,this.parent=null}U.prototype=te.prototype={constructor:U,count:Ae,each:Fe,eachAfter:Me,eachBefore:Ne,find:Ve,sum:_e,sort:ke,path:ze,ancestors:Pe,descendants:Be,leaves:Ee,links:Re,copy:He,[Symbol.iterator]:We};function Xe(t){if(typeof t!="function")throw new Error;return t}function G(){return 0}function q(t){return function(){return t}}function Ye(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function je(t,a,l,n,r){for(var s=t.children,d,h=-1,g=s.length,c=t.value&&(n-a)/t.value;++h<g;)d=s[h],d.y0=l,d.y1=r,d.x0=a,d.x1=a+=d.value*c}function Ue(t,a,l,n,r){for(var s=t.children,d,h=-1,g=s.length,c=t.value&&(r-l)/t.value;++h<g;)d=s[h],d.x0=a,d.x1=n,d.y0=l,d.y1=l+=d.value*c}var Ze=(1+Math.sqrt(5))/2;function Je(t,a,l,n,r,s){for(var d=[],h=a.children,g,c,u=0,b=0,i=h.length,x,S,v=a.value,p,m,M,N,z,R,V;u<i;){x=r-l,S=s-n;do p=h[b++].value;while(!p&&b<i);for(m=M=p,R=Math.max(S/x,x/S)/(v*t),V=p*p*R,z=Math.max(M/V,V/m);b<i;++b){if(p+=c=h[b].value,c<m&&(m=c),c>M&&(M=c),V=p*p*R,N=Math.max(M/V,V/m),N>z){p-=c;break}z=N}d.push(g={value:p,dice:x<S,children:h.slice(u,b)}),g.dice?je(g,l,n,r,v?n+=S*p/v:s):Ue(g,l,n,v?l+=x*p/v:r,s),v-=p,u=b}return d}const Ke=(function t(a){function l(n,r,s,d,h){Je(a,n,r,s,d,h)}return l.ratio=function(n){return t((n=+n)>1?n:1)},l})(Ze);function Qe(){var t=Ke,a=!1,l=1,n=1,r=[0],s=G,d=G,h=G,g=G,c=G;function u(i){return i.x0=i.y0=0,i.x1=l,i.y1=n,i.eachBefore(b),r=[0],a&&i.eachBefore(Ye),i}function b(i){var x=r[i.depth],S=i.x0+x,v=i.y0+x,p=i.x1-x,m=i.y1-x;p<S&&(S=p=(S+p)/2),m<v&&(v=m=(v+m)/2),i.x0=S,i.y0=v,i.x1=p,i.y1=m,i.children&&(x=r[i.depth+1]=s(i)/2,S+=c(i)-x,v+=d(i)-x,p-=h(i)-x,m-=g(i)-x,p<S&&(S=p=(S+p)/2),m<v&&(v=m=(v+m)/2),t(i,S,v,p,m))}return u.round=function(i){return arguments.length?(a=!!i,u):a},u.size=function(i){return arguments.length?(l=+i[0],n=+i[1],u):[l,n]},u.tile=function(i){return arguments.length?(t=Xe(i),u):t},u.padding=function(i){return arguments.length?u.paddingInner(i).paddingOuter(i):u.paddingInner()},u.paddingInner=function(i){return arguments.length?(s=typeof i=="function"?i:q(+i),u):s},u.paddingOuter=function(i){return arguments.length?u.paddingTop(i).paddingRight(i).paddingBottom(i).paddingLeft(i):u.paddingTop()},u.paddingTop=function(i){return arguments.length?(d=typeof i=="function"?i:q(+i),u):d},u.paddingRight=function(i){return arguments.length?(h=typeof i=="function"?i:q(+i),u):h},u.paddingBottom=function(i){return arguments.length?(g=typeof i=="function"?i:q(+i),u):g},u.paddingLeft=function(i){return arguments.length?(c=typeof i=="function"?i:q(+i),u):c},u}var E,ne=(E=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=fe,this.getAccTitle=ge,this.setDiagramTitle=me,this.getDiagramTitle=ye,this.getAccDescription=Se,this.setAccDescription=ve}getNodes(){return this.nodes}getConfig(){const a=xe,l=ee();return K({...a.treemap,...l.treemap??{}})}addNode(a,l){this.nodes.push(a),this.levels.set(a,l),l===0&&(this.outerNodes.push(a),this.root??(this.root=a))}getRoot(){return{name:"",children:this.outerNodes}}addClass(a,l){const n=this.classes.get(a)??{id:a,styles:[],textStyles:[]},r=l.replace(/\\,/g,"§§§").replace(/,/g,";").replace(/§§§/g,",").split(";");r&&r.forEach(s=>{be(s)&&(n!=null&&n.textStyles?n.textStyles.push(s):n.textStyles=[s]),n!=null&&n.styles?n.styles.push(s):n.styles=[s]}),this.classes.set(a,n)}getClasses(){return this.classes}getStylesForClass(a){var l;return((l=this.classes.get(a))==null?void 0:l.styles)??[]}clear(){we(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}},w(E,"TreeMapDB"),E);function le(t){if(!t.length)return[];const a=[],l=[];return t.forEach(n=>{const r={name:n.name,children:n.type==="Leaf"?void 0:[]};for(r.classSelector=n==null?void 0:n.classSelector,n!=null&&n.cssCompiledStyles&&(r.cssCompiledStyles=n.cssCompiledStyles),n.type==="Leaf"&&n.value!==void 0&&(r.value=n.value);l.length>0&&l[l.length-1].level>=n.level;)l.pop();if(l.length===0)a.push(r);else{const s=l[l.length-1].node;s.children?s.children.push(r):s.children=[r]}n.type!=="Leaf"&&l.push({node:r,level:n.level})}),a}w(le,"buildHierarchy");var et=w((t,a)=>{Te(t,a);const l=[];for(const s of t.TreemapRows??[])s.$type==="ClassDefStatement"&&a.addClass(s.className??"",s.styleText??"");for(const s of t.TreemapRows??[]){const d=s.item;if(!d)continue;const h=s.indent?parseInt(s.indent):0,g=tt(d),c=d.classSelector?a.getStylesForClass(d.classSelector):[],u=c.length>0?c:void 0,b={level:h,name:g,type:d.$type,value:d.value,classSelector:d.classSelector,cssCompiledStyles:u};l.push(b)}const n=le(l),r=w((s,d)=>{for(const h of s)a.addNode(h,d),h.children&&h.children.length>0&&r(h.children,d+1)},"addNodesRecursively");r(n,0)},"populate"),tt=w(t=>t.name?String(t.name):"","getItemName"),re={parser:{yy:void 0},parse:w(async t=>{var a;try{const n=await Le("treemap",t);Q.debug("Treemap AST:",n);const r=(a=re.parser)==null?void 0:a.yy;if(!(r instanceof ne))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");et(n,r)}catch(l){throw Q.error("Error parsing treemap:",l),l}},"parse")},at=10,B=10,X=25,nt=w((t,a,l,n)=>{const r=n.db,s=r.getConfig(),d=s.padding??at,h=r.getDiagramTitle(),g=r.getRoot(),{themeVariables:c}=ee();if(!g)return;const u=h?30:0,b=ue(a),i=s.nodeWidth?s.nodeWidth*B:960,x=s.nodeHeight?s.nodeHeight*B:500,S=i,v=x+u;b.attr("viewBox",`0 0 ${S} ${v}`),pe(b,v,S,s.useMaxWidth);let p;try{const e=s.valueFormat||",";if(e==="$0,0")p=w(o=>"$"+O(",")(o),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){const o=/\.\d+/.exec(e),f=o?o[0]:"";p=w(C=>"$"+O(","+f)(C),"valueFormat")}else if(e.startsWith("$")){const o=e.substring(1);p=w(f=>"$"+O(o||"")(f),"valueFormat")}else p=O(e)}catch(e){Q.error("Error creating format function:",e),p=O(",")}const m=J().range(["transparent",c.cScale0,c.cScale1,c.cScale2,c.cScale3,c.cScale4,c.cScale5,c.cScale6,c.cScale7,c.cScale8,c.cScale9,c.cScale10,c.cScale11]),M=J().range(["transparent",c.cScalePeer0,c.cScalePeer1,c.cScalePeer2,c.cScalePeer3,c.cScalePeer4,c.cScalePeer5,c.cScalePeer6,c.cScalePeer7,c.cScalePeer8,c.cScalePeer9,c.cScalePeer10,c.cScalePeer11]),N=J().range([c.cScaleLabel0,c.cScaleLabel1,c.cScaleLabel2,c.cScaleLabel3,c.cScaleLabel4,c.cScaleLabel5,c.cScaleLabel6,c.cScaleLabel7,c.cScaleLabel8,c.cScaleLabel9,c.cScaleLabel10,c.cScaleLabel11]);h&&b.append("text").attr("x",S/2).attr("y",u/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);const z=b.append("g").attr("transform",`translate(0, ${u})`).attr("class","treemapContainer"),R=te(g).sum(e=>e.value??0).sort((e,o)=>(o.value??0)-(e.value??0)),ae=Qe().size([i,x]).paddingTop(e=>e.children&&e.children.length>0?X+B:0).paddingInner(d).paddingLeft(e=>e.children&&e.children.length>0?B:0).paddingRight(e=>e.children&&e.children.length>0?B:0).paddingBottom(e=>e.children&&e.children.length>0?B:0).round(!0)(R),se=ae.descendants().filter(e=>e.children&&e.children.length>0),W=z.selectAll(".treemapSection").data(se).enter().append("g").attr("class","treemapSection").attr("transform",e=>`translate(${e.x0},${e.y0})`);W.append("rect").attr("width",e=>e.x1-e.x0).attr("height",X).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",e=>e.depth===0?"display: none;":""),W.append("clipPath").attr("id",(e,o)=>`clip-section-${a}-${o}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-12)).attr("height",X),W.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class",(e,o)=>`treemapSection section${o}`).attr("fill",e=>m(e.data.name)).attr("fill-opacity",.6).attr("stroke",e=>M(e.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",e=>{if(e.depth===0)return"display: none;";const o=P({cssCompiledStyles:e.data.cssCompiledStyles});return o.nodeStyles+";"+o.borderStyles.join(";")}),W.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",X/2).attr("dominant-baseline","middle").text(e=>e.depth===0?"":e.data.name).attr("font-weight","bold").attr("style",e=>{if(e.depth===0)return"display: none;";const o="dominant-baseline: middle; font-size: 12px; fill:"+N(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",f=P({cssCompiledStyles:e.data.cssCompiledStyles});return o+f.labelStyles.replace("color:","fill:")}).each(function(e){if(e.depth===0)return;const o=j(this),f=e.data.name;o.text(f);const C=e.x1-e.x0,L=6;let $;s.showValues!==!1&&e.value?$=C-10-30-10-L:$=C-L-6;const A=Math.max(15,$),y=o.node();if(y.getComputedTextLength()>A){let T=f;for(;T.length>0;){if(T=f.substring(0,T.length-1),T.length===0){o.text("..."),y.getComputedTextLength()>A&&o.text("");break}if(o.text(T+"..."),y.getComputedTextLength()<=A)break}}}),s.showValues!==!1&&W.append("text").attr("class","treemapSectionValue").attr("x",e=>e.x1-e.x0-10).attr("y",X/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(e=>e.value?p(e.value):"").attr("font-style","italic").attr("style",e=>{if(e.depth===0)return"display: none;";const o="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+N(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",f=P({cssCompiledStyles:e.data.cssCompiledStyles});return o+f.labelStyles.replace("color:","fill:")});const ie=ae.leaves(),Y=z.selectAll(".treemapLeafGroup").data(ie).enter().append("g").attr("class",(e,o)=>`treemapNode treemapLeafGroup leaf${o}${e.data.classSelector?` ${e.data.classSelector}`:""}x`).attr("transform",e=>`translate(${e.x0},${e.y0})`);Y.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class","treemapLeaf").attr("fill",e=>e.parent?m(e.parent.data.name):m(e.data.name)).attr("style",e=>P({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",e=>e.parent?m(e.parent.data.name):m(e.data.name)).attr("stroke-width",3),Y.append("clipPath").attr("id",(e,o)=>`clip-${a}-${o}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-4)).attr("height",e=>Math.max(0,e.y1-e.y0-4)),Y.append("text").attr("class","treemapLabel").attr("x",e=>(e.x1-e.x0)/2).attr("y",e=>(e.y1-e.y0)/2).attr("style",e=>{const o="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+N(e.data.name)+";",f=P({cssCompiledStyles:e.data.cssCompiledStyles});return o+f.labelStyles.replace("color:","fill:")}).attr("clip-path",(e,o)=>`url(#clip-${a}-${o})`).text(e=>e.data.name).each(function(e){const o=j(this),f=e.x1-e.x0,C=e.y1-e.y0,L=o.node(),$=4,D=f-2*$,A=C-2*$;if(D<10||A<10){o.style("display","none");return}let y=parseInt(o.style("font-size"),10);const _=8,F=28,T=.6,k=6,H=2;for(;L.getComputedTextLength()>D&&y>_;)y--,o.style("font-size",`${y}px`);let I=Math.max(k,Math.min(F,Math.round(y*T))),Z=y+H+I;for(;Z>A&&y>_&&(y--,I=Math.max(k,Math.min(F,Math.round(y*T))),!(I<k&&y===_));)o.style("font-size",`${y}px`),Z=y+H+I;o.style("font-size",`${y}px`),(L.getComputedTextLength()>D||y<_||A<y)&&o.style("display","none")}),s.showValues!==!1&&Y.append("text").attr("class","treemapValue").attr("x",o=>(o.x1-o.x0)/2).attr("y",function(o){return(o.y1-o.y0)/2}).attr("style",o=>{const f="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+N(o.data.name)+";",C=P({cssCompiledStyles:o.data.cssCompiledStyles});return f+C.labelStyles.replace("color:","fill:")}).attr("clip-path",(o,f)=>`url(#clip-${a}-${f})`).text(o=>o.value?p(o.value):"").each(function(o){const f=j(this),C=this.parentNode;if(!C){f.style("display","none");return}const L=j(C).select(".treemapLabel");if(L.empty()||L.style("display")==="none"){f.style("display","none");return}const $=parseFloat(L.style("font-size")),D=28,A=.6,y=6,_=2,F=Math.max(y,Math.min(D,Math.round($*A)));f.style("font-size",`${F}px`);const k=(o.y1-o.y0)/2+$/2+_;f.attr("y",k);const H=o.x1-o.x0,ce=o.y1-o.y0-4,de=H-8;f.node().getComputedTextLength()>de||k+F>ce||F<y?f.style("display","none"):f.style("display",null)});const oe=s.diagramPadding??8;Ce(b,oe,"flowchart",(s==null?void 0:s.useMaxWidth)||!1)},"draw"),lt=w(function(t,a){return a.db.getClasses()},"getClasses"),rt={draw:nt,getClasses:lt},st={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},it=w(({treemap:t}={})=>{const a=he(),l=ee(),n=K(a,l.themeVariables),r=K(st,t),s=r.titleColor??n.titleColor,d=r.labelColor??n.textColor,h=r.valueColor??n.textColor;return`
2
- .treemapNode.section {
3
- stroke: ${r.sectionStrokeColor};
4
- stroke-width: ${r.sectionStrokeWidth};
5
- fill: ${r.sectionFillColor};
6
- }
7
- .treemapNode.leaf {
8
- stroke: ${r.leafStrokeColor};
9
- stroke-width: ${r.leafStrokeWidth};
10
- fill: ${r.leafFillColor};
11
- }
12
- .treemapLabel {
13
- fill: ${d};
14
- font-size: ${r.labelFontSize};
15
- }
16
- .treemapValue {
17
- fill: ${h};
18
- font-size: ${r.valueFontSize};
19
- }
20
- .treemapTitle {
21
- fill: ${s};
22
- font-size: ${r.titleFontSize};
23
- }
24
- `},"getStyles"),ot=it,xt={parser:re,get db(){return new ne},renderer:rt,styles:ot};export{xt as diagram};