UNPKG

vue-data-ui

Version:

A user-empowering data visualization Vue 3 components library for eloquent data storytelling

3 lines 117 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./index-CBRI5uwl.cjs"),B=require("./DataTable-Be-eTBzq.cjs"),E=require("./Title-BP4K_GLE.cjs"),G=require("./Tooltip-KXn1rQhr.cjs"),V=require("./usePrinter-C1Rlqzcj.cjs"),z=require("./Shape-BF6K6die.cjs"),M=require("./BaseIcon-Db1HIrAt.cjs"),T=require("./vue-ui-table-sparkline-HE8HXlhe.cjs"),P=require("./vue-ui-skeleton-CM4wEsYA.cjs"),R=require("./Slicer-bY7XVDi5.cjs"),D=require("./vue-ui-accordion-C5C3XQ8f.cjs"),v=require("./useNestedProp-0jJvFRhK.cjs"),H=require("./PackageVersion-D_gJvbGU.cjs"),q=require("./PenAndPaper-DWG9pfri.cjs"),t=require("vue"),W=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),Y=d.createUid(),X={name:"vue-ui-xy",props:{config:{type:Object,default(){return{}}},dataset:{type:Array,default(){return[]}}},components:{DataTable:B.DataTable,Shape:z._sfc_main,Title:E._sfc_main,Tooltip:G._sfc_main,UserOptions:V.UserOptions,BaseIcon:M.default,TableSparkline:T.default,Skeleton:P.default,Slicer:R.Slicer,Accordion:D.default,PackageVersion:H._sfc_main,PenAndPaper:q.PenAndPaper},data(){this.dataset.forEach((h,r)=>{[null,void 0].includes(h.series)&&this.error({componentName:"VueUiXy",type:"datasetSerieAttribute",property:"series (number[])",index:r})});const l=this.config.downsample&&this.config.downsample.threshold?this.config.downsample.threshold:500,i=Math.max(...this.dataset.map(h=>this.largestTriangleThreeBucketsArray({data:h.series,threshold:l}).length)),n={start:0,end:i};return{themePalettes:d.themePalettes,themes:d.themes,slicerStep:0,selectedScale:null,CTX:null,CANVAS:null,opacity:d.opacity,useSafeValues:!0,palette:d.palette,height:600,width:1e3,viewBox:"0 0 1000 600",clientPosition:{x:0,y:0},canvasClientPosition:{x:0,y:0},icons:{line:"line",bar:"bar",plot:"plot"},isAnnotator:!1,isFullscreen:!1,isPrinting:!1,isImaging:!1,isTooltip:!1,mutableConfig:{dataLabels:{show:!0},showTooltip:!0,showTable:!1,isStacked:!1,useIndividualScale:!1},selectedSerieIndex:null,selectedRowIndex:null,segregatedSeries:[],uniqueId:d.createUid(),step:0,tableStep:0,titleStep:0,slicer:n,__to__:null,maxX:i,showSparklineTable:!0,segregateStep:0,sliderId:Y,fontSizes:{xAxis:18,yAxis:12,dataLabels:20,plotLabels:10},plotRadii:{plot:3,line:3},selectedMinimapIndex:null,showUserOptionsOnChartHover:!1,keepUserOptionState:!0,userOptionsVisible:!0,svgRef:null,tagRefs:{}}},watch:{dataset:{handler(l,i){this.maxX=Math.max(...this.dataset.map(n=>this.largestTriangleThreeBucketsArray({data:n.series,threshold:this.FINAL_CONFIG.downsample.threshold}).length)),this.slicer={start:0,end:this.maxX},this.slicerStep+=1,this.segregateStep+=1},deep:!0},config:{handler(l,i){this.FINAL_CONFIG=this.prepareConfig(),this.prepareChart(),this.titleStep+=1,this.tableStep+=1,this.mutableConfig={dataLabels:{show:!0},showTooltip:this.FINAL_CONFIG.chart.tooltip.show===!0,showTable:this.FINAL_CONFIG.showTable===!0,isStacked:this.FINAL_CONFIG.chart.grid.labels.yAxis.stacked,useIndividualScale:this.FINAL_CONFIG.chart.grid.labels.yAxis.useIndividualScale}},deep:!0}},computed:{chartAriaLabel(){const l=this.FINAL_CONFIG.chart.title.text||"Chart visualization",i=this.FINAL_CONFIG.chart.title.subtitle.text||"";return`${l}. ${i}`},optimize(){return{linePlot:this.maxSeries>this.FINAL_CONFIG.line.dot.hideAboveMaxSerieLength}},hasOptionsNoTitle(){return this.FINAL_CONFIG.chart.userOptions.show&&(!this.FINAL_CONFIG.chart.title.show||!this.FINAL_CONFIG.chart.title.text)},minimap(){if(!this.FINAL_CONFIG.chart.zoom.minimap.show)return[];const l=this.datasetWithIds.filter(r=>!this.segregatedSeries.includes(r.id)),i=Math.max(...l.map(r=>r.series.length)),n=[];for(let r=0;r<i;r+=1)n.push(l.map(e=>e.series[r]||0).reduce((e,x)=>(e||0)+(x||0),0));const h=Math.min(...n);return n.map(r=>r+(h<0?Math.abs(h):0))},customPalette(){return this.convertCustomPalette(this.FINAL_CONFIG.customPalette)},backgroundColor(){return this.FINAL_CONFIG.chart.backgroundColor},slicerColor(){return this.FINAL_CONFIG.chart.zoom.color},allScales(){const l=this.lineSet.map(e=>({name:e.name,color:e.color,scale:e.individualScale,scaleYLabels:e.scaleYLabels,zero:e.zeroPosition,max:e.individualMax,scaleLabel:e.scaleLabel||"",id:e.id,yOffset:e.yOffset||0,individualHeight:e.individualHeight||this.drawingArea.height,autoScaleYLabels:e.autoScaleYLabels})),i=this.barSet.map(e=>({name:e.name,color:e.color,scale:e.individualScale,scaleYLabels:e.scaleYLabels,zero:e.zeroPosition,max:e.individualMax,scaleLabel:e.scaleLabel||"",id:e.id,yOffset:e.yOffset||0,individualHeight:e.individualHeight||this.drawingArea.height})),n=this.plotSet.map(e=>({name:e.name,color:e.color,scale:e.individualScale,scaleYLabels:e.scaleYLabels,zero:e.zeroPosition,max:e.individualMax,scaleLabel:e.scaleLabel||"",id:e.id,yOffset:e.yOffset||0,individualHeight:e.individualHeight||this.drawingArea.height})),h=this.mutableConfig.useIndividualScale&&!this.mutableConfig.isStacked?Object.values(this.scaleGroups):[...l,...i,...n],r=h.flatMap(e=>e).length;return h.flatMap((e,x)=>({unique:e.unique,id:e.id,groupId:e.groupId,scaleLabel:e.scaleLabel,name:this.mutableConfig.useIndividualScale&&!this.mutableConfig.isStacked?e.unique?e.name:e.groupName:e.name,color:this.mutableConfig.useIndividualScale&&!this.mutableConfig.isStacked?e.unique?e.color:e.groupColor:e.color,scale:e.scale,yOffset:e.yOffset,individualHeight:e.individualHeight,x:this.mutableConfig.isStacked?this.drawingArea.left:this.drawingArea.left/r*(x+1),yLabels:e.scaleYLabels||e.scale.ticks.map(g=>({y:g>=0?e.zero-e.individualHeight*(g/e.max):e.zero+e.individualHeight*Math.abs(g)/e.max,value:g}))}))},isDataset(){return!!this.dataset&&this.dataset.length},chartFont(){const l=document.getElementById(`vue-ui-xy_${this.uniqueId}`);return window.getComputedStyle(l,null).getPropertyValue("font-family")},FINAL_CONFIG:{get:function(){return this.prepareConfig()},set:function(l){return l}},hasHighlightArea(){return Array.isArray(this.FINAL_CONFIG.chart.highlightArea)?this.FINAL_CONFIG.chart.highlightArea.some(l=>l.show):this.FINAL_CONFIG.chart.highlightArea&&this.FINAL_CONFIG.chart.highlightArea.show},highlightAreas(){if(Array.isArray(this.FINAL_CONFIG.chart.highlightArea))return this.FINAL_CONFIG.chart.highlightArea.map(i=>({...i,span:i.from===i.to?1:i.to<i.from?0:i.to-i.from+1}));const l=this.FINAL_CONFIG.chart.highlightArea;return[{...l,span:l.from===l.to?1:l.to<l.from?0:l.to-l.from+1}]},xPadding(){return this.FINAL_CONFIG.chart.grid.position==="middle"?0:this.drawingArea.width/this.maxSeries/2},relativeZero(){return[null,void 0].includes(this.FINAL_CONFIG.chart.grid.labels.yAxis.scaleMin)?this.niceScale.min>=0?0:Math.abs(this.niceScale.min):-this.niceScale.min},absoluteMax(){return this.niceScale.max+this.relativeZero},datasetWithIds(){return this.useSafeValues?this.dataset.map((l,i)=>({...l,series:this.largestTriangleThreeBucketsArray({data:l.series,threshold:this.FINAL_CONFIG.downsample.threshold}),id:`uniqueId_${i}`})):this.dataset},safeDataset(){return this.useSafeValues?this.dataset.map((l,i)=>{const n=this.largestTriangleThreeBucketsArray({data:l.series,threshold:this.FINAL_CONFIG.downsample.threshold}),h=`uniqueId_${i}`;return{...l,slotAbsoluteIndex:i,series:n.map(r=>this.isSafeValue(r)?r:null).slice(this.slicer.start,this.slicer.end),color:this.convertColorToHex(l.color?l.color:this.customPalette[i]?this.customPalette[i]:this.palette[i]),id:h,scaleLabel:l.scaleLabel||h}}):this.dataset},relativeDataset(){return this.safeDataset.map((l,i)=>({...l,series:l.series.map(n=>n+this.relativeZero),absoluteValues:l.series})).filter(l=>!this.segregatedSeries.includes(l.id))},tableSparklineDataset(){return this.relativeDataset.map(l=>{const i=l.absoluteValues.map(n=>[void 0,null].includes(n)?0:n);return{id:l.id,name:l.name,color:l.color,values:this.fillArray(this.maxSeries,i)}})},tableSparklineConfig(){return{responsiveBreakpoint:this.FINAL_CONFIG.table.responsiveBreakpoint,roundingValues:this.FINAL_CONFIG.table.rounding,showAverage:!1,showMedian:!1,showTotal:!1,fontFamily:this.FINAL_CONFIG.chart.fontFamily,prefix:this.FINAL_CONFIG.chart.labels.prefix,suffix:this.FINAL_CONFIG.chart.labels.suffix,colNames:JSON.parse(JSON.stringify(this.FINAL_CONFIG.chart.grid.labels.xAxisLabels.values)),thead:{backgroundColor:this.FINAL_CONFIG.table.th.backgroundColor,color:this.FINAL_CONFIG.table.th.color,outline:this.FINAL_CONFIG.table.th.outline},tbody:{backgroundColor:this.FINAL_CONFIG.table.td.backgroundColor,color:this.FINAL_CONFIG.table.td.color,outline:this.FINAL_CONFIG.table.td.outline},userOptions:{show:!1}}},absoluteDataset(){return this.safeDataset.map((l,i)=>({absoluteIndex:i,...l,series:l.series.map(n=>n+this.relativeZero),absoluteValues:l.series,segregate:()=>this.segregate(l),isSegregated:this.segregatedSeries.includes(l.id)}))},activeSeriesLength(){return this.absoluteDataset.length},activeSeriesWithStackRatios(){return this.assignStackRatios(this.absoluteDataset.filter(l=>!this.segregatedSeries.includes(l.id)))},scaleGroups(){const l=Object.groupBy(this.activeSeriesWithStackRatios,n=>n.scaleLabel),i={};for(const[n,h]of Object.entries(l)){const r=h.flatMap(e=>e.absoluteValues);i[n]={min:Math.min(...r)||0,max:Math.max(...r)||1,groupId:`scale_group_${this.createUid()}`}}return i},barSet(){return this.activeSeriesWithStackRatios.filter(l=>l.type==="bar").map((l,i)=>{this.checkAutoScaleError(l);const n=this.scaleGroups[l.scaleLabel].min,h=this.scaleGroups[l.scaleLabel].max;l.absoluteValues.filter(N=>![null,void 0].includes(N)).map(N=>(N-n)/(h-n));const r={valueMin:n,valueMax:h<0?0:h},e={max:l.scaleMax||Math.max(...l.absoluteValues)||1,min:l.scaleMin||Math.min(...l.absoluteValues.filter(N=>![void 0,null].includes(N)))>0?0:Math.min(...l.absoluteValues.filter(N=>![null,void 0].includes(N)))},x=l.scaleSteps||this.FINAL_CONFIG.chart.grid.labels.yAxis.commonScaleSteps,g=1.0000001,u=this.calculateNiceScaleWithExactExtremes(e.min,e.max===e.min?e.max*g:e.max,x),b=this.calculateNiceScaleWithExactExtremes(r.valueMin,r.valueMax===r.valueMin?r.valueMax*g:r.valueMax,x),L=u.min>=0?0:Math.abs(u.min),_=0,C=u.max+L,y=b.max+Math.abs(_),m=this.mutableConfig.isStacked?this.drawingArea.height*(1-l.cumulatedStackRatio):0,F=this.mutableConfig.isStacked?this.drawingArea.height*l.stackRatio-this.FINAL_CONFIG.chart.grid.labels.yAxis.gap:this.drawingArea.height,A=this.drawingArea.bottom-m-F*L/C,O=this.drawingArea.bottom-m-F*_/y,a=this.absoluteDataset.filter(N=>N.type==="bar").filter(N=>!this.segregatedSeries.includes(N.id)).length,o=l.series.map((N,w)=>{const I=this.mutableConfig.useIndividualScale?(l.absoluteValues[w]+L)/C:this.ratioToMax(N),k=this.mutableConfig.useIndividualScale&&this.mutableConfig.isStacked?this.drawingArea.left+this.drawingArea.width/this.maxSeries*w:this.drawingArea.left+this.slot.bar*i+this.slot.bar*w*a-this.barSlot/2-i*this.barPeriodGap;return{yOffset:this.checkNaN(m),individualHeight:this.checkNaN(F),x:this.checkNaN(k),y:this.drawingArea.bottom-m-F*I,value:l.absoluteValues[w],zeroPosition:this.checkNaN(A),individualMax:this.checkNaN(C),comment:l.comments&&l.comments.slice(this.slicer.start,this.slicer.end)[w]||""}}),s=l.absoluteValues.map(N=>b.min>=0?(N-Math.abs(b.min))/(b.max-Math.abs(b.min)):(N+Math.abs(b.min))/(b.max+Math.abs(b.min))),c=l.series.map((N,w)=>{const I=this.mutableConfig.useIndividualScale&&this.mutableConfig.isStacked?this.drawingArea.left+this.drawingArea.width/this.maxSeries*w:this.drawingArea.left-this.slot.bar/2+this.slot.bar*i+this.slot.bar*w*this.absoluteDataset.filter(k=>k.type==="bar").filter(k=>!this.segregatedSeries.includes(k.id)).length;return{yOffset:this.checkNaN(m),individualHeight:this.checkNaN(F),x:this.checkNaN(I),y:this.checkNaN(this.drawingArea.bottom-this.checkNaN(m)-(this.checkNaN(F)*s[w]||0)),value:l.absoluteValues[w],zeroPosition:this.checkNaN(A),individualMax:this.checkNaN(C),comment:l.comments&&l.comments.slice(this.slicer.start,this.slicer.end)[w]||""}}),f=u.ticks.map(N=>({y:N>=0?A-F*(N/C):A+F*Math.abs(N)/C,value:N,prefix:l.prefix||this.FINAL_CONFIG.chart.labels.prefix,suffix:l.suffix||this.FINAL_CONFIG.chart.labels.suffix,datapoint:l})),S=b.ticks.map(N=>{const w=(N-b.min)/(b.max-b.min);return{y:N>=0?O-F*w:O+F*w,value:N,prefix:l.prefix||this.FINAL_CONFIG.chart.labels.prefix,suffix:l.suffix||this.FINAL_CONFIG.chart.labels.suffix,datapoint:l}});return this.scaleGroups[l.scaleLabel].name=l.name,this.scaleGroups[l.scaleLabel].groupName=l.scaleLabel,this.scaleGroups[l.scaleLabel].groupColor=this.FINAL_CONFIG.chart.grid.labels.yAxis.groupColor||l.color,this.scaleGroups[l.scaleLabel].color=l.color,this.scaleGroups[l.scaleLabel].scaleYLabels=l.autoScaling?S:f,this.scaleGroups[l.scaleLabel].zeroPosition=l.autoScaling?O:A,this.scaleGroups[l.scaleLabel].individualMax=l.autoScaling?y:C,this.scaleGroups[l.scaleLabel].scaleLabel=l.scaleLabel,this.scaleGroups[l.scaleLabel].id=l.id,this.scaleGroups[l.scaleLabel].yOffset=m,this.scaleGroups[l.scaleLabel].individualHeight=F,this.scaleGroups[l.scaleLabel].autoScaleYLabels=S,this.scaleGroups[l.scaleLabel].unique=this.activeSeriesWithStackRatios.filter(N=>N.scaleLabel===l.scaleLabel).length===1,{...l,yOffset:m,autoScaleYLabels:S,individualHeight:F,scaleYLabels:l.autoScaling?S:f,individualScale:l.autoScaling?b:u,individualMax:l.autoScaling?y:C,zeroPosition:l.autoScaling?O:A,plots:l.autoScaling?c:o,groupId:this.scaleGroups[l.scaleLabel].groupId}})},lineSet(){return this.activeSeriesWithStackRatios.filter(l=>l.type==="line").map(l=>{this.checkAutoScaleError(l);const i=this.scaleGroups[l.scaleLabel].min,n=this.scaleGroups[l.scaleLabel].max;l.absoluteValues.filter(I=>![null,void 0].includes(I)).map(I=>(I-i)/(n-i));const h={valueMin:i,valueMax:n},r={max:l.scaleMax||Math.max(...l.absoluteValues)||1,min:l.scaleMin||(Math.min(...l.absoluteValues)>0?0:Math.min(...l.absoluteValues))},e=l.scaleSteps||this.FINAL_CONFIG.chart.grid.labels.yAxis.commonScaleSteps,x=1.0000001,g=this.calculateNiceScaleWithExactExtremes(r.min,r.max===r.min?r.max*x:r.max,e),u=this.calculateNiceScaleWithExactExtremes(h.valueMin,h.valueMax===h.valueMin?h.valueMax*x:h.valueMax,e),b=g.min>=0?0:Math.abs(g.min),L=0,_=g.max+Math.abs(b),C=u.max+Math.abs(L),y=this.mutableConfig.isStacked?this.drawingArea.height*(1-l.cumulatedStackRatio):0,m=this.mutableConfig.isStacked?this.drawingArea.height*l.stackRatio-this.FINAL_CONFIG.chart.grid.labels.yAxis.gap:this.drawingArea.height,F=this.drawingArea.bottom-y-m*b/_,A=this.drawingArea.bottom-y-m*L/C,O=l.series.map((I,k)=>{const p=this.mutableConfig.useIndividualScale?(l.absoluteValues[k]+Math.abs(b))/_:this.ratioToMax(I);return{x:this.checkNaN(this.drawingArea.left+this.slot.line/2+this.slot.line*k),y:this.checkNaN(this.drawingArea.bottom-y-m*p),value:l.absoluteValues[k],comment:l.comments&&l.comments.slice(this.slicer.start,this.slicer.end)[k]||""}}),a=l.absoluteValues.map(I=>u.min>=0?(I-Math.abs(u.min))/(u.max-Math.abs(u.min)):(I+Math.abs(u.min))/(u.max+Math.abs(u.min))),o=l.series.map((I,k)=>[void 0,null].includes(l.absoluteValues[k])?{x:this.checkNaN(this.drawingArea.left+this.slot.line/2+this.slot.line*k),y:F,value:l.absoluteValues[k],comment:l.comments&&l.comments.slice(this.slicer.start,this.slicer.end)[k]||""}:{x:this.checkNaN(this.drawingArea.left+this.slot.line/2+this.slot.line*k),y:this.checkNaN(this.drawingArea.bottom-y-(m*a[k]||0)),value:l.absoluteValues[k],comment:l.comments&&l.comments.slice(this.slicer.start,this.slicer.end)[k]||""}),s=this.createSmoothPath(O.filter(I=>I.value!==null)),c=this.createSmoothPath(o.filter(I=>I.value!==null)),f=this.createStraightPath(O.filter(I=>I.value!==null)),S=this.createStraightPath(o.filter(I=>I.value!==null)),N=g.ticks.map(I=>({y:I>=0?F-m*(I/_):F+m*Math.abs(I)/_,value:I,prefix:l.prefix||this.FINAL_CONFIG.chart.labels.prefix,suffix:l.suffix||this.FINAL_CONFIG.chart.labels.suffix,datapoint:l})),w=u.ticks.map(I=>{const k=(I-u.min)/(u.max-u.min);return{y:I>=0?A-m*k:A+m*k,value:I,prefix:l.prefix||this.FINAL_CONFIG.chart.labels.prefix,suffix:l.suffix||this.FINAL_CONFIG.chart.labels.suffix,datapoint:l}});return this.scaleGroups[l.scaleLabel].name=l.name,this.scaleGroups[l.scaleLabel].groupName=l.scaleLabel,this.scaleGroups[l.scaleLabel].groupColor=this.FINAL_CONFIG.chart.grid.labels.yAxis.groupColor||l.color,this.scaleGroups[l.scaleLabel].color=l.color,this.scaleGroups[l.scaleLabel].scaleYLabels=l.autoScaling?w:N,this.scaleGroups[l.scaleLabel].zeroPosition=l.autoScaling?A:F,this.scaleGroups[l.scaleLabel].individualMax=l.autoScaling?C:_,this.scaleGroups[l.scaleLabel].scaleLabel=l.scaleLabel,this.scaleGroups[l.scaleLabel].id=l.id,this.scaleGroups[l.scaleLabel].yOffset=y,this.scaleGroups[l.scaleLabel].individualHeight=m,this.scaleGroups[l.scaleLabel].autoScaleYLabels=w,this.scaleGroups[l.scaleLabel].unique=this.activeSeriesWithStackRatios.filter(I=>I.scaleLabel===l.scaleLabel).length===1,{...l,yOffset:y,autoScaleYLabels:w,individualHeight:m,scaleYLabels:l.autoScaling?w:N,individualScale:l.autoScaling?u:g,individualMax:l.autoScaling?C:_,zeroPosition:l.autoScaling?A:F,curve:l.autoScaling?c:s,plots:l.autoScaling?o:O,area:l.useArea?this.mutableConfig.useIndividualScale?this.createIndividualArea(l.autoScaling?o:O,l.autoScaling?A:F):this.createArea(O):"",straight:l.autoScaling?S:f,groupId:this.scaleGroups[l.scaleLabel].groupId}})},plotSet(){return this.activeSeriesWithStackRatios.filter(l=>l.type==="plot").map(l=>{this.checkAutoScaleError(l);const i=this.scaleGroups[l.scaleLabel].min,n=this.scaleGroups[l.scaleLabel].max;l.absoluteValues.filter(f=>![null,void 0].includes(f)).map(f=>(f-i)/(n-i));const h={valueMin:i,valueMax:n},r={max:l.scaleMax||Math.max(...l.absoluteValues)||1,min:l.scaleMin||Math.min(...l.absoluteValues)>0?0:Math.min(...l.absoluteValues)},e=l.scaleSteps||this.FINAL_CONFIG.chart.grid.labels.yAxis.commonScaleSteps,x=1.0000001,g=this.calculateNiceScaleWithExactExtremes(r.min,r.max===r.min?r.max*x:r.max,e),u=this.calculateNiceScaleWithExactExtremes(h.valueMin,h.valueMax===h.valueMin?h.valueMax*x:h.valueMax,e),b=g.min>=0?0:Math.abs(g.min),L=0,_=g.max+b,C=u.max+Math.abs(L),y=this.mutableConfig.isStacked?this.drawingArea.height*(1-l.cumulatedStackRatio):0,m=this.mutableConfig.isStacked?this.drawingArea.height*l.stackRatio-this.FINAL_CONFIG.chart.grid.labels.yAxis.gap:this.drawingArea.height,F=this.drawingArea.bottom-y-m*b/_,A=this.drawingArea.bottom-y-m*L/C,O=l.series.map((f,S)=>{const N=this.mutableConfig.useIndividualScale?(l.absoluteValues[S]+Math.abs(b))/_:this.ratioToMax(f);return{x:this.checkNaN(this.drawingArea.left+this.slot.plot/2+this.slot.plot*S),y:this.checkNaN(this.drawingArea.bottom-y-m*N),value:l.absoluteValues[S],comment:l.comments&&l.comments.slice(this.slicer.start,this.slicer.end)[S]||""}}),a=l.absoluteValues.map(f=>u.min>=0?(f-Math.abs(u.min))/(u.max-Math.abs(u.min)):(f+Math.abs(u.min))/(u.max+Math.abs(u.min))),o=l.series.map((f,S)=>({x:this.checkNaN(this.drawingArea.left+this.slot.plot/2+this.slot.plot*S),y:this.checkNaN(this.drawingArea.bottom-y-(m*a[S]||0)),value:l.absoluteValues[S],comment:l.comments&&l.comments.slice(this.slicer.start,this.slicer.end)[S]||""})),s=g.ticks.map(f=>({y:f>=0?F-m*(f/_):F+m*Math.abs(f)/_,value:f,prefix:l.prefix||this.FINAL_CONFIG.chart.labels.prefix,suffix:l.suffix||this.FINAL_CONFIG.chart.labels.suffix,datapoint:l})),c=u.ticks.map(f=>{const S=(f-u.min)/(u.max-u.min);return{y:f>=0?A-m*S:A+m*S,value:f,prefix:l.prefix||this.FINAL_CONFIG.chart.labels.prefix,suffix:l.suffix||this.FINAL_CONFIG.chart.labels.suffix,datapoint:l}});return this.scaleGroups[l.scaleLabel].name=l.name,this.scaleGroups[l.scaleLabel].groupName=l.scaleLabel,this.scaleGroups[l.scaleLabel].groupColor=this.FINAL_CONFIG.chart.grid.labels.yAxis.groupColor||l.color,this.scaleGroups[l.scaleLabel].color=l.color,this.scaleGroups[l.scaleLabel].scaleYLabels=l.autoScaling?c:s,this.scaleGroups[l.scaleLabel].zeroPosition=l.autoScaling?A:F,this.scaleGroups[l.scaleLabel].individualMax=l.autoScaling?C:_,this.scaleGroups[l.scaleLabel].scaleLabel=l.scaleLabel,this.scaleGroups[l.scaleLabel].id=l.id,this.scaleGroups[l.scaleLabel].yOffset=y,this.scaleGroups[l.scaleLabel].individualHeight=m,this.scaleGroups[l.scaleLabel].autoScaleYLabels=c,this.scaleGroups[l.scaleLabel].unique=this.activeSeriesWithStackRatios.filter(f=>f.scaleLabel===l.scaleLabel).length===1,{...l,yOffset:y,autoScaleYLabels:c,individualHeight:m,scaleYLabels:l.autoScaling?c:s,individualScale:l.autoScaling?u:g,individualMax:l.autoScaling?C:_,zeroPosition:l.autoScaling?A:F,plots:l.autoScaling?o:O,groupId:this.scaleGroups[l.scaleLabel].groupId}})},drawingArea(){function l(h){const r=new Set;return h.forEach(e=>{const x=e.scaleLabel||"__noScaleLabel__";r.add(x)}),r.size}const i=l(this.absoluteDataset.filter(h=>!this.segregatedSeries.includes(h.id))),n=this.mutableConfig.useIndividualScale&&this.FINAL_CONFIG.chart.grid.labels.show?i*(this.mutableConfig.isStacked?0:this.FINAL_CONFIG.chart.grid.labels.yAxis.labelWidth):0;return{top:this.FINAL_CONFIG.chart.padding.top,right:this.width-this.FINAL_CONFIG.chart.padding.right,bottom:this.height-this.FINAL_CONFIG.chart.padding.bottom,left:this.FINAL_CONFIG.chart.padding.left+n,height:this.height-(this.FINAL_CONFIG.chart.padding.top+this.FINAL_CONFIG.chart.padding.bottom),width:this.width-(this.FINAL_CONFIG.chart.padding.right+this.FINAL_CONFIG.chart.padding.left+n)}},max(){return this.FINAL_CONFIG.chart.grid.labels.yAxis.scaleMax?this.FINAL_CONFIG.chart.grid.labels.yAxis.scaleMax:Math.max(...this.safeDataset.filter(l=>!this.segregatedSeries.includes(l.id)).map(l=>Math.max(...l.series)))},min(){if(this.FINAL_CONFIG.chart.grid.labels.yAxis.scaleMin!==null)return this.FINAL_CONFIG.chart.grid.labels.yAxis.scaleMin;const l=Math.min(...this.safeDataset.filter(i=>!this.segregatedSeries.includes(i.id)).map(i=>Math.min(...i.series)));return l>0?0:l},niceScale(){return this.calculateNiceScaleWithExactExtremes(this.min,this.max<0?0:this.max,this.FINAL_CONFIG.chart.grid.labels.yAxis.commonScaleSteps)},maxSeries(){return this.slicer.end-this.slicer.start},timeLabels(){const l=Math.max(...this.dataset.map(n=>this.largestTriangleThreeBucketsArray({data:n.series,threshold:this.FINAL_CONFIG.downsample.threshold}).length)),i=[];for(let n=0;n<l;n+=1)i.push({text:this.FINAL_CONFIG.chart.grid.labels.xAxisLabels.values[n]||String(n),absoluteIndex:n});return i.slice(this.slicer.start,this.slicer.end)},slot(){return{bar:this.drawingArea.width/this.maxSeries/this.safeDataset.filter(l=>l.type==="bar").filter(l=>!this.segregatedSeries.includes(l.id)).length,plot:this.drawingArea.width/this.maxSeries,line:this.drawingArea.width/this.maxSeries}},barSlot(){const l=this.safeDataset.filter(i=>i.type==="bar").filter(i=>!this.segregatedSeries.includes(i.id)).length;return this.drawingArea.width/this.maxSeries/l-this.barPeriodGap*l},barPeriodGap(){return this.slot.line*this.FINAL_CONFIG.bar.periodGap},maxSlot(){return Math.max(...Object.values(this.slot).filter(l=>l!==1/0))},table(){if(this.safeDataset.length===0)return{head:[],body:[],config:{},columnNames:[]};const l=this.relativeDataset.map(n=>({label:n.name,color:n.color,type:n.type})),i=[];return this.timeLabels.forEach((n,h)=>{const r=[n.text];this.relativeDataset.forEach(e=>{r.push(this.canShowValue(e.absoluteValues[h])?Number(e.absoluteValues[h].toFixed(this.FINAL_CONFIG.table.rounding)):"")}),i.push(r)}),{head:l,body:i}},dataTable(){const l=this.FINAL_CONFIG.table.showSum;let i=[""].concat(this.relativeDataset.map(e=>e.name));l&&(i=i.concat(' <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M18 16v2a1 1 0 0 1 -1 1h-11l6 -7l-6 -7h11a1 1 0 0 1 1 1v2" /></svg>'));let n=[];for(let e=0;e<this.maxSeries;e+=1){const x=this.relativeDataset.map(g=>g.absoluteValues[e]??0).reduce((g,u)=>g+u,0);n.push([this.timeLabels[e].text??"-"].concat(this.relativeDataset.map(g=>this.applyDataLabel(g.type==="line"?this.FINAL_CONFIG.line.labels.formatter:g.type==="bar"?this.FINAL_CONFIG.bar.labels.formatter:this.FINAL_CONFIG.plot.labels.formatter,g.absoluteValues[e]??0,this.dataLabel({p:g.prefix||this.FINAL_CONFIG.chart.labels.prefix,v:g.absoluteValues[e]??0,s:g.suffix||this.FINAL_CONFIG.chart.labels.suffix,r:this.FINAL_CONFIG.table.rounding})))).concat(l?(x??0).toFixed(this.FINAL_CONFIG.table.rounding):[]))}const h={th:{backgroundColor:this.FINAL_CONFIG.table.th.backgroundColor,color:this.FINAL_CONFIG.table.th.color,outline:this.FINAL_CONFIG.table.th.outline},td:{backgroundColor:this.FINAL_CONFIG.table.td.backgroundColor,color:this.FINAL_CONFIG.table.td.color,outline:this.FINAL_CONFIG.table.td.outline},breakpoint:this.FINAL_CONFIG.table.responsiveBreakpoint},r=[this.FINAL_CONFIG.table.columnNames.period].concat(this.relativeDataset.map(e=>e.name)).concat(this.FINAL_CONFIG.table.columnNames.total);return{head:i,body:n,config:h,colNames:r}},dataTooltipSlot(){return{datapoint:this.selectedSeries,seriesIndex:this.selectedSerieIndex,series:this.absoluteDataset,bars:this.barSet,lines:this.lineSet,plots:this.plotSet,config:this.FINAL_CONFIG}},selectedSeries(){return this.relativeDataset.map(l=>({slotAbsoluteIndex:l.slotAbsoluteIndex,shape:l.shape||null,name:l.name,color:l.color,type:l.type,value:l.absoluteValues.find((i,n)=>n===this.selectedSerieIndex),comments:l.comments||[],prefix:l.prefix||this.FINAL_CONFIG.chart.labels.prefix,suffix:l.suffix||this.FINAL_CONFIG.chart.labels.suffix}))},tooltipContent(){let l="",i=this.selectedSeries.map(r=>r.value).filter(r=>this.isSafeValue(r)&&r!==null).reduce((r,e)=>Math.abs(r)+Math.abs(e),0);const n=this.timeLabels[this.selectedSerieIndex],h=this.FINAL_CONFIG.chart.tooltip.customFormat;return this.isFunction(h)&&this.functionReturnsString(()=>h({seriesIndex:this.selectedSerieIndex,datapoint:this.selectedSeries,series:this.absoluteDataset,bars:this.barSet,lines:this.lineSet,plots:this.plotSet,config:this.FINAL_CONFIG}))?h({seriesIndex:this.selectedSerieIndex,datapoint:this.selectedSeries,series:this.absoluteDataset,bars:this.barSet,lines:this.lineSet,plots:this.plotSet,config:this.FINAL_CONFIG}):(n&&n.text&&this.FINAL_CONFIG.chart.tooltip.showTimeLabel&&(l+=`<div style="padding-bottom: 6px; margin-bottom: 4px; border-bottom: 1px solid ${this.FINAL_CONFIG.chart.tooltip.borderColor}; width:100%">${n.text}</div>`),this.selectedSeries.forEach(r=>{if(this.isSafeValue(r.value)){let e="",x="";switch(this.icons[r.type]){case"bar":e=`<svg viewBox="0 0 40 40" height="14" width="14">${this.$slots.pattern?`<rect x="0" y="0" rx="1" stroke="none" height="40" width="40" fill="${r.color}" />`:""}<rect x="0" y="0" rx="1" stroke="none" height="40" width="40" fill="${this.$slots.pattern?`url(#pattern_${this.uniqueId}_${r.slotAbsoluteIndex}`:r.color}" /></svg>`;break;case"line":!r.shape||!["star","triangle","square","diamond","pentagon","hexagon"].includes(r.shape)?x=`<circle cx="10" cy="8" r="4" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="0.5" fill="${r.color}" />`:r.shape==="triangle"?x=`<path d="${d.createPolygonPath({plot:{x:10,y:8},radius:4,sides:3,rotation:.52}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="0.5" />`:r.shape==="square"?x=`<path d="${d.createPolygonPath({plot:{x:10,y:8},radius:4,sides:4,rotation:.8}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="0.5" />`:r.shape==="diamond"?x=`<path d="${d.createPolygonPath({plot:{x:10,y:8},radius:4,sides:4,rotation:0}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="0.5" />`:r.shape==="pentagon"?x=`<path d="${d.createPolygonPath({plot:{x:10,y:8},radius:4,sides:5,rotation:.95}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="0.5" />`:r.shape==="hexagon"?x=`<path d="${d.createPolygonPath({plot:{x:10,y:8},radius:4,sides:6,rotation:0}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="0.5" />`:r.shape==="star"&&(x=`<polygon stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="0.5" fill="${r.color}" points="${d.createStar({plot:{x:10,y:8},radius:4})}" />`),e=`<svg viewBox="0 0 20 12" height="14" width="20"><rect rx="1.5" x="0" y="6.5" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="0.5" height="3" width="20" fill="${r.color}" />${x}</svg>`;break;case"plot":if(!r.shape||!["star","triangle","square","diamond","pentagon","hexagon"].includes(r.shape)){e=`<svg viewBox="0 0 12 12" height="14" width="14"><circle cx="6" cy="6" r="6" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="1" fill="${r.color}" /></svg>`;break}if(r.shape==="star"){e=`<svg viewBox="0 0 12 12" height="14" width="14"><polygon stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="1" fill="${r.color}" points="${d.createStar({plot:{x:6,y:6},radius:5})}" /></svg>`;break}if(r.shape==="triangle"){e=`<svg viewBox="0 0 12 12" height="14" width="14"><path d="${d.createPolygonPath({plot:{x:6,y:6},radius:6,sides:3,rotation:.52}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="1" /></svg>`;break}if(r.shape==="square"){e=`<svg viewBox="0 0 12 12" height="14" width="14"><path d="${d.createPolygonPath({plot:{x:6,y:6},radius:6,sides:4,rotation:.8}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="1" /></svg>`;break}if(r.shape==="diamond"){e=`<svg viewBox="0 0 12 12" height="14" width="14"><path d="${d.createPolygonPath({plot:{x:6,y:6},radius:5,sides:4,rotation:0}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="1" /></svg>`;break}if(r.shape==="pentagon"){e=`<svg viewBox="0 0 12 12" height="14" width="14"><path d="${d.createPolygonPath({plot:{x:6,y:6},radius:5,sides:5,rotation:.95}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="1" /></svg>`;break}if(r.shape==="hexagon"){e=`<svg viewBox="0 0 12 12" height="14" width="14"><path d="${d.createPolygonPath({plot:{x:6,y:6},radius:5,sides:6,rotation:0}).path}" fill="${r.color}" stroke="${this.FINAL_CONFIG.chart.tooltip.backgroundColor}" stroke-width="1" /></svg>`;break}}l+=`<div style="display:flex;flex-direction:row; align-items:center;gap:3px;"><div style="width:20px">${e}</div> ${r.name}: <b>${this.FINAL_CONFIG.chart.tooltip.showValue?this.applyDataLabel(r.type==="line"?this.FINAL_CONFIG.line.labels.formatter:r.type==="bar"?this.FINAL_CONFIG.bar.labels.formatter:this.FINAL_CONFIG.plot.labels.formatter,r.value,this.dataLabel({p:r.prefix,v:r.value,s:r.suffix,r:this.FINAL_CONFIG.chart.tooltip.roundingValue}),{datapoint:r}):""}</b> ${this.FINAL_CONFIG.chart.tooltip.showPercentage?`(${d.dataLabel({v:this.checkNaN(Math.abs(r.value)/i*100),s:"%",r:this.FINAL_CONFIG.chart.tooltip.roundingPercentage})})`:""}</div>`,this.FINAL_CONFIG.chart.comments.showInTooltip&&r.comments.length&&r.comments.slice(this.slicer.start,this.slicer.end)[this.selectedSerieIndex]&&(l+=`<div class="vue-data-ui-tooltip-comment" style="background:${r.color}20; padding: 6px; margin-bottom: 6px; border-left: 1px solid ${r.color}">${r.comments.slice(this.slicer.start,this.slicer.end)[this.selectedSerieIndex]}</div>`)}}),`<div style="border-radius:4px;padding:12px;font-variant-numeric: tabular-nums;color:${this.FINAL_CONFIG.chart.tooltip.color}">${l}</div>`)},svg(){return{height:this.height,width:this.width}},yLabels(){return this.niceScale.ticks.map(l=>({y:l>=0?this.zero-this.drawingArea.height*this.ratioToMax(l):this.zero+this.drawingArea.height*this.ratioToMax(Math.abs(l)),value:l,prefix:this.FINAL_CONFIG.chart.labels.prefix,suffix:this.FINAL_CONFIG.chart.labels.suffix}))},zero(){return this.drawingArea.bottom-this.drawingArea.height*this.ratioToMax(this.relativeZero)}},mounted(){this.svgRef=this.$refs.svgRef,this.prepareChart(),this.setupSlicer(),document.addEventListener("mousemove",l=>{this.clientPosition={x:l.clientX,y:l.clientY}}),document.addEventListener("scroll",this.hideTags)},beforeUnmount(){document.removeEventListener("scroll",this.hideTags)},methods:{abbreviate:d.abbreviate,adaptColorToBackground:d.adaptColorToBackground,applyDataLabel:d.applyDataLabel,assignStackRatios:d.assignStackRatios,calcLinearProgression:d.calcLinearProgression,calculateNiceScaleWithExactExtremes:d.calculateNiceScaleWithExactExtremes,checkNaN:d.checkNaN,closestDecimal:d.closestDecimal,convertColorToHex:d.convertColorToHex,convertConfigColors:d.convertConfigColors,convertCustomPalette:d.convertCustomPalette,createCsvContent:d.createCsvContent,createSmoothPath:d.createSmoothPath,createStraightPath:d.createStraightPath,createTSpans:d.createTSpans,dataLabel:d.dataLabel,downloadCsv:d.downloadCsv,error:d.error,forceValidValue:d.forceValidValue,functionReturnsString:d.functionReturnsString,hasDeepProperty:d.hasDeepProperty,isFunction:d.isFunction,isSafeValue:d.isSafeValue,largestTriangleThreeBucketsArray:d.largestTriangleThreeBucketsArray,objectIsEmpty:d.objectIsEmpty,setOpacity:d.setOpacity,shiftHue:d.shiftHue,translateSize:d.translateSize,treeShake:d.treeShake,useMouse:G.useMouse,useNestedProp:v.useNestedProp,createUid:d.createUid,placeXYTag:d.placeXYTag,hideTags(){const l=document.querySelectorAll(".vue-ui-xy-tag");l.length&&Array.from(l).forEach(i=>i.style.opacity="0")},setTagRef(l,i,n,h,r){n&&(this.tagRefs[`${l}_${i}_${h}_${r}`]=n)},setUserOptionsVisibility(l=!1){this.showUserOptionsOnChartHover&&(this.userOptionsVisible=l)},toggleAnnotator(){this.isAnnotator=!this.isAnnotator},selectTimeLabel(l,i){const n=this.relativeDataset.map(h=>({shape:h.shape||null,name:h.name,color:h.color,type:h.type,value:h.absoluteValues.find((r,e)=>e===i),comments:h.comments||[],prefix:h.prefix||this.FINAL_CONFIG.chart.labels.prefix,suffix:h.suffix||this.FINAL_CONFIG.chart.labels.suffix}));this.$emit("selectTimeLabel",{datapoint:n,absoluteIndex:l.absoluteIndex,label:l.text})},getHighlightAreaPosition(l){const i=this.drawingArea.left+this.drawingArea.width/this.maxSeries*(l.from-this.slicer.start),n=this.drawingArea.width/(this.slicer.end-this.slicer.start)*l.span<0?1e-5:this.drawingArea.width/(this.slicer.end-this.slicer.start)*l.span;return{x:i<this.drawingArea.left?this.drawingArea.left:i,width:n}},prepareConfig(){const l=d.useConfig().vue_ui_xy;if(!Object.keys(this.config||{}).length)return l;const i=this.useNestedProp({userConfig:this.config,defaultConfig:l});return this.config&&this.hasDeepProperty(this.config,"chart.highlightArea")&&(Array.isArray(this.config.chart.highlightArea)?i.chart.highlightArea=this.config.chart.highlightArea:i.chart.highlightArea=[this.config.chart.highlightArea]),this.config&&this.hasDeepProperty(this.config,"chart.grid.labels.yAxis.scaleMin")?i.chart.grid.labels.yAxis.scaleMin=this.config.chart.grid.labels.yAxis.scaleMin:i.chart.grid.labels.yAxis.scaleMin=null,this.config&&this.hasDeepProperty(this.config,"chart.grid.labels.yAxis.scaleMax")?i.chart.grid.labels.yAxis.scaleMax=this.config.chart.grid.labels.yAxis.scaleMax:i.chart.grid.labels.yAxis.scaleMax=null,this.config&&this.hasDeepProperty(this.config,"chart.zoom.startIndex")?i.chart.zoom.startIndex=this.config.chart.zoom.startIndex:i.chart.zoom.startIndex=null,this.config&&this.hasDeepProperty(this.config,"chart.zoom.endIndex")?i.chart.zoom.endIndex=this.config.chart.zoom.endIndex:i.chart.zoom.endIndex=null,this.config&&this.hasDeepProperty(this.config,"chart.grid.labels.yAxis.groupColor")?i.chart.grid.labels.yAxis.groupColor=this.config.chart.grid.labels.yAxis.groupColor:i.chart.grid.labels.yAxis.groupColor=null,i.theme?{...v.useNestedProp({userConfig:this.themes.vue_ui_xy[i.theme]||this.config,defaultConfig:i}),customPalette:this.themePalettes[i.theme]||this.palette}:i},prepareChart(){if(this.objectIsEmpty(this.dataset)?this.error({componentName:"VueUiXy",type:"dataset"}):this.dataset.forEach((l,i)=>{[null,void 0].includes(l.name)&&this.error({componentName:"VueUiXy",type:"datasetSerieAttribute",property:"name (string)",index:i})}),this.FINAL_CONFIG.showWarnings&&this.dataset.forEach(l=>{l.series.forEach((i,n)=>{this.isSafeValue(i)||console.warn(`VueUiXy has detected an unsafe value in your dataset: -----> The serie '${l.name}' contains the value '${i}' at index ${n}. '${i}' was converted to null to allow the chart to display.`)})}),this.showUserOptionsOnChartHover=this.FINAL_CONFIG.chart.userOptions.showOnChartHover,this.keepUserOptionState=this.FINAL_CONFIG.chart.userOptions.keepStateOnChartLeave,this.userOptionsVisible=!this.FINAL_CONFIG.chart.userOptions.showOnChartHover,this.mutableConfig={dataLabels:{show:!0},showTooltip:this.FINAL_CONFIG.chart.tooltip.show===!0,showTable:this.FINAL_CONFIG.showTable===!0,isStacked:this.FINAL_CONFIG.chart.grid.labels.yAxis.stacked,useIndividualScale:this.FINAL_CONFIG.chart.grid.labels.yAxis.useIndividualScale},this.FINAL_CONFIG.responsive){const i=this.$refs.chart.parentNode,{height:n,width:h}=i.getBoundingClientRect();let r=null,e=0;this.FINAL_CONFIG.chart.title.show&&(r=this.$refs.chartTitle,e=r.getBoundingClientRect().height);let x=null,g=0;this.FINAL_CONFIG.chart.zoom.show&&this.maxX>6&&this.isDataset&&(x=this.$refs.chartSlicer.$el,g=x.getBoundingClientRect().height);let u=null,b=0;this.FINAL_CONFIG.chart.legend.show&&(u=this.$refs.chartLegend,b=u.getBoundingClientRect().height);let L=0;this.$refs.source&&(L=this.$refs.source.getBoundingClientRect().height);let _=0;this.$refs.noTitle&&(_=this.$refs.noTitle.getBoundingClientRect().height),this.height=n-e-b-g-L-_,this.width=h,this.viewBox=`0 0 ${this.width<0?10:this.width} ${this.height<0?10:this.height}`,this.convertSizes(),new ResizeObserver(y=>{for(const m of y)this.$refs.chartTitle&&(e=this.$refs.chartTitle.getBoundingClientRect().height),this.$refs.chartSlicer&&this.$refs.chartSlicer.$el&&(g=this.$refs.chartSlicer.$el.getBoundingClientRect().height),this.$refs.chartLegend&&(b=this.$refs.chartLegend.getBoundingClientRect().height),this.$refs.source&&(L=this.$refs.source.getBoundingClientRect().height),requestAnimationFrame(()=>{this.height=m.contentBoxSize[0].blockSize-e-b-g-L-24,this.width=m.contentBoxSize[0].inlineSize,this.viewBox=`0 0 ${this.width<0?10:this.width} ${this.height<0?10:this.height}`,this.convertSizes()})}).observe(i)}else this.height=this.FINAL_CONFIG.chart.height,this.width=this.FINAL_CONFIG.chart.width,this.viewBox=`0 0 ${this.width} ${this.height}`,this.fontSizes.dataLabels=this.FINAL_CONFIG.chart.grid.labels.fontSize,this.fontSizes.yAxis=this.FINAL_CONFIG.chart.grid.labels.axis.fontSize,this.fontSizes.xAxis=this.FINAL_CONFIG.chart.grid.labels.xAxisLabels.fontSize,this.fontSizes.plotLabels=this.FINAL_CONFIG.chart.labels.fontSize,this.plotRadii.plot=this.FINAL_CONFIG.plot.radius,this.plotRadii.line=this.FINAL_CONFIG.line.radius},selectMinimapIndex(l){this.selectedMinimapIndex=l},convertSizes(){this.fontSizes.dataLabels=this.translateSize({relator:this.height,adjuster:400,source:this.FINAL_CONFIG.chart.grid.labels.fontSize,threshold:10,fallback:10}),this.fontSizes.yAxis=this.translateSize({relator:this.width,adjuster:1e3,source:this.FINAL_CONFIG.chart.grid.labels.axis.fontSize,threshold:10,fallback:10}),this.fontSizes.xAxis=this.translateSize({relator:this.width,adjuster:1e3,source:this.FINAL_CONFIG.chart.grid.labels.xAxisLabels.fontSize,threshold:10,fallback:10}),this.fontSizes.plotLabels=this.translateSize({relator:this.width,adjuster:800,source:this.FINAL_CONFIG.chart.labels.fontSize,threshold:10,fallback:10}),this.plotRadii.plot=this.translateSize({relator:this.width,adjuster:800,source:this.FINAL_CONFIG.plot.radius,threshold:1,fallback:1}),this.plotRadii.line=this.translateSize({relator:this.width,adjuster:800,source:this.FINAL_CONFIG.line.radius,threshold:1,fallback:1})},toggleStack(){this.mutableConfig.isStacked=!this.mutableConfig.isStacked,this.mutableConfig.isStacked?this.mutableConfig.useIndividualScale=!0:this.mutableConfig.useIndividualScale=this.FINAL_CONFIG.chart.grid.labels.yAxis.useIndividualScale},toggleTable(){this.mutableConfig.showTable=!this.mutableConfig.showTable},toggleLabels(){this.mutableConfig.dataLabels.show=!this.mutableConfig.dataLabels.show},toggleTooltip(){this.mutableConfig.showTooltip=!this.mutableConfig.showTooltip},checkAutoScaleError(l){l.autoScaling&&(this.FINAL_CONFIG.chart.grid.labels.yAxis.useIndividualScale||console.warn(`VueUiXy (datapoint: ${l.name}) : autoScaling only works when config.chart.grid.labels.yAxis.useIndividualScale is set to true`),this.FINAL_CONFIG.chart.grid.labels.yAxis.stacked||console.warn(`VueUiXy (datapoint: ${l.name}) : autoScaling only works when config.chart.grid.labels.yAxis.stacked is set to true`))},createArea(l){if(!l[0])return[-10,-10,"",-10,-10];const i={x:l[0].x,y:this.zero},n={x:l.at(-1).x,y:this.zero},h=[];return l.forEach(r=>{h.push(`${r.x},${r.y} `)}),[i.x,i.y,...h,n.x,n.y].toString()},createIndividualArea(l,i){if(!l[0])return[-10,-10,"",-10,-10];const n={x:l[0]?l[0].x:Math.min(...l.filter(e=>!!e).map(e=>e.x)),y:i},h={x:l.at(-1)?l.at(-1).x:Math.min(...l.filter(e=>!!e).map(e=>e.x)),y:i},r=[];return l.filter(e=>!!e).forEach(e=>{r.push(`${e.x},${e.y} `)}),[n.x,n.y,...r,h.x,h.y].toString()},createStar:d.createStar,createPolygonPath:d.createPolygonPath,fillArray(l,i){let n=Array(l).fill(0);for(let h=0;h<i.length&&h<l;h+=1)n[h]=i[h];return n},async setupSlicer(){(this.FINAL_CONFIG.chart.zoom.startIndex!==null||this.FINAL_CONFIG.chart.zoom.endIndex!==null)&&this.$refs.chartSlicer?(this.FINAL_CONFIG.chart.zoom.startIndex!==null&&(await this.$nextTick(),await this.$nextTick(),this.$refs.chartSlicer.setStartValue(this.FINAL_CONFIG.chart.zoom.startIndex)),this.FINAL_CONFIG.chart.zoom.endIndex!==null&&(await this.$nextTick(),await this.$nextTick(),this.$refs.chartSlicer.setEndValue(this.validSlicerEnd(this.FINAL_CONFIG.chart.zoom.endIndex+1)))):(this.slicer={start:0,end:Math.max(...this.dataset.map(l=>this.largestTriangleThreeBucketsArray({data:l.series,threshold:this.FINAL_CONFIG.downsample.threshold}).length))},this.slicerStep+=1)},refreshSlicer(){this.setupSlicer()},validSlicerEnd(l){const i=Math.max(...this.dataset.map(n=>this.largestTriangleThreeBucketsArray({data:n.series,threshold:this.FINAL_CONFIG.downsample.threshold}).length));return l>i?i:l<0||this.FINAL_CONFIG.chart.zoom.startIndex!==null&&l<this.FINAL_CONFIG.chart.zoom.startIndex?this.FINAL_CONFIG.chart.zoom.startIndex!==null?this.FINAL_CONFIG.chart.zoom.startIndex+1:1:l},calcRectHeight(l){const i=![null,void 0].includes(this.FINAL_CONFIG.chart.grid.labels.yAxis.scaleMin)&&this.FINAL_CONFIG.chart.grid.labels.yAxis.scaleMin>0&&this.min>=0?this.drawingArea.bottom:this.zero;return l.value>=0?this.checkNaN(i-l.y<=0?1e-5:i-l.y):this.checkNaN(l.y-this.zero<=0?1e-5:l.y-this.zero)},calcIndividualHeight(l){return l.value>=0?this.checkNaN(l.zeroPosition-l.y<=0?1e-5:l.zeroPosition-l.y):this.checkNaN(l.y-l.zeroPosition<=0?1e-5:l.zeroPosition-l.y)},calcRectWidth(){return this.mutableConfig.useIndividualScale&&this.mutableConfig.isStacked?this.slot.line-this.drawingArea.width/this.maxSeries*.1:this.slot.bar},calcRectX(l){return this.mutableConfig.useIndividualScale&&this.mutableConfig.isStacked?l.x+this.drawingArea.width/this.maxSeries*.05:l.x+this.slot.bar/2},calcRectY(l){return l.value>=0?l.y:this.zero},calcIndividualRectY(l){return l.value>=0?l.y:[null,void 0,NaN,1/0,-1/0].includes(l.zeroPosition)?0:l.zeroPosition},canShowValue(l){return![null,void 0,NaN,1/0,-1/0].includes(l)},findClosestValue(l,i){let n=i[0],h=Math.abs(l-i[0]);for(let r=1;r<i.length;r+=1){const e=Math.abs(l-i[r]);e<h&&i[r]<l&&(n=i[r],h=e)}return n},ratioToMax(l){return l/(this.canShowValue(this.absoluteMax)?this.absoluteMax:1)},selectX(l){this.$emit("selectX",{dataset:this.relativeDataset.map(i=>({name:i.name,value:[null,void 0,NaN].includes(i.absoluteValues[l])?null:i.absoluteValues[l],color:i.color,type:i.type})),index:l,indexLabel:this.FINAL_CONFIG.chart.grid.labels.xAxisLabels.values[l]})},getData(){return this.absoluteDataset.map(l=>({values:l.absoluteValues,color:l.color,name:l.name,type:l.type}))},segregate(l){if(this.segregatedSeries.includes(l.id))this.segregatedSeries=this.segregatedSeries.filter(i=>i!==l.id);else{if(this.segregatedSeries.length+1===this.safeDataset.length)return;this.segregatedSeries.push(l.id)}this.$emit("selectLegend",this.relativeDataset.map(i=>({name:i.name,values:i.absoluteValues,color:i.color,type:i.type}))),this.segregateStep+=1},toggleTooltipVisibility(l,i=null){this.isTooltip=l,l?this.selectedSerieIndex=i:this.selectedSerieIndex=null},toggleFullscreen(l){this.isFullscreen=l,this.step+=1},showSpinnerPdf(){this.isPrinting=!0},async generatePdf(){this.showSpinnerPdf(),clearTimeout(this.__to__),this.isPrinting=!0,this.__to__=setTimeout(async()=>{try{const{default:l}=await Promise.resolve().then(()=>require("./pdf-DSkQT5iH.cjs"));await l({domElement:document.getElementById(`vue-ui-xy_${this.uniqueId}`),fileName:this.FINAL_CONFIG.chart.title.text||"vue-ui-xy"})}catch(l){console.error("Error generating PDF:",l)}finally{this.isPrinting=!1}},100)},generateCsv(){const l=[[this.FINAL_CONFIG.chart.title.text],[this.FINAL_CONFIG.chart.title.subtitle.text],[""]],i=["",...this.table.head.map(e=>e.label)],n=this.table.body,h=l.concat([i]).concat(n),r=this.createCsvContent(h);this.downloadCsv({csvContent:r,title:this.FINAL_CONFIG.chart.title.text||"vue-ui-xy"})},showSpinnerImage(){this.isImaging=!0},async generateImage(){this.showSpinnerImage(),clearTimeout(this.__to__),this.isImaging=!0,this.__to__=setTimeout(async()=>{try{const{default:l}=await Promise.resolve().then(()=>require("./img-BPGizWpM.cjs"));await l({domElement:document.getElementById(`vue-ui-xy_${this.uniqueId}`),fileName:this.FINAL_CONFIG.chart.title.text||"vue-ui-xy",format:"png"})}catch(l){console.error("Error generating image:",l)}finally{this.isImaging=!1}},100)}}},U=["id"],Z={key:1,ref:"noTitle",class:"vue-data-ui-no-title-space",style:"height:36px; width: 100%; background:transparent"},J=["viewBox","aria-label"],K=["x","y","width","height"],Q={key:1},j={class:"vue-ui-xy-grid"},$=["stroke","x1","x2","y1","y2"],ee=["stroke","x1","x2","y1","y2"],te={key:1},le=["x1","x2","y1","y2","stroke"],re=["x1","x2","y1","y2","stroke"],ae=["x1","x2","y1","y2","stroke"],ie={key:3},se=["x1","x2","y1","y2","stroke"],oe=["id"],ne=["stop-color"],ce=["stop-color"],he=["stop-color"],de=["id"],ue=["stop-color"],ge=["stop-color"],me=["stop-color"],fe=["id"],Ne=["stop-color"],Ie=["stop-color"],xe=["id"],be=["stop-color"],Fe=["stop-color"],ke=["id"],_e=["stop-color"],ye=["stop-color"],Le=["x","y","height","width","fill"],Ce=["x","y","width"],Ae=["x","y","height","width","fill"],Se=["x","y","height","width","rx","fill","stroke","stroke-width"],we=["x","y","height","width","rx","fill","stroke","stroke-width"],Oe=["width","x","y"],Ge={key:0},ve=["id"],pe=["fill"],Be=["x1","x2","y1","y2","stroke","marker-end"],Ee=["x","y","font-size","fill"],Ve=["stroke","x1","x2","y1","y2"],ze={key:2},Me=["x1","x2","y1","y2","stroke","stroke-width","stroke-dasharray"],Te=["x","y","width","height","stroke","stroke-width","stroke-linecap","stroke-linejoin","stroke-dasharray"],Pe={key:4},Re=["x1","x2","y1","y2","stroke","stroke-width"],De=["fill","font-size","transform"],He=["x1","x2","y1","y2","stroke"],qe=["x","y","font-size","fill"],We=["x1","x2","y1","y2","stroke"],Ye=["x","y","font-size","fill"],Xe=["width","x","y"],Ue={style:{width:"100%"}},Ze={key:0},Je=["id"],Ke=["fill"],Qe=["x1","x2","y1","y2","stroke","marker-end"],je=["x","y","font-size","fill"],$e=["d","stroke","stroke-width","stroke-dasharray"],et=["d","stroke","stroke-width","stroke-dasharray"],tt={key:5},lt={key:0},rt=["d","fill"],at=["d","fill"],it=["d","fill"],st=["d","fill"],ot=["d","stroke","stroke-width","stroke-dasharray"],nt=["d","stroke","stroke-width","stroke-dasharray"],ct=["width","x","y"],ht={style:{width:"100%"}},dt={key:3},ut=["id"],gt=["fill"],mt=["x1","x2","y1","y2","stroke","marker-end"],ft=["x","y","font-size","fill"],Nt={key:6},It=["x","y","font-size","fill"],xt=["x","y","font-size","fill","font-weight"],bt={key:7},Ft=["x","y","font-size","fill"],kt={key:8},_t=["x","y"],yt=["innerHTML"],Lt=["x","y"],Ct=["innerHTML"],At=["x1","x2","y1","y2","stroke"],St={key:9},wt=["x","y","font-size","fill"],Ot={key:10},Gt=["x","y"],vt=["innerHTML"],pt=["x","y"],Bt=["innerHTML"],Et=["x1","x2","y1","y2","stroke"],Vt=["x","y","font-size","fill","innerHTML"],zt=["x","y","font-size","fill","innerHTML"],Mt=["x","y","font-size","fill","innerHTML"],Tt=["x","y","font-size","fill","innerHTML"],Pt=["id"],Rt=["stop-color"],Dt=["stop-color"],Ht=["x","y","width","height","fill","onMouseenter"],qt=["font-size","fill","transform"],Wt=["x","y","font-size","fill"],Yt={key:12},Xt=["text-anchor","font-size","fill","transform","onClick"],Ut=["x","y","height","width","onMouseenter","onClick"],Zt={key:13,style:{"pointer-events":"none"}},Jt=["x","y"],Kt=["cx","cy","r","fill"],Qt={key:5,class:"vue-data-ui-watermark"},jt={class:"vue-ui-xy-tag-arrow",height:"20",viewBox:"0 0 10 20",style:{position:"absolute",right:"100%",top:"50%",transform:"translateY(-50%)"}},$t=["fill"],el=["innerHTML"],tl={class:"vue-ui-xy-tag-arrow",height:"100%",viewBox:"0 0 10 20",style:{position:"absolute",left:"100%",top:"50%",transform:"translateY(-50%)"}},ll=["fill"],rl=["innerHTML"],al={class:"vue-ui-xy-tag-arrow",height:"20",viewBox:"0 0 10 20",style:{position:"absolute",right:"100%",top:"50%",transform:"translateY(-50%)"}},il=["fill"],sl=["innerHTML"],ol={class:"vue-ui-xy-tag-arrow",height:"100%",viewBox:"0 0 10 20",style:{position:"absolute",left:"100%",top:"50%",transform:"translateY(-50%)"}},nl=["fill"],cl=["innerHTML"],hl=["onClick"],dl={key:0,viewBox:"0 0 20 12",height:"14",width:"20"},ul=["stroke","fill"],gl={key:1,viewBox:"0 0 40 40",height:"14",width:"14"},ml=["fill"],fl=["fill"],Nl={key:2,viewBox:"0 0 12 12",height:"14",wid