@grapecity/wijmo.chart 5.20261.52 → 5.20262.60
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/es2015-commonjs.js +2 -2
- package/es2015-esm.js +2 -2
- package/es5-esm.js +2 -2
- package/index.d.ts +386 -50
- package/index.js +2 -2
- package/package.json +2 -2
package/es2015-esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
*
|
|
3
|
-
* Wijmo Library 5.
|
|
3
|
+
* Wijmo Library 5.20262.60
|
|
4
4
|
* https://developer.mescius.com/wijmo
|
|
5
5
|
*
|
|
6
6
|
* Copyright(c) MESCIUS inc. All rights reserved.
|
|
@@ -11,4 +11,4 @@
|
|
|
11
11
|
*
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import{Point,Size,Rect,asEnum,asString,isNumber,asNumber,isString,assert,asBoolean,setCss,tryCast,DataType,isDate,isArray,Event,asType,copy,asFunction,Binding,EventArgs,asCollectionView,asInt,ObservableArray,Globalize,asDate,removeChild,isIE,hasClass,addClass,UtilitesClsNames,asArray,clamp,isUndefined,getElementRect,toggleClass,removeClass,isFunction,ControlClsNames,format,Control,Tooltip,CancelEventArgs,Color,mouseToPage,ControlStateClsNames,animate,_registerModule}from"@grapecity/wijmo";import*as selfModule from"@grapecity/wijmo.chart";export class _VolumeHelper{constructor(t,e,i,s,n){this._volumes=asArray(t);this._xVals=asArray(e);this._xDataMin=asNumber(i,!0,!1);this._xDataMax=asNumber(s,!0,!1);this._xDataType=asEnum(n,DataType,!0);this._calcData=[];this._init()}convert(t,e,i){var s,n=this._calcData.length,r=-1;if(this._hasXs&&this._xDataType===DataType.Date){if(-1===(r=this._xVals.indexOf(t)))for(let e=0;e<this._xVals.length;e++){if(e<this._xVals.length-1&&this._xVals[e]<=t&&t<=this._xVals[e+1]){r=e;break}if(0===e&&t<=this._xVals[e]){r=e;break}if(e===this._xVals.length-1&&this._xVals[e]<=t){r=e;break}}if(-1===r){r=this._xVals.indexOf(Math.floor(t));r=clamp(r,0,n-1)}}else if(this._hasXs){if(-1===(r=this._xVals.indexOf(t))){r=this._xVals.indexOf(Math.floor(t));r=clamp(r,0,n-1)}}else r=clamp(Math.round(t),0,n-1);if(0<=r&&r<n){this._hasXs&&(t=_VolumeHelper.convertToRange(t,0,n-1,this._xDataMin,this._xDataMax));s=((s=this._calcData[r].value+(t-r)*this._calcData[r].width-.5*this._calcData[r].width)-(e=this._getXVolume(e)))/((i=this._getXVolume(i))-e)}return s}convertBack(t,e,i){var s,n,r=this._calcData.length,a=-1;for(n=0;n<r;n++)if(this._calcData[n].x1<=t&&t<=this._calcData[n].x2||0===n&&t<=this._calcData[n].x2||n===r-1&&this._calcData[n].x1<=t){a=n;break}if(0<=a&&a<r){s=t/this._calcData[a].width-this._calcData[a].value/this._calcData[a].width+.5+n;this._hasXs&&(s=_VolumeHelper.convertToRange(s,this._xDataMin,this._xDataMax,0,r-1))}return s}_init(){this._hasXs=null!==this._xVals&&this._xVals.length>0;this._hasXs&&!isNumber(this._xDataMin)&&(this._xDataMin=Math.min.apply(null,this._xVals));this._hasXs&&!isNumber(this._xDataMax)&&(this._xDataMax=Math.max.apply(null,this._xVals));this._hasXs&&(this._hasXs=isNumber(this._xDataMin)&&isNumber(this._xDataMax));this._hasXs&&this._xDataType===DataType.Date&&this._fillGaps();var t=0,e=0,i=null!==this._volumes&&this._volumes.length>0?this._volumes.length:0;for(e=0;e<i;e++)t+=this._volumes[e]||0;var s,n,r=0;for(e=0;e<i;e++){s=r+(n=(this._volumes[e]||0)/t);this._calcData.push({value:s,width:n,x1:r,x2:s});r=this._calcData[e].value}}_getXVolume(t){var e=this._calcData.length,i=-1;if(this._hasXs){i=this._xVals.indexOf(t);for(let e=0;e<this._xVals.length;e++){if(e<this._xVals.length-1&&this._xVals[e]<=t&&t<=this._xVals[e+1]){i=e;break}if(0===e&&t<=this._xVals[e]){i=e;break}if(e===this._xVals.length-1&&this._xVals[e]<=t){i=e;break}}}this._hasXs&&(t=_VolumeHelper.convertToRange(t,0,e-1,this._xDataMin,this._xDataMax));-1===i&&(i=clamp(Math.round(t),0,e-1));return this._calcData[i].value+(t-i)*this._calcData[i].width-.5*this._calcData[i].width}static convertToRange(t,e,i,s,n){return e===i||s===n?0:(t-s)*(i-e)/(n-s)+e}_fillGaps(){if(!(this._xDataType!==DataType.Date||null===this._xVals||this._xVals.length<=0)){var t,e=this._xDataMin,i=this._xDataMax;for(t=1;e<i;t++){(e=new Date(e)).setDate(e.getDate()+1);if((e=e.valueOf())!==this._xVals[t]){this._xVals.splice(t,0,e);this._volumes.splice(t,0,0)}}}}}export class _Curve{constructor(t,e,i,s){this.monoX=!1;const n=i||Math.min(t.length,e.length);let r=0,a=0,h=0,o=0;if(n>3)for(let i=0;i<n-1;i++)if(i>0){a=Math.min(a,t[i]-t[i-1]);r=Math.max(r,t[i]-t[i-1]);o=Math.min(o,e[i]-e[i-1]);h=Math.max(h,e[i]-e[i-1])}this.monoX=r>0&&0===a||a<0&&0===r;this.monoX&&"spline"!==s?this.calc=a<0?new _SplineMono(t.reverse(),e.reverse(),i):new _SplineMono(t,e,i):this.calc=new _Spline(t,e,i)}calculate(){return this.calc.calculate()}}export class _Spline{constructor(t,e,i){this.k=.002;this._a=[];this._b=[];this._c=[];this._d=[];this.m=[[-.5,1.5,-1.5,.5],[1,-2.5,2,-.5],[-.5,0,.5,0],[0,1,0,0]];this._x=t;this._y=e;this._len=i||Math.min(t.length,e.length);const s=this._len;if(s>3)for(let i=0;i<s-1;i++){const n=0==i?new Point(t[i],e[i]):new Point(t[i-1],e[i-1]),r=new Point(t[i],e[i]),a=new Point(t[i+1],e[i+1]),h=i==s-2?new Point(t[i+1],e[i+1]):new Point(t[i+2],e[i+2]),o=new Point,l=new Point,_=new Point,c=new Point;o.x=n.x*this.m[0][0]+r.x*this.m[0][1]+a.x*this.m[0][2]+h.x*this.m[0][3];l.x=n.x*this.m[1][0]+r.x*this.m[1][1]+a.x*this.m[1][2]+h.x*this.m[1][3];_.x=n.x*this.m[2][0]+r.x*this.m[2][1]+a.x*this.m[2][2]+h.x*this.m[2][3];c.x=n.x*this.m[3][0]+r.x*this.m[3][1]+a.x*this.m[3][2]+h.x*this.m[3][3];o.y=n.y*this.m[0][0]+r.y*this.m[0][1]+a.y*this.m[0][2]+h.y*this.m[0][3];l.y=n.y*this.m[1][0]+r.y*this.m[1][1]+a.y*this.m[1][2]+h.y*this.m[1][3];_.y=n.y*this.m[2][0]+r.y*this.m[2][1]+a.y*this.m[2][2]+h.y*this.m[2][3];c.y=n.y*this.m[3][0]+r.y*this.m[3][1]+a.y*this.m[3][2]+h.y*this.m[3][3];this._a.push(o);this._b.push(l);this._c.push(_);this._d.push(c)}}calculatePoint(t){var e=Math.floor(t);e<0&&(e=0);e>this._len-2&&(e=this._len-2);var i=t-e;return{x:((this._a[e].x*i+this._b[e].x)*i+this._c[e].x)*i+this._d[e].x,y:((this._a[e].y*i+this._b[e].y)*i+this._c[e].y)*i+this._d[e].y}}calculate(){if(this._len<=3)return{xs:this._x,ys:this._y};const t=[],e=[];let i=this.calculatePoint(0);t.push(i.x);e.push(i.y);const s=Math.min(this._len*this.k,.2);for(let n=s;n<=this._len-1;n+=s){const r=Math.ceil(n),a=this.calculatePoint(n);if(Math.abs(i.x-a.x)>=3||Math.abs(i.y-a.y)>=3){t.push(a.x);e.push(a.y);i=a}if(n+s>=r){t.push(this._x[r]);e.push(this._y[r])}}return{xs:t,ys:e}}}class _SplineMono{constructor(t,e,i){this._x=[];this._y=[];this._c1s=[];this._c2s=[];this._c3s=[];this._len=i||Math.min(t.length,e.length);const s=this._len;for(let i=0;i<s;i++){this._x.push(t[i]);this._y.push(e[i])}t=this._x;e=this._y;if(this._len<=3)return;const n=[],r=[],a=[];for(let i=0;i<s-1;i++){const s=t[i+1]-t[i],h=e[i+1]-e[i];r[i]=s;n[i]=h;a[i]=h/s}var h=this._c1s;h.push(a[0]);for(let t=0;t<r.length-1;t++){const e=a[t],i=a[t+1];if(e*i<=0)h.push(0);else{const s=r[t],n=r[t+1],a=s+n;h.push(3*a/((a+n)/e+(a+s)/i))}}h.push(a[a.length-1]);const o=this._c2s,l=this._c3s;for(let t=0;t<h.length-1;t++){const e=h[t],i=a[t],s=1/r[t],n=e+h[t+1]-i-i;o[t]=(i-e-n)*s;l[t]=n*s*s}}interpolate(t){let e=this._x.length-1;if(t>=this._x[e])return this._y[e];for(var i,s=0,n=this._c3s.length-1;s<=n;){i=Math.floor(.5*(s+n));const e=this._x[i];if(e<t)s=i+1;else{if(!(e>t))return this._y[i];n=i-1}}e=Math.max(0,n);var r=t-this._x[e];return this._y[e]+r*(this._c1s[e]+r*(this._c2s[e]+r*this._c3s[e]))}calculate(){if(this._len<=3)return{xs:this._x,ys:this._y};const t=[],e=[],i=this._len,s=this._x[0],n=this._x[i-1],r=Math.min(.001*this._len,.2);for(let i=s;i<=n;i+=r){t.push(i);e.push(this.interpolate(i))}return{xs:t,ys:e}}}export const AxisClsNames={axisX:"wj-axis-x",axisXLabels:"wj-axis-x-labels",axisY:"wj-axis-y",axisYLabels:"wj-axis-y-labels",gridline:"wj-gridline",gridlineMinor:"wj-gridline-minor",line:"wj-line",tick:"wj-tick",tickMinor:"wj-tick-minor"};export const DataLabelClsNames={border:"wj-data-label-border",label:"wj-data-label",labels:"wj-data-labels",line:"wj-data-label-line"};export const FlexChartClsNames={footer:"wj-footer",header:"wj-header",hostElement:"wj-flexchart",label:"wj-label",legend:"wj-legend",plotArea:"wj-plot-area",title:"wj-title",touchDisabled:"wj-flexchart-touch-disabled"};export const FlexPieClsNames={hostElement:"wj-flexpie",slice:"wj-slice",sliceGroup:"wj-slice-group"};export const LegendClsNames={legend:"wj-legend",title:"wj-title"};export const LineMarkerClsNames={container:"wj-chart-linemarker-container",content:"wj-chart-linemarker-content",draggable:"wj-chart-linemarker-draggable",hline:"wj-chart-linemarker-hline",linemarker:"wj-chart-linemarker",vline:"wj-chart-linemarker-vline"};export const SeriesClsNames={group:"wj-series-group"};export class Palettes{static _isExtended(t){return-1!==Palettes._values(Palettes.Diverging).indexOf(t)||-1!==Palettes._values(Palettes.Qualitative).indexOf(t)||-1!==Palettes._values(Palettes.SequentialSingle).indexOf(t)||-1!==Palettes._values(Palettes.SequentialMulti).indexOf(t)}static _values(t){return Object.keys(t).map(e=>t[e])}}Palettes.standard=["#88bde6","#fbb258","#90cd97","#f6aac9","#bfa554","#bc99c7","#eddd46","#f07e6e","#8c8c8c"];Palettes.cocoa=["#466bb0","#c8b422","#14886e","#b54836","#6e5944","#8b3872","#73b22b","#b87320","#141414"];Palettes.coral=["#84d0e0","#f48256","#95c78c","#efa5d6","#ba8452","#ab95c2","#ede9d0","#e96b7d","#888888"];Palettes.dark=["#005fad","#f06400","#009330","#e400b1","#b65800","#6a279c","#d5a211","#dc0127","#000000"];Palettes.highcontrast=["#ff82b0","#0dda2c","#0021ab","#bcf28c","#19c23b","#890d3a","#607efd","#1b7700","#000000"];Palettes.light=["#ddca9a","#778deb","#cb9fbb","#b5eae2","#7270be","#a6c7a7","#9e95c7","#95b0c7","#9b9b9b"];Palettes.midnight=["#83aaca","#e37849","#14a46a","#e097da","#a26d54","#a584b7","#d89c54","#e86996","#2c343b"];Palettes.modern=["#2d9fc7","#ec993c","#89c235","#e377a4","#a68931","#a672a6","#d0c041","#e35855","#68706a"];Palettes.organic=["#9c88d9","#a3d767","#8ec3c0","#e9c3a9","#91ab36","#d4ccc0","#61bbd8","#e2d76f","#80715a"];Palettes.slate=["#7493cd","#f99820","#71b486","#e4a491","#cb883b","#ae83a4","#bacc5c","#e5746a","#505d65"];Palettes.zen=["#7bb5ae","#e2d287","#92b8da","#eac4cb","#7b8bbd","#c7d189","#b9a0c8","#dfb397","#a9a9a9"];Palettes.cyborg=["#2a9fd6","#77b300","#9933cc","#ff8800","#cc0000","#00cca3","#3d6dcc","#525252","#000000"];Palettes.superhero=["#5cb85c","#f0ad4e","#5bc0de","#d9534f","#9f5bde","#46db8c","#b6b86e","#4e5d6c","#2b3e4b"];Palettes.flatly=["#18bc9c","#3498db","#f39c12","#6cc1be","#99a549","#8f54b5","#e74c3c","#8a9899","#2c3e50"];Palettes.darkly=["#375a7f","#00bc8c","#3498db","#f39c12","#e74c3c","#8f61b3","#b08725","#4a4949","#000000"];Palettes.cerulan=["#033e76","#87c048","#59822c","#53b3eb","#fc6506","#d42323","#e3bb00","#cccccc","#222222"];Palettes.Qualitative={Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5"]};Palettes.Diverging={BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]};Palettes.SequentialSingle={Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]};Palettes.SequentialMulti={BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"]};export const empty={};export class PlotArea{constructor(t){this._row=0;this._col=0;this._rect=new Rect(0,0,0,0);copy(this,t)}get row(){return this._row}set row(t){if(t!=this._row){this._row=asInt(t,!0,!0);this._invalidate()}}get column(){return this._col}set column(t){if(t!=this._col){this._col=asInt(t,!0,!0);this._invalidate()}}get name(){return this._name}set name(t){t!=this._name&&(this._name=asString(t,!0))}get width(){return this._width}set width(t){if(t!=this._width){this._width=t;this._invalidate()}}get height(){return this._height}set height(t){if(t!=this._height){this._height=t;this._invalidate()}}get style(){return this._style}set style(t){if(t!=this._style){this._style=t;this._invalidate()}}_invalidate(){this._chart&&this._chart.invalidate()}_render(t){t.drawRect(this._rect.left,this._rect.top,this._rect.width,this._rect.height,null,this.style)}_setPlotX(t,e){this._rect.left=t;this._rect.width=e}_setPlotY(t,e){this._rect.top=t;this._rect.height=e}}export class PlotAreaCollection extends ObservableArray{getPlotArea(t){var e=this.indexOf(t);return e>-1?this[e]:null}indexOf(t){for(let e=0;e<this.length;e++)if(this[e].name==t)return e;return-1}_getWidth(t){for(let e=0;e<this.length;e++){const i=this[e];if(i.column==t&&0==i.row)return i.width}}_getHeight(t){for(let e=0;e<this.length;e++){const i=this[e];if(i.row==t&&0==i.column)return i.height}}_calculateWidths(t,e){if(e<=0)throw"ncols";var i=[];for(let t=0;t<e;t++){const e=this._getWidth(t);i[t]=new _GridLength(e)}return this._calculateLengths(t,e,i)}_calculateHeights(t,e){if(e<=0)throw"nrows";var i=[];for(let t=0;t<e;t++){const e=this._getHeight(t);i[t]=new _GridLength(e)}return this._calculateLengths(t,e,i)}_calculateLengths(t,e,i){var s=[e],n=0,r=0;for(let t=0;t<e;t++)if(i[t].isAbsolute){s[t]=i[t].value;n+=s[t]}else i[t].isStar?r+=i[t].value:i[t].isAuto&&r++;var a=(t-n)/r;for(let t=0;t<e;t++){i[t].isStar?s[t]=a*i[t].value:i[t].isAuto&&(s[t]=a);s[t]<0&&(s[t]=0)}return s}}var _GridUnitType,_tmInc;!function(t){t[t.Auto=0]="Auto";t[t.Pixel=1]="Pixel";t[t.Star=2]="Star"}(_GridUnitType||(_GridUnitType={}));class _GridLength{constructor(t=null){this._unitType=_GridUnitType.Auto;if(t)if((t=t.toString()).indexOf("*")>=0){this._unitType=_GridUnitType.Star;t=t.replace("*","");this._value=parseFloat(t);isNaN(this._value)&&(this._value=1)}else{this._unitType=_GridUnitType.Pixel;this._value=parseFloat(t);if(isNaN(this._value)){this._unitType=_GridUnitType.Auto;this._value=1}}}get value(){return this._value}get isStar(){return this._unitType==_GridUnitType.Star}get isAbsolute(){return this._unitType==_GridUnitType.Pixel}get isAuto(){return this._unitType==_GridUnitType.Auto}}export class _SvgRenderEngine{constructor(t){this._STROKE_JOIN="round";this._strokeWidth=1;this._fontSize=null;this._fontFamily=null;this._savedGradient={};this._bbCache={};this._baseUrl="";this._cssPriority=!0;this._readOnly=!1;this._isRtl=!1;this._precision=1;this._options=null;this._htmlText=!1;this._element=t;this._create();this._element&&this._element.appendChild(this._svg);const e=navigator.userAgent.toLowerCase();void 0===_SvgRenderEngine._isff&&(_SvgRenderEngine._isff=e.indexOf("firefox")>=0);void 0===_SvgRenderEngine._isSafari&&(_SvgRenderEngine._isSafari=e.indexOf("safari")>-1&&-1==e.indexOf("chrome"))}attach(t){this._element=t;if(t){t.insertBefore(this._svg,t.childNodes[0]);t.appendChild(this._svg)}}detach(){this._element&&this._element.removeChild(this._svg);for(;this._svg.firstChild;)removeChild(this._svg.firstChild)}beginRender(){for(;this._svg.firstChild;)removeChild(this._svg.firstChild);this._savedGradient={};this._bbCache={};this._svg.appendChild(this._defs);this._svg.appendChild(this._textGroup);this._isRtl=this._checkRtl()}endRender(){removeChild(this._textGroup)}setViewportSize(t,e){this._svg.setAttribute("width",t.toString());this._svg.setAttribute("height",e.toString())}get element(){return this._svg}get fill(){return this._fill}set fill(t){this._fill=t}get fontSize(){return this._fontSize}set fontSize(t){this._fontSize=t}get fontFamily(){return this._fontFamily}set fontFamily(t){this._fontFamily=t}get stroke(){return this._stroke}set stroke(t){this._stroke=t}get strokeWidth(){return this._strokeWidth}set strokeWidth(t){this._strokeWidth=void 0===t?null:t}get textFill(){return this._textFill}set textFill(t){this._textFill=t}get cssPriority(){return this._cssPriority}set cssPriority(t){this._cssPriority=t}get readOnly(){return this._readOnly}set readOnly(t){this._readOnly=t}get precision(){return this._precision}set precision(t){this._precision=asNumber(t)}get group(){return this._group}get options(){return this._options}set options(t){this._options=t}addClipRect(t,e){if(t&&e){const i=this.precision,s=document.createElementNS(_SvgRenderEngine.svgNS,"clipPath"),n=document.createElementNS(_SvgRenderEngine.svgNS,"rect");n.setAttribute("x",(t.left-1).toFixed(i));n.setAttribute("y",(t.top-1).toFixed(i));n.setAttribute("width",(t.width+2).toFixed(i));n.setAttribute("height",(t.height+2).toFixed(i));s.appendChild(n);s.setAttribute("id",e);this._svg.appendChild(s)}}drawEllipse(t,e,i,s,n,r){const a=document.createElementNS(_SvgRenderEngine.svgNS,"ellipse"),h=this.precision;this._applyColor(a,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(a,"stroke-width",this._strokeWidth.toString());this._applyColor(a,"fill",this._fill);a.setAttribute("cx",t.toFixed(h));a.setAttribute("cy",e.toFixed(h));a.setAttribute("rx",i.toFixed(h));a.setAttribute("ry",s.toFixed(h));n&&a.setAttribute("class",n);this._applyStyle(a,r);this._appendChild(a);return a}drawRect(t,e,i,s,n,r,a){const h=document.createElementNS(_SvgRenderEngine.svgNS,"rect"),o=this.precision;this._applyColor(h,"fill",this._fill);this._applyColor(h,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(h,"stroke-width",this._strokeWidth.toString());h.setAttribute("x",t.toFixed(o));isNaN(Number(e))||h.setAttribute("y",e.toFixed(o));i>0&&i<.05?h.setAttribute("width","0.1"):h.setAttribute("width",i.toFixed(o));s>0&&s<.05?h.setAttribute("height","0.1"):h.setAttribute("height",s.toFixed(o));a&&this._setClipPath(h,a);n&&h.setAttribute("class",n);this._applyStyle(h,r);this._appendChild(h);return h}drawLine(t,e,i,s,n,r){const a=document.createElementNS(_SvgRenderEngine.svgNS,"line"),h=this.precision;this._applyColor(a,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(a,"stroke-width",this._strokeWidth.toString());a.setAttribute("x1",t.toFixed(h));a.setAttribute("x2",i.toFixed(h));a.setAttribute("y1",e.toFixed(h));a.setAttribute("y2",s.toFixed(h));n&&a.setAttribute("class",n);this._applyStyle(a,r);this._appendChild(a);return a}drawLines(t,e,i,s,n,r){if(t&&e){const a=r||Math.min(t.length,e.length);if(a>0){const r=document.createElementNS(_SvgRenderEngine.svgNS,"polyline"),h=this.precision;this._applyColor(r,"stroke",this._stroke);if(null!==this._strokeWidth){this._setAttribute(r,"stroke-width",this._strokeWidth.toString());this._strokeWidth>1&&this._setAttribute(r,"stroke-linejoin",this._STROKE_JOIN)}r.setAttribute("fill","none");let o="";for(let i=0;i<a;i++)o+=`${t[i].toFixed(h)},${e[i].toFixed(h)} `;r.setAttribute("points",o);i&&r.setAttribute("class",i);n&&this._setClipPath(r,n);this._applyStyle(r,s);this._appendChild(r);return r}}return null}drawSplines(t,e,i,s,n,r){if(t&&e){const a=new _Curve(t,e,r,this._options&&this._options.spline).calculate(),h=a.xs,o=a.ys,l=Math.min(h.length,o.length);if(l>0){const t=document.createElementNS(_SvgRenderEngine.svgNS,"polyline"),e=this.precision;this._applyColor(t,"stroke",this._stroke);if(null!==this._strokeWidth){this._setAttribute(t,"stroke-width",this._strokeWidth.toString());this._strokeWidth>1&&this._setAttribute(t,"stroke-linejoin",this._STROKE_JOIN)}t.setAttribute("fill","none");let r="";for(let t=0;t<l;t++)r+=`${h[t].toFixed(e)},${o[t].toFixed(e)} `;t.setAttribute("points",r);i&&t.setAttribute("class",i);n&&this._setClipPath(t,n);this._applyStyle(t,s);this._appendChild(t);return t}}return null}drawPolygon(t,e,i,s,n){if(t&&e){const r=Math.min(t.length,e.length);if(r>0){const a=document.createElementNS(_SvgRenderEngine.svgNS,"polygon"),h=this.precision;this._applyColor(a,"stroke",this._stroke);if(null!==this._strokeWidth){this._setAttribute(a,"stroke-width",this._strokeWidth.toString());this._strokeWidth>1&&this._setAttribute(a,"stroke-linejoin",this._STROKE_JOIN)}this._applyColor(a,"fill",this._fill);let o="";for(let i=0;i<r;i++)o+=`${t[i].toFixed(h)},${e[i].toFixed(h)} `;a.setAttribute("points",o);i&&a.setAttribute("class",i);n&&this._setClipPath(a,n);this._applyStyle(a,s);this._appendChild(a);return a}}return null}drawPieSegment(t,e,i,s,n,r,a,h){if(n>=2*Math.PI)return this.drawEllipse(t,e,i,i,r,a);const o=document.createElementNS(_SvgRenderEngine.svgNS,"path"),l=this.precision;this._applyColor(o,"fill",this._fill);this._applyColor(o,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(o,"stroke-width",this._strokeWidth.toString());var _=new Point(t,e);_.x+=i*Math.cos(s);_.y+=i*Math.sin(s);var c=s+n,d=new Point(t,e);d.x+=i*Math.cos(c);d.y+=i*Math.sin(c);var u=" 0 0,1 ";Math.abs(n)>Math.PI&&(u=" 0 1,1 ");var g=`M ${_.x.toFixed(l)},${_.y.toFixed(l)}`;g+=` A ${i.toFixed(l)},${i.toFixed(l)}${u}`;g+=`${d.x.toFixed(l)},${d.y.toFixed(l)}`;g+=` L ${t.toFixed(l)},${e.toFixed(l)} z`;o.setAttribute("d",g);h&&this._setClipPath(o,h);r&&o.setAttribute("class",r);this._applyStyle(o,a);this._appendChild(o);return o}drawDonutSegment(t,e,i,s,n,r,a,h,o){var l=!1;if(r>=2*Math.PI){l=!0;r-=.001}const _=document.createElementNS(_SvgRenderEngine.svgNS,"path"),c=this.precision+2;this._applyColor(_,"fill",this._fill);this._applyColor(_,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(_,"stroke-width",this._strokeWidth.toString());var d=new Point(t,e);d.x+=i*Math.cos(n);d.y+=i*Math.sin(n);var u=n+r,g=new Point(t,e);g.x+=i*Math.cos(u);g.y+=i*Math.sin(u);var p=new Point(t,e);p.x+=s*Math.cos(u);p.y+=s*Math.sin(u);var f=new Point(t,e);f.x+=s*Math.cos(n);f.y+=s*Math.sin(n);var m=" 0 0,1 ",x=" 0 0,0 ";if(Math.abs(r)>Math.PI){m=" 0 1,1 ";x=" 0 1,0 "}var b=`M ${d.x.toFixed(c)},${d.y.toFixed(c)}`;b+=` A ${i.toFixed(c)},${i.toFixed(c)}${m}`;b+=` ${g.x.toFixed(c)},${g.y.toFixed(c)}`;b+=l?` M ${p.x.toFixed(c)},${p.y.toFixed(c)}`:` L ${p.x.toFixed(c)},${p.y.toFixed(c)}`;b+=` A ${s.toFixed(c)},${s.toFixed(c)}${x}`;b+=`${f.x.toFixed(c)},${f.y.toFixed(c)}`;l||(b+=" z");_.setAttribute("d",b);o&&this._setClipPath(_,o);a&&_.setAttribute("class",a);this._applyStyle(_,h);this._appendChild(_);return _}drawString(t,e,i,s){return this._isHtmlString(t)?this._drawStringHtml(t,e,i,s):this._drawString(t,e,i,s)}_isHtmlString(t){return this._htmlText&&/<\/?[a-z][\s\S]*>/i.test(t)}_drawString(t,e,i,s){const n=this._createText(e,t),r=this.precision;i&&n.setAttribute("class",i);this._applyStyle(n,s);this._appendChild(n);var a,h=this._getKey(t,i,this._groupCls);if(this._bbCache[h]){a=this._bbCache[h];n.setAttribute("y",(e.y-(a.y+a.height)).toFixed(r))}else{a=this._getBBox(n);n.setAttribute("y",(e.y-(a.y+a.height-e.y)).toFixed(r))}this._isRtl&&!isIE()&&n.setAttribute("x",(e.x+a.width).toFixed(r));return n}_drawStringHtml(t,e,i,s){const n=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");n.setAttribute("width","1000");n.setAttribute("height","100");n.setAttribute("x",e.x.toFixed(2));const r=document.createElement("span"),a=this._groupCls;a&&addClass(r,a);i&&addClass(r,i);this._applyStyle(r,s);r.innerHTML=t;n.appendChild(r);this._appendChild(n);const h=r.getBoundingClientRect();n.setAttribute("width",Math.ceil(h.width+2).toFixed(2));n.setAttribute("height",Math.ceil(h.height+1).toFixed(2));n.setAttribute("y",(e.y-h.height).toFixed(2));return n}drawStringRotated(t,e,i,s,n,r){return this._isHtmlString(t)?this._drawStringRotatedHtml(t,e,i,s,n,r):this._drawStringRotated(t,e,i,s,n,r)}_drawStringRotated(t,e,i,s,n,r){const a=this._createText(e,t),h=this.precision;n&&a.setAttribute("class",n);this._applyStyle(a,r);var o=document.createElementNS(_SvgRenderEngine.svgNS,"g");o.setAttribute("transform",`rotate(${s.toFixed(h)},${i.x.toFixed(h)},${i.y.toFixed(h)})`);o.appendChild(a);this._appendChild(o);var l=this._getBBox(a);a.setAttribute("y",(e.y-(l.y+l.height-e.y)).toFixed(h));this._isRtl&&!isIE()&&a.setAttribute("x",(e.x+l.width).toFixed(h));return a}_drawStringRotatedHtml(t,e,i,s,n,r){const a=this.precision,h=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");h.setAttribute("width","1000");h.setAttribute("height","100");h.setAttribute("x",e.x.toFixed(2));const o=document.createElement("span"),l=this._groupCls;l&&addClass(o,l);n&&addClass(o,n);this._applyStyle(o,r);o.innerHTML=t;h.appendChild(o);this._appendChild(h);const _=o.getBoundingClientRect();h.setAttribute("width",Math.ceil(_.width+2).toFixed(2));h.setAttribute("height",Math.ceil(_.height+1).toFixed(2));h.setAttribute("y",(e.y-_.height).toFixed(2));var c=document.createElementNS(_SvgRenderEngine.svgNS,"g");c.setAttribute("transform",`rotate(${s.toFixed(a)},${i.x.toFixed(a)},${i.y.toFixed(a)})`);c.appendChild(h);this._appendChild(c);return h}measureString(t,e,i,s){return this._isHtmlString(t)?this._measureStringHtml(t,e,i,s):this._measureString(t,e,i,s)}_measureString(t,e,i,s){var n=new Size(0,0);if(!this._fontFamily&&!this._fontSize){const s=this._getKey(t,e,i);if(this._bbCache[s])return this._bbCache[s]}if(this.cssPriority){this._fontSize&&this._text.setAttribute("font-size",this._fontSize);this._fontFamily&&this._text.setAttribute("font-family",this._fontFamily)}else{const t={};this._fontSize&&(t.fontSize=this._fontSize);this._fontFamily&&(t.fontFamily=this._fontFamily);Object.keys(t).length>0&&setCss(this._text,t)}e&&this._text.setAttribute("class",e);i&&this._textGroup.setAttribute("class",i);this._applyStyle(this._text,s);this._setText(this._text,t);var r=this._getBBox(this._text);n.width=r.width;n.height=r.height;this._text.removeAttribute("font-size");this._text.removeAttribute("font-family");this._text.removeAttribute("class");this._text.removeAttribute("style");if(s)for(const t in s)this._text.removeAttribute(this._deCase(t));this._textGroup.removeAttribute("class");this._text.textContent=null;if(!this._fontFamily&&!this._fontSize){const s=this._getKey(t,e,i);this._bbCache[s]={x:r.x,y:r.y+1e3,width:r.width,height:r.height}}return n}_measureStringHtml(t,e,i,s){var n=new Size(0,0);const r=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");r.setAttribute("width","1000");r.setAttribute("height","100");r.setAttribute("x","-1000");r.setAttribute("y","-1000");const a=document.createElement("span");i&&addClass(a,i);e&&addClass(a,e);this._applyStyle(a,s);a.innerHTML=t;r.appendChild(a);e&&this._text.setAttribute("class",e);this._applyStyle(this._text,s);this._appendChild(r);const h=a.getBoundingClientRect();n.width=h.width;n.height=h.height;r.remove();return n}startGroup(t,e,i=!1){var s=document.createElementNS(_SvgRenderEngine.svgNS,"g");if(t){s.setAttribute("class",t);this._groupCls=t}e&&this._setClipPath(s,e);this._appendChild(s);i&&s.transform.baseVal.appendItem(this._svg.createSVGTransform());this._group=s;return s}endGroup(){if(this._group){const t=this._group.parentNode;if(t==this._svg){this._group=null;this._groupCls=null}else{this._group=t;this._groupCls=this._getClass(this._group)}}}drawImage(t,e,i,s,n){const r=document.createElementNS(_SvgRenderEngine.svgNS,"image"),a=this.precision;r.setAttributeNS(_SvgRenderEngine.xlinkNS,"href",t);r.setAttribute("x",e.toFixed(a));r.setAttribute("y",i.toFixed(a));r.setAttribute("width",s.toFixed(a));r.setAttribute("height",n.toFixed(a));this._appendChild(r);return r}_setClipPath(t,e){t.setAttribute("clip-path",`url(#${e})`);_SvgRenderEngine._isSafari&&setCss(t,{"-webkit-clip-path":`url(#${e})`})}_appendChild(t){if(!this.readOnly){var e=this._group;e||(e=this._svg);e.appendChild(t)}}_create(){this._svg=document.createElementNS(_SvgRenderEngine.svgNS,"svg");this._defs=document.createElementNS(_SvgRenderEngine.svgNS,"defs");this._svg.appendChild(this._defs);this._text=this._createText(new Point(-1e3,-1e3),"");this._textGroup=document.createElementNS(_SvgRenderEngine.svgNS,"g");this._textGroup.appendChild(this._text);this._svg.appendChild(this._textGroup)}_setText(t,e){var i=e?e.toString():null;if(i&&i.indexOf("tspan")>=0)try{t.textContent=null;const e=new DOMParser,s=`<svg xmlns="http://www.w3.org/2000/svg">${i}</svg>`;let n=e.parseFromString(s,"text/xml").documentElement.firstChild;for(;n;){t.appendChild(t.ownerDocument.importNode(n,!0));n=n.nextSibling}}catch(t){throw new Error("Error parsing XML string.")}else t.textContent=i}_getKey(t,e,i){return t+(e||"")+(i||"")}_createText(t,e){const i=document.createElementNS(_SvgRenderEngine.svgNS,"text"),s=this.precision;this._setText(i,e);i.setAttribute("x",t.x.toFixed(s));i.setAttribute("y",t.y.toFixed(s));if(this.cssPriority){null!=this._textFill&&i.setAttribute("fill",this._textFill);this._fontSize&&i.setAttribute("font-size",this._fontSize);this._fontFamily&&i.setAttribute("font-family",this._fontFamily)}else{const t={};null!=this._textFill&&(t.fill=this._textFill);this._fontSize&&(t.fontSize=this._fontSize);this._fontFamily&&(t.fontFamily=this._fontFamily);Object.keys(t).length>0&&setCss(i,t)}return i}_applyStyle(t,e){if(e)for(const i in e)"fill"===i||"stroke"===i?this._applyColor(t,i,e[i]):t.setAttribute(this._deCase(i),e[i])}_deCase(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}_getClass(t){let e;if(t)for(let i=t;i;i=i.parentNode){e=i.getAttribute("class");if(e)break}return e}_getBBox(t){if(!_SvgRenderEngine._isff)return t.getBBox();try{return t.getBBox()}catch(t){return{x:0,y:0,width:0,height:0}}}_applyColor(t,e,i){let s=_GradientColorUtil.tryParse(i);if(null!=s){if(!isString(s)){if(null==this._savedGradient[i]){const t="gc"+(1e6*Math.random()).toFixed();let e;if(null!=s.x1){e=document.createElementNS(_SvgRenderEngine.svgNS,"linearGradient");["x1","y1","x2","y2","gradientUnits"].forEach(t=>{null!=s[t]&&e.setAttribute(t,s[t])})}else if(null!=s.r){e=document.createElementNS(_SvgRenderEngine.svgNS,"radialGradient");["cx","cy","r","fx","fy","fr","gradientUnits"].forEach(t=>{null!=s[t]&&e.setAttribute(t,s[t])})}s.colors&&s.colors&&s.colors.length>0&&s.colors.forEach(t=>{const i=document.createElementNS(_SvgRenderEngine.svgNS,"stop");null!=t.color&&i.setAttribute("stop-color",t.color);null!=t.offset&&i.setAttribute("offset",t.offset);null!=t.opacity&&i.setAttribute("stop-opacity",t.opacity);e.appendChild(i)});e.setAttribute("id",t);this._defs.appendChild(e);this._savedGradient[i]=t}s=`url(${this._baseUrl}#${this._savedGradient[i]})`}this.cssPriority?t.setAttribute(e,s):this._addInlineStyle(t,e,s)}}_addInlineStyle(t,e,i){const s={};s[e.replace(/-([a-z])/g,t=>t[1].toUpperCase())]=i;setCss(t,s)}_setAttribute(t,e,i){this.cssPriority?t.setAttribute(e,i):this._addInlineStyle(t,e,i)}_checkRtl(){return this._element&&hasClass(this._element,UtilitesClsNames.rtl)}}_SvgRenderEngine.svgNS="http://www.w3.org/2000/svg";_SvgRenderEngine.xlinkNS="http://www.w3.org/1999/xlink";class _GradientColorUtil{static tryParse(t){if(_GradientColorUtil.parsedColor[t])return _GradientColorUtil.parsedColor[t];if(null==t||-1===t.indexOf("-")||-1!==t.indexOf("var("))return t;var e,i=t.replace(/\s+/g,"").split(/-/g),s=i[0][0],n=!1,r=i[0].match(/\(\S+\)/);if(!r||0==r.length)return t;var a=r[0].replace(/[(\\)]/g,"").split(/,/g);if("l"===s||"L"===s){e={x1:"0",y1:"0",x2:"0",y2:"0",colors:[]};"l"===s&&(n=!0);["x1","y1","x2","y2"].forEach((t,i)=>{null!=a[i]&&(e[t]=n?100*+a[i]+"%":""+a[i])})}else if("r"===s||"R"===s){e={cx:"0",cy:"0",r:"0",colors:[]};"r"===s&&(n=!0);["cx","cy","r","fx","fy","fr"].forEach((t,i)=>{null!=a[i]&&""!==a[i]&&(e[t]=n?100*+a[i]+"%":""+a[i])})}n||(e.gradientUnits="userSpaceOnUse");_GradientColorUtil.parsedColor[t]=e;var h=i.length-1;i.forEach((t,i)=>{t.indexOf(")")>-1&&(t=t.match(/\)\S+/)[0].replace(")",""));const s=t.split(":"),r={color:"black"};null!=s[0]&&(r.color=s[0]);null!=s[1]?r.offset=n?100*+s[1]+"%":""+s[1]:r.offset=i/h*100+"%";null!=s[2]&&(r.opacity=s[2]);e.colors.push(r)});return e}}_GradientColorUtil.parsedColor={};export class SvgRenderEngine extends _SvgRenderEngine{}export class Legend{constructor(t){this._position=Position.Right;this._title="";this._titleAlign="left";this._titlePadding=5;this._areas=[];this._sz=new Size;this._orient=Orientation.Auto;this._scrollbar=!1;this._chart=t}get position(){return this._position}set position(t){if((t=asEnum(t,Position))!=this._position){this._position=t;this._invalidate()}}get reverse(){return this._reverse}set reverse(t){if(t!=this._reverse){this._reverse=asBoolean(t,!0);this._invalidate()}}get title(){return this._title}set title(t){if(t!=this._title){this._title=asString(t,!1);this._invalidate()}}get titleAlign(){return this._titleAlign}set titleAlign(t){if(t!=this._titleAlign){const e=asString(t,!1);this._titleAlign="right"===e?"right":"center"===e?"center":"left";this._invalidate()}}get orientation(){return this._orient}set orientation(t){if((t=asEnum(t,Orientation))!=this._orient){this._orient=t;this._invalidate()}}get maxSize(){return this._maxSz}set maxSize(t){if(t!=this._maxSz){if(isNumber(t))this._maxSz=t;else if(isString(t)){const e=asString(t);assert(FlexChartBase._endsWith(e,"px")||FlexChartBase._endsWith(e,"%"),"number with unit (px or %) expected.");this._maxSz=e}else t&&assert(!1,"number or string expected.");this._invalidate()}}get scrollbar(){return this._scrollbar}set scrollbar(t){if(t!=this._scrollbar){this._scrollbar=asBoolean(t,!1);this._invalidate()}}get isVertical(){return this.orientation==Orientation.Auto?null==this.position||this.position==Position.Auto||this.position==Position.Right||this.position==Position.Left||this.position==Position.LeftTop||this.position==Position.LeftBottom||this.position==Position.RightTop||this.position==Position.RightBottom:this.orientation==Orientation.Vertical}_getDesiredSize(t,e,i,s){if(e==Position.None)return null;let n=new Size;if(this.title.length>0){n=t.measureString(this.title,LegendClsNames.title,LegendClsNames.legend);s-=n.height+this._titlePadding}var r=this._chart._getDesiredLegendSize(t,this.isVertical,i,s);if(null!=r){if(this.title.length>0){r.height+=n.height+this._titlePadding;if(n.width>r.width)if(this.position==Position.Left||this.position==Position.Right||this.position==Position.LeftTop||this.position==Position.LeftBottom||this.position==Position.RightTop||this.position==Position.RightBottom){const t=Math.min(n.width,this._getMaxSize(i));r.width=t;n.width=t}else i>r.width&&i<n.width?r.width=i:i>=n.width&&(r.width=n.width)}this._sz=r.clone();if(this.scrollbar)if(this.isVertical&&r.height>s){r.width+=18;r.height=s}else if(!this.isVertical&&r.width>i){r.width=i;r.height+=18}}return r}_getPosition(t,e){return this.position==Position.Auto?t>=e?Position.Right:Position.Bottom:this.position}_render(t,e,i,s,n){this._areas=[];let r=0;t.fill="transparent";t.stroke=null;t.drawRect(e.x,e.y,s,n);if(this.title.length){const i=e.clone(),a=t.measureString(this.title,LegendClsNames.title+"`");i.y+=a.height;"right"===this.titleAlign?i.x=e.x+s-a.width:"center"===this.titleAlign&&(i.x=e.x+.5*(s-a.width));t.drawString(this.title,i,LegendClsNames.title);r=a.height+this._titlePadding;e.y+=r;n-=r}let a=!1;this.scrollbar&&(this._sz.height>n&&this.isVertical||this._sz.width>s&&!this.isVertical)&&(a=!0);this._chart._renderLegend(t,e,this._areas,this.isVertical,a?s-18:s,n);if(a){n+=r;this._addScrollbar(t,e,s,n,this._sz,this.isVertical,r)}}_hitTest(t){var e=this._areas;for(let i=0;i<e.length;i++)if(e[i]&&FlexChartBase._contains(e[i],t))return i;return null}_addScrollbar(t,e,i,s,n,r,a){t.endGroup();const h=100-a/s*100,o=t.element,l=o.children.item(o.children.length-1),_=l.getBoundingClientRect();l.removeAttribute("clip-path");const c=[];l.children.length>0&&c.push(l.children.item(0));a>0&&c.push(l.children.item(1));Array.from(l.querySelectorAll("text,rect")).forEach(t=>{if(-1==c.indexOf(t)){t.setAttribute("x",(+t.getAttribute("x")-e.x).toFixed(2));t.setAttribute("y",(+t.getAttribute("y")-e.y).toFixed(2))}});Array.from(l.querySelectorAll("foreignObject")).forEach(t=>{if(-1==c.indexOf(t)){t.setAttribute("x",(+t.getAttribute("x")-e.x).toFixed(2));t.setAttribute("y",(+t.getAttribute("y")-e.y).toFixed(2))}});Array.from(l.querySelectorAll("ellipse")).forEach(t=>{t.setAttribute("cx",(+t.getAttribute("cx")-e.x).toFixed(2));t.setAttribute("cy",(+t.getAttribute("cy")-e.y).toFixed(2))});Array.from(l.querySelectorAll("line")).forEach(t=>{t.setAttribute("x1",(+t.getAttribute("x1")-e.x).toFixed(2));t.setAttribute("y1",(+t.getAttribute("y1")-e.y).toFixed(2));t.setAttribute("x2",(+t.getAttribute("x2")-e.x).toFixed(2));t.setAttribute("y2",(+t.getAttribute("y2")-e.y).toFixed(2))});const d=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");d.setAttribute("x",e.x.toFixed(2));d.setAttribute("y",e.y.toFixed(2));d.setAttribute("width",i.toFixed(2));d.setAttribute("height",s.toFixed(2));const u=document.createElement("div");u.className="wj-legend-scrollable";setCss(u,r?{width:"100%",height:h+"%",overflowX:"hidden",overflowY:"scroll"}:{width:"100%",height:h+"%",overflowY:"hidden",overflowX:"scroll"});const g=document.createElementNS("http://www.w3.org/2000/svg","svg");g.setAttribute("height",(_.height-a).toFixed(2));let p=_.width;!r&&n.width<p&&(p=n.width);g.setAttribute("width",p.toFixed(2));for(;l.children.length>c.length;){const t=l.children.item(c.length);l.removeChild(t);g.appendChild(t)}u.appendChild(g);d.appendChild(u);l.appendChild(d)}_invalidate(){this._chart&&this._chart.invalidate()}_getMaxSize(t){const e=this.maxSize;if(isNumber(e)){const i=asNumber(e,!0);if(i>0)return Math.min(i,t)}else{const i=asString(e,!0);if(i)if(FlexChartBase._endsWith(i,"px")){const e=parseFloat(i.replace("px",""));if(e>0)return Math.min(e,t)}else if(FlexChartBase._endsWith(i,"%")){const e=parseFloat(i.replace("%",""));if(e>0)return t*Math.min(e,100)/100}}return.5*t}}export class DataPoint{constructor(t=0,e=0){this.x=t;this.y=e}}export class RenderEventArgs extends CancelEventArgs{constructor(t){super();this._engine=t}get engine(){return this._engine}}export class SeriesRenderingEventArgs extends RenderEventArgs{constructor(t,e,i){super(t);this._index=e;this._count=i}get index(){return this._index}get count(){return this._count}}export var ImageFormat;!function(t){t[t.Png=0]="Png";t[t.Jpeg=1]="Jpeg";t[t.Svg=2]="Svg"}(ImageFormat||(ImageFormat={}));export var SelectionMode;!function(t){t[t.None=0]="None";t[t.Series=1]="Series";t[t.Point=2]="Point"}(SelectionMode||(SelectionMode={}));export var Position;!function(t){t[t.None=0]="None";t[t.Left=1]="Left";t[t.Top=2]="Top";t[t.Right=3]="Right";t[t.Bottom=4]="Bottom";t[t.Auto=5]="Auto";t[t.TopLeft=6]="TopLeft";t[t.TopRight=7]="TopRight";t[t.BottomLeft=8]="BottomLeft";t[t.BottomRight=9]="BottomRight";t[t.LeftTop=10]="LeftTop";t[t.LeftBottom=11]="LeftBottom";t[t.RightTop=12]="RightTop";t[t.RightBottom=13]="RightBottom"}(Position||(Position={}));export var Orientation;!function(t){t[t.Auto=0]="Auto";t[t.Vertical=1]="Vertical";t[t.Horizontal=2]="Horizontal"}(Orientation||(Orientation={}));export class FlexChartBase extends Control{constructor(){super(...arguments);this._palette=null;this._selectionMode=SelectionMode.None;this._defPalette=Palettes.standard;this._notifyCurrentChanged=!0;this._legendHost=null;this._needBind=!1;this._skipLightClr=!1;this.rendering=new Event;this.rendered=new Event;this.itemsSourceChanging=new Event;this.itemsSourceChanged=new Event;this.selectionChanged=new Event}get itemsSource(){return this._items}set itemsSource(t){if(this._items!=t){const e=new CancelEventArgs;if(!this.onItemsSourceChanging(e))return;if(this._cv){this._cv.currentChanged.removeHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._items=t;this._cv=asCollectionView(t);if(null!=this._cv){this._cv.currentChanged.addHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.addHandler(this._cvCollectionChanged,this)}this._clearCachedValues();this.onItemsSourceChanged(e);this._bindChart()}}get collectionView(){return this._cv}get palette(){return this._palette}set palette(t){if(t!=this._palette){this._palette=asArray(t);this._skipLightClr=Palettes._isExtended(this._palette);this.invalidate()}}get plotMargin(){return this._plotMargin}set plotMargin(t){if(t!=this._plotMargin){this._plotMargin=t;this.invalidate()}}get legend(){return this._legend}set legend(t){if(t!=this._legend){this._legend=asType(t,Legend);null!=this._legend&&(this._legend._chart=this)}}get header(){return this._header}set header(t){if(t!=this._header){this._header=asString(t,!0);this.invalidate()}}get footer(){return this._footer}set footer(t){if(t!=this._footer){this._footer=asString(t,!0);this.invalidate()}}get headerStyle(){return this._headerStyle}set headerStyle(t){if(t!=this._headerStyle){this._headerStyle=t;this.invalidate()}}get footerStyle(){return this._footerStyle}set footerStyle(t){if(t!=this._footerStyle){this._footerStyle=t;this.invalidate()}}get selectionMode(){return this._selectionMode}set selectionMode(t){if((t=asEnum(t,SelectionMode))!=this._selectionMode){this._selectionMode=t;this.invalidate()}}get itemFormatter(){return this._itemFormatter}set itemFormatter(t){if(t!=this._itemFormatter){this._itemFormatter=asFunction(t);this.invalidate()}}get options(){return this._options}set options(t){if(t!=this._options){this._options=t;this.invalidate()}}onRendering(t){this.rendering.raise(this,t)}onRendered(t){this.rendered.raise(this,t)}onItemsSourceChanging(t){this.itemsSourceChanging.raise(this,t);return!t.cancel}onItemsSourceChanged(t){this.itemsSourceChanged.raise(this,t)}saveImageToFile(t){var e,i,s,n;t&&0!==t.length&&-1!==t.indexOf(".")||(t="image.png");n=t.split(".");e=n[0];i=n[1].toLowerCase();s=ImageFormat[i[0].toUpperCase()+i.substring(1)];this.saveImageToDataUrl(s,t=>{ExportHelper.downloadImage(t,e,i)})}saveImageToDataUrl(t,e){var i=asEnum(t,ImageFormat,!1),s=ImageFormat[i].toLowerCase();s&&s.length&&this._exportToImage(s,t=>{e.call(e,t)})}saveSvgToDataUrl(t,e=!0){this._exportToImage("svg",e=>{t.call(t,e)},{embedCss:e})}saveSvgToFile(t,e=!0){this.saveSvgToDataUrl(e=>{ExportHelper.downloadImage(e,t,"svg")},e)}_exportToImage(t,e,i=null){const s=this._currentRenderEngine.element;i&&!1===i.embedCss?ExportHelper.getDataUri2(s,this,i=>{this.prepareDataUri(s,t,i,e)}):ExportHelper.getDataUri(s,this,i=>{this.prepareDataUri(s,t,i,e)})}prepareDataUri(t,e,i,s){if("svg"===e)s.call(null,i);else{const n=new Image;n.onload=()=>{var i,r=document.createElement("canvas"),a=t.parentNode||t,h=getElementRect(a);r.width=h.width;r.height=h.height;var o=r.getContext("2d");let l=this._bgColor(this.hostElement);this._isTransparent(l)&&(l="#ffffff");o.fillStyle=l;o.fillRect(0,0,h.width,h.height);var _=window.getComputedStyle(a,null).getPropertyValue("padding-left").replace("px",""),c=window.getComputedStyle(a,null).getPropertyValue("padding-top").replace("px","");o.drawImage(n,+_||0,+c||0);i=r.toDataURL("image/"+e);s.call(null,i);r=null};n.src=i}}refresh(t=!0){super.refresh(t);this.isUpdating||this.disposed||this._refreshChart()}onSelectionChanged(t){this.selectionChanged.raise(this,t)}onLostFocus(t){this._tooltip&&this._tooltip.isVisible&&!this.isTouching&&this._tooltip.hide();super.onLostFocus(t)}_cvCollectionChanged(t,e){this._clearCachedValues();this._bindChart()}_cvCurrentChanged(t,e){this._notifyCurrentChanged&&this._bindChart()}_bgColor(t){if(!t)return"transparent";const e=getComputedStyle(t).backgroundColor;return this._isTransparent(e)?this._bgColor(t.parentElement):e}_isTransparent(t){const e=new Color(t);return 0==e.a&&0==e.b&&0==e.g&&0==e.r}_getColor(t){var e=this._defPalette;null!=this._palette&&this._palette.length>0&&(e=this._palette);return e[t%e.length]}_getColorLight(t){let e=this._getColor(t);this._skipLightClr||(e=this._getLightColor(e));return e}_getLightColor(t){var e=new Color(t);if(null!=e&&-1===t.indexOf("-")){1==e.a&&-1==t.indexOf("rgba")&&-1==t.indexOf("hsla")&&(e.a*=.7);t=e.toString()}return t}_bindChart(){this._needBind=!0;this.invalidate()}_clearCachedValues(){}_renderEls(t,e,i=!0,s=null,n=!1){let r=e.width,a=e.height;if(0==r)return;(isNaN(r)||r<0)&&(r=FlexChartBase._WIDTH);(a<=0||isNaN(a))&&(a=FlexChartBase._HEIGHT);const h=r>0&&a>0;h&&t.setViewportSize(r,a);let o=0,l=0;if(this.legend.scrollbar&&this._legendHost){const t=this._legendHost.querySelector(".wj-legend-scrollable");if(t)if(this.legend.isVertical){l=0;o=t.scrollTop}else{o=0;l=t.scrollLeft}}this._currentRenderEngine._htmlText=this._isHtmlText();t.beginRender();t.cssPriority=!0;if(h){this._rectChart=new Rect(0,0,r,a);this._prepareRender();if(s){const e=t.stroke,i=t.fill;t.fill=s;t.stroke=null;t.drawRect(0,0,r,a);t.fill=i;t.stroke=e}const e=new Rect(0,0,r,a);this._chartRectId="chartRect"+(1e6*Math.random()).toFixed();t.addClipRect(e,this._chartRectId);this._renderHeader(t,e);this._renderFooter(t,e);this._renderLegends(t,e);this._renderChart(t,e,i);if(this.legend.scrollbar&&this._legendHost){const t=this._legendHost.querySelector(".wj-legend-scrollable");if(t){t.scrollTop=o;t.scrollLeft=l}}}t.endRender()}_render(t,e=!0,i=null){const s=this._getHostSize();if(this._h){const t=s.height-this._h;t>=4&&t<=6&&!1!==this._isPCUnit("height")&&(s.height=this._h)}this._h=s.height;this._renderEls(t,s,e,i)}_isPCUnit(t){let e=null;const i=this.hostElement;if(i&&i.computedStyleMap){const s=i.computedStyleMap();if(s){const i=s.get(t);i&&(e="percent"==i.unit)}}return e}_renderHidden(t=null,e=null){const i=document.createElement("div");addClass(i,this.hostElement.getAttribute("class")||"");i.style.visibility="hidden";const s=new _SvgRenderEngine(i);document.body.appendChild(i);if(!t){const e=this._getHostComputedStyle();let i=0,s=0;if(e){i=this._parsePx(e.width);s=this._parsePx(e.height);0==i&&(i=FlexChartBase._WIDTH);0==s&&(s=FlexChartBase._HEIGHT);i-=this._parsePx(e.paddingLeft);i-=this._parsePx(e.paddingRight);s-=this._parsePx(e.paddingTop);s-=this._parsePx(e.paddingBottom);i-=this._parsePx(e.borderLeftWidth);i-=this._parsePx(e.borderRightWidth);s-=this._parsePx(e.borderTopWidth);s-=this._parsePx(e.borderBottomWidth)}0==i&&(i=FlexChartBase._WIDTH);0==s&&(s=FlexChartBase._HEIGHT);t=new Size(i,s)}this._renderEls(s,t,!0,e,!0);removeChild(i);return s.element}_renderHeader(t,e){t.startGroup(FlexChartBase._CSS_HEADER,this._chartRectId);e=this._drawTitle(t,e,this.header,this.headerStyle,!1);t.endGroup()}_renderFooter(t,e){t.startGroup(FlexChartBase._CSS_FOOTER,this._chartRectId);e=this._drawTitle(t,e,this.footer,this.footerStyle,!0);t.endGroup()}_renderLegends(t,e){var i,s,n=this.legend,r=e.width,a=e.height,h=n._getPosition(r,a);let o=r,l=a;h==Position.Left||h==Position.Right||h==Position.LeftTop||h==Position.LeftBottom||h==Position.RightTop||h==Position.RightBottom?o=this._getLegendSize(r,o):l=this._getLegendSize(a,l);if(!(i=n._getDesiredSize(t,h,o,l))){this._legendHost=null;this._rectLegend=null;return}h==Position.Left||h==Position.Right||h==Position.LeftTop||h==Position.LeftBottom||h==Position.RightTop||h==Position.RightBottom?i.width=this._getLegendSize(r,i.width):i.height=this._getLegendSize(a,i.height);i.height>e.height&&(i.height=e.height);switch(h){case Position.Right:r-=i.width;s=new Point(r,e.top+.5*(a-i.height));break;case Position.RightTop:r-=i.width;s=new Point(r,e.top);break;case Position.RightBottom:r-=i.width;s=new Point(r,e.top+(a-i.height));break;case Position.Left:e.left+=i.width;r-=i.width;s=new Point(0,e.top+.5*(a-i.height));break;case Position.LeftTop:e.left+=i.width;r-=i.width;s=new Point(0,e.top);break;case Position.LeftBottom:e.left+=i.width;r-=i.width;s=new Point(0,e.top+(a-i.height));break;case Position.Top:a-=i.height;s=new Point(.5*(r-i.width),e.top);e.top+=i.height;break;case Position.TopLeft:a-=i.height;s=new Point(0,e.top);e.top+=i.height;break;case Position.TopRight:a-=i.height;s=new Point(r-i.width,e.top);e.top+=i.height;break;case Position.Bottom:a-=i.height;s=new Point(.5*(r-i.width),e.top+a);break;case Position.BottomLeft:a-=i.height;s=new Point(0,e.top+a);break;case Position.BottomRight:a-=i.height;s=new Point(r-i.width,e.top+a)}e.width=r;e.height=a;this._rectLegend=new Rect(s.x,s.y,i.width,i.height);const _="legRect"+(1e6*Math.random()).toFixed();t.addClipRect(this._rectLegend,_);this._legendHost=t.startGroup(FlexChartBase._CSS_LEGEND,_);this.legend._render(t,s,h,i.width,i.height);t.endGroup()}_prepareRender(){}_renderChart(t,e,i){}_performBind(){}_getDesiredLegendSize(t,e,i,s){return null}_renderLegend(t,e,i,s,n,r){}_getHitTestItem(t){return null}_getHitTestValue(t,e){return null}_getHitTestLabel(t){return null}_refreshChart(){if(this._needBind){this._needBind=!1;this._performBind()}this.hostElement&&this._render(this._currentRenderEngine)}_drawTitle(t,e,i,s,n){var r=FlexChartBase._CSS_TITLE,a=n?FlexChartBase._CSS_FOOTER:FlexChartBase._CSS_HEADER,h=null;n?this._rectFooter=null:this._rectHeader=null;if(null!=i){let o=null,l=null,_=null,c=null;if(s){s.fontSize&&(o=s.fontSize);s.foreground&&(l=s.foreground);s.fill&&(l=s.fill);s.fontFamily&&(_=s.fontFamily);s.halign&&(c=s.halign)}t.fontSize=o;t.fontFamily=_;h=t.measureString(i,r,a,s);e.height-=h.height;l||(l=FlexChartBase._FG);t.textFill=l;if(n){"left"==c?FlexChartBase._renderText(t,i,new Point(e.left,e.bottom),0,0,r,a,s):"right"==c?FlexChartBase._renderText(t,i,new Point(e.left+e.width,e.bottom),2,0,r,a,s):FlexChartBase._renderText(t,i,new Point(e.left+.5*e.width,e.bottom),1,0,r,a,s);this._rectFooter=new Rect(e.left,e.bottom,e.width,h.height)}else{this._rectHeader=new Rect(e.left,e.top,e.width,h.height);e.top+=h.height;"left"==c?FlexChartBase._renderText(t,i,new Point(e.left,0),0,0,r,a,s):"right"==c?FlexChartBase._renderText(t,i,new Point(e.left+e.width,0),2,0,r,a,s):FlexChartBase._renderText(t,i,new Point(e.left+.5*e.width,0),1,0,r,a,s)}t.textFill=null;t.fontSize=null;t.fontFamily=null}return e}pageToControl(t,e){return this._toControl(t,e)}_toControl(t,e){isNumber(t)&&isNumber(e)?t=new Point(t,e):t instanceof MouseEvent&&(t=mouseToPage(t));asType(t,Point);var i=t.clone(),s=this._getHostOffset();i.x-=s.x;i.y-=s.y;const n=this._currentRenderEngine?this._currentRenderEngine.element:null;if(null!=n){const t=n.getBoundingClientRect(),e=parseFloat(n.getAttribute("width")),s=parseFloat(n.getAttribute("height"));t.width!=e&&(i.x*=e/t.width);t.height!=s&&(i.y*=s/t.height)}var r=this._getHostComputedStyle();if(r){const t=parseInt(r.paddingLeft.replace("px",""));t&&!isNaN(t)&&(i.x-=t);const e=parseInt(r.paddingTop.replace("px",""));e&&!isNaN(e)&&(i.y-=e)}return i}_highlightItems(t,e,i){if(i)for(let i=0;i<t.length;i++)addClass(t[i],e);else for(let i=0;i<t.length;i++)removeClass(t[i],e)}_parseMargin(t){var e={};if(isNumber(t)&&!isNaN(t))e.top=e.bottom=e.left=e.right=asNumber(t);else if(isString(t)){const i=asString(t).split(" ",4);let s=NaN,n=NaN,r=NaN,a=NaN;if(i){if(4==i.length){s=parseFloat(i[0]);a=parseFloat(i[1]);n=parseFloat(i[2]);r=parseFloat(i[3])}else if(2==i.length){s=n=parseFloat(i[0]);r=a=parseFloat(i[1])}else 1==i.length&&(s=n=r=a=parseFloat(i[1]));isNaN(s)||(e.top=s);isNaN(n)||(e.bottom=n);isNaN(r)||(e.left=r);isNaN(a)||(e.right=a)}}return e}_showToolTip(t,e){var i=this._tooltip.showDelay;this._clearTimeouts();if(!this.isDisabled){t||this._tooltip.hide();if(i>0)this._toShow=setTimeout(()=>{this._tooltip.show(this.hostElement,t,e);this._tooltip.hideDelay>0&&(this._toHide=setTimeout(()=>{this._tooltip.hide()},this._tooltip.hideDelay))},i);else{this._tooltip.show(this.hostElement,t,e);this._tooltip.hideDelay>0&&(this._toHide=setTimeout(()=>{this._tooltip.hide()},this._tooltip.hideDelay))}}}_hideToolTip(){this._clearTimeouts();this._tooltip.hide()}_clearTimeouts(){if(this._toShow){clearTimeout(this._toShow);this._toShow=null}if(this._toHide){clearTimeout(this._toHide);this._toHide=null}}_getHostOffset(){var t=getElementRect(this.hostElement);return new Point(t.left,t.top)}_getHostSize(){var t=new Size,e=this.hostElement,i=this._getHostComputedStyle(),s=e.offsetWidth,n=e.offsetHeight;if(i){s-=this._parsePx(i.paddingLeft);s-=this._parsePx(i.paddingRight);n-=this._parsePx(i.paddingTop);n-=this._parsePx(i.paddingBottom);s-=this._parsePx(i.borderLeftWidth);s-=this._parsePx(i.borderRightWidth);n-=this._parsePx(i.borderTopWidth);n-=this._parsePx(i.borderBottomWidth);t.width=s;t.height=n}return t}_parsePx(t){const e=parseFloat(t.replace("px",""));return isNaN(e)?0:e}_getHostComputedStyle(){var t=this.hostElement;return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(this.hostElement):null}_find(t,e){var i=[];for(let s=0;s<t.childElementCount;s++){const n=t.childNodes.item(s);if(e.indexOf(n.nodeName)>=0)i.push(n);else{const t=this._find(n,e);if(t.length>0)for(let e=0;e<t.length;e++)i.push(t[e])}}return i}_getLegendSize(t,e){return Math.min(e,this.legend._getMaxSize(t))}_isHtmlText(){return this._options&&this._options.htmlText}static _contains(t,e){return!(!t||!e)&&(e.x>=t.left&&e.x<=t.right&&e.y>=t.top&&e.y<=t.bottom)}static _intersects(t,e){return!(t.left>e.right||t.right<e.left||t.top>e.bottom||t.bottom<e.top)}static _toOADate(t){return t.valueOf()}static _fromOADate(t){return new Date(t)}static _renderText(t,e,i,s,n,r,a,h,o){var l=t.measureString(e,r,a,h),_=i.x,c=i.y;switch(s){case 1:_-=.5*l.width;break;case 2:_-=l.width}switch(n){case 1:c+=.5*l.height;break;case 0:c+=l.height}var d=new Rect(_,c-l.height,l.width,l.height);if(o){if(o(d)){t.drawString(e,new Point(_,c),r,h);return d}return null}t.drawString(e,new Point(_,c),r,h);return d}static _renderRotatedText(t,e,i,s,n,r,a,h,o,l){var _=t.measureString(e,h,o,l),c=i.x,d=i.y;switch(s){case 1:c-=.5*_.width;break;case 2:c-=_.width}switch(n){case 1:d+=.5*_.height;break;case 0:d+=_.height}return t.drawStringRotated(e,new Point(c,d),r,a,h,l)}static _endsWith(t,e){if(t&&e){const i=t.length-e.length;return i>=0&&t.indexOf(e,i)===i}return!1}}FlexChartBase._WIDTH=300;FlexChartBase._HEIGHT=200;FlexChartBase._SELECTION_THRESHOLD=15;FlexChartBase._CSS_LEGEND=FlexChartClsNames.legend;FlexChartBase._CSS_HEADER=FlexChartClsNames.header;FlexChartBase._CSS_FOOTER=FlexChartClsNames.footer;FlexChartBase._CSS_TITLE=FlexChartClsNames.title;FlexChartBase._CSS_LABEL=FlexChartClsNames.label;FlexChartBase._CSS_SELECTION=ControlStateClsNames.selected;FlexChartBase._CSS_PLOT_AREA=FlexChartClsNames.plotArea;FlexChartBase._FG="#666";FlexChartBase._epoch=new Date(1899,11,30).getTime();FlexChartBase._msPerDay=864e5;export class _KeyWords{constructor(){this._keys={};this._keys.seriesName=null;this._keys.pointIndex=null;this._keys.x=null;this._keys.y=null;this._keys.value=null;this._keys.name=null}replace(t,e){return format(t,{},(t,i,s,n)=>this.getValue(i,e,s))}getValue(t,e,i){switch(t){case"seriesName":return e.series?e.series.name:"";case"pointIndex":return null!=e.pointIndex?e.pointIndex.toFixed():"";case"x":return i?Globalize.format(e.x,i):e._xfmt;case"y":return i?Globalize.format(e.y,i):e._yfmt;case"value":return i?Globalize.format(e.value,i):e._getValueFmt();case"name":return e.name}if(e.item){0==t.indexOf("item.")&&(t=t.substr(5));const s=e.item[t];if(!isUndefined(s))return i?Globalize.format(s,i):s}return""}}class ExportHelper{static downloadImage(t,e,i){var s=document.createElement("a"),n="image/"+i;if(navigator.msSaveOrOpenBlob){t=t.substring(t.indexOf(",")+1);let s,r,a,h=atob(t),o=[],l=512;for(s=0;s<h.length;s+=l){r=h.slice(s,s+l);const t=new Array(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);const e=new Uint8Array(t);o.push(e)}a=new Blob(o,{type:n});navigator.msSaveOrOpenBlob(a,`${e}.${i}`)}else{s.download=`${e}.${i}`;s.href=t;document.body.appendChild(s);s.addEventListener("click",t=>{removeChild(s)});s.click()}}static getDataUri(t,e,i){var s,n,r,a,h,o,l,_,c,d,u=document.createElement("div"),g=t.cloneNode(!0);let p=!1;if("svg"==t.tagName){n=(s=getElementRect(t.parentNode||t)).width||0;r=s.height||0;0==n&&(p=!0);a=t.viewBox.baseVal&&0!==t.viewBox.baseVal.width?t.viewBox.baseVal.width:n;h=t.viewBox.baseVal&&0!==t.viewBox.baseVal.height?t.viewBox.baseVal.height:r}else{n=(o=t.getBBox()).x+o.width;r=o.y+o.height;g.setAttribute("transform",g.getAttribute("transform").replace(/translate\(.*?\)/,""));a=n;h=r;(_=document.createElementNS("http://www.w3.org/2000/svg","svg")).appendChild(g);g=_}if(p){const t=e._renderHidden(),i=e._getHostComputedStyle();let s=0,o=0;if(i){s=e._parsePx(i.width);o=e._parsePx(i.height)}0==s&&(s=FlexChartBase._WIDTH);0==o&&(o=FlexChartBase._HEIGHT);a=n=s;h=r=o;g=t.cloneNode(!0)}g.setAttribute("version","1.1");g.setAttributeNS(ExportHelper.xmlns,"xmlns","http://www.w3.org/2000/svg");g.setAttributeNS(ExportHelper.xmlns,"xmlns:xlink","http://www.w3.org/1999/xlink");g.setAttribute("width",n);g.setAttribute("height",r);g.setAttribute("viewBox",`0 0 ${a} ${h}`);addClass(g,t.parentNode&&t.parentNode.getAttribute("class")||"");u.appendChild(g);l=ExportHelper.getStyles(t);l+=`.${FlexChartClsNames.hostElement}{margin:0px;padding:0px;border:none;width:${n}px;height:${r}px;}\n`;(c=document.createElement("style")).setAttribute("type","text/css");c.innerHTML=`<![CDATA[\n${l}\n]]>`;(d=document.createElementNS("http://www.w3.org/2000/svg","defs")).appendChild(c);g.insertBefore(d,g.firstChild);isIE()||g.querySelectorAll("foreignObject").forEach(t=>{if(g===t.parentNode)g.removeChild(t);else for(const e of t.children)e.setAttribute("xmlns","http://www.w3.org/1999/xhtml")});const f=e._currentRenderEngine.canvas;if(f){const t=document.createElementNS("http://www.w3.org/2000/svg","image");t.setAttribute("width",f.width);t.setAttribute("height",f.height);t.setAttribute("href",f.toDataURL());g.insertBefore(t,g.firstChild);e.invalidate()}ExportHelper.convertImagesToDataUrl(g,()=>{const t="data:image/svg+xml;base64,"+window.btoa(window.unescape(encodeURIComponent(ExportHelper.doctype+u.innerHTML)));i.call(null,t)})}static convertImagesToDataUrl(t,e){const i=t.querySelectorAll("image");if(0===i.length){e();return}const s=Array.from(i);Array.from(i).forEach(t=>{const i=new Image;i.onload=()=>{const n=document.createElement("canvas");n.width=+t.getAttribute("width");n.height=+t.getAttribute("height");const r=n.getContext("2d"),a=i.width/i.height;a<n.width/n.height?r.drawImage(i,0,0,i.width,i.height,.5*(n.width-a*n.height),0,a*n.height,n.height):r.drawImage(i,0,0,i.width,i.height,0,.5*(n.height-n.width/a),n.width,n.width/a);t.setAttribute("href",n.toDataURL());i.remove();s.splice(s.indexOf(t),1);0==s.length&&e()};i.src=t.getAttribute("href")})}static getDataUri2(t,e,i){var s,n,r,a,h,o,l,_=document.createElement("div"),c=ExportHelper.cloneWithComputedStyles(t);let d=!1;if("svg"==t.tagName){n=(s=getElementRect(t.parentNode||t)).width||0;r=s.height||0;0==n&&(d=!0);a=t.viewBox.baseVal&&0!==t.viewBox.baseVal.width?t.viewBox.baseVal.width:n;h=t.viewBox.baseVal&&0!==t.viewBox.baseVal.height?t.viewBox.baseVal.height:r}else{n=(o=t.getBBox()).x+o.width;r=o.y+o.height;c.setAttribute("transform",c.getAttribute("transform").replace(/translate\(.*?\)/,""));a=n;h=r;(l=document.createElementNS("http://www.w3.org/2000/svg","svg")).appendChild(c);c=l}if(d){const t=e._renderHidden(),i=e._getHostComputedStyle();let s=0,o=0;if(i){s=e._parsePx(i.width);o=e._parsePx(i.height)}0==s&&(s=FlexChartBase._WIDTH);0==o&&(o=FlexChartBase._HEIGHT);a=n=s;h=r=o;c=ExportHelper.cloneWithComputedStyles(t)}c.setAttribute("version","1.1");c.setAttributeNS(ExportHelper.xmlns,"xmlns","http://www.w3.org/2000/svg");c.setAttributeNS(ExportHelper.xmlns,"xmlns:xlink","http://www.w3.org/1999/xlink");c.setAttribute("width",n.toString());c.setAttribute("height",r.toString());c.setAttribute("viewBox",`0 0 ${a} ${h}`);_.appendChild(c);const u=e._currentRenderEngine.canvas;if(u){const t=document.createElementNS("http://www.w3.org/2000/svg","image");t.setAttribute("width",u.width);t.setAttribute("height",u.height);t.setAttribute("href",u.toDataURL());c.insertBefore(t,c.firstChild);e.invalidate()}ExportHelper.convertImagesToDataUrl(c,()=>{const t="data:image/svg+xml;base64,"+window.btoa(window.unescape(encodeURIComponent(ExportHelper.doctype+_.innerHTML)));i.call(null,t)})}static computeAttributes(t,e,i){const s=getComputedStyle(t);i.forEach(t=>{const i=s.getPropertyValue(t);i&&i.length>0&&e.setAttribute(t,i)})}static cloneWithComputedStyles(t){const e=t.cloneNode();Array.from(t.childNodes).forEach(t=>{const i=ExportHelper.cloneWithComputedStyles(t);1===t.nodeType&&("text"===t.nodeName?ExportHelper.computeAttributes(t,i,ExportHelper.textAttrs):"line"===t.nodeName&&ExportHelper.computeAttributes(t,i,ExportHelper.lineAttrs));e.appendChild(i)});return e}static getStyles(t){var e="",i=document.styleSheets;if(null==i||0===i.length)return null;[].forEach.call(i,i=>{var s;try{if(null==i.cssRules||0===i.cssRules.length)return!0}catch(t){if("SecurityError"==t.name){console.log("SecurityError. Can't read: "+i.href);return!0}}s=i.cssRules;[].forEach.call(s,i=>{var s,n=i.style;if(null==n)return!0;let r=i.selectorText;if(isIE()&&r){const t=r.match(/\[(.*?)\]/g);t&&t.forEach(t=>{r=r.replace(t,t.replace(":","\\:"))})}try{s=r=="."+FlexChartClsNames.hostElement||t.querySelector(r)}catch(t){console.warn(`Invalid CSS selector "${i.selectorText}"`,t)}s?e+=`${i.selectorText} { ${n.cssText} }\n`:i.cssText.match(/^@font-face/)&&(e+=i.cssText+"\n")})});const s=getComputedStyle(t),n=s?s.getPropertyValue("font"):null;n&&(e+=`.${FlexChartClsNames.hostElement}{font:${n}}\n`);return e}}ExportHelper.doctype='<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';ExportHelper.xmlns="http://www.w3.org/2000/xmlns/";ExportHelper.textAttrs=["font-family","font-size","font-style","font-weight","fill"];ExportHelper.lineAttrs=["stroke","stroke-width","stroke-dasharray"];export class ChartTooltip extends Tooltip{constructor(){super();this._content="<b>{seriesName}</b><br/>{x} {y}";this._threshold=15}get content(){return this._content}set content(t){t!=this._content&&(this._content=t)}get threshold(){return this._threshold}set threshold(t){t!=this._threshold&&(this._threshold=asNumber(t))}show(t,e,i){super.show(t,e,i);const s=ChartTooltip._eTip;s&&s.style&&(s.style.pointerEvents="none")}}export var ChartType;!function(t){t[t.Column=0]="Column";t[t.Bar=1]="Bar";t[t.Scatter=2]="Scatter";t[t.Line=3]="Line";t[t.LineSymbols=4]="LineSymbols";t[t.Area=5]="Area";t[t.Bubble=6]="Bubble";t[t.Candlestick=7]="Candlestick";t[t.HighLowOpenClose=8]="HighLowOpenClose";t[t.Spline=9]="Spline";t[t.SplineSymbols=10]="SplineSymbols";t[t.SplineArea=11]="SplineArea";t[t.Funnel=12]="Funnel";t[t.Step=13]="Step";t[t.StepSymbols=14]="StepSymbols";t[t.StepArea=15]="StepArea"}(ChartType||(ChartType={}));export var Stacking;!function(t){t[t.None=0]="None";t[t.Stacked=1]="Stacked";t[t.Stacked100pc=2]="Stacked100pc"}(Stacking||(Stacking={}));export class FlexChartCore extends FlexChartBase{constructor(t,e){super(t,null,!0);this._series=new ObservableArray;this._axes=new AxisCollection;this._pareas=new PlotAreaCollection;this._interpolateNulls=!1;this._legendToggle=!1;this._symbolSize=10;this._dataInfo=new _DataInfo;this.__barPlotter=null;this.__linePlotter=null;this.__areaPlotter=null;this.__bubblePlotter=null;this.__financePlotter=null;this.__funnelPlotter=null;this._plotters=[];this._rotated=!1;this._stacking=Stacking.None;this._xlabels=[];this._xvals=[];this._lblAreas=[];this._colRowLens=[];this._selectedEls=[];this._markers=[];this._bindingSeparator=",";this.seriesVisibilityChanged=new Event;this.applyTemplate(`${ControlClsNames.hostElement} ${FlexChartClsNames.hostElement}`,null,null);this._series.collectionChanged.addHandler(()=>{var t=this._series;for(let e=0;e<t.length;e++){const i=tryCast(t[e],SeriesBase);if(!i)throw"chartSeries array must contain SeriesBase objects.";i._chart=this;if(i.axisX&&null==i.axisX._chart){i.axisX._chart=this;this.axes.push(i.axisX)}if(i.axisY&&null==i.axisY._chart){i.axisY._chart=this;this.axes.push(i.axisY)}}this.invalidate()});this._currentRenderEngine=new _SvgRenderEngine(this.hostElement);this._hitTester=new _HitTester(this);this._legend=new Legend(this);this._tooltip=new ChartTooltip;this._tooltip.showDelay=0;this._lbl=new DataLabel;this._lbl._chart=this;this._initAxes();this._axes.collectionChanged.addHandler(()=>{var t=this._axes;for(let e=0;e<t.length;e++){const i=tryCast(t[e],Axis);if(!i)throw"axes array must contain Axis objects.";i._chart=this}this.invalidate()});this._pareas.collectionChanged.addHandler(()=>{var t=this._pareas;for(let e=0;e<t.length;e++){const i=tryCast(t[e],PlotArea);if(!i)throw"plotAreas array must contain PlotArea objects.";i._chart=this}this.invalidate()});this._keywords=new _KeyWords;this.addEventListener(this.hostElement,"click",t=>{var e=this._tooltip;e.content&&this.isTouching&&this._updateTooltip(e,t)});this.addEventListener(this.hostElement,"mousemove",t=>{var e=this._tooltip;e.content&&!this.isTouching&&this._updateTooltip(e,t)});this.addEventListener(this.hostElement,"mouseleave",t=>{this._hideToolTip()});this.addEventListener(this.hostElement,"click",t=>{var e=this._hitTestData(t);if(this.selectionMode!=SelectionMode.None){let i=FlexChartCore._SELECTION_THRESHOLD;this.tooltip&&this.tooltip.threshold&&(i=this.tooltip.threshold);e.distance<=i&&e.series?this._select(e.series,e.pointIndex):this.selectionMode==SelectionMode.Series&&(e=this.hitTest(t)).chartElement==ChartElement.Legend&&e.series?this._select(e.series,null):this._select(null,null)}if(!0===this.legendToggle&&(e=this.hitTest(t)).chartElement==ChartElement.Legend&&e.series){e.series.visibility==SeriesVisibility.Legend?e.series.visibility=SeriesVisibility.Visible:e.series.visibility==SeriesVisibility.Visible&&(e.series.visibility=SeriesVisibility.Legend);this.focus()}});this.deferUpdate(()=>this.initialize(e))}initialize(t){if(t&&t.renderEngine){const t=asType(this._currentRenderEngine,_SvgRenderEngine,!0);t&&t.detach();this._currentRenderEngine=null}super.initialize(t)}_initAxes(){this._axisX=new Axis(Position.Bottom);this._axisY=new Axis(Position.Left);this._axisX.majorGrid=!1;this._axisX.name="axisX";this._axisY.majorGrid=!0;this._axisY.majorTickMarks=TickMark.None;this._axisY.name="axisY";this._axisX._chart=this;this._axisY._chart=this;this._axes.push(this._axisX);this._axes.push(this._axisY)}get series(){return this._series}get axes(){return this._axes}get axisX(){return this._axisX}set axisX(t){if(t!=this._axisX){this._axisX=asType(t,Axis);const e=this._axisX;this.beginUpdate();if(e){void 0===e.majorGrid&&(e.majorGrid=!1);void 0===e.name&&(e.name="axisX");e._axisType=AxisType.X;null!=e.position&&e.position!=Position.Left&&e.position!=Position.Right&&e.position!=Position.BottomLeft&&e.position!=Position.BottomRight&&e.position!=Position.TopLeft&&e.position!=Position.TopRight&&e.position!=Position.LeftTop&&e.position!=Position.LeftBottom&&e.position!=Position.RightTop&&e.position!=Position.RightBottom||(e.position=Position.Bottom);e._chart=this}this.endUpdate()}}get axisY(){return this._axisY}set axisY(t){if(t!=this._axisY){this._axisY=asType(t,Axis);const e=this._axisY;this.beginUpdate();if(e){void 0===e.majorGrid&&(e.majorGrid=!0);void 0===e.name&&(e.name="axisY");void 0===e.majorTickMarks&&(e.majorTickMarks=TickMark.None);e._axisType=AxisType.Y;null!=e.position&&e.position!=Position.Top&&e.position!=Position.Bottom&&e.position!=Position.BottomLeft&&e.position!=Position.BottomRight&&e.position!=Position.TopLeft&&e.position!=Position.TopRight&&e.position!=Position.LeftTop&&e.position!=Position.LeftBottom&&e.position!=Position.RightTop&&e.position!=Position.RightBottom||(e.position=Position.Left);e._chart=this}this.endUpdate()}}get plotAreas(){return this._pareas}get binding(){return this._binding}set binding(t){if(t!=this._binding){this._binding=asString(t,!0);this.invalidate()}}get bindingX(){return this._bindingX}set bindingX(t){if(t!=this._bindingX){this._bindingX=asString(t,!0);this._bindChart()}}get symbolSize(){return this._symbolSize}set symbolSize(t){if(t!=this._symbolSize){this._symbolSize=asNumber(t,!1,!0);this.invalidate()}}get interpolateNulls(){return this._interpolateNulls}set interpolateNulls(t){if(t!=this._interpolateNulls){this._interpolateNulls=asBoolean(t);this.invalidate()}}get legendToggle(){return this._legendToggle}set legendToggle(t){t!=this._legendToggle&&(this._legendToggle=asBoolean(t))}get tooltip(){return this._tooltip}get dataLabel(){return this._lbl}set dataLabel(t){if(t!=this._lbl){this._lbl=asType(t,DataLabel);this._lbl&&(this._lbl._chart=this)}}get selection(){return this._selection}set selection(t){if(t!=this._selection){this._selection=asType(t,SeriesBase,!0);this.invalidate()}}get renderEngine(){return this._currentRenderEngine}set renderEngine(t){if(t!=this._currentRenderEngine){const e=asType(this._currentRenderEngine,_SvgRenderEngine,!0);e&&e.detach();this._currentRenderEngine=t;const i=asType(this._currentRenderEngine,_SvgRenderEngine,!0);i&&i.attach(this.hostElement);this.refresh()}}onSeriesVisibilityChanged(t){this.seriesVisibilityChanged.raise(this,t)}hitTest(t,e){var i=this._toControl(t,e),s=new HitTestInfo(this,i),n=null;if(FlexChartCore._contains(this._rectHeader,i))s._chartElement=ChartElement.Header;else if(FlexChartCore._contains(this._rectFooter,i))s._chartElement=ChartElement.Footer;else if(FlexChartCore._contains(this._rectLegend,i)){s._chartElement=ChartElement.Legend;const t=i.clone();if(this.legend.scrollbar&&this._legendHost){const e=this._legendHost.querySelector(".wj-legend-scrollable");if(e){if(this.rightToLeft&&!this.legend.isVertical){const i=e.scrollWidth-e.clientWidth-1;t.x+=i+e.scrollLeft}else t.x+=e.scrollLeft;t.y+=e.scrollTop}}null!==(n=this.legend._hitTest(t))&&n>=0&&n<this.series.length&&s._setData(this.series[n])}else if(FlexChartCore._contains(this._rectChart,i)){const e=this._hitTestLabels(i);if(e){s._chartElement=ChartElement.DataLabel;s._dist=0;s._setDataPoint(e.tag)}else{const e=this._hitTester.hitTest(i);let n=null,r=null;for(let e=this.series.length-1;e>=0;e--)if(this.series[e].hitTest!==Series.prototype.hitTest){const i=this.series[e].hitTest(t);if(i){if(!n||i.distance<n.distance){n=i;r=e}if(0===i.distance)break}}if(e&&e.area)if(n&&n.distance<e.distance)s=n;else if(n&&n.distance==e.distance&&r>e.area.tag.seriesIndex)s=n;else{s._setDataPoint(e.area.tag);s._dist=e.distance}else n&&(s=n);let a=!1;this.axes.some(t=>{if(FlexChartCore._contains(t._axrect,i)){let e;if(t.axisType===AxisType.X){s._chartElement=ChartElement.AxisX;e=t._hitTest(i)}else{s._chartElement=ChartElement.AxisY;e=t._hitTest(i)}e?s._setName(e.label):s._setName("");a=!0;return!0}return!1});a||(FlexChartCore._contains(this._plotRect,i)?s._chartElement=ChartElement.PlotArea:FlexChartCore._contains(this._rectChart,i)&&(s._chartElement=ChartElement.ChartArea))}}else s._chartElement=ChartElement.None;return s}pointToData(t,e){isNumber(t)&&isNumber(e)&&(t=new Point(t,e));if(t instanceof MouseEvent){t=new Point(t.pageX,t.pageY);t=this._toControl(t)}else t=t.clone();t.x=this.axisX.convertBack(t.x);t.y=this.axisY.convertBack(t.y);return t}dataToPoint(t,e){isNumber(t)&&isNumber(e)&&(t=new Point(t,e));asType(t,Point);var i=t.clone();i.x=this.axisX.convert(i.x);i.y=this.axisY.convert(i.y);return i}dispose(){this._markers.forEach(t=>{t.remove()});this._markers=[];super.dispose()}_copy(t,e){if("series"==t){this.series.clear();const t=asArray(e);for(let e=0;e<t.length;e++){const i=this._createSeries();copy(i,t[e]);this.series.push(i)}return!0}return!1}_createSeries(){return new Series}_clearCachedValues(){for(let t=0;t<this._series.length;t++){const e=this._series[t];null==e.itemsSource&&e._clearValues()}}_performBind(){this._xDataType=null;this._xlabels.splice(0);this._xvals.splice(0);if(this._cv){const t=this._cv.items;if(t){const e=t.length,i=this.bindingX?new Binding(this.bindingX):null;for(let s=0;s<e;s++){const e=t[s];if(i){const t=i.getValue(e);if(isNumber(t)){this._xvals.push(asNumber(t));this._xDataType=DataType.Number}else if(isDate(t)){this._xvals.push(asDate(t).valueOf());this._xDataType=DataType.Date}this._xlabels.push(t)}}this._xvals.length==e?this._xlabels.splice(0):this._xvals.splice(0)}}}_hitTestSeries(t,e){var i=this._toControl(t),s=new HitTestInfo(this,i),n=this._hitTester.hitTestSeries(i,e);if(n&&n.area){s._setDataPoint(n.area.tag);s._chartElement=ChartElement.PlotArea;s._dist=n.distance}return s}_hitTestData(t){var e=this._toControl(t),i=new HitTestInfo(this,e),s=this._hitTester.hitTest(e,!0);if(s&&s.area){i._setDataPoint(s.area.tag);i._dist=s.distance}return i}_hitTestLabels(t){var e=null,i=this._lblAreas.length;for(let s=0;s<i;s++)if(this._lblAreas[s].contains(t)){e=this._lblAreas[s];break}return e}static _dist2(t,e){var i=t.x-e.x,s=t.y-e.y;return i*i+s*s}static _dist(t,e,i){return Math.sqrt(FlexChartCore._distToSegmentSquared(t,e,i))}static _distToSegmentSquared(t,e,i){var s=FlexChartCore._dist2(e,i);if(0==s)return FlexChartCore._dist2(t,e);var n=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/s;return n<0?FlexChartCore._dist2(t,e):n>1?FlexChartCore._dist2(t,i):FlexChartCore._dist2(t,new Point(e.x+n*(i.x-e.x),e.y+n*(i.y-e.y)))}_isRotated(){return this._getChartType()==ChartType.Bar?!this._rotated:this._rotated}_getChartType(){return null}_prepareRender(){this._hitTester.clear()}_renderChart(t,e,i){var s=this._rectChart.clone(),n=new Size(s.width,s.height);e.width,e.height;this._selectedEls.length=0;var r=this._getPlotter(null);r.stacking=this._stacking;if(this._curPlotter!=r){this._curPlotter&&this._curPlotter.unload();this._curPlotter=r}r.load();var a=this._isRotated();this._dataInfo.analyse(this._series,a,r.stacking,this._xvals.length>0?this._xvals:null,this.axisX._getLogBase()>0,this.axisY._getLogBase()>0);var h=r.adjustLimits(this._dataInfo,e.clone());if(a){let t=this._dataInfo.getDataTypeX();t||(t=this._xDataType);this.axisX._updateActualLimits(this._dataInfo.getDataTypeY(),h.left,h.right);this.axisY._updateActualLimits(t,h.top,h.bottom,this._xlabels,this._xvals)}else{let t=this._dataInfo.getDataTypeX();t||(t=this._xDataType);this.axisX._updateActualLimits(t,h.left,h.right,this._xlabels,this._xvals);this.axisY._updateActualLimits(this._dataInfo.getDataTypeY(),h.top,h.bottom)}var o=this._getAxes();this._updateAuxAxes(o,a);this._layout(e,n,t);t.startGroup(FlexChartCore._CSS_PLOT_AREA);t.fill="transparent";t.stroke=null;if(this.plotAreas.length>0)for(let e=0;e<this.plotAreas.length;e++){this.plotAreas[e]._render(t)}else{const e=this._plotRect;t.drawRect(e.left,e.top,e.width,e.height)}t.endGroup();var l=this._series.length;this._clearPlotters();var _,c,d,u={};for(let t=0;t<l;t++){const e=this._series[t],i=e.visibility;if((i==SeriesVisibility.Visible||i==SeriesVisibility.Plot)&&e.getValues(0)){const t=e._getAxisY(),i=this._getPlotter(e);if(!t||t==this.axisY||i instanceof _BarPlotter)i.seriesCount++;else{const e=t._uniqueId;u[e]?u[e].count+=1:u[e]={count:1,index:0}}}}this.onRendering(new RenderEventArgs(t));if(this._getChartType()!==ChartType.Funnel)for(let e=0;e<o.length;e++){const s=o[e];_=s.axisType==AxisType.X?t.startGroup(FlexChartCore._CSS_AXIS_X,this._chartRectId):t.startGroup(FlexChartCore._CSS_AXIS_Y,this._chartRectId);s._hostElement=i?_:s._hostElement;s._render(t);t.endGroup()}t.startGroup(SeriesClsNames.group);this._plotrectId="plotRect"+(1e6*Math.random()).toFixed();t.addClipRect(this._plotRect,this._plotrectId);t.options=this._options&&this._options.spline?{spline:this._options.spline.approximation}:null;for(let e=0;e<l;e++){const s=this._series[e];s._pointIndexes=[];const n=this._getPlotter(s);s._plotter=n;const r=t.startGroup(s.cssClass,n.clipping?this._plotrectId:null);s._hostElement=i?r:s._hostElement;const a=s.visibility;let h=s.axisX,o=s.axisY;h||(h=this.axisX);o||(o=this.axisY);if(a==SeriesVisibility.Visible||a==SeriesVisibility.Plot){const e=u[o._uniqueId];if(!e||n instanceof _BarPlotter){c=n.seriesIndex;d=n.seriesCount;n.seriesIndex++;s.onRendering(t,c,d)||n.plotSeries(t,h,o,s,this,c,d)}else{c=e.index;d=e.count;e.index++;s.onRendering(t,c,d)||n.plotSeries(t,h,o,s,this,c,d)}s.onRendered(t)}t.endGroup()}t.endGroup();this._lblAreas=[];this.dataLabel.content&&this.dataLabel.position!=LabelPosition.None&&this._renderLabels(t);this._highlightCurrent();this.onRendered(new RenderEventArgs(t))}_getDesiredLegendSize(t,e,i,s){const n=new Size,r=this.series,a=r.length;this.legend.scrollbar;let h=0,o=0;this._colRowLens=[];for(let l=0;l<a;l++){let _=l;this._legendReversed()&&(_=a-l-1);const c=tryCast(r[_],SeriesBase),d=c.visibility;if(!c.name||d==SeriesVisibility.Hidden||d==SeriesVisibility.Plot)continue;const u=c.legendItemLength();for(let r=0;r<u;r++){const a=c.measureLegendItem(t,r);if(e){if(h+a.height>s&&!this.legend.scrollbar){n.height=s;this._colRowLens.push(o);o=0;h=0}o<a.width&&(o=a.width);h+=a.height}else{if(o+a.width>i&&!this.legend.scrollbar){n.width=i;this._colRowLens.push(h);h=0;o=0}h<a.height&&(h=a.height);o+=a.width}}}if(e){n.height<h&&(n.height=h);this._colRowLens.push(o);n.width=this._colRowLens.reduce((t,e)=>t+e,0)}else{n.width<o&&(n.width=o);this._colRowLens.push(h);n.height=this._colRowLens.reduce((t,e)=>t+e,0)}return n}_renderLegend(t,e,i,s,n,r){var a,h=this.series,o=h.length,l=e.clone(),_=0;if(this._legendReversed()){for(let c=o-1;c>=0;c--){a=tryCast(h[c],SeriesBase);_=this._renderLegendElements(t,a,e,l,i,s,n,r,_)}i.reverse()}else for(let c=0;c<o;c++){a=tryCast(h[c],SeriesBase);_=this._renderLegendElements(t,a,e,l,i,s,n,r,_)}}_legendReversed(){if(null==this._legend.reverse||null===this._legend.reverse){let t=!1;const e=this._getChartType();(e===ChartType.Bar||e===ChartType.Column&&this._rotated)&&(this._stacking!==Stacking.None||this.axisY.reversed||(t=!0));return t}return this._legend.reverse}_renderLegendElements(t,e,i,s,n,r,a,h,o){var l=new Rect(i.x,i.y,a,h),_=o;if(!e)return _;var c=e.visibility;if(!e.name||c==SeriesVisibility.Hidden||c==SeriesVisibility.Plot){e._legendElement=null;n.push(null);return _}var d=e.legendItemLength(),u=t.startGroup(e.cssClass);if(c==SeriesVisibility.Legend){u.setAttribute("opacity","0.5");e._legendElement=u}else c==SeriesVisibility.Visible?e._legendElement=u:e._legendElement=null;for(let a=0;a<d;a++){const h=e.measureLegendItem(t,a);if(r){if(s.y+h.height>l.bottom+1&&!this.legend.scrollbar){s.x+=this._colRowLens[_];_++;s.y=i.y}}else if(s.x+h.width>l.right+1&&!this.legend.scrollbar){s.y+=this._colRowLens[_];_++;s.x=i.x}const o=new Rect(s.x,s.y,h.width,h.height);c!=SeriesVisibility.Legend&&c!=SeriesVisibility.Visible||e.drawLegendItem(t,o,a);n.push(o);r?s.y+=h.height:s.x+=h.width}t.endGroup();return _}_renderLabels(t){var e=this.series,i=e.length;t.stroke="null";t.fill="transparent";t.strokeWidth=1;var s=FlexChartCore._CSS_DATA_LABELS;t.startGroup(s);for(let s=0;s<i;s++){const i=e[s],n=this._hitTester._map[s];n&&i._renderLabels(t,n,this,this._lblAreas)}t.endGroup()}_getAxes(){var t=[this.axisX,this.axisY],e=this.series.length;for(let i=0;i<e;i++){const e=this.series[i],s=e.axisX;s&&-1===t.indexOf(s)&&t.push(s);const n=e.axisY;n&&-1===t.indexOf(n)&&t.push(n)}return t}_clearPlotters(){var t=this._plotters.length;for(let e=0;e<t;e++)this._plotters[e].clear()}_initPlotter(t){t.chart=this;t.dataInfo=this._dataInfo;t.hitTester=this._hitTester;this._plotters.push(t)}get _barPlotter(){if(null===this.__barPlotter){this.__barPlotter=new _BarPlotter;this._initPlotter(this.__barPlotter)}return this.__barPlotter}get _linePlotter(){if(null===this.__linePlotter){this.__linePlotter=new _LinePlotter;this._initPlotter(this.__linePlotter)}return this.__linePlotter}get _areaPlotter(){if(null===this.__areaPlotter){this.__areaPlotter=new _AreaPlotter;this._initPlotter(this.__areaPlotter)}return this.__areaPlotter}get _bubblePlotter(){if(null===this.__bubblePlotter){this.__bubblePlotter=new _BubblePlotter;this._initPlotter(this.__bubblePlotter)}return this.__bubblePlotter}get _financePlotter(){if(null===this.__financePlotter){this.__financePlotter=new _FinancePlotter;this._initPlotter(this.__financePlotter)}return this.__financePlotter}get _funnelPlotter(){if(null===this.__funnelPlotter){this.__funnelPlotter=new _FunnelPlotter;this._initPlotter(this.__funnelPlotter)}return this.__funnelPlotter}_getPlotter(t){var e,i=this._getChartType(),s=!1;if(t){const e=t._getChartType();if(null!=e&&e!=i){i=e;s=!0}}switch(i){case ChartType.Column:this._barPlotter.isVolume=!1;this._barPlotter.width=.7;e=this._barPlotter;break;case ChartType.Bar:this._barPlotter.rotated=!this._rotated;this._barPlotter.isVolume=!1;this._barPlotter.width=.7;e=this._barPlotter;break;case ChartType.Line:this._linePlotter.hasSymbols=!1;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.Scatter:this._linePlotter.hasSymbols=!0;this._linePlotter.hasLines=!1;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.LineSymbols:this._linePlotter.hasSymbols=!0;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.Area:this._areaPlotter.isSpline=!1;this._areaPlotter.isStep=!1;e=this._areaPlotter;break;case ChartType.Bubble:e=this._bubblePlotter;break;case ChartType.Candlestick:{const t=this._financePlotter;t.isCandle=!0;t.isEqui=!1;t.isArms=!1;t.isVolume=!1;e=t;break}case ChartType.HighLowOpenClose:{const t=this._financePlotter;t.isCandle=!1;t.isEqui=!1;t.isArms=!1;t.isVolume=!1;e=t;break}case ChartType.Spline:this._linePlotter.hasSymbols=!1;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!0;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.SplineSymbols:this._linePlotter.hasSymbols=!0;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!0;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.SplineArea:this._areaPlotter.isSpline=!0;this._areaPlotter.isStep=!1;e=this._areaPlotter;break;case ChartType.Funnel:e=this._funnelPlotter;break;case ChartType.Step:this._linePlotter.hasSymbols=!1;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!0;e=this._linePlotter;break;case ChartType.StepSymbols:this._linePlotter.hasSymbols=!0;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!0;e=this._linePlotter;break;case ChartType.StepArea:this._areaPlotter.isSpline=!1;this._areaPlotter.isStep=!0;e=this._areaPlotter;break;default:throw"Invalid chart type."}e.rotated=this._rotated;i==ChartType.Bar&&(e.rotated=!e.rotated);s&&(e.rotated=this._isRotated());return e}_layout(t,e,i){this.plotAreas.length>0?this._layoutMultiple(t,e,i):this._layoutSingle(t,e,i)}_layoutSingle(t,e,i){var s=t.width,n=t.height,r=new Size(s,.75*n),a=new Size(n,.75*s),h=0,o=0,l=s,_=n,c=0,d=0,u=s,g=n;if(this.dataLabel.position===LabelPosition.Top?this.dataLabel.content:null){o=i.measureString(this.dataLabel.content,DataLabelClsNames.label).height}var p=this._getAxes(),f=this.axisY._getHeight(i,n);for(let t=0;t<p.length;t++){const e=p[t],m=e.origin,x=e._getPosition();if(e.axisType==AxisType.X){let t=e._getHeight(i,Math.max(10,s-f));t>r.height&&(t=r.height);e._desiredSize=new Size(r.width,t);e._hasOrigin=isNumber(m)&&m>this.axisY._getMinNum()&&m<this.axisY._getMaxNum();const n=e._hasOrigin,a=Math.min(.25*s,e._annoSize.width);if(x==Position.Bottom){h=Math.max(h,.5*a);l=Math.min(l,s-.5*a);if(n){const e=this._convertY(m,d,g);g-=Math.max(0,e+t-g)}else g-=t}else if(x==Position.Top){h=Math.max(h,.5*a);l=Math.min(l,s-.5*a);if(n){const e=this._convertY(m,d,g);d+=Math.max(0,d-(e-t))}else d+=t}}else if(e.axisType==AxisType.Y){let t=e===this.axisX?f:e._getHeight(i,n);t>a.height&&(t=a.height);e._desiredSize=new Size(a.width,t);e._hasOrigin=isNumber(m)&&m>this.axisX._getMinNum()&&m<this.axisX._getMaxNum();const s=e._hasOrigin;if(x==Position.Left){if(e._actualAngle<0)_=Math.min(_,n-e._annoSize.height);else if(e._actualAngle>0)o=Math.max(o,e._annoSize.height);else{o=Math.max(o,e._annoSize.height);_=Math.min(_,n-e._annoSize.height)}if(s){const e=this._convertX(m,c,u);c+=Math.max(0,c-(e-t))}else c+=t}else if(x==Position.Right){if(e._actualAngle>0)_=Math.min(_,n-e._annoSize.height);else if(e._actualAngle<0)o=Math.max(o,e._annoSize.height);else{o=Math.max(o,e._annoSize.height);_=Math.min(_,n-e._annoSize.height)}if(s){const e=this._convertX(m,c,u);u-=Math.max(0,e+t-u)}else u-=t}}}var m,x,b=this._parseMargin(this.plotMargin);h=c=isNaN(b.left)?Math.max(h,c)+t.left:b.left;l=u=isNaN(b.right)?Math.min(l,u)+t.left:e.width-b.right;o=d=isNaN(b.top)?Math.max(o,d)+t.top:b.top;_=g=isNaN(b.bottom)?Math.min(_,g)+t.top:e.height-b.bottom;s=Math.max(1,l-h);n=Math.max(1,_-o);this._plotRect=new Rect(h,o,s,n);_<=o&&(g=d+1);i.stroke=null;for(let t=0;t<p.length;t++){const e=p[t],i=e.origin,r=e._getPosition();if(e.axisType==AxisType.X){if(e._hasOrigin){const t=this._convertY(i,this._plotRect.top,this._plotRect.bottom);if(r==Position.Bottom){m=new Rect(h,t,s,e._desiredSize.height);g+=Math.max(0,m.bottom-this._plotRect.bottom)}else if(r==Position.Top){m=new Rect(h,t-e._desiredSize.height,s,e._desiredSize.height);d-=Math.max(0,this._plotRect.top-m.top)}else m=new Rect(h,t,s,1)}else if(r==Position.Bottom){m=new Rect(h,g,s,e._desiredSize.height);g+=e._desiredSize.height}else if(r==Position.Top){m=new Rect(h,d-e._desiredSize.height,s,e._desiredSize.height);d-=e._desiredSize.height}else m=new Rect(h,d,s,1);e._layout(m,this._plotRect)}else if(e.axisType==AxisType.Y){if(e._hasOrigin){const t=this._convertX(i,this._plotRect.left,this._plotRect.right);if(r==Position.Left){x=new Rect(t-e._desiredSize.height,o,n,e._desiredSize.height);c-=e._desiredSize.height}else if(r==Position.Right){x=new Rect(t,o,n,e._desiredSize.height);u+=e._desiredSize.height}else x=new Rect(t,o,n,1)}else if(r==Position.Left){x=new Rect(c-e._desiredSize.height,o,n,e._desiredSize.height);c-=e._desiredSize.height}else if(r==Position.Right){x=new Rect(u,o,n,e._desiredSize.height);u+=e._desiredSize.height}else x=new Rect(c,o,n,1);e._layout(x,this._plotRect)}}}_layoutMultiple(t,e,i){var s=t.width,n=t.height,r=[],a=[],h=this._getAxes(),o=h.length;for(let t=0;t<o;t++){const e=h[t];e._plotrect=null;if(e.axisType==AxisType.X){const t=e.plotArea?e.plotArea.column:0;for(;r.length<=t;)r.push(new _AreaDef);r[t].axes.push(e)}else if(e.axisType==AxisType.Y){const t=e.plotArea?e.plotArea.row:0;for(;a.length<=t;)a.push(new _AreaDef);a[t].axes.push(e)}}var l=r.length,_=a.length,c=new Size(s,.3*n),d=new Size(n,.3*s),u=0,g=0,p=s,f=n;for(let t=0;t<l;t++){const e=r[t];e.right=s;e.bottom=n;for(let r=0;r<e.axes.length;r++){const a=e.axes[r];let h=a._getHeight(i,a.axisType==AxisType.X?s:n);h>c.height&&(h=c.height);const o=new Size(c.width,h);a._desiredSize=o;0==t&&(e.left=Math.max(e.left,.5*a._annoSize.width));t==l-1&&(e.right=Math.min(e.right,s-.5*a._annoSize.width));const _=a._getPosition();_==Position.Bottom?e.bottom-=o.height:_==Position.Top&&(e.top+=o.height)}}for(let t=0;t<_;t++){const e=a[t];e.right=s;e.bottom=n;for(let r=0;r<e.axes.length;r++){const a=e.axes[r],h=new Size(d.width,a._getHeight(i,a.axisType==AxisType.X?s:n));h.height>d.height&&(h.height=d.height);a._desiredSize=h;0==t&&(e.top=Math.max(e.top,.5*a._annoSize.width));t==_-1&&(e.bottom=Math.min(e.bottom,n-.5*a._annoSize.width));const o=a._getPosition();o==Position.Left?e.left+=h.height:o==Position.Right&&(e.right-=h.height)}}var m=0,x=0,b=s,y=n;for(let t=0;t<l;t++){const e=r[t];m=Math.max(m,e.left);x=Math.max(x,e.top);b=Math.min(b,e.right);y=Math.min(y,e.bottom)}for(let t=0;t<_;t++){const e=a[t];m=Math.max(m,e.left);x=Math.max(x,e.top);b=Math.min(b,e.right);y=Math.min(y,e.bottom)}m=u=Math.max(u,m);b=p=Math.min(p,b);x=g=Math.max(g,x);y=f=Math.min(f,y);this._plotRect=new Rect(u,g,p-u,f-g);var S,v=this._plotRect.clone(),w=u,C=this.plotAreas._calculateWidths(this._plotRect.width,l);for(let t=0;t<l;t++){y=f;x=g;const e=r[t],i=C[t];for(let t=0;t<e.axes.length;t++){const s=e.axes[t],n=s._getPosition(),r=new Rect(w,v.top,i,v.height);if(n==Position.Bottom){S=new Rect(w,y,i,s._desiredSize.height);y+=s._desiredSize.height}else if(n==Position.Top){S=new Rect(w,x-s._desiredSize.height,i,s._desiredSize.height);x-=s._desiredSize.height}s._layout(S,r)}for(let e=0;e<this.plotAreas.length;e++){const s=this.plotAreas[e];s.column==t&&s._setPlotX(w,i)}w+=i}var T,M=g,P=this.plotAreas._calculateHeights(this._plotRect.height,_);for(let t=0;t<_;t++){m=u;b=p;const e=a[t],i=P[t];for(let t=0;t<e.axes.length;t++){const s=e.axes[t],n=s._getPosition(),r=new Rect(v.left,M,v.width,i);if(s._plotrect){r.left=s._plotrect.left;r.width=s._plotrect.width}else C&&C.length>0&&(r.width=C[0]);if(n==Position.Left){T=new Rect(m-s._desiredSize.height,M,i,s._desiredSize.height);m-=s._desiredSize.height}else if(n==Position.Right){T=new Rect(b,M,i,s._desiredSize.height);b+=s._desiredSize.height}s._layout(T,r)}for(let e=0;e<this.plotAreas.length;e++){const s=this.plotAreas[e];s.row==t&&s._setPlotY(M,i)}M+=i}}_convertX(t,e,i){var s=this.axisX;return s.reversed?i-(i-e)*(t-s._getMinNum())/(s._getMaxNum()-s._getMinNum()):e+(i-e)*(t-s._getMinNum())/(s._getMaxNum()-s._getMinNum())}_convertY(t,e,i){var s=this.axisY;return s.reversed?e+(i-e)*(t-s._getMinNum())/(s._getMaxNum()-s._getMinNum()):i-(i-e)*(t-s._getMinNum())/(s._getMaxNum()-s._getMinNum())}_getLabelContent(t,e){return t.chartElement!==ChartElement.AxisX&&t.chartElement!==ChartElement.AxisY||!t.name?isString(e)?this._keywords.replace(e,t):isFunction(e)?e(t):null:t.name}_select(t,e){const i=this.selectionMode;var s=!1;(t!=this._selection||i==SelectionMode.Point&&e!=this._selectionIndex)&&(s=!0);this._selection&&this._highlight(this._selection,!1,this._selectionIndex);this._selection=t;this._selectionIndex=e;this._selection&&this._highlight(this._selection,!0,this._selectionIndex);if(i==SelectionMode.Point){const i=t?t.collectionView:this._cv;if(i){this._notifyCurrentChanged=!1;i.moveCurrentToPosition(t?e:-1);this._notifyCurrentChanged=!0}}s&&this.onSelectionChanged()}_highlightCurrent(){if(this.selectionMode!=SelectionMode.None){const t=this._selection;let e=-1;if(t){let i=t.collectionView;i||(i=this._cv);i&&(e=i.currentPosition);this._highlight(t,!0,e)}}}_highlight(t,e,i){t=asType(t,SeriesBase,!0);if(this.selectionMode==SelectionMode.Series){const i=this.series.indexOf(t),s=t.hostElement;e?s.parentNode.appendChild(s):s.parentNode.insertBefore(s,s.parentNode.childNodes.item(i));const n=this._find(s,["rect","ellipse","polyline","polygon","line","path"]);this._highlightItems(n,FlexChartCore._CSS_SELECTION,e);t.legendElement&&this._highlightItems(this._find(t.legendElement,["rect","ellipse","line"]),FlexChartCore._CSS_SELECTION,e)}else if(this.selectionMode==SelectionMode.Point){const s=this.series.indexOf(t),n=t.hostElement;if(e){n.parentNode.appendChild(n);const s=t.getPlotElement(i);if(s)if(s instanceof SVGElement){if("g"!=s.nodeName){this._highlightItems([s],FlexChartCore._CSS_SELECTION,e);this._selectedEls.push(s)}const t=this._find(s,["line","rect","ellipse","path","polygon"]);if(t.length>0){this._highlightItems(t,FlexChartCore._CSS_SELECTION,e);for(let e=0;e<t.length;e++)this._selectedEls.push(t[e])}}else if(Array.isArray(s)){this._highlightItems(s,FlexChartCore._CSS_SELECTION,e);for(let t=0;t<s.length;t++)this._selectedEls.push(s[t])}}else{n.parentNode.insertBefore(n,n.parentNode.childNodes.item(s));if(this._selectedEls.length>0){this._highlightItems(this._selectedEls,FlexChartCore._CSS_SELECTION,e);this._selectedEls.length=0}}}}_updateTooltip(t,e){const i=this.hitTest(e);let s;if(i.distance<=t.threshold){let e=t.content;if(i.series){const t=i.series.tooltipContent;(t||""===t)&&(e=t)}s=this._getLabelContent(i,e)}this._hideToolTip();s&&this._showToolTip(s,new Rect(e.clientX,e.clientY,5,5))}_updateAuxAxes(t,e){let i,s;for(let n=2;n<t.length;n++){const r=t[n];r._chart=this;const a=[];for(let t=0;t<this.series.length;t++){const e=this.series[t];e.axisX!=r&&e.axisY!=r||a.push(e)}for(let t=0;t<a.length;t++){const n=a[t].getDataRect()||a[t]._getDataRect();if(n)if(r.axisType==AxisType.X&&!e||r.axisType==AxisType.Y&&e){(void 0===i||n.left<i)&&(i=n.left);(void 0===s||n.right>s)&&(s=n.right)}else{(void 0===i||n.top<i)&&(i=n.top);(void 0===s||n.bottom>s)&&(s=n.bottom)}}let h=a[0].getDataType(0);null==h&&(h=DataType.Number);t[n]._updateActualLimits(h,i,s)}}}FlexChartCore._CSS_AXIS_X=AxisClsNames.axisX;FlexChartCore._CSS_AXIS_Y=AxisClsNames.axisY;FlexChartCore._CSS_LINE=AxisClsNames.line;FlexChartCore._CSS_GRIDLINE=AxisClsNames.gridline;FlexChartCore._CSS_TICK=AxisClsNames.tick;FlexChartCore._CSS_GRIDLINE_MINOR=AxisClsNames.gridlineMinor;FlexChartCore._CSS_TICK_MINOR=AxisClsNames.tickMinor;FlexChartCore._CSS_DATA_LABELS=DataLabelClsNames.labels;class _AreaDef{constructor(){this._axes=[];this.left=0;this.right=0;this.top=0;this.bottom=0}get axes(){return this._axes}}export class _DataInfo{constructor(){this.stackAbs={};this._xvals=null}analyse(t,e,i,s,n,r){this.minY=NaN;this.maxY=NaN;this.minX=NaN;this.maxX=NaN;this.minXp=NaN;this.minYp=NaN;this.dx=0;var a,h={},o={},l={};this.dataTypeX=null;this.dataTypeY=null;this._xvals=s;if(null!=s){const t=s.length;for(let e=0;e<t;e++){const t=s[e];(isNaN(this.minX)||this.minX>t)&&(this.minX=t);(isNaN(this.maxX)||this.maxX<t)&&(this.maxX=t);t>0&&(isNaN(this.minXp)||this.minXp>t)&&(this.minXp=t);if(e>0){const i=Math.abs(t-s[e-1]);!isNaN(i)&&(i<this.dx||0==this.dx)&&(this.dx=i)}}}for(let n=0;n<t.length;n++){const r=t[n],_=r._getChartType(),c=void 0!==r.chartType,d=r.visibility;if(d==SeriesVisibility.Hidden||d==SeriesVisibility.Legend)continue;const u=r.getDataRect();if(u){if(!isNaN(this.minX)&&this.minX<u.left){a=u.right;u.left=this.minX;u.width=a-this.minX}!isNaN(this.maxX)&&this.maxX>u.right&&(u.width=this.maxX-u.left);if(!r._isCustomAxisY()){if(!isNaN(this.minY)&&this.minY<u.top){a=u.bottom;u.top=this.minY;u.height=a-this.minY}!isNaN(this.maxY)&&this.maxY>u.bottom&&(u.height=this.maxY-u.top)}}let g=null;e?r._isCustomAxisY()||(g=r.getValues(1)):r._isCustomAxisX()||(g=r.getValues(1));if(g){this.dataTypeX||(this.dataTypeX=r.getDataType(1));for(let t=0;t<g.length;t++){const e=g[t];if(isFinite(e)){(isNaN(this.minX)||this.minX>e)&&(this.minX=e);(isNaN(this.maxX)||this.maxX<e)&&(this.maxX=e);if(t>0&&(!_||_==ChartType.Column||_==ChartType.Bar)){const i=Math.abs(e-g[t-1]);!isNaN(i)&&i>0&&(i<this.dx||0==this.dx)&&(this.dx=i)}}}}let p=null,f=!1;if(e){f=r._isCustomAxisX();p=r.getValues(0)}else{f=r._isCustomAxisY();p=r.getValues(0)}if(p){this.dataTypeY||f||(this.dataTypeY=r.getDataType(0));isNaN(this.minX)?this.minX=0:g||s||(this.minX=Math.min(this.minX,0));isNaN(this.maxX)?this.maxX=p.length-1:g||s||(this.maxX=Math.max(this.maxX,p.length-1));if(!f){const t=i==Stacking.None||c;for(let e=0;e<p.length;e++){const i=p[e],n=g?asNumber(g[e],!0):s?asNumber(s[e],!0):e;isArray(i)?i.forEach(e=>{this._parseYVal(e,n,t,l,h,o)}):this._parseYVal(i,n,t,l,h,o)}}}const m=r.getDataRect(new Rect(this.minX,this.minY,this.maxX-this.minX,this.maxY-this.minY),u);if(m){this.minX=m.left;this.maxX=m.right;if(!f){this.minY=m.top;this.maxY=m.bottom}}}if(i==Stacking.Stacked){for(const t in h)h[t]>this.maxY&&(this.maxY=h[t]);for(const t in o)o[t]<this.minY&&(this.minY=o[t])}else if(i==Stacking.Stacked100pc){this.minY=0;this.maxY=0;for(const t in l){const e=l[t];if(isFinite(e)&&0!=e){let i=h[t],s=o[t];if(isFinite(i)){i=Math.max(i/e,this.maxY);i>this.maxY&&(this.maxY=i)}if(isFinite(s)){s=Math.min(s/e,this.minY);s<this.minY&&(this.minY=s)}}}if(this.minY==this.maxY){this.minY=0;this.maxY=1}}this.stackAbs=l;n&&(e?this.minY=isNaN(this.minYp)?1:this.minYp:this.minX=isNaN(this.minXp)?1:this.minXp);r&&(e?this.minX=isNaN(this.minXp)?1:this.minXp:this.minY=isNaN(this.minYp)?1:this.minYp)}_parseYVal(t,e,i,s,n,r){if(isFinite(t)){null!=t&&(isNaN(this.minY)||this.minY>t)&&(this.minY=t);null!=t&&(isNaN(this.maxY)||this.maxY<t)&&(this.maxY=t);t>0&&(isNaN(this.minYp)||this.minYp>t)&&(this.minYp=t);if(!i){t>0?isNaN(n[e])?n[e]=t:n[e]+=t:isNaN(r[e])?r[e]=t:r[e]+=t;isNaN(s[e])?s[e]=Math.abs(t):s[e]+=Math.abs(t)}}}getMinY(){return this.minY}getMaxY(){return this.maxY}getMinX(){return this.minX}getMaxX(){return this.maxX}getMinXp(){return this.minXp}getMinYp(){return this.minYp}getDeltaX(){return this.dx}getDataTypeX(){return this.dataTypeX}getDataTypeY(){return this.dataTypeY}getStackedAbsSum(t){var e=this.stackAbs[t];return isFinite(e)?e:0}getXVals(){return this._xvals}static isValid(...t){const e=t.length;for(let i=0;i<e;i++)if(!isFinite(t[i]))return!1;return!0}}export class FlexChart extends FlexChartCore{constructor(t,e){super(t,null);this._chartType=ChartType.Column;this.initialize(e)}_getChartType(){return this._chartType}get chartType(){return this._chartType}set chartType(t){if((t=asEnum(t,ChartType))!=this._chartType){this._chartType=t;this.invalidate()}}get rotated(){return this._rotated}set rotated(t){if(t!=this._rotated){this._rotated=asBoolean(t);this.invalidate()}}get stacking(){return this._stacking}set stacking(t){if((t=asEnum(t,Stacking))!=this._stacking){this._stacking=t;this.invalidate()}}get options(){return this._options}set options(t){if(t!=this._options){this._options=t;this.invalidate()}}}export var LabelPosition;!function(t){t[t.None=0]="None";t[t.Left=1]="Left";t[t.Top=2]="Top";t[t.Right=3]="Right";t[t.Bottom=4]="Bottom";t[t.Center=5]="Center"}(LabelPosition||(LabelPosition={}));export var PieLabelPosition;!function(t){t[t.None=0]="None";t[t.Inside=1]="Inside";t[t.Center=2]="Center";t[t.Outside=3]="Outside";t[t.Radial=4]="Radial";t[t.Circular=5]="Circular"}(PieLabelPosition||(PieLabelPosition={}));export class DataLabelRenderEventArgs extends RenderEventArgs{constructor(t,e,i,s){super(t);this.cancel=!1;this._ht=e;this._pt=i;this._text=s}get point(){return this._pt}get text(){return this._text}set text(t){this._text=asString(t)}get hitTestInfo(){return this._ht}}export class DataLabelBase{constructor(){this.rendering=new Event}get content(){return this._content}set content(t){if(t!=this._content){this._content=t;this._invalidate()}}get border(){return this._bdr}set border(t){if(t!=this._bdr){this._bdr=asBoolean(t,!0);this._invalidate()}}get offset(){return this._off}set offset(t){if(t!=this._off){this._off=asNumber(t,!0);this._invalidate()}}get connectingLine(){return this._line}set connectingLine(t){if(t!=this._line){this._line=asBoolean(t,!0);this._invalidate()}}onRendering(t){this.rendering.raise(this,t);return!t.cancel}_invalidate(){this._chart&&this._chart.invalidate()}}export class DataLabel extends DataLabelBase{constructor(){super(...arguments);this._pos=LabelPosition.Top}get position(){return this._pos}set position(t){if((t=asEnum(t,LabelPosition))!=this._pos){this._pos=t;this._invalidate()}}}export class PieDataLabel extends DataLabelBase{constructor(){super(...arguments);this._pos=PieLabelPosition.Center}get position(){return this._pos}set position(t){if((t=asEnum(t,PieLabelPosition))!=this._pos){this._pos=t;this._invalidate()}}}export class _DataPoint{constructor(t,e,i,s){this._seriesIndex=t;this._pointIndex=e;this._dataX=i;this._dataY=s}get seriesIndex(){return this._seriesIndex}get pointIndex(){return this._pointIndex}get dataX(){return this._dataX}set dataX(t){t!==this._dataX&&(this._dataX=t)}get dataY(){return this._dataY}set dataY(t){t!==this._dataY&&(this._dataY=t)}}export var _MeasureOption;!function(t){t[t.X=0]="X";t[t.Y=1]="Y";t[t.XY=2]="XY"}(_MeasureOption||(_MeasureOption={}));export class _RectArea{constructor(t){this._rect=t}get rect(){return this._rect}contains(t){var e=this._rect;return t.x>=e.left&&t.x<=e.right&&t.y>=e.top&&t.y<=e.bottom}pointDistance(t,e,i){var s=e.x-t.x,n=e.y-t.y;return i==_MeasureOption.X?Math.abs(s):i==_MeasureOption.Y?Math.abs(n):Math.sqrt(s*s+n*n)}distance(t){var e=_MeasureOption.XY;isNaN(t.x)||null===t.x?e=_MeasureOption.Y:(isNaN(t.y)||null===t.y)&&(e=_MeasureOption.X);var i=this._rect;return t.x<i.left?t.y<i.top?this.pointDistance(t,new Point(i.left,i.top),e):t.y>i.bottom?this.pointDistance(t,new Point(i.left,i.bottom),e):e==_MeasureOption.Y?0:i.left-t.x:t.x>i.right?t.y<i.top?this.pointDistance(t,new Point(i.right,i.top),e):t.y>i.bottom?this.pointDistance(t,new Point(i.right,i.bottom),e):e==_MeasureOption.Y?0:t.x-i.right:e==_MeasureOption.X?0:t.y<i.top?i.top-t.y:t.y>i.bottom?t.y-i.bottom:0}}export class _CircleArea{constructor(t,e){this._center=t;this.setRadius(e)}setRadius(t){this._rad=t;this._rad2=t*t}get center(){return this._center}contains(t){var e=this._center.x-t.x,i=this._center.y-t.y;return e*e+i*i<=this._rad2}distance(t){var e=isNaN(t.x)?0:this._center.x-t.x,i=isNaN(t.y)?0:this._center.y-t.y,s=e*e+i*i;return s<=this._rad2?0:Math.sqrt(s)-this._rad}}export class _LinesArea{constructor(t,e){this._x=[];this._y=[];this._x=t;this._y=e}contains(t){return!1}distance(t){var e=NaN;for(let i=0;i<this._x.length-1;i++){const s=FlexChartCore._dist(t,new Point(this._x[i],this._y[i]),new Point(this._x[i+1],this._y[i+1]));(isNaN(e)||s<e)&&(e=s)}return e}}export class _HitResult{}export class _HitTester{constructor(t){this._map={};this._chart=t}add(t,e){if(this._map[e]){t.tag||(t.tag=new _DataPoint(e,NaN,NaN,NaN));this._map[e].push(t)}}clear(){this._map={};var t=this._chart.series;for(let e=0;e<t.length;e++)t[e].hitTest===Series.prototype.hitTest&&(this._map[e]=[])}hitTest(t,e=!1){var i=null,s=Number.MAX_VALUE;for(let n=this._chart.series.length-1;n>=0;n--){const r=this._map[n];if(r){for(let n=r.length-1;n>=0;n--){const a=r[n];if(tryCast(a,_LinesArea)&&!e)continue;const h=a.distance(t);if(h<s){i=a;if(0==(s=h))break}}if(0==s)break}}if(i){const t=new _HitResult;t.area=i;t.distance=s;return t}return null}hitTestSeries(t,e){var i=null,s=Number.MAX_VALUE,n=this._map[e];if(n){for(let e=n.length-1;e>=0;e--){const r=n[e],a=r.distance(t);if(a<s){i=r;if(0==(s=a))break}}}if(i){const t=new _HitResult;t.area=i;t.distance=s;return t}return null}}export var ChartElement;!function(t){t[t.PlotArea=0]="PlotArea";t[t.AxisX=1]="AxisX";t[t.AxisY=2]="AxisY";t[t.ChartArea=3]="ChartArea";t[t.Legend=4]="Legend";t[t.Header=5]="Header";t[t.Footer=6]="Footer";t[t.Series=7]="Series";t[t.SeriesSymbol=8]="SeriesSymbol";t[t.DataLabel=9]="DataLabel";t[t.None=10]="None"}(ChartElement||(ChartElement={}));export class HitTestInfo{constructor(t,e,i){this._pointIndex=null;this._chartElement=ChartElement.None;this._chart=t;this._pt=e;this._chartElement=i}get chart(){return this._chart}get point(){return this._pt}get series(){return this._series}get pointIndex(){return this._pointIndex}get chartElement(){return this._chartElement}get distance(){return this._dist}get item(){if(null==this._item&&null!==this.pointIndex)if(null!=this.series)this._item=this.series._getItem(this.pointIndex);else{const t=this._chart._getHitTestItem(this.pointIndex);t&&(this._item=t)}return this._item}get x(){void 0===this._x&&(this._x=this._getValue(1,!1));return this._x}get y(){void 0===this._y&&(this._y=this._getValue(0,!1));return this._y}get value(){var t=this._chart._getHitTestValue(this.pointIndex,this._groupIndex);return null!=t?t:this.series&&null!=this.series._getValue?this.series._getValue(this.pointIndex):this.y}get name(){if(void 0===this._name){const t=this._chart._getHitTestLabel(this.pointIndex);return null==t?this.series.name:t.toString()}return this._name}get groupIndex(){return this._groupIndex}get _xfmt(){void 0===this.__xfmt&&(this.__xfmt=this._getValue(1,!0));return this.__xfmt}get _yfmt(){void 0===this.__yfmt&&(this.__yfmt=this._getValue(0,!0));return this.__yfmt}_setData(t,e){this._series=t;this._pointIndex=e}_setDataGroup(t,e){this._groupIndex=t;this._pointIndex=e}_setName(t){this._name=t;t&&(this._dist=0)}_setDataPoint(t){if(t=asType(t,_DataPoint,!0)){this._pointIndex=t.pointIndex;const e=asType(this._chart,FlexChartCore,!0),i=t.seriesIndex;null!==i&&i>=0&&i<e.series.length&&(this._series=e.series[i]);null!=t.item&&(this._item=t.item);null!=t.x&&(this._x=t.x);null!=t.y&&(this._y=t.y);null!=t.xfmt&&(this.__xfmt=t.xfmt);null!=t.yfmt&&(this.__yfmt=t.yfmt);null!=t.name&&(this._name=t.name)}}_getValueFmt(){let t=this.value;if(null!=t){if(null==this.series){const e=t==Math.round(t)?"{val:n0}":"{val:n}";return format(e,{val:t})}t=this._chart._isRotated()?this.ax._formatValue(t):this.ay._formatValue(t)}return t}_getValue(t,e){var i=this._chart._getHitTestValue(this.pointIndex,this.groupIndex);if(null!==i)return i;var s=null,n=this._chart,r=this.pointIndex,a=n._isRotated();if(null!==this.series&&null!==r){const i=this.series.getValues(t),a=this.series.getDataType(t);if(i&&this.pointIndex<i.length){s=i[this.pointIndex];a!=DataType.Date||e||(s=new Date(s))}else if(1==t)if(n._xlabels&&n._xlabels.length>0&&r<n._xlabels.length)s=n._xlabels[r];else if(n._xvals&&r<n._xvals.length){s=n._xvals[r];n._xDataType!=DataType.Date||e||(s=new Date(s))}}null!==s&&e&&(a?0==t?s=this.ax._formatValue(s):1==t&&(s=this.ay._formatValue(s)):0==t?s=this.ay._formatValue(s):1==t&&(s=this.ax._formatValue(s)));return s}get ax(){return this.series.axisX?this.series.axisX:this._chart.axisX}get ay(){return this.series.axisY?this.series.axisY:this._chart.axisY}}export var SeriesVisibility;!function(t){t[t.Visible=0]="Visible";t[t.Plot=1]="Plot";t[t.Legend=2]="Legend";t[t.Hidden=3]="Hidden"}(SeriesVisibility||(SeriesVisibility={}));export var Marker;!function(t){t[t.Dot=0]="Dot";t[t.Box=1]="Box"}(Marker||(Marker={}));export class DataArray{}export class SeriesEventArgs extends EventArgs{constructor(t){super();this._series=asType(t,SeriesBase)}get series(){return this._series}}export class SeriesBase{constructor(t){this._altStyle=null;this._symbolMarker=Marker.Dot;this._visibility=SeriesVisibility.Visible;this._interpolateNulls=null;this._cache={};this.rendering=new Event;this.rendered=new Event;this.initialize(t)}get interpolateNulls(){return null==this._interpolateNulls?this._chart&&this._chart.interpolateNulls:this._interpolateNulls}set interpolateNulls(t){if(t!=this._interpolateNulls){this._interpolateNulls=asBoolean(t,!0);this._invalidate()}}get style(){return this._style}set style(t){if(t!=this._style){this._style=t;this._invalidate()}}get altStyle(){return this._altStyle}set altStyle(t){if(t!=this._altStyle){this._altStyle=t;this._invalidate()}}get symbolStyle(){return this._symbolStyle}set symbolStyle(t){if(t!=this._symbolStyle){this._symbolStyle=t;this._invalidate()}}get symbolSize(){return this._symbolSize}set symbolSize(t){if(t!=this._symbolSize){this._symbolSize=asNumber(t,!0,!0);this._invalidate()}}get symbolMarker(){return this._symbolMarker}set symbolMarker(t){if((t=asEnum(t,Marker,!0))!=this._symbolMarker){this._symbolMarker=t;this._invalidate()}}get binding(){return this._binding?this._binding:this._chart?this._chart.binding:null}set binding(t){if(t!=this._binding){this._binding=asString(t,!0);this._clearValues();this._invalidate()}}get bindingX(){return this._bindingX?this._bindingX:this._chart?this._chart.bindingX:null}set bindingX(t){if(t!=this._bindingX){this._bindingX=asString(t,!0);this._clearValues();this._invalidate()}}get name(){return this._name}set name(t){this._name=t}get itemsSource(){return this._itemsSource}set itemsSource(t){if(t!=this._itemsSource){if(this._cv){this._cv.currentChanged.removeHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._itemsSource=t;this._cv=asCollectionView(t);if(null!=this._cv){this._cv.currentChanged.addHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.addHandler(this._cvCollectionChanged,this)}this._clearValues();this._itemsSource=t;this._invalidate()}}get collectionView(){return this._cv?this._cv:this._chart?this._chart.collectionView:null}get chart(){return this._chart}get hostElement(){return this._hostElement}get legendElement(){return this._legendElement}get cssClass(){return this._cssClass}set cssClass(t){this._cssClass=asString(t,!0)}get visibility(){return this._visibility}set visibility(t){if((t=asEnum(t,SeriesVisibility))!=this._visibility){this._visibility=t;this._clearValues();this._invalidate();this._chart&&this._chart.onSeriesVisibilityChanged(new SeriesEventArgs(this))}}get tooltipContent(){return this._tooltipContent}set tooltipContent(t){t!=this._tooltipContent&&(this._tooltipContent=t)}get itemFormatter(){return this._itemFormatter}set itemFormatter(t){if(t!=this._itemFormatter){this._itemFormatter=asFunction(t);this._invalidate()}}hitTest(t,e){isNumber(t)&&isNumber(e)?t=new Point(t,e):t instanceof MouseEvent&&(t=new Point(t.pageX,t.pageY));asType(t,Point);return this._chart?this._chart._hitTestSeries(t,this._chart.series.indexOf(this)):null}getPlotElement(t){if(this.hostElement&&t<this._pointIndexes.length){const e=this._pointIndexes[t];if(e<this.hostElement.childNodes.length)return this.hostElement.childNodes[e]}return null}get axisX(){return this._axisX}set axisX(t){if(t!=this._axisX){this._axisX=asType(t,Axis,!0);if(this._axisX){this._axisX._chart=this._chart;const t=this._axisX._chart;t&&-1==t.axes.indexOf(this._axisX)&&t.axes.push(this._axisX)}this._invalidate()}}get axisY(){return this._axisY}set axisY(t){if(t!=this._axisY){this._axisY=asType(t,Axis,!0);if(this._axisY){this._axisY._chart=this._chart;const t=this._axisY._chart;t&&-1==t.axes.indexOf(this._axisY)&&t.axes.push(this._axisY)}this._invalidate()}}initialize(t){copy(this,t)}pointToData(t){asType(t,Point);(t=t.clone()).x=this._getAxisX().convertBack(t.x);t.y=this._getAxisY().convertBack(t.y);return t}dataToPoint(t){asType(t,Point);(t=t.clone()).x=this._getAxisX().convert(t.x);t.y=this._getAxisY().convert(t.y);return t}onRendering(t,e,i){var s=new SeriesRenderingEventArgs(t,e,i);this.rendering.raise(this,s);return s.cancel}onRendered(t){this.rendered.raise(this,new RenderEventArgs(t))}get _chart(){return this.__chart}set _chart(t){t!==this.__chart&&(this.__chart=t)}_getSymbolSize(){return null!=this.symbolSize?this.symbolSize:this.chart.symbolSize}get _plotter(){this.chart&&!this.__plotter&&(this.__plotter=this.chart._getPlotter(this));return this.__plotter}set _plotter(t){t!=this.__plotter&&(this.__plotter=t)}getDataType(t){return 0==t?this._valueDataType:1==t?this._xvalueDataType:null}getValues(t){if(0==t){if(null==this._values){this._valueDataType=null;if(null!=this._cv){const t=this._bindValues(this._cv.items,this._getBinding(0));this._values=t.values;this._valueDataType=t.dataType}else if(null!=this.binding&&null!=this._chart&&null!=this._chart.collectionView){const t=this._bindValues(this._chart.collectionView.items,this._getBinding(0));this._values=t.values;this._valueDataType=t.dataType}}return this._values}if(1==t){if(null==this._xvalues){this._xvalueDataType=null;if(null!=this.bindingX)if(null!=this._cv){const t=this._bindValues(this._cv.items,this.bindingX,!0);this._xvalueDataType=t.dataType;this._xvalues=t.values}else{if(null==this._bindingX)return null;if(null!=this._chart&&null!=this._chart.collectionView){const t=this._bindValues(this._chart.collectionView.items,this.bindingX,!0);this._xvalueDataType=t.dataType;this._xvalues=t.values}}}return this._xvalues}return null}drawLegendItem(t,e,i){var s=this._getChartType();null==s&&(s=this._chart._getChartType());const n=this._getLegendStyle(this.style);s===ChartType.Funnel?this._drawFunnelLegendItem(t,e,i,n,this.symbolStyle):this._drawLegendItem(t,e,s,this.name,n,this.symbolStyle)}_getLegendStyle(t){if(!t)return;const e={};t.fill&&(e.fill=t.fill);t.stroke&&(e.stroke=t.stroke);return e}measureLegendItem(t,e){var i=this._getChartType();null==i&&(i=this._chart._getChartType());return i===ChartType.Funnel?this._measureLegendItem(t,this._getFunnelLegendName(e)):this._measureLegendItem(t,this.name)}legendItemLength(){var t=this._getChartType();null==t&&(t=this._chart._getChartType());return t===ChartType.Funnel?this._chart._xlabels&&this._chart._xlabels.length?this._chart._xlabels.length:this._chart._xvals&&this._chart._xvals.length?this._chart._xvals.length:1:1}getDataRect(t,e){return null}_getChartType(){return this._chartType}_clearValues(){this._values=null;this._xvalues=null;this.__plotter=null;this._cache={}}_getBinding(t){var e=this.binding;if(e){const i=this.chart?this.chart._bindingSeparator:",";if(i){const s=e.split(i);s&&s.length>t&&(e=s[t].trim())}}return e}_getBindingValues(t){if(this._cache[t])return this._cache[t];{let e;null!=this._cv?e=this._cv.items:null!=this._chart&&null!=this._chart.collectionView&&(e=this._chart.collectionView.items);const i=this._bindValues(e,this._getBinding(t));this._cache[t]=i.values;return this._cache[t]}}_getItem(t){var e=null,i=null;null!=this.itemsSource?i=null!=this._cv?this._cv.items:this.itemsSource:null!=this._chart.itemsSource&&(i=null!=this._chart.collectionView?this._chart.collectionView.items:this._chart.itemsSource);null!=i&&(e=i[t]);return e}_getLength(){var t=0,e=null;null!=this.itemsSource?e=null!=this._cv?this._cv.items:this.itemsSource:null!=this._chart.itemsSource&&(e=null!=this._chart.collectionView?this._chart.collectionView.items:this._chart.itemsSource);null!=e&&(t=e.length);return t}_setPointIndex(t,e){this._pointIndexes[t]=e}_getDataRect(){var t=this.getValues(0),e=this.getValues(1);if(t){let i=NaN,s=NaN,n=NaN,r=NaN;const a=t.length;for(let h=0;h<a;h++){const a=t[h];if(isArray(a)){const t=a,e=Math.min(...t),i=Math.max(...t);if(isNaN(s)){s=e;r=i}else{e<s&&(s=e);i>r&&(r=i)}}else isFinite(a)&&(isNaN(s)?s=r=a:a<s?s=a:a>r&&(r=a));if(e){const t=e[h];isFinite(t)&&(isNaN(i)?i=n=t:t<i?i=t:a>r&&(n=t))}}if(!e){i=0;n=a-1}if(!isNaN(s))return new Rect(i,s,n-i,r-s)}return null}_isCustomAxisX(){return!!this._axisX&&(!this._chart||this._axisX!=this.chart.axisX)}_isCustomAxisY(){return!!this._axisY&&(!this._chart||this._axisY!=this.chart.axisY)}_getAxisX(){var t=null;this.axisX?t=this.axisX:this.chart&&(t=this.chart.axisX);return t}_getAxisY(){var t=null;this.axisY?t=this.axisY:this.chart&&(t=this.chart.axisY);return t}_measureLegendItem(t,e){var i=new Size;i.width=SeriesBase._LEGEND_ITEM_WIDTH;i.height=SeriesBase._LEGEND_ITEM_HEIGHT;if(this._name){const s=t.measureString(e,FlexChartCore._CSS_LABEL,FlexChartCore._CSS_LEGEND);i.width+=s.width;i.height<s.height&&(i.height=s.height)}i.width+=3*SeriesBase._LEGEND_ITEM_MARGIN;i.height+=2*SeriesBase._LEGEND_ITEM_MARGIN;return i}_drawFunnelLegendItem(t,e,i,s,n){t.strokeWidth=1;var r=SeriesBase._LEGEND_ITEM_MARGIN,a=null,h=null;null===a&&(a=this._chart._getColorLight(i));null===h&&(h=this._chart._getColor(i));t.fill=a;t.stroke=h;var o=e.top+.5*e.height,l=SeriesBase._LEGEND_ITEM_WIDTH,_=SeriesBase._LEGEND_ITEM_HEIGHT,c=this._getFunnelLegendName(i);t.drawRect(e.left+r,o-.5*_,l,_,null,n||s);null!=c&&FlexChartCore._renderText(t,c,new Point(e.left+_+2*r,o),0,1,FlexChartCore._CSS_LABEL,FlexChartCore._CSS_LEGEND)}_getFunnelLegendName(t){var e,i=this._chart;if(i._xlabels&&i._xlabels.length&&t<i._xlabels.length)e=i._xlabels[t];else if(i._xvals&&i._xvals.length&&t<i._xvals.length){e=i._xvals[t];i._xDataType===DataType.Date&&(e=FlexChartCore._fromOADate(e))}null==e&&(e=this.name);return e.toString()}_drawLegendItem(t,e,i,s,n,r){t.strokeWidth=1;var a=SeriesBase._LEGEND_ITEM_MARGIN,h=null,o=null;null===h&&(h=this._chart._getColorLight(this._chart.series.indexOf(this)));null===o&&(o=this._chart._getColor(this._chart.series.indexOf(this)));t.fill=h;t.stroke=o;var l=e.top+.5*e.height,_=SeriesBase._LEGEND_ITEM_WIDTH,c=SeriesBase._LEGEND_ITEM_HEIGHT;switch(i){case ChartType.Area:case ChartType.SplineArea:case ChartType.StepArea:t.drawRect(e.left+a,l-.5*c,_,c,null,n);break;case ChartType.Bar:case ChartType.Column:t.drawRect(e.left+a,l-.5*c,_,c,null,r||n);break;case ChartType.Scatter:case ChartType.Bubble:{const i=.3*_,s=.3*c;this.symbolMarker==Marker.Box?t.drawRect(e.left+a+.5*_-i,l-s,2*i,2*s,null,r||n):t.drawEllipse(e.left+.5*_+a,l,i,s,null,r||n)}break;case ChartType.Line:case ChartType.Spline:case ChartType.Step:t.drawLine(e.left+a,l,e.left+_+a,l,null,n);break;case ChartType.LineSymbols:case ChartType.SplineSymbols:case ChartType.StepSymbols:{const i=.3*_,s=.3*c;this.symbolMarker==Marker.Box?t.drawRect(e.left+a+.5*_-i,l-s,2*i,2*s,null,r||n):t.drawEllipse(e.left+.5*_+a,l,i,s,null,r||n);t.drawLine(e.left+a,l,e.left+_+a,l,null,n)}break;case ChartType.Candlestick:case ChartType.HighLowOpenClose:t.drawLine(e.left+a,l,e.left+_+a,l,null,r||n)}this._name&&FlexChartCore._renderText(t,s,new Point(e.left+c+2*a,l),0,1,FlexChartCore._CSS_LABEL,FlexChartCore._CSS_LEGEND)}_cvCollectionChanged(t,e){this._clearValues();this._invalidate()}_cvCurrentChanged(t,e){this._chart&&this._chart._notifyCurrentChanged&&this._invalidate()}_bindValues(t,e,i=!1){var s,n,r;if(null!=t){const a=t.length;s=new Array(t.length);const h=e?new Binding(e):null;for(let e=0;e<a;e++){r=null;let a=t[e];null!=h&&(a=h.getValue(a));if(isArray(a)&&a.length>0){r=a;a=a[0]}if(isNumber(a)){s[e]=a;n=DataType.Number}else if(isDate(a)){s[e]=a.valueOf();n=DataType.Date}else if(i&&a){s[e]=e;n=DataType.Number}isArray(r)&&r.length>0&&(s[e]=r)}}var a=new DataArray;a.values=s;a.dataType=n;return a}_invalidate(){this._chart&&this._chart.invalidate()}_indexToPoint(t){if(t>=0&&t<this._values.length){const e=this._values[t],i=this._xvalues?this._xvalues[t]:t;return new Point(i,e)}return null}_getSymbolFill(t){var e=null;this.symbolStyle&&(e=this.symbolStyle.fill);!e&&this.style&&(e=this.style.fill);!e&&this.chart&&(e=this.chart._getColorLight(t));return e}_getSymbolStroke(t){var e=null;this.symbolStyle&&(e=this.symbolStyle.stroke);!e&&this.style&&(e=this.style.stroke);!e&&this.chart&&(e=this.chart._getColor(t));return e}_getAltSymbolStroke(t){var e=null;this.altStyle&&(e=this.altStyle.stroke);return e}_getAltSymbolFill(t){var e=null;this.altStyle&&(e=this.altStyle.fill);return e}_renderLabels(t,e,i,s){this._plotter&&this._plotter._renderLabels(t,this,e,i,s)}}SeriesBase._LEGEND_ITEM_WIDTH=10;SeriesBase._LEGEND_ITEM_HEIGHT=10;SeriesBase._LEGEND_ITEM_MARGIN=4;export class _BasePlotter{constructor(){this._DEFAULT_WIDTH=2;this._DEFAULT_SYM_SIZE=10;this.clipping=!0}clear(){this.seriesCount=0;this.seriesIndex=0}_renderLabels(t,e,i,s,n){var r=i.length,a=s.dataLabel,h=a.border,o=a.offset,l=a.connectingLine;void 0===o&&(o=l?16:0);h&&(o-=2);for(let h=0;h<r;h++){const r=i[h],l=asType(r.tag,_DataPoint,!0);l&&!r.ignoreLabel&&this._renderLabel(t,r,l,s,a,e,o,n)}}_renderLabel(t,e,i,s,n,r,a,h){var o,l=null==n.position?LabelPosition.Top:n.position,_=n.border,c=n.connectingLine,d=new HitTestInfo(s,o);d._setDataPoint(i);var u=s._getLabelContent(d,n.content);o=this._getLabelPoint(r,i);this._getPointAndPosition(o,l,e,s);if(s._plotRect.contains(o)){var g=new DataLabelRenderEventArgs(t,d,o,u);if(n.onRendering)if(n.onRendering(g)){u=g.text;o=g.point}else u=null;if(u){const e=this._renderLabelAndBorder(t,u,l,a,o,c,2,_);if(e){const t=new _RectArea(e);t.tag=i;h.push(t)}}t.cssPriority=!0}}_getPointAndPosition(t,e,i,s){if(i instanceof _RectArea){const e=i;s._isRotated()?t.y=e.rect.top+.5*e.rect.height:t.x=e.rect.left+.5*e.rect.width}}_getLabelPoint(t,e){var i=t._getAxisX(),s=t._getAxisY();return new Point(i.convert(e.dataX),s.convert(e.dataY))}_renderLabelAndBorder(t,e,i,s,n,r,a,h){let o,l=DataLabelClsNames.label,_=DataLabelClsNames.line,c=DataLabelClsNames.border,d=FlexChartCore._CSS_DATA_LABELS;switch(i){case LabelPosition.Top:r&&t.drawLine(n.x,n.y,n.x,n.y-s,_);n.y-=a+s;o=FlexChartCore._renderText(t,e,n,1,2,l,d);break;case LabelPosition.Bottom:r&&t.drawLine(n.x,n.y,n.x,n.y+s,_);n.y+=a+s;o=FlexChartCore._renderText(t,e,n,1,0,l,d);break;case LabelPosition.Left:r&&t.drawLine(n.x,n.y,n.x-s,n.y,_);n.x-=a+s;o=FlexChartCore._renderText(t,e,n,2,1,l,d);break;case LabelPosition.Right:r&&t.drawLine(n.x,n.y,n.x+s,n.y,_);n.x+=a+s;o=FlexChartCore._renderText(t,e,n,0,1,l,d);break;case LabelPosition.Center:o=FlexChartCore._renderText(t,e,n,1,1,l,d)}h&&o&&t.drawRect(o.left-a,o.top-a,o.width+2*a,o.height+2*a,c);return o}getOption(t,e){var i=this.chart._options;e&&(i=i?i[e]:null);if(i&&!isUndefined(i[t])&&null!==i[t])return i[t]}getNumOption(t,e){var i=this.chart._options;e&&(i=i?i[e]:null);if(i&&i[t])return asNumber(i[t],!0)}getItemFormatter(t){if(t instanceof SeriesBase){const e=t;return e.itemFormatter?e.itemFormatter:this.chart.itemFormatter}return this.chart.itemFormatter}static cloneStyle(t,e){if(!t)return t;var i={};for(var s in t)e&&e.indexOf(s)>=0||(i[s]=t[s]);return i}isValid(t,e,i,s){return isFinite(t)&&isFinite(e)&&FlexChartCore._contains(this.chart._plotRect,new Point(t,e))}load(){}unload(){}_createSteps(t,e,i){const s=this.getOption("position","step"),n=i||t.length,r=[],a=[],h=this.chart._isRotated();if("center"==s)if(h)for(let i=0;i<n;i++){const s=0==i?e[i+1]-e[i]:e[i]-e[i-1],h=i==n-1?e[i]-e[i-1]:e[i+1]-e[i];r.push(t[i]);a.push(e[i]-.5*s);r.push(t[i]);a.push(e[i]+.5*h)}else for(let i=0;i<n;i++){const s=0==i?t[i+1]-t[i]:t[i]-t[i-1],h=i==n-1?t[i]-t[i-1]:t[i+1]-t[i];r.push(t[i]-.5*s);a.push(e[i]);r.push(t[i]+.5*h);a.push(e[i])}else if("end"==s)for(let i=0;i<n;i++){if(i>0)if(h){r.push(t[i]);a.push(e[i-1])}else{r.push(t[i-1]);a.push(e[i])}r.push(t[i]);a.push(e[i])}else for(let i=0;i<n;i++){r.push(t[i]);a.push(e[i]);if(i<n-1)if(h){r.push(t[i]);a.push(e[i+1])}else{r.push(t[i+1]);a.push(e[i])}}return{x:r,y:a}}}export class Series extends SeriesBase{get chartType(){return this._chartType}set chartType(t){if((t=asEnum(t,ChartType,!0))!=this._chartType){this._chartType=t;this._invalidate()}}}export class FlexPie extends FlexChartBase{constructor(t,e){super(t,null,!0);this._areas=[];this._keywords=new _KeyWords;this._startAngle=0;this._innerRadius=0;this._offset=0;this._reversed=!1;this._isAnimated=!1;this._selectedItemPosition=Position.None;this._selectedItemOffset=0;this._pieGroups=[];this._rotationAngles=[];this._centers=[new Point];this._selectedOffset=new Point;this._selectedIndex=-1;this._angles=[];this._colRowLens=[];this._titles=void 0;this._values=[];this._labels=[];this._pels=[];this._sum=0;this._sums=[];this._bindingSeparator=",";this.applyTemplate(`${ControlClsNames.hostElement} ${FlexChartClsNames.hostElement} ${FlexPieClsNames.hostElement}`,null,null);this._currentRenderEngine=new _SvgRenderEngine(this.hostElement);this._legend=new Legend(this);this._tooltip=new ChartTooltip;this._tooltip.content="<b>{name}</b><br/>{value}";this._tooltip.showDelay=0;this._lbl=new PieDataLabel;this._lbl._chart=this;this.addEventListener(this.hostElement,"mousemove",t=>{var e=this._tooltip;if(e.content&&!this.isTouching){const i=this.hitTest(t,void 0,!0);if(i.distance<=e.threshold){const e=this._getLabelContent(i,this.tooltip.content);this._showToolTip(e,new Rect(t.clientX,t.clientY,5,5))}else this._hideToolTip()}});this.addEventListener(this.hostElement,"click",t=>{var e=!0;if(this.selectionMode==SelectionMode.Point){const i=this.hitTest(t);let s=FlexChartBase._SELECTION_THRESHOLD;this.tooltip&&this.tooltip.threshold&&(s=this.tooltip.threshold);if(i.distance<=s){i.pointIndex!=this._selectionIndex&&this.selectedItemPosition!=Position.None&&(e=!1);i.pointIndex!=this._selectionIndex&&this._select(i.pointIndex,!0)}else this._selectedIndex>=0&&this._select(null)}if(e&&this.isTouching){const e=this._tooltip;if(e.content){const i=this.hitTest(t,void 0,!0);if(i.distance<=e.threshold){const e=this._getLabelContent(i,this.tooltip.content);this._showToolTip(e,new Rect(t.clientX,t.clientY,5,5))}else this._hideToolTip()}}});this.addEventListener(this.hostElement,"mouseleave",t=>{this._hideToolTip()});this.deferUpdate(()=>this.initialize(e))}get binding(){return this._binding}set binding(t){if(t!=this._binding){this._binding=asString(t,!0);this._bindChart()}}get bindingName(){return this._bindingName}set bindingName(t){if(t!=this._bindingName){this._bindingName=asString(t,!0);this._bindChart()}}get startAngle(){return this._startAngle}set startAngle(t){if(t!=this._startAngle){this._startAngle=asNumber(t,!0);this.invalidate()}}get offset(){return this._offset}set offset(t){if(t!=this._offset){this._offset=asNumber(t,!0);this.invalidate()}}get innerRadius(){return this._innerRadius}set innerRadius(t){if(t!=this._innerRadius){this._innerRadius=asNumber(t,!0);this.invalidate()}}get innerTextStyle(){return this._innerTextStyle}set innerTextStyle(t){if(t!=this._innerText){this._innerTextStyle=t;this.invalidate()}}get innerText(){return this._innerText}set innerText(t){if(t!=this._innerText){this._innerText=t;this.invalidate()}}get reversed(){return this._reversed}set reversed(t){if(t!=this._reversed){this._reversed=asBoolean(t,!0);this.invalidate()}}get selectedItemPosition(){return this._selectedItemPosition}set selectedItemPosition(t){if((t=asEnum(t,Position,!0))!=this._selectedItemPosition){this._selectedItemPosition=t;this.invalidate()}}get selectedItemOffset(){return this._selectedItemOffset}set selectedItemOffset(t){if(t!=this._selectedItemOffset){this._selectedItemOffset=asNumber(t,!0);this.invalidate()}}get isAnimated(){return this._isAnimated}set isAnimated(t){t!=this._isAnimated&&(this._isAnimated=t)}get tooltip(){return this._tooltip}get dataLabel(){return this._lbl}set dataLabel(t){if(t!=this._lbl){this._lbl=t;this._lbl&&(this._lbl._chart=this)}}get selectedIndex(){return this._selectedIndex}set selectedIndex(t){if(t!=this._selectedIndex){const e=asNumber(t,!0);this._select(e,!0)}}get titles(){return this._titles}set titles(t){if(t!==this._titles){this._titles=t;this.invalidate()}}get chartsPerLine(){return this._chartsPerLine}set chartsPerLine(t){if(t!=this._chartsPerLine){this._chartsPerLine=asNumber(t,!0,!0);this.invalidate()}}_getLabelsForLegend(){return this._labels}hitTest(t,e,i){var s=this._toControl(t,e),n=new HitTestInfo(this,s),r=null;if(FlexChartBase._contains(this._rectHeader,s))n._chartElement=ChartElement.Header;else if(FlexChartBase._contains(this._rectFooter,s))n._chartElement=ChartElement.Footer;else if(FlexChartBase._contains(this._rectLegend,s)){n._chartElement=ChartElement.Legend;null!==(r=this.legend._hitTest(s))&&r>=0&&r<this._areas.length&&n._setData(null,r)}else if(FlexChartBase._contains(this._rectChart,s)){this._hitTestData(n,s,i);n._chartElement=ChartElement.ChartArea}else n._chartElement=ChartElement.None;return n}_hitTestData(t,e,i){var s,n=this._areas.length,r=NaN;for(let a=0;a<n;a++){const n=e.clone(),h=this._areas[a],o=this._rotationAngles[h.gi];if(0!=o){const t=this._centers[h.gi],e=t.x,i=t.y,s=-e+n.x,r=-i+n.y,a=Math.sqrt(s*s+r*r),l=Math.atan2(r,s)-o*Math.PI/180;n.x=e+a*Math.cos(l);n.y=i+a*Math.sin(l)}if(a==this._selectedIndex){n.x-=this._selectedOffset.x;n.y-=this._selectedOffset.y}const l=this._areas[a];if(l.contains(n)){if(!0===i){r=0;s=l;continue}t._setDataGroup(h.gi,l.tag);t._dist=0;if(a!=this._selectedIndex)break}const _=l.distance(n);if(void 0!==_&&(isNaN(r)||_<r||!0===i&&this._isSmallSegment(_,s,l))){r=_;s=l}}if(0!==t._dist&&null!=s){t._setDataGroup(s.gi,s.tag);t._dist=r}}_isSmallSegment(t,e,i){return t<=.5*this.tooltip.threshold&&Math.abs(i.sweep)<=.035&&Math.abs(e.sweep/i.sweep)>=10}_performBind(){this._initData();if(this._cv){this._selectionIndex=this._cv.currentPosition;const t=this._cv.items;if(t){const e=t.length,i=this._getBindings();for(let t=0;t<i.length;t++){this._values[t]=[];this._sums[t]=0}for(let s=0;s<e;s++){const e=t[s];for(let t=0;t<i.length;t++)this._sums[t]+=Math.abs(this._getBindData(e,this._values[t],0==t?this._labels:null,i[t],this.bindingName))}}}}_getBindings(){let t=[];const e=this.binding;if(e){const i=this._bindingSeparator;i&&(t=e.split(i))}return t}_initData(){this._sum=0;this._sums=[];this._values=[];this._labels=[]}_getBindData(t,e,i,s,n){var r,a=0;const h=s?new Binding(s):null;h&&(r=h.getValue(t));a=0;isNumber(r)?a=asNumber(r):r&&(a=parseFloat(r.toString()));if(!isNaN(a)&&isFinite(a))e.push(a);else{a=0;e.push(a)}const o=n?new Binding(n):null;if(i)if(o&&t){let e=o.getValue(t);e&&(e=e.toString());i.push(e)}else i.push(a.toString());return a}_render(t,e=!0,i=null){this._selectionAnimationID&&clearInterval(this._selectionAnimationID);this.onRendering(new RenderEventArgs(t));super._render(t,e,i)}_prepareRender(){this._areas=[]}_renderChart(t,e,i){var s=this._rectChart.clone(),n=(new Size(s.width,s.height),e.width),r=e.height,a=this._parseMargin(this.plotMargin),h=this.dataLabel,o=h.content&&h.position==PieLabelPosition.Outside,l=o?(isNumber(h.offset)?h.offset:0)+24:0;isNaN(a.left)&&(a.left=o?l:FlexPie._MARGIN);isNaN(a.right)&&(a.right=o?l:FlexPie._MARGIN);isNaN(a.top)&&(a.top=o?l:FlexPie._MARGIN);isNaN(a.bottom)&&(a.bottom=o?l:FlexPie._MARGIN);e.top+=a.top;r=e.height-(a.top+a.bottom);e.height=r>0?r:24;e.left+=a.left;n=e.width-(a.left+a.right);e.width=n>0?n:24;const _=this._getBindings();let c=this.titles;void 0===c&&_.length>1&&(c=_);const d=this._layout(t,e,c,_.length);this._angles=[];this._pels=[];this._pieGroups=[];this._rotationAngles=[];for(let e=0;e<_.length;e++){const i=d[e];c&&e<c.length&&c[e]&&FlexChartBase._renderText(t,c[e],new Point(i.left+.5*i.width,i.top),1,2,FlexPie._CSS_GROUP_TITLE);const s=t.startGroup(FlexPieClsNames.sliceGroup,null,!0);this._pieGroups.push(s);this._renderData(t,i,e,s);t.endGroup();this._rotationAngles.push(0)}this._highlightCurrent();this.innerText&&this._renderInnerText(t);this.dataLabel.content&&this.dataLabel.position!=PieLabelPosition.None&&this._renderLabels(t);this.onRendered(new RenderEventArgs(t))}_layout(t,e,i,s){let n=0,r=s,a=1,h=0;if(i)for(let e=0;e<i.length;e++)h=Math.max(h,t.measureString(i[e],FlexPie._CSS_GROUP_TITLE).height);const o=Math.floor(this.chartsPerLine);if(o>0){r=Math.min(s,o);a=Math.ceil(s/r);const t=Math.floor(e.width/r),i=Math.floor(e.height/a)-h;n=Math.min(t,i)}else for(let t=1;t<=s;t++){const i=Math.floor((s+(t-1))/t);let o=Math.floor(e.width/t),l=Math.floor(e.height/i);l-=h;l<o&&(o=l);if(o>n){n=o;r=t;a=i}}const l=[],_=.5*(e.width-n*r),c=.5*(e.height-(n+h)*a);for(let t=0;t<a;t++)for(let i=0;i<r;i++)l.push(new Rect(e.left+n*i+8+_,e.top+(n+h)*t+8+c+h,n-16,n-16));return l}_getDesiredLegendSize(t,e,i,s){var n=new Size,r=(new Size(i,s),this._getLabelsForLegend()),a=r.length,h=0,o=0;this.legend.scrollbar;this._colRowLens=[];for(let l=0;l<a;l++){const a=this._measureLegendItem(t,r[l]);if(e){if(o+a.height>s&&!this.legend.scrollbar){n.height=s;this._colRowLens.push(h);h=0;o=0}h<a.width&&(h=a.width);o+=a.height}else{if(h+a.width>i&&!this.legend.scrollbar){n.width=i;this._colRowLens.push(o);o=0;h=0}o<a.height&&(o=a.height);h+=a.width}}if(e){n.height<o&&(n.height=o);this._colRowLens.push(h);n.width=this._colRowLens.reduce((t,e)=>t+e,0)}else{n.width<h&&(n.width=h);this._colRowLens.push(o);n.height=this._colRowLens.reduce((t,e)=>t+e,0)}return n}_renderLegend(t,e,i,s,n,r){var a=new Rect(e.x,e.y,n,r),h=this._getLabelsForLegend(),o=h.length,l=0,_=e.clone();for(let n=0;n<o;n++){const r=this._measureLegendItem(t,h[n]);if(s){if(_.y+r.height>a.bottom+1&&!this.legend.scrollbar){_.x+=this._colRowLens[l];l++;_.y=e.y}}else if(_.x+r.width>a.right+1&&!this.legend.scrollbar){_.y+=this._colRowLens[l];l++;_.x=e.x}const o=new Rect(_.x,_.y,r.width,r.height);this._drawLegendItem(t,o,n,h[n]);i.push(o);s?_.y+=r.height:_.x+=r.width}}_renderData(t,e,i,s){var n=this._sums[i],r=this.startAngle+180,a=this.innerRadius,h=this.offset;a>1&&(a=1);if(n>0){let s=r*Math.PI/180,n=e.left+.5*e.width,o=e.top+.5*e.height,l=Math.min(.5*e.width,.5*e.height);this._centers[i]=new Point(n,o);const _=Math.max(h,this.selectedItemOffset);if(_>0){l/=1+_;h*=l}this._radius=l;const c=a*l;this._renderPie(t,i,l,c,s,h)}}_renderPie(t,e,i,s,n,r){this._renderSlices(t,this._values[e],this._sums[e],e,i,s,n,2*Math.PI,r)}_getCenter(){return this._centers[0]}_renderSlices(t,e,i,s,n,r,a,h,o){var l,_,c,d=e.length,u=0,g=a,p=1==this.reversed,f=this._centers[s];for(let t=0;t<d;t++)e[t]>0&&u++;var m=1===u?360:359.9/360;for(let a=0;a<d;a++){_=f.x;c=f.y;l=t.startGroup(FlexPieClsNames.slice);t.fill=this._getColorLight(a);t.stroke=this._getColor(a);const d=Math.abs(e[a]);let u=Math.abs(d-i)<1e-10?h:h*d/i;u=Math.min(u,h*m);const x=p?g-.5*u:g+.5*u;if(o>0&&u<h){_+=o*Math.cos(x);c+=o*Math.sin(x)}this._renderSlice(t,_,c,x,s,a,n,r,g,u,h);p?g-=u:g+=u;t.endGroup();this._pels.push(l)}}_renderSlice(t,e,i,s,n,r,a,h,o,l,_){var c=!!this.reversed;this._angles.push(s);if(this.itemFormatter){const _=new HitTestInfo(this,new Point(e+a*Math.cos(s),i+a*Math.sin(s)),ChartElement.SeriesSymbol);_._setData(null,r);this.itemFormatter(t,_,()=>{this._drawSlice(t,n,r,c,e,i,a,h,o,l)});t.cssPriority=!0}else this._drawSlice(t,n,r,c,e,i,a,h,o,l)}_getSelectedItemOffset(t,e){var i=0,s=0,n=0;t==this._selectedIndex&&this.selectedItemOffset>0&&(n=this.selectedItemOffset);if(n>0){i=Math.cos(e)*n*this._radius;s=Math.sin(e)*n*this._radius}return{x:i,y:s}}_renderInnerText(t){const e=this.innerText,i=this.innerTextStyle;for(let s=0;s<this._centers.length;s++){const n=this._centers[s];let r;r=isFunction(e)?e(s):isArray(e)?asString(e[s]):asString(e);if(r){r=format(r,{total:this._sums[s],binding:this._getBindings()[s]});i&&(t.cssPriority=!1);FlexPie._renderText(t,r,n,1,1,FlexChartBase._CSS_TITLE,null,i);t.cssPriority=!0}}}_renderLabels(t){var e,i=this._areas.length,s=this.dataLabel,n=s.position,r=DataLabelClsNames.labels,a=DataLabelClsNames.label,h=DataLabelClsNames.border,o=DataLabelClsNames.line,l=this._rotationAngles,_=s.connectingLine,c=s.offset?s.offset:0;t.stroke="null";t.fill="transparent";t.strokeWidth=1;t.startGroup(r);for(let r=0;r<i;r++){const i=this._areas[r];if(i){let d=i.radius,u=i.langle+l[i.gi],g=1,p=1;if(n==PieLabelPosition.Center||n===PieLabelPosition.Radial||n===PieLabelPosition.Circular)d*=.5*(1+(i.innerRadius||0)/i.radius);else{u=_Math.clampAngle(u);if(u<=-170||u>=170){g=2;p=1}else if(u>=-100&&u<=-80){g=1;p=2}else if(u>=-10&&u<=10){g=0;p=1}else if(u>=80&&u<=100){g=1;p=0}else if(-180<u&&u<-90){g=2;p=2}else if(-90<=u&&u<0){g=0;p=2}else if(0<u&&u<90){g=0;p=0}else if(90<u&&u<180){g=2;p=0}if(n==PieLabelPosition.Inside){g=2-g;p=2-p}}u*=Math.PI/180;const f=i.gi?r-i.gi*this._values[0].length:r,m=this._getSelectedItemOffset(f,u),x=m.x,b=m.y;let y=d;n==PieLabelPosition.Outside?y+=c:n==PieLabelPosition.Inside&&(y-=c);let S=i.center.x,v=i.center.y;const w=this._centers[i.gi],C=S-w.x,T=v-w.y;if(0!=this._rotationAngles[i.gi]){const t=Math.sqrt(C*C+T*T),e=Math.atan2(T,C)+this._rotationAngles[i.gi]*Math.PI/180;S=w.x+t*Math.cos(e);v=w.y+t*Math.sin(e)}let M=new Point(S+x+y*Math.cos(u),v+b+y*Math.sin(u));if(s.border&&n!=PieLabelPosition.Center){0==g?M.x+=2:2==g&&(M.x-=2);0==p?M.y+=2:2==p&&(M.y-=2)}const P=new HitTestInfo(this,M);P._setDataGroup(i.gi,i.tag);let A=this._getLabelContent(P,s.content);const L=new DataLabelRenderEventArgs(t,P,M,A);if(s.onRendering)if(s.onRendering(L)){A=L.text;M=L.point}else A=null;if(A){let i=180*Math.atan2(v-M.y,S-M.x)/Math.PI;i=(i+360)%360;if(n===PieLabelPosition.Radial||n===PieLabelPosition.Circular){if(n===PieLabelPosition.Radial)i>90&&i<270&&(i+=180);else{i>180&&i<360&&(i+=180);i-=90}(e=FlexChartBase._renderRotatedText(t,A,M,g,p,M,i,a).getBBox()).left=e.x;e.top=e.y}else e=FlexChartBase._renderText(t,A,M,g,p,a);s.border&&t.drawRect(e.left-2,e.top-2,e.width+4,e.height+4,h);if(_){const e=new Point(S+x+d*Math.cos(u),v+b+d*Math.sin(u));t.drawLine(M.x,M.y,e.x,e.y,o)}}t.cssPriority=!0}}t.endGroup()}_drawSlice(t,e,i,s,n,r,a,h,o,l){var _;if(s)if(h>0){0!=l&&t.drawDonutSegment(n,r,a,h,o-l,l);(_=new _DonutSegment(new Point(n,r),a,h,o-l,l,this.startAngle)).tag=i;this._areas.push(_)}else{0!=l&&t.drawPieSegment(n,r,a,o-l,l);(_=new _PieSegment(new Point(n,r),a,o-l,l,this.startAngle)).tag=i;this._areas.push(_)}else{if(h>0){0!=l&&t.drawDonutSegment(n,r,a,h,o,l);(_=new _DonutSegment(new Point(n,r),a,h,o,l,this.startAngle)).tag=i;this._areas.push(_)}else{0!=l&&t.drawPieSegment(n,r,a,o,l);(_=new _PieSegment(new Point(n,r),a,o,l,this.startAngle)).tag=i;this._areas.push(_)}o+=l}_&&(_.gi=e)}_measureLegendItem(t,e){var i=new Size;i.width=Series._LEGEND_ITEM_WIDTH;i.height=Series._LEGEND_ITEM_HEIGHT;if(e){const s=t.measureString(e,FlexChartBase._CSS_LABEL,FlexChartBase._CSS_LEGEND);i.width+=s.width;i.height<s.height&&(i.height=s.height)}i.width+=3*Series._LEGEND_ITEM_MARGIN;i.height+=2*Series._LEGEND_ITEM_MARGIN;return i}_drawLegendItem(t,e,i,s){t.strokeWidth=1;var n=Series._LEGEND_ITEM_MARGIN,r=null,a=null;null===r&&(r=this._getColorLight(i));null===a&&(a=this._getColor(i));t.fill=r;t.stroke=a;var h=e.top+.5*e.height,o=Series._LEGEND_ITEM_WIDTH,l=Series._LEGEND_ITEM_HEIGHT;t.drawRect(e.left+n,h-.5*l,o,l,null);null!=s&&FlexChartBase._renderText(t,s.toString(),new Point(e.left+l+2*n,h),0,1,FlexChartBase._CSS_LABEL)}_getLabelContent(t,e){return isString(e)?this._keywords.replace(e,t):isFunction(e)?e(t):null}_select(t,e=!1){this._highlight(!1,this._selectionIndex);this._selectionIndex=t;if(this.selectionMode==SelectionMode.Point){const e=this._cv;if(e){this._notifyCurrentChanged=!1;e.moveCurrentToPosition(t);this._notifyCurrentChanged=!0}}if(null==t){this._selectedIndex=-1;this.invalidate()}else if(this.isAnimated&&this.selectedItemPosition!=Position.None||!(this.selectedItemOffset>0||this.selectedItemPosition!=Position.None))this._highlight(!0,this._selectionIndex,e);else{this._selectedIndex=t;this.invalidate()}this.onSelectionChanged()}_highlightCurrent(){if(this.selectionMode!=SelectionMode.None){let t=-1;const e=this._cv;e&&(t=e.currentPosition);this._highlight(!0,t)}}_highlight(t,e,i=!1){if(this.selectionMode==SelectionMode.Point&&null!=e&&e>=0)if(t){const n=[];for(let r=0;r<this._pieGroups.length;r++){const a=this._pels[e+r*this._values[0].length];if(a){a.parentNode.appendChild(a);var s=this._find(a,["ellipse"]);this._highlightItems(this._find(a,["path","ellipse"]),FlexChartBase._CSS_SELECTION,t)}const h=this._angles[e+r*this._values[0].length];if(this.selectedItemPosition!=Position.None&&0!=h){let t=0;this.selectedItemPosition==Position.Left?t=180:this.selectedItemPosition==Position.Top?t=-90:this.selectedItemPosition==Position.Bottom&&(t=90);let e=t*Math.PI/180-h;e*=180/Math.PI;if(i&&this.isAnimated)n.push(e);else{this._rotationAngles[r]=e;this._pieGroups[r].transform.baseVal.getItem(0).setRotate(e,this._centers[r].x,this._centers[r].y)}}const o=this.selectedItemOffset;if(o>0&&s&&0==s.length){this._selectedOffset.x=Math.cos(h)*o*this._radius;const t=this._selectedOffset.x;this._selectedOffset.y=Math.sin(h)*o*this._radius;const e=this._selectedOffset.y;a&&a.setAttribute("transform",`translate(${t.toFixed()},${e.toFixed()})`)}this._selectedIndex=e}n.length>0&&this._animateSelectionAngle(n,.5)}else{for(let i=0;i<this._pieGroups.length;i++){const s=this._pels[e+i*this._values[0].length];if(s){s.parentNode.insertBefore(s,s.parentNode.childNodes.item(e));s.removeAttribute("transform");this._highlightItems(this._find(s,["path","ellipse"]),FlexChartBase._CSS_SELECTION,t)}}this._selectedIndex==e&&(this._selectedIndex=-1)}}_animateSelectionAngle(t,e){var i=this._pieGroups;this._selectionAnimationID&&clearInterval(this._selectionAnimationID);this._selectionAnimationID=animate(e=>{if(i==this._pieGroups){for(let s=0;s<i.length;s++){let n=_Math.clampAngle(this._rotationAngles[s]);const r=_Math.clampAngle(t[s])-n,a=n;this._rotationAngles[s]=n=a+r*e;i[s].transform.baseVal.getItem(0).setRotate(n,this._centers[s].x,this._centers[s].y)}1==e&&clearInterval(this._selectionAnimationID);e>.99&&(this.selectedItemOffset>0||this.selectedItemPosition!=Position.None)&&this.invalidate()}},1e3*e)}_getHitTestItem(t){var e=null,i=null;(e=null!=this._cv?this._cv.items:this.itemsSource)&&t<e.length&&(i=e[t]);return i}_getHitTestValue(t,e){null==e&&(e=0);return this._values[e][t]}_getHitTestLabel(t){return this._labels[t]}}FlexPie._MARGIN=4;FlexPie._CSS_GROUP_TITLE=FlexChartClsNames.label;class _Math{static clampAngle(t,e=0){var i=(t+180)%360-180;i<-180+(e<0?e+360:e)&&(i+=360);return i}}export class _PieSegment{constructor(t,e,i,s,n=0){this._isFull=!1;this._center=t;this._radius=e;this._originAngle=i;this._originSweep=s;s>=2*Math.PI&&(this._isFull=!0);this._sweep=.5*s*180/Math.PI;this._angle=_Math.clampAngle(180*i/Math.PI+this._sweep);this._radius2=e*e;this._startAngle=n}contains(t){var e=t.x-this._center.x,i=t.y-this._center.y;if(e*e+i*i<=this._radius2){const t=180*Math.atan2(i,e)/Math.PI,s=_Math.clampAngle(this._angle,this._startAngle)-_Math.clampAngle(t,this._startAngle);if(this._isFull||Math.abs(s)<=this._sweep)return!0}return!1}distance(t){if(this.contains(t))return 0;var e=t.x-this._center.x,i=t.y-this._center.y,s=e*e+i*i,n=180*Math.atan2(i,e)/Math.PI,r=_Math.clampAngle(this._angle,this._startAngle)-_Math.clampAngle(n,this._startAngle);if(this._isFull||Math.abs(r)<=this._sweep)return Math.sqrt(s)-this._radius;const a=this.center.clone();a.x+=this.radius*Math.cos(this._originAngle);a.y+=this.radius*Math.sin(this._originAngle);const h=this.center.clone();h.x+=this.radius*Math.cos(this._originAngle+this._originSweep);h.y+=this.radius*Math.sin(this._originAngle+this._originSweep);const o=FlexChartCore._dist(t,this.center,a),l=FlexChartCore._dist(t,this.center,h);return Math.min(o,l)}get center(){return this._center}get radius(){return this._radius}get langle(){return this._angle}get angle(){return this._originAngle}get sweep(){return this._originSweep}}export class _DonutSegment{constructor(t,e,i,s,n,r=0){this._isFull=!1;this._center=t;this._radius=e;this._iradius=i;this._originAngle=s;this._originSweep=n;n>=2*Math.PI&&(this._isFull=!0);this._sweep=.5*n*180/Math.PI;this._angle=_Math.clampAngle(180*s/Math.PI+this._sweep);this._radius2=e*e;this._iradius2=i*i;this._startAngle=r}contains(t){var e=t.x-this._center.x,i=t.y-this._center.y,s=e*e+i*i;if(s>=this._iradius2&&s<=this._radius2){const t=180*Math.atan2(i,e)/Math.PI,s=_Math.clampAngle(this._angle,this._startAngle)-_Math.clampAngle(t,this._startAngle);if(this._isFull||Math.abs(s)<=this._sweep)return!0}return!1}distance(t){if(this.contains(t))return 0;const e=this.center.clone();e.x+=this.radius*Math.cos(this._originAngle);e.y+=this.radius*Math.sin(this._originAngle);const i=this.center.clone();i.x+=this._iradius*Math.cos(this._originAngle);i.y+=this._iradius*Math.sin(this._originAngle);const s=this.center.clone();s.x+=this.radius*Math.cos(this._originAngle+this._originSweep);s.y+=this.radius*Math.sin(this._originAngle+this._originSweep);const n=this.center.clone();n.x+=this._iradius*Math.cos(this._originAngle+this._originSweep);n.y+=this._iradius*Math.sin(this._originAngle+this._originSweep);const r=FlexChartCore._dist(t,e,i),a=FlexChartCore._dist(t,s,n);return Math.min(r,a)}get center(){return this._center}get radius(){return this._radius}get langle(){return this._angle}get angle(){return this._originAngle}get sweep(){return this._originSweep}get innerRadius(){return this._iradius}}export var AxisType;!function(t){t[t.X=0]="X";t[t.Y=1]="Y"}(AxisType||(AxisType={}));export var OverlappingLabels;!function(t){t[t.Auto=0]="Auto";t[t.Show=1]="Show"}(OverlappingLabels||(OverlappingLabels={}));export var TickMark;!function(t){t[t.None=0]="None";t[t.Outside=1]="Outside";t[t.Inside=2]="Inside";t[t.Cross=3]="Cross"}(TickMark||(TickMark={}));export var AxisGroupsDisplay;!function(t){t[t.None=0]="None";t[t.Show=1]="Show";t[t.ShowGrid=2]="ShowGrid"}(AxisGroupsDisplay||(AxisGroupsDisplay={}));export class Axis{constructor(t){this._GRIDLINE_WIDTH=1;this._LINE_WIDTH=1;this._TICK_WIDTH=1;this._TICK_HEIGHT=4;this._TICK_OVERLAP=1;this._TICK_LABEL_DISTANCE=4;this._minorGrid=!1;this._isMinimumAuto=!0;this._isMaximumAuto=!0;this._labels=!0;this._isTimeAxis=!1;this._labelPadding=5;this._actualLabels=[];this._labelMin=!1;this._labelMax=!1;this.rangeChanged=new Event;this._customConvert=null;this._customConvertBack=null;this.__uniqueId=Axis._id++;t==Position.BottomLeft||t==Position.BottomRight||t==Position.TopLeft||t==Position.TopRight||t==Position.LeftTop||t==Position.LeftBottom||t==Position.RightTop||t==Position.RightBottom?this._position=void 0:this._position=t;this._position==Position.Bottom||this._position==Position.Top?this._axisType=AxisType.X:this._position!=Position.Left&&this._position!=Position.Right||(this._axisType=AxisType.Y);this._minorTickMarks=TickMark.None;this._overlap=OverlappingLabels.Auto}get hostElement(){return this._hostElement}get actualMin(){return this._isTimeAxis?new Date(this._actualMin):this._actualMin}get actualMax(){return this._isTimeAxis?new Date(this._actualMax):this._actualMax}get min(){return this._min}set min(t){if(t!=this._min){this._isMinimumAuto=!1;isDate(t)?this._min=asDate(t,!0):this._min=asNumber(t,!0);this._invalidate()}}get max(){return this._max}set max(t){if(t!=this._max){this._isMaximumAuto=!1;isDate(t)?this._max=asDate(t,!0):this._max=asNumber(t,!0);this._invalidate()}}get reversed(){return this._reversed}set reversed(t){if(this._reversed!=t){this._reversed=asBoolean(t);this._invalidate()}}get position(){return this._position}set position(t){if((t=asEnum(t,Position,!1))!=this._position){t==Position.BottomLeft||t==Position.BottomRight||t==Position.TopLeft||t==Position.TopRight||t==Position.LeftTop||t==Position.LeftBottom||t==Position.RightTop||t==Position.RightBottom?this._position=this._axisType==AxisType.X?Position.Bottom:this._axisType==AxisType.Y?Position.Left:void 0:this._position=t;this._position==Position.Bottom||this._position==Position.Top?null==this._axisType?this._axisType=AxisType.X:this._axisType==AxisType.Y&&(this._position=Position.Left):this._position!=Position.Left&&this._position!=Position.Right||(null==this._axisType?this._axisType=AxisType.Y:this._axisType==AxisType.X&&(this._position=Position.Bottom));this._invalidate()}}get majorUnit(){return this._majorUnit}set majorUnit(t){if(t!=this._majorUnit){this._majorUnit=asNumber(t,!0);this._invalidate()}}get minorUnit(){return this._minorUnit}set minorUnit(t){if(t!=this._minorUnit){this._minorUnit=asNumber(t,!0);this._invalidate()}}get name(){return this._name}set name(t){t!=this._name&&(this._name=asString(t,!0))}get title(){return this._title}set title(t){if(t!=this._title){this._title=asString(t,!0);this._invalidate()}}get format(){return this._format}set format(t){if(t!=this._format){this._format=asString(t,!0);this._invalidate()}}get majorGrid(){return this._majorGrid}set majorGrid(t){if(t!=this._majorGrid){this._majorGrid=asBoolean(t,!0);this._invalidate()}}get majorTickMarks(){return this._majorTickMarks}set majorTickMarks(t){if((t=asEnum(t,TickMark,!0))!=this._majorTickMarks){this._majorTickMarks=t;this._invalidate()}}get minorGrid(){return this._minorGrid}set minorGrid(t){if(t!=this._minorGrid){this._minorGrid=asBoolean(t,!0);this._invalidate()}}get minorTickMarks(){return this._minorTickMarks}set minorTickMarks(t){if((t=asEnum(t,TickMark,!0))!=this._minorTickMarks){this._minorTickMarks=t;this._invalidate()}}get axisLine(){return void 0===this._axisLine?this.axisType==AxisType.X:this._axisLine}set axisLine(t){if(t!=this._axisLine){this._axisLine=asBoolean(t,!0);this._invalidate()}}get labels(){return this._labels}set labels(t){if(t!=this._labels){this._labels=asBoolean(t,!0);this._invalidate()}}get labelAlign(){return this._labelAlign}set labelAlign(t){if(t!=this._labelAlign){this._labelAlign=asString(t,!0);this._invalidate()}}get labelAngle(){return this._labelAngle}set labelAngle(t){if(t!=this._labelAngle){this._labelAngle=asNumber(t,!0);this._invalidate()}}get labelMin(){return this._labelMin}set labelMin(t){if(t!=this._labelMin){this._labelMin=asBoolean(t,!0);this._invalidate()}}get labelMax(){return this._labelMax}set labelMax(t){if(t!=this._labelMax){this._labelMax=asBoolean(t,!0);this._invalidate()}}get origin(){return this._origin}set origin(t){if(t!=this._origin){this._origin=asNumber(t,!0);this._invalidate()}}get overlappingLabels(){return this._overlap}set overlappingLabels(t){if((t=asEnum(t,OverlappingLabels,!0))!=this._overlap){this._overlap=t;this._invalidate()}}get itemsSource(){return this._items}set itemsSource(t){if(this._items!=t){if(this._cv){this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._items=t;this._cv=asCollectionView(t);null!=this._cv&&this._cv.collectionChanged.addHandler(this._cvCollectionChanged,this)}}get binding(){return this._binding}set binding(t){if(t!=this._binding){this._binding=asString(t,!0);this._invalidate()}}get itemFormatter(){return this._ifmt}set itemFormatter(t){if(this._ifmt!=t){this._ifmt=asFunction(t,!0);this._invalidate()}}get logBase(){return this._logBase}set logBase(t){if(t!=this._logBase){this._logBase=asNumber(t,!0,!0);this._invalidate()}}get groupsOptions(){return this._groupsOptions}set groupsOptions(t){if(t!=this._groupsOptions){this._groupsOptions=t;this._invalidate()}}get axisLabels(){return this._actualLabels}_getLogBase(){return this._chart&&this._chart._stacking===Stacking.Stacked100pc?0:this.logBase}_isLogAxis(){const t=this._getLogBase();return null!=t&&t>0}get plotArea(){return this._parea}set plotArea(t){if(t!=this._parea){this._parea=asType(t,PlotArea,!0);this._invalidate()}}get labelPadding(){return this._labelPadding}set labelPadding(t){if(t!=this._labelPadding){this._labelPadding=asNumber(t,!0,!0);this._invalidate()}}get _groupClass(){return this.axisType===AxisType.X?FlexChartCore._CSS_AXIS_X:FlexChartCore._CSS_AXIS_Y}onRangeChanged(t){this.rangeChanged.raise(this,t)}_getPosition(){if(this.axisType==AxisType.X){if(this.position==Position.Auto)return Position.Bottom}else if(this.axisType==AxisType.Y&&this.position==Position.Auto)return Position.Left;return this.position}_isOverlapped(t,e,i,s){var n=this._lbls;if(null!=n&&n.length>1){const s=n.length,r=this._values&&this._values.length==s?this._values:null;let a=0,h=0;for(let o=0;o<s;o++){const s=r?r[o]:o;if(s>=this._actualMin&&s<=this._actualMax){const r=e*(s-this._actualMin)/(this._actualMax-this._actualMin),l=t.measureString(n[o],i,this._groupClass);if(this.axisType==AxisType.X){if(o>0&&Math.abs(r-a)<.5*(l.width+h))return!0;a=r;h=l.width}else this.axisType,AxisType.Y}}}return!1}_getHeight(t,e){this._actualAngle=null;const i=FlexChartCore._CSS_LABEL,s=FlexChartCore._CSS_TITLE;let n=.1*this._getActualRange();const r=this._lbls;let a=this.labelAngle;if(this.labels&&this._chart._getChartType()!==ChartType.Funnel){n=this._updateAutoFormat(n);if(null!=r&&r.length>0){const s=r.length,n=this._values&&this._values.length==s?this._values:null;this._annoSize=new Size;for(let e=0;e<s;e++){const s=n?n[e]:e;if(s>=this._actualMin&&s<=this._actualMax){let n=r[e],a=i;if(this.itemFormatter){const e=this._getFormattedItem(t,s,n,new Point,i,!0);n=e.text;a=e.cls}const h=t.measureString(n,a,this._groupClass);this.axisType,AxisType.X,h.width>this._annoSize.width&&(this._annoSize.width=h.width);h.height>this._annoSize.height&&(this._annoSize.height=h.height)}}null==a&&this.axisType==AxisType.X&&(this._isOverlapped(t,Math.max(10,e-this._annoSize.width),i,this.axisType)?a=this._actualAngle=-45:this._actualAngle=0)}else if(isNumber(this.majorUnit)&&this._axisType===AxisType.Y&&this.itemFormatter){const e=[],s=[];this._annoSize=new Size;this._getAutoLbsAndVals(e,s);for(let e=0;e<s.length;e++){const n=s[e];let r=this._formatValue(n),a=i;r=this._getFormattedItem(t,n,r,new Point,i,!0).text;a=i;const h=t.measureString(r,a,this._groupClass);h.width>this._annoSize.width&&(this._annoSize.width=h.width);h.height>this._annoSize.height&&(this._annoSize.height=h.height)}}else{let e=this._actualMin-n,s=this._formatValue(e),r=i;if(this.itemFormatter){s=this._getFormattedItem(t,e,s,new Point,i,!0).text;r=i}let a=t.measureString(s,r,this._groupClass);this._annoSize=a;e=this._actualMax+n;s=this._formatValue(e);r=i;if(this.itemFormatter){s=this._getFormattedItem(t,e,s,new Point,i,!0).text;r=i}a=t.measureString(s,r,this._groupClass);a.width>this._annoSize.width&&(this._annoSize.width=a.width);a.height>this._annoSize.height&&(this._annoSize.height=a.height)}this._annoSizeBase=new Size(this._annoSize.width,this._annoSize.height);if(a){a>90?a=90:a<-90&&(a=-90);const t=a*Math.PI/180,e=this._annoSize.width,i=this._annoSize.height;this._annoSize.width=e*Math.abs(Math.cos(t))+i*Math.abs(Math.sin(t));this._annoSize.height=e*Math.abs(Math.sin(t))+i*Math.abs(Math.cos(t));this._actualAngle=a}}else{this._annoSize=new Size(8,8);this._annoSizeBase=new Size(this._annoSize.width,this._annoSize.height)}let h=0;if(this.labels){h=2*(this._labelPadding||5);this._axisType==AxisType.X?h+=this._annoSize.height:h+=this._annoSize.width+this._TICK_LABEL_DISTANCE+2}const o=this._TICK_HEIGHT;let l=this._TICK_OVERLAP,_=this.majorTickMarks;_==TickMark.Outside?l=1:_==TickMark.Inside?l=-1:_==TickMark.Cross&&(l=0);null==_&&(_=TickMark.Outside);_!=TickMark.None&&(h+=.5*(1+l)*o);if(this._title){const e=this._title;this._szTitle=t.measureString(e,s,this._groupClass);h+=this._szTitle.height}else this._szTitle=void 0;if(this._lbls&&this.groupsOptions&&this.groupsOptions.display!==AxisGroupsDisplay.None){this._groupsPanel||(this._groupsPanel=new _AxisGroups(this));this._groupsPanel.createGroups();h+=this._groupsPanel.getHeight(t)}t.fontSize=null;return h}_updateAutoFormat(t){if(this._isTimeAxis){const e=this.format,i=.001*this._getActualRange()/10,s=new _timeSpan(i*_timeSpan.TicksPerSecond),n=isNumber(this._majorUnit)?_timeSpan.fromDays(this._majorUnit):_timeHelper.NiceTimeSpan(s,e);e||(this._tfmt=_timeHelper.GetTimeDefaultFormat(1e3*n.TotalSeconds,0));t=n.TotalSeconds}return t}_getActualRange(){return this._actualMax-this._actualMin}_updateActualLimitsByChartType(t,e,i){if(t&&t.length>0&&!this._isTimeAxis){const t=this._chart._getChartType();if(t!=ChartType.Column&&t!=ChartType.Bar){e-=.5;i+=.5}}return{min:e,max:i}}_updateActualLimits(t,e,i,s=null,n=null){var r=this._actualMin,a=this._actualMax;this._isTimeAxis=t==DataType.Date;var h=this._updateActualLimitsByChartType(s,e,i);e=h.min;i=h.max;var o=this._min,l=this._max;isDate(o)&&(o=o.valueOf());isDate(l)&&(l=l.valueOf());let _=this._getSeries(),c=this._chart&&(null!=_&&void 0!==_._getChartType()||this._chart._stacking!==Stacking.Stacked100pc);c||(c=this._chart._isRotated()?this.axisType==AxisType.Y:this.axisType==AxisType.X);this._actualMin=null!=o&&c?o:e;const d=this._actualMin;this._actualMax=null!=l&&c?l:i;if(d==this._actualMax)if(void 0!==o&&void 0===l)this._actualMax+=1;else if(void 0===o&&void 0!==l)this._actualMin-=1;else if(0===d)this._actualMax=1;else{const t=Math.abs(d);if(t<1){this._actualMin-=t;this._actualMax+=t}else{this._actualMin-=1;this._actualMax+=1}}if(this._getLogBase()>0){const t=this.logBase,e=Math.log(t);if(!this._max){const i=Math.ceil(Math.log(this._actualMax)/e);this._actualMax=Math.pow(t,i)}if(!this._min){const i=Math.floor(Math.log(this._actualMin)/e);this._actualMin=Math.pow(t,i)}(this._actualMin<=0||!isNumber(this._actualMin))&&(this._actualMin=1);this._actualMax<this._actualMin?this._actualMax=this._actualMin+1:this._actualMax===this._actualMin&&(this._actualMin=.1*this._actualMax)}(r!=this._actualMin&&(isNumber(r)||isNumber(this._actualMin))||a!=this._actualMax&&(isNumber(a)||isNumber(this._actualMax)))&&this.onRangeChanged();if(this._items){this._values=[];this._lbls=[];const t=this._items.length;let e="value",i="text";if(this.binding){const t=this.binding.split(",");if(2==t.length){e=t[0];i=t[1]}}for(let s=0;s<t;s++){const t=this._items[s],n=t[e];if(isNumber(n)){this._values.push(n);this._lbls.push(t[i])}else if(isDate(n)){this._values.push(n.getTime());this._lbls.push(t[i])}}}else{this._lbls=s;this._values=n}}_layout(t,e){var i=this.axisType==AxisType.Y;this._plotrect=e;this._axrect=i?new Rect(t.left,t.top,t.height,t.width):t;this._groupsPanel&&this._groupsPanel.layout()}_hasVisibileSeries(){for(var t,e=this._chart.series,i=0,s=e.length;i<s;i++)if((t=e[i].visibility)==SeriesVisibility.Plot||t==SeriesVisibility.Visible)return!0;return!1}_getSeries(){if(this._chart){let t=this._chart.series,e=0,i=t.length;for(;e<i;e++)if(t[e].axisY==this||t[e].axisX==this)return t[e]}return null}_render(t){if(this.position==Position.None)return;if(!this._hasVisibileSeries())return;this.axisLabels.length=0;this._vals={};var e=0;this.labelAngle&&((e=this.labelAngle)>90?e=90:e<-90&&(e=-90));null==this.labelAngle&&null!=this._actualAngle&&(e=this._actualAngle);var i=FlexChartCore._FG;let s=[],n=!1;var r=this._getActualRange();if(isNumber(r)){let r=[];this._rects=[];this._vals.major=s;this._vals.hasLbls=[];if(this._lbls&&this._lbls.length>0){r=this._lbls;if(0==this._values.length){n=!0;for(let t=0;t<r.length;t++)s.push(t)}else s=this._values}else this._getAutoLbsAndVals(r,s);const a=Math.min(s.length,r.length);t.textFill=i;const h=this._TICK_HEIGHT;let o=this._TICK_OVERLAP,l=this.majorTickMarks;null==l&&(l=TickMark.Outside);l==TickMark.Outside?o=1:l==TickMark.Inside?o=-1:l==TickMark.Cross&&(o=0);const _=.5*(o-1)*h,c=.5*(1+o)*h;if(this._isTimeAxis&&a>=2){if(s[1]-s[0]>864e5){null==this._min&&(this._actualMin=_timeHelper.FloorDay(this._actualMin));null==this._max&&(this._actualMax=_timeHelper.CeilDay(this._actualMax))}}for(let i=0;i<a;i++){let a=!0;const h=s[i],o=r[i];let d=this.labels;d&&(n||this.itemsSource)&&this.majorUnit&&i%this.majorUnit!=0&&(d=!1);if(h>=this._actualMin&&h<=this._actualMax){const s=t.textFill;a=this._renderLabelsAndTicks(t,i,h,o,e,l,d,_,c);t.textFill=s}this._vals.hasLbls.push(a);a&&this.axisLabels.push(o)}}(this.minorGrid||this.minorTickMarks!=TickMark.None)&&this._renderMinor(t,s,n);t.stroke=i;t.fontSize=null;this._renderLineAndTitle(t);this._lbls&&this.groupsOptions&&this.groupsOptions.display!==AxisGroupsDisplay.None&&this._groupsPanel&&this._groupsPanel.render(t);t.stroke=null;t.fontSize=null;t.textFill=null;t.strokeWidth=null}_getAutoLbsAndVals(t,e){var i=this._actualMax-this._actualMin,s=this._calcMajorUnit();0==s&&(s=.1*this._niceTickNumber(i));var n=Math.floor(this._actualMin/s)*s;n<this._actualMin&&(n+=s);var r=Math.min(Axis.MAX_MAJOR,Math.floor(i/s)+1);if(this._isTimeAxis){this._createTimeLabels(n,r,e,t);this._addMinMaxLabels(e,t)}else if(this._getLogBase()){this._createLogarithmicLabels(this._actualMin,this._actualMax,this.majorUnit,e,t,!0);this._addMinMaxLabels(e,t)}else{this._createLabels(n,r,s,e,t);this._addMinMaxLabels(e,t)}}_renderLineAndTitle(t){var e=this._getPosition(),i=this.axisType==AxisType.Y,s=e!=Position.Top&&e!=Position.Right,n=FlexChartCore._CSS_TITLE,r=FlexChartCore._CSS_LINE;if(i)if(s){if(this._title){const e=new Point(this._axrect.left+.5*this._szTitle.height,this._axrect.top+.5*this._axrect.height);FlexChartCore._renderRotatedText(t,this._title,e,1,1,e,-90,n,this._groupClass)}this.axisLine&&t.drawLine(this._axrect.right,this._axrect.top,this._axrect.right,this._axrect.bottom,r)}else{if(this._title){const e=new Point(this._axrect.right-.5*this._szTitle.height,this._axrect.top+.5*this._axrect.height);FlexChartCore._renderRotatedText(t,this._title,e,1,1,e,90,n,this._groupClass)}this.axisLine&&t.drawLine(this._axrect.left,this._axrect.top,this._axrect.left,this._axrect.bottom,r)}else if(s){this.axisLine&&t.drawLine(this._axrect.left,this._axrect.top,this._axrect.right,this._axrect.top,r);this._title&&FlexChartCore._renderText(t,this._title,new Point(this._axrect.left+.5*this._axrect.width,this._axrect.bottom),1,2,n)}else{this.axisLine&&t.drawLine(this._axrect.left,this._axrect.bottom,this._axrect.right,this._axrect.bottom,r);this._title&&FlexChartCore._renderText(t,this._title,new Point(this._axrect.left+.5*this._axrect.width,this._axrect.top),1,0,n)}}_renderMinor(t,e,i){var s=this._getPosition(),n=this.axisType==AxisType.Y,r=s!=Position.Top&&s!=Position.Right;this._getLogBase()?this._createLogarithmicMinors(t,e,n,r,i):this._createMinors(t,e,n,r,i)}_renderRotatedText(t,e,i,s,n,r,a,h,o,l,_){if(this.itemFormatter){const n=this._getFormattedItem(t,e,i,s,o);if(n){i=n.text;o=n.cls}else i=null}FlexChartCore._renderRotatedText(t,i,s,n,r,a,h,o,l,_)}_getFormattedItem(t,e,i,s,n,r=!1){if(this.itemFormatter){const a=s.clone();this._plotrect&&(this.axisType==AxisType.X?this.position==Position.Top?a.y=this._plotrect.top:a.y=this._plotrect.bottom:this.position==Position.Right?a.x=this._plotrect.right:a.x=this._plotrect.left);let h={val:e,text:i,pos:a,cls:n};r&&(t.readOnly=!0);h=this.itemFormatter(t,h);r&&(t.readOnly=!1);return h}}_renderLabelsAndTicks(t,e,i,s,n,r,a,h,o){var l=this._getPosition(),_=!1,c=this.axisType==AxisType.Y,d=l!=Position.Top&&l!=Position.Right,u=this.labelPadding||5,g=this._TICK_WIDTH,p=this._getLabelAlign(c),f=FlexChartCore._CSS_LABEL,m=FlexChartCore._CSS_GRIDLINE,x=FlexChartCore._CSS_TICK,b=FlexChartCore._FG,y=FlexChartCore._FG,S=this._GRIDLINE_WIDTH,v=i!=this._actualMin&&this.majorGrid;if(c){const e=this.convert(i);if(v){t.stroke=b;t.strokeWidth=S;t.drawLine(this._plotrect.left,e,this._plotrect.right,e,m)}t.stroke=y;t.strokeWidth=g;if(d){if(a){_=!0;const r=new Point(this._axrect.right-o-this._TICK_LABEL_DISTANCE-u,e);n>0?90==n?this._renderRotatedText(t,i,s,r,1,0,r,n,f,this._groupClass):this._renderRotatedText(t,i,s,r,2,1,r,n,f,this._groupClass):n<0?-90==n?this._renderRotatedText(t,i,s,r,1,2,r,n,f,this._groupClass):this._renderRotatedText(t,i,s,r,2,1,r,n,f,this._groupClass):_=this._renderLabel(t,i,s,r,2,p,f)}r!=TickMark.None&&_&&t.drawLine(this._axrect.right-h,e,this._axrect.right-o,e,x)}else{if(a){_=!0;const r=new Point(this._axrect.left+o+this._TICK_LABEL_DISTANCE+u,e);n>0?90==n?this._renderRotatedText(t,i,s,r,1,2,r,n,f,this._groupClass):this._renderRotatedText(t,i,s,r,0,1,r,n,f,this._groupClass):n<0?-90==n?this._renderRotatedText(t,i,s,r,1,0,r,n,f,this._groupClass):this._renderRotatedText(t,i,s,r,0,1,r,n,f,this._groupClass):_=this._renderLabel(t,i,s,r,0,p,f)}r!=TickMark.None&&_&&t.drawLine(this._axrect.left+h,e,this._axrect.left+o,e,x)}}else{let e=this.convert(i);if(v&&a){t.stroke=b;t.strokeWidth=S;t.drawLine(e,this._plotrect.top,e,this._plotrect.bottom,m)}this.overlappingLabels==OverlappingLabels.Auto&&this._xCross(e)&&(a=!1);t.stroke=y;t.strokeWidth=g;if(d){if(a){const r=new Point(e,this._axrect.top+o+u);_=0!=n?this._renderRotatedLabel(t,i,s,r,p,n,f,d):this._renderLabel(t,i,s,r,p,0,f)}if(r!=TickMark.None&&_){e=this.convert(i);t.drawLine(e,this._axrect.top+h,e,this._axrect.top+o,x)}}else{if(a){const r=new Point(e,this._axrect.bottom-o-u);_=0!=n?this._renderRotatedLabel(t,i,s,r,p,n,f,d):this._renderLabel(t,i,s,r,p,2,f)}if(r!=TickMark.None&&_){e=this.convert(i);t.drawLine(e,this._axrect.bottom-h,e,this._axrect.bottom-o,x)}}}return _}_xCross(t){var e=this._rects.length;for(let i=0;i<e;i++){const e=this._rects[i];if(t>=e.left&&t<=e.right)return!0}return!1}_createMinors(t,e,i,s,n){if(e){const r=this.majorUnit?this._isTimeAxis?24*this.majorUnit*3600*1e3:this.majorUnit:e.length>1?e[1]-e[0]:e[0],a=isNumber(this.minorUnit)?this._isTimeAxis?24*this.minorUnit*3600*1e3:this.minorUnit:.5*r;if(a<=0)return;const h=[];for(let t=e[0];t>this._actualMin&&h.length<Axis.MAX_MINOR;t-=a)-1==e.indexOf(t)&&h.push(t);for(let t=e[0]+a;t<this._actualMax&&h.length<Axis.MAX_MINOR;t+=a)(-1==e.indexOf(t)||n&&this.majorUnit&&t%this.majorUnit!=0)&&h.push(t);this._renderMinors(t,h,i,s)}}_createLogarithmicMinors(t,e,i,s,n){if(e&&(!this.minorUnit||this.minorUnit<this._getLogBase())){let n=this.logBase;this.majorUnit>n&&(n=this.majorUnit);if(0==e.length){const t=Math.log(n),i=Math.floor(Math.log(this._actualMin)/t),s=Math.ceil(Math.log(this.actualMax)/t);if(this.majorUnit>0){e.push(Math.pow(n,i));e.push(Math.pow(n,s))}else{e.push(Math.pow(n,s));e.push(Math.pow(n,i))}}this.minorUnit||(this.minorUnit=n-1<1?.2*(n-1):.2*n);const r=[];if(this.majorUnit>0){for(let t=e[0]-e[0]/n*this.minorUnit;t>=this._actualMin&&r.length<Axis.MAX_MINOR;t-=e[0]/n*this.minorUnit)r.push(t);for(let t=0;t<e.length-1;t++)for(let i=e[t]+e[t]*this.minorUnit;i<e[t+1]&&r.length<Axis.MAX_MINOR;i+=e[t]*this.minorUnit)i>=this._actualMin&&i<=this._actualMax&&r.push(i);for(let t=e[e.length-1]+e[e.length-1]*this.minorUnit;t<=this._actualMax&&r.length<Axis.MAX_MINOR;t+=e[e.length-1]*this.minorUnit)r.push(t)}else{for(let t=e[e.length-1]-e[e.length-1]/n*this.minorUnit;t>=this._actualMin&&r.length<Axis.MAX_MINOR;t-=e[e.length-1]/n*this.minorUnit)r.push(t);for(let t=0;t<e.length-1;t++)for(let i=e[t]-e[t+1]*this.minorUnit;i>e[t+1]&&r.length<Axis.MAX_MINOR;i-=e[t+1]*this.minorUnit)i>=this._actualMin&&i<=this._actualMax&&r.push(i);for(let t=e[0]+e[0]*this.minorUnit;t<=this._actualMax&&r.length<Axis.MAX_MINOR;t+=e[0]*this.minorUnit)r.push(t)}this._renderMinors(t,r,i,s)}}_renderMinors(t,e,i,s){var n=this._TICK_HEIGHT,r=this._TICK_WIDTH,a=this._TICK_OVERLAP,h=FlexChartCore._FG,o=this.minorTickMarks,l=!0;this._vals.minor=e;o==TickMark.Outside?a=1:o==TickMark.Inside?a=-1:o==TickMark.Cross?a=0:l=!1;var _=.5*(a-1)*n,c=.5*(1+a)*n,d=e?e.length:0,u=this.minorGrid,g=this._plotrect,p=this._GRIDLINE_WIDTH,f=FlexChartCore._FG,m=FlexChartCore._CSS_GRIDLINE_MINOR,x=FlexChartCore._CSS_TICK_MINOR;for(let n=0;n<d;n++)if(e[n]>=this.actualMin&&e[n]<=this.actualMax)if(i){const i=this.convert(e[n]);if(l){t.stroke=h;t.strokeWidth=r;s?t.drawLine(this._axrect.right-_,i,this._axrect.right-c,i,x):t.drawLine(this._axrect.left+_,i,this._axrect.left+c,i,x)}if(u){t.stroke=f;t.strokeWidth=p;t.drawLine(g.left,i,g.right,i,m)}}else{const i=this.convert(e[n]);if(l){t.stroke=h;t.strokeWidth=r;s?t.drawLine(i,this._axrect.top+_,i,this._axrect.top+c,x):t.drawLine(i,this._axrect.bottom-_,i,this._axrect.bottom-c,x)}if(u){t.stroke=f;t.strokeWidth=p;t.drawLine(i,g.top,i,g.bottom,m)}}}_renderLabel(t,e,i,s,n,r,a){var h=!1;if(this.itemFormatter){const n=this._getFormattedItem(t,e,i,s,a);if(n){i=n.text;a=n.cls}else i=null}if(i){const e=this._rects,o=this.overlappingLabels==OverlappingLabels.Auto&&!isNumber(this._actualAngle),l=FlexChartCore._renderText(t,i,s,n,r,a,this._groupClass,null,t=>{if(o){const i=e.length;for(let s=0;s<i;s++)if(FlexChartCore._intersects(e[s],t))return!1}return!0});if(l){l.left+=4;l.width+=8;e.push(l);h=!0}}return h}_renderRotatedLabel(t,e,i,s,n,r,a,h){if(this.itemFormatter){const n=this._getFormattedItem(t,e,i,s,a);if(n){i=n.text;a=n.cls}else i=null}if(i){const e=t.measureString(i,a,this._groupClass),o=.5*e.height,l=.5*e.width*Math.abs(Math.sin(r*Math.PI/180)),_=.5*e.width,c=.5*(e.width*Math.abs(Math.cos(r*Math.PI/180))+e.height*Math.abs(Math.sin(r*Math.PI/180))),d=new Point(s.x,s.y),u=new Point(s.x,s.y);this.labelAlign||(n=90==r||-90==r?1:h?r>0?0:2:r>0?2:0);if(h){s.y+=o+l;d.y+=o+l-.5*e.height}else{s.y-=o+l-e.height;d.y-=o+l-.5*e.height}let g=0;if(2===n){d.x-=c;s.x-=_+c;g=d.x+c-e.height-2}else if(0===n){d.x+=c;s.x-=_-c;g=d.x-c}else{s.x-=_;g=d.x-e.height/2}const p=new Rect(g,u.y,e.height+2,e.width),f=this._rects;if(this.overlappingLabels==OverlappingLabels.Auto){const t=f.length;for(let e=0;e<t;e++)if(FlexChartCore._intersects(f[e],p))return!1}FlexChartCore._renderRotatedText(t,i,s,0,2,d,r,a,this._groupClass);this._rects.push(p);return!0}return!1}_getLabelAlign(t){var e=1;if(this.labelAlign){const i=this.labelAlign.toLowerCase();t?"top"==i?e=0:"bottom"==i&&(e=2):"left"==i?e=0:"right"==i&&(e=2)}return e}_addMinMaxLabels(t,e){if(this.labelMin){const i=this.actualMin;if(isFinite(i)&&!t.includes(i)){e.splice(0,0,this._formatValue(i));t.splice(0,0,i)}}if(this.labelMax){const i=this.actualMax;if(isFinite(i)&&!t.includes(i)){e.splice(0,0,this._formatValue(i));t.splice(0,0,i)}}}convert(t,e,i){var s=null==e?this._actualMax:e,n=null==i?this._actualMin:i;if(s==n||!this._axrect)return 0;var r=this._axrect.left,a=this._axrect.width,h=this._axrect.top,o=this._axrect.height;if(null!=this._customConvert){const e=this._customConvert(t,n,s);return this.axisType==AxisType.Y?h+e*o:r+e*a}if(this._getLogBase()){if(t<=0)return NaN;const e=Math.log(s/n);return this._reversed?this.axisType==AxisType.Y?h+Math.log(t/n)/e*o:r+a-Math.log(t/n)/e*a:this.axisType==AxisType.Y?h+o-Math.log(t/n)/e*o:r+Math.log(t/n)/e*a}return this._reversed?this.axisType==AxisType.Y?h+(t-n)/(s-n)*o:r+a-(t-n)/(s-n)*a:this.axisType==AxisType.Y?h+o-(t-n)/(s-n)*o:r+(t-n)/(s-n)*a}convertBack(t){if(this._actualMax==this._actualMin)return 0;var e=this._plotrect.left,i=this._plotrect.width,s=this._plotrect.top,n=this._plotrect.height,r=this._getActualRange(),a=this._getLogBase();if(null!=this._customConvertBack)return this.axisType==AxisType.Y?this._customConvertBack((t-s)/n,this._actualMin,this._actualMax):this._customConvertBack((t-e)/i,this._actualMin,this._actualMax);if(a){let r=0;r=this._reversed?this.axisType==AxisType.Y?(t-s)/n:1-(t-e)/i:this.axisType==AxisType.Y?1-(t-s)/n:(t-e)/i;return Math.pow(a,(Math.log(this._actualMin)+(Math.log(this._actualMax)-Math.log(this._actualMin))*r)/Math.log(a))}return this._reversed?this.axisType==AxisType.Y?this._actualMin+(t-s)*r/n:this._actualMin+(e+i-t)*r/i:this.axisType==AxisType.Y?this._actualMax-(t-s)*r/n:this._actualMin+(t-e)*r/i}get axisType(){var t=this._chart;if(t){if(t.axisX==this)return AxisType.X;if(t.axisY==this)return AxisType.Y}return this._axisType}_getMinNum(){return this._actualMin}_getMaxNum(){return this._actualMax}_getTitleSize(){return this._szTitle?this._szTitle:new Size}_invalidate(){this._chart&&this._chart.invalidate()}_cvCollectionChanged(t,e){this._invalidate()}_createLabels(t,e,i,s,n){for(let r=0;r<e;r++){const e=(t+i*r).toFixed(14),a=parseFloat(e),h=this._formatAxisValue(a),o=n.indexOf(h);if(o>=0&&!isNumber(this.majorUnit)&&!this._format){const t=parseFloat(h);Math.abs(t-a)<Math.abs(t-s[o])&&(s[o]=a)}else{s.push(a);n.push(h)}}}_createLogarithmicLabels(t,e,i,s,n,r){var a=this._getLogBase(),h=Math.log(a),o=Math.floor(Math.log(t)/h),l=Math.ceil(Math.log(e)/h),_=a,c=!0;if(i>0){c=!1;_=i}_<a&&(_=a);var d=(l-o+1)*a/_,u=1;if(r){const t=this._getPosition(),e=this._getAnnoNumber(t==Position.Left||t==Position.Right);d>e?u=Math.floor(d/e+1):c&&(d<=.2*e?_=.2*a:d<=.1*e&&(_=.1*a))}for(let i=o;i<=l;i+=u)if(c){const r=Math.pow(a,i);for(let i=0;i*_<a-1;i++){const a=r*(1+i*_);if(a>=t&&a<=e)if(0==i){s.unshift(a);n&&n.unshift(this._formatValue(a))}else if(!this.minorGrid&&this.minorTickMarks==TickMark.None){s.push(a);n&&n.push(this._formatValue(a))}}}else{const r=Math.pow(_,i);if(r>=t&&r<=e){s.push(r);n&&n.push(this._formatValue(r))}}}_createTimeLabels(t,e,i,s){var n=this._actualMin,r=this._actualMax,a=new Date(n),h=new Date(r),o=this._format,l=this._getAnnoNumber(this._axisType==AxisType.Y);l>10&&(l=10);var _=.001*(this._actualMax-this._actualMin)/l,c=new _timeSpan(_*_timeSpan.TicksPerSecond),d=isNumber(this._majorUnit)?_timeSpan.fromDays(this._majorUnit):_timeHelper.NiceTimeSpan(c,o);o||(this._tfmt=o=_timeHelper.GetTimeDefaultFormat(1e3*d.TotalSeconds,0));var u=d.Ticks,g=_timeHelper.RoundTime(n,d.TotalDays,!1);isFinite(g)&&(n=g);var p=_timeHelper.RoundTime(r,d.TotalDays,!0);isFinite(p)&&(r=p);var f=new Date(n);new Date(r);if(d.TotalDays>=365&&!isNumber(this._majorUnit)){(f=new Date(a.getFullYear(),0,1))<a&&f.setFullYear(f.getFullYear()+1);let t=d.TotalDays/365;t-=t%1;for(let e=f;e<=h&&t;e.setFullYear(e.getFullYear()+t)){const t=e.valueOf();i.push(t);s.push(this._formatValue(t))}}else if(d.TotalDays>=30&&!isNumber(this._majorUnit)){(f=new Date(a.getFullYear(),a.getMonth(),1))<a&&f.setMonth(f.getMonth()+1);let t=d.TotalDays/30;t-=t%1;for(let e=f;e<=h;e.setMonth(e.getMonth()+t)){const t=e.valueOf();i.push(t);s.push(this._formatValue(t))}}else{let t=1e3*u/_timeSpan.TicksPerSecond,e=f,n=a.getTime()-e.getTime();n>t&&(e=new Date(e.getTime()+Math.floor(n/t)*t));for(;e<=h&&t;e=new Date(e.getTime()+t)){const t=e.valueOf();i.push(t);s.push(this._formatValue(t))}}}_formatValue(t){if(this._isTimeAxis)return this._format?Globalize.format(new Date(t),this._format):Globalize.format(new Date(t),this._tfmt);if(this._format)return Globalize.format(t,this._format);{const e=t==Math.round(t)?"n0":"n";return Globalize.format(t,e)}}_hitTest(t){return this._groupsPanel?this._groupsPanel.hitTest(t):void 0}_formatAxisValue(t,e){if(this._isTimeAxis)return this._format?Globalize.format(new Date(t),this._format):Globalize.format(new Date(t),this._tfmt);if(this._format)return Globalize.format(t,this._format);if(isNumber(t)){const i=this._findFormat(t,e);return Globalize.format(t,i)}return t}_findFormat(t,e){var i=t==Math.round(t)?"n0":"n";void 0!==e&&(i+=e.toString());if("n"==i){const s=t.toFixed(14),n=s.search(".");if(n>=0){e=1;for(let t=s.length-1;t>=n;t--)if("0"!=s[t]){e=t-n-1;break}i+=e.toString()}}return i}_calcMajorUnit(){var t=this._majorUnit;if(!isNumber(t)){const e=this._getActualRange(),i=this._nicePrecision(e),s=e/this._getAnnoNumber(this.axisType==AxisType.Y);(t=this._niceNumber(2*s,-i,!0))<s&&(t=this._niceNumber(s,1-i,!1));t<s&&(t=this._niceTickNumber(s))>s&&(t*=.5)}return t}_getAnnoNumber(t){var e=t?this._annoSizeBase&&this._annoSizeBase.height:this._annoSize&&this._annoSize.width,i=t?this._axrect&&this._axrect.height:this._axrect&&this._axrect.width;if(e>0&&i>0){let t=Math.floor(i/(e+6));t<=0&&(t=1);return t}return 10}_nicePrecision(t){if(!isNumber(t)||t<=0)return 0;var e,i=Math.log(t)/Math.LN10;e=i>=0?Math.floor(i):Math.ceil(i);var s=t/Math.pow(10,e);if(s<3){e=1-e;(s=t/Math.pow(10,e))<3&&(e+=1)}return e}_niceTickNumber(t){if(0==t)return t;t<0&&(t=-t);var e=Math.log(t)/Math.LN10,i=Math.floor(e),s=t/Math.pow(10,i),n=10;s<=1?n=1:s<=2?n=2:s<=5&&(n=5);return n*Math.pow(10,i)}_niceNumber(t,e,i){if(0==t)return t;t<0&&(t=-t);var s=t/Math.pow(10,e),n=10;i?s<1.5?n=1:s<3?n=2:s<4.5?n=4:s<7&&(n=5):s<=1?n=1:s<=2?n=2:s<=5&&(n=5);return n*Math.pow(10,e)}get _uniqueId(){return this.__uniqueId}}Axis.MAX_MAJOR=1e3;Axis.MAX_MINOR=2e3;Axis._id=0;export class AxisCollection extends ObservableArray{getAxis(t){var e=this.indexOf(t);return e>-1?this[e]:null}indexOf(t){for(let e=0;e<this.length;e++)if(this[e].name==t)return e;return-1}}!function(t){t[t.tickf7=-7]="tickf7";t[t.tickf6=-6]="tickf6";t[t.tickf5=-5]="tickf5";t[t.tickf4=-4]="tickf4";t[t.tickf3=-3]="tickf3";t[t.tickf2=-2]="tickf2";t[t.tickf1=-1]="tickf1";t[t.second=1]="second";t[t.minute=60]="minute";t[t.hour=3600]="hour";t[t.day=86400]="day";t[t.week=604800]="week";t[t.month=2678400]="month";t[t.year=31536e3]="year";t[t.maxtime=Number.MAX_VALUE]="maxtime"}(_tmInc||(_tmInc={}));class _timeSpan{constructor(t){this.ticks=t}get Ticks(){return this.ticks}get TotalSeconds(){return this.ticks/1e7}get TotalDays(){return this.ticks/1e7/86400}static fromSeconds(t){return new _timeSpan(1e7*t)}static fromDays(t){return new _timeSpan(1e7*t*24*60*60)}}_timeSpan.TicksPerSecond=1e7;class _timeHelper{init(t){this.year=t.getFullYear();this.month=t.getMonth();this.day=t.getDate();this.hour=t.getHours();this.minute=t.getMinutes();this.second=t.getSeconds()}constructor(t){isDate(t)?this.init(t):isNumber(t)&&this.init(FlexChartCore._fromOADate(t))}getTimeAsDateTime(){let t=0,e=0,i=0;if(this.hour>=24){this.hour-=24;this.day+=1}if(this.month<0){t=-1-this.day;this.month=1}else if(this.month>11){t=this.month-12;this.month=11}if(this.day<1){e=-1-this.day;this.day=1}else if(this.day>28&&1==this.month){e=this.day-28;this.day=28}else if(this.day>30&&(3==this.month||5==this.month||8==this.month||10==this.month)){e=this.day-30;this.day=30}else if(this.day>31){e=this.day-31;this.day=31}if(this.second>59){i=this.second-59;this.second=59}let s=0;if(this.minute>59){s=this.minute-59;this.minute=59}return new Date(this.year,this.month,this.day,this.hour,this.minute,this.second)}getTimeAsDouble(){return this.getTimeAsDateTime().valueOf()}static tround(t,e,i){var s=t/e*e;s-=s%1;i&&s!=t&&(s+=e-=e%1);return s}static FloorDay(t){const e=new Date(t);return new Date(e.getFullYear(),e.getMonth(),e.getDate()).valueOf()}static CeilDay(t){const e=new Date(t),i=new Date(e.getFullYear(),e.getMonth(),e.getDate()).valueOf();return i<t?new Date(e.getFullYear(),e.getMonth(),e.getDate()+1).valueOf():i}static RoundTime(t,e,i){var s=24*e*60*60;if(s>0){const e=new _timeHelper(t);if(s<_tmInc.minute){e.second=_timeHelper.tround(e.second,s,i);return e.getTimeAsDouble()}e.second=0;if(s<_tmInc.hour){s/=_tmInc.minute;e.minute=_timeHelper.tround(e.minute,s,i);return e.getTimeAsDouble()}e.minute=0;if(s<_tmInc.day){s/=_tmInc.hour;e.hour=_timeHelper.tround(e.hour,s,i);return e.getTimeAsDouble()}e.hour=0;if(s<_tmInc.month){s/=_tmInc.day;e.day=_timeHelper.tround(e.day,s,i);return e.getTimeAsDouble()}e.day=1;if(s<_tmInc.year){s/=_tmInc.month;1!=e.month&&(e.month=_timeHelper.tround(e.month,s,i));return e.getTimeAsDouble()}e.month=1;s/=_tmInc.year;e.year=_timeHelper.tround(e.year,s,i);return e.getTimeAsDouble()}{let n=t;const r=n-s;let a=r/e*e;i&&a!=r&&(a+=e);n=s+a;return n}}static TimeSpanFromTmInc(t){var e=_timeSpan.fromSeconds(1);if(t!=_tmInc.maxtime)if(t>_tmInc.tickf1)e=_timeSpan.fromSeconds(t);else{let i=t,s=1;i+=7;for(;i>0;){s*=10;i--}e=new _timeSpan(s)}return e}static manualTimeInc(t){var e=_tmInc.second;if(null==t||0==t.length)return e;var i=t.indexOf("f");if(i>=0){let s=-1;if(i>0&&"%"==t.substr(i-1,1))s=-1;else for(let e=1;e<6&&!(i+e>=t.length);e++){if("f"!=t.substr(i+e,1))break;s--}e=s}else t.indexOf("s")>=0?e=_tmInc.second:t.indexOf("m")>=0?e=_tmInc.minute:t.indexOf("h")>=0||t.indexOf("H")?e=_tmInc.hour:t.indexOf("d")>=0?e=_tmInc.day:t.indexOf("M")>=0?e=_tmInc.month:t.indexOf("y")>=0&&(e=_tmInc.year);return e}static getNiceInc(t,e,i){for(let s=0;s<t.length;s++){const n=t[s]*i;if(e<=n)return n}return 0}static NiceTimeSpan(t,e){var i=_tmInc.second;null!=e&&e.length>0&&(i=_timeHelper.manualTimeInc(e));var s=0,n=0;if(i<_tmInc.second&&t.TotalSeconds<10){s=t.Ticks;n=_timeHelper.TimeSpanFromTmInc(i).Ticks;for(;s>10*n;)n*=10;let e=n;s>e&&(e*=2);s>e&&(e=5*n);s>e&&(e=10*n);return new _timeSpan(e)}if(0==(s=Math.ceil(t.TotalSeconds)))return _timeHelper.TimeSpanFromTmInc(i);n=1;if(i<_tmInc.minute){if(s<_tmInc.minute&&0!=(n=_timeHelper.getNiceInc([1,2,5,10,15,30],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.minute}if(i<_tmInc.hour){if(s<_tmInc.hour&&0!=(n=_timeHelper.getNiceInc([1,2,5,10,15,30],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.hour}if(i<_tmInc.day){if(s<_tmInc.day&&0!=(n=_timeHelper.getNiceInc([1,3,6,12],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.day}if(i<_tmInc.month){if(s<_tmInc.month&&0!=(n=_timeHelper.getNiceInc([1,2,7,14],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.month}if(i<_tmInc.year){if(s<_tmInc.year&&0!=(n=_timeHelper.getNiceInc([1,2,3,4,6],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.year}s<(n=100*_tmInc.year)&&0==(n=_timeHelper.getNiceInc([1,2,5,10,20,50],s,i))&&(n=100*_tmInc.year);return _timeSpan.fromSeconds(n)}static NiceTimeUnit(t,e){var i=_timeSpan.fromDays(t);return(i=_timeHelper.NiceTimeSpan(i,e)).TotalDays}static GetTimeDefaultFormat(t,e){if(!isNumber(t)||!isNumber(e))return"";var i="s",s=_timeSpan.fromSeconds(.001*(t-e)),n=s.TotalSeconds;if(n>=_tmInc.year)i="yyyy";else if(n>=_tmInc.month)i="MMM yyyy";else if(n>=_tmInc.day)i="MMM d";else if(n>=_tmInc.hour)i="ddd H:mm";else if(n>=.5*_tmInc.hour)i="H:mm";else if(n>=1)i="H:mm:ss";else if(n>0){let t=s.Ticks;i="s.";for(;t<_timeSpan.TicksPerSecond;){t*=10;i+="f"}}return i}}export class _AxisLabel{constructor(t,e,i){this._start=e-.5;this._end=e+i-.5;this._value=e+.5*(i-1);this._label=t}get value(){return this._value}get label(){return this._label}get start(){return this._start}get end(){return this._end}set rect(t){this._rect=t}get rect(){return this._rect}}class _AxisGroup{constructor(t,e){this._labels=[];this._index=0;this._size=new Size;this._level=0;this._level=t;this._last=e}get labels(){return this._labels}set index(t){this._index=t}get index(){return this._index}set height(t){this._size.height=t}get height(){return this._size.height}set width(t){this._size.width=t}get width(){return this._size.width}get level(){return this._level}getSize(t,e,i){this._size=new Size;this.labels.forEach(s=>{const n=t.measureString(s.label,e,i);this._size.width=Math.max(this._size.width,n.width);this._size.height=Math.max(this._size.height,n.height)});return this._size}render(t,e,i,s,n){const r=e._getPosition(),a=e.axisType===AxisType.X;this.labels.forEach(h=>{let o,l=h.label,_=!1;const c=a?Math.abs(e.convert(h.end)-e.convert(h.start)):this.width,d=t.measureString(l,s,n);if(d.width>c){l=this._trimText(l,d.width,c);_=!0}switch(r){case Position.Bottom:o=FlexChartCore._renderText(t,l,new Point(e.convert(h.value),i),1,2,s,n);break;case Position.Top:o=FlexChartCore._renderText(t,l,new Point(e.convert(h.value),i),1,0,s,n);break;case Position.Left:o=FlexChartCore._renderText(t,l,new Point(i+this._size.width,e.convert(h.value)),2,1,s,n);break;case Position.Right:o=FlexChartCore._renderText(t,l,new Point(i-this._size.width,e.convert(h.value)),0,1,s,n)}h.rect=_?o:void 0});r===Position.Bottom||r===Position.Top?this.renderLinesX(t,e,i):this.renderLinesY(t,e,i)}hitTest(t){let e;for(let i=0;i<this.labels.length;i++){const s=this.labels[i];if(s.rect&&s.rect.contains(t)){e=s;break}}return e}renderLinesX(t,e,i){const s=e.groupsOptions.display===AxisGroupsDisplay.ShowGrid,n=e._getPosition();let r=4;const a=n===Position.Bottom?1:-1,h=i-a*(this.height+r);r*=a;if(s){const s=e.convert(e.actualMin),n=e.convert(e.actualMax);this.drawLine(t,s,i+r,n,i+r);this.drawLine(t,s,h,n,h);const o=e.convert(this.labels[0].start),l=0===this.level?1===a?e._axrect.top:e._axrect.bottom:h;this.drawLine(t,o,i+r,o,l);this.labels.forEach(s=>{const n=new Point(e.convert(s.end),i);this._last?this.drawLine(t,n.x,n.y+r,n.x,1===a?e._axrect.top:e._axrect.bottom):this.drawLine(t,n.x,n.y+r,n.x,l)})}else this.labels.forEach(i=>{const s=e.convert(i.start)+Math.abs(r),n=e.convert(i.end)-Math.abs(r);this.drawLine(t,s,h,n,h);if(e.labels||!this._last){this.drawLine(t,s,h,s,h-2*r);this.drawLine(t,n,h,n,h-2*r)}const a=e.convert(i.value);this.drawLine(t,a,h,a,h+r)})}renderLinesY(t,e,i){const s=e.groupsOptions.display===AxisGroupsDisplay.ShowGrid,n=e._getPosition();let r=4;const a=n===Position.Left?-1:1,h=i-a*(this.width+r);r*=a;if(s){const s=e.convert(e.actualMin),n=e.convert(e.actualMax);this.drawLine(t,i+r,s,i+r,n);this.drawLine(t,h,s,h,n);const o=e.convert(this.labels[0].start),l=0===this.level?1===a?e._axrect.left:e._axrect.right:h;this.drawLine(t,i+r,o,l,o);this.labels.forEach(s=>{const n=e.convert(s.end);this._last?this.drawLine(t,i+r,n,1===a?e._axrect.left:e._axrect.right,n):this.drawLine(t,i+r,n,l,n)})}else this.labels.forEach(i=>{const s=e.convert(i.start)-Math.abs(r),n=e.convert(i.end)+Math.abs(r);this.drawLine(t,h,s,h,n);this.drawLine(t,h,s,h-2*r,s);this.drawLine(t,h,n,h-2*r,n);const a=e.convert(i.value);this.drawLine(t,h,a,h+r,a)})}drawLine(t,e,i,s,n){t.drawLine(e,i,s,n,FlexChartCore._CSS_LINE)}_trimText(t,e,i){var s="",n=t.length,r=Math.floor((1-(e-i)/e)*n);t.length>0&&(s=t[0]+(r>1?t.substring(1,r-1)+"..":""));return s}}export class _AxisGroups{constructor(t){this._groups=[];this._margin=8;this._axis=t}get groups(){return this._groups}get axis(){return this._axis}createGroups(){this._groups=[];const t=this.axis._chart.collectionView;t&&t.groups&&t.groups.length>0&&t.groups.forEach(t=>{this.createGroup(t,0)})}createGroup(t,e){this.groups[e]||(this.groups[e]=new _AxisGroup(e,t.isBottomLevel));const i=this.groups[e],s=t.items;i.labels.push(new _AxisLabel(t.name,i.index,s.length));i.index+=s.length;t.groups.forEach(t=>{this.createGroup(t,e+1)})}layoutGroups(t){this.groups.forEach(e=>{e.width*=t})}getHeight(t){const e=this._axis._getPosition();let i=0;e===Position.Bottom||e===Position.Top?this.groups.forEach(e=>{const s=e.getSize(t,FlexChartCore._CSS_LABEL,this._axis._groupClass);i+=this._margin+s.height}):this.groups.forEach(e=>{const s=e.getSize(t,FlexChartCore._CSS_LABEL,this._axis._groupClass);i+=this._margin+s.width});if(i>0&&this._axis.labels){const t=this.groups.length;i+=this._margin*t}this._height=i;return i}layout(){const t=this._axis,e=t._axrect;if(t.axisType===AxisType.Y){const i=(t.labels?t._annoSize.width+t._TICK_LABEL_DISTANCE+12:4)+t._getTitleSize().height,s=e.width-i;if(s<this._height){const t=this._margin*this._groups.length;this.layoutGroups((s-t)/(this._height-t));this._height=s}}}render(t){const e=this._axis._getPosition(),i=this._axis._getTitleSize();if(e===Position.Bottom){let e=this.axis._axrect.bottom-i.height-this._margin;this.groups.forEach(i=>{i.render(t,this.axis,e,FlexChartCore._CSS_LABEL,this._axis._groupClass);e-=i.height+this._margin})}else if(e===Position.Top){let e=this.axis._axrect.top+i.height+this._margin;this.groups.forEach(i=>{i.render(t,this.axis,e,FlexChartCore._CSS_LABEL,this._axis._groupClass);e+=i.height+this._margin})}else if(e===Position.Left){let e=this.axis._axrect.left+i.height+this._margin;this.groups.forEach(i=>{i.render(t,this.axis,e,FlexChartCore._CSS_LABEL,this._axis._groupClass);e+=i.width+this._margin})}else if(e===Position.Right){let e=this.axis._axrect.right-i.height-this._margin;this.groups.forEach(i=>{i.render(t,this.axis,e,FlexChartCore._CSS_LABEL,this._axis._groupClass);e-=i.width+this._margin})}}hitTest(t){let e;for(let i=0;i<this._groups.length;i++){const s=this._groups[i].hitTest(t);if(s){e=s;break}}return e}}export class _AreaPlotter extends _BasePlotter{constructor(){super(...arguments);this.stacking=Stacking.None;this.isSpline=!1;this.isStep=!1;this.stackPos={};this.stackNeg={}}adjustLimits(t,e){this.dataInfo=t;const i=t.getMinX();let s=t.getMinY();const n=t.getMaxX();let r=t.getMaxY();for(let t=0;t<this.chart.series.length;t++){const e=this.chart.series[t];if(this._isRange(e)){const t=e._getChartType();if(!t||t==ChartType.Area){const t=e._getBindingValues(1);for(let e=0;e<t.length;e++)t[e]>r?r=t[e]:t[e]<s&&(s=t[e])}}}if(this.isSpline){const t=.1*(r-s);this.chart.axisY._getLogBase()||(s-=t);r+=t}return this.rotated?new Rect(s,i,r-s,n-i):new Rect(i,s,n-i,r-s)}clear(){super.clear();this.stackNeg={};this.stackPos={}}plotSeries(t,e,i,s,n,r,a,h){const o=s;if(this._isRange(o)){this.plotSeriesRanged(t,e,i,s,n,r,a,h);return}const l=[],_=this.chart.series.indexOf(s),c=s.getValues(0);let d=s.getValues(1);if(!c)return;let u=c.length;if(!u)return;d||(d=this.dataInfo.getXVals());let g=!0;if(d)d.length<u&&(u=d.length);else{g=!1;d=new Array(u)}let p=[],f=[],m=[],x=[],b=this.stacking!=Stacking.None&&!o._isCustomAxisY(),y=this.stacking==Stacking.Stacked100pc&&!o._isCustomAxisY();void 0!==o._getChartType()&&(b=y=!1);const S=this.rotated;let v=!1;const w=o.interpolateNulls;let C=null,T=null;const M=this.chart._plotRect;for(let t=0;t<u;t++){const s=g?d[t]:t;let n=c[t];(null===C||s>C)&&(C=s);(null===T||s<T)&&(T=s);b&&(null==n||Number.isNaN(n))&&Number.isFinite(s)&&(n=0);if(_DataInfo.isValid(s,n)){const r=S?i.convert(s):e.convert(s);if(b){if(y){const t=this.dataInfo.getStackedAbsSum(s);n=t>0?n/t:0}let t=0;if(n>=0){t=isNaN(this.stackPos[s])?0:this.stackPos[s];n=this.stackPos[s]=t+n}else{t=isNaN(this.stackNeg[s])?0:this.stackNeg[s];n=this.stackNeg[s]=t+n}if(S){t<e.actualMin&&(t=e.actualMin);m.push(e.convert(t));x.push(r)}else{m.push(r);t<i.actualMin&&(t=i.actualMin);x.push(i.convert(t))}}if(S){const i=e.convert(n);if(isNaN(r)||isNaN(i)){v=!0;if(!b&&!0!==w){p.push(void 0);f.push(void 0)}}else{p.push(i);f.push(r);if(FlexChartCore._contains(M,new Point(i,r))){const e=new _CircleArea(new Point(i,r),this._DEFAULT_SYM_SIZE);e.tag=new _DataPoint(_,t,n,s);this.hitTester.add(e,_)}}}else{const e=i.convert(n);if(isNaN(r)||isNaN(e)){v=!0;if(!b&&!0!==w){p.push(void 0);f.push(void 0)}}else{p.push(r);f.push(e);if(FlexChartCore._contains(M,new Point(r,e))){const i=new _CircleArea(new Point(r,e),this._DEFAULT_SYM_SIZE);i.tag=new _DataPoint(_,t,s,n);this.hitTester.add(i,_)}}}}else{v=!0;if(!b&&!0!==w){p.push(void 0);f.push(void 0)}}}h&&p.forEach((t,e)=>{null!=t&&l.push(new Point(t,f[e]))});const P=this._DEFAULT_WIDTH,A=n._getColorLight(_),L=n._getColor(_),N=_BasePlotter.cloneStyle(s.style,["fill"]),E=_BasePlotter.cloneStyle(s.style,["stroke"]);if(!b&&!0!==w&&v){let s=[],n=[];for(let r=0;r<u;r++)if(void 0===p[r]){if(s.length>1){const r=this._modifyPoints(s,n);s=r.x;n=r.y;t.stroke=L;t.strokeWidth=P;t.fill="none";t.drawLines(s,n,null,N);this.hitTester.add(new _LinesArea(s,n),_);if(S){s.push(e.convert(e.actualMin),e.convert(e.actualMin));n.push(i.convert(i.actualMax),i.convert(i.actualMin))}else{s.push(s[s.length-1],s[0]);n.push(i.convert(i.actualMin),i.convert(i.actualMin))}t.fill=A;t.stroke="none";t.drawPolygon(s,n,null,E,this.chart._plotrectId)}s=[];n=[]}else{s.push(p[r]);n.push(f[r])}if(s.length>1){const r=this._modifyPoints(s,n);s=r.x;n=r.y;t.stroke=L;t.strokeWidth=P;t.fill="none";t.drawLines(s,n,null,N);this.hitTester.add(new _LinesArea(s,n),_);if(S){s.push(e.convert(e.actualMin),e.convert(e.actualMin));n.push(i.convert(i.actualMax),i.convert(i.actualMin))}else{s.push(s[s.length-1],s[0]);n.push(i.convert(i.actualMin),i.convert(i.actualMin))}t.fill=A;t.stroke="none";t.drawPolygon(s,n,null,E,this.chart._plotrectId)}}else{const s=this._modifyPoints(p,f);p=s.x;f=s.y;if(b){const t=this._modifyPoints(m,x);m=t.x;x=t.y;p=p.concat(m.reverse());f=f.concat(x.reverse())}else if(S){p.push(e.convert(e.actualMin),e.convert(e.actualMin));f.push(f[f.length-1],f[0])}else{p.push(p[p.length-1],p[0]);f.push(i.convert(i.actualMin),i.convert(i.actualMin))}t.fill=A;t.stroke="none";t.drawPolygon(p,f,null,E,this.chart._plotrectId);if(b){p=p.slice(0,p.length-m.length);f=f.slice(0,f.length-x.length)}else{p=p.slice(0,p.length-2);f=f.slice(0,f.length-2)}t.stroke=L;t.strokeWidth=P;t.fill="none";t.drawLines(p,f,null,N,this.chart._plotrectId);this.hitTester.add(new _LinesArea(p,f),_)}this._drawSymbols(t,s,_);h&&l&&l.length&&h(l)}_isRange(t){const e=this.chart?this.chart._bindingSeparator:",",i=null==t.binding?null:t.binding.split(e);return null!=i&&2==i.length}_modifyPoints(t,e){const i={x:t,y:e};if(this.isSpline){const s=this._convertToSpline(t,e);i.x=s.xs;i.y=s.ys}else if(this.isStep){const s=this._createSteps(t,e);i.x=s.x;i.y=s.y}return i}plotSeriesRanged(t,e,i,s,n,r,a,h){const o=[],l=this.chart.series.indexOf(s),_=s,c=s.getValues(0);let d=s.getValues(1);const u=_._getBindingValues(1);if(!c)return;let g=c.length;if(!g)return;d||(d=this.dataInfo.getXVals());let p=!0;if(d)d.length<g&&(g=d.length);else{p=!1;d=new Array(g)}const f=[],m=[],x=[],b=this.rotated;let y=!1;const S=_.interpolateNulls,v=this.chart._plotRect;for(let t=0;t<g;t++){const s=p?d[t]:t,n=c[t],r=u[t];if(_DataInfo.isValid(s,n,r)){const a=b?i.convert(s):e.convert(s);if(b){const i=e.convert(n),h=e.convert(r);if(isNaN(a)||isNaN(i)){y=!0;if(!0!==S){f.push(void 0);m.push(void 0);x.push(void 0)}}else{f.push(i);m.push(a);x.push(h);if(FlexChartCore._contains(v,new Point(i,a))){const e=new _CircleArea(new Point(i,a),this._DEFAULT_SYM_SIZE);e.tag=new _DataPoint(l,t,n,s);this.hitTester.add(e,l)}if(FlexChartCore._contains(v,new Point(h,a))){const e=new _CircleArea(new Point(h,a),this._DEFAULT_SYM_SIZE);e.tag=new _DataPoint(l,t,r,s);this.hitTester.add(e,l)}}}else{const e=i.convert(n),h=i.convert(r);if(isNaN(a)||isNaN(e)){y=!0;if(!0!==S){f.push(void 0);m.push(void 0);x.push(void 0)}}else{f.push(a);m.push(e);x.push(h);if(FlexChartCore._contains(v,new Point(a,e))){const i=new _CircleArea(new Point(a,e),this._DEFAULT_SYM_SIZE);i.tag=new _DataPoint(l,t,s,n);this.hitTester.add(i,l)}if(FlexChartCore._contains(v,new Point(a,h))){const e=new _CircleArea(new Point(a,h),this._DEFAULT_SYM_SIZE);e.tag=new _DataPoint(l,t,s,r);this.hitTester.add(e,l)}}}}else{y=!0;if(!0!==S){f.push(void 0);m.push(void 0);x.push(void 0)}}}h&&f.forEach((t,e)=>{null!=t&&o.push(new Point(t,m[e]))});const w=this._DEFAULT_WIDTH,C=n._getColorLight(l),T=n._getColor(l),M=_BasePlotter.cloneStyle(s.style,["fill"]),P=_BasePlotter.cloneStyle(s.style,["stroke"]);if(!0!==S&&y){let e=[],i=[],s=[];for(let n=0;n<g;n++)if(void 0===f[n]){if(e.length>1){const n=b?s.slice(0).reverse():e.slice(0).reverse(),r=b?i.slice(0).reverse():s.slice(0).reverse();this._drawRangedArea(t,e,i,n,r,C,T,w,P,M);this.hitTester.add(new _LinesArea(e,i),l);this.hitTester.add(new _LinesArea(n,r),l)}e=[];i=[];s=[]}else{e.push(f[n]);i.push(m[n]);s.push(x[n])}if(e.length>1){const n=b?s.slice(0).reverse():e.slice(0).reverse(),r=b?i.slice(0).reverse():s.slice(0).reverse();this._drawRangedArea(t,e,i,n,r,C,T,w,P,M);this.hitTester.add(new _LinesArea(e,i),l);this.hitTester.add(new _LinesArea(n,r),l)}}else{const e=b?x.slice(0).reverse():f.slice(0).reverse(),i=b?m.slice(0).reverse():x.slice(0).reverse();this._drawRangedArea(t,f,m,e,i,C,T,w,P,M);this.hitTester.add(new _LinesArea(f,m),l);this.hitTester.add(new _LinesArea(e,i),l)}this._drawSymbols(t,s,l);h&&o&&o.length&&h(o)}_drawRangedArea(t,e,i,s,n,r,a,h,o,l){if(this.isSpline){const t=this._convertToSpline(e,i),r=this._convertToSpline(s,n);e=t.xs;i=t.ys;s=r.xs;n=r.ys}e=e.concat(s);i=i.concat(n);t.fill=r;t.stroke="none";t.drawPolygon(e,i,null,o);e=e.slice(0,e.length-s.length);i=i.slice(0,i.length-n.length);t.stroke=a;t.strokeWidth=h;t.fill="none";t.drawLines(e,i,null,l);t.drawLines(s,n,null,l)}_convertToSpline(t,e){if(t&&e){const i=new _Curve(t,e).calculate();return{xs:i.xs,ys:i.ys}}return{xs:t,ys:e}}_drawSymbols(t,e,i){const s=this.getItemFormatter(e);if(null!=s){const e=this.hitTester._map[i];for(let i=0;i<e.length;i++){const n=tryCast(e[i],_CircleArea);if(n){const e=n.tag;t.startGroup();const i=new HitTestInfo(this.chart,n.center,ChartElement.SeriesSymbol);i._setDataPoint(e);s(t,i,()=>{});t.endGroup()}}t.cssPriority=!0}}}export class _BarPlotter extends _BasePlotter{constructor(){super(...arguments);this.origin=0;this.width=.7;this.isVolume=!1;this._volHelper=null;this.stackPosMap={};this.stackNegMap={};this.stacking=Stacking.None}clear(){super.clear();this.stackNegMap[this.chart.axisY._uniqueId]={};this.stackPosMap[this.chart.axisY._uniqueId]={};this._volHelper=null}load(){super.load();if(!this.isVolume)return;let t,e,i,s,n,r,a,h,o=null,l=null;for(r=0;r<this.chart.series.length;r++){t=this.chart.series[r];n=t.getDataType(1)||t.chart._xDataType;e=t._getAxisX();i=t._getChartType();i=null===i||isUndefined(i)?this.chart._getChartType():i;if(i===ChartType.Column){const e=this.chart?this.chart._bindingSeparator:",",i=t.binding.split(e).length-1;s=t._getBindingValues(i)}else s=i===ChartType.Candlestick?t._getBindingValues(4):null;if(n===DataType.Date){let i;a=[];h=[];for(r=0;r<t._getLength();r++){i=t._getItem(r)[t.bindingX].valueOf();a.push(i);h.push({value:i,text:Globalize.format(new Date(i),e.format||"d")})}}else a=this.dataInfo.getXVals();o=this.dataInfo.getMinX();l=this.dataInfo.getMaxX();if(s&&s.length>0){this._volHelper=new _VolumeHelper(s,a,o,l,n);e._customConvert=this._volHelper.convert.bind(this._volHelper);e._customConvertBack=this._volHelper.convertBack.bind(this._volHelper);h&&h.length>0&&(this._itemsSource=e.itemsSource=h);break}}}unload(){super.unload();let t,e;for(let i=0;i<this.chart.series.length;i++){t=this.chart.series[i];e=t._getAxisX();if(e){e._customConvert=null;e._customConvertBack=null;e.itemsSource&&e.itemsSource==this._itemsSource&&(this._itemsSource=e.itemsSource=null)}}}adjustLimits(t,e){this.dataInfo=t;var i=t.getMinX(),s=t.getMaxX(),n=t.getMinY(),r=t.getMaxY(),a=t.getDeltaX();a<=0&&(a=1);let h=!1;!this.isVolume||this.chart._getChartType()!==ChartType.Column&&this.chart._getChartType()!==ChartType.Candlestick?this.unload():this.load();for(let t=0;t<this.chart.series.length;t++){const e=this.chart.series[t];let i=e._getChartType();i=null===i||isUndefined(i)?this.chart._getChartType():i;if(i===ChartType.Column||i===ChartType.Bar){if(this._isRange(e)){e._getBindingValues(1).forEach(t=>{t<n?n=t:t>r&&(r=t)})}}h||"BoxWhisker"==e.constructor.name||(h=!0)}if(this.rotated){!this.chart.axisY._getLogBase()&&t.getDataTypeY()!==DataType.Date&&h&&(this.origin>r?r=this.origin:this.origin<n&&(n=this.origin));return new Rect(n,i-.5*a,r-n,s-i+a)}!this.chart.axisY._getLogBase()&&t.getDataTypeY()!==DataType.Date&&h&&(this.origin>r?r=this.origin:this.origin<n&&(n=this.origin));return new Rect(i-.5*a,n,s-i+a,r-n)}_isRange(t){const e=this.chart?this.chart._bindingSeparator:",",i=(null==t.binding?"":t.binding.split(e)).length-1;return this.isVolume?2===i:1===i}plotSeries(t,e,i,s,n,r,a,h){var o,l,_,c,d=[],u=this.chart.series.indexOf(s),g=asType(s,SeriesBase),p=this.chart._options,f=this.width,m=0;r=r||0;a=a||1;if(p&&p.groupWidth){const t=p.groupWidth;if(isNumber(t)){const e=asNumber(t);if(isFinite(e)&&e>0){m=e;f=1}}else if(isString(t)){let e=asString(t);if(e&&e.indexOf("%")>=0){e=e.replace("%","");let t=parseFloat(e);if(isFinite(t)){t<0?t=0:t>100&&(t=100);m=0;f=t/100}}else{const t=parseFloat(e);if(isFinite(t)&&t>0){m=t;f=1}}}}let x=f/a;const b=g._getAxisY()._uniqueId,y=this.stackNegMap[b],S=this.stackPosMap[b],v=s.getValues(0);let w=s.getValues(1);const C=this._isRange(g),T=g._bindValues(null==g._cv?null==this.chart.collectionView?null:this.chart.collectionView.items:g._cv.items,g._getBinding(1)).values;if(!v)return;w||(w=this.dataInfo.getXVals());if(w){const t=this.dataInfo.getDeltaX();if(t>0){f*=t;x*=t}}let M=g._getSymbolFill(u),P=g._getAltSymbolFill(u)||M,A=g._getSymbolStroke(u),L=g._getAltSymbolStroke(u)||A,N=v.length;null!=w&&(N=Math.min(N,w.length));let E,k,I=this.origin,R=0,D=this.stacking!=Stacking.None,F=this.stacking==Stacking.Stacked100pc;void 0!==g._getChartType()&&(D=F=!1);const B=this.getItemFormatter(s),V=e._actualMin,z=e._actualMax,X=i._actualMin,H=i._actualMax;if(this.rotated){I<V?I=V:I>z&&(I=z);g._isCustomAxisY()&&(D=F=!1);const n=e.convert(I);for(let o=0;o<N;o++){let l=w?w[o]:o,g=v[o],p=n;this._getSymbolOrigin&&(p=i.convert(this._getSymbolOrigin(I,o)));if(C&&T&&T.length){const t=T[o];_DataInfo.isValid(t)&&(p=e.convert(t))}if(this._getSymbolStyles){const t=this._getSymbolStyles(o);M=t&&t.fill?t.fill:M;P=t&&t.fill?t.fill:P;A=t&&t.stroke?t.fill:A;L=t&&t.stroke?t.fill:L}E=g>0?M:P;k=g>0?A:L;t.fill=E;t.stroke=k;if(_DataInfo.isValid(l,g))if(D){let n=l-.5*f,r=l+.5*f;if(n<X&&r<X||n>H&&r>H)continue;n=i.convert(Math.max(n,X));r=i.convert(Math.min(r,H));if(F){g/=this.dataInfo.getStackedAbsSum(l)}let a=0;if(g>=0){a=isNaN(S[l])?0:S[l];_=e.convert(a);c=e.convert(a+g);S[l]=a+g}else{a=isNaN(y[l])?0:y[l];_=e.convert(a);c=e.convert(a+g);y[l]=a+g}h&&d.push(new Point(c,i.convert(l)));if(!_DataInfo.isValid(_,c))continue;const p=new Rect(Math.min(_,c),Math.min(n,r),Math.abs(c-_),Math.abs(r-n));if(m>0){let t=1-m/p.height;t<0&&(t=0);const e=p.top+.5*p.height;p.top+=(e-p.top)*t;p.height=Math.min(m,p.height)}const x=new _RectArea(p);this.drawSymbol(t,p,s,o,new Point(c,p.top+.5*p.height),B);s._setPointIndex(o,R);R++;const b=F?Math.min(a+g,1):a+g;x.tag=new _DataPoint(u,o,b,l);this.hitTester.add(x,u)}else{let n=l-.5*f+r*x,_=l-.5*f+(r+1)*x;if(n<X&&_<X||n>H&&_>H)continue;n=i.convert(Math.max(n,X));_=i.convert(Math.min(_,H));const c=e.convert(g);if(!_DataInfo.isValid(c,n,_))continue;const b=new Rect(Math.min(c,p),Math.min(n,_),Math.abs(p-c),Math.abs(_-n));h&&d.push(new Point(c,(n+_)/2));if(m>0){const t=m/a;let e=1-t/b.height;e<0&&(e=0);const s=i.convert(l);b.top+=(s-b.top)*e;b.height=Math.min(t,b.height)}const y=new _RectArea(b);this.drawSymbol(t,b,s,o,new Point(c,b.top+.5*b.height),B);s._setPointIndex(o,R);R++;y.tag=new _DataPoint(u,o,g,l);this.hitTester.add(y,u)}else h&&d.push(null)}}else{I<X?I=X:I>H&&(I=H);const n=i.convert(I);g._isCustomAxisY()&&(D=F=!1);for(let _=0;_<N;_++){let c=n;const g=w?w[_]:_;let p=v[_];this._getSymbolOrigin&&(c=i.convert(this._getSymbolOrigin(I,_,N)));if(C&&T&&T.length){const t=T[_];_DataInfo.isValid(t)&&(c=i.convert(t))}if(this._getSymbolStyles){const t=this._getSymbolStyles(_,N);M=t&&t.fill?t.fill:M;P=t&&t.fill?t.fill:P;A=t&&t.stroke?t.stroke:A;L=t&&t.stroke?t.stroke:L}E=p>0?M:P;k=p>0?A:L;t.fill=E;t.stroke=k;t.strokeWidth=null;if(_DataInfo.isValid(g,p))if(D){let n=g-.5*f,r=g+.5*f;if(n<V&&r<V||n>z&&r>z)continue;n=e.convert(n);r=e.convert(r);if(!_DataInfo.isValid(n,r))continue;if(F){p/=this.dataInfo.getStackedAbsSum(g)}let a=0;if(p>=0){a=isNaN(S[g])?0:S[g];o=i.convert(Math.max(a,X));l=i.convert(Math.max(a+p,X));S[g]=a+p}else{a=isNaN(y[g])?0:y[g];o=i.convert(a);l=i.convert(a+p);y[g]=a+p}h&&d.push(new Point(e.convert(g),l));if(!_DataInfo.isValid(o,l))continue;const c=new Rect(Math.min(n,r),Math.min(o,l),Math.abs(r-n),Math.abs(l-o));if(m>0){let t=1-m/c.width;t<0&&(t=0);const e=c.left+.5*c.width;c.left+=(e-c.left)*t;c.width=Math.min(m,c.width)}const x=new _RectArea(c);this.drawSymbol(t,c,s,_,new Point(c.left+.5*c.width,l),B);s._setPointIndex(_,R);R++;const b=F?Math.min(a+p,1):a+p;x.tag=new _DataPoint(u,_,g,b);this.hitTester.add(x,u)}else{let n=g-.5*f+r*x,o=g-.5*f+(r+1)*x;if(n<V&&o<V||n>z&&o>z)continue;n=e.convert(n);o=e.convert(o);const l=i.convert(p);if(!_DataInfo.isValid(l,n,o))continue;const b=new Rect(Math.min(n,o),Math.min(l,c),Math.abs(o-n),Math.abs(c-l));h&&d.push(new Point((n+o)/2,l));if(m>0){const t=m/a;let i=1-t/b.width;i<0&&(i=0);const s=e.convert(g);b.left+=(s-b.left)*i;b.width=Math.min(t,b.width)}const y=new _RectArea(b);this.drawSymbol(t,b,s,_,new Point(b.left+.5*b.width,l),B);s._setPointIndex(_,R);R++;y.tag=new _DataPoint(u,_,g,p);this.hitTester.add(y,u)}else h&&d.push(null)}}h&&d&&d.length&&h(d)}drawSymbol(t,e,i,s,n,r){if(r){t.startGroup();const a=new HitTestInfo(this.chart,n,ChartElement.SeriesSymbol);a._setData(i,s);r(t,a,()=>{this.drawDefaultSymbol(t,e,i)});t.cssPriority=!0;t.endGroup()}else this.drawDefaultSymbol(t,e,i)}drawDefaultSymbol(t,e,i){t.drawRect(e.left,e.top,e.width,e.height,null,i.symbolStyle)}}export class _FunnelPlotter extends _BasePlotter{constructor(){super(...arguments);this.stacking=Stacking.None}adjustLimits(t,e){this.dataInfo=t;var i=t.getMinX(),s=t.getMinY(),n=t.getMaxX(),r=t.getMaxY();return new Rect(i,s,n-i,r-s)}plotSeries(t,e,i,s,n,r,a,h){var o=this.chart.series.indexOf(s);if(o>0)return;var l,_,c,d,u,g=asType(s,SeriesBase),p=this.chart._options,f=s.getValues(0),m=s.getValues(1),x=this.chart._plotRect,b=p&&p.funnel&&null!=p.funnel.neckWidth?p.funnel.neckWidth:.2,y=p&&p.funnel&&null!=p.funnel.neckHeight?p.funnel.neckHeight:0,S=b*x.width,v=0,w=0,C=0,T=0,M=x.left,P=x.top,A=x.width,L=x.height;if(!f)return;this.rotated&&(P+=x.height);S=S||1;m||(m=this.dataInfo.getXVals());var N=f.length;null!=m&&(N=Math.min(N,m.length));let E=0;for(v=0;v<N;v++)if(_DataInfo.isValid(f[v])){w+=f[v];f[v]>E&&(E=f[v])}var k,I,R,D=0;if(p&&p.funnel&&"rectangle"===p.funnel.type&&E>0){y=L/N;b=A;let e=A/E;for(v=0;v<N;v++){const i=m?m[v]:v,n=f[v];let r=g._getSymbolFill(v),a=g._getAltSymbolFill(v)||r,h=g._getSymbolStroke(v),l=g._getAltSymbolStroke(v)||h;if(this._getSymbolStyles){const t=this._getSymbolStyles(v,N);r=t&&t.fill?t.fill:r;a=t&&t.fill?t.fill:a;h=t&&t.stroke?t.stroke:h;l=t&&t.stroke?t.stroke:l}k=n>0?r:a;I=n>0?h:l;t.fill=k;t.stroke=I;if(_DataInfo.isValid(i)&&_DataInfo.isValid(n)){e||(e=A/n);const r=e*n;M+=(b-r)/2;this.rotated&&(P-=y);t.drawRect(M,P,r,y);R=new _FunnelSegment(new Point(M,P),r,y,r,y);this.rotated||(P+=y);b=r;R.tag=new _DataPoint(o,v,i,n);this.hitTester.add(R,o);s._setPointIndex(v,D);D++}}}else{C=x.left+x.width*(1-b)/2;T=x.top+x.height*(this.rotated?y:1-y);_=(1-b)*x.width/2/(x.height*(1-y));if(isNaN(_)||!isFinite(_)){A=S;M=C;P=T}l=x.width*b*x.height+x.width*(1-b)/2*x.height*(1-y);for(v=0;v<N;v++){const e=m?m[v]:v,i=f[v];let n=[],r=[],a=g._getSymbolFill(v),h=g._getAltSymbolFill(v)||a,p=g._getSymbolStroke(v),x=g._getAltSymbolStroke(v)||p;if(this._getSymbolStyles){const t=this._getSymbolStyles(v,N);a=t&&t.fill?t.fill:a;h=t&&t.fill?t.fill:h;p=t&&t.stroke?t.stroke:p;x=t&&t.stroke?t.stroke:x}k=i>0?a:h;I=i>0?p:x;t.fill=k;t.stroke=I;if(_DataInfo.isValid(e)&&_DataInfo.isValid(i)){let a=l*i/w;if(A>S){d=this._getTrapezoidOffsetY(A,a,_);if(this.rotated)if(P-d>T){n=[M,M+(c=_*d),M+A-c,M+A];r=[P,P-d,P-d,P];R=new _FunnelSegment(new Point(M,P-d),A,d,A-2*c,0,!0);A-=2*c;M+=c;P-=d}else{c=_*(d=P-T);a-=this._getTrapezoidArea(A,_,d);u=a/S;n.push(M,M+c,M+c,M+c+S,M+c+S,M+A);r.push(P,P-d,P-d-u,P-d-u,P-d,P);R=new _FunnelSegment(new Point(M,P-d-u),A,d+u,S,u,!0);A=S;M+=c;P=P-d-u}else if(P+d<T){n=[M,M+(c=_*d),M+A-c,M+A];r=[P,P+d,P+d,P];R=new _FunnelSegment(new Point(M,P),A,d,A-2*c,0);A-=2*c;M+=c;P+=d}else{c=_*(d=T-P);a-=this._getTrapezoidArea(A,_,d);u=a/S;n.push(M,M+c,M+c,M+c+S,M+c+S,M+A);r.push(P,P+d,P+d+u,P+d+u,P+d,P);R=new _FunnelSegment(new Point(M,P),A,d+u,S,u);A=S;M+=c;P=P+d+u}t.drawPolygon(n,r)}else{u=a/S;this.rotated&&(P-=u);t.drawRect(M,P,A,u);R=new _FunnelSegment(new Point(M,P),S,u,S,u);this.rotated||(P+=u)}R.tag=new _DataPoint(o,v,e,i);this.hitTester.add(R,o);s._setPointIndex(v,D);D++}}}}_getTrapezoidArea(t,e,i){var s=i*e;return s*i+(t-2*s)*i}_getTrapezoidOffsetY(t,e,i){var s=Math.pow(t/2/i,2)-e/i;return t/2/i-Math.sqrt(s>=0?s:0)}drawDefaultSymbol(t,e,i){t.drawRect(e.left,e.top,e.width,e.height,null,i.symbolStyle)}_getPointAndPosition(t,e,i,s){var n=i;t.x=n.center.x;t.y=n.center.y;e=null==e?LabelPosition.Center:e}}export class _FunnelSegment{constructor(t,e,i,s,n,r=!1){this._startPoint=t;this._width=e;this._height=i;this._neckHeight=n;this._center=new Point(this._startPoint.x+e/2,this._startPoint.y+i/2);this._offsetX=(e-s)/2;this._offsetY=i-n;this._rotated=r}contains(t){var e=this._startPoint,i=this._offsetX,s=this._offsetY;if(this._rotated){if(t.x>=e.x&&t.x<=e.x+this._width&&t.y>=e.y&&t.y<=e.y+this._height){if(t.x>=e.x+i&&t.x<=e.x+this._width-i)return!0;if(t.y<e.y+this._neckHeight)return!1;if(t.x<this._center.x)return(e.y+this._height-t.y)/(t.x-e.x)<s/i;if(t.x>this._center.x)return(e.y+this._height-t.y)/(e.x+this._width-t.x)<s/i}}else if(t.x>=e.x&&t.x<=e.x+this._width&&t.y>=e.y&&t.y<=e.y+this._height){if(t.x>=e.x+i&&t.x<=e.x+this._width-i)return!0;if(t.y>e.y+s)return!1;if(t.x<this._center.x)return(t.y-e.y)/(t.x-e.x)<s/i;if(t.x>this._center.x)return(t.y-e.y)/(e.x+this._width-t.x)<s/i}return!1}distance(t){if(this.contains(t))return 0;var e=this._startPoint,i=this._width,s=this._height,n=this._offsetX,r=this._offsetY;if(this._rotated){if(t.y>e.y+s)return t.x<e.x?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y+s-t.y,2)):t.x>e.x+i?Math.sqrt(Math.pow(t.x-e.x-i,2)+Math.pow(e.y+s-t.y,2)):t.y-e.y-s;if(t.y<e.y)return t.x<e.x+n?Math.sqrt(Math.pow(e.x+n-t.x,2)+Math.pow(t.y-e.y-s,2)):t.x>e.x+i-n?Math.sqrt(Math.pow(t.x-e.x-i+n,2)+Math.pow(t.y-e.y-s,2)):e.y-t.y;if(!(t.y<e.y+s-r))return t.x<e.x+n?Math.min(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(t.y-e.y-s,2)),Math.sqrt(Math.pow(t.x-n/2-e.x,2)+Math.pow(t.y-s+r/2-e.y,2)),Math.sqrt(Math.pow(t.x-n-e.x,2)+Math.pow(t.y-s+r-e.y,2))):Math.min(Math.sqrt(Math.pow(t.x-i-e.x,2)+Math.pow(t.y-s-e.y,2)),Math.sqrt(Math.pow(t.x-i+n/2-e.x,2)+Math.pow(t.y-s+r/2-e.y,2)),Math.sqrt(Math.pow(t.x-i+n-e.x,2)+Math.pow(t.y-s+r-e.y,2)));if(t.x<e.x+n)return e.x+n-t.x;if(t.x>e.x+i-n)return t.x-e.x-i+n}else{if(t.y<e.y)return t.x<e.x?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):t.x>e.x+i?Math.sqrt(Math.pow(t.x-e.x-i,2)+Math.pow(e.y-t.y,2)):e.y-t.y;if(t.y>e.y+s)return t.x<e.x+n?Math.sqrt(Math.pow(e.x+n-t.x,2)+Math.pow(t.y-e.y-s,2)):t.x>e.x+i-n?Math.sqrt(Math.pow(t.x-e.x-i+n,2)+Math.pow(t.y-e.y-s,2)):t.y-e.y-s;if(!(t.y>e.y+r))return t.x<e.x+n?Math.min(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(t.y-e.y,2)),Math.sqrt(Math.pow(t.x-n/2-e.x,2)+Math.pow(t.y-r/2-e.y,2)),Math.sqrt(Math.pow(t.x-n-e.x,2)+Math.pow(t.y-r-e.y,2))):Math.min(Math.sqrt(Math.pow(t.x-i-e.x,2)+Math.pow(t.y-e.y,2)),Math.sqrt(Math.pow(t.x-i+n/2-e.x,2)+Math.pow(t.y-r/2-e.y,2)),Math.sqrt(Math.pow(t.x-i+n-e.x,2)+Math.pow(t.y-r-e.y,2)));if(t.x<e.x+n)return e.x+n-t.x;if(t.x>e.x+i-n)return t.x-e.x-i+n}}get center(){return this._center}}export class _FinancePlotter extends _BasePlotter{constructor(){super(...arguments);this.isCandle=!0;this.isArms=!1;this.isEqui=!1;this.isVolume=!1;this._volHelper=null;this._symWidth=.7}clear(){super.clear();this._volHelper=null}load(){super.load();if(this.isVolume){var t,e,i,s,n,r,a,h,o=null,l=null;for(r=0;r<this.chart.series.length;r++){n=(t=this.chart.series[r]).getDataType(1)||t.chart._xDataType;e=t._getAxisX();s=(i=null===(i=t._getChartType())||isUndefined(i)?this.chart._getChartType():i)===ChartType.Column?t._getBindingValues(1):i===ChartType.Candlestick?t._getBindingValues(4):null;if(n===DataType.Date){let i;a=[];h=[];for(r=0;r<t._getLength();r++){i=t._getItem(r)[t.bindingX].valueOf();a.push(i);h.push({value:i,text:Globalize.format(new Date(i),e.format||"d")})}}else a=this.dataInfo.getXVals();o=this.dataInfo.getMinX();l=this.dataInfo.getMaxX();if(s&&s.length>0){this._volHelper=new _VolumeHelper(s,a,o,l,n);e._customConvert=this._volHelper.convert.bind(this._volHelper);e._customConvertBack=this._volHelper.convertBack.bind(this._volHelper);h&&h.length>0&&(this._itemsSource=e.itemsSource=h);break}}}}unload(){super.unload();var t;for(let e=0;e<this.chart.series.length;e++)if(t=this.chart.series[e]._getAxisX()){t._customConvert=null;t._customConvertBack=null;t.itemsSource&&t.itemsSource==this._itemsSource&&(this._itemsSource=t.itemsSource=null)}}parseSymbolWidth(t){this._isPixel=void 0;if(t)if(isNumber(t)){const e=asNumber(t);if(isFinite(e)&&e>0){this._symWidth=e;this._isPixel=!0}}else if(isString(t)){let e=asString(t);if(e&&e.indexOf("%")>=0){e=e.replace("%","");let t=parseFloat(e);if(isFinite(t)){t<0?t=0:t>100&&(t=100);this._symWidth=t/100;this._isPixel=!1}}else{const e=parseFloat(t);if(isFinite(e)&&e>0){this._symWidth=e;this._isPixel=!0}}}}adjustLimits(t,e){this.dataInfo=t;var i=t.getMinX(),s=t.getMinY(),n=t.getMaxX(),r=t.getMaxY(),a=t.getDeltaX(),h=this.chart._xDataType;a<=0&&(a=1);var o=this.chart.series,l=o.length;let _=0;this.parseSymbolWidth(this.symbolWidth);!this.isVolume||this.chart._getChartType()!==ChartType.Column&&this.chart._getChartType()!==ChartType.Candlestick?this.unload():this.load();for(let t=0;t<l;t++){const e=o[t];if(e._isCustomAxisY())continue;const i=e._getBinding(1),n=e._getBinding(2),a=e._getBinding(3),h=e._getLength();if(h){const t=e._getSymbolSize();t>_&&(_=t);for(let t=0;t<h;t++){const h=e._getItem(t);if(h){[i?h[i]:null,n?h[n]:null,a?h[a]:null].forEach(t=>{if(_DataInfo.isValid(t)&&null!==t){(isNaN(s)||t<s)&&(s=t);(isNaN(r)||t>r)&&(r=t)}})}}}}var c=n-i;return!(h===DataType.Date&&this.isVolume||h===DataType.Number)||this.chart._getChartType()!==ChartType.Column&&this.chart._getChartType()!==ChartType.Candlestick?this.chart._isRotated()?new Rect(s,i,r-s,c):new Rect(i,s,c,r-s):new Rect(i-.5*a,s,n-i+a,r-s)}plotSeries(t,e,i,s,n,r,a,h){var o=asType(s,SeriesBase),l=this.chart.series.indexOf(s),_=s.getValues(0),c=s.getValues(1),d=this._symWidth,u=this.chart._isRotated();if(!_)return;c||(c=this.dataInfo.getXVals());if(c){const t=this.dataInfo.getDeltaX();t>0&&!1===this._isPixel&&(d*=t)}var g=_.length,p=!0;if(c)g=Math.min(g,c.length);else{p=!1;c=new Array(g)}var f=this._DEFAULT_WIDTH,m=o._getSymbolFill(l),x=o._getAltSymbolFill(l)||"transparent",b=o._getSymbolStroke(l),y=o._getAltSymbolStroke(l)||b,S=void 0===this._isPixel?o._getSymbolSize():d;t.stroke=b;t.strokeWidth=f;t.fill=m;var v,w,C=o._getBinding(1),T=o._getBinding(2),M=o._getBinding(3),P=u?i.actualMin:e.actualMin,A=u?i.actualMax:e.actualMax,L=0,N=null,E=null;const k=this.getItemFormatter(s);for(let n=0;n<g;n++)if(N=o._getItem(n)){const r=p?c[n]:n;if(_DataInfo.isValid(r)&&P<=r&&r<=A){const a=_[n],h=C?N[C]:null,c=T?N[T]:null,d=M?N[M]:null;t.startGroup();if(this.isEqui&&null!==E){if(E[M]!==N[M]){v=E[M]<N[M]?x:m;w=E[M]<N[M]?y:b}}else{v=c<d?x:m;w=c<d?y:b}t.fill=v;t.stroke=w;t.strokeWidth=f;if(k){const s=new HitTestInfo(this.chart,new Point(e.convert(r),i.convert(a)),ChartElement.SeriesSymbol);s._setData(o,n);k(t,s,()=>{this._drawSymbol(t,e,i,l,n,v,S,r,a,h,c,d,g)});t.cssPriority=!0}else this._drawSymbol(t,e,i,l,n,v,S,r,a,h,c,d,g);t.endGroup();s._setPointIndex(n,L);L++}E=N}}_drawSymbol(t,e,i,s,n,r,a,h,o,l,_,c,d){var u,g=null,p=null,f=null,m=null,x=this.chart._isRotated(),b=e.convert(h),y=e._axrect,S=a/2,v=0===n&&b-y.left<=S,w=n===d-1&&y.right-b<=S,C=x?new _DataPoint(s,n,o,h):new _DataPoint(s,n,h,o);if(x){const t=i;i=e;e=t}if(!1===this._isPixel){if(v){f=h;m=h+a}else if(w){f=h-a;m=h}else{f=h-.5*a;m=h+.5*a}if((f=e.convert(f))>(m=e.convert(m))){const t=f;f=m;m=t}}h=b;if(!1!==this._isPixel)if(v){f=h;m=h+a}else if(w){f=h-a;m=h}else{f=h-.5*a;m=h+.5*a}if(this.isCandle){if(_DataInfo.isValid(_)&&_DataInfo.isValid(c)){_=i.convert(_);c=i.convert(c);p=(g=Math.min(_,c))+Math.abs(_-c);if(x){t.drawRect(g,f,p-g||1,m-f||1);u=new _RectArea(new Rect(g,f,p-g||1,m-f||1))}else{t.drawRect(f,g,m-f||1,p-g||1);u=new _RectArea(new Rect(f,g,m-f||1,p-g||1))}u.tag=C;this.hitTester.add(u,s)}if(_DataInfo.isValid(o)){o=i.convert(o);if(null!==g)if(x){t.drawLine(p,h,o,h);u.rect.width=u.rect.width+o}else{t.drawLine(h,g,h,o);u.rect.top=o;u.rect.height=u.rect.height+o}}if(_DataInfo.isValid(l)){l=i.convert(l);if(null!==p)if(x){t.drawLine(g,h,l,h);u.rect.left=l;u.rect.width=u.rect.width+l}else{t.drawLine(h,p,h,l);u.rect.height=u.rect.height+l}}}else if(this.isEqui){if(_DataInfo.isValid(o)&&_DataInfo.isValid(l)){o=i.convert(o);l=i.convert(l);p=(g=Math.min(o,l))+Math.abs(o-l);t.drawRect(f,g,m-f||1,p-g||1);(u=new _RectArea(new Rect(f,g,m-f||1,p-g||1))).tag=C;this.hitTester.add(u,s)}}else if(this.isArms){if(_DataInfo.isValid(_)&&_DataInfo.isValid(c)){_=i.convert(_);c=i.convert(c);p=(g=Math.min(_,c))+Math.abs(_-c);t.drawRect(f,g,m-f||1,p-g||1)}if(_DataInfo.isValid(o)&&null!==g){o=i.convert(o);t.drawLine(h,g,h,o)}if(_DataInfo.isValid(l)&&null!==p){l=i.convert(l);t.drawLine(h,p,h,l)}if(_DataInfo.isValid(o)&&_DataInfo.isValid(l)){t.fill="transparent";p=(g=Math.min(o,l))+Math.abs(o-l);t.drawRect(f,g,m-f||1,p-g||1);(u=new _RectArea(new Rect(f,g,m-f||1,p-g||1))).tag=C;this.hitTester.add(u,s)}}else{if(_DataInfo.isValid(o)&&_DataInfo.isValid(l)){o=i.convert(o);l=i.convert(l);p=(g=Math.min(o,l))+Math.abs(o-l);if(x){t.drawLine(l,h,o,h);u=new _RectArea(new Rect(g,f,p-g||1,m-f||1))}else{t.drawLine(h,l,h,o);u=new _RectArea(new Rect(f,g,m-f||1,p-g||1))}u.tag=C;this.hitTester.add(u,s)}if(_DataInfo.isValid(_)){_=i.convert(_);x?t.drawLine(_,f,_,h):t.drawLine(f,_,h,_)}if(_DataInfo.isValid(c)){c=i.convert(c);x?t.drawLine(c,h,c,m):t.drawLine(h,c,m,c)}}}}class LineMarkers{constructor(){this._moveMarker=function(t){var e=t.currentTarget,i=this._markers,s=e.getAttribute("data-markerIndex");null!=s&&i[s].forEach(e=>{e._moveMarker(t)})};this._markers=[];this._bindMoveMarker=this._moveMarker.bind(this)}attach(t){var e,i=t.chart.hostElement,s=this._markers,n=i.getAttribute("data-markerIndex"),r=[];if(null!=n)if((r=s[n])&&isArray(r))r.push(t);else{s[n]=[t];this._bindMoveEvent(i)}else{e=s.length;r=[t];s.push(r);i.setAttribute("data-markerIndex",e.toString());this._bindMoveEvent(i)}}detach(t){var e,i,s=t.chart.hostElement,n=this._markers,r=s.getAttribute("data-markerIndex");if(null!=r){(e=(i=n[r]).indexOf(t))>-1&&i.splice(e,1);if(0===i.length){(e=n.indexOf(i))>-1&&(n[e]=void 0);this._unbindMoveEvent(s)}}}_unbindMoveEvent(t){var e=this._bindMoveMarker;t.removeEventListener("mousemove",e);"ontouchstart"in window&&t.removeEventListener("touchmove",e)}_bindMoveEvent(t){var e=this._bindMoveMarker;t.addEventListener("mousemove",e);"ontouchstart"in window&&t.addEventListener("touchmove",e)}}var lineMarkers=new LineMarkers;export var LineMarkerLines;!function(t){t[t.None=0]="None";t[t.Vertical=1]="Vertical";t[t.Horizontal=2]="Horizontal";t[t.Both=3]="Both"}(LineMarkerLines||(LineMarkerLines={}));export var LineMarkerInteraction;!function(t){t[t.None=0]="None";t[t.Move=1]="Move";t[t.Drag=2]="Drag"}(LineMarkerInteraction||(LineMarkerInteraction={}));export var LineMarkerAlignment;!function(t){t[t.Auto=2]="Auto";t[t.Right=0]="Right";t[t.Left=1]="Left";t[t.Bottom=4]="Bottom";t[t.Top=6]="Top"}(LineMarkerAlignment||(LineMarkerAlignment={}));export class LineMarker{constructor(t,e){this._wrapperMousedown=null;this._wrapperMouseup=null;this._savedPosition=new Point;this.positionChanged=new Event;this._chart=t;t._markers.push(this);t.rendered.addHandler(this._initialize,this);this._resetDefaultValue();copy(this,e);this._initialize()}get chart(){return this._chart}get isVisible(){return this._isVisible}set isVisible(t){if(t!==this._isVisible){this._isVisible=asBoolean(t);this._marker&&this._toggleVisibility()}}get seriesIndex(){return this._seriesIndex}set seriesIndex(t){t!==this._seriesIndex&&(this._seriesIndex=asNumber(t,!0))}get horizontalPosition(){return this._horizontalPosition}set horizontalPosition(t){if(t!==this._horizontalPosition){this._horizontalPosition=asNumber(t,!0);this._savedPosition.x=this._horizontalPosition;if(this._horizontalPosition<0||this._horizontalPosition>1)throw"horizontalPosition's value should be in (0, 1).";this._marker&&this._updateMarkerPosition()}}get x(){var t=this._chart.axisX;const e=this.chart.pageToControl(this._targetPoint);return t.convertBack(e.x)}get y(){var t=this._chart.axisY;const e=this.chart.pageToControl(this._targetPoint);return t.convertBack(e.y)}get content(){return this._content}set content(t){if(t!==this._content){this._content=asFunction(t);this._updateMarkerPosition()}}get verticalPosition(){return this._verticalPosition}set verticalPosition(t){if(t!==this._verticalPosition){this._verticalPosition=asNumber(t,!0);this._savedPosition.y=this._verticalPosition;if(this._verticalPosition<0||this._verticalPosition>1)throw"verticalPosition's value should be in (0, 1).";this._marker&&this._updateMarkerPosition()}}get alignment(){return this._alignment}set alignment(t){if(t!==this._alignment){this._alignment=t;this._marker&&this._updatePositionByAlignment()}}get lines(){return this._lines}set lines(t){if((t=asEnum(t,LineMarkerLines))!=this._lines){this._lines=t;this._marker&&this._resetLinesVisibility()}}get interaction(){return this._interaction}set interaction(t){if((t=asEnum(t,LineMarkerInteraction))!=this._interaction){this._marker&&this._detach();this._interaction=t;this._marker&&this._attach();this._toggleElesDraggableClass(this._interaction==LineMarkerInteraction.Drag)}}get dragThreshold(){return this._dragThreshold}set dragThreshold(t){t!=this._dragThreshold&&(this._dragThreshold=asNumber(t))}get dragContent(){return this._dragContent}set dragContent(t){t!==this._dragContent&&(this._dragContent=asBoolean(t));toggleClass(this._dragEle,LineMarker._CSS_LINE_DRAGGABLE,this._interaction===LineMarkerInteraction.Drag&&this._dragContent&&this._lines!==LineMarkerLines.None)}get dragLines(){return this._dragLines}set dragLines(t){t!=this._dragLines&&(this._dragLines=asBoolean(t))}onPositionChanged(t){this.positionChanged.raise(this,t)}remove(){var t=this._chart;if(this._marker){t.rendered.removeHandler(this._initialize,this);this._detach();this._removeMarker();this._wrapperMoveMarker=null;this._wrapperMousedown=null;this._wrapperMouseup=null}}_attach(){var t=this._chart.hostElement;this._interaction!==LineMarkerInteraction.None?addClass(t,LineMarker._CSS_TOUCH_DISABLED):removeClass(t,LineMarker._CSS_TOUCH_DISABLED);lineMarkers.attach(this);this._attachDrag()}_attachDrag(){if(this._interaction===LineMarkerInteraction.Drag){this._wrapperMousedown||(this._wrapperMousedown=this._onMousedown.bind(this));this._wrapperMouseup||(this._wrapperMouseup=this._onMouseup.bind(this));this._toggleDragEventAttach(!0)}}_detach(){removeClass(this._chart.hostElement,LineMarker._CSS_TOUCH_DISABLED);lineMarkers.detach(this);this._detachDrag()}_detachDrag(){this._interaction===LineMarkerInteraction.Drag&&this._toggleDragEventAttach(!1)}_toggleDragEventAttach(t){var e=this._chart.hostElement,i=t?"addEventListener":"removeEventListener";e[i]("mousedown",this._wrapperMousedown);document[i]("mouseup",this._wrapperMouseup);"ontouchstart"in window&&e[i]("touchstart",this._wrapperMousedown);"ontouchend"in window&&document[i]("touchend",this._wrapperMouseup)}_onMousedown(t){var e,i,s,n,r,a=this._getEventPoint(t);if(this._interaction===LineMarkerInteraction.Drag){n=!(0===(e=getElementRect(this._hLine)).width||0===e.height);r=!(0===(i=getElementRect(this._vLine)).width||0===i.height);s=getElementRect(this._markerContent);if(this._dragContent&&this._pointInRect(a,s)){this._capturedEle=this._markerContent;this._contentDragStartPoint=new Point(a.x,a.y);this._mouseDownCrossPoint=new Point(this._targetPoint.x,this._targetPoint.y)}else if(n&&(Math.abs(e.top-a.y)<=this._dragThreshold||Math.abs(a.y-e.top-e.height)<=this._dragThreshold||a.y>=e.top&&a.y<=e.top+e.height)){this._capturedEle=this._hLine;this._contentDragStartPoint=void 0;addClass(this._chart.hostElement,LineMarker._CSS_LINE_DRAGGABLE)}else if(r&&(Math.abs(i.left-a.x)<=this._dragThreshold||Math.abs(a.x-i.left-i.width)<=this._dragThreshold||a.x>=i.left&&a.x<=i.left+i.width)){this._capturedEle=this._vLine;this._contentDragStartPoint=void 0;addClass(this._chart.hostElement,LineMarker._CSS_LINE_DRAGGABLE)}t.preventDefault()}}_onMouseup(t){var e=this._alignment===LineMarkerAlignment.Auto&&this._capturedEle===this._markerContent&&this._lines!==LineMarkerLines.None;this._capturedEle=void 0;this._contentDragStartPoint=void 0;this._mouseDownCrossPoint=void 0;if(e){this._updatePositionByAlignment();this._updatePositionByAlignment()}removeClass(this._chart.hostElement,LineMarker._CSS_LINE_DRAGGABLE)}_moveMarker(t){var e,i,s,n,r,a,h=this._chart,o=this._getEventPoint(t),l=this._plotRect,_=this._interaction===LineMarkerInteraction.Drag,c=this._lines===LineMarkerLines.Horizontal,d=this._lines===LineMarkerLines.Vertical,u=this._seriesIndex,g=getElementRect(h.hostElement);if(l&&this._isVisible&&this._interaction!==LineMarkerInteraction.None&&(this._interaction!==LineMarkerInteraction.Drag||this._capturedEle&&this._lines!==LineMarkerLines.None)){if(_)if(this._contentDragStartPoint){o.x=c?this._targetPoint.x:this._mouseDownCrossPoint.x+o.x-this._contentDragStartPoint.x;o.y=d?this._targetPoint.y:this._mouseDownCrossPoint.y+o.y-this._contentDragStartPoint.y}else c||!this._dragLines&&this._capturedEle===this._hLine?o.x=this._targetPoint.x:(d||!this._dragLines&&this._capturedEle===this._vLine)&&(o.y=this._targetPoint.y);if(_&&this._lines===LineMarkerLines.Horizontal||!this._dragLines&&this._capturedEle===this._hLine){if(o.y<=l.top||o.y>=l.top+l.height)return}else if(_&&this._lines===LineMarkerLines.Vertical||!this._dragLines&&this._capturedEle===this._vLine){if(o.x<=l.left||o.x>=l.left+l.width)return}else{const t=this._getTop();if(o.x<=l.left||o.y<=t||o.x>=l.left+l.width||o.y>=t+l.height)return}if(null!=u&&u>=0&&u<h.series.length){if(null==(i=(e=h.series[u]).hitTest(new Point(o.x,NaN)))||null==i.x||null==i.y)return;s=e.axisX||h.axisX;n=e._getAxisY();r=isDate(i.x)?FlexChartCore._toOADate(i.x):i.x;r=isString(r)?i.pointIndex:r;a=isDate(i.y)?FlexChartCore._toOADate(i.y):i.y;const t=this._getElementPaddingValuee(h.hostElement,"padding-left"),l=this._getElementPaddingValuee(h.hostElement,"padding-top");o.x=s.convert(r)+t+g.left;this.chart._stacking!=Stacking.None&&(a=this._calcStackedValue(u,r,a));o.y=n.convert(a)+l+g.top}this._updateMarkerPosition(o);t.preventDefault()}}_calcStackedValue(t,e,i){let s=i;const n=this.chart._stacking==Stacking.Stacked100pc;for(let r=0;r<t;r++){const t=this.chart.series[r],a=t.getValues(1),h=t.getValues(0);if(h)for(let t=0;t<h.length;t++){if(e===(a?a[t]:t)){isFinite(h[t])&&(n||this._sign(i)==this._sign(h[t]))&&(s+=h[t]);break}}}if(n&&s){s/=this.chart._dataInfo.getStackedAbsSum(e);s>1&&(s=1)}return s}_sign(t){return t>0?1:t<0?-1:0}_getElementPaddingValuee(t,e){return+window.getComputedStyle(t,null).getPropertyValue(e).replace("px","")}_show(t){(t||this._marker).style.display="block"}_hide(t){(t||this._marker).style.display="none"}_toggleVisibility(){this._isVisible?this._show():this._hide()}_resetDefaultValue(){this._isVisible=!0;this._alignment=LineMarkerAlignment.Auto;this._lines=LineMarkerLines.None;this._interaction=LineMarkerInteraction.None;this._horizontalPosition=null;this._verticalPosition=null;this._content=null;this._seriesIndex=null;this._dragThreshold=15;this._dragContent=!1;this._dragLines=!1;this._targetPoint=new Point}_initialize(){var t,e=this._chart.hostElement.querySelector("."+FlexChartCore._CSS_PLOT_AREA);this._plot=e;this._marker||this._createMarker();if(e){this._plotRect=getElementRect(e);t=e.getBBox();this._plotRect.width=t.width;this._plotRect.height=t.height;this._updateMarkerSize();this._updateLinesSize()}this._updateMarkerPosition();this._wrapperMoveMarker=this._moveMarker.bind(this);this._attach()}_createMarker(){var t,e;t=document.createElement("div");addClass(t,LineMarker._CSS_MARKER);(e=this._getContainer()).appendChild(t);this._markerContainer=e;this._marker=t;this._createChildren()}_removeMarker(){var t=this._markerContainer;t.removeChild(this._marker);this._content=null;this._hLine=null;this._vLine=null;if(!t.hasChildNodes()){this._chart.hostElement.removeChild(this._markerContainer);this._markerContainer=null}this._marker=null}_getContainer(){var t=this._chart.hostElement.querySelector(LineMarker._CSS_MARKER_CONTAINER);t||(t=this._createContainer());return t}_createContainer(){var t=document.createElement("div"),e=this._chart.hostElement;addClass(t,LineMarker._CSS_MARKER_CONTAINER);e.insertBefore(t,e.firstChild);return t}_createChildren(){var t,e,i,s,n=this._marker;(s=document.createElement("div")).style.position="absolute";s.style.height="100%";s.style.width="100%";n.appendChild(s);this._dragEle=s;t=document.createElement("div");addClass(t,LineMarker._CSS_MARKER_CONTENT);n.appendChild(t);this._markerContent=t;e=document.createElement("div");addClass(e,LineMarker._CSS_MARKER_HLINE);n.appendChild(e);this._hLine=e;i=document.createElement("div");addClass(i,LineMarker._CSS_MARKER_VLINE);n.appendChild(i);this._vLine=i;this._toggleElesDraggableClass(this._interaction===LineMarkerInteraction.Drag);this._resetLinesVisibility()}_toggleElesDraggableClass(t){toggleClass(this._hLine,LineMarker._CSS_LINE_DRAGGABLE,t);toggleClass(this._vLine,LineMarker._CSS_LINE_DRAGGABLE,t);toggleClass(this._dragEle,LineMarker._CSS_LINE_DRAGGABLE,t&&this._dragContent&&this._lines!==LineMarkerLines.None)}_updateMarkerSize(){var t=this._plotRect,e=this._chart.hostElement,i=window.getComputedStyle(e,null),s=getElementRect(e);if(this._marker){this._marker.style.marginTop=t.top-s.top-(parseFloat(i.getPropertyValue("padding-top"))||0)+"px";this._marker.style.marginLeft=t.left-s.left-(parseFloat(i.getPropertyValue("padding-left"))||0)+"px"}}_updateLinesSize(){var t=this._plotRect;if(this._hLine&&this._vLine){this._hLine.style.width=t.width+"px";this._vLine.style.height=t.height+"px"}}_resetLinesVisibility(){if(this._hLine&&this._vLine){this._hide(this._hLine);this._hide(this._vLine);this._lines!==LineMarkerLines.Horizontal&&this._lines!==LineMarkerLines.Both||this._show(this._hLine);this._lines!==LineMarkerLines.Vertical&&this._lines!==LineMarkerLines.Both||this._show(this._vLine)}}_updateMarkerPosition(t){var e,i,s=this._plotRect,n=this._targetPoint,r=!1;this._interaction,LineMarkerInteraction.Drag;if(this._plot){e=s.left+s.width*(this._horizontalPosition||0);i=s.top+s.height*(this._verticalPosition||0);null==this._horizontalPosition&&t?e=t.x:this._savedPosition.x>0&&(e=s.left+s.width*this._savedPosition.x);null==this._verticalPosition&&t?i=t.y:this._savedPosition.y>0&&(i=s.top+s.height*this._savedPosition.y);e===n.x&&i===n.y||(r=!0);n.x=e;n.y=i;this._savedPosition.x=clamp((e-s.left)/s.width,0,1);this._savedPosition.y=clamp((i-s.top)/s.height,0,1);this._toggleVisibility();this._content&&this._updateContent();r&&this._raisePositionChanged(e,i);this._updatePositionByAlignment(!!t)}}_updateContent(){var t,e=this._chart,i=this._targetPoint,s=e.hitTest(i);t=this._content.call(null,s,i);this._markerContent.innerHTML=t||""}_raisePositionChanged(t,e){this._plotRect;this.onPositionChanged(new Point(t,e))}_updatePositionByAlignment(t){var e=this._alignment,i=this._targetPoint,s=this._marker,n=0,r=0,a=s.clientWidth,h=s.clientHeight,o=this._plotRect;if(!this._plot)return;const l=this._getTop();if(!this._capturedEle||this._capturedEle&&this._capturedEle!==this._markerContent){if(e===LineMarkerAlignment.Auto){i.x+a+12>o.left+o.width&&i.x-a>=0&&(r=a);n=h;i.y-h<l&&(n=0)}else{1==(1&e)&&(r=a);2==(2&e)&&(n=h)}this._interaction===LineMarkerInteraction.Move&&0===n&&0===r&&null==this.verticalPosition&&(r=-12)}else{parseInt(this._hLine.style.top)>0&&(n=h);parseInt(this._vLine.style.left)>0&&(r=a)}s.style.left=i.x-r-o.left+"px";s.style.top=i.y-n-l+"px";this._hLine.style.top=n+"px";this._hLine.style.left=o.left-i.x+r+"px";this._vLine.style.top=l-i.y+n+"px";this._vLine.style.left=r+"px"}_getEventPoint(t){return t instanceof MouseEvent?new Point(t.pageX,t.pageY):new Point(t.changedTouches[0].pageX,t.changedTouches[0].pageY)}_pointInRect(t,e){return!(!t||!e)&&(t.x>=e.left&&t.x<=e.left+e.width&&t.y>=e.top&&t.y<=e.top+e.height)}_getTop(){let t=0;const e=this.chart._getHostComputedStyle();if(e){t+=this.chart._parsePx(e.paddingTop);t+=this.chart._parsePx(e.borderTopWidth);t+=this.chart._parsePx(e.marginTop)}return this._chart._plotRect.top+this._plot.getBoundingClientRect().top-t}}LineMarker._CSS_MARKER=LineMarkerClsNames.linemarker;LineMarker._CSS_MARKER_HLINE=LineMarkerClsNames.hline;LineMarker._CSS_MARKER_VLINE=LineMarkerClsNames.vline;LineMarker._CSS_MARKER_CONTENT=LineMarkerClsNames.content;LineMarker._CSS_MARKER_CONTAINER=LineMarkerClsNames.container;LineMarker._CSS_LINE_DRAGGABLE=LineMarkerClsNames.draggable;LineMarker._CSS_TOUCH_DISABLED=FlexChartClsNames.touchDisabled;export class _LinePlotter extends _BasePlotter{constructor(){super();this.hasSymbols=!1;this.hasLines=!0;this.isSpline=!1;this.isStep=!1;this.hitTestSymbols=!0;this.stacking=Stacking.None;this.stackPos={};this.stackNeg={};this.clipping=!1}clear(){super.clear();this.stackNeg={};this.stackPos={}}adjustLimits(t,e){this.dataInfo=t;var i=t.getMinX(),s=t.getMinY(),n=t.getMaxX(),r=t.getMaxY();if(this.isSpline&&!this.chart.axisY._getLogBase()){const t=.1*(r-s);s-=t;r+=t}return this.rotated?new Rect(s,i,r-s,n-i):new Rect(i,s,n-i,r-s)}plotSeries(t,e,i,s,n,r,a,h){var o=[],l=asType(s,SeriesBase),_=this.chart.series.indexOf(s),c=s.getValues(0),d=s.getValues(1);if(!c)return;d||(d=this.dataInfo.getXVals());var u=_BasePlotter.cloneStyle(s.style,["fill"]),g=c.length,p=!0;if(d)g=Math.min(g,d.length);else{p=!1;d=new Array(g)}var f=this._DEFAULT_WIDTH,m=l._getSymbolFill(_),x=l._getAltSymbolFill(_)||m,b=l._getSymbolStroke(_),y=l._getAltSymbolStroke(_)||b,S=l._getSymbolSize();t.stroke=b;t.strokeWidth=f;t.fill=m;const v=new Float64Array(g),w=new Float64Array(g);let C=0;const T=new Int8Array(g);let M=0;var P=this.rotated,A=this.stacking!=Stacking.None&&!l._isCustomAxisY(),L=this.stacking==Stacking.Stacked100pc&&!l._isCustomAxisY();void 0!==l._getChartType()&&(A=L=!1);var N=l.interpolateNulls,E=!1;const k=this.getItemFormatter(s);var I;for(let t=0;t<g;t++){let s=p?d[t]:t,n=c[t];if(isFinite(s)&&isFinite(n)){if(A){if(L){n/=this.dataInfo.getStackedAbsSum(s)}if(n>=0){const t=isNaN(this.stackPos[s])?0:this.stackPos[s];n=this.stackPos[s]=t+n}else{const t=isNaN(this.stackNeg[s])?0:this.stackNeg[s];n=this.stackNeg[s]=t+n}}if(P){I=new _DataPoint(_,t,n,s);const r=e.convert(n);n=i.convert(s);s=r}else{I=new _DataPoint(_,t,s,n);s=e.convert(s);n=i.convert(n)}if(isNaN(s)||isNaN(n)){E=!0;if(!0!==N){v[C]=NaN;w[C++]=NaN}T[M++]=1;h&&o.push(null)}else{v[C]=s;w[C++]=n;M++;h&&o.push(new Point(s,n));if(this.hitTestSymbols){const t=new _CircleArea(new Point(s,n),.5*S);t.tag=I;this.hitTester.add(t,_)}}}else{E=!0;if(!0!==N){v[C]=NaN;w[C++]=NaN}T[M++]=1;h&&o.push(null)}}var R=0;if(this.hasLines){t.fill=null;if(E&&!0!==N){let e=[],i=[];for(let s=0;s<g;s++)if(isNaN(v[s])){if(e.length>1){this._drawLines(t,e,i,null,u,this.chart._plotrectId);this.hitTester.add(new _LinesArea(e,i),_);R++}e=[];i=[]}else{e.push(v[s]);i.push(w[s])}if(e.length>1){this._drawLines(t,e,i,null,u,this.chart._plotrectId);this.hitTester.add(new _LinesArea(e,i),_);R++}}else{this._drawLines(t,v,w,null,u,this.chart._plotrectId,C);this.hitTester.add(new _LinesArea(v,w),_);R++}}if(this.hasSymbols&&S>0||k){t.fill=m;let n=0;for(let r=0;r<g;r++){if(N&&T[r])continue;const a=v[n],h=w[n];if(!1===this.hasLines||k){t.fill=c[r]>0?m:x;t.stroke=c[r]>0?b:y;t.strokeWidth=f}if(this.isValid(a,h,e,i)){this._drawSymbol(t,a,h,S,l,r,k);s._setPointIndex(r,R);R++}n++}}h&&o&&o.length&&h(o)}_drawLines(t,e,i,s,n,r,a){if(this.isSpline&&a>3)t.drawSplines(e,i,s,n,r,a);else if(this.isStep){const h=this._createSteps(e,i,a);e=h.x;i=h.y;t.drawLines(e,i,s,n,r)}else t.drawLines(e,i,s,n,r,a)}_drawSymbol(t,e,i,s,n,r,a){if(a){t.startGroup();const h=new HitTestInfo(this.chart,new Point(e,i),ChartElement.SeriesSymbol);h._setData(n,r);a(t,h,()=>{this.hasSymbols&&s>0&&this._drawDefaultSymbol(t,e,i,s,n.symbolMarker,n.symbolStyle)});t.cssPriority=!0;t.endGroup()}else this._drawDefaultSymbol(t,e,i,s,n.symbolMarker,n.symbolStyle)}_drawDefaultSymbol(t,e,i,s,n,r){n==Marker.Dot?t.drawEllipse(e,i,.5*s,.5*s,null,r):n==Marker.Box&&t.drawRect(e-.5*s,i-.5*s,s,s,null,r)}}export class _BubblePlotter extends _LinePlotter{constructor(){super();this._MIN_SIZE=5;this._MAX_SIZE=30;this.hasLines=!1;this.hasSymbols=!0;this.clipping=!0;this.hitTestSymbols=!1}adjustLimits(t,e){var i=this.getNumOption("minSize","bubble");this._minSize=i||this._MIN_SIZE;var s=this.getNumOption("maxSize","bubble");this._maxSize=s||this._MAX_SIZE;var n=this.chart.series,r=n.length,a=NaN,h=NaN;for(let t=0;t<r;t++){const e=n[t];if(e._getChartType()==ChartType.Bubble||null==e._getChartType()&&e._chart._getChartType()==ChartType.Bubble){const t=e._getBindingValues(1);if(t){const e=t.length;for(let i=0;i<e;i++)if(isFinite(t[i])){(isNaN(a)||t[i]<a)&&(a=t[i]);(isNaN(h)||t[i]>h)&&(h=t[i])}}}}this._minValue=a;this._maxValue=h;const o=super.adjustLimits(t,e);let l=e.left,_=e.right,c=e.top,d=e.bottom;for(let t=0;t<r;t++){const i=n[t];if(i._getChartType()==ChartType.Bubble||null==i._getChartType()&&i._chart._getChartType()==ChartType.Bubble){const t=i._getBindingValues(1),s=i.getValues(1),n=i.getValues(0);if(t&&s&&n){const i=t.length;for(let r=0;r<i;r++){let i=s?s[r]:r,u=n[r],g=t[r];if(_DataInfo.isValid(i,u,g)){i=e.left+e.width*(i-o.left)/o.width;u=e.top+e.height*(u-o.top)/o.height;g=this._minSize+(this._maxSize-this._minSize)*(g-a)/(h-a);i-g<l&&(l=i-g);i+g>_&&(_=i+g);u-g<c&&(c=u-g);u+g>d&&(d=u+g)}}}}}l=e.left-l+5;_=_-e.right+5;c=e.top-c+5;d=d-e.bottom+5;var u=this.chart.axisX,g=this.chart.axisY;if(!u._isLogAxis())if(this.stacking==Stacking.Stacked100pc&&this.rotated){const t=(e.width-this._maxSize)/o.width;o.left-=.5*this._maxSize/t;o.width+=this._maxSize/t}else{const t=(e.width-(l+_))/o.width;o.left-=l/t;o.width+=(l+_)/t}if(!g._isLogAxis())if(this.stacking!=Stacking.Stacked100pc||this.rotated){const t=(e.height-(c+d))/o.height;o.top-=c/t;o.height+=(c+d)/t}else{const t=(e.height-this._maxSize)/o.height;o.top-=.5*this._maxSize/t;o.height+=this._maxSize/t}return o}_drawSymbol(t,e,i,s,n,r,a){if(null==this._minSize){const t=this.getNumOption("minSize","bubble");this._minSize=t||this._MIN_SIZE}if(null==this._maxSize){const t=this.getNumOption("maxSize","bubble");this._maxSize=t||this._MAX_SIZE}const h=n._getItem(r);if(h){const s=n._getBinding(1);if(s){let o=h[s];if(isFinite(o)){null==o&&(o=this._minValue);const s=this._minValue==this._maxValue?1:Math.sqrt((o-this._minValue)/(this._maxValue-this._minValue));o=this._minSize+(this._maxSize-this._minSize)*s;if(a){const s=new HitTestInfo(this.chart,new Point(e,i),ChartElement.SeriesSymbol);s._setData(n,r);t.startGroup();a(t,s,()=>{this._drawDefaultSymbol(t,e,i,o,n.symbolMarker,n.symbolStyle)});t.endGroup()}else this._drawDefaultSymbol(t,e,i,o,n.symbolMarker,n.symbolStyle);let h=n.getValues(1);h||(h=this.dataInfo.getXVals());const l=h?h[r]:r,_=n.getValues(0)[r],c=this.chart.series.indexOf(n),d=new _CircleArea(new Point(e,i),.5*o);d.tag=new _DataPoint(c,r,l,_);this.hitTester.add(d,c)}}}}}_registerModule("wijmo.chart",selfModule);
|
|
14
|
+
import{culture,format,Globalize,isString,toPlainText,isNumberFinite,addClass,Point,Rect,removeChild,removeClass,setAttribute,Size,asEnum,asString,isNumber,asNumber,assert,asBoolean,setCss,tryCast,isNumberNaN,DataType,isDate,isArray,Event,asType,copy,asFunction,Binding,EventArgs,asCollectionView,asInt,ObservableArray,asDate,isIE,hasClass,UtilitesClsNames,asArray,clamp,isUndefined,getElementRect,toggleClass,isFunction,ControlClsNames,Control,Tooltip,CancelEventArgs,Color,_addCultureInfo,mouseToPage,ControlStateClsNames,animate,_registerModule}from"@grapecity/wijmo";import*as selfModule from"@grapecity/wijmo.chart";export class _VolumeHelper{constructor(t,e,i,s,n){this._volumes=asArray(t);this._xVals=asArray(e);this._xDataMin=asNumber(i,!0,!1);this._xDataMax=asNumber(s,!0,!1);this._xDataType=asEnum(n,DataType,!0);this._calcData=[];this._init()}convert(t,e,i){var s,n=this._calcData.length,r=-1;if(this._hasXs&&this._xDataType===DataType.Date){if(-1===(r=this._xVals.indexOf(t)))for(let e=0;e<this._xVals.length;e++){if(e<this._xVals.length-1&&this._xVals[e]<=t&&t<=this._xVals[e+1]){r=e;break}if(0===e&&t<=this._xVals[e]){r=e;break}if(e===this._xVals.length-1&&this._xVals[e]<=t){r=e;break}}if(-1===r){r=this._xVals.indexOf(Math.floor(t));r=clamp(r,0,n-1)}}else if(this._hasXs){if(-1===(r=this._xVals.indexOf(t))){r=this._xVals.indexOf(Math.floor(t));r=clamp(r,0,n-1)}}else r=clamp(Math.round(t),0,n-1);if(0<=r&&r<n){this._hasXs&&(t=_VolumeHelper.convertToRange(t,0,n-1,this._xDataMin,this._xDataMax));s=((s=this._calcData[r].value+(t-r)*this._calcData[r].width-.5*this._calcData[r].width)-(e=this._getXVolume(e)))/((i=this._getXVolume(i))-e)}return s}convertBack(t,e,i){var s,n,r=this._calcData.length,a=-1;for(n=0;n<r;n++)if(this._calcData[n].x1<=t&&t<=this._calcData[n].x2||0===n&&t<=this._calcData[n].x2||n===r-1&&this._calcData[n].x1<=t){a=n;break}if(0<=a&&a<r){s=t/this._calcData[a].width-this._calcData[a].value/this._calcData[a].width+.5+n;this._hasXs&&(s=_VolumeHelper.convertToRange(s,this._xDataMin,this._xDataMax,0,r-1))}return s}_init(){this._hasXs=null!==this._xVals&&this._xVals.length>0;this._hasXs&&!isNumber(this._xDataMin)&&(this._xDataMin=Math.min.apply(null,this._xVals));this._hasXs&&!isNumber(this._xDataMax)&&(this._xDataMax=Math.max.apply(null,this._xVals));this._hasXs&&(this._hasXs=isNumber(this._xDataMin)&&isNumber(this._xDataMax));this._hasXs&&this._xDataType===DataType.Date&&this._fillGaps();var t=0,e=0,i=null!==this._volumes&&this._volumes.length>0?this._volumes.length:0;for(e=0;e<i;e++)t+=this._volumes[e]||0;var s,n,r=0;for(e=0;e<i;e++){s=r+(n=(this._volumes[e]||0)/t);this._calcData.push({value:s,width:n,x1:r,x2:s});r=this._calcData[e].value}}_getXVolume(t){var e=this._calcData.length,i=-1;if(this._hasXs){i=this._xVals.indexOf(t);for(let e=0;e<this._xVals.length;e++){if(e<this._xVals.length-1&&this._xVals[e]<=t&&t<=this._xVals[e+1]){i=e;break}if(0===e&&t<=this._xVals[e]){i=e;break}if(e===this._xVals.length-1&&this._xVals[e]<=t){i=e;break}}}this._hasXs&&(t=_VolumeHelper.convertToRange(t,0,e-1,this._xDataMin,this._xDataMax));-1===i&&(i=clamp(Math.round(t),0,e-1));return this._calcData[i].value+(t-i)*this._calcData[i].width-.5*this._calcData[i].width}static convertToRange(t,e,i,s,n){return e===i||s===n?0:(t-s)*(i-e)/(n-s)+e}_fillGaps(){if(!(this._xDataType!==DataType.Date||null===this._xVals||this._xVals.length<=0)){var t,e=this._xDataMin,i=this._xDataMax;for(t=1;e<i;t++){(e=new Date(e)).setDate(e.getDate()+1);if((e=e.valueOf())!==this._xVals[t]){this._xVals.splice(t,0,e);this._volumes.splice(t,0,0)}}}}}export class _Curve{constructor(t,e,i,s){this.monoX=!1;const n=i||Math.min(t.length,e.length);let r=0,a=0,h=0,l=0;if(n>3)for(let i=0;i<n-1;i++)if(i>0){a=Math.min(a,t[i]-t[i-1]);r=Math.max(r,t[i]-t[i-1]);l=Math.min(l,e[i]-e[i-1]);h=Math.max(h,e[i]-e[i-1])}this.monoX=r>0&&0===a||a<0&&0===r;this.monoX&&"spline"!==s?this.calc=a<0?new _SplineMono(t.reverse(),e.reverse(),i):new _SplineMono(t,e,i):this.calc=new _Spline(t,e,i)}calculate(){return this.calc.calculate()}}export class _Spline{constructor(t,e,i){this.k=.002;this._a=[];this._b=[];this._c=[];this._d=[];this.m=[[-.5,1.5,-1.5,.5],[1,-2.5,2,-.5],[-.5,0,.5,0],[0,1,0,0]];this._x=t;this._y=e;this._len=i||Math.min(t.length,e.length);const s=this._len;if(s>3)for(let i=0;i<s-1;i++){const n=0==i?new Point(t[i],e[i]):new Point(t[i-1],e[i-1]),r=new Point(t[i],e[i]),a=new Point(t[i+1],e[i+1]),h=i==s-2?new Point(t[i+1],e[i+1]):new Point(t[i+2],e[i+2]),l=new Point,o=new Point,c=new Point,_=new Point;l.x=n.x*this.m[0][0]+r.x*this.m[0][1]+a.x*this.m[0][2]+h.x*this.m[0][3];o.x=n.x*this.m[1][0]+r.x*this.m[1][1]+a.x*this.m[1][2]+h.x*this.m[1][3];c.x=n.x*this.m[2][0]+r.x*this.m[2][1]+a.x*this.m[2][2]+h.x*this.m[2][3];_.x=n.x*this.m[3][0]+r.x*this.m[3][1]+a.x*this.m[3][2]+h.x*this.m[3][3];l.y=n.y*this.m[0][0]+r.y*this.m[0][1]+a.y*this.m[0][2]+h.y*this.m[0][3];o.y=n.y*this.m[1][0]+r.y*this.m[1][1]+a.y*this.m[1][2]+h.y*this.m[1][3];c.y=n.y*this.m[2][0]+r.y*this.m[2][1]+a.y*this.m[2][2]+h.y*this.m[2][3];_.y=n.y*this.m[3][0]+r.y*this.m[3][1]+a.y*this.m[3][2]+h.y*this.m[3][3];this._a.push(l);this._b.push(o);this._c.push(c);this._d.push(_)}}calculatePoint(t){var e=Math.floor(t);e<0&&(e=0);e>this._len-2&&(e=this._len-2);var i=t-e;return{x:((this._a[e].x*i+this._b[e].x)*i+this._c[e].x)*i+this._d[e].x,y:((this._a[e].y*i+this._b[e].y)*i+this._c[e].y)*i+this._d[e].y}}calculate(){if(this._len<=3)return{xs:this._x,ys:this._y};const t=[],e=[];let i=this.calculatePoint(0);t.push(i.x);e.push(i.y);const s=Math.min(this._len*this.k,.2);for(let n=s;n<=this._len-1;n+=s){const r=Math.ceil(n),a=this.calculatePoint(n);if(Math.abs(i.x-a.x)>=3||Math.abs(i.y-a.y)>=3){t.push(a.x);e.push(a.y);i=a}if(n+s>=r){t.push(this._x[r]);e.push(this._y[r])}}return{xs:t,ys:e}}}class _SplineMono{constructor(t,e,i){this._x=[];this._y=[];this._c1s=[];this._c2s=[];this._c3s=[];this._len=i||Math.min(t.length,e.length);const s=this._len;for(let i=0;i<s;i++){this._x.push(t[i]);this._y.push(e[i])}t=this._x;e=this._y;if(this._len<=3)return;const n=[],r=[],a=[];for(let i=0;i<s-1;i++){const s=t[i+1]-t[i],h=e[i+1]-e[i];r[i]=s;n[i]=h;a[i]=h/s}var h=this._c1s;h.push(a[0]);for(let t=0;t<r.length-1;t++){const e=a[t],i=a[t+1];if(e*i<=0)h.push(0);else{const s=r[t],n=r[t+1],a=s+n;h.push(3*a/((a+n)/e+(a+s)/i))}}h.push(a[a.length-1]);const l=this._c2s,o=this._c3s;for(let t=0;t<h.length-1;t++){const e=h[t],i=a[t],s=1/r[t],n=e+h[t+1]-i-i;l[t]=(i-e-n)*s;o[t]=n*s*s}}interpolate(t){let e=this._x.length-1;if(t>=this._x[e])return this._y[e];for(var i,s=0,n=this._c3s.length-1;s<=n;){i=Math.floor(.5*(s+n));const e=this._x[i];if(e<t)s=i+1;else{if(!(e>t))return this._y[i];n=i-1}}e=Math.max(0,n);var r=t-this._x[e];return this._y[e]+r*(this._c1s[e]+r*(this._c2s[e]+r*this._c3s[e]))}calculate(){if(this._len<=3)return{xs:this._x,ys:this._y};const t=[],e=[],i=this._len,s=this._x[0],n=this._x[i-1],r=Math.min(.001*this._len,.2);for(let i=s;i<=n;i+=r){t.push(i);e.push(this.interpolate(i))}return{xs:t,ys:e}}}export class Palettes{static _isExtended(t){return-1!==Palettes._values(Palettes.Diverging).indexOf(t)||-1!==Palettes._values(Palettes.Qualitative).indexOf(t)||-1!==Palettes._values(Palettes.SequentialSingle).indexOf(t)||-1!==Palettes._values(Palettes.SequentialMulti).indexOf(t)}static _values(t){return Object.keys(t).map(e=>t[e])}}Palettes.standard=["#88bde6","#fbb258","#90cd97","#f6aac9","#bfa554","#bc99c7","#eddd46","#f07e6e","#8c8c8c"];Palettes.cocoa=["#466bb0","#c8b422","#14886e","#b54836","#6e5944","#8b3872","#73b22b","#b87320","#141414"];Palettes.coral=["#84d0e0","#f48256","#95c78c","#efa5d6","#ba8452","#ab95c2","#ede9d0","#e96b7d","#888888"];Palettes.dark=["#005fad","#f06400","#009330","#e400b1","#b65800","#6a279c","#d5a211","#dc0127","#000000"];Palettes.highcontrast=["#ff82b0","#0dda2c","#0021ab","#bcf28c","#19c23b","#890d3a","#607efd","#1b7700","#000000"];Palettes.light=["#ddca9a","#778deb","#cb9fbb","#b5eae2","#7270be","#a6c7a7","#9e95c7","#95b0c7","#9b9b9b"];Palettes.midnight=["#83aaca","#e37849","#14a46a","#e097da","#a26d54","#a584b7","#d89c54","#e86996","#2c343b"];Palettes.modern=["#2d9fc7","#ec993c","#89c235","#e377a4","#a68931","#a672a6","#d0c041","#e35855","#68706a"];Palettes.organic=["#9c88d9","#a3d767","#8ec3c0","#e9c3a9","#91ab36","#d4ccc0","#61bbd8","#e2d76f","#80715a"];Palettes.slate=["#7493cd","#f99820","#71b486","#e4a491","#cb883b","#ae83a4","#bacc5c","#e5746a","#505d65"];Palettes.zen=["#7bb5ae","#e2d287","#92b8da","#eac4cb","#7b8bbd","#c7d189","#b9a0c8","#dfb397","#a9a9a9"];Palettes.cyborg=["#2a9fd6","#77b300","#9933cc","#ff8800","#cc0000","#00cca3","#3d6dcc","#525252","#000000"];Palettes.superhero=["#5cb85c","#f0ad4e","#5bc0de","#d9534f","#9f5bde","#46db8c","#b6b86e","#4e5d6c","#2b3e4b"];Palettes.flatly=["#18bc9c","#3498db","#f39c12","#6cc1be","#99a549","#8f54b5","#e74c3c","#8a9899","#2c3e50"];Palettes.darkly=["#375a7f","#00bc8c","#3498db","#f39c12","#e74c3c","#8f61b3","#b08725","#4a4949","#000000"];Palettes.cerulan=["#033e76","#87c048","#59822c","#53b3eb","#fc6506","#d42323","#e3bb00","#cccccc","#222222"];Palettes.Qualitative={Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5"]};Palettes.Diverging={BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]};Palettes.SequentialSingle={Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]};Palettes.SequentialMulti={BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"]};export const empty={};export class PlotArea{constructor(t){this._row=0;this._col=0;this._rect=new Rect(0,0,0,0);copy(this,t)}get row(){return this._row}set row(t){if(t!=this._row){this._row=asInt(t,!0,!0);this._invalidate()}}get column(){return this._col}set column(t){if(t!=this._col){this._col=asInt(t,!0,!0);this._invalidate()}}get name(){return this._name}set name(t){t!=this._name&&(this._name=asString(t,!0))}get width(){return this._width}set width(t){if(t!=this._width){this._width=t;this._invalidate()}}get height(){return this._height}set height(t){if(t!=this._height){this._height=t;this._invalidate()}}get style(){return this._style}set style(t){if(t!=this._style){this._style=t;this._invalidate()}}_invalidate(){this._chart&&this._chart.invalidate()}_render(t){t.drawRect(this._rect.left,this._rect.top,this._rect.width,this._rect.height,null,this.style)}_setPlotX(t,e){this._rect.left=t;this._rect.width=e}_setPlotY(t,e){this._rect.top=t;this._rect.height=e}}export class PlotAreaCollection extends ObservableArray{getPlotArea(t){var e=this.indexOf(t);return e>-1?this[e]:null}indexOf(t){for(let e=0;e<this.length;e++)if(this[e].name==t)return e;return-1}_getWidth(t){for(let e=0;e<this.length;e++){const i=this[e];if(i.column==t&&0==i.row)return i.width}}_getHeight(t){for(let e=0;e<this.length;e++){const i=this[e];if(i.row==t&&0==i.column)return i.height}}_calculateWidths(t,e){if(e<=0)throw"ncols";var i=[];for(let t=0;t<e;t++){const e=this._getWidth(t);i[t]=new _GridLength(e)}return this._calculateLengths(t,e,i)}_calculateHeights(t,e){if(e<=0)throw"nrows";var i=[];for(let t=0;t<e;t++){const e=this._getHeight(t);i[t]=new _GridLength(e)}return this._calculateLengths(t,e,i)}_calculateLengths(t,e,i){var s=[e],n=0,r=0;for(let t=0;t<e;t++)if(i[t].isAbsolute){s[t]=i[t].value;n+=s[t]}else i[t].isStar?r+=i[t].value:i[t].isAuto&&r++;var a=(t-n)/r;for(let t=0;t<e;t++){i[t].isStar?s[t]=a*i[t].value:i[t].isAuto&&(s[t]=a);s[t]<0&&(s[t]=0)}return s}}var _GridUnitType,_tmInc;!function(t){t[t.Auto=0]="Auto";t[t.Pixel=1]="Pixel";t[t.Star=2]="Star"}(_GridUnitType||(_GridUnitType={}));class _GridLength{constructor(t=null){this._unitType=_GridUnitType.Auto;if(t)if((t=t.toString()).indexOf("*")>=0){this._unitType=_GridUnitType.Star;t=t.replace("*","");this._value=parseFloat(t);isNumberNaN(+this._value)&&(this._value=1)}else{this._unitType=_GridUnitType.Pixel;this._value=parseFloat(t);if(isNumberNaN(+this._value)){this._unitType=_GridUnitType.Auto;this._value=1}}}get value(){return this._value}get isStar(){return this._unitType==_GridUnitType.Star}get isAbsolute(){return this._unitType==_GridUnitType.Pixel}get isAuto(){return this._unitType==_GridUnitType.Auto}}export class _SvgRenderEngine{constructor(t){this._STROKE_JOIN="round";this._strokeWidth=1;this._fontSize=null;this._fontFamily=null;this._savedGradient={};this._bbCache={};this._baseUrl="";this._cssPriority=!0;this._readOnly=!1;this._isRtl=!1;this._precision=1;this._options=null;this._htmlText=!1;this._element=t;this._create();this._element&&this._element.appendChild(this._svg);const e=navigator.userAgent.toLowerCase();void 0===_SvgRenderEngine._isff&&(_SvgRenderEngine._isff=e.indexOf("firefox")>=0);void 0===_SvgRenderEngine._isSafari&&(_SvgRenderEngine._isSafari=e.indexOf("safari")>-1&&-1==e.indexOf("chrome"))}attach(t){this._element=t;if(t){t.insertBefore(this._svg,t.childNodes[0]);t.appendChild(this._svg)}}detach(){this._element&&this._element.removeChild(this._svg);for(;this._svg.firstChild;)removeChild(this._svg.firstChild)}beginRender(){for(;this._svg.firstChild;)removeChild(this._svg.firstChild);this._savedGradient={};this._bbCache={};this._svg.appendChild(this._defs);this._svg.appendChild(this._textGroup);this._isRtl=this._checkRtl()}endRender(){removeChild(this._textGroup)}setViewportSize(t,e){this._svg.setAttribute("width",t.toString());this._svg.setAttribute("height",e.toString())}get element(){return this._svg}get fill(){return this._fill}set fill(t){this._fill=t}get fontSize(){return this._fontSize}set fontSize(t){this._fontSize=t}get fontFamily(){return this._fontFamily}set fontFamily(t){this._fontFamily=t}get stroke(){return this._stroke}set stroke(t){this._stroke=t}get strokeWidth(){return this._strokeWidth}set strokeWidth(t){this._strokeWidth=void 0===t?null:t}get textFill(){return this._textFill}set textFill(t){this._textFill=t}get cssPriority(){return this._cssPriority}set cssPriority(t){this._cssPriority=t}get readOnly(){return this._readOnly}set readOnly(t){this._readOnly=t}get precision(){return this._precision}set precision(t){this._precision=asNumber(t)}get group(){return this._group}get options(){return this._options}set options(t){this._options=t}addClipRect(t,e){if(t&&e){const i=this.precision,s=document.createElementNS(_SvgRenderEngine.svgNS,"clipPath"),n=document.createElementNS(_SvgRenderEngine.svgNS,"rect");n.setAttribute("x",(t.left-1).toFixed(i));n.setAttribute("y",(t.top-1).toFixed(i));n.setAttribute("width",(t.width+2).toFixed(i));n.setAttribute("height",(t.height+2).toFixed(i));s.appendChild(n);s.setAttribute("id",e);this._svg.appendChild(s)}}drawEllipse(t,e,i,s,n,r){const a=document.createElementNS(_SvgRenderEngine.svgNS,"ellipse"),h=this.precision;this._applyColor(a,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(a,"stroke-width",this._strokeWidth.toString());this._applyColor(a,"fill",this._fill);a.setAttribute("cx",t.toFixed(h));a.setAttribute("cy",e.toFixed(h));a.setAttribute("rx",i.toFixed(h));a.setAttribute("ry",s.toFixed(h));n&&a.setAttribute("class",n);this._applyStyle(a,r);this._appendChild(a);return a}drawRect(t,e,i,s,n,r,a){const h=document.createElementNS(_SvgRenderEngine.svgNS,"rect"),l=this.precision;this._applyColor(h,"fill",this._fill);this._applyColor(h,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(h,"stroke-width",this._strokeWidth.toString());h.setAttribute("x",t.toFixed(l));isNumberNaN(+Number(e))||h.setAttribute("y",e.toFixed(l));i>0&&i<.05?h.setAttribute("width","0.1"):h.setAttribute("width",i.toFixed(l));s>0&&s<.05?h.setAttribute("height","0.1"):h.setAttribute("height",s.toFixed(l));a&&this._setClipPath(h,a);n&&h.setAttribute("class",n);this._applyStyle(h,r);this._appendChild(h);return h}drawLine(t,e,i,s,n,r){const a=document.createElementNS(_SvgRenderEngine.svgNS,"line"),h=this.precision;this._applyColor(a,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(a,"stroke-width",this._strokeWidth.toString());a.setAttribute("x1",t.toFixed(h));a.setAttribute("x2",i.toFixed(h));a.setAttribute("y1",e.toFixed(h));a.setAttribute("y2",s.toFixed(h));n&&a.setAttribute("class",n);this._applyStyle(a,r);this._appendChild(a);return a}drawLines(t,e,i,s,n,r){if(t&&e){const a=r||Math.min(t.length,e.length);if(a>0){const r=document.createElementNS(_SvgRenderEngine.svgNS,"polyline"),h=this.precision;this._applyColor(r,"stroke",this._stroke);if(null!==this._strokeWidth){this._setAttribute(r,"stroke-width",this._strokeWidth.toString());this._strokeWidth>1&&this._setAttribute(r,"stroke-linejoin",this._STROKE_JOIN)}r.setAttribute("fill","none");let l="";for(let i=0;i<a;i++)l+=`${t[i].toFixed(h)},${e[i].toFixed(h)} `;r.setAttribute("points",l);i&&r.setAttribute("class",i);n&&this._setClipPath(r,n);this._applyStyle(r,s);this._appendChild(r);return r}}return null}drawSplines(t,e,i,s,n,r){if(t&&e){const a=new _Curve(t,e,r,this._options&&this._options.spline).calculate(),h=a.xs,l=a.ys,o=Math.min(h.length,l.length);if(o>0){const t=document.createElementNS(_SvgRenderEngine.svgNS,"polyline"),e=this.precision;this._applyColor(t,"stroke",this._stroke);if(null!==this._strokeWidth){this._setAttribute(t,"stroke-width",this._strokeWidth.toString());this._strokeWidth>1&&this._setAttribute(t,"stroke-linejoin",this._STROKE_JOIN)}t.setAttribute("fill","none");let r="";for(let t=0;t<o;t++)r+=`${h[t].toFixed(e)},${l[t].toFixed(e)} `;t.setAttribute("points",r);i&&t.setAttribute("class",i);n&&this._setClipPath(t,n);this._applyStyle(t,s);this._appendChild(t);return t}}return null}drawPolygon(t,e,i,s,n){if(t&&e){const r=Math.min(t.length,e.length);if(r>0){const a=document.createElementNS(_SvgRenderEngine.svgNS,"polygon"),h=this.precision;this._applyColor(a,"stroke",this._stroke);if(null!==this._strokeWidth){this._setAttribute(a,"stroke-width",this._strokeWidth.toString());this._strokeWidth>1&&this._setAttribute(a,"stroke-linejoin",this._STROKE_JOIN)}this._applyColor(a,"fill",this._fill);let l="";for(let i=0;i<r;i++)l+=`${t[i].toFixed(h)},${e[i].toFixed(h)} `;a.setAttribute("points",l);i&&a.setAttribute("class",i);n&&this._setClipPath(a,n);this._applyStyle(a,s);this._appendChild(a);return a}}return null}drawPieSegment(t,e,i,s,n,r,a,h){if(n>=2*Math.PI)return this.drawEllipse(t,e,i,i,r,a);const l=document.createElementNS(_SvgRenderEngine.svgNS,"path"),o=this.precision;this._applyColor(l,"fill",this._fill);this._applyColor(l,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(l,"stroke-width",this._strokeWidth.toString());var c=new Point(t,e);c.x+=i*Math.cos(s);c.y+=i*Math.sin(s);var _=s+n,d=new Point(t,e);d.x+=i*Math.cos(_);d.y+=i*Math.sin(_);var u=" 0 0,1 ";Math.abs(n)>Math.PI&&(u=" 0 1,1 ");var g=`M ${c.x.toFixed(o)},${c.y.toFixed(o)}`;g+=` A ${i.toFixed(o)},${i.toFixed(o)}${u}`;g+=`${d.x.toFixed(o)},${d.y.toFixed(o)}`;g+=` L ${t.toFixed(o)},${e.toFixed(o)} z`;l.setAttribute("d",g);h&&this._setClipPath(l,h);r&&l.setAttribute("class",r);this._applyStyle(l,a);this._appendChild(l);return l}drawDonutSegment(t,e,i,s,n,r,a,h,l){var o=!1;if(r>=2*Math.PI){o=!0;r-=.001}const c=document.createElementNS(_SvgRenderEngine.svgNS,"path"),_=this.precision+2;this._applyColor(c,"fill",this._fill);this._applyColor(c,"stroke",this._stroke);null!==this._strokeWidth&&this._setAttribute(c,"stroke-width",this._strokeWidth.toString());var d=new Point(t,e);d.x+=i*Math.cos(n);d.y+=i*Math.sin(n);var u=n+r,g=new Point(t,e);g.x+=i*Math.cos(u);g.y+=i*Math.sin(u);var p=new Point(t,e);p.x+=s*Math.cos(u);p.y+=s*Math.sin(u);var f=new Point(t,e);f.x+=s*Math.cos(n);f.y+=s*Math.sin(n);var m=" 0 0,1 ",x=" 0 0,0 ";if(Math.abs(r)>Math.PI){m=" 0 1,1 ";x=" 0 1,0 "}var b=`M ${d.x.toFixed(_)},${d.y.toFixed(_)}`;b+=` A ${i.toFixed(_)},${i.toFixed(_)}${m}`;b+=` ${g.x.toFixed(_)},${g.y.toFixed(_)}`;b+=o?` M ${p.x.toFixed(_)},${p.y.toFixed(_)}`:` L ${p.x.toFixed(_)},${p.y.toFixed(_)}`;b+=` A ${s.toFixed(_)},${s.toFixed(_)}${x}`;b+=`${f.x.toFixed(_)},${f.y.toFixed(_)}`;o||(b+=" z");c.setAttribute("d",b);l&&this._setClipPath(c,l);a&&c.setAttribute("class",a);this._applyStyle(c,h);this._appendChild(c);return c}drawString(t,e,i,s){return this._isHtmlString(t)?this._drawStringHtml(t,e,i,s):this._drawString(t,e,i,s)}_isHtmlString(t){return this._htmlText&&/<\/?[a-z][\s\S]*>/i.test(t)}_drawString(t,e,i,s){const n=this._createText(e,t),r=this.precision;i&&n.setAttribute("class",i);this._applyStyle(n,s);this._appendChild(n);var a,h=this._getKey(t,i,this._groupCls);if(this._bbCache[h]){a=this._bbCache[h];n.setAttribute("y",(e.y-(a.y+a.height)).toFixed(r))}else{a=this._getBBox(n);n.setAttribute("y",(e.y-(a.y+a.height-e.y)).toFixed(r))}this._isRtl&&!isIE()&&n.setAttribute("x",(e.x+a.width).toFixed(r));return n}_drawStringHtml(t,e,i,s){const n=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");n.setAttribute("width","1000");n.setAttribute("height","100");n.setAttribute("x",e.x.toFixed(2));const r=document.createElement("span"),a=this._groupCls;a&&addClass(r,a);i&&addClass(r,i);this._applyStyle(r,s);r.innerHTML=t;n.appendChild(r);this._appendChild(n);const h=r.getBoundingClientRect();n.setAttribute("width",Math.ceil(h.width+2).toFixed(2));n.setAttribute("height",Math.ceil(h.height+1).toFixed(2));n.setAttribute("y",(e.y-h.height).toFixed(2));return n}drawStringRotated(t,e,i,s,n,r){return this._isHtmlString(t)?this._drawStringRotatedHtml(t,e,i,s,n,r):this._drawStringRotated(t,e,i,s,n,r)}_drawStringRotated(t,e,i,s,n,r){const a=this._createText(e,t),h=this.precision;n&&a.setAttribute("class",n);this._applyStyle(a,r);var l=document.createElementNS(_SvgRenderEngine.svgNS,"g");l.setAttribute("transform",`rotate(${s.toFixed(h)},${i.x.toFixed(h)},${i.y.toFixed(h)})`);l.appendChild(a);this._appendChild(l);var o=this._getBBox(a);a.setAttribute("y",(e.y-(o.y+o.height-e.y)).toFixed(h));this._isRtl&&!isIE()&&a.setAttribute("x",(e.x+o.width).toFixed(h));return a}_drawStringRotatedHtml(t,e,i,s,n,r){const a=this.precision,h=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");h.setAttribute("width","1000");h.setAttribute("height","100");h.setAttribute("x",e.x.toFixed(2));const l=document.createElement("span"),o=this._groupCls;o&&addClass(l,o);n&&addClass(l,n);this._applyStyle(l,r);l.innerHTML=t;h.appendChild(l);this._appendChild(h);const c=l.getBoundingClientRect();h.setAttribute("width",Math.ceil(c.width+2).toFixed(2));h.setAttribute("height",Math.ceil(c.height+1).toFixed(2));h.setAttribute("y",(e.y-c.height).toFixed(2));var _=document.createElementNS(_SvgRenderEngine.svgNS,"g");_.setAttribute("transform",`rotate(${s.toFixed(a)},${i.x.toFixed(a)},${i.y.toFixed(a)})`);_.appendChild(h);this._appendChild(_);return h}measureString(t,e,i,s){return this._isHtmlString(t)?this._measureStringHtml(t,e,i,s):this._measureString(t,e,i,s)}_measureString(t,e,i,s){var n=new Size(0,0);if(!this._fontFamily&&!this._fontSize){const s=this._getKey(t,e,i);if(this._bbCache[s])return this._bbCache[s]}if(this.cssPriority){this._fontSize&&this._text.setAttribute("font-size",this._fontSize);this._fontFamily&&this._text.setAttribute("font-family",this._fontFamily)}else{const t={};this._fontSize&&(t.fontSize=this._fontSize);this._fontFamily&&(t.fontFamily=this._fontFamily);Object.keys(t).length>0&&setCss(this._text,t)}e&&this._text.setAttribute("class",e);i&&this._textGroup.setAttribute("class",i);this._applyStyle(this._text,s);this._setText(this._text,t);var r=this._getBBox(this._text);n.width=r.width;n.height=r.height;this._text.removeAttribute("font-size");this._text.removeAttribute("font-family");this._text.removeAttribute("class");this._text.removeAttribute("style");if(s)for(const t in s)this._text.removeAttribute(this._deCase(t));this._textGroup.removeAttribute("class");this._text.textContent=null;if(!this._fontFamily&&!this._fontSize){const s=this._getKey(t,e,i);this._bbCache[s]={x:r.x,y:r.y+1e3,width:r.width,height:r.height}}return n}_measureStringHtml(t,e,i,s){var n=new Size(0,0);const r=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");r.setAttribute("width","1000");r.setAttribute("height","100");r.setAttribute("x","-1000");r.setAttribute("y","-1000");const a=document.createElement("span");i&&addClass(a,i);e&&addClass(a,e);this._applyStyle(a,s);a.innerHTML=t;r.appendChild(a);e&&this._text.setAttribute("class",e);this._applyStyle(this._text,s);this._appendChild(r);const h=a.getBoundingClientRect();n.width=h.width;n.height=h.height;r.remove();return n}startGroup(t,e,i=!1){var s=document.createElementNS(_SvgRenderEngine.svgNS,"g");if(t){s.setAttribute("class",t);this._groupCls=t}e&&this._setClipPath(s,e);this._appendChild(s);i&&s.transform.baseVal.appendItem(this._svg.createSVGTransform());this._group=s;return s}endGroup(){if(this._group){const t=this._group.parentNode;if(t==this._svg){this._group=null;this._groupCls=null}else{this._group=t;this._groupCls=this._getClass(this._group)}}}drawImage(t,e,i,s,n){const r=document.createElementNS(_SvgRenderEngine.svgNS,"image"),a=this.precision;r.setAttributeNS(_SvgRenderEngine.xlinkNS,"href",t);r.setAttribute("x",e.toFixed(a));r.setAttribute("y",i.toFixed(a));r.setAttribute("width",s.toFixed(a));r.setAttribute("height",n.toFixed(a));this._appendChild(r);return r}_setClipPath(t,e){t.setAttribute("clip-path",`url(#${e})`);_SvgRenderEngine._isSafari&&setCss(t,{"-webkit-clip-path":`url(#${e})`})}_appendChild(t){if(!this.readOnly){var e=this._group;e||(e=this._svg);e.appendChild(t)}}_create(){this._svg=document.createElementNS(_SvgRenderEngine.svgNS,"svg");this._svg.setAttribute("role","presentation");this._svg.setAttribute("aria-hidden","true");this._defs=document.createElementNS(_SvgRenderEngine.svgNS,"defs");this._svg.appendChild(this._defs);this._text=this._createText(new Point(-1e3,-1e3),"");this._textGroup=document.createElementNS(_SvgRenderEngine.svgNS,"g");this._textGroup.appendChild(this._text);this._svg.appendChild(this._textGroup)}_setText(t,e){var i=e?e.toString():null;if(i&&i.indexOf("tspan")>=0)try{t.textContent=null;const e=new DOMParser,s=`<svg xmlns="http://www.w3.org/2000/svg">${i}</svg>`;let n=e.parseFromString(s,"text/xml").documentElement.firstChild;for(;n;){t.appendChild(t.ownerDocument.importNode(n,!0));n=n.nextSibling}}catch(t){throw new Error("Error parsing XML string.")}else t.textContent=i}_getKey(t,e,i){return t+(e||"")+(i||"")}_createText(t,e){const i=document.createElementNS(_SvgRenderEngine.svgNS,"text"),s=this.precision;this._setText(i,e);i.setAttribute("x",t.x.toFixed(s));i.setAttribute("y",t.y.toFixed(s));if(this.cssPriority){null!=this._textFill&&i.setAttribute("fill",this._textFill);this._fontSize&&i.setAttribute("font-size",this._fontSize);this._fontFamily&&i.setAttribute("font-family",this._fontFamily)}else{const t={};null!=this._textFill&&(t.fill=this._textFill);this._fontSize&&(t.fontSize=this._fontSize);this._fontFamily&&(t.fontFamily=this._fontFamily);Object.keys(t).length>0&&setCss(i,t)}return i}_applyStyle(t,e){if(e)for(const i in e)"fill"===i||"stroke"===i?this._applyColor(t,i,e[i]):t.setAttribute(this._deCase(i),e[i])}_deCase(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}_getClass(t){let e;if(t)for(let i=t;i;i=i.parentNode){e=i.getAttribute("class");if(e)break}return e}_getBBox(t){if(!_SvgRenderEngine._isff)return t.getBBox();try{return t.getBBox()}catch(t){return{x:0,y:0,width:0,height:0}}}_applyColor(t,e,i){let s=_GradientColorUtil.tryParse(i);if(null!=s){if(!isString(s)){if(null==this._savedGradient[i]){const t="gc"+(1e6*Math.random()).toFixed();let e;if(null!=s.x1){e=document.createElementNS(_SvgRenderEngine.svgNS,"linearGradient");["x1","y1","x2","y2","gradientUnits"].forEach(t=>{null!=s[t]&&e.setAttribute(t,s[t])})}else if(null!=s.r){e=document.createElementNS(_SvgRenderEngine.svgNS,"radialGradient");["cx","cy","r","fx","fy","fr","gradientUnits"].forEach(t=>{null!=s[t]&&e.setAttribute(t,s[t])})}s.colors&&s.colors.length>0&&s.colors.forEach(t=>{const i=document.createElementNS(_SvgRenderEngine.svgNS,"stop");null!=t.color&&i.setAttribute("stop-color",t.color);null!=t.offset&&i.setAttribute("offset",t.offset);null!=t.opacity&&i.setAttribute("stop-opacity",t.opacity);e.appendChild(i)});e.setAttribute("id",t);this._defs.appendChild(e);this._savedGradient[i]=t}s=`url(${this._baseUrl}#${this._savedGradient[i]})`}this.cssPriority?t.setAttribute(e,s):this._addInlineStyle(t,e,s)}}_addInlineStyle(t,e,i){const s={};s[e.replace(/-([a-z])/g,t=>t[1].toUpperCase())]=i;setCss(t,s)}_setAttribute(t,e,i){this.cssPriority?t.setAttribute(e,i):this._addInlineStyle(t,e,i)}_checkRtl(){return this._element&&hasClass(this._element,UtilitesClsNames.rtl)}}_SvgRenderEngine.svgNS="http://www.w3.org/2000/svg";_SvgRenderEngine.xlinkNS="http://www.w3.org/1999/xlink";class _GradientColorUtil{static tryParse(t){if(_GradientColorUtil.parsedColor[t])return _GradientColorUtil.parsedColor[t];if(null==t||-1===t.indexOf("-")||-1!==t.indexOf("var("))return t;var e,i=t.replace(/\s+/g,"").split(/-/g),s=i[0][0],n=!1,r=i[0].match(/\(\S+\)/);if(!r||0==r.length)return t;var a=r[0].replace(/[(\\)]/g,"").split(/,/g);if("l"===s||"L"===s){e={x1:"0",y1:"0",x2:"0",y2:"0",colors:[]};"l"===s&&(n=!0);["x1","y1","x2","y2"].forEach((t,i)=>{null!=a[i]&&(e[t]=n?100*+a[i]+"%":""+a[i])})}else if("r"===s||"R"===s){e={cx:"0",cy:"0",r:"0",colors:[]};"r"===s&&(n=!0);["cx","cy","r","fx","fy","fr"].forEach((t,i)=>{null!=a[i]&&""!==a[i]&&(e[t]=n?100*+a[i]+"%":""+a[i])})}n||(e.gradientUnits="userSpaceOnUse");_GradientColorUtil.parsedColor[t]=e;var h=i.length-1;i.forEach((t,i)=>{t.indexOf(")")>-1&&(t=t.match(/\)\S+/)[0].replace(")",""));const s=t.split(":"),r={color:"black"};null!=s[0]&&(r.color=s[0]);null!=s[1]?r.offset=n?100*+s[1]+"%":""+s[1]:r.offset=i/h*100+"%";null!=s[2]&&(r.opacity=s[2]);e.colors.push(r)});return e}}_GradientColorUtil.parsedColor={};export class SvgRenderEngine extends _SvgRenderEngine{}export const AxisClsNames={axisX:"wj-axis-x",axisXLabels:"wj-axis-x-labels",axisY:"wj-axis-y",axisYLabels:"wj-axis-y-labels",gridline:"wj-gridline",gridlineMinor:"wj-gridline-minor",line:"wj-line",tick:"wj-tick",tickMinor:"wj-tick-minor"};export const DataLabelClsNames={border:"wj-data-label-border",label:"wj-data-label",labels:"wj-data-labels",line:"wj-data-label-line"};export const FlexChartClsNames={footer:"wj-footer",focusLayerHost:"wj-flexchart-focus-layer-host",header:"wj-header",hostElement:"wj-flexchart",label:"wj-label",legend:"wj-legend",plotArea:"wj-plot-area",title:"wj-title",touchDisabled:"wj-flexchart-touch-disabled"};export const FlexPieClsNames={hostElement:"wj-flexpie",slice:"wj-slice",sliceGroup:"wj-slice-group"};export const LegendClsNames={legend:"wj-legend",title:"wj-title"};export const LineMarkerClsNames={container:"wj-chart-linemarker-container",content:"wj-chart-linemarker-content",draggable:"wj-chart-linemarker-draggable",hline:"wj-chart-linemarker-hline",linemarker:"wj-chart-linemarker",vline:"wj-chart-linemarker-vline"};export const SeriesClsNames={group:"wj-series-group"};export class Legend{constructor(t){this._position=Position.Right;this._title="";this._titleAlign="left";this._titlePadding=5;this._areas=[];this._sz=new Size;this._orient=Orientation.Auto;this._scrollbar=!1;this._chart=t}get position(){return this._position}set position(t){if((t=asEnum(t,Position))!=this._position){this._position=t;this._invalidate()}}get reverse(){return this._reverse}set reverse(t){if(t!=this._reverse){this._reverse=asBoolean(t,!0);this._invalidate()}}get title(){return this._title}set title(t){if(t!=this._title){this._title=asString(t,!1);this._invalidate()}}get titleAlign(){return this._titleAlign}set titleAlign(t){if(t!=this._titleAlign){const e=asString(t,!1);this._titleAlign="right"===e?"right":"center"===e?"center":"left";this._invalidate()}}get orientation(){return this._orient}set orientation(t){if((t=asEnum(t,Orientation))!=this._orient){this._orient=t;this._invalidate()}}get maxSize(){return this._maxSz}set maxSize(t){if(t!=this._maxSz){if(isNumber(t))this._maxSz=t;else if(isString(t)){const e=asString(t);assert(FlexChartBase._endsWith(e,"px")||FlexChartBase._endsWith(e,"%"),"number with unit (px or %) expected.");this._maxSz=e}else t&&assert(!1,"number or string expected.");this._invalidate()}}get scrollbar(){return this._scrollbar}set scrollbar(t){if(t!=this._scrollbar){this._scrollbar=asBoolean(t,!1);this._invalidate()}}get isVertical(){return this.orientation==Orientation.Auto?null==this.position||this.position==Position.Auto||this.position==Position.Right||this.position==Position.Left||this.position==Position.LeftTop||this.position==Position.LeftBottom||this.position==Position.RightTop||this.position==Position.RightBottom:this.orientation==Orientation.Vertical}_getDesiredSize(t,e,i,s){if(e==Position.None)return null;let n=new Size;if(this.title.length>0){n=t.measureString(this.title,LegendClsNames.title,LegendClsNames.legend);s-=n.height+this._titlePadding}var r=this._chart._getDesiredLegendSize(t,this.isVertical,i,s);if(null!=r){if(this.title.length>0){r.height+=n.height+this._titlePadding;if(n.width>r.width)if(this.position==Position.Left||this.position==Position.Right||this.position==Position.LeftTop||this.position==Position.LeftBottom||this.position==Position.RightTop||this.position==Position.RightBottom){const t=Math.min(n.width,this._getMaxSize(i));r.width=t;n.width=t}else i>r.width&&i<n.width?r.width=i:i>=n.width&&(r.width=n.width)}this._sz=r.clone();if(this.scrollbar)if(this.isVertical&&r.height>s){r.width+=18;r.height=s}else if(!this.isVertical&&r.width>i){r.width=i;r.height+=18}}return r}_getPosition(t,e){return this.position==Position.Auto?t>=e?Position.Right:Position.Bottom:this.position}_render(t,e,i,s,n){this._areas=[];let r=0;t.fill="transparent";t.stroke=null;t.drawRect(e.x,e.y,s,n);if(this.title.length){const i=e.clone(),a=t.measureString(this.title,LegendClsNames.title+"`");i.y+=a.height;"right"===this.titleAlign?i.x=e.x+s-a.width:"center"===this.titleAlign&&(i.x=e.x+.5*(s-a.width));t.drawString(this.title,i,LegendClsNames.title);r=a.height+this._titlePadding;e.y+=r;n-=r}let a=!1;this.scrollbar&&(this._sz.height>n&&this.isVertical||this._sz.width>s&&!this.isVertical)&&(a=!0);this._chart._renderLegend(t,e,this._areas,this.isVertical,a?s-18:s,n);if(a){n+=r;this._addScrollbar(t,e,s,n,this._sz,this.isVertical,r)}}_hitTest(t){var e=this._areas;for(let i=0;i<e.length;i++)if(e[i]&&FlexChartBase._contains(e[i],t))return i;return null}_addScrollbar(t,e,i,s,n,r,a){t.endGroup();const h=100-a/s*100,l=t.element,o=l.children.item(l.children.length-1),c=o.getBoundingClientRect();o.removeAttribute("clip-path");const _=[];o.children.length>0&&_.push(o.children.item(0));a>0&&_.push(o.children.item(1));Array.from(o.querySelectorAll("text,rect")).forEach(t=>{if(-1==_.indexOf(t)){t.setAttribute("x",(+t.getAttribute("x")-e.x).toFixed(2));t.setAttribute("y",(+t.getAttribute("y")-e.y).toFixed(2))}});Array.from(o.querySelectorAll("foreignObject")).forEach(t=>{if(-1==_.indexOf(t)){t.setAttribute("x",(+t.getAttribute("x")-e.x).toFixed(2));t.setAttribute("y",(+t.getAttribute("y")-e.y).toFixed(2))}});Array.from(o.querySelectorAll("ellipse")).forEach(t=>{t.setAttribute("cx",(+t.getAttribute("cx")-e.x).toFixed(2));t.setAttribute("cy",(+t.getAttribute("cy")-e.y).toFixed(2))});Array.from(o.querySelectorAll("line")).forEach(t=>{t.setAttribute("x1",(+t.getAttribute("x1")-e.x).toFixed(2));t.setAttribute("y1",(+t.getAttribute("y1")-e.y).toFixed(2));t.setAttribute("x2",(+t.getAttribute("x2")-e.x).toFixed(2));t.setAttribute("y2",(+t.getAttribute("y2")-e.y).toFixed(2))});const d=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");d.setAttribute("x",e.x.toFixed(2));d.setAttribute("y",e.y.toFixed(2));d.setAttribute("width",i.toFixed(2));d.setAttribute("height",s.toFixed(2));const u=document.createElement("div");u.className="wj-legend-scrollable";setCss(u,r?{width:"100%",height:h+"%",overflowX:"hidden",overflowY:"scroll"}:{width:"100%",height:h+"%",overflowY:"hidden",overflowX:"scroll"});const g=document.createElementNS("http://www.w3.org/2000/svg","svg");g.setAttribute("height",(c.height-a).toFixed(2));let p=c.width;!r&&n.width<p&&(p=n.width);g.setAttribute("width",p.toFixed(2));for(;o.children.length>_.length;){const t=o.children.item(_.length);o.removeChild(t);g.appendChild(t)}u.appendChild(g);d.appendChild(u);o.appendChild(d)}_invalidate(){this._chart&&this._chart.invalidate()}_getMaxSize(t){const e=this.maxSize;if(isNumber(e)){const i=asNumber(e,!0);if(i>0)return Math.min(i,t)}else{const i=asString(e,!0);if(i)if(FlexChartBase._endsWith(i,"px")){const e=parseFloat(i.replace("px",""));if(e>0)return Math.min(e,t)}else if(FlexChartBase._endsWith(i,"%")){const e=parseFloat(i.replace("%",""));if(e>0)return t*Math.min(e,100)/100}}return.5*t}}export function _getDefaultAccessibilityAriaLabel(t){const e=[],i=culture.FlexChart.ariaLabels,s=t&&t.title,n=t&&t.type,r=t&&t.series?t.series:[];s&&e.push(format(i.chartTitle,{title:s}));n&&e.push(format(i.chartType,{type:n}));if(r.length){const t=r.map((t,e)=>format(i.seriesName,{index:e+1,name:_getSeriesDisplayName(t)})).join(", ");e.push(format(i.seriesSummary,{count:r.length,seriesText:t}))}return e.length?e.join(". ")+".":i.chart+"."}export function _getBaseAccessibilityModel(t,e){return{title:_toAccessibilityText(t&&t.header),type:e||_getAccessibleChartTypeName("chart"),series:[],legendItems:[],annotations:[]}}export function _getUnnamedAccessibilitySeriesName(t){return format(culture.FlexChart.ariaLabels.unnamedSeries,{index:t+1})}export function _getAccessibilityPointDescription(t,e,i,s){const n=culture.FlexChart.ariaLabels,r=t&&t.points?t.points.length:0,a=[n.seriesRegion,format(n.seriesName,{index:i+1,name:_getSeriesDisplayName(t)}),format(n.pointPosition,{index:s+1,count:r})],h=_toAccessibilityText(e&&e.category),l=e&&e.values,o=l&&l.length>1?l.map(t=>_toAccessibilityText(t)).filter(t=>!!t).join(", "):_toAccessibilityText(e&&e.value),c=_toAccessibilityText(e&&e.details);h&&a.push(format(n.pointCategory,{category:h}));o&&a.push(format(n.pointValue,{value:o}));c&&a.push(c);return a.join(". ")+"."}export function _getAccessibilityLegendDescription(t,e,i){return format(culture.FlexChart.ariaLabels.legendItem,{index:e+1,count:i,name:t.name})+"."}export function _getAccessibilityAnnotationDescription(t,e,i){const s=culture.FlexChart.ariaLabels.annotationItem,n=format(s,{index:e+1,count:i,label:t.label});return/[.!?\u3002\uff01\uff1f]$/.test(n)?n:n+"."}export function _getAccessibleChartTypeName(t,e,i,s){const n=culture.FlexChart.ariaLabels;if("string"==typeof t)return n[t]||n.chart;const r=_toAccessibilityTypeText(t&&t[e]);return r?s&&"financial"===s.family?format(n.financialChartTypeName,{type:r}):s&&"radar"===s.family?s.supportsStacking&&1===i?format(n.stackedRadarChartTypeName,{type:r}):s.supportsStacking&&2===i?format(n.stacked100RadarChartTypeName,{type:r}):format(n.radarChartTypeName,{type:r}):format(0===e||1===e?1===i?n.stackedChartTypeName:2===i?n.stacked100ChartTypeName:n.clusteredChartTypeName:n.chartTypeName,{type:r}):n.chart}export function _toAccessibilityText(t){if(null==t)return"";return(isString(t)?toPlainText(t):Globalize.format(t,null)).replace(/\s+/g," ").trim()}export function _toAccessibilityTypeText(t){return null==t?"":t.toString().replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/([A-Za-z])(\d)/g,"$1 $2").replace(/(\d)([A-Za-z])/g,"$1 $2").replace(/\b100\s*pc\b/gi,"100%").replace(/\s+/g," ").trim()}export function _formatAccessibilityValue(t){return null!=t&&isNumberFinite(+t)?Globalize.format(t,null):""}export function _getAccessibilityAriaLabels(){return culture.FlexChart.ariaLabels}export function _formatAccessibilityLabel(t,e){return t?format(t,e):""}export function _joinAccessibilityParts(t){return t.filter(t=>!!t).join(". ")}function _getSeriesDisplayName(t){const e=_toAccessibilityText(t&&t.name),i=_toAccessibilityText(t&&t.description);return i?e?`${e}, ${i}`:i:e}export class _ChartAccessibilityFocusManager{constructor(t){this._owner=t}update(t){this._state=t||null;this._render()}refresh(){this._render()}clear(){this._state=null;this._removeLayer()}_render(){const t=_getFocusStateShape(this._owner,this._state);if(!this._isValidShape(t)){this._removeLayer();return}const e=this._getSvg();e?this._renderShape(e,t):this._removeLayer()}_renderShape(t,e){const i=this._ensureElement(t,this._getElementName(e));if("rect"===e.type){const s=this._fitRectToSvg(this._inflateRect(e.rect,3),t);i.setAttribute("x",s.left.toFixed(1));i.setAttribute("y",s.top.toFixed(1));i.setAttribute("width",s.width.toFixed(1));i.setAttribute("height",s.height.toFixed(1))}else if("circle"===e.type){i.setAttribute("cx",e.center.x.toFixed(1));i.setAttribute("cy",e.center.y.toFixed(1));i.setAttribute("r",(e.radius+3).toFixed(1))}else"segment"===e.type?i.setAttribute("d",this._getSegmentPath(e,3)):"polygon"===e.type&&i.setAttribute("d",this._getPolygonPath(e,3))}_ensureElement(t,e){if(!this._element||this._element.ownerSVGElement!==t||this._element.tagName.toLowerCase()!==e){this._removeElement();this._element=document.createElementNS("http://www.w3.org/2000/svg",e);this._element.setAttribute("class",FlexChartClsNames.hostElement+"-focus");this._element.setAttribute("aria-hidden","true");this._element.setAttribute("pointer-events","none")}this._element.parentNode===t&&t.lastChild===this._element||t.appendChild(this._element);return this._element}_removeElement(){if(this._element){removeChild(this._element);this._element=null}}_removeLayer(){this._removeElement();if(this._layer){removeChild(this._layer);this._layer=null}this._removeOverlayHostClass()}_inflateRect(t,e){return new Rect(t.left-e,t.top-e,t.width+2*e,t.height+2*e)}_fitRectToSvg(t,e){const i=this._getSvgBounds(e);if(!i)return t;const s=Math.max(t.left,i.left+1),n=Math.max(t.top,i.top+1),r=Math.min(t.right,i.right-1),a=Math.min(t.bottom,i.bottom-1);return r>s&&a>n?new Rect(s,n,r-s,a-n):t}_getSvgBounds(t){const e=t.viewBox&&t.viewBox.baseVal;if(e&&e.width>0&&e.height>0)return new Rect(e.x,e.y,e.width,e.height);const i=this._getSvgLength(t,"width"),s=this._getSvgLength(t,"height");return i>0&&s>0?new Rect(0,0,i,s):null}_getSvgLength(t,e){const i=t.getAttribute(e),s=i&&i.indexOf("%")>=0,n=i&&!s?parseFloat(i):NaN;if(isNumberFinite(+n)&&n>0)return n;if(!s){const i="width"===e?t.width:t.height;if(i&&i.baseVal&&i.baseVal.value>0)return i.baseVal.value}const r=t.getBoundingClientRect();return"width"===e?r.width:r.height}_getElementName(t){return"rect"===t.type?"rect":"circle"===t.type?"circle":"path"}_isValidShape(t){return!!t&&("rect"===t.type?t.rect&&t.rect.width>0&&t.rect.height>0:"circle"===t.type?t.center&&isNumberFinite(+t.radius)&&t.radius>0:"segment"===t.type?t.center&&isNumberFinite(+t.radius)&&t.radius>0&&isNumberFinite(+t.angle)&&isNumberFinite(+t.sweep)&&0!==t.sweep:t.points&&t.points.length>1)}_getSegmentPath(t,e){const i=t.center,s=t.radius+e,n=Math.max((t.innerRadius||0)-e,0),r=this._normalizeSweep(t.sweep),a=t.angle,h=a+r,l=_getAnglePoint(i,s,a),o=_getAnglePoint(i,s,h),c=Math.abs(r)>Math.PI?1:0,_=r>=0?1:0,d=_?0:1;if(n<=0)return`M ${l.x.toFixed(1)},${l.y.toFixed(1)} A ${s.toFixed(1)},${s.toFixed(1)} 0 ${c},${_} ${o.x.toFixed(1)},${o.y.toFixed(1)} L ${i.x.toFixed(1)},${i.y.toFixed(1)} z`;const u=_getAnglePoint(i,n,h),g=_getAnglePoint(i,n,a);return`M ${l.x.toFixed(1)},${l.y.toFixed(1)} A ${s.toFixed(1)},${s.toFixed(1)} 0 ${c},${_} ${o.x.toFixed(1)},${o.y.toFixed(1)} L ${u.x.toFixed(1)},${u.y.toFixed(1)} A ${n.toFixed(1)},${n.toFixed(1)} 0 ${c},${d} ${g.x.toFixed(1)},${g.y.toFixed(1)} z`}_normalizeSweep(t){const e=2*Math.PI-.001;return Math.abs(t)>=2*Math.PI?t<0?-e:e:t}_getPolygonPath(t,e=0){const i=e?this._inflatePolygon(t.points,e):t.points;let s=`M ${i[0].x.toFixed(1)},${i[0].y.toFixed(1)}`;for(let t=1;t<i.length;t++)s+=` L ${i[t].x.toFixed(1)},${i[t].y.toFixed(1)}`;return s+" z"}_getSvg(){const t=this._owner,e=t&&t._currentRenderEngine?t._currentRenderEngine.element:null;if(e&&e.tagName&&"svg"===e.tagName.toLowerCase()){this._layer&&this._removeLayer();return e}return this._getOverlaySvg(e)}_getOverlaySvg(t){const e=this._owner,i=e&&e.hostElement,s=e&&e._rectChart;if(!i||!s)return null;this._ensureOverlayHostClass(i);if(!this._layer){this._layer=document.createElementNS("http://www.w3.org/2000/svg","svg");this._layer.setAttribute("class",FlexChartClsNames.hostElement+"-focus-layer");this._layer.setAttribute("aria-hidden","true");this._layer.setAttribute("focusable","false")}this._syncOverlaySvg(t);this._layer.parentElement===i&&this._layer===i.lastChild||i.appendChild(this._layer);return this._layer}_ensureOverlayHostClass(t){"static"===getComputedStyle(t).position&&addClass(t,FlexChartClsNames.focusLayerHost)}_removeOverlayHostClass(){const t=this._owner&&this._owner.hostElement;t&&removeClass(t,FlexChartClsNames.focusLayerHost)}_syncOverlaySvg(t){const e=this._layer,i=this._owner.hostElement,s=this._owner._rectChart;let n=0,r=0,a=s.width,h=s.height;if(t&&t.parentElement===i&&null!=t.offsetWidth){const e=t;n=e.offsetLeft||0;r=e.offsetTop||0;a=e.offsetWidth||a;h=e.offsetHeight||h}e.setAttribute("width",a.toFixed(1));e.setAttribute("height",h.toFixed(1));e.setAttribute("viewBox",`0 0 ${a.toFixed(1)} ${h.toFixed(1)}`);e.style.left=n+"px";e.style.top=r+"px";e.style.width=a+"px";e.style.height=h+"px"}_inflatePolygon(t,e){const i=_getPolygonRect(t),s=i.left+i.width/2,n=i.top+i.height/2;return t.map(t=>{const i=t.x-s,r=t.y-n,a=Math.sqrt(i*i+r*r);return a?new Point(t.x+e*i/a,t.y+e*r/a):t})}}export function _getRectFocusShape(t){return t?{type:"rect",rect:t}:null}export function _getFocusStateShape(t,e){if(!e||!t)return null;if("chart"===e.region)return _getRectFocusShape(t._rectChart);if("title"===e.region)return _getRectFocusShape(t._rectHeader);if("series"===e.region&&t._getAccessibilitySeriesPointShape)return t._getAccessibilitySeriesPointShape(e.seriesIndex,e.pointIndex);if("annotation"===e.region&&t._getAccessibilityAnnotationShape){const i=t._accessibilityModel,s=i&&i.annotations?i.annotations[e.annotationIndex]:null;return t._getAccessibilityAnnotationShape(s,e.annotationIndex)}if("legend"===e.region&&t._getAccessibilityLegendItemShape){const i=t._accessibilityModel,s=i&&i.legendItems?i.legendItems[e.legendIndex]:null;return t._getAccessibilityLegendItemShape(s,e.legendIndex)}return null}export function _getFocusShapeRect(t){return t?"rect"===t.type?t.rect:"circle"===t.type||"segment"===t.type?new Rect(t.center.x-t.radius,t.center.y-t.radius,2*t.radius,2*t.radius):"polygon"===t.type&&t.points&&t.points.length?_getPolygonRect(t.points):null:null}export function _getAreaShape(t){if(!t)return null;if(t.rect)return _getRectFocusShape(t.rect);if(t.center&&isNumberFinite(+t.radius)&&isNumberFinite(+t.angle)&&isNumberFinite(+t.sweep))return!t.innerRadius&&Math.abs(t.sweep)>=2*Math.PI-.001?{type:"circle",center:t.center,radius:t.radius}:{type:"segment",center:t.center,radius:t.radius,innerRadius:t.innerRadius,angle:t.angle,sweep:t.sweep};const e=null!=t.radius?t.radius:t._rad;return t.center&&e?{type:"circle",center:t.center,radius:e}:t._startPoint&&null!=t._width&&null!=t._height?_getFunnelShape(t):null}function _getPolygonRect(t){let e=t[0].x,i=t[0].x,s=t[0].y,n=t[0].y;for(let r=1;r<t.length;r++){const a=t[r];e=Math.min(e,a.x);i=Math.max(i,a.x);s=Math.min(s,a.y);n=Math.max(n,a.y)}return new Rect(e,s,i-e,n-s)}function _getFunnelShape(t){const e=t._startPoint,i=t._width,s=t._height,n=t._offsetX||0,r=t._offsetY||0,a=t._neckHeight||0;if(!e||!isNumberFinite(+i)||!isNumberFinite(+s))return null;return{type:"polygon",points:t._rotated?a>0?[new Point(e.x+n,e.y),new Point(e.x+i-n,e.y),new Point(e.x+i-n,e.y+a),new Point(e.x+i,e.y+s),new Point(e.x,e.y+s),new Point(e.x+n,e.y+a)]:[new Point(e.x+n,e.y),new Point(e.x+i-n,e.y),new Point(e.x+i,e.y+s),new Point(e.x,e.y+s)]:a>0?[new Point(e.x,e.y),new Point(e.x+i,e.y),new Point(e.x+i-n,e.y+r),new Point(e.x+i-n,e.y+s),new Point(e.x+n,e.y+s),new Point(e.x+n,e.y+r)]:[new Point(e.x,e.y),new Point(e.x+i,e.y),new Point(e.x+i-n,e.y+r),new Point(e.x+n,e.y+r)]}}function _getAnglePoint(t,e,i){return new Point(t.x+e*Math.cos(i),t.y+e*Math.sin(i))}export class _ChartAccessibilityKeyboardManager{constructor(t){this._regions=[];this._regionElements={};this._seriesIndex=0;this._pointIndex=0;this._annotationIndex=0;this._legendIndex=0;this._restoreFocusLost=!1;this._tabKeyShift=!1;this._owner=t}clear(){this._clearFocus();this._clearFocusRestore();this._pendingLegendAnnouncement=null;this._statusElement&&(this._statusElement.textContent="");this._activeRegion=null;this._regions.length=0;for(const t in this._regionElements)removeChild(this._regionElements[t]);this._container&&removeChild(this._container)}update(){const t=this._owner.hostElement,e=this._owner._accessibilityModel;if(!t||!e)return;this._ensureContainer(t);const i=this._regions;this._regions=[];e.title&&this._addRegion("title",format(culture.FlexChart.ariaLabels.chartTitle,{title:e.title}));const s=this._getNearestSeriesPoint(this._seriesIndex,this._pointIndex);if(s){this._seriesIndex=s.seriesIndex;this._pointIndex=s.pointIndex;this._addRegion("series",this._getSeriesRegionLabel())}if(e.annotations&&e.annotations.length){this._annotationIndex=Math.min(this._annotationIndex,e.annotations.length-1);this._addRegion("annotation",this._getAnnotationRegionLabel())}if(e.legendItems&&e.legendItems.length){this._legendIndex=Math.min(this._legendIndex,e.legendItems.length-1);this._addRegion("legend",this._getLegendRegionLabel())}this._removeUnusedRegions(i);if(this._activeRegion&&!this._getRegion(this._activeRegion)){this._clearFocusRestore(this._activeRegion);this._activeRegion=null;this._clearFocus()}else{this._syncFocus();this._completeFocusRestore()}this._announcePendingLegendChange()}activate(t){if(!t||"chart"===t.region)return!1;const e=t.region;if(!this._getRegion(e))return!1;this._activeRegion=e;"series"===e?this._setSeriesFocusIndex(t.seriesIndex,t.pointIndex):"annotation"===e&&null!=t.annotationIndex?this._setAnnotationFocusIndex(t.annotationIndex):"legend"===e&&null!=t.legendIndex&&this._setLegendFocusIndex(t.legendIndex);this._updateRegionLabel(e);this._syncFocus();return!0}_ensureContainer(t){if(!this._container){this._container=document.createElement("div");addClass(this._container,FlexChartClsNames.hostElement+"-accessibility");setAttribute(this._container,"style","position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;");this._statusElement=document.createElement("span");addClass(this._statusElement,"wj-sr-only");setAttribute(this._statusElement,"role","status");setAttribute(this._statusElement,"aria-live","polite");setAttribute(this._statusElement,"aria-atomic","true");this._container.appendChild(this._statusElement)}this._container.parentElement===t&&this._container===t.firstChild||t.insertBefore(this._container,t.firstChild)}_removeUnusedRegions(t){for(const e of t)this._getRegion(e.type)||removeChild(e.element)}_addRegion(t,e){const i=this._getRegionElement(t);this._setRegionLabel(i,e);this._container.appendChild(i);this._regions.push({type:t,element:i})}_getRegionElement(t){let e=this._regionElements[t];if(!e){e=document.createElement("div");setAttribute(e,"tabindex","0");this._owner.addEventListener(e,"keydown",this._onRegionKeyDown.bind(this,t),!1,!1);this._owner.addEventListener(e,"focus",this._onRegionFocus.bind(this,t),!1,!1);this._owner.addEventListener(e,"blur",this._onRegionBlur.bind(this,t),!1,!1);this._regionElements[t]=e}this._updateRegionSemantics(t,e);return e}_updateRegionSemantics(t,e){setAttribute(e,"aria-pressed",null);if("legend"===t){if(null!=this._getCurrentLegendItemState()){setAttribute(e,"role","button");return}}setAttribute(e,"role","group")}_onRegionFocus(t){this._activeRegion=t;this._updateRegionLabel(t);this._syncFocus()}_onRegionBlur(t,e){if(this._activeRegion===t){if(this._shouldRestoreFocusAfterBlur(t,e.relatedTarget)){this._restoreFocusLost=!0;this._syncFocus();this._completeFocusRestore();return}this._clearFocusRestore(t);this._activeRegion=null;e.relatedTarget===this._owner.hostElement&&this._owner._setAccessibilityFocus&&(this._shouldShowHostFocus()||this._isShiftTabbingToHost(t))?this._owner._setAccessibilityFocus({region:"chart"}):this._clearFocus();this._clearTabKeyState(t)}}_onRegionKeyDown(t,e){let i=!1;const s=this._getScrollPositions(e.target);if("Tab"!==e.key){!this._restoreFocusRegion||this._restoreFocusLost||"legend"===t&&this._isLegendActivationKey(e.key)||this._clearFocusRestore();"series"===t?i=this._handleSeriesKey(e.key):"annotation"===t?i=this._handleAnnotationKey(e.key):"legend"===t&&(i=this._handleLegendKey(e.key));if(i){e.preventDefault();e.stopPropagation();this._updateRegionLabel(t);this._syncFocus();if(this._shouldRestoreScroll(e.key)){this._restoreScrollPositions(s);window.setTimeout(()=>this._restoreScrollPositions(s),0)}}}else{this._clearFocusRestore();this._tabKeyRegion=t;this._tabKeyShift=e.shiftKey}}_shouldRestoreScroll(t){return"ArrowLeft"===t||"ArrowRight"===t||"ArrowUp"===t||"ArrowDown"===t||"Home"===t||"End"===t}_getScrollPositions(t){const e=[{left:window.pageXOffset,top:window.pageYOffset}];for(let i=t&&t.parentElement;i;i=i.parentElement)(i.scrollWidth>i.clientWidth||i.scrollHeight>i.clientHeight)&&e.push({element:i,left:i.scrollLeft,top:i.scrollTop});return e}_restoreScrollPositions(t){for(const e of t)if(e.element){e.element.scrollLeft=e.left;e.element.scrollTop=e.top}else window.scrollTo(e.left,e.top)}_handleSeriesKey(t){const e=this._owner._accessibilityModel,i=e&&e.series?e.series[this._seriesIndex]:null;if(!i||!i.points||!i.points.length)return!1;switch(t){case"ArrowLeft":this._pointIndex=Math.max(0,this._pointIndex-1);return!0;case"ArrowRight":this._pointIndex=Math.min(i.points.length-1,this._pointIndex+1);return!0;case"ArrowUp":return this._moveSeries(-1);case"ArrowDown":return this._moveSeries(1);case"Home":this._pointIndex=0;return!0;case"End":this._pointIndex=i.points.length-1;return!0}return!1}_handleAnnotationKey(t){const e=this._owner._accessibilityModel,i=e&&e.annotations?e.annotations:[];if(!i.length)return!1;switch(t){case"ArrowLeft":case"ArrowUp":this._annotationIndex=Math.max(0,this._annotationIndex-1);return!0;case"ArrowRight":case"ArrowDown":this._annotationIndex=Math.min(i.length-1,this._annotationIndex+1);return!0;case"Home":this._annotationIndex=0;return!0;case"End":this._annotationIndex=i.length-1;return!0}return!1}_handleLegendKey(t){const e=this._owner._accessibilityModel,i=e&&e.legendItems?e.legendItems:[];if(!i.length)return!1;switch(t){case"ArrowLeft":this._legendIndex=Math.max(0,this._legendIndex-1);return!0;case"ArrowRight":this._legendIndex=Math.min(i.length-1,this._legendIndex+1);return!0;case"ArrowUp":return this._moveLegendSeries(-1);case"ArrowDown":return this._moveLegendSeries(1);case"Home":this._legendIndex=0;return!0;case"End":this._legendIndex=i.length-1;return!0;case"Enter":case" ":case"Spacebar":if(this._owner._activateAccessibilityLegendItem){const t=i[this._legendIndex];if(!t||!this._owner._getAccessibilityLegendItemState||null==this._owner._getAccessibilityLegendItemState(t))return!1;this._queueFocusRestore("legend");const e=this._owner._activateAccessibilityLegendItem(t);e?this._queueLegendAnnouncement(this._getLegendItemVisibilityLabel(t)):this._clearFocusRestore("legend");return e}return!1}return!1}_queueLegendAnnouncement(t){this._pendingLegendAnnouncement=t;this._statusElement.textContent=""}_announcePendingLegendChange(){if(this._pendingLegendAnnouncement&&this._statusElement){this._statusElement.textContent=this._pendingLegendAnnouncement;this._pendingLegendAnnouncement=null}}_isLegendActivationKey(t){return"Enter"===t||" "===t||"Spacebar"===t}_moveSeries(t){const e=this._owner._accessibilityModel,i=e&&e.series?e.series:[];if(!t)return!1;for(let e=this._seriesIndex+t;e>=0&&e<i.length;e+=t)if(i[e].points&&i[e].points.length){this._seriesIndex=e;this._pointIndex=Math.min(this._pointIndex,i[e].points.length-1);return!0}return!0}_moveLegendSeries(t){const e=this._owner._accessibilityModel,i=e&&e.legendItems?e.legendItems:[],s=i[this._legendIndex];if(!s||null==s.seriesIndex)return!1;if(!t)return!1;for(let e=this._legendIndex+t;e>=0&&e<i.length;e+=t)if(i[e].seriesIndex!==s.seriesIndex){this._legendIndex=e;return!0}this._legendIndex=Math.max(0,Math.min(i.length-1,this._legendIndex+t));return!0}_getNearestSeriesPoint(t,e){const i=this._owner._accessibilityModel,s=i&&i.series?i.series:[];if(!s.length)return null;for(let i=Math.min(t,s.length-1);i<s.length;i++)if(s[i].points&&s[i].points.length)return{seriesIndex:i,pointIndex:Math.min(e,s[i].points.length-1)};for(let i=Math.min(t,s.length-1);i>=0;i--)if(s[i].points&&s[i].points.length)return{seriesIndex:i,pointIndex:Math.min(e,s[i].points.length-1)};return null}_setSeriesFocusIndex(t,e){const i=this._owner._accessibilityModel,s=i&&i.series?i.series:[],n=s.findIndex(e=>e.index===t),r=(n>=0&&s[n].points?s[n].points:[]).findIndex(t=>t.index===e);if(n>=0&&r>=0){this._seriesIndex=n;this._pointIndex=r}}_setAnnotationFocusIndex(t){const e=this._owner._accessibilityModel,i=e&&e.annotations?e.annotations:[];i.length&&(this._annotationIndex=Math.max(0,Math.min(t,i.length-1)))}_setLegendFocusIndex(t){const e=this._owner._accessibilityModel,i=e&&e.legendItems?e.legendItems:[];i.length&&(this._legendIndex=Math.max(0,Math.min(t,i.length-1)))}_updateRegionLabel(t){const e=this._getRegion(t);if(e){this._updateRegionSemantics(t,e.element);this._setRegionLabel(e.element,this._getRegionLabel(t))}}_setRegionLabel(t,e){e=e||"";t.getAttribute("aria-label")!==e&&setAttribute(t,"aria-label",e);t.textContent&&(t.textContent="")}_getRegionLabel(t){if("title"===t){const t=this._owner._accessibilityModel;return format(culture.FlexChart.ariaLabels.chartTitle,{title:t&&t.title})}return"series"===t?this._getSeriesRegionLabel():"annotation"===t?this._getAnnotationRegionLabel():this._getLegendRegionLabel()}_getSeriesRegionLabel(){const t=this._owner._accessibilityModel,e=t&&t.series?t.series[this._seriesIndex]:null,i=e&&e.points?e.points[this._pointIndex]:null;return e&&i?_getAccessibilityPointDescription(e,i,this._seriesIndex,this._pointIndex):culture.FlexChart.ariaLabels.seriesRegion}_getAnnotationRegionLabel(){const t=this._owner._accessibilityModel,e=t&&t.annotations?t.annotations:[],i=e[this._annotationIndex];return i?_getAccessibilityAnnotationDescription(i,this._annotationIndex,e.length):culture.FlexChart.ariaLabels.annotationRegion}_getLegendRegionLabel(){const t=this._owner._accessibilityModel,e=t&&t.legendItems?t.legendItems:[],i=e[this._legendIndex];if(!i)return culture.FlexChart.ariaLabels.legendRegion;const s=null==this._getLegendItemState(i)?i.name:this._getLegendItemVisibilityLabel(i);return _getAccessibilityLegendDescription(Object.assign({},i,{name:s}),this._legendIndex,e.length)}_getCurrentLegendItemState(){const t=this._owner._accessibilityModel,e=t&&t.legendItems?t.legendItems:[];return this._getLegendItemState(e[this._legendIndex])}_getLegendItemState(t){return t&&this._owner._getAccessibilityLegendItemState?this._owner._getAccessibilityLegendItemState(t):null}_getLegendItemVisibilityLabel(t){const e=this._getLegendItemState(t);if(null==e)return t.name;const i=culture.FlexChart.ariaLabels,s=e?i.legendSeriesShown||"{name} shown":i.legendSeriesHidden||"{name} hidden";return format(s,{name:t.name})}_getRegion(t){for(const e of this._regions)if(e.type===t)return e;return null}_syncFocus(){if(!this._activeRegion||!this._owner._setAccessibilityFocus)return;this._focusActiveRegionElement();const t={region:this._activeRegion};if("series"===this._activeRegion){const e=this._getCurrentSeries(),i=e&&e.points?e.points[this._pointIndex]:null;t.seriesIndex=e&&null!=e.index?e.index:this._seriesIndex;t.pointIndex=i&&null!=i.index?i.index:this._pointIndex}else"annotation"===this._activeRegion?t.annotationIndex=this._annotationIndex:"legend"===this._activeRegion&&(t.legendIndex=this._legendIndex);this._owner._setAccessibilityFocus(t);this._owner._showAccessibilityTooltip&&this._owner._showAccessibilityTooltip(t)}_queueFocusRestore(t){this._restoreFocusRegion=t;this._restoreFocusLost=!1}_clearFocusRestore(t){if(!t||this._restoreFocusRegion===t){this._restoreFocusRegion=null;this._restoreFocusLost=!1}}_completeFocusRestore(){const t=this._getRegion(this._restoreFocusRegion);this._restoreFocusLost&&t&&document.activeElement===t.element&&this._clearFocusRestore(this._restoreFocusRegion)}_shouldRestoreFocusAfterBlur(t,e){return this._restoreFocusRegion===t&&(!e||e===document.body||e===this._owner.hostElement)}_shouldShowHostFocus(){return!this._owner._shouldShowAccessibilityFocus||this._owner._shouldShowAccessibilityFocus()}_isShiftTabbingToHost(t){return this._tabKeyRegion===t&&this._tabKeyShift}_clearTabKeyState(t){if(!t||this._tabKeyRegion===t){this._tabKeyRegion=null;this._tabKeyShift=!1}}_focusActiveRegionElement(){const t=this._getRegion(this._activeRegion);if(t&&document.activeElement!==t.element&&t.element.focus)try{t.element.focus({preventScroll:!0})}catch(e){t.element.focus()}}_getCurrentSeries(){const t=this._owner._accessibilityModel;return t&&t.series?t.series[this._seriesIndex]:null}_clearFocus(){this._owner._clearAccessibilityFocus&&this._owner._clearAccessibilityFocus();this._owner._hideAccessibilityTooltip&&this._owner._hideAccessibilityTooltip()}}_addCultureInfo("FlexChart",{ariaLabels:{chart:"Chart",chartTitle:"Chart title: {title}",chartType:"type: {type}",seriesSummary:"There are {count} series in this chart, {seriesText}",seriesName:"series {index} {name}",unnamedSeries:"Series {index}",chartTypeName:"{type} chart",comboChart:"Combo chart",waterfallChart:"Waterfall chart",boxWhiskerChart:"Box Whisker chart",breakEvenChart:"Break Even chart",clusteredChartTypeName:"Clustered {type} chart",stackedChartTypeName:"Stacked {type} chart",stacked100ChartTypeName:"100% Stacked {type} chart",pieChart:"Pie chart",doughnutChart:"Doughnut chart",sunburstChart:"Sunburst chart",treeMapChart:"TreeMap chart",mapChart:"Map chart",mapZoomIn:"Zoom in",mapZoomOut:"Zoom out",radarChartTypeName:"Radar {type} chart",stackedRadarChartTypeName:"Stacked Radar {type} chart",stacked100RadarChartTypeName:"100% Stacked Radar {type} chart",financialChartTypeName:"Financial {type} chart",seriesRegion:"Series region",annotationRegion:"Annotations region",legendRegion:"Legend region",pointPosition:"Point {index} of {count}",pointCategory:"Category {category}",pointValue:"Value {value}",annotationItem:"Annotation {index} of {count}: {label}",legendItem:"Legend item {index} of {count}: {name}",legendSeriesHidden:"{name} hidden",legendSeriesShown:"{name} shown",rangeStartHandle:"Range start handle",rangeEndHandle:"Range end handle",analyticsSeriesBoxWhisker:"Box whisker series",analyticsSeriesWaterfall:"Waterfall series",analyticsSeriesBreakEven:"Break even analysis",analyticsSeriesErrorBar:"Error bar",analyticsSeriesTrendLine:"Trend line",analyticsSeriesMovingAverage:"Moving average",analyticsSeriesFunctionSeries:"Function series",analyticsSeriesGeneric:"Analytics series",analyticsLabelMin:"Min {value}",analyticsLabelQ1:"Q1 {value}",analyticsLabelMedian:"Median {value}",analyticsLabelQ3:"Q3 {value}",analyticsLabelMax:"Max {value}",analyticsLabelMean:"Mean {value}",analyticsLabelOutliers:"Outliers {values}",analyticsLabelQuartileCalculation:"Quartile calculation {type}",analyticsLabelShowsMeanMarker:"Shows mean marker",analyticsLabelShowsMeanLine:"Shows mean line",analyticsLabelShowsOutliers:"Shows outliers",analyticsLabelShowsInnerPoints:"Shows inner points",analyticsLabelBoxWhiskerStatistics:"Box whisker statistics",analyticsLabelRelativeChanges:"Relative changes",analyticsLabelAbsoluteValues:"Absolute values",analyticsLabelStartValue:"Start value {value}",analyticsLabelIncludesIntermediateTotals:"Includes intermediate totals",analyticsLabelIncludesTotal:"Includes total {totalLabel}",analyticsLabelStartBar:"Start bar",analyticsLabelIntermediateTotalBar:"Intermediate total bar",analyticsLabelTotalBar:"Total bar",analyticsLabelRisingBar:"Rising bar",analyticsLabelFallingBar:"Falling bar",analyticsLabelTotalValue:"Total value {value}",analyticsLabelChange:"Change {value}",analyticsLabelCumulativeValue:"Cumulative value {value}",analyticsLabelStart:"Start",analyticsLabelFixedCost:"Fixed cost {value}",analyticsLabelVariableCost:"Variable cost {value}",analyticsLabelSalesPrice:"Sales price {value}",analyticsLabelBreakEvenQuantity:"Break-even quantity {value}",analyticsLabelBreakEvenRevenue:"Break-even revenue {value}",analyticsLabelSalesRevenue:"Sales revenue {value}",analyticsLabelTotalCost:"Total cost {value}",analyticsLabelMarginalProfit:"Marginal profit {value}",analyticsLabelQuantity:"Quantity {value}",analyticsLabelErrorAmount:"Error amount {type}",analyticsLabelDirection:"Direction {dir}",analyticsLabelEndStyle:"End style {style}",analyticsLabelPositiveError:"Positive error {value}",analyticsLabelNegativeError:"Negative error {value}",analyticsLabelFitType:"Fit type {type}",analyticsLabelSampleCount:"Sample count {count}",analyticsLabelOrder:"Order {order}",analyticsLabelType:"Type {type}",analyticsLabelPeriod:"Period {period}",analyticsLabelRange:"Range {min} to {max}",financialAnalyticsSeriesATR:"Average True Range",financialAnalyticsSeriesCCI:"Commodity Channel Index",financialAnalyticsSeriesRSI:"Relative Strength Index",financialAnalyticsSeriesWilliamsR:"Williams %R",financialAnalyticsSeriesBollingerBands:"Bollinger bands",financialAnalyticsSeriesEnvelopes:"Moving average envelopes",financialAnalyticsSeriesMacd:"MACD indicator",financialAnalyticsSeriesMacdHistogram:"MACD histogram",financialAnalyticsSeriesStochastic:"Stochastic oscillator",financialAnalyticsSeriesFibonacciRetracements:"Fibonacci retracements",financialAnalyticsSeriesFibonacciArcs:"Fibonacci arcs",financialAnalyticsSeriesFibonacciFans:"Fibonacci fans",financialAnalyticsSeriesFibonacciTimeZones:"Fibonacci time zones",financialAnalyticsLabelConstant:"Constant {value}",financialAnalyticsLabelMultiplier:"Multiplier {value}",financialAnalyticsLabelSize:"Size {value}",financialAnalyticsLabelUpperBand:"Upper band {value}",financialAnalyticsLabelMiddleBand:"Middle band {value}",financialAnalyticsLabelLowerBand:"Lower band {value}",financialAnalyticsLabelUpperEnvelope:"Upper envelope {value}",financialAnalyticsLabelLowerEnvelope:"Lower envelope {value}",financialAnalyticsLabelFastPeriod:"Fast period {period}",financialAnalyticsLabelSlowPeriod:"Slow period {period}",financialAnalyticsLabelSmoothingPeriod:"Smoothing period {period}",financialAnalyticsLabelMacdLine:"MACD line {value}",financialAnalyticsLabelSignalLine:"Signal line {value}",financialAnalyticsLabelKPeriod:"%K period {period}",financialAnalyticsLabelDPeriod:"%D period {period}",financialAnalyticsLabelKValue:"%K {value}",financialAnalyticsLabelDValue:"%D {value}",financialAnalyticsLabelDataPoint:"{name} x {x}, y {y}",financialAnalyticsLabelEnd:"End",financialAnalyticsLabelLevels:"Levels {levels}",financialAnalyticsLabelUptrend:"Uptrend",financialAnalyticsLabelDowntrend:"Downtrend",financialAnalyticsLabelStartX:"Start x {value}",financialAnalyticsLabelEndX:"End x {value}",financialAnalyticsLabelFibonacciRetracementLevel:"Fibonacci retracement level {level}%. Price {price}",financialAnalyticsLabelFibonacciArcLevel:"Fibonacci arc level {level}%",financialAnalyticsLabelFibonacciFanLevel:"Fibonacci fan level {level}%",financialAnalyticsLabelFibonacciTimeZoneLevel:"Fibonacci time zone level {level}. X {x}",ohlcHigh:"High {value}",ohlcLow:"Low {value}",ohlcOpen:"Open {value}",ohlcClose:"Close {value}",ohlcVolume:"Volume {value}",ohlcValue:"Value {value}",ohlcColumnVolume:"Column volume",ohlcMin:"Min {value}",ohlcMax:"Max {value}",ohlcBoxSize:"Box size {value}",ohlcBoxes:"Boxes {value}",ohlcRising:"Rising",ohlcFalling:"Falling",ohlcRisingXColumn:"Rising X column",ohlcFallingOColumn:"Falling O column",ohlcDerivedPoint:"Derived point",ohlcHeikinAshiPoint:"Heikin Ashi point",ohlcDescription:{candlestick:"Candlestick open high low close values",highLowOpenClose:"High low open close values",equiVolume:"EquiVolume high low open close and volume values",candleVolume:"Candle volume open high low close and volume values",armsCandleVolume:"Arms candle volume open high low close and volume values",columnVolume:"Column volume values"},ohlcPointPrefix:{candlestick:"Candlestick point",highLowOpenClose:"High low open close point",equiVolume:"EquiVolume point",candleVolume:"Candle volume point",armsCandleVolume:"Arms candle volume point",columnVolume:"Column volume point",financial:"Financial point"},ohlcDerived:{heikinAshi:"Heikin Ashi derived values",lineBreak:"Line Break derived price movements",renko:"Renko derived bricks",kagi:"Kagi derived price movements",pointAndFigure:"Point and Figure derived columns"}}});export class DataPoint{constructor(t=0,e=0){this.x=t;this.y=e}}export class RenderEventArgs extends CancelEventArgs{constructor(t){super();this._engine=t}get engine(){return this._engine}}export class SeriesRenderingEventArgs extends RenderEventArgs{constructor(t,e,i){super(t);this._index=e;this._count=i}get index(){return this._index}get count(){return this._count}}export var ImageFormat;!function(t){t[t.Png=0]="Png";t[t.Jpeg=1]="Jpeg";t[t.Svg=2]="Svg"}(ImageFormat||(ImageFormat={}));export var SelectionMode;!function(t){t[t.None=0]="None";t[t.Series=1]="Series";t[t.Point=2]="Point"}(SelectionMode||(SelectionMode={}));export var Position;!function(t){t[t.None=0]="None";t[t.Left=1]="Left";t[t.Top=2]="Top";t[t.Right=3]="Right";t[t.Bottom=4]="Bottom";t[t.Auto=5]="Auto";t[t.TopLeft=6]="TopLeft";t[t.TopRight=7]="TopRight";t[t.BottomLeft=8]="BottomLeft";t[t.BottomRight=9]="BottomRight";t[t.LeftTop=10]="LeftTop";t[t.LeftBottom=11]="LeftBottom";t[t.RightTop=12]="RightTop";t[t.RightBottom=13]="RightBottom"}(Position||(Position={}));export var Orientation;!function(t){t[t.Auto=0]="Auto";t[t.Vertical=1]="Vertical";t[t.Horizontal=2]="Horizontal"}(Orientation||(Orientation={}));export class FlexChartBase extends Control{constructor(){super(...arguments);this._palette=null;this._selectionMode=SelectionMode.None;this._accessibilityModelExtensions=[];this._focusMode=!1;this._accessibilityHostFocusHandlerAdded=!1;this._defPalette=Palettes.standard;this._notifyCurrentChanged=!0;this._legendHost=null;this._needBind=!1;this._skipLightClr=!1;this._showTooltipOnFocus=!1;this._accessibilityTooltipVisible=!1;this.rendering=new Event;this.rendered=new Event;this.itemsSourceChanging=new Event;this.itemsSourceChanged=new Event;this.selectionChanged=new Event}get itemsSource(){return this._items}set itemsSource(t){if(this._items!=t){const e=new CancelEventArgs;if(!this.onItemsSourceChanging(e))return;if(this._cv){this._cv.currentChanged.removeHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._items=t;this._cv=asCollectionView(t);if(null!=this._cv){this._cv.currentChanged.addHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.addHandler(this._cvCollectionChanged,this)}this._clearCachedValues();this.onItemsSourceChanged(e);this._bindChart()}}get collectionView(){return this._cv}get palette(){return this._palette}set palette(t){if(t!=this._palette){this._palette=asArray(t);this._skipLightClr=Palettes._isExtended(this._palette);this.invalidate()}}get plotMargin(){return this._plotMargin}set plotMargin(t){if(t!=this._plotMargin){this._plotMargin=t;this.invalidate()}}get legend(){return this._legend}set legend(t){if(t!=this._legend){this._legend=asType(t,Legend);null!=this._legend&&(this._legend._chart=this)}}get header(){return this._header}set header(t){if(t!=this._header){this._header=asString(t,!0);this.invalidate()}}get footer(){return this._footer}set footer(t){if(t!=this._footer){this._footer=asString(t,!0);this.invalidate()}}get ariaLabel(){if(this.hostElement){const t=this.hostElement.getAttribute("aria-label");if(t)return t}return this._ariaLabel}set ariaLabel(t){if((t=null==t?null:asString(t,!0))!=this._ariaLabel){const e=this._ariaLabel;this._ariaLabel=t;null==t&&null!=e&&this.hostElement&&this.hostElement.getAttribute("aria-label")===e&&setAttribute(this.hostElement,"aria-label",null);this._updateHostAriaLabel()}}get focusMode(){return this._focusMode}set focusMode(t){if((t=asBoolean(t,!0))!==this._focusMode){this._focusMode=t;this._updateFocusMode()}}get showTooltipOnFocus(){return this._showTooltipOnFocus}set showTooltipOnFocus(t){if((t=asBoolean(t,!0))!==this._showTooltipOnFocus){this._showTooltipOnFocus=t;t&&this.focusMode||this._hideAccessibilityTooltip()}}get headerStyle(){return this._headerStyle}set headerStyle(t){if(t!=this._headerStyle){this._headerStyle=t;this.invalidate()}}get footerStyle(){return this._footerStyle}set footerStyle(t){if(t!=this._footerStyle){this._footerStyle=t;this.invalidate()}}get selectionMode(){return this._selectionMode}set selectionMode(t){if((t=asEnum(t,SelectionMode))!=this._selectionMode){this._selectionMode=t;this.invalidate()}}get itemFormatter(){return this._itemFormatter}set itemFormatter(t){if(t!=this._itemFormatter){this._itemFormatter=asFunction(t);this.invalidate()}}get options(){return this._options}set options(t){if(t!=this._options){this._options=t;this.invalidate()}}onRendering(t){this.rendering.raise(this,t)}onRendered(t){this.rendered.raise(this,t);this._updateAccessibilityModel();this._updateHostAriaLabel();this._updateFocusModeTabOrder();this._updateAccessibilityKeyboard();this._updateAccessibilityFocus()}dispose(){this._disposeAccessibilityModelExtensions();this._clearAccessibilityKeyboard();this._clearAccessibilityFocus();this._hideAccessibilityTooltip();const t=ChartTooltip._eTip;this._tooltip&&t&&t[Control._TTIP_KEY]===this.hostElement&&this._tooltip.dispose();this._accessibilityKeyboard=null;this._accessibilityFocus=null;this._accessibilityModel=null;this._accessibilityModelExtensions=null;super.dispose()}onItemsSourceChanging(t){this.itemsSourceChanging.raise(this,t);return!t.cancel}onItemsSourceChanged(t){this.itemsSourceChanged.raise(this,t)}saveImageToFile(t){var e,i,s,n;t&&0!==t.length&&-1!==t.indexOf(".")||(t="image.png");n=t.split(".");e=n[0];i=n[1].toLowerCase();s=ImageFormat[i[0].toUpperCase()+i.substring(1)];this.saveImageToDataUrl(s,t=>{ExportHelper.downloadImage(t,e,i)})}saveImageToDataUrl(t,e){var i=asEnum(t,ImageFormat,!1),s=ImageFormat[i].toLowerCase();s&&s.length&&this._exportToImage(s,t=>{e.call(e,t)})}saveSvgToDataUrl(t,e=!0){this._exportToImage("svg",e=>{t.call(t,e)},{embedCss:e})}saveSvgToFile(t,e=!0){this.saveSvgToDataUrl(e=>{ExportHelper.downloadImage(e,t,"svg")},e)}_exportToImage(t,e,i=null){const s=this._currentRenderEngine.element;i&&!1===i.embedCss?ExportHelper.getDataUri2(s,this,i=>{this.prepareDataUri(s,t,i,e)}):ExportHelper.getDataUri(s,this,i=>{this.prepareDataUri(s,t,i,e)})}prepareDataUri(t,e,i,s){if("svg"===e)s.call(null,i);else{const n=new Image;n.onload=()=>{var i,r=document.createElement("canvas"),a=t.parentNode||t,h=getElementRect(a);r.width=h.width;r.height=h.height;var l=r.getContext("2d");let o=this._bgColor(this.hostElement);this._isTransparent(o)&&(o="#ffffff");l.fillStyle=o;l.fillRect(0,0,h.width,h.height);var c=window.getComputedStyle(a,null).getPropertyValue("padding-left").replace("px",""),_=window.getComputedStyle(a,null).getPropertyValue("padding-top").replace("px","");l.drawImage(n,+c||0,+_||0);i=r.toDataURL("image/"+e);s.call(null,i);r=null};n.src=i}}refresh(t=!0){super.refresh(t);this.isUpdating||this.disposed||this._refreshChart()}onSelectionChanged(t){this.selectionChanged.raise(this,t)}onLostFocus(t){this._tooltip&&this._tooltip.isVisible&&!this.isTouching&&this._tooltip.hide();this._clearAccessibilityFocus();super.onLostFocus(t)}_setTabOrder(t){super._setTabOrder(t);this._updateFocusModeTabOrder()}_setIsDisabled(t){super._setIsDisabled(t);this._updateFocusModeTabOrder()}_cvCollectionChanged(t,e){this._clearCachedValues();this._bindChart()}_cvCurrentChanged(t,e){this._notifyCurrentChanged&&this._bindChart()}_bgColor(t){if(!t)return"transparent";const e=getComputedStyle(t).backgroundColor;return this._isTransparent(e)?this._bgColor(t.parentElement):e}_isTransparent(t){const e=new Color(t);return 0==e.a&&0==e.b&&0==e.g&&0==e.r}_shouldShowAccessibilityFocus(){if(!this.focusMode)return!1;const t=this.hostElement;if(t&&t.matches)try{return t.matches(":focus-visible")}catch(t){}return!1}_updateHostAriaLabel(){setAttribute(this.hostElement,"role","figure");if(null!=this._ariaLabel){this._generatedAriaLabel=null;setAttribute(this.hostElement,"aria-label",this._ariaLabel);return}const t=this.hostElement.getAttribute("aria-label");if(!t||t===this._generatedAriaLabel){this._generatedAriaLabel=_getDefaultAccessibilityAriaLabel(this._accessibilityModel);setAttribute(this.hostElement,"aria-label",this._generatedAriaLabel)}}_getAccessibleChartTypeName(){return _getAccessibleChartTypeName("chart")}_createAccessibilityModel(){return _getBaseAccessibilityModel(this,this._getAccessibleChartTypeName())}_isAccessibilityLegendVisible(){return!!(this._rectLegend&&this._rectLegend.width>0&&this._rectLegend.height>0)}_updateAccessibilityModel(){this._accessibilityModel=this._createAccessibilityModel();this.focusMode&&this._updateAccessibilityModelExtensions(this._accessibilityModel)}_addAccessibilityModelExtension(t){const e=this._accessibilityModelExtensions;if(t&&e&&e.indexOf(t)<0){e.push(t);this._refreshAccessibility()}}_removeAccessibilityModelExtension(t){const e=this._accessibilityModelExtensions,i=e?e.indexOf(t):-1;if(i>=0){e.splice(i,1);this._refreshAccessibility()}}_refreshAccessibility(){this._updateAccessibilityModel();this._updateHostAriaLabel();this._updateAccessibilityKeyboard();this._updateAccessibilityFocus()}_updateAccessibilityModelExtensions(t){const e=this._accessibilityModelExtensions;if(t&&e)for(const i of e)i._updateAccessibilityModel(t)}_disposeAccessibilityModelExtensions(){const t=this._accessibilityModelExtensions;if(t)for(const e of t)e._disposeAccessibilityExtension&&e._disposeAccessibilityExtension()}_updateAccessibilityKeyboard(){if(this.focusMode){this._accessibilityKeyboard||(this._accessibilityKeyboard=new _ChartAccessibilityKeyboardManager(this));this._accessibilityKeyboard.update()}else this._clearAccessibilityKeyboard()}_clearAccessibilityKeyboard(){this._accessibilityKeyboard&&this._accessibilityKeyboard.clear()}_updateFocusMode(){this._updateFocusModeTabOrder();this._accessibilityModel&&this._refreshAccessibility();if(!this.focusMode){this._clearAccessibilityKeyboard();this._clearAccessibilityFocus();this._hideAccessibilityTooltip()}}_updateFocusModeTabOrder(){if(this.hostElement&&this.focusMode){this._ensureAccessibilityHostFocusHandlers();super._setTabOrder(this.tabOrder)}}_ensureAccessibilityHostFocusHandlers(){if(!this._accessibilityHostFocusHandlerAdded){this.addEventListener(this.hostElement,"focus",this._onAccessibilityHostFocus.bind(this),!1,!1);this.addEventListener(this.hostElement,"blur",this._onAccessibilityHostBlur.bind(this),!1,!1);this._accessibilityHostFocusHandlerAdded=!0}}_onAccessibilityHostFocus(){this.focusMode&&document.activeElement===this.hostElement&&(this._shouldShowAccessibilityFocus()?this._setAccessibilityFocus({region:"chart"}):this._clearAccessibilityFocus())}_onAccessibilityHostBlur(){if(this.focusMode){this._clearAccessibilityFocus();this._hideAccessibilityTooltip()}}_updateAccessibilityFocus(){this._accessibilityFocus&&this._accessibilityFocus.refresh()}_setAccessibilityFocus(t){this._accessibilityFocus||(this._accessibilityFocus=new _ChartAccessibilityFocusManager(this));this._accessibilityFocus.update(t)}_clearAccessibilityFocus(){this._accessibilityFocus&&this._accessibilityFocus.clear()}_updateAccessibilityFocusFromState(t){if(this.focusMode)if(t){if(this._accessibilityKeyboard&&this._accessibilityKeyboard.activate(t))return;this._setAccessibilityFocus(t);this._showAccessibilityTooltip(t)}else{this._clearAccessibilityFocus();this._hideAccessibilityTooltip()}}_getAccessibilitySeriesPointShape(t,e){return _getRectFocusShape(this._rectChart)}_getAccessibilityAnnotationShape(t,e){return t&&t.shape||_getRectFocusShape(this._rectChart)}_getAccessibilityLegendItemShape(t,e){const i=this.legend,s=i&&i._areas,n=t&&null!=t.legendIndex?t.legendIndex:e;return _getRectFocusShape((s&&null!=n?s[n]:null)||this._rectLegend)}_showAccessibilityTooltip(t){if(!(this.focusMode&&this.showTooltipOnFocus&&this._tooltip&&t&&"chart"!==t.region&&"title"!==t.region)){this._hideAccessibilityTooltip();return}const e=this._getAccessibilityTooltipContent(t),i=this._isAccessibilityTooltipContentCustom(t),s=e?this._getAccessibilityTooltipBounds(t):null;this._hideAccessibilityTooltip();e&&s&&this._showToolTip(e,s,!0,i)}_hideAccessibilityTooltip(){this._accessibilityTooltipVisible&&this._tooltip&&this._hideToolTip()}_getAccessibilityTooltipContent(t){if(t&&"annotation"===t.region){const e=this._accessibilityModel,i=e&&e.annotations?e.annotations[t.annotationIndex]:null;return i&&(i.tooltip||i.label)}return null}_isAccessibilityTooltipContentCustom(t){return!!(t&&"annotation"!==t.region&&this._tooltip&&this._tooltip._isContentCustomized())}_getAccessibilityTooltipBounds(t){const e=_getFocusStateShape(this,t),i=e?_getFocusShapeRect(e):this._rectChart;if(!i)return null;const s=this.hostElement.getBoundingClientRect();return new Rect(s.left+i.left+i.width/2,s.top+i.top+i.height/2,5,5)}_getColor(t){var e=this._defPalette;null!=this._palette&&this._palette.length>0&&(e=this._palette);return e[t%e.length]}_getColorLight(t){let e=this._getColor(t);this._skipLightClr||(e=this._getLightColor(e));return e}_getLightColor(t){var e=new Color(t);if(null!=e&&-1===t.indexOf("-")){1==e.a&&-1==t.indexOf("rgba")&&-1==t.indexOf("hsla")&&(e.a*=.7);t=e.toString()}return t}_bindChart(){this._needBind=!0;this.invalidate()}_clearCachedValues(){}_renderEls(t,e,i=!0,s=null,n=!1){let r=e.width,a=e.height;if(0==r)return;(isNumberNaN(+r)||r<0)&&(r=FlexChartBase._WIDTH);(a<=0||isNumberNaN(+a))&&(a=FlexChartBase._HEIGHT);const h=r>0&&a>0;h&&t.setViewportSize(r,a);let l=0,o=0;if(this.legend.scrollbar&&this._legendHost){const t=this._legendHost.querySelector(".wj-legend-scrollable");if(t)if(this.legend.isVertical){o=0;l=t.scrollTop}else{l=0;o=t.scrollLeft}}this._currentRenderEngine._htmlText=this._isHtmlText();t.beginRender();t.cssPriority=!0;if(h){this._rectChart=new Rect(0,0,r,a);this._prepareRender();if(s){const e=t.stroke,i=t.fill;t.fill=s;t.stroke=null;t.drawRect(0,0,r,a);t.fill=i;t.stroke=e}const e=new Rect(0,0,r,a);this._chartRectId="chartRect"+(1e6*Math.random()).toFixed();t.addClipRect(e,this._chartRectId);this._renderHeader(t,e);this._renderFooter(t,e);this._renderLegends(t,e);this._renderChart(t,e,i);if(this.legend.scrollbar&&this._legendHost){const t=this._legendHost.querySelector(".wj-legend-scrollable");if(t){t.scrollTop=l;t.scrollLeft=o}}}t.endRender()}_render(t,e=!0,i=null){const s=this._getHostSize();if(this._h){const t=s.height-this._h;t>=4&&t<=6&&!1!==this._isPCUnit("height")&&(s.height=this._h)}this._h=s.height;this._renderEls(t,s,e,i)}_isPCUnit(t){let e=null;const i=this.hostElement;if(i&&i.computedStyleMap){const s=i.computedStyleMap();if(s){const i=s.get(t);i&&(e="percent"==i.unit)}}return e}_renderHidden(t=null,e=null){const i=document.createElement("div");addClass(i,this.hostElement.getAttribute("class")||"");i.style.visibility="hidden";const s=new _SvgRenderEngine(i);document.body.appendChild(i);if(!t){const e=this._getHostComputedStyle();let i=0,s=0;if(e){i=this._parsePx(e.width);s=this._parsePx(e.height);0==i&&(i=FlexChartBase._WIDTH);0==s&&(s=FlexChartBase._HEIGHT);i-=this._parsePx(e.paddingLeft);i-=this._parsePx(e.paddingRight);s-=this._parsePx(e.paddingTop);s-=this._parsePx(e.paddingBottom);i-=this._parsePx(e.borderLeftWidth);i-=this._parsePx(e.borderRightWidth);s-=this._parsePx(e.borderTopWidth);s-=this._parsePx(e.borderBottomWidth)}0==i&&(i=FlexChartBase._WIDTH);0==s&&(s=FlexChartBase._HEIGHT);t=new Size(i,s)}this._renderEls(s,t,!0,e,!0);removeChild(i);return s.element}_renderHeader(t,e){t.startGroup(FlexChartBase._CSS_HEADER,this._chartRectId);e=this._drawTitle(t,e,this.header,this.headerStyle,!1);t.endGroup()}_renderFooter(t,e){t.startGroup(FlexChartBase._CSS_FOOTER,this._chartRectId);e=this._drawTitle(t,e,this.footer,this.footerStyle,!0);t.endGroup()}_renderLegends(t,e){var i,s,n=this.legend,r=e.width,a=e.height,h=n._getPosition(r,a);let l=r,o=a;h==Position.Left||h==Position.Right||h==Position.LeftTop||h==Position.LeftBottom||h==Position.RightTop||h==Position.RightBottom?l=this._getLegendSize(r,l):o=this._getLegendSize(a,o);if(!(i=n._getDesiredSize(t,h,l,o))){this._legendHost=null;this._rectLegend=null;return}h==Position.Left||h==Position.Right||h==Position.LeftTop||h==Position.LeftBottom||h==Position.RightTop||h==Position.RightBottom?i.width=this._getLegendSize(r,i.width):i.height=this._getLegendSize(a,i.height);i.height>e.height&&(i.height=e.height);switch(h){case Position.Right:r-=i.width;s=new Point(r,e.top+.5*(a-i.height));break;case Position.RightTop:r-=i.width;s=new Point(r,e.top);break;case Position.RightBottom:r-=i.width;s=new Point(r,e.top+(a-i.height));break;case Position.Left:e.left+=i.width;r-=i.width;s=new Point(0,e.top+.5*(a-i.height));break;case Position.LeftTop:e.left+=i.width;r-=i.width;s=new Point(0,e.top);break;case Position.LeftBottom:e.left+=i.width;r-=i.width;s=new Point(0,e.top+(a-i.height));break;case Position.Top:a-=i.height;s=new Point(.5*(r-i.width),e.top);e.top+=i.height;break;case Position.TopLeft:a-=i.height;s=new Point(0,e.top);e.top+=i.height;break;case Position.TopRight:a-=i.height;s=new Point(r-i.width,e.top);e.top+=i.height;break;case Position.Bottom:a-=i.height;s=new Point(.5*(r-i.width),e.top+a);break;case Position.BottomLeft:a-=i.height;s=new Point(0,e.top+a);break;case Position.BottomRight:a-=i.height;s=new Point(r-i.width,e.top+a)}e.width=r;e.height=a;this._rectLegend=new Rect(s.x,s.y,i.width,i.height);const c="legRect"+(1e6*Math.random()).toFixed();t.addClipRect(this._rectLegend,c);this._legendHost=t.startGroup(FlexChartBase._CSS_LEGEND,c);this.legend._render(t,s,h,i.width,i.height);t.endGroup()}_prepareRender(){}_renderChart(t,e,i){}_performBind(){}_getDesiredLegendSize(t,e,i,s){return null}_renderLegend(t,e,i,s,n,r){}_getHitTestItem(t){return null}_getHitTestValue(t,e){return null}_getHitTestLabel(t){return null}_refreshChart(){if(this._needBind){this._needBind=!1;this._performBind()}this.hostElement&&this._render(this._currentRenderEngine)}_drawTitle(t,e,i,s,n){var r=FlexChartBase._CSS_TITLE,a=n?FlexChartBase._CSS_FOOTER:FlexChartBase._CSS_HEADER,h=null;n?this._rectFooter=null:this._rectHeader=null;if(null!=i){let l=null,o=null,c=null,_=null;if(s){s.fontSize&&(l=s.fontSize);s.foreground&&(o=s.foreground);s.fill&&(o=s.fill);s.fontFamily&&(c=s.fontFamily);s.halign&&(_=s.halign)}t.fontSize=l;t.fontFamily=c;h=t.measureString(i,r,a,s);e.height-=h.height;o||(o=FlexChartBase._FG);t.textFill=o;if(n){"left"==_?FlexChartBase._renderText(t,i,new Point(e.left,e.bottom),0,0,r,a,s):"right"==_?FlexChartBase._renderText(t,i,new Point(e.left+e.width,e.bottom),2,0,r,a,s):FlexChartBase._renderText(t,i,new Point(e.left+.5*e.width,e.bottom),1,0,r,a,s);this._rectFooter=this._getTitleFocusRect(new Rect(e.left,e.bottom,e.width,h.height),!0)}else{this._rectHeader=this._getTitleFocusRect(new Rect(e.left,e.top,e.width,h.height),!1);e.top+=h.height;"left"==_?FlexChartBase._renderText(t,i,new Point(e.left,this._rectHeader.top),0,0,r,a,s):"right"==_?FlexChartBase._renderText(t,i,new Point(e.left+e.width,this._rectHeader.top),2,0,r,a,s):FlexChartBase._renderText(t,i,new Point(e.left+.5*e.width,this._rectHeader.top),1,0,r,a,s)}t.textFill=null;t.fontSize=null;t.fontFamily=null}return e}_getTitleFocusRect(t,e){const i=Math.max(t.height,16);return new Rect(t.left,e?t.top-(i-t.height):t.top,t.width,i)}pageToControl(t,e){return this._toControl(t,e)}_toControl(t,e){isNumber(t)&&isNumber(e)?t=new Point(t,e):t instanceof MouseEvent&&(t=mouseToPage(t));asType(t,Point);var i=t.clone(),s=this._getHostOffset();i.x-=s.x;i.y-=s.y;const n=this._currentRenderEngine?this._currentRenderEngine.element:null;if(null!=n){const t=n.getBoundingClientRect(),e=parseFloat(n.getAttribute("width")),s=parseFloat(n.getAttribute("height"));t.width!=e&&(i.x*=e/t.width);t.height!=s&&(i.y*=s/t.height)}var r=this._getHostComputedStyle();if(r){const t=parseInt(r.paddingLeft.replace("px",""));t&&!isNumberNaN(+t)&&(i.x-=t);const e=parseInt(r.paddingTop.replace("px",""));e&&!isNumberNaN(+e)&&(i.y-=e)}return i}_highlightItems(t,e,i){if(i)for(let i=0;i<t.length;i++)addClass(t[i],e);else for(let i=0;i<t.length;i++)removeClass(t[i],e)}_parseMargin(t){var e={};if(isNumber(t)&&!isNumberNaN(+t))e.top=e.bottom=e.left=e.right=asNumber(t);else if(isString(t)){const i=asString(t).split(" ",4);let s=NaN,n=NaN,r=NaN,a=NaN;if(i){if(4==i.length){s=parseFloat(i[0]);a=parseFloat(i[1]);n=parseFloat(i[2]);r=parseFloat(i[3])}else if(2==i.length){s=n=parseFloat(i[0]);r=a=parseFloat(i[1])}else 1==i.length&&(s=n=r=a=parseFloat(i[1]));isNumberNaN(+s)||(e.top=s);isNumberNaN(+n)||(e.bottom=n);isNumberNaN(+r)||(e.left=r);isNumberNaN(+a)||(e.right=a)}}return e}_showToolTip(t,e,i=!1,s=!1){var n=this._tooltip.showDelay;this._clearTimeouts();if(!this.isDisabled)if(t){this._accessibilityTooltipVisible=!!i;if(n>0)this._toShow=setTimeout(()=>{i?this._tooltip._showAccessibilityTooltip(this.hostElement,t,e,s):this._tooltip.show(this.hostElement,t,e);this._accessibilityTooltipVisible=i;this._tooltip.hideDelay>0&&(this._toHide=setTimeout(()=>{this._tooltip.hide();this._accessibilityTooltipVisible=!1},this._tooltip.hideDelay))},n);else{i?this._tooltip._showAccessibilityTooltip(this.hostElement,t,e,s):this._tooltip.show(this.hostElement,t,e);this._accessibilityTooltipVisible=i;this._tooltip.hideDelay>0&&(this._toHide=setTimeout(()=>{this._tooltip.hide();this._accessibilityTooltipVisible=!1},this._tooltip.hideDelay))}}else{this._tooltip.hide();this._accessibilityTooltipVisible=!1}}_hideToolTip(){this._clearTimeouts();this._tooltip.hide();this._accessibilityTooltipVisible=!1}_clearTimeouts(){if(this._toShow){clearTimeout(this._toShow);this._toShow=null}if(this._toHide){clearTimeout(this._toHide);this._toHide=null}}_getHostOffset(){var t=getElementRect(this.hostElement);return new Point(t.left,t.top)}_getHostSize(){var t=new Size,e=this.hostElement,i=this._getHostComputedStyle(),s=e.offsetWidth,n=e.offsetHeight;if(i){s-=this._parsePx(i.paddingLeft);s-=this._parsePx(i.paddingRight);n-=this._parsePx(i.paddingTop);n-=this._parsePx(i.paddingBottom);s-=this._parsePx(i.borderLeftWidth);s-=this._parsePx(i.borderRightWidth);n-=this._parsePx(i.borderTopWidth);n-=this._parsePx(i.borderBottomWidth);t.width=s;t.height=n}return t}_parsePx(t){const e=parseFloat(t.replace("px",""));return isNumberNaN(+e)?0:e}_getHostComputedStyle(){var t=this.hostElement;return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(this.hostElement):null}_find(t,e){var i=[];for(let s=0;s<t.childElementCount;s++){const n=t.childNodes.item(s);if(e.indexOf(n.nodeName)>=0)i.push(n);else{const t=this._find(n,e);if(t.length>0)for(let e=0;e<t.length;e++)i.push(t[e])}}return i}_getLegendSize(t,e){return Math.min(e,this.legend._getMaxSize(t))}_isHtmlText(){return this._options&&this._options.htmlText}static _contains(t,e){return!(!t||!e)&&(e.x>=t.left&&e.x<=t.right&&e.y>=t.top&&e.y<=t.bottom)}static _intersects(t,e){return!(t.left>e.right||t.right<e.left||t.top>e.bottom||t.bottom<e.top)}static _toOADate(t){return t.valueOf()}static _fromOADate(t){return new Date(t)}static _renderText(t,e,i,s,n,r,a,h,l){var o=t.measureString(e,r,a,h),c=i.x,_=i.y;switch(s){case 1:c-=.5*o.width;break;case 2:c-=o.width}switch(n){case 1:_+=.5*o.height;break;case 0:_+=o.height}var d=new Rect(c,_-o.height,o.width,o.height);if(l){if(l(d)){t.drawString(e,new Point(c,_),r,h);return d}return null}t.drawString(e,new Point(c,_),r,h);return d}static _renderRotatedText(t,e,i,s,n,r,a,h,l,o){var c=t.measureString(e,h,l,o),_=i.x,d=i.y;switch(s){case 1:_-=.5*c.width;break;case 2:_-=c.width}switch(n){case 1:d+=.5*c.height;break;case 0:d+=c.height}return t.drawStringRotated(e,new Point(_,d),r,a,h,o)}static _endsWith(t,e){if(t&&e){const i=t.length-e.length;return i>=0&&t.indexOf(e,i)===i}return!1}}FlexChartBase._WIDTH=300;FlexChartBase._HEIGHT=200;FlexChartBase._SELECTION_THRESHOLD=15;FlexChartBase._CSS_LEGEND=FlexChartClsNames.legend;FlexChartBase._CSS_HEADER=FlexChartClsNames.header;FlexChartBase._CSS_FOOTER=FlexChartClsNames.footer;FlexChartBase._CSS_TITLE=FlexChartClsNames.title;FlexChartBase._CSS_LABEL=FlexChartClsNames.label;FlexChartBase._CSS_SELECTION=ControlStateClsNames.selected;FlexChartBase._CSS_PLOT_AREA=FlexChartClsNames.plotArea;FlexChartBase._FG="#666";FlexChartBase._epoch=new Date(1899,11,30).getTime();FlexChartBase._msPerDay=864e5;export class _KeyWords{constructor(){this._keys={};this._keys.seriesName=null;this._keys.pointIndex=null;this._keys.x=null;this._keys.y=null;this._keys.value=null;this._keys.name=null}replace(t,e){return format(t,{},(t,i,s,n)=>this.getValue(i,e,s))}getValue(t,e,i){switch(t){case"seriesName":return e.series?e.series.name:"";case"pointIndex":return null!=e.pointIndex?e.pointIndex.toFixed():"";case"x":return i?Globalize.format(e.x,i):e._xfmt;case"y":return i?Globalize.format(e.y,i):e._yfmt;case"value":return i?Globalize.format(e.value,i):e._getValueFmt();case"name":return e.name}if(e.item){0==t.indexOf("item.")&&(t=t.substr(5));const s=e.item[t];if(!isUndefined(s))return i?Globalize.format(s,i):s}return""}}class ExportHelper{static downloadImage(t,e,i){var s=document.createElement("a"),n="image/"+i;if(navigator.msSaveOrOpenBlob){t=t.substring(t.indexOf(",")+1);let s,r,a,h=atob(t),l=[],o=512;for(s=0;s<h.length;s+=o){r=h.slice(s,s+o);const t=new Array(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);const e=new Uint8Array(t);l.push(e)}a=new Blob(l,{type:n});navigator.msSaveOrOpenBlob(a,`${e}.${i}`)}else{s.download=`${e}.${i}`;s.href=t;document.body.appendChild(s);s.addEventListener("click",t=>{removeChild(s)});s.click()}}static getDataUri(t,e,i){var s,n,r,a,h,l,o,c,_,d,u=document.createElement("div"),g=t.cloneNode(!0);let p=!1;if("svg"==t.tagName){n=(s=getElementRect(t.parentNode||t)).width||0;r=s.height||0;0==n&&(p=!0);a=t.viewBox.baseVal&&0!==t.viewBox.baseVal.width?t.viewBox.baseVal.width:n;h=t.viewBox.baseVal&&0!==t.viewBox.baseVal.height?t.viewBox.baseVal.height:r}else{n=(l=t.getBBox()).x+l.width;r=l.y+l.height;g.setAttribute("transform",g.getAttribute("transform").replace(/translate\(.*?\)/,""));a=n;h=r;(c=document.createElementNS("http://www.w3.org/2000/svg","svg")).appendChild(g);g=c}if(p){const t=e._renderHidden(),i=e._getHostComputedStyle();let s=0,l=0;if(i){s=e._parsePx(i.width);l=e._parsePx(i.height)}0==s&&(s=FlexChartBase._WIDTH);0==l&&(l=FlexChartBase._HEIGHT);a=n=s;h=r=l;g=t.cloneNode(!0)}ExportHelper.removeAccessibilityOverlays(g);g.setAttribute("version","1.1");g.setAttributeNS(ExportHelper.xmlns,"xmlns","http://www.w3.org/2000/svg");g.setAttributeNS(ExportHelper.xmlns,"xmlns:xlink","http://www.w3.org/1999/xlink");g.setAttribute("width",n);g.setAttribute("height",r);g.setAttribute("viewBox",`0 0 ${a} ${h}`);addClass(g,t.parentNode&&t.parentNode.getAttribute("class")||"");u.appendChild(g);o=ExportHelper.getStyles(t);o+=`.${FlexChartClsNames.hostElement}{margin:0px;padding:0px;border:none;width:${n}px;height:${r}px;}\n`;(_=document.createElement("style")).setAttribute("type","text/css");_.innerHTML=`<![CDATA[\n${o}\n]]>`;(d=document.createElementNS("http://www.w3.org/2000/svg","defs")).appendChild(_);g.insertBefore(d,g.firstChild);isIE()||g.querySelectorAll("foreignObject").forEach(t=>{if(g===t.parentNode)g.removeChild(t);else for(const e of t.children)e.setAttribute("xmlns","http://www.w3.org/1999/xhtml")});const f=e._currentRenderEngine.canvas;if(f){const t=document.createElementNS("http://www.w3.org/2000/svg","image");t.setAttribute("width",f.width);t.setAttribute("height",f.height);t.setAttribute("href",f.toDataURL());g.insertBefore(t,g.firstChild);e.invalidate()}ExportHelper.convertImagesToDataUrl(g,()=>{const t="data:image/svg+xml;base64,"+window.btoa(window.unescape(encodeURIComponent(ExportHelper.doctype+u.innerHTML)));i.call(null,t)})}static convertImagesToDataUrl(t,e){const i=t.querySelectorAll("image");if(0===i.length){e();return}const s=Array.from(i);Array.from(i).forEach(t=>{const i=new Image;i.onload=()=>{const n=document.createElement("canvas");n.width=+t.getAttribute("width");n.height=+t.getAttribute("height");const r=n.getContext("2d"),a=i.width/i.height;a<n.width/n.height?r.drawImage(i,0,0,i.width,i.height,.5*(n.width-a*n.height),0,a*n.height,n.height):r.drawImage(i,0,0,i.width,i.height,0,.5*(n.height-n.width/a),n.width,n.width/a);t.setAttribute("href",n.toDataURL());i.remove();s.splice(s.indexOf(t),1);0==s.length&&e()};i.src=t.getAttribute("href")})}static getDataUri2(t,e,i){var s,n,r,a,h,l,o,c=document.createElement("div"),_=ExportHelper.cloneWithComputedStyles(t);let d=!1;if("svg"==t.tagName){n=(s=getElementRect(t.parentNode||t)).width||0;r=s.height||0;0==n&&(d=!0);a=t.viewBox.baseVal&&0!==t.viewBox.baseVal.width?t.viewBox.baseVal.width:n;h=t.viewBox.baseVal&&0!==t.viewBox.baseVal.height?t.viewBox.baseVal.height:r}else{n=(l=t.getBBox()).x+l.width;r=l.y+l.height;_.setAttribute("transform",_.getAttribute("transform").replace(/translate\(.*?\)/,""));a=n;h=r;(o=document.createElementNS("http://www.w3.org/2000/svg","svg")).appendChild(_);_=o}if(d){const t=e._renderHidden(),i=e._getHostComputedStyle();let s=0,l=0;if(i){s=e._parsePx(i.width);l=e._parsePx(i.height)}0==s&&(s=FlexChartBase._WIDTH);0==l&&(l=FlexChartBase._HEIGHT);a=n=s;h=r=l;_=ExportHelper.cloneWithComputedStyles(t)}ExportHelper.removeAccessibilityOverlays(_);_.setAttribute("version","1.1");_.setAttributeNS(ExportHelper.xmlns,"xmlns","http://www.w3.org/2000/svg");_.setAttributeNS(ExportHelper.xmlns,"xmlns:xlink","http://www.w3.org/1999/xlink");_.setAttribute("width",n.toString());_.setAttribute("height",r.toString());_.setAttribute("viewBox",`0 0 ${a} ${h}`);c.appendChild(_);const u=e._currentRenderEngine.canvas;if(u){const t=document.createElementNS("http://www.w3.org/2000/svg","image");t.setAttribute("width",u.width);t.setAttribute("height",u.height);t.setAttribute("href",u.toDataURL());_.insertBefore(t,_.firstChild);e.invalidate()}ExportHelper.convertImagesToDataUrl(_,()=>{const t="data:image/svg+xml;base64,"+window.btoa(window.unescape(encodeURIComponent(ExportHelper.doctype+c.innerHTML)));i.call(null,t)})}static removeAccessibilityOverlays(t){if(!t||!t.querySelectorAll)return;const e=`.${FlexChartClsNames.hostElement}-focus, .${FlexChartClsNames.hostElement}-focus-layer`,i=t.querySelectorAll(e);for(let t=0;t<i.length;t++)removeChild(i[t])}static computeAttributes(t,e,i){const s=getComputedStyle(t);i.forEach(t=>{const i=s.getPropertyValue(t);i&&i.length>0&&e.setAttribute(t,i)})}static cloneWithComputedStyles(t){const e=t.cloneNode();Array.from(t.childNodes).forEach(t=>{const i=ExportHelper.cloneWithComputedStyles(t);1===t.nodeType&&("text"===t.nodeName?ExportHelper.computeAttributes(t,i,ExportHelper.textAttrs):"line"===t.nodeName&&ExportHelper.computeAttributes(t,i,ExportHelper.lineAttrs));e.appendChild(i)});return e}static getStyles(t){var e="",i=document.styleSheets;if(null==i||0===i.length)return null;[].forEach.call(i,i=>{var s;try{if(null==i.cssRules||0===i.cssRules.length)return!0}catch(t){if("SecurityError"==t.name){console.log("SecurityError. Can't read: "+i.href);return!0}}s=i.cssRules;[].forEach.call(s,i=>{var s,n=i.style;if(null==n)return!0;let r=i.selectorText;if(isIE()&&r){const t=r.match(/\[(.*?)\]/g);t&&t.forEach(t=>{r=r.replace(t,t.replace(":","\\:"))})}try{s=r=="."+FlexChartClsNames.hostElement||t.querySelector(r)}catch(t){console.warn(`Invalid CSS selector "${i.selectorText}"`,t)}s?e+=`${i.selectorText} { ${n.cssText} }\n`:i.cssText.match(/^@font-face/)&&(e+=i.cssText+"\n")})});const s=getComputedStyle(t),n=s?s.getPropertyValue("font"):null;n&&(e+=`.${FlexChartClsNames.hostElement}{font:${n}}\n`);return e}}ExportHelper.doctype='<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';ExportHelper.xmlns="http://www.w3.org/2000/xmlns/";ExportHelper.textAttrs=["font-family","font-size","font-style","font-weight","fill"];ExportHelper.lineAttrs=["stroke","stroke-width","stroke-dasharray"];export class ChartTooltip extends Tooltip{constructor(){super();this._content="<b>{seriesName}</b><br/>{x} {y}";this._threshold=15}get content(){return this._content}set content(t){t!=this._content&&(this._content=t)}_isContentCustomized(){return"function"==typeof this._content}get threshold(){return this._threshold}set threshold(t){t!=this._threshold&&(this._threshold=asNumber(t))}show(t,e,i){super.show(t,e,i);this._disablePointerEvents()}_showAccessibilityTooltip(t,e,i,s=!1){super._show(t,e,i,void 0,s,!1);this._disablePointerEvents()}_disablePointerEvents(){const t=ChartTooltip._eTip;t&&t.style&&(t.style.pointerEvents="none")}}export var ChartType;!function(t){t[t.Column=0]="Column";t[t.Bar=1]="Bar";t[t.Scatter=2]="Scatter";t[t.Line=3]="Line";t[t.LineSymbols=4]="LineSymbols";t[t.Area=5]="Area";t[t.Bubble=6]="Bubble";t[t.Candlestick=7]="Candlestick";t[t.HighLowOpenClose=8]="HighLowOpenClose";t[t.Spline=9]="Spline";t[t.SplineSymbols=10]="SplineSymbols";t[t.SplineArea=11]="SplineArea";t[t.Funnel=12]="Funnel";t[t.Step=13]="Step";t[t.StepSymbols=14]="StepSymbols";t[t.StepArea=15]="StepArea"}(ChartType||(ChartType={}));export var Stacking;!function(t){t[t.None=0]="None";t[t.Stacked=1]="Stacked";t[t.Stacked100pc=2]="Stacked100pc"}(Stacking||(Stacking={}));export class FlexChartCore extends FlexChartBase{constructor(t,e){super(t,null,!0);this._series=new ObservableArray;this._axes=new AxisCollection;this._pareas=new PlotAreaCollection;this._interpolateNulls=!1;this._legendToggle=!1;this._symbolSize=10;this._dataInfo=new _DataInfo;this.__barPlotter=null;this.__linePlotter=null;this.__areaPlotter=null;this.__bubblePlotter=null;this.__financePlotter=null;this.__funnelPlotter=null;this._plotters=[];this._rotated=!1;this._stacking=Stacking.None;this._xlabels=[];this._xvals=[];this._lblAreas=[];this._accessibilityVisualPoints={};this._colRowLens=[];this._selectedEls=[];this._markers=[];this._bindingSeparator=",";this.seriesVisibilityChanged=new Event;this.applyTemplate(`${ControlClsNames.hostElement} ${FlexChartClsNames.hostElement}`,null,null);this._series.collectionChanged.addHandler(()=>{var t=this._series;for(let e=0;e<t.length;e++){const i=tryCast(t[e],SeriesBase);if(!i)throw"chartSeries array must contain SeriesBase objects.";i._chart=this;if(i.axisX&&null==i.axisX._chart){i.axisX._chart=this;this.axes.push(i.axisX)}if(i.axisY&&null==i.axisY._chart){i.axisY._chart=this;this.axes.push(i.axisY)}}this.invalidate()});this._currentRenderEngine=new _SvgRenderEngine(this.hostElement);this._hitTester=new _HitTester(this);this._legend=new Legend(this);this._tooltip=new ChartTooltip;this._tooltip.showDelay=0;this._lbl=new DataLabel;this._lbl._chart=this;this._initAxes();this._axes.collectionChanged.addHandler(()=>{var t=this._axes;for(let e=0;e<t.length;e++){const i=tryCast(t[e],Axis);if(!i)throw"axes array must contain Axis objects.";i._chart=this}this.invalidate()});this._pareas.collectionChanged.addHandler(()=>{var t=this._pareas;for(let e=0;e<t.length;e++){const i=tryCast(t[e],PlotArea);if(!i)throw"plotAreas array must contain PlotArea objects.";i._chart=this}this.invalidate()});this._keywords=new _KeyWords;this.addEventListener(this.hostElement,"click",t=>{var e=this._tooltip;e.content&&this.isTouching&&this._updateTooltip(e,t)});this.addEventListener(this.hostElement,"mousemove",t=>{var e=this._tooltip;e.content&&!this.isTouching&&this._updateTooltip(e,t)});this.addEventListener(this.hostElement,"mouseleave",t=>{this._hideToolTip()});this.addEventListener(this.hostElement,"click",t=>{t._wjAccessibilityLegendClick||this._handleHostClick(t)});this.deferUpdate(()=>this.initialize(e))}initialize(t){if(t&&t.renderEngine){const t=asType(this._currentRenderEngine,_SvgRenderEngine,!0);t&&t.detach();this._currentRenderEngine=null}super.initialize(t)}_initAxes(){this._axisX=new Axis(Position.Bottom);this._axisY=new Axis(Position.Left);this._axisX.majorGrid=!1;this._axisX.name="axisX";this._axisY.majorGrid=!0;this._axisY.majorTickMarks=TickMark.None;this._axisY.name="axisY";this._axisX._chart=this;this._axisY._chart=this;this._axes.push(this._axisX);this._axes.push(this._axisY)}get series(){return this._series}get axes(){return this._axes}get axisX(){return this._axisX}set axisX(t){if(t!=this._axisX){this._axisX=asType(t,Axis);const e=this._axisX;this.beginUpdate();if(e){void 0===e.majorGrid&&(e.majorGrid=!1);void 0===e.name&&(e.name="axisX");e._axisType=AxisType.X;null!=e.position&&e.position!=Position.Left&&e.position!=Position.Right&&e.position!=Position.BottomLeft&&e.position!=Position.BottomRight&&e.position!=Position.TopLeft&&e.position!=Position.TopRight&&e.position!=Position.LeftTop&&e.position!=Position.LeftBottom&&e.position!=Position.RightTop&&e.position!=Position.RightBottom||(e.position=Position.Bottom);e._chart=this}this.endUpdate()}}get axisY(){return this._axisY}set axisY(t){if(t!=this._axisY){this._axisY=asType(t,Axis);const e=this._axisY;this.beginUpdate();if(e){void 0===e.majorGrid&&(e.majorGrid=!0);void 0===e.name&&(e.name="axisY");void 0===e.majorTickMarks&&(e.majorTickMarks=TickMark.None);e._axisType=AxisType.Y;null!=e.position&&e.position!=Position.Top&&e.position!=Position.Bottom&&e.position!=Position.BottomLeft&&e.position!=Position.BottomRight&&e.position!=Position.TopLeft&&e.position!=Position.TopRight&&e.position!=Position.LeftTop&&e.position!=Position.LeftBottom&&e.position!=Position.RightTop&&e.position!=Position.RightBottom||(e.position=Position.Left);e._chart=this}this.endUpdate()}}get plotAreas(){return this._pareas}get binding(){return this._binding}set binding(t){if(t!=this._binding){this._binding=asString(t,!0);this.invalidate()}}get bindingX(){return this._bindingX}set bindingX(t){if(t!=this._bindingX){this._bindingX=asString(t,!0);this._bindChart()}}get symbolSize(){return this._symbolSize}set symbolSize(t){if(t!=this._symbolSize){this._symbolSize=asNumber(t,!1,!0);this.invalidate()}}get interpolateNulls(){return this._interpolateNulls}set interpolateNulls(t){if(t!=this._interpolateNulls){this._interpolateNulls=asBoolean(t);this.invalidate()}}get legendToggle(){return this._legendToggle}set legendToggle(t){t!=this._legendToggle&&(this._legendToggle=asBoolean(t))}get tooltip(){return this._tooltip}get dataLabel(){return this._lbl}set dataLabel(t){if(t!=this._lbl){this._lbl=asType(t,DataLabel);this._lbl&&(this._lbl._chart=this)}}get selection(){return this._selection}set selection(t){if(t!=this._selection){this._selection=asType(t,SeriesBase,!0);this.invalidate()}}get renderEngine(){return this._currentRenderEngine}set renderEngine(t){if(t!=this._currentRenderEngine){const e=asType(this._currentRenderEngine,_SvgRenderEngine,!0);e&&e.detach();this._currentRenderEngine=t;const i=asType(this._currentRenderEngine,_SvgRenderEngine,!0);i&&i.attach(this.hostElement);this.refresh()}}onSeriesVisibilityChanged(t){this.seriesVisibilityChanged.raise(this,t)}hitTest(t,e){var i=this._toControl(t,e),s=new HitTestInfo(this,i),n=null;if(FlexChartCore._contains(this._rectHeader,i))s._chartElement=ChartElement.Header;else if(FlexChartCore._contains(this._rectFooter,i))s._chartElement=ChartElement.Footer;else if(FlexChartCore._contains(this._rectLegend,i)){s._chartElement=ChartElement.Legend;const t=i.clone();if(this.legend.scrollbar&&this._legendHost){const e=this._legendHost.querySelector(".wj-legend-scrollable");if(e){if(this.rightToLeft&&!this.legend.isVertical){const i=e.scrollWidth-e.clientWidth-1;t.x+=i+e.scrollLeft}else t.x+=e.scrollLeft;t.y+=e.scrollTop}}null!==(n=this.legend._hitTest(t))&&n>=0&&n<this.series.length&&s._setData(this.series[n])}else if(FlexChartCore._contains(this._rectChart,i)){const e=this._hitTestLabels(i);if(e){s._chartElement=ChartElement.DataLabel;s._dist=0;s._setDataPoint(e.tag)}else{const e=this._hitTester.hitTest(i);let n=null,r=null;for(let e=this.series.length-1;e>=0;e--)if(this.series[e].hitTest!==Series.prototype.hitTest){const i=this.series[e].hitTest(t);if(i){if(!n||i.distance<n.distance){n=i;r=e}if(0===i.distance)break}}if(e&&e.area)if(n&&n.distance<e.distance)s=n;else if(n&&n.distance==e.distance&&r>e.area.tag.seriesIndex)s=n;else{s._setDataPoint(e.area.tag);s._dist=e.distance}else n&&(s=n);let a=!1;this.axes.some(t=>{if(FlexChartCore._contains(t._axrect,i)){let e;if(t.axisType===AxisType.X){s._chartElement=ChartElement.AxisX;e=t._hitTest(i)}else{s._chartElement=ChartElement.AxisY;e=t._hitTest(i)}e?s._setName(e.label):s._setName("");a=!0;return!0}return!1});a||(FlexChartCore._contains(this._plotRect,i)?s._chartElement=ChartElement.PlotArea:FlexChartCore._contains(this._rectChart,i)&&(s._chartElement=ChartElement.ChartArea))}}else s._chartElement=ChartElement.None;return s}pointToData(t,e){isNumber(t)&&isNumber(e)&&(t=new Point(t,e));if(t instanceof MouseEvent){t=new Point(t.pageX,t.pageY);t=this._toControl(t)}else t=t.clone();t.x=this.axisX.convertBack(t.x);t.y=this.axisY.convertBack(t.y);return t}dataToPoint(t,e){isNumber(t)&&isNumber(e)&&(t=new Point(t,e));asType(t,Point);var i=t.clone();i.x=this.axisX.convert(i.x);i.y=this.axisY.convert(i.y);return i}dispose(){this._markers.forEach(t=>{t.remove()});this._markers=[];super.dispose()}_copy(t,e){if("series"==t){this.series.clear();const t=asArray(e);for(let e=0;e<t.length;e++){const i=this._createSeries();copy(i,t[e]);this.series.push(i)}return!0}return!1}_createSeries(){return new Series}_clearCachedValues(){for(let t=0;t<this._series.length;t++){const e=this._series[t];null==e.itemsSource&&e._clearValues()}}_performBind(){this._xDataType=null;this._xlabels.splice(0);this._xvals.splice(0);if(this._cv){const t=this._cv.items;if(t){const e=t.length,i=this.bindingX?new Binding(this.bindingX):null;for(let s=0;s<e;s++){const e=t[s];if(i){const t=i.getValue(e);if(isNumber(t)){this._xvals.push(asNumber(t));this._xDataType=DataType.Number}else if(isDate(t)){this._xvals.push(asDate(t).valueOf());this._xDataType=DataType.Date}this._xlabels.push(t)}}this._xvals.length==e?this._xlabels.splice(0):this._xvals.splice(0)}}}_hitTestSeries(t,e){var i=this._toControl(t),s=new HitTestInfo(this,i),n=this._hitTester.hitTestSeries(i,e);if(n&&n.area){s._setDataPoint(n.area.tag);s._chartElement=ChartElement.PlotArea;s._dist=n.distance}return s}_hitTestData(t){var e=this._toControl(t),i=new HitTestInfo(this,e),s=this._hitTester.hitTest(e,!0);if(s&&s.area){i._setDataPoint(s.area.tag);i._dist=s.distance}return i}_hitTestLabels(t){var e=null,i=this._lblAreas.length;for(let s=0;s<i;s++)if(this._lblAreas[s].contains(t)){e=this._lblAreas[s];break}return e}static _dist2(t,e){var i=t.x-e.x,s=t.y-e.y;return i*i+s*s}static _dist(t,e,i){return Math.sqrt(FlexChartCore._distToSegmentSquared(t,e,i))}static _distToSegmentSquared(t,e,i){var s=FlexChartCore._dist2(e,i);if(0==s)return FlexChartCore._dist2(t,e);var n=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/s;return n<0?FlexChartCore._dist2(t,e):n>1?FlexChartCore._dist2(t,i):FlexChartCore._dist2(t,new Point(e.x+n*(i.x-e.x),e.y+n*(i.y-e.y)))}_isRotated(){return this._getChartType()==ChartType.Bar?!this._rotated:this._rotated}_getChartType(){return null}_handleHostClick(t){var e=this._hitTestData(t);const i=this.focusMode?this._getAccessibilityFocusStateFromClick(t,e):null;if(this.selectionMode!=SelectionMode.None){let i=FlexChartCore._SELECTION_THRESHOLD;this.tooltip&&this.tooltip.threshold&&(i=this.tooltip.threshold);e.distance<=i&&e.series?this._select(e.series,e.pointIndex):this.selectionMode==SelectionMode.Series&&(e=this.hitTest(t)).chartElement==ChartElement.Legend&&e.series?this._select(e.series,null):this._select(null,null)}!0===this.legendToggle&&(e=this.hitTest(t)).chartElement==ChartElement.Legend&&e.series&&this._toggleLegendClickSeries(e.series,!0);this._updateAccessibilityFocusFromState(i)}_getAccessibilityFocusStateFromClick(t,e){let i=FlexChartCore._SELECTION_THRESHOLD;this.tooltip&&this.tooltip.threshold&&(i=this.tooltip.threshold);if(e&&e.distance<=i&&e.series&&null!=e.pointIndex){const t=this.series.indexOf(e.series);if(t>=0)return{region:"series",seriesIndex:t,pointIndex:e.pointIndex}}const s=this.hitTest(t);if(s.chartElement===ChartElement.Header&&this.header)return{region:"title"};if(s.chartElement===ChartElement.Legend){const t=this._getAccessibilityLegendFocusIndex(s.series,s.pointIndex);if(t>=0)return{region:"legend",legendIndex:t}}return s.chartElement===ChartElement.PlotArea||s.chartElement===ChartElement.ChartArea?{region:"chart"}:null}_getAccessibilityLegendFocusIndex(t,e){const i=this._accessibilityModel,s=i&&i.legendItems?i.legendItems:[],n=t?this.series.indexOf(t):-1;if(n<0)return-1;for(let t=0;t<s.length;t++){const i=s[t];if(i.seriesIndex===n&&(null==e||null==i.pointIndex||i.pointIndex===e))return t}return-1}_selectLegendClickSeries(t){t&&this.selectionMode!=SelectionMode.None&&(this.selectionMode==SelectionMode.Series?this._select(t,null):this._select(null,null))}_toggleLegendClickSeries(t,e){const i=this._toggleAccessibilityLegendSeries(t);i&&e&&this.focus();return i}_getAccessibleChartTypeName(){return _getAccessibleChartTypeName(ChartType,this._getChartType(),this._stacking)}_getAccessibilityPointCategory(t,e,i){const s=void 0!==i?i:t&&t.getValues(1),n=t&&t.getDataType(1);return s&&e<s.length?n===DataType.Date?new Date(s[e]):s[e]:this._xlabels&&this._xlabels.length&&e<this._xlabels.length?this._xlabels[e]:this._xvals&&this._xvals.length&&e<this._xvals.length?this._xDataType===DataType.Date?new Date(this._xvals[e]):this._xvals[e]:e}_createAccessibilityModel(){const t=super._createAccessibilityModel(),e=this.focusMode;let i="",s=!1;e?this._updateAccessibilityVisualPoints():this._accessibilityVisualPoints={};for(let n=0;n<this._getAccessibilitySeriesCount();n++){const r=this.series[n],a=r&&r.visibility;if(!r||a===SeriesVisibility.Hidden||a===SeriesVisibility.Legend)continue;const h=e?this._getAccessibleSeriesPoints(r):[];if(e&&!h)continue;const l={index:n,name:this._getAccessibleSeriesName(r,n),description:this._getAccessibleSeriesDescription(r),points:h||[]};t.series.push(l);const o=this._getAccessibleSeriesChartTypeName(r);i?o!==i&&(s=!0):i=o}i&&(t.type=s?_getAccessibleChartTypeName("comboChart"):i);e&&this._addAccessibilityLegendItems(t);return t}_getAccessibilitySeriesCount(){return this._getChartType()===ChartType.Funnel?Math.min(this.series.length,1):this.series.length}_getAccessibleSeriesName(t,e){return _toAccessibilityText(t.name||t.binding)||_getUnnamedAccessibilitySeriesName(e)}_getAccessibleSeriesChartTypeName(t){const e=t._getAccessibleChartTypeName();if(e)return e;const i=t instanceof Series?t.chartType:null;return null==i?this._getAccessibleChartTypeName():_getAccessibleChartTypeName(ChartType,i,this._stacking)}_getAccessibleSeriesDescription(t){const e=t&&t._getAccessibilitySeriesDescription;return e?_toAccessibilityText(e.call(t)):""}_getAccessibleSeriesPointDetails(t,e){const i=t&&t._getAccessibilityPointDetails;return i?_toAccessibilityText(i.call(t,e)):""}_getAccessibleSeriesPointDetailsIncludeValue(t,e){const i=t&&t._getAccessibilityPointDetailsIncludeValue;return!!i&&!!i.call(t,e)}_getAccessibleSeriesPoints(t){const e=t&&t._getAccessibilityPoints;if(e)return e.call(t,this)||[];const i=t&&t.getValues(0);if(!i)return null;const s=t.getValues(1),n=s||this._dataInfo&&this._dataInfo.getXVals(),r=this._getAccessibleSeriesValueDimensions(t,i,s),a=this.series.indexOf(t),h=[];for(let e=0;e<i.length;e++){if(!this._isAccessibleSeriesPoint(i,n,a,e))continue;const l=this._getAccessibleSeriesHitTestInfo(t,e),o=this._getAccessibleSeriesPointValue(l,i[e]),c=this._getAccessibleSeriesPointDetailsIncludeValue(t,e),_={index:e,category:this._getAccessibleSeriesPointCategory(t,e,s,l),details:this._getAccessibleSeriesPointDetails(t,e)};if(!c){_.value=o;_.values=this._getAccessibleSeriesPointValues(r,e,o)}h.push(_)}return h}_isAccessibleSeriesPoint(t,e,i,s){if(!this._isAccessibleSeriesPointValue(t[s]))return!1;if(e&&(s>=e.length||!this._isAccessibleSeriesPointValue(e[s])))return!1;const n=i>=0?this._accessibilityVisualPoints[this._getAccessibilityPointKey(i,s)]:null;return!n||n.focusable}_isAccessibleSeriesPointValue(t){return null!=t&&isNumberFinite(+t)}_getAccessibleSeriesPointCategory(t,e,i,s){const n=s&&s._xfmt;return null!=n&&""!==n?n:this._getAccessibilityPointCategory(t,e,i)}_getAccessibleSeriesPointValue(t,e){const i=t&&t._getValueFmt();return null!=i&&""!==i?i:e}_getAccessibleSeriesHitTestInfo(t,e){if(!t||null==e)return null;const i=new HitTestInfo(this,new Point,ChartElement.SeriesSymbol);i._setData(t,e);return i}_getAccessibleSeriesValueDimensions(t,e,i){const s=[e,i];for(let e=2;e<5;e++)s[e]=t.getValues(e);return s}_getAccessibleSeriesPointValues(t,e,i){if(!t)return null;const s=[];for(let n=0;n<t.length;n++){if(1===n)continue;const r=t[n];r&&e<r.length&&s.push(0===n?i:r[e])}return s.length>1?s:null}_addAccessibilityLegendItems(t){if(!this._isAccessibilityLegendVisible())return;let e=0;const i=this._legendReversed(),s=this.legend&&this.legend._areas;for(let n=0;n<this._getAccessibilitySeriesCount();n++){const r=this.series[n],a=r&&r.visibility;if(!r||!r.name||a===SeriesVisibility.Plot||a===SeriesVisibility.Hidden){e++;continue}const h=r.legendItemLength(),l=this._getAccessibleSeriesName(r,n);for(let a=0;a<h;a++){const o=e+(i?h-1-a:a),c=s&&s[o];s&&(!c||c.width<=0||c.height<=0)||t.legendItems.push({name:this._getAccessibleLegendItemName(r,l,a,h),seriesIndex:n,pointIndex:h>1?a:null,legendIndex:o})}e+=h}}_getAccessibleLegendItemName(t,e,i,s){if(s<=1)return e;const n=t._getAccessibilityLegendItemName||t._getName;return(n?_toAccessibilityText(n.call(t,i)):"")||_toAccessibilityText(this._getAccessibleSeriesPointCategory(t,i))||e}_activateAccessibilityLegendItem(t){const e=this._getAccessibilityLegendSeries(t);if(!e)return!1;this._selectLegendClickSeries(e);this._toggleLegendClickSeries(e,!1);this._dispatchAccessibilityLegendClick(t);return!0}_dispatchAccessibilityLegendClick(t){const e=this._getAccessibilityLegendClickPoint(t);if(!e)return!1;const i=document.createEvent("MouseEvents");i.initMouseEvent("click",!0,!0,window,0,e.x,e.y,e.x,e.y,!1,!1,!1,!1,0,null);i._wjAccessibilityLegendClick=!0;this.hostElement.dispatchEvent(i);return!0}_getAccessibilityLegendClickPoint(t){if(!t)return null;const e=this.legend,i=e&&e._areas,s=t.legendIndex,n=i&&null!=s?i[s]:null;if(!n)return null;const r=this.hostElement.getBoundingClientRect(),a=this._getAccessibilityLegendScrollOffset();return new Point(r.left+n.left-a.x+n.width/2,r.top+n.top-a.y+n.height/2)}_getAccessibilityLegendScrollOffset(){if(this.legend.scrollbar&&this._legendHost){const t=this._legendHost.querySelector(".wj-legend-scrollable");if(t){const e=this.rightToLeft&&!this.legend.isVertical?t.scrollWidth-t.clientWidth-1+t.scrollLeft:t.scrollLeft;return new Point(e,t.scrollTop)}}return new Point(0,0)}_getAccessibilityLegendItemState(t){const e=this._getAccessibilityLegendSeries(t);return this.legendToggle&&e&&(e.visibility===SeriesVisibility.Visible||e.visibility===SeriesVisibility.Legend)?e.visibility===SeriesVisibility.Visible:null}_getAccessibilityLegendSeries(t){return t&&null!=t.seriesIndex?this.series[t.seriesIndex]:null}_toggleAccessibilityLegendSeries(t){if(!this.legendToggle||!t)return!1;if(t.visibility===SeriesVisibility.Legend){t.visibility=SeriesVisibility.Visible;return!0}if(t.visibility===SeriesVisibility.Visible){t.visibility=SeriesVisibility.Legend;return!0}return!1}_getAccessibilityTooltipContent(t){if(t&&"series"===t.region){const e=this.series[t.seriesIndex],i=t.pointIndex;if(e&&null!=i){let t=this.tooltip.content;const s=e.tooltipContent;(s||""===s)&&(t=s);if(t){const s=new HitTestInfo(this,new Point);s._chartElement=ChartElement.SeriesSymbol;s._setData(e,i);return this._getLabelContent(s,t)}}}return super._getAccessibilityTooltipContent(t)}_isAccessibilityTooltipContentCustom(t){if(t&&"series"===t.region){const e=this.series[t.seriesIndex];if(e&&null!=e.tooltipContent)return!0}return super._isAccessibilityTooltipContentCustom(t)}_getAccessibilitySeriesPointShape(t,e){if(t>=this._getAccessibilitySeriesCount())return null;const i=this._accessibilityVisualPoints&&this._accessibilityVisualPoints[this._getAccessibilityPointKey(t,e)];return i&&i.shape?i.shape:this._getAccessibilitySeriesPointFallbackShape(t,e)||_getRectFocusShape(this._plotRect||this._rectChart)}_updateAccessibilityVisualPoints(){this._accessibilityVisualPoints={};const t=this._hitTester&&this._hitTester._map;if(t)for(const e in t){const i=t[e],s=this._getAccessibilityLineAreas(i);if(i)for(const t of i){const e=t&&t.tag;if(e&&null!=e.seriesIndex&&null!=e.pointIndex){const i=_getAreaShape(t);i&&(this._accessibilityVisualPoints[this._getAccessibilityPointKey(e.seriesIndex,e.pointIndex)]={shape:i,focusable:this._isAccessibilityAreaFocusable(t,s)})}}}}_getAccessibilityLineAreas(t){const e=[];if(t)for(const i of t){const t=tryCast(i,_LinesArea);t&&e.push(t)}return e}_isAccessibilityAreaFocusable(t,e){const i=tryCast(t,_CircleArea);if(!i||!e.length)return!0;for(const t of e){const e=t.distanceToPoint(i.center);if(isNumberFinite(+e)&&e<=i.radius)return!0}return!1}_getAccessibilityPointKey(t,e){return`${t}:${e}`}_getAccessibilitySeriesPointFallbackShape(t,e){const i=this.series[t],s=i&&i.getValues(0);if(!i||!s||null==e||e<0||e>=s.length)return null;let n=i.getValues(1);n||(n=this._dataInfo.getXVals());let r,a,h=n&&e<n.length?n[e]:e,l=s[e];if(!isNumberFinite(+h)||!isNumberFinite(+l))return null;if(this._isRotated()){r=i._getAxisX().convert(l);a=i._getAxisY().convert(h)}else{r=i._getAxisX().convert(h);a=i._getAxisY().convert(l)}return isNumberFinite(+r)&&isNumberFinite(+a)?{type:"circle",center:new Point(r,a),radius:5}:null}_prepareRender(){this._hitTester.clear()}_renderChart(t,e,i){var s=this._rectChart.clone(),n=new Size(s.width,s.height);e.width,e.height;this._selectedEls.length=0;var r=this._getPlotter(null);r.stacking=this._stacking;if(this._curPlotter!=r){this._curPlotter&&this._curPlotter.unload();this._curPlotter=r}r.load();var a=this._isRotated();this._dataInfo.analyse(this._series,a,r.stacking,this._xvals.length>0?this._xvals:null,this.axisX._getLogBase()>0,this.axisY._getLogBase()>0);var h=r.adjustLimits(this._dataInfo,e.clone());if(a){let t=this._dataInfo.getDataTypeX();t||(t=this._xDataType);this.axisX._updateActualLimits(this._dataInfo.getDataTypeY(),h.left,h.right);this.axisY._updateActualLimits(t,h.top,h.bottom,this._xlabels,this._xvals)}else{let t=this._dataInfo.getDataTypeX();t||(t=this._xDataType);this.axisX._updateActualLimits(t,h.left,h.right,this._xlabels,this._xvals);this.axisY._updateActualLimits(this._dataInfo.getDataTypeY(),h.top,h.bottom)}var l=this._getAxes();this._updateAuxAxes(l,a);this._layout(e,n,t);t.startGroup(FlexChartCore._CSS_PLOT_AREA);t.fill="transparent";t.stroke=null;if(this.plotAreas.length>0)for(let e=0;e<this.plotAreas.length;e++){this.plotAreas[e]._render(t)}else{const e=this._plotRect;t.drawRect(e.left,e.top,e.width,e.height)}t.endGroup();var o=this._series.length;this._clearPlotters();var c,_,d,u={};for(let t=0;t<o;t++){const e=this._series[t],i=e.visibility;if((i==SeriesVisibility.Visible||i==SeriesVisibility.Plot)&&e.getValues(0)){const t=e._getAxisY(),i=this._getPlotter(e);if(!t||t==this.axisY||i instanceof _BarPlotter)i.seriesCount++;else{const e=t._uniqueId;u[e]?u[e].count+=1:u[e]={count:1,index:0}}}}this.onRendering(new RenderEventArgs(t));if(this._getChartType()!==ChartType.Funnel)for(let e=0;e<l.length;e++){const s=l[e];c=s.axisType==AxisType.X?t.startGroup(FlexChartCore._CSS_AXIS_X,this._chartRectId):t.startGroup(FlexChartCore._CSS_AXIS_Y,this._chartRectId);s._hostElement=i?c:s._hostElement;s._render(t);t.endGroup()}t.startGroup(SeriesClsNames.group);this._plotrectId="plotRect"+(1e6*Math.random()).toFixed();t.addClipRect(this._plotRect,this._plotrectId);t.options=this._options&&this._options.spline?{spline:this._options.spline.approximation}:null;for(let e=0;e<o;e++){const s=this._series[e];s._pointIndexes=[];const n=this._getPlotter(s);s._plotter=n;const r=t.startGroup(s.cssClass,n.clipping?this._plotrectId:null);s._hostElement=i?r:s._hostElement;const a=s.visibility;let h=s.axisX,l=s.axisY;h||(h=this.axisX);l||(l=this.axisY);if(a==SeriesVisibility.Visible||a==SeriesVisibility.Plot){const e=u[l._uniqueId];if(!e||n instanceof _BarPlotter){_=n.seriesIndex;d=n.seriesCount;n.seriesIndex++;s.onRendering(t,_,d)||n.plotSeries(t,h,l,s,this,_,d)}else{_=e.index;d=e.count;e.index++;s.onRendering(t,_,d)||n.plotSeries(t,h,l,s,this,_,d)}s.onRendered(t)}t.endGroup()}t.endGroup();this._lblAreas=[];this.dataLabel.content&&this.dataLabel.position!=LabelPosition.None&&this._renderLabels(t);this._highlightCurrent();this.onRendered(new RenderEventArgs(t))}_getDesiredLegendSize(t,e,i,s){const n=new Size,r=this.series,a=r.length;this.legend.scrollbar;let h=0,l=0;this._colRowLens=[];for(let o=0;o<a;o++){let c=o;this._legendReversed()&&(c=a-o-1);const _=tryCast(r[c],SeriesBase),d=_.visibility;if(!_.name||d==SeriesVisibility.Hidden||d==SeriesVisibility.Plot)continue;const u=_.legendItemLength();for(let r=0;r<u;r++){const a=_.measureLegendItem(t,r);if(e){if(h+a.height>s&&!this.legend.scrollbar){n.height=s;this._colRowLens.push(l);l=0;h=0}l<a.width&&(l=a.width);h+=a.height}else{if(l+a.width>i&&!this.legend.scrollbar){n.width=i;this._colRowLens.push(h);h=0;l=0}h<a.height&&(h=a.height);l+=a.width}}}if(e){n.height<h&&(n.height=h);this._colRowLens.push(l);n.width=this._colRowLens.reduce((t,e)=>t+e,0)}else{n.width<l&&(n.width=l);this._colRowLens.push(h);n.height=this._colRowLens.reduce((t,e)=>t+e,0)}return n}_renderLegend(t,e,i,s,n,r){var a,h=this.series,l=h.length,o=e.clone(),c=0;if(this._legendReversed()){for(let _=l-1;_>=0;_--){a=tryCast(h[_],SeriesBase);c=this._renderLegendElements(t,a,e,o,i,s,n,r,c)}i.reverse()}else for(let _=0;_<l;_++){a=tryCast(h[_],SeriesBase);c=this._renderLegendElements(t,a,e,o,i,s,n,r,c)}}_legendReversed(){if(null==this._legend.reverse||null===this._legend.reverse){let t=!1;const e=this._getChartType();(e===ChartType.Bar||e===ChartType.Column&&this._rotated)&&(this._stacking!==Stacking.None||this.axisY.reversed||(t=!0));return t}return this._legend.reverse}_renderLegendElements(t,e,i,s,n,r,a,h,l){var o=new Rect(i.x,i.y,a,h),c=l;if(!e)return c;var _=e.visibility;if(!e.name||_==SeriesVisibility.Hidden||_==SeriesVisibility.Plot){e._legendElement=null;n.push(null);return c}var d=e.legendItemLength(),u=t.startGroup(e.cssClass);if(_==SeriesVisibility.Legend){u.setAttribute("opacity","0.5");e._legendElement=u}else _==SeriesVisibility.Visible?e._legendElement=u:e._legendElement=null;for(let a=0;a<d;a++){const h=e.measureLegendItem(t,a);if(r){if(s.y+h.height>o.bottom+1&&!this.legend.scrollbar){s.x+=this._colRowLens[c];c++;s.y=i.y}}else if(s.x+h.width>o.right+1&&!this.legend.scrollbar){s.y+=this._colRowLens[c];c++;s.x=i.x}const l=new Rect(s.x,s.y,h.width,h.height);_!=SeriesVisibility.Legend&&_!=SeriesVisibility.Visible||e.drawLegendItem(t,l,a);n.push(l);r?s.y+=h.height:s.x+=h.width}t.endGroup();return c}_renderLabels(t){var e=this.series,i=e.length;t.stroke="null";t.fill="transparent";t.strokeWidth=1;var s=FlexChartCore._CSS_DATA_LABELS;t.startGroup(s);for(let s=0;s<i;s++){const i=e[s],n=this._hitTester._map[s];n&&i._renderLabels(t,n,this,this._lblAreas)}t.endGroup()}_getAxes(){var t=[this.axisX,this.axisY],e=this.series.length;for(let i=0;i<e;i++){const e=this.series[i],s=e.axisX;s&&-1===t.indexOf(s)&&t.push(s);const n=e.axisY;n&&-1===t.indexOf(n)&&t.push(n)}return t}_clearPlotters(){var t=this._plotters.length;for(let e=0;e<t;e++)this._plotters[e].clear()}_initPlotter(t){t.chart=this;t.dataInfo=this._dataInfo;t.hitTester=this._hitTester;this._plotters.push(t)}get _barPlotter(){if(null===this.__barPlotter){this.__barPlotter=new _BarPlotter;this._initPlotter(this.__barPlotter)}return this.__barPlotter}get _linePlotter(){if(null===this.__linePlotter){this.__linePlotter=new _LinePlotter;this._initPlotter(this.__linePlotter)}return this.__linePlotter}get _areaPlotter(){if(null===this.__areaPlotter){this.__areaPlotter=new _AreaPlotter;this._initPlotter(this.__areaPlotter)}return this.__areaPlotter}get _bubblePlotter(){if(null===this.__bubblePlotter){this.__bubblePlotter=new _BubblePlotter;this._initPlotter(this.__bubblePlotter)}return this.__bubblePlotter}get _financePlotter(){if(null===this.__financePlotter){this.__financePlotter=new _FinancePlotter;this._initPlotter(this.__financePlotter)}return this.__financePlotter}get _funnelPlotter(){if(null===this.__funnelPlotter){this.__funnelPlotter=new _FunnelPlotter;this._initPlotter(this.__funnelPlotter)}return this.__funnelPlotter}_getPlotter(t){var e,i=this._getChartType(),s=!1;if(t){const e=t._getChartType();if(null!=e&&e!=i){i=e;s=!0}}switch(i){case ChartType.Column:this._barPlotter.isVolume=!1;this._barPlotter.width=.7;e=this._barPlotter;break;case ChartType.Bar:this._barPlotter.rotated=!this._rotated;this._barPlotter.isVolume=!1;this._barPlotter.width=.7;e=this._barPlotter;break;case ChartType.Line:this._linePlotter.hasSymbols=!1;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.Scatter:this._linePlotter.hasSymbols=!0;this._linePlotter.hasLines=!1;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.LineSymbols:this._linePlotter.hasSymbols=!0;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.Area:this._areaPlotter.isSpline=!1;this._areaPlotter.isStep=!1;e=this._areaPlotter;break;case ChartType.Bubble:e=this._bubblePlotter;break;case ChartType.Candlestick:{const t=this._financePlotter;t.isCandle=!0;t.isEqui=!1;t.isArms=!1;t.isVolume=!1;e=t;break}case ChartType.HighLowOpenClose:{const t=this._financePlotter;t.isCandle=!1;t.isEqui=!1;t.isArms=!1;t.isVolume=!1;e=t;break}case ChartType.Spline:this._linePlotter.hasSymbols=!1;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!0;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.SplineSymbols:this._linePlotter.hasSymbols=!0;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!0;this._linePlotter.isStep=!1;e=this._linePlotter;break;case ChartType.SplineArea:this._areaPlotter.isSpline=!0;this._areaPlotter.isStep=!1;e=this._areaPlotter;break;case ChartType.Funnel:e=this._funnelPlotter;break;case ChartType.Step:this._linePlotter.hasSymbols=!1;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!0;e=this._linePlotter;break;case ChartType.StepSymbols:this._linePlotter.hasSymbols=!0;this._linePlotter.hasLines=!0;this._linePlotter.isSpline=!1;this._linePlotter.isStep=!0;e=this._linePlotter;break;case ChartType.StepArea:this._areaPlotter.isSpline=!1;this._areaPlotter.isStep=!0;e=this._areaPlotter;break;default:throw"Invalid chart type."}e.rotated=this._rotated;i==ChartType.Bar&&(e.rotated=!e.rotated);s&&(e.rotated=this._isRotated());return e}_layout(t,e,i){this.plotAreas.length>0?this._layoutMultiple(t,e,i):this._layoutSingle(t,e,i)}_layoutSingle(t,e,i){var s=t.width,n=t.height,r=new Size(s,.75*n),a=new Size(n,.75*s),h=0,l=0,o=s,c=n,_=0,d=0,u=s,g=n;if(this.dataLabel.position===LabelPosition.Top?this.dataLabel.content:null){l=i.measureString(this.dataLabel.content,DataLabelClsNames.label).height}var p=this._getAxes(),f=this.axisY._getHeight(i,n);for(let t=0;t<p.length;t++){const e=p[t],m=e.origin,x=e._getPosition();if(e.axisType==AxisType.X){let t=e._getHeight(i,Math.max(10,s-f));t>r.height&&(t=r.height);e._desiredSize=new Size(r.width,t);e._hasOrigin=isNumber(m)&&m>this.axisY._getMinNum()&&m<this.axisY._getMaxNum();const n=e._hasOrigin,a=Math.min(.25*s,e._annoSize.width);if(x==Position.Bottom){h=Math.max(h,.5*a);o=Math.min(o,s-.5*a);if(n){const e=this._convertY(m,d,g);g-=Math.max(0,e+t-g)}else g-=t}else if(x==Position.Top){h=Math.max(h,.5*a);o=Math.min(o,s-.5*a);if(n){const e=this._convertY(m,d,g);d+=Math.max(0,d-(e-t))}else d+=t}}else if(e.axisType==AxisType.Y){let t=e===this.axisX?f:e._getHeight(i,n);t>a.height&&(t=a.height);e._desiredSize=new Size(a.width,t);e._hasOrigin=isNumber(m)&&m>this.axisX._getMinNum()&&m<this.axisX._getMaxNum();const s=e._hasOrigin;if(x==Position.Left){if(e._actualAngle<0)c=Math.min(c,n-e._annoSize.height);else if(e._actualAngle>0)l=Math.max(l,e._annoSize.height);else{l=Math.max(l,e._annoSize.height);c=Math.min(c,n-e._annoSize.height)}if(s){const e=this._convertX(m,_,u);_+=Math.max(0,_-(e-t))}else _+=t}else if(x==Position.Right){if(e._actualAngle>0)c=Math.min(c,n-e._annoSize.height);else if(e._actualAngle<0)l=Math.max(l,e._annoSize.height);else{l=Math.max(l,e._annoSize.height);c=Math.min(c,n-e._annoSize.height)}if(s){const e=this._convertX(m,_,u);u-=Math.max(0,e+t-u)}else u-=t}}}var m,x,b=this._parseMargin(this.plotMargin);h=_=isNumberNaN(+b.left)?Math.max(h,_)+t.left:b.left;o=u=isNumberNaN(+b.right)?Math.min(o,u)+t.left:e.width-b.right;l=d=isNumberNaN(+b.top)?Math.max(l,d)+t.top:b.top;c=g=isNumberNaN(+b.bottom)?Math.min(c,g)+t.top:e.height-b.bottom;s=Math.max(1,o-h);n=Math.max(1,c-l);this._plotRect=new Rect(h,l,s,n);c<=l&&(g=d+1);i.stroke=null;for(let t=0;t<p.length;t++){const e=p[t],i=e.origin,r=e._getPosition();if(e.axisType==AxisType.X){if(e._hasOrigin){const t=this._convertY(i,this._plotRect.top,this._plotRect.bottom);if(r==Position.Bottom){m=new Rect(h,t,s,e._desiredSize.height);g+=Math.max(0,m.bottom-this._plotRect.bottom)}else if(r==Position.Top){m=new Rect(h,t-e._desiredSize.height,s,e._desiredSize.height);d-=Math.max(0,this._plotRect.top-m.top)}else m=new Rect(h,t,s,1)}else if(r==Position.Bottom){m=new Rect(h,g,s,e._desiredSize.height);g+=e._desiredSize.height}else if(r==Position.Top){m=new Rect(h,d-e._desiredSize.height,s,e._desiredSize.height);d-=e._desiredSize.height}else m=new Rect(h,d,s,1);e._layout(m,this._plotRect)}else if(e.axisType==AxisType.Y){if(e._hasOrigin){const t=this._convertX(i,this._plotRect.left,this._plotRect.right);if(r==Position.Left){x=new Rect(t-e._desiredSize.height,l,n,e._desiredSize.height);_-=e._desiredSize.height}else if(r==Position.Right){x=new Rect(t,l,n,e._desiredSize.height);u+=e._desiredSize.height}else x=new Rect(t,l,n,1)}else if(r==Position.Left){x=new Rect(_-e._desiredSize.height,l,n,e._desiredSize.height);_-=e._desiredSize.height}else if(r==Position.Right){x=new Rect(u,l,n,e._desiredSize.height);u+=e._desiredSize.height}else x=new Rect(_,l,n,1);e._layout(x,this._plotRect)}}}_layoutMultiple(t,e,i){var s=t.width,n=t.height,r=[],a=[],h=this._getAxes(),l=h.length;for(let t=0;t<l;t++){const e=h[t];e._plotrect=null;if(e.axisType==AxisType.X){const t=e.plotArea?e.plotArea.column:0;for(;r.length<=t;)r.push(new _AreaDef);r[t].axes.push(e)}else if(e.axisType==AxisType.Y){const t=e.plotArea?e.plotArea.row:0;for(;a.length<=t;)a.push(new _AreaDef);a[t].axes.push(e)}}var o=r.length,c=a.length,_=new Size(s,.3*n),d=new Size(n,.3*s),u=0,g=0,p=s,f=n;for(let t=0;t<o;t++){const e=r[t];e.right=s;e.bottom=n;for(let r=0;r<e.axes.length;r++){const a=e.axes[r];let h=a._getHeight(i,a.axisType==AxisType.X?s:n);h>_.height&&(h=_.height);const l=new Size(_.width,h);a._desiredSize=l;0==t&&(e.left=Math.max(e.left,.5*a._annoSize.width));t==o-1&&(e.right=Math.min(e.right,s-.5*a._annoSize.width));const c=a._getPosition();c==Position.Bottom?e.bottom-=l.height:c==Position.Top&&(e.top+=l.height)}}for(let t=0;t<c;t++){const e=a[t];e.right=s;e.bottom=n;for(let r=0;r<e.axes.length;r++){const a=e.axes[r],h=new Size(d.width,a._getHeight(i,a.axisType==AxisType.X?s:n));h.height>d.height&&(h.height=d.height);a._desiredSize=h;0==t&&(e.top=Math.max(e.top,.5*a._annoSize.width));t==c-1&&(e.bottom=Math.min(e.bottom,n-.5*a._annoSize.width));const l=a._getPosition();l==Position.Left?e.left+=h.height:l==Position.Right&&(e.right-=h.height)}}var m=0,x=0,b=s,y=n;for(let t=0;t<o;t++){const e=r[t];m=Math.max(m,e.left);x=Math.max(x,e.top);b=Math.min(b,e.right);y=Math.min(y,e.bottom)}for(let t=0;t<c;t++){const e=a[t];m=Math.max(m,e.left);x=Math.max(x,e.top);b=Math.min(b,e.right);y=Math.min(y,e.bottom)}m=u=Math.max(u,m);b=p=Math.min(p,b);x=g=Math.max(g,x);y=f=Math.min(f,y);this._plotRect=new Rect(u,g,p-u,f-g);var S,v=this._plotRect.clone(),w=u,C=this.plotAreas._calculateWidths(this._plotRect.width,o);for(let t=0;t<o;t++){y=f;x=g;const e=r[t],i=C[t];for(let t=0;t<e.axes.length;t++){const s=e.axes[t],n=s._getPosition(),r=new Rect(w,v.top,i,v.height);if(n==Position.Bottom){S=new Rect(w,y,i,s._desiredSize.height);y+=s._desiredSize.height}else if(n==Position.Top){S=new Rect(w,x-s._desiredSize.height,i,s._desiredSize.height);x-=s._desiredSize.height}s._layout(S,r)}for(let e=0;e<this.plotAreas.length;e++){const s=this.plotAreas[e];s.column==t&&s._setPlotX(w,i)}w+=i}var A,T=g,M=this.plotAreas._calculateHeights(this._plotRect.height,c);for(let t=0;t<c;t++){m=u;b=p;const e=a[t],i=M[t];for(let t=0;t<e.axes.length;t++){const s=e.axes[t],n=s._getPosition(),r=new Rect(v.left,T,v.width,i);if(s._plotrect){r.left=s._plotrect.left;r.width=s._plotrect.width}else C&&C.length>0&&(r.width=C[0]);if(n==Position.Left){A=new Rect(m-s._desiredSize.height,T,i,s._desiredSize.height);m-=s._desiredSize.height}else if(n==Position.Right){A=new Rect(b,T,i,s._desiredSize.height);b+=s._desiredSize.height}s._layout(A,r)}for(let e=0;e<this.plotAreas.length;e++){const s=this.plotAreas[e];s.row==t&&s._setPlotY(T,i)}T+=i}}_convertX(t,e,i){var s=this.axisX;return s.reversed?i-(i-e)*(t-s._getMinNum())/(s._getMaxNum()-s._getMinNum()):e+(i-e)*(t-s._getMinNum())/(s._getMaxNum()-s._getMinNum())}_convertY(t,e,i){var s=this.axisY;return s.reversed?e+(i-e)*(t-s._getMinNum())/(s._getMaxNum()-s._getMinNum()):i-(i-e)*(t-s._getMinNum())/(s._getMaxNum()-s._getMinNum())}_getLabelContent(t,e){return t.chartElement!==ChartElement.AxisX&&t.chartElement!==ChartElement.AxisY||!t.name?isString(e)?this._keywords.replace(e,t):isFunction(e)?e(t):null:t.name}_select(t,e){const i=this.selectionMode;var s=!1;(t!=this._selection||i==SelectionMode.Point&&e!=this._selectionIndex)&&(s=!0);this._selection&&this._highlight(this._selection,!1,this._selectionIndex);this._selection=t;this._selectionIndex=e;this._selection&&this._highlight(this._selection,!0,this._selectionIndex);if(i==SelectionMode.Point){const i=t?t.collectionView:this._cv;if(i){this._notifyCurrentChanged=!1;i.moveCurrentToPosition(t?e:-1);this._notifyCurrentChanged=!0}}s&&this.onSelectionChanged()}_highlightCurrent(){if(this.selectionMode!=SelectionMode.None){const t=this._selection;let e=-1;if(t){let i=t.collectionView;i||(i=this._cv);i&&(e=i.currentPosition);this._highlight(t,!0,e)}}}_highlight(t,e,i){t=asType(t,SeriesBase,!0);if(this.selectionMode==SelectionMode.Series){const i=this.series.indexOf(t),s=t.hostElement;e?s.parentNode.appendChild(s):s.parentNode.insertBefore(s,s.parentNode.childNodes.item(i));const n=this._find(s,["rect","ellipse","polyline","polygon","line","path"]);this._highlightItems(n,FlexChartCore._CSS_SELECTION,e);t.legendElement&&this._highlightItems(this._find(t.legendElement,["rect","ellipse","line"]),FlexChartCore._CSS_SELECTION,e)}else if(this.selectionMode==SelectionMode.Point){const s=this.series.indexOf(t),n=t.hostElement;if(e){n.parentNode.appendChild(n);const s=t.getPlotElement(i);if(s)if(s instanceof SVGElement){if("g"!=s.nodeName){this._highlightItems([s],FlexChartCore._CSS_SELECTION,e);this._selectedEls.push(s)}const t=this._find(s,["line","rect","ellipse","path","polygon"]);if(t.length>0){this._highlightItems(t,FlexChartCore._CSS_SELECTION,e);for(let e=0;e<t.length;e++)this._selectedEls.push(t[e])}}else if(Array.isArray(s)){this._highlightItems(s,FlexChartCore._CSS_SELECTION,e);for(let t=0;t<s.length;t++)this._selectedEls.push(s[t])}}else{n.parentNode.insertBefore(n,n.parentNode.childNodes.item(s));if(this._selectedEls.length>0){this._highlightItems(this._selectedEls,FlexChartCore._CSS_SELECTION,e);this._selectedEls.length=0}}}}_updateTooltip(t,e){const i=this.hitTest(e);let s;if(i.distance<=t.threshold){let e=t.content;if(i.series){const t=i.series.tooltipContent;(t||""===t)&&(e=t)}s=this._getLabelContent(i,e)}this._hideToolTip();s&&this._showToolTip(s,new Rect(e.clientX,e.clientY,5,5))}_updateAuxAxes(t,e){let i,s;for(let n=2;n<t.length;n++){const r=t[n];r._chart=this;const a=[];for(let t=0;t<this.series.length;t++){const e=this.series[t];e.axisX!=r&&e.axisY!=r||a.push(e)}for(let t=0;t<a.length;t++){const n=a[t].getDataRect()||a[t]._getDataRect();if(n)if(r.axisType==AxisType.X&&!e||r.axisType==AxisType.Y&&e){(void 0===i||n.left<i)&&(i=n.left);(void 0===s||n.right>s)&&(s=n.right)}else{(void 0===i||n.top<i)&&(i=n.top);(void 0===s||n.bottom>s)&&(s=n.bottom)}}let h=a[0].getDataType(0);null==h&&(h=DataType.Number);t[n]._updateActualLimits(h,i,s)}}}FlexChartCore._CSS_AXIS_X=AxisClsNames.axisX;FlexChartCore._CSS_AXIS_Y=AxisClsNames.axisY;FlexChartCore._CSS_LINE=AxisClsNames.line;FlexChartCore._CSS_GRIDLINE=AxisClsNames.gridline;FlexChartCore._CSS_TICK=AxisClsNames.tick;FlexChartCore._CSS_GRIDLINE_MINOR=AxisClsNames.gridlineMinor;FlexChartCore._CSS_TICK_MINOR=AxisClsNames.tickMinor;FlexChartCore._CSS_DATA_LABELS=DataLabelClsNames.labels;class _AreaDef{constructor(){this._axes=[];this.left=0;this.right=0;this.top=0;this.bottom=0}get axes(){return this._axes}}export class _DataInfo{constructor(){this.stackAbs={};this._xvals=null}analyse(t,e,i,s,n,r){this.minY=NaN;this.maxY=NaN;this.minX=NaN;this.maxX=NaN;this.minXp=NaN;this.minYp=NaN;this.dx=0;var a,h={},l={},o={};this.dataTypeX=null;this.dataTypeY=null;this._xvals=s;if(null!=s){const t=s.length;for(let e=0;e<t;e++){const t=s[e];(isNumberNaN(+this.minX)||this.minX>t)&&(this.minX=t);(isNumberNaN(+this.maxX)||this.maxX<t)&&(this.maxX=t);t>0&&(isNumberNaN(+this.minXp)||this.minXp>t)&&(this.minXp=t);if(e>0){const i=Math.abs(t-s[e-1]);!isNumberNaN(+i)&&(i<this.dx||0==this.dx)&&(this.dx=i)}}}for(let n=0;n<t.length;n++){const r=t[n],c=r._getChartType(),_=void 0!==r.chartType,d=r.visibility;if(d==SeriesVisibility.Hidden||d==SeriesVisibility.Legend)continue;const u=r.getDataRect();if(u){if(!isNumberNaN(+this.minX)&&this.minX<u.left){a=u.right;u.left=this.minX;u.width=a-this.minX}!isNumberNaN(+this.maxX)&&this.maxX>u.right&&(u.width=this.maxX-u.left);if(!r._isCustomAxisY()){if(!isNumberNaN(+this.minY)&&this.minY<u.top){a=u.bottom;u.top=this.minY;u.height=a-this.minY}!isNumberNaN(+this.maxY)&&this.maxY>u.bottom&&(u.height=this.maxY-u.top)}}let g=null;e?r._isCustomAxisY()||(g=r.getValues(1)):r._isCustomAxisX()||(g=r.getValues(1));if(g){this.dataTypeX||(this.dataTypeX=r.getDataType(1));for(let t=0;t<g.length;t++){const e=g[t];if(isNumberFinite(+e)){(isNumberNaN(+this.minX)||this.minX>e)&&(this.minX=e);(isNumberNaN(+this.maxX)||this.maxX<e)&&(this.maxX=e);if(t>0&&(!c||c==ChartType.Column||c==ChartType.Bar)){const i=Math.abs(e-g[t-1]);!isNumberNaN(+i)&&i>0&&(i<this.dx||0==this.dx)&&(this.dx=i)}}}}let p=null,f=!1;if(e){f=r._isCustomAxisX();p=r.getValues(0)}else{f=r._isCustomAxisY();p=r.getValues(0)}if(p){this.dataTypeY||f||(this.dataTypeY=r.getDataType(0));isNumberNaN(+this.minX)?this.minX=0:g||s||(this.minX=Math.min(this.minX,0));isNumberNaN(+this.maxX)?this.maxX=p.length-1:g||s||(this.maxX=Math.max(this.maxX,p.length-1));if(!f){const t=i==Stacking.None||_;for(let e=0;e<p.length;e++){const i=p[e],n=g?asNumber(g[e],!0):s?asNumber(s[e],!0):e;isArray(i)?i.forEach(e=>{this._parseYVal(e,n,t,o,h,l)}):this._parseYVal(i,n,t,o,h,l)}}}const m=r.getDataRect(new Rect(this.minX,this.minY,this.maxX-this.minX,this.maxY-this.minY),u);if(m){this.minX=m.left;this.maxX=m.right;if(!f){this.minY=m.top;this.maxY=m.bottom}}}if(i==Stacking.Stacked){for(const t in h)h[t]>this.maxY&&(this.maxY=h[t]);for(const t in l)l[t]<this.minY&&(this.minY=l[t])}else if(i==Stacking.Stacked100pc){this.minY=0;this.maxY=0;for(const t in o){const e=o[t];if(isNumberFinite(+e)&&0!=e){let i=h[t],s=l[t];if(isNumberFinite(+i)){i=Math.max(i/e,this.maxY);i>this.maxY&&(this.maxY=i)}if(isNumberFinite(+s)){s=Math.min(s/e,this.minY);s<this.minY&&(this.minY=s)}}}if(this.minY==this.maxY){this.minY=0;this.maxY=1}}this.stackAbs=o;n&&(e?this.minY=isNumberNaN(+this.minYp)?1:this.minYp:this.minX=isNumberNaN(+this.minXp)?1:this.minXp);r&&(e?this.minX=isNumberNaN(+this.minXp)?1:this.minXp:this.minY=isNumberNaN(+this.minYp)?1:this.minYp)}_parseYVal(t,e,i,s,n,r){if(isNumberFinite(+t)){null!=t&&(isNumberNaN(+this.minY)||this.minY>t)&&(this.minY=t);null!=t&&(isNumberNaN(+this.maxY)||this.maxY<t)&&(this.maxY=t);t>0&&(isNumberNaN(+this.minYp)||this.minYp>t)&&(this.minYp=t);if(!i){t>0?isNumberNaN(+n[e])?n[e]=t:n[e]+=t:isNumberNaN(+r[e])?r[e]=t:r[e]+=t;isNumberNaN(+s[e])?s[e]=Math.abs(t):s[e]+=Math.abs(t)}}}getMinY(){return this.minY}getMaxY(){return this.maxY}getMinX(){return this.minX}getMaxX(){return this.maxX}getMinXp(){return this.minXp}getMinYp(){return this.minYp}getDeltaX(){return this.dx}getDataTypeX(){return this.dataTypeX}getDataTypeY(){return this.dataTypeY}getStackedAbsSum(t){var e=this.stackAbs[t];return isNumberFinite(+e)?e:0}getXVals(){return this._xvals}static isValid(...t){const e=t.length;for(let i=0;i<e;i++)if(!isNumberFinite(+t[i]))return!1;return!0}}export class FlexChart extends FlexChartCore{constructor(t,e){super(t,null);this._chartType=ChartType.Column;this.initialize(e)}_getChartType(){return this._chartType}get chartType(){return this._chartType}set chartType(t){if((t=asEnum(t,ChartType))!=this._chartType){this._chartType=t;this.invalidate()}}get rotated(){return this._rotated}set rotated(t){if(t!=this._rotated){this._rotated=asBoolean(t);this.invalidate()}}get stacking(){return this._stacking}set stacking(t){if((t=asEnum(t,Stacking))!=this._stacking){this._stacking=t;this.invalidate()}}get options(){return this._options}set options(t){if(t!=this._options){this._options=t;this.invalidate()}}}export var LabelPosition;!function(t){t[t.None=0]="None";t[t.Left=1]="Left";t[t.Top=2]="Top";t[t.Right=3]="Right";t[t.Bottom=4]="Bottom";t[t.Center=5]="Center"}(LabelPosition||(LabelPosition={}));export var PieLabelPosition;!function(t){t[t.None=0]="None";t[t.Inside=1]="Inside";t[t.Center=2]="Center";t[t.Outside=3]="Outside";t[t.Radial=4]="Radial";t[t.Circular=5]="Circular"}(PieLabelPosition||(PieLabelPosition={}));export class DataLabelRenderEventArgs extends RenderEventArgs{constructor(t,e,i,s){super(t);this.cancel=!1;this._ht=e;this._pt=i;this._text=s}get point(){return this._pt}get text(){return this._text}set text(t){this._text=asString(t)}get hitTestInfo(){return this._ht}}export class DataLabelBase{constructor(){this.rendering=new Event}get content(){return this._content}set content(t){if(t!=this._content){this._content=t;this._invalidate()}}get border(){return this._bdr}set border(t){if(t!=this._bdr){this._bdr=asBoolean(t,!0);this._invalidate()}}get offset(){return this._off}set offset(t){if(t!=this._off){this._off=asNumber(t,!0);this._invalidate()}}get connectingLine(){return this._line}set connectingLine(t){if(t!=this._line){this._line=asBoolean(t,!0);this._invalidate()}}onRendering(t){this.rendering.raise(this,t);return!t.cancel}_invalidate(){this._chart&&this._chart.invalidate()}}export class DataLabel extends DataLabelBase{constructor(){super(...arguments);this._pos=LabelPosition.Top}get position(){return this._pos}set position(t){if((t=asEnum(t,LabelPosition))!=this._pos){this._pos=t;this._invalidate()}}}export class PieDataLabel extends DataLabelBase{constructor(){super(...arguments);this._pos=PieLabelPosition.Center}get position(){return this._pos}set position(t){if((t=asEnum(t,PieLabelPosition))!=this._pos){this._pos=t;this._invalidate()}}}export class _DataPoint{constructor(t,e,i,s){this._seriesIndex=t;this._pointIndex=e;this._dataX=i;this._dataY=s}get seriesIndex(){return this._seriesIndex}get pointIndex(){return this._pointIndex}get dataX(){return this._dataX}set dataX(t){t!==this._dataX&&(this._dataX=t)}get dataY(){return this._dataY}set dataY(t){t!==this._dataY&&(this._dataY=t)}}export var _MeasureOption;!function(t){t[t.X=0]="X";t[t.Y=1]="Y";t[t.XY=2]="XY"}(_MeasureOption||(_MeasureOption={}));export class _RectArea{constructor(t){this._rect=t}get rect(){return this._rect}contains(t){var e=this._rect;return t.x>=e.left&&t.x<=e.right&&t.y>=e.top&&t.y<=e.bottom}pointDistance(t,e,i){var s=e.x-t.x,n=e.y-t.y;return i==_MeasureOption.X?Math.abs(s):i==_MeasureOption.Y?Math.abs(n):Math.sqrt(s*s+n*n)}distance(t){var e=_MeasureOption.XY;isNumberNaN(+t.x)||null===t.x?e=_MeasureOption.Y:(isNumberNaN(+t.y)||null===t.y)&&(e=_MeasureOption.X);var i=this._rect;return t.x<i.left?t.y<i.top?this.pointDistance(t,new Point(i.left,i.top),e):t.y>i.bottom?this.pointDistance(t,new Point(i.left,i.bottom),e):e==_MeasureOption.Y?0:i.left-t.x:t.x>i.right?t.y<i.top?this.pointDistance(t,new Point(i.right,i.top),e):t.y>i.bottom?this.pointDistance(t,new Point(i.right,i.bottom),e):e==_MeasureOption.Y?0:t.x-i.right:e==_MeasureOption.X?0:t.y<i.top?i.top-t.y:t.y>i.bottom?t.y-i.bottom:0}}export class _CircleArea{constructor(t,e){this._center=t;this.setRadius(e)}setRadius(t){this._rad=t;this._rad2=t*t}get center(){return this._center}get radius(){return this._rad}contains(t){var e=this._center.x-t.x,i=this._center.y-t.y;return e*e+i*i<=this._rad2}distance(t){var e=isNumberNaN(+t.x)?0:this._center.x-t.x,i=isNumberNaN(+t.y)?0:this._center.y-t.y,s=e*e+i*i;return s<=this._rad2?0:Math.sqrt(s)-this._rad}}export class _LinesArea{constructor(t,e){this._x=[];this._y=[];this._x=t;this._y=e}distanceToPoint(t){if(!t)return NaN;var e=NaN;for(let i=0;i<this._x.length;i++){if(this._x[i]===t.x&&this._y[i]===t.y)return 0;if(i<this._x.length-1){const s=FlexChartCore._dist(t,new Point(this._x[i],this._y[i]),new Point(this._x[i+1],this._y[i+1]));(isNumberNaN(+e)||s<e)&&(e=s)}}return e}contains(t){return!1}distance(t){return this.distanceToPoint(t)}}export class _HitResult{}export class _HitTester{constructor(t){this._map={};this._chart=t}add(t,e){if(this._map[e]){t.tag||(t.tag=new _DataPoint(e,NaN,NaN,NaN));this._map[e].push(t)}}clear(){this._map={};var t=this._chart.series;for(let e=0;e<t.length;e++)t[e].hitTest===Series.prototype.hitTest&&(this._map[e]=[])}hitTest(t,e=!1){var i=null,s=Number.MAX_VALUE;for(let n=this._chart.series.length-1;n>=0;n--){const r=this._map[n];if(r){for(let n=r.length-1;n>=0;n--){const a=r[n];if(tryCast(a,_LinesArea)&&!e)continue;const h=a.distance(t);if(h<s){i=a;if(0==(s=h))break}}if(0==s)break}}if(i){const t=new _HitResult;t.area=i;t.distance=s;return t}return null}hitTestSeries(t,e){var i=null,s=Number.MAX_VALUE,n=this._map[e];if(n){for(let e=n.length-1;e>=0;e--){const r=n[e],a=r.distance(t);if(a<s){i=r;if(0==(s=a))break}}}if(i){const t=new _HitResult;t.area=i;t.distance=s;return t}return null}}export var ChartElement;!function(t){t[t.PlotArea=0]="PlotArea";t[t.AxisX=1]="AxisX";t[t.AxisY=2]="AxisY";t[t.ChartArea=3]="ChartArea";t[t.Legend=4]="Legend";t[t.Header=5]="Header";t[t.Footer=6]="Footer";t[t.Series=7]="Series";t[t.SeriesSymbol=8]="SeriesSymbol";t[t.DataLabel=9]="DataLabel";t[t.None=10]="None"}(ChartElement||(ChartElement={}));export class HitTestInfo{constructor(t,e,i){this._pointIndex=null;this._chartElement=ChartElement.None;this._chart=t;this._pt=e;this._chartElement=i}get chart(){return this._chart}get point(){return this._pt}get series(){return this._series}get pointIndex(){return this._pointIndex}get chartElement(){return this._chartElement}get distance(){return this._dist}get item(){if(null==this._item&&null!==this.pointIndex)if(null!=this.series)this._item=this.series._getItem(this.pointIndex);else{const t=this._chart._getHitTestItem(this.pointIndex);t&&(this._item=t)}return this._item}get x(){void 0===this._x&&(this._x=this._getValue(1,!1));return this._x}get y(){void 0===this._y&&(this._y=this._getValue(0,!1));return this._y}get value(){var t=this._chart._getHitTestValue(this.pointIndex,this._groupIndex);return null!=t?t:this.series&&null!=this.series._getValue?this.series._getValue(this.pointIndex):this.y}get name(){if(void 0===this._name){const t=this._chart._getHitTestLabel(this.pointIndex);return null==t?this.series.name:t.toString()}return this._name}get groupIndex(){return this._groupIndex}get _xfmt(){void 0===this.__xfmt&&(this.__xfmt=this._getValue(1,!0));return this.__xfmt}get _yfmt(){void 0===this.__yfmt&&(this.__yfmt=this._getValue(0,!0));return this.__yfmt}_setData(t,e){this._series=t;this._pointIndex=e}_setDataGroup(t,e){this._groupIndex=t;this._pointIndex=e}_setName(t){this._name=t;t&&(this._dist=0)}_setDataPoint(t){if(t=asType(t,_DataPoint,!0)){this._pointIndex=t.pointIndex;const e=asType(this._chart,FlexChartCore,!0),i=t.seriesIndex;null!==i&&i>=0&&i<e.series.length&&(this._series=e.series[i]);null!=t.item&&(this._item=t.item);null!=t.x&&(this._x=t.x);null!=t.y&&(this._y=t.y);null!=t.xfmt&&(this.__xfmt=t.xfmt);null!=t.yfmt&&(this.__yfmt=t.yfmt);null!=t.name&&(this._name=t.name)}}_getValueFmt(){let t=this.value;if(null!=t){if(null==this.series){const e=t==Math.round(t)?"{val:n0}":"{val:n}";return format(e,{val:t})}t=this._chart._isRotated()?this.ax._formatValue(t):this.ay._formatValue(t)}return t}_getValue(t,e){var i=this._chart._getHitTestValue(this.pointIndex,this.groupIndex);if(null!==i)return i;var s=null,n=this._chart,r=this.pointIndex,a=n._isRotated();if(null!==this.series&&null!==r){const i=this.series.getValues(t),a=this.series.getDataType(t);if(i&&this.pointIndex<i.length){s=i[this.pointIndex];a!=DataType.Date||e||(s=new Date(s))}else if(1==t)if(n._xlabels&&n._xlabels.length>0&&r<n._xlabels.length)s=n._xlabels[r];else if(n._xvals&&r<n._xvals.length){s=n._xvals[r];n._xDataType!=DataType.Date||e||(s=new Date(s))}}null!==s&&e&&(a?0==t?s=this.ax._formatValue(s):1==t&&(s=this.ay._formatValue(s)):0==t?s=this.ay._formatValue(s):1==t&&(s=this.ax._formatValue(s)));return s}get ax(){return this.series.axisX?this.series.axisX:this._chart.axisX}get ay(){return this.series.axisY?this.series.axisY:this._chart.axisY}}export var SeriesVisibility;!function(t){t[t.Visible=0]="Visible";t[t.Plot=1]="Plot";t[t.Legend=2]="Legend";t[t.Hidden=3]="Hidden"}(SeriesVisibility||(SeriesVisibility={}));export var Marker;!function(t){t[t.Dot=0]="Dot";t[t.Box=1]="Box"}(Marker||(Marker={}));export class DataArray{}export class SeriesEventArgs extends EventArgs{constructor(t){super();this._series=asType(t,SeriesBase)}get series(){return this._series}}export class SeriesBase{constructor(t){this._altStyle=null;this._symbolMarker=Marker.Dot;this._visibility=SeriesVisibility.Visible;this._interpolateNulls=null;this._cache={};this.rendering=new Event;this.rendered=new Event;this.initialize(t)}get interpolateNulls(){return null==this._interpolateNulls?this._chart&&this._chart.interpolateNulls:this._interpolateNulls}set interpolateNulls(t){if(t!=this._interpolateNulls){this._interpolateNulls=asBoolean(t,!0);this._invalidate()}}get style(){return this._style}set style(t){if(t!=this._style){this._style=t;this._invalidate()}}get altStyle(){return this._altStyle}set altStyle(t){if(t!=this._altStyle){this._altStyle=t;this._invalidate()}}get symbolStyle(){return this._symbolStyle}set symbolStyle(t){if(t!=this._symbolStyle){this._symbolStyle=t;this._invalidate()}}get symbolSize(){return this._symbolSize}set symbolSize(t){if(t!=this._symbolSize){this._symbolSize=asNumber(t,!0,!0);this._invalidate()}}get symbolMarker(){return this._symbolMarker}set symbolMarker(t){if((t=asEnum(t,Marker,!0))!=this._symbolMarker){this._symbolMarker=t;this._invalidate()}}get binding(){return this._binding?this._binding:this._chart?this._chart.binding:null}set binding(t){if(t!=this._binding){this._binding=asString(t,!0);this._clearValues();this._invalidate()}}get bindingX(){return this._bindingX?this._bindingX:this._chart?this._chart.bindingX:null}set bindingX(t){if(t!=this._bindingX){this._bindingX=asString(t,!0);this._clearValues();this._invalidate()}}get name(){return this._name}set name(t){this._name=t}get itemsSource(){return this._itemsSource}set itemsSource(t){if(t!=this._itemsSource){if(this._cv){this._cv.currentChanged.removeHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._itemsSource=t;this._cv=asCollectionView(t);if(null!=this._cv){this._cv.currentChanged.addHandler(this._cvCurrentChanged,this);this._cv.collectionChanged.addHandler(this._cvCollectionChanged,this)}this._clearValues();this._itemsSource=t;this._invalidate()}}get collectionView(){return this._cv?this._cv:this._chart?this._chart.collectionView:null}get chart(){return this._chart}get hostElement(){return this._hostElement}get legendElement(){return this._legendElement}get cssClass(){return this._cssClass}set cssClass(t){this._cssClass=asString(t,!0)}get visibility(){return this._visibility}set visibility(t){if((t=asEnum(t,SeriesVisibility))!=this._visibility){this._visibility=t;this._clearValues();this._invalidate();this._chart&&this._chart.onSeriesVisibilityChanged(new SeriesEventArgs(this))}}get tooltipContent(){return this._tooltipContent}set tooltipContent(t){t!=this._tooltipContent&&(this._tooltipContent=t)}get itemFormatter(){return this._itemFormatter}set itemFormatter(t){if(t!=this._itemFormatter){this._itemFormatter=asFunction(t);this._invalidate()}}hitTest(t,e){isNumber(t)&&isNumber(e)?t=new Point(t,e):t instanceof MouseEvent&&(t=new Point(t.pageX,t.pageY));asType(t,Point);return this._chart?this._chart._hitTestSeries(t,this._chart.series.indexOf(this)):null}getPlotElement(t){if(this.hostElement&&t<this._pointIndexes.length){const e=this._pointIndexes[t];if(e<this.hostElement.childNodes.length)return this.hostElement.childNodes[e]}return null}get axisX(){return this._axisX}set axisX(t){if(t!=this._axisX){this._axisX=asType(t,Axis,!0);if(this._axisX){this._axisX._chart=this._chart;const t=this._axisX._chart;t&&-1==t.axes.indexOf(this._axisX)&&t.axes.push(this._axisX)}this._invalidate()}}get axisY(){return this._axisY}set axisY(t){if(t!=this._axisY){this._axisY=asType(t,Axis,!0);if(this._axisY){this._axisY._chart=this._chart;const t=this._axisY._chart;t&&-1==t.axes.indexOf(this._axisY)&&t.axes.push(this._axisY)}this._invalidate()}}initialize(t){copy(this,t)}pointToData(t){asType(t,Point);(t=t.clone()).x=this._getAxisX().convertBack(t.x);t.y=this._getAxisY().convertBack(t.y);return t}dataToPoint(t){asType(t,Point);(t=t.clone()).x=this._getAxisX().convert(t.x);t.y=this._getAxisY().convert(t.y);return t}onRendering(t,e,i){var s=new SeriesRenderingEventArgs(t,e,i);this.rendering.raise(this,s);return s.cancel}onRendered(t){this.rendered.raise(this,new RenderEventArgs(t))}get _chart(){return this.__chart}set _chart(t){t!==this.__chart&&(this.__chart=t)}_getSymbolSize(){return null!=this.symbolSize?this.symbolSize:this.chart.symbolSize}get _plotter(){this.chart&&!this.__plotter&&(this.__plotter=this.chart._getPlotter(this));return this.__plotter}set _plotter(t){t!=this.__plotter&&(this.__plotter=t)}getDataType(t){return 0==t?this._valueDataType:1==t?this._xvalueDataType:null}getValues(t){if(0==t){if(null==this._values){this._valueDataType=null;if(null!=this._cv){const t=this._bindValues(this._cv.items,this._getBinding(0));this._values=t.values;this._valueDataType=t.dataType}else if(null!=this.binding&&null!=this._chart&&null!=this._chart.collectionView){const t=this._bindValues(this._chart.collectionView.items,this._getBinding(0));this._values=t.values;this._valueDataType=t.dataType}}return this._values}if(1==t){if(null==this._xvalues){this._xvalueDataType=null;if(null!=this.bindingX)if(null!=this._cv){const t=this._bindValues(this._cv.items,this.bindingX,!0);this._xvalueDataType=t.dataType;this._xvalues=t.values}else{if(null==this._bindingX)return null;if(null!=this._chart&&null!=this._chart.collectionView){const t=this._bindValues(this._chart.collectionView.items,this.bindingX,!0);this._xvalueDataType=t.dataType;this._xvalues=t.values}}}return this._xvalues}return null}drawLegendItem(t,e,i){var s=this._getChartType();null==s&&(s=this._chart._getChartType());const n=this._getLegendStyle(this.style);s===ChartType.Funnel?this._drawFunnelLegendItem(t,e,i,n,this.symbolStyle):this._drawLegendItem(t,e,s,this.name,n,this.symbolStyle)}_getLegendStyle(t){if(!t)return;const e={};t.fill&&(e.fill=t.fill);t.stroke&&(e.stroke=t.stroke);return e}measureLegendItem(t,e){var i=this._getChartType();null==i&&(i=this._chart._getChartType());return i===ChartType.Funnel?this._measureLegendItem(t,this._getFunnelLegendName(e)):this._measureLegendItem(t,this.name)}legendItemLength(){var t=this._getChartType();null==t&&(t=this._chart._getChartType());return t===ChartType.Funnel?this._chart._xlabels&&this._chart._xlabels.length?this._chart._xlabels.length:this._chart._xvals&&this._chart._xvals.length?this._chart._xvals.length:1:1}getDataRect(t,e){return null}_getChartType(){return this._chartType}_getAccessibleChartTypeName(){return null}_clearValues(){this._values=null;this._xvalues=null;this.__plotter=null;this._cache={}}_getBinding(t){var e=this.binding;if(e){const i=this.chart?this.chart._bindingSeparator:",";if(i){const s=e.split(i);s&&s.length>t&&(e=s[t].trim())}}return e}_getBindingValues(t){if(this._cache[t])return this._cache[t];{let e;null!=this._cv?e=this._cv.items:null!=this._chart&&null!=this._chart.collectionView&&(e=this._chart.collectionView.items);const i=this._bindValues(e,this._getBinding(t));this._cache[t]=i.values;return this._cache[t]}}_getItem(t){var e=null,i=null;null!=this.itemsSource?i=null!=this._cv?this._cv.items:this.itemsSource:null!=this._chart.itemsSource&&(i=null!=this._chart.collectionView?this._chart.collectionView.items:this._chart.itemsSource);null!=i&&(e=i[t]);return e}_getLength(){var t=0,e=null;null!=this.itemsSource?e=null!=this._cv?this._cv.items:this.itemsSource:null!=this._chart.itemsSource&&(e=null!=this._chart.collectionView?this._chart.collectionView.items:this._chart.itemsSource);null!=e&&(t=e.length);return t}_setPointIndex(t,e){this._pointIndexes[t]=e}_getDataRect(){var t=this.getValues(0),e=this.getValues(1);if(t){let i=NaN,s=NaN,n=NaN,r=NaN;const a=t.length;for(let h=0;h<a;h++){const a=t[h];if(isArray(a)){const t=a,e=Math.min(...t),i=Math.max(...t);if(isNumberNaN(+s)){s=e;r=i}else{e<s&&(s=e);i>r&&(r=i)}}else isNumberFinite(+a)&&(isNumberNaN(+s)?s=r=a:a<s?s=a:a>r&&(r=a));if(e){const t=e[h];isNumberFinite(+t)&&(isNumberNaN(+i)?i=n=t:t<i?i=t:a>r&&(n=t))}}if(!e){i=0;n=a-1}if(!isNumberNaN(+s))return new Rect(i,s,n-i,r-s)}return null}_isCustomAxisX(){return!!this._axisX&&(!this._chart||this._axisX!=this.chart.axisX)}_isCustomAxisY(){return!!this._axisY&&(!this._chart||this._axisY!=this.chart.axisY)}_getAxisX(){var t=null;this.axisX?t=this.axisX:this.chart&&(t=this.chart.axisX);return t}_getAxisY(){var t=null;this.axisY?t=this.axisY:this.chart&&(t=this.chart.axisY);return t}_measureLegendItem(t,e){var i=new Size;i.width=SeriesBase._LEGEND_ITEM_WIDTH;i.height=SeriesBase._LEGEND_ITEM_HEIGHT;if(this._name){const s=t.measureString(e,FlexChartCore._CSS_LABEL,FlexChartCore._CSS_LEGEND);i.width+=s.width;i.height<s.height&&(i.height=s.height)}i.width+=3*SeriesBase._LEGEND_ITEM_MARGIN;i.height+=2*SeriesBase._LEGEND_ITEM_MARGIN;return i}_drawFunnelLegendItem(t,e,i,s,n){t.strokeWidth=1;var r=SeriesBase._LEGEND_ITEM_MARGIN,a=null,h=null;null===a&&(a=this._chart._getColorLight(i));null===h&&(h=this._chart._getColor(i));t.fill=a;t.stroke=h;var l=e.top+.5*e.height,o=SeriesBase._LEGEND_ITEM_WIDTH,c=SeriesBase._LEGEND_ITEM_HEIGHT,_=this._getFunnelLegendName(i);t.drawRect(e.left+r,l-.5*c,o,c,null,n||s);null!=_&&FlexChartCore._renderText(t,_,new Point(e.left+c+2*r,l),0,1,FlexChartCore._CSS_LABEL,FlexChartCore._CSS_LEGEND)}_getFunnelLegendName(t){var e,i=this._chart;if(i._xlabels&&i._xlabels.length&&t<i._xlabels.length)e=i._xlabels[t];else if(i._xvals&&i._xvals.length&&t<i._xvals.length){e=i._xvals[t];i._xDataType===DataType.Date&&(e=FlexChartCore._fromOADate(e))}null==e&&(e=this.name);return e.toString()}_drawLegendItem(t,e,i,s,n,r){t.strokeWidth=1;var a=SeriesBase._LEGEND_ITEM_MARGIN,h=null,l=null;null===h&&(h=this._chart._getColorLight(this._chart.series.indexOf(this)));null===l&&(l=this._chart._getColor(this._chart.series.indexOf(this)));t.fill=h;t.stroke=l;var o=e.top+.5*e.height,c=SeriesBase._LEGEND_ITEM_WIDTH,_=SeriesBase._LEGEND_ITEM_HEIGHT;switch(i){case ChartType.Area:case ChartType.SplineArea:case ChartType.StepArea:t.drawRect(e.left+a,o-.5*_,c,_,null,n);break;case ChartType.Bar:case ChartType.Column:t.drawRect(e.left+a,o-.5*_,c,_,null,r||n);break;case ChartType.Scatter:case ChartType.Bubble:{const i=.3*c,s=.3*_;this.symbolMarker==Marker.Box?t.drawRect(e.left+a+.5*c-i,o-s,2*i,2*s,null,r||n):t.drawEllipse(e.left+.5*c+a,o,i,s,null,r||n)}break;case ChartType.Line:case ChartType.Spline:case ChartType.Step:t.drawLine(e.left+a,o,e.left+c+a,o,null,n);break;case ChartType.LineSymbols:case ChartType.SplineSymbols:case ChartType.StepSymbols:{const i=.3*c,s=.3*_;this.symbolMarker==Marker.Box?t.drawRect(e.left+a+.5*c-i,o-s,2*i,2*s,null,r||n):t.drawEllipse(e.left+.5*c+a,o,i,s,null,r||n);t.drawLine(e.left+a,o,e.left+c+a,o,null,n)}break;case ChartType.Candlestick:case ChartType.HighLowOpenClose:t.drawLine(e.left+a,o,e.left+c+a,o,null,r||n)}this._name&&FlexChartCore._renderText(t,s,new Point(e.left+_+2*a,o),0,1,FlexChartCore._CSS_LABEL,FlexChartCore._CSS_LEGEND)}_cvCollectionChanged(t,e){this._clearValues();this._invalidate()}_cvCurrentChanged(t,e){this._chart&&this._chart._notifyCurrentChanged&&this._invalidate()}_bindValues(t,e,i=!1){var s,n,r;if(null!=t){const a=t.length;s=new Array(t.length);const h=e?new Binding(e):null;for(let e=0;e<a;e++){r=null;let a=t[e];null!=h&&(a=h.getValue(a));if(isArray(a)&&a.length>0){r=a;a=a[0]}if(isNumber(a)){s[e]=a;n=DataType.Number}else if(isDate(a)){s[e]=a.valueOf();n=DataType.Date}else if(i&&a){s[e]=e;n=DataType.Number}isArray(r)&&r.length>0&&(s[e]=r)}}var a=new DataArray;a.values=s;a.dataType=n;return a}_invalidate(){this._chart&&this._chart.invalidate()}_indexToPoint(t){if(t>=0&&t<this._values.length){const e=this._values[t],i=this._xvalues?this._xvalues[t]:t;return new Point(i,e)}return null}_getSymbolFill(t){var e=null;this.symbolStyle&&(e=this.symbolStyle.fill);!e&&this.style&&(e=this.style.fill);!e&&this.chart&&(e=this.chart._getColorLight(t));return e}_getSymbolStroke(t){var e=null;this.symbolStyle&&(e=this.symbolStyle.stroke);!e&&this.style&&(e=this.style.stroke);!e&&this.chart&&(e=this.chart._getColor(t));return e}_getAltSymbolStroke(t){var e=null;this.altStyle&&(e=this.altStyle.stroke);return e}_getAltSymbolFill(t){var e=null;this.altStyle&&(e=this.altStyle.fill);return e}_renderLabels(t,e,i,s){this._plotter&&this._plotter._renderLabels(t,this,e,i,s)}}SeriesBase._LEGEND_ITEM_WIDTH=10;SeriesBase._LEGEND_ITEM_HEIGHT=10;SeriesBase._LEGEND_ITEM_MARGIN=4;export class _BasePlotter{constructor(){this._DEFAULT_WIDTH=2;this._DEFAULT_SYM_SIZE=10;this.clipping=!0}clear(){this.seriesCount=0;this.seriesIndex=0}_renderLabels(t,e,i,s,n){var r=i.length,a=s.dataLabel,h=a.border,l=a.offset,o=a.connectingLine;void 0===l&&(l=o?16:0);h&&(l-=2);for(let h=0;h<r;h++){const r=i[h],o=asType(r.tag,_DataPoint,!0);o&&!r.ignoreLabel&&this._renderLabel(t,r,o,s,a,e,l,n)}}_renderLabel(t,e,i,s,n,r,a,h){var l,o=null==n.position?LabelPosition.Top:n.position,c=n.border,_=n.connectingLine,d=new HitTestInfo(s,l);d._setDataPoint(i);var u=s._getLabelContent(d,n.content);l=this._getLabelPoint(r,i);this._getPointAndPosition(l,o,e,s);if(s._plotRect.contains(l)){var g=new DataLabelRenderEventArgs(t,d,l,u);if(n.onRendering)if(n.onRendering(g)){u=g.text;l=g.point}else u=null;if(u){const e=this._renderLabelAndBorder(t,u,o,a,l,_,2,c);if(e){const t=new _RectArea(e);t.tag=i;h.push(t)}}t.cssPriority=!0}}_getPointAndPosition(t,e,i,s){if(i instanceof _RectArea){const e=i;s._isRotated()?t.y=e.rect.top+.5*e.rect.height:t.x=e.rect.left+.5*e.rect.width}}_getLabelPoint(t,e){var i=t._getAxisX(),s=t._getAxisY();return new Point(i.convert(e.dataX),s.convert(e.dataY))}_renderLabelAndBorder(t,e,i,s,n,r,a,h){let l,o=DataLabelClsNames.label,c=DataLabelClsNames.line,_=DataLabelClsNames.border,d=FlexChartCore._CSS_DATA_LABELS;switch(i){case LabelPosition.Top:r&&t.drawLine(n.x,n.y,n.x,n.y-s,c);n.y-=a+s;l=FlexChartCore._renderText(t,e,n,1,2,o,d);break;case LabelPosition.Bottom:r&&t.drawLine(n.x,n.y,n.x,n.y+s,c);n.y+=a+s;l=FlexChartCore._renderText(t,e,n,1,0,o,d);break;case LabelPosition.Left:r&&t.drawLine(n.x,n.y,n.x-s,n.y,c);n.x-=a+s;l=FlexChartCore._renderText(t,e,n,2,1,o,d);break;case LabelPosition.Right:r&&t.drawLine(n.x,n.y,n.x+s,n.y,c);n.x+=a+s;l=FlexChartCore._renderText(t,e,n,0,1,o,d);break;case LabelPosition.Center:l=FlexChartCore._renderText(t,e,n,1,1,o,d)}h&&l&&t.drawRect(l.left-a,l.top-a,l.width+2*a,l.height+2*a,_);return l}getOption(t,e){var i=this.chart._options;e&&(i=i?i[e]:null);if(i&&!isUndefined(i[t])&&null!==i[t])return i[t]}getNumOption(t,e){var i=this.chart._options;e&&(i=i?i[e]:null);if(i&&i[t])return asNumber(i[t],!0)}getItemFormatter(t){if(t instanceof SeriesBase){const e=t;return e.itemFormatter?e.itemFormatter:this.chart.itemFormatter}return this.chart.itemFormatter}static cloneStyle(t,e){if(!t)return t;var i={};for(var s in t)e&&e.indexOf(s)>=0||(i[s]=t[s]);return i}isValid(t,e,i,s){return isNumberFinite(+t)&&isNumberFinite(+e)&&FlexChartCore._contains(this.chart._plotRect,new Point(t,e))}load(){}unload(){}_createSteps(t,e,i){const s=this.getOption("position","step"),n=i||t.length,r=[],a=[],h=this.chart._isRotated();if("center"==s)if(h)for(let i=0;i<n;i++){const s=0==i?e[i+1]-e[i]:e[i]-e[i-1],h=i==n-1?e[i]-e[i-1]:e[i+1]-e[i];r.push(t[i]);a.push(e[i]-.5*s);r.push(t[i]);a.push(e[i]+.5*h)}else for(let i=0;i<n;i++){const s=0==i?t[i+1]-t[i]:t[i]-t[i-1],h=i==n-1?t[i]-t[i-1]:t[i+1]-t[i];r.push(t[i]-.5*s);a.push(e[i]);r.push(t[i]+.5*h);a.push(e[i])}else if("end"==s)for(let i=0;i<n;i++){if(i>0)if(h){r.push(t[i]);a.push(e[i-1])}else{r.push(t[i-1]);a.push(e[i])}r.push(t[i]);a.push(e[i])}else for(let i=0;i<n;i++){r.push(t[i]);a.push(e[i]);if(i<n-1)if(h){r.push(t[i]);a.push(e[i+1])}else{r.push(t[i+1]);a.push(e[i])}}return{x:r,y:a}}}export class Series extends SeriesBase{get chartType(){return this._chartType}set chartType(t){if((t=asEnum(t,ChartType,!0))!=this._chartType){this._chartType=t;this._invalidate()}}}export class FlexPie extends FlexChartBase{constructor(t,e){super(t,null,!0);this._areas=[];this._keywords=new _KeyWords;this._startAngle=0;this._innerRadius=0;this._offset=0;this._reversed=!1;this._isAnimated=!1;this._selectedItemPosition=Position.None;this._selectedItemOffset=0;this._pieGroups=[];this._rotationAngles=[];this._centers=[new Point];this._selectedOffset=new Point;this._selectedIndex=-1;this._angles=[];this._colRowLens=[];this._titles=void 0;this._values=[];this._labels=[];this._pels=[];this._sum=0;this._sums=[];this._bindingSeparator=",";this.applyTemplate(`${ControlClsNames.hostElement} ${FlexChartClsNames.hostElement} ${FlexPieClsNames.hostElement}`,null,null);this._currentRenderEngine=new _SvgRenderEngine(this.hostElement);this._legend=new Legend(this);this._tooltip=new ChartTooltip;this._tooltip.content="<b>{name}</b><br/>{value}";this._tooltip.showDelay=0;this._lbl=new PieDataLabel;this._lbl._chart=this;this.addEventListener(this.hostElement,"mousemove",t=>{var e=this._tooltip;if(e.content&&!this.isTouching){const i=this.hitTest(t,void 0,!0);if(i.distance<=e.threshold){const e=this._getLabelContent(i,this.tooltip.content);this._showToolTip(e,new Rect(t.clientX,t.clientY,5,5))}else this._hideToolTip()}});this.addEventListener(this.hostElement,"click",t=>{var e=!0;if(this.selectionMode==SelectionMode.Point){const i=this.hitTest(t);let s=FlexChartBase._SELECTION_THRESHOLD;this.tooltip&&this.tooltip.threshold&&(s=this.tooltip.threshold);if(i.distance<=s){i.pointIndex!=this._selectionIndex&&this.selectedItemPosition!=Position.None&&(e=!1);i.pointIndex!=this._selectionIndex&&this._select(i.pointIndex,!0)}else this._selectedIndex>=0&&this._select(null)}if(e&&this.isTouching){const e=this._tooltip;if(e.content){const i=this.hitTest(t,void 0,!0);if(i.distance<=e.threshold){const e=this._getLabelContent(i,this.tooltip.content);this._showToolTip(e,new Rect(t.clientX,t.clientY,5,5))}else this._hideToolTip()}}this.focusMode&&this._updateAccessibilityFocusFromState(this._getAccessibilityFocusStateFromClick(t))});this.addEventListener(this.hostElement,"mouseleave",t=>{this._hideToolTip()});this.deferUpdate(()=>this.initialize(e))}_getAccessibleChartTypeName(){return _getAccessibleChartTypeName(this.innerRadius>0?"doughnutChart":"pieChart")}_createAccessibilityModel(){const t=super._createAccessibilityModel(),e=this._getBindings(),i=this._values,s=this._getLabelsForLegend(),n=this.titles,r=i&&i.length?i.length:e.length,a=s?s.length:0,h=this.focusMode;for(let l=0;l<r;l++){const r=i&&i[l];if(!r)continue;const o={index:l,name:_toAccessibilityText(n&&n[l]||e[l])||_getUnnamedAccessibilitySeriesName(l),points:[]};for(let e=0;e<r.length;e++){const i=_toAccessibilityText(s&&s[e]);h&&this._isRenderablePiePointValue(r[e])&&o.points.push({index:e,category:i||e,value:r[e]});h&&0===l&&e<a&&this._isAccessibilityLegendVisible()&&t.legendItems.push({name:i||_getUnnamedAccessibilitySeriesName(e),seriesIndex:l,pointIndex:e})}t.series.push(o)}return t}_getAccessibilityTooltipContent(t){const e=this._accessibilityModel;let i=t&&t.seriesIndex,s=t&&t.pointIndex;if(t&&"legend"===t.region){const n=e&&e.legendItems?e.legendItems[t.legendIndex]:null;i=n&&n.seriesIndex;s=n&&n.pointIndex}if((t&&"series"===t.region||t&&"legend"===t.region)&&null!=i&&null!=s&&this.tooltip.content){const t=new HitTestInfo(this,new Point);t._chartElement=ChartElement.SeriesSymbol;t._setDataGroup(i,s);return this._getLabelContent(t,this.tooltip.content)}return super._getAccessibilityTooltipContent(t)}_isRenderablePiePointValue(t){return null!=t&&isNumberFinite(+t)&&Math.abs(t)>0}_getAccessibilityFocusStateFromClick(t){const e=this.hitTest(t);if(e.chartElement===ChartElement.Header&&this.header)return{region:"title"};if(e.chartElement===ChartElement.Legend){const t=this._getAccessibilityLegendFocusIndex(e.pointIndex);if(t>=0)return{region:"legend",legendIndex:t}}if(null!=e.pointIndex&&e.distance<=this.tooltip.threshold){const t=e.groupIndex||0;if(this._isRenderablePiePointValue(this._getPiePointValue(t,e.pointIndex)))return{region:"series",seriesIndex:t,pointIndex:e.pointIndex}}return e.chartElement===ChartElement.ChartArea||e.chartElement===ChartElement.PlotArea?{region:"chart"}:null}_getPiePointValue(t,e){const i=this._values&&this._values[t];return i&&null!=e?i[e]:null}_getAccessibilityLegendFocusIndex(t){const e=this._accessibilityModel,i=e&&e.legendItems?e.legendItems:[];if(null==t)return-1;for(let e=0;e<i.length;e++)if(i[e].pointIndex===t)return e;return-1}_getAccessibilitySeriesPointShape(t,e){const i=this._values&&this._values[t],s=i?i.length:0,n=s?t*s+e:e,r=this._areas&&this._areas[n],a=_getAreaShape(r);return this._getTransformedPointFocusShape(a,r,n,e)||_getRectFocusShape(this._rectChart)}_getTransformedPointFocusShape(t,e,i,s){const n=e&&e.gi?e.gi:0,r=this._rotationAngles&&this._rotationAngles[n]?this._rotationAngles[n]:0,a=this._centers&&this._centers[n],h=this._getAccessibilitySelectedOffset(i,s);return t&&a&&(r||h)?"segment"===t.type?{type:t.type,center:this._transformAccessibilityPoint(t.center,a,r,h),radius:t.radius,innerRadius:t.innerRadius,angle:t.angle+r*Math.PI/180,sweep:t.sweep}:"circle"===t.type?{type:t.type,center:this._transformAccessibilityPoint(t.center,a,r,h),radius:t.radius}:"polygon"===t.type?{type:t.type,points:t.points.map(t=>this._transformAccessibilityPoint(t,a,r,h))}:t:t}_getAccessibilitySelectedOffset(t,e){const i=this._angles&&this._angles[t],s=this.selectedItemOffset;return this._selectedIndex===e&&s>0&&isNumberFinite(+i)?new Point(Math.cos(i)*s*this._radius,Math.sin(i)*s*this._radius):null}_transformAccessibilityPoint(t,e,i,s){let n=t.x+(s?s.x:0),r=t.y+(s?s.y:0);if(i){const t=i*Math.PI/180,s=n-e.x,a=r-e.y,h=Math.sqrt(s*s+a*a),l=Math.atan2(a,s)+t;n=e.x+h*Math.cos(l);r=e.y+h*Math.sin(l)}return new Point(n,r)}get binding(){return this._binding}set binding(t){if(t!=this._binding){this._binding=asString(t,!0);this._bindChart()}}get bindingName(){return this._bindingName}set bindingName(t){if(t!=this._bindingName){this._bindingName=asString(t,!0);this._bindChart()}}get startAngle(){return this._startAngle}set startAngle(t){if(t!=this._startAngle){this._startAngle=asNumber(t,!0);this.invalidate()}}get offset(){return this._offset}set offset(t){if(t!=this._offset){this._offset=asNumber(t,!0);this.invalidate()}}get innerRadius(){return this._innerRadius}set innerRadius(t){if(t!=this._innerRadius){this._innerRadius=asNumber(t,!0);this.invalidate()}}get innerTextStyle(){return this._innerTextStyle}set innerTextStyle(t){if(t!=this._innerText){this._innerTextStyle=t;this.invalidate()}}get innerText(){return this._innerText}set innerText(t){if(t!=this._innerText){this._innerText=t;this.invalidate()}}get reversed(){return this._reversed}set reversed(t){if(t!=this._reversed){this._reversed=asBoolean(t,!0);this.invalidate()}}get selectedItemPosition(){return this._selectedItemPosition}set selectedItemPosition(t){if((t=asEnum(t,Position,!0))!=this._selectedItemPosition){this._selectedItemPosition=t;this.invalidate()}}get selectedItemOffset(){return this._selectedItemOffset}set selectedItemOffset(t){if(t!=this._selectedItemOffset){this._selectedItemOffset=asNumber(t,!0);this.invalidate()}}get isAnimated(){return this._isAnimated}set isAnimated(t){t!=this._isAnimated&&(this._isAnimated=t)}get tooltip(){return this._tooltip}get dataLabel(){return this._lbl}set dataLabel(t){if(t!=this._lbl){this._lbl=t;this._lbl&&(this._lbl._chart=this)}}get selectedIndex(){return this._selectedIndex}set selectedIndex(t){if(t!=this._selectedIndex){const e=asNumber(t,!0);this._select(e,!0)}}get titles(){return this._titles}set titles(t){if(t!==this._titles){this._titles=t;this.invalidate()}}get chartsPerLine(){return this._chartsPerLine}set chartsPerLine(t){if(t!=this._chartsPerLine){this._chartsPerLine=asNumber(t,!0,!0);this.invalidate()}}_getLabelsForLegend(){return this._labels}hitTest(t,e,i){var s=this._toControl(t,e),n=new HitTestInfo(this,s),r=null;if(FlexChartBase._contains(this._rectHeader,s))n._chartElement=ChartElement.Header;else if(FlexChartBase._contains(this._rectFooter,s))n._chartElement=ChartElement.Footer;else if(FlexChartBase._contains(this._rectLegend,s)){n._chartElement=ChartElement.Legend;null!==(r=this.legend._hitTest(s))&&r>=0&&r<this._areas.length&&n._setData(null,r)}else if(FlexChartBase._contains(this._rectChart,s)){this._hitTestData(n,s,i);n._chartElement=ChartElement.ChartArea}else n._chartElement=ChartElement.None;return n}_hitTestData(t,e,i){var s,n=this._areas.length,r=NaN;for(let a=0;a<n;a++){const n=e.clone(),h=this._areas[a],l=this._rotationAngles[h.gi];if(0!=l){const t=this._centers[h.gi],e=t.x,i=t.y,s=-e+n.x,r=-i+n.y,a=Math.sqrt(s*s+r*r),o=Math.atan2(r,s)-l*Math.PI/180;n.x=e+a*Math.cos(o);n.y=i+a*Math.sin(o)}if(a==this._selectedIndex){n.x-=this._selectedOffset.x;n.y-=this._selectedOffset.y}const o=this._areas[a];if(o.contains(n)){if(!0===i){r=0;s=o;continue}t._setDataGroup(h.gi,o.tag);t._dist=0;if(a!=this._selectedIndex)break}const c=o.distance(n);if(void 0!==c&&(isNumberNaN(+r)||c<r||!0===i&&this._isSmallSegment(c,s,o))){r=c;s=o}}if(0!==t._dist&&null!=s){t._setDataGroup(s.gi,s.tag);t._dist=r}}_isSmallSegment(t,e,i){return t<=.5*this.tooltip.threshold&&Math.abs(i.sweep)<=.035&&Math.abs(e.sweep/i.sweep)>=10}_performBind(){this._initData();if(this._cv){this._selectionIndex=this._cv.currentPosition;const t=this._cv.items;if(t){const e=t.length,i=this._getBindings();for(let t=0;t<i.length;t++){this._values[t]=[];this._sums[t]=0}for(let s=0;s<e;s++){const e=t[s];for(let t=0;t<i.length;t++)this._sums[t]+=Math.abs(this._getBindData(e,this._values[t],0==t?this._labels:null,i[t],this.bindingName))}}}}_getBindings(){let t=[];const e=this.binding;if(e){const i=this._bindingSeparator;i&&(t=e.split(i))}return t}_initData(){this._sum=0;this._sums=[];this._values=[];this._labels=[]}_getBindData(t,e,i,s,n){var r,a=0;const h=s?new Binding(s):null;h&&(r=h.getValue(t));a=0;isNumber(r)?a=asNumber(r):r&&(a=parseFloat(r.toString()));if(!isNumberNaN(+a)&&isNumberFinite(+a))e.push(a);else{a=0;e.push(a)}const l=n?new Binding(n):null;if(i)if(l&&t){let e=l.getValue(t);e&&(e=e.toString());i.push(e)}else i.push(a.toString());return a}_render(t,e=!0,i=null){this._selectionAnimationID&&clearInterval(this._selectionAnimationID);this.onRendering(new RenderEventArgs(t));super._render(t,e,i)}_prepareRender(){this._areas=[]}_renderChart(t,e,i){var s=this._rectChart.clone(),n=(new Size(s.width,s.height),e.width),r=e.height,a=this._parseMargin(this.plotMargin),h=this.dataLabel,l=h.content&&h.position==PieLabelPosition.Outside,o=l?(isNumber(h.offset)?h.offset:0)+24:0;isNumberNaN(+a.left)&&(a.left=l?o:FlexPie._MARGIN);isNumberNaN(+a.right)&&(a.right=l?o:FlexPie._MARGIN);isNumberNaN(+a.top)&&(a.top=l?o:FlexPie._MARGIN);isNumberNaN(+a.bottom)&&(a.bottom=l?o:FlexPie._MARGIN);e.top+=a.top;r=e.height-(a.top+a.bottom);e.height=r>0?r:24;e.left+=a.left;n=e.width-(a.left+a.right);e.width=n>0?n:24;const c=this._getBindings();let _=this.titles;void 0===_&&c.length>1&&(_=c);const d=this._layout(t,e,_,c.length);this._angles=[];this._pels=[];this._pieGroups=[];this._rotationAngles=[];for(let e=0;e<c.length;e++){const i=d[e];_&&e<_.length&&_[e]&&FlexChartBase._renderText(t,_[e],new Point(i.left+.5*i.width,i.top),1,2,FlexPie._CSS_GROUP_TITLE);const s=t.startGroup(FlexPieClsNames.sliceGroup,null,!0);this._pieGroups.push(s);this._renderData(t,i,e,s);t.endGroup();this._rotationAngles.push(0)}this._highlightCurrent();this.innerText&&this._renderInnerText(t);this.dataLabel.content&&this.dataLabel.position!=PieLabelPosition.None&&this._renderLabels(t);this.onRendered(new RenderEventArgs(t))}_layout(t,e,i,s){let n=0,r=s,a=1,h=0;if(i)for(let e=0;e<i.length;e++)h=Math.max(h,t.measureString(i[e],FlexPie._CSS_GROUP_TITLE).height);const l=Math.floor(this.chartsPerLine);if(l>0){r=Math.min(s,l);a=Math.ceil(s/r);const t=Math.floor(e.width/r),i=Math.floor(e.height/a)-h;n=Math.min(t,i)}else for(let t=1;t<=s;t++){const i=Math.floor((s+(t-1))/t);let l=Math.floor(e.width/t),o=Math.floor(e.height/i);o-=h;o<l&&(l=o);if(l>n){n=l;r=t;a=i}}const o=[],c=.5*(e.width-n*r),_=.5*(e.height-(n+h)*a);for(let t=0;t<a;t++)for(let i=0;i<r;i++)o.push(new Rect(e.left+n*i+8+c,e.top+(n+h)*t+8+_+h,n-16,n-16));return o}_getDesiredLegendSize(t,e,i,s){var n=new Size,r=(new Size(i,s),this._getLabelsForLegend()),a=r.length,h=0,l=0;this.legend.scrollbar;this._colRowLens=[];for(let o=0;o<a;o++){const a=this._measureLegendItem(t,r[o]);if(e){if(l+a.height>s&&!this.legend.scrollbar){n.height=s;this._colRowLens.push(h);h=0;l=0}h<a.width&&(h=a.width);l+=a.height}else{if(h+a.width>i&&!this.legend.scrollbar){n.width=i;this._colRowLens.push(l);l=0;h=0}l<a.height&&(l=a.height);h+=a.width}}if(e){n.height<l&&(n.height=l);this._colRowLens.push(h);n.width=this._colRowLens.reduce((t,e)=>t+e,0)}else{n.width<h&&(n.width=h);this._colRowLens.push(l);n.height=this._colRowLens.reduce((t,e)=>t+e,0)}return n}_renderLegend(t,e,i,s,n,r){var a=new Rect(e.x,e.y,n,r),h=this._getLabelsForLegend(),l=h.length,o=0,c=e.clone();for(let n=0;n<l;n++){const r=this._measureLegendItem(t,h[n]);if(s){if(c.y+r.height>a.bottom+1&&!this.legend.scrollbar){c.x+=this._colRowLens[o];o++;c.y=e.y}}else if(c.x+r.width>a.right+1&&!this.legend.scrollbar){c.y+=this._colRowLens[o];o++;c.x=e.x}const l=new Rect(c.x,c.y,r.width,r.height);this._drawLegendItem(t,l,n,h[n]);i.push(l);s?c.y+=r.height:c.x+=r.width}}_renderData(t,e,i,s){var n=this._sums[i],r=this.startAngle+180,a=this.innerRadius,h=this.offset;a>1&&(a=1);if(n>0){let s=r*Math.PI/180,n=e.left+.5*e.width,l=e.top+.5*e.height,o=Math.min(.5*e.width,.5*e.height);this._centers[i]=new Point(n,l);const c=Math.max(h,this.selectedItemOffset);if(c>0){o/=1+c;h*=o}this._radius=o;const _=a*o;this._renderPie(t,i,o,_,s,h)}}_renderPie(t,e,i,s,n,r){this._renderSlices(t,this._values[e],this._sums[e],e,i,s,n,2*Math.PI,r)}_getCenter(){return this._centers[0]}_renderSlices(t,e,i,s,n,r,a,h,l){var o,c,_,d=e.length,u=0,g=a,p=1==this.reversed,f=this._centers[s];for(let t=0;t<d;t++)this._isRenderablePiePointValue(e[t])&&u++;var m=1===u?360:359.9/360;for(let a=0;a<d;a++){c=f.x;_=f.y;o=t.startGroup(FlexPieClsNames.slice);t.fill=this._getColorLight(a);t.stroke=this._getColor(a);const d=Math.abs(e[a]);let u=Math.abs(d-i)<1e-10?h:h*d/i;u=Math.min(u,h*m);const x=p?g-.5*u:g+.5*u;if(l>0&&u<h){c+=l*Math.cos(x);_+=l*Math.sin(x)}this._renderSlice(t,c,_,x,s,a,n,r,g,u,h);p?g-=u:g+=u;t.endGroup();this._pels.push(o)}}_renderSlice(t,e,i,s,n,r,a,h,l,o,c){var _=!!this.reversed;this._angles.push(s);if(this.itemFormatter){const c=new HitTestInfo(this,new Point(e+a*Math.cos(s),i+a*Math.sin(s)),ChartElement.SeriesSymbol);c._setData(null,r);this.itemFormatter(t,c,()=>{this._drawSlice(t,n,r,_,e,i,a,h,l,o)});t.cssPriority=!0}else this._drawSlice(t,n,r,_,e,i,a,h,l,o)}_getSelectedItemOffset(t,e){var i=0,s=0,n=0;t==this._selectedIndex&&this.selectedItemOffset>0&&(n=this.selectedItemOffset);if(n>0){i=Math.cos(e)*n*this._radius;s=Math.sin(e)*n*this._radius}return{x:i,y:s}}_renderInnerText(t){const e=this.innerText,i=this.innerTextStyle;for(let s=0;s<this._centers.length;s++){const n=this._centers[s];let r;r=isFunction(e)?e(s):isArray(e)?asString(e[s]):asString(e);if(r){r=format(r,{total:this._sums[s],binding:this._getBindings()[s]});i&&(t.cssPriority=!1);FlexPie._renderText(t,r,n,1,1,FlexChartBase._CSS_TITLE,null,i);t.cssPriority=!0}}}_renderLabels(t){var e,i=this._areas.length,s=this.dataLabel,n=s.position,r=DataLabelClsNames.labels,a=DataLabelClsNames.label,h=DataLabelClsNames.border,l=DataLabelClsNames.line,o=this._rotationAngles,c=s.connectingLine,_=s.offset?s.offset:0;t.stroke="null";t.fill="transparent";t.strokeWidth=1;t.startGroup(r);for(let r=0;r<i;r++){const i=this._areas[r];if(i){let d=i.radius,u=i.langle+o[i.gi],g=1,p=1;if(n==PieLabelPosition.Center||n===PieLabelPosition.Radial||n===PieLabelPosition.Circular)d*=.5*(1+(i.innerRadius||0)/i.radius);else{u=_Math.clampAngle(u);if(u<=-170||u>=170){g=2;p=1}else if(u>=-100&&u<=-80){g=1;p=2}else if(u>=-10&&u<=10){g=0;p=1}else if(u>=80&&u<=100){g=1;p=0}else if(-180<u&&u<-90){g=2;p=2}else if(-90<=u&&u<0){g=0;p=2}else if(0<u&&u<90){g=0;p=0}else if(90<u&&u<180){g=2;p=0}if(n==PieLabelPosition.Inside){g=2-g;p=2-p}}u*=Math.PI/180;const f=i.gi?r-i.gi*this._values[0].length:r,m=this._getSelectedItemOffset(f,u),x=m.x,b=m.y;let y=d;n==PieLabelPosition.Outside?y+=_:n==PieLabelPosition.Inside&&(y-=_);let S=i.center.x,v=i.center.y;const w=this._centers[i.gi],C=S-w.x,A=v-w.y;if(0!=this._rotationAngles[i.gi]){const t=Math.sqrt(C*C+A*A),e=Math.atan2(A,C)+this._rotationAngles[i.gi]*Math.PI/180;S=w.x+t*Math.cos(e);v=w.y+t*Math.sin(e)}let T=new Point(S+x+y*Math.cos(u),v+b+y*Math.sin(u));if(s.border&&n!=PieLabelPosition.Center){0==g?T.x+=2:2==g&&(T.x-=2);0==p?T.y+=2:2==p&&(T.y-=2)}const M=new HitTestInfo(this,T);M._setDataGroup(i.gi,i.tag);let L=this._getLabelContent(M,s.content);const P=new DataLabelRenderEventArgs(t,M,T,L);if(s.onRendering)if(s.onRendering(P)){L=P.text;T=P.point}else L=null;if(L){let i=180*Math.atan2(v-T.y,S-T.x)/Math.PI;i=(i+360)%360;if(n===PieLabelPosition.Radial||n===PieLabelPosition.Circular){if(n===PieLabelPosition.Radial)i>90&&i<270&&(i+=180);else{i>180&&i<360&&(i+=180);i-=90}(e=FlexChartBase._renderRotatedText(t,L,T,g,p,T,i,a).getBBox()).left=e.x;e.top=e.y}else e=FlexChartBase._renderText(t,L,T,g,p,a);s.border&&t.drawRect(e.left-2,e.top-2,e.width+4,e.height+4,h);if(c){const e=new Point(S+x+d*Math.cos(u),v+b+d*Math.sin(u));t.drawLine(T.x,T.y,e.x,e.y,l)}}t.cssPriority=!0}}t.endGroup()}_drawSlice(t,e,i,s,n,r,a,h,l,o){var c;if(s)if(h>0){0!=o&&t.drawDonutSegment(n,r,a,h,l-o,o);(c=new _DonutSegment(new Point(n,r),a,h,l-o,o,this.startAngle)).tag=i;this._areas.push(c)}else{0!=o&&t.drawPieSegment(n,r,a,l-o,o);(c=new _PieSegment(new Point(n,r),a,l-o,o,this.startAngle)).tag=i;this._areas.push(c)}else{if(h>0){0!=o&&t.drawDonutSegment(n,r,a,h,l,o);(c=new _DonutSegment(new Point(n,r),a,h,l,o,this.startAngle)).tag=i;this._areas.push(c)}else{0!=o&&t.drawPieSegment(n,r,a,l,o);(c=new _PieSegment(new Point(n,r),a,l,o,this.startAngle)).tag=i;this._areas.push(c)}l+=o}c&&(c.gi=e)}_measureLegendItem(t,e){var i=new Size;i.width=Series._LEGEND_ITEM_WIDTH;i.height=Series._LEGEND_ITEM_HEIGHT;if(e){const s=t.measureString(e,FlexChartBase._CSS_LABEL,FlexChartBase._CSS_LEGEND);i.width+=s.width;i.height<s.height&&(i.height=s.height)}i.width+=3*Series._LEGEND_ITEM_MARGIN;i.height+=2*Series._LEGEND_ITEM_MARGIN;return i}_drawLegendItem(t,e,i,s){t.strokeWidth=1;var n=Series._LEGEND_ITEM_MARGIN,r=null,a=null;null===r&&(r=this._getColorLight(i));null===a&&(a=this._getColor(i));t.fill=r;t.stroke=a;var h=e.top+.5*e.height,l=Series._LEGEND_ITEM_WIDTH,o=Series._LEGEND_ITEM_HEIGHT;t.drawRect(e.left+n,h-.5*o,l,o,null);null!=s&&FlexChartBase._renderText(t,s.toString(),new Point(e.left+o+2*n,h),0,1,FlexChartBase._CSS_LABEL)}_getLabelContent(t,e){return isString(e)?this._keywords.replace(e,t):isFunction(e)?e(t):null}_select(t,e=!1){this._highlight(!1,this._selectionIndex);this._selectionIndex=t;if(this.selectionMode==SelectionMode.Point){const e=this._cv;if(e){this._notifyCurrentChanged=!1;e.moveCurrentToPosition(t);this._notifyCurrentChanged=!0}}if(null==t){this._selectedIndex=-1;this.invalidate()}else if(this.isAnimated&&this.selectedItemPosition!=Position.None||!(this.selectedItemOffset>0||this.selectedItemPosition!=Position.None))this._highlight(!0,this._selectionIndex,e);else{this._selectedIndex=t;this.invalidate()}this.onSelectionChanged()}_highlightCurrent(){if(this.selectionMode!=SelectionMode.None){let t=-1;const e=this._cv;e&&(t=e.currentPosition);this._highlight(!0,t)}}_highlight(t,e,i=!1){if(this.selectionMode==SelectionMode.Point&&null!=e&&e>=0)if(t){const n=[];for(let r=0;r<this._pieGroups.length;r++){const a=this._pels[e+r*this._values[0].length];if(a){a.parentNode.appendChild(a);var s=this._find(a,["ellipse"]);this._highlightItems(this._find(a,["path","ellipse"]),FlexChartBase._CSS_SELECTION,t)}const h=this._angles[e+r*this._values[0].length];if(this.selectedItemPosition!=Position.None&&0!=h){let t=0;this.selectedItemPosition==Position.Left?t=180:this.selectedItemPosition==Position.Top?t=-90:this.selectedItemPosition==Position.Bottom&&(t=90);let e=t*Math.PI/180-h;e*=180/Math.PI;if(i&&this.isAnimated)n.push(e);else{this._rotationAngles[r]=e;this._pieGroups[r].transform.baseVal.getItem(0).setRotate(e,this._centers[r].x,this._centers[r].y)}}const l=this.selectedItemOffset;if(l>0&&s&&0==s.length){this._selectedOffset.x=Math.cos(h)*l*this._radius;const t=this._selectedOffset.x;this._selectedOffset.y=Math.sin(h)*l*this._radius;const e=this._selectedOffset.y;a&&a.setAttribute("transform",`translate(${t.toFixed()},${e.toFixed()})`)}this._selectedIndex=e}n.length>0&&this._animateSelectionAngle(n,.5)}else{for(let i=0;i<this._pieGroups.length;i++){const s=this._pels[e+i*this._values[0].length];if(s){s.parentNode.insertBefore(s,s.parentNode.childNodes.item(e));s.removeAttribute("transform");this._highlightItems(this._find(s,["path","ellipse"]),FlexChartBase._CSS_SELECTION,t)}}this._selectedIndex==e&&(this._selectedIndex=-1)}}_animateSelectionAngle(t,e){var i=this._pieGroups;this._selectionAnimationID&&clearInterval(this._selectionAnimationID);this._selectionAnimationID=animate(e=>{if(i==this._pieGroups){for(let s=0;s<i.length;s++){let n=_Math.clampAngle(this._rotationAngles[s]);const r=_Math.clampAngle(t[s])-n,a=n;this._rotationAngles[s]=n=a+r*e;i[s].transform.baseVal.getItem(0).setRotate(n,this._centers[s].x,this._centers[s].y)}1==e&&clearInterval(this._selectionAnimationID);e>.99&&(this.selectedItemOffset>0||this.selectedItemPosition!=Position.None)&&this.invalidate()}},1e3*e)}_getHitTestItem(t){var e=null,i=null;(e=null!=this._cv?this._cv.items:this.itemsSource)&&t<e.length&&(i=e[t]);return i}_getHitTestValue(t,e){null==e&&(e=0);return this._values[e][t]}_getHitTestLabel(t){return this._labels[t]}}FlexPie._MARGIN=4;FlexPie._CSS_GROUP_TITLE=FlexChartClsNames.label;class _Math{static clampAngle(t,e=0){var i=(t+180)%360-180;i<-180+(e<0?e+360:e)&&(i+=360);return i}}export class _PieSegment{constructor(t,e,i,s,n=0){this._isFull=!1;this._center=t;this._radius=e;this._originAngle=i;this._originSweep=s;s>=2*Math.PI&&(this._isFull=!0);this._sweep=.5*s*180/Math.PI;this._angle=_Math.clampAngle(180*i/Math.PI+this._sweep);this._radius2=e*e;this._startAngle=n}contains(t){var e=t.x-this._center.x,i=t.y-this._center.y;if(e*e+i*i<=this._radius2){const t=180*Math.atan2(i,e)/Math.PI,s=_Math.clampAngle(this._angle,this._startAngle)-_Math.clampAngle(t,this._startAngle);if(this._isFull||Math.abs(s)<=this._sweep)return!0}return!1}distance(t){if(this.contains(t))return 0;var e=t.x-this._center.x,i=t.y-this._center.y,s=e*e+i*i,n=180*Math.atan2(i,e)/Math.PI,r=_Math.clampAngle(this._angle,this._startAngle)-_Math.clampAngle(n,this._startAngle);if(this._isFull||Math.abs(r)<=this._sweep)return Math.sqrt(s)-this._radius;const a=this.center.clone();a.x+=this.radius*Math.cos(this._originAngle);a.y+=this.radius*Math.sin(this._originAngle);const h=this.center.clone();h.x+=this.radius*Math.cos(this._originAngle+this._originSweep);h.y+=this.radius*Math.sin(this._originAngle+this._originSweep);const l=FlexChartCore._dist(t,this.center,a),o=FlexChartCore._dist(t,this.center,h);return Math.min(l,o)}get center(){return this._center}get radius(){return this._radius}get langle(){return this._angle}get angle(){return this._originAngle}get sweep(){return this._originSweep}}export class _DonutSegment{constructor(t,e,i,s,n,r=0){this._isFull=!1;this._center=t;this._radius=e;this._iradius=i;this._originAngle=s;this._originSweep=n;n>=2*Math.PI&&(this._isFull=!0);this._sweep=.5*n*180/Math.PI;this._angle=_Math.clampAngle(180*s/Math.PI+this._sweep);this._radius2=e*e;this._iradius2=i*i;this._startAngle=r}contains(t){var e=t.x-this._center.x,i=t.y-this._center.y,s=e*e+i*i;if(s>=this._iradius2&&s<=this._radius2){const t=180*Math.atan2(i,e)/Math.PI,s=_Math.clampAngle(this._angle,this._startAngle)-_Math.clampAngle(t,this._startAngle);if(this._isFull||Math.abs(s)<=this._sweep)return!0}return!1}distance(t){if(this.contains(t))return 0;const e=this.center.clone();e.x+=this.radius*Math.cos(this._originAngle);e.y+=this.radius*Math.sin(this._originAngle);const i=this.center.clone();i.x+=this._iradius*Math.cos(this._originAngle);i.y+=this._iradius*Math.sin(this._originAngle);const s=this.center.clone();s.x+=this.radius*Math.cos(this._originAngle+this._originSweep);s.y+=this.radius*Math.sin(this._originAngle+this._originSweep);const n=this.center.clone();n.x+=this._iradius*Math.cos(this._originAngle+this._originSweep);n.y+=this._iradius*Math.sin(this._originAngle+this._originSweep);const r=FlexChartCore._dist(t,e,i),a=FlexChartCore._dist(t,s,n);return Math.min(r,a)}get center(){return this._center}get radius(){return this._radius}get langle(){return this._angle}get angle(){return this._originAngle}get sweep(){return this._originSweep}get innerRadius(){return this._iradius}}export var AxisType;!function(t){t[t.X=0]="X";t[t.Y=1]="Y"}(AxisType||(AxisType={}));export var OverlappingLabels;!function(t){t[t.Auto=0]="Auto";t[t.Show=1]="Show"}(OverlappingLabels||(OverlappingLabels={}));export var TickMark;!function(t){t[t.None=0]="None";t[t.Outside=1]="Outside";t[t.Inside=2]="Inside";t[t.Cross=3]="Cross"}(TickMark||(TickMark={}));export var AxisGroupsDisplay;!function(t){t[t.None=0]="None";t[t.Show=1]="Show";t[t.ShowGrid=2]="ShowGrid"}(AxisGroupsDisplay||(AxisGroupsDisplay={}));export class Axis{constructor(t){this._GRIDLINE_WIDTH=1;this._LINE_WIDTH=1;this._TICK_WIDTH=1;this._TICK_HEIGHT=4;this._TICK_OVERLAP=1;this._TICK_LABEL_DISTANCE=4;this._minorGrid=!1;this._isMinimumAuto=!0;this._isMaximumAuto=!0;this._labels=!0;this._isTimeAxis=!1;this._labelPadding=5;this._actualLabels=[];this._labelMin=!1;this._labelMax=!1;this.rangeChanged=new Event;this._customConvert=null;this._customConvertBack=null;this.__uniqueId=Axis._id++;t==Position.BottomLeft||t==Position.BottomRight||t==Position.TopLeft||t==Position.TopRight||t==Position.LeftTop||t==Position.LeftBottom||t==Position.RightTop||t==Position.RightBottom?this._position=void 0:this._position=t;this._position==Position.Bottom||this._position==Position.Top?this._axisType=AxisType.X:this._position!=Position.Left&&this._position!=Position.Right||(this._axisType=AxisType.Y);this._minorTickMarks=TickMark.None;this._overlap=OverlappingLabels.Auto}get hostElement(){return this._hostElement}get actualMin(){return this._isTimeAxis?new Date(this._actualMin):this._actualMin}get actualMax(){return this._isTimeAxis?new Date(this._actualMax):this._actualMax}get min(){return this._min}set min(t){if(t!=this._min){this._isMinimumAuto=!1;isDate(t)?this._min=asDate(t,!0):this._min=asNumber(t,!0);this._invalidate()}}get max(){return this._max}set max(t){if(t!=this._max){this._isMaximumAuto=!1;isDate(t)?this._max=asDate(t,!0):this._max=asNumber(t,!0);this._invalidate()}}get reversed(){return this._reversed}set reversed(t){if(this._reversed!=t){this._reversed=asBoolean(t);this._invalidate()}}get position(){return this._position}set position(t){if((t=asEnum(t,Position,!1))!=this._position){t==Position.BottomLeft||t==Position.BottomRight||t==Position.TopLeft||t==Position.TopRight||t==Position.LeftTop||t==Position.LeftBottom||t==Position.RightTop||t==Position.RightBottom?this._position=this._axisType==AxisType.X?Position.Bottom:this._axisType==AxisType.Y?Position.Left:void 0:this._position=t;this._position==Position.Bottom||this._position==Position.Top?null==this._axisType?this._axisType=AxisType.X:this._axisType==AxisType.Y&&(this._position=Position.Left):this._position!=Position.Left&&this._position!=Position.Right||(null==this._axisType?this._axisType=AxisType.Y:this._axisType==AxisType.X&&(this._position=Position.Bottom));this._invalidate()}}get majorUnit(){return this._majorUnit}set majorUnit(t){if(t!=this._majorUnit){this._majorUnit=asNumber(t,!0);this._invalidate()}}get minorUnit(){return this._minorUnit}set minorUnit(t){if(t!=this._minorUnit){this._minorUnit=asNumber(t,!0);this._invalidate()}}get name(){return this._name}set name(t){t!=this._name&&(this._name=asString(t,!0))}get title(){return this._title}set title(t){if(t!=this._title){this._title=asString(t,!0);this._invalidate()}}get format(){return this._format}set format(t){if(t!=this._format){this._format=asString(t,!0);this._invalidate()}}get majorGrid(){return this._majorGrid}set majorGrid(t){if(t!=this._majorGrid){this._majorGrid=asBoolean(t,!0);this._invalidate()}}get majorTickMarks(){return this._majorTickMarks}set majorTickMarks(t){if((t=asEnum(t,TickMark,!0))!=this._majorTickMarks){this._majorTickMarks=t;this._invalidate()}}get minorGrid(){return this._minorGrid}set minorGrid(t){if(t!=this._minorGrid){this._minorGrid=asBoolean(t,!0);this._invalidate()}}get minorTickMarks(){return this._minorTickMarks}set minorTickMarks(t){if((t=asEnum(t,TickMark,!0))!=this._minorTickMarks){this._minorTickMarks=t;this._invalidate()}}get axisLine(){return void 0===this._axisLine?this.axisType==AxisType.X:this._axisLine}set axisLine(t){if(t!=this._axisLine){this._axisLine=asBoolean(t,!0);this._invalidate()}}get labels(){return this._labels}set labels(t){if(t!=this._labels){this._labels=asBoolean(t,!0);this._invalidate()}}get labelAlign(){return this._labelAlign}set labelAlign(t){if(t!=this._labelAlign){this._labelAlign=asString(t,!0);this._invalidate()}}get labelAngle(){return this._labelAngle}set labelAngle(t){if(t!=this._labelAngle){this._labelAngle=asNumber(t,!0);this._invalidate()}}get labelMin(){return this._labelMin}set labelMin(t){if(t!=this._labelMin){this._labelMin=asBoolean(t,!0);this._invalidate()}}get labelMax(){return this._labelMax}set labelMax(t){if(t!=this._labelMax){this._labelMax=asBoolean(t,!0);this._invalidate()}}get origin(){return this._origin}set origin(t){if(t!=this._origin){this._origin=asNumber(t,!0);this._invalidate()}}get overlappingLabels(){return this._overlap}set overlappingLabels(t){if((t=asEnum(t,OverlappingLabels,!0))!=this._overlap){this._overlap=t;this._invalidate()}}get itemsSource(){return this._items}set itemsSource(t){if(this._items!=t){if(this._cv){this._cv.collectionChanged.removeHandler(this._cvCollectionChanged,this);this._cv=null}this._items=t;this._cv=asCollectionView(t);null!=this._cv&&this._cv.collectionChanged.addHandler(this._cvCollectionChanged,this)}}get binding(){return this._binding}set binding(t){if(t!=this._binding){this._binding=asString(t,!0);this._invalidate()}}get itemFormatter(){return this._ifmt}set itemFormatter(t){if(this._ifmt!=t){this._ifmt=asFunction(t,!0);this._invalidate()}}get logBase(){return this._logBase}set logBase(t){if(t!=this._logBase){this._logBase=asNumber(t,!0,!0);this._invalidate()}}get groupsOptions(){return this._groupsOptions}set groupsOptions(t){if(t!=this._groupsOptions){this._groupsOptions=t;this._invalidate()}}get axisLabels(){return this._actualLabels}_getLogBase(){return this._chart&&this._chart._stacking===Stacking.Stacked100pc?0:this.logBase}_isLogAxis(){const t=this._getLogBase();return null!=t&&t>0}get plotArea(){return this._parea}set plotArea(t){if(t!=this._parea){this._parea=asType(t,PlotArea,!0);this._invalidate()}}get labelPadding(){return this._labelPadding}set labelPadding(t){if(t!=this._labelPadding){this._labelPadding=asNumber(t,!0,!0);this._invalidate()}}get _groupClass(){return this.axisType===AxisType.X?FlexChartCore._CSS_AXIS_X:FlexChartCore._CSS_AXIS_Y}onRangeChanged(t){this.rangeChanged.raise(this,t)}_getPosition(){if(this.axisType==AxisType.X){if(this.position==Position.Auto)return Position.Bottom}else if(this.axisType==AxisType.Y&&this.position==Position.Auto)return Position.Left;return this.position}_isOverlapped(t,e,i,s){var n=this._lbls;if(null!=n&&n.length>1){const s=n.length,r=this._values&&this._values.length==s?this._values:null;let a=0,h=0;for(let l=0;l<s;l++){const s=r?r[l]:l;if(s>=this._actualMin&&s<=this._actualMax){const r=e*(s-this._actualMin)/(this._actualMax-this._actualMin),o=t.measureString(n[l],i,this._groupClass);if(this.axisType==AxisType.X){if(l>0&&Math.abs(r-a)<.5*(o.width+h))return!0;a=r;h=o.width}else this.axisType,AxisType.Y}}}return!1}_getHeight(t,e){this._actualAngle=null;const i=FlexChartCore._CSS_LABEL,s=FlexChartCore._CSS_TITLE;let n=.1*this._getActualRange();const r=this._lbls;let a=this.labelAngle;if(this.labels&&this._chart._getChartType()!==ChartType.Funnel){n=this._updateAutoFormat(n);if(null!=r&&r.length>0){const s=r.length,n=this._values&&this._values.length==s?this._values:null;this._annoSize=new Size;for(let e=0;e<s;e++){const s=n?n[e]:e;if(s>=this._actualMin&&s<=this._actualMax){let n=r[e],a=i;if(this.itemFormatter){const e=this._getFormattedItem(t,s,n,new Point,i,!0);n=e.text;a=e.cls}const h=t.measureString(n,a,this._groupClass);h.width>this._annoSize.width&&(this._annoSize.width=h.width);h.height>this._annoSize.height&&(this._annoSize.height=h.height)}}null==a&&this.axisType==AxisType.X&&(this._isOverlapped(t,Math.max(10,e-this._annoSize.width),i,this.axisType)?a=this._actualAngle=-45:this._actualAngle=0)}else if(isNumber(this.majorUnit)&&this._axisType===AxisType.Y&&this.itemFormatter){const e=[],s=[];this._annoSize=new Size;this._getAutoLbsAndVals(e,s);for(let e=0;e<s.length;e++){const n=s[e];let r=this._formatValue(n),a=i;r=this._getFormattedItem(t,n,r,new Point,i,!0).text;a=i;const h=t.measureString(r,a,this._groupClass);h.width>this._annoSize.width&&(this._annoSize.width=h.width);h.height>this._annoSize.height&&(this._annoSize.height=h.height)}}else{let e=this._actualMin-n,s=this._formatValue(e),r=i;if(this.itemFormatter){s=this._getFormattedItem(t,e,s,new Point,i,!0).text;r=i}let a=t.measureString(s,r,this._groupClass);this._annoSize=a;e=this._actualMax+n;s=this._formatValue(e);r=i;if(this.itemFormatter){s=this._getFormattedItem(t,e,s,new Point,i,!0).text;r=i}a=t.measureString(s,r,this._groupClass);a.width>this._annoSize.width&&(this._annoSize.width=a.width);a.height>this._annoSize.height&&(this._annoSize.height=a.height)}this._annoSizeBase=new Size(this._annoSize.width,this._annoSize.height);if(a){a>90?a=90:a<-90&&(a=-90);const t=a*Math.PI/180,e=this._annoSize.width,i=this._annoSize.height;this._annoSize.width=e*Math.abs(Math.cos(t))+i*Math.abs(Math.sin(t));this._annoSize.height=e*Math.abs(Math.sin(t))+i*Math.abs(Math.cos(t));this._actualAngle=a}}else{this._annoSize=new Size(8,8);this._annoSizeBase=new Size(this._annoSize.width,this._annoSize.height)}let h=0;if(this.labels){h=2*(this._labelPadding||5);this._axisType==AxisType.X?h+=this._annoSize.height:h+=this._annoSize.width+this._TICK_LABEL_DISTANCE+2}const l=this._TICK_HEIGHT;let o=this._TICK_OVERLAP,c=this.majorTickMarks;c==TickMark.Outside?o=1:c==TickMark.Inside?o=-1:c==TickMark.Cross&&(o=0);null==c&&(c=TickMark.Outside);c!=TickMark.None&&(h+=.5*(1+o)*l);if(this._title){const e=this._title;this._szTitle=t.measureString(e,s,this._groupClass);h+=this._szTitle.height}else this._szTitle=void 0;if(this._lbls&&this.groupsOptions&&this.groupsOptions.display!==AxisGroupsDisplay.None){this._groupsPanel||(this._groupsPanel=new _AxisGroups(this));this._groupsPanel.createGroups();h+=this._groupsPanel.getHeight(t)}t.fontSize=null;return h}_updateAutoFormat(t){if(this._isTimeAxis){const e=this.format,i=.001*this._getActualRange()/10,s=new _timeSpan(i*_timeSpan.TicksPerSecond),n=isNumber(this._majorUnit)?_timeSpan.fromDays(this._majorUnit):_timeHelper.NiceTimeSpan(s,e);e||(this._tfmt=_timeHelper.GetTimeDefaultFormat(1e3*n.TotalSeconds,0));t=n.TotalSeconds}return t}_getActualRange(){return this._actualMax-this._actualMin}_updateActualLimitsByChartType(t,e,i){if(t&&t.length>0&&!this._isTimeAxis){const t=this._chart._getChartType();if(t!=ChartType.Column&&t!=ChartType.Bar){e-=.5;i+=.5}}return{min:e,max:i}}_updateActualLimits(t,e,i,s=null,n=null){var r=this._actualMin,a=this._actualMax;this._isTimeAxis=t==DataType.Date;var h=this._updateActualLimitsByChartType(s,e,i);e=h.min;i=h.max;var l=this._min,o=this._max;isDate(l)&&(l=l.valueOf());isDate(o)&&(o=o.valueOf());let c=this._getSeries(),_=this._chart&&(null!=c&&void 0!==c._getChartType()||this._chart._stacking!==Stacking.Stacked100pc);_||(_=this._chart._isRotated()?this.axisType==AxisType.Y:this.axisType==AxisType.X);this._actualMin=null!=l&&_?l:e;const d=this._actualMin;this._actualMax=null!=o&&_?o:i;if(d==this._actualMax)if(void 0!==l&&void 0===o)this._actualMax+=1;else if(void 0===l&&void 0!==o)this._actualMin-=1;else if(0===d)this._actualMax=1;else{const t=Math.abs(d);if(t<1){this._actualMin-=t;this._actualMax+=t}else{this._actualMin-=1;this._actualMax+=1}}if(this._getLogBase()>0){const t=this.logBase,e=Math.log(t);if(!this._max){const i=Math.ceil(Math.log(this._actualMax)/e);this._actualMax=Math.pow(t,i)}if(!this._min){const i=Math.floor(Math.log(this._actualMin)/e);this._actualMin=Math.pow(t,i)}(this._actualMin<=0||!isNumber(this._actualMin))&&(this._actualMin=1);this._actualMax<this._actualMin?this._actualMax=this._actualMin+1:this._actualMax===this._actualMin&&(this._actualMin=.1*this._actualMax)}(r!=this._actualMin&&(isNumber(r)||isNumber(this._actualMin))||a!=this._actualMax&&(isNumber(a)||isNumber(this._actualMax)))&&this.onRangeChanged();if(this._items){this._values=[];this._lbls=[];const t=this._items.length;let e="value",i="text";if(this.binding){const t=this.binding.split(",");if(2==t.length){e=t[0];i=t[1]}}for(let s=0;s<t;s++){const t=this._items[s],n=t[e];if(isNumber(n)){this._values.push(n);this._lbls.push(t[i])}else if(isDate(n)){this._values.push(n.getTime());this._lbls.push(t[i])}}}else{this._lbls=s;this._values=n}}_layout(t,e){var i=this.axisType==AxisType.Y;this._plotrect=e;this._axrect=i?new Rect(t.left,t.top,t.height,t.width):t;this._groupsPanel&&this._groupsPanel.layout()}_hasVisibileSeries(){for(var t,e=this._chart.series,i=0,s=e.length;i<s;i++)if((t=e[i].visibility)==SeriesVisibility.Plot||t==SeriesVisibility.Visible)return!0;return!1}_getSeries(){if(this._chart){let t=this._chart.series,e=0,i=t.length;for(;e<i;e++)if(t[e].axisY==this||t[e].axisX==this)return t[e]}return null}_render(t){if(this.position==Position.None)return;if(!this._hasVisibileSeries())return;this.axisLabels.length=0;this._vals={};var e=0;this.labelAngle&&((e=this.labelAngle)>90?e=90:e<-90&&(e=-90));null==this.labelAngle&&null!=this._actualAngle&&(e=this._actualAngle);var i=FlexChartCore._FG;let s=[],n=!1;var r=this._getActualRange();if(isNumber(r)){let r=[];this._rects=[];this._vals.major=s;this._vals.hasLbls=[];if(this._lbls&&this._lbls.length>0){r=this._lbls;if(0==this._values.length){n=!0;for(let t=0;t<r.length;t++)s.push(t)}else s=this._values}else this._getAutoLbsAndVals(r,s);const a=Math.min(s.length,r.length);t.textFill=i;const h=this._TICK_HEIGHT;let l=this._TICK_OVERLAP,o=this.majorTickMarks;null==o&&(o=TickMark.Outside);o==TickMark.Outside?l=1:o==TickMark.Inside?l=-1:o==TickMark.Cross&&(l=0);const c=.5*(l-1)*h,_=.5*(1+l)*h;if(this._isTimeAxis&&a>=2){if(s[1]-s[0]>864e5){null==this._min&&(this._actualMin=_timeHelper.FloorDay(this._actualMin));null==this._max&&(this._actualMax=_timeHelper.CeilDay(this._actualMax))}}for(let i=0;i<a;i++){let a=!0;const h=s[i],l=r[i];let d=this.labels;d&&(n||this.itemsSource)&&this.majorUnit&&i%this.majorUnit!=0&&(d=!1);if(h>=this._actualMin&&h<=this._actualMax){const s=t.textFill;a=this._renderLabelsAndTicks(t,i,h,l,e,o,d,c,_);t.textFill=s}this._vals.hasLbls.push(a);a&&this.axisLabels.push(l)}}(this.minorGrid||this.minorTickMarks!=TickMark.None)&&this._renderMinor(t,s,n);t.stroke=i;t.fontSize=null;this._renderLineAndTitle(t);this._lbls&&this.groupsOptions&&this.groupsOptions.display!==AxisGroupsDisplay.None&&this._groupsPanel&&this._groupsPanel.render(t);t.stroke=null;t.fontSize=null;t.textFill=null;t.strokeWidth=null}_getAutoLbsAndVals(t,e){var i=this._actualMax-this._actualMin,s=this._calcMajorUnit();0==s&&(s=.1*this._niceTickNumber(i));var n=Math.floor(this._actualMin/s)*s;n<this._actualMin&&(n+=s);var r=Math.min(Axis.MAX_MAJOR,Math.floor(i/s)+1);if(this._isTimeAxis){this._createTimeLabels(n,r,e,t);this._addMinMaxLabels(e,t)}else if(this._getLogBase()){this._createLogarithmicLabels(this._actualMin,this._actualMax,this.majorUnit,e,t,!0);this._addMinMaxLabels(e,t)}else{this._createLabels(n,r,s,e,t);this._addMinMaxLabels(e,t)}}_renderLineAndTitle(t){var e=this._getPosition(),i=this.axisType==AxisType.Y,s=e!=Position.Top&&e!=Position.Right,n=FlexChartCore._CSS_TITLE,r=FlexChartCore._CSS_LINE;if(i)if(s){if(this._title){const e=new Point(this._axrect.left+.5*this._szTitle.height,this._axrect.top+.5*this._axrect.height);FlexChartCore._renderRotatedText(t,this._title,e,1,1,e,-90,n,this._groupClass)}this.axisLine&&t.drawLine(this._axrect.right,this._axrect.top,this._axrect.right,this._axrect.bottom,r)}else{if(this._title){const e=new Point(this._axrect.right-.5*this._szTitle.height,this._axrect.top+.5*this._axrect.height);FlexChartCore._renderRotatedText(t,this._title,e,1,1,e,90,n,this._groupClass)}this.axisLine&&t.drawLine(this._axrect.left,this._axrect.top,this._axrect.left,this._axrect.bottom,r)}else if(s){this.axisLine&&t.drawLine(this._axrect.left,this._axrect.top,this._axrect.right,this._axrect.top,r);this._title&&FlexChartCore._renderText(t,this._title,new Point(this._axrect.left+.5*this._axrect.width,this._axrect.bottom),1,2,n)}else{this.axisLine&&t.drawLine(this._axrect.left,this._axrect.bottom,this._axrect.right,this._axrect.bottom,r);this._title&&FlexChartCore._renderText(t,this._title,new Point(this._axrect.left+.5*this._axrect.width,this._axrect.top),1,0,n)}}_renderMinor(t,e,i){var s=this._getPosition(),n=this.axisType==AxisType.Y,r=s!=Position.Top&&s!=Position.Right;this._getLogBase()?this._createLogarithmicMinors(t,e,n,r,i):this._createMinors(t,e,n,r,i)}_renderRotatedText(t,e,i,s,n,r,a,h,l,o,c){if(this.itemFormatter){const n=this._getFormattedItem(t,e,i,s,l);if(n){i=n.text;l=n.cls}else i=null}FlexChartCore._renderRotatedText(t,i,s,n,r,a,h,l,o,c)}_getFormattedItem(t,e,i,s,n,r=!1){if(this.itemFormatter){const a=s.clone();this._plotrect&&(this.axisType==AxisType.X?this.position==Position.Top?a.y=this._plotrect.top:a.y=this._plotrect.bottom:this.position==Position.Right?a.x=this._plotrect.right:a.x=this._plotrect.left);let h={val:e,text:i,pos:a,cls:n};r&&(t.readOnly=!0);h=this.itemFormatter(t,h);r&&(t.readOnly=!1);return h}}_renderLabelsAndTicks(t,e,i,s,n,r,a,h,l){var o=this._getPosition(),c=!1,_=this.axisType==AxisType.Y,d=o!=Position.Top&&o!=Position.Right,u=this.labelPadding||5,g=this._TICK_WIDTH,p=this._getLabelAlign(_),f=FlexChartCore._CSS_LABEL,m=FlexChartCore._CSS_GRIDLINE,x=FlexChartCore._CSS_TICK,b=FlexChartCore._FG,y=FlexChartCore._FG,S=this._GRIDLINE_WIDTH,v=i!=this._actualMin&&this.majorGrid;if(_){const e=this.convert(i);if(v){t.stroke=b;t.strokeWidth=S;t.drawLine(this._plotrect.left,e,this._plotrect.right,e,m)}t.stroke=y;t.strokeWidth=g;if(d){if(a){c=!0;const r=new Point(this._axrect.right-l-this._TICK_LABEL_DISTANCE-u,e);n>0?90==n?this._renderRotatedText(t,i,s,r,1,0,r,n,f,this._groupClass):this._renderRotatedText(t,i,s,r,2,1,r,n,f,this._groupClass):n<0?-90==n?this._renderRotatedText(t,i,s,r,1,2,r,n,f,this._groupClass):this._renderRotatedText(t,i,s,r,2,1,r,n,f,this._groupClass):c=this._renderLabel(t,i,s,r,2,p,f)}r!=TickMark.None&&c&&t.drawLine(this._axrect.right-h,e,this._axrect.right-l,e,x)}else{if(a){c=!0;const r=new Point(this._axrect.left+l+this._TICK_LABEL_DISTANCE+u,e);n>0?90==n?this._renderRotatedText(t,i,s,r,1,2,r,n,f,this._groupClass):this._renderRotatedText(t,i,s,r,0,1,r,n,f,this._groupClass):n<0?-90==n?this._renderRotatedText(t,i,s,r,1,0,r,n,f,this._groupClass):this._renderRotatedText(t,i,s,r,0,1,r,n,f,this._groupClass):c=this._renderLabel(t,i,s,r,0,p,f)}r!=TickMark.None&&c&&t.drawLine(this._axrect.left+h,e,this._axrect.left+l,e,x)}}else{let e=this.convert(i);if(v&&a){t.stroke=b;t.strokeWidth=S;t.drawLine(e,this._plotrect.top,e,this._plotrect.bottom,m)}this.overlappingLabels==OverlappingLabels.Auto&&this._xCross(e)&&(a=!1);t.stroke=y;t.strokeWidth=g;if(d){if(a){const r=new Point(e,this._axrect.top+l+u);c=0!=n?this._renderRotatedLabel(t,i,s,r,p,n,f,d):this._renderLabel(t,i,s,r,p,0,f)}if(r!=TickMark.None&&c){e=this.convert(i);t.drawLine(e,this._axrect.top+h,e,this._axrect.top+l,x)}}else{if(a){const r=new Point(e,this._axrect.bottom-l-u);c=0!=n?this._renderRotatedLabel(t,i,s,r,p,n,f,d):this._renderLabel(t,i,s,r,p,2,f)}if(r!=TickMark.None&&c){e=this.convert(i);t.drawLine(e,this._axrect.bottom-h,e,this._axrect.bottom-l,x)}}}return c}_xCross(t){var e=this._rects.length;for(let i=0;i<e;i++){const e=this._rects[i];if(t>=e.left&&t<=e.right)return!0}return!1}_createMinors(t,e,i,s,n){if(e){const r=this.majorUnit?this._isTimeAxis?24*this.majorUnit*3600*1e3:this.majorUnit:e.length>1?e[1]-e[0]:e[0],a=isNumber(this.minorUnit)?this._isTimeAxis?24*this.minorUnit*3600*1e3:this.minorUnit:.5*r;if(a<=0)return;const h=[];for(let t=e[0];t>this._actualMin&&h.length<Axis.MAX_MINOR;t-=a)-1==e.indexOf(t)&&h.push(t);for(let t=e[0]+a;t<this._actualMax&&h.length<Axis.MAX_MINOR;t+=a)(-1==e.indexOf(t)||n&&this.majorUnit&&t%this.majorUnit!=0)&&h.push(t);this._renderMinors(t,h,i,s)}}_createLogarithmicMinors(t,e,i,s,n){if(e&&(!this.minorUnit||this.minorUnit<this._getLogBase())){let n=this.logBase;this.majorUnit>n&&(n=this.majorUnit);if(0==e.length){const t=Math.log(n),i=Math.floor(Math.log(this._actualMin)/t),s=Math.ceil(Math.log(this.actualMax)/t);if(this.majorUnit>0){e.push(Math.pow(n,i));e.push(Math.pow(n,s))}else{e.push(Math.pow(n,s));e.push(Math.pow(n,i))}}this.minorUnit||(this.minorUnit=n-1<1?.2*(n-1):.2*n);const r=[];if(this.majorUnit>0){for(let t=e[0]-e[0]/n*this.minorUnit;t>=this._actualMin&&r.length<Axis.MAX_MINOR;t-=e[0]/n*this.minorUnit)r.push(t);for(let t=0;t<e.length-1;t++)for(let i=e[t]+e[t]*this.minorUnit;i<e[t+1]&&r.length<Axis.MAX_MINOR;i+=e[t]*this.minorUnit)i>=this._actualMin&&i<=this._actualMax&&r.push(i);for(let t=e[e.length-1]+e[e.length-1]*this.minorUnit;t<=this._actualMax&&r.length<Axis.MAX_MINOR;t+=e[e.length-1]*this.minorUnit)r.push(t)}else{for(let t=e[e.length-1]-e[e.length-1]/n*this.minorUnit;t>=this._actualMin&&r.length<Axis.MAX_MINOR;t-=e[e.length-1]/n*this.minorUnit)r.push(t);for(let t=0;t<e.length-1;t++)for(let i=e[t]-e[t+1]*this.minorUnit;i>e[t+1]&&r.length<Axis.MAX_MINOR;i-=e[t+1]*this.minorUnit)i>=this._actualMin&&i<=this._actualMax&&r.push(i);for(let t=e[0]+e[0]*this.minorUnit;t<=this._actualMax&&r.length<Axis.MAX_MINOR;t+=e[0]*this.minorUnit)r.push(t)}this._renderMinors(t,r,i,s)}}_renderMinors(t,e,i,s){var n=this._TICK_HEIGHT,r=this._TICK_WIDTH,a=this._TICK_OVERLAP,h=FlexChartCore._FG,l=this.minorTickMarks,o=!0;this._vals.minor=e;l==TickMark.Outside?a=1:l==TickMark.Inside?a=-1:l==TickMark.Cross?a=0:o=!1;var c=.5*(a-1)*n,_=.5*(1+a)*n,d=e?e.length:0,u=this.minorGrid,g=this._plotrect,p=this._GRIDLINE_WIDTH,f=FlexChartCore._FG,m=FlexChartCore._CSS_GRIDLINE_MINOR,x=FlexChartCore._CSS_TICK_MINOR;for(let n=0;n<d;n++)if(e[n]>=this.actualMin&&e[n]<=this.actualMax)if(i){const i=this.convert(e[n]);if(o){t.stroke=h;t.strokeWidth=r;s?t.drawLine(this._axrect.right-c,i,this._axrect.right-_,i,x):t.drawLine(this._axrect.left+c,i,this._axrect.left+_,i,x)}if(u){t.stroke=f;t.strokeWidth=p;t.drawLine(g.left,i,g.right,i,m)}}else{const i=this.convert(e[n]);if(o){t.stroke=h;t.strokeWidth=r;s?t.drawLine(i,this._axrect.top+c,i,this._axrect.top+_,x):t.drawLine(i,this._axrect.bottom-c,i,this._axrect.bottom-_,x)}if(u){t.stroke=f;t.strokeWidth=p;t.drawLine(i,g.top,i,g.bottom,m)}}}_renderLabel(t,e,i,s,n,r,a){var h=!1;if(this.itemFormatter){const n=this._getFormattedItem(t,e,i,s,a);if(n){i=n.text;a=n.cls}else i=null}if(i){const e=this._rects,l=this.overlappingLabels==OverlappingLabels.Auto&&!isNumber(this._actualAngle),o=FlexChartCore._renderText(t,i,s,n,r,a,this._groupClass,null,t=>{if(l){const i=e.length;for(let s=0;s<i;s++)if(FlexChartCore._intersects(e[s],t))return!1}return!0});if(o){o.left+=4;o.width+=8;e.push(o);h=!0}}return h}_renderRotatedLabel(t,e,i,s,n,r,a,h){if(this.itemFormatter){const n=this._getFormattedItem(t,e,i,s,a);if(n){i=n.text;a=n.cls}else i=null}if(i){const e=t.measureString(i,a,this._groupClass),l=.5*e.height,o=.5*e.width*Math.abs(Math.sin(r*Math.PI/180)),c=.5*e.width,_=.5*(e.width*Math.abs(Math.cos(r*Math.PI/180))+e.height*Math.abs(Math.sin(r*Math.PI/180))),d=new Point(s.x,s.y),u=new Point(s.x,s.y);this.labelAlign||(n=90==r||-90==r?1:h?r>0?0:2:r>0?2:0);if(h){s.y+=l+o;d.y+=l+o-.5*e.height}else{s.y-=l+o-e.height;d.y-=l+o-.5*e.height}let g=0;if(2===n){d.x-=_;s.x-=c+_;g=d.x+_-e.height-2}else if(0===n){d.x+=_;s.x-=c-_;g=d.x-_}else{s.x-=c;g=d.x-e.height/2}const p=new Rect(g,u.y,e.height+2,e.width),f=this._rects;if(this.overlappingLabels==OverlappingLabels.Auto){const t=f.length;for(let e=0;e<t;e++)if(FlexChartCore._intersects(f[e],p))return!1}FlexChartCore._renderRotatedText(t,i,s,0,2,d,r,a,this._groupClass);this._rects.push(p);return!0}return!1}_getLabelAlign(t){var e=1;if(this.labelAlign){const i=this.labelAlign.toLowerCase();t?"top"==i?e=0:"bottom"==i&&(e=2):"left"==i?e=0:"right"==i&&(e=2)}return e}_addMinMaxLabels(t,e){if(this.labelMin){const i=this.actualMin;if(isNumberFinite(+i)&&!t.includes(i)){e.splice(0,0,this._formatValue(i));t.splice(0,0,i)}}if(this.labelMax){const i=this.actualMax;if(isNumberFinite(+i)&&!t.includes(i)){e.splice(0,0,this._formatValue(i));t.splice(0,0,i)}}}convert(t,e,i){var s=null==e?this._actualMax:e,n=null==i?this._actualMin:i;if(s==n||!this._axrect)return 0;var r=this._axrect.left,a=this._axrect.width,h=this._axrect.top,l=this._axrect.height;if(null!=this._customConvert){const e=this._customConvert(t,n,s);return this.axisType==AxisType.Y?h+e*l:r+e*a}if(this._getLogBase()){if(t<=0)return NaN;const e=Math.log(s/n);return this._reversed?this.axisType==AxisType.Y?h+Math.log(t/n)/e*l:r+a-Math.log(t/n)/e*a:this.axisType==AxisType.Y?h+l-Math.log(t/n)/e*l:r+Math.log(t/n)/e*a}return this._reversed?this.axisType==AxisType.Y?h+(t-n)/(s-n)*l:r+a-(t-n)/(s-n)*a:this.axisType==AxisType.Y?h+l-(t-n)/(s-n)*l:r+(t-n)/(s-n)*a}convertBack(t){if(this._actualMax==this._actualMin)return 0;var e=this._plotrect.left,i=this._plotrect.width,s=this._plotrect.top,n=this._plotrect.height,r=this._getActualRange(),a=this._getLogBase();if(null!=this._customConvertBack)return this.axisType==AxisType.Y?this._customConvertBack((t-s)/n,this._actualMin,this._actualMax):this._customConvertBack((t-e)/i,this._actualMin,this._actualMax);if(a){let r=0;r=this._reversed?this.axisType==AxisType.Y?(t-s)/n:1-(t-e)/i:this.axisType==AxisType.Y?1-(t-s)/n:(t-e)/i;return Math.pow(a,(Math.log(this._actualMin)+(Math.log(this._actualMax)-Math.log(this._actualMin))*r)/Math.log(a))}return this._reversed?this.axisType==AxisType.Y?this._actualMin+(t-s)*r/n:this._actualMin+(e+i-t)*r/i:this.axisType==AxisType.Y?this._actualMax-(t-s)*r/n:this._actualMin+(t-e)*r/i}get axisType(){var t=this._chart;if(t){if(t.axisX==this)return AxisType.X;if(t.axisY==this)return AxisType.Y}return this._axisType}_getMinNum(){return this._actualMin}_getMaxNum(){return this._actualMax}_getTitleSize(){return this._szTitle?this._szTitle:new Size}_invalidate(){this._chart&&this._chart.invalidate()}_cvCollectionChanged(t,e){this._invalidate()}_createLabels(t,e,i,s,n){for(let r=0;r<e;r++){const e=(t+i*r).toFixed(14),a=parseFloat(e),h=this._formatAxisValue(a),l=n.indexOf(h);if(l>=0&&!isNumber(this.majorUnit)&&!this._format){const t=parseFloat(h);Math.abs(t-a)<Math.abs(t-s[l])&&(s[l]=a)}else{s.push(a);n.push(h)}}}_createLogarithmicLabels(t,e,i,s,n,r){var a=this._getLogBase(),h=Math.log(a),l=Math.floor(Math.log(t)/h),o=Math.ceil(Math.log(e)/h),c=a,_=!0;if(i>0){_=!1;c=i}c<a&&(c=a);var d=(o-l+1)*a/c,u=1;if(r){const t=this._getPosition(),e=this._getAnnoNumber(t==Position.Left||t==Position.Right);d>e?u=Math.floor(d/e+1):_&&(d<=.2*e?c=.2*a:d<=.1*e&&(c=.1*a))}for(let i=l;i<=o;i+=u)if(_){const r=Math.pow(a,i);for(let i=0;i*c<a-1;i++){const a=r*(1+i*c);if(a>=t&&a<=e)if(0==i){s.unshift(a);n&&n.unshift(this._formatValue(a))}else if(!this.minorGrid&&this.minorTickMarks==TickMark.None){s.push(a);n&&n.push(this._formatValue(a))}}}else{const r=Math.pow(c,i);if(r>=t&&r<=e){s.push(r);n&&n.push(this._formatValue(r))}}}_createTimeLabels(t,e,i,s){var n=this._actualMin,r=this._actualMax,a=new Date(n),h=new Date(r),l=this._format,o=this._getAnnoNumber(this._axisType==AxisType.Y);o>10&&(o=10);var c=.001*(this._actualMax-this._actualMin)/o,_=new _timeSpan(c*_timeSpan.TicksPerSecond),d=isNumber(this._majorUnit)?_timeSpan.fromDays(this._majorUnit):_timeHelper.NiceTimeSpan(_,l);l||(this._tfmt=l=_timeHelper.GetTimeDefaultFormat(1e3*d.TotalSeconds,0));var u=d.Ticks,g=_timeHelper.RoundTime(n,d.TotalDays,!1);isNumberFinite(+g)&&(n=g);var p=_timeHelper.RoundTime(r,d.TotalDays,!0);isNumberFinite(+p)&&(r=p);var f=new Date(n);new Date(r);if(d.TotalDays>=365&&!isNumber(this._majorUnit)){(f=new Date(a.getFullYear(),0,1))<a&&f.setFullYear(f.getFullYear()+1);let t=d.TotalDays/365;t-=t%1;for(let e=f;e<=h&&t;e.setFullYear(e.getFullYear()+t)){const t=e.valueOf();i.push(t);s.push(this._formatValue(t))}}else if(d.TotalDays>=30&&!isNumber(this._majorUnit)){(f=new Date(a.getFullYear(),a.getMonth(),1))<a&&f.setMonth(f.getMonth()+1);let t=d.TotalDays/30;t-=t%1;for(let e=f;e<=h;e.setMonth(e.getMonth()+t)){const t=e.valueOf();i.push(t);s.push(this._formatValue(t))}}else{let t=1e3*u/_timeSpan.TicksPerSecond,e=f,n=a.getTime()-e.getTime();n>t&&(e=new Date(e.getTime()+Math.floor(n/t)*t));for(;e<=h&&t;e=new Date(e.getTime()+t)){const t=e.valueOf();i.push(t);s.push(this._formatValue(t))}}}_formatValue(t){if(this._isTimeAxis)return this._format?Globalize.format(new Date(t),this._format):Globalize.format(new Date(t),this._tfmt);if(this._format)return Globalize.format(t,this._format);{const e=t==Math.round(t)?"n0":"n";return Globalize.format(t,e)}}_hitTest(t){return this._groupsPanel?this._groupsPanel.hitTest(t):void 0}_formatAxisValue(t,e){if(this._isTimeAxis)return this._format?Globalize.format(new Date(t),this._format):Globalize.format(new Date(t),this._tfmt);if(this._format)return Globalize.format(t,this._format);if(isNumber(t)){const i=this._findFormat(t,e);return Globalize.format(t,i)}return t}_findFormat(t,e){var i=t==Math.round(t)?"n0":"n";void 0!==e&&(i+=e.toString());if("n"==i){const s=t.toFixed(14),n=s.search(".");if(n>=0){e=1;for(let t=s.length-1;t>=n;t--)if("0"!=s[t]){e=t-n-1;break}i+=e.toString()}}return i}_calcMajorUnit(){var t=this._majorUnit;if(!isNumber(t)){const e=this._getActualRange(),i=this._nicePrecision(e),s=e/this._getAnnoNumber(this.axisType==AxisType.Y);(t=this._niceNumber(2*s,-i,!0))<s&&(t=this._niceNumber(s,1-i,!1));t<s&&(t=this._niceTickNumber(s))>s&&(t*=.5)}return t}_getAnnoNumber(t){var e=t?this._annoSizeBase&&this._annoSizeBase.height:this._annoSize&&this._annoSize.width,i=t?this._axrect&&this._axrect.height:this._axrect&&this._axrect.width;if(e>0&&i>0){let t=Math.floor(i/(e+6));t<=0&&(t=1);return t}return 10}_nicePrecision(t){if(!isNumber(t)||t<=0)return 0;var e,i=Math.log(t)/Math.LN10;e=i>=0?Math.floor(i):Math.ceil(i);var s=t/Math.pow(10,e);if(s<3){e=1-e;(s=t/Math.pow(10,e))<3&&(e+=1)}return e}_niceTickNumber(t){if(0==t)return t;t<0&&(t=-t);var e=Math.log(t)/Math.LN10,i=Math.floor(e),s=t/Math.pow(10,i),n=10;s<=1?n=1:s<=2?n=2:s<=5&&(n=5);return n*Math.pow(10,i)}_niceNumber(t,e,i){if(0==t)return t;t<0&&(t=-t);var s=t/Math.pow(10,e),n=10;i?s<1.5?n=1:s<3?n=2:s<4.5?n=4:s<7&&(n=5):s<=1?n=1:s<=2?n=2:s<=5&&(n=5);return n*Math.pow(10,e)}get _uniqueId(){return this.__uniqueId}}Axis.MAX_MAJOR=1e3;Axis.MAX_MINOR=2e3;Axis._id=0;export class AxisCollection extends ObservableArray{getAxis(t){var e=this.indexOf(t);return e>-1?this[e]:null}indexOf(t){for(let e=0;e<this.length;e++)if(this[e].name==t)return e;return-1}}!function(t){t[t.tickf7=-7]="tickf7";t[t.tickf6=-6]="tickf6";t[t.tickf5=-5]="tickf5";t[t.tickf4=-4]="tickf4";t[t.tickf3=-3]="tickf3";t[t.tickf2=-2]="tickf2";t[t.tickf1=-1]="tickf1";t[t.second=1]="second";t[t.minute=60]="minute";t[t.hour=3600]="hour";t[t.day=86400]="day";t[t.week=604800]="week";t[t.month=2678400]="month";t[t.year=31536e3]="year";t[t.maxtime=Number.MAX_VALUE]="maxtime"}(_tmInc||(_tmInc={}));class _timeSpan{constructor(t){this.ticks=t}get Ticks(){return this.ticks}get TotalSeconds(){return this.ticks/1e7}get TotalDays(){return this.ticks/1e7/86400}static fromSeconds(t){return new _timeSpan(1e7*t)}static fromDays(t){return new _timeSpan(1e7*t*24*60*60)}}_timeSpan.TicksPerSecond=1e7;class _timeHelper{init(t){this.year=t.getFullYear();this.month=t.getMonth();this.day=t.getDate();this.hour=t.getHours();this.minute=t.getMinutes();this.second=t.getSeconds()}constructor(t){isDate(t)?this.init(t):isNumber(t)&&this.init(FlexChartCore._fromOADate(t))}getTimeAsDateTime(){let t=0,e=0,i=0;if(this.hour>=24){this.hour-=24;this.day+=1}if(this.month<0){t=-1-this.day;this.month=1}else if(this.month>11){t=this.month-12;this.month=11}if(this.day<1){e=-1-this.day;this.day=1}else if(this.day>28&&1==this.month){e=this.day-28;this.day=28}else if(this.day>30&&(3==this.month||5==this.month||8==this.month||10==this.month)){e=this.day-30;this.day=30}else if(this.day>31){e=this.day-31;this.day=31}if(this.second>59){i=this.second-59;this.second=59}let s=0;if(this.minute>59){s=this.minute-59;this.minute=59}return new Date(this.year,this.month,this.day,this.hour,this.minute,this.second)}getTimeAsDouble(){return this.getTimeAsDateTime().valueOf()}static tround(t,e,i){var s=t/e*e;s-=s%1;i&&s!=t&&(s+=e-=e%1);return s}static FloorDay(t){const e=new Date(t);return new Date(e.getFullYear(),e.getMonth(),e.getDate()).valueOf()}static CeilDay(t){const e=new Date(t),i=new Date(e.getFullYear(),e.getMonth(),e.getDate()).valueOf();return i<t?new Date(e.getFullYear(),e.getMonth(),e.getDate()+1).valueOf():i}static RoundTime(t,e,i){var s=24*e*60*60;if(s>0){const e=new _timeHelper(t);if(s<_tmInc.minute){e.second=_timeHelper.tround(e.second,s,i);return e.getTimeAsDouble()}e.second=0;if(s<_tmInc.hour){s/=_tmInc.minute;e.minute=_timeHelper.tround(e.minute,s,i);return e.getTimeAsDouble()}e.minute=0;if(s<_tmInc.day){s/=_tmInc.hour;e.hour=_timeHelper.tround(e.hour,s,i);return e.getTimeAsDouble()}e.hour=0;if(s<_tmInc.month){s/=_tmInc.day;e.day=_timeHelper.tround(e.day,s,i);return e.getTimeAsDouble()}e.day=1;if(s<_tmInc.year){s/=_tmInc.month;1!=e.month&&(e.month=_timeHelper.tround(e.month,s,i));return e.getTimeAsDouble()}e.month=1;s/=_tmInc.year;e.year=_timeHelper.tround(e.year,s,i);return e.getTimeAsDouble()}{let n=t;const r=n-s;let a=r/e*e;i&&a!=r&&(a+=e);n=s+a;return n}}static TimeSpanFromTmInc(t){var e=_timeSpan.fromSeconds(1);if(t!=_tmInc.maxtime)if(t>_tmInc.tickf1)e=_timeSpan.fromSeconds(t);else{let i=t,s=1;i+=7;for(;i>0;){s*=10;i--}e=new _timeSpan(s)}return e}static manualTimeInc(t){var e=_tmInc.second;if(null==t||0==t.length)return e;var i=t.indexOf("f");if(i>=0){let s=-1;if(i>0&&"%"==t.substr(i-1,1))s=-1;else for(let e=1;e<6&&!(i+e>=t.length);e++){if("f"!=t.substr(i+e,1))break;s--}e=s}else t.indexOf("s")>=0?e=_tmInc.second:t.indexOf("m")>=0?e=_tmInc.minute:t.indexOf("h")>=0||t.indexOf("H")?e=_tmInc.hour:t.indexOf("d")>=0?e=_tmInc.day:t.indexOf("M")>=0?e=_tmInc.month:t.indexOf("y")>=0&&(e=_tmInc.year);return e}static getNiceInc(t,e,i){for(let s=0;s<t.length;s++){const n=t[s]*i;if(e<=n)return n}return 0}static NiceTimeSpan(t,e){var i=_tmInc.second;null!=e&&e.length>0&&(i=_timeHelper.manualTimeInc(e));var s=0,n=0;if(i<_tmInc.second&&t.TotalSeconds<10){s=t.Ticks;n=_timeHelper.TimeSpanFromTmInc(i).Ticks;for(;s>10*n;)n*=10;let e=n;s>e&&(e*=2);s>e&&(e=5*n);s>e&&(e=10*n);return new _timeSpan(e)}if(0==(s=Math.ceil(t.TotalSeconds)))return _timeHelper.TimeSpanFromTmInc(i);n=1;if(i<_tmInc.minute){if(s<_tmInc.minute&&0!=(n=_timeHelper.getNiceInc([1,2,5,10,15,30],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.minute}if(i<_tmInc.hour){if(s<_tmInc.hour&&0!=(n=_timeHelper.getNiceInc([1,2,5,10,15,30],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.hour}if(i<_tmInc.day){if(s<_tmInc.day&&0!=(n=_timeHelper.getNiceInc([1,3,6,12],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.day}if(i<_tmInc.month){if(s<_tmInc.month&&0!=(n=_timeHelper.getNiceInc([1,2,7,14],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.month}if(i<_tmInc.year){if(s<_tmInc.year&&0!=(n=_timeHelper.getNiceInc([1,2,3,4,6],s,i)))return _timeSpan.fromSeconds(n);i=_tmInc.year}s<(n=100*_tmInc.year)&&0==(n=_timeHelper.getNiceInc([1,2,5,10,20,50],s,i))&&(n=100*_tmInc.year);return _timeSpan.fromSeconds(n)}static NiceTimeUnit(t,e){var i=_timeSpan.fromDays(t);return(i=_timeHelper.NiceTimeSpan(i,e)).TotalDays}static GetTimeDefaultFormat(t,e){if(!isNumber(t)||!isNumber(e))return"";var i="s",s=_timeSpan.fromSeconds(.001*(t-e)),n=s.TotalSeconds;if(n>=_tmInc.year)i="yyyy";else if(n>=_tmInc.month)i="MMM yyyy";else if(n>=_tmInc.day)i="MMM d";else if(n>=_tmInc.hour)i="ddd H:mm";else if(n>=.5*_tmInc.hour)i="H:mm";else if(n>=1)i="H:mm:ss";else if(n>0){let t=s.Ticks;i="s.";for(;t<_timeSpan.TicksPerSecond;){t*=10;i+="f"}}return i}}export class _AxisLabel{constructor(t,e,i){this._start=e-.5;this._end=e+i-.5;this._value=e+.5*(i-1);this._label=t}get value(){return this._value}get label(){return this._label}get start(){return this._start}get end(){return this._end}set rect(t){this._rect=t}get rect(){return this._rect}}class _AxisGroup{constructor(t,e){this._labels=[];this._index=0;this._size=new Size;this._level=0;this._level=t;this._last=e}get labels(){return this._labels}set index(t){this._index=t}get index(){return this._index}set height(t){this._size.height=t}get height(){return this._size.height}set width(t){this._size.width=t}get width(){return this._size.width}get level(){return this._level}getSize(t,e,i){this._size=new Size;this.labels.forEach(s=>{const n=t.measureString(s.label,e,i);this._size.width=Math.max(this._size.width,n.width);this._size.height=Math.max(this._size.height,n.height)});return this._size}render(t,e,i,s,n){const r=e._getPosition(),a=e.axisType===AxisType.X;this.labels.forEach(h=>{let l,o=h.label,c=!1;const _=a?Math.abs(e.convert(h.end)-e.convert(h.start)):this.width,d=t.measureString(o,s,n);if(d.width>_){o=this._trimText(o,d.width,_);c=!0}switch(r){case Position.Bottom:l=FlexChartCore._renderText(t,o,new Point(e.convert(h.value),i),1,2,s,n);break;case Position.Top:l=FlexChartCore._renderText(t,o,new Point(e.convert(h.value),i),1,0,s,n);break;case Position.Left:l=FlexChartCore._renderText(t,o,new Point(i+this._size.width,e.convert(h.value)),2,1,s,n);break;case Position.Right:l=FlexChartCore._renderText(t,o,new Point(i-this._size.width,e.convert(h.value)),0,1,s,n)}h.rect=c?l:void 0});r===Position.Bottom||r===Position.Top?this.renderLinesX(t,e,i):this.renderLinesY(t,e,i)}hitTest(t){let e;for(let i=0;i<this.labels.length;i++){const s=this.labels[i];if(s.rect&&s.rect.contains(t)){e=s;break}}return e}renderLinesX(t,e,i){const s=e.groupsOptions.display===AxisGroupsDisplay.ShowGrid,n=e._getPosition();let r=4;const a=n===Position.Bottom?1:-1,h=i-a*(this.height+r);r*=a;if(s){const s=e.convert(e.actualMin),n=e.convert(e.actualMax);this.drawLine(t,s,i+r,n,i+r);this.drawLine(t,s,h,n,h);const l=e.convert(this.labels[0].start),o=0===this.level?1===a?e._axrect.top:e._axrect.bottom:h;this.drawLine(t,l,i+r,l,o);this.labels.forEach(s=>{const n=new Point(e.convert(s.end),i);this._last?this.drawLine(t,n.x,n.y+r,n.x,1===a?e._axrect.top:e._axrect.bottom):this.drawLine(t,n.x,n.y+r,n.x,o)})}else this.labels.forEach(i=>{const s=e.convert(i.start)+Math.abs(r),n=e.convert(i.end)-Math.abs(r);this.drawLine(t,s,h,n,h);if(e.labels||!this._last){this.drawLine(t,s,h,s,h-2*r);this.drawLine(t,n,h,n,h-2*r)}const a=e.convert(i.value);this.drawLine(t,a,h,a,h+r)})}renderLinesY(t,e,i){const s=e.groupsOptions.display===AxisGroupsDisplay.ShowGrid,n=e._getPosition();let r=4;const a=n===Position.Left?-1:1,h=i-a*(this.width+r);r*=a;if(s){const s=e.convert(e.actualMin),n=e.convert(e.actualMax);this.drawLine(t,i+r,s,i+r,n);this.drawLine(t,h,s,h,n);const l=e.convert(this.labels[0].start),o=0===this.level?1===a?e._axrect.left:e._axrect.right:h;this.drawLine(t,i+r,l,o,l);this.labels.forEach(s=>{const n=e.convert(s.end);this._last?this.drawLine(t,i+r,n,1===a?e._axrect.left:e._axrect.right,n):this.drawLine(t,i+r,n,o,n)})}else this.labels.forEach(i=>{const s=e.convert(i.start)-Math.abs(r),n=e.convert(i.end)+Math.abs(r);this.drawLine(t,h,s,h,n);this.drawLine(t,h,s,h-2*r,s);this.drawLine(t,h,n,h-2*r,n);const a=e.convert(i.value);this.drawLine(t,h,a,h+r,a)})}drawLine(t,e,i,s,n){t.drawLine(e,i,s,n,FlexChartCore._CSS_LINE)}_trimText(t,e,i){var s="",n=t.length,r=Math.floor((1-(e-i)/e)*n);t.length>0&&(s=t[0]+(r>1?t.substring(1,r-1)+"..":""));return s}}export class _AxisGroups{constructor(t){this._groups=[];this._margin=8;this._axis=t}get groups(){return this._groups}get axis(){return this._axis}createGroups(){this._groups=[];const t=this.axis._chart.collectionView;t&&t.groups&&t.groups.length>0&&t.groups.forEach(t=>{this.createGroup(t,0)})}createGroup(t,e){this.groups[e]||(this.groups[e]=new _AxisGroup(e,t.isBottomLevel));const i=this.groups[e],s=t.items;i.labels.push(new _AxisLabel(t.name,i.index,s.length));i.index+=s.length;t.groups.forEach(t=>{this.createGroup(t,e+1)})}layoutGroups(t){this.groups.forEach(e=>{e.width*=t})}getHeight(t){const e=this._axis._getPosition();let i=0;e===Position.Bottom||e===Position.Top?this.groups.forEach(e=>{const s=e.getSize(t,FlexChartCore._CSS_LABEL,this._axis._groupClass);i+=this._margin+s.height}):this.groups.forEach(e=>{const s=e.getSize(t,FlexChartCore._CSS_LABEL,this._axis._groupClass);i+=this._margin+s.width});if(i>0&&this._axis.labels){const t=this.groups.length;i+=this._margin*t}this._height=i;return i}layout(){const t=this._axis,e=t._axrect;if(t.axisType===AxisType.Y){const i=(t.labels?t._annoSize.width+t._TICK_LABEL_DISTANCE+12:4)+t._getTitleSize().height,s=e.width-i;if(s<this._height){const t=this._margin*this._groups.length;this.layoutGroups((s-t)/(this._height-t));this._height=s}}}render(t){const e=this._axis._getPosition(),i=this._axis._getTitleSize();if(e===Position.Bottom){let e=this.axis._axrect.bottom-i.height-this._margin;this.groups.forEach(i=>{i.render(t,this.axis,e,FlexChartCore._CSS_LABEL,this._axis._groupClass);e-=i.height+this._margin})}else if(e===Position.Top){let e=this.axis._axrect.top+i.height+this._margin;this.groups.forEach(i=>{i.render(t,this.axis,e,FlexChartCore._CSS_LABEL,this._axis._groupClass);e+=i.height+this._margin})}else if(e===Position.Left){let e=this.axis._axrect.left+i.height+this._margin;this.groups.forEach(i=>{i.render(t,this.axis,e,FlexChartCore._CSS_LABEL,this._axis._groupClass);e+=i.width+this._margin})}else if(e===Position.Right){let e=this.axis._axrect.right-i.height-this._margin;this.groups.forEach(i=>{i.render(t,this.axis,e,FlexChartCore._CSS_LABEL,this._axis._groupClass);e-=i.width+this._margin})}}hitTest(t){let e;for(let i=0;i<this._groups.length;i++){const s=this._groups[i].hitTest(t);if(s){e=s;break}}return e}}export class _AreaPlotter extends _BasePlotter{constructor(){super(...arguments);this.stacking=Stacking.None;this.isSpline=!1;this.isStep=!1;this.stackPos={};this.stackNeg={}}adjustLimits(t,e){this.dataInfo=t;const i=t.getMinX();let s=t.getMinY();const n=t.getMaxX();let r=t.getMaxY();for(let t=0;t<this.chart.series.length;t++){const e=this.chart.series[t];if(this._isRange(e)){const t=e._getChartType();if(!t||t==ChartType.Area){const t=e._getBindingValues(1);for(let e=0;e<t.length;e++)t[e]>r?r=t[e]:t[e]<s&&(s=t[e])}}}if(this.isSpline){const t=.1*(r-s);this.chart.axisY._getLogBase()||(s-=t);r+=t}return this.rotated?new Rect(s,i,r-s,n-i):new Rect(i,s,n-i,r-s)}clear(){super.clear();this.stackNeg={};this.stackPos={}}plotSeries(t,e,i,s,n,r,a,h){const l=s;if(this._isRange(l)){this.plotSeriesRanged(t,e,i,s,n,r,a,h);return}const o=[],c=this.chart.series.indexOf(s),_=s.getValues(0);let d=s.getValues(1);if(!_)return;let u=_.length;if(!u)return;d||(d=this.dataInfo.getXVals());let g=!0;if(d)d.length<u&&(u=d.length);else{g=!1;d=new Array(u)}let p=[],f=[],m=[],x=[],b=this.stacking!=Stacking.None&&!l._isCustomAxisY(),y=this.stacking==Stacking.Stacked100pc&&!l._isCustomAxisY();void 0!==l._getChartType()&&(b=y=!1);const S=this.rotated;let v=!1;const w=l.interpolateNulls;let C=null,A=null;const T=this.chart._plotRect;for(let t=0;t<u;t++){const s=g?d[t]:t;let n=_[t];(null===C||s>C)&&(C=s);(null===A||s<A)&&(A=s);b&&(null==n||Number.isNaN(n))&&Number.isFinite(s)&&(n=0);if(_DataInfo.isValid(s,n)){const r=S?i.convert(s):e.convert(s);if(b){if(y){const t=this.dataInfo.getStackedAbsSum(s);n=t>0?n/t:0}let t=0;if(n>=0){t=isNumberNaN(+this.stackPos[s])?0:this.stackPos[s];n=this.stackPos[s]=t+n}else{t=isNumberNaN(+this.stackNeg[s])?0:this.stackNeg[s];n=this.stackNeg[s]=t+n}if(S){t<e.actualMin&&(t=e.actualMin);m.push(e.convert(t));x.push(r)}else{m.push(r);t<i.actualMin&&(t=i.actualMin);x.push(i.convert(t))}}if(S){const i=e.convert(n);if(isNumberNaN(+r)||isNumberNaN(+i)){v=!0;if(!b&&!0!==w){p.push(void 0);f.push(void 0)}}else{p.push(i);f.push(r);if(FlexChartCore._contains(T,new Point(i,r))){const e=new _CircleArea(new Point(i,r),this._DEFAULT_SYM_SIZE);e.tag=new _DataPoint(c,t,n,s);this.hitTester.add(e,c)}}}else{const e=i.convert(n);if(isNumberNaN(+r)||isNumberNaN(+e)){v=!0;if(!b&&!0!==w){p.push(void 0);f.push(void 0)}}else{p.push(r);f.push(e);if(FlexChartCore._contains(T,new Point(r,e))){const i=new _CircleArea(new Point(r,e),this._DEFAULT_SYM_SIZE);i.tag=new _DataPoint(c,t,s,n);this.hitTester.add(i,c)}}}}else{v=!0;if(!b&&!0!==w){p.push(void 0);f.push(void 0)}}}h&&p.forEach((t,e)=>{null!=t&&o.push(new Point(t,f[e]))});const M=this._DEFAULT_WIDTH,L=n._getColorLight(c),P=n._getColor(c),N=_BasePlotter.cloneStyle(s.style,["fill"]),I=_BasePlotter.cloneStyle(s.style,["stroke"]);if(!b&&!0!==w&&v){let s=[],n=[];for(let r=0;r<u;r++)if(void 0===p[r]){if(s.length>1){const r=this._modifyPoints(s,n);s=r.x;n=r.y;t.stroke=P;t.strokeWidth=M;t.fill="none";t.drawLines(s,n,null,N);this.hitTester.add(new _LinesArea(s,n),c);if(S){s.push(e.convert(e.actualMin),e.convert(e.actualMin));n.push(i.convert(i.actualMax),i.convert(i.actualMin))}else{s.push(s[s.length-1],s[0]);n.push(i.convert(i.actualMin),i.convert(i.actualMin))}t.fill=L;t.stroke="none";t.drawPolygon(s,n,null,I,this.chart._plotrectId)}s=[];n=[]}else{s.push(p[r]);n.push(f[r])}if(s.length>1){const r=this._modifyPoints(s,n);s=r.x;n=r.y;t.stroke=P;t.strokeWidth=M;t.fill="none";t.drawLines(s,n,null,N);this.hitTester.add(new _LinesArea(s,n),c);if(S){s.push(e.convert(e.actualMin),e.convert(e.actualMin));n.push(i.convert(i.actualMax),i.convert(i.actualMin))}else{s.push(s[s.length-1],s[0]);n.push(i.convert(i.actualMin),i.convert(i.actualMin))}t.fill=L;t.stroke="none";t.drawPolygon(s,n,null,I,this.chart._plotrectId)}}else{const s=this._modifyPoints(p,f);p=s.x;f=s.y;if(b){const t=this._modifyPoints(m,x);m=t.x;x=t.y;p=p.concat(m.reverse());f=f.concat(x.reverse())}else if(S){p.push(e.convert(e.actualMin),e.convert(e.actualMin));f.push(f[f.length-1],f[0])}else{p.push(p[p.length-1],p[0]);f.push(i.convert(i.actualMin),i.convert(i.actualMin))}t.fill=L;t.stroke="none";t.drawPolygon(p,f,null,I,this.chart._plotrectId);if(b){p=p.slice(0,p.length-m.length);f=f.slice(0,f.length-x.length)}else{p=p.slice(0,p.length-2);f=f.slice(0,f.length-2)}t.stroke=P;t.strokeWidth=M;t.fill="none";t.drawLines(p,f,null,N,this.chart._plotrectId);this.hitTester.add(new _LinesArea(p,f),c)}this._drawSymbols(t,s,c);h&&o&&o.length&&h(o)}_isRange(t){const e=this.chart?this.chart._bindingSeparator:",",i=null==t.binding?null:t.binding.split(e);return null!=i&&2==i.length}_modifyPoints(t,e){const i={x:t,y:e};if(this.isSpline){const s=this._convertToSpline(t,e);i.x=s.xs;i.y=s.ys}else if(this.isStep){const s=this._createSteps(t,e);i.x=s.x;i.y=s.y}return i}plotSeriesRanged(t,e,i,s,n,r,a,h){const l=[],o=this.chart.series.indexOf(s),c=s,_=s.getValues(0);let d=s.getValues(1);const u=c._getBindingValues(1);if(!_)return;let g=_.length;if(!g)return;d||(d=this.dataInfo.getXVals());let p=!0;if(d)d.length<g&&(g=d.length);else{p=!1;d=new Array(g)}const f=[],m=[],x=[],b=this.rotated;let y=!1;const S=c.interpolateNulls,v=this.chart._plotRect;for(let t=0;t<g;t++){const s=p?d[t]:t,n=_[t],r=u[t];if(_DataInfo.isValid(s,n,r)){const a=b?i.convert(s):e.convert(s);if(b){const i=e.convert(n),h=e.convert(r);if(isNumberNaN(+a)||isNumberNaN(+i)){y=!0;if(!0!==S){f.push(void 0);m.push(void 0);x.push(void 0)}}else{f.push(i);m.push(a);x.push(h);if(FlexChartCore._contains(v,new Point(i,a))){const e=new _CircleArea(new Point(i,a),this._DEFAULT_SYM_SIZE);e.tag=new _DataPoint(o,t,n,s);this.hitTester.add(e,o)}if(FlexChartCore._contains(v,new Point(h,a))){const e=new _CircleArea(new Point(h,a),this._DEFAULT_SYM_SIZE);e.tag=new _DataPoint(o,t,r,s);this.hitTester.add(e,o)}}}else{const e=i.convert(n),h=i.convert(r);if(isNumberNaN(+a)||isNumberNaN(+e)){y=!0;if(!0!==S){f.push(void 0);m.push(void 0);x.push(void 0)}}else{f.push(a);m.push(e);x.push(h);if(FlexChartCore._contains(v,new Point(a,e))){const i=new _CircleArea(new Point(a,e),this._DEFAULT_SYM_SIZE);i.tag=new _DataPoint(o,t,s,n);this.hitTester.add(i,o)}if(FlexChartCore._contains(v,new Point(a,h))){const e=new _CircleArea(new Point(a,h),this._DEFAULT_SYM_SIZE);e.tag=new _DataPoint(o,t,s,r);this.hitTester.add(e,o)}}}}else{y=!0;if(!0!==S){f.push(void 0);m.push(void 0);x.push(void 0)}}}h&&f.forEach((t,e)=>{null!=t&&l.push(new Point(t,m[e]))});const w=this._DEFAULT_WIDTH,C=n._getColorLight(o),A=n._getColor(o),T=_BasePlotter.cloneStyle(s.style,["fill"]),M=_BasePlotter.cloneStyle(s.style,["stroke"]);if(!0!==S&&y){let e=[],i=[],s=[];for(let n=0;n<g;n++)if(void 0===f[n]){if(e.length>1){const n=b?s.slice(0).reverse():e.slice(0).reverse(),r=b?i.slice(0).reverse():s.slice(0).reverse();this._drawRangedArea(t,e,i,n,r,C,A,w,M,T);this.hitTester.add(new _LinesArea(e,i),o);this.hitTester.add(new _LinesArea(n,r),o)}e=[];i=[];s=[]}else{e.push(f[n]);i.push(m[n]);s.push(x[n])}if(e.length>1){const n=b?s.slice(0).reverse():e.slice(0).reverse(),r=b?i.slice(0).reverse():s.slice(0).reverse();this._drawRangedArea(t,e,i,n,r,C,A,w,M,T);this.hitTester.add(new _LinesArea(e,i),o);this.hitTester.add(new _LinesArea(n,r),o)}}else{const e=b?x.slice(0).reverse():f.slice(0).reverse(),i=b?m.slice(0).reverse():x.slice(0).reverse();this._drawRangedArea(t,f,m,e,i,C,A,w,M,T);this.hitTester.add(new _LinesArea(f,m),o);this.hitTester.add(new _LinesArea(e,i),o)}this._drawSymbols(t,s,o);h&&l&&l.length&&h(l)}_drawRangedArea(t,e,i,s,n,r,a,h,l,o){if(this.isSpline){const t=this._convertToSpline(e,i),r=this._convertToSpline(s,n);e=t.xs;i=t.ys;s=r.xs;n=r.ys}e=e.concat(s);i=i.concat(n);t.fill=r;t.stroke="none";t.drawPolygon(e,i,null,l);e=e.slice(0,e.length-s.length);i=i.slice(0,i.length-n.length);t.stroke=a;t.strokeWidth=h;t.fill="none";t.drawLines(e,i,null,o);t.drawLines(s,n,null,o)}_convertToSpline(t,e){if(t&&e){const i=new _Curve(t,e).calculate();return{xs:i.xs,ys:i.ys}}return{xs:t,ys:e}}_drawSymbols(t,e,i){const s=this.getItemFormatter(e);if(null!=s){const e=this.hitTester._map[i];for(let i=0;i<e.length;i++){const n=tryCast(e[i],_CircleArea);if(n){const e=n.tag;t.startGroup();const i=new HitTestInfo(this.chart,n.center,ChartElement.SeriesSymbol);i._setDataPoint(e);s(t,i,()=>{});t.endGroup()}}t.cssPriority=!0}}}export class _BarPlotter extends _BasePlotter{constructor(){super(...arguments);this.origin=0;this.width=.7;this.isVolume=!1;this._volHelper=null;this.stackPosMap={};this.stackNegMap={};this.stacking=Stacking.None}clear(){super.clear();this.stackNegMap[this.chart.axisY._uniqueId]={};this.stackPosMap[this.chart.axisY._uniqueId]={};this._volHelper=null}load(){super.load();if(!this.isVolume)return;let t,e,i,s,n,r,a,h,l,o=null,c=null;for(r=0;r<this.chart.series.length;r=l){l=r+1;t=this.chart.series[r];n=t.getDataType(1)||t.chart._xDataType;e=t._getAxisX();i=t._getChartType();i=null===i||isUndefined(i)?this.chart._getChartType():i;if(i===ChartType.Column){const e=this.chart?this.chart._bindingSeparator:",",i=t.binding.split(e).length-1;s=t._getBindingValues(i)}else s=i===ChartType.Candlestick?t._getBindingValues(4):null;if(n===DataType.Date){let i;a=[];h=[];let s=0;for(;s<t._getLength();s++){i=t._getItem(s)[t.bindingX].valueOf();a.push(i);h.push({value:i,text:Globalize.format(new Date(i),e.format||"d")})}l=s+1}else a=this.dataInfo.getXVals();o=this.dataInfo.getMinX();c=this.dataInfo.getMaxX();if(s&&s.length>0){this._volHelper=new _VolumeHelper(s,a,o,c,n);e._customConvert=this._volHelper.convert.bind(this._volHelper);e._customConvertBack=this._volHelper.convertBack.bind(this._volHelper);h&&h.length>0&&(this._itemsSource=e.itemsSource=h);break}}}unload(){super.unload();let t,e;for(let i=0;i<this.chart.series.length;i++){t=this.chart.series[i];e=t._getAxisX();if(e){e._customConvert=null;e._customConvertBack=null;e.itemsSource&&e.itemsSource==this._itemsSource&&(this._itemsSource=e.itemsSource=null)}}}adjustLimits(t,e){this.dataInfo=t;var i=t.getMinX(),s=t.getMaxX(),n=t.getMinY(),r=t.getMaxY(),a=t.getDeltaX();a<=0&&(a=1);let h=!1;!this.isVolume||this.chart._getChartType()!==ChartType.Column&&this.chart._getChartType()!==ChartType.Candlestick?this.unload():this.load();for(let t=0;t<this.chart.series.length;t++){const e=this.chart.series[t];let i=e._getChartType();i=null===i||isUndefined(i)?this.chart._getChartType():i;if(i===ChartType.Column||i===ChartType.Bar){if(this._isRange(e)){e._getBindingValues(1).forEach(t=>{t<n?n=t:t>r&&(r=t)})}}h||"BoxWhisker"==e.constructor.name||(h=!0)}if(this.rotated){!this.chart.axisY._getLogBase()&&t.getDataTypeY()!==DataType.Date&&h&&(this.origin>r?r=this.origin:this.origin<n&&(n=this.origin));return new Rect(n,i-.5*a,r-n,s-i+a)}!this.chart.axisY._getLogBase()&&t.getDataTypeY()!==DataType.Date&&h&&(this.origin>r?r=this.origin:this.origin<n&&(n=this.origin));return new Rect(i-.5*a,n,s-i+a,r-n)}_isRange(t){const e=this.chart?this.chart._bindingSeparator:",",i=(null==t.binding?"":t.binding.split(e)).length-1;return this.isVolume?2===i:1===i}plotSeries(t,e,i,s,n,r,a,h){var l,o,c,_,d=[],u=this.chart.series.indexOf(s),g=asType(s,SeriesBase),p=this.chart._options,f=this.width,m=0;r=r||0;a=a||1;if(p&&p.groupWidth){const t=p.groupWidth;if(isNumber(t)){const e=asNumber(t);if(isNumberFinite(+e)&&e>0){m=e;f=1}}else if(isString(t)){let e=asString(t);if(e&&e.indexOf("%")>=0){e=e.replace("%","");let t=parseFloat(e);if(isNumberFinite(+t)){t<0?t=0:t>100&&(t=100);m=0;f=t/100}}else{const t=parseFloat(e);if(isNumberFinite(+t)&&t>0){m=t;f=1}}}}let x=f/a;const b=g._getAxisY()._uniqueId,y=this.stackNegMap[b],S=this.stackPosMap[b],v=s.getValues(0);let w=s.getValues(1);const C=this._isRange(g),A=g._bindValues(null==g._cv?null==this.chart.collectionView?null:this.chart.collectionView.items:g._cv.items,g._getBinding(1)).values;if(!v)return;w||(w=this.dataInfo.getXVals());if(w){const t=this.dataInfo.getDeltaX();if(t>0){f*=t;x*=t}}let T=g._getSymbolFill(u),M=g._getAltSymbolFill(u)||T,L=g._getSymbolStroke(u),P=g._getAltSymbolStroke(u)||L,N=v.length;null!=w&&(N=Math.min(N,w.length));let I,E,F=this.origin,k=0,R=this.stacking!=Stacking.None,D=this.stacking==Stacking.Stacked100pc;void 0!==g._getChartType()&&(R=D=!1);const B=this.getItemFormatter(s),V=e._actualMin,H=e._actualMax,O=i._actualMin,z=i._actualMax;if(this.rotated){F<V?F=V:F>H&&(F=H);g._isCustomAxisY()&&(R=D=!1);const n=e.convert(F);for(let l=0;l<N;l++){let o=w?w[l]:l,g=v[l],p=n;this._getSymbolOrigin&&(p=i.convert(this._getSymbolOrigin(F,l)));if(C&&A&&A.length){const t=A[l];_DataInfo.isValid(t)&&(p=e.convert(t))}if(this._getSymbolStyles){const t=this._getSymbolStyles(l);T=t&&t.fill?t.fill:T;M=t&&t.fill?t.fill:M;L=t&&t.stroke?t.fill:L;P=t&&t.stroke?t.fill:P}I=g>0?T:M;E=g>0?L:P;t.fill=I;t.stroke=E;if(_DataInfo.isValid(o,g))if(R){let n=o-.5*f,r=o+.5*f;if(n<O&&r<O||n>z&&r>z)continue;n=i.convert(Math.max(n,O));r=i.convert(Math.min(r,z));if(D){g/=this.dataInfo.getStackedAbsSum(o)}let a=0;if(g>=0){a=isNumberNaN(+S[o])?0:S[o];c=e.convert(a);_=e.convert(a+g);S[o]=a+g}else{a=isNumberNaN(+y[o])?0:y[o];c=e.convert(a);_=e.convert(a+g);y[o]=a+g}h&&d.push(new Point(_,i.convert(o)));if(!_DataInfo.isValid(c,_))continue;const p=new Rect(Math.min(c,_),Math.min(n,r),Math.abs(_-c),Math.abs(r-n));if(m>0){let t=1-m/p.height;t<0&&(t=0);const e=p.top+.5*p.height;p.top+=(e-p.top)*t;p.height=Math.min(m,p.height)}const x=new _RectArea(p);this.drawSymbol(t,p,s,l,new Point(_,p.top+.5*p.height),B);s._setPointIndex(l,k);k++;const b=D?Math.min(a+g,1):a+g;x.tag=new _DataPoint(u,l,b,o);this.hitTester.add(x,u)}else{let n=o-.5*f+r*x,c=o-.5*f+(r+1)*x;if(n<O&&c<O||n>z&&c>z)continue;n=i.convert(Math.max(n,O));c=i.convert(Math.min(c,z));const _=e.convert(g);if(!_DataInfo.isValid(_,n,c))continue;const b=new Rect(Math.min(_,p),Math.min(n,c),Math.abs(p-_),Math.abs(c-n));h&&d.push(new Point(_,(n+c)/2));if(m>0){const t=m/a;let e=1-t/b.height;e<0&&(e=0);const s=i.convert(o);b.top+=(s-b.top)*e;b.height=Math.min(t,b.height)}const y=new _RectArea(b);this.drawSymbol(t,b,s,l,new Point(_,b.top+.5*b.height),B);s._setPointIndex(l,k);k++;y.tag=new _DataPoint(u,l,g,o);this.hitTester.add(y,u)}else h&&d.push(null)}}else{F<O?F=O:F>z&&(F=z);const n=i.convert(F);g._isCustomAxisY()&&(R=D=!1);for(let c=0;c<N;c++){let _=n;const g=w?w[c]:c;let p=v[c];this._getSymbolOrigin&&(_=i.convert(this._getSymbolOrigin(F,c,N)));if(C&&A&&A.length){const t=A[c];_DataInfo.isValid(t)&&(_=i.convert(t))}if(this._getSymbolStyles){const t=this._getSymbolStyles(c,N);T=t&&t.fill?t.fill:T;M=t&&t.fill?t.fill:M;L=t&&t.stroke?t.stroke:L;P=t&&t.stroke?t.stroke:P}I=p>0?T:M;E=p>0?L:P;t.fill=I;t.stroke=E;t.strokeWidth=null;if(_DataInfo.isValid(g,p))if(R){let n=g-.5*f,r=g+.5*f;if(n<V&&r<V||n>H&&r>H)continue;n=e.convert(n);r=e.convert(r);if(!_DataInfo.isValid(n,r))continue;if(D){p/=this.dataInfo.getStackedAbsSum(g)}let a=0;if(p>=0){a=isNumberNaN(+S[g])?0:S[g];l=i.convert(Math.max(a,O));o=i.convert(Math.max(a+p,O));S[g]=a+p}else{a=isNumberNaN(+y[g])?0:y[g];l=i.convert(a);o=i.convert(a+p);y[g]=a+p}h&&d.push(new Point(e.convert(g),o));if(!_DataInfo.isValid(l,o))continue;const _=new Rect(Math.min(n,r),Math.min(l,o),Math.abs(r-n),Math.abs(o-l));if(m>0){let t=1-m/_.width;t<0&&(t=0);const e=_.left+.5*_.width;_.left+=(e-_.left)*t;_.width=Math.min(m,_.width)}const x=new _RectArea(_);this.drawSymbol(t,_,s,c,new Point(_.left+.5*_.width,o),B);s._setPointIndex(c,k);k++;const b=D?Math.min(a+p,1):a+p;x.tag=new _DataPoint(u,c,g,b);this.hitTester.add(x,u)}else{let n=g-.5*f+r*x,l=g-.5*f+(r+1)*x;if(n<V&&l<V||n>H&&l>H)continue;n=e.convert(n);l=e.convert(l);const o=i.convert(p);if(!_DataInfo.isValid(o,n,l))continue;const b=new Rect(Math.min(n,l),Math.min(o,_),Math.abs(l-n),Math.abs(_-o));h&&d.push(new Point((n+l)/2,o));if(m>0){const t=m/a;let i=1-t/b.width;i<0&&(i=0);const s=e.convert(g);b.left+=(s-b.left)*i;b.width=Math.min(t,b.width)}const y=new _RectArea(b);this.drawSymbol(t,b,s,c,new Point(b.left+.5*b.width,o),B);s._setPointIndex(c,k);k++;y.tag=new _DataPoint(u,c,g,p);this.hitTester.add(y,u)}else h&&d.push(null)}}h&&d&&d.length&&h(d)}drawSymbol(t,e,i,s,n,r){if(r){t.startGroup();const a=new HitTestInfo(this.chart,n,ChartElement.SeriesSymbol);a._setData(i,s);r(t,a,()=>{this.drawDefaultSymbol(t,e,i)});t.cssPriority=!0;t.endGroup()}else this.drawDefaultSymbol(t,e,i)}drawDefaultSymbol(t,e,i){t.drawRect(e.left,e.top,e.width,e.height,null,i.symbolStyle)}}export class _FunnelPlotter extends _BasePlotter{constructor(){super(...arguments);this.stacking=Stacking.None}adjustLimits(t,e){this.dataInfo=t;var i=t.getMinX(),s=t.getMinY(),n=t.getMaxX(),r=t.getMaxY();return new Rect(i,s,n-i,r-s)}plotSeries(t,e,i,s,n,r,a,h){var l=this.chart.series.indexOf(s);if(l>0)return;var o,c,_,d,u,g=asType(s,SeriesBase),p=this.chart._options,f=s.getValues(0),m=s.getValues(1),x=this.chart._plotRect,b=p&&p.funnel&&null!=p.funnel.neckWidth?p.funnel.neckWidth:.2,y=p&&p.funnel&&null!=p.funnel.neckHeight?p.funnel.neckHeight:0,S=b*x.width,v=0,w=0,C=0,A=0,T=x.left,M=x.top,L=x.width,P=x.height;if(!f)return;this.rotated&&(M+=x.height);S=S||1;m||(m=this.dataInfo.getXVals());var N=f.length;null!=m&&(N=Math.min(N,m.length));let I=0;for(v=0;v<N;v++)if(_DataInfo.isValid(f[v])){w+=f[v];f[v]>I&&(I=f[v])}var E,F,k,R=0;if(p&&p.funnel&&"rectangle"===p.funnel.type&&I>0){y=P/N;b=L;let e=L/I;for(v=0;v<N;v++){const i=m?m[v]:v,n=f[v];let r=g._getSymbolFill(v),a=g._getAltSymbolFill(v)||r,h=g._getSymbolStroke(v),o=g._getAltSymbolStroke(v)||h;if(this._getSymbolStyles){const t=this._getSymbolStyles(v,N);r=t&&t.fill?t.fill:r;a=t&&t.fill?t.fill:a;h=t&&t.stroke?t.stroke:h;o=t&&t.stroke?t.stroke:o}E=n>0?r:a;F=n>0?h:o;t.fill=E;t.stroke=F;if(_DataInfo.isValid(i)&&_DataInfo.isValid(n)){e||(e=L/n);const r=e*n;T+=(b-r)/2;this.rotated&&(M-=y);t.drawRect(T,M,r,y);k=new _FunnelSegment(new Point(T,M),r,y,r,y);this.rotated||(M+=y);b=r;k.tag=new _DataPoint(l,v,i,n);this.hitTester.add(k,l);s._setPointIndex(v,R);R++}}}else{C=x.left+x.width*(1-b)/2;A=x.top+x.height*(this.rotated?y:1-y);c=(1-b)*x.width/2/(x.height*(1-y));if(isNumberNaN(+c)||!isNumberFinite(+c)){L=S;T=C;M=A}o=x.width*b*x.height+x.width*(1-b)/2*x.height*(1-y);for(v=0;v<N;v++){const e=m?m[v]:v,i=f[v];let n=[],r=[],a=g._getSymbolFill(v),h=g._getAltSymbolFill(v)||a,p=g._getSymbolStroke(v),x=g._getAltSymbolStroke(v)||p;if(this._getSymbolStyles){const t=this._getSymbolStyles(v,N);a=t&&t.fill?t.fill:a;h=t&&t.fill?t.fill:h;p=t&&t.stroke?t.stroke:p;x=t&&t.stroke?t.stroke:x}E=i>0?a:h;F=i>0?p:x;t.fill=E;t.stroke=F;if(_DataInfo.isValid(e)&&_DataInfo.isValid(i)){let a=o*i/w;if(L>S){d=this._getTrapezoidOffsetY(L,a,c);if(this.rotated)if(M-d>A){n=[T,T+(_=c*d),T+L-_,T+L];r=[M,M-d,M-d,M];k=new _FunnelSegment(new Point(T,M-d),L,d,L-2*_,0,!0);L-=2*_;T+=_;M-=d}else{_=c*(d=M-A);a-=this._getTrapezoidArea(L,c,d);u=a/S;n.push(T,T+_,T+_,T+_+S,T+_+S,T+L);r.push(M,M-d,M-d-u,M-d-u,M-d,M);k=new _FunnelSegment(new Point(T,M-d-u),L,d+u,S,u,!0);L=S;T+=_;M=M-d-u}else if(M+d<A){n=[T,T+(_=c*d),T+L-_,T+L];r=[M,M+d,M+d,M];k=new _FunnelSegment(new Point(T,M),L,d,L-2*_,0);L-=2*_;T+=_;M+=d}else{_=c*(d=A-M);a-=this._getTrapezoidArea(L,c,d);u=a/S;n.push(T,T+_,T+_,T+_+S,T+_+S,T+L);r.push(M,M+d,M+d+u,M+d+u,M+d,M);k=new _FunnelSegment(new Point(T,M),L,d+u,S,u);L=S;T+=_;M=M+d+u}t.drawPolygon(n,r)}else{u=a/S;this.rotated&&(M-=u);t.drawRect(T,M,L,u);k=new _FunnelSegment(new Point(T,M),S,u,S,u);this.rotated||(M+=u)}k.tag=new _DataPoint(l,v,e,i);this.hitTester.add(k,l);s._setPointIndex(v,R);R++}}}}_getTrapezoidArea(t,e,i){var s=i*e;return s*i+(t-2*s)*i}_getTrapezoidOffsetY(t,e,i){var s=Math.pow(t/2/i,2)-e/i;return t/2/i-Math.sqrt(s>=0?s:0)}drawDefaultSymbol(t,e,i){t.drawRect(e.left,e.top,e.width,e.height,null,i.symbolStyle)}_getPointAndPosition(t,e,i,s){var n=i;t.x=n.center.x;t.y=n.center.y;e=null==e?LabelPosition.Center:e}}export class _FunnelSegment{constructor(t,e,i,s,n,r=!1){this._startPoint=t;this._width=e;this._height=i;this._neckHeight=n;this._center=new Point(this._startPoint.x+e/2,this._startPoint.y+i/2);this._offsetX=(e-s)/2;this._offsetY=i-n;this._rotated=r}contains(t){var e=this._startPoint,i=this._offsetX,s=this._offsetY;if(this._rotated){if(t.x>=e.x&&t.x<=e.x+this._width&&t.y>=e.y&&t.y<=e.y+this._height){if(t.x>=e.x+i&&t.x<=e.x+this._width-i)return!0;if(t.y<e.y+this._neckHeight)return!1;if(t.x<this._center.x)return(e.y+this._height-t.y)/(t.x-e.x)<s/i;if(t.x>this._center.x)return(e.y+this._height-t.y)/(e.x+this._width-t.x)<s/i}}else if(t.x>=e.x&&t.x<=e.x+this._width&&t.y>=e.y&&t.y<=e.y+this._height){if(t.x>=e.x+i&&t.x<=e.x+this._width-i)return!0;if(t.y>e.y+s)return!1;if(t.x<this._center.x)return(t.y-e.y)/(t.x-e.x)<s/i;if(t.x>this._center.x)return(t.y-e.y)/(e.x+this._width-t.x)<s/i}return!1}distance(t){if(this.contains(t))return 0;var e=this._startPoint,i=this._width,s=this._height,n=this._offsetX,r=this._offsetY;if(this._rotated){if(t.y>e.y+s)return t.x<e.x?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y+s-t.y,2)):t.x>e.x+i?Math.sqrt(Math.pow(t.x-e.x-i,2)+Math.pow(e.y+s-t.y,2)):t.y-e.y-s;if(t.y<e.y)return t.x<e.x+n?Math.sqrt(Math.pow(e.x+n-t.x,2)+Math.pow(t.y-e.y-s,2)):t.x>e.x+i-n?Math.sqrt(Math.pow(t.x-e.x-i+n,2)+Math.pow(t.y-e.y-s,2)):e.y-t.y;if(!(t.y<e.y+s-r))return t.x<e.x+n?Math.min(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(t.y-e.y-s,2)),Math.sqrt(Math.pow(t.x-n/2-e.x,2)+Math.pow(t.y-s+r/2-e.y,2)),Math.sqrt(Math.pow(t.x-n-e.x,2)+Math.pow(t.y-s+r-e.y,2))):Math.min(Math.sqrt(Math.pow(t.x-i-e.x,2)+Math.pow(t.y-s-e.y,2)),Math.sqrt(Math.pow(t.x-i+n/2-e.x,2)+Math.pow(t.y-s+r/2-e.y,2)),Math.sqrt(Math.pow(t.x-i+n-e.x,2)+Math.pow(t.y-s+r-e.y,2)));if(t.x<e.x+n)return e.x+n-t.x;if(t.x>e.x+i-n)return t.x-e.x-i+n}else{if(t.y<e.y)return t.x<e.x?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):t.x>e.x+i?Math.sqrt(Math.pow(t.x-e.x-i,2)+Math.pow(e.y-t.y,2)):e.y-t.y;if(t.y>e.y+s)return t.x<e.x+n?Math.sqrt(Math.pow(e.x+n-t.x,2)+Math.pow(t.y-e.y-s,2)):t.x>e.x+i-n?Math.sqrt(Math.pow(t.x-e.x-i+n,2)+Math.pow(t.y-e.y-s,2)):t.y-e.y-s;if(!(t.y>e.y+r))return t.x<e.x+n?Math.min(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(t.y-e.y,2)),Math.sqrt(Math.pow(t.x-n/2-e.x,2)+Math.pow(t.y-r/2-e.y,2)),Math.sqrt(Math.pow(t.x-n-e.x,2)+Math.pow(t.y-r-e.y,2))):Math.min(Math.sqrt(Math.pow(t.x-i-e.x,2)+Math.pow(t.y-e.y,2)),Math.sqrt(Math.pow(t.x-i+n/2-e.x,2)+Math.pow(t.y-r/2-e.y,2)),Math.sqrt(Math.pow(t.x-i+n-e.x,2)+Math.pow(t.y-r-e.y,2)));if(t.x<e.x+n)return e.x+n-t.x;if(t.x>e.x+i-n)return t.x-e.x-i+n}}get center(){return this._center}}export class _FinancePlotter extends _BasePlotter{constructor(){super(...arguments);this.isCandle=!0;this.isArms=!1;this.isEqui=!1;this.isVolume=!1;this._volHelper=null;this._symWidth=.7}clear(){super.clear();this._volHelper=null}load(){super.load();if(!this.isVolume)return;var t,e,i,s,n,r,a,h,l=null,o=null;let c;for(r=0;r<this.chart.series.length;r=c){c=r+1;n=(t=this.chart.series[r]).getDataType(1)||t.chart._xDataType;e=t._getAxisX();s=(i=null===(i=t._getChartType())||isUndefined(i)?this.chart._getChartType():i)===ChartType.Column?t._getBindingValues(1):i===ChartType.Candlestick?t._getBindingValues(4):null;if(n===DataType.Date){let i;a=[];h=[];let s=0;for(;s<t._getLength();s++){i=t._getItem(s)[t.bindingX].valueOf();a.push(i);h.push({value:i,text:Globalize.format(new Date(i),e.format||"d")})}c=s+1}else a=this.dataInfo.getXVals();l=this.dataInfo.getMinX();o=this.dataInfo.getMaxX();if(s&&s.length>0){this._volHelper=new _VolumeHelper(s,a,l,o,n);e._customConvert=this._volHelper.convert.bind(this._volHelper);e._customConvertBack=this._volHelper.convertBack.bind(this._volHelper);h&&h.length>0&&(this._itemsSource=e.itemsSource=h);break}}}unload(){super.unload();var t;for(let e=0;e<this.chart.series.length;e++)if(t=this.chart.series[e]._getAxisX()){t._customConvert=null;t._customConvertBack=null;t.itemsSource&&t.itemsSource==this._itemsSource&&(this._itemsSource=t.itemsSource=null)}}parseSymbolWidth(t){this._isPixel=void 0;if(t)if(isNumber(t)){const e=asNumber(t);if(isNumberFinite(+e)&&e>0){this._symWidth=e;this._isPixel=!0}}else if(isString(t)){let e=asString(t);if(e&&e.indexOf("%")>=0){e=e.replace("%","");let t=parseFloat(e);if(isNumberFinite(+t)){t<0?t=0:t>100&&(t=100);this._symWidth=t/100;this._isPixel=!1}}else{const e=parseFloat(t);if(isNumberFinite(+e)&&e>0){this._symWidth=e;this._isPixel=!0}}}}adjustLimits(t,e){this.dataInfo=t;var i=t.getMinX(),s=t.getMinY(),n=t.getMaxX(),r=t.getMaxY(),a=t.getDeltaX(),h=this.chart._xDataType;a<=0&&(a=1);var l=this.chart.series,o=l.length;let c=0;this.parseSymbolWidth(this.symbolWidth);!this.isVolume||this.chart._getChartType()!==ChartType.Column&&this.chart._getChartType()!==ChartType.Candlestick?this.unload():this.load();for(let t=0;t<o;t++){const e=l[t];if(e._isCustomAxisY())continue;const i=e._getBinding(1),n=e._getBinding(2),a=e._getBinding(3),h=e._getLength();if(h){const t=e._getSymbolSize();t>c&&(c=t);for(let t=0;t<h;t++){const h=e._getItem(t);if(h){[i?h[i]:null,n?h[n]:null,a?h[a]:null].forEach(t=>{if(_DataInfo.isValid(t)&&null!==t){(isNumberNaN(+s)||t<s)&&(s=t);(isNumberNaN(+r)||t>r)&&(r=t)}})}}}}var _=n-i;return!(h===DataType.Date&&this.isVolume||h===DataType.Number)||this.chart._getChartType()!==ChartType.Column&&this.chart._getChartType()!==ChartType.Candlestick?this.chart._isRotated()?new Rect(s,i,r-s,_):new Rect(i,s,_,r-s):new Rect(i-.5*a,s,n-i+a,r-s)}plotSeries(t,e,i,s,n,r,a,h){var l=asType(s,SeriesBase),o=this.chart.series.indexOf(s),c=s.getValues(0),_=s.getValues(1),d=this._symWidth,u=this.chart._isRotated();if(!c)return;_||(_=this.dataInfo.getXVals());if(_){const t=this.dataInfo.getDeltaX();t>0&&!1===this._isPixel&&(d*=t)}var g=c.length,p=!0;if(_)g=Math.min(g,_.length);else{p=!1;_=new Array(g)}var f=this._DEFAULT_WIDTH,m=l._getSymbolFill(o),x=l._getAltSymbolFill(o)||"transparent",b=l._getSymbolStroke(o),y=l._getAltSymbolStroke(o)||b,S=void 0===this._isPixel?l._getSymbolSize():d;t.stroke=b;t.strokeWidth=f;t.fill=m;var v,w,C=l._getBinding(1),A=l._getBinding(2),T=l._getBinding(3),M=u?i.actualMin:e.actualMin,L=u?i.actualMax:e.actualMax,P=0,N=null,I=null;const E=this.getItemFormatter(s);for(let n=0;n<g;n++)if(N=l._getItem(n)){const r=p?_[n]:n;if(_DataInfo.isValid(r)&&M<=r&&r<=L){const a=c[n],h=C?N[C]:null,_=A?N[A]:null,d=T?N[T]:null;t.startGroup();if(this.isEqui&&null!==I){if(I[T]!==N[T]){v=I[T]<N[T]?x:m;w=I[T]<N[T]?y:b}}else{v=_<d?x:m;w=_<d?y:b}t.fill=v;t.stroke=w;t.strokeWidth=f;if(E){const s=new HitTestInfo(this.chart,new Point(e.convert(r),i.convert(a)),ChartElement.SeriesSymbol);s._setData(l,n);E(t,s,()=>{this._drawSymbol(t,e,i,o,n,v,S,r,a,h,_,d,g)});t.cssPriority=!0}else this._drawSymbol(t,e,i,o,n,v,S,r,a,h,_,d,g);t.endGroup();s._setPointIndex(n,P);P++}I=N}}_drawSymbol(t,e,i,s,n,r,a,h,l,o,c,_,d){var u,g=null,p=null,f=null,m=null,x=this.chart._isRotated(),b=e.convert(h),y=e._axrect,S=a/2,v=0===n&&b-y.left<=S,w=n===d-1&&y.right-b<=S,C=x?new _DataPoint(s,n,l,h):new _DataPoint(s,n,h,l);if(x){const t=i;i=e;e=t}if(!1===this._isPixel){if(v){f=h;m=h+a}else if(w){f=h-a;m=h}else{f=h-.5*a;m=h+.5*a}if((f=e.convert(f))>(m=e.convert(m))){const t=f;f=m;m=t}}h=b;if(!1!==this._isPixel)if(v){f=h;m=h+a}else if(w){f=h-a;m=h}else{f=h-.5*a;m=h+.5*a}if(this.isCandle){if(_DataInfo.isValid(c)&&_DataInfo.isValid(_)){c=i.convert(c);_=i.convert(_);p=(g=Math.min(c,_))+Math.abs(c-_);if(x){t.drawRect(g,f,p-g||1,m-f||1);u=new _RectArea(new Rect(g,f,p-g||1,m-f||1))}else{t.drawRect(f,g,m-f||1,p-g||1);u=new _RectArea(new Rect(f,g,m-f||1,p-g||1))}u.tag=C;this.hitTester.add(u,s)}if(_DataInfo.isValid(l)){l=i.convert(l);if(null!==g)if(x){t.drawLine(p,h,l,h);this._extendRectArea(u,l,h)}else{t.drawLine(h,g,h,l);this._extendRectArea(u,h,l)}}if(_DataInfo.isValid(o)){o=i.convert(o);if(null!==p)if(x){t.drawLine(g,h,o,h);this._extendRectArea(u,o,h)}else{t.drawLine(h,p,h,o);this._extendRectArea(u,h,o)}}}else if(this.isEqui){if(_DataInfo.isValid(l)&&_DataInfo.isValid(o)){l=i.convert(l);o=i.convert(o);p=(g=Math.min(l,o))+Math.abs(l-o);t.drawRect(f,g,m-f||1,p-g||1);(u=new _RectArea(new Rect(f,g,m-f||1,p-g||1))).tag=C;this.hitTester.add(u,s)}}else if(this.isArms){if(_DataInfo.isValid(c)&&_DataInfo.isValid(_)){c=i.convert(c);_=i.convert(_);p=(g=Math.min(c,_))+Math.abs(c-_);t.drawRect(f,g,m-f||1,p-g||1)}if(_DataInfo.isValid(l)&&null!==g){l=i.convert(l);t.drawLine(h,g,h,l)}if(_DataInfo.isValid(o)&&null!==p){o=i.convert(o);t.drawLine(h,p,h,o)}if(_DataInfo.isValid(l)&&_DataInfo.isValid(o)){t.fill="transparent";p=(g=Math.min(l,o))+Math.abs(l-o);t.drawRect(f,g,m-f||1,p-g||1);(u=new _RectArea(new Rect(f,g,m-f||1,p-g||1))).tag=C;this.hitTester.add(u,s)}}else{if(_DataInfo.isValid(l)&&_DataInfo.isValid(o)){l=i.convert(l);o=i.convert(o);p=(g=Math.min(l,o))+Math.abs(l-o);if(x){t.drawLine(o,h,l,h);u=new _RectArea(new Rect(g,f,p-g||1,m-f||1))}else{t.drawLine(h,o,h,l);u=new _RectArea(new Rect(f,g,m-f||1,p-g||1))}u.tag=C;this.hitTester.add(u,s)}if(_DataInfo.isValid(c)){c=i.convert(c);x?t.drawLine(c,f,c,h):t.drawLine(f,c,h,c)}if(_DataInfo.isValid(_)){_=i.convert(_);x?t.drawLine(_,h,_,m):t.drawLine(h,_,m,_)}}}_extendRectArea(t,e,i){if(!(t&&t.rect&&isNumberFinite(+e)&&isNumberFinite(+i)))return;const s=t.rect,n=Math.min(s.left,e),r=Math.min(s.top,i),a=Math.max(s.right,e),h=Math.max(s.bottom,i);s.left=n;s.top=r;s.width=a-n;s.height=h-r}}class LineMarkers{constructor(){this._moveMarker=function(t){var e=t.currentTarget,i=this._markers,s=e.getAttribute("data-markerIndex");null!=s&&i[s].forEach(e=>{e._moveMarker(t)})};this._markers=[];this._bindMoveMarker=this._moveMarker.bind(this)}attach(t){var e,i=t.chart.hostElement,s=this._markers,n=i.getAttribute("data-markerIndex"),r=[];if(null!=n)if((r=s[n])&&isArray(r))r.push(t);else{s[n]=[t];this._bindMoveEvent(i)}else{e=s.length;r=[t];s.push(r);i.setAttribute("data-markerIndex",e.toString());this._bindMoveEvent(i)}}detach(t){var e,i,s=t.chart.hostElement,n=this._markers,r=s.getAttribute("data-markerIndex");if(null!=r){(e=(i=n[r]).indexOf(t))>-1&&i.splice(e,1);if(0===i.length){(e=n.indexOf(i))>-1&&(n[e]=void 0);this._unbindMoveEvent(s)}}}_unbindMoveEvent(t){var e=this._bindMoveMarker;t.removeEventListener("mousemove",e);"ontouchstart"in window&&t.removeEventListener("touchmove",e)}_bindMoveEvent(t){var e=this._bindMoveMarker;t.addEventListener("mousemove",e);"ontouchstart"in window&&t.addEventListener("touchmove",e)}}var lineMarkers=new LineMarkers;export var LineMarkerLines;!function(t){t[t.None=0]="None";t[t.Vertical=1]="Vertical";t[t.Horizontal=2]="Horizontal";t[t.Both=3]="Both"}(LineMarkerLines||(LineMarkerLines={}));export var LineMarkerInteraction;!function(t){t[t.None=0]="None";t[t.Move=1]="Move";t[t.Drag=2]="Drag"}(LineMarkerInteraction||(LineMarkerInteraction={}));export var LineMarkerAlignment;!function(t){t[t.Auto=2]="Auto";t[t.Right=0]="Right";t[t.Left=1]="Left";t[t.Bottom=4]="Bottom";t[t.Top=6]="Top"}(LineMarkerAlignment||(LineMarkerAlignment={}));export class LineMarker{constructor(t,e){this._wrapperMousedown=null;this._wrapperMouseup=null;this._savedPosition=new Point;this.positionChanged=new Event;this._chart=t;t._markers.push(this);t.rendered.addHandler(this._initialize,this);this._resetDefaultValue();copy(this,e);this._initialize()}get chart(){return this._chart}get isVisible(){return this._isVisible}set isVisible(t){if(t!==this._isVisible){this._isVisible=asBoolean(t);this._marker&&this._toggleVisibility()}}get seriesIndex(){return this._seriesIndex}set seriesIndex(t){t!==this._seriesIndex&&(this._seriesIndex=asNumber(t,!0))}get horizontalPosition(){return this._horizontalPosition}set horizontalPosition(t){if(t!==this._horizontalPosition){this._horizontalPosition=asNumber(t,!0);this._savedPosition.x=this._horizontalPosition;if(this._horizontalPosition<0||this._horizontalPosition>1)throw"horizontalPosition's value should be in (0, 1).";this._marker&&this._updateMarkerPosition()}}get x(){var t=this._chart.axisX;const e=this.chart.pageToControl(this._targetPoint);return t.convertBack(e.x)}get y(){var t=this._chart.axisY;const e=this.chart.pageToControl(this._targetPoint);return t.convertBack(e.y)}get content(){return this._content}set content(t){if(t!==this._content){this._content=asFunction(t);this._updateMarkerPosition()}}get verticalPosition(){return this._verticalPosition}set verticalPosition(t){if(t!==this._verticalPosition){this._verticalPosition=asNumber(t,!0);this._savedPosition.y=this._verticalPosition;if(this._verticalPosition<0||this._verticalPosition>1)throw"verticalPosition's value should be in (0, 1).";this._marker&&this._updateMarkerPosition()}}get alignment(){return this._alignment}set alignment(t){if(t!==this._alignment){this._alignment=t;this._marker&&this._updatePositionByAlignment()}}get lines(){return this._lines}set lines(t){if((t=asEnum(t,LineMarkerLines))!=this._lines){this._lines=t;this._marker&&this._resetLinesVisibility()}}get interaction(){return this._interaction}set interaction(t){if((t=asEnum(t,LineMarkerInteraction))!=this._interaction){this._marker&&this._detach();this._interaction=t;this._marker&&this._attach();this._toggleElesDraggableClass(this._interaction==LineMarkerInteraction.Drag)}}get dragThreshold(){return this._dragThreshold}set dragThreshold(t){t!=this._dragThreshold&&(this._dragThreshold=asNumber(t))}get dragContent(){return this._dragContent}set dragContent(t){t!==this._dragContent&&(this._dragContent=asBoolean(t));toggleClass(this._dragEle,LineMarker._CSS_LINE_DRAGGABLE,this._interaction===LineMarkerInteraction.Drag&&this._dragContent&&this._lines!==LineMarkerLines.None)}get dragLines(){return this._dragLines}set dragLines(t){t!=this._dragLines&&(this._dragLines=asBoolean(t))}onPositionChanged(t){this.positionChanged.raise(this,t)}remove(){var t=this._chart;if(this._marker){t.rendered.removeHandler(this._initialize,this);this._detach();this._removeMarker();this._wrapperMoveMarker=null;this._wrapperMousedown=null;this._wrapperMouseup=null}}_attach(){var t=this._chart.hostElement;this._interaction!==LineMarkerInteraction.None?addClass(t,LineMarker._CSS_TOUCH_DISABLED):removeClass(t,LineMarker._CSS_TOUCH_DISABLED);lineMarkers.attach(this);this._attachDrag()}_attachDrag(){if(this._interaction===LineMarkerInteraction.Drag){this._wrapperMousedown||(this._wrapperMousedown=this._onMousedown.bind(this));this._wrapperMouseup||(this._wrapperMouseup=this._onMouseup.bind(this));this._toggleDragEventAttach(!0)}}_detach(){removeClass(this._chart.hostElement,LineMarker._CSS_TOUCH_DISABLED);lineMarkers.detach(this);this._detachDrag()}_detachDrag(){this._interaction===LineMarkerInteraction.Drag&&this._toggleDragEventAttach(!1)}_toggleDragEventAttach(t){var e=this._chart.hostElement,i=t?"addEventListener":"removeEventListener";e[i]("mousedown",this._wrapperMousedown);document[i]("mouseup",this._wrapperMouseup);"ontouchstart"in window&&e[i]("touchstart",this._wrapperMousedown);"ontouchend"in window&&document[i]("touchend",this._wrapperMouseup)}_onMousedown(t){var e,i,s,n,r,a=this._getEventPoint(t);if(this._interaction===LineMarkerInteraction.Drag){n=!(0===(e=getElementRect(this._hLine)).width||0===e.height);r=!(0===(i=getElementRect(this._vLine)).width||0===i.height);s=getElementRect(this._markerContent);if(this._dragContent&&this._pointInRect(a,s)){this._capturedEle=this._markerContent;this._contentDragStartPoint=new Point(a.x,a.y);this._mouseDownCrossPoint=new Point(this._targetPoint.x,this._targetPoint.y)}else if(n&&(Math.abs(e.top-a.y)<=this._dragThreshold||Math.abs(a.y-e.top-e.height)<=this._dragThreshold||a.y>=e.top&&a.y<=e.top+e.height)){this._capturedEle=this._hLine;this._contentDragStartPoint=void 0;addClass(this._chart.hostElement,LineMarker._CSS_LINE_DRAGGABLE)}else if(r&&(Math.abs(i.left-a.x)<=this._dragThreshold||Math.abs(a.x-i.left-i.width)<=this._dragThreshold||a.x>=i.left&&a.x<=i.left+i.width)){this._capturedEle=this._vLine;this._contentDragStartPoint=void 0;addClass(this._chart.hostElement,LineMarker._CSS_LINE_DRAGGABLE)}t.preventDefault()}}_onMouseup(t){var e=this._alignment===LineMarkerAlignment.Auto&&this._capturedEle===this._markerContent&&this._lines!==LineMarkerLines.None;this._capturedEle=void 0;this._contentDragStartPoint=void 0;this._mouseDownCrossPoint=void 0;if(e){this._updatePositionByAlignment();this._updatePositionByAlignment()}removeClass(this._chart.hostElement,LineMarker._CSS_LINE_DRAGGABLE)}_moveMarker(t){var e,i,s,n,r,a,h=this._chart,l=this._getEventPoint(t),o=this._plotRect,c=this._interaction===LineMarkerInteraction.Drag,_=this._lines===LineMarkerLines.Horizontal,d=this._lines===LineMarkerLines.Vertical,u=this._seriesIndex,g=getElementRect(h.hostElement);if(o&&this._isVisible&&this._interaction!==LineMarkerInteraction.None&&(this._interaction!==LineMarkerInteraction.Drag||this._capturedEle&&this._lines!==LineMarkerLines.None)){if(c)if(this._contentDragStartPoint){l.x=_?this._targetPoint.x:this._mouseDownCrossPoint.x+l.x-this._contentDragStartPoint.x;l.y=d?this._targetPoint.y:this._mouseDownCrossPoint.y+l.y-this._contentDragStartPoint.y}else _||!this._dragLines&&this._capturedEle===this._hLine?l.x=this._targetPoint.x:(d||!this._dragLines&&this._capturedEle===this._vLine)&&(l.y=this._targetPoint.y);if(c&&this._lines===LineMarkerLines.Horizontal||!this._dragLines&&this._capturedEle===this._hLine){if(l.y<=o.top||l.y>=o.top+o.height)return}else if(c&&this._lines===LineMarkerLines.Vertical||!this._dragLines&&this._capturedEle===this._vLine){if(l.x<=o.left||l.x>=o.left+o.width)return}else{const t=this._getTop();if(l.x<=o.left||l.y<=t||l.x>=o.left+o.width||l.y>=t+o.height)return}if(null!=u&&u>=0&&u<h.series.length){if(null==(i=(e=h.series[u]).hitTest(new Point(l.x,NaN)))||null==i.x||null==i.y)return;s=e.axisX||h.axisX;n=e._getAxisY();r=isDate(i.x)?FlexChartCore._toOADate(i.x):i.x;r=isString(r)?i.pointIndex:r;a=isDate(i.y)?FlexChartCore._toOADate(i.y):i.y;const t=this._getElementPaddingValuee(h.hostElement,"padding-left"),o=this._getElementPaddingValuee(h.hostElement,"padding-top");l.x=s.convert(r)+t+g.left;this.chart._stacking!=Stacking.None&&(a=this._calcStackedValue(u,r,a));l.y=n.convert(a)+o+g.top}this._updateMarkerPosition(l);t.preventDefault()}}_calcStackedValue(t,e,i){let s=i;const n=this.chart._stacking==Stacking.Stacked100pc;for(let r=0;r<t;r++){const t=this.chart.series[r],a=t.getValues(1),h=t.getValues(0);if(h)for(let t=0;t<h.length;t++){if(e===(a?a[t]:t)){isNumberFinite(+h[t])&&(n||this._sign(i)==this._sign(h[t]))&&(s+=h[t]);break}}}if(n&&s){s/=this.chart._dataInfo.getStackedAbsSum(e);s>1&&(s=1)}return s}_sign(t){return t>0?1:t<0?-1:0}_getElementPaddingValuee(t,e){return+window.getComputedStyle(t,null).getPropertyValue(e).replace("px","")}_show(t){(t||this._marker).style.display="block"}_hide(t){(t||this._marker).style.display="none"}_toggleVisibility(){this._isVisible?this._show():this._hide()}_resetDefaultValue(){this._isVisible=!0;this._alignment=LineMarkerAlignment.Auto;this._lines=LineMarkerLines.None;this._interaction=LineMarkerInteraction.None;this._horizontalPosition=null;this._verticalPosition=null;this._content=null;this._seriesIndex=null;this._dragThreshold=15;this._dragContent=!1;this._dragLines=!1;this._targetPoint=new Point}_initialize(){var t,e=this._chart.hostElement.querySelector("."+FlexChartCore._CSS_PLOT_AREA);this._plot=e;this._marker||this._createMarker();if(e){this._plotRect=getElementRect(e);t=e.getBBox();this._plotRect.width=t.width;this._plotRect.height=t.height;this._updateMarkerSize();this._updateLinesSize()}this._updateMarkerPosition();this._wrapperMoveMarker=this._moveMarker.bind(this);this._attach()}_createMarker(){var t,e;t=document.createElement("div");addClass(t,LineMarker._CSS_MARKER);(e=this._getContainer()).appendChild(t);this._markerContainer=e;this._marker=t;this._createChildren()}_removeMarker(){var t=this._markerContainer;t.removeChild(this._marker);this._content=null;this._hLine=null;this._vLine=null;if(!t.hasChildNodes()){this._chart.hostElement.removeChild(this._markerContainer);this._markerContainer=null}this._marker=null}_getContainer(){var t=this._chart.hostElement.querySelector(LineMarker._CSS_MARKER_CONTAINER);t||(t=this._createContainer());return t}_createContainer(){var t=document.createElement("div"),e=this._chart.hostElement;addClass(t,LineMarker._CSS_MARKER_CONTAINER);e.insertBefore(t,e.firstChild);return t}_createChildren(){var t,e,i,s,n=this._marker;(s=document.createElement("div")).style.position="absolute";s.style.height="100%";s.style.width="100%";n.appendChild(s);this._dragEle=s;t=document.createElement("div");addClass(t,LineMarker._CSS_MARKER_CONTENT);n.appendChild(t);this._markerContent=t;e=document.createElement("div");addClass(e,LineMarker._CSS_MARKER_HLINE);n.appendChild(e);this._hLine=e;i=document.createElement("div");addClass(i,LineMarker._CSS_MARKER_VLINE);n.appendChild(i);this._vLine=i;this._toggleElesDraggableClass(this._interaction===LineMarkerInteraction.Drag);this._resetLinesVisibility()}_toggleElesDraggableClass(t){toggleClass(this._hLine,LineMarker._CSS_LINE_DRAGGABLE,t);toggleClass(this._vLine,LineMarker._CSS_LINE_DRAGGABLE,t);toggleClass(this._dragEle,LineMarker._CSS_LINE_DRAGGABLE,t&&this._dragContent&&this._lines!==LineMarkerLines.None)}_updateMarkerSize(){var t=this._plotRect,e=this._chart.hostElement,i=window.getComputedStyle(e,null),s=getElementRect(e);if(this._marker){this._marker.style.marginTop=t.top-s.top-(parseFloat(i.getPropertyValue("padding-top"))||0)+"px";this._marker.style.marginLeft=t.left-s.left-(parseFloat(i.getPropertyValue("padding-left"))||0)+"px"}}_updateLinesSize(){var t=this._plotRect;if(this._hLine&&this._vLine){this._hLine.style.width=t.width+"px";this._vLine.style.height=t.height+"px"}}_resetLinesVisibility(){if(this._hLine&&this._vLine){this._hide(this._hLine);this._hide(this._vLine);this._lines!==LineMarkerLines.Horizontal&&this._lines!==LineMarkerLines.Both||this._show(this._hLine);this._lines!==LineMarkerLines.Vertical&&this._lines!==LineMarkerLines.Both||this._show(this._vLine)}}_updateMarkerPosition(t){var e,i,s=this._plotRect,n=this._targetPoint,r=!1;this._interaction,LineMarkerInteraction.Drag;if(this._plot){e=s.left+s.width*(this._horizontalPosition||0);i=s.top+s.height*(this._verticalPosition||0);null==this._horizontalPosition&&t?e=t.x:this._savedPosition.x>0&&(e=s.left+s.width*this._savedPosition.x);null==this._verticalPosition&&t?i=t.y:this._savedPosition.y>0&&(i=s.top+s.height*this._savedPosition.y);e===n.x&&i===n.y||(r=!0);n.x=e;n.y=i;this._savedPosition.x=clamp((e-s.left)/s.width,0,1);this._savedPosition.y=clamp((i-s.top)/s.height,0,1);this._toggleVisibility();this._content&&this._updateContent();r&&this._raisePositionChanged(e,i);this._updatePositionByAlignment(!!t)}}_updateContent(){var t,e=this._chart,i=this._targetPoint,s=e.hitTest(i);t=this._content.call(null,s,i);this._markerContent.innerHTML=t||""}_raisePositionChanged(t,e){this._plotRect;this.onPositionChanged(new Point(t,e))}_updatePositionByAlignment(t){var e=this._alignment,i=this._targetPoint,s=this._marker,n=0,r=0,a=s.clientWidth,h=s.clientHeight,l=this._plotRect;if(!this._plot)return;const o=this._getTop();if(!this._capturedEle||this._capturedEle&&this._capturedEle!==this._markerContent){if(e===LineMarkerAlignment.Auto){i.x+a+12>l.left+l.width&&i.x-a>=0&&(r=a);n=h;i.y-h<o&&(n=0)}else{1==(1&e)&&(r=a);2==(2&e)&&(n=h)}this._interaction===LineMarkerInteraction.Move&&0===n&&0===r&&null==this.verticalPosition&&(r=-12)}else{parseInt(this._hLine.style.top)>0&&(n=h);parseInt(this._vLine.style.left)>0&&(r=a)}s.style.left=i.x-r-l.left+"px";s.style.top=i.y-n-o+"px";this._hLine.style.top=n+"px";this._hLine.style.left=l.left-i.x+r+"px";this._vLine.style.top=o-i.y+n+"px";this._vLine.style.left=r+"px"}_getEventPoint(t){return t instanceof MouseEvent?new Point(t.pageX,t.pageY):new Point(t.changedTouches[0].pageX,t.changedTouches[0].pageY)}_pointInRect(t,e){return!(!t||!e)&&(t.x>=e.left&&t.x<=e.left+e.width&&t.y>=e.top&&t.y<=e.top+e.height)}_getTop(){let t=0;const e=this.chart._getHostComputedStyle();if(e){t+=this.chart._parsePx(e.paddingTop);t+=this.chart._parsePx(e.borderTopWidth);t+=this.chart._parsePx(e.marginTop)}return this._chart._plotRect.top+this._plot.getBoundingClientRect().top-t}}LineMarker._CSS_MARKER=LineMarkerClsNames.linemarker;LineMarker._CSS_MARKER_HLINE=LineMarkerClsNames.hline;LineMarker._CSS_MARKER_VLINE=LineMarkerClsNames.vline;LineMarker._CSS_MARKER_CONTENT=LineMarkerClsNames.content;LineMarker._CSS_MARKER_CONTAINER=LineMarkerClsNames.container;LineMarker._CSS_LINE_DRAGGABLE=LineMarkerClsNames.draggable;LineMarker._CSS_TOUCH_DISABLED=FlexChartClsNames.touchDisabled;export class _LinePlotter extends _BasePlotter{constructor(){super();this.hasSymbols=!1;this.hasLines=!0;this.isSpline=!1;this.isStep=!1;this.hitTestSymbols=!0;this.stacking=Stacking.None;this.stackPos={};this.stackNeg={};this.clipping=!1}clear(){super.clear();this.stackNeg={};this.stackPos={}}adjustLimits(t,e){this.dataInfo=t;var i=t.getMinX(),s=t.getMinY(),n=t.getMaxX(),r=t.getMaxY();if(this.isSpline&&!this.chart.axisY._getLogBase()){const t=.1*(r-s);s-=t;r+=t}return this.rotated?new Rect(s,i,r-s,n-i):new Rect(i,s,n-i,r-s)}plotSeries(t,e,i,s,n,r,a,h){var l=[],o=asType(s,SeriesBase),c=this.chart.series.indexOf(s),_=s.getValues(0),d=s.getValues(1);if(!_)return;d||(d=this.dataInfo.getXVals());var u=_BasePlotter.cloneStyle(s.style,["fill"]),g=_.length,p=!0;if(d)g=Math.min(g,d.length);else{p=!1;d=new Array(g)}var f=this._DEFAULT_WIDTH,m=o._getSymbolFill(c),x=o._getAltSymbolFill(c)||m,b=o._getSymbolStroke(c),y=o._getAltSymbolStroke(c)||b,S=o._getSymbolSize();t.stroke=b;t.strokeWidth=f;t.fill=m;const v=new Float64Array(g),w=new Float64Array(g);let C=0;const A=new Int8Array(g);let T=0;var M=this.rotated,L=this.stacking!=Stacking.None&&!o._isCustomAxisY(),P=this.stacking==Stacking.Stacked100pc&&!o._isCustomAxisY();void 0!==o._getChartType()&&(L=P=!1);var N=o.interpolateNulls,I=!1;const E=this.getItemFormatter(s);var F;for(let t=0;t<g;t++){let s=p?d[t]:t,n=_[t];if(isNumberFinite(+s)&&isNumberFinite(+n)){if(L){if(P){n/=this.dataInfo.getStackedAbsSum(s)}if(n>=0){const t=isNumberNaN(+this.stackPos[s])?0:this.stackPos[s];n=this.stackPos[s]=t+n}else{const t=isNumberNaN(+this.stackNeg[s])?0:this.stackNeg[s];n=this.stackNeg[s]=t+n}}if(M){F=new _DataPoint(c,t,n,s);const r=e.convert(n);n=i.convert(s);s=r}else{F=new _DataPoint(c,t,s,n);s=e.convert(s);n=i.convert(n)}if(isNumberNaN(+s)||isNumberNaN(+n)){I=!0;if(!0!==N){v[C]=NaN;w[C++]=NaN}A[T++]=1;h&&l.push(null)}else{v[C]=s;w[C++]=n;T++;h&&l.push(new Point(s,n));if(this.hitTestSymbols){const t=new _CircleArea(new Point(s,n),.5*S);t.tag=F;this.hitTester.add(t,c)}}}else{I=!0;if(!0!==N){v[C]=NaN;w[C++]=NaN}A[T++]=1;h&&l.push(null)}}var k=0;if(this.hasLines){t.fill=null;if(I&&!0!==N){let e=[],i=[];for(let s=0;s<g;s++)if(isNumberNaN(+v[s])){if(e.length>1){this._drawLines(t,e,i,null,u,this.chart._plotrectId);this.hitTester.add(new _LinesArea(e,i),c);k++}e=[];i=[]}else{e.push(v[s]);i.push(w[s])}if(e.length>1){this._drawLines(t,e,i,null,u,this.chart._plotrectId);this.hitTester.add(new _LinesArea(e,i),c);k++}}else{this._drawLines(t,v,w,null,u,this.chart._plotrectId,C);this.hitTester.add(new _LinesArea(v,w),c);k++}}if(this.hasSymbols&&S>0||E){t.fill=m;let n=0;for(let r=0;r<g;r++){if(N&&A[r])continue;const a=v[n],h=w[n];if(!1===this.hasLines||E){t.fill=_[r]>0?m:x;t.stroke=_[r]>0?b:y;t.strokeWidth=f}if(this.isValid(a,h,e,i)){this._drawSymbol(t,a,h,S,o,r,E);s._setPointIndex(r,k);k++}n++}}h&&l&&l.length&&h(l)}_drawLines(t,e,i,s,n,r,a){if(this.isSpline&&a>3)t.drawSplines(e,i,s,n,r,a);else if(this.isStep){const h=this._createSteps(e,i,a);e=h.x;i=h.y;t.drawLines(e,i,s,n,r)}else t.drawLines(e,i,s,n,r,a)}_drawSymbol(t,e,i,s,n,r,a){if(a){t.startGroup();const h=new HitTestInfo(this.chart,new Point(e,i),ChartElement.SeriesSymbol);h._setData(n,r);a(t,h,()=>{this.hasSymbols&&s>0&&this._drawDefaultSymbol(t,e,i,s,n.symbolMarker,n.symbolStyle)});t.cssPriority=!0;t.endGroup()}else this._drawDefaultSymbol(t,e,i,s,n.symbolMarker,n.symbolStyle)}_drawDefaultSymbol(t,e,i,s,n,r){n==Marker.Dot?t.drawEllipse(e,i,.5*s,.5*s,null,r):n==Marker.Box&&t.drawRect(e-.5*s,i-.5*s,s,s,null,r)}}export class _BubblePlotter extends _LinePlotter{constructor(){super();this._MIN_SIZE=5;this._MAX_SIZE=30;this.hasLines=!1;this.hasSymbols=!0;this.clipping=!0;this.hitTestSymbols=!1}adjustLimits(t,e){var i=this.getNumOption("minSize","bubble");this._minSize=i||this._MIN_SIZE;var s=this.getNumOption("maxSize","bubble");this._maxSize=s||this._MAX_SIZE;var n=this.chart.series,r=n.length,a=NaN,h=NaN;for(let t=0;t<r;t++){const e=n[t];if(e._getChartType()==ChartType.Bubble||null==e._getChartType()&&e._chart._getChartType()==ChartType.Bubble){const t=e._getBindingValues(1);if(t){const e=t.length;for(let i=0;i<e;i++)if(isNumberFinite(+t[i])){(isNumberNaN(+a)||t[i]<a)&&(a=t[i]);(isNumberNaN(+h)||t[i]>h)&&(h=t[i])}}}}this._minValue=a;this._maxValue=h;const l=super.adjustLimits(t,e);let o=e.left,c=e.right,_=e.top,d=e.bottom;for(let t=0;t<r;t++){const i=n[t];if(i._getChartType()==ChartType.Bubble||null==i._getChartType()&&i._chart._getChartType()==ChartType.Bubble){const t=i._getBindingValues(1),s=i.getValues(1),n=i.getValues(0);if(t&&s&&n){const i=t.length;for(let r=0;r<i;r++){let i=s?s[r]:r,u=n[r],g=t[r];if(_DataInfo.isValid(i,u,g)){i=e.left+e.width*(i-l.left)/l.width;u=e.top+e.height*(u-l.top)/l.height;g=this._minSize+(this._maxSize-this._minSize)*(g-a)/(h-a);i-g<o&&(o=i-g);i+g>c&&(c=i+g);u-g<_&&(_=u-g);u+g>d&&(d=u+g)}}}}}o=e.left-o+5;c=c-e.right+5;_=e.top-_+5;d=d-e.bottom+5;var u=this.chart.axisX,g=this.chart.axisY;if(!u._isLogAxis())if(this.stacking==Stacking.Stacked100pc&&this.rotated){const t=(e.width-this._maxSize)/l.width;l.left-=.5*this._maxSize/t;l.width+=this._maxSize/t}else{const t=(e.width-(o+c))/l.width;l.left-=o/t;l.width+=(o+c)/t}if(!g._isLogAxis())if(this.stacking!=Stacking.Stacked100pc||this.rotated){const t=(e.height-(_+d))/l.height;l.top-=_/t;l.height+=(_+d)/t}else{const t=(e.height-this._maxSize)/l.height;l.top-=.5*this._maxSize/t;l.height+=this._maxSize/t}return l}_drawSymbol(t,e,i,s,n,r,a){if(null==this._minSize){const t=this.getNumOption("minSize","bubble");this._minSize=t||this._MIN_SIZE}if(null==this._maxSize){const t=this.getNumOption("maxSize","bubble");this._maxSize=t||this._MAX_SIZE}const h=n._getItem(r);if(h){const s=n._getBinding(1);if(s){let l=h[s];if(isNumberFinite(+l)){null==l&&(l=this._minValue);const s=this._minValue==this._maxValue?1:Math.sqrt((l-this._minValue)/(this._maxValue-this._minValue));l=this._minSize+(this._maxSize-this._minSize)*s;if(a){const s=new HitTestInfo(this.chart,new Point(e,i),ChartElement.SeriesSymbol);s._setData(n,r);t.startGroup();a(t,s,()=>{this._drawDefaultSymbol(t,e,i,l,n.symbolMarker,n.symbolStyle)});t.endGroup()}else this._drawDefaultSymbol(t,e,i,l,n.symbolMarker,n.symbolStyle);let h=n.getValues(1);h||(h=this.dataInfo.getXVals());const o=h?h[r]:r,c=n.getValues(0)[r],_=this.chart.series.indexOf(n),d=new _CircleArea(new Point(e,i),.5*l);d.tag=new _DataPoint(_,r,o,c);this.hitTester.add(d,_)}}}}}_registerModule("wijmo.chart",selfModule);
|