UNPKG

@coderundebug/ui-web

Version:

A collection of UI web components that can be used in any web project.

2 lines 48.9 kB
/* By Stephen Paul Hassall (web: https://coderundebug.com) */ import{UiTools as t}from"./ui-tools.js";class i{static MODE_TYPE_LINE=1;static MODE_TYPE_CURVE=2;static MODE_TYPE_BAR=3;static DATE_SEGMENT_YEAR=1;static DATE_SEGMENT_MONTH=2;static DATE_SEGMENT_DAY=3;static DATE_SEGMENT_HOUR=4;static DATE_SEGMENT_MINUTE=5;static DATE_SEGMENT_SECOND=6;static CROSSHAIR_MODE_TYPE_HIGHLIGHT=1;static CROSSHAIR_MODE_TYPE_SELECT=2;static COLOR_LIST=["#1858bb","#e1b038","#dd6149","#109b95","#64c056","#df66b0","#756bb2","#18b3bb","#a32dab","#b78675","#757575","#c0ca33","#c35a09","#9678df","#b71c54","#2d8bd5","#67d0dd","#607d8b","#b0bec5","#347936"];constructor(){this.t=null,this.i={},this.i.x=0,this.i.y=0,this.i.width=0,this.i.height=0,this.h={},this.h.x=0,this.h.y=0,this.h.width=0,this.h.height=0,this.o={},this.o.x=0,this.o.y=0,this.o.width=0,this.o.height=0,this.l={},this.l.x=0,this.l.y=0,this.l.width=0,this.l.height=0,this.u=-1,this.p=-1,this.v=[],this.m=0,this.k=0,this._=0,this.M=0,this.L=[],this.S=[],this.T=-1,this.A=-1,this.I=[],this.C=this.C.bind(this),this.D=this.D.bind(this),this.F=this.F.bind(this),this.O=this.O.bind(this),this.j=this.j.bind(this),this.Y=this.Y.bind(this)}get options(){return this.t}get innerArea(){return this.i}get yAxisArea(){return this.h}get xAxisArea(){return this.o}get dataArea(){return this.l}get minimumWidth(){return this.u}get minimumHeight(){return this.p}get lineList(){return this.v}get valueXMin(){return this.m}get valueXMax(){return this.k}get valueYMin(){return this._}get valueYMax(){return this.M}get segmentXList(){return this.L}get segmentYList(){return this.S}get xDataType(){return this.T}get dateSegmentType(){return this.A}hasData(){return 0!==this.v.length&&(0!==this.L.length&&0!==this.S.length)}processOptions(t){if(this.t={},this.t.selectable=!1,this.t.highlight=!1,this.t.padding=12,this.t.legend={},this.t.legend.formatTextCallback=this.O,this.t.yAxis={},this.t.yAxis.show=!0,this.t.yAxis.size=50,this.t.yAxis.endPaddingSize=8,this.t.yAxis.minSegmentSize=32,this.t.yAxis.segmentDenominator=void 0,this.t.yAxis.nubSize=8,this.t.yAxis.fixedMin=void 0,this.t.yAxis.fixedMax=void 0,this.t.yAxis.showLine=!0,this.t.yAxis.showNub=!0,this.t.yAxis.showText=!0,this.t.yAxis.showZero=!0,this.t.yAxis.textPrefix="",this.t.yAxis.textSuffix="",this.t.yAxis.textGap=8,this.t.yAxis.formatTextCallback=this.C,this.t.guideLine={},this.t.guideLine.showXAxis=!0,this.t.guideLine.showYAxis=!0,this.t.xAxis={},this.t.xAxis.show=!0,this.t.xAxis.size=50,this.t.xAxis.endPaddingSize=8,this.t.xAxis.minSegmentSize=60,this.t.xAxis.segmentDenominator=void 0,this.t.xAxis.nubSize=8,this.t.xAxis.showLine=!0,this.t.xAxis.showNub=!0,this.t.xAxis.showText=!0,this.t.xAxis.showZero=!0,this.t.xAxis.rotateText=!1,this.t.xAxis.textPrefix="",this.t.xAxis.textSuffix="",this.t.xAxis.textGap=8,this.t.xAxis.formatNumberTextCallback=this.D,this.t.xAxis.formatDateTextCallback=this.F,this.t.popup={},this.t.popup.show=!1,this.t.popup.formatInfoTextCallback=this.j,this.t.popup.formatValueTextCallback=this.Y,this.t.line={},this.t.line.showDots=!1,this.t.line.dotSize=8,this.t.line.interfaceDotSize=12,this.t.line.infoList=[],this.t.crosshair={},this.t.crosshair.show=!1,this.t.crosshair.showXAxis=!0,this.t.crosshair.showYAxis=!0,this.t.crosshair.modeType=i.CROSSHAIR_MODE_TYPE_HIGHLIGHT,this.t.crosshair.showDot=!0,this.t.crosshair.dotSize=6,t){const e="undefined";typeof t.selectable!==e&&(this.t.selectable=t.selectable),typeof t.highlight!==e&&(this.t.highlight=t.highlight),typeof t.padding!==e&&(this.t.padding=t.padding),"object"==typeof t.legend&&typeof t.legend.formatTextCallback!==e&&(this.t.legend.formatTextCallback=t.legend.formatTextCallback),"object"==typeof t.yAxis&&(typeof t.yAxis.show!==e&&(this.t.yAxis.show=t.yAxis.show),typeof t.yAxis.size!==e&&(this.t.yAxis.size=t.yAxis.size),typeof t.yAxis.endPaddingSize!==e&&(this.t.yAxis.endPaddingSize=t.yAxis.endPaddingSize),typeof t.yAxis.minSegmentSize!==e&&(this.t.yAxis.minSegmentSize=t.yAxis.minSegmentSize),typeof t.yAxis.segmentDenominator!==e&&(this.t.yAxis.segmentDenominator=t.yAxis.segmentDenominator),typeof t.yAxis.nubSize!==e&&(this.t.yAxis.nubSize=t.yAxis.nubSize),typeof t.yAxis.fixedMin!==e&&(this.t.yAxis.fixedMin=t.yAxis.fixedMin),typeof t.yAxis.fixedMax!==e&&(this.t.yAxis.fixedMax=t.yAxis.fixedMax),typeof t.yAxis.showLine!==e&&(this.t.yAxis.showLine=t.yAxis.showLine),typeof t.yAxis.showNub!==e&&(this.t.yAxis.showNub=t.yAxis.showNub),typeof t.yAxis.showText!==e&&(this.t.yAxis.showText=t.yAxis.showText),typeof t.yAxis.showZero!==e&&(this.t.yAxis.showZero=t.yAxis.showZero),typeof t.yAxis.textPrefix!==e&&(this.t.yAxis.textPrefix=t.yAxis.textPrefix),typeof t.yAxis.textSuffix!==e&&(this.t.yAxis.textSuffix=t.yAxis.textSuffix),typeof t.yAxis.textGap!==e&&(this.t.yAxis.textGap=t.yAxis.textGap),typeof t.yAxis.formatTextCallback!==e&&(this.t.yAxis.formatTextCallback=t.yAxis.formatTextCallback)),"object"==typeof t.xAxis&&(typeof t.xAxis.show!==e&&(this.t.xAxis.show=t.xAxis.show),typeof t.xAxis.size!==e&&(this.t.xAxis.size=t.xAxis.size),typeof t.xAxis.endPaddingSize!==e&&(this.t.xAxis.endPaddingSize=t.xAxis.endPaddingSize),typeof t.xAxis.minSegmentSize!==e&&(this.t.xAxis.minSegmentSize=t.xAxis.minSegmentSize),typeof t.xAxis.segmentDenominator!==e&&(this.t.xAxis.segmentDenominator=t.xAxis.segmentDenominator),typeof t.xAxis.nubSize!==e&&(this.t.xAxis.nubSize=t.xAxis.nubSize),typeof t.xAxis.showLine!==e&&(this.t.xAxis.showLine=t.xAxis.showLine),typeof t.xAxis.showNub!==e&&(this.t.xAxis.showNub=t.xAxis.showNub),typeof t.xAxis.showText!==e&&(this.t.xAxis.showText=t.xAxis.showText),typeof t.xAxis.showZero!==e&&(this.t.xAxis.showZero=t.xAxis.showZero),typeof t.xAxis.rotateText!==e&&(this.t.xAxis.rotateText=t.xAxis.rotateText),typeof t.xAxis.textPrefix!==e&&(this.t.xAxis.textPrefix=t.xAxis.textPrefix),typeof t.xAxis.textSuffix!==e&&(this.t.xAxis.textSuffix=t.xAxis.textSuffix),typeof t.xAxis.textGap!==e&&(this.t.xAxis.textGap=t.xAxis.textGap),typeof t.xAxis.formatNumberTextCallback!==e&&(this.t.xAxis.formatNumberTextCallback=t.xAxis.formatNumberTextCallback),typeof t.xAxis.formatDateTextCallback!==e&&(this.t.xAxis.formatDateTextCallback=t.xAxis.formatDateTextCallback)),"object"==typeof t.guideLine&&(typeof t.guideLine.showXAxis!==e&&(this.t.guideLine.showXAxis=t.guideLine.showXAxis),typeof t.guideLine.showYAxis!==e&&(this.t.guideLine.showYAxis=t.guideLine.showYAxis)),"object"==typeof t.popup&&(typeof t.popup.show!==e&&(this.t.popup.show=t.popup.show),typeof t.popup.formatInfoTextCallback!==e&&(this.t.popup.formatInfoTextCallback=t.popup.formatInfoTextCallback),typeof t.popup.formatValueTextCallback!==e&&(this.t.popup.formatValueTextCallback=t.popup.formatValueTextCallback)),"object"==typeof t.line&&(typeof t.line.showDots!==e&&(this.t.line.showDots=t.line.showDots),typeof t.line.dotSize!==e&&(this.t.line.dotSize=t.line.dotSize),typeof t.line.interfaceDotSize!==e&&(this.t.line.interfaceDotSize=t.line.interfaceDotSize),!0===Array.isArray(t.line.infoList)&&t.line.infoList.forEach((t=>{const e={};e.name=t.name,e.color=t.color,e.mode=t.mode,e.fill=t.fill,e.smoothing=t.smoothing,"line"===e.mode&&(e.modeType=i.MODE_TYPE_LINE),"curve"===e.mode&&(e.modeType=i.MODE_TYPE_CURVE),"bar"===e.mode&&(e.modeType=i.MODE_TYPE_BAR),this.t.line.infoList.push(e)}))),"object"==typeof t.crosshair&&(typeof t.crosshair.showXAxis!==e&&(this.t.crosshair.showXAxis=t.crosshair.showXAxis),typeof t.crosshair.showYAxis!==e&&(this.t.crosshair.showYAxis=t.crosshair.showYAxis),typeof t.crosshair.mode!==e&&(this.t.crosshair.mode=t.crosshair.mode),typeof t.crosshair.showDot!==e&&(this.t.crosshair.showDot=t.crosshair.showDot),typeof t.crosshair.dotSize!==e&&(this.t.crosshair.dotSize=t.crosshair.dotSize),"highlight"===this.t.crosshair.mode&&(this.t.crosshair.modeType=i.CROSSHAIR_MODE_TYPE_HIGHLIGHT),"select"===this.t.crosshair.mode&&(this.t.crosshair.modeType=i.CROSSHAIR_MODE_TYPE_SELECT),!0!==this.t.crosshair.showXAxis&&!0!==this.t.crosshair.showYAxis||(this.t.crosshair.show=!0))}this.u=this.t.xAxis.size+2*this.t.padding+48,this.p=this.t.yAxis.size+2*this.t.padding+48}processData(t){if(this.v=[],!t)return;if(!1===Array.isArray(t))return;let e=-1;t.forEach((t=>{if(!t.dataList)return;if(!1===Array.isArray(t.dataList))return;const s={};s.name=t.name,s.color=t.color,s.mode=t.mode,s.modeType=i.MODE_TYPE_LINE,"curve"===s.mode&&(s.modeType=i.MODE_TYPE_CURVE),"bar"===s.mode&&(s.modeType=i.MODE_TYPE_BAR),s.fill=!1,!0===t.fill&&(s.fill=!0),s.dataList=[];let h=!0,r=null;for(let i=0;i<t.dataList.length;i++){const n=t.dataList[i];if(void 0===n.x){h=!1;break}if(void 0===n.y){h=!1;break}if(-1===e&&("number"==typeof n.x&&(e=1),"object"==typeof n.x&&n.x instanceof Date&&(e=2),-1===e)){h=!1;break}if(1===e&&"number"!=typeof n.x){h=!1;break}if(2===e){if("object"!=typeof n.x){h=!1;break}if(!(n.x instanceof Date)){h=!1;break}}if(r&&n.x<=r){h=!1;break}r=n.x;const o={};o.x=n.x,o.y=n.y,s.dataList.push(o)}!1!==h&&0!==s.dataList.length&&this.v.push(s)})),this.T=e;for(let t=0;t<this.v.length;t++){this.v[t].index=t}if(0===this.v.length)return;this.v.forEach((t=>{const i=t.dataList[0];t.xMin=i.x,t.xMax=i.x,t.yMin=i.y,t.yMax=i.y,t.dataList.forEach((i=>{i.x<t.xMin&&(t.xMin=i.x),i.x>t.xMax&&(t.xMax=i.x),i.y<t.yMin&&(t.yMin=i.y),i.y>t.yMax&&(t.yMax=i.y)}))}));const s=this.v[0];let h=s.xMin,r=s.xMax,n=s.yMin,o=s.yMax;this.v.forEach((t=>{t.xMin<h&&(h=t.xMin),t.xMax>r&&(r=t.xMax),t.yMin<n&&(n=t.yMin),t.yMax>o&&(o=t.yMax)})),n>0&&o>0&&(n=0),n<0&&o<0&&(o=0),0===n&&0===o&&(o=1),this.m=h,this.k=r,this._=n,this.M=o,void 0!==this.t.yAxis.fixedMin&&this.t.yAxis.fixedMin<this._&&(this._=this.t.yAxis.fixedMin),void 0!==this.t.yAxis.fixedMax&&this.t.yAxis.fixedMax>this.M&&(this.M=this.t.yAxis.fixedMax);let a=1;this.t.line.infoList.forEach((t=>{t.color||(t.color="var(--ui-chart-color"+a.toString()+", "+i.COLOR_LIST[a-1]+")",a++,a>20&&(a=1))}));for(let t=0;t<this.v.length;t++){const e=this.v[t];if(t<this.t.line.infoList.length){const s=this.t.line.infoList[t];e.name=s.name,e.color=s.color,e.mode=s.mode,e.fill=s.fill,e.smoothing=s.smoothing,"line"===e.mode&&(e.modeType=i.MODE_TYPE_LINE),"curve"===e.mode&&(e.modeType=i.MODE_TYPE_CURVE),"bar"===e.mode&&(e.modeType=i.MODE_TYPE_BAR)}e.color||(e.color="var(--ui-chart-color"+a.toString()+", "+i.COLOR_LIST[a-1]+")",a++,a>20&&(a=1))}2===this.T&&this.H()}createLineList(){let t=this.S[this.S.length-1],i=this.S[0],e=null;for(let t=0;t<this.S.length;t++){const i=this.S[t];if(0===i.value){e=i;break}}let s=i.pixel;e&&(s=e.pixel);const h=(i.pixel-t.pixel)/(t.value-i.value);let r=this.o.width,n=this.t.xAxis.endPaddingSize,o=this.t.xAxis.endPaddingSize;!0===this.t.yAxis.show&&(n=0),r-=n,r-=o,this.v.forEach((t=>{t.pointList=[];for(let i=0;i<t.dataList.length;i++){const e=t.dataList[i],o={xPixel:0};o.dataItem=e,o.dataIndex=i,o.yPixel=s-Math.floor(h*e.y),1===this.T&&(o.xPixel=this.N(e.x,r)+n),2===this.T&&(o.xPixel=this.P(e.x,r)+n),t.pointList.push(o)}}))}createSegmentXNumberList(t){if(t<1)return;if(this.m>this.k)return;if(this.t.xAxis.minSegmentSize<1)return;const i=this.k-this.m;if(0===i)return;let e=0;if(i>1){const t=i.toFixed(0);e=Math.pow(10,t.length-1)}else{const t=i.toString();let s=0;for(let i=2;i<t.length;i++){if("0"!==t.charAt(i))break;s++}e=.1*Math.pow(.1,s)}for(;;){const s=Math.ceil(i/e);if(Math.ceil(t/s)<this.t.xAxis.minSegmentSize)break;e/=2}for(;;){const s=Math.ceil(i/e);if(Math.ceil(t/s)>this.t.xAxis.minSegmentSize)break;if(1===s)break;e*=2}this.t.xAxis.segmentDenominator&&(e="string"==typeof this.t.xAxis.segmentDenominator?parseFloat(this.t.xAxis.segmentDenominator):this.t.xAxis.segmentDenominator);let s=t,h=this.t.xAxis.endPaddingSize,r=this.t.xAxis.endPaddingSize;!0===this.t.yAxis.show&&(h=0),0!==this.m&&(s-=h),0!==this.k&&(s-=r);let n=Math.floor(this.m/e)*e;n!==this.m&&(n+=e);let o=this.R(e);this.L=[];const a=s+h;for(;;){const t={};if(t.value=n,t.text=this.t.xAxis.formatNumberTextCallback(t.value,o),t.pixel=this.N(n,s)+h,t.pixel>a)break;this.L.push(t),n+=e}}createSegmentXDateList(t){if(t<1)return;if(this.m>this.k)return;if(this.t.xAxis.minSegmentSize<1)return;let e=this.k.getFullYear()-this.m.getFullYear(),s=12*this.k.getFullYear()+this.k.getMonth()+1-(12*this.m.getFullYear()+this.m.getMonth()+1),h=this.k.getTime()-this.m.getTime(),r=Math.floor(h/864e5),n=Math.floor(h/36e5),o=Math.floor(h/6e4),a=Math.floor(h/1e3);this.A=-1,this.A=s>24?i.DATE_SEGMENT_YEAR:r>60?i.DATE_SEGMENT_MONTH:n>48?i.DATE_SEGMENT_DAY:o>120?i.DATE_SEGMENT_HOUR:a>120?i.DATE_SEGMENT_MINUTE:i.DATE_SEGMENT_SECOND;let l=0;switch(this.A){case i.DATE_SEGMENT_YEAR:l=e;break;case i.DATE_SEGMENT_MONTH:l=s;break;case i.DATE_SEGMENT_DAY:l=r;break;case i.DATE_SEGMENT_HOUR:l=n;break;case i.DATE_SEGMENT_MINUTE:l=o;break;case i.DATE_SEGMENT_SECOND:l=a}if(0===l)return;let c=t,u=this.t.xAxis.endPaddingSize,p=this.t.xAxis.endPaddingSize;!0===this.t.yAxis.show&&(u=0),c-=u,c-=p;let d=1;for(;;){const t=Math.ceil(l/d);if(Math.ceil(c/t)>this.t.xAxis.minSegmentSize)break;if(1===t)break;d*=2}if(this.t.xAxis.segmentDenominator)if("string"==typeof this.t.xAxis.segmentDenominator){const t=this.t.xAxis.segmentDenominator.toLowerCase();-1!==t.indexOf("year")?this.A=i.DATE_SEGMENT_YEAR:-1!==t.indexOf("month")?this.A=i.DATE_SEGMENT_MONTH:-1!==t.indexOf("day")?this.A=i.DATE_SEGMENT_DAY:-1!==t.indexOf("hour")?this.A=i.DATE_SEGMENT_HOUR:-1!==t.indexOf("minute")?this.A=i.DATE_SEGMENT_MINUTE:-1!==t.indexOf("second")&&(this.A=i.DATE_SEGMENT_SECOND),d=parseInt(t)}else d=parseInt(this.t.xAxis.segmentDenominator);let f={year:0,month:1,day:1,hour:0,minute:0,second:0};switch(this.A){case i.DATE_SEGMENT_YEAR:f.year=this.m.getFullYear();break;case i.DATE_SEGMENT_MONTH:f.year=this.m.getFullYear(),f.month=this.m.getMonth()+1;break;case i.DATE_SEGMENT_DAY:f.year=this.m.getFullYear(),f.month=this.m.getMonth()+1,f.day=this.m.getDate();break;case i.DATE_SEGMENT_HOUR:f.year=this.m.getFullYear(),f.month=this.m.getMonth()+1,f.day=this.m.getDate(),f.hour=this.m.getHours();break;case i.DATE_SEGMENT_MINUTE:f.year=this.m.getFullYear(),f.month=this.m.getMonth()+1,f.day=this.m.getDate(),f.hour=this.m.getHours(),f.minute=this.m.getMinutes();break;case i.DATE_SEGMENT_SECOND:f.year=this.m.getFullYear(),f.month=this.m.getMonth()+1,f.day=this.m.getDate(),f.hour=this.m.getHours(),f.minute=this.m.getMinutes(),f.second=this.m.getSeconds()}f.year===this.m.getFullYear()&&f.month===this.m.getMonth()+1&&f.day===this.m.getDate()&&f.hour===this.m.getHours()&&f.minute===this.m.getMinutes()&&f.second===this.m.getSeconds()&&0===this.m.getMilliseconds()||this.X(f,this.A,d);let g=new Date(f.year,f.month-1,f.day,f.hour,f.minute,f.second);this.L=[];const v=c+u;for(;;){const t={};if(t.dateInfo=f,t.date=g,t.text=this.t.xAxis.formatDateTextCallback(t.date,this.A),t.pixel=this.P(g,c)+u,t.pixel>v)break;this.L.push(t),this.X(f,this.A,d),g=new Date(f.year,f.month-1,f.day,f.hour,f.minute,f.second)}}createSegmentYList(t){if(t<1)return;if(this._>this.M)return;if(this.t.yAxis.minSegmentSize<1)return;const i=this.M-this._;if(0===i)return;let e=0;if(i>1){const t=i.toFixed(0);e=Math.pow(10,t.length-1)}else{const t=i.toString();let s=0;for(let i=2;i<t.length;i++){if("0"!==t.charAt(i))break;s++}e=.1*Math.pow(.1,s)}for(;;){const s=Math.ceil(i/e);if(Math.ceil(t/s)<this.t.yAxis.minSegmentSize)break;e/=2}for(;;){const s=Math.ceil(i/e);if(Math.ceil(t/s)>this.t.yAxis.minSegmentSize)break;if(1===s)break;e*=2}this.t.yAxis.segmentDenominator&&(e=this.t.yAxis.segmentDenominator);let s=0,h=0;0!==this._&&(h=Math.floor(this._/e)*e),0!==this.M&&(s=Math.ceil(this.M/e)*e);let r=t,n=this.t.yAxis.endPaddingSize,o=this.t.yAxis.endPaddingSize;!0===this.t.xAxis.show&&(n=0),0!==this._&&(r-=n),0!==this.M&&(r-=o);const a=Math.floor((s-h)/e),l=Math.floor(r/a);let c=this.R(e);this.S=[];let u=h,p=t;!1===this.t.xAxis.show&&(p-=n);const d=parseFloat(s.toFixed(c));for(;;){const t={};t.value=u,t.valueText=this.t.yAxis.formatTextCallback(t.value,c),t.pixel=p,this.S.push(t),u+=e,p-=l;if(parseFloat(u.toFixed(c))>d)break}}R(t){const i=t.toString(),e=i.indexOf(".");if(-1===e)return 0;let s=0,h=0;for(let t=e+1;t<i.length;t++){const e=i.charAt(t);if(h++,0===s){if("0"===e)continue;s=1}if(1===s){if("0"!==e)continue;h--;break}}return h}X(t,e,s){switch(e){case i.DATE_SEGMENT_YEAR:t.year+=s;break;case i.DATE_SEGMENT_MONTH:t.month+=s;break;case i.DATE_SEGMENT_DAY:t.day+=s;break;case i.DATE_SEGMENT_HOUR:t.hour+=s;break;case i.DATE_SEGMENT_MINUTE:t.minute+=s;break;case i.DATE_SEGMENT_SECOND:t.second+=s}if(t.second>=60){const i=Math.floor(t.second/60);t.minute+=i,t.second=t.second-60*i}if(t.minute>=60){const i=Math.floor(t.minute/60);t.hour+=i,t.minute=t.minute-60*i}if(t.hour>=24){const i=Math.floor(t.hour/24);t.day+=i,t.hour=t.hour-24*i}for(;;){let i=this.G(t.year,t.month);if(t.day<i)break;t.month++,t.month>12&&(t.year++,t.month=1),t.day-=i}if(t.month>12){const i=Math.floor(t.month/12);t.year+=i,t.month=t.month-12*i}}N(t,i){const e=this.k-this.m,s=t-this.m;return Math.floor(s/e*i)}P(t,i){const e=this.k.getTime()-this.m.getTime(),s=t.getTime()-this.m.getTime();return Math.floor(s/e*i)}G(t,i){return 2===i?!0===this.U(t)?29:28:4===i||6===i||9===i||11===i?30:31}U(t){return t%4==0&&(t%100!=0||t%400==0)}H(){this.I=[];const t=Intl.DateTimeFormat(void 0,{year:"numeric",month:"short",weekday:"short"});for(let i=0;i<12;i++){const e=new Date(2024,i,1),s=t.formatToParts(e);let h="?";for(let t=0;t<s.length;t++){const i=s[t];if("month"===i.type){h=i.value;break}}this.I.push(h)}}C(t,i){return this.t.yAxis.textPrefix+t.toFixed(i)+this.t.yAxis.textSuffix}D(t,i){return this.t.xAxis.textPrefix+t.toFixed(i)+this.t.xAxis.textSuffix}F(t,e){let s="";if(e===i.DATE_SEGMENT_YEAR)s=t.getFullYear().toString();else if(e===i.DATE_SEGMENT_MONTH)s=this.I[t.getMonth()];else if(e===i.DATE_SEGMENT_DAY)s=t.getDate().toString();else{const h=t.getHours().toString().padStart(2,"0"),r=t.getMinutes().toString().padStart(2,"0"),n=t.getSeconds().toString().padStart(2,"0");e===i.DATE_SEGMENT_HOUR&&(s=h+":"+r),e===i.DATE_SEGMENT_MINUTE&&(s=h+":"+r),e===i.DATE_SEGMENT_SECOND&&(s=h+":"+r+":"+n)}return this.t.xAxis.textPrefix+s+this.t.xAxis.textSuffix}O(t){return t.name}j(t,i){return t.name}Y(t,e){if(1===this.T)return e.x.toString()+", "+e.y.toString();let s="";return s=this.A===i.DATE_SEGMENT_YEAR||this.A===i.DATE_SEGMENT_MONTH||this.A===i.DATE_SEGMENT_DAY?e.x.toLocaleDateString():e.x.toLocaleTimeString(),s+=", "+e.y.toString(),s}}class e{constructor(t,i){this.Z=t,this.V=i,this.B=t.shadowRoot.querySelector(".base"),this.W=t.shadowRoot.getElementById("popup"),this.q=t.shadowRoot.getElementById("popup-color"),this.J=t.shadowRoot.getElementById("popup-info"),this.K=t.shadowRoot.getElementById("popup-value"),this.$=this.$.bind(this),this.tt=this.tt.bind(this),this.it=this.it.bind(this),this.et=[],this.st=[],this.ht=null,this.rt=null,this.nt=null,this.ot=null,this.lt=-1,this.ct=-1,this.ut=null,this.dt=null,this.ft=null}addEvents(t){this.gt=this.Z.shadowRoot.getElementById("crosshair"),this.vt=this.Z.shadowRoot.getElementById("crosshair-x-axis"),this.xt=this.Z.shadowRoot.getElementById("crosshair-y-axis"),this.yt=this.Z.shadowRoot.getElementById("crosshair-dot"),t.addEventListener("click",this.$),this.et.forEach((t=>{t.removeEventListener("pointermove",this.tt),t.removeEventListener("pointerout",this.it)})),this.st.forEach((t=>{t.removeEventListener("pointermove",this.tt),t.removeEventListener("pointerout",this.it)})),!0!==this.V.options.popup.show&&!0!==this.V.options.highlight||(this.et=this.Z.shadowRoot.querySelectorAll(".line-event"),this.et.forEach((t=>{t.addEventListener("pointermove",this.tt),t.addEventListener("pointerout",this.it)})),this.st=this.Z.shadowRoot.querySelectorAll(".line-event-dot"),this.st.forEach((t=>{t.addEventListener("pointermove",this.tt),t.addEventListener("pointerout",this.it)})))}removeEvents(t){t.removeEventListener("click",this.$),this.et.forEach((t=>{t.removeEventListener("pointermove",this.tt),t.removeEventListener("pointerout",this.it)})),this.st.forEach((t=>{t.removeEventListener("pointermove",this.tt),t.removeEventListener("pointerout",this.it)}))}chartItemHighlight(t){if(null==t)return void this.bt(null,null,-1);if("number"!=typeof t)return;if(t<0)return;const i=this.kt(0,t),e=this.kt(1,t);this.bt(i,e,t)}chartItemSelect(t){if(null==t)return void this.wt(null,null,-1);if("number"!=typeof t)return;if(t<0)return;const i=this.kt(0,t),e=this.kt(1,t);this.wt(i,e,t)}$(t){let e=t.target;if(null===e)return;const s=this.lt;if(this.wt(null,null,-1),!1===e.classList.contains("line-event")&&!1===e.classList.contains("line-event-dot"))return;if(this.V.options.crosshair.modeType===i.CROSSHAIR_MODE_TYPE_SELECT&&this._t(e),!1===this.V.options.selectable)return;if(!e.dataset.lineIndex)return;let h=parseInt(e.dataset.lineIndex);if(h===s)return;this.Mt(e);const r=this.kt(0,h),n=this.kt(1,h);this.wt(r,n,h)}tt(t){let e=t.target;if(null===e)return;if(e===this.ft)return;if(!e.dataset.lineIndex)return;this.ft=e,this.Et(e),this.V.options.crosshair.modeType===i.CROSSHAIR_MODE_TYPE_HIGHLIGHT&&this._t(e);const s=parseInt(e.dataset.lineIndex),h=this.kt(0,s),r=this.kt(1,s);!0===this.V.options.highlight&&(this.Lt(e),this.bt(h,r,s))}it(t){this.V.options.crosshair.modeType===i.CROSSHAIR_MODE_TYPE_HIGHLIGHT&&this._t(null),this.ft=null,this.bt(null,null,-1)}kt(t,i){let e='[data-line-index="'+i.toString()+'"]',s="";0===t&&(s=".line"+e),1===t&&(s=".line-dot"+e);return this.Z.shadowRoot.querySelectorAll(s)}bt(t,i,e){if(null===t)return this.nt&&(this.nt.forEach((t=>{t.classList.remove("highlighting")})),this.nt=null),this.ot&&(this.ot.forEach((t=>{t.classList.remove("highlighting")})),this.ot=null),this.ct=-1,this.W.style.display="none",void(this.dt=null);e!==this.ct&&(this.ct=e,this.nt&&(this.nt.forEach((t=>{t.classList.remove("highlighting")})),this.nt=null),this.ot&&(this.ot.forEach((t=>{t.classList.remove("highlighting")})),this.ot=null),this.nt=t,this.nt.forEach((t=>{t.classList.add("highlighting")})),this.ot=i,this.ot.forEach((t=>{t.classList.add("highlighting")})))}wt(t,i,e){return null===t||0===t.length||e===this.lt?(this.ht&&(this.ht.forEach((t=>{t.classList.remove("select")})),this.ht=null),this.rt&&(this.rt.forEach((t=>{t.classList.remove("select")})),this.rt=null),void(this.lt=-1)):(this.lt=e,this.ht&&(this.ht.forEach((t=>{t.classList.remove("select")})),this.ht=null),this.rt&&(this.rt.forEach((t=>{t.classList.remove("select")})),this.rt=null),this.ht=t,this.ht.forEach((t=>{t.classList.add("select")})),this.rt=i,void this.rt.forEach((t=>{t.classList.add("select")})))}Lt(t){let i=parseInt(t.dataset.lineIndex),e=-1;t.dataset.dataIndex&&(e=parseInt(t.dataset.dataIndex));const s=new CustomEvent("highlighted",{bubbles:!0,composed:!0,detail:{lineIndex:i,dataIndex:e}});this.Z.dispatchEvent(s)}Mt(t){let i=parseInt(t.dataset.lineIndex),e=-1;t.dataset.dataIndex&&(e=parseInt(t.dataset.dataIndex));const s=new CustomEvent("selected",{bubbles:!0,composed:!0,detail:{lineIndex:i,dataIndex:e}});this.Z.dispatchEvent(s)}_t(t){if(!this.gt)return;if(!t)return this.gt.style.opacity="0",void(this.ut=null);if(!1===t.classList.contains("line-event-dot"))return;if(this.V.options.crosshair.modeType===i.CROSSHAIR_MODE_TYPE_HIGHLIGHT&&t===this.ut)return;if(this.V.options.crosshair.modeType===i.CROSSHAIR_MODE_TYPE_SELECT&&t===this.ut)return this.gt.style.opacity="0",void(this.ut=null);this.ut=t;const e=this.B.getBoundingClientRect(),s=t.getBoundingClientRect();let h=s.x+s.width/2-e.x,r=s.y+s.height/2-e.y;!0===this.V.options.crosshair.showXAxis&&(this.vt.setAttribute("x1",h.toString()),this.vt.setAttribute("y1",this.V.dataArea.y.toString()),this.vt.setAttribute("x2",h.toString()),this.vt.setAttribute("y2",(this.V.dataArea.y+this.V.dataArea.height).toString()),this.vt.style.opacity="1"),!0===this.V.options.crosshair.showYAxis&&(this.xt.setAttribute("x1",this.V.dataArea.x.toString()),this.xt.setAttribute("y1",r.toString()),this.xt.setAttribute("x2",(this.V.dataArea.x+this.V.dataArea.width).toString()),this.xt.setAttribute("y2",r.toString()),this.xt.style.opacity="1"),!0===this.V.options.crosshair.showDot&&(this.yt.setAttribute("cx",h.toString()),this.yt.setAttribute("cy",r.toString()),this.yt.style.opacity="1"),this.gt.style.opacity="1"}Et(t){if(!1===this.V.options.popup.show)return;if(!1===t.classList.contains("line-event-dot"))return;if(t===this.dt)return;this.dt=t;const i=this.B.getBoundingClientRect(),e=t.getBoundingClientRect();let s=e.x+e.width/2-i.x,h=e.y+e.height/2-i.y;const r=i.width/2;this.W.style.opacity=0,this.W.style.display="grid",this.W.classList.remove("triangle-top","triangle-bottom","triangle-left","triangle-right"),this.St(t);const n=this.W.getBoundingClientRect();let o=null,a=null,l=null,c=null;const u=n.width/2,p=n.height/2,d=this.V.options.line.interfaceDotSize/2;s<r?h<=p?s<u?(l=h+d,o=s+d):(this.W.classList.add("triangle-top"),l=h+d,o=s-u):h>i.height-p?s<u?(c=i.height-h+d,o=s+d):(this.W.classList.add("triangle-bottom"),c=i.height-h+d,o=s-u):(this.W.classList.add("triangle-left"),l=h-p,o=s+d):h<=p?s>=i.width-u?(l=h+d,a=i.width-s+d):(this.W.classList.add("triangle-top"),l=h+d,a=i.width-s-u):h>i.height-p?s>=i.width-u?(c=i.height-h+d,a=i.width-s+d):(this.W.classList.add("triangle-bottom"),c=i.height-h+d,a=i.width-s-u):(this.W.classList.add("triangle-right"),l=h-p,a=i.width-s+d),this.W.style.left="",this.W.style.right="",this.W.style.top="",this.W.style.bottom="",o&&(this.W.style.left=o.toString()+"px"),a&&(this.W.style.right=a.toString()+"px"),l&&(this.W.style.top=l.toString()+"px"),c&&(this.W.style.bottom=c.toString()+"px"),this.W.style.opacity=1}St(t){const i=this.V.options,e=parseInt(t.dataset.lineIndex),s=parseInt(t.dataset.dataIndex),h=this.V.lineList[e],r=h.dataList[s],n=i.popup.formatInfoTextCallback(h,r),o=i.popup.formatValueTextCallback(h,r);this.q.style.backgroundColor=h.color,this.J.innerText=n,this.K.innerText=o,this.W.classList.remove("has-info","has-value"),n&&this.W.classList.add("has-info"),o&&this.W.classList.add("has-value"),n||o||(this.W.style.display="none")}}class s{create(t,i,e){if(this.Tt(t,i,e),t.createSegmentYList(t.h.height),1===t.xDataType&&t.createSegmentXNumberList(t.o.width),2===t.xDataType&&t.createSegmentXDateList(t.o.width),!1===t.hasData())return;t.createLineList();const s=[];this.At(t,s),this.zt(t,s),this.It(t,s),this.Ct(t,s),this.Dt(t,s),this.Ft(t,s),this.Ot(t,s),this.jt(t,s);return s.join("")}Tt(t,i,e){const s=t.options,h=t.innerArea,r=t.yAxisArea,n=t.xAxisArea,o=t.dataArea;h.x=s.padding,h.y=s.padding,h.width=i-2*s.padding,h.height=e-2*s.padding,!0===s.yAxis.show&&!1===s.xAxis.show&&(r.x=h.x,r.y=h.y,r.width=s.yAxis.size,r.height=h.height,o.x=h.x+s.yAxis.size,o.y=h.y,o.width=h.width-s.yAxis.size,o.height=h.height,n.x=o.x,n.y=o.y,n.width=o.width,n.height=o.height),!0===s.yAxis.show&&!0===s.xAxis.show&&(r.x=h.x,r.y=h.y,r.width=s.yAxis.size,r.height=h.height-s.xAxis.size,n.x=h.x+s.yAxis.size,n.y=h.y+h.height-s.xAxis.size,n.width=h.width-s.yAxis.size,n.height=s.xAxis.size,o.x=h.x+s.yAxis.size,o.y=h.y,o.width=h.width-s.yAxis.size,o.height=h.height-s.xAxis.size),!0===s.xAxis.show&&!1===s.yAxis.show&&(n.x=h.x,n.y=h.y+h.height-s.xAxis.size,n.width=h.width,n.height=s.xAxis.size,o.x=h.x,o.y=h.y,o.width=h.width,o.height=h.height-s.xAxis.size,r.x=o.x,r.y=o.y,r.width=o.width,r.height=o.height),!1===s.yAxis.show&&!1===s.xAxis.show&&(o.x=h.x,o.y=h.y,o.width=h.width,o.height=h.height,r.x=o.x,r.y=o.y,r.width=o.width,r.height=o.height,n.x=o.x,n.y=o.y,n.width=o.width,n.height=o.height)}Ct(t,i){const e=t.options;if(!1===e.yAxis.show)return;const s=t.yAxisArea;if(!0===e.yAxis.showLine){let t=s.x+s.width,e=s.y,h=s.y+s.height;i.push('<line class="y-axis-line" x1="'+t.toString()+'" y1="'+e.toString()+'" x2="'+t.toString()+'" y2="'+h.toString()+'"></line>')}let h=s.x+s.width;e.yAxis.showNub&&(h-=e.yAxis.nubSize),h-=e.yAxis.textGap;let r=s.x+s.width-e.yAxis.nubSize,n=s.x+s.width;t.segmentYList.forEach((t=>{const o=s.y+t.pixel;let a=!0;0===t.value&&!1===e.yAxis.showZero&&(a=!1),!1===e.yAxis.showText&&(a=!1),!0===a&&i.push('<text class="y-axis-text" x="'+h.toString()+'" y="'+o.toString()+'" dominant-baseline="middle" text-anchor="end">'+t.valueText+"</text>"),!0===e.yAxis.showNub&&i.push('<line class="y-axis-nub" x1="'+r.toString()+'" y1="'+o.toString()+'" x2="'+n.toString()+'" y2="'+o.toString()+'"></line>')}))}At(t,i){if(!1===t.options.guideLine.showYAxis)return;const e=t.dataArea,s=t.yAxisArea;let h=e.x,r=e.x+e.width;t.segmentYList.forEach((t=>{const e=s.y+t.pixel;i.push('<line class="guide-line-y-axis" x1="'+h.toString()+'" y1="'+e.toString()+'" x2="'+r.toString()+'" y2="'+e.toString()+'"></line>')}))}Dt(t,i){let e=null;for(let i=0;i<t.segmentYList.length;i++){const s=t.segmentYList[i];if(0===s.value){e=s;break}}if(!e)return;const s=t.dataArea;let h=s.x,r=s.x+s.width;const n=s.y+e.pixel;i.push('<line class="y-axis-zero" x1="'+h.toString()+'" y1="'+n.toString()+'" x2="'+r.toString()+'" y2="'+n.toString()+'"></line>')}Ft(t,i){if(1!==t.xDataType)return;let e=null;for(let i=0;i<t.segmentXList.length;i++){const s=t.segmentXList[i];if(0===s.value){e=s;break}}if(!e)return;const s=t.dataArea;let h=s.y,r=s.y+s.height;const n=s.x+e.pixel;i.push('<line class="x-axis-zero" x1="'+n.toString()+'" y1="'+h.toString()+'" x2="'+n.toString()+'" y2="'+r.toString()+'"></line>')}It(t,i){const e=t.options;if(!1===e.xAxis.show)return;const s=t.xAxisArea;if(!0===e.xAxis.showLine){let t=s.x,e=s.x+s.width,h=s.y;i.push('<line class="x-axis-line" x1="'+t.toString()+'" y1="'+h.toString()+'" x2="'+e.toString()+'" y2="'+h.toString()+'"></line>')}let h=s.y,r=s.y+e.xAxis.nubSize;-1===e.xAxis.nubSize&&(h=s.y,r=s.y+s.height),!0===e.xAxis.showNub&&!0===e.yAxis.show&&i.push('<line class="x-axis-nub" x1="'+s.x.toString()+'" y1="'+h.toString()+'" x2="'+s.x.toString()+'" y2="'+r.toString()+'"></line>');let n=s.height;e.xAxis.showNub&&(n-=e.xAxis.nubSize);let o=s.y+s.height-n/2;!0===e.xAxis.rotateText&&(o=s.y+e.xAxis.textGap,e.xAxis.showNub&&(o+=e.xAxis.nubSize)),t.segmentXList.forEach((t=>{const n=s.x+t.pixel;let a=!0;0===t.value&&!1===e.xAxis.showZero&&(a=!1),!1===e.xAxis.showText&&(a=!1),!0===a&&(!0===e.xAxis.rotateText&&i.push('<text class="x-axis-text" x="'+n.toString()+'" y="'+o.toString()+'" dominant-baseline="middle" text-anchor="end" transform="rotate(-90,'+n.toString()+","+o.toString()+')">'+t.text+"</text>"),!1===e.xAxis.rotateText&&i.push('<text class="x-axis-text" x="'+n.toString()+'" y="'+o.toString()+'" dominant-baseline="middle" text-anchor="middle">'+t.text+"</text>")),!0===e.xAxis.showNub&&i.push('<line class="x-axis-nub" x1="'+n.toString()+'" y1="'+h.toString()+'" x2="'+n.toString()+'" y2="'+r.toString()+'"></line>')}))}zt(t,i){if(!1===t.options.guideLine.showXAxis)return;const e=t.dataArea,s=t.xAxisArea;let h=e.y,r=e.y+e.height;t.segmentXList.forEach((t=>{const e=s.x+t.pixel;i.push('<line class="guide-line-x-axis" x1="'+e.toString()+'" y1="'+h.toString()+'" x2="'+e.toString()+'" y2="'+r.toString()+'"></line>')}))}jt(t,i){!1!==t.options.crosshair.show&&(i.push('<g id="crosshair">'),!0===t.options.crosshair.showXAxis&&i.push('<line id="crosshair-x-axis" x1="0" x2="0" y1="0" y2="0"></line>'),!0===t.options.crosshair.showYAxis&&i.push('<line id="crosshair-y-axis" x1="0" x2="0" y1="0" y2="0"></line>'),!0===t.options.crosshair.showDot&&i.push('<circle id="crosshair-dot" cx="0" cy="0" r="'+t.options.crosshair.dotSize.toString()+'"></circle>'),i.push("</g>"))}Ot(t,e){0!==t.lineList.length&&(e.push("<g>"),t.lineList.forEach((s=>{s.modeType===i.MODE_TYPE_LINE&&(this.Yt(t,e,s,0),this.Yt(t,e,s,1),this.Yt(t,e,s,2),!0===s.fill&&this.Ht(t,e,s)),s.modeType===i.MODE_TYPE_CURVE&&(this.Nt(t,e,s,0),this.Nt(t,e,s,1),this.Nt(t,e,s,2),!0===s.fill&&this.Pt(t,e,s)),s.modeType===i.MODE_TYPE_BAR&&(this.Rt(t,e,s,0),this.Rt(t,e,s,1),this.Rt(t,e,s,2))})),!0===t.options.line.showDots&&(0!==t.options.line.dotSize&&this.Xt(t,e,t.options.line.dotSize,0),0!==t.options.line.interfaceDotSize&&(this.Xt(t,e,t.options.line.dotSize,1),this.Xt(t,e,t.options.line.interfaceDotSize,2))),e.push("</g>"))}Yt(t,i,e,s){if(e.pointList.length<=1)return;i.push("<path "),0===s&&i.push('class="line" '),1===s&&i.push('class="line line-interface" '),2===s&&i.push('class="line line-event" '),i.push('data-line-index="'+e.index.toString()+'" '),i.push('stroke="'+e.color+'" '),i.push('d="');let h=e.pointList[0],r=t.dataArea.x+h.xPixel,n=t.dataArea.y+h.yPixel;i.push("M "+r.toString()+" "+n.toString());for(let s=1;s<e.pointList.length;s++){const h=e.pointList[s];r=t.dataArea.x+h.xPixel,n=t.dataArea.y+h.yPixel,i.push(" L "+r.toString()+" "+n.toString())}i.push('"></path>')}Nt(t,i,e,s){if(e.pointList.length<=1)return;i.push("<path "),0===s&&i.push('class="line" '),1===s&&i.push('class="line line-interface" '),2===s&&i.push('class="line line-event" '),i.push('data-line-index="'+e.index.toString()+'" '),i.push('stroke="'+e.color+'" '),i.push('d="');let h=e.pointList[0],r=t.dataArea.x+h.xPixel,n=t.dataArea.y+h.yPixel;i.push("M "+r.toString()+" "+n.toString());let o=.15;e.smoothing&&(o=e.smoothing);for(let s=0;s<e.pointList.length-1;s++){let h=null,r=null,n=null,a=null;h=0===s?e.pointList[s]:e.pointList[s-1],r=e.pointList[s],n=e.pointList[s+1],a=s===e.pointList.length-2?n:e.pointList[s+2];let l=t.dataArea.x+(r.xPixel+(n.xPixel-h.xPixel)*o),c=t.dataArea.y+(r.yPixel+(n.yPixel-h.yPixel)*o),u=t.dataArea.x+(n.xPixel-(a.xPixel-r.xPixel)*o),p=t.dataArea.y+(n.yPixel-(a.yPixel-r.yPixel)*o);i.push(" C "),i.push(l.toString()),i.push(","),i.push(c.toString()),i.push(" "),i.push(u.toString()),i.push(","),i.push(p.toString()),i.push(" "),i.push((t.dataArea.x+n.xPixel).toString()),i.push(","),i.push((t.dataArea.y+n.yPixel).toString())}i.push('"></path>')}Rt(t,i,e,s){if(e.pointList.length<=1)return;let h=null;for(let i=0;i<t.segmentYList.length;i++){const e=t.segmentYList[i];if(0===e.value){h=e;break}}if(!h)return;const r=(t.dataArea.y+h.pixel).toString();i.push("<path "),0===s&&i.push('class="line bar" '),1===s&&i.push('class="line bar line-interface" '),2===s&&i.push('class="line bar line-event" '),i.push('data-line-index="'+e.index.toString()+'" '),i.push('stroke="'+e.color+'" '),i.push('d="'),e.pointList.forEach((e=>{let s=t.dataArea.x+e.xPixel,h=t.dataArea.y+e.yPixel;i.push(" M "+s.toString()+" "+h.toString()),i.push(" L "+s.toString()+" "+r)})),i.push('"></path>')}Ht(t,i,e){if(e.pointList.length<=1)return;let s=null;for(let i=0;i<t.segmentYList.length;i++){const e=t.segmentYList[i];if(0===e.value){s=e;break}}if(!s)return;const h=(t.dataArea.y+s.pixel).toString();i.push("<path "),i.push('class="line-fill" '),i.push('data-line-index="'+e.index.toString()+'" '),i.push('fill="'+e.color+'" '),i.push('d="');let r=e.pointList[0],n=t.dataArea.x+r.xPixel,o=t.dataArea.y+r.yPixel;i.push("M "+n.toString()+" "+o.toString());for(let s=1;s<e.pointList.length;s++){const h=e.pointList[s];n=t.dataArea.x+h.xPixel,o=t.dataArea.y+h.yPixel,i.push(" L "+n.toString()+" "+o.toString())}let a=e.pointList[e.pointList.length-1];i.push(" L "+(t.dataArea.x+a.xPixel).toString()+" "+h),i.push(" L "+(t.dataArea.x+r.xPixel).toString()+" "+h),i.push(" L "+(t.dataArea.x+r.xPixel).toString()+" "+(t.dataArea.y+r.yPixel).toString()),i.push(" Z"),i.push('"></path>')}Pt(t,i,e){if(e.pointList.length<=1)return;let s=null;for(let i=0;i<t.segmentYList.length;i++){const e=t.segmentYList[i];if(0===e.value){s=e;break}}if(!s)return;const h=(t.dataArea.y+s.pixel).toString();i.push("<path "),i.push('class="line-fill" '),i.push('data-line-index="'+e.index.toString()+'" '),i.push('fill="'+e.color+'" '),i.push('d="');let r=e.pointList[0],n=t.dataArea.x+r.xPixel,o=t.dataArea.y+r.yPixel;i.push("M "+n.toString()+" "+o.toString());let a=.15;e.smoothing&&(a=e.smoothing);for(let s=0;s<e.pointList.length-1;s++){let h=null,r=null,n=null,o=null;h=0===s?e.pointList[s]:e.pointList[s-1],r=e.pointList[s],n=e.pointList[s+1],o=s===e.pointList.length-2?n:e.pointList[s+2];let l=t.dataArea.x+(r.xPixel+(n.xPixel-h.xPixel)*a),c=t.dataArea.y+(r.yPixel+(n.yPixel-h.yPixel)*a),u=t.dataArea.x+(n.xPixel-(o.xPixel-r.xPixel)*a),p=t.dataArea.y+(n.yPixel-(o.yPixel-r.yPixel)*a);i.push(" C "),i.push(l.toString()),i.push(","),i.push(c.toString()),i.push(" "),i.push(u.toString()),i.push(","),i.push(p.toString()),i.push(" "),i.push((t.dataArea.x+n.xPixel).toString()),i.push(","),i.push((t.dataArea.y+n.yPixel).toString())}let l=e.pointList[e.pointList.length-1];i.push(" L "+(t.dataArea.x+l.xPixel).toString()+" "+h),i.push(" L "+(t.dataArea.x+r.xPixel).toString()+" "+h),i.push(" L "+(t.dataArea.x+r.xPixel).toString()+" "+(t.dataArea.y+r.yPixel).toString()),i.push(" Z"),i.push('"></path>')}Xt(t,e,s,h){const r=(s/2).toString();t.lineList.forEach((s=>{s.pointList.length<=1||s.modeType===i.MODE_TYPE_BAR&&2!==h||s.pointList.forEach((i=>{e.push("<circle "),0===h&&e.push('class="line-dot" '),1===h&&e.push('class="line-dot line-interface-dot" '),2===h&&e.push('class="line-dot line-event-dot" '),e.push('data-line-index="'+s.index.toString()+'" '),e.push('data-data-index="'+i.dataIndex.toString()+'" '),e.push('fill="'+s.color+'" ');let n=t.dataArea.x+i.xPixel,o=t.dataArea.y+i.yPixel;e.push('cx="'+n.toString()+'" cy="'+o.toString()+'" '),e.push('r="'+r+'" '),e.push("></circle>")}))}))}}export class UiLineChart extends HTMLElement{constructor(){super(),this.V=new i,this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=UiLineChart.uiHtml,this.shadowRoot.adoptedStyleSheets=[UiLineChart.uiCssStyleSheet],this.Gt=this.shadowRoot.getElementById("chart"),this.Ut=this.shadowRoot.getElementById("svg"),this.B=this.shadowRoot.querySelector(".base"),this.Zt=new s,this.Vt=new e(this,this.V),this.Bt=this.Bt.bind(this),this.Wt=0,this.qt=0,this.Jt=!1}connectedCallback(){this.Kt=new ResizeObserver(this.Bt),this.Kt.observe(this.Ut)}disconnectedCallback(){this.Kt.unobserve(this.Ut),this.Vt.removeEvents(this.Gt)}chartItemHighlight(t){!1!==this.V.options.highlight&&this.Vt.chartItemHighlight(t)}chartItemSelect(t){!1!==this.V.options.selectable&&this.Vt.chartItemSelect(t)}setChart(t,i){if(this.V.processOptions(i),this.V.processData(t),this.Qt(),0===this.Wt||0===this.qt){const t=this.Ut.getBoundingClientRect();this.Wt=t.width,this.qt=t.height,this.Ut.style.opacity=0,this.$t&&(clearTimeout(this.$t),this.$t=null),this.$t=setTimeout((()=>{this.ti(),this.Ut.style.opacity=1}),250)}}Bt(t){if(0===t.length)return;const i=t[0];let e=0,s=0;if(i.contentBoxSize)e=i.contentBoxSize[0].inlineSize,s=i.contentBoxSize[0].blockSize;else{if(!i.devicePixelContentBoxSize)throw new Error("SVG width/height problems");e=i.devicePixelContentBoxSize[0].inlineSize,s=i.devicePixelContentBoxSize[0].blockSize}e===this.Wt&&s===this.qt||(this.Wt=e,this.qt=s,this.Ut.style.opacity=0,this.$t&&(clearTimeout(this.$t),this.$t=null),this.$t=setTimeout((()=>{this.ti(),this.Ut.style.opacity=1}),250))}ti(){if(0===this.V.lineList.length)return;if(0===this.Wt||0===this.qt)return;if(this.Wt<this.V.minimumWidth||this.currentHeight<this.V.minimumHeight)return;this.Gt.classList.remove("highlight","selectable"),!0===this.V.options.highlight&&this.Gt.classList.add("highlight"),!0===this.V.options.selectable&&this.Gt.classList.add("selectable"),this.Ut.innerHTML="",this.Ut.setAttribute("viewbox","0 0 "+this.Wt.toString()+" "+this.qt.toString());const t=this.Zt.create(this.V,this.Wt,this.qt);this.Ut.innerHTML=t,this.Vt.addEvents(this.Gt)}async Qt(){const t=this.ii();if(!t)return;await customElements.whenDefined("ui-chart-legend");const i=[];for(let t=0;t<this.V.v.length;t++){const e=this.V.v[t],s={};s.color=e.color,s.legend=this.V.options.legend.formatTextCallback(e),s.index=t,i.push(s)}t.setChart(i,this)}ii(){if(!1===this.hasAttribute("id"))return;let t=this.getAttribute("id");if(!t)return;const i='ui-chart-legend[for="'+t+'"]';let e=!0,s=this;for(;s;){if(!0===e&&s.querySelector){const t=s.querySelector(i);if(t)return t}if(s.assignedSlot)s=s.assignedSlot,e=!1;else if(s.parentElement)s=s.parentElement,e=!0;else if(s.parentNode)s=s.parentNode,e=!1;else{if(!s.host)break;s=s.host,e=!0}}}}UiLineChart.uiCss=":host{isolation:isolate;}.base{position:relative;direction:ltr;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;width:100%;height:100%;background-color:var(--ui-line-chart-background, var(--ui-background, hsl(0 0% 97% / 1)));-webkit-tap-highlight-color:transparent;}.y-axis-line{stroke:var(--ui-line-chart-y-axis-line-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke-width:var(--ui-line-chart-y-axis-line-width, 2px);stroke-linecap:round;fill:none;}.y-axis-nub{stroke:var(--ui-line-chart-y-axis-nub-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke-width:var(--ui-line-chart-y-axis-nub-width, 2px);stroke-linecap:round;fill:none;}.y-axis-text{fill:var(--ui-line-chart-y-axis-text-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke:none;font-size:var(--ui-line-chart-y-axis-text-font-size, var(--ui-font-size-normal, 16px));font-weight:var(--ui-line-chart-y-axis-text-font-weight, var(--ui-font-weight-normal, normal));user-select:none;-webkit-user-select:none;}.y-axis-zero{stroke:var(--ui-line-chart-y-axis-zero-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke-width:var(--ui-line-chart-y-axis-zero-width, 2px);stroke-linecap:round;fill:none;}.x-axis-line{stroke:var(--ui-line-chart-x-axis-line-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke-width:var(--ui-line-chart-x-axis-line-width, 2px);stroke-linecap:round;fill:none;}.x-axis-nub{stroke:var(--ui-line-chart-x-axis-nub-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke-width:var(--ui-line-chart-x-axis-nub-width, 2px);stroke-linecap:round;fill:none;}.x-axis-text{fill:var(--ui-line-chart-x-axis-text-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke:none;font-size:var(--ui-line-chart-x-axis-text-font-size, var(--ui-font-size-normal, 16px));font-weight:var(--ui-line-chart-x-axis-text-font-weight, var(--ui-font-weight-normal, normal));user-select:none;-webkit-user-select:none;}.x-axis-zero{stroke:var(--ui-line-chart-x-axis-zero-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke-width:var(--ui-line-chart-x-axis-zero-width, 2px);stroke-linecap:round;fill:none;}.guide-line-y-axis{stroke:var(--ui-line-chart-guide-line-y-axis-color, var(--ui-midground, hsl(0 0% 90% / 1)));stroke-width:var(--ui-line-chart-guide-line-y-axis-width, 2px);stroke-dasharray:var(--ui-line-chart-guide-line-y-axis-dasharray, none);stroke-linecap:round;fill:none;}.guide-line-x-axis{stroke:var(--ui-line-chart-guide-line-x-axis-color, var(--ui-midground, hsl(0 0% 90% / 1)));stroke-width:var(--ui-line-chart-guide-line-x-axis-width, 2px);stroke-dasharray:var(--ui-line-chart-guide-line-x-axis-dasharray, none);stroke-linecap:round;fill:none;}#crosshair{opacity:0;}#crosshair-x-axis, #crosshair-y-axis{opacity:0;stroke:var(--ui-line-chart-crosshair-line-color, var(--ui-foreground, hsl(0 0% 18% / 1)));stroke-width:var(--ui-line-chart-crosshair-line-width, 2px);stroke-dasharray:var(--ui-line-chart-crosshair-line-dasharray, 2px 2px);stroke-linecap:none;fill:none;}#crosshair-dot{opacity:0;stroke:var(--ui-line-chart-crosshair-dot-color, hsl(0 50% 30% / 1));stroke-width:var(--ui-line-chart-crosshair-dot-width, 3px);fill:var(--ui-line-chart-crosshair-dot-background, hsl(0 0% 100% / 1));}#chart{grid-column:1;grid-row:1;display:flex;z-index:2;}svg{width:100%;height:100%;opacity:0;transition:opacity var(--ui-line-chart-animation-show-duraction, var(--ui-animation-duration-default, 200ms)) linear;pointer-events:none;}.line{opacity:var(--ui-line-chart-line-opacity, 1.0);fill:none;stroke-width:var(--ui-line-chart-line-size, 2px);stroke-linecap:round;stroke-linejoin:round;}.line-dot{opacity:var(--ui-line-chart-dot-opacity, 1.0);stroke:none;}.line-event{fill:none;stroke-width:var(--ui-line-chart-interface-size, 6px);stroke-linecap:round;stroke-linejoin:round;opacity:0;pointer-events:visibleStroke;}.line-event-dot{stroke:none;opacity:0;pointer-events:all;}.line.bar{stroke-linecap:butt;}#chart.selectable .line-event, #chart.selectable .line-event-dot{cursor:pointer;}.line-interface{fill:none;stroke-linecap:round;stroke-linejoin:round;opacity:0;}.line-interface-dot{stroke:none;opacity:0;}#chart.highlight, #chart.selectable{& .line:not(.line-interface):not(.line-event).highlighting, .line:not(.line-interface):not(.line-event).select{opacity:0;}& .line-dot:not(.line-interface-dot):not(.line-event-dot).highlighting, .line-dot:not(.line-interface-dot):not(.line-event-dot).select{opacity:0;}} #chart.highlight .line-interface.highlighting{opacity:var(--ui-line-chart-highlight-opacity, 1.0);stroke-width:var(--ui-line-chart-highlight-size, 4px);stroke-dasharray:var(--ui-line-chart-highlight-dasharray, 8px 8px);filter:var(--ui-line-chart-highlight-filter, none);}#chart.selectable .line-interface.select{opacity:var(--ui-line-chart-select-opacity, 0.8);stroke-width:var(--ui-line-chart-select-size, 4px);stroke-dasharray:var(--ui-chartline-select-dasharray, none);filter:var(--ui-line-chart-select-filter, drop-shadow(0 0 3px var(--ui-foreground, hsl(0 0% 18% / 1))));}#chart.highlight .line-interface-dot.highlighting{opacity:var(--ui-line-chart-dot-highlight-opacity, 1.0);filter:var(--ui-line-chart-dot-highlight-filter, none);}#chart.selectable .line-interface-dot.select{opacity:var(--ui-line-chart-dot-select-opacity, 0.8);filter:var(--ui-line-chart-dot-select-filter, drop-shadow(0 0 3px var(--ui-foreground, hsl(0 0% 18% / 1))));}.line-fill{stroke:none;opacity:var(--ui-line-chart-fill-opacity, 0.5);}#popup{position:absolute;display:none;z-index:3;pointer-events:none;--ui-lc-pbc:var(--ui-line-chart-popup-background, var(--ui-foreground, hsl(0 0% 18% / 1)));--ui-lc-pts:var(--ui-line-chart-popup-triangle-size, 8px);}#popup.triangle-top, #popup.triangle-bottom{grid-template-columns:1fr;grid-template-rows:auto auto;}#popup.triangle-left{grid-template-columns:1fr auto;grid-template-rows:1fr;}#popup.triangle-right{grid-template-columns:auto 1fr;grid-template-rows:1fr;}#popup.triangle-top .inner{grid-column:1;grid-row:2;}#popup.triangle-top .triangle{grid-column:1;grid-row:1;}#popup.triangle-bottom .inner{grid-column:1;grid-row:1;}#popup.triangle-bottom .triangle{grid-column:1;grid-row:2;}#popup.triangle-left .inner{grid-column:2;grid-row:1;}#popup.triangle-left .triangle{grid-column:1;grid-row:1;}#popup.triangle-right .inner{grid-column:1;grid-row:1;}#popup.triangle-right .triangle{grid-column:2;grid-row:1;}#popup .inner{display:grid;grid-template-columns:var(--ui-line-chart-popup-tab, 8px) 1fr;grid-template-rows:auto 1fr;row-gap:var(--ui-line-chart-popup-row-gap, 0);column-gap:var(--ui-line-chart-popup-column-gap, 4px);min-width:var(--ui-line-chart-popup-min-width, 100px);max-width:var(--ui-line-chart-popup-max-width, 150px);padding:var(--ui-line-chart-popup-padding, 4px);border-radius:var(--ui-line-chart-popup-radius, var(--ui-border-radius-small, 3px));background-color:var(--ui-lc-pbc);color:var(--ui-line-chart-popup-foreground, var(--ui-background, hsl(0 0% 90% / 1)));align-items:center;justify-items:center;user-select:none;-webkit-user-select:none;}#popup .triangle{width:0;height:0;}#popup.triangle-top .triangle{border-left:var(--ui-lc-pts) solid transparent;border-right:var(--ui-lc-pts) solid transparent;border-bottom:var(--ui-lc-pts) solid var(--ui-lc-pbc);justify-self:center;}#popup.triangle-bottom .triangle{border-left:var(--ui-lc-pts) solid transparent;border-right:var(--ui-lc-pts) solid transparent;border-top:var(--ui-lc-pts) solid var(--ui-lc-pbc);justify-self:center;}#popup.triangle-left .triangle{border-top:var(--ui-lc-pts) solid transparent;border-bottom:var(--ui-lc-pts) solid transparent;border-right:var(--ui-lc-pts) solid var(--ui-lc-pbc);align-self:center;}#popup.triangle-right .triangle{border-top:var(--ui-lc-pts) solid transparent;border-bottom:var(--ui-lc-pts) solid transparent;border-left:var(--ui-lc-pts) solid var(--ui-lc-pbc);align-self:center;}#popup.has-info.has-value{& #popup-info{grid-column:2;grid-row:1;}& #popup-value{grid-column:2;grid-row:2;}} #popup.has-value:not(.has-info){& .inner{min-width:0;}& #popup-info{display:none;}& #popup-value{grid-column:2;grid-row:1 / -1;}} #popup.has-info:not(.has-value){& .inner{min-width:0;}& #popup-info{grid-column:2;grid-row:1 / -1;}& #popup-value{display:none;}} #popup-info{font-size:var(--ui-line-chart-popup-info-font-size, var(--ui-font-size-small, 12px));font-weight:var(--ui-line-chart-popup-info-font-weight, var(--ui-font-weight-normal, normal));}#popup-value{font-size:var(--ui-line-chart-popup-value-font-size, var(--ui-font-size-normal, 16px));font-weight:var(--ui-line-chart-popup-value-font-weight, var(--ui-font-weight-bold, 600));}#popup-color{grid-column:1;grid-row:1 / -1;width:100%;height:100%;border-radius:2px;}::slotted(*:not(:defined)){display:none;}@media (prefers-reduced-motion){#chart > svg{transition:none;}}",UiLineChart.uiHtml='<div class="base"><div id="chart"><svg id="svg"></svg></div><div id="popup"><div class="triangle"></div><div class="inner"><div id="popup-color"></div><div id="popup-info"></div><div id="popup-value"></div></div></div></div>',t.createUi(UiLineChart,"ui-line-chart",import.meta.url);