24 lines
11 KiB
JavaScript
Generated
24 lines
11 KiB
JavaScript
Generated
import{s as re}from"./chunk-SKB7J2MH-CncvyOyo.js";import{_ as p,s as ne,g as oe,t as ce,q as ie,a as de,b as pe,F as K,G as U,K as he,e as me,ai as W,l as G,O as B,aj as ue,ak as fe,al as L,d as H,am as ge,z as ye,H as Se}from"./mermaid-vendor-DOoA-Fcm.js";import{p as xe}from"./chunk-353BL4L5-Dc2iugoC.js";import{I as be}from"./chunk-AACKK3MU-Bulquadc.js";import{p as ve}from"./treemap-6Y5VK53G-DD2bKuQl.js";import"./feature-graph-D68hhnYC.js";import"./react-vendor-CgPb4pW_.js";import"./graph-vendor-BC3frDkq.js";import"./ui-vendor-DaJTMqwy.js";import"./utils-vendor-elCzPYZl.js";import"./_baseUniq-DHoNBBvA.js";import"./_basePickBy-enj1kD1i.js";import"./clone-DMtoZDWc.js";var Ce={nodes:[],levels:new Map,outerNodes:[],classes:new Map},C=new be(()=>structuredClone(Ce)),we=p(()=>{const n=Se,a=U();return K({...n.treemap,...a.treemap??{}})},"getConfig"),Le=p(()=>C.records.nodes,"getNodes"),$e=p((n,a)=>{const c=C.records;c.nodes.push(n),c.levels.set(n,a),a===0&&c.outerNodes.push(n),a===0&&!c.root&&(c.root=n)},"addNode"),Te=p(()=>({name:"",children:C.records.outerNodes}),"getRoot"),Fe=p((n,a)=>{const c=C.records.classes,r=c.get(n)??{id:n,styles:[],textStyles:[]};c.set(n,r);const i=a.replace(/\\,/g,"§§§").replace(/,/g,";").replace(/§§§/g,",").split(";");i&&i.forEach(s=>{ge(s)&&(r!=null&&r.textStyles?r.textStyles.push(s):r.textStyles=[s]),r!=null&&r.styles?r.styles.push(s):r.styles=[s]}),c.set(n,r)},"addClass"),ze=p(()=>C.records.classes,"getClasses"),Ne=p(n=>{var a;return((a=C.records.classes.get(n))==null?void 0:a.styles)??[]},"getStylesForClass"),ke=p(()=>{ye(),C.reset()},"clear"),D={getNodes:Le,addNode:$e,getRoot:Te,getConfig:we,clear:ke,setAccTitle:pe,getAccTitle:de,setDiagramTitle:ie,getDiagramTitle:ce,getAccDescription:oe,setAccDescription:ne,addClass:Fe,getClasses:ze,getStylesForClass:Ne};function J(n){if(!n.length)return[];const a=[],c=[];return n.forEach(r=>{const i={name:r.name,children:r.type==="Leaf"?void 0:[]};for(i.classSelector=r==null?void 0:r.classSelector,r!=null&&r.cssCompiledStyles&&(i.cssCompiledStyles=[r.cssCompiledStyles]),r.type==="Leaf"&&r.value!==void 0&&(i.value=r.value);c.length>0&&c[c.length-1].level>=r.level;)c.pop();if(c.length===0)a.push(i);else{const s=c[c.length-1].node;s.children?s.children.push(i):s.children=[i]}r.type!=="Leaf"&&c.push({node:i,level:r.level})}),a}p(J,"buildHierarchy");var Pe=p(n=>{xe(n,D);const a=[];for(const i of n.TreemapRows??[])i.$type==="ClassDefStatement"&&D.addClass(i.className??"",i.styleText??"");for(const i of n.TreemapRows??[]){const s=i.item;if(!s)continue;const S=i.indent?parseInt(i.indent):0,T=Ae(s),F=s.classSelector?D.getStylesForClass(s.classSelector):[],l=F.length>0?F.join(";"):void 0,z={level:S,name:T,type:s.$type,value:s.value,classSelector:s.classSelector,cssCompiledStyles:l};a.push(z)}const c=J(a),r=p((i,s)=>{for(const S of i)D.addNode(S,s),S.children&&S.children.length>0&&r(S.children,s+1)},"addNodesRecursively");r(c,0)},"populate"),Ae=p(n=>n.name?String(n.name):"","getItemName"),Ve={parse:p(async n=>{try{const c=await ve("treemap",n);G.debug("Treemap AST:",c),Pe(c)}catch(a){throw G.error("Error parsing treemap:",a),a}},"parse")},We=10,$=10,M=25,Me=p((n,a,c,r)=>{const i=r.db,s=i.getConfig(),S=s.padding??We,T=i.getDiagramTitle(),F=i.getRoot(),{themeVariables:l}=U();if(!F)return;const z=T?30:0,N=he(a),O=s.nodeWidth?s.nodeWidth*$:960,X=s.nodeHeight?s.nodeHeight*$:500,R=O,Y=X+z;N.attr("viewBox",`0 0 ${R} ${Y}`),me(N,Y,R,s.useMaxWidth);let x;try{const e=s.valueFormat||",";if(e==="$0,0")x=p(t=>"$"+W(",")(t),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){const t=/\.\d+/.exec(e),o=t?t[0]:"";x=p(h=>"$"+W(","+o)(h),"valueFormat")}else if(e.startsWith("$")){const t=e.substring(1);x=p(o=>"$"+W(t||"")(o),"valueFormat")}else x=W(e)}catch(e){G.error("Error creating format function:",e),x=W(",")}const k=B().range(["transparent",l.cScale0,l.cScale1,l.cScale2,l.cScale3,l.cScale4,l.cScale5,l.cScale6,l.cScale7,l.cScale8,l.cScale9,l.cScale10,l.cScale11]),Q=B().range(["transparent",l.cScalePeer0,l.cScalePeer1,l.cScalePeer2,l.cScalePeer3,l.cScalePeer4,l.cScalePeer5,l.cScalePeer6,l.cScalePeer7,l.cScalePeer8,l.cScalePeer9,l.cScalePeer10,l.cScalePeer11]),E=B().range([l.cScaleLabel0,l.cScaleLabel1,l.cScaleLabel2,l.cScaleLabel3,l.cScaleLabel4,l.cScaleLabel5,l.cScaleLabel6,l.cScaleLabel7,l.cScaleLabel8,l.cScaleLabel9,l.cScaleLabel10,l.cScaleLabel11]);T&&N.append("text").attr("x",R/2).attr("y",z/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(T);const j=N.append("g").attr("transform",`translate(0, ${z})`).attr("class","treemapContainer"),Z=ue(F).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),q=fe().size([O,X]).paddingTop(e=>e.children&&e.children.length>0?M+$:0).paddingInner(S).paddingLeft(e=>e.children&&e.children.length>0?$:0).paddingRight(e=>e.children&&e.children.length>0?$:0).paddingBottom(e=>e.children&&e.children.length>0?$:0).round(!0)(Z),ee=q.descendants().filter(e=>e.children&&e.children.length>0),P=j.selectAll(".treemapSection").data(ee).enter().append("g").attr("class","treemapSection").attr("transform",e=>`translate(${e.x0},${e.y0})`);P.append("rect").attr("width",e=>e.x1-e.x0).attr("height",M).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",e=>e.depth===0?"display: none;":""),P.append("clipPath").attr("id",(e,t)=>`clip-section-${a}-${t}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-12)).attr("height",M),P.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class",(e,t)=>`treemapSection section${t}`).attr("fill",e=>k(e.data.name)).attr("fill-opacity",.6).attr("stroke",e=>Q(e.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",e=>{if(e.depth===0)return"display: none;";const t=L({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+";"+t.borderStyles.join(";")}),P.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",M/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 t="dominant-baseline: middle; font-size: 12px; fill:"+E(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",o=L({cssCompiledStyles:e.data.cssCompiledStyles});return t+o.labelStyles.replace("color:","fill:")}).each(function(e){if(e.depth===0)return;const t=H(this),o=e.data.name;t.text(o);const h=e.x1-e.x0,f=6;let g;s.showValues!==!1&&e.value?g=h-10-30-10-f:g=h-f-6;const y=Math.max(15,g),d=t.node();if(d.getComputedTextLength()>y){const m="...";let u=o;for(;u.length>0;){if(u=o.substring(0,u.length-1),u.length===0){t.text(m),d.getComputedTextLength()>y&&t.text("");break}if(t.text(u+m),d.getComputedTextLength()<=y)break}}}),s.showValues!==!1&&P.append("text").attr("class","treemapSectionValue").attr("x",e=>e.x1-e.x0-10).attr("y",M/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(e=>e.value?x(e.value):"").attr("font-style","italic").attr("style",e=>{if(e.depth===0)return"display: none;";const t="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+E(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",o=L({cssCompiledStyles:e.data.cssCompiledStyles});return t+o.labelStyles.replace("color:","fill:")});const te=q.leaves(),_=j.selectAll(".treemapLeafGroup").data(te).enter().append("g").attr("class",(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:""}x`).attr("transform",e=>`translate(${e.x0},${e.y0})`);_.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class","treemapLeaf").attr("fill",e=>e.parent?k(e.parent.data.name):k(e.data.name)).attr("style",e=>L({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",e=>e.parent?k(e.parent.data.name):k(e.data.name)).attr("stroke-width",3),_.append("clipPath").attr("id",(e,t)=>`clip-${a}-${t}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-4)).attr("height",e=>Math.max(0,e.y1-e.y0-4)),_.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 t="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+E(e.data.name)+";",o=L({cssCompiledStyles:e.data.cssCompiledStyles});return t+o.labelStyles.replace("color:","fill:")}).attr("clip-path",(e,t)=>`url(#clip-${a}-${t})`).text(e=>e.data.name).each(function(e){const t=H(this),o=e.x1-e.x0,h=e.y1-e.y0,f=t.node(),g=4,w=o-2*g,y=h-2*g;if(w<10||y<10){t.style("display","none");return}let d=parseInt(t.style("font-size"),10);const b=8,m=28,u=.6,v=6,A=2;for(;f.getComputedTextLength()>w&&d>b;)d--,t.style("font-size",`${d}px`);let V=Math.max(v,Math.min(m,Math.round(d*u))),I=d+A+V;for(;I>y&&d>b&&(d--,V=Math.max(v,Math.min(m,Math.round(d*u))),!(V<v&&d===b));)t.style("font-size",`${d}px`),I=d+A+V;t.style("font-size",`${d}px`),(f.getComputedTextLength()>w||d<b||y<d)&&t.style("display","none")}),s.showValues!==!1&&_.append("text").attr("class","treemapValue").attr("x",t=>(t.x1-t.x0)/2).attr("y",function(t){return(t.y1-t.y0)/2}).attr("style",t=>{const o="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+E(t.data.name)+";",h=L({cssCompiledStyles:t.data.cssCompiledStyles});return o+h.labelStyles.replace("color:","fill:")}).attr("clip-path",(t,o)=>`url(#clip-${a}-${o})`).text(t=>t.value?x(t.value):"").each(function(t){const o=H(this),h=this.parentNode;if(!h){o.style("display","none");return}const f=H(h).select(".treemapLabel");if(f.empty()||f.style("display")==="none"){o.style("display","none");return}const g=parseFloat(f.style("font-size")),w=28,y=.6,d=6,b=2,m=Math.max(d,Math.min(w,Math.round(g*y)));o.style("font-size",`${m}px`);const v=(t.y1-t.y0)/2+g/2+b;o.attr("y",v);const A=t.x1-t.x0,le=t.y1-t.y0-4,se=A-2*4;o.node().getComputedTextLength()>se||v+m>le||m<d?o.style("display","none"):o.style("display",null)});const ae=s.diagramPadding??8;re(N,ae,"flowchart",(s==null?void 0:s.useMaxWidth)||!1)},"draw"),De=p(function(n,a){return a.db.getClasses()},"getClasses"),Ee={draw:Me,getClasses:De},_e={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},He=p(({treemap:n}={})=>{const a=K(_e,n);return`
|
|
.treemapNode.section {
|
|
stroke: ${a.sectionStrokeColor};
|
|
stroke-width: ${a.sectionStrokeWidth};
|
|
fill: ${a.sectionFillColor};
|
|
}
|
|
.treemapNode.leaf {
|
|
stroke: ${a.leafStrokeColor};
|
|
stroke-width: ${a.leafStrokeWidth};
|
|
fill: ${a.leafFillColor};
|
|
}
|
|
.treemapLabel {
|
|
fill: ${a.labelColor};
|
|
font-size: ${a.labelFontSize};
|
|
}
|
|
.treemapValue {
|
|
fill: ${a.valueColor};
|
|
font-size: ${a.valueFontSize};
|
|
}
|
|
.treemapTitle {
|
|
fill: ${a.titleColor};
|
|
font-size: ${a.titleFontSize};
|
|
}
|
|
`},"getStyles"),Re=He,at={parser:Ve,db:D,renderer:Ee,styles:Re};export{at as diagram};
|