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.6.4 to 1.6.5

1083

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

@@ -25,29 +25,29 @@ );

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

@@ -65,3 +65,3 @@

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

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

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

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

/** uPlot's path-builder factories */
static paths: Series.PathBuilderFactories;
static paths: uPlot.Series.PathBuilderFactories;

@@ -114,7 +114,10 @@ /** 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) => Range.MinMax) | ((min: number, max: number, cfg: Range.Config) => Range.MinMax);
static rangeNum: ((min: number, max: number, mult: number, extra: boolean) => uPlot.Range.MinMax) | ((min: number, max: number, cfg: uPlot.Range.Config) => uPlot.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, base: Scale.LogBase, fullMags: boolean): Range.MinMax;
static rangeLog(min: number, max: number, base: uPlot.Scale.LogBase, fullMags: boolean): uPlot.Range.MinMax;
/** re-ranges a given min/max outwards to nearest 10% of given min/max's magnitudes, unless fullMags = true */
static rangeAsinh(min: number, max: number, base: uPlot.Scale.LogBase, fullMags: boolean): uPlot.Range.MinMax;
/** default numeric formatter using browser's locale: new Intl.NumberFormat(navigator.language).format */

@@ -124,3 +127,3 @@ static fmtNum(val: number): string;

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

@@ -131,732 +134,750 @@ /** converts a Date into new Date that's time-adjusted for the given IANA Time Zone Name */

/** outerJoins multiple data tables on table[0] values */
static join(tables: AlignedData[], nullModes?: JoinNullMode[][]): AlignedData;
static join(tables: uPlot.AlignedData[], nullModes?: uPlot.JoinNullMode[][]): uPlot.AlignedData;
static addGap: Series.AddGap;
static addGap: uPlot.Series.AddGap;
static clipGaps: Series.ClipPathBuilder;
static clipGaps: uPlot.Series.ClipPathBuilder;
/** helper function for grabbing proper drawing orientation vars and fns for a plot instance (all dims in canvas pixels) */
static orient: (u: uPlot, seriesIdx: number, callback: OrientCallback) => any;
static orient: (u: uPlot, seriesIdx: number, callback: uPlot.OrientCallback) => any;
/** returns a pub/sub instance shared by all plots usng the provided key */
static sync: (key: string) => uPlot.SyncPubSub;
}
type OrientCallback = (
series: Series,
dataX: number[],
dataY: (number | null)[],
scaleX: Scale,
scaleY: Scale,
valToPosX: ValToPos,
valToPosY: ValToPos,
xOff: number,
yOff: number,
xDim: number,
yDim: number,
moveTo: MoveToH | MoveToV,
lineTo: LineToH | LineToV,
rect: RectH | RectV,
arc: ArcH | ArcV,
bezierCurveTo: BezierCurveToH | BezierCurveToV,
) => any;
export = uPlot;
type ValToPos = (val: number, scale: Scale, fullDim: number, offset: number) => number;
declare namespace uPlot {
type OrientCallback = (
series: Series,
dataX: number[],
dataY: (number | null)[],
scaleX: Scale,
scaleY: Scale,
valToPosX: ValToPos,
valToPosY: ValToPos,
xOff: number,
yOff: number,
xDim: number,
yDim: number,
moveTo: MoveToH | MoveToV,
lineTo: LineToH | LineToV,
rect: RectH | RectV,
arc: ArcH | ArcV,
bezierCurveTo: BezierCurveToH | BezierCurveToV,
) => any;
type MoveToH = (p: Path2D, x: number, y: number) => void;
type MoveToV = (p: Path2D, y: number, x: number) => void;
type LineToH = (p: Path2D, x: number, y: number) => void;
type LineToV = (p: Path2D, y: number, x: number) => void;
type RectH = (p: Path2D, x: number, y: number, w: number, h: number) => void;
type RectV = (p: Path2D, y: number, x: number, h: number, w: number) => void;
type ArcH = (p: Path2D, x: number, y: number, r: number, startAngle: number, endAngle: number) => void;
type ArcV = (p: Path2D, y: number, x: number, r: number, startAngle: number, endAngle: number) => void;
type BezierCurveToH = (p: Path2D, bp1x: number, bp1y: number, bp2x: number, bp2y: number, p2x: number, p2y: number) => void;
type BezierCurveToV = (p: Path2D, bp1y: number, bp1x: number, bp2y: number, bp2x: number, p2y: number, p2x: number) => void;
type ValToPos = (val: number, scale: Scale, fullDim: number, offset: number) => number;
export const enum JoinNullMode {
/** use for series with spanGaps: true */
Remove = 0,
/** retain explicit nulls gaps (default) */
Retain = 1,
/** expand explicit null gaps to include adjacent alignment artifacts (undefined values) */
Expand = 2,
}
type MoveToH = (p: Path2D, x: number, y: number) => void;
type MoveToV = (p: Path2D, y: number, x: number) => void;
type LineToH = (p: Path2D, x: number, y: number) => void;
type LineToV = (p: Path2D, y: number, x: number) => void;
type RectH = (p: Path2D, x: number, y: number, w: number, h: number) => void;
type RectV = (p: Path2D, y: number, x: number, h: number, w: number) => void;
type ArcH = (p: Path2D, x: number, y: number, r: number, startAngle: number, endAngle: number) => void;
type ArcV = (p: Path2D, y: number, x: number, r: number, startAngle: number, endAngle: number) => void;
type BezierCurveToH = (p: Path2D, bp1x: number, bp1y: number, bp2x: number, bp2y: number, p2x: number, p2y: number) => void;
type BezierCurveToV = (p: Path2D, bp1y: number, bp1x: number, bp2y: number, bp2x: number, p2y: number, p2x: number) => void;
export const enum Orientation {
Horizontal = 0,
Vertical = 1,
}
export const enum JoinNullMode {
/** use for series with spanGaps: true */
Remove = 0,
/** retain explicit nulls gaps (default) */
Retain = 1,
/** expand explicit null gaps to include adjacent alignment artifacts (undefined values) */
Expand = 2,
}
export type AlignedData = [
xValues: number[],
...yValues: (number | null)[][],
]
export const enum Orientation {
Horizontal = 0,
Vertical = 1,
}
export interface DateNames {
/** long month names */
MMMM: string[];
export type AlignedData = [
xValues: number[],
...yValues: (number | null)[][],
]
/** short month names */
MMM: string[];
export interface DateNames {
/** long month names */
MMMM: string[];
/** long weekday names (0: Sunday) */
WWWW: string[];
/** short month names */
MMM: string[];
/** short weekday names (0: Sun) */
WWW: string[];
}
/** long weekday names (0: Sunday) */
WWWW: string[];
export namespace Range {
export type MinMax = [min: number, max: number];
/** short weekday names (0: Sun) */
WWW: string[];
}
export type Function = (self: uPlot, initMin: number, initMax: number, scaleKey: string) => MinMax;
export namespace Range {
export type MinMax = [min: number, max: number];
export type SoftMode = 0 | 1 | 2 | 3;
export type Function = (self: uPlot, initMin: number, initMax: number, scaleKey: string) => MinMax;
export interface Limit {
/** initial multiplier for dataMax-dataMin delta */
pad?: number; // 0.1
export type SoftMode = 0 | 1 | 2 | 3;
/** soft limit */
soft?: number; // 0
export interface Limit {
/** initial multiplier for dataMax-dataMin delta */
pad?: number; // 0.1
/** soft limit active if... 0: never, 1: data <= limit, 2: data + padding <= limit, 3: data <= limit <= data + padding */
mode?: SoftMode; // 3
/** soft limit */
soft?: number; // 0
/** hard limit */
hard?: number;
/** soft limit active if... 0: never, 1: data <= limit, 2: data + padding <= limit, 3: data <= limit <= data + padding */
mode?: SoftMode; // 3
/** hard limit */
hard?: number;
}
export interface Config {
min: Range.Limit;
max: Range.Limit;
}
}
export interface Config {
min: Range.Limit;
max: Range.Limit;
export interface Scales {
[key: string]: Scale;
}
}
export interface Scales {
[key: string]: Scale;
}
type SidesWithAxes = [top: boolean, right: boolean, bottom: boolean, left: boolean];
type SidesWithAxes = [top: boolean, right: boolean, bottom: boolean, left: boolean];
export type PaddingSide = number | null | ((self: uPlot, side: Axis.Side, sidesWithAxes: SidesWithAxes, cycleNum: number) => number);
export type PaddingSide = number | null | ((self: uPlot, side: Axis.Side, sidesWithAxes: SidesWithAxes, cycleNum: number) => number);
export type Padding = [top: PaddingSide, right: PaddingSide, bottom: PaddingSide, left: PaddingSide];
export type Padding = [top: PaddingSide, right: PaddingSide, bottom: PaddingSide, left: PaddingSide];
export interface Legend {
show?: boolean; // true
/** show series values at current cursor.idx */
live?: boolean; // true
/** series indicator line width */
width?: Legend.Width;
/** series indicator stroke (CSS borderColor) */
stroke?: Legend.Stroke;
/** series indicator stroke style (CSS borderStyle) */
dash?: Legend.Dash;
/** series indicator fill */
fill?: Legend.Fill;
}
export interface Legend {
show?: boolean; // true
/** show series values at current cursor.idx */
live?: boolean; // true
/** series indicator line width */
width?: Legend.Width;
/** series indicator stroke (CSS borderColor) */
stroke?: Legend.Stroke;
/** series indicator stroke style (CSS borderStyle) */
dash?: Legend.Dash;
/** series indicator fill */
fill?: Legend.Fill;
}
export namespace Legend {
export type Width = number | ((self: uPlot, seriesIdx: number) => number);
export namespace Legend {
export type Width = number | ((self: uPlot, seriesIdx: number) => number);
export type Stroke = CSSStyleDeclaration['borderColor'] | ((self: uPlot, seriesIdx: number) => CSSStyleDeclaration['borderColor']);
export type Stroke = CSSStyleDeclaration['borderColor'] | ((self: uPlot, seriesIdx: number) => CSSStyleDeclaration['borderColor']);
export type Dash = CSSStyleDeclaration['borderStyle'] | ((self: uPlot, seriesIdx: number) => CSSStyleDeclaration['borderStyle']);
export type Dash = CSSStyleDeclaration['borderStyle'] | ((self: uPlot, seriesIdx: number) => CSSStyleDeclaration['borderStyle']);
export type Fill = CSSStyleDeclaration['background'] | ((self: uPlot, seriesIdx: number) => CSSStyleDeclaration['background']);
}
export type Fill = CSSStyleDeclaration['background'] | ((self: uPlot, seriesIdx: number) => CSSStyleDeclaration['background']);
}
export type DateFormatterFactory = (tpl: string) => (date: Date) => string;
export type DateFormatterFactory = (tpl: string) => (date: Date) => string;
export type LocalDateFromUnix = (ts: number) => Date;
export type LocalDateFromUnix = (ts: number) => Date;
export const enum DrawOrderKey {
Axes = 'axes',
Series = 'series',
}
export const enum DrawOrderKey {
Axes = 'axes',
Series = 'series',
}
export interface Options {
/** chart title */
title?: string;
export interface Options {
/** chart title */
title?: string;
/** id to set on chart div */
id?: string;
/** id to set on chart div */
id?: string;
/** className to add to chart div */
class?: string;
/** className to add to chart div */
class?: string;
/** width of plotting area + axes in CSS pixels */
width: number;
/** width of plotting area + axes in CSS pixels */
width: number;
/** height of plotting area + axes in CSS pixels (excludes title & legend height) */
height: number;
/** height of plotting area + axes in CSS pixels (excludes title & legend height) */
height: number;
/** data for chart, if none is provided as argument to constructor */
data?: AlignedData,
/** data for chart, if none is provided as argument to constructor */
data?: AlignedData,
/** converts a unix timestamp to Date that's time-adjusted for the desired timezone */
tzDate?: LocalDateFromUnix;
/** converts a unix timestamp to Date that's time-adjusted for the desired timezone */
tzDate?: LocalDateFromUnix;
/** creates an efficient formatter for Date objects from a template string, e.g. {YYYY}-{MM}-{DD} */
fmtDate?: DateFormatterFactory;
/** creates an efficient formatter for Date objects from a template string, e.g. {YYYY}-{MM}-{DD} */
fmtDate?: DateFormatterFactory;
/** timestamp multiplier that yields 1 millisecond */
ms?: 1e-3 | 1; // 1e-3
/** timestamp multiplier that yields 1 millisecond */
ms?: 1e-3 | 1; // 1e-3
/** drawing order for axes/grid & series (default: ["axes", "series"]) */
drawOrder?: DrawOrderKey[];
/** drawing order for axes/grid & series (default: ["axes", "series"]) */
drawOrder?: DrawOrderKey[];
/** whether vt & hz lines of series/grid/ticks should be crisp/sharp or sub-px antialiased */
pxAlign?: boolean; // true
/** whether vt & hz lines of series/grid/ticks should be crisp/sharp or sub-px antialiased */
pxAlign?: boolean; // true
series: Series[];
series: Series[];
bands?: Band[],
bands?: Band[],
scales?: Scales;
scales?: Scales;
axes?: Axis[];
axes?: Axis[];
/** padding per side, in CSS pixels (can prevent cross-axis labels at the plotting area limits from being chopped off) */
padding?: Padding;
/** padding per side, in CSS pixels (can prevent cross-axis labels at the plotting area limits from being chopped off) */
padding?: Padding;
select?: Select;
select?: Select;
legend?: Legend;
legend?: Legend;
cursor?: Cursor;
cursor?: Cursor;
focus?: Focus;
focus?: Focus;
hooks?: Hooks.Arrays;
hooks?: Hooks.Arrays;
plugins?: Plugin[];
}
plugins?: Plugin[];
}
export interface Focus {
/** alpha-transparancy of de-focused series */
alpha: number;
}
export interface Focus {
/** alpha-transparancy of de-focused series */
alpha: number;
}
export interface BBox {
show?: boolean;
left: number;
top: number;
width: number;
height: number;
}
export interface BBox {
show?: boolean;
left: number;
top: number;
width: number;
height: number;
}
export interface Select extends BBox {
/** div into which .u-select will be placed: .u-over or .u-under */
over?: boolean; // true
}
export interface Select extends BBox {
/** div into which .u-select will be placed: .u-over or .u-under */
over?: boolean; // true
}
export interface SyncPubSub {
key: string;
sub: (client: uPlot) => void;
unsub: (client: uPlot) => void;
pub: (type: string, client: uPlot, x: number, y: number, w: number, h: number, i: number) => void;
}
export namespace Cursor {
export type LeftTop = [left: number, top: number];
export namespace Cursor {
export type LeftTop = [left: number, top: number];
export type MouseListener = (e: MouseEvent) => null;
export type MouseListener = (e: MouseEvent) => null;
export type MouseListenerFactory = (self: uPlot, targ: HTMLElement, handler: MouseListener) => MouseListener | 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 DataIdxRefiner = (self: uPlot, seriesIdx: number, closestIdx: number, xValue: number) => number;
export type MousePosRefiner = (self: uPlot, mouseLeft: number, mouseTop: number) => LeftTop;
export type MousePosRefiner = (self: uPlot, mouseLeft: number, mouseTop: number) => LeftTop;
export interface Bind {
mousedown?: MouseListenerFactory,
mouseup?: MouseListenerFactory,
click?: MouseListenerFactory,
dblclick?: MouseListenerFactory,
export interface Bind {
mousedown?: MouseListenerFactory,
mouseup?: MouseListenerFactory,
click?: MouseListenerFactory,
dblclick?: MouseListenerFactory,
mousemove?: MouseListenerFactory,
mouseleave?: MouseListenerFactory,
mouseenter?: MouseListenerFactory,
}
mousemove?: MouseListenerFactory,
mouseleave?: MouseListenerFactory,
mouseenter?: MouseListenerFactory,
}
export namespace Points {
export type Show = boolean | ((self: uPlot, seriesIdx: number) => HTMLElement);
export type Size = number | ((self: uPlot, seriesIdx: number) => number);
export type Width = number | ((self: uPlot, seriesIdx: number, size: number) => number);
export type Stroke = CanvasRenderingContext2D['strokeStyle'] | ((self: uPlot, seriesIdx: number) => CanvasRenderingContext2D['strokeStyle']);
export type Fill = CanvasRenderingContext2D['fillStyle'] | ((self: uPlot, seriesIdx: number) => CanvasRenderingContext2D['fillStyle']);
}
export namespace Points {
export type Show = boolean | ((self: uPlot, seriesIdx: number) => HTMLElement);
export type Size = number | ((self: uPlot, seriesIdx: number) => number);
export type Width = number | ((self: uPlot, seriesIdx: number, size: number) => number);
export type Stroke = CanvasRenderingContext2D['strokeStyle'] | ((self: uPlot, seriesIdx: number) => CanvasRenderingContext2D['strokeStyle']);
export type Fill = CanvasRenderingContext2D['fillStyle'] | ((self: uPlot, seriesIdx: number) => CanvasRenderingContext2D['fillStyle']);
}
export interface Points {
show?: Points.Show;
/** hover point diameter in CSS pixels */
size?: Points.Size;
/** hover point outline width in CSS pixels */
width?: Points.Width;
/** hover point outline color, pattern or gradient */
stroke?: Points.Stroke;
/** hover point fill color, pattern or gradient */
fill?: Points.Fill;
}
export interface Points {
show?: Points.Show;
/** hover point diameter in CSS pixels */
size?: Points.Size;
/** hover point outline width in CSS pixels */
width?: Points.Width;
/** hover point outline color, pattern or gradient */
stroke?: Points.Stroke;
/** hover point fill color, pattern or gradient */
fill?: Points.Fill;
}
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 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 Sync {
export type Scales = [xScaleKey: string, yScaleKey: string];
}
export namespace Sync {
export type Scales = [xScaleKey: string, yScaleKey: string];
}
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]
}
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]
}
export interface Focus {
/** minimum cursor proximity to datapoint in CSS pixels for focus activation */
prox: number;
export interface Focus {
/** minimum cursor proximity to datapoint in CSS pixels for focus activation */
prox: number;
}
}
}
export interface Cursor {
/** cursor on/off */
show?: boolean;
export interface Cursor {
/** cursor on/off */
show?: boolean;
/** vertical crosshair on/off */
x?: boolean;
/** vertical crosshair on/off */
x?: boolean;
/** horizontal crosshair on/off */
y?: boolean;
/** horizontal crosshair on/off */
y?: boolean;
/** cursor position left offset in CSS pixels (relative to plotting area) */
left?: number;
/** cursor position left offset in CSS pixels (relative to plotting area) */
left?: number;
/** cursor position top offset in CSS pixels (relative to plotting area) */
top?: number;
/** cursor position top offset in CSS pixels (relative to plotting area) */
top?: number;
/** closest data index to cursor (closestIdx) */
idx?: number;
/** closest data index to cursor (closestIdx) */
idx?: number;
/** returns data idx used for hover points & legend display (defaults to closestIdx) */
dataIdx?: Cursor.DataIdxRefiner;
/** returns data idx used for hover points & legend display (defaults to closestIdx) */
dataIdx?: Cursor.DataIdxRefiner;
/** fires on debounced mousemove events; returns refined [left, top] tuple to snap cursor position */
move?: Cursor.MousePosRefiner;
/** fires on debounced mousemove events; returns refined [left, top] tuple to snap cursor position */
move?: Cursor.MousePosRefiner;
/** series hover points */
points?: Cursor.Points;
/** series hover points */
points?: Cursor.Points;
/** event listener proxies (can be overridden to tweak interaction behavior) */
bind?: Cursor.Bind;
/** event listener proxies (can be overridden to tweak interaction behavior) */
bind?: Cursor.Bind;
/** determines vt/hz cursor dragging to set selection & setScale (zoom) */
drag?: Cursor.Drag;
/** determines vt/hz cursor dragging to set selection & setScale (zoom) */
drag?: Cursor.Drag;
/** sync cursor between multiple charts */
sync?: Cursor.Sync;
/** sync cursor between multiple charts */
sync?: Cursor.Sync;
/** focus series closest to cursor */
focus?: Cursor.Focus;
/** focus series closest to cursor */
focus?: Cursor.Focus;
/** lock cursor on mouse click in plotting area */
lock?: boolean; // false
}
/** lock cursor on mouse click in plotting area */
lock?: boolean; // false
}
export namespace Scale {
export type Auto = boolean | ((self: uPlot, resetScales: boolean) => boolean);
export namespace Scale {
export type Auto = boolean | ((self: uPlot, resetScales: boolean) => boolean);
export type Range = Range.MinMax | Range.Function | Range.Config;
export type Range = Range.MinMax | Range.Function | Range.Config;
export const enum Distr {
Linear = 1,
Ordinal = 2,
Logarithmic = 3,
export const enum Distr {
Linear = 1,
Ordinal = 2,
Logarithmic = 3,
ArcSinh = 4,
}
export type LogBase = 10 | 2;
export type Clamp = number | ((self: uPlot, val: number, scaleMin: number, scaleMax: number, scaleKey: string) => number);
}
export type LogBase = 10 | 2;
export interface Scale {
/** is this scale temporal, with series' data in UNIX timestamps? */
time?: boolean;
export type Clamp = number | ((self: uPlot, val: number, scaleMin: number, scaleMax: number, scaleKey: string) => number);
}
/** determines whether all series' data on this scale will be scanned to find the full min/max range */
auto?: Scale.Auto;
export interface Scale {
/** is this scale temporal, with series' data in UNIX timestamps? */
time?: boolean;
/** can define a static scale range or re-range an initially-determined range from series data */
range?: Scale.Range;
/** determines whether all series' data on this scale will be scanned to find the full min/max range */
auto?: Scale.Auto;
/** scale key from which this scale is derived */
from?: string,
/** can define a static scale range or re-range an initially-determined range from series data */
range?: Scale.Range;
/** scale distribution. 1: linear, 2: ordinal, 3: logarithmic, 4: arcsinh */
distr?: Scale.Distr; // 1
/** scale key from which this scale is derived */
from?: string,
/** logarithmic base */
log?: Scale.LogBase; // 10;
/** scale distribution. 1: linear, 2: ordinal, 3: logarithmic */
distr?: Scale.Distr;
/** clamps log scale values <= 0 (default = scaleMin / 10) */
clamp?: Scale.Clamp;
/** logarithmic base */
log?: Scale.LogBase; // 10;
/** arcsinh linear threshold */
asinh?: number, // 1
/** clamps log scale values <= 0 (default = scaleMin / 10) */
clamp?: Scale.Clamp;
/** current min scale value */
min?: number,
/** current min scale value */
min?: number,
/** current max scale value */
max?: number,
/** current max scale value */
max?: number,
/** scale direction */
dir?: 1 | -1;
/** scale direction */
dir?: 1 | -1;
/** scale orientation - 0: hz, 1: vt */
ori?: 0 | 1;
}
/** scale orientation - 0: hz, 1: vt */
ori?: 0 | 1;
}
export namespace Series {
export interface Paths {
/** path to stroke */
stroke?: Path2D | null;
export namespace Series {
export interface Paths {
/** path to stroke */
stroke?: Path2D | null;
/** path to fill */
fill?: Path2D | null;
/** path to fill */
fill?: Path2D | null;
/** path for clipping fill & stroke */
clip?: Path2D | null;
}
/** path for clipping fill & stroke */
clip?: Path2D | null;
}
export type LinearPathBuilderFactory = () => Series.PathBuilder;
export type SplinePathBuilderFactory = () => Series.PathBuilder;
export type SteppedPathBuilderFactory = (opts?: {align?: -1 | 1}) => Series.PathBuilder;
export type BarsPathBuilderFactory = (opts?: {align?: -1 | 0 | 1, size?: [factor?: number, max?: number]}) => Series.PathBuilder;
export type LinearPathBuilderFactory = () => Series.PathBuilder;
export type SplinePathBuilderFactory = () => Series.PathBuilder;
export type SteppedPathBuilderFactory = (opts?: {align?: -1 | 1}) => Series.PathBuilder;
export type BarsPathBuilderFactory = (opts?: {align?: -1 | 0 | 1, size?: [factor?: number, max?: number]}) => Series.PathBuilder;
export interface PathBuilderFactories {
linear?: LinearPathBuilderFactory;
spline?: SplinePathBuilderFactory;
stepped?: SteppedPathBuilderFactory;
bars?: BarsPathBuilderFactory;
}
export interface PathBuilderFactories {
linear?: LinearPathBuilderFactory;
spline?: SplinePathBuilderFactory;
stepped?: SteppedPathBuilderFactory;
bars?: BarsPathBuilderFactory;
}
export type Stroke = CanvasRenderingContext2D['strokeStyle'] | ((self: uPlot, seriesIdx: number) => CanvasRenderingContext2D['strokeStyle']);
export type Stroke = CanvasRenderingContext2D['strokeStyle'] | ((self: uPlot, seriesIdx: number) => CanvasRenderingContext2D['strokeStyle']);
export type Fill = CanvasRenderingContext2D['fillStyle'] | ((self: uPlot, seriesIdx: number) => CanvasRenderingContext2D['fillStyle']);
export type Fill = CanvasRenderingContext2D['fillStyle'] | ((self: uPlot, seriesIdx: number) => CanvasRenderingContext2D['fillStyle']);
export type Cap = CanvasRenderingContext2D['lineCap'];
export type Cap = CanvasRenderingContext2D['lineCap'];
export namespace Points {
export type Show = boolean | ((self: uPlot, seriesIdx: number, idx0: number, idx1: number) => boolean | undefined);
}
export namespace Points {
export type Show = boolean | ((self: uPlot, seriesIdx: number, idx0: number, idx1: number) => boolean | undefined);
}
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;
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;
/** diameter of point in CSS pixels */
size?: number;
/** diameter of point in CSS pixels */
size?: number;
/** minimum avg space between point centers before they're shown (default: size * 2) */
space?: number;
/** minimum avg space between point centers before they're shown (default: size * 2) */
space?: number;
/** line width of circle outline in CSS pixels */
width?: number;
/** line width of circle outline in CSS pixels */
width?: number;
/** line color of circle outline (defaults to series.stroke) */
stroke?: Stroke;
/** line color of circle outline (defaults to series.stroke) */
stroke?: Stroke;
/** line dash segment array */
dash?: number[];
/** line dash segment array */
dash?: number[];
/** line cap */
cap?: Series.Cap;
/** line cap */
cap?: Series.Cap;
/** fill color of circle (defaults to #fff) */
fill?: Fill;
}
/** fill color of circle (defaults to #fff) */
fill?: Fill;
}
export type Gap = [from: number, to: number];
export type Gap = [from: number, to: number];
export type Gaps = Gap[];
export type Gaps = Gap[];
export type AddGap = (gaps: Gaps, from: number, to: number) => void;
export type AddGap = (gaps: Gaps, from: number, to: number) => void;
export type ClipPathBuilder = (gaps: Gaps, ori: Orientation, left: number, top: number, width: number, height: number) => Path2D | null;
export type ClipPathBuilder = (gaps: Gaps, ori: Orientation, left: number, top: number, width: number, height: number) => Path2D | null;
export type PathBuilder = (self: uPlot, seriesIdx: number, idx0: number, idx1: number) => Paths | null;
export type PathBuilder = (self: uPlot, seriesIdx: number, idx0: number, idx1: number) => Paths | null;
export type MinMaxIdxs = [minIdx: number, maxIdx: number];
export type MinMaxIdxs = [minIdx: number, maxIdx: number];
export type Value = string | ((self: uPlot, rawValue: number, seriesIdx: number, idx: number) => string | number);
export type Value = string | ((self: uPlot, rawValue: number, seriesIdx: number, idx: number) => string | number);
export type Values = (self: uPlot, seriesIdx: number, idx: number) => object;
export type Values = (self: uPlot, seriesIdx: number, idx: number) => object;
export type FillTo = number | ((self: uPlot, seriesIdx: number, dataMin: number, dataMax: number) => number);
export type FillTo = number | ((self: uPlot, seriesIdx: number, dataMin: number, dataMax: number) => number);
export const enum Sorted {
Unsorted = 0,
Ascending = 1,
Descending = -1,
export const enum Sorted {
Unsorted = 0,
Ascending = 1,
Descending = -1,
}
}
}
export interface Series {
/** series on/off. when off, it will not affect its scale */
show?: boolean;
export interface Series {
/** series on/off. when off, it will not affect its scale */
show?: boolean;
/** className to add to legend parts and cursor hover points */
class?: string;
/** className to add to legend parts and cursor hover points */
class?: string;
/** scale key */
scale?: string;
/** scale key */
scale?: string;
/** whether this series' data is scanned during auto-ranging of its scale */
auto?: boolean; // true
/** whether this series' data is scanned during auto-ranging of its scale */
auto?: boolean; // true
/** if & how the data is pre-sorted (scale.auto optimization) */
sorted?: Series.Sorted;
/** if & how the data is pre-sorted (scale.auto optimization) */
sorted?: Series.Sorted;
/** when true, null data values will not cause line breaks */
spanGaps?: boolean;
/** when true, null data values will not cause line breaks */
spanGaps?: boolean;
/** whether path and point drawing should offset canvas to try drawing crisp lines */
pxAlign?: boolean; // true
/** whether path and point drawing should offset canvas to try drawing crisp lines */
pxAlign?: boolean; // true
/** legend label */
label?: string;
/** legend label */
label?: string;
/** inline-legend value formatter. can be an fmtDate formatting string when scale.time: true */
value?: Series.Value;
/** inline-legend value formatter. can be an fmtDate formatting string when scale.time: true */
value?: Series.Value;
/** table-legend multi-values formatter */
values?: Series.Values;
/** table-legend multi-values formatter */
values?: Series.Values;
paths?: Series.PathBuilder;
paths?: Series.PathBuilder;
/** rendered datapoints */
points?: Series.Points;
/** rendered datapoints */
points?: Series.Points;
/** line width in CSS pixels */
width?: number;
/** line width in CSS pixels */
width?: number;
/** line & legend color */
stroke?: Series.Stroke;
/** line & legend color */
stroke?: Series.Stroke;
/** area fill & legend color */
fill?: Series.Fill;
/** area fill & legend color */
fill?: Series.Fill;
/** area fill baseline (default: 0) */
fillTo?: Series.FillTo;
/** area fill baseline (default: 0) */
fillTo?: Series.FillTo;
/** line dash segment array */
dash?: number[];
/** line dash segment array */
dash?: number[];
/** line cap */
cap?: Series.Cap;
/** line cap */
cap?: Series.Cap;
/** alpha-transparancy */
alpha?: number;
/** alpha-transparancy */
alpha?: number;
/** current min and max data indices rendered */
idxs?: Series.MinMaxIdxs,
/** current min and max data indices rendered */
idxs?: Series.MinMaxIdxs,
/** current min rendered value */
min?: number,
/** current min rendered value */
min?: number,
/** current max rendered value */
max?: number,
}
/** current max rendered value */
max?: number,
}
export namespace Band {
export type Fill = CanvasRenderingContext2D['fillStyle'] | ((self: uPlot, bandIdx: number, highSeriesFill: CanvasRenderingContext2D['fillStyle']) => CanvasRenderingContext2D['fillStyle']);
export namespace Band {
export type Fill = CanvasRenderingContext2D['fillStyle'] | ((self: uPlot, bandIdx: number, highSeriesFill: CanvasRenderingContext2D['fillStyle']) => CanvasRenderingContext2D['fillStyle']);
export type Bounds = [highSeriesIdx: number, lowSeriesIdx: number];
}
export type Bounds = [highSeriesIdx: number, lowSeriesIdx: number];
}
export interface Band {
/** band on/off */
// show?: boolean;
export interface Band {
/** band on/off */
// show?: boolean;
/** series indices of upper and lower band edges */
series: Band.Bounds;
/** series indices of upper and lower band edges */
series: Band.Bounds;
/** area fill style */
fill?: Band.Fill;
}
/** area fill style */
fill?: Band.Fill;
}
export namespace Axis {
/** must return an array of same length as splits, e.g. via splits.map() */
export type Filter = (self: uPlot, splits: number[], axisIdx: number, foundSpace: number, foundIncr: number) => (number | null)[];
export namespace Axis {
/** must return an array of same length as splits, e.g. via splits.map() */
export type Filter = (self: uPlot, splits: number[], axisIdx: number, foundSpace: number, foundIncr: number) => (number | null)[];
export type Size = number | ((self: uPlot, values: string[], axisIdx: number, cycleNum: number) => number);
export type Size = number | ((self: uPlot, values: string[], axisIdx: number, cycleNum: number) => number);
export type Space = number | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, plotDim: number) => number);
export type Space = number | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, plotDim: number) => number);
export type Incrs = number[] | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, fullDim: number, minSpace: number) => number[]);
export type Incrs = number[] | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, fullDim: number, minSpace: number) => number[]);
export type Splits = number[] | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, foundIncr: number, pctSpace: number) => number[]);
export type Splits = number[] | ((self: uPlot, axisIdx: number, scaleMin: number, scaleMax: number, foundIncr: number, pctSpace: number) => number[]);
export type Values = ((self: uPlot, splits: number[], axisIdx: number, foundSpace: number, foundIncr: number) => (string | number | null)[]) | (string | number | null)[][] | string;
export type Values = ((self: uPlot, splits: number[], axisIdx: number, foundSpace: number, foundIncr: number) => (string | number | null)[]) | (string | number | null)[][] | string;
export type Stroke = CanvasRenderingContext2D['strokeStyle'] | ((self: uPlot, axisIdx: number) => CanvasRenderingContext2D['strokeStyle']);
export type Stroke = CanvasRenderingContext2D['strokeStyle'] | ((self: uPlot, axisIdx: number) => CanvasRenderingContext2D['strokeStyle']);
export const enum Side {
Top = 0,
Right = 1,
Bottom = 2,
Left = 3,
}
export const enum Side {
Top = 0,
Right = 1,
Bottom = 2,
Left = 3,
}
export const enum Align {
Left = 1,
Right = 2,
}
export const enum Align {
Left = 1,
Right = 2,
}
export type Rotate = number | ((self: uPlot, values: (string | number)[], axisIdx: number, foundSpace: number) => number);
export type Rotate = number | ((self: uPlot, values: (string | number)[], axisIdx: number, foundSpace: number) => number);
export interface Grid {
/** on/off */
show?: boolean; // true
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?: Filter;
/** can filter which splits render lines. e.g splits.map(v => v % 2 == 0 ? v : null) */
filter?: Filter;
/** line color */
stroke?: Stroke;
/** line color */
stroke?: Stroke;
/** line width in CSS pixels */
width?: number;
/** line width in CSS pixels */
width?: number;
/** line dash segment array */
dash?: number[];
/** line dash segment array */
dash?: number[];
/** line cap */
cap?: Series.Cap;
}
/** line cap */
cap?: Series.Cap;
}
export interface Ticks extends Grid {
/** length of tick in CSS pixels */
size?: number;
export interface Ticks extends Grid {
/** length of tick in CSS pixels */
size?: number;
}
}
}
export interface Axis {
/** axis on/off */
show?: boolean;
export interface Axis {
/** axis on/off */
show?: boolean;
/** scale key */
scale?: string;
/** scale key */
scale?: string;
/** side of chart - 0: top, 1: rgt, 2: btm, 3: lft */
side?: Axis.Side;
/** side of chart - 0: top, 1: rgt, 2: btm, 3: lft */
side?: Axis.Side;
/** height of x axis or width of y axis in CSS pixels alloted for values, gap & ticks, but excluding axis label */
size?: Axis.Size;
/** height of x axis or width of y axis in CSS pixels alloted for values, gap & ticks, but excluding axis label */
size?: Axis.Size;
/** gap between axis values and axis baseline (or ticks, if enabled) in CSS pixels */
gap?: number;
/** gap between axis values and axis baseline (or ticks, if enabled) in CSS pixels */
gap?: number;
/** font used for axis values */
font?: CanvasRenderingContext2D['font'];
/** font used for axis values */
font?: CanvasRenderingContext2D['font'];
/** color of axis label & values */
stroke?: Axis.Stroke;
/** color of axis label & values */
stroke?: Axis.Stroke;
/** axis label text */
label?: string;
/** axis label text */
label?: string;
/** height of x axis label or width of y axis label in CSS pixels */
labelSize?: number;
/** height of x axis label or width of y axis label in CSS pixels */
labelSize?: number;
/** font used for axis label */
labelFont?: CanvasRenderingContext2D['font'];
/** font used for axis label */
labelFont?: CanvasRenderingContext2D['font'];
/** minimum grid & tick spacing in CSS pixels */
space?: Axis.Space;
/** minimum grid & tick spacing in CSS pixels */
space?: Axis.Space;
/** available divisors for axis ticks, values, grid */
incrs?: Axis.Incrs;
/** available divisors for axis ticks, values, grid */
incrs?: Axis.Incrs;
/** determines how and where the axis must be split for placing ticks, values, grid */
splits?: Axis.Splits;
/** determines how and where the axis must be split for placing ticks, values, grid */
splits?: Axis.Splits;
/** can filter which splits are passed to axis.values() for rendering. e.g splits.map(v => v % 2 == 0 ? v : null) */
filter?: Axis.Filter;
/** can filter which splits are passed to axis.values() for rendering. e.g splits.map(v => v % 2 == 0 ? v : null) */
filter?: Axis.Filter;
/** formats values for rendering */
values?: Axis.Values;
/** formats values for rendering */
values?: Axis.Values;
/** values rotation in degrees off horizontal (only bottom axes w/ side: 2) */
rotate?: Axis.Rotate;
/** values rotation in degrees off horizontal (only bottom axes w/ side: 2) */
rotate?: Axis.Rotate;
/** text alignment of axis values - 1: left, 2: right */
align?: Axis.Align;
/** text alignment of axis values - 1: left, 2: right */
align?: Axis.Align;
/** gridlines to draw from this axis' splits */
grid?: Axis.Grid;
/** gridlines to draw from this axis' splits */
grid?: Axis.Grid;
/** ticks to draw from this axis' splits */
ticks?: Axis.Ticks;
}
/** 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 */
init?: (self: uPlot, opts: Options, data: AlignedData) => void;
export namespace Hooks {
export interface Defs {
/** fires after opts are defaulted & merged but data has not been set and scales have not been ranged */
init?: (self: uPlot, opts: Options, data: AlignedData) => void;
/** fires after any scale has changed */
setScale?: (self: uPlot, scaleKey: string) => void;
/** fires after any scale has changed */
setScale?: (self: uPlot, scaleKey: string) => void;
/** fires after the cursor is moved (debounced by rAF) */
setCursor?: (self: uPlot) => void;
/** fires after the cursor is moved (debounced by rAF) */
setCursor?: (self: uPlot) => void;
/** fires after a selection is completed */
setSelect?: (self: uPlot) => void;
/** fires after a selection is completed */
setSelect?: (self: uPlot) => void;
/** fires after a series is toggled or focused */
setSeries?: (self: uPlot, seriesIdx: number | null, opts: Series) => void;
/** fires after a series is toggled or focused */
setSeries?: (self: uPlot, seriesIdx: number | null, opts: Series) => void;
/** fires after data is updated updated */
setData?: (self: uPlot) => void;
/** fires after data is updated updated */
setData?: (self: uPlot) => void;
/** fires after the chart is resized */
setSize?: (self: uPlot) => void;
/** fires after the chart is resized */
setSize?: (self: uPlot) => void;
/** fires at start of every redraw */
drawClear?: (self: uPlot) => void;
/** fires at start of every redraw */
drawClear?: (self: uPlot) => void;
/** fires after all axes are drawn */
drawAxes?: (self: uPlot) => void;
/** fires after all axes are drawn */
drawAxes?: (self: uPlot) => void;
/** fires after each series is drawn */
drawSeries?: (self: uPlot, seriesKey: string) => void;
/** fires after each series is drawn */
drawSeries?: (self: uPlot, seriesKey: string) => void;
/** fires after everything is drawn */
draw?: (self: uPlot) => void;
/** fires after everything is drawn */
draw?: (self: uPlot) => void;
/** fires after the chart is fully initialized and in the DOM */
ready?: (self: uPlot) => void;
/** fires after the chart is fully initialized and in the DOM */
ready?: (self: uPlot) => void;
/** fires after the chart is destroyed */
destroy?: (self: uPlot) => void;
}
/** fires after the chart is destroyed */
destroy?: (self: uPlot) => void;
}
export type Arrays = {
[P in keyof Defs]: Defs[P][]
export type Arrays = {
[P in keyof Defs]: Defs[P][]
}
export type ArraysOrFuncs = {
[P in keyof Defs]: Defs[P][] | 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 interface Plugin {
/** can mutate provided opts as necessary */
opts?: (self: uPlot, opts: Options) => void | Options;
hooks: Hooks.ArraysOrFuncs;
}
export default uPlot;
export as namespace uPlot;

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

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

@@ -43,5 +43,5 @@ "main": "./dist/uPlot.cjs.js",

"@rollup/plugin-buble": "^0.21.3",
"rollup": "^2.38.3",
"rollup": "^2.39.0",
"rollup-plugin-terser": "^7.0.2"
}
}
## 📈 μPlot
A small ([~30 KB min](https://github.com/leeoniya/uPlot/tree/master/dist/uPlot.iife.min.js)), [fast](#performance) chart for time series, lines, areas, ohlc & bars _(MIT Licensed)_
A small ([~35 KB min](https://github.com/leeoniya/uPlot/tree/master/dist/uPlot.iife.min.js)), [fast](#performance) chart for time series, lines, areas, ohlc & bars _(MIT Licensed)_

@@ -8,3 +8,3 @@ ---

μ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 [~25,000 pts/ms](https://leeoniya.github.io/uPlot/bench/uPlot-10M.html). In addition to fast initial render, the zooming and cursor performance is by far the best of any similar charting lib; at ~30 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 [~25,000 pts/ms](https://leeoniya.github.io/uPlot/bench/uPlot-10M.html). In addition to fast initial render, the zooming and cursor performance is by far the best of any similar charting lib; at ~35 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.

@@ -11,0 +11,0 @@ <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>

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