Socket
Socket
Sign inDemoInstall

uplot

Package Overview
Dependencies
Maintainers
1
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

uplot - npm Package Compare versions

Comparing version 1.0.2 to 1.0.3

dist/uPlot.esm.d.ts

91

dist/uPlot.cjs.js

@@ -7,3 +7,3 @@ /**

* An exceptionally fast, tiny time series chart
* https://github.com/leeoniya/uPlot (v1.0.2)
* https://github.com/leeoniya/uPlot (v1.0.3)
*/

@@ -719,2 +719,3 @@

max: -inf,
idxs: [],
};

@@ -770,3 +771,4 @@

var maxPts = self.bbox.width / dia / 2;
return self.idxs[1] - self.idxs[0] <= maxPts;
var idxs = self.series[0].idxs;
return idxs[1] - idxs[0] <= maxPts;
}

@@ -783,3 +785,3 @@

// stroke: "#000",
fill: "#fff",
// fill: "#fff",
// width: 1,

@@ -795,2 +797,3 @@ // size: 10,

max: -inf,
idxs: [],

@@ -883,3 +886,3 @@ path: null,

function uPlot(opts, data, then) {
var self = this;
var self = {};

@@ -1012,3 +1015,3 @@ opts = copy(opts);

var i1 = null;
var idxs = self.idxs = [i0, i1];
var idxs = series[0].idxs;

@@ -1254,2 +1257,7 @@ var data0 = null;

if (i == 0) {
var minMax = sc.range(self, sc.min, sc.max);
sc.min = minMax[0];
sc.max = minMax[1];
i0 = closestIdx(sc.min, data[0]);

@@ -1264,12 +1272,4 @@ i1 = closestIdx(sc.max, data[0]);

idxs[0] = i0;
idxs[1] = i1;
s.min = data0[i0];
s.max = data0[i1];
var minMax = sc.range(self, sc.min, sc.max);
sc.min = minMax[0];
sc.max = minMax[1];
}

@@ -1284,2 +1284,5 @@ else if (s.show && pendScales[k] == null) {

}
s.idxs[0] = i0;
s.idxs[1] = i1;
});

@@ -1345,5 +1348,6 @@

var offset = (width % 2) / 2;
var isStroked = p.width > 0;
var outerDia = p.size * pxRatio;
var innerDia = p.width ? (p.size - p.width * 2) * pxRatio : null;
var rad = (p.size - p.width) / 2 * pxRatio;
var dia = round3(rad * 2);

@@ -1355,3 +1359,8 @@ ctx.translate(offset, offset);

ctx.beginPath();
ctx.rect(plotLft - outerDia, plotTop - outerDia, plotWid + outerDia*2, plotHgt + outerDia*2);
ctx.rect(
plotLft - dia,
plotTop - dia,
plotWid + dia * 2,
plotHgt + dia * 2
);
ctx.clip();

@@ -1361,4 +1370,3 @@

var pOuter = new Path2D();
var pInner = innerDia ? new Path2D() : null;
var path = new Path2D();

@@ -1370,20 +1378,16 @@ for (var pi = i0; pi <= i1; pi++) {

pOuter.moveTo(x + outerDia/2, y);
pOuter.arc(x, y, outerDia/2, 0, PI * 2);
if (innerDia) {
pInner.moveTo(x + innerDia/2, y);
pInner.arc(x, y, innerDia/2, 0, PI * 2);
}
path.moveTo(x + rad, y);
path.arc(x, y, rad, 0, PI * 2);
}
}
// outer fill
ctx.fillStyle = (innerDia ? p.stroke : p.fill) || s.stroke || hexBlack;
ctx.fill(pOuter);
setCtxStyle(
p.stroke || s.stroke || hexBlack,
width,
null,
p.fill || (isStroked ? "#fff" : s.stroke || hexBlack)
);
if (innerDia) {
ctx.fillStyle = p.fill || s.fill || hexBlack;
ctx.fill(pInner);
}
ctx.fill(path);
isStroked && ctx.stroke(path);

@@ -1427,3 +1431,3 @@ ctx.globalAlpha = 1;

if (s.points.show(self, i))
if (s.points.show(self, i, i0, i1))
{ drawPoints(i); }

@@ -1499,4 +1503,5 @@

function buildClip(s, gaps) {
var toSpan = new Set(s.spanGaps(self, gaps));
function buildClip(is, gaps) {
var s = series[is];
var toSpan = new Set(s.spanGaps(self, gaps, is));
gaps = gaps.filter(function (g) { return !toSpan.has(g); });

@@ -1626,3 +1631,3 @@

if (dir == 1) {
_paths.clip = buildClip(s, gaps);
_paths.clip = buildClip(is, gaps);

@@ -1644,6 +1649,6 @@ if (s.fill != null) {

function getIncrSpace(axis, min, max, canDim) {
var minSpace = axis.space(self, min, max, canDim);
var incrs = axis.incrs(self, min, max, canDim, minSpace);
var incrSpace = findIncr(max - min, incrs, canDim, minSpace);
function getIncrSpace(axis, min, max, fullDim) {
var minSpace = axis.space(self, min, max, fullDim);
var incrs = axis.incrs(self, min, max, fullDim, minSpace);
var incrSpace = findIncr(max - min, incrs, fullDim, minSpace);
incrSpace.push(incrSpace[1]/minSpace);

@@ -1953,3 +1958,3 @@ return incrSpace;

placeTag("th", null, head);
keys = vals(0);
keys = vals(self, 1, 0);

@@ -2248,3 +2253,3 @@ for (var key in keys)

var vals = multiValLegend ? s.values(self, idx) : {_: s.value(self, src[idx], idx, i$1)};
var vals = multiValLegend ? s.values(self, i$1, idx) : {_: s.value(self, src[idx], i$1, idx)};

@@ -2548,2 +2553,4 @@ var j$1 = 0;

{ _init(); }
return self;
}

@@ -2550,0 +2557,0 @@

@@ -7,3 +7,3 @@ /**

* An exceptionally fast, tiny time series chart
* https://github.com/leeoniya/uPlot (v1.0.2)
* https://github.com/leeoniya/uPlot (v1.0.3)
*/

@@ -722,2 +722,3 @@

max: -inf,
idxs: [],
};

@@ -773,3 +774,4 @@

let maxPts = self.bbox.width / dia / 2;
return self.idxs[1] - self.idxs[0] <= maxPts;
let idxs = self.series[0].idxs;
return idxs[1] - idxs[0] <= maxPts;
}

@@ -786,3 +788,3 @@

// stroke: "#000",
fill: "#fff",
// fill: "#fff",
// width: 1,

@@ -798,2 +800,3 @@ // size: 10,

max: -inf,
idxs: [],

@@ -886,3 +889,3 @@ path: null,

function uPlot(opts, data, then) {
const self = this;
const self = {};

@@ -1015,3 +1018,3 @@ opts = copy(opts);

let i1 = null;
const idxs = self.idxs = [i0, i1];
const idxs = series[0].idxs;

@@ -1253,2 +1256,7 @@ let data0 = null;

if (i == 0) {
let minMax = sc.range(self, sc.min, sc.max);
sc.min = minMax[0];
sc.max = minMax[1];
i0 = closestIdx(sc.min, data[0]);

@@ -1263,12 +1271,4 @@ i1 = closestIdx(sc.max, data[0]);

idxs[0] = i0;
idxs[1] = i1;
s.min = data0[i0];
s.max = data0[i1];
let minMax = sc.range(self, sc.min, sc.max);
sc.min = minMax[0];
sc.max = minMax[1];
}

@@ -1283,2 +1283,5 @@ else if (s.show && pendScales[k] == null) {

}
s.idxs[0] = i0;
s.idxs[1] = i1;
});

@@ -1344,5 +1347,6 @@

const offset = (width % 2) / 2;
const isStroked = p.width > 0;
let outerDia = p.size * pxRatio;
let innerDia = p.width ? (p.size - p.width * 2) * pxRatio : null;
let rad = (p.size - p.width) / 2 * pxRatio;
let dia = round3(rad * 2);

@@ -1354,3 +1358,8 @@ ctx.translate(offset, offset);

ctx.beginPath();
ctx.rect(plotLft - outerDia, plotTop - outerDia, plotWid + outerDia*2, plotHgt + outerDia*2);
ctx.rect(
plotLft - dia,
plotTop - dia,
plotWid + dia * 2,
plotHgt + dia * 2,
);
ctx.clip();

@@ -1360,4 +1369,3 @@

let pOuter = new Path2D();
let pInner = innerDia ? new Path2D() : null;
const path = new Path2D();

@@ -1369,20 +1377,16 @@ for (let pi = i0; pi <= i1; pi++) {

pOuter.moveTo(x + outerDia/2, y);
pOuter.arc(x, y, outerDia/2, 0, PI * 2);
if (innerDia) {
pInner.moveTo(x + innerDia/2, y);
pInner.arc(x, y, innerDia/2, 0, PI * 2);
}
path.moveTo(x + rad, y);
path.arc(x, y, rad, 0, PI * 2);
}
}
// outer fill
ctx.fillStyle = (innerDia ? p.stroke : p.fill) || s.stroke || hexBlack;
ctx.fill(pOuter);
setCtxStyle(
p.stroke || s.stroke || hexBlack,
width,
null,
p.fill || (isStroked ? "#fff" : s.stroke || hexBlack),
);
if (innerDia) {
ctx.fillStyle = p.fill || s.fill || hexBlack;
ctx.fill(pInner);
}
ctx.fill(path);
isStroked && ctx.stroke(path);

@@ -1426,3 +1430,3 @@ ctx.globalAlpha = 1;

if (s.points.show(self, i))
if (s.points.show(self, i, i0, i1))
drawPoints(i);

@@ -1495,4 +1499,5 @@

function buildClip(s, gaps) {
let toSpan = new Set(s.spanGaps(self, gaps));
function buildClip(is, gaps) {
let s = series[is];
let toSpan = new Set(s.spanGaps(self, gaps, is));
gaps = gaps.filter(g => !toSpan.has(g));

@@ -1622,3 +1627,3 @@

if (dir == 1) {
_paths.clip = buildClip(s, gaps);
_paths.clip = buildClip(is, gaps);

@@ -1640,6 +1645,6 @@ if (s.fill != null) {

function getIncrSpace(axis, min, max, canDim) {
let minSpace = axis.space(self, min, max, canDim);
let incrs = axis.incrs(self, min, max, canDim, minSpace);
let incrSpace = findIncr(max - min, incrs, canDim, minSpace);
function getIncrSpace(axis, min, max, fullDim) {
let minSpace = axis.space(self, min, max, fullDim);
let incrs = axis.incrs(self, min, max, fullDim, minSpace);
let incrSpace = findIncr(max - min, incrs, fullDim, minSpace);
incrSpace.push(incrSpace[1]/minSpace);

@@ -1945,3 +1950,3 @@ return incrSpace;

placeTag("th", null, head);
keys = vals(0);
keys = vals(self, 1, 0);

@@ -2240,3 +2245,3 @@ for (var key in keys)

let vals = multiValLegend ? s.values(self, idx) : {_: s.value(self, src[idx], idx, i)};
let vals = multiValLegend ? s.values(self, i, idx) : {_: s.value(self, src[idx], i, idx)};

@@ -2540,2 +2545,4 @@ let j = 0;

_init();
return self;
}

@@ -2542,0 +2549,0 @@

@@ -7,3 +7,3 @@ /**

* An exceptionally fast, tiny time series chart
* https://github.com/leeoniya/uPlot (v1.0.2)
* https://github.com/leeoniya/uPlot (v1.0.3)
*/

@@ -720,2 +720,3 @@

max: -inf,
idxs: [],
};

@@ -771,3 +772,4 @@

var maxPts = self.bbox.width / dia / 2;
return self.idxs[1] - self.idxs[0] <= maxPts;
var idxs = self.series[0].idxs;
return idxs[1] - idxs[0] <= maxPts;
}

@@ -784,3 +786,3 @@

// stroke: "#000",
fill: "#fff",
// fill: "#fff",
// width: 1,

@@ -796,2 +798,3 @@ // size: 10,

max: -inf,
idxs: [],

@@ -884,3 +887,3 @@ path: null,

function uPlot(opts, data, then) {
var self = this;
var self = {};

@@ -1013,3 +1016,3 @@ opts = copy(opts);

var i1 = null;
var idxs = self.idxs = [i0, i1];
var idxs = series[0].idxs;

@@ -1255,2 +1258,7 @@ var data0 = null;

if (i == 0) {
var minMax = sc.range(self, sc.min, sc.max);
sc.min = minMax[0];
sc.max = minMax[1];
i0 = closestIdx(sc.min, data[0]);

@@ -1265,12 +1273,4 @@ i1 = closestIdx(sc.max, data[0]);

idxs[0] = i0;
idxs[1] = i1;
s.min = data0[i0];
s.max = data0[i1];
var minMax = sc.range(self, sc.min, sc.max);
sc.min = minMax[0];
sc.max = minMax[1];
}

@@ -1285,2 +1285,5 @@ else if (s.show && pendScales[k] == null) {

}
s.idxs[0] = i0;
s.idxs[1] = i1;
});

@@ -1346,5 +1349,6 @@

var offset = (width % 2) / 2;
var isStroked = p.width > 0;
var outerDia = p.size * pxRatio;
var innerDia = p.width ? (p.size - p.width * 2) * pxRatio : null;
var rad = (p.size - p.width) / 2 * pxRatio;
var dia = round3(rad * 2);

@@ -1356,3 +1360,8 @@ ctx.translate(offset, offset);

ctx.beginPath();
ctx.rect(plotLft - outerDia, plotTop - outerDia, plotWid + outerDia*2, plotHgt + outerDia*2);
ctx.rect(
plotLft - dia,
plotTop - dia,
plotWid + dia * 2,
plotHgt + dia * 2
);
ctx.clip();

@@ -1362,4 +1371,3 @@

var pOuter = new Path2D();
var pInner = innerDia ? new Path2D() : null;
var path = new Path2D();

@@ -1371,20 +1379,16 @@ for (var pi = i0; pi <= i1; pi++) {

pOuter.moveTo(x + outerDia/2, y);
pOuter.arc(x, y, outerDia/2, 0, PI * 2);
if (innerDia) {
pInner.moveTo(x + innerDia/2, y);
pInner.arc(x, y, innerDia/2, 0, PI * 2);
}
path.moveTo(x + rad, y);
path.arc(x, y, rad, 0, PI * 2);
}
}
// outer fill
ctx.fillStyle = (innerDia ? p.stroke : p.fill) || s.stroke || hexBlack;
ctx.fill(pOuter);
setCtxStyle(
p.stroke || s.stroke || hexBlack,
width,
null,
p.fill || (isStroked ? "#fff" : s.stroke || hexBlack)
);
if (innerDia) {
ctx.fillStyle = p.fill || s.fill || hexBlack;
ctx.fill(pInner);
}
ctx.fill(path);
isStroked && ctx.stroke(path);

@@ -1428,3 +1432,3 @@ ctx.globalAlpha = 1;

if (s.points.show(self, i))
if (s.points.show(self, i, i0, i1))
{ drawPoints(i); }

@@ -1500,4 +1504,5 @@

function buildClip(s, gaps) {
var toSpan = new Set(s.spanGaps(self, gaps));
function buildClip(is, gaps) {
var s = series[is];
var toSpan = new Set(s.spanGaps(self, gaps, is));
gaps = gaps.filter(function (g) { return !toSpan.has(g); });

@@ -1627,3 +1632,3 @@

if (dir == 1) {
_paths.clip = buildClip(s, gaps);
_paths.clip = buildClip(is, gaps);

@@ -1645,6 +1650,6 @@ if (s.fill != null) {

function getIncrSpace(axis, min, max, canDim) {
var minSpace = axis.space(self, min, max, canDim);
var incrs = axis.incrs(self, min, max, canDim, minSpace);
var incrSpace = findIncr(max - min, incrs, canDim, minSpace);
function getIncrSpace(axis, min, max, fullDim) {
var minSpace = axis.space(self, min, max, fullDim);
var incrs = axis.incrs(self, min, max, fullDim, minSpace);
var incrSpace = findIncr(max - min, incrs, fullDim, minSpace);
incrSpace.push(incrSpace[1]/minSpace);

@@ -1954,3 +1959,3 @@ return incrSpace;

placeTag("th", null, head);
keys = vals(0);
keys = vals(self, 1, 0);

@@ -2249,3 +2254,3 @@ for (var key in keys)

var vals = multiValLegend ? s.values(self, idx) : {_: s.value(self, src[idx], idx, i$1)};
var vals = multiValLegend ? s.values(self, i$1, idx) : {_: s.value(self, src[idx], i$1, idx)};

@@ -2549,2 +2554,4 @@ var j$1 = 0;

{ _init(); }
return self;
}

@@ -2551,0 +2558,0 @@

@@ -1,2 +0,2 @@

/*! https://github.com/leeoniya/uPlot (v1.0.2) */
var uPlot=function(){"use strict";function n(n,t,e,r){var i;e=e||0;for(var a=2147483647>=(r=r||t.length-1);r-e>1;)n>t[i=a?e+r>>1:o((e+r)/2)]?e=i:r=i;return n-t[e]>t[r]-n?r:e}function t(n,t,e,i){var a=t-n,l=f(a||r(t)||1),u=o(l),c=s(10,u)*e,h=0==a?c:0,v=w(function(n,t){return o(n/t)*t}(n-h,c)),p=w(d(t+h,c));return i&&(0==a?t>0?v=0:0>t&&(p=0):(c>p-t&&(p+=c),c>n-v&&(v-=c),n>=0&&0>v&&(v=0),0>=t&&p>0&&(p=0))),[v,p]}var e=Math,r=e.abs,o=e.floor,i=e.round,a=e.ceil,l=e.min,u=e.max,s=e.pow,f=e.log10,c=e.PI;function h(n,t){return i(n/t)*t}function v(n,t,e){return l(u(n,t),e)}function p(n){return"function"==typeof n?n:function(){return n}}function m(n,t){return t}function d(n,t){return a(n/t)*t}function g(n){return i(1e3*n)/1e3}function w(n){return i(1e6*n)/1e6}var x=Array.isArray;function b(n){return"object"==typeof n&&null!==n}function y(n){var t;if(x(n))t=n.map(y);else if(b(n))for(var e in t={},n)t[e]=y(n[e]);else t=n;return t}function S(n){for(var t=arguments,e=1;t.length>e;e++){var r=t[e];for(var o in r)b(n[o])?S(n[o],y(r[o])):n[o]=y(r[o])}return n}var k=requestAnimationFrame,M=document,Y=window,D=devicePixelRatio;function E(n,t){null!=t&&n.classList.add(t)}function T(n,t,e){n.style[t]=e+"px"}function z(n,t,e){var r=M.createElement(n);return null!=t&&E(r,t),null!=e&&e.appendChild(r),r}function A(n,t){return z("div",n,t)}function C(n,t,e){n.style.transform="translate("+t+"px,"+e+"px)"}var F={passive:!0};function _(n,t,e){t.addEventListener(n,e,F)}function H(n,t,e){t.removeEventListener(n,e,F)}var P=["January","February","March","April","May","June","July","August","September","October","November","December"],W=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function L(n){return n.slice(0,3)}var N=W.map(L),I=P.map(L);function j(n){return(10>n?"0":"")+n}var B={YYYY:function(n){return n.getFullYear()},YY:function(n){return(n.getFullYear()+"").slice(2)},MMMM:function(n){return P[n.getMonth()]},MMM:function(n){return I[n.getMonth()]},MM:function(n){return j(n.getMonth()+1)},M:function(n){return n.getMonth()+1},DD:function(n){return j(n.getDate())},D:function(n){return n.getDate()},WWWW:function(n){return W[n.getDay()]},WWW:function(n){return N[n.getDay()]},HH:function(n){return j(n.getHours())},H:function(n){return n.getHours()},h:function(n){var t=n.getHours();return 0==t?12:t>12?t-12:t},AA:function(n){return 12>n.getHours()?"AM":"PM"},aa:function(n){return 12>n.getHours()?"am":"pm"},a:function(n){return 12>n.getHours()?"a":"p"},mm:function(n){return j(n.getMinutes())},m:function(n){return n.getMinutes()},ss:function(n){return j(n.getSeconds())},s:function(n){return n.getSeconds()},fff:function(n){return function(n){return(10>n?"00":100>n?"0":"")+n}(n.getMilliseconds())}};function G(n){for(var t,e=[],r=/\{([a-z]+)\}|[^{]+/gi;t=r.exec(n);)e.push("{"==t[0][0]?B[t[1]]:t[0]);return function(n){for(var t="",r=0;e.length>r;r++)t+="string"==typeof e[r]?e[r]:e[r](n);return t}}function J(n,t,e){for(var o=[],i=n;t>i;i++)for(var a=0;e.length>a;a++){var l=e[a]*s(10,i);o.push(+l.toFixed(r(i)))}return o}var R=[1,2,5],U=J(-12,0,R),V=J(0,12,R),q=U.concat(V),O=3600,X=24*O,Z=30*X,K=365*X,Q=[5e-4].concat(J(-3,0,R),[1,5,10,15,30,60,300,600,900,1800,O,2*O,3*O,4*O,6*O,8*O,12*O,X,2*X,3*X,4*X,5*X,6*X,7*X,8*X,9*X,10*X,15*X,Z,2*Z,3*Z,4*Z,6*Z,K,2*K,5*K,10*K,25*K,50*K,100*K]);function $(n){return n.map((function(n){return[n[0],G(n[1]),n[2],G(n[4]?n[1]+n[3]:n[3])]}))}var nn="{M}/{D}",tn="\n"+nn,en="{h}:{mm}{aa}",rn=$([[K,"{YYYY}",7,"",1],[28*X,"{MMM}",7,"\n{YYYY}",1],[X,nn,7,"\n{YYYY}",1],[O,"{h}{aa}",4,tn,1],[60,en,4,tn,1],[1,":{ss}",2,tn+" "+en,1],[.001,":{ss}.{fff}",2,tn+" "+en,1]]);function on(n,t){return function(e,r){var o=g(r[1]-r[0]),i=t.find((function(n){return o>=n[0]})),a=null,l=null,u=null;return r.map((function(t){var e=n(t),r=e.getFullYear(),o=e.getDate(),s=e.getMinutes(),f=r!=a,c=o!=l,h=s!=u;return a=r,l=o,u=s,(7==i[2]&&f||4==i[2]&&c||2==i[2]&&h?i[3]:i[1])(e)}))}}function an(n,t,e){return new Date(n,t,e)}function ln(n){return G(n)}var un=ln("{YYYY}-{MM}-{DD} {h}:{mm}{aa}");function sn(n,t){return function(e,r){return t(n(r))}}var fn={show:!0,x:!0,y:!0,lock:!1,points:{show:function(n){return n.series.map((function(n,t){if(t>0){var e=A();e.style.background=n.stroke||"#000";var r=Sn(n.width,1),o=(r-1)/-2;return T(e,"width",r),T(e,"height",r),T(e,"marginLeft",o),T(e,"marginTop",o),e}}))}},drag:{setScale:!0,x:!0,y:!1},focus:{prox:-1},locked:!1,left:-10,top:-10,idx:null},cn={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},hn=S({},cn,{size:10}),vn='12px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',pn="bold "+vn,mn={type:"x",show:!0,scale:"x",space:50,gap:5,size:50,labelSize:30,labelFont:pn,side:2,grid:cn,ticks:hn,font:vn},dn={show:!0,scale:"x",min:1/0,max:-1/0},gn=new Intl.NumberFormat(navigator.language);function wn(n,t){return t.map(gn.format)}function xn(n,t,e,r,o,i){for(var a=[],l=t=i?t:+d(t,r).toFixed(12);e>=l;l=+(l+r).toFixed(12))a.push(l);return a}function bn(n,t){return t}var yn={type:"y",show:!0,scale:"y",space:40,gap:5,size:50,labelSize:30,labelFont:pn,side:3,grid:cn,ticks:hn,font:vn};function Sn(n,t){return u(g(5*t),2*g(n*t)-1)}var kn={scale:"y",show:!0,band:!1,alpha:1,points:{show:function(n,t){var e=Sn(n.series[t].width,D);return n.bbox.width/e/2>=n.idxs[1]-n.idxs[0]},fill:"#fff"},values:null,min:1/0,max:-1/0,path:null,clip:null},Mn={time:!0,auto:!1,distr:1,min:1/0,max:-1/0},Yn=S({},Mn,{time:!1,auto:!0}),Dn={};function En(){var n=[];return{sub:function(t){n.push(t)},unsub:function(t){n=n.filter((function(n){return n!=t}))},pub:function(t,e,r,o,i,a,l){n.length>1&&n.forEach((function(n){n!=e&&n.pub(t,e,r,o,i,a,l)}))}}}function Tn(n,t,e){return[n[0],n[1]].concat(n.slice(2)).map((function(n,r){return S({},0==r||n&&n.side%2==0?t:e,n)}))}function zn(n,t,e,r){return r+(1-(n-t.min)/(t.max-t.min))*e}function An(n,t,e,r){return r+(n-t.min)/(t.max-t.min)*e}function Cn(n,t,e){return[t,e]}function Fn(n,e,r){return t(e,r,.2,!0)}function _n(n){return 0==n.button}function Hn(n){var t;return[n=n.replace(/\d+/,(function(n){return t=i(n*D)})),t]}function Pn(t,e,a){var s=this;((t=y(t)).plugins||[]).forEach((function(n){n.opts&&(t=n.opts(s,t)||t)}));var f=!1,b=Tn(t.series,dn,kn),F=Tn(t.axes||[],mn,yn),P=t.scales=t.scales||{},W=S({x:i(yn.size/2),y:i(mn.size/3)},t.gutters),L=t.tzDate||function(n){return new Date(1e3*n)},N=function(n){return function(t,e,r,i,a){var l=[],u=i>=Z&&K>i,s=n(e),f=s/1e3,c=an(s.getFullYear(),s.getMonth(),u?1:s.getDate()),h=c/1e3;if(u)for(var v=i/Z,p=f==h?f:an(c.getFullYear(),c.getMonth()+v,1)/1e3,m=new Date(1e3*p),x=m.getFullYear(),b=m.getMonth(),y=0;r>=p;y++){var S=an(x,b+v*y,1);(p=(+S+(S-n(S/1e3)))/1e3)>r||l.push(p)}else{var k=X>i?i:X,M=h+(o(e)-o(f))+d(f-h,k);l.push(M);for(var Y=n(M),D=Y.getHours()+Y.getMinutes()/60+Y.getSeconds()/O,E=i/O;;){M=g(M+i);var T=o(w(D+E))%24,z=n(M).getHours()-T;if(z>1&&(z=-1),(M-=z*O)>r)break;D=(D+E)%24,.7>g((M-l[l.length-1])/i)*a||l.push(M)}}return l}}(L),I=on(L,rn),j=sn(L,un);s.series=b,s.axes=F,s.scales=P;var B={};for(var G in P){var J=P[G];null==J.min&&null==J.max||(B[G]={min:J.min,max:J.max})}var R=S({show:!0},t.legend);for(var U in b.forEach((function(n,t){var e=n.scale,r=P[e]=S({},0==t?Mn:Yn,P[e]),o=r.time;r.range=p(r.range||(o||0==t?Cn:Fn)),n.spanGaps=!0===n.spanGaps?m:p(n.spanGaps||[]);var i=n.value;if(n.value=o?function(n){return"string"==typeof n}(i)?sn(L,ln(i)):i||j:i||bn,n.label=n.label||(o?"Time":"Value"),t>0){n.width=null==n.width?1:n.width,n.paths=n.paths||ct;var a=Sn(n.width,1);n.points=S({},{size:a,width:u(1,.2*a)},n.points),n.points.show=p(n.points.show),n._paths=null}})),P){var nn=P[U];null!=nn.from&&(P[U]=S({},P[nn.from],nn))}var tn=b[0].scale,en=P[tn].distr;F.forEach((function(n){if(n.show){var t=P[n.scale];null==t&&(n.scale=n.side%2?b[1].scale:tn,t=P[n.scale]);var e=t.time;n.space=p(n.space),n.incrs=p(n.incrs||(2==t.distr?V:e?Q:q)),n.split=p(n.split||(e&&1==t.distr?N:xn));var r=n.values;n.values=e?x(r)?on(L,$(r)):r||I:r||wn,n.font=Hn(n.font),n.labelFont=Hn(n.labelFont)}}));var cn,hn=s.root=A("uplot");null!=t.id&&(hn.id=t.id),E(hn,t.class),t.title&&(A("title",hn).textContent=t.title);var vn,pn,gn,Pn,Wn,Ln,Nn,In,jn,Bn,Gn=null,Jn=null,Rn=s.idxs=[Gn,Jn],Un=null;function Vn(n,t){s.data=n,e=n.slice(),cn=(Un=e[0]).length,2==en&&(e[0]=Un.map((function(n,t){return t}))),pt(),le("setData"),!1!==t&&qn()}function qn(){Gn=Rn[0]=0,Jn=Rn[1]=cn-1,Ht(tn,2==en?Gn:e[0][Gn],2==en?Jn:e[0][Jn])}function On(n,t,e,r){Kn.strokeStyle=n||"#000",Kn.lineWidth=t,Kn.lineJoin="round",Kn.setLineDash(e||[]),Kn.fillStyle=r||"#000"}function Xn(n,t){s.width=vn=gn=n,s.height=pn=Pn=t,Wn=Ln=0,function(){var n=!1,t=!1,e=!1,r=!1;F.forEach((function(o){if(o.show){var i=o.side,a=i%2,l=o.size+(o.labelSize=null!=o.label?o.labelSize||30:0);l>0&&(a?(gn-=l,3==i?(Wn+=l,r=!0):e=!0):(Pn-=l,0==i?(Ln+=l,n=!0):t=!0))}})),(n||t)&&(e||(gn-=W.x),r||(gn-=W.x,Wn+=W.x)),(r||e)&&(t||(Pn-=W.y),n||(Pn-=W.y,Ln+=W.y))}(),function(){var n=Wn+gn,t=Ln+Pn,e=Wn,r=Ln;function o(o,i){switch(o){case 1:return(n+=i)-i;case 2:return(t+=i)-i;case 3:return(e-=i)+i;case 0:return(r-=i)+i}}F.forEach((function(n){var t=n.side;n._pos=o(t,n.size),null!=n.label&&(n._lpos=o(t,n.labelSize))}))}();var e=s.bbox;Nn=e.left=h(Wn*D,.5),In=e.top=h(Ln*D,.5),jn=e.width=h(gn*D,.5),Bn=e.height=h(Pn*D,.5),T($n,"left",Wn),T($n,"top",Ln),T($n,"width",gn),T($n,"height",Pn),T(nt,"left",Wn),T(nt,"top",Ln),T(nt,"width",gn),T(nt,"height",Pn),T(Qn,"width",vn),T(Qn,"height",pn),Zn.width=i(vn*D),Zn.height=i(pn*D),f&&Ht(tn,P[tn].min,P[tn].max),f&&le("setSize")}s.setData=Vn,s.bbox={},s.setSize=function(n){Xn(n.width,n.height)};var Zn=z("canvas"),Kn=s.ctx=Zn.getContext("2d"),Qn=A("wrap",hn),$n=A("under",Qn);Qn.appendChild(Zn);var nt=A("over",Qn);function tt(){if(Jt)Ut=!0;else{var t={};for(var r in P){var o=P[r],i=B[r];t[r]={min:o.min,max:o.max},null!=i?(S(o,i),r==tn&&pt()):r!=tn&&(o.min=1/0,o.max=-1/0)}for(var a in b.forEach((function(t,r){var o=t.scale,i=P[o];if(0==r){Gn=n(i.min,e[0]),Jn=n(i.max,e[0]),i.min>e[0][Gn]&&Gn++,e[0][Jn]>i.max&&Jn--,Rn[0]=Gn,Rn[1]=Jn,t.min=Un[Gn],t.max=Un[Jn];var a=i.range(s,i.min,i.max);i.min=a[0],i.max=a[1]}else if(t.show&&null==B[o]){var f=t.min==1/0?i.auto?function(n,t,e){for(var r=1/0,o=-1/0,i=t;e>=i;i++)null!=n[i]&&(r=l(r,n[i]),o=u(o,n[i]));return[r,o]}(e[r],Gn,Jn):[0,100]:[t.min,t.max];i.min=l(i.min,t.min=f[0]),i.max=u(i.max,t.max=f[1])}})),P){var f=P[a];if(null==f.from&&f.min!=1/0&&null==B[a]){var c=f.range(s,f.min,f.max);f.min=c[0],f.max=c[1]}B[a]=null}for(var h in P){var v=P[h];if(null!=v.from){var p=P[v.from];if(p.min!=1/0){var m=v.range(s,p.min,p.max);v.min=m[0],v.max=m[1]}}}var d={};for(var g in b.forEach((function(n){var e=n.scale,r=P[e];null==t[e]||r.min==t[e].min&&r.max==t[e].max||(d[e]=!0,n._paths=null)})),d)le("setScale",g);wt.show&&Ot()}}var et,rt,ot,it,at,lt,ut,st=1;function ft(n,t){var e=new Set(n.spanGaps(s,t)),r=null;if((t=t.filter((function(n){return!e.has(n)}))).length>0){r=new Path2D;for(var o=Nn,i=0;t.length>i;i++){var a=t[i];r.rect(o,In,a[0]-o,In+Bn),o=a[1]}r.rect(o,In,Nn+jn-o,In+Bn)}return r}function ct(n,t,r,o){var a,s,f=b[t],c=e[0],h=e[t],v=P[tn],p=P[f.scale],m=1==st?{stroke:new Path2D,fill:null,clip:null}:b[t-1]._paths,d=m.stroke,w=g(f.width*D),x=1/0,y=-1/0,S=[],k=i(An(c[1==st?r:o],v,jn,Nn));f.band&&1==st&&r==Gn&&(w&&d.lineTo(-w,i(zn(h[r],p,Bn,In))),c[0]>v.min&&S.push([Nn,k-1]));for(var M=1==st?r:o;M>=r&&o>=M;M+=st){var Y=i(An(c[M],v,jn,Nn));if(Y==k)null!=h[M]&&(a=i(zn(h[M],p,Bn,In)),x=l(a,x),y=u(a,y));else{var E=!1;if(x!=1/0?(d.lineTo(k,x),d.lineTo(k,y),d.lineTo(k,a),s=k):E=!0,null!=h[M]?(a=i(zn(h[M],p,Bn,In)),d.lineTo(Y,a),x=y=a,Y-k>1&&null==h[M-1]&&(E=!0)):(x=1/0,y=-1/0),E){var T=S[S.length-1];T&&T[0]==s?T[1]=Y:S.push([s,Y])}k=Y}}if(f.band){var z,A,C=100*w;-1==st&&r==Gn&&(A=Nn-C,z=r),1==st&&o==Jn&&(A=Nn+jn+C,z=o,v.max>c[cn-1]&&S.push([k,Nn+jn])),d.lineTo(A,i(zn(h[z],p,Bn,In)))}if(1==st&&(m.clip=ft(f,S),null!=f.fill)){var F=m.fill=new Path2D(d),_=i(zn(0,p,Bn,In));F.lineTo(Nn+jn,_),F.lineTo(Nn,_)}return f.band&&(st*=-1),m}function ht(n,t,e,r){var o=n.space(s,t,e,r),i=function(n,t,e,r){for(var o=e/n,i=0;t.length>i;i++){var a=t[i]*o;if(a>=r)return[t[i],a]}}(e-t,n.incrs(s,t,e,r,o),r,o);return i.push(i[1]/o),i}function vt(n,t,e,r,o,i,a,l){var u=i%2/2;Kn.translate(u,u),On(a,i,l),Kn.beginPath();var s,f,c,h,v=r+(0==e||3==e?-o:o);0==t?(f=r,h=v):(s=r,c=v),n.forEach((function(n){0==t?s=c=n:f=h=n,Kn.moveTo(s,f),Kn.lineTo(c,h)})),Kn.stroke(),Kn.translate(-u,-u)}function pt(){b.forEach((function(n,t){t>0&&(n.min=1/0,n.max=-1/0,n._paths=null)}))}function mt(){Jt?Rt=!0:(Kn.clearRect(0,0,Zn.width,Zn.height),le("drawClear"),function(){F.forEach((function(n){if(n.show){var t=P[n.scale];if(t.min!=1/0){var e=n.side,r=e%2,o=t.min,a=t.max,l=ht(n,o,a,0==r?gn:Pn),u=l[1],f=n.split(s,o,a,l[0],l[2],2==t.distr),h=0==r?An:zn,v=0==r?jn:Bn,p=0==r?Nn:In,m=f.map((function(n){return i(h(n,t,v,p))})),d=i(n.gap*D),w=n.ticks,x=w.show?i(w.size*D):0,b=n.values(s,2==t.distr?f.map((function(n){return Un[n]})):f,u),y=i(n._pos*D),S=y+(x+d)*(0==r&&0==e||1==r&&3==e?-1:1),k=0==r?S:0,M=1==r?S:0;Kn.font=n.font[0],Kn.fillStyle=n.stroke||"#000",Kn.textAlign=0==r?"center":3==e?"right":"left",Kn.textBaseline=1==r?"middle":2==e?"top":"bottom";var Y=1.5*n.font[1];if(b.forEach((function(n,t){0==r?M=m[t]:k=m[t],(""+n).split(/\n/gm).forEach((function(n,t){Kn.fillText(n,M,k+t*Y)}))})),n.label){Kn.save();var E=i(n._lpos*D);1==r?(M=k=0,Kn.translate(E,i(In+Bn/2)),Kn.rotate((3==e?-c:c)/2)):(M=i(Nn+jn/2),k=E),Kn.font=n.labelFont[0],Kn.textAlign="center",Kn.textBaseline=2==e?"top":"bottom",Kn.fillText(n.label,M,k),Kn.restore()}w.show&&vt(m,r,e,y,x,g(w.width*D),w.stroke);var T=n.grid;T.show&&vt(m,r,0==r?2:1,0==r?In:Nn,0==r?Bn:jn,g(T.width*D),T.stroke,T.dash)}}})),le("drawAxes")}(),function(){b.forEach((function(n,t){if(t>0&&n.show&&null==n._paths){var r=function(n){for(var t=v(Gn-1,0,cn-1),e=v(Jn+1,0,cn-1);null==n[t]&&t>0;)t--;for(;null==n[e]&&cn-1>e;)e++;return[t,e]}(e[t]);n._paths=n.paths(s,t,r[0],r[1])}})),b.forEach((function(n,t){t>0&&n.show&&(n._paths&&function(n){var t=b[n];if(1==st){var e=t._paths,r=e.stroke,o=e.fill,i=e.clip,a=g(t.width*D),l=a%2/2;On(t.stroke,a,t.dash,t.fill),Kn.globalAlpha=t.alpha,Kn.translate(l,l),Kn.save();var u=Nn,s=In,f=jn,c=Bn,h=a*D/2;0==t.min&&(c+=h),0==t.max&&(s-=h,c+=h),Kn.beginPath(),Kn.rect(u,s,f,c),Kn.clip(),null!=i&&Kn.clip(i),t.band?(Kn.fill(r),a&&Kn.stroke(r)):(a&&Kn.stroke(r),null!=t.fill&&Kn.fill(o)),Kn.restore(),Kn.translate(-l,-l),Kn.globalAlpha=1}t.band&&(st*=-1)}(t),n.points.show(s,t)&&function(n){var t=b[n],r=t.points,o=g(t.width*D)%2/2,a=r.size*D,l=r.width?(r.size-2*r.width)*D:null;Kn.translate(o,o),Kn.save(),Kn.beginPath(),Kn.rect(Nn-a,In-a,jn+2*a,Bn+2*a),Kn.clip(),Kn.globalAlpha=t.alpha;for(var u=new Path2D,s=l?new Path2D:null,f=Gn;Jn>=f;f++)if(null!=e[n][f]){var h=i(An(e[0][f],P[tn],jn,Nn)),v=i(zn(e[n][f],P[t.scale],Bn,In));u.moveTo(h+a/2,v),u.arc(h,v,a/2,0,2*c),l&&(s.moveTo(h+l/2,v),s.arc(h,v,l/2,0,2*c))}Kn.fillStyle=(l?r.stroke:r.fill)||t.stroke||"#000",Kn.fill(u),l&&(Kn.fillStyle=r.fill||t.fill||"#000",Kn.fill(s)),Kn.globalAlpha=1,Kn.restore(),Kn.translate(-o,-o)}(t),le("drawSeries",t))}))}(),et=!0,le("draw"))}function dt(n,t){var e=P[n];if(null==e.from){if(n==tn&&e.time&&F[0].show&&.001>ht(F[0],t.min,t.max,gn)[0])return;B[n]=t,et=!1,tt(),!et&&mt(),et=!1}}s.redraw=mt,s.setScale=dt;var gt=!1,wt=s.cursor=S({},fn,t.cursor);wt.points.show=p(wt.points.show);var xt=s.focus=S({},t.focus||{alpha:.3},wt.focus),bt=xt.prox>=0,yt=wt.drag;if(wt.show){var St="cursor-";wt.x&&(lt=wt.left,rt=A(St+"x",nt)),wt.y&&(ut=wt.top,ot=A(St+"y",nt))}var kt=s.select=S({show:!0,left:0,width:0,top:0,height:0},t.select),Mt=kt.show?A("select",nt):null;function Yt(n,t){if(kt.show){for(var e in n)T(Mt,e,kt[e]=n[e]);!1!==t&&le("setSelect")}}s.setSelect=Yt;var Dt=null,Et=null,Tt=!1;if(R.show){Dt=z("table","legend",hn);var zt,At=b[1].values;if(Tt=null!=At){var Ct=z("tr","labels",Dt);for(var Ft in z("th",null,Ct),zt=At(0))z("th",null,Ct).textContent=Ft}else zt={_:0},E(Dt,"inline");Et=b.map((function(n,t){if(0==t&&Tt)return null;var e=[],r=z("tr","series",Dt);E(r,n.class),n.show||E(r,"off");var o=z("th",null,r),i=A("ident",o);n.width&&(i.style.borderColor=n.stroke),i.style.backgroundColor=n.fill;var a=A("text",o);for(var l in a.textContent=n.label,t>0&&(_("click",o,(function(e){wt.locked||_n(e)&&Pt(t,{show:!n.show},ue.setSeries)})),bt&&_("mouseenter",o,(function(){wt.locked||Pt(t,{focus:!0},ue.setSeries)}))),zt){var u=z("td",null,r);u.textContent="--",e.push(u)}return e}))}function _t(n){var t=R.show?Et[n][0].parentNode:null;b[n].show?t&&function(n){n.classList.remove("off")}(t):(t&&E(t,"off"),It&&C(It[n],0,-10))}function Ht(n,t,e){dt(n,{min:t,max:e})}function Pt(n,t,e){var r=b[n];if(null!=t.focus&&function(n){n!=Nt&&(b.forEach((function(t,e){!function(n,t){var e=b[n];Wt(n,t),e.band&&Wt(b[n+1].band?n+1:n-1,t)}(e,null==n||0==e||e==n?1:xt.alpha)})),Nt=n,mt())}(n),null!=t.show){if(r.show=t.show,_t(n),r.band){var o=b[n+1]&&b[n+1].band?n+1:n-1;b[o].show=r.show,_t(o)}Ht(tn,P[tn].min,P[tn].max)}le("setSeries",n,t),e&&fe.pub("setSeries",s,n,t)}function Wt(n,t){b[n].alpha=t,Et&&(Et[n][0].parentNode.style.opacity=t)}s.setSeries=Pt;var Lt=Array(b.length),Nt=null;bt&&R.show&&_("mouseleave",Dt,(function(){wt.locked||(Pt(null,{focus:!1},ue.setSeries),Ot())}));var It=wt.show&&wt.points.show(s);It&&It.forEach((function(n,t){t>0&&(E(n,"cursor-pt"),E(n,b[t].class),C(n,-10,-10),nt.appendChild(n))}));var jt=0;function Bt(n,t){var e=v(n/(t==tn?gn:Pn),0,1),r=P[t];return r.min+e*(r.max-r.min)}function Gt(t){return n(Bt(t,tn),e[0],Gn,Jn)}s.posToIdx=Gt,s.posToVal=function(n,t){return Bt(t==tn?n:Pn-n,t)},s.valToPos=function(n,t,e){return t==tn?An(n,P[t],e?jn:gn,e?Nn:0):zn(n,P[t],e?Bn:Pn,e?In:0)};var Jt=!1,Rt=!1,Ut=!1,Vt=!1;function qt(n){Jt=!0,n(s),Jt=!1,Ut&&tt(),Vt&&Ot(),Rt&&!et&&mt(),Ut=Vt=Rt=et=Jt}function Ot(n){if(Jt)Vt=!0;else{var t;if(jt=0,wt.show&&(wt.x&&C(rt,i(lt),0),wt.y&&C(ot,0,i(ut))),0>lt){t=null;for(var o=0;b.length>o;o++)if(o>0&&(Lt[o]=1/0,It&&C(It[o],-10,-10)),R.show){if(0==o&&Tt)continue;for(var a=0;Et[o].length>a;a++)Et[o][a].firstChild.nodeValue="--"}bt&&Pt(null,{focus:!0},ue.setSeries)}else{t=Gt(lt);for(var c=g(An(e[0][t],P[tn],gn,0)),h=0;b.length>h;h++){var v=b[h];if(h>0&&v.show){var p=e[h][t],m=null==p?-10:g(zn(p,P[v.scale],Pn,0));Lt[h]=m>0?r(m-ut):1/0,It&&C(It[h],c,m)}else Lt[h]=1/0;if(R.show){if(0==h&&Tt)continue;var d=0==h&&2==en?Un:e[h],w=Tt?v.values(s,t):{_:v.value(s,d[t],t,h)},x=0;for(var y in w)Et[h][x++].firstChild.nodeValue=w[y]}}if(kt.show&&gt){if(yt.x){var S=l(it,lt),k=u(it,lt);T(Mt,"left",kt.left=S),T(Mt,"width",kt.width=k-S)}if(yt.y){var M=l(at,ut),Y=u(at,ut);T(Mt,"top",kt.top=M),T(Mt,"height",kt.height=Y-M)}}}if(null!=n&&(fe.pub("mousemove",s,lt,ut,gn,Pn,t),bt)){var D=l.apply(null,Lt),E=null;D>xt.prox||Lt.some((function(n,t){if(n==D)return E=t})),Pt(E,{focus:!0},ue.setSeries)}wt.idx=t,wt.left=lt,wt.top=ut,f&&le("setCursor")}}s.batch=qt,s.setCursor=function(n){lt=n.left,ut=n.top,Ot()};var Xt=null;function Zt(){Xt=nt.getBoundingClientRect()}function Kt(n,t,e,r,o,i){wt.locked||(null==Xt&&Zt(),Qt(n,0,e,r,o,i,0,!1,null!=n),null!=n?0==jt&&(jt=k(Ot)):Ot())}function Qt(n,t,e,r,o,i,a,l,u){null!=n?(e=n.clientX-Xt.left,r=n.clientY-Xt.top):(e=gn*(e/o),r=Pn*(r/i)),u&&(e>1&&gn-1>e||(e=h(e,gn)),r>1&&Pn-1>r||(r=h(r,Pn))),l?(it=e,at=r):(lt=e,ut=r)}function $t(){Yt({width:yt.x?0:gn,height:yt.y?0:Pn},!1)}function ne(n,t,e,r,o,i){(null==n||_n(n))&&(gt=!0,Qt(n,0,e,r,o,i,0,!0,!0),kt.show&&(yt.x||yt.y)&&$t(),null!=n&&(_("mouseup",M,te),fe.pub("mousedown",s,it,at,gn,Pn,null)))}function te(n,t,e,r,o,i){(null==n||_n(n))&&(gt=!1,Qt(n,0,e,r,o,i,0,!1,!0),lt!=it||ut!=at?(Yt(kt),yt.setScale&&(qt((function(){if(yt.x){var n=2==en?Gt:Bt;Ht(tn,n(kt.left,tn),n(kt.left+kt.width,tn))}if(yt.y)for(var t in P)t!=tn&&null==P[t].from&&Ht(t,Bt(Pn-kt.top-kt.height,t),Bt(Pn-kt.top,t))})),$t())):wt.lock&&(wt.locked=!wt.locked,wt.locked||Ot()),null!=n&&(H("mouseup",M,te),fe.pub("mouseup",s,lt,ut,gn,Pn,null)))}function ee(n){qn(),null!=n&&fe.pub("dblclick",s,lt,ut,gn,Pn,null)}var re,oe={};oe.mousedown=ne,oe.mousemove=Kt,oe.mouseup=te,oe.dblclick=ee,oe.setSeries=function(n,t,e,r){Pt(e,r)},wt.show&&(_("mousedown",nt,ne),_("mousemove",nt,Kt),_("mouseleave",nt,(function(){wt.locked||gt||(lt=-10,ut=-10,Ot(1))})),yt.setScale&&_("dblclick",nt,ee),re=function(n){var t=null;function e(){t=null,n()}return function(){clearTimeout(t),t=setTimeout(e,100)}}(Zt),_("resize",Y,re),_("scroll",Y,re));var ie=s.hooks=t.hooks||{},ae=[s];function le(n){if(n in ie){var t=ae.concat(Array.prototype.slice.call(arguments,1));ie[n].forEach((function(n){n.apply(null,t)}))}}(t.plugins||[]).forEach((function(n){for(var t in n.hooks)ie[t]=(ie[t]||[]).concat(n.hooks[t])}));var ue=S({key:null,setSeries:!1},wt.sync),se=ue.key,fe=null!=se?Dn[se]=Dn[se]||En():En();function ce(){Xn(t.width,t.height),le("init",t,e),Vn(e||t.data,!1),B[tn]?dt(tn,B[tn]):qn(),Yt(kt,!1),f=!0,le("ready")}fe.sub(s),s.pub=function(n,t,e,r,o,i,a){oe[n](null,t,e,r,o,i,a)},s.destroy=function(){fe.unsub(s),H("resize",Y,re),H("scroll",Y,re),hn.remove(),le("destroy")},a?a instanceof HTMLElement?(a.appendChild(hn),ce()):a(s,ce):ce()}return Pn.assign=S,Pn.rangeNum=t,Pn.fmtDate=G,Pn.tzDate=function(n,t){var e=new Date(n.toLocaleString("en-US",{timeZone:t}));return e.setMilliseconds(n.getMilliseconds()),e},Pn}();
/*! https://github.com/leeoniya/uPlot (v1.0.3) */
var uPlot=function(){"use strict";function n(n,t,e,r){var i;e=e||0;for(var a=2147483647>=(r=r||t.length-1);r-e>1;)n>t[i=a?e+r>>1:o((e+r)/2)]?e=i:r=i;return n-t[e]>t[r]-n?r:e}function t(n,t,e,i){var a=t-n,l=f(a||r(t)||1),u=o(l),c=s(10,u)*e,v=0==a?c:0,h=x(function(n,t){return o(n/t)*t}(n-v,c)),p=x(d(t+v,c));return i&&(0==a?t>0?h=0:0>t&&(p=0):(c>p-t&&(p+=c),c>n-h&&(h-=c),n>=0&&0>h&&(h=0),0>=t&&p>0&&(p=0))),[h,p]}var e=Math,r=e.abs,o=e.floor,i=e.round,a=e.ceil,l=e.min,u=e.max,s=e.pow,f=e.log10,c=e.PI;function v(n,t){return i(n/t)*t}function h(n,t,e){return l(u(n,t),e)}function p(n){return"function"==typeof n?n:function(){return n}}function m(n,t){return t}function d(n,t){return a(n/t)*t}function g(n){return i(1e3*n)/1e3}function x(n){return i(1e6*n)/1e6}var w=Array.isArray;function b(n){return"object"==typeof n&&null!==n}function y(n){var t;if(w(n))t=n.map(y);else if(b(n))for(var e in t={},n)t[e]=y(n[e]);else t=n;return t}function k(n){for(var t=arguments,e=1;t.length>e;e++){var r=t[e];for(var o in r)b(n[o])?k(n[o],y(r[o])):n[o]=y(r[o])}return n}var S="width",M="height",Y="left",D=requestAnimationFrame,E=document,T=window,z=devicePixelRatio;function A(n,t){null!=t&&n.classList.add(t)}function C(n,t,e){n.style[t]=e+"px"}function F(n,t,e){var r=E.createElement(n);return null!=t&&A(r,t),null!=e&&e.appendChild(r),r}function _(n,t){return F("div",n,t)}function H(n,t,e){n.style.transform="translate("+t+"px,"+e+"px)"}var P={passive:!0};function W(n,t,e){t.addEventListener(n,e,P)}function L(n,t,e){t.removeEventListener(n,e,P)}var N=["January","February","March","April","May","June","July","August","September","October","November","December"],I=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function j(n){return n.slice(0,3)}var B=I.map(j),G=N.map(j);function J(n){return(10>n?"0":"")+n}var R={YYYY:function(n){return n.getFullYear()},YY:function(n){return(n.getFullYear()+"").slice(2)},MMMM:function(n){return N[n.getMonth()]},MMM:function(n){return G[n.getMonth()]},MM:function(n){return J(n.getMonth()+1)},M:function(n){return n.getMonth()+1},DD:function(n){return J(n.getDate())},D:function(n){return n.getDate()},WWWW:function(n){return I[n.getDay()]},WWW:function(n){return B[n.getDay()]},HH:function(n){return J(n.getHours())},H:function(n){return n.getHours()},h:function(n){var t=n.getHours();return 0==t?12:t>12?t-12:t},AA:function(n){return 12>n.getHours()?"AM":"PM"},aa:function(n){return 12>n.getHours()?"am":"pm"},a:function(n){return 12>n.getHours()?"a":"p"},mm:function(n){return J(n.getMinutes())},m:function(n){return n.getMinutes()},ss:function(n){return J(n.getSeconds())},s:function(n){return n.getSeconds()},fff:function(n){return function(n){return(10>n?"00":100>n?"0":"")+n}(n.getMilliseconds())}};function U(n){for(var t,e=[],r=/\{([a-z]+)\}|[^{]+/gi;t=r.exec(n);)e.push("{"==t[0][0]?R[t[1]]:t[0]);return function(n){for(var t="",r=0;e.length>r;r++)t+="string"==typeof e[r]?e[r]:e[r](n);return t}}function V(n,t,e){for(var o=[],i=n;t>i;i++)for(var a=0;e.length>a;a++){var l=e[a]*s(10,i);o.push(+l.toFixed(r(i)))}return o}var q=[1,2,5],O=V(-12,0,q),X=V(0,12,q),Z=O.concat(X),K=3600,Q=86400,$=30*Q,nn=365*Q,tn=[5e-4].concat(V(-3,0,q),[1,5,10,15,30,60,300,600,900,1800,K,7200,3*K,4*K,6*K,8*K,43200,Q,2*Q,3*Q,4*Q,5*Q,6*Q,7*Q,8*Q,9*Q,10*Q,15*Q,$,2*$,3*$,4*$,6*$,nn,2*nn,5*nn,10*nn,25*nn,50*nn,100*nn]);function en(n){return n.map((function(n){return[n[0],U(n[1]),n[2],U(n[4]?n[1]+n[3]:n[3])]}))}var rn="{M}/{D}",on="\n"+rn,an="{h}:{mm}{aa}",ln=en([[nn,"{YYYY}",7,"",1],[28*Q,"{MMM}",7,"\n{YYYY}",1],[Q,rn,7,"\n{YYYY}",1],[K,"{h}{aa}",4,on,1],[60,an,4,on,1],[1,":{ss}",2,on+" "+an,1],[.001,":{ss}.{fff}",2,on+" "+an,1]]);function un(n,t){return function(e,r){var o=g(r[1]-r[0]),i=t.find((function(n){return o>=n[0]})),a=null,l=null,u=null;return r.map((function(t){var e=n(t),r=e.getFullYear(),o=e.getDate(),s=e.getMinutes(),f=r!=a,c=o!=l,v=s!=u;return a=r,l=o,u=s,(7==i[2]&&f||4==i[2]&&c||2==i[2]&&v?i[3]:i[1])(e)}))}}function sn(n,t,e){return new Date(n,t,e)}function fn(n){return U(n)}var cn=fn("{YYYY}-{MM}-{DD} {h}:{mm}{aa}");function vn(n,t){return function(e,r){return t(n(r))}}var hn={show:!0,x:!0,y:!0,lock:!1,points:{show:function(n){return n.series.map((function(n,t){if(t>0){var e=_();e.style.background=n.stroke||"#000";var r=Yn(n.width,1),o=(r-1)/-2;return C(e,S,r),C(e,M,r),C(e,"marginLeft",o),C(e,"marginTop",o),e}}))}},drag:{setScale:!0,x:!0,y:!1},focus:{prox:-1},locked:!1,left:-10,top:-10,idx:null},pn={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},mn=k({},pn,{size:10}),dn='12px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',gn="bold "+dn,xn={type:"x",show:!0,scale:"x",space:50,gap:5,size:50,labelSize:30,labelFont:gn,side:2,grid:pn,ticks:mn,font:dn},wn={show:!0,scale:"x",min:1/0,max:-1/0,idxs:[]},bn=new Intl.NumberFormat(navigator.language);function yn(n,t){return t.map(bn.format)}function kn(n,t,e,r,o,i){for(var a=[],l=t=i?t:+d(t,r).toFixed(12);e>=l;l=+(l+r).toFixed(12))a.push(l);return a}function Sn(n,t){return t}var Mn={type:"y",show:!0,scale:"y",space:40,gap:5,size:50,labelSize:30,labelFont:gn,side:3,grid:pn,ticks:mn,font:dn};function Yn(n,t){return u(g(5*t),2*g(n*t)-1)}var Dn={scale:"y",show:!0,band:!1,alpha:1,points:{show:function(n,t){var e=Yn(n.series[t].width,z),r=n.series[0].idxs;return n.bbox.width/e/2>=r[1]-r[0]}},values:null,min:1/0,max:-1/0,idxs:[],path:null,clip:null},En={time:!0,auto:!1,distr:1,min:1/0,max:-1/0},Tn=k({},En,{time:!1,auto:!0}),zn={};function An(){var n=[];return{sub:function(t){n.push(t)},unsub:function(t){n=n.filter((function(n){return n!=t}))},pub:function(t,e,r,o,i,a,l){n.length>1&&n.forEach((function(n){n!=e&&n.pub(t,e,r,o,i,a,l)}))}}}function Cn(n,t,e){return[n[0],n[1]].concat(n.slice(2)).map((function(n,r){return k({},0==r||n&&n.side%2==0?t:e,n)}))}function Fn(n,t,e,r){return r+(1-(n-t.min)/(t.max-t.min))*e}function _n(n,t,e,r){return r+(n-t.min)/(t.max-t.min)*e}function Hn(n,t,e){return[t,e]}function Pn(n,e,r){return t(e,r,.2,!0)}function Wn(n){return 0==n.button}function Ln(n){var t;return[n=n.replace(/\d+/,(function(n){return t=i(n*z)})),t]}function Nn(t,e,a){var s={};((t=y(t)).plugins||[]).forEach((function(n){n.opts&&(t=n.opts(s,t)||t)}));var f=!1,b=Cn(t.series,wn,Dn),P=Cn(t.axes||[],xn,Mn),N=t.scales=t.scales||{},I=k({x:i(Mn.size/2),y:i(xn.size/3)},t.gutters),j=t.tzDate||function(n){return new Date(1e3*n)},B=function(n){return function(t,e,r,i,a){var l=[],u=i>=$&&nn>i,s=n(e),f=s/1e3,c=sn(s.getFullYear(),s.getMonth(),u?1:s.getDate()),v=c/1e3;if(u)for(var h=i/$,p=f==v?f:sn(c.getFullYear(),c.getMonth()+h,1)/1e3,m=new Date(1e3*p),w=m.getFullYear(),b=m.getMonth(),y=0;r>=p;y++){var k=sn(w,b+h*y,1);(p=(+k+(k-n(k/1e3)))/1e3)>r||l.push(p)}else{var S=Q>i?i:Q,M=v+(o(e)-o(f))+d(f-v,S);l.push(M);for(var Y=n(M),D=Y.getHours()+Y.getMinutes()/60+Y.getSeconds()/K,E=i/K;;){M=g(M+i);var T=o(x(D+E))%24,z=n(M).getHours()-T;if(z>1&&(z=-1),(M-=z*K)>r)break;D=(D+E)%24,.7>g((M-l[l.length-1])/i)*a||l.push(M)}}return l}}(j),G=un(j,ln),J=vn(j,cn);s.series=b,s.axes=P,s.scales=N;var R={};for(var U in N){var V=N[U];null==V.min&&null==V.max||(R[U]={min:V.min,max:V.max})}var q=k({show:!0},t.legend);for(var O in b.forEach((function(n,t){var e=n.scale,r=N[e]=k({},0==t?En:Tn,N[e]),o=r.time;r.range=p(r.range||(o||0==t?Hn:Pn)),n.spanGaps=!0===n.spanGaps?m:p(n.spanGaps||[]);var i=n.value;if(n.value=o?function(n){return"string"==typeof n}(i)?vn(j,fn(i)):i||J:i||Sn,n.label=n.label||(o?"Time":"Value"),t>0){n.width=null==n.width?1:n.width,n.paths=n.paths||pt;var a=Yn(n.width,1);n.points=k({},{size:a,width:u(1,.2*a)},n.points),n.points.show=p(n.points.show),n._paths=null}})),N){var rn=N[O];null!=rn.from&&(N[O]=k({},N[rn.from],rn))}var on=b[0].scale,an=N[on].distr;P.forEach((function(n){if(n.show){var t=N[n.scale];null==t&&(n.scale=n.side%2?b[1].scale:on,t=N[n.scale]);var e=t.time;n.space=p(n.space),n.incrs=p(n.incrs||(2==t.distr?X:e?tn:Z)),n.split=p(n.split||(e&&1==t.distr?B:kn));var r=n.values;n.values=e?w(r)?un(j,en(r)):r||G:r||yn,n.font=Ln(n.font),n.labelFont=Ln(n.labelFont)}}));var pn,mn=s.root=_("uplot");null!=t.id&&(mn.id=t.id),A(mn,t.class),t.title&&(_("title",mn).textContent=t.title);var dn,gn,bn,Nn,In,jn,Bn,Gn,Jn,Rn,Un=null,Vn=null,qn=b[0].idxs,On=null;function Xn(n,t){s.data=n,e=n.slice(),pn=(On=e[0]).length,2==an&&(e[0]=On.map((function(n,t){return t}))),gt(),fe("setData"),!1!==t&&Zn()}function Zn(){Un=qn[0]=0,Vn=qn[1]=pn-1,Lt(on,2==an?Un:e[0][Un],2==an?Vn:e[0][Vn])}function Kn(n,t,e,r){nt.strokeStyle=n||"#000",nt.lineWidth=t,nt.lineJoin="round",nt.setLineDash(e||[]),nt.fillStyle=r||"#000"}function Qn(n,t){s.width=dn=bn=n,s.height=gn=Nn=t,In=jn=0,function(){var n=!1,t=!1,e=!1,r=!1;P.forEach((function(o){if(o.show){var i=o.side,a=i%2,l=o.size+(o.labelSize=null!=o.label?o.labelSize||30:0);l>0&&(a?(bn-=l,3==i?(In+=l,r=!0):e=!0):(Nn-=l,0==i?(jn+=l,n=!0):t=!0))}})),(n||t)&&(e||(bn-=I.x),r||(bn-=I.x,In+=I.x)),(r||e)&&(t||(Nn-=I.y),n||(Nn-=I.y,jn+=I.y))}(),function(){var n=In+bn,t=jn+Nn,e=In,r=jn;function o(o,i){switch(o){case 1:return(n+=i)-i;case 2:return(t+=i)-i;case 3:return(e-=i)+i;case 0:return(r-=i)+i}}P.forEach((function(n){var t=n.side;n._pos=o(t,n.size),null!=n.label&&(n._lpos=o(t,n.labelSize))}))}();var e=s.bbox;Bn=e[Y]=v(In*z,.5),Gn=e.top=v(jn*z,.5),Jn=e[S]=v(bn*z,.5),Rn=e[M]=v(Nn*z,.5),C(et,Y,In),C(et,"top",jn),C(et,S,bn),C(et,M,Nn),C(rt,Y,In),C(rt,"top",jn),C(rt,S,bn),C(rt,M,Nn),C(tt,S,dn),C(tt,M,gn),$n[S]=i(dn*z),$n[M]=i(gn*z),f&&Lt(on,N[on].min,N[on].max),f&&fe("setSize")}s.setData=Xn,s.bbox={},s.setSize=function(n){Qn(n.width,n.height)};var $n=F("canvas"),nt=s.ctx=$n.getContext("2d"),tt=_("wrap",mn),et=_("under",tt);tt.appendChild($n);var rt=_("over",tt);function ot(){if(Vt)Ot=!0;else{var t={};for(var r in N){var o=N[r],i=R[r];t[r]={min:o.min,max:o.max},null!=i?(k(o,i),r==on&&gt()):r!=on&&(o.min=1/0,o.max=-1/0)}for(var a in b.forEach((function(t,r){var o=t.scale,i=N[o];if(0==r){var a=i.range(s,i.min,i.max);i.min=a[0],i.max=a[1],Un=n(i.min,e[0]),Vn=n(i.max,e[0]),i.min>e[0][Un]&&Un++,e[0][Vn]>i.max&&Vn--,t.min=On[Un],t.max=On[Vn]}else if(t.show&&null==R[o]){var f=t.min==1/0?i.auto?function(n,t,e){for(var r=1/0,o=-1/0,i=t;e>=i;i++)null!=n[i]&&(r=l(r,n[i]),o=u(o,n[i]));return[r,o]}(e[r],Un,Vn):[0,100]:[t.min,t.max];i.min=l(i.min,t.min=f[0]),i.max=u(i.max,t.max=f[1])}t.idxs[0]=Un,t.idxs[1]=Vn})),N){var f=N[a];if(null==f.from&&f.min!=1/0&&null==R[a]){var c=f.range(s,f.min,f.max);f.min=c[0],f.max=c[1]}R[a]=null}for(var v in N){var h=N[v];if(null!=h.from){var p=N[h.from];if(p.min!=1/0){var m=h.range(s,p.min,p.max);h.min=m[0],h.max=m[1]}}}var d={};for(var g in b.forEach((function(n){var e=n.scale,r=N[e];null==t[e]||r.min==t[e].min&&r.max==t[e].max||(d[e]=!0,n._paths=null)})),d)fe("setScale",g);yt.show&&Kt()}}var it,at,lt,ut,st,ft,ct,vt=1;function ht(n,t){var e=new Set(b[n].spanGaps(s,t,n)),r=null;if((t=t.filter((function(n){return!e.has(n)}))).length>0){r=new Path2D;for(var o=Bn,i=0;t.length>i;i++){var a=t[i];r.rect(o,Gn,a[0]-o,Gn+Rn),o=a[1]}r.rect(o,Gn,Bn+Jn-o,Gn+Rn)}return r}function pt(n,t,r,o){var a,s,f=b[t],c=e[0],v=e[t],h=N[on],p=N[f.scale],m=1==vt?{stroke:new Path2D,fill:null,clip:null}:b[t-1]._paths,d=m.stroke,x=g(f[S]*z),w=1/0,y=-1/0,k=[],M=i(_n(c[1==vt?r:o],h,Jn,Bn));f.band&&1==vt&&r==Un&&(x&&d.lineTo(-x,i(Fn(v[r],p,Rn,Gn))),c[0]>h.min&&k.push([Bn,M-1]));for(var Y=1==vt?r:o;Y>=r&&o>=Y;Y+=vt){var D=i(_n(c[Y],h,Jn,Bn));if(D==M)null!=v[Y]&&(a=i(Fn(v[Y],p,Rn,Gn)),w=l(a,w),y=u(a,y));else{var E=!1;if(w!=1/0?(d.lineTo(M,w),d.lineTo(M,y),d.lineTo(M,a),s=M):E=!0,null!=v[Y]?(a=i(Fn(v[Y],p,Rn,Gn)),d.lineTo(D,a),w=y=a,D-M>1&&null==v[Y-1]&&(E=!0)):(w=1/0,y=-1/0),E){var T=k[k.length-1];T&&T[0]==s?T[1]=D:k.push([s,D])}M=D}}if(f.band){var A,C,F=100*x;-1==vt&&r==Un&&(C=Bn-F,A=r),1==vt&&o==Vn&&(C=Bn+Jn+F,A=o,h.max>c[pn-1]&&k.push([M,Bn+Jn])),d.lineTo(C,i(Fn(v[A],p,Rn,Gn)))}if(1==vt&&(m.clip=ht(t,k),null!=f.fill)){var _=m.fill=new Path2D(d),H=i(Fn(0,p,Rn,Gn));_.lineTo(Bn+Jn,H),_.lineTo(Bn,H)}return f.band&&(vt*=-1),m}function mt(n,t,e,r){var o=n.space(s,t,e,r),i=function(n,t,e,r){for(var o=e/n,i=0;t.length>i;i++){var a=t[i]*o;if(a>=r)return[t[i],a]}}(e-t,n.incrs(s,t,e,r,o),r,o);return i.push(i[1]/o),i}function dt(n,t,e,r,o,i,a,l){var u=i%2/2;nt.translate(u,u),Kn(a,i,l),nt.beginPath();var s,f,c,v,h=r+(0==e||3==e?-o:o);0==t?(f=r,v=h):(s=r,c=h),n.forEach((function(n){0==t?s=c=n:f=v=n,nt.moveTo(s,f),nt.lineTo(c,v)})),nt.stroke(),nt.translate(-u,-u)}function gt(){b.forEach((function(n,t){t>0&&(n.min=1/0,n.max=-1/0,n._paths=null)}))}function xt(){Vt?qt=!0:(nt.clearRect(0,0,$n[S],$n[M]),fe("drawClear"),function(){P.forEach((function(n){if(n.show){var t=N[n.scale];if(t.min!=1/0){var e=n.side,r=e%2,o=t.min,a=t.max,l=mt(n,o,a,0==r?bn:Nn),u=l[1],f=n.split(s,o,a,l[0],l[2],2==t.distr),v=0==r?_n:Fn,h=0==r?Jn:Rn,p=0==r?Bn:Gn,m=f.map((function(n){return i(v(n,t,h,p))})),d=i(n.gap*z),x=n.ticks,w=x.show?i(x.size*z):0,b=n.values(s,2==t.distr?f.map((function(n){return On[n]})):f,u),y=i(n._pos*z),k=y+(w+d)*(0==r&&0==e||1==r&&3==e?-1:1),M=0==r?k:0,D=1==r?k:0;nt.font=n.font[0],nt.fillStyle=n.stroke||"#000",nt.textAlign=0==r?"center":3==e?"right":Y,nt.textBaseline=1==r?"middle":2==e?"top":"bottom";var E=1.5*n.font[1];if(b.forEach((function(n,t){0==r?D=m[t]:M=m[t],(""+n).split(/\n/gm).forEach((function(n,t){nt.fillText(n,D,M+t*E)}))})),n.label){nt.save();var T=i(n._lpos*z);1==r?(D=M=0,nt.translate(T,i(Gn+Rn/2)),nt.rotate((3==e?-c:c)/2)):(D=i(Bn+Jn/2),M=T),nt.font=n.labelFont[0],nt.textAlign="center",nt.textBaseline=2==e?"top":"bottom",nt.fillText(n.label,D,M),nt.restore()}x.show&&dt(m,r,e,y,w,g(x[S]*z),x.stroke);var A=n.grid;A.show&&dt(m,r,0==r?2:1,0==r?Gn:Bn,0==r?Rn:Jn,g(A[S]*z),A.stroke,A.dash)}}})),fe("drawAxes")}(),function(){b.forEach((function(n,t){if(t>0&&n.show&&null==n._paths){var r=function(n){for(var t=h(Un-1,0,pn-1),e=h(Vn+1,0,pn-1);null==n[t]&&t>0;)t--;for(;null==n[e]&&pn-1>e;)e++;return[t,e]}(e[t]);n._paths=n.paths(s,t,r[0],r[1])}})),b.forEach((function(n,t){t>0&&n.show&&(n._paths&&function(n){var t=b[n];if(1==vt){var e=t._paths,r=e.stroke,o=e.fill,i=e.clip,a=g(t[S]*z),l=a%2/2;Kn(t.stroke,a,t.dash,t.fill),nt.globalAlpha=t.alpha,nt.translate(l,l),nt.save();var u=Bn,s=Gn,f=Jn,c=Rn,v=a*z/2;0==t.min&&(c+=v),0==t.max&&(s-=v,c+=v),nt.beginPath(),nt.rect(u,s,f,c),nt.clip(),null!=i&&nt.clip(i),t.band?(nt.fill(r),a&&nt.stroke(r)):(a&&nt.stroke(r),null!=t.fill&&nt.fill(o)),nt.restore(),nt.translate(-l,-l),nt.globalAlpha=1}t.band&&(vt*=-1)}(t),n.points.show(s,t,Un,Vn)&&function(n){var t=b[n],r=t.points,o=g(t[S]*z),a=o%2/2,l=r.width>0,u=(r.size-r.width)/2*z,s=g(2*u);nt.translate(a,a),nt.save(),nt.beginPath(),nt.rect(Bn-s,Gn-s,Jn+2*s,Rn+2*s),nt.clip(),nt.globalAlpha=t.alpha;for(var f=new Path2D,v=Un;Vn>=v;v++)if(null!=e[n][v]){var h=i(_n(e[0][v],N[on],Jn,Bn)),p=i(Fn(e[n][v],N[t.scale],Rn,Gn));f.moveTo(h+u,p),f.arc(h,p,u,0,2*c)}Kn(r.stroke||t.stroke||"#000",o,null,r.fill||(l?"#fff":t.stroke||"#000")),nt.fill(f),l&&nt.stroke(f),nt.globalAlpha=1,nt.restore(),nt.translate(-a,-a)}(t),fe("drawSeries",t))}))}(),it=!0,fe("draw"))}function wt(n,t){var e=N[n];if(null==e.from){if(n==on&&e.time&&P[0].show&&.001>mt(P[0],t.min,t.max,bn)[0])return;R[n]=t,it=!1,ot(),!it&&xt(),it=!1}}s.redraw=xt,s.setScale=wt;var bt=!1,yt=s.cursor=k({},hn,t.cursor);yt.points.show=p(yt.points.show);var kt=s.focus=k({},t.focus||{alpha:.3},yt.focus),St=kt.prox>=0,Mt=yt.drag;if(yt.show){var Yt="cursor-";yt.x&&(ft=yt.left,at=_(Yt+"x",rt)),yt.y&&(ct=yt.top,lt=_(Yt+"y",rt))}var Dt=s.select=k({show:!0,left:0,width:0,top:0,height:0},t.select),Et=Dt.show?_("select",rt):null;function Tt(n,t){if(Dt.show){for(var e in n)C(Et,e,Dt[e]=n[e]);!1!==t&&fe("setSelect")}}s.setSelect=Tt;var zt=null,At=null,Ct=!1;if(q.show){zt=F("table","legend",mn);var Ft,_t=b[1].values;if(Ct=null!=_t){var Ht=F("tr","labels",zt);for(var Pt in F("th",null,Ht),Ft=_t(s,1,0))F("th",null,Ht).textContent=Pt}else Ft={_:0},A(zt,"inline");At=b.map((function(n,t){if(0==t&&Ct)return null;var e=[],r=F("tr","series",zt);A(r,n.class),n.show||A(r,"off");var o=F("th",null,r),i=_("ident",o);n.width&&(i.style.borderColor=n.stroke),i.style.backgroundColor=n.fill;var a=_("text",o);for(var l in a.textContent=n.label,t>0&&(W("click",o,(function(e){yt.locked||Wn(e)&&Nt(t,{show:!n.show},ce.setSeries)})),St&&W("mouseenter",o,(function(){yt.locked||Nt(t,{focus:!0},ce.setSeries)}))),Ft){var u=F("td",null,r);u.textContent="--",e.push(u)}return e}))}function Wt(n){var t=q.show?At[n][0].parentNode:null;b[n].show?t&&function(n){n.classList.remove("off")}(t):(t&&A(t,"off"),Gt&&H(Gt[n],0,-10))}function Lt(n,t,e){wt(n,{min:t,max:e})}function Nt(n,t,e){var r=b[n];if(null!=t.focus&&function(n){n!=Bt&&(b.forEach((function(t,e){!function(n,t){var e=b[n];It(n,t),e.band&&It(b[n+1].band?n+1:n-1,t)}(e,null==n||0==e||e==n?1:kt.alpha)})),Bt=n,xt())}(n),null!=t.show){if(r.show=t.show,Wt(n),r.band){var o=b[n+1]&&b[n+1].band?n+1:n-1;b[o].show=r.show,Wt(o)}Lt(on,N[on].min,N[on].max)}fe("setSeries",n,t),e&&he.pub("setSeries",s,n,t)}function It(n,t){b[n].alpha=t,At&&(At[n][0].parentNode.style.opacity=t)}s.setSeries=Nt;var jt=Array(b.length),Bt=null;St&&q.show&&W("mouseleave",zt,(function(){yt.locked||(Nt(null,{focus:!1},ce.setSeries),Kt())}));var Gt=yt.show&&yt.points.show(s);Gt&&Gt.forEach((function(n,t){t>0&&(A(n,"cursor-pt"),A(n,b[t].class),H(n,-10,-10),rt.appendChild(n))}));var Jt=0;function Rt(n,t){var e=h(n/(t==on?bn:Nn),0,1),r=N[t];return r.min+e*(r.max-r.min)}function Ut(t){return n(Rt(t,on),e[0],Un,Vn)}s.posToIdx=Ut,s.posToVal=function(n,t){return Rt(t==on?n:Nn-n,t)},s.valToPos=function(n,t,e){return t==on?_n(n,N[t],e?Jn:bn,e?Bn:0):Fn(n,N[t],e?Rn:Nn,e?Gn:0)};var Vt=!1,qt=!1,Ot=!1,Xt=!1;function Zt(n){Vt=!0,n(s),Vt=!1,Ot&&ot(),Xt&&Kt(),qt&&!it&&xt(),Ot=Xt=qt=it=Vt}function Kt(n){if(Vt)Xt=!0;else{var t;if(Jt=0,yt.show&&(yt.x&&H(at,i(ft),0),yt.y&&H(lt,0,i(ct))),0>ft){t=null;for(var o=0;b.length>o;o++)if(o>0&&(jt[o]=1/0,Gt&&H(Gt[o],-10,-10)),q.show){if(0==o&&Ct)continue;for(var a=0;At[o].length>a;a++)At[o][a].firstChild.nodeValue="--"}St&&Nt(null,{focus:!0},ce.setSeries)}else{t=Ut(ft);for(var c=g(_n(e[0][t],N[on],bn,0)),v=0;b.length>v;v++){var h=b[v];if(v>0&&h.show){var p=e[v][t],m=null==p?-10:g(Fn(p,N[h.scale],Nn,0));jt[v]=m>0?r(m-ct):1/0,Gt&&H(Gt[v],c,m)}else jt[v]=1/0;if(q.show){if(0==v&&Ct)continue;var d=0==v&&2==an?On:e[v],x=Ct?h.values(s,v,t):{_:h.value(s,d[t],v,t)},w=0;for(var y in x)At[v][w++].firstChild.nodeValue=x[y]}}if(Dt.show&&bt){if(Mt.x){var k=l(ut,ft),D=u(ut,ft);C(Et,Y,Dt[Y]=k),C(Et,S,Dt[S]=D-k)}if(Mt.y){var E=l(st,ct),T=u(st,ct);C(Et,"top",Dt.top=E),C(Et,M,Dt[M]=T-E)}}}if(null!=n&&(he.pub("mousemove",s,ft,ct,bn,Nn,t),St)){var z=l.apply(null,jt),A=null;z>kt.prox||jt.some((function(n,t){if(n==z)return A=t})),Nt(A,{focus:!0},ce.setSeries)}yt.idx=t,yt.left=ft,yt.top=ct,f&&fe("setCursor")}}s.batch=Zt,s.setCursor=function(n){ft=n.left,ct=n.top,Kt()};var Qt=null;function $t(){Qt=rt.getBoundingClientRect()}function ne(n,t,e,r,o,i){yt.locked||(null==Qt&&$t(),te(n,0,e,r,o,i,0,!1,null!=n),null!=n?0==Jt&&(Jt=D(Kt)):Kt())}function te(n,t,e,r,o,i,a,l,u){null!=n?(e=n.clientX-Qt.left,r=n.clientY-Qt.top):(e=bn*(e/o),r=Nn*(r/i)),u&&(e>1&&bn-1>e||(e=v(e,bn)),r>1&&Nn-1>r||(r=v(r,Nn))),l?(ut=e,st=r):(ft=e,ct=r)}function ee(){Tt({width:Mt.x?0:bn,height:Mt.y?0:Nn},!1)}function re(n,t,e,r,o,i){(null==n||Wn(n))&&(bt=!0,te(n,0,e,r,o,i,0,!0,!0),Dt.show&&(Mt.x||Mt.y)&&ee(),null!=n&&(W("mouseup",E,oe),he.pub("mousedown",s,ut,st,bn,Nn,null)))}function oe(n,t,e,r,o,i){(null==n||Wn(n))&&(bt=!1,te(n,0,e,r,o,i,0,!1,!0),ft!=ut||ct!=st?(Tt(Dt),Mt.setScale&&(Zt((function(){if(Mt.x){var n=2==an?Ut:Rt;Lt(on,n(Dt[Y],on),n(Dt[Y]+Dt[S],on))}if(Mt.y)for(var t in N)t!=on&&null==N[t].from&&Lt(t,Rt(Nn-Dt.top-Dt[M],t),Rt(Nn-Dt.top,t))})),ee())):yt.lock&&(yt.locked=!yt.locked,yt.locked||Kt()),null!=n&&(L("mouseup",E,oe),he.pub("mouseup",s,ft,ct,bn,Nn,null)))}function ie(n){Zn(),null!=n&&he.pub("dblclick",s,ft,ct,bn,Nn,null)}var ae,le={};le.mousedown=re,le.mousemove=ne,le.mouseup=oe,le.dblclick=ie,le.setSeries=function(n,t,e,r){Nt(e,r)},yt.show&&(W("mousedown",rt,re),W("mousemove",rt,ne),W("mouseleave",rt,(function(){yt.locked||bt||(ft=-10,ct=-10,Kt(1))})),Mt.setScale&&W("dblclick",rt,ie),ae=function(n){var t=null;function e(){t=null,n()}return function(){clearTimeout(t),t=setTimeout(e,100)}}($t),W("resize",T,ae),W("scroll",T,ae));var ue=s.hooks=t.hooks||{},se=[s];function fe(n){if(n in ue){var t=se.concat(Array.prototype.slice.call(arguments,1));ue[n].forEach((function(n){n.apply(null,t)}))}}(t.plugins||[]).forEach((function(n){for(var t in n.hooks)ue[t]=(ue[t]||[]).concat(n.hooks[t])}));var ce=k({key:null,setSeries:!1},yt.sync),ve=ce.key,he=null!=ve?zn[ve]=zn[ve]||An():An();function pe(){Qn(t[S],t[M]),fe("init",t,e),Xn(e||t.data,!1),R[on]?wt(on,R[on]):Zn(),Tt(Dt,!1),f=!0,fe("ready")}return he.sub(s),s.pub=function(n,t,e,r,o,i,a){le[n](null,t,e,r,o,i,a)},s.destroy=function(){he.unsub(s),L("resize",T,ae),L("scroll",T,ae),mn.remove(),fe("destroy")},a?a instanceof HTMLElement?(a.appendChild(mn),pe()):a(s,pe):pe(),s}return Nn.assign=k,Nn.rangeNum=t,Nn.fmtDate=U,Nn.tzDate=function(n,t){var e=new Date(n.toLocaleString("en-US",{timeZone:t}));return e.setMilliseconds(n.getMilliseconds()),e},Nn}();
{
"name": "uplot",
"version": "1.0.2",
"version": "1.0.3",
"description": "A small, fast chart for time series, lines, areas, ohlc & bars",
"main": "./dist/uPlot.cjs.js",
"module": "./dist/uPlot.esm.js",
"typings": "./dist/uPlot.esm.d.ts",
"scripts": {

@@ -41,3 +42,3 @@ "build": "rollup -c",

"devDependencies": {
"rollup": "^2.0.5",
"rollup": "^2.2.0",
"rollup-plugin-buble": "^0.19.8",

@@ -44,0 +45,0 @@ "rollup-plugin-replace": "^2.2.0",

@@ -8,6 +8,10 @@ ## 📈 μPlot

μPlot is a [fast, memory-efficient](#performance) [Canvas 2D](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D)-based chart for plotting [time series](https://en.wikipedia.org/wiki/Time_series), lines, areas, ohlc & bars; from a cold start it can create an interactive chart containing 150,000 data points in 60ms, scaling linearly at ~4,000 pts/ms. In addition to fast initial render, the zooming and cursor performance is by far the best of any similar charting lib; at < 25 KB, it's likely the smallest and fastest time series plotter that doesn't make use of [context-limited](https://bugs.chromium.org/p/chromium/issues/detail?id=771792) WebGL shaders or WASM, both of which have much higher startup cost and code size.
μPlot is a [fast, memory-efficient](#performance) [Canvas 2D](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D)-based chart for plotting [time series](https://en.wikipedia.org/wiki/Time_series), lines, areas, ohlc & bars; from a cold start it can create an interactive chart containing 150,000 data points in 135ms, scaling linearly at ~3,300 pts/ms. In addition to fast initial render, the zooming and cursor performance is by far the best of any similar charting lib; at < 25 KB, it's likely the smallest and fastest time series plotter that doesn't make use of [context-limited](https://bugs.chromium.org/p/chromium/issues/detail?id=771792) WebGL shaders or WASM, both of which have much higher startup cost and code size.
<h3 align="center">166,650 point bench: <a href="https://leeoniya.github.io/uPlot/bench/uPlot.html">https://leeoniya.github.io/uPlot/bench/uPlot.html</a></h3>
However, if you're looking for true real-time 60fps performance with massive datasets, uPlot [can only get you so far](https://huww98.github.io/TimeChart/docs/performance).
WebGL should still be the tool of choice for applications like realtime signal or waveform visualizations:
Try [danchitnis/webgl-plot](https://github.com/danchitnis/webgl-plot) or [huww98/TimeChart](https://github.com/huww98/TimeChart).
---

@@ -14,0 +18,0 @@ ![uPlot Chart](uPlot.png "uPlot Chart")

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc