3 lines
5.8 KiB
JavaScript
3 lines
5.8 KiB
JavaScript
import{c as t}from"./chunk-4KE642ED-DMtXVwOD.js";import{p as e}from"./treemap-75Q7IDZK-HKTH2UG6-CtK1P-cI.js";import{m as a,Z as r,K as n,J as i,Q as s,j as l,X as o,a6 as c,l as d,L as g,O as p,u as h,t as u,ac as x}from"./index-Bd_j0xvv.js";import"./chunk-5ZJXQJOJ-BQpwB-Bn.js";var m={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},$={axes:[],curves:[],options:m},f=structuredClone($),y=h.radar,v=a(()=>g({...y,...p().radar}),"getConfig"),w=a(()=>f.axes,"getAxes"),b=a(()=>f.curves,"getCurves"),C=a(()=>f.options,"getOptions"),M=a(t=>{f.axes=t.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),L=a(t=>{f.curves=t.map(t=>({name:t.name,label:t.label??t.name,entries:T(t.entries)}))},"setCurves"),T=a(t=>{if(null==t[0].axis)return t.map(t=>t.value);let e=w();if(0===e.length)throw new Error("Axes must be populated before curves for reference entries");return e.map(e=>{let a=t.find(t=>t.axis?.$refText===e.name);if(void 0===a)throw new Error("Missing entry for axis "+e.label);return a.value})},"computeCurveEntries"),k=a(t=>{let e=t.reduce((t,e)=>(t[e.name]=e,t),{});f.options={showLegend:e.showLegend?.value??m.showLegend,ticks:e.ticks?.value??m.ticks,max:e.max?.value??m.max,min:e.min?.value??m.min,graticule:e.graticule?.value??m.graticule}},"setOptions"),A=a(()=>{d(),f=structuredClone($)},"clear"),O={getAxes:w,getCurves:b,getOptions:C,setAxes:M,setCurves:L,setOptions:k,getConfig:v,clear:A,setAccTitle:o,getAccTitle:l,setDiagramTitle:s,getDiagramTitle:i,getAccDescription:n,setAccDescription:r},S=a(e=>{t(e,O);let{axes:a,curves:r,options:n}=e;O.setAxes(a),O.setCurves(r),O.setOptions(n)},"populate"),I={parse:a(async t=>{let a=await e("radar",t);u.debug(a),S(a)},"parse")},E=a((t,e,a,r)=>{let n=r.db,i=n.getAxes(),s=n.getCurves(),l=n.getOptions(),o=n.getConfig(),d=n.getDiagramTitle(),g=c(e),p=j(g,o),h=l.max??Math.max(...s.map(t=>Math.max(...t.entries))),u=l.min,x=Math.min(o.width,o.height)/2;D(p,i,x,l.ticks,l.graticule),F(p,i,x,o),z(p,i,s,u,h,l.graticule,o),G(p,s,l.showLegend,o),p.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-o.height/2-o.marginTop)},"draw"),j=a((t,e)=>{let a=e.width+e.marginLeft+e.marginRight,r=e.height+e.marginTop+e.marginBottom,n=e.marginLeft+e.width/2,i=e.marginTop+e.height/2;return t.attr("viewbox",`0 0 ${a} ${r}`).attr("width",a).attr("height",r),t.append("g").attr("transform",`translate(${n}, ${i})`)},"drawFrame"),D=a((t,e,a,r,n)=>{if("circle"===n)for(let e=0;e<r;e++){let n=a*(e+1)/r;t.append("circle").attr("r",n).attr("class","radarGraticule")}else if("polygon"===n){let n=e.length;for(let i=0;i<r;i++){let s=a*(i+1)/r,l=e.map((t,e)=>{let a=2*e*Math.PI/n-Math.PI/2;return`${s*Math.cos(a)},${s*Math.sin(a)}`}).join(" ");t.append("polygon").attr("points",l).attr("class","radarGraticule")}}},"drawGraticule"),F=a((t,e,a,r)=>{let n=e.length;for(let i=0;i<n;i++){let s=e[i].label,l=2*i*Math.PI/n-Math.PI/2;t.append("line").attr("x1",0).attr("y1",0).attr("x2",a*r.axisScaleFactor*Math.cos(l)).attr("y2",a*r.axisScaleFactor*Math.sin(l)).attr("class","radarAxisLine"),t.append("text").text(s).attr("x",a*r.axisLabelFactor*Math.cos(l)).attr("y",a*r.axisLabelFactor*Math.sin(l)).attr("class","radarAxisLabel")}},"drawAxes");function z(t,e,a,r,n,i,s){let l=e.length,o=Math.min(s.width,s.height)/2;a.forEach((e,a)=>{if(e.entries.length!==l)return;let c=e.entries.map((t,e)=>{let a=2*Math.PI*e/l-Math.PI/2,i=P(t,r,n,o);return{x:i*Math.cos(a),y:i*Math.sin(a)}});"circle"===i?t.append("path").attr("d",R(c,s.curveTension)).attr("class",`radarCurve-${a}`):"polygon"===i&&t.append("polygon").attr("points",c.map(t=>`${t.x},${t.y}`).join(" ")).attr("class",`radarCurve-${a}`)})}function P(t,e,a,r){return r*(Math.min(Math.max(t,e),a)-e)/(a-e)}function R(t,e){let a=t.length,r=`M${t[0].x},${t[0].y}`;for(let n=0;n<a;n++){let i=t[(n-1+a)%a],s=t[n],l=t[(n+1)%a],o=t[(n+2)%a],c={x:s.x+(l.x-i.x)*e,y:s.y+(l.y-i.y)*e},d={x:l.x-(o.x-s.x)*e,y:l.y-(o.y-s.y)*e};r+=` C${c.x},${c.y} ${d.x},${d.y} ${l.x},${l.y}`}return`${r} Z`}function G(t,e,a,r){if(!a)return;let n=3*(r.width/2+r.marginRight)/4,i=3*-(r.height/2+r.marginTop)/4;e.forEach((e,a)=>{let r=t.append("g").attr("transform",`translate(${n}, ${i+20*a})`);r.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${a}`),r.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(e.label)})}a(z,"drawCurves"),a(P,"relativeRadius"),a(R,"closedRoundCurve"),a(G,"drawLegend");var J={draw:E},K=a((t,e)=>{let a="";for(let r=0;r<t.THEME_COLOR_LIMIT;r++){let n=t[`cScale${r}`];a+=`\n\t\t.radarCurve-${r} {\n\t\t\tcolor: ${n};\n\t\t\tfill: ${n};\n\t\t\tfill-opacity: ${e.curveOpacity};\n\t\t\tstroke: ${n};\n\t\t\tstroke-width: ${e.curveStrokeWidth};\n\t\t}\n\t\t.radarLegendBox-${r} {\n\t\t\tfill: ${n};\n\t\t\tfill-opacity: ${e.curveOpacity};\n\t\t\tstroke: ${n};\n\t\t}\n\t\t`}return a},"genIndexStyles"),Z=a(t=>{let e=x(),a=p(),r=g(e,a.themeVariables);return{themeVariables:r,radarOptions:g(r.radar,t)}},"buildRadarStyleOptions"),B=a(({radar:t}={})=>{let{themeVariables:e,radarOptions:a}=Z(t);return`\n\t.radarTitle {\n\t\tfont-size: ${e.fontSize};\n\t\tcolor: ${e.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${a.axisColor};\n\t\tstroke-width: ${a.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${a.axisLabelFontSize}px;\n\t\tcolor: ${a.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${a.graticuleColor};\n\t\tfill-opacity: ${a.graticuleOpacity};\n\t\tstroke: ${a.graticuleColor};\n\t\tstroke-width: ${a.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${a.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${K(e,a)}\n\t`},"styles"),H={parser:I,db:O,renderer:J,styles:B};export{H as diagram};
|
|
//# sourceMappingURL=diagram-Z5LGQPMA-BIE2wWFE.js.map
|