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.3.0 to 1.4.0

702

dist/uPlot.d.ts

@@ -1,6 +0,6 @@

declare class uPlot {
export class uPlot {
/** when passing a function for @targ, call init() after attaching self.root to the DOM */
constructor(
opts: uPlot.Options,
data: uPlot.AlignedData,
opts: Options,
data: AlignedData,
targ?: HTMLElement | ((self: uPlot, init: Function) => void)

@@ -27,29 +27,29 @@ );

/** coords of plotting area in canvas pixels (relative to full canvas w/axes) */
readonly bbox: uPlot.BBox;
readonly bbox: BBox;
/** coords of selected region in CSS pixels (relative to plotting area) */
readonly select: uPlot.BBox;
readonly select: BBox;
/** cursor state & opts*/
readonly cursor: uPlot.Cursor;
readonly cursor: Cursor;
// /** focus opts */
// readonly focus: uPlot.Focus;
// readonly focus: Focus;
/** series state & opts */
readonly series: Array<uPlot.Series>;
readonly series: Series[];
/** scales state & opts */
readonly scales: {
[key: string]: uPlot.Scale;
[key: string]: Scale;
};
/** axes state & opts */
readonly axes: Array<uPlot.Axis>;
readonly axes: Axis[];
/** hooks, including any added by plugins */
readonly hooks: uPlot.Hooks;
readonly hooks: Hooks.Arrays;
/** current data */
readonly data: uPlot.AlignedData;
readonly data: AlignedData;

@@ -67,3 +67,3 @@

/** sets the chart data & redraws. (default resetScales = true) */
setData(data: uPlot.AlignedData, resetScales?: boolean): void;
setData(data: AlignedData, resetScales?: boolean): void;

@@ -81,3 +81,3 @@ /** sets the limits of a scale & redraws (used for zooming) */

/** adds a series */
addSeries(opts: uPlot.Series, seriesIdx?: number): void;
addSeries(opts: Series, seriesIdx?: number): void;

@@ -109,3 +109,3 @@ /** deletes a series */

/** uPlot's default line path builder (handles nulls/gaps & data decimation) */
paths: uPlot.PathBuilder;
paths: Series.PathBuilder;

@@ -116,6 +116,6 @@ /** a deep merge util fn */

/** re-ranges a given min/max by a multiple of the range's magnitude (used internally to expand/snap/pad numeric y scales) */
static rangeNum: ((min: number, max: number, mult: number, extra: boolean) => uPlot.MinMax) | ((min: number, max: number, cfg: uPlot.RangeConfig) => uPlot.MinMax);
static rangeNum: ((min: number, max: number, mult: number, extra: boolean) => Range.MinMax) | ((min: number, max: number, cfg: Range.Config) => Range.MinMax);
/** re-ranges a given min/max outwards to nearest 10% of given min/max's magnitudes, unless fullMags = true */
static rangeLog(min: number, max: number, fullMags: boolean): uPlot.MinMax;
static rangeLog(min: number, max: number, fullMags: boolean): Range.MinMax;

@@ -126,3 +126,3 @@ /** default numeric formatter using browser's locale: new Intl.NumberFormat(navigator.language).format */

/** creates an efficient formatter for Date objects from a template string, e.g. {YYYY}-{MM}-{DD} */
static fmtDate(tpl: string, names?: uPlot.DateNames): (date: Date) => string;
static fmtDate(tpl: string, names?: DateNames): (date: Date) => string;

@@ -133,28 +133,33 @@ /** converts a Date into new Date that's time-adjusted for the given IANA Time Zone Name */

declare namespace uPlot {
export type AlignedData = readonly (number | null)[][];
export type AlignedData = [
xValues: number[],
...yValues: (number | null)[]
];
// export type ScatteredData = readonly number[][][];
export interface DateNames {
/** long month names */
MMMM: string[];
export type SyncScales = [string, string];
/** short month names */
MMM: string[];
export type MinMax = [number, number];
/** long weekday names (0: Sunday) */
WWWW: string[];
export type LeftTop = [number, number];
/** short weekday names (0: Sun) */
WWW: string[];
}
export interface DateNames {
/** long month names */
MMMM: string[];
export namespace Range {
export type MinMax = [min: number, max: number];
/** short month names */
MMM: string[];
export type Function = (self: uPlot, initMin: number, initMax: number, scaleKey: string) => MinMax;
/** long weekday names (0: Sunday) */
WWWW: string[];
/** short weekday names (0: Sun) */
WWW: string[];
export enum SoftMode {
Off = 0,
Always = 1,
Near = 2,
}
interface RangeConfigPart {
export interface Limit {
/** initial multiplier for dataMax-dataMin delta */

@@ -167,3 +172,3 @@ pad?: number; // 0.1

/** soft mode - 0: off, 1: if data extreme falls within soft limit, 2: if data extreme & padding exceeds soft limit */
mode?: 0 | 1 | 2; // 2
mode?: SoftMode; // 2

@@ -174,386 +179,460 @@ /** hard limit */

export interface RangeConfig {
min: RangeConfigPart;
max: RangeConfigPart;
export interface Config {
min: Range.Limit;
max: Range.Limit;
}
}
export interface Options {
/** chart title */
title?: string;
export interface Scales {
[key: string]: Scale;
}
/** id to set on chart div */
id?: string;
export interface Gutters {
x?: number | ((self: uPlot) => number);
y?: number | ((self: uPlot) => number);
}
/** className to add to chart div */
class?: string;
export interface Legend {
show?: boolean; // true
/** show series values at current cursor.idx */
live?: boolean; // true
}
/** width of plotting area + axes in CSS pixels */
width: number;
export type DateFormatterFactory = (tpl: string) => (date: Date) => string;
/** height of plotting area + axes in CSS pixels (excludes title & legend height) */
height: number;
export type LocalDateFromUnix = (ts: number) => Date;
/** data for chart, if none is provided as argument to constructor */
data?: AlignedData,
export interface Options {
/** chart title */
title?: string;
/** converts a unix timestamp to Date that's time-adjusted for the desired timezone */
tzDate?: (ts: number) => Date;
/** id to set on chart div */
id?: string;
/** creates an efficient formatter for Date objects from a template string, e.g. {YYYY}-{MM}-{DD} */
fmtDate?: (tpl: string) => (date: Date) => string;
/** className to add to chart div */
class?: string;
series: Series[];
/** width of plotting area + axes in CSS pixels */
width: number;
scales?: {
[key: string]: Scale;
},
/** height of plotting area + axes in CSS pixels (excludes title & legend height) */
height: number;
axes?: Axis[];
/** data for chart, if none is provided as argument to constructor */
data?: AlignedData,
/** extra space to add in CSS pixels in the absence of a cross-axis (to prevent axis labels at the plotting area limits from being chopped off) */
gutters?: {
x?: number;
y?: number;
};
/** converts a unix timestamp to Date that's time-adjusted for the desired timezone */
tzDate?: LocalDateFromUnix;
select?: Select;
/** creates an efficient formatter for Date objects from a template string, e.g. {YYYY}-{MM}-{DD} */
fmtDate?: DateFormatterFactory;
legend?: {
show?: boolean; // true
/** show series values at current cursor.idx */
live?: boolean; // true
};
series: Series[];
cursor?: Cursor;
scales?: Scales;
focus?: Focus;
axes?: Axis[];
hooks?: Hooks;
/** extra space to add in CSS pixels in the absence of a cross-axis (to prevent axis labels at the plotting area limits from being chopped off) */
gutters?: Gutters;
plugins?: {
/** can mutate provided opts as necessary */
opts?: (self: uPlot, opts: Options) => void | Options;
hooks: PluginHooks;
}[];
select?: Select;
legend?: Legend;
cursor?: Cursor;
focus?: Focus;
hooks?: Hooks.Arrays;
plugins?: Plugin[];
}
export interface Focus {
/** alpha-transparancy of de-focused series */
alpha: number;
}
export interface BBox {
show?: boolean;
left: number;
top: number;
width: number;
height: number;
}
interface Select extends BBox {
/** div into which .u-select will be placed: .u-over or .u-under */
over?: boolean; // true
}
export namespace Cursor {
export type LeftTop = [left: number, top: number];
export type MouseListener = (e: MouseEvent) => null;
export type MouseListenerFactory = (self: uPlot, targ: HTMLElement, handler: MouseListener) => MouseListener | null;
export type DataIdxRefiner = (self: uPlot, seriesIdx: number, closestIdx: number, xValue: number) => number;
export type MousePosRefiner = (self: uPlot, mouseLeft: number, mouseTop: number) => LeftTop;
export interface Bind {
mousedown?: MouseListenerFactory,
mouseup?: MouseListenerFactory,
click?: MouseListenerFactory,
dblclick?: MouseListenerFactory,
mousemove?: MouseListenerFactory,
mouseleave?: MouseListenerFactory,
mouseenter?: MouseListenerFactory,
}
interface Focus {
/** alpha-transparancy of de-focused series */
alpha: number;
export interface Points {
show?: boolean | ((self: uPlot, seriesIdx: number) => HTMLElement);
}
export interface BBox {
show?: boolean;
left: number;
top: number;
width: number;
height: number;
export interface Drag {
setScale?: boolean; // true
/** toggles dragging along x */
x?: boolean; // true
/** toggles dragging along y */
y?: boolean; // false
/** min drag distance threshold */
dist?: number; // 0
/** when x & y are true, sets an upper drag limit in CSS px for adaptive/unidirectional behavior */
uni?: number; // null
}
export interface Paths {
/** path to stroke */
stroke?: Path2D;
export namespace Sync {
export type Scales = [xScaleKey: string, yScaleKey: string];
}
/** path to fill */
fill?: Path2D;
/** path for clipping fill & stroke */
clip?: Path2D;
export interface Sync {
/** sync key must match between all charts in a synced group */
key: string;
/** determines if series toggling and focus via cursor is synced across charts */
setSeries?: boolean; // true
/** sets the x and y scales to sync by values. null will sync by relative (%) position */
scales?: Sync.Scales; // [xScaleKey, null]
}
interface Select extends BBox {
/** div into which .u-select will be placed: .u-over or .u-under */
over?: boolean; // true
export interface Focus {
/** minimum cursor proximity to datapoint in CSS pixels for focus activation */
prox: number;
}
}
type MouseListener = (e: MouseEvent) => null;
export interface Cursor {
/** cursor on/off */
show?: boolean;
type CreateMouseListener = (self: uPlot, targ: HTMLElement, handler: MouseListener) => MouseListener | null;
/** vertical crosshair on/off */
x?: boolean;
export type PathBuilder = (self: uPlot, seriesIdx: number, idx0: number, idx1: number) => Paths;
/** horizontal crosshair on/off */
y?: boolean;
export interface Cursor {
/** cursor on/off */
show?: boolean;
/** cursor position left offset in CSS pixels (relative to plotting area) */
left?: number;
/** vertical crosshair on/off */
x?: boolean;
/** cursor position top offset in CSS pixels (relative to plotting area) */
top?: number;
/** horizontal crosshair on/off */
y?: boolean;
/** closest data index to cursor (closestIdx) */
idx?: number;
/** cursor position left offset in CSS pixels (relative to plotting area) */
left?: number;
/** returns data idx used for hover points & legend display (defaults to closestIdx) */
dataIdx?: Cursor.DataIdxRefiner;
/** cursor position top offset in CSS pixels (relative to plotting area) */
top?: number;
/** fires on debounced mousemove events; returns refined [left, top] tuple to snap cursor position */
move?: Cursor.MousePosRefiner;
/** closest data index to cursor (closestIdx) */
idx?: number;
/** series hover points */
points?: Cursor.Points;
/** returns data idx used for hover points & legend display (defaults to closestIdx) */
dataIdx?: (self: uPlot, seriesIdx: number, closestIdx: number, xValue: number) => number;
/** event listener proxies (can be overridden to tweak interaction behavior) */
bind?: Cursor.Bind;
/** fires on debounced mousemove events; returns refined [left, top] tuple to snap cursor position */
move?: (self: uPlot, mouseLeft: number, mouseTop: number) => LeftTop;
/** determines vt/hz cursor dragging to set selection & setScale (zoom) */
drag?: Cursor.Drag;
/** series hover points */
points?: {
show?: boolean | ((self: uPlot, seriesIdx: number) => HTMLElement);
};
/** sync cursor between multiple charts */
sync?: Cursor.Sync;
/** event listener proxies (can be overridden to tweak interaction behavior) */
bind?: {
mousedown?: CreateMouseListener,
mouseup?: CreateMouseListener,
click?: CreateMouseListener,
dblclick?: CreateMouseListener,
/** focus series closest to cursor */
focus?: Cursor.Focus;
mousemove?: CreateMouseListener,
mouseleave?: CreateMouseListener,
mouseenter?: CreateMouseListener,
};
/** lock cursor on mouse click in plotting area */
lock?: boolean; // false
}
/** determines vt/hz cursor dragging to set selection & setScale (zoom) */
drag?: {
setScale?: boolean; // true
/** toggles dragging along x */
x?: boolean; // true
/** toggles dragging along y */
y?: boolean; // false
/** min drag distance threshold */
dist?: number; // 0
/** when x & y are true, sets an upper drag limit in CSS px for adaptive/unidirectional behavior */
uni?: number; // null
};
export namespace Scale {
export type Auto = boolean | ((self: uPlot, resetScales: boolean) => boolean);
/** sync cursor between multiple charts */
sync?: {
/** sync key must match between all charts in a synced group */
key: string;
/** determines if series toggling and focus via cursor is synced across charts */
setSeries?: boolean; // true
/** sets the x and y scales to sync by values. null will sync by relative (%) position */
scales?: SyncScales; // [xScaleKey, null]
};
export type Range = Range.MinMax | Range.Function | Range.Config;
/** focus series closest to cursor */
focus?: {
/** minimum cursor proximity to datapoint in CSS pixels for focus activation */
prox: number;
};
export enum Distr {
Linear = 1,
Ordinal = 2,
Logarithmic = 3,
}
/** lock cursor on mouse click in plotting area */
lock?: boolean; // false
export type LogBase = 10 | 2;
}
/** locked state */
locked?: false;
}
export interface Scale {
/** is this scale temporal, with series' data in UNIX timestamps? */
time?: boolean;
export interface Scale {
/** is this scale temporal, with series' data in UNIX timestamps? */
time?: boolean;
/** determines whether all series' data on this scale will be scanned to find the full min/max range */
auto?: Scale.Auto;
/** determines whether all series' data on this scale will be scanned to find the full min/max range */
auto?: boolean | ((self: uPlot, resetScales: boolean) => boolean);
/** can define a static scale range or re-range an initially-determined range from series data */
range?: Scale.Range;
/** can define a static scale range or re-range an initially-determined range from series data */
range?: MinMax | RangeConfig | ((self: uPlot, initMin: number, initMax: number, scaleKey: string) => MinMax);
/** scale key from which this scale is derived */
from?: string,
/** scale key from which this scale is derived */
from?: string,
/** scale distribution. 1: linear, 2: ordinal, 3: logarithmic */
distr?: Scale.Distr;
/** scale distribution. 1: linear, 2: ordinal, 3: logarithmic */
distr?: 1 | 2 | 3;
/** logarithmic base */
log?: Scale.LogBase; // 10;
/** logarithmic base */
log?: 10 | 2; // 10
/** current min scale value */
min?: number,
/** current min scale value */
min?: number,
/** current max scale value */
max?: number,
}
/** current max scale value */
max?: number,
export namespace Series {
export type isGap = (self: uPlot, seriesIdx: number, idx: number) => boolean;
export interface Paths {
/** path to stroke */
stroke?: Path2D;
/** path to fill */
fill?: Path2D;
/** path for clipping fill & stroke */
clip?: Path2D;
}
export interface Series {
/** series on/off. when off, it will not affect its scale */
show?: boolean;
export interface Points {
/** if boolean or returns boolean, round points are drawn with defined options, else fn should draw own custom points via self.ctx */
show?: Points.Show;
/** className to add to legend parts and cursor hover points */
class?: string;
/** diameter of point in CSS pixels */
size?: number;
/** scale key */
scale?: string;
/** minimum avg space between point centers before they're shown (default: size * 2) */
space?: number;
/** whether this series' data is scanned during auto-ranging of its scale */
auto?: boolean; // true
/** line width of circle outline in CSS pixels */
width?: CanvasRenderingContext2D['lineWidth'];
/** if & how the data is pre-sorted (scale.auto optimization) */
sorted?: 0 | 1 | -1;
/** line color of circle outline (defaults to series.stroke) */
stroke?: CanvasRenderingContext2D['strokeStyle'];
/** when true, null data values will not cause line breaks */
spanGaps?: boolean;
/** fill color of circle (defaults to #fff) */
fill?: CanvasRenderingContext2D['fillStyle'];
}
/** tests a datapoint for inclusion in gap array and path clipping */
isGap?: (self: uPlot, seriesIdx: number, idx: number) => boolean;
export namespace Points {
export type Show = boolean | ((self: uPlot, seriesIdx: number, idx0: number, idx1: number) => boolean | undefined);
}
/** legend label */
label?: string;
export type PathBuilder = (self: uPlot, seriesIdx: number, idx0: number, idx1: number) => Paths;
/** inline-legend value formatter. can be an fmtDate formatting string when scale.time: true */
value?: string | ((self: uPlot, rawValue: number, seriesIdx: number, idx: number) => string | number);
export type MinMaxIdxs = [minIdx: number, maxIdx: number];
/** table-legend multi-values formatter */
values?: (self: uPlot, seriesIdx: number, idx: number) => object;
export type Value = string | ((self: uPlot, rawValue: number, seriesIdx: number, idx: number) => string | number);
paths?: PathBuilder;
export type Values = (self: uPlot, seriesIdx: number, idx: number) => object;
points?: {
/** if boolean or returns boolean, round points are drawn with defined options, else fn should draw own custom points via self.ctx */
show?: boolean | ((self: uPlot, seriesIdx: number, idx0: number, idx1: number) => boolean | undefined);
export type FillTo = number | ((self: uPlot, seriesIdx: number, dataMin: number, dataMax: number) => number);
/** diameter of point in CSS pixels */
size?: number;
export enum Sorted {
Unsorted = 0,
Ascending = 1,
Descending = -1,
}
}
/** minimum avg space between point centers before they're shown (default: size * 2) */
space?: number;
export interface Series {
/** series on/off. when off, it will not affect its scale */
show?: boolean;
/** line width of circle outline in CSS pixels */
width?: CanvasRenderingContext2D['lineWidth'];
/** className to add to legend parts and cursor hover points */
class?: string;
/** line color of circle outline (defaults to series.stroke) */
stroke?: CanvasRenderingContext2D['strokeStyle'];
/** scale key */
scale?: string;
/** fill color of circle (defaults to #fff) */
fill?: CanvasRenderingContext2D['fillStyle'];
};
/** whether this series' data is scanned during auto-ranging of its scale */
auto?: boolean; // true
/** any two adjacent series with band: true, are filled as a single low/high band */
band?: boolean;
/** if & how the data is pre-sorted (scale.auto optimization) */
sorted?: Series.Sorted;
/** line & legend color */
stroke?: CanvasRenderingContext2D['strokeStyle'];
/** when true, null data values will not cause line breaks */
spanGaps?: boolean;
/** line width in CSS pixels */
width?: CanvasRenderingContext2D['lineWidth'];
/** tests a datapoint for inclusion in gap array and path clipping */
isGap?: Series.isGap;
/** area fill & legend color */
fill?: CanvasRenderingContext2D['fillStyle'];
/** legend label */
label?: string;
/** area fill baseline (default: 0) */
fillTo?: number | ((self: uPlot, seriesIdx: number, dataMin: number, dataMax: number) => number);
/** inline-legend value formatter. can be an fmtDate formatting string when scale.time: true */
value?: Series.Value;
/** line dash segment array */
dash?: number[]; // CanvasRenderingContext2D['setLineDash'];
/** table-legend multi-values formatter */
values?: Series.Values;
/** alpha-transparancy */
alpha?: number;
paths?: Series.PathBuilder;
/** current min and max data indices rendered */
idxs?: MinMax,
/** rendered datapoints */
points?: Series.Points;
/** current min rendered value */
min?: number,
/** any two adjacent series with band: true, are filled as a single low/high band */
band?: boolean;
/** current max rendered value */
max?: number,
}
/** line & legend color */
stroke?: CanvasRenderingContext2D['strokeStyle'];
/** line width in CSS pixels */
width?: CanvasRenderingContext2D['lineWidth'];
/** area fill & legend color */
fill?: CanvasRenderingContext2D['fillStyle'];
/** area fill baseline (default: 0) */
fillTo?: Series.FillTo;
/** line dash segment array */
dash?: number[]; // CanvasRenderingContext2D['setLineDash'];
/** alpha-transparancy */
alpha?: number;
/** current min and max data indices rendered */
idxs?: Series.MinMaxIdxs,
/** current min rendered value */
min?: number,
/** current max rendered value */
max?: number,
}
export namespace Axis {
/** must return an array of same length as splits, e.g. via splits.map() */
type AxisSplitsFilter = (self: uPlot, splits: number[], axisIdx: number, foundSpace: number, foundIncr: number) => Array<number|null>;
export type Filter = (self: uPlot, splits: number[], axisIdx: number, foundSpace: number, foundIncr: number) => (number | null)[];
export interface Axis {
/** axis on/off */
show?: boolean;
export type Size = number | ((self: uPlot, values: string[], axisIdx: number) => number);
/** scale key */
scale?: string;
export type Space = number | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, plotDim: number) => number);
/** side of chart - 0: top, 1: rgt, 2: btm, 3: lft */
side?: number;
export type Incrs = number[] | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, fullDim: number, minSpace: number) => number[]);
/** height of x axis or width of y axis in CSS pixels alloted for values, gap & ticks, but excluding axis label */
size?: number | ((self: uPlot, values: string[], axisIdx: number) => number);
export type Splits = number[] | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, foundIncr: number, pctSpace: number) => number[]);
/** gap between axis values and axis baseline (or ticks, if enabled) in CSS pixels */
gap?: number;
export type Values = ((self: uPlot, splits: number[], axisIdx: number, foundSpace: number, foundIncr: number) => (string | number | null)[]) | (string | number | null)[][] | string;
/** font used for axis values */
font?: CanvasRenderingContext2D['font'];
export enum Align {
Left = 1,
Right = 2,
}
/** color of axis label & values */
export type Rotate = number | ((self: uPlot, values: (string | number)[], axisIdx: number, foundSpace: number) => number);
export interface Grid {
/** on/off */
show?: boolean; // true
/** can filter which splits render lines. e.g splits.map(v => v % 2 == 0 ? v : null) */
filter?: Axis.Filter;
/** line color */
stroke?: CanvasRenderingContext2D['strokeStyle'];
/** axis label text */
label?: string;
/** line width in CSS pixels */
width?: CanvasRenderingContext2D['lineWidth'];
/** height of x axis label or width of y axis label in CSS pixels */
labelSize?: number;
/** line dash array */
dash?: number[]; // CanvasRenderingContext2D['setLineDash'];
}
/** font used for axis label */
labelFont?: CanvasRenderingContext2D['font'];
export interface Ticks extends Grid {
/** length of tick in CSS pixels */
size?: number;
}
}
/** minimum grid & tick spacing in CSS pixels */
space?: number | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, plotDim: number) => number);
export interface Axis {
/** axis on/off */
show?: boolean;
/** available divisors for axis ticks, values, grid */
incrs?: number[] | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, fullDim: number, minSpace: number) => number[]);
/** scale key */
scale?: string;
/** determines how and where the axis must be split for placing ticks, values, grid */
splits?: number[] | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, foundIncr: number, pctSpace: number) => number[]);
/** side of chart - 0: top, 1: rgt, 2: btm, 3: lft */
side?: number;
/** can filter which splits are passed to axis.values() for rendering. e.g splits.map(v => v % 2 == 0 ? v : null) */
filter?: AxisSplitsFilter;
/** height of x axis or width of y axis in CSS pixels alloted for values, gap & ticks, but excluding axis label */
size?: Axis.Size;
/** formats values for rendering */
values?: ((self: uPlot, splits: number[], axisIdx: number, foundSpace: number, foundIncr: number) => Array<string|number|null>) | (string | number | null)[][] | string;
/** gap between axis values and axis baseline (or ticks, if enabled) in CSS pixels */
gap?: number;
/** values rotation in degrees off horizontal (only bottom axes w/ side: 2) */
rotate?: number | ((self: uPlot, values: Array<string|number>, axisIdx: number, foundSpace: number) => number);
/** font used for axis values */
font?: CanvasRenderingContext2D['font'];
/** text alignment of axis values - 1: left, 2: right */
align?: 1 | 2;
/** color of axis label & values */
stroke?: CanvasRenderingContext2D['strokeStyle'];
/** gridlines to draw from this axis' splits */
grid?: {
/** grid on/off */
show?: boolean; // true
/** axis label text */
label?: string;
/** can filter which splits render gridlines. e.g splits.map(v => v % 2 == 0 ? v : null) */
filter?: AxisSplitsFilter;
/** height of x axis label or width of y axis label in CSS pixels */
labelSize?: number;
/** gridline color */
stroke?: CanvasRenderingContext2D['strokeStyle'];
/** font used for axis label */
labelFont?: CanvasRenderingContext2D['font'];
/** gridline width in CSS pixels */
width?: CanvasRenderingContext2D['lineWidth'];
/** minimum grid & tick spacing in CSS pixels */
space?: Axis.Space;
/** gridline dash array */
dash?: number[]; // CanvasRenderingContext2D['setLineDash'];
};
/** available divisors for axis ticks, values, grid */
incrs?: Axis.Incrs;
/** ticks to draw from this axis' splits */
ticks?: {
/** ticks on/off */
show?: boolean; // true
/** determines how and where the axis must be split for placing ticks, values, grid */
splits?: Axis.Splits;
/** can filter which splits render ticks. e.g splits.map(v => v % 2 == 0 ? v : null) */
filter?: AxisSplitsFilter;
/** can filter which splits are passed to axis.values() for rendering. e.g splits.map(v => v % 2 == 0 ? v : null) */
filter?: Axis.Filter;
/** tick color */
stroke?: CanvasRenderingContext2D['strokeStyle'];
/** formats values for rendering */
values?: Axis.Values;
/** tick line width in CSS pixels */
width?: CanvasRenderingContext2D['lineWidth'];
/** values rotation in degrees off horizontal (only bottom axes w/ side: 2) */
rotate?: Axis.Rotate;
/** tick dash array */
dash?: number[]; // CanvasRenderingContext2D['setLineDash'];
/** text alignment of axis values - 1: left, 2: right */
align?: Axis.Align;
/** length of tick in CSS pixels */
size?: number;
};
}
/** gridlines to draw from this axis' splits */
grid?: Axis.Grid;
interface HooksDescription {
/** ticks to draw from this axis' splits */
ticks?: Axis.Ticks;
}
export namespace Hooks {
export interface Defs {
/** fires after opts are defaulted & merged but data has not been set and scales have not been ranged */

@@ -599,6 +678,17 @@ init?: (self: uPlot, opts: Options, data: AlignedData) => void;

export type Hooks = { [P in keyof HooksDescription]: HooksDescription[P][] }
export type PluginHooks = { [P in keyof HooksDescription]: HooksDescription[P] | HooksDescription[P][] }
export type Arrays = {
[P in keyof Defs]: Defs[P][]
}
export type ArraysOrFuncs = {
[P in keyof Defs]: Defs[P][] | Defs[P]
}
}
export interface Plugin {
/** can mutate provided opts as necessary */
opts?: (self: uPlot, opts: Options) => void | Options;
hooks: Hooks.ArraysOrFuncs;
}
export default uPlot;

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

/*! https://github.com/leeoniya/uPlot (v1.3.0) */
var uPlot=function(){"use strict";function n(n,t,e,r){var i;e=e||0;for(var o=2147483647>=(r=r||t.length-1);r-e>1;)n>t[i=o?e+r>>1:v((e+r)/2)]?e=i:r=i;return n-t[e]>t[r]-n?r:e}var t=[0,0];function e(n,e,r,i){return t[0]=0>r?D(n,-r):n,t[1]=0>i?D(e,-i):e,t}function r(n,t,r,i){var o,l,a,u=10==r?w:x;return n==t&&(n/=r,t*=r),i?(o=v(u(n)),l=m(u(t)),n=(a=e(g(r,o),g(r,l),o,l))[0],t=a[1]):(o=v(u(n)),l=v(u(t)),n=z(n,(a=e(g(r,o),g(r,l),o,l))[0]),t=T(t,a[1])),[n,t]}var i={pad:0,soft:null,mode:0},o={min:i,max:i};function l(n,t,e,r){return F(e)?u(n,t,e):(i.pad=e,i.soft=r?0:null,i.mode=r?2:0,u(n,t,o))}function a(n,t){return null==n?t:n}function u(n,t,e){var r=e.min,i=e.max,o=a(r.pad,0),l=a(i.pad,0),u=a(r.hard,-y),s=a(i.hard,y),f=a(r.soft,y),h=a(i.soft,-y),m=a(r.mode,0),x=a(i.mode,0),b=t-n,_=b||c(t)||1e3,M=w(_),k=g(10,v(M)),S=D(z(n-_*(0==b?0==n?.1:1:o),k/100),6),E=n>=f&&(1==m||2==m&&f>S)?f:y,W=d(u,E>S&&n>=E?E:p(E,S)),Y=D(T(t+_*(0==b?0==t?.1:1:l),k/100),6),C=h>=t&&(1==x||2==x&&Y>h)?h:-y,A=p(s,Y>C&&C>=t?C:d(C,Y));return W==A&&0==W&&(A=100),[W,A]}var s=new Intl.NumberFormat(navigator.language).format,f=Math,c=f.abs,v=f.floor,h=f.round,m=f.ceil,p=f.min,d=f.max,g=f.pow,w=f.log10,x=f.log2,b=f.PI,y=1/0;function _(n,t){return h(n/t)*t}function M(n,t,e){return p(d(n,t),e)}function k(n){return"function"==typeof n?n:function(){return n}}function S(n,t){return t}function T(n,t){return m(n/t)*t}function z(n,t){return v(n/t)*t}function D(n,t){return h(n*(t=Math.pow(10,t)))/t}var E=new Map;function W(n,t,e,r){for(var i=[],o=t;e>o;o++)for(var l=g(n,o),a=c(o),u=0;r.length>u;u++){var s=D(r[u]*l,a);i.push(s),E.set(s,1>s?a:0)}return i}var Y={},C=Array.isArray;function A(n){return"string"==typeof n}function F(n){return"object"==typeof n&&null!==n}function H(n){var t;if(C(n))t=n.map(H);else if(F(n))for(var e in t={},n)t[e]=H(n[e]);else t=n;return t}function P(n){for(var t=arguments,e=1;t.length>e;e++){var r=t[e];for(var i in r)F(n[i])?P(n[i],H(r[i])):n[i]=H(r[i])}return n}var N="width",I="height",V="top",L="bottom",O="left",j="right",B="#000",R="#0000",U="mousemove",G="mousedown",J="mouseup",Z="mouseenter",q="mouseleave",X="dblclick",K="resize",Q="scroll",$="u-off",nn="u-label",tn=requestAnimationFrame,en=document,rn=window,on=devicePixelRatio;function ln(n,t){null!=t&&n.classList.add(t)}function an(n,t){n.classList.remove(t)}function un(n,t,e){n.style[t]=e+"px"}function sn(n,t,e,r){var i=en.createElement(n);return null!=t&&ln(i,t),null!=e&&e.insertBefore(i,r),i}function fn(n,t){return sn("div",n,t)}function cn(n,t,e,r,i){n.style.transform="translate("+t+"px,"+e+"px)",0>t||0>e||t>r||e>i?ln(n,$):an(n,$)}var vn={passive:!0};function hn(n,t,e){t.addEventListener(n,e,vn)}function mn(n,t,e){t.removeEventListener(n,e,vn)}var pn=["January","February","March","April","May","June","July","August","September","October","November","December"],dn=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function gn(n){return n.slice(0,3)}var wn=dn.map(gn),xn=pn.map(gn),bn={MMMM:pn,MMM:xn,WWWW:dn,WWW:wn};function yn(n){return(10>n?"0":"")+n}var _n={YYYY:function(n){return n.getFullYear()},YY:function(n){return(n.getFullYear()+"").slice(2)},MMMM:function(n,t){return t.MMMM[n.getMonth()]},MMM:function(n,t){return t.MMM[n.getMonth()]},MM:function(n){return yn(n.getMonth()+1)},M:function(n){return n.getMonth()+1},DD:function(n){return yn(n.getDate())},D:function(n){return n.getDate()},WWWW:function(n,t){return t.WWWW[n.getDay()]},WWW:function(n,t){return t.WWW[n.getDay()]},HH:function(n){return yn(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 yn(n.getMinutes())},m:function(n){return n.getMinutes()},ss:function(n){return yn(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 Mn(n,t){t=t||bn;for(var e,r=[],i=/\{([a-z]+)\}|[^{]+/gi;e=i.exec(n);)r.push("{"==e[0][0]?_n[e[1]]:e[0]);return function(n){for(var e="",i=0;r.length>i;i++)e+="string"==typeof r[i]?r[i]:r[i](n,t);return e}}var kn=(new Intl.DateTimeFormat).resolvedOptions().timeZone,Sn=[1,2,5],Tn=W(10,-16,0,Sn),zn=(W(2,-53,53,[1]),W(10,0,16,Sn)),Dn=Tn.concat(zn),En=3600,Wn=24*En,Yn=30*Wn,Cn=365*Wn,An=W(10,-3,0,Sn).concat([1,5,10,15,30,60,300,600,900,1800,En,2*En,3*En,4*En,6*En,8*En,12*En,Wn,2*Wn,3*Wn,4*Wn,5*Wn,6*Wn,7*Wn,8*Wn,9*Wn,10*Wn,15*Wn,Yn,2*Yn,3*Yn,4*Yn,6*Yn,Cn,2*Cn,5*Cn,10*Cn,25*Cn,50*Cn,100*Cn]);function Fn(n,t){return n.map((function(n){return n.map((function(e,r){return 0==r||8==r||null==e?e:t(1==r||0==n[8]?e:n[1]+e)}))}))}var Hn="{YYYY}",Pn="\n"+Hn,Nn="{M}/{D}",In="\n"+Nn,Vn=In+"/{YY}",Ln="{aa}",On="{h}:{mm}"+Ln,jn="\n"+On,Bn=":{ss}",Rn=null,Un=[[Cn,Hn,Rn,Rn,Rn,Rn,Rn,Rn,1],[28*Wn,"{MMM}",Pn,Rn,Rn,Rn,Rn,Rn,1],[Wn,Nn,Pn,Rn,Rn,Rn,Rn,Rn,1],[En,"{h}"+Ln,Vn,Rn,In,Rn,Rn,Rn,1],[60,On,Vn,Rn,In,Rn,Rn,Rn,1],[1,Bn,Vn+" "+On,Rn,In+" "+On,Rn,jn,Rn,1],[.001,Bn+".{fff}",Vn+" "+On,Rn,In+" "+On,Rn,jn,Rn,1]];function Gn(n,t){return function(e,r,i,o,l){var a,u,s,f,c,v,h=t.find((function(n){return l>=n[0]}))||t[t.length-1];return r.map((function(t){var e=n(t),r=e.getFullYear(),i=e.getMonth(),o=e.getDate(),l=e.getHours(),m=e.getMinutes(),p=e.getSeconds(),d=r!=a&&h[2]||i!=u&&h[3]||o!=s&&h[4]||l!=f&&h[5]||m!=c&&h[6]||p!=v&&h[7]||h[1];return a=r,u=i,s=o,f=l,c=m,v=p,d(e)}))}}function Jn(n,t,e){return new Date(n,t,e)}function Zn(n,t){return t(n)}function qn(n,t){return function(e,r){return t(n(r))}}var Xn=[0,0];function Kn(n,t,e){return function(n){0==n.button&&e(n)}}function Qn(n,t,e){return e}var $n={show:!0,x:!0,y:!0,lock:!1,move:function(n,t,e){return Xn[0]=t,Xn[1]=e,Xn},points:{show:function(n,t){var e=n.series[t],r=fn();r.style.background=e.stroke||B;var i=dt(e.width,1),o=(i-1)/-2;return un(r,N,i),un(r,I,i),un(r,"marginLeft",o),un(r,"marginTop",o),r}},bind:{mousedown:Kn,mouseup:Kn,click:Kn,dblclick:Kn,mousemove:Qn,mouseleave:Qn,mouseenter:Qn},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,_x:!1,_y:!1},focus:{prox:-1},left:-10,top:-10,idx:null,dataIdx:function(n,t,e){return e}},nt={show:!0,stroke:"rgba(0,0,0,0.07)",width:2,filter:S},tt=P({},nt,{size:10}),et='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',rt="bold "+et,it={show:!0,scale:"x",space:50,gap:5,size:50,labelSize:30,labelFont:rt,side:2,grid:nt,ticks:tt,font:et,rotate:0},ot={show:!0,scale:"x",auto:!1,sorted:1,min:y,max:-y,idxs:[]};function lt(n,t){return t.map((function(n){return null==n?"":s(n)}))}function at(n,t,e,r,i,o,l){for(var a=[],u=E.get(i),s=e=l?e:D(T(e,i),u);r>=s;s=D(s+i,u))a.push(Object.is(s,-0)?0:s);return a}function ut(n,t,e,r,i){var o=[],l=n.scales[n.axes[t].scale].log,a=v((10==l?w:x)(e));i=g(l,a),0>a&&(i=D(i,-a));var u=e;do{o.push(u),i*l>(u=D(u+i,E.get(i)))||(i=u)}while(r>=u);return o}var st=/./,ft=/[12357]/,ct=/[125]/,vt=/1/;function ht(n,t,e){var r=n.axes[e],i=r.scale;if(2==n.scales[i].log)return t;var o=n.valToPos,l=r._space,a=o(10,i),u=o(9,i)-a<l?o(7,i)-a<l?o(5,i)-a<l?vt:ct:ft:st;return t.map((function(n){return u.test(n)?n:null}))}function mt(n,t){return null==t?"":s(t)}var pt={show:!0,scale:"y",space:30,gap:5,size:50,labelSize:30,labelFont:rt,side:3,grid:nt,ticks:tt,font:et,rotate:0};function dt(n,t){return D((3+2*(n||1))*t,3)}function gt(n,t){var e=n.scales[n.series[t].scale];return 3==e.distr?e.min:0}var wt={scale:"y",auto:!0,sorted:0,show:!0,band:!1,spanGaps:!1,isGap:function(){return!0},alpha:1,points:{show:function(n,t){var e=n.series[t],r=(dt(e.width,on),n.series[0].idxs);return n.bbox.width/(e.points.space*on)>=r[1]-r[0]}},values:null,min:y,max:-y,idxs:[],path:null,clip:null},xt={time:!0,auto:!0,distr:1,log:10,min:null,max:null},bt=P({},xt,{time:!1}),yt={};function _t(){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,i,o,l,a){n.length>1&&n.forEach((function(n){n!=e&&n.pub(t,e,r,i,o,l,a)}))}}}function Mt(n,t,e,r){return(r?[n[0],n[1]].concat(n.slice(2)):[n[0]].concat(n.slice(1))).map((function(n,r){return kt(n,r,t,e)}))}function kt(n,t,e,r){return P({},0==t||n&&n.side%2==0?e:r,n)}function St(n,t){return 3==t.distr?w(n/t.min)/w(t.max/t.min):(n-t.min)/(t.max-t.min)}function Tt(n,t,e,r){return r+(1-St(n,t))*e}function zt(n,t,e,r){return r+St(n,t)*e}var Dt=[null,null];function Et(n,t,e){return null==t?Dt:[t,e]}var Wt=Et;function Yt(n,t,e){return null==t?Dt:l(t,e,.1,!0)}function Ct(n,t,e,i){return null==t?Dt:r(t,e,n.scales[i].log,!1)}var At=Ct;function Ft(n){var t;return[n=n.replace(/(\d+)px/,(function(n,e){return(t=h(e*on))+"px"})),t]}function Ht(t,e,i){var o={},a=!1;o.status=0;var u=o.root=fn("uplot");null!=t.id&&(u.id=t.id),ln(u,t.class),t.title&&(fn("u-title",u).textContent=t.title);var s=sn("canvas"),f=o.ctx=s.getContext("2d"),m=fn("u-wrap",u),x=fn("u-under",m);m.appendChild(s);var z=fn("u-over",m);((t=H(t)).plugins||[]).forEach((function(n){n.opts&&(t=n.opts(o,t)||t)}));var W=o.series=Mt(t.series||[],ot,wt,!1),vn=o.axes=Mt(t.axes||[],it,pt,!0),pn=o.scales={},dn=W[0].scale;function gn(n){var e=pn[n];if(null==e){var r=(t.scales||Y)[n]||Y;if(null!=r.from)gn(r.from),pn[n]=P({},pn[r.from],r);else{var i=(e=pn[n]=P({},n==dn?xt:bt,r)).time,o=3==e.distr,a=e.range;if(n!=dn&&!C(a)&&F(a)){var u=a;a=function(n,t,e){return null==t?Dt:l(t,e,u)}}e.range=k(a||(i?Wt:n==dn?o?At:Et:o?Ct:Yt)),e.auto=k(e.auto)}}}for(var wn in gn("x"),gn("y"),W.forEach((function(n){gn(n.scale)})),t.scales)gn(wn);var xn=pn[dn].distr,bn={};for(var yn in pn){var _n=pn[yn];null==_n.min&&null==_n.max||(bn[yn]={min:_n.min,max:_n.max})}var kn,Sn,Tn=P({x:h(pt.size/2),y:h(it.size/3)},t.gutters),Hn=t.tzDate||function(n){return new Date(1e3*n)},Pn=t.fmtDate||Mn,Nn=function(n){return function(t,e,r,i,o,l){var a=[],u=o>=Cn,s=o>=Yn&&Cn>o,f=n(r),c=f/1e3,h=Jn(f.getFullYear(),u?0:f.getMonth(),s||u?1:f.getDate()),m=h/1e3;if(s||u)for(var p=s?o/Yn:0,d=u?o/Cn:0,g=c==m?c:Jn(h.getFullYear()+d,h.getMonth()+p,1)/1e3,w=new Date(1e3*g),x=w.getFullYear(),b=w.getMonth(),y=0;i>=g;y++){var _=Jn(x+d*y,b+p*y,1);(g=(+_+(_-n(_/1e3)))/1e3)>i||a.push(g)}else{var M=Wn>o?o:Wn,k=m+(v(r)-v(c))+T(c-m,M);a.push(k);for(var S=n(k),z=S.getHours()+S.getMinutes()/60+S.getSeconds()/En,E=o/En,W=l/t.axes[e]._space;(k=D(k+o,3))<=i;)if(E>1){var Y=v(D(z+E,6))%24,C=n(k).getHours()-Y;C>1&&(C=-1),z=(z+E)%24,.7>D(((k-=C*En)-a[a.length-1])/o,3)*W||a.push(k)}else a.push(k)}return a}}(Hn),In=Gn(Hn,Fn(Un,Pn)),Vn=qn(Hn,Zn("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",Pn)),Ln=P({show:!0,live:!0},t.legend),On=Ln.show,jn=[],Bn=!1;if(On){kn=sn("table","u-legend",u);var Rn=W[1]?W[1].values:null;if(Bn=null!=Rn){var Xn=sn("tr","u-thead",kn);for(var Kn in sn("th",null,Xn),Sn=Rn(o,1,0))sn("th",nn,Xn).textContent=Kn}else Sn={_:0},ln(kn,"u-inline"),Ln.live&&ln(kn,"u-live")}var Qn=new Map;function nt(n,t,e){var r=Qn.get(t)||{},i=It.bind[n](o,t,e);i&&(hn(n,t,r[n]=i),Qn.set(t,r))}var tt=0,et=0,rt=0,st=0,ft=0,ct=0,vt=0,St=0,Ht=0,Pt=0;function Nt(n,t){o.width=tt=rt=n,o.height=et=st=t,ft=ct=0,function(){var n=!1,t=!1,e=!1,r=!1;vn.forEach((function(i){if(i.show&&i._show){var o=i.side,l=o%2,a=i._size+(i.labelSize=null!=i.label?i.labelSize||30:0);a>0&&(l?(rt-=a,3==o?(ft+=a,r=!0):e=!0):(st-=a,0==o?(ct+=a,n=!0):t=!0))}})),(n||t)&&(e||(rt-=Tn.x),r||(rt-=Tn.x,ft+=Tn.x)),(r||e)&&(t||(st-=Tn.y),n||(st-=Tn.y,ct+=Tn.y))}(),function(){var n=ft+rt,t=ct+st,e=ft,r=ct;function i(i,o){switch(i){case 1:return(n+=o)-o;case 2:return(t+=o)-o;case 3:return(e-=o)+o;case 0:return(r-=o)+o}}vn.forEach((function(n){if(n.show&&n._show){var t=n.side;n._pos=i(t,n._size),null!=n.label&&(n._lpos=i(t,n.labelSize))}}))}();var e=o.bbox;vt=e.left=_(ft*on,.5),St=e.top=_(ct*on,.5),Ht=e.width=_(rt*on,.5),Pt=e.height=_(st*on,.5),un(x,O,ft),un(x,V,ct),un(x,N,rt),un(x,I,st),un(z,O,ft),un(z,V,ct),un(z,N,rt),un(z,I,st),un(m,N,tt),un(m,I,et),s.width=h(tt*on),s.height=h(et*on),je(),a&&We(dn,pn[dn].min,pn[dn].max),a&&$e("setSize")}o.bbox={},o.setSize=function(n){Nt(n.width,n.height)};var It=o.cursor=P({},$n,t.cursor);It._lock=!1,It.points.show=k(It.points.show);var Vt,Lt=o.focus=P({},t.focus||{alpha:.3},It.focus),Ot=Lt.prox>=0,jt=[null];function Bt(n,t){var e=pn[n.scale].time,r=n.value;if(n.value=e?A(r)?qn(Hn,Zn(r,Pn)):r||Vn:r||mt,n.label=n.label||(e?"Time":"Value"),t>0){n.width=null==n.width?1:n.width,n.paths=n.paths||me,n.fillTo=n.fillTo||gt;var i=dt(n.width,1);n.points=P({},{size:i,width:d(1,.2*i),stroke:n.stroke,space:2*i},n.points),n.points.show=k(n.points.show),n._paths=null}if(On&&jn.splice(t,0,function(n,t){if(0==t&&(Bn||!Ln.live))return null;var e=[],r=sn("tr","u-series",kn,kn.childNodes[t]);ln(r,n.class),n.show||ln(r,$);var i=sn("th",null,r),o=fn("u-marker",i);o.style.borderColor=n.width?n.stroke:t>0&&n.points.width?n.points.stroke:null,o.style.backgroundColor=n.fill||null;var l=fn(nn,i);for(var a in l.textContent=n.label,t>0&&(nt("click",i,(function(){It._lock||Ye(W.indexOf(n),{show:!n.show},nr.setSeries)})),Ot&&nt(Z,i,(function(){It._lock||Ye(W.indexOf(n),{focus:!0},nr.setSeries)}))),Sn){var u=sn("td","u-value",r);u.textContent="--",e.push(u)}return e}(n,t)),It.show){var l=function(n,t){if(t>0){var e=It.points.show(o,t);if(e)return ln(e,"u-cursor-pt"),ln(e,n.class),cn(e,-10,-10,rt,st),z.insertBefore(e,jt[t]),e}}(n,t);l&&jt.splice(t,0,l)}}o.addSeries=function(n,t){n=kt(n,t=null==t?W.length:t,ot,wt),W.splice(t,0,n),Bt(W[t],t)},o.delSeries=function(n){W.splice(n,1),On&&jn.splice(n,1)[0][0].parentNode.remove(),jt.length>1&&jt.splice(n,1)[0].remove()},W.forEach(Bt),vn.forEach((function(n,t){if(n._show=n.show,n.show){var e=pn[n.scale];null==e&&(n.scale=n.side%2?W[1].scale:dn,e=pn[n.scale]);var r=e.time;n.size=k(n.size),n.space=k(n.space),n.rotate=k(n.rotate),n.incrs=k(n.incrs||(2==e.distr?zn:r?An:Dn)),n.splits=k(n.splits||(r&&1==e.distr?Nn:3==e.distr?ut:at));var i=n.values;n.values=r?C(i)?Gn(Hn,Fn(i,Pn)):A(i)?function(n,t){var e=Mn(t);return function(t,r){return r.map((function(t){return e(n(t))}))}}(Hn,i):i||In:i||lt,n.filter=k(n.filter||(3==e.distr?ht:S)),n.font=Ft(n.font),n.labelFont=Ft(n.labelFont),n._size=n.size(o,null,t),n._space=n._rotate=n._incrs=n._incr=n._splits=n._values=null}}));var Rt=null,Ut=null,Gt=W[0].idxs,Jt=null,Zt=!1,qt=!1;function Xt(n,t){if((n=n||[])[0]=n[0]||[],o.data=n,e=n.slice(),Vt=(Jt=e[0]).length,2==xn&&(e[0]=Jt.map((function(n,t){return t}))),de(),$e("setData"),Zt=!0,!1!==t){var r=pn[dn];r.auto(o,qt)?Kt():We(dn,r.min,r.max)}}function Kt(){var n,t,i,o;qt=!0,Vt>0?(Rt=Gt[0]=0,Ut=Gt[1]=Vt-1,i=e[0][Rt],o=e[0][Ut],2==xn?(i=Rt,o=Ut):1==Vt&&(3==xn?(i=(n=r(i,i,pn[dn].log,!1))[0],o=n[1]):pn[dn].time?o=i+86400:(i=(t=l(i,o,.1,!0))[0],o=t[1]))):(Rt=Gt[0]=i=null,Ut=Gt[1]=o=null),We(dn,i,o),qt=!1}function Qt(n,t,e,r){f.strokeStyle=n||R,f.lineWidth=t,f.lineJoin="round",f.setLineDash(e||[]),f.fillStyle=r||R}function $t(){if(Fe)Pe=!0;else{var t=H(pn);for(var r in t){var i=t[r],l=bn[r];if(null!=l)P(i,l),r==dn&&de();else if(r!=dn)if(0==Vt&&null==i.from){var a=i.range(o,null,null,r);i.min=a[0],i.max=a[1]}else i.min=y,i.max=-y}if(Vt>0)for(var u in W.forEach((function(r,i){var l=r.scale,a=t[l],u=bn[l];if(0==i){var s=a.range(o,a.min,a.max,l);a.min=s[0],a.max=s[1],Rt=n(a.min,e[0]),Ut=n(a.max,e[0]),a.min>e[0][Rt]&&Rt++,e[0][Ut]>a.max&&Ut--,r.min=Jt[Rt],r.max=Jt[Ut]}else if(r.show&&r.auto&&a.auto(o,qt)&&null==u){var f=null==r.min?function(n,t,e,r){var i=y,o=-y;if(1==r)i=n[t],o=n[e];else if(-1==r)i=n[e],o=n[t];else for(var l=t;e>=l;l++)null!=n[l]&&(i=p(i,n[l]),o=d(o,n[l]));return[i,o]}(e[i],Rt,Ut,r.sorted):[r.min,r.max];a.min=p(a.min,r.min=f[0]),a.max=d(a.max,r.max=f[1])}r.idxs[0]=Rt,r.idxs[1]=Ut})),t){var s=t[u];if(null==s.from&&null==bn[u]){var f=s.range(o,s.min==y?null:s.min,s.max==-y?null:s.max,u);s.min=f[0],s.max=f[1]}}for(var c in t){var v=t[c];if(null!=v.from){var h=t[v.from],m=v.range(o,h.min,h.max,c);v.min=m[0],v.max=m[1]}}var g={};for(var w in t){var x=t[w],b=pn[w];b.min==x.min&&b.max==x.max||(b.min=x.min,b.max=x.max,g[w]=!0)}for(var _ in W.forEach((function(n){g[n.scale]&&(n._paths=null)})),g)$e("setScale",_);for(var M in bn)bn[M]=null;It.show&&Le()}}o.setData=Xt;var ne,te,ee,re,ie,oe,le,ae,ue,se,fe,ce=1;function ve(n,t,e){if(e>t){var r=n[n.length-1];r&&r[0]==t?r[1]=e:n.push([t,e])}}function he(n,t,e,r){for(var i=1==r?t:e;i>=t&&e>=i;i+=r)if(null!=n[i])return i;return-1}function me(n,t,r,i){var o,l,a,u,s,f=W[t],c=f.isGap,v=e[0],m=e[t],g=pn[dn],w=pn[f.scale],x=1==ce?{stroke:new Path2D,fill:null,clip:null}:W[t-1]._paths,b=x.stroke,M=D(f.width*on,3),k=y,S=-y,T=[],z=h(zt(v[1==ce?r:i],g,Ht,vt)),E=!1,Y=he(m,r,i,1),C=he(m,r,i,-1),A=_(zt(v[Y],g,Ht,vt),.5),F=_(zt(v[C],g,Ht,vt),.5);A>vt&&ve(T,vt,A),f.band&&1==ce&&b.lineTo(A-2*M,h(Tt(m[r],w,Pt,St)));for(var H=1==ce?r:i;H>=r&&i>=H;H+=ce){var P=h(zt(v[H],g,Ht,vt));if(P==z)null!=m[H]?(o=h(Tt(m[H],w,Pt,St)),k=p(o,k),S=d(o,S)):!E&&c(n,t,H)&&(E=!0);else{var N=!1;k!=y?(b.lineTo(z,k),b.lineTo(z,S),b.lineTo(z,o),l=z):E&&(N=!0,E=!1),null!=m[H]?(o=h(Tt(m[H],w,Pt,St)),b.lineTo(P,o),k=S=o,P-z>1&&null==m[H-1]&&c(n,t,H-1)&&(N=!0)):(k=y,S=-y,!E&&c(n,t,H)&&(E=!0)),N&&ve(T,l,P),z=P}}if(vt+Ht>F&&ve(T,F,vt+Ht),f.band&&(1==ce?(a=F+2*M,u=C,s=e[t+1]):(a=A-2*M,u=Y,s=e[t-1]),b.lineTo(a,h(Tt(m[u],w,Pt,St))),b.lineTo(a,h(Tt(s[u],w,Pt,St)))),1==ce&&(x.clip=function(n,t){var e=null;if(t.length>0&&!W[n].spanGaps){e=new Path2D;for(var r=vt,i=0;t.length>i;i++){var o=t[i];e.rect(r,St,o[0]-r,St+Pt),r=o[1]}e.rect(r,St,vt+Ht-r,St+Pt)}return e}(t,T),null!=f.fill)){var I=x.fill=new Path2D(b),V=h(Tt(f.fillTo(n,t,f.min,f.max),w,Pt,St));I.lineTo(F,V),I.lineTo(A,V)}return f.band&&(ce*=-1),x}function pe(n,t,e,r,i,o,l,a,u){var s=l%2/2;f.translate(s,s),Qt(a,l,u),f.beginPath();var c,v,h,m,p=i+(0==r||3==r?-o:o);0==e?(v=i,m=p):(c=i,h=p),n.forEach((function(n,r){null!=t[r]&&(0==e?c=h=n:v=m=n,f.moveTo(c,v),f.lineTo(h,m))})),f.stroke(),f.translate(-s,-s)}function de(){W.forEach((function(n,t){t>0&&(n.min=null,n.max=null,n._paths=null)}))}function ge(){Fe?He=!0:(f.clearRect(0,0,s.width,s.height),$e("drawClear"),function(){var n=!1;vn.forEach((function(t,e){if(t.show){var r=pn[t.scale];if(null!=r.min){t._show||(n=!0,t._show=!0);var i=t.side,l=i%2,a=r.min,u=r.max,s=function(n,t,e,r){var i,l=vn[n];if(r>0){var a=l._space=l.space(o,n,t,e,r);i=function(n,t,e,r,i){for(var o=r/(t-n),l=(""+v(n)).length,a=0;e.length>a;a++){var u=e[a]*o,s=1>e[a]?E.get(e[a]):0;if(u>=i&&17>l+s)return[e[a],u]}}(t,e,l._incrs=l.incrs(o,n,t,e,r,a),r,a)}else i=[0,0];return i}(e,a,u,0==l?rt:st),c=s[0],m=s[1],p=t.splits(o,e,a,u,c,m,2==r.distr),d=0==l?zt:Tt,g=0==l?Ht:Pt,w=0==l?vt:St,x=h(t.gap*on),y=t.ticks,_=y.show?h(y.size*on):0,M=t._splits=2==r.distr?p.map((function(n){return Jt[n]})):p,k=t._incr=2==r.distr?Jt[p[1]]-Jt[p[0]]:c,S=t._values=t.values(o,t.filter(o,M,e,m,k),e,m,k),T=(t._rotate=2==i?t.rotate(o,S,e,m):0)*-b/180,z=t._size;if(t._size=t.size(o,S,e),null!=z&&t._size!=z&&(n=!0),!n){var W=h(t._pos*on),Y=W+(_+x)*(0==l&&0==i||1==l&&3==i?-1:1),C=0==l?Y:0,A=1==l?Y:0;f.font=t.font[0],f.fillStyle=t.stroke||B,f.textAlign=1==t.align?O:2==t.align?j:T>0?O:0>T?j:0==l?"center":3==i?j:O,f.textBaseline=T||1==l?"middle":2==i?V:L;var F=1.5*t.font[1],H=p.map((function(n){return h(d(n,r,g,w))}));if(S.forEach((function(n,t){null!=n&&(0==l?A=H[t]:C=H[t],(""+n).split(/\n/gm).forEach((function(n,t){T?(f.save(),f.translate(A,C+t*F),f.rotate(T),f.fillText(n,0,0),f.restore()):f.fillText(n,A,C+t*F)})))})),t.label){f.save();var P=h(t._lpos*on);1==l?(A=C=0,f.translate(P,h(St+Pt/2)),f.rotate((3==i?-b:b)/2)):(A=h(vt+Ht/2),C=P),f.font=t.labelFont[0],f.textAlign="center",f.textBaseline=2==i?V:L,f.fillText(t.label,A,C),f.restore()}y.show&&pe(H,y.filter(o,M,e,m,k),l,i,W,_,D(y.width*on,3),y.stroke);var N=t.grid;N.show&&pe(H,N.filter(o,M,e,m,k),l,0==l?2:1,0==l?St:vt,0==l?Pt:Ht,D(N.width*on,3),N.stroke,N.dash)}}else t._show&&(n=!0,t._show=!1)}})),n?Nt(tt,et):$e("drawAxes")}(),Vt>0&&function(){W.forEach((function(n,t){if(t>0&&n.show&&null==n._paths){var r=function(n){for(var t=M(Rt-1,0,Vt-1),e=M(Ut+1,0,Vt-1);null==n[t]&&t>0;)t--;for(;null==n[e]&&Vt-1>e;)e++;return[t,e]}(e[t]);n._paths=n.paths(o,t,r[0],r[1])}})),W.forEach((function(n,t){t>0&&n.show&&(n._paths&&function(n){var t=W[n];if(1==ce){var e=t._paths,r=e.stroke,i=e.fill,o=e.clip,l=D(t.width*on,3),a=l%2/2;Qt(t.stroke,l,t.dash,t.fill),f.globalAlpha=t.alpha,f.translate(a,a),f.save();var u=vt,s=St,c=Ht,v=Pt,h=l*on/2;0==t.min&&(v+=h),0==t.max&&(s-=h,v+=h),f.beginPath(),f.rect(u,s,c,v),f.clip(),null!=o&&f.clip(o),t.band?(f.fill(r),l&&f.stroke(r)):(l&&f.stroke(r),null!=t.fill&&f.fill(i)),f.restore(),f.translate(-a,-a),f.globalAlpha=1}t.band&&(ce*=-1)}(t),n.points.show(o,t,Rt,Ut)&&function(n){var t=W[n],r=t.points,i=D(r.width*on,3),o=i%2/2,l=r.width>0,a=(r.size-r.width)/2*on,u=D(2*a,3);f.translate(o,o),f.save(),f.beginPath(),f.rect(vt-u,St-u,Ht+2*u,Pt+2*u),f.clip(),f.globalAlpha=t.alpha;for(var s=new Path2D,c=Rt;Ut>=c;c++)if(null!=e[n][c]){var v=h(zt(e[0][c],pn[dn],Ht,vt)),m=h(Tt(e[n][c],pn[t.scale],Pt,St));s.moveTo(v+a,m),s.arc(v,m,a,0,2*b)}Qt(r.stroke,i,null,r.fill||(l?"#fff":t.stroke)),f.fill(s),l&&f.stroke(s),f.globalAlpha=1,f.restore(),f.translate(-o,-o)}(t),$e("drawSeries",t))}))}(),ne=!0,$e("draw"))}function we(t,r){var i=pn[t];if(null==i.from){if(0==Vt){var l=i.range(o,r.min,r.max,t);r.min=l[0],r.max=l[1]}if(Vt>1&&1e-16>r.max-r.min)return;t==dn&&2==i.distr&&Vt>0&&(r.min=n(r.min,e[0]),r.max=n(r.max,e[0])),bn[t]=r,ne=!1,$t(),!ne&&ge(),ne=!1}}o.paths=me,o.redraw=function(n){!1!==n?We(dn,pn[dn].min,pn[dn].max):ge()},o.setScale=we;var xe=!1,be=It.drag,ye=be.x,_e=be.y;It.show&&(It.x&&(se=It.left,te=fn("u-cursor-x",z)),It.y&&(fe=It.top,ee=fn("u-cursor-y",z)));var Me,ke,Se,Te=o.select=P({show:!0,over:!0,left:0,width:0,top:0,height:0},t.select),ze=Te.show?fn("u-select",Te.over?z:x):null;function De(n,t){if(Te.show){for(var e in n)un(ze,e,Te[e]=n[e]);!1!==t&&$e("setSelect")}}function Ee(n){var t=On?jn[n][0].parentNode:null;W[n].show?t&&an(t,$):(t&&ln(t,$),jt.length>1&&cn(jt[n],-10,-10,rt,st))}function We(n,t,e){we(n,{min:t,max:e})}function Ye(n,t,e){var r=W[n];if(null!=t.focus&&function(n){n!=Se&&(W.forEach((function(t,e){!function(n,t){var e=W[n];Ce(n,t),e.band&&Ce(W[n+1].band?n+1:n-1,t)}(e,null==n||0==e||e==n?1:Lt.alpha)})),Se=n,ge())}(n),null!=t.show){if(r.show=t.show,Ee(n),r.band){var i=W[n+1]&&W[n+1].band?n+1:n-1;W[i].show=r.show,Ee(i)}We(dn,pn[dn].min,pn[dn].max)}$e("setSeries",n,t),e&&er.pub("setSeries",o,n,t)}function Ce(n,t){W[n].alpha=t,It.show&&jt[n]&&(jt[n].style.opacity=t),On&&jn[n]&&(jn[n][0].parentNode.style.opacity=t)}function Ae(n,t){var e=rt;t!=dn&&(n=(e=st)-n);var r=n/e,i=pn[t],o=i.min,l=i.max;return 3==i.distr?(o=w(o),l=w(l),g(10,o+(l-o)*r)):o+(l-o)*r}o.setSelect=De,o.setSeries=Ye,On&&Ot&&hn(q,kn,(function(){It._lock||(Ye(null,{focus:!1},nr.setSeries),Le())})),o.valToIdx=function(t){return n(t,e[0])},o.posToIdx=function(t){return n(Ae(t,dn),e[0],Rt,Ut)},o.posToVal=Ae,o.valToPos=function(n,t,e){return t==dn?zt(n,pn[t],e?Ht:rt,e?vt:0):Tt(n,pn[t],e?Pt:st,e?St:0)};var Fe=!1,He=!1,Pe=!1,Ne=!1;function Ie(n){Fe=!0,n(o),Fe=!1,Pe&&$t(),Ne&&Le(),He&&!ne&&ge(),Pe=Ne=He=ne=Fe}o.batch=Ie,o.setCursor=function(n){se=n.left,fe=n.top,Le()};var Ve=0;function Le(t,r){var i;if(Fe)Ne=!0;else{var l;if(Ve=0,ae=se,ue=fe,i=It.move(o,se,fe),se=i[0],fe=i[1],It.show&&(It.x&&cn(te,h(se),0,rt,st),It.y&&cn(ee,0,h(fe),rt,st)),Me=y,0>se||0==Vt||Rt>Ut){l=null;for(var u=0;W.length>u;u++)if(u>0&&jt.length>1&&cn(jt[u],-10,-10,rt,st),On&&Ln.live){if(0==u&&Bn)continue;for(var s=0;jn[u].length>s;s++)jn[u][s].firstChild.nodeValue="--"}Ot&&Ye(null,{focus:!0},nr.setSeries)}else{var f=Ae(se,dn);l=n(f,e[0],Rt,Ut);for(var v=pn[dn],m=D(zt(e[0][l],v,rt,0),3),d=0;W.length>d;d++){var g=W[d],w=It.dataIdx(o,d,l,f),x=w==l?m:D(zt(e[0][w],v,rt,0),3);if(d>0&&g.show){var b=e[d][w],_=null==b?-10:D(Tt(b,pn[g.scale],st,0),3);if(_>0){var M=c(_-fe);M>Me||(Me=M,ke=d)}jt.length>1&&cn(jt[d],x,_,rt,st)}if(On&&Ln.live){if(w==It.idx&&!Zt||0==d&&Bn)continue;var k=0==d&&2==xn?Jt:e[d],S=Bn?g.values(o,d,w):{_:g.value(o,k[w],d,w)},T=0;for(var z in S)jn[d][T++].firstChild.nodeValue=S[z]}}Zt=!1}if(Te.show&&xe)if(null!=r){var E=nr.scales,Y=E[0],C=E[1],A=r.cursor.drag;if(ye=A._x,_e=A._y,Y){var F=pn[Y],H=r.posToVal(r.select.left,Y),P=r.posToVal(r.select.left+r.select.width,Y);Te.left=zt(H,F,rt,0),Te.width=c(Te.left-zt(P,F,rt,0)),un(ze,O,Te.left),un(ze,N,Te.width),C||(un(ze,V,Te.top=0),un(ze,I,Te.height=st))}if(C){var L=pn[C],j=r.posToVal(r.select.top,C),B=r.posToVal(r.select.top+r.select.height,C);Te.top=Tt(j,L,st,0),Te.height=c(Te.top-Tt(B,L,st,0)),un(ze,V,Te.top),un(ze,I,Te.height),Y||(un(ze,O,Te.left=0),un(ze,N,Te.width=rt))}}else{var R=c(ae-re),G=c(ue-ie);ye=be.x&&R>=be.dist,_e=be.y&&G>=be.dist;var J=be.uni;if(null!=J?ye&&_e&&(_e=G>=J,(ye=R>=J)||_e||(G>R?_e=!0:ye=!0)):be.x&&be.y&&(ye||_e)&&(ye=_e=!0),ye){var Z=p(oe,se),q=c(se-oe);un(ze,O,Te.left=Z),un(ze,N,Te.width=q),_e||(un(ze,V,Te.top=0),un(ze,I,Te.height=st))}if(_e){var X=p(le,fe),K=c(fe-le);un(ze,V,Te.top=X),un(ze,I,Te.height=K),ye||(un(ze,O,Te.left=0),un(ze,N,Te.width=rt))}ye||_e||(un(ze,I,Te.height=0),un(ze,N,Te.width=0))}It.idx=l,It.left=se,It.top=fe,be._x=ye,be._y=_e,null!=t&&(er.pub(U,o,se,fe,rt,st,l),Ot&&Ye(Me>Lt.prox?null:ke,{focus:!0},nr.setSeries)),a&&$e("setCursor")}}var Oe=null;function je(){Oe=z.getBoundingClientRect()}function Be(n,t,e,r,i,o){It._lock||(Re(n,t,e,r,i,o,0,!1,null!=n),null!=n?0==Ve&&(Ve=tn(Le)):Le(null,t))}function Re(n,t,e,r,i,l,a,u,s){var f;if(null!=n)e=n.clientX-Oe.left,r=n.clientY-Oe.top;else{if(0>e||0>r)return se=-10,void(fe=-10);var c=nr.scales,v=c[0],h=c[1];e=null!=v?zt(t.posToVal(e,v),pn[v],rt,0):rt*(e/i),r=null!=h?Tt(t.posToVal(r,h),pn[h],st,0):st*(r/l)}s&&(e>1&&rt-1>e||(e=_(e,rt)),r>1&&st-1>r||(r=_(r,st))),u?(re=e,ie=r,f=It.move(o,e,r),oe=f[0],le=f[1]):(se=e,fe=r)}function Ue(){De({width:0,height:0},!1)}function Ge(n,t,e,r,i,l){xe=!0,ye=_e=be._x=be._y=!1,Re(n,t,e,r,i,l,0,!0,!1),null!=n&&(nt(J,en,Je),er.pub(G,o,oe,le,rt,st,null))}function Je(n,t,e,r,i,l){xe=be._x=be._y=!1,Re(n,t,e,r,i,l,0,!1,!0);var a=Te.width>0||Te.height>0;a&&De(Te),be.setScale&&a?(Ie((function(){if(ye&&We(dn,Ae(Te.left,dn),Ae(Te.left+Te.width,dn)),_e)for(var n in pn){var t=pn[n];n!=dn&&null==t.from&&t.min!=y&&We(n,Ae(Te.top+Te.height,n),Ae(Te.top,n))}})),Ue()):It.lock&&(It._lock=!It._lock,It._lock||Le()),null!=n&&(function(n,t){var e=Qn.get(t)||{};mn(n,t,e[n]),e[n]=null}(J,en),er.pub(J,o,se,fe,rt,st,null))}function Ze(){if(!It._lock){var n=xe;if(xe){var t=!0,e=!0;if(ye&&_e&&(t=10>=se||se>=rt-10,e=10>=fe||fe>=st-10),ye&&t){var r=se,i=rt-se,o=p(r,i);o==r&&(se=0),o==i&&(se=rt)}if(_e&&e){var l=fe,a=st-fe,u=p(l,a);u==l&&(fe=0),u==a&&(fe=st)}Le(1),xe=!1}se=-10,fe=-10,Le(1),n&&(xe=n)}}function qe(n){Kt(),Ue(),null!=n&&er.pub(X,o,se,fe,rt,st,null)}var Xe,Ke={};Ke.mousedown=Ge,Ke.mousemove=Be,Ke.mouseup=Je,Ke.dblclick=qe,Ke.setSeries=function(n,t,e,r){Ye(e,r)},It.show&&(nt(G,z,Ge),nt(U,z,Be),nt(Z,z,je),nt(q,z,(function(){tn(Ze)})),nt(X,z,qe),Xe=function(n){var t=null;function e(){t=null,n()}return function(){clearTimeout(t),t=setTimeout(e,100)}}(je),hn(K,rn,Xe),hn(Q,rn,Xe),o.syncRect=je);var Qe=o.hooks=t.hooks||{};function $e(n,t,e){n in Qe&&Qe[n].forEach((function(n){n.call(null,o,t,e)}))}(t.plugins||[]).forEach((function(n){for(var t in n.hooks)Qe[t]=(Qe[t]||[]).concat(n.hooks[t])}));var nr=P({key:null,setSeries:!1,scales:[dn,null]},It.sync),tr=nr.key,er=null!=tr?yt[tr]=yt[tr]||_t():_t();function rr(){Nt(t.width,t.height),$e("init",t,e),Xt(e||t.data,!1),bn[dn]?we(dn,bn[dn]):Kt(),De(Te,!1),a=!0,o.status=1,$e("ready")}return er.sub(o),o.pub=function(n,t,e,r,i,o,l){Ke[n](null,t,e,r,i,o,l)},o.destroy=function(){er.unsub(o),mn(K,rn,Xe),mn(Q,rn,Xe),u.remove(),$e("destroy")},i?i instanceof HTMLElement?(i.appendChild(u),rr()):i(o,rr):rr(),o}return Ht.assign=P,Ht.fmtNum=s,Ht.rangeNum=l,Ht.rangeLog=r,Ht.fmtDate=Mn,Ht.tzDate=function(n,t){var e;return"Etc/UTC"==t?e=new Date(+n+6e4*n.getTimezoneOffset()):t==kn?e=n:(e=new Date(n.toLocaleString("en-US",{timeZone:t}))).setMilliseconds(n.getMilliseconds()),e},Ht}();
/*! https://github.com/leeoniya/uPlot (v1.4.0) */
var uPlot=function(){"use strict";function n(n,t,e,r){var i;e=e||0;for(var o=2147483647>=(r=r||t.length-1);r-e>1;)n>t[i=o?e+r>>1:v((e+r)/2)]?e=i:r=i;return n-t[e]>t[r]-n?r:e}var t=[0,0];function e(n,e,r,i){return t[0]=0>r?D(n,-r):n,t[1]=0>i?D(e,-i):e,t}function r(n,t,r,i){var o,l,a,u=10==r?w:x;return n==t&&(n/=r,t*=r),i?(o=v(u(n)),l=m(u(t)),n=(a=e(g(r,o),g(r,l),o,l))[0],t=a[1]):(o=v(u(n)),l=v(u(t)),n=z(n,(a=e(g(r,o),g(r,l),o,l))[0]),t=T(t,a[1])),[n,t]}var i={pad:0,soft:null,mode:0},o={min:i,max:i};function l(n,t,e,r){return H(e)?u(n,t,e):(i.pad=e,i.soft=r?0:null,i.mode=r?2:0,u(n,t,o))}function a(n,t){return null==n?t:n}function u(n,t,e){var r=e.min,i=e.max,o=a(r.pad,0),l=a(i.pad,0),u=a(r.hard,-b),s=a(i.hard,b),f=a(r.soft,b),h=a(i.soft,-b),m=a(r.mode,0),x=a(i.mode,0),_=t-n,y=_||c(t)||1e3,M=w(y),k=g(10,v(M)),S=D(z(n-y*(0==_?0==n?.1:1:o),k/100),6),E=n>=f&&(1==m||2==m&&f>S)?f:b,W=p(u,E>S&&n>=E?E:d(E,S)),Y=D(T(t+y*(0==_?0==t?.1:1:l),k/100),6),C=h>=t&&(1==x||2==x&&Y>h)?h:-b,A=d(s,Y>C&&C>=t?C:p(C,Y));return W==A&&0==W&&(A=100),[W,A]}var s=new Intl.NumberFormat(navigator.language).format,f=Math,c=f.abs,v=f.floor,h=f.round,m=f.ceil,d=f.min,p=f.max,g=f.pow,w=f.log10,x=f.log2,_=f.PI,b=1/0;function y(n,t){return h(n/t)*t}function M(n,t,e){return d(p(n,t),e)}function k(n){return"function"==typeof n?n:function(){return n}}function S(n,t){return t}function T(n,t){return m(n/t)*t}function z(n,t){return v(n/t)*t}function D(n,t){return h(n*(t=Math.pow(10,t)))/t}var E=new Map;function W(n){return((""+n).split(".")[1]||"").length}function Y(n,t,e,r){for(var i=[],o=r.map(W),l=t;e>l;l++)for(var a=c(l),u=D(g(n,l),a),s=0;r.length>s;s++){var f=r[s]*u,v=(0>f||0>l?a:0)+(o[s]>l?o[s]:0),h=D(f,v);i.push(h),E.set(h,v)}return i}var C={},A=Array.isArray;function F(n){return"string"==typeof n}function H(n){return"object"==typeof n&&null!==n}function P(n){var t;if(A(n))t=n.map(P);else if(H(n))for(var e in t={},n)t[e]=P(n[e]);else t=n;return t}function N(n){for(var t=arguments,e=1;t.length>e;e++){var r=t[e];for(var i in r)H(n[i])?N(n[i],P(r[i])):n[i]=P(r[i])}return n}var I="undefined"==typeof queueMicrotask?function(n){return Promise.resolve().then(n)}:queueMicrotask,V="width",L="height",O="top",j="bottom",B="left",R="right",U="#000",G="#0000",J="mousemove",q="mousedown",Z="mouseup",X="mouseenter",K="mouseleave",Q="dblclick",$="resize",nn="scroll",tn="u-off",en="u-label",rn=requestAnimationFrame,on=document,ln=window,an=devicePixelRatio;function un(n,t){null!=t&&n.classList.add(t)}function sn(n,t){n.classList.remove(t)}function fn(n,t,e){n.style[t]=e+"px"}function cn(n,t,e,r){var i=on.createElement(n);return null!=t&&un(i,t),null!=e&&e.insertBefore(i,r),i}function vn(n,t){return cn("div",n,t)}function hn(n,t,e,r,i){n.style.transform="translate("+t+"px,"+e+"px)",0>t||0>e||t>r||e>i?un(n,tn):sn(n,tn)}var mn={passive:!0};function dn(n,t,e){t.addEventListener(n,e,mn)}function pn(n,t,e){t.removeEventListener(n,e,mn)}var gn=["January","February","March","April","May","June","July","August","September","October","November","December"],wn=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function xn(n){return n.slice(0,3)}var _n=wn.map(xn),bn=gn.map(xn),yn={MMMM:gn,MMM:bn,WWWW:wn,WWW:_n};function Mn(n){return(10>n?"0":"")+n}var kn={YYYY:function(n){return n.getFullYear()},YY:function(n){return(n.getFullYear()+"").slice(2)},MMMM:function(n,t){return t.MMMM[n.getMonth()]},MMM:function(n,t){return t.MMM[n.getMonth()]},MM:function(n){return Mn(n.getMonth()+1)},M:function(n){return n.getMonth()+1},DD:function(n){return Mn(n.getDate())},D:function(n){return n.getDate()},WWWW:function(n,t){return t.WWWW[n.getDay()]},WWW:function(n,t){return t.WWW[n.getDay()]},HH:function(n){return Mn(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 Mn(n.getMinutes())},m:function(n){return n.getMinutes()},ss:function(n){return Mn(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 Sn(n,t){t=t||yn;for(var e,r=[],i=/\{([a-z]+)\}|[^{]+/gi;e=i.exec(n);)r.push("{"==e[0][0]?kn[e[1]]:e[0]);return function(n){for(var e="",i=0;r.length>i;i++)e+="string"==typeof r[i]?r[i]:r[i](n,t);return e}}var Tn=(new Intl.DateTimeFormat).resolvedOptions().timeZone,zn=function(n){return n%1==0},Dn=[1,2,2.5,5],En=Dn.filter(zn),Wn=Y(10,-16,0,Dn),Yn=Y(10,0,16,Dn),Cn=Yn.filter(zn),An=Wn.concat(Yn),Fn=3600,Hn=24*Fn,Pn=30*Hn,Nn=365*Hn,In=Y(10,-3,0,En).concat([1,5,10,15,30,60,300,600,900,1800,Fn,2*Fn,3*Fn,4*Fn,6*Fn,8*Fn,12*Fn,Hn,2*Hn,3*Hn,4*Hn,5*Hn,6*Hn,7*Hn,8*Hn,9*Hn,10*Hn,15*Hn,Pn,2*Pn,3*Pn,4*Pn,6*Pn,Nn,2*Nn,5*Nn,10*Nn,25*Nn,50*Nn,100*Nn]);function Vn(n,t){return n.map((function(n){return n.map((function(e,r){return 0==r||8==r||null==e?e:t(1==r||0==n[8]?e:n[1]+e)}))}))}Y(2,-53,53,[1]);var Ln="{YYYY}",On="\n"+Ln,jn="{M}/{D}",Bn="\n"+jn,Rn=Bn+"/{YY}",Un="{aa}",Gn="{h}:{mm}"+Un,Jn="\n"+Gn,qn=":{ss}",Zn=null,Xn=[[Nn,Ln,Zn,Zn,Zn,Zn,Zn,Zn,1],[28*Hn,"{MMM}",On,Zn,Zn,Zn,Zn,Zn,1],[Hn,jn,On,Zn,Zn,Zn,Zn,Zn,1],[Fn,"{h}"+Un,Rn,Zn,Bn,Zn,Zn,Zn,1],[60,Gn,Rn,Zn,Bn,Zn,Zn,Zn,1],[1,qn,Rn+" "+Gn,Zn,Bn+" "+Gn,Zn,Jn,Zn,1],[.001,qn+".{fff}",Rn+" "+Gn,Zn,Bn+" "+Gn,Zn,Jn,Zn,1]];function Kn(n,t){return function(e,r,i,o,l){var a,u,s,f,c,v,h=t.find((function(n){return l>=n[0]}))||t[t.length-1];return r.map((function(t){var e=n(t),r=e.getFullYear(),i=e.getMonth(),o=e.getDate(),l=e.getHours(),m=e.getMinutes(),d=e.getSeconds(),p=r!=a&&h[2]||i!=u&&h[3]||o!=s&&h[4]||l!=f&&h[5]||m!=c&&h[6]||d!=v&&h[7]||h[1];return a=r,u=i,s=o,f=l,c=m,v=d,p(e)}))}}function Qn(n,t,e){return new Date(n,t,e)}function $n(n,t){return t(n)}function nt(n,t){return function(e,r){return t(n(r))}}var tt=[0,0];function et(n,t,e){return function(n){0==n.button&&e(n)}}function rt(n,t,e){return e}var it={show:!0,x:!0,y:!0,lock:!1,move:function(n,t,e){return tt[0]=t,tt[1]=e,tt},points:{show:function(n,t){var e=n.series[t],r=vn();r.style.background=e.stroke||U;var i=bt(e.width,1),o=(i-1)/-2;return fn(r,V,i),fn(r,L,i),fn(r,"marginLeft",o),fn(r,"marginTop",o),r}},bind:{mousedown:et,mouseup:et,click:et,dblclick:et,mousemove:rt,mouseleave:rt,mouseenter:rt},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,_x:!1,_y:!1},focus:{prox:-1},left:-10,top:-10,idx:null,dataIdx:function(n,t,e){return e}},ot={show:!0,stroke:"rgba(0,0,0,0.07)",width:2,filter:S},lt=N({},ot,{size:10}),at='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',ut="bold "+at,st={show:!0,scale:"x",space:50,gap:5,size:50,labelSize:30,labelFont:ut,side:2,grid:ot,ticks:lt,font:at,rotate:0},ft={show:!0,scale:"x",auto:!1,sorted:1,min:b,max:-b,idxs:[]};function ct(n,t){return t.map((function(n){return null==n?"":s(n)}))}function vt(n,t,e,r,i,o,l){for(var a=[],u=E.get(i)||0,s=e=l?e:D(T(e,i),u);r>=s;s=D(s+i,u))a.push(Object.is(s,-0)?0:s);return a}function ht(n,t,e,r,i){var o=[],l=n.scales[n.axes[t].scale].log,a=v((10==l?w:x)(e));i=g(l,a),0>a&&(i=D(i,-a));var u=e;do{o.push(u),i*l>(u=D(u+i,E.get(i)))||(i=u)}while(r>=u);return o}var mt=/./,dt=/[12357]/,pt=/[125]/,gt=/1/;function wt(n,t,e){var r=n.axes[e],i=r.scale;if(2==n.scales[i].log)return t;var o=n.valToPos,l=r._space,a=o(10,i),u=o(9,i)-a<l?o(7,i)-a<l?o(5,i)-a<l?gt:pt:dt:mt;return t.map((function(n){return u.test(n)?n:null}))}function xt(n,t){return null==t?"":s(t)}var _t={show:!0,scale:"y",space:30,gap:5,size:50,labelSize:30,labelFont:ut,side:3,grid:ot,ticks:lt,font:at,rotate:0};function bt(n,t){return D((3+2*(n||1))*t,3)}function yt(n,t){var e=n.scales[n.series[t].scale];return 3==e.distr?e.min:0}var Mt={scale:"y",auto:!0,sorted:0,show:!0,band:!1,spanGaps:!1,isGap:function(){return!0},alpha:1,points:{show:function(n,t){var e=n.series[t],r=(bt(e.width,an),n.series[0].idxs);return n.bbox.width/(e.points.space*an)>=r[1]-r[0]}},values:null,min:b,max:-b,idxs:[],path:null,clip:null},kt={time:!0,auto:!0,distr:1,log:10,min:null,max:null},St=N({},kt,{time:!1}),Tt={};function zt(){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,i,o,l,a){n.length>1&&n.forEach((function(n){n!=e&&n.pub(t,e,r,i,o,l,a)}))}}}function Dt(n,t,e,r){return(r?[n[0],n[1]].concat(n.slice(2)):[n[0]].concat(n.slice(1))).map((function(n,r){return Et(n,r,t,e)}))}function Et(n,t,e,r){return N({},0==t||n&&n.side%2==0?e:r,n)}function Wt(n,t){return 3==t.distr?w(n/t.min)/w(t.max/t.min):(n-t.min)/(t.max-t.min)}function Yt(n,t,e,r){return r+(1-Wt(n,t))*e}function Ct(n,t,e,r){return r+Wt(n,t)*e}var At=[null,null];function Ft(n,t,e){return null==t?At:[t,e]}var Ht=Ft;function Pt(n,t,e){return null==t?At:l(t,e,.1,!0)}function Nt(n,t,e,i){return null==t?At:r(t,e,n.scales[i].log,!1)}var It=Nt;function Vt(n){var t;return[n=n.replace(/(\d+)px/,(function(n,e){return(t=h(e*an))+"px"})),t]}function Lt(t,e,i){var o={},a=!1;o.status=0;var u=o.root=vn("uplot");null!=t.id&&(u.id=t.id),un(u,t.class),t.title&&(vn("u-title",u).textContent=t.title);var s=cn("canvas"),f=o.ctx=s.getContext("2d"),m=vn("u-wrap",u),x=vn("u-under",m);m.appendChild(s);var z=vn("u-over",m);((t=P(t)).plugins||[]).forEach((function(n){n.opts&&(t=n.opts(o,t)||t)}));var W=o.series=Dt(t.series||[],ft,Mt,!1),Y=o.axes=Dt(t.axes||[],st,_t,!0),mn=o.scales={},gn=W[0].scale;function wn(n){var e=mn[n];if(null==e){var r=(t.scales||C)[n]||C;if(null!=r.from)wn(r.from),mn[n]=N({},mn[r.from],r);else{var i=(e=mn[n]=N({},n==gn?kt:St,r)).time,o=3==e.distr,a=e.range;if(n!=gn&&!A(a)&&H(a)){var u=a;a=function(n,t,e){return null==t?At:l(t,e,u)}}e.range=k(a||(i?Ht:n==gn?o?It:Ft:o?Nt:Pt)),e.auto=k(e.auto)}}}for(var xn in wn("x"),wn("y"),W.forEach((function(n){wn(n.scale)})),t.scales)wn(xn);var _n=mn[gn].distr,bn={};for(var yn in mn){var Mn=mn[yn];null==Mn.min&&null==Mn.max||(bn[yn]={min:Mn.min,max:Mn.max})}var kn=o.gutters=N({x:h(_t.size/2),y:h(st.size/3),_x:null,_y:null},t.gutters);kn.x=k(kn.x),kn.y=k(kn.y),kn._x=kn.x(o),kn._y=kn.y(o);var Tn,zn,Dn=t.tzDate||function(n){return new Date(1e3*n)},En=t.fmtDate||Sn,Wn=function(n){return function(t,e,r,i,o,l){var a=[],u=o>=Nn,s=o>=Pn&&Nn>o,f=n(r),c=f/1e3,h=Qn(f.getFullYear(),u?0:f.getMonth(),s||u?1:f.getDate()),m=h/1e3;if(s||u)for(var d=s?o/Pn:0,p=u?o/Nn:0,g=c==m?c:Qn(h.getFullYear()+p,h.getMonth()+d,1)/1e3,w=new Date(1e3*g),x=w.getFullYear(),_=w.getMonth(),b=0;i>=g;b++){var y=Qn(x+p*b,_+d*b,1);(g=(+y+(y-n(y/1e3)))/1e3)>i||a.push(g)}else{var M=Hn>o?o:Hn,k=m+(v(r)-v(c))+T(c-m,M);a.push(k);for(var S=n(k),z=S.getHours()+S.getMinutes()/60+S.getSeconds()/Fn,E=o/Fn,W=l/t.axes[e]._space;(k=D(k+o,3))<=i;)if(E>1){var Y=v(D(z+E,6))%24,C=n(k).getHours()-Y;C>1&&(C=-1),z=(z+E)%24,.7>D(((k-=C*Fn)-a[a.length-1])/o,3)*W||a.push(k)}else a.push(k)}return a}}(Dn),Yn=Kn(Dn,Vn(Xn,En)),Ln=nt(Dn,$n("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",En)),On=N({show:!0,live:!0},t.legend),jn=On.show,Bn=[],Rn=!1;if(jn){Tn=cn("table","u-legend",u);var Un=W[1]?W[1].values:null;if(Rn=null!=Un){var Gn=cn("tr","u-thead",Tn);for(var Jn in cn("th",null,Gn),zn=Un(o,1,0))cn("th",en,Gn).textContent=Jn}else zn={_:0},un(Tn,"u-inline"),On.live&&un(Tn,"u-live")}var qn=new Map;function Zn(n,t,e){var r=qn.get(t)||{},i=Ut.bind[n](o,t,e);i&&(dn(n,t,r[n]=i),qn.set(t,r))}var tt=0,et=0,rt=0,ot=0,lt=0,at=0,ut=0,mt=0,dt=0,pt=0;o.bbox={};var gt=!1,Wt=!1,Lt=!1,Ot=!1,jt=!1;function Bt(n,t){n==o.width&&t==o.height||Rt(n,t),ve(!1),Lt=!0,Wt=!0,Ot=!0,jt=!0,ke()}function Rt(n,t){o.width=tt=rt=n,o.height=et=ot=t,lt=at=0,function(){var n=!1,t=!1,e=!1,r=!1;Y.forEach((function(i){if(i.show&&i._show){var o=i.side,l=o%2,a=i._size+(i.labelSize=null!=i.label?i.labelSize||30:0);a>0&&(l?(rt-=a,3==o?(lt+=a,r=!0):e=!0):(ot-=a,0==o?(at+=a,n=!0):t=!0))}})),(n||t)&&(e||(rt-=kn._x),r||(rt-=kn._x,lt+=kn._x)),(r||e)&&(t||(ot-=kn._y),n||(ot-=kn._y,at+=kn._y))}(),function(){var n=lt+rt,t=at+ot,e=lt,r=at;function i(i,o){switch(i){case 1:return(n+=o)-o;case 2:return(t+=o)-o;case 3:return(e-=o)+o;case 0:return(r-=o)+o}}Y.forEach((function(n){if(n.show&&n._show){var t=n.side;n._pos=i(t,n._size),null!=n.label&&(n._lpos=i(t,n.labelSize))}}))}();var e=o.bbox;ut=e.left=y(lt*an,.5),mt=e.top=y(at*an,.5),dt=e.width=y(rt*an,.5),pt=e.height=y(ot*an,.5)}o.setSize=function(n){Bt(n.width,n.height)};var Ut=o.cursor=N({},it,t.cursor);Ut._lock=!1,Ut.points.show=k(Ut.points.show);var Gt,Jt=o.focus=N({},t.focus||{alpha:.3},Ut.focus),qt=Jt.prox>=0,Zt=[null];function Xt(n,t){var e=mn[n.scale].time,r=n.value;if(n.value=e?F(r)?nt(Dn,$n(r,En)):r||Ln:r||xt,n.label=n.label||(e?"Time":"Value"),t>0){n.width=null==n.width?1:n.width,n.paths=n.paths||ue,n.fillTo=n.fillTo||yt;var i=bt(n.width,1);n.points=N({},{size:i,width:p(1,.2*i),stroke:n.stroke,space:2*i},n.points),n.points.show=k(n.points.show),n._paths=null}if(jn&&Bn.splice(t,0,function(n,t){if(0==t&&(Rn||!On.live))return null;var e=[],r=cn("tr","u-series",Tn,Tn.childNodes[t]);un(r,n.class),n.show||un(r,tn);var i=cn("th",null,r),o=vn("u-marker",i);o.style.borderColor=n.width?n.stroke:t>0&&n.points.width?n.points.stroke:null,o.style.backgroundColor=n.fill||null;var l=vn(en,i);for(var a in l.textContent=n.label,t>0&&(Zn("click",i,(function(){Ut._lock||Ve(W.indexOf(n),{show:!n.show},rr.setSeries)})),qt&&Zn(X,i,(function(){Ut._lock||Ve(W.indexOf(n),{focus:!0},rr.setSeries)}))),zn){var u=cn("td","u-value",r);u.textContent="--",e.push(u)}return e}(n,t)),Ut.show){var l=function(n,t){if(t>0){var e=Ut.points.show(o,t);if(e)return un(e,"u-cursor-pt"),un(e,n.class),hn(e,-10,-10,rt,ot),z.insertBefore(e,Zt[t]),e}}(n,t);l&&Zt.splice(t,0,l)}}o.addSeries=function(n,t){n=Et(n,t=null==t?W.length:t,ft,Mt),W.splice(t,0,n),Xt(W[t],t)},o.delSeries=function(n){W.splice(n,1),jn&&Bn.splice(n,1)[0][0].parentNode.remove(),Zt.length>1&&Zt.splice(n,1)[0].remove()},W.forEach(Xt),Y.forEach((function(n,t){if(n._show=n.show,n.show){var e=mn[n.scale];null==e&&(n.scale=n.side%2?W[1].scale:gn,e=mn[n.scale]);var r=e.time;n.size=k(n.size),n.space=k(n.space),n.rotate=k(n.rotate),n.incrs=k(n.incrs||(2==e.distr?Cn:r?In:An)),n.splits=k(n.splits||(r&&1==e.distr?Wn:3==e.distr?ht:vt));var i=n.values;n.values=r?A(i)?Kn(Dn,Vn(i,En)):F(i)?function(n,t){var e=Sn(t);return function(t,r){return r.map((function(t){return e(n(t))}))}}(Dn,i):i||Yn:i||ct,n.filter=k(n.filter||(3==e.distr?wt:S)),n.font=Vt(n.font),n.labelFont=Vt(n.labelFont),n._size=n.size(o,null,t),n._space=n._rotate=n._incrs=n._found=n._splits=n._values=null}}));var Kt=null,Qt=null,$t=W[0].idxs,ne=null,te=!1;function ee(n,t){if((n=n||[])[0]=n[0]||[],o.data=n,e=n.slice(),Gt=(ne=e[0]).length,2==_n&&(e[0]=ne.map((function(n,t){return t}))),ve(!0),er("setData"),!1!==t){var r=mn[gn];r.auto(o,te)?re():Ie(gn,r.min,r.max),Ot=!0,jt=!0,ke()}}function re(){var n,t,i,o;te=!0,Gt>0?(Kt=$t[0]=0,Qt=$t[1]=Gt-1,i=e[0][Kt],o=e[0][Qt],2==_n?(i=Kt,o=Qt):1==Gt&&(3==_n?(i=(n=r(i,i,mn[gn].log,!1))[0],o=n[1]):mn[gn].time?o=i+86400:(i=(t=l(i,o,.1,!0))[0],o=t[1]))):(Kt=$t[0]=i=null,Qt=$t[1]=o=null),Ie(gn,i,o),te=!1}function ie(n,t,e,r){f.strokeStyle=n||G,f.lineWidth=t,f.lineJoin="round",f.setLineDash(e||[]),f.fillStyle=r||G}o.setData=ee;var oe=1;function le(n,t,e){if(e>t){var r=n[n.length-1];r&&r[0]==t?r[1]=e:n.push([t,e])}}function ae(n,t,e,r){for(var i=1==r?t:e;i>=t&&e>=i;i+=r)if(null!=n[i])return i;return-1}function ue(n,t,r,i){var o,l,a,u,s,f=W[t],c=f.isGap,v=e[0],m=e[t],g=mn[gn],w=mn[f.scale],x=1==oe?{stroke:new Path2D,fill:null,clip:null}:W[t-1]._paths,_=x.stroke,M=D(f.width*an,3),k=b,S=-b,T=[],z=h(Ct(v[1==oe?r:i],g,dt,ut)),E=!1,Y=ae(m,r,i,1),C=ae(m,r,i,-1),A=y(Ct(v[Y],g,dt,ut),.5),F=y(Ct(v[C],g,dt,ut),.5);A>ut&&le(T,ut,A),f.band&&1==oe&&_.lineTo(A-2*M,h(Yt(m[r],w,pt,mt)));for(var H=1==oe?r:i;H>=r&&i>=H;H+=oe){var P=h(Ct(v[H],g,dt,ut));if(P==z)null!=m[H]?(o=h(Yt(m[H],w,pt,mt)),k=d(o,k),S=p(o,S)):!E&&c(n,t,H)&&(E=!0);else{var N=!1;k!=b?(_.lineTo(z,k),_.lineTo(z,S),_.lineTo(z,o),l=z):E&&(N=!0,E=!1),null!=m[H]?(o=h(Yt(m[H],w,pt,mt)),_.lineTo(P,o),k=S=o,P-z>1&&null==m[H-1]&&c(n,t,H-1)&&(N=!0)):(k=b,S=-b,!E&&c(n,t,H)&&(E=!0)),N&&le(T,l,P),z=P}}if(ut+dt>F&&le(T,F,ut+dt),f.band&&(1==oe?(a=F+2*M,u=C,s=e[t+1]):(a=A-2*M,u=Y,s=e[t-1]),_.lineTo(a,h(Yt(m[u],w,pt,mt))),_.lineTo(a,h(Yt(s[u],w,pt,mt)))),1==oe&&(x.clip=function(n,t){var e=null;if(t.length>0&&!W[n].spanGaps){e=new Path2D;for(var r=ut,i=0;t.length>i;i++){var o=t[i];e.rect(r,mt,o[0]-r,mt+pt),r=o[1]}e.rect(r,mt,ut+dt-r,mt+pt)}return e}(t,T),null!=f.fill)){var I=x.fill=new Path2D(_),V=h(Yt(f.fillTo(n,t,f.min,f.max),w,pt,mt));I.lineTo(F,V),I.lineTo(A,V)}return f.band&&(oe*=-1),x}function se(n,t,e,r,i,o,l,a,u){var s=l%2/2;f.translate(s,s),ie(a,l,u),f.beginPath();var c,v,h,m,d=i+(0==r||3==r?-o:o);0==e?(v=i,m=d):(c=i,h=d),n.forEach((function(n,r){null!=t[r]&&(0==e?c=h=n:v=m=n,f.moveTo(c,v),f.lineTo(h,m))})),f.stroke(),f.translate(-s,-s)}function fe(){var n=!0;return Y.forEach((function(t,e){if(t.show){var r=mn[t.scale];if(null!=r.min){t._show||(n=!1,t._show=!0,ve(!1));var i=t.side,l=r.min,a=r.max,u=function(n,t,e,r){var i,l=Y[n];if(r>0){var a=l._space=l.space(o,n,t,e,r),u=l._incrs=l.incrs(o,n,t,e,r,a);i=l._found=function(n,t,e,r,i){for(var o=r/(t-n),l=(""+v(n)).length,a=0;e.length>a;a++){var u=e[a]*o,s=10>e[a]?E.get(e[a]):0;if(u>=i&&17>l+s)return[e[a],u]}return[0,0]}(t,e,u,r,a)}else i=[0,0];return i}(e,l,a,0==i%2?rt:ot),s=u[0],f=u[1];if(0!=f){var c=t._splits=t.splits(o,e,l,a,s,f,2==r.distr),h=2==r.distr?c.map((function(n){return ne[n]})):c,m=2==r.distr?ne[c[1]]-ne[c[0]]:s,d=t._values=t.values(o,t.filter(o,h,e,f,m),e,f,m);t._rotate=2==i?t.rotate(o,d,e,f):0;var p=t._size;t._size=t.size(o,d,e),null!=p&&t._size!=p&&(n=!1)}}else t._show&&(n=!1,t._show=!1,ve(!1))}})),n}function ce(){var n=!0,t=kn._x,e=kn._y;return kn._x=kn.x(o),kn._y=kn.y(o),kn._x==t&&kn._y==e||(n=!1),n}function ve(n){W.forEach((function(t,e){e>0&&(t._paths=null,n&&(t.min=null,t.max=null))}))}o.paths=ue;var he,me,de,pe,ge,we,xe,_e,be,ye,Me=!1;function ke(){Me||(I(Se),Me=!0)}function Se(){gt&&(function(){var t=P(mn);for(var r in t){var i=t[r],l=bn[r];if(null!=l&&null!=l.min)N(i,l),r==gn&&ve(!0);else if(r!=gn)if(0==Gt&&null==i.from){var a=i.range(o,null,null,r);i.min=a[0],i.max=a[1]}else i.min=b,i.max=-b}if(Gt>0)for(var u in W.forEach((function(r,i){var l=r.scale,a=t[l],u=bn[l];if(0==i){var s=a.range(o,a.min,a.max,l);a.min=s[0],a.max=s[1],Kt=n(a.min,e[0]),Qt=n(a.max,e[0]),a.min>e[0][Kt]&&Kt++,e[0][Qt]>a.max&&Qt--,r.min=ne[Kt],r.max=ne[Qt]}else if(r.show&&r.auto&&a.auto(o,te)&&(null==u||null==u.min)){var f=null==r.min?function(n,t,e,r){var i=b,o=-b;if(1==r)i=n[t],o=n[e];else if(-1==r)i=n[e],o=n[t];else for(var l=t;e>=l;l++)null!=n[l]&&(i=d(i,n[l]),o=p(o,n[l]));return[i,o]}(e[i],Kt,Qt,r.sorted):[r.min,r.max];a.min=d(a.min,r.min=f[0]),a.max=p(a.max,r.max=f[1])}r.idxs[0]=Kt,r.idxs[1]=Qt})),t){var s=t[u],f=bn[u];if(null==s.from&&(null==f||null==f.min)){var c=s.range(o,s.min==b?null:s.min,s.max==-b?null:s.max,u);s.min=c[0],s.max=c[1]}}for(var v in t){var h=t[v];if(null!=h.from){var m=t[h.from],g=h.range(o,m.min,m.max,v);h.min=g[0],h.max=g[1]}}var w={},x=!1;for(var _ in t){var y=t[_],M=mn[_];M.min==y.min&&M.max==y.max||(M.min=y.min,M.max=y.max,w[_]=x=!0)}if(x){for(var k in W.forEach((function(n){w[n.scale]&&(n._paths=null)})),w)Lt=!0,er("setScale",k);Ut.show&&(Ot=!0)}for(var S in bn)bn[S]=null}(),gt=!1),Lt&&(function(){for(var n=!1;!n;){var t=fe(),e=ce();(n=t&&e)||(Rt(o.width,o.height),Wt=!0)}}(),Lt=!1),Wt&&(fn(x,B,lt),fn(x,O,at),fn(x,V,rt),fn(x,L,ot),fn(z,B,lt),fn(z,O,at),fn(z,V,rt),fn(z,L,ot),fn(m,V,tt),fn(m,L,et),s.width=h(tt*an),s.height=h(et*an),Ue(),er("setSize"),Wt=!1),Ut.show&&Ot&&(Be(),Ot=!1),f.clearRect(0,0,s.width,s.height),er("drawClear"),function(){Y.forEach((function(n,t){if(n.show&&n._show){var e=mn[n.scale],r=n.side,i=r%2,l=0==i?Ct:Yt,a=0==i?dt:pt,u=0==i?ut:mt,s=h(n.gap*an),c=n.ticks,v=c.show?h(c.size*an):0,m=n._found,d=m[0],p=m[1],g=n._splits,w=2==e.distr?g.map((function(n){return ne[n]})):g,x=2==e.distr?ne[g[1]]-ne[g[0]]:d,b=n._rotate*-_/180,y=h(n._pos*an),M=y+(v+s)*(0==i&&0==r||1==i&&3==r?-1:1),k=0==i?M:0,S=1==i?M:0;f.font=n.font[0],f.fillStyle=n.stroke||U,f.textAlign=1==n.align?B:2==n.align?R:b>0?B:0>b?R:0==i?"center":3==r?R:B,f.textBaseline=b||1==i?"middle":2==r?O:j;var T=1.5*n.font[1],z=g.map((function(n){return h(l(n,e,a,u))}));if(n._values.forEach((function(n,t){null!=n&&(0==i?S=z[t]:k=z[t],(""+n).split(/\n/gm).forEach((function(n,t){b?(f.save(),f.translate(S,k+t*T),f.rotate(b),f.fillText(n,0,0),f.restore()):f.fillText(n,S,k+t*T)})))})),n.label){f.save();var E=h(n._lpos*an);1==i?(S=k=0,f.translate(E,h(mt+pt/2)),f.rotate((3==r?-_:_)/2)):(S=h(ut+dt/2),k=E),f.font=n.labelFont[0],f.textAlign="center",f.textBaseline=2==r?O:j,f.fillText(n.label,S,k),f.restore()}c.show&&se(z,c.filter(o,w,t,p,x),i,r,y,v,D(c.width*an,3),c.stroke);var W=n.grid;W.show&&se(z,W.filter(o,w,t,p,x),i,0==i?2:1,0==i?mt:ut,0==i?pt:dt,D(W.width*an,3),W.stroke,W.dash)}})),er("drawAxes")}(),Gt>0&&function(){W.forEach((function(n,t){if(t>0&&n.show&&null==n._paths){var r=function(n){for(var t=M(Kt-1,0,Gt-1),e=M(Qt+1,0,Gt-1);null==n[t]&&t>0;)t--;for(;null==n[e]&&Gt-1>e;)e++;return[t,e]}(e[t]);n._paths=n.paths(o,t,r[0],r[1])}})),W.forEach((function(n,t){t>0&&n.show&&(n._paths&&function(n){var t=W[n];if(1==oe){var e=t._paths,r=e.stroke,i=e.fill,o=e.clip,l=D(t.width*an,3),a=l%2/2;ie(t.stroke,l,t.dash,t.fill),f.globalAlpha=t.alpha,f.translate(a,a),f.save();var u=ut,s=mt,c=dt,v=pt,h=l*an/2;0==t.min&&(v+=h),0==t.max&&(s-=h,v+=h),f.beginPath(),f.rect(u,s,c,v),f.clip(),null!=o&&f.clip(o),t.band?(f.fill(r),l&&f.stroke(r)):(l&&f.stroke(r),null!=t.fill&&f.fill(i)),f.restore(),f.translate(-a,-a),f.globalAlpha=1}t.band&&(oe*=-1)}(t),n.points.show(o,t,Kt,Qt)&&function(n){var t=W[n],r=t.points,i=D(r.width*an,3),o=i%2/2,l=r.width>0,a=(r.size-r.width)/2*an,u=D(2*a,3);f.translate(o,o),f.save(),f.beginPath(),f.rect(ut-u,mt-u,dt+2*u,pt+2*u),f.clip(),f.globalAlpha=t.alpha;for(var s=new Path2D,c=Kt;Qt>=c;c++)if(null!=e[n][c]){var v=h(Ct(e[0][c],mn[gn],dt,ut)),m=h(Yt(e[n][c],mn[t.scale],pt,mt));s.moveTo(v+a,m),s.arc(v,m,a,0,2*_)}ie(r.stroke,i,null,r.fill||(l?"#fff":t.stroke)),f.fill(s),l&&f.stroke(s),f.globalAlpha=1,f.restore(),f.translate(-o,-o)}(t),er("drawSeries",t))}))}(),er("draw"),a||(a=!0,o.status=1,er("ready")),Me=!1}function Te(t,r){var i=mn[t];if(null==i.from){if(0==Gt){var l=i.range(o,r.min,r.max,t);r.min=l[0],r.max=l[1]}if(Gt>1&&null!=r.min&&null!=r.max&&1e-16>r.max-r.min)return;t==gn&&2==i.distr&&Gt>0&&(r.min=n(r.min,e[0]),r.max=n(r.max,e[0])),bn[t]=r,gt=!0,ke()}}o.redraw=function(n){!1!==n?Ie(gn,mn[gn].min,mn[gn].max):ke()},o.setScale=Te;var ze=!1,De=Ut.drag,Ee=De.x,We=De.y;Ut.show&&(Ut.x&&(be=Ut.left,he=vn("u-cursor-x",z)),Ut.y&&(ye=Ut.top,me=vn("u-cursor-y",z)));var Ye,Ce,Ae,Fe=o.select=N({show:!0,over:!0,left:0,width:0,top:0,height:0},t.select),He=Fe.show?vn("u-select",Fe.over?z:x):null;function Pe(n,t){if(Fe.show){for(var e in n)fn(He,e,Fe[e]=n[e]);!1!==t&&er("setSelect")}}function Ne(n){var t=jn?Bn[n][0].parentNode:null;W[n].show?t&&sn(t,tn):(t&&un(t,tn),Zt.length>1&&hn(Zt[n],-10,-10,rt,ot))}function Ie(n,t,e){Te(n,{min:t,max:e})}function Ve(n,t,e){var r=W[n];if(null!=t.focus&&function(n){n!=Ae&&(W.forEach((function(t,e){!function(n,t){var e=W[n];Le(n,t),e.band&&Le(W[n+1].band?n+1:n-1,t)}(e,null==n||0==e||e==n?1:Jt.alpha)})),Ae=n,ke())}(n),null!=t.show){if(r.show=t.show,Ne(n),r.band){var i=W[n+1]&&W[n+1].band?n+1:n-1;W[i].show=r.show,Ne(i)}Ie(r.scale,null,null),ke()}er("setSeries",n,t),e&&or.pub("setSeries",o,n,t)}function Le(n,t){W[n].alpha=t,Ut.show&&Zt[n]&&(Zt[n].style.opacity=t),jn&&Bn[n]&&(Bn[n][0].parentNode.style.opacity=t)}function Oe(n,t){var e=rt;t!=gn&&(n=(e=ot)-n);var r=n/e,i=mn[t],o=i.min,l=i.max;return 3==i.distr?(o=w(o),l=w(l),g(10,o+(l-o)*r)):o+(l-o)*r}o.setSelect=Pe,o.setSeries=Ve,jn&&qt&&dn(K,Tn,(function(){Ut._lock||(Ve(null,{focus:!1},rr.setSeries),Be())})),o.valToIdx=function(t){return n(t,e[0])},o.posToIdx=function(t){return n(Oe(t,gn),e[0],Kt,Qt)},o.posToVal=Oe,o.valToPos=function(n,t,e){return t==gn?Ct(n,mn[t],e?dt:rt,e?ut:0):Yt(n,mn[t],e?pt:ot,e?mt:0)},o.batch=function(n){n(o),ke()},o.setCursor=function(n){be=n.left,ye=n.top,Be()};var je=0;function Be(t,r){var i,l;if(je=0,xe=be,_e=ye,i=Ut.move(o,be,ye),be=i[0],ye=i[1],Ut.show&&(Ut.x&&hn(he,h(be),0,rt,ot),Ut.y&&hn(me,0,h(ye),rt,ot)),Ye=b,0>be||0==Gt||Kt>Qt){l=null;for(var u=0;W.length>u;u++)if(u>0&&Zt.length>1&&hn(Zt[u],-10,-10,rt,ot),jn&&On.live){if(0==u&&Rn)continue;for(var s=0;Bn[u].length>s;s++)Bn[u][s].firstChild.nodeValue="--"}qt&&Ve(null,{focus:!0},rr.setSeries)}else{var f=Oe(be,gn);l=n(f,e[0],Kt,Qt);for(var v=mn[gn],m=D(Ct(e[0][l],v,rt,0),3),p=0;W.length>p;p++){var g=W[p],w=Ut.dataIdx(o,p,l,f),x=w==l?m:D(Ct(e[0][w],v,rt,0),3);if(p>0&&g.show){var _=e[p][w],y=null==_?-10:D(Yt(_,mn[g.scale],ot,0),3);if(y>0){var M=c(y-ye);M>Ye||(Ye=M,Ce=p)}Zt.length>1&&hn(Zt[p],x,y,rt,ot)}if(jn&&On.live){if(w==Ut.idx&&!jt||0==p&&Rn)continue;var k=0==p&&2==_n?ne:e[p],S=Rn?g.values(o,p,w):{_:g.value(o,k[w],p,w)},T=0;for(var z in S)Bn[p][T++].firstChild.nodeValue=S[z]}}jt=!1}if(Fe.show&&ze)if(null!=r){var E=rr.scales,Y=E[0],C=E[1],A=r.cursor.drag;if(Ee=A._x,We=A._y,Y){var F=mn[Y],H=r.posToVal(r.select.left,Y),P=r.posToVal(r.select.left+r.select.width,Y);Fe.left=Ct(H,F,rt,0),Fe.width=c(Fe.left-Ct(P,F,rt,0)),fn(He,B,Fe.left),fn(He,V,Fe.width),C||(fn(He,O,Fe.top=0),fn(He,L,Fe.height=ot))}if(C){var N=mn[C],I=r.posToVal(r.select.top,C),j=r.posToVal(r.select.top+r.select.height,C);Fe.top=Yt(I,N,ot,0),Fe.height=c(Fe.top-Yt(j,N,ot,0)),fn(He,O,Fe.top),fn(He,L,Fe.height),Y||(fn(He,B,Fe.left=0),fn(He,V,Fe.width=rt))}}else{var R=c(xe-de),U=c(_e-pe);Ee=De.x&&R>=De.dist,We=De.y&&U>=De.dist;var G=De.uni;if(null!=G?Ee&&We&&(We=U>=G,(Ee=R>=G)||We||(U>R?We=!0:Ee=!0)):De.x&&De.y&&(Ee||We)&&(Ee=We=!0),Ee){var q=d(ge,be),Z=c(be-ge);fn(He,B,Fe.left=q),fn(He,V,Fe.width=Z),We||(fn(He,O,Fe.top=0),fn(He,L,Fe.height=ot))}if(We){var X=d(we,ye),K=c(ye-we);fn(He,O,Fe.top=X),fn(He,L,Fe.height=K),Ee||(fn(He,B,Fe.left=0),fn(He,V,Fe.width=rt))}Ee||We||(fn(He,L,Fe.height=0),fn(He,V,Fe.width=0))}Ut.idx=l,Ut.left=be,Ut.top=ye,De._x=Ee,De._y=We,null!=t&&(or.pub(J,o,be,ye,rt,ot,l),qt&&Ve(Ye>Jt.prox?null:Ce,{focus:!0},rr.setSeries)),a&&er("setCursor")}var Re=null;function Ue(){Re=z.getBoundingClientRect()}function Ge(n,t,e,r,i,o){Ut._lock||(Je(n,t,e,r,i,o,0,!1,null!=n),null!=n?0==je&&(je=rn(Be)):Be(null,t))}function Je(n,t,e,r,i,l,a,u,s){var f;if(null!=n)e=n.clientX-Re.left,r=n.clientY-Re.top;else{if(0>e||0>r)return be=-10,void(ye=-10);var c=rr.scales,v=c[0],h=c[1];e=null!=v?Ct(t.posToVal(e,v),mn[v],rt,0):rt*(e/i),r=null!=h?Yt(t.posToVal(r,h),mn[h],ot,0):ot*(r/l)}s&&(e>1&&rt-1>e||(e=y(e,rt)),r>1&&ot-1>r||(r=y(r,ot))),u?(de=e,pe=r,f=Ut.move(o,e,r),ge=f[0],we=f[1]):(be=e,ye=r)}function qe(){Pe({width:0,height:0},!1)}function Ze(n,t,e,r,i,l){ze=!0,Ee=We=De._x=De._y=!1,Je(n,t,e,r,i,l,0,!0,!1),null!=n&&(Zn(Z,on,Xe),or.pub(q,o,ge,we,rt,ot,null))}function Xe(n,t,e,r,i,l){ze=De._x=De._y=!1,Je(n,t,e,r,i,l,0,!1,!0);var a=Fe.width>0||Fe.height>0;if(a&&Pe(Fe),De.setScale&&a){if(Ee&&Ie(gn,Oe(Fe.left,gn),Oe(Fe.left+Fe.width,gn)),We)for(var u in mn){var s=mn[u];u!=gn&&null==s.from&&s.min!=b&&Ie(u,Oe(Fe.top+Fe.height,u),Oe(Fe.top,u))}qe()}else Ut.lock&&(Ut._lock=!Ut._lock,Ut._lock||Be());null!=n&&(function(n,t){var e=qn.get(t)||{};pn(n,t,e[n]),e[n]=null}(Z,on),or.pub(Z,o,be,ye,rt,ot,null))}function Ke(){if(!Ut._lock){var n=ze;if(ze){var t=!0,e=!0;if(Ee&&We&&(t=10>=be||be>=rt-10,e=10>=ye||ye>=ot-10),Ee&&t){var r=be,i=rt-be,o=d(r,i);o==r&&(be=0),o==i&&(be=rt)}if(We&&e){var l=ye,a=ot-ye,u=d(l,a);u==l&&(ye=0),u==a&&(ye=ot)}Be(1),ze=!1}be=-10,ye=-10,Be(1),n&&(ze=n)}}function Qe(n){re(),qe(),null!=n&&or.pub(Q,o,be,ye,rt,ot,null)}var $e,nr={};nr.mousedown=Ze,nr.mousemove=Ge,nr.mouseup=Xe,nr.dblclick=Qe,nr.setSeries=function(n,t,e,r){Ve(e,r)},Ut.show&&(Zn(q,z,Ze),Zn(J,z,Ge),Zn(X,z,Ue),Zn(K,z,(function(){rn(Ke)})),Zn(Q,z,Qe),$e=function(n){var t=null;function e(){t=null,n()}return function(){clearTimeout(t),t=setTimeout(e,100)}}(Ue),dn($,ln,$e),dn(nn,ln,$e),o.syncRect=Ue);var tr=o.hooks=t.hooks||{};function er(n,t,e){n in tr&&tr[n].forEach((function(n){n.call(null,o,t,e)}))}(t.plugins||[]).forEach((function(n){for(var t in n.hooks)tr[t]=(tr[t]||[]).concat(n.hooks[t])}));var rr=N({key:null,setSeries:!1,scales:[gn,null]},Ut.sync),ir=rr.key,or=null!=ir?Tt[ir]=Tt[ir]||zt():zt();function lr(){er("init",t,e),ee(e||t.data,!1),bn[gn]?Te(gn,bn[gn]):re(),Bt(t.width,t.height),Pe(Fe,!1)}return or.sub(o),o.pub=function(n,t,e,r,i,o,l){nr[n](null,t,e,r,i,o,l)},o.destroy=function(){or.unsub(o),pn($,ln,$e),pn(nn,ln,$e),u.remove(),er("destroy")},i?i instanceof HTMLElement?(i.appendChild(u),lr()):i(o,lr):lr(),o}return Lt.assign=N,Lt.fmtNum=s,Lt.rangeNum=l,Lt.rangeLog=r,Lt.fmtDate=Sn,Lt.tzDate=function(n,t){var e;return"Etc/UTC"==t?e=new Date(+n+6e4*n.getTimezoneOffset()):t==Tn?e=n:(e=new Date(n.toLocaleString("en-US",{timeZone:t}))).setMilliseconds(n.getMilliseconds()),e},Lt}();
{
"name": "uplot",
"version": "1.3.0",
"version": "1.4.0",
"description": "A small, fast chart for time series, lines, areas, ohlc & bars",

@@ -42,7 +42,7 @@ "main": "./dist/uPlot.cjs.js",

"devDependencies": {
"rollup": "^2.33.1",
"@rollup/plugin-buble": "^0.21.3",
"@rollup/plugin-replace": "^2.3.4",
"rollup": "^2.33.3",
"rollup-plugin-terser": "^7.0.2"
}
}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

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