@milaboratories/graph-maker 1.1.94 → 1.1.95
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.
- package/dist/graph-maker.js +9213 -9213
- package/dist/graph-maker.umd.cjs +1 -1
- package/package.json +2 -2
package/dist/graph-maker.umd.cjs
CHANGED
|
@@ -15187,7 +15187,7 @@ void main() {
|
|
|
15187
15187
|
${_.x+_.width/2},
|
|
15188
15188
|
${_.y+_.height/2})`,children:le.jsx("text",{transform:`rotate(${o.position==="left"?-90:90})`,dominantBaseline:"central",textAnchor:"middle",children:o.title})}),t&&le.jsx("rect",{x:_.x,y:_.y,width:_.width,height:_.height,stroke:Zt,fill:"none"}),k&&le.jsx("g",{fontSize:"14px",transform:`translate(${D.x},${D.y})`,children:r.map(O=>{let I=f.yAxisLabels!==0,$=o.position==="left",Q=-(90-f.yAxisLabels),q=f.yAxisLabels===0?"middle":$?"end":"start",re=I?"central":$?"auto":"hanging",ee=$?D.width:0,z=$?ee-g:ee+g,j=$?z-l2:z+l2,K=a.y(O)+c/2;return le.jsxs("g",{children:[le.jsx("line",{x1:ee,x2:z,y1:K,y2:K,stroke:Zt}),le.jsx("text",{x:j,y:K,textAnchor:q,transform:`rotate(${Q},${j},${K})`,dominantBaseline:re,children:h[O]})]},O)})}),t&&le.jsx("rect",{x:D.x,y:D.y,height:D.height,width:D.width,stroke:Zt,fill:"none"})]})]})}function fwt({sideElementBBoxes:e,debug:t,xKeys:n,yKeys:r,scales:a,xAxis:i,yAxis:o,stepX:s,stepY:c,xGroupKeys:f,yGroupKeys:A,xKeysByGroups:h,yKeysByGroups:m,labelAngles:g,xLabels:b,yLabels:C,xGroupLabels:x,yGroupLabels:k}){return le.jsxs("g",{fontWeight:"500",children:[le.jsx(cwt,{sideElementBBoxes:e,xKeys:n,yKeys:r,scales:a,xAxis:i,yAxis:o,stepX:s,stepY:c,labelAngles:g,xLabels:b,yLabels:C,debug:t}),le.jsx(uwt,{sideElementBBoxes:e,xGroupKeys:f,yGroupKeys:A,xKeysByGroups:h,yKeysByGroups:m,xGroupLabels:x,yGroupLabels:k,scales:a,stepX:s,stepY:c,xAxis:i,yAxis:o,labelAngles:g,debug:t})]})}function UK(e,t="top"){let{source:n,target:r}=e;return t==="top"||t==="bottom"?`M ${n.x},${n.y} L ${r.x},${n.y} L${r.x},${r.y}`:`M ${n.x},${n.y} L ${n.x},${r.y} L${r.x},${r.y}`}function jK(e,t,n,r,a){if(!n)return"";let i=n.aes[e];if(!d9(i))return i;let o=i.value,s=a[o],c=r[o][t.data.keys[0]];return t.data.keys.every(f=>c===r[o][f])?s(String(c))[e]:s.unknown()[e]}var GK={x:0,y:0,width:0,height:0};function dwt({dendrograms:e,sideElementBBoxes:t,xDataByKeys:n,yDataByKeys:r,aesScales:a}){let i=e.x.data,o=e.y.data,s=i?t[i.position].dendro:GK,c=o?t[o.position].dendro:GK;function f(h,m){return jK(h,m,i,n,a)}function A(h,m){return jK(h,m,o,r,a)}return le.jsxs("g",{children:[le.jsx("g",{transform:`translate(${s.x},${s.y})`,children:i&&!i.hidden&&e.x.trees.map((h,m)=>{let g=h.links(),b=h.descendants();return le.jsxs("g",{children:[g.map(C=>{let x=i.edgeInheritance==="up"?C.source:C.target;return le.jsx("path",{d:UK(C,i.position),stroke:f("lineColor",x),strokeWidth:f("lineWidth",x),strokeDasharray:td(f("lineShape",x)),fill:"none"},`${C.source.x},${C.source.y},${C.target.x},${C.target.y}`)}),i.showNodes&&b.map(C=>le.jsx("g",{transform:`translate(${C.x},${C.y})`,children:Af(f("dotShape",C),f("dotSize",C),f("dotFill",C))},`${C.x},${C.y}`))]},m)})}),le.jsx("g",{transform:`translate(${c.x},${c.y})`,children:o&&!o.hidden&&e.y.trees.map((h,m)=>{let g=h.links(),b=h.descendants();return le.jsxs("g",{children:[g.map(C=>{let x=o.edgeInheritance==="up"?C.source:C.target;return le.jsx("path",{d:UK(C,o.position),stroke:A("lineColor",x),strokeWidth:A("lineWidth",x),strokeDasharray:td(A("lineShape",x)),fill:"none"},`${C.source.x},${C.source.y},${C.target.x},${C.target.y}`)}),o.showNodes&&b.map(C=>le.jsx("g",{transform:`translate(${C.x},${C.y})`,children:Af(A("dotShape",C),A("dotSize",C),A("dotFill",C))},`${C.x},${C.y}`))]},m)})})]})}function Awt({frame:e,width:t,height:n,xGroupKeys:r,yGroupKeys:a,xKeysByGroups:i,yKeysByGroups:o,scales:s,stepX:c,stepY:f}){return le.jsxs("g",{children:[e.type==="full"&&le.jsx("rect",{fill:"none",stroke:Zt,x:"0",y:"0",width:t,height:n}),e.type==="groups"&&r.map(A=>{let h=i[A].length;if(h===0)return null;let m=h*c,g=s.x(i[A][0]);return a.map(b=>{let C=o[b].length;if(C===0)return null;let x=C*f,k=s.y(o[b][0]);return le.jsx("rect",{x:g,y:k,width:m,height:x,stroke:Zt,fill:"none"},`${g}_${k}`)})})]})}function IP(e){if(e===null)return"null";if(typeof e=="number"){let t=e>0?Math.floor(e):Math.ceil(e),n=e-t;return t+Number(n.toPrecision(2))}return e}function pwt(e,t,n=[]){let r=e.data,a=[`X: ${t.xLabels[e.x]}`,`Y: ${t.yLabels[e.y]}`,`Value: ${IP(e.value)}${e.value!==e.normalizedValue?` (${IP(e.normalizedValue)})`:""}`];for(let i of n)a.push(`${i.label}: ${r[i.valueLabels??i.value]}`);return a}function hwt(e,t){let n=[];return e.xKey&&n.push(`X: ${t.xLabels[e.xKey]}`),e.yKey&&n.push(`Y: ${t.yLabels[e.yKey]}`),n.push(`${e.title}: ${IP(e.value)}`),n}function mwt({dendrograms:e,facetKey:t,dimensions:n,scales:r,cells:a,xGroupKeys:i,yGroupKeys:o,xKeysByGroups:s,yKeysByGroups:c,colorScale:f,chartSettings:A,cellsMeta:h,stepX:m,stepY:g,sharedX:b,sharedY:C,annotations:x,annotationColorScales:k,dendrogramAesScales:_,aes:D,labelAngles:O,chartSizes:I,margins:$,tooltipsContainer:Q}){let[q,re]=Vn.useState(null),[ee,z]=Vn.useState(null),{xAxis:j,yAxis:K,tooltips:Y}=A,{width:X,height:oe}=n.inner,{padding:me,chartEdgeSides:ae,sideElementBBoxes:ye}=n,{xGroupLabels:Ce,yGroupLabels:ce,xLabels:ge,yLabels:ze}=h,Ne=r.x.domain(),Ge=r.y.domain(),Oe={left:$.left+n.left+me.left,right:I.totalWidth-($.left+n.left+me.left),top:$.top+n.top+me.top,bottom:I.totalHeight-($.top+n.top+me.top)},Xe=!1;return le.jsxs("g",{transform:`translate(${n.left},${n.top})`,fontSize:G2t,children:[le.jsxs("g",{transform:`translate(${me.left},${me.top})`,children:[le.jsx(swt,{sideElementBBoxes:ye,annotations:x,cellsMeta:h,annotationColorScales:k,sharedX:b,sharedY:C,chartEdgeSides:ae,width:X,height:oe,scales:r,stepX:m,stepY:g,aes:D,frame:A.frame,xGroupKeys:i,yGroupKeys:o,xKeysByGroups:s,yKeysByGroups:c,setSelectedAnnotation:z}),le.jsx(dwt,{dendrograms:e,sideElementBBoxes:ye,xDataByKeys:h.xDataByKeys,yDataByKeys:h.yDataByKeys,aesScales:_}),ye.top.facetTitle.isVisible&&le.jsx("text",{x:ye.top.facetTitle.x,y:ye.top.facetTitle.y+ye.top.facetTitle.height-j2t,fontWeight:"500",fontSize:"20px",children:h.facetKeyValues[t].join(", ")}),Xe,Ne.map(dt=>Ge.map(Ye=>{var He;let rt=(He=a==null?void 0:a[dt])==null?void 0:He[Ye];return rt?le.jsx("rect",{x:r.x(dt),y:r.y(Ye),width:m,height:g,stroke:D.cellStrokeColor,fill:rt.value===null?D.emptyCellColor:f(rt.normalizedValue),onMouseOver:()=>re(rt),onMouseLeave:()=>re(null)},rt?rt.id:`${dt}_${Ye}`):null})),le.jsx(Awt,{frame:A.frame,xGroupKeys:i,yGroupKeys:o,xKeysByGroups:s,yKeysByGroups:c,scales:r,stepX:m,stepY:g,width:X,height:oe}),le.jsx(fwt,{xAxis:j,yAxis:K,scales:r,stepX:m,stepY:g,debug:Xe,sideElementBBoxes:ye,xKeys:Ne,yKeys:Ge,xGroupKeys:i,yGroupKeys:o,xKeysByGroups:s,yKeysByGroups:c,xGroupLabels:Ce,yGroupLabels:ce,labelAngles:O,xLabels:ge,yLabels:ze})]}),A.tooltips.show&&q&&le.jsx(oc,{content:pwt(q,h,Y==null?void 0:Y.content),x:r.x(String(q.x))+m/2,y:r.y(String(q.y))+g/2,offset:Ne.length>1?m/2:0,active:!0,sideDistances:Oe,container:Q}),A.tooltips.show&&ee&&le.jsx(oc,{content:hwt(ee,h),x:ee.x,y:ee.y,offset:0,active:!0,sideDistances:Oe,container:Q})]})}function vwt({margins:e,captionsSizes:t,settingsId:n,chartSettings:r,chartSizes:a,chartsDimensions:i,facetKeys:o,facetSettings:s,xGroupKeys:c,yGroupKeys:f,scales:A,colorScale:h,groupedCells:m,cellsMeta:g,step:b,annotations:C,annotationColorScales:x,legend:k,aes:_,dendrograms:D,dendrogramAesScales:O,columnsCount:I,labelAngles:$}){let[Q,q]=Vn.useState(),re=Vn.useRef(null);Vn.useEffect(()=>{re.current&&q(re.current)},[]);let ee=i[o[0]].padding,z=i[o[I-1]].padding,j=e.left+a.chartsWidth+G8,K=e.top+ee.top;return le.jsx(f2,{dataId:n,children:le.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${a.totalWidth} ${a.totalHeight}`,width:a.totalWidth,height:a.totalHeight,fontFamily:"Manrope",children:[le.jsx("defs",{children:Tg}),le.jsxs("g",{transform:`translate(${e.left},${e.top})`,children:[le.jsx(d2,{title:[r.title.name],show:r.title.show,position:r.title.position,leftPadding:ee.left,rightPadding:z.right,chartsWidth:a.chartsWidth}),o.map(Y=>{let{cells:X,xKeysByGroups:oe,yKeysByGroups:me}=m[Y];return le.jsx(mwt,{dendrograms:D[Y],captionsSizes:t,facetKey:Y,dimensions:i[Y],xGroupKeys:c,yGroupKeys:f,xKeysByGroups:s.sharedX?g.xKeysByGroups:oe,yKeysByGroups:s.sharedY?g.yKeysByGroups:me,sharedX:s.sharedX,sharedY:s.sharedY,scales:{x:A.x[Y],y:A.y[Y]},cells:X,cellsMeta:g,stepX:b.x[Y],stepY:b.y[Y],colorScale:h,chartSettings:r,aes:_,annotations:C,annotationColorScales:x,dendrogramAesScales:O,labelAngles:$,margins:e,chartSizes:a,tooltipsContainer:Q},Y)})]}),le.jsx("g",{transform:`translate(${j},${K})`,children:le.jsx(w9,{legendData:k})}),le.jsx("g",{ref:re})]})})}function YK(e,t,n){function r(a){a[n]=t(a.data.height),a.children&&a.children.forEach(r)}r(e)}function WK(e,t,n,r=n){function a(i){i[r]=i[n]+t,i.children&&i.children.forEach(a)}a(e)}var gwt=(e,t)=>{let n=Math.min(...t),r=Math.max(...t);if(n===r){let o=e%2===0?[]:[n];for(let s=1;s<e/2+1;s++)o.push(n+s),o.unshift(n-s);return o}if(e<2)return[n,r];let a=(r-n)/(e-1),i=[];for(let o=0;o<e-1;o++)i.push(n+a*o);return i.push(r),i};function XK(e,t,n){let r=n;return e&&(e.colorRange&&(r=e.colorRange),e.method==="standardScaling"&&(r=[-2,2]),e.method==="meanNormalization"&&(r=[-.75,.75])),gwt(t,r)}var ywt=class{constructor(){Me(this,"reactRoot",null);Me(this,"parentNode",null);Me(this,"rootNode",null);Me(this,"component",le.jsx(le.Fragment,{}));Me(this,"chartsDimensions",{});Me(this,"chartSizes",{chartWidth:600,chartHeight:350,chartsWidth:600,chartsHeight:350,totalWidth:600,totalHeight:350});Me(this,"margins",{top:_g,bottom:_g,left:_g,right:_g});Me(this,"captionsSizes",{xAxisCaptions:100,yAxisCaptions:100,xGroupCaptions:Vm,yGroupCaptions:Vm,xCaptionTail:0,yCaptionTail:0});Me(this,"labelAngles",{xAxisLabels:0,yAxisLabels:0,xGroupLabels:0,yGroupLabels:0});Me(this,"columnsCount",1);Me(this,"rowsCount",1);Me(this,"scales",{x:{null:Hl().domain(["null"]).range([1])},y:{null:Hl().domain(["null"]).range([1])}});Me(this,"step",{x:{},y:{}});Me(this,"colorScale",Da().domain([0,1]).range(["white","black"]));Me(this,"annotationColorScales",{});Me(this,"dendrogramAesScales",{});Me(this,"legend",{width:0,height:0,items:[]});Me(this,"dendrograms",{})}clear(){var e;this.parentNode&&this.rootNode&&((e=this.parentNode)==null||e.removeChild(this.rootNode),this.parentNode=null,this.rootNode=null),setTimeout(()=>{var t;(t=this.reactRoot)==null||t.unmount(),this.reactRoot=null})}init(e){this.parentNode===null&&(this.parentNode=e,this.rootNode=document.createElement("div"),this.parentNode.appendChild(this.rootNode),this.reactRoot=zh(this.rootNode))}updateMargins(e){this.margins={top:e.show?24+24*2:_g,bottom:_g,left:_g,right:this.legend.width},this.chartSizes.totalWidth=this.margins.left+this.chartSizes.chartsWidth+this.margins.right,this.chartSizes.totalHeight=this.margins.top+Math.max(this.chartSizes.chartsHeight+this.margins.bottom,this.legend.height)}updateLegendSize(e,t,n,r,a){if(!t.show){this.legend={width:0,height:0,items:[]};return}let i=this.chartSizes.chartHeight,o=[],s={width:0,height:0,left:0,top:0},c=m=>m.reduce((g,b)=>(g[b]=String(b),g),{});if(e==="continuous"){let m=this.colorScale,g=a2(m,a),b=Da([g[0],g[g.length-1]],[i,0]),C=r.label??r.value;o.push({...s,type:"continuous",id:"heatmapValue",scale:m,values:g,title:C,tickPositionScale:b})}else if(e==="discrete"){let m=this.colorScale,g=r.label??r.value,b=m.domain(),C=c(b);o.push({...s,type:"discreteColor",id:"heatmapValue",title:g,scale:m,values:b,labels:C})}if(n.forEach(m=>{let g=m.valueColumn.label??m.valueColumn.value;if(m.type==="continuous"){let b=this.annotationColorScales[m.id].scale,C=a2(b,a),x=Da([C[0],C[C.length-1]],[i,0]);o.push({...s,type:"continuous",id:m.id,tickPositionScale:x,title:g,scale:b,values:C})}if(m.type==="discrete"){let b=this.annotationColorScales[m.id].scale,C=b.domain(),x=c(C);o.push({...s,type:"discreteColor",id:m.id,title:g,scale:b,values:C,labels:x})}}),!o.length){this.legend={width:0,height:0,items:[]};return}let f=C9(o,this.chartSizes.chartHeight),A=f[f.length-1],h=A.left+A.width+2*G8;this.legend={width:h,height:i,items:f}}updateCaptionsSize(e,t,n,r){let a=new Dc("bold 14px Arial"),{xGroupKeys:i,yGroupKeys:o,xGroupLabels:s,yGroupLabels:c,xKeysByGroups:f,yKeysByGroups:A,xLabels:h,yLabels:m}=e.meta;this.labelAngles={xAxisLabels:t.axisLabelsAngle,yAxisLabels:n.axisLabelsAngle,xGroupLabels:t.groupLabelsAngle,yGroupLabels:n.groupLabelsAngle};let g=Ir.flatten(Object.values(f)),b=Ir.flatten(Object.values(A)),C=g.map(re=>a.getTextWidth(h[re])),x=b.map(re=>a.getTextWidth(m[re])),k=i.map(re=>a.getTextWidth(s[re])),_=o.map(re=>a.getTextWidth(c[re])),{xCaptionTail:D,yCaptionTail:O}=owt(this.labelAngles,r,this.step,e,a),I=this.labelAngles.xGroupLabels/180*Math.PI,$=this.labelAngles.yGroupLabels/180*Math.PI,Q=this.labelAngles.xAxisLabels/180*Math.PI,q=this.labelAngles.yAxisLabels/180*Math.PI;this.captionsSizes={xCaptionTail:D,yCaptionTail:O,xGroupCaptions:Math.max(...k,0)*Math.sin(I)||Vm,yGroupCaptions:Math.max(..._,0)*Math.sin($)||Vm,xAxisCaptions:Math.max(...C,0)*Math.sin(Q)||Vm,yAxisCaptions:Math.max(...x,0)*Math.sin(q)||Vm}}updateChartDimensions(e,t,n,r,a,i,o,s,c,f){let A=t.length,h=Math.min(a.nRows??A,A),m=Math.min(a.nCols??A,A);this.columnsCount=a.nRows?Math.ceil(A/h):m,this.rowsCount=Math.ceil(A/this.columnsCount);let{width:g,height:b}=e,{sharedX:C,sharedY:x}=a;this.chartsDimensions={};let k=0,_=0;t.forEach((I,$)=>{let Q=$%this.columnsCount+1,q=zK($,t.length,this.columnsCount,this.rowsCount),re=this.step.x[I],ee=this.step.y[I],z=nwt(i,o,this.captionsSizes,s,c,f,q,C,x,t,n,r,re,ee),j=iwt(s,q,C,x);function K(ae){return Math.max(s1[ae].reduce((ye,Ce)=>ye+z[ae][Ce],0),j[ae],z2t)}let Y={left:K("left"),right:K("right"),top:K("top"),bottom:K("bottom")};Y.left<this.captionsSizes.xCaptionTail&&(Y.left=this.captionsSizes.xCaptionTail),Y.bottom<this.captionsSizes.yCaptionTail&&(Y.bottom=this.captionsSizes.yCaptionTail);let X=rwt(z,g,b),oe=g+Y.left+Y.right,me=b+Y.top+Y.bottom;this.chartsDimensions[I]={left:k,top:_,inner:{width:g,height:b},outer:{width:oe,height:me},padding:Y,sideElementBBoxes:X,chartEdgeSides:q},k+=oe,Q===this.columnsCount&&(k=0,_+=me)});let D=t.slice(0,this.columnsCount).reduce((I,$)=>I+this.chartsDimensions[$].outer.width,0),O=t.filter((I,$)=>$%this.columnsCount===0).reduce((I,$)=>I+this.chartsDimensions[$].outer.height,0);this.chartSizes.chartsWidth=D,this.chartSizes.chartsHeight=O}updateChartsSizes(e){let{width:t,height:n}=e;this.chartSizes.chartWidth=t,this.chartSizes.chartHeight=n}updateScales(e,t,n,r,a,i,o,s,c){let{width:f,height:A}=a,{meta:h,facets:m}=t,{sharedX:g,sharedY:b}=r,C=(k,_={})=>k.sort((D,O)=>i.sorting==="asc"?(_[D]??D).localeCompare(_[O]??O,"en",{numeric:!0}):(_[O]??O).localeCompare(_[D]??D,"en",{numeric:!0})),x=(k,_={})=>k.sort((D,O)=>o.sorting==="asc"?(_[D]??D).localeCompare(_[O]??O,"en",{numeric:!0}):(_[O]??O).localeCompare(_[D]??D,"en",{numeric:!0}));e.forEach(k=>{let _=m[k],D=C(h.xGroupKeys),O=x(h.yGroupKeys),{xKeysByGroups:I}=g?h:_,{yKeysByGroups:$}=b?h:_,Q=D.map(ye=>I[ye].length),q=O.map(ye=>$[ye].length),re=Q.reduce((ye,Ce)=>ye+Ce,0),ee=q.reduce((ye,Ce)=>ye+Ce,0),z=(f-(Q.filter(ye=>ye>0).length-1)*n)/re,j=(A-(q.filter(ye=>ye>0).length-1)*n)/ee,K=[],Y=[],X=0;D.forEach(ye=>{let Ce=s?I[ye]:C(I[ye],h.xLabels);Y.push(...Ce),Ce.forEach(()=>{K.push(X),X+=z}),Ce.length>0&&(X+=n)});let oe=[],me=[],ae=0;O.forEach(ye=>{let Ce=c?$[ye]:x($[ye],h.yLabels);me.push(...Ce),Ce.forEach(()=>{oe.push(ae),ae+=j}),Ce.length>0&&(ae+=n)}),this.scales.x[k]=Hl().domain(Y).range(K),this.scales.y[k]=Hl().domain(me).range(oe),this.step.x[k]=z,this.step.y[k]=j})}updateAesScale(e,t,n,r,a,i,o){if(e==="continuous")n.valueColors?this.colorScale=Da().domain(n.valuesByColors??XK(o,n.valueColors.length,t)).range(n.valueColors):n.colorsList&&(this.colorScale=Da().domain(XK(o,n.colorsList.length,t)).range(n.colorsList));else if(n.colorsMap){let f=Object.entries(n.colorsMap);this.colorScale=Hl().domain(f.map(A=>A[0])).range(f.map(A=>A[1])).unknown("#ccc")}else n.colorsList&&(this.colorScale=QK(n.colorsList,i.map(String)));let{xDataByKeys:s,yDataByKeys:c}=a.meta;r.forEach(f=>{let{colors:A,type:h,axis:m,valueColumn:g}=f,b=(m==="x"?s:c)[g.value];if(h==="discrete"){let C=Ir.uniq(Object.values(b).map(String)).sort();this.annotationColorScales[f.id]={type:"discrete",scale:QK(A,C)}}else{let C=Object.values(b).map(Number);if(!C.length)return;let[x=C[0],k=C[0]]=$A(C);this.annotationColorScales[f.id]={type:"continuous",scale:awt(A,x,k,0,.5,1)}}})}updateDendrogram(e,t,n,r,a,i,o){e.forEach(s=>{this.dendrograms[s]={x:{trees:[],data:i},y:{trees:[],data:o}};let{xKeysByGroups:c,yKeysByGroups:f}=r[s],{hierarchyX:A,hierarchyY:h}=a[s],m=Math.max(...A.map(b=>b.data.height)),g=Math.max(...h.map(b=>b.data.height));i&&(this.dendrograms[s].x.trees=A.map((b,C)=>{let x=t[C],k=c[x];xB().separation(()=>1).size([k.length*this.step.x[s],i.size])(b);let _=b,D=Da().domain(i.position==="top"?[0,m]:[m,0]).range([i.size,0]);return YK(_,D,"y"),WK(_,this.scales.x[s](k[0]),"x"),_}),this.dendrograms[s].x.data=i),o&&(this.dendrograms[s].y.trees=h.map((b,C)=>{let x=n[C],k=f[x];xB().separation(()=>1).size([k.length*this.step.y[s],o.size])(b);let _=b,D=Da().domain(o.position==="left"?[0,g]:[g,0]).range([o.size,0]);return WK(_,this.scales.y[s](k[0]),"x","y"),YK(_,D,"x"),_}),this.dendrograms[s].y.data=o)})}updateDendrogramAesScales(e){if(!e)return;let t=Object.keys(e);this.dendrogramAesScales=t.reduce((n,r)=>{let a=e[r],i=Object.keys(a);return n[r]=Hl().domain(i).range(i.map(o=>({...nK,...a[o]}))).unknown(nK),n},{})}render(e,t,n,r,a,i,o,s,c,f,A,h,m){var re;let{meta:g,facets:b}=a,{facetKeys:C,xGroupKeys:x,yGroupKeys:k,valueExtent:_}=g,{xAxis:D,yAxis:O,title:I,size:$,valueType:Q}=t;this.updateChartsSizes($),this.updateAesScale(Q,_,r,i,a,h,m),this.updateScales(C,a,r.groupGap,n,$,t.xAxis,t.yAxis,s,c),this.updateCaptionsSize(a,D,O,n),this.updateChartDimensions($,C,x,k,n,D,O,i,s,c),this.updateLegendSize(Q,t.legend,i,o,_),this.updateMargins(I),this.updateDendrogram(C,x,k,b,f,s,c),this.updateDendrogramAesScales(A);let q=le.jsx(vwt,{aes:r,annotations:i,annotationColorScales:this.annotationColorScales,captionsSizes:this.captionsSizes,cellsMeta:g,columnsCount:this.columnsCount,chartsDimensions:this.chartsDimensions,chartSettings:t,chartSizes:this.chartSizes,colorScale:this.colorScale,dendrogramAesScales:this.dendrogramAesScales,dendrograms:this.dendrograms,facetKeys:C,facetSettings:n,groupedCells:b,labelAngles:this.labelAngles,legend:this.legend,margins:this.margins,scales:this.scales,settingsId:e,step:this.step,xGroupKeys:x,yGroupKeys:k});this.component=q,(re=this.reactRoot)==null||re.render(q)}renderError(e){var t;(t=this.reactRoot)==null||t.render(le.jsx(Fm,{message:e}))}},wwt=ywt,LP={lineColor:Zt,dotShape:"21",dotFill:Zt,dotSize:3,lineShape:"solid",lineWidth:1},KK={size:150,distance:"euclidean",linkage:"average",fillNA:0,showNodes:!0,hidden:!1,edgeInheritance:"up",aes:LP},ZK=class{constructor(e){Me(this,"id");Me(this,"type","heatmap");Me(this,"facetSettings");Me(this,"xColumn");Me(this,"xGroupBy");Me(this,"yColumn");Me(this,"yGroupBy");Me(this,"valueColumn");Me(this,"facetBy");Me(this,"normalization");Me(this,"chartSettings");Me(this,"aes");Me(this,"annotations");Me(this,"dendrogramX");Me(this,"dendrogramY");Me(this,"inheritedDendrogramAes");Me(this,"NAValueAs");var t,n,r,a,i,o,s,c,f,A,h,m,g;if(t2t.parse(e),this.id=Ir.uniqueId("settings"),this.facetSettings={sharedX:(e.facetBy??[]).length>0,sharedY:(e.facetBy??[]).length>0,...e.facetSettings},this.xColumn=e.xColumn,this.xGroupBy=e.xGroupBy??[],this.yColumn=e.yColumn,this.yGroupBy=e.yGroupBy??[],this.valueColumn=e.valueColumn,this.facetBy=e.facetBy??[],this.chartSettings={title:{position:"left",show:!0,...e.title,name:((t=e.title)==null?void 0:t.name)??"Chart"},size:{width:((n=e==null?void 0:e.size)==null?void 0:n.width)??(this.facetBy.length?400:600),height:((r=e==null?void 0:e.size)==null?void 0:r.height)??(this.facetBy.length?250:350)},frame:{type:((a=e.frame)==null?void 0:a.type)??"none"},valueType:e.valueType??"continuous",yAxis:{title:e.yColumn.label??e.yColumn.value,showTicks:!0,showTitle:!0,showAxisLabels:!0,showGroupLabels:!0,position:"left",groupingPosition:"left",axisLabelsAngle:90,groupLabelsAngle:0,sorting:"asc",...e.yAxis},xAxis:{title:e.xColumn.label??e.xColumn.value,showTicks:!0,showTitle:!0,showAxisLabels:!0,showGroupLabels:!0,position:"bottom",groupingPosition:"bottom",axisLabelsAngle:90,groupLabelsAngle:0,sorting:"asc",...e.xAxis},legend:{show:!0,position:"right",...e.legend},tooltips:{show:!0,...e.tooltips}},this.normalization=this.chartSettings.valueType==="continuous"?e.normalization??null:null,this.NAValueAs=e.NAValueAs??null,this.aes={colorsList:((i=e.aes)==null?void 0:i.colorsList)??["black","white","red"],colorsMap:((o=e.aes)==null?void 0:o.colorsMap)??null,valueColors:((s=e.aes)==null?void 0:s.valueColors)??null,valuesByColors:((c=e.aes)==null?void 0:c.valuesByColors)??null,cellStrokeColor:((f=e.aes)==null?void 0:f.cellStrokeColor)??"none",groupGap:((A=e.aes)==null?void 0:A.groupGap)??3,emptyCellColor:((h=e.aes)==null?void 0:h.emptyCellColor)??"white"},this.annotations=(e.annotations??[]).map(b=>b.axis==="x"?{id:Ir.uniqueId("annotation"),axis:"x",valueColumn:b.valueColumn,position:b.position??this.chartSettings.xAxis.position,titlePosition:b.titlePosition??"right",showTitle:b.showTitle??!0,type:b.type,colors:b.colors??["white","black"]}:{id:Ir.uniqueId("annotation"),axis:"y",valueColumn:b.valueColumn,position:b.position??this.chartSettings.yAxis.position,titlePosition:b.titlePosition??"top",showTitle:b.showTitle??!0,type:b.type,colors:b.colors??["white","black"]}),e.valueType==="discrete"&&(e.dendrogramX||e.dendrogramY))throw Error("Dendrogram is not available with discrete cells values");this.dendrogramX=e.dendrogramX?{...KK,position:"top",...e.dendrogramX,aes:{...LP,...(m=e.dendrogramX)==null?void 0:m.aes}}:null,this.dendrogramY=e.dendrogramY?{...KK,position:"left",...e.dendrogramY,aes:{...LP,...(g=e.dendrogramY)==null?void 0:g.aes}}:null,this.inheritedDendrogramAes=e.inheritedDendrogramAes??null}},Cwt=class extends Sg{constructor(t,n){super(t,n);Me(this,"settings");Me(this,"chartRenderer",new wwt);Me(this,"calculatedData",null);this.settings=new ZK(n)}mount(t){try{this.chartRenderer.init(t),this._updateData(),this._updateChart()}catch(n){n instanceof Error&&this.chartRenderer.renderError(n.message)}}unmount(){this.chartRenderer.clear()}updateSettingsAndData(t,n){try{let r=this.settings,a=this.data;this.settings=new ZK(n),this.data=t,this._needUpdateCalculatedDataBySettings(r,this.settings)||this._needUpdateCalculatedDataByData(a,this.data)?this._updateData():this._updateAesInData(),this._updateChart()}catch(r){r instanceof Error&&this.chartRenderer.renderError(r.message)}}updateChartState(t,n){console.warn("no chart state for heatmap")}export(){return this._updateChart(),f3(this.chartRenderer.component)}_needUpdateCalculatedDataBySettings(t,n){var I,$,Q,q,re,ee,z,j,K,Y,X,oe;let{xColumn:r,yColumn:a,valueColumn:i,xGroupBy:o,yGroupBy:s,facetBy:c,annotations:f,chartSettings:A,facetSettings:h,dendrogramX:m,dendrogramY:g,normalization:b,NAValueAs:C}=n,x=Object.values(((I=t.dendrogramX)==null?void 0:I.aes)||{}).filter(d9),k=Object.values((m==null?void 0:m.aes)||{}).filter(d9),_=Object.values((($=t.dendrogramY)==null?void 0:$.aes)||{}).filter(d9),D=Object.values((g==null?void 0:g.aes)||{}).filter(d9);function O(me,ae){return me.length!==ae.length||me.some((ye,Ce)=>ye.value!==ae[Ce].value)}return t.xColumn.value!==r.value||t.yColumn.value!==a.value||t.valueColumn.value!==i.value||O(t.xGroupBy,o)||O(t.yGroupBy,s)||O(t.facetBy,c)||O(t.annotations.map(me=>me.valueColumn),f.map(me=>me.valueColumn))||O(x,k)||O(_,D)||(n.dendrogramX||t.dendrogramX)&&(((Q=t.dendrogramX)==null?void 0:Q.distance)!==((q=n.dendrogramX)==null?void 0:q.distance)||((re=t.dendrogramX)==null?void 0:re.linkage)!==((ee=n.dendrogramX)==null?void 0:ee.linkage))||(n.dendrogramY||t.dendrogramY)&&(((z=t.dendrogramY)==null?void 0:z.distance)!==((j=n.dendrogramY)==null?void 0:j.distance)||((K=t.dendrogramY)==null?void 0:K.linkage)!==((Y=n.dendrogramY)==null?void 0:Y.linkage))||t.chartSettings.valueType!==A.valueType||t.facetSettings.sharedX!==h.sharedX||t.facetSettings.sharedY!==h.sharedY||((X=t.normalization)==null?void 0:X.method)!==(b==null?void 0:b.method)||((oe=t.normalization)==null?void 0:oe.direction)!==(b==null?void 0:b.direction)||t.NAValueAs!==C}_needUpdateCalculatedDataByData(t,n){let r=Object.keys(t.data),a=Object.keys(n.data);return t.id!==n.id||r.length!==a.length||r.some(i=>{var o;return t.data[i].length!==((o=n.data[i])==null?void 0:o.length)})}_updateData(){let{xColumn:t,yColumn:n,valueColumn:r,xGroupBy:a,yGroupBy:i,facetBy:o,chartSettings:s,facetSettings:c,annotations:f,dendrogramX:A,dendrogramY:h,normalization:m,NAValueAs:g}=this.settings,b=K7t(this.data,t,n,r,o,a,i,f,A,h,m,g),C=twt(b,A,h,c),x=s.valueType==="discrete"?this.data.getColumnCategories(r.value):[];this.calculatedData={groupedCellsData:b,dendrogramsData:C,cellUniqValues:x}}_updateAesInData(){}_updateChart(){if(!this.calculatedData)return;let{id:t,valueColumn:n,chartSettings:r,facetSettings:a,aes:i,annotations:o,dendrogramX:s,dendrogramY:c,inheritedDendrogramAes:f,normalization:A}=this.settings;this.chartRenderer.render(t,r,a,i,this.calculatedData.groupedCellsData,o,n,s,c,this.calculatedData.dendrogramsData,f,this.calculatedData.cellUniqValues,A)}},JK=(e,t)=>{let n=Math.min(...t),r=Math.max(...t);if(n===r)return[n];if(e<2)return[(n+r)/2];let a=(r-n)/e,i=[];for(let o=1;o<e;o++)i.push(n+a*o);return i};function bwt(e,t,n){let[r=0,a=0]=$A(e,s=>s[t.value]),i=JK(n,[r,a]),o=pL().thresholds(i).value(s=>s[t.value])(e);return{bins:o,minX:o[0].x0??0,maxX:o[o.length-1].x1??0,maxCount:Ih(o,s=>s.length)??0}}function Ewt(e,t,n){let[r=0,a=0]=$A(e,A=>A[t.value]),i=[r,a],o=JK(n,[r,a]),s=q1().domain(i).range(i),c=o.map(A=>s.invert(A)),f=pL().thresholds(c).value(A=>A[t.value])(e);return{bins:f,minX:f[0].x0??0,maxX:f[f.length-1].x1??0,maxCount:Ih(f,A=>A.length)??0}}function xwt(e,t,n,r,a){let i={};return t.forEach(o=>{let s=e.getRowsByGrouping([...o]);i[o.join("_")]=a==="linear"?bwt(s,n,r):Ewt(s,n,r)}),i}var Swt={TOP:30,BOTTOM:0,LEFT:10,RIGHT:10};function E9(e,t,n=!1){let r=Math.abs(e.range()[0]-e.range()[1]),a=n?Math.min(Math.floor(r/45),10):10,i=e.ticks(a).filter(c=>t&&c>=0||!t),o=new Set(i);if(!n&&i.length>1){let c=e(i[0]),f=e(i[0]);for(let A=1;A<i.length;A++)f=e(i[A]),Math.abs(f-c)>=20?c=f:o.delete(i[A])}n&&i.length>2&&Math.abs(e(i[1])-e(i[0]))<45&&(i=i.filter((c,f)=>f%2===0));let s=i.some(c=>Math.abs(c)<1e-4&&c!==0||c>1e4)?",e":",f";return{ticks:i,format:c=>o.has(c)?e.tickFormat(a,s)(c):""}}function Bwt(e){return`translate(${e},0)`}function kwt(e){return`translate(0,${e})`}function Twt(e){return e==="bottom"?`translate(0,${ed})`:`translate(${-ed},0)`}function _wt(e){return e==="bottom"?"hanging":"central"}function Pwt(e){return e==="bottom"?"middle":"end"}var qK=({scale:e,tickSize:t=6,tickPadding:n=ed,orient:r="bottom",onlyPositive:a=!1,offset:i=typeof window<"u"&&window.devicePixelRatio>1?0:.5})=>{function o(C){return x=>{let k=C(x);return k===void 0?0:+k}}let{ticks:s,format:c}=E9(e,a,r==="bottom"),f=Math.max(t,0)+n,A=o(e.copy()),h=r==="bottom"?Bwt:kwt,m=r==="left"?-1:1,g={[(r==="left"?"x":"y")+"2"]:m*t},b={[r==="left"?"x":"y"]:m*f};return le.jsx("g",{children:s.map((C,x)=>le.jsxs("g",{className:"tick",transform:h(A(C)+i),children:[le.jsx("line",{stroke:Zt,...g}),le.jsx("g",{transform:Twt(r),children:le.jsx("text",{fill:Zt,fontSize:"14px",fontWeight:"500",fontFamily:"Manrope",dominantBaseline:_wt(r),textAnchor:Pwt(r),...b,children:c(C)})})]},x))})},Mwt=1;function eZ({scaleX:e,scaleY:t,width:n,height:r,axisX:a,axisY:i,frameType:o,updatingKey:s=""}){let[c,f]=Vn.useState(e.ticks()),[A,h]=Vn.useState(t.ticks()),{significantLines:m=[]}=a,{significantLines:g=[]}=i;return Vn.useEffect(()=>{let b=e.ticks().filter(x=>!m.includes(x)),C=t.ticks().filter(x=>!g.includes(x));f(b),h(C)},[e,t,s]),le.jsxs("g",{stroke:Jf,children:[a.showGrid&&c.map(b=>{let C=e(b);return le.jsx("line",{x1:C,x2:C,y1:0,y2:r},`x_${C}_${r}`)}),i.showGrid&&A.map(b=>{let C=t(b);return le.jsx("line",{x1:0,x2:n,y1:C,y2:C},`y_${C}_${n}`)}),le.jsx("g",{strokeDasharray:td(a.significantLinesStyle),stroke:Zt,children:m.map(b=>{let C=e(b);return C<0||C>n?null:le.jsx("line",{x1:C,x2:C,y1:0,y2:r},`significant_${C}_${r}`)})}),le.jsx("g",{strokeDasharray:td(i.significantLinesStyle),stroke:Zt,children:g.map(b=>{let C=t(b);return C<0||C>r?null:le.jsx("line",{x1:0,x2:n,y1:C,y2:C},`significant_${C}_${n}`)})}),o!=="empty"&&le.jsxs("g",{strokeWidth:Mwt,children:[(a.showGrid||o!=="left")&&le.jsx("line",{stroke:o==="left"?Jf:Zt,x1:"0",x2:n,y1:r,y2:r}),(a.showGrid||o!=="bottom")&&le.jsx("line",{stroke:o==="bottom"?Jf:Zt,x1:"0",x2:"0",y1:"0",y2:r}),(a.showGrid||o==="full")&&le.jsx("line",{stroke:o==="full"?Zt:Jf,x1:n,x2:n,y1:"0",y2:r}),(i.showGrid||o==="full")&&le.jsx("line",{stroke:o==="full"?Zt:Jf,x1:"0",x2:n,y1:"0",y2:"0"})]})]})}function Dwt({width:e,height:t,dimensions:n,scales:r,xAxis:a,yAxis:i,frameType:o,histogramData:s,facetSettings:c,captionsSizes:f,facetTitle:A,layers:h,aesColorGetter:m}){let{padding:g}=n,b=a.showTicks?4:0,C=i.showTicks?4:0,x=n.chartEdgeSides.includes("left")||!(c!=null&&c.sharedY),k=n.chartEdgeSides.includes("bottom")||!(c!=null&&c.sharedX),_=n.chartEdgeSides.includes("bottom"),D=!1;return le.jsxs("g",{transform:`translate(${n.left+g.left},${n.top+g.top})`,children:[D,A.length&&le.jsxs("g",{children:[o==="full"&&le.jsx("rect",{x:"0",y:-g.top,height:g.top,width:e,fill:"#F7F8FA",stroke:Zt}),A.map((O,I)=>{let $=A.length,Q=(g.top-20*$)/2;return le.jsx("text",{fontSize:"14px",fontWeight:"500",fill:Zt,x:e/2,dy:Q+20/2-g.top,y:I*20,textAnchor:"middle",dominantBaseline:"central",children:O},I)})]}),le.jsxs("g",{dominantBaseline:"central",textAnchor:"middle",fontWeight:"500",fontSize:"14px",fill:Zt,children:[_&&le.jsx("text",{x:e/2,y:t+g.bottom-12-20/2,children:a.title}),D]}),le.jsx(eZ,{width:e,height:t,scaleX:r.x,scaleY:r.y,axisX:a,axisY:i,frameType:o}),k&&le.jsxs("g",{transform:`translate(0,${t})`,children:[le.jsx(qK,{scale:r.x,orient:"bottom",onlyPositive:!0,tickSize:b}),D]}),x&&le.jsxs("g",{children:[le.jsx(qK,{scale:r.y,orient:"left",tickSize:C}),D]}),h.map(O=>s.bins.map(I=>le.jsx("rect",{x:r.x(I.x0),y:r.y(I.length),fill:I[0]?m(O.aes.fillColor,I[0]):"",stroke:Zt,width:r.x(I.x1)-r.x(I.x0),height:r.y(0)-r.y(I.length),opacity:O.aes.opacity??1},I.x0)))]})}function Hwt({settingsId:e,chartSettings:t,chartSizes:n,chartsDimensions:r,columnsCount:a,facetKeys:i,facetSettings:o,scales:s,margins:c,mainTitle:f,facetTitles:A,captionsSizes:h,histogramDataByFacets:m,layers:g,aesColorGetter:b}){let{xAxis:C,yAxis:x,title:k,frame:_}=t,D=r[i[0]].padding,O=r[i[a-1]].padding;return le.jsx(f2,{dataId:e,children:le.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${n.totalWidth} ${n.totalHeight}`,width:n.totalWidth,height:n.totalHeight,children:[le.jsx("defs",{children:Tg}),le.jsxs("g",{transform:`translate(${c.left},${c.top})`,fontFamily:"Manrope",children:[le.jsx(d2,{title:f,show:k.show,position:k.position,leftPadding:D.left,rightPadding:O.right,chartsWidth:n.chartsWidth}),i.map(I=>le.jsx(Dwt,{scales:{x:s.x[I],y:s.y[I]},width:n.chartWidth,height:n.chartHeight,dimensions:r[I],margins:c,chartSizes:n,facetSettings:o,xAxis:C,yAxis:x,frameType:_.type,facetTitle:A[I],captionsSizes:h,histogramData:m[I],layers:g,aesColorGetter:b},I))]})]})})}function Iwt(e,t,n,r){let a=[];return e%n===n-1&&a.push("right"),e%n===0&&a.push("left"),e<n&&a.push("top"),(Math.ceil((e+1)/n)===r||Math.ceil((e+1)/n)===r-1&&e%n>(t-1)%n)&&a.push("bottom"),a}function Lwt(e,t,n,r,a,i,o){let s=i.includes("left")||!(o!=null&&o.sharedY),c=i.includes("bottom")||!(o!=null&&o.sharedX),f=i.includes("bottom")&&e.title!=="",A=n.yAxisCaptionsWidth+2*6,h=(t.showTicks?4:0)+6,m=n.xAxisCaptionsWidth+2*6,g=e.showTicks?4:0,b=f?32:0,C=A+h+8,x=m+g+b+8,k=Math.max(...r.map(_=>a[_].length));return{left:s?C:12,top:k===0?0:6*2+k*20,bottom:c?x+8:12,right:12}}function Rwt(e,t,n){let r=[];for(let a=0;a<t;a++)r.push(e.slice(a*n,a*n+n));return r}function Nwt(e,t){let n=Math.floor(e/t),r=e-n*t;return[n,r]}function $wt(e){return typeof e=="object"&&e!==null&&"type"in e&&"value"in e&&e.type==="grouping"}function Fwt(e,t){return function(n,r){var a,i;if($wt(n)){let o=n.value;return(i=((a=e[o])==null?void 0:a[String(r[o])])??hP)==null?void 0:i[t]}return n}}var Vwt=class{constructor(){Me(this,"reactRoot",null);Me(this,"parentNode",null);Me(this,"rootNode",null);Me(this,"component",le.jsx(le.Fragment,{}));Me(this,"margins",{top:24,bottom:24,left:24,right:24});Me(this,"chartsDimensions",{});Me(this,"chartSizes",{chartWidth:600,chartHeight:350,chartsWidth:600,chartsHeight:350,totalWidth:600,totalHeight:350});Me(this,"columnsCount",1);Me(this,"rowsCount",1);Me(this,"scales",{x:{null:Da().domain([0,10]).range([0,600])},y:{null:Da().domain([0,10]).range([350,0])}});Me(this,"captionsSizes",{xAxisCaptionsWidth:30,yAxisCaptionsWidth:100});Me(this,"facetTitles",{});Me(this,"mainTitle",[])}clear(){var e;this.parentNode&&this.rootNode&&((e=this.parentNode)==null||e.removeChild(this.rootNode),this.parentNode=null,this.rootNode=null),setTimeout(()=>{var t;(t=this.reactRoot)==null||t.unmount(),this.reactRoot=null})}init(e){this.parentNode===null&&(this.parentNode=e,this.rootNode=document.createElement("div"),this.parentNode.appendChild(this.rootNode),this.reactRoot=zh(this.rootNode))}updateChartSizes(e){this.chartSizes.chartWidth=e.width,this.chartSizes.chartHeight=e.height}updateChartDimensions(e,t,n,r){let{chartWidth:a,chartHeight:i}=this.chartSizes,o=0,s=0;this.chartsDimensions=e.reduce((A,h,m)=>{let[g,b]=Nwt(m,this.columnsCount),C=Iwt(m,e.length,this.columnsCount,this.rowsCount),x=Lwt(n,r,this.captionsSizes,Rwt(e,this.rowsCount,this.columnsCount)[g],this.facetTitles,C,t),k=a+x.left+x.right,_=i+x.top+x.bottom;return A[h]={left:o,top:s,chartEdgeSides:C,padding:x,inner:{width:a,height:i},outer:{width:k,height:_}},o+=k,b===this.columnsCount-1&&(o=0,s+=_),A},{});let c=Math.max(...e.map(A=>this.chartsDimensions[A].outer.width+this.chartsDimensions[A].left)),f=Math.max(...e.map(A=>this.chartsDimensions[A].outer.height+this.chartsDimensions[A].top));this.chartSizes.chartsWidth=c,this.chartSizes.chartsHeight=f}updateViewport(e,t,n,r,a){let i=e.length,o=Math.min(t.nRows??i,i),s=Math.min(t.nCols??i,i);this.columnsCount=t.nRows?Math.ceil(i/o):s,this.rowsCount=Math.ceil(i/this.columnsCount);let[c,f]=[1/0,-1/0],A=-1/0,h=e.reduce((m,g)=>{let b=a[g],{minX:C,maxX:x,maxCount:k}=b;return c=Math.min(c,C),f=Math.max(f,x),A=Math.max(A,k),m[g]={minX:C,maxX:x,maxY:k},m},{});e.forEach(m=>{let g=n.scale==="log"?q1():Da(),b=h[m],C=t.sharedX?c:b.minX,x=t.sharedX?f:b.maxX;g.domain([C,x]).range([0,this.chartSizes.chartWidth]),this.scales.x[m]=g}),e.forEach(m=>{let g=r.scale==="log"?q1():Da(),b=h[m],C=0,x=t.sharedY?A:b.maxY,k=[this.chartSizes.chartHeight,0],_=g.copy().domain([C,x]).range([this.chartSizes.chartHeight,Swt.TOP]);g.domain([_.invert(this.chartSizes.chartHeight),_.invert(0)]).range(k),this.scales.y[m]=g})}updateCaptionsSize(){let e=new Dc("600 14px Arial"),t=0;function n(r){return Math.max(...r.map(a=>e.getTextWidth(a)))}Object.values(this.scales.y).forEach(r=>{let{ticks:a,format:i}=E9(r,!1);t=Math.max(t,n(a.map(i)))}),this.captionsSizes={xAxisCaptionsWidth:20,yAxisCaptionsWidth:t}}createMainTitle(e,t){let n=this.chartsDimensions[e[0]],r=this.chartsDimensions[e[e.length-1]];this.mainTitle=Om(t.name,this.chartSizes.chartsWidth-n.padding.left-r.padding.right,20)}createFacetTitles(e,t){this.facetTitles=e.reduce((n,r,a)=>(t[a].length===1&&t[a][0]==="null"?n[r]=[]:n[r]=Om(t[a].join(", "),this.chartSizes.chartWidth,14),n),{})}updateMargins(){let e=24*this.mainTitle.length,t=e>0?e+24*2:0;this.margins={top:Math.max(t,24),bottom:24,left:24,right:24},this.chartSizes.totalWidth=this.margins.left+this.chartSizes.chartsWidth+this.margins.right,this.chartSizes.totalHeight=this.margins.top+this.chartSizes.chartsHeight+this.margins.bottom}render(e,t,n,r,a,i,o,s){var g;let{xAxis:c,yAxis:f,size:A,title:h}=t;this.updateChartSizes(A),this.updateViewport(r,n,c,f,i),this.updateCaptionsSize(),this.createFacetTitles(r,a),this.updateChartDimensions(r,n,c,f),this.createMainTitle(r,h),this.updateMargins();let m=le.jsx(Hwt,{settingsId:e,chartSettings:t,facetKeys:r,facetSettings:n,chartSizes:this.chartSizes,chartsDimensions:this.chartsDimensions,scales:this.scales,columnsCount:this.columnsCount,margins:this.margins,mainTitle:this.mainTitle,facetTitles:this.facetTitles,captionsSizes:this.captionsSizes,histogramDataByFacets:i,layers:o,aesColorGetter:Fwt(s,"fillColor")});this.component=m,(g=this.reactRoot)==null||g.render(m)}renderError(e){var t;(t=this.reactRoot)==null||t.render(le.jsx(Fm,{message:e}))}},Owt=Vwt,Qwt=10,zwt=class{constructor(e){Me(this,"type","bins");Me(this,"aes",{fillColor:"white",opacity:1});this.aes={...this.aes,...e.aes}}},Uwt=class{constructor(e){Me(this,"type","binsLine");Me(this,"aes",{opacity:1});this.aes={...this.aes,...e.aes}}},tZ=class{constructor(e){Me(this,"id");Me(this,"type","histogram");Me(this,"valueColumn");Me(this,"binsCount");Me(this,"facetSettings");Me(this,"facetBy");Me(this,"grouping");Me(this,"chartSettings");Me(this,"inheritedAes");Me(this,"layers");var t,n,r,a,i,o,s,c;s2t.parse(e),this.id=Ir.uniqueId("settings"),this.facetSettings={sharedX:!0,sharedY:!0,titlePosition:"left",...e.facetSettings},this.valueColumn=e.valueColumn,this.binsCount=e.binsCount??Qwt,this.facetBy=e.facetBy??[],this.grouping=e.grouping??[],this.chartSettings={size:{width:((t=e==null?void 0:e.size)==null?void 0:t.width)??(this.facetBy.length?400:600),height:((n=e==null?void 0:e.size)==null?void 0:n.height)??(this.facetBy.length?250:350)},title:{position:"center",show:!0,...e.title,name:((r=e.title)==null?void 0:r.name)??"Chart"},yAxis:{showGrid:!0,showTicks:!0,scale:((a=e.xAxis)==null?void 0:a.scale)??"linear",...e.yAxis},xAxis:{title:e.valueColumn.label??e.valueColumn.value??"",scale:((i=e.xAxis)==null?void 0:i.scale)??"linear",showGrid:((o=e.xAxis)==null?void 0:o.showGrid)??!0,showTicks:((s=e.xAxis)==null?void 0:s.showTicks)??!0},frame:{type:((c=e.frame)==null?void 0:c.type)??"full"},legend:{show:!0,position:"right",...e.legend}},this.inheritedAes=e.inheritedAes??{},this.layers=e.layers.map(f=>{if(f.type==="bins")return new zwt(f);if(f.type==="binsLine")return new Uwt(f);vA(f,"Unknown layer type")}).filter(Boolean)}};function nZ(e){if(!e.length)return[];let t=[[]];return e.forEach(n=>{let r=[];n.forEach(a=>{r.push(...t.map(i=>[...i,a]))}),t=r}),t}var jwt=class extends Sg{constructor(t,n){super(t,n);Me(this,"settings");Me(this,"chartRenderer",new Owt);Me(this,"calculatedData",null);this.settings=new tZ(n)}mount(t){try{this.chartRenderer.init(t),this._updateData(),this._updateChart()}catch(n){n instanceof Error&&this.chartRenderer.renderError(n.message)}}unmount(){this.chartRenderer.clear()}updateSettingsAndData(t,n){try{let r=this.settings,a=this.data;this.settings=new tZ(n),this.data=t,this._needUpdateCalculatedDataBySettings(r,this.settings)||this._needUpdateCalculatedDataByData(a,this.data)?this._updateData():this._updateAesInData(),this._updateChart()}catch(r){r instanceof Error&&this.chartRenderer.renderError(r.message)}}updateChartState(t,n){console.warn("no chart state for histogram")}export(){return this._updateChart(),f3(this.chartRenderer.component)}_needUpdateCalculatedDataBySettings(t,n){return t.valueColumn.value!==n.valueColumn.value||t.facetBy.some((r,a)=>{var i;return r.value!==((i=n.facetBy[a])==null?void 0:i.value)})||t.grouping.length!==n.grouping.length||t.grouping.some((r,a)=>{var i;return r.value!==((i=n.grouping[a])==null?void 0:i.value)})||t.layers.length!==n.layers.length||t.layers.some((r,a)=>r.type!==n.layers[a].type)||t.binsCount!==n.binsCount||t.chartSettings.xAxis.scale!==n.chartSettings.xAxis.scale}_needUpdateCalculatedDataByData(t,n){let r=Object.keys(t.data),a=Object.keys(n.data);return t.id!==n.id||r.length!==a.length||r.some(i=>{var o;return t.data[i].length!==((o=n.data[i])==null?void 0:o.length)})}_updateData(){let{valueColumn:t,facetBy:n,binsCount:r,chartSettings:a}=this.settings,i=n.map(f=>this.data.getColumnCategories(f.value)),o=i.length?nZ([...i]):[["null"]],s=n.map(f=>f.value)??null;this.data.setGrouping([...s]);let c=xwt(this.data,o,t,r,a.xAxis.scale);this.calculatedData={facetKeys:o.map(f=>f.join(", ")),facetKeysCombinations:o,histogramDataByFacets:c}}_updateAesInData(){this.calculatedData}_updateChart(){if(!this.calculatedData)return;let{id:t,chartSettings:n,facetSettings:r,inheritedAes:a,layers:i}=this.settings;this.chartRenderer.render(t,n,r,this.calculatedData.facetKeys,this.calculatedData.facetKeysCombinations,this.calculatedData.histogramDataByFacets,i,a)}};function Gwt(e,t,n,r,a,i){let o={};return t.forEach(s=>{let c=[],f=1/0,A=1/0,h=-1/0,m=-1/0;i.forEach(g=>{e.getRowsByGrouping([...s,g]).forEach(b=>{let C=b[n.value],x=b[r.value];f=Math.min(f,C),A=Math.min(A,x),h=Math.max(h,C),m=Math.max(m,x),C!==null&&x!==null&&c.push({id:`${Object.values(b)}`,x:C,y:x,label:a?b[a.valueLabels??a.value]:null,data:b})})}),c.sort((g,b)=>g.x-b.x),o[s.join("_")]={minX:f,maxX:h,minY:A,maxY:m,dots:c}}),o}function Ywt(e,t,n,r,a){return t.reduce((i,o)=>{let s=n[o].dots;return i[o]=e.map(c=>{if(c.type==="curve")return{type:"curve",info:c,geoms:r.map(f=>{let A=s.filter(m=>a.every((g,b)=>m.data[g.value]===f[b])),h=a.reduce((m,g,b)=>(m[g.value]=f[b],m),{});return{dots:A,data:h}})};if(c.type==="dots")return{type:"dots",info:c,geoms:s};vA(c,"Unknown scatterplot layer type")}),i},{})}var rZ=(e,t)=>{let n=Math.min(...t),r=Math.max(...t);if(n===r){let o=e%2===0?[]:[n];for(let s=1;s<e/2+1;s++)o.push(n+s),o.unshift(n-s);return o}if(e<2)return[n,r];let a=(r-n)/(e-1),i=[];for(let o=0;o<e-1;o++)i.push(n+a*o);return i.push(r),i};function Wwt(e,t,n){if(n==="linear")return rZ(e,t);if(n==="log"){let r=rZ(e,t),a=q1(t,t),i=r.map(o=>a.invert(o));return i[0]=t[0],i[i.length-1]=t[1],i}return[]}function q8(e,t,n){return(n==="log"?q1():Da()).domain(Wwt(e.length,t,n)).range(e)}function RP(e){let t=e.xPosition!=="middle"&&e.yPosition!=="middle",n=e.padding*(t?.7:1);return e.xPosition==="right"?e.x+n:e.xPosition==="middle"?e.x-e.width/2:e.x-e.width-n}function aZ(e){let t=e.xPosition!=="middle"&&e.yPosition!=="middle",n=e.padding*(t?.7:1);return e.yPosition==="middle"?e.y-e.height/2:e.yPosition==="top"?e.y-n-e.height:e.y+n}function Xwt(e,t){return RP(e)-t}function Kwt(e,t){return aZ(e)-t}function iZ(e){let t=RP(e),n=t+e.width,r=aZ(e),a=r+e.height;return{minX:t,maxX:n,minY:r,maxY:a}}function oZ(e,t,n){let r=Xwt(e,n),a=RP(e)+e.width+n,i=Kwt(e,t),o=i+e.height+2*t;return{minX:r,maxX:a,minY:i,maxY:o}}function Zwt(e,t,n){return e.minX>=0&&e.maxX<=t&&e.minY>=0&&e.maxY<=n}var eE=2;function Jwt(e,t=eE,n=eE){e.forEach(r=>{r.bbox=iZ(r),r.outerBBox=oZ(r,t,n)})}function tE(e,t,n,r=eE,a=eE){let i=[],o=new Dft,s=[["middle","right"],["top","right"],["bottom","right"],["middle","left"],["top","left"],["bottom","left"],["top","middle"],["bottom","middle"]];for(let c of e)for(let[f,A]of s){let h={...c,yPosition:f,xPosition:A};if(h.bbox=iZ(h),h.outerBBox=oZ(h,r,a),Zwt(h.outerBBox,t,n)&&!o.collides(h.outerBBox)){i.push(h),o.insert(h.outerBBox);break}}return i}function qwt(e){return`translate(${e},0)`}function e9t(e){return`translate(0,${e})`}function t9t(e){return e==="bottom"?`translate(0,${ed})`:`translate(${-ed},0)`}function n9t(e){return e==="bottom"?"hanging":"central"}function r9t(e){return e==="bottom"?"middle":"end"}var nE=({scale:e,tickSize:t=6,tickPadding:n=ed,orient:r="bottom",onlyPositive:a=!1,offset:i=typeof window<"u"&&window.devicePixelRatio>1?0:.5})=>{function o(C){return x=>{let k=C(x);return k===void 0?0:+k}}let{ticks:s,format:c}=E9(e,a,r==="bottom"),f=Math.max(t,0)+n,A=o(e.copy()),h=r==="bottom"?qwt:e9t,m=r==="left"?-1:1,g={[(r==="left"?"x":"y")+"2"]:m*t},b={[r==="left"?"x":"y"]:m*f};return le.jsx("g",{children:s.map((C,x)=>le.jsxs("g",{className:"tick",transform:h(A(C)+i),children:[le.jsx("line",{stroke:Zt,...g}),le.jsx("g",{transform:t9t(r),children:le.jsx("text",{fill:Zt,fontSize:"14px",fontWeight:"500",fontFamily:"Manrope",dominantBaseline:n9t(r),textAnchor:r9t(r),...b,children:c(C)})})]},x))})},a9t=1;function i9t({scaleX:e,scaleY:t,width:n,height:r,axisX:a,axisY:i,frameType:o,updatingKey:s=""}){let[c,f]=Vn.useState(e.ticks()),[A,h]=Vn.useState(t.ticks()),{significantLines:m=[]}=a,{significantLines:g=[]}=i;return Vn.useEffect(()=>{let b=e.ticks().filter(x=>!m.includes(x)),C=t.ticks().filter(x=>!g.includes(x));f(b),h(C)},[e,t,s]),le.jsxs("g",{stroke:Jf,children:[a.showGrid&&c.map(b=>{let C=e(b);return le.jsx("line",{x1:C,x2:C,y1:0,y2:r},`x_${C}_${r}`)}),i.showGrid&&A.map(b=>{let C=t(b);return le.jsx("line",{x1:0,x2:n,y1:C,y2:C},`y_${C}_${n}`)}),le.jsx("g",{strokeDasharray:td(a.significantLinesStyle),stroke:Zt,children:m.map(b=>{let C=e(b);return le.jsx("line",{x1:C,x2:C,y1:0,y2:r},`significant_${C}_${r}`)})}),le.jsx("g",{strokeDasharray:td(i.significantLinesStyle),stroke:Zt,children:g.map(b=>{let C=t(b);return le.jsx("line",{x1:0,x2:n,y1:C,y2:C},`significant_${C}_${n}`)})}),o!=="empty"&&le.jsxs("g",{strokeWidth:a9t,children:[(a.showGrid||o!=="left")&&le.jsx("line",{stroke:o==="left"?Jf:Zt,x1:"0",x2:n,y1:r,y2:r}),(a.showGrid||o!=="bottom")&&le.jsx("line",{stroke:o==="bottom"?Jf:Zt,x1:"0",x2:"0",y1:"0",y2:r}),(a.showGrid||o==="full")&&le.jsx("line",{stroke:o==="full"?Zt:Jf,x1:n,x2:n,y1:"0",y2:r}),(i.showGrid||o==="full")&&le.jsx("line",{stroke:o==="full"?Zt:Jf,x1:"0",x2:n,y1:"0",y2:"0"})]})]})}var o9t=new Dc("16px Manrope");function lZ(e,t){return typeof e=="string"?e:t.length?t[0].data[e.value]:""}function l9t(e,t,n=[]){let r=e.data,a=[`x: ${Ki(e.x)}`,`y: ${Ki(e.y)}`];t.label&&a.unshift(`${t.label}: ${r[t.label]}`);for(let i of n)a.push(`${i.label}: ${r[i.valueLabels??i.value]}`);return a}function s9t(e){return typeof e.r2>"u"?null:le.jsxs(le.Fragment,{children:[le.jsx("tspan",{children:"R"}),le.jsx("tspan",{fontSize:"10px",dy:"-8",children:"2"}),le.jsx("tspan",{dy:"8",children:` = ${Ki(e.r2)}`})]})}function u9t(e){return typeof e.pValue>"u"?null:le.jsx("tspan",{children:`p-value = ${Ki(e.pValue)}`})}function c9t(e){if(typeof e.coefficients>"u")return null;let{slope:t,slopeError:n,intercept:r,interceptError:a}=e.coefficients;return le.jsx("tspan",{children:le.jsx("tspan",{children:`slope = ${Ki(t)} ± ${Ki(n)}, intercept = ${Ki(r)} ± ${Ki(a)}`})})}function f9t(e){let t=[s9t(e),u9t(e),c9t(e)].filter(n=>n!==null);return le.jsx(le.Fragment,{children:t.map((n,r)=>le.jsxs("tspan",{children:[n,le.jsx("tspan",{children:r<t.length-1&&", "})]},r))})}var NP=3;function sZ(e,t,n,r){if(!r)return[];let a=[];for(let i of e){let o=i.label;if(!o)continue;let s=o9t.getTextMetrics(String(o));a.push({name:String(o),width:s.width,height:s.actualBoundingBoxAscent+s.actualBoundingBoxDescent,x:t.x(i.x),y:t.y(i.y),xPosition:"right",yPosition:"middle",bbox:{minX:0,maxX:0,minY:0,maxY:0},dot:i,padding:n.dotSize(r.info.aes.dotSize,i.data)+NP})}return a}function d9t({width:e,height:t,dimensions:n,scales:r,xAxis:a,yAxis:i,frameType:o,dotsData:s,facetSettings:c,trendsData:f,keyColumn:A,margins:h,chartSizes:m,tooltips:g,tooltipsContainer:b,captionsSizes:C,facetTitle:x,onlyPositive:k,layersData:_,aesGetters:D}){let[O,I]=Vn.useState(null),{padding:$}=n,{dots:Q}=s,q=a.showTicks?t2:0,re=i.showTicks?t2:0,ee=lZ(a.title,Q),z=lZ(i.title,Q),j=n.chartEdgeSides.includes("left")||!(c!=null&&c.sharedY),K=n.chartEdgeSides.includes("bottom")||!(c!=null&&c.sharedX),Y=n.chartEdgeSides.includes("left"),X=n.chartEdgeSides.includes("bottom"),oe={left:h.left+n.left+$.left,right:m.totalWidth-(h.left+n.left+$.left),top:h.top+n.top+$.top,bottom:m.totalHeight-(h.top+n.top+$.top)},me=!1,[ae,ye]=Vn.useState(()=>sZ(Q,r,D,_.find(Ne=>Ne.type==="dots"))),[Ce,ce]=Vn.useState(()=>tE(ae,e,t,NP,NP)),[ge,ze]=Vn.useState(null);return Vn.useEffect(()=>{ye(sZ(Q,r,D,_.find(Ne=>Ne.type==="dots")))},[Q,r,D,_]),Vn.useEffect(()=>{let Ne=tE(ae,e,t);ce(Ne)},[ae,e,t]),le.jsxs("g",{transform:`translate(${n.left+$.left},${n.top+$.top})`,children:[me,x.length&&le.jsxs("g",{children:[o==="full"&&le.jsx("rect",{x:"0",y:-$.top,height:$.top,width:e,fill:"#F7F8FA",stroke:Zt}),x.map((Ne,Ge)=>{let Oe=x.length,Xe=($.top-vP*Oe)/2;return le.jsx("text",{fontSize:"14px",fontWeight:"500",fill:Zt,x:e/2,dy:Xe+vP/2-$.top,y:Ge*vP,textAnchor:"middle",dominantBaseline:"central",children:Ne},Ge)})]}),le.jsxs("g",{dominantBaseline:"central",textAnchor:"middle",fontWeight:"500",fontSize:"14px",fill:Zt,children:[X&&le.jsx("text",{x:e/2,y:t+$.bottom-Rm-c9/2,children:ee}),me,Y&&le.jsx("text",{x:-$.left+Rm+c9/2,y:t/2,transform:`rotate(-90,${-$.left+Rm+c9/2},${t/2})`,children:z}),me]}),le.jsx(i9t,{width:e,height:t,scaleX:r.x,scaleY:r.y,axisX:a,axisY:i,frameType:o}),K&&le.jsxs("g",{transform:`translate(0,${t})`,children:[le.jsx(nE,{scale:r.x,orient:"bottom",onlyPositive:k.x,tickSize:q}),me]}),j&&le.jsxs("g",{children:[le.jsx(nE,{scale:r.y,orient:"left",onlyPositive:k.y,tickSize:re}),me]}),f&&f.map(({predict:Ne,getArea:Ge,color:Oe,data:Xe,bounded:dt,xBounds:Ye,stats:rt},He)=>{let[$e,ut]=dt?Ye:r.x.domain(),ct=(ut-$e)/15,Bt=Ne($e),dn=Ne(ut);if(isNaN(Bt)||isNaN(dn))return null;let gn=D.dotColor(Oe,Xe);return le.jsxs("g",{children:[le.jsx("text",{y:He*20+20,fill:gn,x:e-8,textAnchor:"end",children:f9t(rt)}),le.jsx("path",{d:Ge(r.x,r.y,Ir.range($e,ut+ct/2,ct)),fill:gn,opacity:.2}),le.jsx("line",{x1:r.x($e),x2:r.x(ut),y1:r.y(Bt),y2:r.y(dn),stroke:gn})]},He)}),_.map((Ne,Ge)=>{if(Ne.type==="dots")return le.jsxs("g",{children:[Q.map(Oe=>le.jsx("g",{transform:`translate(${r.x(Oe.x)},${r.y(Oe.y)})`,onMouseOver:()=>I(Oe),onMouseLeave:()=>I(null),children:Af(D.dotShape(Ne.info.aes.dotShape,Oe.data),D.dotSize(Ne.info.aes.dotSize,Oe.data),D.dotColor(Ne.info.aes.dotFill,Oe.data))},Oe.id)),Ce.map(Oe=>{let{name:Xe,height:dt,bbox:Ye,width:rt}=Oe;return le.jsx("g",{children:le.jsxs("g",{transform:`translate(${Ye.minX},${Ye.minY})`,children:[le.jsx("rect",{x:"0",y:"0",width:rt,height:dt,fill:"transparent",stroke:"none",onMouseOver:()=>ze(Oe.dot),onMouseLeave:()=>ze(null)}),le.jsx("text",{x:0,y:dt/2,stroke:"white",strokeWidth:2,paintOrder:"stroke",style:{pointerEvents:"none"},fontFamily:"Manrope",fontSize:"16px",dominantBaseline:"middle",children:Xe})]})},Oe.dot.id)}),ge&&le.jsxs("g",{transform:`translate(${r.x(ge.x)},${r.y(ge.y)})`,children:[Af(D.dotShape(Ne.info.aes.dotShape,ge.data),D.dotSize(Ne.info.aes.dotSize,ge.data)+1,"white","white"),Af(D.dotShape(Ne.info.aes.dotShape,ge.data),D.dotSize(Ne.info.aes.dotSize,ge.data),D.dotColor(Ne.info.aes.dotFill,ge.data))]},"activeDot")]},Ge);if(Ne.type==="curve"&&!Ne.info.smoothing)return Ne.geoms.map((Oe,Xe)=>le.jsx("g",{children:le.jsx("polyline",{points:Oe.dots.map(dt=>`${r.x(dt.x)},${r.y(dt.y)}`).join(" "),fill:"none",stroke:D.lineColor(Ne.info.aes.lineColor,Oe.data),strokeWidth:Ne.info.aes.lineWidth,strokeDasharray:td(Ne.info.aes.lineShape)})},Xe));if(Ne.type==="curve"&&Ne.info.smoothing)return Ne.geoms.map((Oe,Xe)=>le.jsx("g",{children:le.jsx("path",{d:d3().curve(A3).x(dt=>r.x(dt.x)).y(dt=>r.y(dt.y))(Oe.dots)??"",fill:"none",stroke:D.lineColor(Ne.info.aes.lineColor,Oe.data),strokeWidth:Ne.info.aes.lineWidth,strokeDasharray:td(Ne.info.aes.lineShape)})},Xe))}),g.show&&O&&le.jsx(oc,{content:l9t(O,A,g==null?void 0:g.content),x:r.x(O.x),y:r.y(O.y),active:!0,sideDistances:oe,container:b})]})}function A9t({settingsId:e,chartSettings:t,chartSizes:n,chartsDimensions:r,facetKeys:a,facetSettings:i,scales:o,groupedDots:s,legendData:c,trendsData:f,columnsCount:A,margins:h,keyColumn:m,mainTitle:g,facetTitles:b,captionsSizes:C,onlyPositive:x,layersData:k,aesGetters:_}){let[D,O]=Vn.useState(),I=Vn.useRef(null);Vn.useEffect(()=>{I.current&&O(I.current)},[]);let{xAxis:$,yAxis:Q,title:q,frame:re,legend:ee,tooltips:z}=t,j=r[a[0]].padding,K=r[a[A-1]].padding,Y=n.chartsWidth+yP,X=j.top;return le.jsx(f2,{dataId:e,children:le.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${n.totalWidth} ${n.totalHeight}`,width:n.totalWidth,height:n.totalHeight,children:[le.jsx("defs",{children:Tg}),le.jsxs("g",{transform:`translate(${h.left},${h.top})`,fontFamily:"Manrope",children:[le.jsx(d2,{title:g,show:q.show,position:q.position,leftPadding:j.left,rightPadding:K.right,chartsWidth:n.chartsWidth}),a.map(oe=>le.jsx(d9t,{scales:{x:o.x[oe],y:o.y[oe]},width:n.chartWidth,height:n.chartHeight,dimensions:r[oe],margins:h,chartSizes:n,facetSettings:i,xAxis:$,yAxis:Q,frameType:re.type,dotsData:s[oe],trendsData:f?f[oe]:null,tooltips:z,tooltipsContainer:D,keyColumn:m,facetTitle:b[oe],captionsSizes:C,layersData:k[oe],onlyPositive:x,aesGetters:_},oe)),ee.show&&le.jsx("g",{transform:`translate(${Y},${X})`,children:le.jsx(w9,{legendData:c})})]}),le.jsx("g",{ref:I})]})})}function p9t(e,t,n,r){let a=[];return e%n===n-1&&a.push("right"),e%n===0&&a.push("left"),e<n&&a.push("top"),(Math.ceil((e+1)/n)===r||Math.ceil((e+1)/n)===r-1&&e%n>(t-1)%n)&&a.push("bottom"),a}function h9t(e,t,n,r,a,i,o){let s=i.includes("left")||!(o!=null&&o.sharedY),c=i.includes("left")&&t.title!=="",f=i.includes("bottom")||!(o!=null&&o.sharedX),A=i.includes("bottom")&&e.title!=="",h=n.yAxisCaptionsWidth+2*gP,m=(t.showTicks?t2:0)+gP,g=c?c9+Rm:0,b=n.xAxisCaptionsWidth+2*gP,C=e.showTicks?t2:0,x=A?c9+Rm:0,k=h+m+g+LX,_=b+C+x+LX,D=Math.max(...r.map(O=>a[O].length));return{left:s?k:Rm,top:D===0?0:p3t*2+D*v9,bottom:f?_+8:Rm,right:Rm}}function m9t(e,t,n){let r=[];for(let a=0;a<t;a++)r.push(e.slice(a*n,a*n+n));return r}function v9t(e,t){let n=Math.floor(e/t),r=e-n*t;return[n,r]}function g9t(e){return typeof e=="object"&&e!==null&&"type"in e&&"value"in e&&e.type==="grouping"}function v2(e,t){return function(n,r){var a,i;if($m(n)&&t==="dotSize"){let{domain:o,range:s}=n,c=Ny().domain(o).range(s)(Number(r[n.columnName.value]));return Math.max(1,c)}if($m(n)&&(t==="dotFill"||t==="lineColor")){let{domain:o,range:s,type:c="linear"}=n;return q8(s,o,c)(Number(r[n.columnName.value]))}if(g9t(n)){let o=n.value;return(i=((a=e[o])==null?void 0:a[String(r[o])])??hP)==null?void 0:i[t]}return n}}function y9t(e){return{dotShape:v2(e,"dotShape"),dotColor:v2(e,"dotFill"),dotSize:v2(e,"dotSize"),lineShape:v2(e,"lineShape"),lineColor:v2(e,"lineColor"),trendColor:v2(e,"dotFill")}}var w9t=class{constructor(){Me(this,"reactRoot",null);Me(this,"parentNode",null);Me(this,"rootNode",null);Me(this,"component",le.jsx(le.Fragment,{}));Me(this,"margins",{top:qf,bottom:qf,left:qf,right:qf});Me(this,"chartsDimensions",{});Me(this,"chartSizes",{chartWidth:600,chartHeight:350,chartsWidth:600,chartsHeight:350,totalWidth:600,totalHeight:350});Me(this,"columnsCount",1);Me(this,"rowsCount",1);Me(this,"scales",{x:{null:Da().domain([0,10]).range([0,600])},y:{null:Da().domain([0,10]).range([350,0])}});Me(this,"captionsSizes",{xAxisCaptionsWidth:30,yAxisCaptionsWidth:100});Me(this,"facetTitles",{});Me(this,"mainTitle",[]);Me(this,"legend",{width:0,height:0,items:[]})}clear(){var e;this.parentNode&&this.rootNode&&((e=this.parentNode)==null||e.removeChild(this.rootNode),this.parentNode=null,this.rootNode=null),setTimeout(()=>{var t;(t=this.reactRoot)==null||t.unmount(),this.reactRoot=null})}init(e){this.parentNode===null&&(this.parentNode=e,this.rootNode=document.createElement("div"),this.parentNode.appendChild(this.rootNode),this.reactRoot=zh(this.rootNode))}updateChartSizes(e){this.chartSizes.chartWidth=e.width,this.chartSizes.chartHeight=e.height}updateChartDimensions(e,t,n,r){let{chartWidth:a,chartHeight:i}=this.chartSizes,o=0,s=0;this.chartsDimensions=e.reduce((A,h,m)=>{let[g,b]=v9t(m,this.columnsCount),C=p9t(m,e.length,this.columnsCount,this.rowsCount),x=h9t(n,r,this.captionsSizes,m9t(e,this.rowsCount,this.columnsCount)[g],this.facetTitles,C,t),k=a+x.left+x.right,_=i+x.top+x.bottom;return A[h]={left:o,top:s,chartEdgeSides:C,padding:x,inner:{width:a,height:i},outer:{width:k,height:_}},o+=k,b===this.columnsCount-1&&(o=0,s+=_),A},{});let c=Math.max(...e.map(A=>this.chartsDimensions[A].outer.width+this.chartsDimensions[A].left)),f=Math.max(...e.map(A=>this.chartsDimensions[A].outer.height+this.chartsDimensions[A].top));this.chartSizes.chartsWidth=c,this.chartSizes.chartsHeight=f}updateViewport(e,t,n,r,a,i){let o=e.length,s=Math.min(t.nRows??o,o),c=Math.min(t.nCols??o,o);this.columnsCount=t.nRows?Math.ceil(o/s):c,this.rowsCount=Math.ceil(o/this.columnsCount);let[f,A]=[1/0,-1/0],[h,m]=[1/0,-1/0],g=e.reduce((C,x)=>{let k=a[x],{minX:_,minY:D,maxX:O,maxY:I}=k;return f=Math.min(f,_),h=Math.min(h,D),A=Math.max(A,O),m=Math.max(m,I),C[x]={minX:_,maxX:O,minY:D,maxY:I},C},{});e.forEach(C=>{let x=n.scale==="log"?Rv():Da(),k=g[C],_=n.lowerValue?Number(n.lowerValue):t.sharedX?f:k.minX,D=n.upperValue?Number(n.upperValue):t.sharedX?A:k.maxX;if(typeof n.symmetricRange<"u"){let $=n.symmetricRange;if($>=_&&$<=D){let Q=Math.max($-_,D-$);_=$-Q,D=$+Q}}let O=[0,this.chartSizes.chartWidth],I=x.copy().domain([_,D]).range([R8.LEFT,this.chartSizes.chartWidth-R8.RIGHT]);x.domain([I.invert(0),I.invert(this.chartSizes.chartWidth)]).range(O).nice(),this.scales.x[C]=x});let b=e.reduce((C,x)=>{let k=i?i[x]:[];return C[x]=k.reduce((_,D)=>{let O=D.bounded?D.xBounds:this.scales.x[x].domain(),I=D.getInterval(O[0]),$=D.getInterval(O[1]);return _.minY=Math.min(_.minY,isNaN(I.left)?_.minY:I.left,isNaN($.left)?_.minY:$.left),_.maxY=Math.max(_.maxY,isNaN(I.right)?_.maxY:I.right,isNaN($.right)?_.maxY:$.right),_},{minY:1/0,maxY:-1/0}),h=Math.min(h,C[x].minY),m=Math.max(m,C[x].maxY),C},{});e.forEach(C=>{let x=r.scale==="log"?Rv():Da(),k=g[C],_=b[C],D=r.lowerValue?Number(r.lowerValue):t.sharedY?h:Math.min(k.minY,_.minY),O=r.upperValue?Number(r.upperValue):t.sharedY?m:Math.max(k.maxY,_.maxY);if(typeof r.symmetricRange<"u"){let Q=r.symmetricRange;if(Q>=D&&Q<=O){let q=Math.max(Q-D,O-Q);D=Q-q,O=Q+q}}let I=[this.chartSizes.chartHeight,0],$=x.copy().domain([D,O]).range([this.chartSizes.chartHeight-R8.BOTTOM,R8.TOP]);x.domain([$.invert(this.chartSizes.chartHeight),$.invert(0)]).range(I).nice(),this.scales.y[C]=x})}updateCaptionsSize(e){let t=new Dc("600 14px Arial"),n=0;function r(a){return Math.max(...a.map(i=>t.getTextWidth(i)))}Object.values(this.scales.y).forEach(a=>{let{ticks:i,format:o}=E9(a,e);n=Math.max(n,r(i.map(o)))}),this.captionsSizes={xAxisCaptionsWidth:20,yAxisCaptionsWidth:n}}createMainTitle(e,t){let n=this.chartsDimensions[e[0]],r=this.chartsDimensions[e[e.length-1]];this.mainTitle=Om(t.name,this.chartSizes.chartsWidth-n.padding.left-r.padding.right,20)}createFacetTitles(e,t){this.facetTitles=e.reduce((n,r,a)=>(t[a].length===1&&t[a][0]==="null"?n[r]=[]:n[r]=Om(t[a].join(", "),this.chartSizes.chartWidth,14),n),{})}updateMargins(){let e=24*this.mainTitle.length,t=e>0?e+24*2:0;this.margins={top:Math.max(t,qf),bottom:qf,left:qf,right:this.legend.width},this.chartSizes.totalWidth=this.margins.left+this.chartSizes.chartsWidth+this.margins.right,this.chartSizes.totalHeight=this.margins.top+Math.max(this.chartSizes.chartsHeight,this.legend.height)+this.margins.bottom}updateLegendSize(e,t,n,r){if(!e.show){this.legend={width:0,height:0,items:[]};return}let a=[],i={width:0,height:0,left:0,top:0};if(n.forEach(A=>{let h=t[A.value];if(h.usedAes.length===0||!h.aesMap)return;let m={};h.values.forEach(C=>{m[C]||(m[C]={...mP}),h.usedAes.forEach(x=>{var k,_,D;(x==="dotFill"||x==="lineColor")&&(m[C].color=((k=h.aesMap[C])==null?void 0:k[x])??Zt),x==="dotShape"&&(m[C].shape=((_=h.aesMap[C])==null?void 0:_[x])??"21"),x==="dotSize"&&(m[C].size=((D=h.aesMap[C])==null?void 0:D[x])??3)})});let g=A.label??A.value,b=Hl().domain(h.values).range(h.values.map(C=>m[C]));a.push({...i,id:A.value,type:"dots",title:g,scale:b,values:h.values,labels:h.labels})}),r.forEach(A=>{if(A.type==="dots"&&$m(A.aes.dotFill)){let{domain:h,range:m,columnName:g,type:b="linear"}=A.aes.dotFill,C=g.label??g.value,x=q8(m,h,"linear"),k=(b==="log"?q1():Da()).domain(h).range([height,0]),_=a2(k,h);a.push({...i,id:"dotFill",type:"continuous",title:C,scale:x,tickPositionScale:k,values:_})}if(A.type==="dots"&&$m(A.aes.dotSize)){let{columnName:h,domain:m,range:g}=A.aes.dotSize,b=h.label??h.value,C=Ny(m,g),x=C.ticks(3),k=C.tickFormat(3),_=x.reduce((D,O)=>(D[String(O)]=k(O),D),{});a.push({...i,id:h.value,type:"size",title:b,scale:C,values:x,labels:_})}}),!a.length){this.legend={width:0,height:0,items:[]};return}let o=C9(a,this.chartSizes.chartHeight),s=o[o.length-1],c=s.left+s.width+2*yP,f=this.chartSizes.chartHeight;this.legend={width:c,height:f,items:o}}render(e,t,n,r,a,i,o,s,c,f,A,h,m,g){var O;let{xAxis:b,yAxis:C,size:x,title:k,legend:_}=t;this.updateChartSizes(x),this.updateViewport(r,n,b,C,i,o),this.updateCaptionsSize(c.y),this.createFacetTitles(r,a),this.updateChartDimensions(r,n,b,C),this.updateLegendSize(_,f,m,g),this.createMainTitle(r,k),this.updateMargins();let D=le.jsx(A9t,{settingsId:e,chartSettings:t,facetKeys:r,facetSettings:n,chartSizes:this.chartSizes,chartsDimensions:this.chartsDimensions,scales:this.scales,groupedDots:i,trendsData:o,legendData:this.legend,columnsCount:this.columnsCount,margins:this.margins,keyColumn:s,mainTitle:this.mainTitle,facetTitles:this.facetTitles,captionsSizes:this.captionsSizes,onlyPositive:c,layersData:A,aesGetters:y9t(h)});this.component=D,(O=this.reactRoot)==null||O.render(D)}renderError(e){var t;(t=this.reactRoot)==null||t.render(le.jsx(Fm,{message:e}))}},C9t=w9t,b9t=class{constructor(e){Me(this,"type","dots");Me(this,"aes",{dotFill:Zt,dotShape:"21",dotSize:3,opacity:1});this.aes={...this.aes,...e.aes}}},E9t=class{constructor(e){Me(this,"type","curve");Me(this,"smoothing");Me(this,"aes",{lineColor:Zt,lineWidth:1,lineShape:"solid",opacity:1});this.smoothing=e.smoothing??!1,this.aes={...this.aes,...e.aes}}},uZ=class{constructor(e){Me(this,"id");Me(this,"type","scatterplot");Me(this,"keyColumn");Me(this,"facetSettings");Me(this,"x");Me(this,"y");Me(this,"facetBy");Me(this,"grouping");Me(this,"label");Me(this,"chartSettings");Me(this,"inheritedAes");Me(this,"trend");Me(this,"layers");var t,n,r,a;W3t.parse(e),this.id=Ir.uniqueId("settings"),this.keyColumn=e.keyColumn,this.facetSettings={sharedX:!0,sharedY:!0,titlePosition:"left",...e.facetSettings},this.x=e.x,this.y=e.y,this.facetBy=e.facetBy??[],this.grouping=e.grouping??[],this.label=e.label??null,this.chartSettings={size:{width:((t=e==null?void 0:e.size)==null?void 0:t.width)??(this.facetBy.length?400:600),height:((n=e==null?void 0:e.size)==null?void 0:n.height)??(this.facetBy.length?250:350)},title:{position:"center",show:!0,...e.title,name:((r=e.title)==null?void 0:r.name)??"Chart"},yAxis:{title:e.y.label??e.y.value,scale:"linear",showGrid:!0,showTicks:!0,...e.yAxis},xAxis:{title:e.x.label??e.x.value,scale:"linear",showGrid:!0,showTicks:!0,...e.xAxis},frame:{type:((a=e.frame)==null?void 0:a.type)??"full"},legend:{show:!0,position:"right",...e.legend},tooltips:{show:!0,...e.tooltips}},this.inheritedAes=e.inheritedAes??{},this.trend=e!=null&&e.trend?{bounded:e.trend.bounded??!1,color:e.trend.color??Zt}:null,this.layers=e.layers.map(i=>{if(i.type==="dots")return new b9t(i);if(i.type==="curve")return new E9t(i);vA(i,"Unknown layer type")}).filter(Boolean)}},x9t=oht(r3t()),cZ=.05;function S9t(e){let t=3.3871328727963665,n=133.14166789178438,r=1971.5909503065513,a=13731.69376550946,i=45921.95393154987,o=67265.7709270087,s=33430.57558358813,c=2509.0809287301227,f=42.31333070160091,A=687.1870074920579,h=5394.196021424751,m=21213.794301586597,g=39307.89580009271,b=28729.085735721943,C=5226.495278852854,x=1.4234371107496835,k=4.630337846156546,_=5.769497221460691,D=3.6478483247632045,O=1.2704582524523684,I=.2417807251774506,$=.022723844989269184,Q=.0007745450142783414,q=2.053191626637759,re=1.6763848301838038,ee=.6897673349851,z=.14810397642748008,j=.015198666563616457,K=.0005475938084995345,Y=10507500716444169e-25,X=6.657904643501103,oe=5.463784911164114,me=1.7848265399172913,ae=.29656057182850487,ye=.026532189526576124,Ce=.0012426609473880784,ce=27115555687434876e-21,ge=20103343992922881e-23,ze=.599832206555888,Ne=.1369298809227358,Ge=.014875361290850615,Oe=.0007868691311456133,Xe=18463183175100548e-21,dt=1421511758316446e-22,Ye=20442631033899397e-31,rt=e-.5,He,$e;return Math.abs(rt)<=.425?(He=.180625-rt*rt,$e=rt*(((((((c*He+s)*He+o)*He+i)*He+a)*He+r)*He+n)*He+t)/(((((((C*He+b)*He+g)*He+m)*He+h)*He+A)*He+f)*He+1),$e):(He=e,He=Math.sqrt(-Math.log(He)),He<=5?(He+=-1.6,$e=(((((((Q*He+$)*He+I)*He+O)*He+D)*He+_)*He+k)*He+x)/(((((((Y*He+K)*He+j)*He+z)*He+ee)*He+re)*He+q)*He+1)):(He+=-5,$e=(((((((ge*He+ce)*He+Ce)*He+ye)*He+ae)*He+me)*He+oe)*He+X)/(((((((Ye*He+dt)*He+Xe)*He+Oe)*He+Ge)*He+Ne)*He+ze)*He+1)),$e=-$e,$e)}function fZ(e,t){let{sin:n,cos:r,sqrt:a,pow:i,exp:o,PI:s}=Math,c,f;if(t==1)return r(e*s/2)/n(e*s/2);if(t==2)return a(2/(e*(2-e))-2);let A=1/(t-.5),h=48/(A*A),m=((20700*A/h-98)*A-16)*A+96.36,g=((94.5/(h+m)-3)/h+1)*a(A*s*.5)*t;return c=g*e,f=i(c,2/t),f>.05+A?(c=S9t(e/2),f=c*c,t<5&&(m=m+.3*(t-4.5)*(c+.6)),m=(((.05*g*c-5)*c-7)*c-2)*c+h+m,f=(((((.4*f+6.3)*f+36)*f+94.5)/m-f-3)/h+1)*c,f=A*f*f,f>.002?f=o(f)-1:f=.5*f*f+f):f=((1/(((t+6)/(t*f)-.089*g-.822)*(t+2)*3)+.5/(t+4))*f-1)*(t+1)/(t+2)+1/f,a(t*f)}function B9t(e){let t=e.length,n=0,r=0,a=0,i=0;for(let c=0;c<e.length;++c){let f=e[c].x,A=e[c].y;if(!Number.isFinite(f)||!Number.isFinite(A)){--t;continue}n+=f,r+=A,a+=f*A,i+=f*f}let o=(t*a-n*r)/(t*i-n*n),s=(r-o*n)/t;return[o,s]}function k9t(e,t,n){let r=A=>A*t+n,a=e.length,i=Sc(e,A=>A.x)/e.length,o=fZ(cZ,a-2),s=Math.sqrt(Sc(e,A=>(A.y-r(A.x))**2)/(a-2)/Sc(e,A=>(A.x-i)**2)),c=s*o,f=s*Math.sqrt(Sc(e,A=>A.x**2)/a)*o;return{slope:t,intercept:n,slopeError:c,interceptError:f}}function T9t(e,t){let n=Sc(e,s=>s.x)/e.length,r=0,a=0;for(let s=0;s<e.length;++s)r+=Math.pow(e[s].x-n,2),a+=Math.pow(e[s].y-t(e[s].x),2);let i=Math.sqrt(a/(e.length-2)),o=fZ(cZ,e.length-2);return function(s){let c=t(s),f=i*Math.sqrt(1/e.length+Math.pow(s-n,2)/r),A=c-o*f,h=c+o*f;return{x:s,y:c,left:isNaN(A)?c:A,right:isNaN(h)?c:h}}}function _9t(e){let t=e.length;return Math.pow((t*Sc(e,n=>n.x*n.y)-Sc(e,n=>n.x)*Sc(e,n=>n.y))/(Math.sqrt(t*Sc(e,n=>n.x*n.x)-Math.pow(Sc(e,n=>n.x),2))*Math.sqrt(t*Sc(e,n=>n.y*n.y)-Math.pow(Sc(e,n=>n.y),2))),2)}function P9t(e,t){let n=tu(e,t);return tu(e.map(r=>(t(r)-n)**2))}function dZ(e,t){return Math.sqrt(P9t(e,t))}function M9t(e,t,n){let r=tu(e,t),a=tu(e,n),i=e.length;return Sc(e,o=>(o.x-r)*(o.y-a))/i}function D9t(e){let t=M9t(e,a=>a.x,a=>a.y),n=dZ(e,a=>a.x),r=dZ(e,a=>a.y);return t/(n*r)}function H9t(e,t){let n=e.length,r=1,a=1,i=n-r-1,o=tu(e,m=>m.y),s=Sc(e,m=>(t(m.x)-o)**2),c=Sc(e,m=>(t(m.x)-m.y)**2),f=s/a,A=c/i,h=f/A;return 1-(0,x9t.default)(h,a,i)}function I9t(e,t,n,r,a){return a?t.reduce((i,o)=>{let s=e[o].dots;return i[o]=n.map(c=>{let f=s.filter(x=>r.every((k,_)=>String(x.data[k.value])===c[_])),[A=0,h=0]=$A(f,x=>x.x),[m,g]=B9t(f),b=x=>m*x+g,C=T9t(f,b);return{predict:b,getInterval:C,getArea:(x,k,_)=>VB().x(D=>x(D.x)).y0(D=>k(D.left)).y1(D=>k(D.right))(_.map(C))??"",color:a.color,bounded:a.bounded,data:f[0].data,showStats:!0,xBounds:[A,h],stats:{r2:_9t(f),r:D9t(f),pValue:H9t(f,b),coefficients:k9t(f,m,g)}}}),i},{}):null}function AZ(e){if(!e.length)return[];let t=[[]];return e.forEach(n=>{let r=[];n.forEach(a=>{r.push(...t.map(i=>[...i,a]))}),t=r}),t}function pZ(e){return typeof e=="object"&&"type"in e&&e.type==="grouping"}function L9t(e,t,n,r){return t.reduce((a,i)=>{let o=Ir.uniqBy(e.rows,h=>h[i.value]),s=h=>String(h[i.value]),c=h=>i.valueLabels?String(h[i.valueLabels]):s(h),f=new Set;n.forEach(h=>{h.aes&&Object.entries(h.aes).forEach(([m,g])=>{pZ(g)&&g.value===i.value&&f.add(m)})});let A=o.reduce((h,m)=>(h[s(m)]=c(m),h),{});return a[i.value]={values:o.map(s).filter(h=>h!=="null").sort((h,m)=>A[h].localeCompare(A[m],"en",{numeric:!0})),usedAes:[...f],aesMap:r[i.value],labels:A},a},{})}var R9t=class extends Sg{constructor(t,n){super(t,n);Me(this,"settings");Me(this,"chartRenderer",new C9t);Me(this,"calculatedData",null);this.settings=new uZ(n)}mount(t){try{this.chartRenderer.init(t),this._updateData(),this._updateChart()}catch(n){n instanceof Error&&this.chartRenderer.renderError(n.message)}}unmount(){this.chartRenderer.clear()}updateSettingsAndData(t,n){try{let r=this.settings,a=this.data;this.settings=new uZ(n),this.data=t,this._needUpdateCalculatedDataBySettings(r,this.settings)||this._needUpdateCalculatedDataByData(a,this.data)?this._updateData():this._updateAesInData(),this._updateChart()}catch(r){r instanceof Error&&this.chartRenderer.renderError(r.message)}}updateChartState(t,n){console.warn("no chart state for scatterplot")}export(){return this._updateChart(),f3(this.chartRenderer.component)}_needUpdateCalculatedDataBySettings(t,n){var r,a,i,o;return t.facetBy.some((s,c)=>{var f;return s.value!==((f=n.facetBy[c])==null?void 0:f.value)})||t.grouping.length!==n.grouping.length||t.grouping.some((s,c)=>{var f;return s.value!==((f=n.grouping[c])==null?void 0:f.value)})||(((r=t.label)==null?void 0:r.value)||((a=n.label)==null?void 0:a.value))&&((i=t.label)==null?void 0:i.value)!==((o=n.label)==null?void 0:o.value)||t.layers.length!==n.layers.length||t.layers.some((s,c)=>s.type!==n.layers[c].type)||!!t.trend!=!!n.trend}_needUpdateCalculatedDataByData(t,n){let r=Object.keys(t.data),a=Object.keys(n.data);return t.id!==n.id||r.length!==a.length||r.some(i=>{var o;return t.data[i].length!==((o=n.data[i])==null?void 0:o.length)})}_updateData(){let{x:t,y:n,facetBy:r,grouping:a,keyColumn:i,trend:o,layers:s,inheritedAes:c,label:f}=this.settings,A=this.data.getColumnCategories(i.value),h=r.map($=>this.data.getColumnCategories($.value)),m=a.map($=>this.data.getColumnCategories($.value)),g=h.length?AZ([...h]):[["null"]],b=m.length?AZ([...m]):[["null"]],C=r.map($=>$.value)??null;this.data.setGrouping([...C,i.value]);let x={x:this.data.rows.every($=>{let Q=$[t.value];return Q===null||!(Number(Q)<0)}),y:this.data.rows.every($=>{let Q=$[n.value];return Q===null||!(Number(Q)<0)})},k=Gwt(this.data,g,t,n,f,A),_=Object.keys(k),D=I9t(k,_,b,a,o),O=L9t(this.data,a,s,c),I=Ywt(s,_,k,b,a);this.calculatedData={onlyPositive:x,dotsByFacets:k,facetKeys:_,facetKeysCombinations:g,trendsData:D,legendLabels:O,layersData:I}}_updateAesInData(){let t=this.calculatedData;if(!t)return;let{grouping:n,trend:r,layers:a,inheritedAes:i}=this.settings,{facetKeys:o,trendsData:s}=t;o.forEach(c=>{for(let f=0;f<a.length;f++)t.layersData[c][f].info=a[f]}),n.forEach(c=>{let f=new Set;a.forEach(A=>{A.aes&&Object.entries(A.aes).forEach(([h,m])=>{pZ(m)&&m.value===c.value&&f.add(h)})}),t.legendLabels[c.value].usedAes=[...f],t.legendLabels[c.value].aesMap=i[c.value]}),s&&r&&Object.keys(s).forEach(c=>{s[c].forEach(f=>{f.color=r.color,f.bounded=r.bounded})})}_updateChart(){if(!this.calculatedData)return;let{id:t,chartSettings:n,facetSettings:r,grouping:a,keyColumn:i,inheritedAes:o,layers:s}=this.settings;this.chartRenderer.render(t,n,r,this.calculatedData.facetKeys,this.calculatedData.facetKeysCombinations,this.calculatedData.dotsByFacets,this.calculatedData.trendsData,i,this.calculatedData.onlyPositive,this.calculatedData.legendLabels,this.calculatedData.layersData,o,a,s)}},rE={TOP:30,BOTTOM:30,LEFT:30,RIGHT:30},x9=20,hZ=4,$P=24;function N9t(e,t,n=[]){let r=e.data,a=[`x: ${Ki(e.x)}`,`y: ${Ki(e.y)}`];t.label&&a.unshift(`${t.label}: ${r[t.label]}`);for(let i of n)a.push(`${i.label}: ${r[i.valueLabels??i.value]}`);return a}function mZ(e){return typeof e=="string"?e:e.label??e.value}var vZ=d3().curve(A3);function $9t({scales:e,chartSettings:t,mainTitle:n,keyColumn:r,margins:a,chartSizes:i,onlyPositive:o,container:s,zoomStateKey:c,legendData:f,dotsByGrouping:A,layers:h,aesGetters:m,selectedDot:g=null}){var j;let{title:b,xAxis:C,yAxis:x,frame:k,legend:_}=t,D=C.showTicks?hZ:0,O=x.showTicks?hZ:0,I=C.title,$=x.title,Q={left:0,right:i.chartWidth,top:0,bottom:i.chartHeight};if(!s)return null;let q=h.find(K=>K.type==="curve"),[re,ee]=Vn.useState([]);function z(){let K=Object.entries(A).map(([Y,X])=>({key:Y,d:q!=null&&q.smoothing?vZ(X)??"":X.map(oe=>`${e.x(oe.x)},${e.y(oe.y)}`).join(" "),dot:X[0]}));ee(K)}return Vn.useEffect(()=>{q&&(vZ.x(K=>e.x(K.x)).y(K=>e.y(K.y)),z())},[c]),Vn.useEffect(()=>{q&&z()},[q==null?void 0:q.smoothing]),le.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${i.totalWidth} ${i.totalHeight}`,width:i.totalWidth,height:i.totalHeight,style:{pointerEvents:"none"},children:[le.jsx("defs",{children:Tg}),le.jsxs("g",{transform:`translate(${a.left},${a.top})`,fontFamily:"Manrope",children:[le.jsx("clipPath",{id:"viewportClipPath",children:le.jsx("rect",{x:"0",y:"0",width:i.chartWidth,height:i.chartHeight})}),le.jsx(d2,{title:n,show:b.show,position:b.position,leftPadding:a.left,rightPadding:a.right,chartsWidth:i.chartWidth}),le.jsxs("g",{dominantBaseline:"central",textAnchor:"middle",fontWeight:"500",fontSize:"14px",fill:Zt,children:[I&&le.jsx("text",{x:i.chartWidth/2,y:i.chartHeight+a.bottom-x9/2,children:mZ(I)}),$&&le.jsx("text",{x:-a.left+x9/2,y:i.chartHeight/2,transform:`rotate(-90,${-a.left+x9/2},${i.chartHeight/2})`,children:mZ($)})]}),le.jsx(eZ,{width:i.chartWidth,height:i.chartHeight,scaleX:e.x,scaleY:e.y,axisX:C,axisY:x,updatingKey:c,frameType:k.type}),le.jsx("g",{transform:`translate(0,${i.chartHeight})`,children:le.jsx(nE,{scale:e.x,orient:"bottom",onlyPositive:o.x,tickSize:D})}),le.jsx("g",{children:le.jsx(nE,{scale:e.y,orient:"left",onlyPositive:o.y,tickSize:O})}),q&&q.smoothing&&le.jsx("g",{clipPath:"url(#viewportClipPath)",children:re.map(({key:K,d:Y,dot:X})=>le.jsx("path",{d:Y,fill:"none",stroke:m.dotFill(X.data),strokeWidth:q.aes.lineWidth,strokeDasharray:m.lineType(X.data)},K))}),q&&!q.smoothing&&le.jsx("g",{clipPath:"url(#viewportClipPath)",children:re.map(({key:K,d:Y,dot:X})=>le.jsx("polyline",{points:Y,fill:"none",stroke:m.dotFill(X.data),strokeWidth:q.aes.lineWidth,strokeDasharray:m.lineType(X.data)},K))}),g&&le.jsx(oc,{content:N9t(g,r,(j=t.tooltips)==null?void 0:j.content),x:e.x(g.x),y:e.y(g.y),active:!0,sideDistances:Q,container:s}),_.show&&le.jsx("g",{transform:`translate(${i.chartWidth+$P},0)`,children:le.jsx(w9,{legendData:f})})]})]})}var F9t=yb.memo($9t),V9t=20;function O9t({scales:e,chartSizes:t,disabled:n,onPolygonUpdate:r}){let[a,i]=Vn.useState([]),[o,s]=Vn.useState(null),[c,f]=Vn.useState(null),A=Vn.useRef(null),h=Vn.useRef(null),m=Vn.useRef(null),g=Vn.useRef(a);function b(){A.current=null,h.current=null,m.current=null,g.current=[],i([]),s(null)}function C(_){n||_.key!=="Escape"||b()}Vn.useEffect(()=>{n&&(A.current=null,h.current=null,m.current=null,s(null))},[n]),Vn.useEffect(()=>(document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)),[]),Vn.useEffect(()=>{if(o&&c)return;if(a.length===0){r([]);return}let _=a.map(D=>D[0]);_.push(a[a.length-1][1]),r(_)},[a]);function x(){if(!A.current||n)return;let _=[...A.current],D=e.x.invert(_[0]),O=e.y.invert(_[1]),I=g.current,$=m.current,Q=h.current&&I.length>1?Math.sqrt((_[0]-h.current[0])**2+(_[1]-h.current[1])**2):1/0;m.current?m.current&&Q>V9t?(I=[...I,[m.current,[D,O]]],$=[D,O]):(I=[...I,[m.current,[D,O]]],I.length>2&&(I=[...I,[I[I.length-1][1],I[0][0]]]),$=null,I.length<=2?r([]):r(I.map(q=>q[0])),h.current=null):(h.current=_,I=[],$=[D,O],r([])),i(I),s($),g.current=I,m.current=$}function k(_){let D=[_.nativeEvent.offsetX,_.nativeEvent.offsetY];f(D),A.current=D}return le.jsxs("g",{children:[le.jsx("rect",{fill:"transparent",width:t.chartWidth,height:t.chartHeight,onMouseMove:k,onClick:x}),a.map(([_,D],O)=>le.jsx("line",{x1:e.x(_[0]),y1:e.y(_[1]),x2:e.x(D[0]),y2:e.y(D[1]),stroke:Zt,style:{pointerEvents:"none"}},O)),o&&c&&le.jsx("line",{x1:e.x(o[0]),y1:e.y(o[1]),x2:c[0],y2:c[1],stroke:Zt,style:{pointerEvents:"none"}},"lastLine")]})}function Q9t({scales:e,container:t,labels:n,aesGetters:r,chartSizes:a,onPolygonUpdate:i,lassoMode:o,selectedDot:s=null}){return t?le.jsxs("g",{children:[n.map(c=>{let{name:f,height:A,bbox:h,width:m}=c;return le.jsx("g",{children:le.jsxs("g",{transform:`translate(${h.minX},${h.minY})`,children:[le.jsx("rect",{x:"0",y:"0",width:m,height:A,fill:"transparent",stroke:"none"}),le.jsx("text",{x:0,y:A/2,stroke:"white",strokeWidth:2,paintOrder:"stroke",style:{pointerEvents:"none"},fontFamily:"Manrope",fontSize:"16px",dominantBaseline:"middle",children:f})]})},c.dot.id)}),le.jsx(O9t,{scales:e,chartSizes:a,disabled:!o,onPolygonUpdate:i}),s&&le.jsx("circle",{cx:e.x(s.x),cy:e.y(s.y),r:5,fill:r.dotFill(s.data)})]}):null}var z9t=Q9t;function U9t({settingsId:e,scales:t,chartSettings:n,mainTitle:r,keyColumn:a,margins:i,chartSizes:o,captionsSizes:s,onlyPositive:c,container:f,zoomStateKey:A,aesGetters:h,legendData:m,labels:g,onPolygonUpdate:b,lassoMode:C,dotsByGrouping:x,layers:k,selectedDot:_=null}){return f?le.jsx("div",{children:le.jsxs(f2,{dataId:e,children:[le.jsx(F9t,{aesGetters:h,dotsByGrouping:x,layers:k,scales:t,keyColumn:a,margins:i,mainTitle:r,captionsSizes:s,chartSettings:n,chartSizes:o,onlyPositive:c,container:f,selectedDot:_,zoomStateKey:A,legendData:m}),HB.createPortal(le.jsx(z9t,{scales:t,container:f,aesGetters:h,labels:g,chartSizes:o,selectedDot:_,onPolygonUpdate:b,lassoMode:C}),f)]})}):null}var gZ=e=>e.selection()!==e,yZ=(e,t)=>{e=e||"g";let n=(i,o)=>o,r=null,a=function(i,o){o=o||(g=>g);let s=i.selection(),c=gZ(i)?i:null,f=s.selectChildren(t==null?e:`${e}.${t}`).data(o,n),A=f.enter().append(e).attr("class",t),h=f.exit();f=f.merge(A);let m=c||r;return m&&(f=f.transition(m).style("opacity",1),A.style("opacity",1e-6),h=h.transition(m).style("opacity",1e-6)),h.remove(),f.enter=()=>A,f.exit=()=>h,f};return a.element=(...i)=>i.length?(e=i[0],a):e,a.className=(...i)=>i.length?(t=i[0],a):t,a.key=(...i)=>i.length?(n=i[0],a):n,a.transition=(...i)=>i.length?(r=i[0],a):r,a},wZ=(e,t,n)=>{let r=t[n];if(typeof r!="function")throw new Error(`Attempt to rebind ${n} which isn't a function on the source object`);return(...a)=>{var i=r.apply(t,a);return i===t?e:i}},CZ=(e,t,...n)=>{for(let r of n)e[r]=wZ(e,t,r);return e},j9t=e=>t=>e.reduce((n,r)=>n&&r(n),t),FP=(e,t,...n)=>{let r=j9t(n);for(let a of Object.keys(t)){let i=r(a);i&&(e[i]=wZ(e,t,a))}return e},G9t=e=>e.map(t=>typeof t=="string"?new RegExp(`^${t}$`):t),Y9t=(...e)=>(e=G9t(e),t=>e.every(n=>!n.test(t))&&t),g2=e=>typeof e=="function"?e:()=>e;function W9t(){let e=arguments;return function(t,n){for(let r=0,a=e.length;r<a;r++)if(e[r](t,n)==null)return!1;return!0}}var X9t=(e,t)=>{switch(e){case"left":return t/2;case"right":return-t/2;default:return 0}},bZ=e=>{let t=Object.assign({},e),n=()=>{};return Object.keys(t).forEach(r=>{n[r]=(...a)=>a.length?(t[r]=a[0],n):t[r]}),n},K9t=()=>{let e=()=>0,t=s=>s.x,n=s=>s.y,r="center",a=()=>5,i="vertical",o=bZ({decorate:()=>{},defined:(s,c)=>W9t(e,t,n)(s,c),xScale:J1(),yScale:J1()});return o.values=(s,c)=>{let f=a(s,c),A=X9t(r,f),h=o.xScale(),m=o.yScale();if(i==="vertical"){let g=m(n(s,c),c),b=m(e(s,c),c),C=h(t(s,c),c)+A;return{d:s,x:C,y:g,y0:b,width:f,height:g-b,origin:[C,g],baseOrigin:[C,b],transposedX:C,transposedY:g}}else{let g=h(n(s,c),c),b=h(e(s,c),c),C=m(t(s,c),c)+A;return{d:s,x:C,y:g,y0:b,width:f,height:g-b,origin:[g,C],baseOrigin:[b,C],transposedX:g,transposedY:C}}},o.xValues=()=>i==="vertical"?[t]:[e,n],o.yValues=()=>i!=="vertical"?[t]:[e,n],o.baseValue=(...s)=>s.length?(e=g2(s[0]),o):e,o.crossValue=(...s)=>s.length?(t=g2(s[0]),o):t,o.mainValue=(...s)=>s.length?(n=g2(s[0]),o):n,o.bandwidth=(...s)=>s.length?(a=g2(s[0]),o):a,o.align=(...s)=>s.length?(r=s[0],o):r,o.orient=(...s)=>s.length?(i=s[0],o):i,o},Z9t=()=>{let e=K9t(),t=g2(64),n=X$,r=e9(),a=e9(),i=e9().type(nh.UNSIGNED_SHORT),o=e9().type(nh.UNSIGNED_BYTE),s=L0t().crossValueAttribute(r).mainValueAttribute(a).sizeAttribute(i).definedAttribute(o),c=(b,C)=>!1,f=z0t,A=[],h=null,m=null,g=b=>{let C=f(e.xScale()),x=f(e.yScale()),k=!c(A,b);k&&(A=b,i.value((_,D)=>t(_,D)).data(b),o.value((_,D)=>e.defined()(_,D)).data(b)),(k||C.scale!==h)&&(h=C.scale,e.orient()==="vertical"?r.value((_,D)=>C.scale(e.crossValue()(_,D))).data(b):r.value((_,D)=>C.scale(e.mainValue()(_,D))).data(b)),(k||x.scale!==m)&&(m=x.scale,e.orient()==="vertical"?a.value((_,D)=>x.scale(e.mainValue()(_,D))).data(b):a.value((_,D)=>x.scale(e.crossValue()(_,D))).data(b)),s.xScale(C.webglScale).yScale(x.webglScale).type(K0t(n)).decorate(_=>e.decorate()(_,b,0)),s(b.length)};return g.size=(...b)=>b.length?(t=g2(b[0]),g):t,g.type=(...b)=>b.length?(n=b[0],g):n,g.equals=(...b)=>b.length?(c=b[0],g):c,g.scaleMapper=(...b)=>b.length?(f=b[0],g):f,FP(g,e,Y9t("baseValue","bandwidth","align")),CZ(g,s,"context","pixelRatio"),g},EZ=()=>{let e=[],t=a=>a,n=(a,i)=>i,r=bZ({decorate:()=>{},xScale:J1(),yScale:J1()});return r.xValues=()=>e.map(a=>a.xValues()).reduce((a,i)=>a.concat(i)),r.yValues=()=>e.map(a=>a.yValues()).reduce((a,i)=>a.concat(i)),r.mapping=(...a)=>a.length?(t=a[0],r):t,r.key=(...a)=>a.length?(n=a[0],r):n,r.series=(...a)=>a.length?(e=a[0],r):e,r},J9t=()=>{let e=EZ(),t=yZ("g"),n=yZ("g","multi"),r=a=>{gZ(a)&&(n.transition(a),t.transition(a));let i=e.mapping(),o=e.series(),s=e.xScale(),c=e.yScale();a.each((f,A,h)=>{let m=n(iu(h[A]),o);m.each((g,b,C)=>{g.xScale(s).yScale(c);let x=i(f,b,o);t(iu(C[b]),[x]).call(g)}),m.selection().order(),e.decorate()(m,f,A)})};return FP(r,e),CZ(r,n,"key"),r},q9t=()=>{let e=null,t=1,n=EZ(),r=a=>{let i=n.mapping(),o=n.series(),s=n.xScale(),c=n.yScale();o.forEach((f,A)=>{let h=i(a,A,o);f.context(e).pixelRatio(t).xScale(s).yScale(c);let m;f.decorate?(m=f.decorate(),f.decorate((g,b,C)=>{n.decorate()(g,a,A),m(g,b,C)})):n.decorate()(e,a,A),f(h),m&&f.decorate(m)})};return r.context=(...a)=>a.length?(e=a[0],r):e,r.pixelRatio=(...a)=>a.length?(t=a[0],r):t,FP(r,n),r};function e4t(e){return typeof e=="object"&&e!==null&&"type"in e&&"value"in e&&e.type==="grouping"}function aE(e={},t,n){return function(r){var a,i;if(e4t(n)){let o=n.value,s=r[o];return(i=((a=e[o])==null?void 0:a[String(s)])??hP)==null?void 0:i[t]}if($m(n)&&t==="dotFill"){let{domain:o,range:s,type:c="linear"}=n;return q8(s,o,c)(Number(r[n.columnName.value]))}return n}}var t4t=class{constructor(){Me(this,"reactRoot",null);Me(this,"parentNode",null);Me(this,"rootNode",null);Me(this,"canvasNode",null);Me(this,"svgLayerElement",null);Me(this,"svgLayerComponent",le.jsx(le.Fragment,{}));Me(this,"tools",null);Me(this,"margins",{top:qf,bottom:qf,left:qf,right:qf});Me(this,"chartSizes",{chartWidth:600,chartHeight:350,totalWidth:600,totalHeight:350});Me(this,"scales",{x:Da().domain([0,10]).range([0,600]),y:Da().domain([0,10]).range([350,0]),xOriginal:Da().domain([0,10]).range([0,600]),yOriginal:Da().domain([0,10]).range([350,0])});Me(this,"polygon",[]);Me(this,"onPolygonUpdateOutside",()=>{});Me(this,"zoomStateKey","");Me(this,"selectedDot",null);Me(this,"captionsSizes",{xAxisCaptionsWidth:30,yAxisCaptionsWidth:100});Me(this,"mainTitle",[]);Me(this,"legend",{width:0,height:0,items:[]});Me(this,"notCalculatedProps",{});Me(this,"allPossibleLabels",[]);Me(this,"visibleLabels",[]);Me(this,"lassoMode",!1);Me(this,"onPolygonUpdate",e=>{this.polygon=e,this.updateByLasso(),this.onPolygonUpdateOutside(e)})}clear(){var e,t;this.parentNode&&this.rootNode&&this.canvasNode&&((e=this.parentNode)==null||e.removeChild(this.rootNode),(t=this.parentNode)==null||t.removeChild(this.canvasNode),this.parentNode=null,this.rootNode=null,this.canvasNode=null,this.svgLayerElement=null,this.tools=null),setTimeout(()=>{var n;(n=this.reactRoot)==null||n.unmount(),this.reactRoot=null})}init(e){this.parentNode===null&&(this.parentNode=e,this.rootNode=document.createElement("div"),this.canvasNode=document.createElement("div"),this.parentNode.appendChild(this.rootNode),this.parentNode.appendChild(this.canvasNode),this.reactRoot=zh(this.rootNode))}updateChartSizes(e){this.chartSizes.chartWidth=e.width,this.chartSizes.chartHeight=e.height}updateViewport(e,t,n){let r=e.scale==="log"?Rv():Da(),{minX:a,minY:i,maxX:o,maxY:s}=n;if(e.lowerValue!==void 0&&(a=Math.max(a,e.lowerValue)),e.upperValue!==void 0&&(o=Math.min(o,e.upperValue)),t.lowerValue!==void 0&&(i=Math.max(i,t.lowerValue)),t.upperValue!==void 0&&(s=Math.min(s,t.upperValue)),e.symmetricRange!==void 0){let g=e.symmetricRange;if(g>=a&&g<=o){let b=Math.max(g-a,o-g);a=g-b,o=g+b}}if(typeof t.symmetricRange<"u"){let g=t.symmetricRange;if(g>=i&&g<=s){let b=Math.max(g-i,s-g);i=g-b,s=g+b}}let c=[0,this.chartSizes.chartWidth],f=r.copy().domain([a,o]).range([rE.LEFT,this.chartSizes.chartWidth-rE.RIGHT]);r.domain([f.invert(0),f.invert(this.chartSizes.chartWidth)]).range(c).nice(),this.scales.x=r,this.scales.xOriginal=r.copy();let A=t.scale==="log"?Rv():Da(),h=[this.chartSizes.chartHeight,0],m=A.copy().domain([i,s]).range([this.chartSizes.chartHeight-rE.BOTTOM,rE.TOP]);A.domain([m.invert(this.chartSizes.chartHeight),m.invert(0)]).range(h).nice(),this.scales.y=A,this.scales.yOriginal=A.copy()}updateCaptionsSize(e){let t=new Dc("600 14px Arial");function n(o){return Math.max(...o.map(s=>t.getTextWidth(s)))}let{ticks:r,format:a}=E9(this.scales.y,e),i=n(r.map(a));this.captionsSizes={xAxisCaptionsWidth:20,yAxisCaptionsWidth:i}}createMainTitle(e){this.mainTitle=Om(e.name,this.chartSizes.totalWidth-this.margins.left-this.margins.right,20)}updateMargins(){let e=24*this.mainTitle.length,t=e>0?e+24*2:0;this.margins={top:Math.max(t,qf),bottom:qf+this.captionsSizes.xAxisCaptionsWidth+x9,left:qf+this.captionsSizes.yAxisCaptionsWidth+x9,right:this.legend.width+(this.legend.width>0?$P:0)+qf},this.chartSizes.totalWidth=this.margins.left+this.chartSizes.chartWidth+this.margins.right,this.chartSizes.totalHeight=this.margins.top+Math.max(this.chartSizes.chartHeight,this.legend.height)+this.margins.bottom,iu(this.canvasNode).style("width",this.chartSizes.chartWidth+"px").style("height",this.chartSizes.chartHeight+"px").style("top",this.margins.top+"px").style("left",this.margins.left+"px")}updateLegendSize(e,t,n,r){if(!e.show){this.legend={width:0,height:0,items:[]};return}let a=[],i={width:0,height:0,left:0,top:0};if(n.forEach(A=>{let h=t[A.value];if(h.usedAes.length===0||!h.aesMap)return;let m={};h.values.forEach(C=>{m[C]||(m[C]={...mP}),h.usedAes.forEach(x=>{var k,_;x==="dotFill"&&(m[C].color=((k=h.aesMap[C])==null?void 0:k[x])??Zt),x==="dotSize"&&(m[C].size=((_=h.aesMap[C])==null?void 0:_[x])??3)})});let g=A.label??A.value,b=Hl().domain(h.values).range(h.values.map(C=>m[C]));a.push({...i,id:A.value,type:"dots",title:g,scale:b,values:h.values,labels:h.labels})}),r.forEach(A=>{if(A.type==="dots"&&$m(A.aes.dotFill)){let{domain:h,range:m,columnName:g,type:b="linear"}=A.aes.dotFill,C=g.label??g.value,x=q8(m,h,"linear"),k=(b==="log"?q1():Da()).domain(h).range([height,0]),_=a2(k,h);a.push({...i,id:"dotFill",type:"continuous",title:C,scale:x,tickPositionScale:k,values:_})}}),!a.length){this.legend={width:0,height:0,items:[]};return}let o=C9(a,this.chartSizes.chartHeight),s=o[o.length-1],c=s.left+s.width+2*$P,f=this.chartSizes.chartHeight;this.legend={width:c,height:f,items:o}}initSettings(e,t,n,r,a,i,o,s){let{xAxis:c,yAxis:f,size:A,title:h,legend:m}=t;this.updateChartSizes(A),this.updateViewport(c,f,n),this.updateCaptionsSize(r.y),this.updateLegendSize(m,o,s,i),this.createMainTitle(h),this.updateMargins();let g=i.find($=>$.type==="dots"),b=i.find($=>$.type==="curve"),C={dotFill:aE(a,"dotFill",g.aes.dotFill),lineType:aE(a,"lineShape",(b==null?void 0:b.aes.lineShape)??"solid")},x=J0t().data(e).value($=>{let Q=Ly(C.dotFill($.data));return[Q.r/255,Q.g/255,Q.b/255,1]}),k=Z9t().equals(($,Q)=>$===Q).size(50).crossValue($=>$.x).mainValue($=>$.y).decorate($=>x($)),_=t0t().scaleExtent([.1,1e3]).filter(()=>!this.lassoMode).on("start",()=>{this.selectedDot=null}).on("zoom",$=>{let Q=$.transform,q=Q.rescaleX(this.scales.xOriginal),re=Q.rescaleY(this.scales.yOriginal);this.scales.x.domain(q.domain()),this.scales.y.domain(re.domain()),this.zoomStateKey=`${Q.x}_${Q.y}_${Q.k}`,this.renderSvgLayer(),this.renderWebglLayer()}).on("end",()=>{this.allPossibleLabels.forEach($=>{$.x=this.scales.x($.dot.x),$.y=this.scales.y($.dot.y)}),this.visibleLabels=tE(this.allPossibleLabels,this.chartSizes.chartWidth,this.chartSizes.chartHeight),this.renderSvgLayer()}),D=N_().x($=>$.x).y($=>$.y).addAll(e),O=q0t().on("point",([$])=>{var z,j;if(!$){this.selectedDot=null,this.renderSvgLayer();return}let Q=this.scales.x.invert($.x),q=this.scales.y.invert($.y),re=(z=this.tools)==null?void 0:z.qt.find(Q,q),ee=this.selectedDot&&!re||!this.selectedDot&&re||((j=this.selectedDot)==null?void 0:j.id)!==(re==null?void 0:re.id);this.selectedDot=re??null,ee&&this.renderSvgLayer()}),I=_0t({xScale:this.scales.x,yScale:this.scales.y}).xAxisHeight(()=>"0").yAxisWidth(()=>"0").svgPlotArea(J9t()).webglPlotArea(q9t().series([k]).mapping($=>$)).decorate($=>{let Q=$.enter();Q&&!this.svgLayerElement&&(Q.style("grid-template-columns","0 auto 1fr auto 0"),Q.style("grid-template-rows","0 auto 1fr auto 0"),this.svgLayerElement=Q.select(".svg-plot-area.plot-area svg").node()),Q.select(".svg-plot-area.plot-area").call(_).call(O)});this.tools={webglChart:I,zoom:_,qt:D,fillColor:x,pointSeries:k,aesGetters:C},iu(this.canvasNode).datum(e).style("position","absolute").style("width",this.chartSizes.chartWidth+"px").style("height",this.chartSizes.chartHeight+"px").style("top",this.margins.top+"px").style("left",this.margins.left+"px")}updateAes(e,t){var i;if(this.tools===null)return;let n=t.find(o=>o.type==="dots"),r=t.find(o=>o.type==="curve"),a={dotFill:aE(e,"dotFill",n.aes.dotFill),lineType:aE(e,"lineShape",(r==null?void 0:r.aes.lineShape)??"solid")};this.tools.aesGetters=a,(i=this.tools)==null||i.fillColor.value(o=>{var A;let s=((A=this.tools)==null?void 0:A.aesGetters.dotFill)??(()=>Zt),c=Ly(s(o.data)),f=this.polygon.length<2||dX(this.polygon,[o.x,o.y])?1:.2;return[c.r/255,c.g/255,c.b/255,f]})}updateByLasso(){var e;this.tools!==null&&((e=this.tools)==null||e.fillColor.value(t=>{var i;let n=((i=this.tools)==null?void 0:i.aesGetters.dotFill)??(()=>Zt),r=Ly(n(t.data)),a=this.polygon.length<2||dX(this.polygon,[t.x,t.y])?1:.4;return[r.r/255,r.g/255,r.b/255,a]}),this.renderWebglLayer())}updateData(e){this.tools!==null&&(iu(this.canvasNode).datum(e),this.tools.fillColor.data(e),this.tools.qt=N_().x(t=>t.x).y(t=>t.y).addAll(e))}render(e,t,n,r,a,i,o,s,c,f,A,h,m,g){if(this.lassoMode=g,this.tools===null)this.initSettings(a,t,i,r,s,c,f,A),this.onPolygonUpdateOutside=m;else{let{title:b,legend:C}=t;this.updateLegendSize(C,f,A,c),this.createMainTitle(b),this.updateMargins(),this.updateAes(s,c)}this.allPossibleLabels=h,this.allPossibleLabels.forEach(b=>{b.x=this.scales.x(b.dot.x),b.y=this.scales.y(b.dot.y)}),this.visibleLabels=tE(this.allPossibleLabels,this.chartSizes.chartWidth,this.chartSizes.chartHeight),this.notCalculatedProps={settingsId:e,chartSettings:t,onlyPositive:r,keyColumn:n,dotsByGrouping:o,layers:c},this.renderWebglLayer(),this.renderSvgLayer()}renderWebglLayer(){var e,t;(e=this.tools)!=null&&e.webglChart&&iu(this.canvasNode).call((t=this.tools)==null?void 0:t.webglChart)}renderSvgLayer(){var t,n;this.visibleLabels.forEach(r=>{r.x=this.scales.x(r.dot.x),r.y=this.scales.y(r.dot.y)}),Jwt(this.visibleLabels);let e={settingsId:this.notCalculatedProps.settingsId,chartSettings:this.notCalculatedProps.chartSettings,onlyPositive:this.notCalculatedProps.onlyPositive,keyColumn:this.notCalculatedProps.keyColumn,dotsByGrouping:this.notCalculatedProps.dotsByGrouping,layers:this.notCalculatedProps.layers,chartSizes:this.chartSizes,scales:this.scales,margins:this.margins,mainTitle:this.mainTitle,captionsSizes:this.captionsSizes,container:this.svgLayerElement,zoomStateKey:this.zoomStateKey,selectedDot:this.selectedDot,aesGetters:(t=this.tools)==null?void 0:t.aesGetters,legendData:this.legend,labels:this.visibleLabels,onPolygonUpdate:this.onPolygonUpdate,lassoMode:this.lassoMode};this.svgLayerComponent=le.jsx(U9t,{...e}),(n=this.reactRoot)==null||n.render(this.svgLayerComponent)}renderError(e){var t;(t=this.reactRoot)==null||t.render(le.jsx(Fm,{message:e}))}},n4t=t4t,iE=H.object({type:H.literal("grouping"),value:H.string()}),r4t=H.object({type:H.literal("dots"),aes:H.optional(H.object({dotFill:H.optional(H.union([H.string(),iE,rh(H.string())])),dotShape:H.optional(H.union([Od,iE])),dotSize:H.optional(H.union([H.number(),iE]))}))}),a4t=H.object({type:H.literal("curve"),smoothing:H.optional(H.boolean()),aes:H.optional(H.object({lineWidth:H.optional(H.number()),lineShape:H.optional(tp),lineColor:H.optional(H.union([H.string(),iE,rh(H.string())])),opacity:H.optional(H.number())}))}),i4t=H.union([r4t,a4t]),o4t=H.object({type:H.literal("scatterplot-umap"),title:H.object({name:H.string(),show:H.optional(H.boolean()),position:H.optional(Nm)}),size:H.optional(H.object({width:H.optional(H.number()),height:H.optional(H.number())})),legend:H.optional(H.object({show:H.optional(H.boolean()),position:H.optional(Bg)})),tooltips:H.optional(H.object({show:H.optional(H.boolean()),content:H.optional(H.array(Tr))})),frame:H.optional(H.object({type:H.optional(f9)})),keyColumn:Tr,x:Tr,y:Tr,xAxis:H.optional(r2),yAxis:H.optional(r2),grouping:H.optional(H.array(Tr)),label:H.optional(Tr),inheritedAes:H.optional(H.record(H.string(),n2)),layers:H.array(i4t),lassoMode:H.optional(H.boolean())}),l4t=class{constructor(e){Me(this,"type","dots");Me(this,"aes",{dotFill:Zt,dotShape:"21",dotSize:3,opacity:1});this.aes={...this.aes,...e.aes}}},s4t=class{constructor(e){Me(this,"type","curve");Me(this,"smoothing");Me(this,"aes",{lineColor:Zt,lineWidth:1,lineShape:"solid",opacity:1});this.smoothing=e.smoothing??!1,this.aes={...this.aes,...e.aes}}},xZ=class{constructor(e){Me(this,"id");Me(this,"type","scatterplot-umap");Me(this,"keyColumn");Me(this,"x");Me(this,"y");Me(this,"grouping");Me(this,"label");Me(this,"chartSettings");Me(this,"inheritedAes");Me(this,"layers");Me(this,"lassoMode");var t,n,r,a;o4t.parse(e),this.id=Ir.uniqueId("settings"),this.keyColumn=e.keyColumn,this.x=e.x,this.y=e.y,this.grouping=e.grouping??[],this.label=e.label??null,this.chartSettings={size:{width:((t=e==null?void 0:e.size)==null?void 0:t.width)??600,height:((n=e==null?void 0:e.size)==null?void 0:n.height)??350},title:{position:"center",show:!0,...e.title,name:((r=e.title)==null?void 0:r.name)??"Chart"},yAxis:{title:e.y.label??e.y.value,scale:"linear",showGrid:!0,showTicks:!0,...e.yAxis},xAxis:{title:e.x.label??e.x.value,scale:"linear",showGrid:!0,showTicks:!0,...e.xAxis},frame:{type:((a=e.frame)==null?void 0:a.type)??"full"},legend:{show:!0,position:"right",...e.legend},tooltips:{show:!0,...e.tooltips}},this.inheritedAes=e.inheritedAes??{},this.layers=e.layers.map(i=>{if(i.type==="dots")return new l4t(i);if(i.type==="curve")return new s4t(i);throw new Error("Unknown layer type")}).filter(Boolean),this.lassoMode=e.lassoMode??!1}};function SZ(e){return typeof e=="object"&&"type"in e&&e.type==="grouping"}function u4t(e,t,n,r){return t.reduce((a,i)=>{let o=Ir.uniqBy(e.rows,h=>h[i.value]),s=h=>String(h[i.value]),c=h=>i.valueLabels?String(h[i.valueLabels]):s(h),f=new Set;n.forEach(h=>{h.aes&&Object.entries(h.aes).forEach(([m,g])=>{SZ(g)&&g.value===i.value&&f.add(m)})});let A=o.reduce((h,m)=>(h[s(m)]=c(m),h),{});return a[i.value]={values:o.map(s).sort((h,m)=>A[h].localeCompare(A[m],"en",{numeric:!0})),usedAes:[...f],aesMap:r[i.value],labels:A},a},{})}var c4t=10;function f4t(e){let t=[],n=new Dc("16px Manrope");for(let r of e){let a=r.label;if(!a)continue;let i=n.getTextMetrics(String(a));t.push({name:String(a),width:i.width,height:i.actualBoundingBoxAscent+i.actualBoundingBoxDescent,x:0,y:0,xPosition:"right",yPosition:"middle",bbox:{minX:0,maxX:0,minY:0,maxY:0},dot:r,padding:c4t})}return t}var d4t=class extends Sg{constructor(t,n,r){super(t,n);Me(this,"settings");Me(this,"chartRenderer",new n4t);Me(this,"onPolygonUpdate",()=>Zx);Me(this,"calculatedData",null);this.settings=new xZ(n),r&&(this.onPolygonUpdate=r[0])}mount(t){try{this.chartRenderer.init(t),this._updateData(),this._updateChart()}catch(n){n instanceof Error&&this.chartRenderer.renderError(n.message)}}unmount(){this.chartRenderer.clear()}updateSettingsAndData(t,n){try{let r=this.settings,a=this.data;this.settings=new xZ(n),this.data=t,this._needUpdateCalculatedDataBySettings(r,this.settings)||this._needUpdateCalculatedDataByData(a,this.data)?this._updateData():this._updateAesInData(),this._updateChart()}catch(r){r instanceof Error&&this.chartRenderer.renderError(r.message)}}updateChartState(t,n){t==="polygon"&&(this.chartRenderer.polygon=n,this._updateChart())}export(){return console.warn("export not implemented"),""}_needUpdateCalculatedDataBySettings(t,n){var r,a,i,o;return t.grouping.length!==n.grouping.length||t.grouping.some((s,c)=>{var f;return s.value!==((f=n.grouping[c])==null?void 0:f.value)})||(((r=t.label)==null?void 0:r.value)||((a=n.label)==null?void 0:a.value))&&((i=t.label)==null?void 0:i.value)!==((o=n.label)==null?void 0:o.value)}_needUpdateCalculatedDataByData(t,n){let r=Object.keys(t.data),a=Object.keys(n.data);return t.id!==n.id||r.length!==a.length||r.some(i=>{var o;return t.data[i].length!==((o=n.data[i])==null?void 0:o.length)})}_updateData(){let{x:t,y:n,keyColumn:r,label:a,grouping:i,layers:o,inheritedAes:s}=this.settings,c={x:!0,y:!0},f={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0},A=o.some(x=>x.type==="curve"),h=new Set,m={},g=this.data.rows.reduce((x,k)=>{if(k[t.value]===null||k[n.value]===null)return x;let _=Number(k[t.value]),D=Number(k[n.value]);c.x&&_!==null&&_<0&&(c.x=!1),c.y&&D!==null&&D<0&&(c.y=!1),_!==null&&_<f.minX&&(f.minX=_),_!==null&&_>f.maxX&&(f.maxX=_),D!==null&&D<f.minY&&(f.minY=D),D!==null&&D>f.maxY&&(f.maxY=D);let O={x:_,y:D,id:String(k[r.value]),label:a&&k[a.value]?String(k[a.value]):null,data:k};if(A){let I=i.map($=>k[$.value]).join("_");h.add(I),m[I]||(m[I]=[]),m[I].push(O)}return x.push(O),x},[]),b=[...h];A&&b.forEach(x=>{m[x].sort((k,_)=>k.x-_.x)});let C=u4t(this.data,i,o,s);this.calculatedData={onlyPositive:c,dots:g,dotsByGrouping:m,groupingKeys:b,allPossibleLabels:f4t(g),dotsExtents:f,legendLabels:C},this.chartRenderer.updateData(g)}_updateAesInData(){let t=this.calculatedData;if(!t)return;let{layers:n,inheritedAes:r,grouping:a}=this.settings;this.chartRenderer.updateAes(r,n),a.forEach(i=>{let o=new Set;n.forEach(s=>{s.aes&&Object.entries(s.aes).forEach(([c,f])=>{SZ(f)&&f.value===i.value&&o.add(c)})}),t.legendLabels[i.value].usedAes=[...o],t.legendLabels[i.value].aesMap=r[i.value]})}_updateChart(){if(!this.calculatedData)return;let{id:t,chartSettings:n,keyColumn:r,inheritedAes:a,layers:i,grouping:o,lassoMode:s}=this.settings;this.chartRenderer.render(t,n,r,this.calculatedData.onlyPositive,this.calculatedData.dots,this.calculatedData.dotsExtents,this.calculatedData.dotsByGrouping,a,i,this.calculatedData.legendLabels,o,this.calculatedData.allPossibleLabels,this.onPolygonUpdate,s)}};function A4t(e){let t=cL(e),n=tu(e);return t===void 0||n===void 0||t===0?r=>r:r=>(r-n)/t}function p4t(e){let t=tu(e),[n,r]=$A(e);return t===void 0||n===void 0||r===void 0?a=>a:a=>(a-t)/(r-n)}function h4t(e,t){return e==="standardScaling"?A4t(t):e==="meanNormalization"?p4t(t):n=>n}function m4t(e,t,n,r,a,i,o,s,c){let f=o.map(C=>C.join("_")),A={meta:{facetKeys:f,xKeys:[],yKeys:[],xLabels:{},yLabels:{},facetKeyValues:f.reduce((C,x,k)=>(C[x]=o[k],C),{}),valueExtentSize:[1/0,-1/0],valueExtentColor:[1/0,-1/0]},facets:{}},h=new Set,m=new Set,g=t.valueLabels??t.value,b=n.valueLabels??n.value;if(e.rows.forEach(C=>{let x=i.length?i.map(I=>C[I.value]).join("_"):"null",k=C[t.value],_=C[n.value],D=C[r.value]??c,O=C[a.value]??c;if(!(k===null||_===null||D===null||O===null)){if(A.facets[x]||(A.facets[x]={xKeys:[],yKeys:[],cells:{}}),A.facets[x].xKeys.push(k),A.facets[x].yKeys.push(_),h.has(k)||(h.add(k),A.meta.xKeys.push(k)),m.has(_)||(m.add(_),A.meta.yKeys.push(_)),A.facets[x].cells[k]||(A.facets[x].cells[k]={}),A.meta.valueExtentSize[0]=Math.min(D,A.meta.valueExtentSize[0]),A.meta.valueExtentSize[1]=Math.max(D,A.meta.valueExtentSize[1]),A.meta.valueExtentColor[0]=Math.min(O,A.meta.valueExtentColor[0]),A.meta.valueExtentColor[1]=Math.max(O,A.meta.valueExtentColor[1]),A.facets[x].cells[k][_])throw Error(`More than 1 value for x=${k}, y=${_}`);if(A.meta.xLabels[k]&&String(C[g])!==A.meta.xLabels[k])throw Error(`More than 1 x-label value for x=${k}`);if(A.meta.yLabels[_]&&String(C[b])!==A.meta.yLabels[_])throw Error(`More than 1 y-label value for y=${_}`);A.meta.xLabels[k]=String(C[g]),A.meta.yLabels[_]=String(C[b]),A.meta&&(A.facets[x].cells[k][_]={id:`${k}_${_}`,x:k,y:_,sizeValue:D,normalizedSizeValue:D,colorValue:O,normalizedColorValue:O,data:C})}}),A.meta.facetKeys=A.meta.facetKeys.filter(C=>A.facets[C]),A.meta.facetKeys.forEach(C=>{let x=A.facets[C];x.xKeys=Ir.uniq(x.xKeys),x.yKeys=Ir.uniq(x.yKeys)}),s){let C=[1/0,-1/0];A.meta.facetKeys.forEach(x=>{if(!A.facets[x])return;let{xKeys:k,yKeys:_,cells:D}=A.facets[x],O=s.direction==="row"?k:_,I=s.direction==="row"?_:k,$=s.direction==="row"?(Q,q)=>{var re;return(re=D[Q])==null?void 0:re[q]}:(Q,q)=>{var re;return(re=D[q])==null?void 0:re[Q]};I.forEach(Q=>{let q=[];O.forEach(ee=>{var j;let z=(j=$(ee,Q))==null?void 0:j.colorValue;z!==void 0&&q.push(z)});let re=h4t(s.method,q);O.forEach(ee=>{let z=$(ee,Q);z!==void 0&&(z.normalizedColorValue=re(z.colorValue),C[0]=Math.min(z.normalizedColorValue,C[0]),C[1]=Math.max(z.normalizedColorValue,C[1]))})})}),A.meta.valueExtentColor=C}return A.meta.valueExtentSize[0]===1/0&&(A.meta.valueExtentSize[0]=0),A.meta.valueExtentSize[1]===-1/0&&(A.meta.valueExtentSize[1]=0),A.meta.valueExtentColor[0]===1/0&&(A.meta.valueExtentColor[0]=0),A.meta.valueExtentColor[1]===-1/0&&(A.meta.valueExtentColor[1]=0),A}var v4t=15,Mg=8,oE=30,g4t=48,y4t=24,lE=16,y2=4,sE=4,BZ=20,w4t=16,u1={left:["axis","axisTitle"],right:["axis","axisTitle"],top:["axis","axisTitle","facetTitle"],bottom:["axis","axisTitle"]};function C4t(e,t,n,r,a,i,o){let s=r.includes(t.position),c=r.includes(e.position),f=a.length>1,A=e.showTicks?sE:0,h=t.showTicks?sE:0,m=c&&e.showTitle?oE:0,g=s&&t.showTitle?oE:0,b=c&&e.showAxisLabels&&i>lE?n.xAxisCaptions+A+y2:0,C=s&&t.showAxisLabels&&o>lE?n.yAxisCaptions+h+y2:0;return{left:{axisTitle:t.position==="left"?g:0,axis:t.position==="left"?C:0},right:{axisTitle:t.position==="right"?g:0,axis:t.position==="right"?C:0},top:{facetTitle:f?g4t:0,axisTitle:e.position==="top"?m:0,axis:e.position==="top"?b:0},bottom:{axisTitle:e.position==="bottom"?m:0,axis:e.position==="bottom"?b:0}}}function b4t(e,t,n){return{left:u1.left.reduce((r,a,i)=>{let o=i>0?u1.left[i-1]:null,s=e.left[a];return r[a]={x:o?r[o].x-s:-s,y:0,width:s,height:n,isVisible:s>0},r},{}),right:u1.right.reduce((r,a,i)=>{let o=i>0?u1.right[i-1]:null,s=e.right[a];return r[a]={x:o?r[o].x+r[o].width:t,y:0,width:s,height:n,isVisible:s>0},r},{}),top:u1.top.reduce((r,a,i)=>{let o=i>0?u1.top[i-1]:null,s=e.top[a];return r[a]={x:0,y:o?r[o].y-s:-s,width:t,height:s,isVisible:s>0},r},{}),bottom:u1.bottom.reduce((r,a,i)=>{let o=i>0?u1.bottom[i-1]:null,s=e.bottom[a];return r[a]={x:0,y:o?r[o].y+r[o].height:n,width:t,height:s,isVisible:s>0},r},{})}}function E4t(e,t,n,r){let{xLabels:a,yLabels:i}=n.meta,o=e.xAxisLabels/180*Math.PI,s=e.yAxisLabels/180*Math.PI,c=0,f=0,A=e.xAxisLabels===45;if(A){let m=n.meta.xKeys,g=t.x,b=g>lE,C=a[m[0]];c=Math.max(c,(A&&b?r.getTextWidth(C)*Math.cos(o):0)-g/2)}let h=e.yAxisLabels===45;if(h){let m=n.meta.yKeys;if(m.length){let g=t.y,b=g>lE,C=i[m[m.length-1]];f=Math.max(f,(h&&b?r.getTextWidth(C)*Math.cos(s):0)-g/2)}}return{xCaptionTail:c,yCaptionTail:f}}function x4t({sideElementBBoxes:e,debug:t,xKeys:n,yKeys:r,scales:a,xAxis:i,yAxis:o,stepX:s,stepY:c,labelAngles:f,xLabels:A,yLabels:h}){let m=i.showTicks?sE:0,g=o.showTicks?sE:0,b=e.top.axis.isVisible||e.bottom.axis.isVisible,C=e.top.axisTitle.isVisible?e.top.axisTitle:e.bottom.axisTitle,x=e.top.axis.isVisible?e.top.axis:e.bottom.axis,k=e.left.axis.isVisible||e.right.axis.isVisible,_=e.left.axisTitle.isVisible?e.left.axisTitle:e.right.axisTitle,D=e.left.axis.isVisible?e.left.axis:e.right.axis;return le.jsxs("g",{children:[le.jsxs("g",{children:[C.isVisible&&le.jsxs("g",{transform:`translate(${C.x},${C.y})`,children:[le.jsx("text",{x:C.width/2,y:C.height/2,textAnchor:"middle",dominantBaseline:"central",children:i.title}),t&&le.jsx("rect",{width:C.width,height:C.height,stroke:Zt,fill:"none"})]}),b&&le.jsxs("g",{fontSize:"14px",transform:`translate(${x.x},${x.y})`,children:[n.map(O=>{let I=f.xAxisLabels!==0,$=i.position==="bottom",Q=$?0:x.height,q=$?Q+m:Q-m,re=$?q+y2:q-y2,ee=a.x(O)+s/2,z=-f.xAxisLabels;return le.jsxs("g",{children:[le.jsx("line",{x1:ee,x2:ee,y1:Q,y2:q,stroke:Zt}),le.jsx("text",{x:ee,y:re,textAnchor:I?$?"end":"start":"middle",transform:`rotate(${z},${ee},${re})`,dominantBaseline:I?"central":$?"hanging":"auto",children:A[O]})]},O)}),t&&le.jsx("rect",{width:x.width,height:x.height,stroke:Zt,fill:"none"})]})]}),le.jsxs("g",{children:[_.isVisible&&le.jsx("g",{transform:`translate(
|
|
15189
15189
|
${_.x+_.width/2},
|
|
15190
|
-
${_.y+_.height/2})`,children:le.jsx("text",{transform:`rotate(${o.position==="left"?-90:90})`,dominantBaseline:"central",textAnchor:"middle",children:o.title})}),t&&le.jsx("rect",{x:_.x,y:_.y,width:_.width,height:_.height,stroke:Zt,fill:"none"}),k&&le.jsx("g",{fontSize:"14px",transform:`translate(${D.x},${D.y})`,children:r.map(O=>{let I=f.yAxisLabels!==0,$=o.position==="left",Q=-(90-f.yAxisLabels),q=f.yAxisLabels===0?"middle":$?"end":"start",re=I?"central":$?"auto":"hanging",ee=$?D.width:0,z=$?ee-g:ee+g,j=$?z-y2:z+y2,K=a.y(O)+c/2;return le.jsxs("g",{children:[le.jsx("line",{x1:ee,x2:z,y1:K,y2:K,stroke:Zt}),le.jsx("text",{x:j,y:K,textAnchor:q,transform:`rotate(${Q},${j},${K})`,dominantBaseline:re,children:h[O]})]},O)})}),t&&le.jsx("rect",{x:D.x,y:D.y,height:D.height,width:D.width,stroke:Zt,fill:"none"})]})]})}function uE(e){if(e===null)return"null";if(typeof e=="number"){let t=e>0?Math.floor(e):Math.ceil(e),n=e-t;return t+Number(n.toPrecision(2))}return e}function S4t(e,t,n=[]){let r=e.data,a=[`X: ${t.xLabels[e.x]}`,`Y: ${t.yLabels[e.y]}`,`Value (color): ${uE(e.colorValue)}${e.colorValue!==e.normalizedColorValue?` (${uE(e.normalizedColorValue)})`:""}`,`Value (size): ${uE(e.sizeValue)}${e.sizeValue!==e.normalizedSizeValue?` (${uE(e.normalizedSizeValue)})`:""}`];for(let i of n)a.push(`${i.label}: ${r[i.valueLabels??i.value]}`);return a}function B4t({facetKey:e,dimensions:t,scales:n,cells:r,colorScale:a,sizeScale:i,chartSettings:o,cellsMeta:s,stepX:c,stepY:f,aes:A,labelAngles:h,chartSizes:m,margins:g,tooltipsContainer:b}){let[C,x]=Vn.useState(null),{xAxis:k,yAxis:_,tooltips:D}=o,{width:O,height:I}=t.inner,{padding:$,sideElementBBoxes:Q}=t,{xLabels:q,yLabels:re}=s,ee=n.x.domain(),z=n.y.domain(),j={left:g.left+t.left+$.left,right:m.totalWidth-(g.left+t.left+$.left),top:g.top+t.top+$.top,bottom:m.totalHeight-(g.top+t.top+$.top)},K=!1;return le.jsxs("g",{transform:`translate(${t.left},${t.top})`,fontSize:w4t,children:[le.jsxs("g",{transform:`translate(${$.left},${$.top})`,children:[Q.top.facetTitle.isVisible&&le.jsx("text",{x:Q.top.facetTitle.x,y:Q.top.facetTitle.y+Q.top.facetTitle.height-y4t,fontWeight:"500",fontSize:"20px",children:s.facetKeyValues[e].join(", ")}),K,ee.map(Y=>z.map(X=>{var me;let oe=(me=r==null?void 0:r[Y])==null?void 0:me[X];return oe?le.jsx("circle",{cx:n.x(Y)+c/2,cy:n.y(X)+f/2,r:i(oe.normalizedSizeValue),stroke:A.cellStrokeColor,fill:oe.colorValue===null?A.emptyCellColor:a(oe.normalizedColorValue),onMouseOver:()=>x(oe),onMouseLeave:()=>x(null)},oe?oe.id:`${Y}_${X}`):null})),le.jsx("g",{children:o.frame.type==="full"&&le.jsx("rect",{fill:"none",stroke:Zt,x:"0",y:"0",width:O,height:I})}),le.jsx("g",{fontWeight:"500",children:le.jsx(x4t,{sideElementBBoxes:Q,xKeys:ee,yKeys:z,scales:n,xAxis:k,yAxis:_,stepX:c,stepY:f,labelAngles:h,xLabels:q,yLabels:re,debug:K})})]}),o.tooltips.show&&C&&le.jsx(oc,{content:S4t(C,s,D==null?void 0:D.content),x:n.x(String(C.x))+c/2,y:n.y(String(C.y))+f/2,offset:ee.length>1?c/2:0,active:!0,sideDistances:j,container:b})]})}function k4t({margins:e,captionsSizes:t,settingsId:n,chartSettings:r,chartSizes:a,chartsDimensions:i,facetKeys:o,scales:s,colorScale:c,sizeScale:f,groupedCells:A,cellsMeta:h,step:m,legend:g,aes:b,columnsCount:C,labelAngles:x}){let[k,_]=Vn.useState(),D=Vn.useRef(null);Vn.useEffect(()=>{D.current&&_(D.current)},[]);let O=i[o[0]].padding,I=i[o[C-1]].padding,$=e.left+a.chartsWidth+BZ,Q=e.top+O.top;return le.jsx(f2,{dataId:n,children:le.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${a.totalWidth} ${a.totalHeight}`,width:a.totalWidth,height:a.totalHeight,fontFamily:"Manrope",children:[le.jsx("defs",{children:Tg}),le.jsxs("g",{transform:`translate(${e.left},${e.top})`,children:[le.jsx(d2,{title:[r.title.name],show:r.title.show,position:r.title.position,leftPadding:O.left,rightPadding:I.right,chartsWidth:a.chartsWidth}),o.map(q=>{let{cells:re}=A[q];return le.jsx(B4t,{captionsSizes:t,facetKey:q,dimensions:i[q],scales:s,cells:re,cellsMeta:h,stepX:m.x,stepY:m.y,colorScale:c,sizeScale:f,chartSettings:r,aes:b,labelAngles:x,margins:e,chartSizes:a,tooltipsContainer:k},q)})]}),le.jsx("g",{transform:`translate(${$},${Q})`,children:le.jsx(w9,{legendData:g})}),le.jsx("g",{ref:D})]})})}var T4t=(e,t)=>{let n=Math.min(...t),r=Math.max(...t);if(n===r){let o=e%2===0?[]:[n];for(let s=1;s<e/2+1;s++)o.push(n+s),o.unshift(n-s);return o}if(e<2)return[n,r];let a=(r-n)/(e-1),i=[];for(let o=0;o<e-1;o++)i.push(n+a*o);return i.push(r),i};function _4t(e,t,n){let r=n;return e&&(e.colorRange&&(r=e.colorRange),e.method==="standardScaling"&&(r=[-2,2]),e.method==="meanNormalization"&&(r=[-.75,.75])),T4t(t,r)}var P4t=class{constructor(){Me(this,"reactRoot",null);Me(this,"parentNode",null);Me(this,"rootNode",null);Me(this,"component",le.jsx(le.Fragment,{}));Me(this,"chartsDimensions",{});Me(this,"chartSizes",{chartWidth:600,chartHeight:350,chartsWidth:600,chartsHeight:350,totalWidth:600,totalHeight:350});Me(this,"margins",{top:Mg,bottom:Mg,left:Mg,right:Mg});Me(this,"captionsSizes",{xAxisCaptions:100,yAxisCaptions:100,xCaptionTail:0,yCaptionTail:0});Me(this,"labelAngles",{xAxisLabels:0,yAxisLabels:0});Me(this,"columnsCount",1);Me(this,"rowsCount",1);Me(this,"scales",{x:Hl().domain(["null"]).range([1]),y:Hl().domain(["null"]).range([1])});Me(this,"step",{x:10,y:10});Me(this,"colorScale",Da().domain([0,1]).range(["white","black"]));Me(this,"sizeScale",Ny().domain([0,1]).range([3,20]));Me(this,"legend",{width:0,height:0,items:[]})}clear(){var e;this.parentNode&&this.rootNode&&((e=this.parentNode)==null||e.removeChild(this.rootNode),this.parentNode=null,this.rootNode=null),setTimeout(()=>{var t;(t=this.reactRoot)==null||t.unmount(),this.reactRoot=null})}init(e){this.parentNode===null&&(this.parentNode=e,this.rootNode=document.createElement("div"),this.parentNode.appendChild(this.rootNode),this.reactRoot=zh(this.rootNode))}updateMargins(e){this.margins={top:e.show?24+24*2:Mg,bottom:Mg,left:Mg,right:this.legend.width},this.chartSizes.totalWidth=this.margins.left+this.chartSizes.chartsWidth+this.margins.right,this.chartSizes.totalHeight=this.margins.top+Math.max(this.chartSizes.chartsHeight+this.margins.bottom,this.legend.height)}updateLegendSize(e,t,n){if(!e.show){this.legend={width:0,height:0,items:[]};return}let r=[],a=this.chartSizes.chartHeight,i=Math.min(this.chartSizes.chartHeight,350),o={width:0,height:0,left:0,top:0},s=this.colorScale.domain(),c=a2(this.colorScale,[s[0],s[s.length-1]]),f=t.label??t.value,A=Da([c[0],c[c.length-1]],[i,0]);r.push({id:"colorValue",type:"continuous",scale:this.colorScale,tickPositionScale:A,values:c,title:f,...o});let h=n.label??n.value,m=this.sizeScale.ticks(3),g=this.sizeScale.tickFormat(3),b=m.reduce((_,D)=>(_[String(D)]=g(D),_),{});if(r.push({id:"sizeValue",type:"size",title:h,scale:this.sizeScale,values:m,labels:b,...o}),!r.length){this.legend={width:0,height:0,items:[]};return}let C=C9(r,a,i),x=C[C.length-1],k=x.left+x.width+2*BZ;this.legend={width:k,height:a,items:C}}updateCaptionsSize(e,t,n){let r=new Dc("bold 14px Arial"),{xKeys:a,yKeys:i,xLabels:o,yLabels:s}=e.meta;this.labelAngles={xAxisLabels:t.axisLabelsAngle,yAxisLabels:n.axisLabelsAngle};let c=a.map(b=>r.getTextWidth(o[b])),f=i.map(b=>r.getTextWidth(s[b])),{xCaptionTail:A,yCaptionTail:h}=E4t(this.labelAngles,this.step,e,r),m=this.labelAngles.xAxisLabels/180*Math.PI,g=this.labelAngles.yAxisLabels/180*Math.PI;this.captionsSizes={xCaptionTail:A,yCaptionTail:h,xAxisCaptions:Math.max(...c,0)*Math.sin(m)||oE,yAxisCaptions:Math.max(...f,0)*Math.sin(g)||oE}}updateChartDimensions(e,t,n,r){let a=e.length,i=Math.min(t.nRows??a,a),o=Math.min(t.nCols??a,a);this.columnsCount=t.nRows?Math.ceil(a/i):o,this.rowsCount=Math.ceil(a/this.columnsCount),this.chartsDimensions={};let s=0,c=0;e.forEach((h,m)=>{let g=m%this.columnsCount+1,b=zK(m,e.length,this.columnsCount,this.rowsCount),C=this.chartSizes.chartWidth,x=this.chartSizes.chartHeight,k=C4t(n,r,this.captionsSizes,b,e,this.step.x,this.step.y);function _(Q){return Math.max(u1[Q].reduce((q,re)=>q+k[Q][re],0),v4t)}let D={left:_("left"),right:_("right"),top:_("top"),bottom:_("bottom")};D.left<this.captionsSizes.xCaptionTail&&(D.left=this.captionsSizes.xCaptionTail),D.bottom<this.captionsSizes.yCaptionTail&&(D.bottom=this.captionsSizes.yCaptionTail);let O=b4t(k,C,x),I=C+D.left+D.right,$=x+D.top+D.bottom;this.chartsDimensions[h]={left:s,top:c,inner:{width:C,height:x},outer:{width:I,height:$},padding:D,sideElementBBoxes:O,chartEdgeSides:b},s+=I,g===this.columnsCount&&(s=0,c+=$)});let f=e.slice(0,this.columnsCount).reduce((h,m)=>h+this.chartsDimensions[m].outer.width,0),A=e.filter((h,m)=>m%this.columnsCount===0).reduce((h,m)=>h+this.chartsDimensions[m].outer.height,0);this.chartSizes.chartsWidth=f,this.chartSizes.chartsHeight=A}updateChartsSizes(e,t){let{width:n,height:r,cellSize:a}=t;a&&(this.chartSizes.chartWidth=e.meta.xKeys.length*a,this.chartSizes.chartHeight=e.meta.yKeys.length*a),n&&r&&(this.chartSizes.chartWidth=n,this.chartSizes.chartHeight=r)}updateScales(e,t,n,r){let{width:a,height:i,cellSize:o}=t,{meta:s}=e,c=(b,C={})=>[...b].sort((x,k)=>n.sorting==="asc"?(C[x]??x).localeCompare(C[k]??k,"en",{numeric:!0}):(C[k]??k).localeCompare(C[x]??x,"en",{numeric:!0})),f=(b,C={})=>[...b].sort((x,k)=>r.sorting==="asc"?(C[x]??x).localeCompare(C[k]??k,"en",{numeric:!0}):(C[k]??k).localeCompare(C[x]??x,"en",{numeric:!0})),A=c(s.xKeys,s.xLabels),h=f(s.yKeys,s.yLabels);o?(this.step.x=o,this.step.y=o):a&&i&&(this.step.x=a/A.length,this.step.y=i/h.length);let m=new Array(A.length).fill(null).map((b,C)=>C*this.step.x),g=new Array(h.length).fill(null).map((b,C)=>C*this.step.y);this.scales.x=Hl().domain(A).range(m),this.scales.y=Hl().domain(h).range(g)}updateAesScale(e,t,n,r){this.colorScale=Da().domain(_4t(r,e.colorsList.length,n)).range(e.colorsList),this.sizeScale=Ny(t,[e.minRadius,e.maxRadius])}render(e,t,n,r,a,i,o,s,c){var _;let{meta:f,facets:A}=a,{valueExtentSize:h,valueExtentColor:m}=f,{xAxis:g,yAxis:b,title:C,size:x}=t;this.updateChartsSizes(a,x),this.updateAesScale(c,h,m,s),this.updateScales(a,x,t.xAxis,t.yAxis),this.updateCaptionsSize(a,g,b),this.updateChartDimensions(r,n,g,b),this.updateLegendSize(t.legend,i,o),this.updateMargins(C);let k=le.jsx(k4t,{aes:c,captionsSizes:this.captionsSizes,cellsMeta:f,columnsCount:this.columnsCount,chartsDimensions:this.chartsDimensions,chartSettings:t,chartSizes:this.chartSizes,sizeScale:this.sizeScale,colorScale:this.colorScale,facetKeys:r,facetSettings:n,groupedCells:A,labelAngles:this.labelAngles,legend:this.legend,margins:this.margins,scales:this.scales,settingsId:e,step:this.step});this.component=k,(_=this.reactRoot)==null||_.render(k)}renderError(e){var t;(t=this.reactRoot)==null||t.render(le.jsx(Fm,{message:e}))}},M4t=P4t,kZ=class{constructor(e){Me(this,"id");Me(this,"type","bubble");Me(this,"facetSettings");Me(this,"valueColumnSize");Me(this,"valueColumnColor");Me(this,"xColumn");Me(this,"yColumn");Me(this,"facetBy");Me(this,"normalization");Me(this,"NAValueAs");Me(this,"chartSettings");Me(this,"aes");var a,i,o,s,c,f,A,h,m,g;u2t.parse(e),this.id=Ir.uniqueId("settings"),this.facetSettings={titlePosition:"left",...e.facetSettings},this.facetBy=e.facetBy??[],this.valueColumnSize=e.valueSize,this.valueColumnColor=e.valueColor,this.xColumn=e.xColumn,this.yColumn=e.yColumn,this.NAValueAs=e.NAValueAs??null,this.normalization=e.normalization??null;let t=((a=e.size)==null?void 0:a.cellSize)??null,n=t?null:((i=e==null?void 0:e.size)==null?void 0:i.width)??(this.facetBy.length?400:600),r=t?null:((o=e==null?void 0:e.size)==null?void 0:o.height)??(this.facetBy.length?250:350);this.chartSettings={size:{width:n,height:r,cellSize:t},title:{position:"center",show:!0,...e.title,name:((s=e.title)==null?void 0:s.name)??"Chart"},yAxis:{title:e.yColumn.label??e.yColumn.value,showTicks:!0,showTitle:!0,showAxisLabels:!0,position:"left",axisLabelsAngle:90,sorting:"asc",...e.yAxis},xAxis:{title:e.xColumn.label??e.xColumn.value,showTicks:!0,showTitle:!0,showAxisLabels:!0,position:"bottom",axisLabelsAngle:90,sorting:"asc",...e.xAxis},frame:{type:((c=e.frame)==null?void 0:c.type)??"full"},legend:{show:!0,position:"right",...e.legend},tooltips:{show:!0,...e.tooltips}},this.aes={minRadius:((f=e.aes)==null?void 0:f.minRadius)??3,maxRadius:((A=e.aes)==null?void 0:A.maxRadius)??20,colorsList:((h=e.aes)==null?void 0:h.colorsList)??["black","white","red"],cellStrokeColor:((m=e.aes)==null?void 0:m.cellStrokeColor)??Zt,emptyCellColor:((g=e.aes)==null?void 0:g.emptyCellColor)??"white"}}},D4t=class extends Sg{constructor(t,n){super(t,n);Me(this,"settings");Me(this,"chartRenderer",new M4t);Me(this,"calculatedData",null);this.settings=new kZ(n)}mount(t){try{this.chartRenderer.init(t),this._updateData(),this._updateChart()}catch(n){n instanceof Error&&this.chartRenderer.renderError(n.message)}}unmount(){this.chartRenderer.clear()}updateSettingsAndData(t,n){try{let r=this.settings,a=this.data;this.settings=new kZ(n),this.data=t,this._needUpdateCalculatedDataBySettings(r,this.settings)||this._needUpdateCalculatedDataByData(a,this.data)?this._updateData():this._updateAesInData(),this._updateChart()}catch(r){r instanceof Error&&this.chartRenderer.renderError(r.message)}}updateChartState(t,n){console.warn("no chart state for bubble chart")}export(){return this._updateChart(),f3(this.chartRenderer.component)}_needUpdateCalculatedDataBySettings(t,n){var r,a,i,o;return t.facetBy.some((s,c)=>{var f;return s.value!==((f=n.facetBy[c])==null?void 0:f.value)})||((r=t.normalization)==null?void 0:r.method)!==((a=n.normalization)==null?void 0:a.method)||((i=t.normalization)==null?void 0:i.direction)!==((o=n.normalization)==null?void 0:o.direction)||t.xColumn.value!==n.xColumn.value||t.yColumn.value!==n.yColumn.value||t.valueColumnColor.value!==n.valueColumnColor.value||t.valueColumnSize.value!==n.valueColumnSize.value||t.NAValueAs!==n.NAValueAs}_needUpdateCalculatedDataByData(t,n){let r=Object.keys(t.data),a=Object.keys(n.data);return t.id!==n.id||r.length!==a.length||r.some(i=>{var o;return t.data[i].length!==((o=n.data[i])==null?void 0:o.length)})}_updateData(){let{facetBy:t,xColumn:n,yColumn:r,valueColumnSize:a,valueColumnColor:i,normalization:o,NAValueAs:s}=this.settings,c=t.map(m=>this.data.getColumnCategories(m.value)),f=c.length?nZ([...c]):[["null"]],A=t.map(m=>m.value)??null;this.data.setGrouping([...A]);let h=m4t(this.data,n,r,a,i,t,f,o,s);this.calculatedData={facetKeys:h.meta.facetKeys,groupedCellsData:h}}_updateAesInData(){this.calculatedData}_updateChart(){if(!this.calculatedData)return;let{id:t,chartSettings:n,facetSettings:r,valueColumnColor:a,valueColumnSize:i,normalization:o,aes:s}=this.settings;this.chartRenderer.render(t,n,r,this.calculatedData.facetKeys,this.calculatedData.groupedCellsData,a,i,o,s)}};function H4t(e){return"type"in e&&e.type==="columns"}var TZ=class DI{constructor(t,n){Me(this,"id");Me(this,"data");Me(this,"rowsCount");Me(this,"columnNames");Me(this,"rowsGrouped");this.id=t,this.data=n,this.columnNames=Object.keys(n),this.rowsCount=this.columnNames.length?n[this.columnNames[0]].length:0}static from(t){if(t instanceof DI)return t;if(H4t(t))return new DI(t.id,t.values);vA(t,"Unknown input data format")}get rows(){let t=this.columnNames,n=[];for(let r=0;r<this.rowsCount;r++)n.push(t.reduce((a,i)=>(a[i]=this.data[i][r],a),{}));return n}getColumn(t){return this.data[t]}getColumnCategories(t){if(!this.columnNames.includes(t))throw new Error(`Column ${t} does not exist`);return Ir.uniq(this.getColumn(t)).map(String)}setGrouping(t){let n={grouped:{},rows:this.rows},r=[n];t.forEach(a=>{let i=a===null?["null"]:this.getColumnCategories(a),o=[];r.forEach(s=>{if(a===null)s.grouped={null:{rows:s.rows,grouped:{}}},o.push(s.grouped.null);else{let c=Ir.groupBy(s.rows,f=>String(f[a]));s.grouped=i.reduce((f,A)=>(f[A]={rows:c[A]??[],grouped:{}},o.push(f[A]),f),{})}}),r=o}),this.rowsGrouped=n.grouped}getColumnByGrouping(t,n){if(!this.rowsGrouped)return[];if(!t.length)return this.rows.map(a=>Number(a[n]));let r={grouped:this.rowsGrouped,rows:this.rows};return t.forEach(a=>{let i=r.grouped[a??"null"];if(!i)return[];r=i}),r.rows.map(a=>Number(a[n]))}getRowsByGrouping(t){if(!this.rowsGrouped)return[];if(!t.length)return this.rows;let n={grouped:this.rowsGrouped,rows:this.rows};return t.forEach(r=>{let a=n.grouped[r??"null"];if(!a)return[];n=a}),n==null?void 0:n.rows}},I4t=class HI{constructor(t){Me(this,"node");Me(this,"chart");this.chart=t}static createChart(t,n,r){let{type:a}=n;if(a==="discrete")return new G7t(t,n);if(a==="dendro")return new F2t(t,n,r);if(a==="scatterplot")return new R9t(t,n);if(a==="scatterplot-umap")return new d4t(t,n,r);if(a==="heatmap")return new Cwt(t,n);if(a==="histogram")return new jwt(t,n);if(a==="bubble")return new D4t(t,n);vA(a,`Unknown chart type: ${a}`)}static newPlot(t,n,r){let a=TZ.from(t);return new this(HI.createChart(a,n,r))}get calculatedData(){return this.chart.calculatedData}mount(t){this.node=t,this.chart.mount(t)}unmount(){delete this.node,this.chart.unmount()}updateSettingsAndData(t,n){if(n.type!==this.chart.settings.type){let r=HI.createChart(this.chart.data,n);this.node?(this.chart.unmount(),this.chart=r,this.chart.mount(this.node)):this.chart=r}else this.chart.updateSettingsAndData(TZ.from(t),n)}updateChartState(t,n){this.chart.updateChartState(t,n)}export(){return this.chart.export()}};/*! Bundled license information:
|
|
15190
|
+
${_.y+_.height/2})`,children:le.jsx("text",{transform:`rotate(${o.position==="left"?-90:90})`,dominantBaseline:"central",textAnchor:"middle",children:o.title})}),t&&le.jsx("rect",{x:_.x,y:_.y,width:_.width,height:_.height,stroke:Zt,fill:"none"}),k&&le.jsx("g",{fontSize:"14px",transform:`translate(${D.x},${D.y})`,children:r.map(O=>{let I=f.yAxisLabels!==0,$=o.position==="left",Q=-(90-f.yAxisLabels),q=f.yAxisLabels===0?"middle":$?"end":"start",re=I?"central":$?"auto":"hanging",ee=$?D.width:0,z=$?ee-g:ee+g,j=$?z-y2:z+y2,K=a.y(O)+c/2;return le.jsxs("g",{children:[le.jsx("line",{x1:ee,x2:z,y1:K,y2:K,stroke:Zt}),le.jsx("text",{x:j,y:K,textAnchor:q,transform:`rotate(${Q},${j},${K})`,dominantBaseline:re,children:h[O]})]},O)})}),t&&le.jsx("rect",{x:D.x,y:D.y,height:D.height,width:D.width,stroke:Zt,fill:"none"})]})]})}function uE(e){if(e===null)return"null";if(typeof e=="number"){let t=e>0?Math.floor(e):Math.ceil(e),n=e-t;return t+Number(n.toPrecision(2))}return e}function S4t(e,t,n=[]){let r=e.data,a=[`X: ${t.xLabels[e.x]}`,`Y: ${t.yLabels[e.y]}`,`Value (color): ${uE(e.colorValue)}${e.colorValue!==e.normalizedColorValue?` (${uE(e.normalizedColorValue)})`:""}`,`Value (size): ${uE(e.sizeValue)}${e.sizeValue!==e.normalizedSizeValue?` (${uE(e.normalizedSizeValue)})`:""}`];for(let i of n)a.push(`${i.label}: ${r[i.valueLabels??i.value]}`);return a}function B4t({facetKey:e,dimensions:t,scales:n,cells:r,colorScale:a,sizeScale:i,chartSettings:o,cellsMeta:s,stepX:c,stepY:f,aes:A,labelAngles:h,chartSizes:m,margins:g,tooltipsContainer:b}){let[C,x]=Vn.useState(null),{xAxis:k,yAxis:_,tooltips:D}=o,{width:O,height:I}=t.inner,{padding:$,sideElementBBoxes:Q}=t,{xLabels:q,yLabels:re}=s,ee=n.x.domain(),z=n.y.domain(),j={left:g.left+t.left+$.left,right:m.totalWidth-(g.left+t.left+$.left),top:g.top+t.top+$.top,bottom:m.totalHeight-(g.top+t.top+$.top)},K=!1;return le.jsxs("g",{transform:`translate(${t.left},${t.top})`,fontSize:w4t,children:[le.jsxs("g",{transform:`translate(${$.left},${$.top})`,children:[Q.top.facetTitle.isVisible&&le.jsx("text",{x:Q.top.facetTitle.x,y:Q.top.facetTitle.y+Q.top.facetTitle.height-y4t,fontWeight:"500",fontSize:"20px",children:s.facetKeyValues[e].join(", ")}),K,ee.map(Y=>z.map(X=>{var me;let oe=(me=r==null?void 0:r[Y])==null?void 0:me[X];return oe?le.jsx("circle",{cx:n.x(Y)+c/2,cy:n.y(X)+f/2,r:i(oe.normalizedSizeValue),stroke:A.cellStrokeColor,fill:oe.colorValue===null?A.emptyCellColor:a(oe.normalizedColorValue),onMouseOver:()=>x(oe),onMouseLeave:()=>x(null)},oe?oe.id:`${Y}_${X}`):null})),le.jsx("g",{children:o.frame.type==="full"&&le.jsx("rect",{fill:"none",stroke:Zt,x:"0",y:"0",width:O,height:I})}),le.jsx("g",{fontWeight:"500",children:le.jsx(x4t,{sideElementBBoxes:Q,xKeys:ee,yKeys:z,scales:n,xAxis:k,yAxis:_,stepX:c,stepY:f,labelAngles:h,xLabels:q,yLabels:re,debug:K})})]}),o.tooltips.show&&C&&le.jsx(oc,{content:S4t(C,s,D==null?void 0:D.content),x:n.x(String(C.x))+c/2,y:n.y(String(C.y))+f/2,offset:ee.length>1?c/2:0,active:!0,sideDistances:j,container:b})]})}function k4t({margins:e,captionsSizes:t,settingsId:n,chartSettings:r,chartSizes:a,chartsDimensions:i,facetKeys:o,scales:s,colorScale:c,sizeScale:f,groupedCells:A,cellsMeta:h,step:m,legend:g,aes:b,columnsCount:C,labelAngles:x}){let[k,_]=Vn.useState(),D=Vn.useRef(null);Vn.useEffect(()=>{D.current&&_(D.current)},[]);let O=i[o[0]].padding,I=i[o[C-1]].padding,$=e.left+a.chartsWidth+BZ,Q=e.top+O.top;return le.jsx(f2,{dataId:n,children:le.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${a.totalWidth} ${a.totalHeight}`,width:a.totalWidth,height:a.totalHeight,fontFamily:"Manrope",children:[le.jsx("defs",{children:Tg}),le.jsxs("g",{transform:`translate(${e.left},${e.top})`,children:[le.jsx(d2,{title:[r.title.name],show:r.title.show,position:r.title.position,leftPadding:O.left,rightPadding:I.right,chartsWidth:a.chartsWidth}),o.map(q=>{let{cells:re}=A[q];return le.jsx(B4t,{captionsSizes:t,facetKey:q,dimensions:i[q],scales:s,cells:re,cellsMeta:h,stepX:m.x,stepY:m.y,colorScale:c,sizeScale:f,chartSettings:r,aes:b,labelAngles:x,margins:e,chartSizes:a,tooltipsContainer:k},q)})]}),le.jsx("g",{transform:`translate(${$},${Q})`,children:le.jsx(w9,{legendData:g})}),le.jsx("g",{ref:D})]})})}var T4t=(e,t)=>{let n=Math.min(...t),r=Math.max(...t);if(n===r){let o=e%2===0?[]:[n];for(let s=1;s<e/2+1;s++)o.push(n+s),o.unshift(n-s);return o}if(e<2)return[n,r];let a=(r-n)/(e-1),i=[];for(let o=0;o<e-1;o++)i.push(n+a*o);return i.push(r),i};function _4t(e,t,n){let r=n;return e&&(e.colorRange&&(r=e.colorRange),e.method==="standardScaling"&&(r=[-2,2]),e.method==="meanNormalization"&&(r=[-.75,.75])),T4t(t,r)}var P4t=class{constructor(){Me(this,"reactRoot",null);Me(this,"parentNode",null);Me(this,"rootNode",null);Me(this,"component",le.jsx(le.Fragment,{}));Me(this,"chartsDimensions",{});Me(this,"chartSizes",{chartWidth:600,chartHeight:350,chartsWidth:600,chartsHeight:350,totalWidth:600,totalHeight:350});Me(this,"margins",{top:Mg,bottom:Mg,left:Mg,right:Mg});Me(this,"captionsSizes",{xAxisCaptions:100,yAxisCaptions:100,xCaptionTail:0,yCaptionTail:0});Me(this,"labelAngles",{xAxisLabels:0,yAxisLabels:0});Me(this,"columnsCount",1);Me(this,"rowsCount",1);Me(this,"scales",{x:Hl().domain(["null"]).range([1]),y:Hl().domain(["null"]).range([1])});Me(this,"step",{x:10,y:10});Me(this,"colorScale",Da().domain([0,1]).range(["white","black"]));Me(this,"sizeScale",Ny().domain([0,1]).range([3,20]));Me(this,"legend",{width:0,height:0,items:[]})}clear(){var e;this.parentNode&&this.rootNode&&((e=this.parentNode)==null||e.removeChild(this.rootNode),this.parentNode=null,this.rootNode=null),setTimeout(()=>{var t;(t=this.reactRoot)==null||t.unmount(),this.reactRoot=null})}init(e){this.parentNode===null&&(this.parentNode=e,this.rootNode=document.createElement("div"),this.parentNode.appendChild(this.rootNode),this.reactRoot=zh(this.rootNode))}updateMargins(e){this.margins={top:e.show?24+24*2:Mg,bottom:Mg,left:Mg,right:this.legend.width},this.chartSizes.totalWidth=this.margins.left+this.chartSizes.chartsWidth+this.margins.right,this.chartSizes.totalHeight=this.margins.top+Math.max(this.chartSizes.chartsHeight,this.legend.height)+this.margins.bottom}updateLegendSize(e,t,n,r){if(!e.show){this.legend={width:0,height:0,items:[]};return}let a=[],i=Math.min(Math.max(this.chartSizes.chartHeight,250),350),o=Math.max(this.chartSizes.chartHeight,i),s={width:0,height:0,left:0,top:0},c=this.colorScale.domain(),f=a2(this.colorScale,[c[0],c[c.length-1]]),A=t.label??t.value,h=Da([f[0],f[f.length-1]],[i,0]);a.push({id:"colorValue",type:"continuous",scale:this.colorScale,tickPositionScale:h,values:f,title:A,...s});let m=n.label??n.value,g=this.sizeScale.ticks(3),b=this.sizeScale.tickFormat(3),C=g.reduce((O,I)=>(O[String(I)]=b(I),O),{});if(a.push({id:"sizeValue",type:"size",title:m,scale:this.sizeScale,values:g,labels:C,...s}),!a.length){this.legend={width:0,height:0,items:[]};return}let x=C9(a,o,i),k=x[x.length-1],_=k.left+k.width+2*BZ,D=this.chartsDimensions[r[0]].padding;this.legend={width:_,height:o+D.top,items:x}}updateCaptionsSize(e,t,n){let r=new Dc("bold 14px Arial"),{xKeys:a,yKeys:i,xLabels:o,yLabels:s}=e.meta;this.labelAngles={xAxisLabels:t.axisLabelsAngle,yAxisLabels:n.axisLabelsAngle};let c=a.map(b=>r.getTextWidth(o[b])),f=i.map(b=>r.getTextWidth(s[b])),{xCaptionTail:A,yCaptionTail:h}=E4t(this.labelAngles,this.step,e,r),m=this.labelAngles.xAxisLabels/180*Math.PI,g=this.labelAngles.yAxisLabels/180*Math.PI;this.captionsSizes={xCaptionTail:A,yCaptionTail:h,xAxisCaptions:Math.max(...c,0)*Math.sin(m)||oE,yAxisCaptions:Math.max(...f,0)*Math.sin(g)||oE}}updateChartDimensions(e,t,n,r){let a=e.length,i=Math.min(t.nRows??a,a),o=Math.min(t.nCols??a,a);this.columnsCount=t.nRows?Math.ceil(a/i):o,this.rowsCount=Math.ceil(a/this.columnsCount),this.chartsDimensions={};let s=0,c=0;e.forEach((h,m)=>{let g=m%this.columnsCount+1,b=zK(m,e.length,this.columnsCount,this.rowsCount),C=this.chartSizes.chartWidth,x=this.chartSizes.chartHeight,k=C4t(n,r,this.captionsSizes,b,e,this.step.x,this.step.y);function _(Q){return Math.max(u1[Q].reduce((q,re)=>q+k[Q][re],0),v4t)}let D={left:_("left"),right:_("right"),top:_("top"),bottom:_("bottom")};D.left<this.captionsSizes.xCaptionTail&&(D.left=this.captionsSizes.xCaptionTail),D.bottom<this.captionsSizes.yCaptionTail&&(D.bottom=this.captionsSizes.yCaptionTail);let O=b4t(k,C,x),I=C+D.left+D.right,$=x+D.top+D.bottom;this.chartsDimensions[h]={left:s,top:c,inner:{width:C,height:x},outer:{width:I,height:$},padding:D,sideElementBBoxes:O,chartEdgeSides:b},s+=I,g===this.columnsCount&&(s=0,c+=$)});let f=e.slice(0,this.columnsCount).reduce((h,m)=>h+this.chartsDimensions[m].outer.width,0),A=e.filter((h,m)=>m%this.columnsCount===0).reduce((h,m)=>h+this.chartsDimensions[m].outer.height,0);this.chartSizes.chartsWidth=f,this.chartSizes.chartsHeight=A}updateChartsSizes(e,t){let{width:n,height:r,cellSize:a}=t;a&&(this.chartSizes.chartWidth=e.meta.xKeys.length*a,this.chartSizes.chartHeight=e.meta.yKeys.length*a),n&&r&&(this.chartSizes.chartWidth=n,this.chartSizes.chartHeight=r)}updateScales(e,t,n,r){let{width:a,height:i,cellSize:o}=t,{meta:s}=e,c=(b,C={})=>[...b].sort((x,k)=>n.sorting==="asc"?(C[x]??x).localeCompare(C[k]??k,"en",{numeric:!0}):(C[k]??k).localeCompare(C[x]??x,"en",{numeric:!0})),f=(b,C={})=>[...b].sort((x,k)=>r.sorting==="asc"?(C[x]??x).localeCompare(C[k]??k,"en",{numeric:!0}):(C[k]??k).localeCompare(C[x]??x,"en",{numeric:!0})),A=c(s.xKeys,s.xLabels),h=f(s.yKeys,s.yLabels);o?(this.step.x=o,this.step.y=o):a&&i&&(this.step.x=a/A.length,this.step.y=i/h.length);let m=new Array(A.length).fill(null).map((b,C)=>C*this.step.x),g=new Array(h.length).fill(null).map((b,C)=>C*this.step.y);this.scales.x=Hl().domain(A).range(m),this.scales.y=Hl().domain(h).range(g)}updateAesScale(e,t,n,r){this.colorScale=Da().domain(_4t(r,e.colorsList.length,n)).range(e.colorsList),this.sizeScale=Ny(t,[e.minRadius,e.maxRadius])}render(e,t,n,r,a,i,o,s,c){var _;let{meta:f,facets:A}=a,{valueExtentSize:h,valueExtentColor:m}=f,{xAxis:g,yAxis:b,title:C,size:x}=t;this.updateChartsSizes(a,x),this.updateAesScale(c,h,m,s),this.updateScales(a,x,t.xAxis,t.yAxis),this.updateCaptionsSize(a,g,b),this.updateChartDimensions(r,n,g,b),this.updateLegendSize(t.legend,i,o,r),this.updateMargins(C);let k=le.jsx(k4t,{aes:c,captionsSizes:this.captionsSizes,cellsMeta:f,columnsCount:this.columnsCount,chartsDimensions:this.chartsDimensions,chartSettings:t,chartSizes:this.chartSizes,sizeScale:this.sizeScale,colorScale:this.colorScale,facetKeys:r,facetSettings:n,groupedCells:A,labelAngles:this.labelAngles,legend:this.legend,margins:this.margins,scales:this.scales,settingsId:e,step:this.step});this.component=k,(_=this.reactRoot)==null||_.render(k)}renderError(e){var t;(t=this.reactRoot)==null||t.render(le.jsx(Fm,{message:e}))}},M4t=P4t,kZ=class{constructor(e){Me(this,"id");Me(this,"type","bubble");Me(this,"facetSettings");Me(this,"valueColumnSize");Me(this,"valueColumnColor");Me(this,"xColumn");Me(this,"yColumn");Me(this,"facetBy");Me(this,"normalization");Me(this,"NAValueAs");Me(this,"chartSettings");Me(this,"aes");var a,i,o,s,c,f,A,h,m,g;u2t.parse(e),this.id=Ir.uniqueId("settings"),this.facetSettings={titlePosition:"left",...e.facetSettings},this.facetBy=e.facetBy??[],this.valueColumnSize=e.valueSize,this.valueColumnColor=e.valueColor,this.xColumn=e.xColumn,this.yColumn=e.yColumn,this.NAValueAs=e.NAValueAs??null,this.normalization=e.normalization??null;let t=((a=e.size)==null?void 0:a.cellSize)??null,n=t?null:((i=e==null?void 0:e.size)==null?void 0:i.width)??(this.facetBy.length?400:600),r=t?null:((o=e==null?void 0:e.size)==null?void 0:o.height)??(this.facetBy.length?250:350);this.chartSettings={size:{width:n,height:r,cellSize:t},title:{position:"center",show:!0,...e.title,name:((s=e.title)==null?void 0:s.name)??"Chart"},yAxis:{title:e.yColumn.label??e.yColumn.value,showTicks:!0,showTitle:!0,showAxisLabels:!0,position:"left",axisLabelsAngle:90,sorting:"asc",...e.yAxis},xAxis:{title:e.xColumn.label??e.xColumn.value,showTicks:!0,showTitle:!0,showAxisLabels:!0,position:"bottom",axisLabelsAngle:90,sorting:"asc",...e.xAxis},frame:{type:((c=e.frame)==null?void 0:c.type)??"full"},legend:{show:!0,position:"right",...e.legend},tooltips:{show:!0,...e.tooltips}},this.aes={minRadius:((f=e.aes)==null?void 0:f.minRadius)??3,maxRadius:((A=e.aes)==null?void 0:A.maxRadius)??20,colorsList:((h=e.aes)==null?void 0:h.colorsList)??["black","white","red"],cellStrokeColor:((m=e.aes)==null?void 0:m.cellStrokeColor)??Zt,emptyCellColor:((g=e.aes)==null?void 0:g.emptyCellColor)??"white"}}},D4t=class extends Sg{constructor(t,n){super(t,n);Me(this,"settings");Me(this,"chartRenderer",new M4t);Me(this,"calculatedData",null);this.settings=new kZ(n)}mount(t){try{this.chartRenderer.init(t),this._updateData(),this._updateChart()}catch(n){n instanceof Error&&this.chartRenderer.renderError(n.message)}}unmount(){this.chartRenderer.clear()}updateSettingsAndData(t,n){try{let r=this.settings,a=this.data;this.settings=new kZ(n),this.data=t,this._needUpdateCalculatedDataBySettings(r,this.settings)||this._needUpdateCalculatedDataByData(a,this.data)?this._updateData():this._updateAesInData(),this._updateChart()}catch(r){r instanceof Error&&this.chartRenderer.renderError(r.message)}}updateChartState(t,n){console.warn("no chart state for bubble chart")}export(){return this._updateChart(),f3(this.chartRenderer.component)}_needUpdateCalculatedDataBySettings(t,n){var r,a,i,o;return t.facetBy.some((s,c)=>{var f;return s.value!==((f=n.facetBy[c])==null?void 0:f.value)})||((r=t.normalization)==null?void 0:r.method)!==((a=n.normalization)==null?void 0:a.method)||((i=t.normalization)==null?void 0:i.direction)!==((o=n.normalization)==null?void 0:o.direction)||t.xColumn.value!==n.xColumn.value||t.yColumn.value!==n.yColumn.value||t.valueColumnColor.value!==n.valueColumnColor.value||t.valueColumnSize.value!==n.valueColumnSize.value||t.NAValueAs!==n.NAValueAs}_needUpdateCalculatedDataByData(t,n){let r=Object.keys(t.data),a=Object.keys(n.data);return t.id!==n.id||r.length!==a.length||r.some(i=>{var o;return t.data[i].length!==((o=n.data[i])==null?void 0:o.length)})}_updateData(){let{facetBy:t,xColumn:n,yColumn:r,valueColumnSize:a,valueColumnColor:i,normalization:o,NAValueAs:s}=this.settings,c=t.map(m=>this.data.getColumnCategories(m.value)),f=c.length?nZ([...c]):[["null"]],A=t.map(m=>m.value)??null;this.data.setGrouping([...A]);let h=m4t(this.data,n,r,a,i,t,f,o,s);this.calculatedData={facetKeys:h.meta.facetKeys,groupedCellsData:h}}_updateAesInData(){this.calculatedData}_updateChart(){if(!this.calculatedData)return;let{id:t,chartSettings:n,facetSettings:r,valueColumnColor:a,valueColumnSize:i,normalization:o,aes:s}=this.settings;this.chartRenderer.render(t,n,r,this.calculatedData.facetKeys,this.calculatedData.groupedCellsData,a,i,o,s)}};function H4t(e){return"type"in e&&e.type==="columns"}var TZ=class DI{constructor(t,n){Me(this,"id");Me(this,"data");Me(this,"rowsCount");Me(this,"columnNames");Me(this,"rowsGrouped");this.id=t,this.data=n,this.columnNames=Object.keys(n),this.rowsCount=this.columnNames.length?n[this.columnNames[0]].length:0}static from(t){if(t instanceof DI)return t;if(H4t(t))return new DI(t.id,t.values);vA(t,"Unknown input data format")}get rows(){let t=this.columnNames,n=[];for(let r=0;r<this.rowsCount;r++)n.push(t.reduce((a,i)=>(a[i]=this.data[i][r],a),{}));return n}getColumn(t){return this.data[t]}getColumnCategories(t){if(!this.columnNames.includes(t))throw new Error(`Column ${t} does not exist`);return Ir.uniq(this.getColumn(t)).map(String)}setGrouping(t){let n={grouped:{},rows:this.rows},r=[n];t.forEach(a=>{let i=a===null?["null"]:this.getColumnCategories(a),o=[];r.forEach(s=>{if(a===null)s.grouped={null:{rows:s.rows,grouped:{}}},o.push(s.grouped.null);else{let c=Ir.groupBy(s.rows,f=>String(f[a]));s.grouped=i.reduce((f,A)=>(f[A]={rows:c[A]??[],grouped:{}},o.push(f[A]),f),{})}}),r=o}),this.rowsGrouped=n.grouped}getColumnByGrouping(t,n){if(!this.rowsGrouped)return[];if(!t.length)return this.rows.map(a=>Number(a[n]));let r={grouped:this.rowsGrouped,rows:this.rows};return t.forEach(a=>{let i=r.grouped[a??"null"];if(!i)return[];r=i}),r.rows.map(a=>Number(a[n]))}getRowsByGrouping(t){if(!this.rowsGrouped)return[];if(!t.length)return this.rows;let n={grouped:this.rowsGrouped,rows:this.rows};return t.forEach(r=>{let a=n.grouped[r??"null"];if(!a)return[];n=a}),n==null?void 0:n.rows}},I4t=class HI{constructor(t){Me(this,"node");Me(this,"chart");this.chart=t}static createChart(t,n,r){let{type:a}=n;if(a==="discrete")return new G7t(t,n);if(a==="dendro")return new F2t(t,n,r);if(a==="scatterplot")return new R9t(t,n);if(a==="scatterplot-umap")return new d4t(t,n,r);if(a==="heatmap")return new Cwt(t,n);if(a==="histogram")return new jwt(t,n);if(a==="bubble")return new D4t(t,n);vA(a,`Unknown chart type: ${a}`)}static newPlot(t,n,r){let a=TZ.from(t);return new this(HI.createChart(a,n,r))}get calculatedData(){return this.chart.calculatedData}mount(t){this.node=t,this.chart.mount(t)}unmount(){delete this.node,this.chart.unmount()}updateSettingsAndData(t,n){if(n.type!==this.chart.settings.type){let r=HI.createChart(this.chart.data,n);this.node?(this.chart.unmount(),this.chart=r,this.chart.mount(this.node)):this.chart=r}else this.chart.updateSettingsAndData(TZ.from(t),n)}updateChartState(t,n){this.chart.updateChartState(t,n)}export(){return this.chart.export()}};/*! Bundled license information:
|
|
15191
15191
|
|
|
15192
15192
|
@stdlib/utils-define-property/lib/define_property.js:
|
|
15193
15193
|
(**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/graph-maker",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.95",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/graph-maker.umd.cjs",
|
|
6
6
|
"module": "dist/graph-maker.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@ag-grid-community/core": "^32.3.3",
|
|
34
34
|
"@milaboratories/helpers": "^1.6.11",
|
|
35
|
-
"@milaboratories/miplots4": "^1.0.
|
|
35
|
+
"@milaboratories/miplots4": "^1.0.90",
|
|
36
36
|
"@milaboratories/pf-plots": "^1.1.6",
|
|
37
37
|
"@platforma-sdk/model": "^1.30.11",
|
|
38
38
|
"@platforma-sdk/ui-vue": "^1.30.15",
|