3 lines
10 KiB
JavaScript
3 lines
10 KiB
JavaScript
import{c as e}from"./chunk-4KE642ED-DMtXVwOD.js";import{p as t}from"./treemap-75Q7IDZK-HKTH2UG6-CtK1P-cI.js";import{m as a,L as l,O as s,a6 as r,Y as n,aI as i,t as o,aa as c,aJ as d,aK as p,aL as h,k as m,X as y,j as f,Q as u,J as S,K as g,Z as x,u as b,aM as C,l as v}from"./index-Bd_j0xvv.js";import{y as $}from"./chunk-E7D3ZFYC-CrE9rg3e.js";import"./chunk-5ZJXQJOJ-BQpwB-Bn.js";var w=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=y,this.getAccTitle=f,this.setDiagramTitle=u,this.getDiagramTitle=S,this.getAccDescription=g,this.setAccDescription=x}static{a(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let e=b,t=s();return l({...e.treemap,...t.treemap??{}})}addNode(e,t){this.nodes.push(e),this.levels.set(e,t),0===t&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,t){let a=this.classes.get(e)??{id:e,styles:[],textStyles:[]},l=t.replace(/\\,/g,"§§§").replace(/,/g,";").replace(/§§§/g,",").split(";");l&&l.forEach(e=>{C(e)&&(a?.textStyles?a.textStyles.push(e):a.textStyles=[e]),a?.styles?a.styles.push(e):a.styles=[e]}),this.classes.set(e,a)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){v(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function L(e){if(!e.length)return[];let t=[],a=[];return e.forEach(e=>{let l={name:e.name,children:"Leaf"===e.type?void 0:[]};for(l.classSelector=e?.classSelector,e?.cssCompiledStyles&&(l.cssCompiledStyles=[e.cssCompiledStyles]),"Leaf"===e.type&&void 0!==e.value&&(l.value=e.value);a.length>0&&a[a.length-1].level>=e.level;)a.pop();if(0===a.length)t.push(l);else{let e=a[a.length-1].node;e.children?e.children.push(l):e.children=[l]}"Leaf"!==e.type&&a.push({node:l,level:e.level})}),t}a(L,"buildHierarchy");var k=a((t,l)=>{e(t,l);let s=[];for(let e of t.TreemapRows??[])"ClassDefStatement"===e.$type&&l.addClass(e.className??"",e.styleText??"");for(let e of t.TreemapRows??[]){let t=e.item;if(!t)continue;let a=e.indent?parseInt(e.indent):0,r=T(t),n=t.classSelector?l.getStylesForClass(t.classSelector):[],i=n.length>0?n.join(";"):void 0,o={level:a,name:r,type:t.$type,value:t.value,classSelector:t.classSelector,cssCompiledStyles:i};s.push(o)}let r=L(s),n=a((e,t)=>{for(let a of e)l.addNode(a,t),a.children&&a.children.length>0&&n(a.children,t+1)},"addNodesRecursively");n(r,0)},"populate"),T=a(e=>e.name?String(e.name):"","getItemName"),M={parser:{yy:void 0},parse:a(async e=>{try{let a=await t("treemap",e);o.debug("Treemap AST:",a);let l=M.parser?.yy;if(!(l instanceof w))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.");k(a,l)}catch(e){throw o.error("Error parsing treemap:",e),e}},"parse")},z=10,F=a((e,t,l,y)=>{let f=y.db,u=f.getConfig(),S=u.padding??10,g=f.getDiagramTitle(),x=f.getRoot(),{themeVariables:b}=s();if(!x)return;let C,v=g?30:0,w=r(t),L=u.nodeWidth?u.nodeWidth*z:960,k=u.nodeHeight?u.nodeHeight*z:500,T=L,M=k+v;w.attr("viewBox",`0 0 ${T} ${M}`),n(w,M,T,u.useMaxWidth);try{let e=u.valueFormat||",";if("$0,0"===e)C=a(e=>"$"+i(",")(e),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){let t=/\.\d+/.exec(e),l=t?t[0]:"";C=a(e=>"$"+i(","+l)(e),"valueFormat")}else if(e.startsWith("$")){let t=e.substring(1);C=a(e=>"$"+i(t||"")(e),"valueFormat")}else C=i(e)}catch(e){o.error("Error creating format function:",e),C=i(",")}let F=c().range(["transparent",b.cScale0,b.cScale1,b.cScale2,b.cScale3,b.cScale4,b.cScale5,b.cScale6,b.cScale7,b.cScale8,b.cScale9,b.cScale10,b.cScale11]),P=c().range(["transparent",b.cScalePeer0,b.cScalePeer1,b.cScalePeer2,b.cScalePeer3,b.cScalePeer4,b.cScalePeer5,b.cScalePeer6,b.cScalePeer7,b.cScalePeer8,b.cScalePeer9,b.cScalePeer10,b.cScalePeer11]),N=c().range([b.cScaleLabel0,b.cScaleLabel1,b.cScaleLabel2,b.cScaleLabel3,b.cScaleLabel4,b.cScaleLabel5,b.cScaleLabel6,b.cScaleLabel7,b.cScaleLabel8,b.cScaleLabel9,b.cScaleLabel10,b.cScaleLabel11]);g&&w.append("text").attr("x",T/2).attr("y",v/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(g);let D=w.append("g").attr("transform",`translate(0, ${v})`).attr("class","treemapContainer"),W=d(x).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),j=p().size([L,k]).paddingTop(e=>e.children&&e.children.length>0?35:0).paddingInner(S).paddingLeft(e=>e.children&&e.children.length>0?z:0).paddingRight(e=>e.children&&e.children.length>0?z:0).paddingBottom(e=>e.children&&e.children.length>0?z:0).round(!0)(W),E=j.descendants().filter(e=>e.children&&e.children.length>0),A=D.selectAll(".treemapSection").data(E).enter().append("g").attr("class","treemapSection").attr("transform",e=>`translate(${e.x0},${e.y0})`);A.append("rect").attr("width",e=>e.x1-e.x0).attr("height",25).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",e=>0===e.depth?"display: none;":""),A.append("clipPath").attr("id",(e,a)=>`clip-section-${t}-${a}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-12)).attr("height",25),A.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=>F(e.data.name)).attr("fill-opacity",.6).attr("stroke",e=>P(e.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",e=>{if(0===e.depth)return"display: none;";let t=h({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+";"+t.borderStyles.join(";")}),A.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",12.5).attr("dominant-baseline","middle").text(e=>0===e.depth?"":e.data.name).attr("font-weight","bold").attr("style",e=>{if(0===e.depth)return"display: none;";return"dominant-baseline: middle; font-size: 12px; fill:"+N(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+h({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")}).each(function(e){if(0===e.depth)return;let t=m(this),a=e.data.name;t.text(a);let l,s=e.x1-e.x0;l=!1!==u.showValues&&e.value?s-10-30-10-6:s-6-6;let r=Math.max(15,l),n=t.node();if(n.getComputedTextLength()>r){let e="...",l=a;for(;l.length>0;){if(l=a.substring(0,l.length-1),0===l.length){t.text(e),n.getComputedTextLength()>r&&t.text("");break}if(t.text(l+e),n.getComputedTextLength()<=r)break}}}),!1!==u.showValues&&A.append("text").attr("class","treemapSectionValue").attr("x",e=>e.x1-e.x0-10).attr("y",12.5).attr("text-anchor","end").attr("dominant-baseline","middle").text(e=>e.value?C(e.value):"").attr("font-style","italic").attr("style",e=>{if(0===e.depth)return"display: none;";return"text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+N(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+h({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")});let V=j.leaves(),H=D.selectAll(".treemapLeafGroup").data(V).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})`);H.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class","treemapLeaf").attr("fill",e=>e.parent?F(e.parent.data.name):F(e.data.name)).attr("style",e=>h({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",e=>e.parent?F(e.parent.data.name):F(e.data.name)).attr("stroke-width",3),H.append("clipPath").attr("id",(e,a)=>`clip-${t}-${a}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-4)).attr("height",e=>Math.max(0,e.y1-e.y0-4)),H.append("text").attr("class","treemapLabel").attr("x",e=>(e.x1-e.x0)/2).attr("y",e=>(e.y1-e.y0)/2).attr("style",e=>"text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+N(e.data.name)+";"+h({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(e,a)=>`url(#clip-${t}-${a})`).text(e=>e.data.name).each(function(e){let t=m(this),a=e.x1-e.x0,l=e.y1-e.y0,s=t.node(),r=a-8,n=l-8;if(r<10||n<10)return void t.style("display","none");let i=parseInt(t.style("font-size"),10);for(;s.getComputedTextLength()>r&&i>8;)i--,t.style("font-size",`${i}px`);let o=Math.max(6,Math.min(28,Math.round(.6*i))),c=i+2+o;for(;c>n&&i>8&&(i--,o=Math.max(6,Math.min(28,Math.round(.6*i))),!(o<6&&8===i));)t.style("font-size",`${i}px`),c=i+2+o;t.style("font-size",`${i}px`),(s.getComputedTextLength()>r||i<8||n<i)&&t.style("display","none")}),!1!==u.showValues&&H.append("text").attr("class","treemapValue").attr("x",e=>(e.x1-e.x0)/2).attr("y",function(e){return(e.y1-e.y0)/2}).attr("style",e=>"text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+N(e.data.name)+";"+h({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(e,a)=>`url(#clip-${t}-${a})`).text(e=>e.value?C(e.value):"").each(function(e){let t=m(this),a=this.parentNode;if(!a)return void t.style("display","none");let l=m(a).select(".treemapLabel");if(l.empty()||"none"===l.style("display"))return void t.style("display","none");let s=parseFloat(l.style("font-size")),r=Math.max(6,Math.min(28,Math.round(.6*s)));t.style("font-size",`${r}px`);let n=(e.y1-e.y0)/2+s/2+2;t.attr("y",n);let i=e.x1-e.x0,o=e.y1-e.y0-4,c=i-8;t.node().getComputedTextLength()>c||n+r>o||r<6?t.style("display","none"):t.style("display",null)});let I=u.diagramPadding??8;$(w,I,"flowchart",u?.useMaxWidth||!1)},"draw"),P={draw:F,getClasses:a(function(e,t){return t.db.getClasses()},"getClasses")},N={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},D=a(({treemap:e}={})=>{let t=l(N,e);return`\n .treemapNode.section {\n stroke: ${t.sectionStrokeColor};\n stroke-width: ${t.sectionStrokeWidth};\n fill: ${t.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${t.leafStrokeColor};\n stroke-width: ${t.leafStrokeWidth};\n fill: ${t.leafFillColor};\n }\n .treemapLabel {\n fill: ${t.labelColor};\n font-size: ${t.labelFontSize};\n }\n .treemapValue {\n fill: ${t.valueColor};\n font-size: ${t.valueFontSize};\n }\n .treemapTitle {\n fill: ${t.titleColor};\n font-size: ${t.titleFontSize};\n }\n `},"getStyles"),W={parser:M,get db(){return new w},renderer:P,styles:D};export{W as diagram};
|
|
//# sourceMappingURL=diagram-HJ6MONWM-DGmX6HOo.js.map
|