ml-time-graph 1.3.0 β 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +3 -3
- package/README.md +3 -3
- package/dist/index.d.ts +3 -32
- package/dist/index.js +6 -6
- package/dist/interaction/index.js +2 -2
- package/dist/internals.d.ts +11 -3
- package/dist/internals.js +4 -4
- package/dist/{layout-CXwTQBSN.d.ts β layout-3caueyKS.d.ts} +31 -1
- package/package.json +1 -1
package/README.de.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# π MLTimeGraph
|
|
2
2
|
|
|
3
|
-
*[English](README.md) Β· Deutsch*
|
|
3
|
+
*[English](https://gitlab.com/mlc0911/mlctimegraph/-/blob/main/packages/ml-time-graph/README.md) Β· Deutsch*
|
|
4
4
|
|
|
5
5
|
**TypeScript-Library fΓΌr die grafische Darstellung von Messwerten** β Zeitreihen
|
|
6
6
|
schnell und unkompliziert aufbereiten, mit Fokus auf Reporting und Incident-Analyse.
|
|
@@ -63,7 +63,7 @@ mount('#chart', {
|
|
|
63
63
|
});
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
π **Nutzung & API β [USAGE.md](USAGE.md)** *(englisch)*
|
|
66
|
+
π **Nutzung & API β [USAGE.md](https://gitlab.com/mlc0911/mlctimegraph/-/blob/main/packages/ml-time-graph/USAGE.md)** *(englisch)*
|
|
67
67
|
|
|
68
68
|
## Galerie
|
|
69
69
|
|
|
@@ -150,7 +150,7 @@ pnpm dev # startet die Demo-Galerie (Vite)
|
|
|
150
150
|
|
|
151
151
|
## Lizenz
|
|
152
152
|
|
|
153
|
-
Β© 2026 Michael Lechner β **MIT mit Attribution-Klausel** (siehe [LICENSE](LICENSE)).
|
|
153
|
+
Β© 2026 Michael Lechner β **MIT mit Attribution-Klausel** (siehe [LICENSE](https://gitlab.com/mlc0911/mlctimegraph/-/blob/main/packages/ml-time-graph/LICENSE)).
|
|
154
154
|
|
|
155
155
|
Nutzung, Γnderung und Verbreitung β **auch kommerziell und in Closed-Source-Produkten** β
|
|
156
156
|
sind kostenlos erlaubt, sofern der Autor **βMichael Lechner" sichtbar genannt** wird
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# π MLTimeGraph
|
|
2
2
|
|
|
3
|
-
*English Β· [Deutsch](README.de.md)*
|
|
3
|
+
*English Β· [Deutsch](https://gitlab.com/mlc0911/mlctimegraph/-/blob/main/packages/ml-time-graph/README.de.md)*
|
|
4
4
|
|
|
5
5
|
**A TypeScript library for visualizing measurement data** β turn time series into
|
|
6
6
|
clear, readable charts quickly, with a focus on reporting and incident analysis.
|
|
@@ -63,7 +63,7 @@ mount('#chart', {
|
|
|
63
63
|
});
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
π **Usage & API β [USAGE.md](USAGE.md)**
|
|
66
|
+
π **Usage & API β [USAGE.md](https://gitlab.com/mlc0911/mlctimegraph/-/blob/main/packages/ml-time-graph/USAGE.md)**
|
|
67
67
|
|
|
68
68
|
## Gallery
|
|
69
69
|
|
|
@@ -151,7 +151,7 @@ pnpm dev # start the demo gallery (Vite)
|
|
|
151
151
|
|
|
152
152
|
## License
|
|
153
153
|
|
|
154
|
-
Β© 2026 Michael Lechner β **MIT with an Attribution clause** (see [LICENSE](LICENSE)).
|
|
154
|
+
Β© 2026 Michael Lechner β **MIT with an Attribution clause** (see [LICENSE](https://gitlab.com/mlc0911/mlctimegraph/-/blob/main/packages/ml-time-graph/LICENSE)).
|
|
155
155
|
|
|
156
156
|
Use, modification and distribution β **including in commercial and closed-source
|
|
157
157
|
products** β are free of charge, provided the author **"Michael Lechner" is visibly
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { L as LegendOrientation, R as Renderer, M as Marker, a as LegendItem, b as LayoutResult, c as RenderOutput
|
|
1
|
+
import { L as LegendOrientation, R as Renderer, M as Marker, a as LegendItem, b as LayoutResult, c as RenderOutput } from './layout-3caueyKS.js';
|
|
2
|
+
export { T as Theme, g as getDefaultTheme, r as resetDefaultTheme, s as setDefaultTheme } from './layout-3caueyKS.js';
|
|
2
3
|
import { L as LineVariant, A as AnySeries, T as Threshold, H as Highlight, G as Gap, a as GapsConfig, b as Annotation, c as AnnotationBandConfig, D as DrawCommand, d as TimeScale, e as LinearScale, S as SeriesStyle, F as FillSpec, f as TimeSeries, g as HatchVariant, h as ThresholdLabelPosition, P as PointStyleType, i as AnnotationBandItem, j as AggregatedPoint, k as AggregatedSeries, l as DataPoint } from './scale-CWAa8-uO.js';
|
|
3
4
|
export { m as AggregationConfig, n as AggregationMode, o as DataPointRef, E as EnumMap, p as FillBound, q as FillDirectionType, r as FillRegion, s as FillSide, t as FillStyle, u as GapConfig, v as GapLabel, w as GapRegion, x as GapStyle, y as LineDashStyle, z as LineStyle, M as MarkerStyle, B as SensorType, C as SeriesOverlay, I as SeriesOverlayKind, J as SeriesType, K as ShadowStyle, N as ThresholdLabelConfig } from './scale-CWAa8-uO.js';
|
|
4
5
|
|
|
@@ -843,34 +844,4 @@ declare function parseSeries(obj: unknown): TimeSeries | DataPoint[];
|
|
|
843
844
|
/** Parse aggregated series (AggregatedPoint[] β min/max/avg per slot) */
|
|
844
845
|
declare function parseAggregated(obj: unknown): AggregatedSeries;
|
|
845
846
|
|
|
846
|
-
|
|
847
|
-
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
848
|
-
* MIT with Attribution: free use incl. commercial requires visible credit to
|
|
849
|
-
* "Michael Lechner". Commercial license (no attribution) on request. See LICENSE.
|
|
850
|
-
*/
|
|
851
|
-
|
|
852
|
-
/** The Theme type β same shape as the immutable BUILTIN_DEFAULTS object. */
|
|
853
|
-
type Theme = typeof theme;
|
|
854
|
-
/**
|
|
855
|
-
* Apply a partial override on top of the current global default theme.
|
|
856
|
-
* Merged shallowly β nested objects (e.g. {@link Theme.palette}) are replaced
|
|
857
|
-
* wholesale, not deep-merged.
|
|
858
|
-
*
|
|
859
|
-
* @example
|
|
860
|
-
* setDefaultTheme({ stroke: '#0f172a', gridStroke: '#f1f5f9' });
|
|
861
|
-
* new MLTimeGraph({ ... }); // picks up the new defaults
|
|
862
|
-
*/
|
|
863
|
-
declare function setDefaultTheme(partial: Partial<Theme>): void;
|
|
864
|
-
/**
|
|
865
|
-
* Read the current global default theme (a snapshot β mutating the result
|
|
866
|
-
* does NOT affect future reads).
|
|
867
|
-
*/
|
|
868
|
-
declare function getDefaultTheme(): Readonly<Theme>;
|
|
869
|
-
/**
|
|
870
|
-
* Restore the global default theme to the library's built-in values
|
|
871
|
-
* (`BUILTIN_DEFAULTS` from {@link ./defaults.ts}). Useful in test
|
|
872
|
-
* `afterEach` hooks and when you want to undo a previous `setDefaultTheme`.
|
|
873
|
-
*/
|
|
874
|
-
declare function resetDefaultTheme(): void;
|
|
875
|
-
|
|
876
|
-
export { AggregatedPoint, AggregatedSeries, Annotation, AnnotationBandBuilder, AnnotationBandConfig, AnnotationBandItem, AnnotationBandItemBuilder, AnnotationBuilder, AnySeries, type AxesConfig, type AxisLabelsStyle, type AxisStyle, DataPoint, type FillBetweenThresholdsInput, FillSpec, Gap, GapsConfig, GraphBuilder, type GridLineStyle, type GridStyle, HatchVariant, Highlight, HighlightBuilder, type LegendOptions, type LegendPosition, type LimitStatsPoint, MLTimeGraph, type MLTimeGraphOptions, type Margin, Marker, MarkerBuilder, type MktPoint, PointStyleType, SVGRenderer, SeriesStyle, type StatsAggregatedPoint, type StdDevPoint, type Theme, Threshold, ThresholdBuilder, ThresholdLabelPosition, type TickConfig, TimeSeries, TimeSeriesBuilder, type TooltipOptions, type TooltipSample, type XAxisConfig, type YAxisConfig, attachTooltip, fillBetweenThresholds, getDefaultTheme, mount, parseAggregated, parseDataPoint, parseSeries, resetDefaultTheme, setDefaultTheme };
|
|
847
|
+
export { AggregatedPoint, AggregatedSeries, Annotation, AnnotationBandBuilder, AnnotationBandConfig, AnnotationBandItem, AnnotationBandItemBuilder, AnnotationBuilder, AnySeries, type AxesConfig, type AxisLabelsStyle, type AxisStyle, DataPoint, type FillBetweenThresholdsInput, FillSpec, Gap, GapsConfig, GraphBuilder, type GridLineStyle, type GridStyle, HatchVariant, Highlight, HighlightBuilder, type LegendOptions, type LegendPosition, type LimitStatsPoint, MLTimeGraph, type MLTimeGraphOptions, type Margin, Marker, MarkerBuilder, type MktPoint, PointStyleType, SVGRenderer, SeriesStyle, type StatsAggregatedPoint, type StdDevPoint, Threshold, ThresholdBuilder, ThresholdLabelPosition, type TickConfig, TimeSeries, TimeSeriesBuilder, type TooltipOptions, type TooltipSample, type XAxisConfig, type YAxisConfig, attachTooltip, fillBetweenThresholds, mount, parseAggregated, parseDataPoint, parseSeries };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var nt=class i{_config;constructor(t){this._config=t;}compute(){let{width:t,height:e,margin:n}=this._config;return {totalWidth:t,totalHeight:e,chartWidth:t-n.left-n.right,chartHeight:e-n.top-n.bottom,chartX:n.left,chartY:n.top,margin:n}}static default(t=800,e=400){return new i({width:t,height:e,margin:{top:20,right:20,bottom:40,left:60}})}};function it(i){return i&&i.toString().normalize("NFKD").replace(/[Μ-Ν―]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,50)||"unnamed"}var pe=(()=>{let i=new Array(256);for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e=e&1?3988292384^e>>>1:e>>>1;i[t]=e>>>0;}return i})();function fe(i){let t=new TextEncoder().encode(i),e=4294967295;for(let n of t)e=pe[(e^n)&255]^e>>>8;return (e^4294967295)>>>0}function rt(i,t){return t||"s-"+fe(i??"").toString(16).padStart(8,"0")}var It=new Map;function ge(i,t){return `${i}|${JSON.stringify(t??{})}`}function Gt(i,t){let e=ge(i,t),n=It.get(e);return n||(n=new Intl.DateTimeFormat(i,t),It.set(e,n)),n}var X=class{#t;#e;constructor(t){this.#t=[...t.domain],this.#e=[...t.range];}map(t){let e=Number(t),[n,o]=this.#t,[r,s]=this.#e;return o===n?r:r+(e-n)/(o-n)*(s-r)}invert(t){let[e,n]=this.#t,[o,r]=this.#e;return r===o?e:e+(t-o)/(r-o)*(n-e)}domain(){return [...this.#t]}range(){return [...this.#e]}},z=[{label:"second",ms:1e3},{label:"2_seconds",ms:2e3},{label:"5_seconds",ms:5e3},{label:"10_seconds",ms:1e4},{label:"30_seconds",ms:3e4},{label:"minute",ms:6e4},{label:"5_minutes",ms:3e5},{label:"15_minutes",ms:9e5},{label:"30_minutes",ms:18e5},{label:"hour",ms:36e5},{label:"3_hours",ms:108e5},{label:"6_hours",ms:216e5},{label:"day",ms:864e5},{label:"week",ms:6048e5},{label:"month",ms:2592e6},{label:"3_months",ms:7776e6},{label:"6_months",ms:15552e6},{label:"year",ms:31536e6},{label:"2_years",ms:63072e6},{label:"5_years",ms:15768e7}],J=class{#t;#e;constructor(t){this.#t=new X({domain:t.domain,range:t.range}),this.#e=t.locale||(typeof navigator<"u"?navigator.language:"en-US");}map(t){return this.#t.map(Number(t))}invert(t){return this.#t.invert(t)}domain(){return this.#t.domain()}range(){return this.#t.range()}get locale(){return this.#e}tickInterval(t,e=3,n=12){let[o,r]=this.#t.domain(),s=r-o;if(s<=0)return {interval:z[0].ms};let a=s/t,h=z[0].ms;for(let u of z)if(u.ms>=a){h=u.ms;break}let l=h,d=Math.round(s/l);for(;d>n&&l<z[z.length-1].ms;){let u=z.findIndex(m=>m.ms===l);l=z[Math.min(u+1,z.length-1)].ms,d=Math.round(s/l);}for(;d<e&&l>z[0].ms;){let u=z.findIndex(m=>m.ms===l);l=z[Math.max(u-1,0)].ms,d=Math.round(s/l);}return {interval:l}}ticks(t){let e=t?.minTicks??5,n=t?.maxTicks??12,{interval:o}=this.tickInterval((e+n)/2,e,n),[r,s]=this.#t.domain(),a=[],h=Math.ceil(r/o)*o;for(let l=h;l<=s;l+=o)a.push(l);return a}format(t,e){return Gt(this.#e,e).format(new Date(t))}};var Mt={stroke:"#4285f4",strokeWidth:2,pointSize:4,pointThreshold:100,gapThreshold:0,fill:"none",hatch:null,bandFill:"#4285f4",bandOpacity:.6,bandAvgLine:"#e53e3e",minColor:"#3b82f6",maxColor:"#ef4444",avgColor:"#64748b",areaFillAlpha:"4285f433",axisColor:"#ccc",tickColor:"#ddd",textColor:"#777",textSize:11,axisLabelColor:"#444",axisLabelSize:12,gridStroke:"#e2e8f0",gridStrokeWidth:1,gridOpacity:1,legendStroke:"#ccc",legendText:"#333",legendFont:11,annotationColor:"#334155",annotationWidth:1.5,annotationHead:9,annotationRadius:4,annotationFontSize:11,thresholdColor:"#666",thresholdLine:"dashed",thresholdFillOpacity:.12,thresholdFontSize:10,highlightColor:"#fbbf24",highlightOpacity:.2,highlightLabelColor:"#92400e",markerColor:"#f59e0b",markerSize:5,gapFill:"#fff",gapStroke:"#ccc",gapStrokeWidth:1,gapFontColor:"#999",gapFontSize:10,gapFillOpacity:.15,tooltipBg:"#fff",tooltipBorder:"#cbd5e1",tooltipText:"#1e293b",tooltipValue:"#3b82f6",tooltipCrosshair:"#94a3b8",tooltipSnapRadius:20,statsLineColor:"#94a3b8",statsLabelColor:"#64748b",minimapStroke:"#94a3b8",minimapBg:"#f8f9fa",minimapBrush:"#3b82f644",palette:["#4285f4","#ea4335","#22c55e","#fbbc05","#9334ea","#12b5e5","#fb923c","#6366f1"]};var ht={...Mt};function ye(i){ht={...ht,...i};}function Q(){return ht}function be(){ht={...Mt};}function Lt(i,t="classic-diagonal",e="rgba(200, 220, 255, 0.3)",n="#4D88FF",o=2){if(t==="none")return `
|
|
2
2
|
<pattern id="${i}" width="10" height="10" patternUnits="userSpaceOnUse">
|
|
3
3
|
<rect width="10" height="10" fill="${e}" />
|
|
4
4
|
</pattern>
|
|
@@ -21,18 +21,18 @@ var et=class i{_config;constructor(t){this._config=t;}compute(){let{width:t,heig
|
|
|
21
21
|
${l}
|
|
22
22
|
${h}
|
|
23
23
|
</pattern>
|
|
24
|
-
`.trim()}function It(i,t=2){let e=t;switch(i){case "dotted":return {strokeDasharray:`0, ${e*2}`,strokeLinecap:"round"};case "sparse-dots":return {strokeDasharray:`0, ${e*4}`,strokeLinecap:"round"};case "dashed":return {strokeDasharray:`${e*3}, ${e*2}`,strokeLinecap:"butt"};case "long-dash":return {strokeDasharray:`${e*6}, ${e*3}`,strokeLinecap:"butt"};case "dense-dash":return {strokeDasharray:`${e*1.5}, ${e*1.5}`,strokeLinecap:"butt"};case "dash-dot":return {strokeDasharray:`${e*4}, ${e*2}, 0, ${e*2}`,strokeLinecap:"round"};case "dash-dot-dot":return {strokeDasharray:`${e*5}, ${e*2}, 0, ${e*2}, 0, ${e*2}`,strokeLinecap:"round"};case "loose-dash":return {strokeDasharray:`${e*3}, ${e*4}`,strokeLinecap:"butt"};default:return {strokeDasharray:"none",strokeLinecap:"butt"}}}var rt={axisColor:p.axisColor,tickColor:p.tickColor,textColor:p.textColor,textSize:p.textSize},Q=class{#t;#e;constructor(t){this.#t=new J({domain:t.domain,range:t.xRange,locale:t.locale}),this.#e=t;}get scale(){return this.#t}get axisColor(){return (this.#e.colors??rt).axisColor}get tickColor(){return (this.#e.colors??rt).tickColor}get textColor(){return (this.#e.colors??rt).textColor}get textSize(){return (this.#e.colors??rt).textSize}generateTicks(){let t=this.#e.minTicks??5,e=this.#e.maxTicks??12,o=this.#t.ticks({minTicks:t,maxTicks:e}).map(r=>({time:r,x:this.#t.map(r),label:this.tickLabel(r)}));return this.antiOverlap(o)}tickLabel(t){if(this.#e.format)return this.#e.format(new Date(t));let e=this.#e.minTicks??5,n=this.#e.maxTicks??12,{interval:o}=this.#t.tickInterval((e+n)/2,e,n),r={};return o<6e4?(r.hour="2-digit",r.minute="2-digit",r.second="2-digit"):o<36e5||o<864e5?(r.hour="2-digit",r.minute="2-digit"):o<31536e6?(r.day="numeric",r.month="short",o>=2592e6&&(r.day=void 0,r.month="long")):(r.year="numeric",o<2*31536e6&&(r.month="short")),this.#t.format(t,r)}antiOverlap(t){if(t.length<=1)return t;let e=60,n=[t[0]];for(let o=1;o<t.length;o++){let r=n[n.length-1].x;Math.abs(t[o].x-r)>=e&&n.push(t[o]);}return n}render(){let t=this.generateTicks(),e=this.#e.colors??rt,n=this.#e.y??0,o=[],[r,s]=this.#t.range();o.push({type:"line",x1:r,y1:n,x2:s,y2:n,stroke:e.axisColor,strokeWidth:e.axisWidth});for(let a of t)o.push({type:"line",x1:a.x,y1:n,x2:a.x,y2:n+6,stroke:e.tickColor,strokeWidth:e.axisWidth}),o.push({type:"text",content:a.label,x:a.x,y:n+e.textSize+6,anchor:"middle",fontSize:e.textSize,fill:e.textColor});return o}};var ot={axisColor:"#ccc",tickColor:"#ddd",textColor:"#777",textSize:12};function fe(i){return Math.abs(i)>=1e6?`${(i/1e6).toFixed(1)}M`:Math.abs(i)>=1e3?`${(i/1e3).toFixed(1)}k`:Number.isInteger(i)?String(i):i.toFixed(1)}function ge(i){let t=new Array(i.length).fill(false),e=0;for(;e<i.length;){let n=e;for(;n+1<i.length&&i[n+1].label===i[e].label;)n++;for(let o=e+1;o<n;o++)t[o]=true;e=n+1;}return t}var lt=class{#t;#e;constructor(t){this.#t=new X({domain:t.domain,range:t.range}),this.#e=t;}get scale(){return this.#t}get axisColor(){return (this.#e.colors??ot).axisColor}get tickColor(){return (this.#e.colors??ot).tickColor}get textColor(){return (this.#e.colors??ot).textColor}get textSize(){return (this.#e.colors??ot).textSize}generateTicks(){let t=this.#e.format??fe,e=6,[n,o]=this.#t.domain(),r=o-n;if(r===0)return [{value:n,position:this.#t.map(n),label:t(n)}];let s=r/e,a=Math.pow(10,Math.floor(Math.log10(s))),h=s/a,l;h<=1.5?l=a:h<=3?l=2*a:h<=7?l=5*a:l=10*a;let d=[],u=Math.ceil(n/l)*l;for(let m=u;m<=o;m+=l)d.push({value:m,position:this.#t.map(m),label:t(m)});return d}render(){let t=this.generateTicks(),e=this.#e.colors??ot,n=this.#e.x??0,o=this.#e.orientation??"vertical",r=this.#e.position??"left",s=this.#e.suppressLabelsNear??[],a=this.#e.suppressTolerancePx??8,h=d=>s.some(u=>Math.abs(u-d)<=a),l=[];if(o==="vertical"){let[d,u]=this.#t.range();l.push({type:"line",x1:n,y1:d,x2:n,y2:u,stroke:e.axisColor,strokeWidth:e.axisWidth});let m=ge(t);t.forEach((c,f)=>{let y=h(c.position),b=m[f]?{opacity:0}:{};r==="left"?(l.push({type:"line",x1:n-4,y1:c.position,x2:n,y2:c.position,stroke:e.tickColor,strokeWidth:e.axisWidth}),y||l.push({type:"text",content:c.label,x:n-8,y:c.position+4,anchor:"end",fontSize:11,fill:e.textColor,...b})):(l.push({type:"line",x1:n,y1:c.position,x2:n+4,y2:c.position,stroke:e.tickColor,strokeWidth:e.axisWidth}),y||l.push({type:"text",content:c.label,x:n+8,y:c.position+4,anchor:"start",fontSize:11,fill:e.textColor,...b}));});}else {let[d,u]=this.#t.range();l.push({type:"line",x1:d,y1:n,x2:u,y2:n,stroke:e.axisColor,strokeWidth:e.axisWidth});for(let m of t)l.push({type:"line",x1:m.position,y1:n,x2:m.position,y2:n+6,stroke:e.tickColor,strokeWidth:e.axisWidth}),l.push({type:"text",content:m.label,x:m.position,y:n+18,anchor:"middle",fontSize:e.textSize,fill:e.textColor});}return l}};var R=class{static interpolateDataPoint(i,t,e){return {time:i.time+Math.round(e*(t.time-i.time)),value:(i.value??0)+e*((t.value??0)-(i.value??0))}}static interpolateAggregatedPoint(i,t,e){let n=(o,r)=>o!==null&&r!==null?o+e*(r-o):null;return {time:i.time+e*(t.time-i.time),min:n(i.min,t.min),max:n(i.max,t.max),avg:n(i.avg,t.avg),count:Math.round(i.count+e*(t.count-i.count))}}static getRuns(i,t,e=0){let n=[...i].sort((a,h)=>a.time-h.time),o=[],r=[],s=null;for(let a of n){let h=t(a),l=e>0&&s&&a.time-s.time>e;(h||l)&&r.length&&(o.push(r),r=[]),h||r.push(a),s=a;}return r.length&&o.push(r),o}static splitByBoundaries(i,t,e,n){if(i.length===0)return [];if(t.length===0)return [{data:i,zoneIndex:0}];let o=[...t].sort((h,l)=>h-l),r=[],s=h=>{let l=0;for(let d=0;d<o.length&&h>=o[d];d++)l=d+1;return l},a=[i[0]];for(let h=1;h<i.length;h++){let l=i[h-1],d=i[h],u=e(l),m=e(d),c;m>u?c=o.filter(f=>f>u&&f<=m):m<u?c=o.filter(f=>f>=m&&f<u).reverse():c=[];for(let f of c){let y=(f-u)/(m-u),b=n(l,d,y);a.push(b),r.push({data:a,zoneIndex:s((u+f)/2)}),a=[b];}a.push(d);}if(a.length>0){let h=e(a[0]),l=e(a[a.length-1]);r.push({data:a,zoneIndex:s((h+l)/2)});}return r}static splitByThreshold(i,t,e,n){let o=this.splitByBoundaries(i,[t],e,n),r={above:[],below:[]};for(let s of o)s.zoneIndex===0?r.below.push(s.data):r.above.push(s.data);return r}};function Gt(i,t=6e4){if(i.length<2)return [];let e=[...i].sort((o,r)=>o.time-r.time),n=[];for(let o=1;o<e.length;o++)e[o].time-e[o-1].time>t&&n.push({startTime:e[o-1].time,endTime:e[o].time});return n}function ye(i,t=83144){let e=t/8.314,n=0,o=0;for(let s of i)s!==null&&(n+=Math.exp(-e/(s+273.15)),o++);if(o===0)return null;let r=n/o;return e/-Math.log(r)-273.15}function Et(i,t,e=83144){let n=new Array(i.length),o=0;for(let r=0;r<i.length;r++){let s=i[r].time,a=s-t;for(;o<r&&i[o].time<a;)o++;let h=i.slice(o,r+1).map(d=>d.value),l=ye(h,e);n[r]={time:s,value:l,synthetic:true};}return n}function be(i){let t=0,e=0;for(let r of i)r!==null&&(t+=r,e++);if(e===0)return null;let n=t/e,o=0;for(let r of i){if(r===null)continue;let s=r-n;o+=s*s;}return Math.sqrt(o/e)}function xe(i){let t=0,e=0;for(let r of i)r!==null&&(t+=r,e++);if(e<2)return null;let n=t/e,o=0;for(let r of i){if(r===null)continue;let s=r-n;o+=s*s;}return Math.sqrt(o/(e-1))}function Vt(i,t,e=false){let n=new Array(i.length),o=0,r=e?xe:be;for(let s=0;s<i.length;s++){let a=i[s].time,h=a-t;for(;o<s&&i[o].time<h;)o++;let l=i.slice(o,s+1).map(u=>u.value),d=r(l);n[s]={time:a,value:d,synthetic:true};}return n}function Nt(i){return {id:i.id,line:{stroke:i.stroke??p.stroke,strokeWidth:i.strokeWidth??p.strokeWidth,smoothing:i.smoothing??false,dashed:i.dashed??false},fill:i.fill??p.areaFillAlpha,markers:{type:i.pointStyle??"none",size:i.pointSize??p.pointSize,stroke:i.stroke??p.stroke,fill:"#ffffff"},shadow:{color:i.shadowColor??"transparent",blur:i.shadowBlur??0,offsetX:i.shadowOffsetX??0,offsetY:i.shadowOffsetY??0}}}function ht(i,t,e){let n=[],o=i.reduce((s,a)=>s+a.data.length,0),r=Nt(e);for(let s=0;s<i.length;s++){let a=i[s];a.data.length>=2?n.push({type:"path",id:e.id?`${e.id}-line-${s}`:void 0,points:a.data.map(h=>({x:t.timeScale.map(h.time),y:t.valueScale.map(h.value)})),stroke:a.color??r.line.stroke,strokeWidth:r.line.strokeWidth,smoothing:r.line.smoothing,dashed:r.line.dashed,shadowColor:r.shadow.color,shadowBlur:r.shadow.blur,shadowOffsetX:r.shadow.offsetX,shadowOffsetY:r.shadow.offsetY,fill:"none"}):a.data.length===1&&o===1&&n.push({type:"circle",cx:t.timeScale.map(a.data[0].time),cy:t.valueScale.map(a.data[0].value),r:Math.max(r.markers.size,r.line.strokeWidth),fill:a.color??r.line.stroke,shadowColor:r.shadow.color,shadowBlur:r.shadow.blur});}return n}function Yt(i){let t=[];for(let e of i)t.length===0?t.push(e):t.push({x:e.x,y:t[t.length-1].y},e);return t}function Mt(i,t,e,n){if(i.length<2)return [];let o=R.splitByBoundaries(i,e.boundaries,e.getValue,e.interpolate),r=[];for(let s=0;s<o.length;s++){let a=o[s];if(a.data.length<2)continue;let h=e.getColor(a.zoneIndex);if(!h)continue;let l=a.data.map(u=>({x:t.timeScale.map(u.time),y:t.valueScale.map(e.yLow(u))})),d=a.data.map(u=>({x:t.timeScale.map(u.time),y:t.valueScale.map(e.yHigh(u))})).reverse();r.push({type:"path",id:n?.id?`${n.id}-fill-${s}`:void 0,points:[...l,...d],fill:h,hatch:e.getHatch?.(a.zoneIndex),stroke:"none"});}return r}function zt(i,t,e,n){let o=Nt(e);if(!o.markers.type||o.markers.type==="none")return [];let r=[];for(let s=0;s<i.length;s++){let a=i[s],h=t.timeScale.map(a.time),l=t.valueScale.map(a.value),d=n(a),u=e.pointStroke??d,m=e.pointFill??d,c=e.pointStrokeWidth??1.5,f=e.id?`${e.id}-marker-${s}`:void 0;Lt(r,f,o.markers.type,h,l,o.markers.size,u,m,c);}return r}function Lt(i,t,e,n,o,r,s,a,h){switch(e){case "circle":i.push({type:"circle",cx:n,cy:o,r,fill:a,stroke:s,strokeWidth:h,id:t});break;case "square":i.push({type:"rect",x:n-r,y:o-r,w:r*2,h:r*2,fill:a,stroke:s,strokeWidth:h,id:t});break;case "cross":i.push({type:"line",x1:n-r,y1:o-r,x2:n+r,y2:o+r,stroke:s,strokeWidth:h,id:t},{type:"line",x1:n-r,y1:o+r,x2:n+r,y2:o-r,stroke:s,strokeWidth:h,id:t});break;case "diamond":i.push({type:"path",points:[{x:n,y:o-r},{x:n+r,y:o},{x:n,y:o+r},{x:n-r,y:o}],fill:a,stroke:s,strokeWidth:h,id:t});break;case "triangle":i.push({type:"path",points:[{x:n,y:o-r},{x:n+r,y:o+r},{x:n-r,y:o+r}],fill:a,stroke:s,strokeWidth:h,id:t});break;case "star":{let l=[];for(let d=0;d<10;d++){let u=d%2===0?r:r*.5,m=Math.PI/2*3+d*Math.PI/5;l.push({x:n+u*Math.cos(m),y:o+u*Math.sin(m)});}i.push({type:"path",points:l,fill:a,stroke:s,strokeWidth:h,id:t});break}case "arrow":i.push({type:"path",points:[{x:n-r,y:o+r},{x:n,y:o-r},{x:n+r,y:o+r}],stroke:s,strokeWidth:h,fill:"none",id:t});break;case "plus":i.push({type:"line",x1:n-r,y1:o,x2:n+r,y2:o,stroke:s,strokeWidth:h,id:t},{type:"line",x1:n,y1:o-r,x2:n,y2:o+r,stroke:s,strokeWidth:h,id:t});break;case "triangle-down":i.push({type:"path",points:[{x:n,y:o+r},{x:n+r,y:o-r},{x:n-r,y:o-r}],fill:a,stroke:s,strokeWidth:h,id:t});break;case "hexagon":{let l=[];for(let d=0;d<6;d++){let u=d*(Math.PI/3);l.push({x:n+r*Math.cos(u),y:o+r*Math.sin(u)});}i.push({type:"path",points:l,fill:a,stroke:s,strokeWidth:h,id:t});break}case "hourglass":i.push({type:"path",points:[{x:n-r,y:o-r},{x:n+r,y:o-r},{x:n-r,y:o+r},{x:n+r,y:o+r}],fill:a,stroke:s,strokeWidth:h,id:t});break;case "line-horizontal":i.push({type:"line",x1:n-r,y1:o,x2:n+r,y2:o,stroke:s,strokeWidth:h,id:t});break;default:i.push({type:"circle",cx:n,cy:o,r,fill:a,stroke:s,strokeWidth:h,id:t});}}var tt=class i{#t;#e;static uidcnt=0;#n;constructor(t,e=[]){this.#t=t.id??"series-"+ ++i.uidcnt,this.#e=t.timeScale,this.#n=e;}get id(){return this.#t}get timeScale(){return this.#e}get data(){return this.#n}};var dt=class extends tt{#t;constructor(t){super(t,t.data),this.#t=t;}render(){let t=this.#t,e=t.minColor??p.minColor,n=t.maxColor??p.maxColor,o=t.avgColor??p.avgColor,r=t.avgDashed??true,s=t.smoothing??false,a=t.strokeWidth??p.strokeWidth,h=R.getRuns(this.data,c=>c.min===null||c.max===null||c.avg===null);if(h.length===0)return [];let l={timeScale:this.timeScale,valueScale:t.valueScale},d=[];h.forEach((c,f)=>{c.length<2||(t.fillToMax&&d.push(...Mt(c,l,{boundaries:[],yLow:y=>y.avg,yHigh:y=>y.max,getValue:y=>y.avg,interpolate:R.interpolateAggregatedPoint,getColor:()=>t.fillToMax,getHatch:()=>t.fillToMaxHatch},{id:this.id?`${this.id}-fillToMax-${f}`:void 0})),t.fillToMin&&d.push(...Mt(c,l,{boundaries:[],yLow:y=>y.avg,yHigh:y=>y.min,getValue:y=>y.avg,interpolate:R.interpolateAggregatedPoint,getColor:()=>t.fillToMin,getHatch:()=>t.fillToMinHatch},{id:this.id?`${this.id}-fillToMin-${f}`:void 0})));});let u=h.filter(c=>c.length>=2),m=c=>u.map(f=>({data:f.map(y=>({time:y.time,value:c(y)}))}));return d.push(...ht(m(c=>c.max),l,{stroke:n,strokeWidth:a,smoothing:s,id:this.id?`${this.id}-max`:void 0}),...ht(m(c=>c.min),l,{stroke:e,strokeWidth:a,smoothing:s,id:this.id?`${this.id}-min`:void 0}),...ht(m(c=>c.avg),l,{stroke:o,strokeWidth:a,smoothing:s,dashed:r,id:this.id?`${this.id}-avg`:void 0})),d}};var mt=class extends tt{#t;constructor(t){super(t,t.data),this.#t=t;}opacity(t){if(!(this.#t.countOpacity??false))return .6;let e=0;for(let n of this.data)n.count>e&&(e=n.count);return e===0?.2:.2+.8*t/e}render(){let t=this.#t,e=t.fill??p.bandFill,n=t.hatch,o=t.avgLine??false,r=t.avgLineColor??p.bandAvgLine,s=t.bandWidth??10,a=[];for(let h of this.data){if(h.min===null||h.max===null)continue;let l=this.timeScale.map(h.time),d=t.valueScale.map(h.max),u=t.valueScale.map(h.min),m=s,c=this.data.indexOf(h);if(a.push({type:"rect",x:l-m/2,y:d,w:m,h:u-d,fill:e,hatch:n,opacity:this.opacity(h.count),id:this.id?`${this.id}-slot-${c}`:void 0}),o&&h.avg!==null){let f=t.valueScale.map(h.avg);a.push({type:"line",x1:l-m/2,y1:f,x2:l+m/2,y2:f,stroke:r,strokeWidth:1,id:this.id?`${this.id}-avg-${c}`:void 0});}}return a}};function Se(i){return i==="dotted"?{dash:"dotted"}:i==="dashed"?{dash:"dashed"}:{}}function qt(i){let{thresholds:t,valueScale:e,xRange:n}=i,[o,r]=n,[s,a]=e.range(),h=Math.min(s,a),l=Math.max(s,a),d=[],u=[];for(let m of t){let c=m.color??p.thresholdColor,f=e.map(m.value);m.fill==="above"?d.push({type:"rect",x:o,y:h,w:r-o,h:Math.max(0,f-h),fill:c,hatch:m.fillHatch,opacity:m.fillOpacity??.12,id:m.id?`${m.id}-fill`:void 0}):m.fill==="below"&&d.push({type:"rect",x:o,y:f,w:r-o,h:Math.max(0,l-f),fill:c,hatch:m.fillHatch,opacity:m.fillOpacity??.12,id:m.id?`${m.id}-fill`:void 0});let y=m.line??p.thresholdLine;if(y!=="none"){let b=Se(y),_={type:"line",x1:o,y1:f,x2:r,y2:f,stroke:c,strokeWidth:1,...b,id:m.id?`${m.id}-line`:void 0};m.shadowColor&&(_.shadowColor=m.shadowColor,_.shadowBlur=m.shadowBlur??4,_.shadowOffsetX=m.shadowOffsetX??0,_.shadowOffsetY=m.shadowOffsetY??2),d.push(_);}if(m.label!==false){let b=m.label&&typeof m.label=="object"?m.label:void 0,_=typeof m.label=="string"?m.label:b?.text??m.name,T=b?.position??"right";u.push({..._e(_,T,o,r,f,c,b),id:m.id?`${m.id}-label`:void 0});}}return {inside:d,labels:u}}function _e(i,t,e,n,o,r,s){let a=(e+n)/2,h={type:"text",content:i,fontSize:p.thresholdFontSize,fill:r},l=s?{...s.rotate!==void 0&&{rotate:s.rotate},...s.textBaseline!==void 0&&{textBaseline:s.textBaseline}}:{};switch(t){case "left":return {...h,...l,x:e+4,y:o-4,anchor:"start"};case "above":return {...h,...l,x:a,y:o-6,anchor:"middle"};case "below":return {...h,...l,x:a,y:o+14,anchor:"middle"};case "center":return {...h,...l,x:a,y:o-4,anchor:"middle"};case "outside-left":return {...h,...l,x:e-6,y:o+3,anchor:"end",textBaseline:l.textBaseline??"middle"};case "outside-right":return {...h,...l,x:n+6,y:o+3,anchor:"start",textBaseline:l.textBaseline??"middle"};default:return {...h,...l,x:n-4,y:o-4,anchor:"end"}}}function Xt(i){let{gaps:t,timeScale:e,yRange:n,fill:o=p.gapFill,hatch:r,fillOpacity:s=p.gapFillOpacity,stroke:a=p.gapStroke,strokeWidth:h=p.gapStrokeWidth,dashed:l=true,fontSize:d=p.gapFontSize,fontFill:u=p.gapFontColor,labelBaseline:m="middle",labelRotate:c}=i,[f,y]=n,b=[];for(let _ of t){let T=e.map(_.startTime),N=e.map(_.endTime),P=_.fill??o,L=_.hatch??r,I=_.fillOpacity??s,B=_.label??"",E=_.rotate??c,G=_.labelBaseline??m;if(_.style==="dashed_border"||!_.style?b.push({type:"rect",x:T,y:f,w:N-T,h:y-f,fill:P,hatch:L,opacity:I,stroke:a,strokeWidth:h,dashed:l}):_.style==="empty"&&b.push({type:"rect",x:T,y:f,w:N-T,h:y-f,fill:P,hatch:L,opacity:I}),B){let x=ve(f,y,G),w=G==="above"?"top":G==="below"?"bottom":"middle";b.push({type:"text",content:B,x:(T+N)/2,y:x,anchor:"middle",fontSize:d,fill:u,textBaseline:w,rotate:E});}}return b}function ve(i,t,e){switch(e){case "above":return i-12;case "below":return t+4;default:return (i+t)/2}}var ut=class{#t;constructor(t,e,n,o){this.#t={...t,xRange:e,y:n,height:o};}render(){let{items:t,timeScale:e,background:n,hatch:o,showAxis:r,xRange:s,y:a,height:h}=this.#t,l=[];n&&l.push({type:"rect",x:s[0],y:a,w:s[1]-s[0],h,fill:n,opacity:.04,stroke:"#ddd",strokeWidth:.25});for(let d of t){let u=e.map(d.startTime),m=e.map(d.endTime);if(!(m-u<1)&&(l.push({type:"rect",x:u,y:a,w:m-u,h,hatch:d.hatch??o,fill:d.fill??"#6b728044",stroke:d.stroke,strokeWidth:d.strokeWidth??0}),d.label)){let c=d.labelFontSize??10;l.push({type:"text",content:d.label,x:(u+m)/2,y:this.#e(d.labelBaseline,c),anchor:"middle",fontSize:c,fill:d.labelFill??"#333"});}}if(r){let d=new Q({domain:e.domain(),xRange:s,y:a+h+4});l.push({type:"group",cssClass:"annotation-band-axis",commands:d.render()});}return l}#e(t,e){let{y:n,height:o}=this.#t;switch(t){case "top":return n+e*.9;case "bottom":return n+o-e*.25;default:return n+o/2+e*.35}}};function Ut(i){let{highlights:t,timeScale:e,yRange:n,height:o}=i,[r,s]=n,a=[];for(let h of t){let l=e.map(h.startTime),d=e.map(h.endTime);a.push({type:"rect",x:l,y:r,w:d-l,h:s-r,fill:h.color??p.highlightColor,opacity:h.opacity??p.highlightOpacity}),h.label&&a.push({type:"text",content:h.label,x:(l+d)/2,y:we(h.labelPosition??"top",r,s,o),anchor:"middle",fontSize:p.annotationFontSize,fill:h.color??p.highlightLabelColor,rotate:h.rotate});}return a}function we(i,t,e,n){switch(i){case "above":return t-5;case "below":return n!==void 0?n-5:e+14;case "center":return (t+e)/2+4;case "bottom":return e-6;default:return t+14}}function Kt(i){let{markers:t,timeScale:e,valueScale:n,yRange:o=[0,300]}=i,[r,s]=o,a=[];for(let h of t){let l=e.map(h.time),d=h.color??p.markerColor,u=h.pointStyle??(h.value!==void 0?"circle":"none"),m=h.lineStyle??"full";if(h.value!==void 0){let c=n.map(h.value);if(m==="to-value"?a.push({type:"line",x1:l,y1:s,x2:l,y2:c,stroke:d,strokeWidth:1,dashed:true}):m==="to-top"?a.push({type:"line",x1:l,y1:r,x2:l,y2:c,stroke:d,strokeWidth:1,dashed:true}):m==="full"&&a.push({type:"line",x1:l,y1:r,x2:l,y2:s,stroke:d,strokeWidth:1}),u!=="none"&&Lt(a,void 0,u,l,c,p.markerSize,d,d,1.5),h.label){let f=m==="to-value"?c-10:r-6;a.push({type:"text",content:h.label,x:l,y:f,anchor:"middle",fontSize:11,fill:d});}}else a.push({type:"line",x1:l,y1:r,x2:l,y2:s,stroke:d,strokeWidth:1}),h.label&&a.push({type:"text",content:h.label,x:l,y:r-6,anchor:"middle",fontSize:11,fill:d});}return a}function Zt(i){let{annotations:t,timeScale:e,valueScales:n}=i,o=[],r=s=>{let a=n.get(s.axis??0)??n.values().next().value;return {x:e.map(s.time),y:a?a.map(s.value):0}};for(let s of t){let a=[],h=l=>a.push(l);switch(s.type){case "line":{let l=r(s.from),d=r(s.to);h({type:"line",x1:l.x,y1:l.y,x2:d.x,y2:d.y,stroke:s.color??p.annotationColor,strokeWidth:s.width??p.annotationWidth,dash:s.dash});break}case "arrow":{let l=r(s.from),d=r(s.to),u=s.color??p.annotationColor,m=s.headSize??p.annotationHead;h({type:"line",x1:l.x,y1:l.y,x2:d.x,y2:d.y,stroke:u,strokeWidth:s.width??p.annotationWidth});let c=Math.hypot(d.x-l.x,d.y-l.y)||1,f=(d.x-l.x)/c,y=(d.y-l.y)/c,b=d.x-f*m,_=d.y-y*m;h({type:"path",points:[{x:d.x,y:d.y},{x:b-y*m*.5,y:_+f*m*.5},{x:b+y*m*.5,y:_-f*m*.5}],fill:u,stroke:"none"});break}case "rect":{let l=r(s.from),d=r(s.to);h({type:"rect",x:Math.min(l.x,d.x),y:Math.min(l.y,d.y),w:Math.abs(d.x-l.x),h:Math.abs(d.y-l.y),fill:s.fill??"none",stroke:s.stroke,opacity:s.opacity});break}case "point":{let l=r(s.at),d=s.color??"#334155",u=s.radius??p.annotationRadius,m=s.shape??"circle";m==="circle"?h({type:"circle",cx:l.x,cy:l.y,r:u,fill:d}):m==="square"?h({type:"rect",x:l.x-u,y:l.y-u,w:u*2,h:u*2,fill:d}):(h({type:"line",x1:l.x-u,y1:l.y-u,x2:l.x+u,y2:l.y+u,stroke:d,strokeWidth:1.5}),h({type:"line",x1:l.x-u,y1:l.y+u,x2:l.x+u,y2:l.y-u,stroke:d,strokeWidth:1.5}));break}case "label":{let l=r(s.at);h({type:"text",content:s.text,x:l.x+(s.dx??0),y:l.y+(s.dy??0),anchor:s.anchor??"middle",fontSize:p.annotationFontSize,fill:s.color??p.annotationColor,rotate:s.rotate});break}}if(s.id&&a.length>0){let l=nt(s.id);o.push({type:"group",cssClass:`annotation annotation--${l}`,commands:a});}else o.push(...a);}return o}var U=12,ct=8,Dt=20,ke=11,Pt=18,Bt=i=>i.length*ke*.6;function Jt(i,t="vertical"){if(t==="horizontal"){let n=0;for(let o of i)n+=U+ct+Bt(o.name)+Pt;return {width:Math.max(0,n-Pt),height:Dt}}let e=0;for(let n of i)e=Math.max(e,Bt(n.name));return {width:U+ct+e,height:i.length*Dt}}function Qt(i){let{items:t,x:e,y:n,orientation:o="vertical"}=i,r=[],s=e;return t.forEach((a,h)=>{let l=o==="horizontal"?s:e,d=o==="horizontal"?n:n+h*Dt;r.push({type:"rect",x:l,y:d,w:U,h:U,fill:a.color,stroke:p.legendStroke,strokeWidth:1},{type:"text",content:a.name,x:l+U+ct,y:d+U-2,fontSize:p.legendFont,fill:p.legendText}),o==="horizontal"&&(s+=U+ct+Bt(a.name)+Pt);}),{type:"group",cssClass:"chart-legend",commands:r}}function te(i){let{xTicks:t,yTicks:e,xRange:n,yRange:o,stroke:r=p.gridStroke,strokeWidth:s=p.gridStrokeWidth,dashed:a=false,opacity:h=p.gridOpacity}=i,l=[];if(e)for(let d of e)l.push({type:"line",x1:n[0],y1:d,x2:n[1],y2:d,stroke:r,strokeWidth:s,dashed:a,opacity:h});if(t)for(let d of t)l.push({type:"line",x1:d,y1:o[0],x2:d,y2:o[1],stroke:r,strokeWidth:s,dashed:a,opacity:h});return l}function ee(i,t,e){let n=i??t;if(n==="series")return null;if(n==="chartTop")return e.chartTop;if(n==="chartBottom")return e.chartBottom;if(typeof n=="object"&&"threshold"in n){let o=e.thresholds.get(n.threshold);if(!o)throw new Error(`fillSpec region references unknown threshold '${n.threshold}'`);return e.valueScale.map(o.value)}return typeof n=="object"&&"value"in n?e.valueScale.map(n.value):null}function Ce(i){return typeof i=="string"?{color:i}:{color:i.color,hatch:i.hatch}}function ne(i,t,e){let n=ee(i.from,"chartBottom",t),o=ee(i.to,"series",t),{color:r,hatch:s}=Ce(i.fill),a={type:"path",fill:r,hatch:s,stroke:"none",...t.idPrefix&&{id:`${t.idPrefix}-fill-r${e}`}};if(n!==null&&o!==null){let m=t.timeScale.range(),c=m[0],f=m[1],y=Math.min(n,o),b=Math.max(n,o);return [{...a,points:[{x:c,y},{x:f,y},{x:f,y:b},{x:c,y:b}]}]}let h=n??o,l=[],d=Te(i,t);if(d===null){let m=t.valueScale.domain();d=(n??o)===t.chartBottom?m[0]:m[1];}let u=ie(i.outer,t);for(let m of t.runs){if(m.length<2)continue;let c=R.splitByThreshold(m,d,y=>y.value??d,R.interpolateDataPoint),f=i.side==="above"?c.above:i.side==="below"?c.below:[...c.above,...c.below];if(u!==null&&i.side){let y=i.side==="above"?"below":"above";f=f.flatMap(b=>{if(b.length<2)return [];let _=R.splitByThreshold(b,u,T=>T.value??u,R.interpolateDataPoint);return y==="above"?_.above:_.below});}for(let y of f){if(y.length<2)continue;let b=y.map(T=>({x:t.timeScale.map(T.time),y:t.valueScale.map(T.value)})),_=[...b].reverse().map(T=>({x:T.x,y:h}));l.push({...a,smoothing:t.smoothing,smoothCount:b.length,points:[...b,..._]});}}return l}function Te(i,t){let e=i.from==="series"?i.to:i.from;return ie(e,t)}function ie(i,t){return i===void 0||i==="series"||i==="chartTop"||i==="chartBottom"?null:typeof i=="object"&&"threshold"in i?t.thresholds.get(i.threshold)?.value??null:typeof i=="object"&&"value"in i?i.value:null}function re(i,t){if(typeof i=="string"||!("regions"in i))return ne({fill:i},t,0);let e=[];return i.regions.forEach((n,o)=>{e.push(...ne(n,t,o));}),e}function oe(i,t){let e=new Array(i.length),n=0;for(let o=0;o<i.length;o++){let r=i[o].time,s=r-t;for(;n<o&&i[n].time<s;)n++;let a=0,h=0;for(let l=n;l<=o;l++){let d=i[l].value;d!==null&&(a+=d,h++);}e[o]={time:r,value:h===0?null:a/h,synthetic:true};}return e}function ae(i){let t=i.style?.line,e=t&&!Array.isArray(t)?t:void 0;return {color:e?.color??p.stroke,width:e?.width??p.strokeWidth,dash:e?.style,smoothing:e?.smoothing??false}}function se(i,t,e,n){let o=i.filter(h=>h.value!==null);if(o.length<2)return [];let r=o.map(h=>({x:t.timeScale.map(h.time),y:t.valueScale.map(h.value)})),s=ae(e);return [{type:"path",id:t.idPrefix?`${t.idPrefix}-overlay-${n}`:`overlay-${n}`,points:r,stroke:s.color,strokeWidth:s.width,smoothing:s.smoothing,dash:s.dash,fill:"none"}]}function le(i,t){switch(i.kind){case "movingAverage":{i.type;let e=oe(t.data,i.window);return se(e,t,i,"movingAvg")}case "movingMkt":{let e=Et(t.data,i.window,i.activationEnergy);return se(e,t,i,"movingMkt")}case "limits":{let e=[],n=t.timeScale.range(),o=n[0],r=n[1],s=ae(i),a=s.color,h=s.width,l=s.dash??"dashed",d=t.idPrefix?`${t.idPrefix}-`:"";return i.high!==void 0&&e.push({type:"line",id:`${d}overlay-limit-high`,x1:o,y1:t.valueScale.map(i.high),x2:r,y2:t.valueScale.map(i.high),stroke:a,strokeWidth:h,dash:l}),i.low!==void 0&&e.push({type:"line",id:`${d}overlay-limit-low`,x1:o,y1:t.valueScale.map(i.low),x2:r,y2:t.valueScale.map(i.low),stroke:a,strokeWidth:h,dash:l}),e}case "stdDevBand":{let e=i.multiplier??1,n=oe(t.data,i.window),o=Vt(t.data,i.window),r=[],s=[];for(let y=0;y<n.length;y++){let b=n[y].value,_=o[y].value;if(b===null||_===null)continue;let T=t.timeScale.map(n[y].time);r.push({x:T,y:t.valueScale.map(b+e*_)}),s.push({x:T,y:t.valueScale.map(b-e*_)});}if(r.length<2)return [];let a=t.idPrefix?`${t.idPrefix}-`:"",h=[],d=(typeof i.style?.fill=="string"||i.style?.fill&&!("regions"in i.style.fill)?i.style.fill:void 0)??"#94a3b833",{color:u,hatch:m}=$e(d);h.push({type:"path",id:`${a}overlay-stdDevBand`,points:[...r,...[...s].reverse()],fill:u,hatch:m,stroke:"none"});let c=i.style?.line,f=c&&!Array.isArray(c)?c:void 0;if(f){let y=n.filter(b=>b.value!==null).map(b=>({x:t.timeScale.map(b.time),y:t.valueScale.map(b.value)}));y.length>=2&&h.push({type:"path",id:`${a}overlay-stdDevBand-mean`,points:y,stroke:f.color??p.stroke,strokeWidth:f.width??1.5,smoothing:f.smoothing,dash:f.style,fill:"none"});}return h}}}function $e(i){return typeof i=="string"?{color:i}:{color:i.color,hatch:i.hatch}}function Ae(i){if(!i)return {gaps:[],autoDetect:false,minGapMs:6e4};if(Array.isArray(i))return {gaps:i,autoDetect:false,minGapMs:6e4};let t=i.regions??[],e=i.style;return {gaps:t.map(o=>{let r={...e,...o.style},s=r.fill,a,h;return typeof s=="string"?a=s:s&&(a=s.color,h=s.hatch),{startTime:o.startTime,endTime:o.endTime,label:o.label,fill:a,hatch:h,fillOpacity:r.opacity,labelBaseline:r.label?.baseline,rotate:r.label?.rotate,style:r.display==="filled"||r.display==="bridge_line"?void 0:r.display}}),autoDetect:i.autoDetect??false,minGapMs:i.minGapMs??6e4}}function pt(i){return "showAs"in i&&!!i.showAs}var K=class{_layout;_renderer;_locale;_legend;_markers;_thresholds;_highlights;_gaps;_gapsAutoDetect;_gapsMinGapMs;_annotations;_annotationBands;_disabledAnnotations=new Set;_annotationSeq=0;_axes;_series;readonly_annotationBandHeight=0;_timeScale;_valueScales=new Map;constructor(t={}){this._layout=new et({width:t.width??800,height:t.height??400,margin:t.margin??{top:20,right:20,bottom:40,left:60}}).compute(),this._renderer=t.renderer,this._locale=t.locale,this._legend=t.legend,this._markers=t.markers??[],this._thresholds=t.thresholds??[],this._highlights=t.highlights??[];let e=Ae(t.gaps);this._gaps=e.gaps,this._gapsAutoDetect=e.autoDetect,this._gapsMinGapMs=e.minGapMs,this._annotations=t.annotations??[],this._annotationBands=t.annotationBands??[],this._axes=t.axes,this._series=[],t.series&&this.setData(t.series);}getWidth(){return this._layout.totalWidth}getHeight(){return this._layout.totalHeight+this._annotationBandTotalHeight()}get series(){return this._series}_annotationBandTotalHeight(){let t=0;for(let e of this._annotationBands){let n=e.height??12,o=e.spacing??0;(e.showAxis??false)&&(t+=26+o),t+=n+o;}return t}setData(t){this._series=t.filter(e=>Array.isArray(e.data));}addAnnotation(t){let e=t.id??`anno-${++this._annotationSeq}`;return this._annotations.push({...t,id:e}),e}removeAnnotation(t){let e=this._annotations.length;return this._annotations=this._annotations.filter(n=>n.id!==t),this._disabledAnnotations.delete(t),this._annotations.length<e}setAnnotations(t){this._annotations=[...t],this._disabledAnnotations.clear();}clearAnnotations(){this._annotations=[],this._disabledAnnotations.clear();}getAnnotations(){return this._annotations}disableAnnotation(t){this._disabledAnnotations.add(t);}enableAnnotation(t){this._disabledAnnotations.delete(t);}_axisIndexOf(t){return t.yAxisIndex??0}_timesOf(t){return t.data.map(e=>e.time)}_valuesOf(t){if(pt(t)){let e=[];for(let n of t.data)n.min!==null&&e.push(n.min),n.max!==null&&e.push(n.max);return e}return t.data.map(e=>e.value).filter(e=>e!==null)}renderCommands(){if(this._series.length===0)return [];let t=this._legendItems(),e=(this._legend?.show??false)&&t.length>0,n=this._legend?.position??"inside-right",o=this._legend?.orientation??"vertical",r=e?Jt(t,o):{width:0},s=this._layout;if(e&&(n==="outside-right"||n==="outside-left")){let g=r.width+16,S={...this._layout.margin};n==="outside-right"?S.right+=g:S.left+=g,s=new et({width:this._layout.totalWidth,height:this._layout.totalHeight,margin:S}).compute();}let{chartX:a,chartY:h,chartWidth:l,chartHeight:d}=s,u=[a,a+l],m=[h,h+d],c=[];for(let g of this._series)g.data.sort((S,v)=>S.time-v.time);let f=new Map,y=1/0,b=-1/0,_=false;for(let g of this._series){let S=this._axisIndexOf(g),v=f.get(S);v?v.push(g):f.set(S,[g]);for(let A of this._timesOf(g))A<y&&(y=A),A>b&&(b=A),_=true;}if(!_)return [];let T=this._axes?.x?.domain,N=T&&T!=="auto"?T:[y,b];this._timeScale=new J({domain:N,range:u,locale:this._locale});let P=g=>({axisColor:g?.color??p.axisColor,tickColor:g?.color??p.tickColor,textColor:p.textColor,textSize:p.textSize,axisWidth:g?.width??1}),L=new Q({domain:N,xRange:u,y:h+d,locale:this._locale,format:this._axes?.x?.format,maxTicks:this._axes?.x?.ticks?.major,colors:P(this._axes?.x?.axis)});this._valueScales.clear();let I=Array.from(f.keys()).sort((g,S)=>g-S),B,E=0,G=0;for(let g of I){let S=f.get(g),v=1/0,A=-1/0,M=false;for(let V of S)for(let at of this._valuesOf(V))at<v&&(v=at),at>A&&(A=at),M=true;if(!M)continue;let D;this._axes?.y&&this._axes.y.length>g?D=this._axes.y[g]:g===0?D=this._axes?.left:g===1&&(D=this._axes?.right);let Ct=D?.domain,Z=Ct&&Ct!=="auto"?Ct:[v,A],jt=new X({domain:Z,range:[h+d,h]});this._valueScales.set(g,jt);let Ht=this._thresholds.filter(V=>(V.axisIndex??0)===g&&V.label!==false&&V.value>=Math.min(Z[0],Z[1])&&V.value<=Math.max(Z[0],Z[1])).map(V=>jt.map(V.value)),Tt=D?.position??(g===0?"left":"right"),$t;if(Tt==="right"){let V=D?.offset!==void 0?D.offset:G*50;$t=a+l+V,G++;}else {let V=D?.offset!==void 0?D.offset:E*50;$t=a-V,E++;}let Ot=new lt({domain:Z,range:[h+d,h],x:$t,position:Tt,format:D?.format,ticks:D?.ticks?.major,colors:P(D?.axis),suppressLabelsNear:Ht.length?Ht:void 0});g===0&&(B=Ot),c.push({type:"group",cssClass:`value-axis ${Tt}`,commands:Ot.render()});}let x=this._valueScales.get(0)??this._valueScales.get(I[0]);c.push({type:"group",cssClass:"time-axis",commands:L.render()});let w=null,k=this._axes?.x?.grid?.major,$=this._axes?.left?.grid?.major;if(k!==void 0||$!==void 0){let g=k!==false,S=$!==false&&!!B,v=g?L.generateTicks().map(M=>M.x):void 0,A=S?B.generateTicks().map(M=>M.position):void 0;if(v||A){let M=(k&&typeof k=="object"?k:void 0)??($&&typeof $=="object"?$:void 0);w={type:"group",cssClass:"chart-grid",commands:te({xTicks:v,yTicks:A,xRange:u,yRange:m,stroke:M?.color,opacity:M?.opacity,dashed:M?.style==="dashed"})};}}if(this._highlights.length>0&&c.push({type:"group",cssClass:"highlights",commands:Ut({highlights:this._highlights,timeScale:this._timeScale,yRange:m,height:s.totalHeight})}),this._thresholds.length>0&&x){let g=[],S=[];for(let v of this._thresholds){let A=v.id??nt(v.name),M=this._valueScales.get(v.axisIndex??0)??x,D=qt({thresholds:[v],valueScale:M,xRange:u});D.inside.length&&g.push({type:"group",cssClass:`threshold threshold--${A}`,id:`threshold-${A}`,commands:D.inside}),D.labels.length&&S.push({type:"group",cssClass:`threshold-label threshold-label--${A}`,commands:D.labels});}g.length&&c.push({type:"group",cssClass:"thresholds",commands:g,clipRect:{x:a,y:h,w:l,h:d}}),S.length&&c.push({type:"group",cssClass:"threshold-labels",commands:S});}let H=this._gaps;if(this._gapsAutoDetect){let g=[];for(let S of this._series)pt(S)||g.push(...Gt(S.data,this._gapsMinGapMs));g.length>0&&(H=[...this._gaps,...g]);}H.length>0&&c.push({type:"group",cssClass:"gaps",commands:Xt({gaps:H,timeScale:this._timeScale,yRange:m})});let O=new Map(this._thresholds.map(g=>[g.id??g.name,g]));for(let g of this._series){if(g.data.length===0)continue;let S=this._valueScales.get(this._axisIndexOf(g));if(!S)continue;let v=nt(g.id??g.name);c.push({type:"group",cssClass:`series series--${v}`,id:`series-${v}`,commands:this._renderSeries(g,S,O)});}w&&c.push(w);let Y=this._markers.map(g=>({...g}));for(let g of Y)if(g.value===void 0&&(g.lineStyle==="to-value"||g.lineStyle==="to-top")){let S=this._series[g.seriesIndex??0];S&&!pt(S)&&S.data.length>=2&&(g.value=this._interpolateValue(g.time,S.data));}Y.length>0&&x&&c.push({type:"group",cssClass:"markers",commands:Kt({markers:Y,timeScale:this._timeScale,valueScale:x,yRange:m})});let F=this._annotations.filter(g=>!g.id||!this._disabledAnnotations.has(g.id));if(F.length>0&&c.push({type:"group",cssClass:"annotations",commands:Zt({annotations:F,timeScale:this._timeScale,valueScales:this._valueScales})}),this._annotationBands.length>0){let g=h+d+this._layout.margin.bottom,S=0;this._annotationBands.forEach(v=>{let A=v.height??12,M=v.spacing??0,D=g+S;(v.showAxis??false)&&(S+=26+M),S+=A+M,c.push({type:"group",cssClass:"annotation-band",commands:new ut({name:v.name,showAxis:v.showAxis??false,items:v.items,timeScale:this._timeScale,background:v.background,hatch:v.hatch},[a,a+l],D,A).render()});});}if(e&&n!=="separate"){let g,S;n==="inside-right"?(g=a+l-r.width-8,S=h+8):n==="inside-left"?(g=a+8,S=h+8):n==="outside-right"?(g=a+l+16,S=h):(g=8,S=h),c.push(Qt({items:t,x:g,y:S,orientation:o}));}let C=this._axes?.left?.label,W=this._axes?.right?.label,j=this._axes?.x?.label;if(C||W||j){let g=[],S=h+d/2,v=this._axes?.left?.labels,A=this._axes?.right?.labels,M=this._axes?.x?.labels;C&&g.push({type:"text",content:C,x:14,y:S,anchor:"middle",fontSize:v?.fontSize??p.axisLabelSize,fill:v?.color??p.axisLabelColor,rotate:-90}),W&&g.push({type:"text",content:W,x:s.totalWidth-14,y:S,anchor:"middle",fontSize:A?.fontSize??p.axisLabelSize,fill:A?.color??p.axisLabelColor,rotate:90}),j&&g.push({type:"text",content:j,x:a+l/2,y:s.totalHeight-6,anchor:"middle",fontSize:M?.fontSize??p.axisLabelSize,fill:M?.color??p.axisLabelColor}),g.length&&c.push({type:"group",cssClass:"axis-labels",commands:g});}return c}_renderSeries(t,e,n){let o=this._timeScale,r={timeScale:o,valueScale:e};if(pt(t)){let x=t.style?.line&&!Array.isArray(t.style.line)?t.style.line:void 0,w=typeof t.style?.fill=="string"?t.style.fill:void 0;return t.showAs==="minmaxavg"?new dt({data:t.data,timeScale:o,valueScale:e,minColor:t.minColor,maxColor:t.maxColor,avgColor:t.avgColor,avgDashed:t.avgDashed,fillToMax:t.fillToMax,fillToMaxHatch:t.fillToMaxHatch,fillToMin:t.fillToMin,fillToMinHatch:t.fillToMinHatch,smoothing:x?.smoothing,strokeWidth:x?.width,id:it(t.name,t.id)}).render():new mt({data:t.data,timeScale:o,valueScale:e,fill:w??x?.color,avgLine:t.avgLine,countOpacity:t.countOpacity,id:it(t.name,t.id)}).render()}let s=t,a=t.style?.line&&!Array.isArray(t.style.line)?t.style.line:void 0,h=a?.gapThreshold??p.gapThreshold,l=R.getRuns(t.data,x=>x.value===null,h),d=l.reduce((x,w)=>x+w.length,0);if(d===0)return [];let u=[],m=t.style?.markers,c=t.style?.shadow,f={stroke:a?.color??p.stroke,strokeWidth:a?.width??p.strokeWidth,smoothing:a?.smoothing,dashed:a?.style==="dashed",pointStyle:m?.type,pointSize:m?.size,pointStroke:m?.stroke,pointFill:m?.fill,pointStrokeWidth:m?.strokeWidth,shadowColor:c?.color,shadowBlur:c?.blur,shadowOffsetX:c?.offsetX,shadowOffsetY:c?.offsetY,id:it(t.name,t.id)},y=t.style?.line,b=y&&!Array.isArray(y)?y:void 0,_=b?.color,T=b?.width,N=b?.style,P=b?.smoothing,L=t.style?.fill;if(L!==void 0){let x=e.range(),w=Math.min(x[0],x[1]),k=Math.max(x[0],x[1]);u.push(...re(L,{runs:l,timeScale:o,valueScale:e,thresholds:n,chartTop:w,chartBottom:k,smoothing:a?.smoothing,idPrefix:t.id}));}let I=s.colorByThresholds??[],B=I.map(x=>n.get(x)).filter(x=>!!x).map(x=>x.value).sort((x,w)=>x-w),E=(x,w,k)=>{let $=k??f.stroke;for(let H of w){let O=n.get(H);O&&x>=O.value&&($=O.color??$);}return $};for(let x of l){if(x.length<2)continue;let w=R.splitByBoundaries(x,B,k=>k.value,R.interpolateDataPoint);for(let k=0;k<w.length;k++){let $=w[k];if($.data.length<2)continue;let H=($.data[0].value+$.data[$.data.length-1].value)/2,O=it(s.name,s.id),Y=$.data.map(j=>({x:o.map(j.time),y:e.map(j.value)})),F=O?`${O}-line-${k}`:void 0,C=(b?.shape??a?.shape)==="step",W=C?Yt(Y):Y;y===false||(y&&Array.isArray(y)?y.forEach((j,g)=>{u.push({type:"path",id:F?`${F}-${g}`:void 0,points:W,stroke:E(H,I,j.color),strokeWidth:j.width??f.strokeWidth,smoothing:C?false:j.smoothing??f.smoothing,dash:j.style,opacity:j.opacity,fill:"none",shadowColor:f.shadowColor,shadowBlur:f.shadowBlur,shadowOffsetX:f.shadowOffsetX,shadowOffsetY:f.shadowOffsetY});}):u.push({type:"path",id:F,points:W,stroke:E(H,I,_),strokeWidth:T??f.strokeWidth,smoothing:C?false:P??f.smoothing,dash:N,fill:"none",shadowColor:f.shadowColor,shadowBlur:f.shadowBlur,shadowOffsetX:f.shadowOffsetX,shadowOffsetY:f.shadowOffsetY}));}f.pointStyle&&f.pointStyle!=="none"&&d<=(m?.threshold??p.pointThreshold)&&u.push(...zt(x,r,f,k=>E(k.value,I)));}let G=t.overlays;if(G&&G.length>0){let x=e.range(),w={data:t.data,timeScale:o,valueScale:e,chartTop:Math.min(x[0],x[1]),chartBottom:Math.max(x[0],x[1]),idPrefix:t.id};for(let k of G)u.push(...le(k,w));}if(t.style?.gap&&l.length>1){let x=e.range(),w=Math.min(x[0],x[1]),k=Math.max(x[0],x[1]),$=t.style.gap,H=$.fill,O,Y;typeof H=="string"?O=H:H&&(O=H.color,Y=H.hatch);let F=$.opacity??.15,C=$.bridge;for(let W=1;W<l.length;W++){let j=l[W-1][l[W-1].length-1],g=l[W][0],S=o.map(j.time),v=o.map(g.time);if($.display==="bridge_line"){if(j.value===null||g.value===null)continue;let A=e.map(j.value),M=e.map(g.value);u.push({type:"line",x1:S,y1:A,x2:v,y2:M,stroke:C?.color??(typeof t.style?.line=="object"&&!Array.isArray(t.style.line)?t.style.line.color:void 0)??p.stroke,strokeWidth:C?.width??1.5,dash:C?.style??"dotted"});}else O!==void 0?u.push({type:"rect",x:S,y:w,w:v-S,h:k-w,fill:O,hatch:Y,opacity:F,stroke:"none"}):$.display!=="empty"&&u.push({type:"rect",x:S,y:w,w:v-S,h:k-w,stroke:p.gapStroke,strokeWidth:1,dashed:true,fill:"none"});}}return u}_interpolateValue(t,e){for(let n=1;n<e.length;n++){let o=e[n-1],r=e[n];if(!(o.value===null||r.value===null)&&t>=o.time&&t<=r.time){let s=(t-o.time)/(r.time-o.time);return o.value+s*(r.value-o.value)}}}legendItems(){return this._legendItems()}_legendItems(){return this._series.map(t=>{let e=t.style?.line&&!Array.isArray(t.style.line)?t.style.line:void 0;return {name:t.name,color:e?.color??p.stroke}})}get renderer(){return this._renderer}get layout(){return this._layout}get timeScale(){return this._timeScale}get valueScales(){return this._valueScales}invertTime(t){return this._timeScale?this._timeScale.invert(t):0}invertValue(t,e=0){let n=this._valueScales.get(e);return n?n.invert(t):0}project(t,e,n=0){let o=this._timeScale?this._timeScale.map(t):0,r=this._valueScales.get(n);return {x:o,y:r?r.map(e):0}}};var ft=class{};function Me(i){switch(i){case "top":return "text-top";case "bottom":return "text-bottom";default:return "middle"}}var q=class extends ft{#t="100%";#e="100%";#n;#i=new Map;#r=new Map;#o=new Map;constructor(t){super(),t?.width!==void 0&&(this.#t=t.width),t?.height!==void 0&&(this.#e=t.height),t?.background!==void 0&&(this.#n=t.background);}setBackgroundColor(t){this.#n=t;}render(t){this.#i.clear(),this.#r.clear(),this.#o.clear();let e=t.map(l=>this._toSVG(l));this.#n&&e.unshift(`<rect width="100%" height="100%" fill="${this._esc(this.#n)}" />`);let n=e.join(`
|
|
24
|
+
`.trim()}function Et(i,t=2){let e=t;switch(i){case "dotted":return {strokeDasharray:`0, ${e*2}`,strokeLinecap:"round"};case "sparse-dots":return {strokeDasharray:`0, ${e*4}`,strokeLinecap:"round"};case "dashed":return {strokeDasharray:`${e*3}, ${e*2}`,strokeLinecap:"butt"};case "long-dash":return {strokeDasharray:`${e*6}, ${e*3}`,strokeLinecap:"butt"};case "dense-dash":return {strokeDasharray:`${e*1.5}, ${e*1.5}`,strokeLinecap:"butt"};case "dash-dot":return {strokeDasharray:`${e*4}, ${e*2}, 0, ${e*2}`,strokeLinecap:"round"};case "dash-dot-dot":return {strokeDasharray:`${e*5}, ${e*2}, 0, ${e*2}, 0, ${e*2}`,strokeLinecap:"round"};case "loose-dash":return {strokeDasharray:`${e*3}, ${e*4}`,strokeLinecap:"butt"};default:return {strokeDasharray:"none",strokeLinecap:"butt"}}}var g=new Proxy({},{get:(i,t)=>Q()[t],has:(i,t)=>t in Q(),ownKeys:()=>Reflect.ownKeys(Q()),getOwnPropertyDescriptor:(i,t)=>Reflect.getOwnPropertyDescriptor(Q(),t)});var ot={axisColor:g.axisColor,tickColor:g.tickColor,textColor:g.textColor,textSize:g.textSize},tt=class{#t;#e;constructor(t){this.#t=new J({domain:t.domain,range:t.xRange,locale:t.locale}),this.#e=t;}get scale(){return this.#t}get axisColor(){return (this.#e.colors??ot).axisColor}get tickColor(){return (this.#e.colors??ot).tickColor}get textColor(){return (this.#e.colors??ot).textColor}get textSize(){return (this.#e.colors??ot).textSize}generateTicks(){let t=this.#e.minTicks??5,e=this.#e.maxTicks??12,o=this.#t.ticks({minTicks:t,maxTicks:e}).map(r=>({time:r,x:this.#t.map(r),label:this.tickLabel(r)}));return this.antiOverlap(o)}tickLabel(t){if(this.#e.format)return this.#e.format(new Date(t));let e=this.#e.minTicks??5,n=this.#e.maxTicks??12,{interval:o}=this.#t.tickInterval((e+n)/2,e,n),r={};return o<6e4?(r.hour="2-digit",r.minute="2-digit",r.second="2-digit"):o<36e5||o<864e5?(r.hour="2-digit",r.minute="2-digit"):o<31536e6?(r.day="numeric",r.month="short",o>=2592e6&&(r.day=void 0,r.month="long")):(r.year="numeric",o<2*31536e6&&(r.month="short")),this.#t.format(t,r)}antiOverlap(t){if(t.length<=1)return t;let e=60,n=[t[0]];for(let o=1;o<t.length;o++){let r=n[n.length-1].x;Math.abs(t[o].x-r)>=e&&n.push(t[o]);}return n}render(){let t=this.generateTicks(),e=this.#e.colors??ot,n=this.#e.y??0,o=[],[r,s]=this.#t.range();o.push({type:"line",x1:r,y1:n,x2:s,y2:n,stroke:e.axisColor,strokeWidth:e.axisWidth});for(let a of t)o.push({type:"line",x1:a.x,y1:n,x2:a.x,y2:n+6,stroke:e.tickColor,strokeWidth:e.axisWidth}),o.push({type:"text",content:a.label,x:a.x,y:n+e.textSize+6,anchor:"middle",fontSize:e.textSize,fill:e.textColor});return o}};var st={axisColor:"#ccc",tickColor:"#ddd",textColor:"#777",textSize:12};function xe(i){return Math.abs(i)>=1e6?`${(i/1e6).toFixed(1)}M`:Math.abs(i)>=1e3?`${(i/1e3).toFixed(1)}k`:Number.isInteger(i)?String(i):i.toFixed(1)}function Se(i){let t=new Array(i.length).fill(false),e=0;for(;e<i.length;){let n=e;for(;n+1<i.length&&i[n+1].label===i[e].label;)n++;for(let o=e+1;o<n;o++)t[o]=true;e=n+1;}return t}var dt=class{#t;#e;constructor(t){this.#t=new X({domain:t.domain,range:t.range}),this.#e=t;}get scale(){return this.#t}get axisColor(){return (this.#e.colors??st).axisColor}get tickColor(){return (this.#e.colors??st).tickColor}get textColor(){return (this.#e.colors??st).textColor}get textSize(){return (this.#e.colors??st).textSize}generateTicks(){let t=this.#e.format??xe,e=6,[n,o]=this.#t.domain(),r=o-n;if(r===0)return [{value:n,position:this.#t.map(n),label:t(n)}];let s=r/e,a=Math.pow(10,Math.floor(Math.log10(s))),h=s/a,l;h<=1.5?l=a:h<=3?l=2*a:h<=7?l=5*a:l=10*a;let d=[],u=Math.ceil(n/l)*l;for(let m=u;m<=o;m+=l)d.push({value:m,position:this.#t.map(m),label:t(m)});return d}render(){let t=this.generateTicks(),e=this.#e.colors??st,n=this.#e.x??0,o=this.#e.orientation??"vertical",r=this.#e.position??"left",s=this.#e.suppressLabelsNear??[],a=this.#e.suppressTolerancePx??8,h=d=>s.some(u=>Math.abs(u-d)<=a),l=[];if(o==="vertical"){let[d,u]=this.#t.range();l.push({type:"line",x1:n,y1:d,x2:n,y2:u,stroke:e.axisColor,strokeWidth:e.axisWidth});let m=Se(t);t.forEach((c,f)=>{let y=h(c.position),b=m[f]?{opacity:0}:{};r==="left"?(l.push({type:"line",x1:n-4,y1:c.position,x2:n,y2:c.position,stroke:e.tickColor,strokeWidth:e.axisWidth}),y||l.push({type:"text",content:c.label,x:n-8,y:c.position+4,anchor:"end",fontSize:11,fill:e.textColor,...b})):(l.push({type:"line",x1:n,y1:c.position,x2:n+4,y2:c.position,stroke:e.tickColor,strokeWidth:e.axisWidth}),y||l.push({type:"text",content:c.label,x:n+8,y:c.position+4,anchor:"start",fontSize:11,fill:e.textColor,...b}));});}else {let[d,u]=this.#t.range();l.push({type:"line",x1:d,y1:n,x2:u,y2:n,stroke:e.axisColor,strokeWidth:e.axisWidth});for(let m of t)l.push({type:"line",x1:m.position,y1:n,x2:m.position,y2:n+6,stroke:e.tickColor,strokeWidth:e.axisWidth}),l.push({type:"text",content:m.label,x:m.position,y:n+18,anchor:"middle",fontSize:e.textSize,fill:e.textColor});}return l}};var R=class{static interpolateDataPoint(i,t,e){return {time:i.time+Math.round(e*(t.time-i.time)),value:(i.value??0)+e*((t.value??0)-(i.value??0))}}static interpolateAggregatedPoint(i,t,e){let n=(o,r)=>o!==null&&r!==null?o+e*(r-o):null;return {time:i.time+e*(t.time-i.time),min:n(i.min,t.min),max:n(i.max,t.max),avg:n(i.avg,t.avg),count:Math.round(i.count+e*(t.count-i.count))}}static getRuns(i,t,e=0){let n=[...i].sort((a,h)=>a.time-h.time),o=[],r=[],s=null;for(let a of n){let h=t(a),l=e>0&&s&&a.time-s.time>e;(h||l)&&r.length&&(o.push(r),r=[]),h||r.push(a),s=a;}return r.length&&o.push(r),o}static splitByBoundaries(i,t,e,n){if(i.length===0)return [];if(t.length===0)return [{data:i,zoneIndex:0}];let o=[...t].sort((h,l)=>h-l),r=[],s=h=>{let l=0;for(let d=0;d<o.length&&h>=o[d];d++)l=d+1;return l},a=[i[0]];for(let h=1;h<i.length;h++){let l=i[h-1],d=i[h],u=e(l),m=e(d),c;m>u?c=o.filter(f=>f>u&&f<=m):m<u?c=o.filter(f=>f>=m&&f<u).reverse():c=[];for(let f of c){let y=(f-u)/(m-u),b=n(l,d,y);a.push(b),r.push({data:a,zoneIndex:s((u+f)/2)}),a=[b];}a.push(d);}if(a.length>0){let h=e(a[0]),l=e(a[a.length-1]);r.push({data:a,zoneIndex:s((h+l)/2)});}return r}static splitByThreshold(i,t,e,n){let o=this.splitByBoundaries(i,[t],e,n),r={above:[],below:[]};for(let s of o)s.zoneIndex===0?r.below.push(s.data):r.above.push(s.data);return r}};function Vt(i,t=6e4){if(i.length<2)return [];let e=[...i].sort((o,r)=>o.time-r.time),n=[];for(let o=1;o<e.length;o++)e[o].time-e[o-1].time>t&&n.push({startTime:e[o-1].time,endTime:e[o].time});return n}function _e(i,t=83144){let e=t/8.314,n=0,o=0;for(let s of i)s!==null&&(n+=Math.exp(-e/(s+273.15)),o++);if(o===0)return null;let r=n/o;return e/-Math.log(r)-273.15}function Nt(i,t,e=83144){let n=new Array(i.length),o=0;for(let r=0;r<i.length;r++){let s=i[r].time,a=s-t;for(;o<r&&i[o].time<a;)o++;let h=i.slice(o,r+1).map(d=>d.value),l=_e(h,e);n[r]={time:s,value:l,synthetic:true};}return n}function we(i){let t=0,e=0;for(let r of i)r!==null&&(t+=r,e++);if(e===0)return null;let n=t/e,o=0;for(let r of i){if(r===null)continue;let s=r-n;o+=s*s;}return Math.sqrt(o/e)}function ve(i){let t=0,e=0;for(let r of i)r!==null&&(t+=r,e++);if(e<2)return null;let n=t/e,o=0;for(let r of i){if(r===null)continue;let s=r-n;o+=s*s;}return Math.sqrt(o/(e-1))}function Yt(i,t,e=false){let n=new Array(i.length),o=0,r=e?ve:we;for(let s=0;s<i.length;s++){let a=i[s].time,h=a-t;for(;o<s&&i[o].time<h;)o++;let l=i.slice(o,s+1).map(u=>u.value),d=r(l);n[s]={time:a,value:d,synthetic:true};}return n}function zt(i){return {id:i.id,line:{stroke:i.stroke??g.stroke,strokeWidth:i.strokeWidth??g.strokeWidth,smoothing:i.smoothing??false,dashed:i.dashed??false},fill:i.fill??g.areaFillAlpha,markers:{type:i.pointStyle??"none",size:i.pointSize??g.pointSize,stroke:i.stroke??g.stroke,fill:"#ffffff"},shadow:{color:i.shadowColor??"transparent",blur:i.shadowBlur??0,offsetX:i.shadowOffsetX??0,offsetY:i.shadowOffsetY??0}}}function mt(i,t,e){let n=[],o=i.reduce((s,a)=>s+a.data.length,0),r=zt(e);for(let s=0;s<i.length;s++){let a=i[s];a.data.length>=2?n.push({type:"path",id:e.id?`${e.id}-line-${s}`:void 0,points:a.data.map(h=>({x:t.timeScale.map(h.time),y:t.valueScale.map(h.value)})),stroke:a.color??r.line.stroke,strokeWidth:r.line.strokeWidth,smoothing:r.line.smoothing,dashed:r.line.dashed,shadowColor:r.shadow.color,shadowBlur:r.shadow.blur,shadowOffsetX:r.shadow.offsetX,shadowOffsetY:r.shadow.offsetY,fill:"none"}):a.data.length===1&&o===1&&n.push({type:"circle",cx:t.timeScale.map(a.data[0].time),cy:t.valueScale.map(a.data[0].value),r:Math.max(r.markers.size,r.line.strokeWidth),fill:a.color??r.line.stroke,shadowColor:r.shadow.color,shadowBlur:r.shadow.blur});}return n}function qt(i){let t=[];for(let e of i)t.length===0?t.push(e):t.push({x:e.x,y:t[t.length-1].y},e);return t}function Dt(i,t,e,n){if(i.length<2)return [];let o=R.splitByBoundaries(i,e.boundaries,e.getValue,e.interpolate),r=[];for(let s=0;s<o.length;s++){let a=o[s];if(a.data.length<2)continue;let h=e.getColor(a.zoneIndex);if(!h)continue;let l=a.data.map(u=>({x:t.timeScale.map(u.time),y:t.valueScale.map(e.yLow(u))})),d=a.data.map(u=>({x:t.timeScale.map(u.time),y:t.valueScale.map(e.yHigh(u))})).reverse();r.push({type:"path",id:n?.id?`${n.id}-fill-${s}`:void 0,points:[...l,...d],fill:h,hatch:e.getHatch?.(a.zoneIndex),stroke:"none"});}return r}function Xt(i,t,e,n){let o=zt(e);if(!o.markers.type||o.markers.type==="none")return [];let r=[];for(let s=0;s<i.length;s++){let a=i[s],h=t.timeScale.map(a.time),l=t.valueScale.map(a.value),d=n(a),u=e.pointStroke??d,m=e.pointFill??d,c=e.pointStrokeWidth??1.5,f=e.id?`${e.id}-marker-${s}`:void 0;Pt(r,f,o.markers.type,h,l,o.markers.size,u,m,c);}return r}function Pt(i,t,e,n,o,r,s,a,h){switch(e){case "circle":i.push({type:"circle",cx:n,cy:o,r,fill:a,stroke:s,strokeWidth:h,id:t});break;case "square":i.push({type:"rect",x:n-r,y:o-r,w:r*2,h:r*2,fill:a,stroke:s,strokeWidth:h,id:t});break;case "cross":i.push({type:"line",x1:n-r,y1:o-r,x2:n+r,y2:o+r,stroke:s,strokeWidth:h,id:t},{type:"line",x1:n-r,y1:o+r,x2:n+r,y2:o-r,stroke:s,strokeWidth:h,id:t});break;case "diamond":i.push({type:"path",points:[{x:n,y:o-r},{x:n+r,y:o},{x:n,y:o+r},{x:n-r,y:o}],fill:a,stroke:s,strokeWidth:h,id:t});break;case "triangle":i.push({type:"path",points:[{x:n,y:o-r},{x:n+r,y:o+r},{x:n-r,y:o+r}],fill:a,stroke:s,strokeWidth:h,id:t});break;case "star":{let l=[];for(let d=0;d<10;d++){let u=d%2===0?r:r*.5,m=Math.PI/2*3+d*Math.PI/5;l.push({x:n+u*Math.cos(m),y:o+u*Math.sin(m)});}i.push({type:"path",points:l,fill:a,stroke:s,strokeWidth:h,id:t});break}case "arrow":i.push({type:"path",points:[{x:n-r,y:o+r},{x:n,y:o-r},{x:n+r,y:o+r}],stroke:s,strokeWidth:h,fill:"none",id:t});break;case "plus":i.push({type:"line",x1:n-r,y1:o,x2:n+r,y2:o,stroke:s,strokeWidth:h,id:t},{type:"line",x1:n,y1:o-r,x2:n,y2:o+r,stroke:s,strokeWidth:h,id:t});break;case "triangle-down":i.push({type:"path",points:[{x:n,y:o+r},{x:n+r,y:o-r},{x:n-r,y:o-r}],fill:a,stroke:s,strokeWidth:h,id:t});break;case "hexagon":{let l=[];for(let d=0;d<6;d++){let u=d*(Math.PI/3);l.push({x:n+r*Math.cos(u),y:o+r*Math.sin(u)});}i.push({type:"path",points:l,fill:a,stroke:s,strokeWidth:h,id:t});break}case "hourglass":i.push({type:"path",points:[{x:n-r,y:o-r},{x:n+r,y:o-r},{x:n-r,y:o+r},{x:n+r,y:o+r}],fill:a,stroke:s,strokeWidth:h,id:t});break;case "line-horizontal":i.push({type:"line",x1:n-r,y1:o,x2:n+r,y2:o,stroke:s,strokeWidth:h,id:t});break;default:i.push({type:"circle",cx:n,cy:o,r,fill:a,stroke:s,strokeWidth:h,id:t});}}var et=class i{#t;#e;static uidcnt=0;#n;constructor(t,e=[]){this.#t=t.id??"series-"+ ++i.uidcnt,this.#e=t.timeScale,this.#n=e;}get id(){return this.#t}get timeScale(){return this.#e}get data(){return this.#n}};var ut=class extends et{#t;constructor(t){super(t,t.data),this.#t=t;}render(){let t=this.#t,e=t.minColor??g.minColor,n=t.maxColor??g.maxColor,o=t.avgColor??g.avgColor,r=t.avgDashed??true,s=t.smoothing??false,a=t.strokeWidth??g.strokeWidth,h=R.getRuns(this.data,c=>c.min===null||c.max===null||c.avg===null);if(h.length===0)return [];let l={timeScale:this.timeScale,valueScale:t.valueScale},d=[];h.forEach((c,f)=>{c.length<2||(t.fillToMax&&d.push(...Dt(c,l,{boundaries:[],yLow:y=>y.avg,yHigh:y=>y.max,getValue:y=>y.avg,interpolate:R.interpolateAggregatedPoint,getColor:()=>t.fillToMax,getHatch:()=>t.fillToMaxHatch},{id:this.id?`${this.id}-fillToMax-${f}`:void 0})),t.fillToMin&&d.push(...Dt(c,l,{boundaries:[],yLow:y=>y.avg,yHigh:y=>y.min,getValue:y=>y.avg,interpolate:R.interpolateAggregatedPoint,getColor:()=>t.fillToMin,getHatch:()=>t.fillToMinHatch},{id:this.id?`${this.id}-fillToMin-${f}`:void 0})));});let u=h.filter(c=>c.length>=2),m=c=>u.map(f=>({data:f.map(y=>({time:y.time,value:c(y)}))}));return d.push(...mt(m(c=>c.max),l,{stroke:n,strokeWidth:a,smoothing:s,id:this.id?`${this.id}-max`:void 0}),...mt(m(c=>c.min),l,{stroke:e,strokeWidth:a,smoothing:s,id:this.id?`${this.id}-min`:void 0}),...mt(m(c=>c.avg),l,{stroke:o,strokeWidth:a,smoothing:s,dashed:r,id:this.id?`${this.id}-avg`:void 0})),d}};var ct=class extends et{#t;constructor(t){super(t,t.data),this.#t=t;}opacity(t){if(!(this.#t.countOpacity??false))return .6;let e=0;for(let n of this.data)n.count>e&&(e=n.count);return e===0?.2:.2+.8*t/e}render(){let t=this.#t,e=t.fill??g.bandFill,n=t.hatch,o=t.avgLine??false,r=t.avgLineColor??g.bandAvgLine,s=t.bandWidth??10,a=[];for(let h of this.data){if(h.min===null||h.max===null)continue;let l=this.timeScale.map(h.time),d=t.valueScale.map(h.max),u=t.valueScale.map(h.min),m=s,c=this.data.indexOf(h);if(a.push({type:"rect",x:l-m/2,y:d,w:m,h:u-d,fill:e,hatch:n,opacity:this.opacity(h.count),id:this.id?`${this.id}-slot-${c}`:void 0}),o&&h.avg!==null){let f=t.valueScale.map(h.avg);a.push({type:"line",x1:l-m/2,y1:f,x2:l+m/2,y2:f,stroke:r,strokeWidth:1,id:this.id?`${this.id}-avg-${c}`:void 0});}}return a}};function ke(i){return i==="dotted"?{dash:"dotted"}:i==="dashed"?{dash:"dashed"}:{}}function Ut(i){let{thresholds:t,valueScale:e,xRange:n}=i,[o,r]=n,[s,a]=e.range(),h=Math.min(s,a),l=Math.max(s,a),d=[],u=[];for(let m of t){let c=m.color??g.thresholdColor,f=e.map(m.value);m.fill==="above"?d.push({type:"rect",x:o,y:h,w:r-o,h:Math.max(0,f-h),fill:c,hatch:m.fillHatch,opacity:m.fillOpacity??.12,id:m.id?`${m.id}-fill`:void 0}):m.fill==="below"&&d.push({type:"rect",x:o,y:f,w:r-o,h:Math.max(0,l-f),fill:c,hatch:m.fillHatch,opacity:m.fillOpacity??.12,id:m.id?`${m.id}-fill`:void 0});let y=m.line??g.thresholdLine;if(y!=="none"){let b=ke(y),_={type:"line",x1:o,y1:f,x2:r,y2:f,stroke:c,strokeWidth:1,...b,id:m.id?`${m.id}-line`:void 0};m.shadowColor&&(_.shadowColor=m.shadowColor,_.shadowBlur=m.shadowBlur??4,_.shadowOffsetX=m.shadowOffsetX??0,_.shadowOffsetY=m.shadowOffsetY??2),d.push(_);}if(m.label!==false){let b=m.label&&typeof m.label=="object"?m.label:void 0,_=typeof m.label=="string"?m.label:b?.text??m.name,C=b?.position??"right";u.push({...Ce(_,C,o,r,f,c,b),id:m.id?`${m.id}-label`:void 0});}}return {inside:d,labels:u}}function Ce(i,t,e,n,o,r,s){let a=(e+n)/2,h={type:"text",content:i,fontSize:g.thresholdFontSize,fill:r},l=s?{...s.rotate!==void 0&&{rotate:s.rotate},...s.textBaseline!==void 0&&{textBaseline:s.textBaseline}}:{};switch(t){case "left":return {...h,...l,x:e+4,y:o-4,anchor:"start"};case "above":return {...h,...l,x:a,y:o-6,anchor:"middle"};case "below":return {...h,...l,x:a,y:o+14,anchor:"middle"};case "center":return {...h,...l,x:a,y:o-4,anchor:"middle"};case "outside-left":return {...h,...l,x:e-6,y:o+3,anchor:"end",textBaseline:l.textBaseline??"middle"};case "outside-right":return {...h,...l,x:n+6,y:o+3,anchor:"start",textBaseline:l.textBaseline??"middle"};default:return {...h,...l,x:n-4,y:o-4,anchor:"end"}}}function Kt(i){let{gaps:t,timeScale:e,yRange:n,fill:o=g.gapFill,hatch:r,fillOpacity:s=g.gapFillOpacity??.15,stroke:a=g.gapStroke,strokeWidth:h=g.gapStrokeWidth,dashed:l=true,fontSize:d=g.gapFontSize,fontFill:u=g.gapFontColor,labelBaseline:m="middle",labelRotate:c}=i,[f,y]=n,b=[];for(let _ of t){let C=e.map(_.startTime),N=e.map(_.endTime),P=_.fill??o,L=_.hatch??r,W=_.fillOpacity??s,B=_.label??"",G=_.rotate??c,I=_.labelBaseline??m;if(_.style==="dashed_border"||!_.style?b.push({type:"rect",x:C,y:f,w:N-C,h:y-f,fill:P,hatch:L,opacity:W,stroke:a,strokeWidth:h,dashed:l}):_.style==="empty"&&b.push({type:"rect",x:C,y:f,w:N-C,h:y-f,fill:P,hatch:L,opacity:W}),B){let S=Te(f,y,I),v=I==="above"?"top":I==="below"?"bottom":"middle";b.push({type:"text",content:B,x:(C+N)/2,y:S,anchor:"middle",fontSize:d,fill:u,textBaseline:v,rotate:G});}}return b}function Te(i,t,e){switch(e){case "above":return i-12;case "below":return t+4;default:return (i+t)/2}}var pt=class{#t;constructor(t,e,n,o){this.#t={...t,xRange:e,y:n,height:o};}render(){let{items:t,timeScale:e,background:n,hatch:o,showAxis:r,xRange:s,y:a,height:h}=this.#t,l=[];n&&l.push({type:"rect",x:s[0],y:a,w:s[1]-s[0],h,fill:n,opacity:.04,stroke:"#ddd",strokeWidth:.25});for(let d of t){let u=e.map(d.startTime),m=e.map(d.endTime);if(!(m-u<1)&&(l.push({type:"rect",x:u,y:a,w:m-u,h,hatch:d.hatch??o,fill:d.fill??"#6b728044",stroke:d.stroke,strokeWidth:d.strokeWidth??0}),d.label)){let c=d.labelFontSize??10;l.push({type:"text",content:d.label,x:(u+m)/2,y:this.#e(d.labelBaseline,c),anchor:"middle",fontSize:c,fill:d.labelFill??"#333"});}}if(r){let d=new tt({domain:e.domain(),xRange:s,y:a+h+4});l.push({type:"group",cssClass:"annotation-band-axis",commands:d.render()});}return l}#e(t,e){let{y:n,height:o}=this.#t;switch(t){case "top":return n+e*.9;case "bottom":return n+o-e*.25;default:return n+o/2+e*.35}}};function Zt(i){let{highlights:t,timeScale:e,yRange:n,height:o}=i,[r,s]=n,a=[];for(let h of t){let l=e.map(h.startTime),d=e.map(h.endTime);a.push({type:"rect",x:l,y:r,w:d-l,h:s-r,fill:h.color??g.highlightColor,opacity:h.opacity??g.highlightOpacity}),h.label&&a.push({type:"text",content:h.label,x:(l+d)/2,y:$e(h.labelPosition??"top",r,s,o),anchor:"middle",fontSize:g.annotationFontSize,fill:h.color??g.highlightLabelColor,rotate:h.rotate});}return a}function $e(i,t,e,n){switch(i){case "above":return t-5;case "below":return n!==void 0?n-5:e+14;case "center":return (t+e)/2+4;case "bottom":return e-6;default:return t+14}}function Jt(i){let{markers:t,timeScale:e,valueScale:n,yRange:o=[0,300]}=i,[r,s]=o,a=[];for(let h of t){let l=e.map(h.time),d=h.color??g.markerColor,u=h.pointStyle??(h.value!==void 0?"circle":"none"),m=h.lineStyle??"full";if(h.value!==void 0){let c=n.map(h.value);if(m==="to-value"?a.push({type:"line",x1:l,y1:s,x2:l,y2:c,stroke:d,strokeWidth:1,dashed:true}):m==="to-top"?a.push({type:"line",x1:l,y1:r,x2:l,y2:c,stroke:d,strokeWidth:1,dashed:true}):m==="full"&&a.push({type:"line",x1:l,y1:r,x2:l,y2:s,stroke:d,strokeWidth:1}),u!=="none"&&Pt(a,void 0,u,l,c,g.markerSize,d,d,1.5),h.label){let f=m==="to-value"?c-10:r-6;a.push({type:"text",content:h.label,x:l,y:f,anchor:"middle",fontSize:11,fill:d});}}else a.push({type:"line",x1:l,y1:r,x2:l,y2:s,stroke:d,strokeWidth:1}),h.label&&a.push({type:"text",content:h.label,x:l,y:r-6,anchor:"middle",fontSize:11,fill:d});}return a}function Qt(i){let{annotations:t,timeScale:e,valueScales:n}=i,o=[],r=s=>{let a=n.get(s.axis??0)??n.values().next().value;return {x:e.map(s.time),y:a?a.map(s.value):0}};for(let s of t){let a=[],h=l=>a.push(l);switch(s.type){case "line":{let l=r(s.from),d=r(s.to);h({type:"line",x1:l.x,y1:l.y,x2:d.x,y2:d.y,stroke:s.color??g.annotationColor,strokeWidth:s.width??g.annotationWidth,dash:s.dash});break}case "arrow":{let l=r(s.from),d=r(s.to),u=s.color??g.annotationColor,m=s.headSize??g.annotationHead;h({type:"line",x1:l.x,y1:l.y,x2:d.x,y2:d.y,stroke:u,strokeWidth:s.width??g.annotationWidth});let c=Math.hypot(d.x-l.x,d.y-l.y)||1,f=(d.x-l.x)/c,y=(d.y-l.y)/c,b=d.x-f*m,_=d.y-y*m;h({type:"path",points:[{x:d.x,y:d.y},{x:b-y*m*.5,y:_+f*m*.5},{x:b+y*m*.5,y:_-f*m*.5}],fill:u,stroke:"none"});break}case "rect":{let l=r(s.from),d=r(s.to);h({type:"rect",x:Math.min(l.x,d.x),y:Math.min(l.y,d.y),w:Math.abs(d.x-l.x),h:Math.abs(d.y-l.y),fill:s.fill??"none",stroke:s.stroke,opacity:s.opacity});break}case "point":{let l=r(s.at),d=s.color??"#334155",u=s.radius??g.annotationRadius,m=s.shape??"circle";m==="circle"?h({type:"circle",cx:l.x,cy:l.y,r:u,fill:d}):m==="square"?h({type:"rect",x:l.x-u,y:l.y-u,w:u*2,h:u*2,fill:d}):(h({type:"line",x1:l.x-u,y1:l.y-u,x2:l.x+u,y2:l.y+u,stroke:d,strokeWidth:1.5}),h({type:"line",x1:l.x-u,y1:l.y+u,x2:l.x+u,y2:l.y-u,stroke:d,strokeWidth:1.5}));break}case "label":{let l=r(s.at);h({type:"text",content:s.text,x:l.x+(s.dx??0),y:l.y+(s.dy??0),anchor:s.anchor??"middle",fontSize:g.annotationFontSize,fill:s.color??g.annotationColor,rotate:s.rotate});break}}if(s.id&&a.length>0){let l=it(s.id);o.push({type:"group",cssClass:`annotation annotation--${l}`,commands:a});}else o.push(...a);}return o}var U=12,ft=8,Bt=20,Ae=11,Ft=18,jt=i=>i.length*Ae*.6;function te(i,t="vertical"){if(t==="horizontal"){let n=0;for(let o of i)n+=U+ft+jt(o.name)+Ft;return {width:Math.max(0,n-Ft),height:Bt}}let e=0;for(let n of i)e=Math.max(e,jt(n.name));return {width:U+ft+e,height:i.length*Bt}}function ee(i){let{items:t,x:e,y:n,orientation:o="vertical"}=i,r=[],s=e;return t.forEach((a,h)=>{let l=o==="horizontal"?s:e,d=o==="horizontal"?n:n+h*Bt;r.push({type:"rect",x:l,y:d,w:U,h:U,fill:a.color,stroke:g.legendStroke,strokeWidth:1},{type:"text",content:a.name,x:l+U+ft,y:d+U-2,fontSize:g.legendFont,fill:g.legendText}),o==="horizontal"&&(s+=U+ft+jt(a.name)+Ft);}),{type:"group",cssClass:"chart-legend",commands:r}}function ne(i){let{xTicks:t,yTicks:e,xRange:n,yRange:o,stroke:r=g.gridStroke,strokeWidth:s=g.gridStrokeWidth,dashed:a=false,opacity:h=g.gridOpacity}=i,l=[];if(e)for(let d of e)l.push({type:"line",x1:n[0],y1:d,x2:n[1],y2:d,stroke:r,strokeWidth:s,dashed:a,opacity:h});if(t)for(let d of t)l.push({type:"line",x1:d,y1:o[0],x2:d,y2:o[1],stroke:r,strokeWidth:s,dashed:a,opacity:h});return l}function ie(i,t,e){let n=i??t;if(n==="series")return null;if(n==="chartTop")return e.chartTop;if(n==="chartBottom")return e.chartBottom;if(typeof n=="object"&&"threshold"in n){let o=e.thresholds.get(n.threshold);if(!o)throw new Error(`fillSpec region references unknown threshold '${n.threshold}'`);return e.valueScale.map(o.value)}return typeof n=="object"&&"value"in n?e.valueScale.map(n.value):null}function Me(i){return typeof i=="string"?{color:i}:{color:i.color,hatch:i.hatch}}function re(i,t,e){let n=ie(i.from,"chartBottom",t),o=ie(i.to,"series",t),{color:r,hatch:s}=Me(i.fill),a={type:"path",fill:r,hatch:s,stroke:"none",...t.idPrefix&&{id:`${t.idPrefix}-fill-r${e}`}};if(n!==null&&o!==null){let m=t.timeScale.range(),c=m[0],f=m[1],y=Math.min(n,o),b=Math.max(n,o);return [{...a,points:[{x:c,y},{x:f,y},{x:f,y:b},{x:c,y:b}]}]}let h=n??o,l=[],d=Le(i,t);if(d===null){let m=t.valueScale.domain();d=(n??o)===t.chartBottom?m[0]:m[1];}let u=oe(i.outer,t);for(let m of t.runs){if(m.length<2)continue;let c=R.splitByThreshold(m,d,y=>y.value??d,R.interpolateDataPoint),f=i.side==="above"?c.above:i.side==="below"?c.below:[...c.above,...c.below];if(u!==null&&i.side){let y=i.side==="above"?"below":"above";f=f.flatMap(b=>{if(b.length<2)return [];let _=R.splitByThreshold(b,u,C=>C.value??u,R.interpolateDataPoint);return y==="above"?_.above:_.below});}for(let y of f){if(y.length<2)continue;let b=y.map(C=>({x:t.timeScale.map(C.time),y:t.valueScale.map(C.value)})),_=[...b].reverse().map(C=>({x:C.x,y:h}));l.push({...a,smoothing:t.smoothing,smoothCount:b.length,points:[...b,..._]});}}return l}function Le(i,t){let e=i.from==="series"?i.to:i.from;return oe(e,t)}function oe(i,t){return i===void 0||i==="series"||i==="chartTop"||i==="chartBottom"?null:typeof i=="object"&&"threshold"in i?t.thresholds.get(i.threshold)?.value??null:typeof i=="object"&&"value"in i?i.value:null}function se(i,t){if(typeof i=="string"||!("regions"in i))return re({fill:i},t,0);let e=[];return i.regions.forEach((n,o)=>{e.push(...re(n,t,o));}),e}function ae(i,t){let e=new Array(i.length),n=0;for(let o=0;o<i.length;o++){let r=i[o].time,s=r-t;for(;n<o&&i[n].time<s;)n++;let a=0,h=0;for(let l=n;l<=o;l++){let d=i[l].value;d!==null&&(a+=d,h++);}e[o]={time:r,value:h===0?null:a/h,synthetic:true};}return e}function he(i){let t=i.style?.line,e=t&&!Array.isArray(t)?t:void 0;return {color:e?.color??g.stroke,width:e?.width??g.strokeWidth,dash:e?.style,smoothing:e?.smoothing??false}}function le(i,t,e,n){let o=i.filter(h=>h.value!==null);if(o.length<2)return [];let r=o.map(h=>({x:t.timeScale.map(h.time),y:t.valueScale.map(h.value)})),s=he(e);return [{type:"path",id:t.idPrefix?`${t.idPrefix}-overlay-${n}`:`overlay-${n}`,points:r,stroke:s.color,strokeWidth:s.width,smoothing:s.smoothing,dash:s.dash,fill:"none"}]}function de(i,t){switch(i.kind){case "movingAverage":{i.type;let e=ae(t.data,i.window);return le(e,t,i,"movingAvg")}case "movingMkt":{let e=Nt(t.data,i.window,i.activationEnergy);return le(e,t,i,"movingMkt")}case "limits":{let e=[],n=t.timeScale.range(),o=n[0],r=n[1],s=he(i),a=s.color,h=s.width,l=s.dash??"dashed",d=t.idPrefix?`${t.idPrefix}-`:"";return i.high!==void 0&&e.push({type:"line",id:`${d}overlay-limit-high`,x1:o,y1:t.valueScale.map(i.high),x2:r,y2:t.valueScale.map(i.high),stroke:a,strokeWidth:h,dash:l}),i.low!==void 0&&e.push({type:"line",id:`${d}overlay-limit-low`,x1:o,y1:t.valueScale.map(i.low),x2:r,y2:t.valueScale.map(i.low),stroke:a,strokeWidth:h,dash:l}),e}case "stdDevBand":{let e=i.multiplier??1,n=ae(t.data,i.window),o=Yt(t.data,i.window),r=[],s=[];for(let y=0;y<n.length;y++){let b=n[y].value,_=o[y].value;if(b===null||_===null)continue;let C=t.timeScale.map(n[y].time);r.push({x:C,y:t.valueScale.map(b+e*_)}),s.push({x:C,y:t.valueScale.map(b-e*_)});}if(r.length<2)return [];let a=t.idPrefix?`${t.idPrefix}-`:"",h=[],d=(typeof i.style?.fill=="string"||i.style?.fill&&!("regions"in i.style.fill)?i.style.fill:void 0)??"#94a3b833",{color:u,hatch:m}=De(d);h.push({type:"path",id:`${a}overlay-stdDevBand`,points:[...r,...[...s].reverse()],fill:u,hatch:m,stroke:"none"});let c=i.style?.line,f=c&&!Array.isArray(c)?c:void 0;if(f){let y=n.filter(b=>b.value!==null).map(b=>({x:t.timeScale.map(b.time),y:t.valueScale.map(b.value)}));y.length>=2&&h.push({type:"path",id:`${a}overlay-stdDevBand-mean`,points:y,stroke:f.color??g.stroke,strokeWidth:f.width??1.5,smoothing:f.smoothing,dash:f.style,fill:"none"});}return h}}}function De(i){return typeof i=="string"?{color:i}:{color:i.color,hatch:i.hatch}}function Pe(i){if(!i)return {gaps:[],autoDetect:false,minGapMs:6e4};if(Array.isArray(i))return {gaps:i,autoDetect:false,minGapMs:6e4};let t=i.regions??[],e=i.style;return {gaps:t.map(o=>{let r={...e,...o.style},s=r.fill,a,h;return typeof s=="string"?a=s:s&&(a=s.color,h=s.hatch),{startTime:o.startTime,endTime:o.endTime,label:o.label,fill:a,hatch:h,fillOpacity:r.opacity,labelBaseline:r.label?.baseline,rotate:r.label?.rotate,style:r.display==="filled"||r.display==="bridge_line"?void 0:r.display}}),autoDetect:i.autoDetect??false,minGapMs:i.minGapMs??6e4}}function gt(i){return "showAs"in i&&!!i.showAs}var K=class{_layout;_renderer;_locale;_legend;_markers;_thresholds;_highlights;_gaps;_gapsAutoDetect;_gapsMinGapMs;_annotations;_annotationBands;_disabledAnnotations=new Set;_annotationSeq=0;_axes;_series;readonly_annotationBandHeight=0;_timeScale;_valueScales=new Map;constructor(t={}){this._layout=new nt({width:t.width??800,height:t.height??400,margin:t.margin??{top:20,right:20,bottom:40,left:60}}).compute(),this._renderer=t.renderer,this._locale=t.locale,this._legend=t.legend,this._markers=t.markers??[],this._thresholds=t.thresholds??[],this._highlights=t.highlights??[];let e=Pe(t.gaps);this._gaps=e.gaps,this._gapsAutoDetect=e.autoDetect,this._gapsMinGapMs=e.minGapMs,this._annotations=t.annotations??[],this._annotationBands=t.annotationBands??[],this._axes=t.axes,this._series=[],t.series&&this.setData(t.series);}getWidth(){return this._layout.totalWidth}getHeight(){return this._layout.totalHeight+this._annotationBandTotalHeight()}get series(){return this._series}_annotationBandTotalHeight(){let t=0;for(let e of this._annotationBands){let n=e.height??12,o=e.spacing??0;(e.showAxis??false)&&(t+=26+o),t+=n+o;}return t}setData(t){this._series=t.filter(e=>Array.isArray(e.data));}addAnnotation(t){let e=t.id??`anno-${++this._annotationSeq}`;return this._annotations.push({...t,id:e}),e}removeAnnotation(t){let e=this._annotations.length;return this._annotations=this._annotations.filter(n=>n.id!==t),this._disabledAnnotations.delete(t),this._annotations.length<e}setAnnotations(t){this._annotations=[...t],this._disabledAnnotations.clear();}clearAnnotations(){this._annotations=[],this._disabledAnnotations.clear();}getAnnotations(){return this._annotations}disableAnnotation(t){this._disabledAnnotations.add(t);}enableAnnotation(t){this._disabledAnnotations.delete(t);}_axisIndexOf(t){return t.yAxisIndex??0}_timesOf(t){return t.data.map(e=>e.time)}_valuesOf(t){if(gt(t)){let e=[];for(let n of t.data)n.min!==null&&e.push(n.min),n.max!==null&&e.push(n.max);return e}return t.data.map(e=>e.value).filter(e=>e!==null)}renderCommands(){if(this._series.length===0)return [];let t=this._legendItems(),e=(this._legend?.show??false)&&t.length>0,n=this._legend?.position??"inside-right",o=this._legend?.orientation??"vertical",r=e?te(t,o):{width:0},s=this._layout;if(e&&(n==="outside-right"||n==="outside-left")){let p=r.width+16,x={...this._layout.margin};n==="outside-right"?x.right+=p:x.left+=p,s=new nt({width:this._layout.totalWidth,height:this._layout.totalHeight,margin:x}).compute();}let{chartX:a,chartY:h,chartWidth:l,chartHeight:d}=s,u=[a,a+l],m=[h,h+d],c=[];for(let p of this._series)p.data.sort((x,w)=>x.time-w.time);let f=new Map,y=1/0,b=-1/0,_=false;for(let p of this._series){let x=this._axisIndexOf(p),w=f.get(x);w?w.push(p):f.set(x,[p]);for(let A of this._timesOf(p))A<y&&(y=A),A>b&&(b=A),_=true;}if(!_)return [];let C=this._axes?.x?.domain,N=C&&C!=="auto"?C:[y,b];this._timeScale=new J({domain:N,range:u,locale:this._locale});let P=p=>({axisColor:p?.color??g.axisColor,tickColor:p?.color??g.tickColor,textColor:g.textColor,textSize:g.textSize,axisWidth:p?.width??1}),L=new tt({domain:N,xRange:u,y:h+d,locale:this._locale,format:this._axes?.x?.format,maxTicks:this._axes?.x?.ticks?.major,colors:P(this._axes?.x?.axis)});this._valueScales.clear();let W=Array.from(f.keys()).sort((p,x)=>p-x),B,G=0,I=0;for(let p of W){let x=f.get(p),w=1/0,A=-1/0,M=false;for(let V of x)for(let lt of this._valuesOf(V))lt<w&&(w=lt),lt>A&&(A=lt),M=true;if(!M)continue;let D;this._axes?.y&&this._axes.y.length>p?D=this._axes.y[p]:p===0?D=this._axes?.left:p===1&&(D=this._axes?.right);let Tt=D?.domain,Z=Tt&&Tt!=="auto"?Tt:[w,A],Ht=new X({domain:Z,range:[h+d,h]});this._valueScales.set(p,Ht);let Rt=this._thresholds.filter(V=>(V.axisIndex??0)===p&&V.label!==false&&V.value>=Math.min(Z[0],Z[1])&&V.value<=Math.max(Z[0],Z[1])).map(V=>Ht.map(V.value)),$t=D?.position??(p===0?"left":"right"),At;if($t==="right"){let V=D?.offset!==void 0?D.offset:I*50;At=a+l+V,I++;}else {let V=D?.offset!==void 0?D.offset:G*50;At=a-V,G++;}let Wt=new dt({domain:Z,range:[h+d,h],x:At,position:$t,format:D?.format,ticks:D?.ticks?.major,colors:P(D?.axis),suppressLabelsNear:Rt.length?Rt:void 0});p===0&&(B=Wt),c.push({type:"group",cssClass:`value-axis ${$t}`,commands:Wt.render()});}let S=this._valueScales.get(0)??this._valueScales.get(W[0]);c.push({type:"group",cssClass:"time-axis",commands:L.render()});let v=null,k=this._axes?.x?.grid?.major,$=this._axes?.left?.grid?.major;if(k!==void 0||$!==void 0){let p=k!==false,x=$!==false&&!!B,w=p?L.generateTicks().map(M=>M.x):void 0,A=x?B.generateTicks().map(M=>M.position):void 0;if(w||A){let M=(k&&typeof k=="object"?k:void 0)??($&&typeof $=="object"?$:void 0);v={type:"group",cssClass:"chart-grid",commands:ne({xTicks:w,yTicks:A,xRange:u,yRange:m,stroke:M?.color,opacity:M?.opacity,dashed:M?.style==="dashed"})};}}if(this._highlights.length>0&&c.push({type:"group",cssClass:"highlights",commands:Zt({highlights:this._highlights,timeScale:this._timeScale,yRange:m,height:s.totalHeight})}),this._thresholds.length>0&&S){let p=[],x=[];for(let w of this._thresholds){let A=w.id??it(w.name),M=this._valueScales.get(w.axisIndex??0)??S,D=Ut({thresholds:[w],valueScale:M,xRange:u});D.inside.length&&p.push({type:"group",cssClass:`threshold threshold--${A}`,id:`threshold-${A}`,commands:D.inside}),D.labels.length&&x.push({type:"group",cssClass:`threshold-label threshold-label--${A}`,commands:D.labels});}p.length&&c.push({type:"group",cssClass:"thresholds",commands:p,clipRect:{x:a,y:h,w:l,h:d}}),x.length&&c.push({type:"group",cssClass:"threshold-labels",commands:x});}let j=this._gaps;if(this._gapsAutoDetect){let p=[];for(let x of this._series)gt(x)||p.push(...Vt(x.data,this._gapsMinGapMs));p.length>0&&(j=[...this._gaps,...p]);}j.length>0&&c.push({type:"group",cssClass:"gaps",commands:Kt({gaps:j,timeScale:this._timeScale,yRange:m})});let H=new Map(this._thresholds.map(p=>[p.id??p.name,p]));for(let p of this._series){if(p.data.length===0)continue;let x=this._valueScales.get(this._axisIndexOf(p));if(!x)continue;let w=it(p.id??p.name);c.push({type:"group",cssClass:`series series--${w}`,id:`series-${w}`,commands:this._renderSeries(p,x,H)});}v&&c.push(v);let Y=this._markers.map(p=>({...p}));for(let p of Y)if(p.value===void 0&&(p.lineStyle==="to-value"||p.lineStyle==="to-top")){let x=this._series[p.seriesIndex??0];x&&!gt(x)&&x.data.length>=2&&(p.value=this._interpolateValue(p.time,x.data));}Y.length>0&&S&&c.push({type:"group",cssClass:"markers",commands:Jt({markers:Y,timeScale:this._timeScale,valueScale:S,yRange:m})});let F=this._annotations.filter(p=>!p.id||!this._disabledAnnotations.has(p.id));if(F.length>0&&c.push({type:"group",cssClass:"annotations",commands:Qt({annotations:F,timeScale:this._timeScale,valueScales:this._valueScales})}),this._annotationBands.length>0){let p=h+d+this._layout.margin.bottom,x=0;this._annotationBands.forEach(w=>{let A=w.height??12,M=w.spacing??0,D=p+x;(w.showAxis??false)&&(x+=26+M),x+=A+M,c.push({type:"group",cssClass:"annotation-band",commands:new pt({name:w.name,showAxis:w.showAxis??false,items:w.items,timeScale:this._timeScale,background:w.background,hatch:w.hatch},[a,a+l],D,A).render()});});}if(e&&n!=="separate"){let p,x;n==="inside-right"?(p=a+l-r.width-8,x=h+8):n==="inside-left"?(p=a+8,x=h+8):n==="outside-right"?(p=a+l+16,x=h):(p=8,x=h),c.push(ee({items:t,x:p,y:x,orientation:o}));}let T=this._axes?.left?.label,O=this._axes?.right?.label,E=this._axes?.x?.label;if(T||O||E){let p=[],x=h+d/2,w=this._axes?.left?.labels,A=this._axes?.right?.labels,M=this._axes?.x?.labels;T&&p.push({type:"text",content:T,x:14,y:x,anchor:"middle",fontSize:w?.fontSize??g.axisLabelSize,fill:w?.color??g.axisLabelColor,rotate:-90}),O&&p.push({type:"text",content:O,x:s.totalWidth-14,y:x,anchor:"middle",fontSize:A?.fontSize??g.axisLabelSize,fill:A?.color??g.axisLabelColor,rotate:90}),E&&p.push({type:"text",content:E,x:a+l/2,y:s.totalHeight-6,anchor:"middle",fontSize:M?.fontSize??g.axisLabelSize,fill:M?.color??g.axisLabelColor}),p.length&&c.push({type:"group",cssClass:"axis-labels",commands:p});}return c}_renderSeries(t,e,n){let o=this._timeScale,r={timeScale:o,valueScale:e};if(gt(t)){let S=t.style?.line&&!Array.isArray(t.style.line)?t.style.line:void 0,v=typeof t.style?.fill=="string"?t.style.fill:void 0;return t.showAs==="minmaxavg"?new ut({data:t.data,timeScale:o,valueScale:e,minColor:t.minColor,maxColor:t.maxColor,avgColor:t.avgColor,avgDashed:t.avgDashed,fillToMax:t.fillToMax,fillToMaxHatch:t.fillToMaxHatch,fillToMin:t.fillToMin,fillToMinHatch:t.fillToMinHatch,smoothing:S?.smoothing,strokeWidth:S?.width,id:rt(t.name,t.id)}).render():new ct({data:t.data,timeScale:o,valueScale:e,fill:v??S?.color,avgLine:t.avgLine,countOpacity:t.countOpacity,id:rt(t.name,t.id)}).render()}let s=t,a=t.style?.line&&!Array.isArray(t.style.line)?t.style.line:void 0,h=a?.gapThreshold??g.gapThreshold,l=R.getRuns(t.data,S=>S.value===null,h),d=l.reduce((S,v)=>S+v.length,0);if(d===0)return [];let u=[],m=t.style?.markers,c=t.style?.shadow,f={stroke:a?.color??g.stroke,strokeWidth:a?.width??g.strokeWidth,smoothing:a?.smoothing,dashed:a?.style==="dashed",pointStyle:m?.type,pointSize:m?.size,pointStroke:m?.stroke,pointFill:m?.fill,pointStrokeWidth:m?.strokeWidth,shadowColor:c?.color,shadowBlur:c?.blur,shadowOffsetX:c?.offsetX,shadowOffsetY:c?.offsetY,id:rt(t.name,t.id)},y=t.style?.line,b=y&&!Array.isArray(y)?y:void 0,_=b?.color,C=b?.width,N=b?.style,P=b?.smoothing,L=t.style?.fill;if(L!==void 0){let S=e.range(),v=Math.min(S[0],S[1]),k=Math.max(S[0],S[1]);u.push(...se(L,{runs:l,timeScale:o,valueScale:e,thresholds:n,chartTop:v,chartBottom:k,smoothing:a?.smoothing,idPrefix:t.id}));}let W=s.colorByThresholds??[],B=W.map(S=>n.get(S)).filter(S=>!!S).map(S=>S.value).sort((S,v)=>S-v),G=(S,v,k)=>{let $=k??f.stroke;for(let j of v){let H=n.get(j);H&&S>=H.value&&($=H.color??$);}return $};for(let S of l){if(S.length<2)continue;let v=R.splitByBoundaries(S,B,k=>k.value,R.interpolateDataPoint);for(let k=0;k<v.length;k++){let $=v[k];if($.data.length<2)continue;let j=($.data[0].value+$.data[$.data.length-1].value)/2,H=rt(s.name,s.id),Y=$.data.map(p=>({x:o.map(p.time),y:e.map(p.value)})),F=H?`${H}-line-${k}`:void 0,O=(b?.shape??a?.shape??s.seriesType)==="step",E=O?qt(Y):Y;y===false||(y&&Array.isArray(y)?y.forEach((p,x)=>{u.push({type:"path",id:F?`${F}-${x}`:void 0,points:E,stroke:G(j,W,p.color),strokeWidth:p.width??f.strokeWidth,smoothing:O?false:p.smoothing??f.smoothing,dash:p.style,opacity:p.opacity,fill:"none",shadowColor:f.shadowColor,shadowBlur:f.shadowBlur,shadowOffsetX:f.shadowOffsetX,shadowOffsetY:f.shadowOffsetY});}):u.push({type:"path",id:F,points:E,stroke:G(j,W,_),strokeWidth:C??f.strokeWidth,smoothing:O?false:P??f.smoothing,dash:N,fill:"none",shadowColor:f.shadowColor,shadowBlur:f.shadowBlur,shadowOffsetX:f.shadowOffsetX,shadowOffsetY:f.shadowOffsetY}));}f.pointStyle&&f.pointStyle!=="none"&&d<=(m?.threshold??g.pointThreshold)&&u.push(...Xt(S,r,f,k=>G(k.value,W)));}let I=t.overlays;if(I&&I.length>0){let S=e.range(),v={data:t.data,timeScale:o,valueScale:e,chartTop:Math.min(S[0],S[1]),chartBottom:Math.max(S[0],S[1]),idPrefix:t.id};for(let k of I)u.push(...de(k,v));}if(t.style?.gap&&l.length>1){let S=e.range(),v=Math.min(S[0],S[1]),k=Math.max(S[0],S[1]),$=t.style.gap,j=$.fill,H,Y;typeof j=="string"?H=j:j&&(H=j.color,Y=j.hatch);let F=$.opacity??.15,T=$.bridge;for(let O=1;O<l.length;O++){let E=l[O-1][l[O-1].length-1],p=l[O][0],x=o.map(E.time),w=o.map(p.time);if($.display==="bridge_line"){if(E.value===null||p.value===null)continue;let A=e.map(E.value),M=e.map(p.value);u.push({type:"line",x1:x,y1:A,x2:w,y2:M,stroke:T?.color??(typeof t.style?.line=="object"&&!Array.isArray(t.style.line)?t.style.line.color:void 0)??g.stroke,strokeWidth:T?.width??1.5,dash:T?.style??"dotted"});}else H!==void 0?u.push({type:"rect",x,y:v,w:w-x,h:k-v,fill:H,hatch:Y,opacity:F,stroke:"none"}):$.display!=="empty"&&u.push({type:"rect",x,y:v,w:w-x,h:k-v,stroke:g.gapStroke,strokeWidth:1,dashed:true,fill:"none"});}}return u}_interpolateValue(t,e){for(let n=1;n<e.length;n++){let o=e[n-1],r=e[n];if(!(o.value===null||r.value===null)&&t>=o.time&&t<=r.time){let s=(t-o.time)/(r.time-o.time);return o.value+s*(r.value-o.value)}}}legendItems(){return this._legendItems()}_legendItems(){return this._series.map(t=>{let e=t.style?.line&&!Array.isArray(t.style.line)?t.style.line:void 0;return {name:t.name,color:e?.color??g.stroke}})}get renderer(){return this._renderer}get layout(){return this._layout}get timeScale(){return this._timeScale}get valueScales(){return this._valueScales}invertTime(t){return this._timeScale?this._timeScale.invert(t):0}invertValue(t,e=0){let n=this._valueScales.get(e);return n?n.invert(t):0}project(t,e,n=0){let o=this._timeScale?this._timeScale.map(t):0,r=this._valueScales.get(n);return {x:o,y:r?r.map(e):0}}};var yt=class{};function Be(i){switch(i){case "top":return "text-top";case "bottom":return "text-bottom";default:return "middle"}}var q=class extends yt{#t="100%";#e="100%";#n;#i=new Map;#r=new Map;#o=new Map;constructor(t){super(),t?.width!==void 0&&(this.#t=t.width),t?.height!==void 0&&(this.#e=t.height),t?.background!==void 0&&(this.#n=t.background);}setBackgroundColor(t){this.#n=t;}render(t){this.#i.clear(),this.#r.clear(),this.#o.clear();let e=t.map(l=>this._toSVG(l));this.#n&&e.unshift(`<rect width="100%" height="100%" fill="${this._esc(this.#n)}" />`);let n=e.join(`
|
|
25
25
|
`),o="",r=[];for(let[,l]of this.#i)r.push(l);for(let[,l]of this.#r)r.push(l);for(let[,l]of this.#o)r.push(l);r.length>0&&(o=` <defs>
|
|
26
26
|
${r.join(`
|
|
27
27
|
`)}
|
|
28
28
|
</defs>
|
|
29
29
|
`);let s=typeof this.#t=="number"?`${this.#t}`:this.#t,a=typeof this.#e=="number"?`${this.#e}`:this.#e,h=typeof this.#t=="number"&&typeof this.#e=="number"?` viewBox="0 0 ${this.#t} ${this.#e}"`:"";return {type:"svg",content:`<svg xmlns="http://www.w3.org/2000/svg" width="${s}" height="${a}"${h}>
|
|
30
30
|
${o} ${n}
|
|
31
|
-
</svg>`}}_toSVG(t){switch(t.type){case "path":return this._path(t);case "line":return this._line(t);case "rect":return this._rect(t);case "circle":return this._circle(t);case "text":return this.#d(t);case "gradient":return this._gradient(t);case "gap":return this._gap(t);case "group":return this._group(t)}}#l(t,e,n){if(t.length===0)return "";if(!e||t.length<3)return t.map((a,h)=>`${h===0?"M":"L"}${a.x},${a.y}`).join(" ");let o=n!=null&&n<t.length?Math.max(n,2):t.length,r=a=>Math.round(a*100)/100,s=`M${t[0].x},${t[0].y}`;for(let a=0;a<o-1;a++){let h=t[a-1]??t[a],l=t[a],d=t[a+1],u=t[a+2]&&a+2<o?t[a+2]:d,m=r(l.x+(d.x-h.x)/6),c=r(l.y+(d.y-h.y)/6),f=r(d.x-(u.x-l.x)/6),y=r(d.y-(u.y-l.y)/6);s+=` C${m},${c} ${f},${y} ${d.x},${d.y}`;}for(let a=o;a<t.length;a++)s+=` L${t[a].x},${t[a].y}`;return s}_hatchPattern(t,e){let n=`hatch-${t}-${this._hatchIndex++}`;if(this.#o.has(n))return n;let o=
|
|
31
|
+
</svg>`}}_toSVG(t){switch(t.type){case "path":return this._path(t);case "line":return this._line(t);case "rect":return this._rect(t);case "circle":return this._circle(t);case "text":return this.#d(t);case "gradient":return this._gradient(t);case "gap":return this._gap(t);case "group":return this._group(t)}}#l(t,e,n){if(t.length===0)return "";if(!e||t.length<3)return t.map((a,h)=>`${h===0?"M":"L"}${a.x},${a.y}`).join(" ");let o=n!=null&&n<t.length?Math.max(n,2):t.length,r=a=>Math.round(a*100)/100,s=`M${t[0].x},${t[0].y}`;for(let a=0;a<o-1;a++){let h=t[a-1]??t[a],l=t[a],d=t[a+1],u=t[a+2]&&a+2<o?t[a+2]:d,m=r(l.x+(d.x-h.x)/6),c=r(l.y+(d.y-h.y)/6),f=r(d.x-(u.x-l.x)/6),y=r(d.y-(u.y-l.y)/6);s+=` C${m},${c} ${f},${y} ${d.x},${d.y}`;}for(let a=o;a<t.length;a++)s+=` L${t[a].x},${t[a].y}`;return s}_hatchPattern(t,e){let n=`hatch-${t}-${this._hatchIndex++}`;if(this.#o.has(n))return n;let o=Lt(n,t,e??"rgba(200,220,255,0.3)");return this.#o.set(n,o),n}_hatchIndex=0;_path(t){let e=this.#l(t.points,t.smoothing,t.smoothCount),n=[];if(t.hatch){let s=this._hatchPattern(t.hatch,t.fill);n.push(`fill="url(#${s})"`);}else n.push(`fill="${t.fill?this._esc(t.fill):"none"}"`);t.stroke&&n.push(`stroke="${this._esc(t.stroke)}"`),t.strokeWidth&&n.push(`stroke-width="${t.strokeWidth}"`);let o=this.#a(t.dash,t.dashed,t.strokeWidth);o&&(n.push(`stroke-dasharray="${o.strokeDasharray}"`),o.strokeLinecap&&n.push(`stroke-linecap="${o.strokeLinecap}"`)),t.opacity!==void 0&&n.push(`opacity="${t.opacity}"`),t.id&&n.push(`id="${this._esc(t.id)}"`);let r=this.#s(t);return r&&n.push(`filter="url(#${r})"`),`<path d="${e}" ${n.join(" ")} />`}_line(t){let e=[];t.stroke&&e.push(`stroke="${this._esc(t.stroke)}"`),t.strokeWidth&&e.push(`stroke-width="${t.strokeWidth}"`);let n=this.#a(t.dash,t.dashed,t.strokeWidth);n&&(e.push(`stroke-dasharray="${n.strokeDasharray}"`),n.strokeLinecap&&e.push(`stroke-linecap="${n.strokeLinecap}"`)),t.opacity!==void 0&&e.push(`opacity="${t.opacity}"`),t.id&&e.push(`id="${this._esc(t.id)}"`);let o=this.#s(t);return o&&e.push(`filter="url(#${o})"`),`<line x1="${t.x1}" y1="${t.y1}" x2="${t.x2}" y2="${t.y2}" ${e.join(" ")} />`}_rect(t){let e=[];if(t.hatch){let o=this._hatchPattern(t.hatch,t.fill);e.push(`fill="url(#${o})"`);}else t.fill!==void 0&&e.push(`fill="${this._esc(t.fill)}"`);t.stroke&&e.push(`stroke="${this._esc(t.stroke)}"`),t.strokeWidth&&e.push(`stroke-width="${t.strokeWidth}"`),t.opacity!==void 0&&e.push(`opacity="${t.opacity}"`),t.dashed&&e.push('stroke-dasharray="4,4"'),t.id&&e.push(`id="${this._esc(t.id)}"`);let n=this.#s(t);return n&&e.push(`filter="url(#${n})"`),`<rect x="${t.x}" y="${t.y}" width="${t.w}" height="${t.h}" ${e.join(" ")} />`}_circle(t){let e=[];if(t.hatch){let o=this._hatchPattern(t.hatch,t.fill);e.push(`fill="url(#${o})"`);}else t.fill&&e.push(`fill="${this._esc(t.fill)}"`);t.stroke&&e.push(`stroke="${this._esc(t.stroke)}"`),t.strokeWidth&&e.push(`stroke-width="${t.strokeWidth}"`),t.id&&e.push(`id="${this._esc(t.id)}"`);let n=this.#s(t);return n&&e.push(`filter="url(#${n})"`),`<circle cx="${t.cx}" cy="${t.cy}" r="${t.r}" ${e.join(" ")} />`}#a(t,e,n){return t==="dashed"||!t&&e?{strokeDasharray:"4,4"}:t==="dotted"?{strokeDasharray:"2,4"}:!t||t==="solid"?null:Et(t,n??2)}#s(t){if(!t.shadowColor)return null;let e=t.shadowBlur??0,n=t.shadowOffsetX??0,o=t.shadowOffsetY??0;if(!e&&!n&&!o)return null;let r=`shadow_${e}_${n}_${o}`;if(this.#i.has(r))return r;let s=`<filter id="${r}" x="-50%" y="-50%" width="200%" height="200%">
|
|
32
32
|
<feDropShadow dx="${n}" dy="${o}" stdDeviation="${e/2}" flood-color="${this._esc(t.shadowColor)}" />
|
|
33
33
|
</filter>`;return this.#i.set(r,s),r}#h(t,e,n,o,r){this.#r.has(t)||this.#r.set(t,`<clipPath id="${t}">
|
|
34
34
|
<rect x="${e}" y="${n}" width="${o}" height="${r}" />
|
|
35
|
-
</clipPath>`);}#d(t){let e=[];return t.anchor&&e.push(`text-anchor="${t.anchor}"`),t.fontSize&&e.push(`font-size="${t.fontSize}"`),t.fontFamily&&e.push(`font-family="${this._esc(t.fontFamily)}"`),t.fill&&e.push(`fill="${this._esc(t.fill)}"`),t.opacity!=null&&e.push(`opacity="${t.opacity}"`),t.rotate&&e.push(`transform="rotate(${t.rotate} ${t.x} ${t.y})"`),t.textBaseline&&e.push(`dominant-baseline="${
|
|
35
|
+
</clipPath>`);}#d(t){let e=[];return t.anchor&&e.push(`text-anchor="${t.anchor}"`),t.fontSize&&e.push(`font-size="${t.fontSize}"`),t.fontFamily&&e.push(`font-family="${this._esc(t.fontFamily)}"`),t.fill&&e.push(`fill="${this._esc(t.fill)}"`),t.opacity!=null&&e.push(`opacity="${t.opacity}"`),t.rotate&&e.push(`transform="rotate(${t.rotate} ${t.x} ${t.y})"`),t.textBaseline&&e.push(`dominant-baseline="${Be(t.textBaseline)}"`),t.id&&e.push(`id="${this._esc(t.id)}"`),`<text x="${t.x}" y="${t.y}" ${e.join(" ")}>${this._esc(t.content)}</text>`}_gradient(t){let e=`grad-${Math.random().toString(36).slice(2,8)}`,n=t.stops.map(o=>` <stop offset="${o.offset}" stop-color="${this._esc(o.color)}" />`).join(`
|
|
36
36
|
`);return `<linearGradient id="${e}" gradientUnits="userSpaceOnUse">
|
|
37
37
|
${n}
|
|
38
38
|
</linearGradient>
|
|
@@ -43,7 +43,7 @@ ${n}
|
|
|
43
43
|
`)}`).join(`
|
|
44
44
|
`),n=t.cssClass?` class="${this._esc(t.cssClass)}"`:"",o=t.id?` id="${this._esc(t.id)}"`:"",r=t.plotClipId||(t.clipRect?"clip-plot":null),s=r?` clip-path="url(#${this._esc(r)})"`:"";return `<g${n}${o}${s}>
|
|
45
45
|
${e}
|
|
46
|
-
</g>`}_esc(t){return t.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}};function Le(i){return typeof requestAnimationFrame=="function"?requestAnimationFrame(i):setTimeout(()=>i(0),16)}function De(i){typeof cancelAnimationFrame=="function"?cancelAnimationFrame(i):clearTimeout(i);}function he(){let i=0,t=false;return {schedule:e=>{t||(t=true,i=Le(()=>{t=false,e();}));},cancel:()=>{t&&(t=false,De(i));}}}var de="http://www.w3.org/2000/svg";function Pe(i){let t=i.style?.line;return t&&!Array.isArray(t)&&t.color?t.color:p.stroke}function me(i){return i.replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function Be(i){if(i.length===0)return "";let t=new Date(i[0].time).toLocaleString(),e=i.map(n=>`<div><span class="mlc-tooltip__name">${me(n.series.name)}:</span> ${n.value.toFixed(2)}</div>`);return `<div class="mlc-tooltip__time">${me(t)}</div>${e.join("")}`}function Fe(i,t){if(i.length===0)return;let e=0,n=i.length-1;for(;e<n;){let s=e+n>>1;i[s].time<t?e=s+1:n=s;}let o=i[Math.max(0,e-1)],r=i[e];return Math.abs(o.time-t)<=Math.abs(r.time-t)?o:r}function je(i){return "value"in i?i.value:i.avg}function st(i,t,e={}){let n=i.querySelector("svg");if(!n)throw new Error("attachTooltip: target has no <svg> child (did you mount the chart first?)");let o=e.format??Be,r=e.snapRadius??1/0,s=e.className??"mlc-tooltip",a=e.showPicks??true,h=e.pickRadius??5,l=e.picksClassName??"mlc-tooltip-picks",d=document.createElement("div");d.className=s,d.style.position="absolute",d.style.pointerEvents="none",d.style.display="none",getComputedStyle(i).position==="static"&&(i.style.position="relative"),i.appendChild(d);let u=null;a&&(u=document.createElementNS(de,"g"),u.setAttribute("class",l),u.setAttribute("pointer-events","none"),n.appendChild(u));let m=()=>{u&&u.replaceChildren();},c=t.series.map((P,L)=>({data:P.data.map(B=>({time:B.time,value:je(B)})).filter(B=>B.value!==null).sort((B,E)=>B.time-E.time),series:P,index:L})),f=he(),y=null,b=P=>{let L=n.getBoundingClientRect(),I=t.getWidth?.()??L.width,B=(P.clientX-L.left)*I/Math.max(1,L.width);t.getHeight?.()??L.height;let G=t.invertTime(B);if(!Number.isFinite(G)){d.style.display="none";return}let x=[];for(let F of c){let C=Fe(F.data,G);if(!C)continue;let W=t.project(C.time,C.value,F.series.yAxisIndex??0).x,j=t.project(C.time,C.value,F.series.yAxisIndex??0).y;Math.abs(W-B)>r||x.push({seriesIndex:F.index,series:F.series,time:C.time,value:C.value,x:W,y:j});}if(x.length===0){d.style.display="none",m();return}d.innerHTML=o(x);let w=i.getBoundingClientRect(),k=12,$=(P.clientX-L.left)/Math.max(1,L.width),H=(P.clientY-L.top)/Math.max(1,L.height),O=$<.5?`${k}px`:`calc(-100% - ${k}px)`,Y=H<.5?`${k}px`:`calc(-100% - ${k}px)`;if(d.style.left=`${P.clientX-w.left}px`,d.style.top=`${P.clientY-w.top}px`,d.style.transform=`translate(${O}, ${Y})`,d.style.display="",u){u.replaceChildren();for(let F of x){let C=document.createElementNS(de,"circle");C.setAttribute("cx",String(F.x)),C.setAttribute("cy",String(F.y)),C.setAttribute("r",String(h)),C.setAttribute("fill","#ffffff"),C.setAttribute("stroke",Pe(F.series)),C.setAttribute("stroke-width","2"),C.setAttribute("class",`${l}__dot`),u.appendChild(C);}}},_=P=>{y=P,f.schedule(()=>{y&&b(y);});},T=()=>{y=null,f.cancel(),d.style.display="none",m();};n.addEventListener("mousemove",_),n.addEventListener("mouseleave",T);let N=false;return ()=>{N||(N=true,y=null,f.cancel(),n.removeEventListener("mousemove",_),n.removeEventListener("mouseleave",T),d.remove(),u&&u.remove());}}function He(i,t={}){let e=typeof i=="string"?document.querySelector(i):i;if(!e)throw new Error(`mount: target ${typeof i=="string"?`'${i}'`:""} not found`);let{tooltip:n,...o}=t,r=o.width??e.clientWidth??800,s=o.height??350,a=new K({...o,width:r,height:s}),{content:h}=new q().render(a.renderCommands());e.innerHTML=h;let l=e.querySelector("svg");return l&&(l.setAttribute("viewBox",`0 0 ${r} ${a.getHeight()}`),l.setAttribute("width","100%"),l.setAttribute("height",String(a.getHeight()))),n?.show&&st(e,a,n),a}var gt=class{_opts;_series=[];_thresholds=[];_annotations=[];_highlights=[];_markers=[];_bands=[];_tooltip;constructor(t,e){this._opts={},t!==void 0&&(this._opts.width=t),e!==void 0&&(this._opts.height=e);}setWidth(t){return this._opts.width=t,this}setHeight(t){return this._opts.height=t,this}setSize(t,e){return this._opts.width=t,this._opts.height=e,this}setMargin(t,e,n,o){return typeof t=="object"?this._opts.margin=t:this._opts.margin={top:t,right:e??0,bottom:n??0,left:o??0},this}setLocale(t){return this._opts.locale=t,this}setAxes(t){return this._opts.axes=t,this}setXAxis(t){return this._opts.axes={...this._opts.axes,x:{...this._opts.axes?.x,...t}},this}setLeftAxis(t){return this._opts.axes={...this._opts.axes,left:{...this._opts.axes?.left,...t}},this}setRightAxis(t){return this._opts.axes={...this._opts.axes,right:{...this._opts.axes?.right,...t}},this}setYAxis(t,e){this._opts.axes??={},this._opts.axes.y??=[];let n=[...this._opts.axes.y];for(;n.length<=t;)n.push({});return n[t]={...n[t],...e},this._opts.axes.y=n,this}setLegend(t,e,n){return typeof t=="object"?this._opts.legend=t:this._opts.legend={show:t,position:e,orientation:n},this}setGaps(t){return this._opts.gaps=t,this}setTooltip(t){return this._tooltip={show:true,...t},this}addSeries(t){return this._series.push(t),this}addSeriesAll(t){return this._series.push(...t),this}addThreshold(t){return this._thresholds.push(t),this}addThresholds(t){return this._thresholds.push(...t),this}addAnnotation(t){return this._annotations.push(t),this}addAnnotations(t){return this._annotations.push(...t),this}addHighlight(t){return this._highlights.push(t),this}addMarker(t){return this._markers.push(t),this}addAnnotationBand(t){return this._bands.push(t),this}clear(t){return (!t||t==="series")&&(this._series=[]),(!t||t==="thresholds")&&(this._thresholds=[]),(!t||t==="annotations")&&(this._annotations=[]),(!t||t==="highlights")&&(this._highlights=[]),(!t||t==="markers")&&(this._markers=[]),(!t||t==="bands")&&(this._bands=[]),this}toOptions(){return {...this._opts,series:this._series.length?this._series:this._opts.series,thresholds:this._thresholds.length?this._thresholds:this._opts.thresholds,annotations:this._annotations.length?this._annotations:this._opts.annotations,highlights:this._highlights.length?this._highlights:this._opts.highlights,markers:this._markers.length?this._markers:this._opts.markers,annotationBands:this._bands.length?this._bands:this._opts.annotationBands}}build(){return new K(this.toOptions())}getSvg(){let t=this.build(),{content:e}=new q().render(t.renderCommands());return e}mount(t){let e=typeof t=="string"?document.querySelector(t):t;if(!e){let s=typeof t=="string"?`'${t}'`:"";throw new Error(`GraphBuilder.mount: target ${s} not found`)}this._opts.width||(this._opts.width=e.clientWidth||800);let n=this.build(),{content:o}=new q().render(n.renderCommands());e.innerHTML=o;let r=e.querySelector("svg");if(r){let s=this._opts.width??800;r.setAttribute("viewBox",`0 0 ${s} ${n.getHeight()}`),r.setAttribute("width","100%"),r.setAttribute("height",String(n.getHeight()));}return this._tooltip?.show&&st(e,n,this._tooltip),n}};var yt=class{_series;constructor(t){this._series={name:t,data:[]};}addPoint(t,e){return this._series.data.push({time:t,value:e}),this}setData(t){return this._series.data=[...t],this}addPoints(t){return this._series.data.push(...t),this}addFloats(t,e){let n=Math.min(t.length,e.length);for(let o=0;o<n;o++)this._series.data.push({time:t[o],value:e[o]});return this}addNullPoint(t){return this._series.data.push({time:t,value:null}),this}setYAxisIndex(t){return this._series.yAxisIndex=t,this}setColor(t){return this._series.style??={},!this._series.style.line||typeof this._series.style.line=="boolean"?this._series.style.line={color:t}:Array.isArray(this._series.style.line)?this._series.style.line.length===0?this._series.style.line=[{color:t}]:this._series.style.line[0].color=t:this._series.style.line.color=t,this}setStyle(t){return this._series.style=t,this}setLineStyle(t,e,n){return this._series.style??={},this._series.style.line={color:t,width:e,style:n},this}setSmoothing(t){return this._series.style??={},!this._series.style.line||typeof this._series.style.line=="boolean"?this._series.style.line={smoothing:t}:Array.isArray(this._series.style.line)?this._series.style.line.length===0?this._series.style.line=[{smoothing:t}]:this._series.style.line[0].smoothing=t:this._series.style.line.smoothing=t,this}setFill(t){return this._series.style??={},this._series.style.fill=t,this}setID(t){return this._series.id=t,this}setColorByThresholds(t){return this._series.colorByThresholds=t,this}build(){return this._series}};var bt=class{_threshold;constructor(t,e){this._threshold={name:t,value:e};}setColor(t){return this._threshold.color=t,this}setLine(t){return this._threshold.line=t,this}setFill(t,e){return this._threshold.fill=t,this._threshold.fillOpacity=e,this}setFillHatch(t){return this._threshold.fillHatch=t,this}setLabel(t,e){return this._threshold.label={text:t,position:e},this}setID(t){return this._threshold.id=t,this}build(){return this._threshold}};var xt=class{_marker;constructor(t){this._marker={time:t};}setValue(t){return this._marker.value=t,this}setLabel(t){return this._marker.label=t,this}setColor(t){return this._marker.color=t,this}setPointStyle(t){return this._marker.pointStyle=t,this}setLineStyle(t){return t==="none"?delete this._marker.lineStyle:this._marker.lineStyle=t,this}setSeriesIndex(t){return this._marker.seriesIndex=t,this}build(){return this._marker}};var St=class{_highlight;constructor(t,e){this._highlight={startTime:t,endTime:e};}setLabel(t){return this._highlight.label=t,this}setColor(t){return this._highlight.color=t,this}setOpacity(t){return this._highlight.opacity=t,this}setLabelPosition(t){return this._highlight.labelPosition=t,this}setRotate(t){return this._highlight.rotate=t,this}build(){return this._highlight}};var _t=class{_ann;constructor(t){this._ann={type:t};}setID(t){return this._ann.id=t,this}setTitle(t){return this._ann.title=t,this}setFrom(t,e,n){return this._ann.from={time:t,value:e,axis:n},this}setTo(t,e,n){return this._ann.to={time:t,value:e,axis:n},this}setAt(t,e,n){return this._ann.at={time:t,value:e,axis:n},this}setColor(t){return this._ann.color=t,this}setWidth(t){return this._ann.width=t,this}setDash(t){return this._ann.dash=t,this}setHeadSize(t){return this._ann.headSize=t,this}setFill(t){return this._ann.fill=t,this}setHatch(t){return this._ann.hatch=t,this}setStroke(t){return this._ann.stroke=t,this}setOpacity(t){return this._ann.opacity=t,this}setRadius(t){return this._ann.radius=t,this}setShape(t){return this._ann.shape=t,this}setText(t){return this._ann.text=t,this}setAnchor(t){return this._ann.anchor=t,this}setDx(t){return this._ann.dx=t,this}setDy(t){return this._ann.dy=t,this}setRotate(t){return this._ann.rotate=t,this}build(){return this._ann}};var vt=class{_band;constructor(t){this._band={name:t,items:[]};}setHeight(t){return this._band.height=t,this}setSpacing(t){return this._band.spacing=t,this}setHatch(t){return this._band.hatch=t,this}setShowAxis(t){return this._band.showAxis=t,this}setShowInLegend(t){return this._band.showInLegend=t,this}setBackground(t){return this._band.background=t,this}addItem(t){return this._band.items.push(t),this}build(){return this._band}},wt=class{_item;constructor(t,e){this._item={startTime:t,endTime:e};}setFill(t){return this._item.fill=t,this}setHatch(t){return this._item.hatch=t,this}setStroke(t){return this._item.stroke=t,this}setStrokeWidth(t){return this._item.strokeWidth=t,this}setLabel(t,e,n,o){return this._item.label=t,e!==void 0&&(this._item.labelFontSize=e),n!==void 0&&(this._item.labelFill=n),o!==void 0&&(this._item.labelBaseline=o),this}build(){return this._item}};function Oe(i){let{thresholds:t,colors:e,hatches:n}=i;if(e.length!==t.length+1)throw new Error(`fillBetweenThresholds: expected ${t.length+1} colors for ${t.length} thresholds, got ${e.length}`);if(n!==void 0&&n.length!==e.length)throw new Error(`fillBetweenThresholds: hatches length (${n.length}) must equal colors length (${e.length})`);return {regions:e.map((r,s)=>{let a=n?.[s],h=a?{color:r,hatch:a}:r;return s===0?{to:{threshold:t[0]},fill:h}:s===e.length-1?{from:{threshold:t[t.length-1]},fill:h}:{from:{threshold:t[s-1]},to:{threshold:t[s]},fill:h}})}}function Ft(i){if(!i||typeof i!="object")throw new Error("DataPoint: object expected");let{time:t,value:e,annotation:n}=i;if(typeof t!="number"||Number.isNaN(t))throw new TypeError(`DataPoint: invalid time=${t}`);if(e!==null&&(typeof e!="number"||Number.isNaN(e)))throw new Error(`DataPoint: invalid value=${e}`);return {time:t,value:e,annotation:n&&typeof n=="string"?n:void 0}}function We(i){if(Array.isArray(i))return i.map(Ft);if(i&&typeof i=="object"){let t=i,e=t.name,n=t.data,o=t.sensorType,r=t.enumMap,s=t.color,a=t.lineWidth,h=t.smoothing,l=t.seriesType;if(!e||!e.length)throw new Error("Series: name required");if(!Array.isArray(n))throw new Error("Series: data must be an array");let d=s!==void 0||a!==void 0||h!==void 0?{color:s,width:a,smoothing:h}:void 0;return {name:e,data:n.map(Ft),sensorType:o??"numeric",enumMap:r,seriesType:l,...d&&{style:{line:d}}}}throw new Error("parseSeries: object or DataPoint[] expected")}function Re(i){if(!i||typeof i!="object")throw new Error("parseAggregated: object expected");let t=i,e=t.name,n=t.data,o=t.showAs,r=t.avgLine,s=t.countOpacity,a=t.color;if(!e?.length)throw new Error("AggregatedSeries: name required");if(!Array.isArray(n))throw new Error("AggregatedSeries: data must be an array");return {name:e,data:Ie(n),showAs:o,avgLine:r,countOpacity:s,...a!==void 0&&{style:{line:{color:a},fill:a}}}}function Ie(i){let t=e=>typeof e=="number"?e:null;return i.map(e=>{let n=e;return {time:n.time??0,min:t(n.min),max:t(n.max),avg:t(n.avg),count:typeof n.count=="number"?n.count:0}})}var kt={...p};function Ge(i){kt={...kt,...i};}function Ee(){return kt}function Ve(){kt={...p};}/*!
|
|
46
|
+
</g>`}_esc(t){return t.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}};function Fe(i){return typeof requestAnimationFrame=="function"?requestAnimationFrame(i):setTimeout(()=>i(0),16)}function je(i){typeof cancelAnimationFrame=="function"?cancelAnimationFrame(i):clearTimeout(i);}function me(){let i=0,t=false;return {schedule:e=>{t||(t=true,i=Fe(()=>{t=false,e();}));},cancel:()=>{t&&(t=false,je(i));}}}var ue="http://www.w3.org/2000/svg";function Oe(i){let t=i.style?.line;return t&&!Array.isArray(t)&&t.color?t.color:g.stroke}function ce(i){return i.replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function He(i){if(i.length===0)return "";let t=new Date(i[0].time).toLocaleString(),e=i.map(n=>`<div><span class="mlc-tooltip__name">${ce(n.series.name)}:</span> ${n.value.toFixed(2)}</div>`);return `<div class="mlc-tooltip__time">${ce(t)}</div>${e.join("")}`}function Re(i,t){if(i.length===0)return;let e=0,n=i.length-1;for(;e<n;){let s=e+n>>1;i[s].time<t?e=s+1:n=s;}let o=i[Math.max(0,e-1)],r=i[e];return Math.abs(o.time-t)<=Math.abs(r.time-t)?o:r}function We(i){return "value"in i?i.value:i.avg}function at(i,t,e={}){let n=i.querySelector("svg");if(!n)throw new Error("attachTooltip: target has no <svg> child (did you mount the chart first?)");let o=e.format??He,r=e.snapRadius??1/0,s=e.className??"mlc-tooltip",a=e.showPicks??true,h=e.pickRadius??5,l=e.picksClassName??"mlc-tooltip-picks",d=document.createElement("div");d.className=s,d.style.position="absolute",d.style.pointerEvents="none",d.style.display="none",getComputedStyle(i).position==="static"&&(i.style.position="relative"),i.appendChild(d);let u=null;a&&(u=document.createElementNS(ue,"g"),u.setAttribute("class",l),u.setAttribute("pointer-events","none"),n.appendChild(u));let m=()=>{u&&u.replaceChildren();},c=t.series.map((P,L)=>({data:P.data.map(B=>({time:B.time,value:We(B)})).filter(B=>B.value!==null).sort((B,G)=>B.time-G.time),series:P,index:L})),f=me(),y=null,b=P=>{let L=n.getBoundingClientRect(),W=t.getWidth?.()??L.width,B=(P.clientX-L.left)*W/Math.max(1,L.width);t.getHeight?.()??L.height;let I=t.invertTime(B);if(!Number.isFinite(I)){d.style.display="none";return}let S=[];for(let F of c){let T=Re(F.data,I);if(!T)continue;let O=t.project(T.time,T.value,F.series.yAxisIndex??0).x,E=t.project(T.time,T.value,F.series.yAxisIndex??0).y;Math.abs(O-B)>r||S.push({seriesIndex:F.index,series:F.series,time:T.time,value:T.value,x:O,y:E});}if(S.length===0){d.style.display="none",m();return}d.innerHTML=o(S);let v=i.getBoundingClientRect(),k=12,$=(P.clientX-L.left)/Math.max(1,L.width),j=(P.clientY-L.top)/Math.max(1,L.height),H=$<.5?`${k}px`:`calc(-100% - ${k}px)`,Y=j<.5?`${k}px`:`calc(-100% - ${k}px)`;if(d.style.left=`${P.clientX-v.left}px`,d.style.top=`${P.clientY-v.top}px`,d.style.transform=`translate(${H}, ${Y})`,d.style.display="",u){u.replaceChildren();for(let F of S){let T=document.createElementNS(ue,"circle");T.setAttribute("cx",String(F.x)),T.setAttribute("cy",String(F.y)),T.setAttribute("r",String(h)),T.setAttribute("fill","#ffffff"),T.setAttribute("stroke",Oe(F.series)),T.setAttribute("stroke-width","2"),T.setAttribute("class",`${l}__dot`),u.appendChild(T);}}},_=P=>{y=P,f.schedule(()=>{y&&b(y);});},C=()=>{y=null,f.cancel(),d.style.display="none",m();};n.addEventListener("mousemove",_),n.addEventListener("mouseleave",C);let N=false;return ()=>{N||(N=true,y=null,f.cancel(),n.removeEventListener("mousemove",_),n.removeEventListener("mouseleave",C),d.remove(),u&&u.remove());}}function Ie(i,t={}){let e=typeof i=="string"?document.querySelector(i):i;if(!e)throw new Error(`mount: target ${typeof i=="string"?`'${i}'`:""} not found`);let{tooltip:n,...o}=t,r=o.width??e.clientWidth??800,s=o.height??350,a=new K({...o,width:r,height:s}),{content:h}=new q().render(a.renderCommands());e.innerHTML=h;let l=e.querySelector("svg");return l&&(l.setAttribute("viewBox",`0 0 ${r} ${a.getHeight()}`),l.setAttribute("width","100%"),l.setAttribute("height",String(a.getHeight()))),n?.show&&at(e,a,n),a}var bt=class{_opts;_series=[];_thresholds=[];_annotations=[];_highlights=[];_markers=[];_bands=[];_tooltip;constructor(t,e){this._opts={},t!==void 0&&(this._opts.width=t),e!==void 0&&(this._opts.height=e);}setWidth(t){return this._opts.width=t,this}setHeight(t){return this._opts.height=t,this}setSize(t,e){return this._opts.width=t,this._opts.height=e,this}setMargin(t,e,n,o){return typeof t=="object"?this._opts.margin=t:this._opts.margin={top:t,right:e??0,bottom:n??0,left:o??0},this}setLocale(t){return this._opts.locale=t,this}setAxes(t){return this._opts.axes=t,this}setXAxis(t){return this._opts.axes={...this._opts.axes,x:{...this._opts.axes?.x,...t}},this}setLeftAxis(t){return this._opts.axes={...this._opts.axes,left:{...this._opts.axes?.left,...t}},this}setRightAxis(t){return this._opts.axes={...this._opts.axes,right:{...this._opts.axes?.right,...t}},this}setYAxis(t,e){this._opts.axes??={},this._opts.axes.y??=[];let n=[...this._opts.axes.y];for(;n.length<=t;)n.push({});return n[t]={...n[t],...e},this._opts.axes.y=n,this}setLegend(t,e,n){return typeof t=="object"?this._opts.legend=t:this._opts.legend={show:t,position:e,orientation:n},this}setGaps(t){return this._opts.gaps=t,this}setTooltip(t){return this._tooltip={show:true,...t},this}addSeries(t){return this._series.push(t),this}addSeriesAll(t){return this._series.push(...t),this}addThreshold(t){return this._thresholds.push(t),this}addThresholds(t){return this._thresholds.push(...t),this}addAnnotation(t){return this._annotations.push(t),this}addAnnotations(t){return this._annotations.push(...t),this}addHighlight(t){return this._highlights.push(t),this}addMarker(t){return this._markers.push(t),this}addAnnotationBand(t){return this._bands.push(t),this}clear(t){return (!t||t==="series")&&(this._series=[]),(!t||t==="thresholds")&&(this._thresholds=[]),(!t||t==="annotations")&&(this._annotations=[]),(!t||t==="highlights")&&(this._highlights=[]),(!t||t==="markers")&&(this._markers=[]),(!t||t==="bands")&&(this._bands=[]),this}toOptions(){return {...this._opts,series:this._series.length?this._series:this._opts.series,thresholds:this._thresholds.length?this._thresholds:this._opts.thresholds,annotations:this._annotations.length?this._annotations:this._opts.annotations,highlights:this._highlights.length?this._highlights:this._opts.highlights,markers:this._markers.length?this._markers:this._opts.markers,annotationBands:this._bands.length?this._bands:this._opts.annotationBands}}build(){return new K(this.toOptions())}getSvg(){let t=this.build(),{content:e}=new q().render(t.renderCommands());return e}mount(t){let e=typeof t=="string"?document.querySelector(t):t;if(!e){let s=typeof t=="string"?`'${t}'`:"";throw new Error(`GraphBuilder.mount: target ${s} not found`)}this._opts.width||(this._opts.width=e.clientWidth||800);let n=this.build(),{content:o}=new q().render(n.renderCommands());e.innerHTML=o;let r=e.querySelector("svg");if(r){let s=this._opts.width??800;r.setAttribute("viewBox",`0 0 ${s} ${n.getHeight()}`),r.setAttribute("width","100%"),r.setAttribute("height",String(n.getHeight()));}return this._tooltip?.show&&at(e,n,this._tooltip),n}};var xt=class{_series;constructor(t){this._series={name:t,data:[]};}addPoint(t,e){return this._series.data.push({time:t,value:e}),this}setData(t){return this._series.data=[...t],this}addPoints(t){return this._series.data.push(...t),this}addFloats(t,e){let n=Math.min(t.length,e.length);for(let o=0;o<n;o++)this._series.data.push({time:t[o],value:e[o]});return this}addNullPoint(t){return this._series.data.push({time:t,value:null}),this}setYAxisIndex(t){return this._series.yAxisIndex=t,this}setColor(t){return this._series.style??={},!this._series.style.line||typeof this._series.style.line=="boolean"?this._series.style.line={color:t}:Array.isArray(this._series.style.line)?this._series.style.line.length===0?this._series.style.line=[{color:t}]:this._series.style.line[0].color=t:this._series.style.line.color=t,this}setStyle(t){return this._series.style=t,this}setLineStyle(t,e,n){return this._series.style??={},this._series.style.line={color:t,width:e,style:n},this}setSmoothing(t){return this._series.style??={},!this._series.style.line||typeof this._series.style.line=="boolean"?this._series.style.line={smoothing:t}:Array.isArray(this._series.style.line)?this._series.style.line.length===0?this._series.style.line=[{smoothing:t}]:this._series.style.line[0].smoothing=t:this._series.style.line.smoothing=t,this}setFill(t){return this._series.style??={},this._series.style.fill=t,this}setID(t){return this._series.id=t,this}setColorByThresholds(t){return this._series.colorByThresholds=t,this}build(){return this._series}};var St=class{_threshold;constructor(t,e){this._threshold={name:t,value:e};}setColor(t){return this._threshold.color=t,this}setLine(t){return this._threshold.line=t,this}setFill(t,e){return this._threshold.fill=t,this._threshold.fillOpacity=e,this}setFillHatch(t){return this._threshold.fillHatch=t,this}setLabel(t,e){return this._threshold.label={text:t,position:e},this}setID(t){return this._threshold.id=t,this}build(){return this._threshold}};var _t=class{_marker;constructor(t){this._marker={time:t};}setValue(t){return this._marker.value=t,this}setLabel(t){return this._marker.label=t,this}setColor(t){return this._marker.color=t,this}setPointStyle(t){return this._marker.pointStyle=t,this}setLineStyle(t){return t==="none"?delete this._marker.lineStyle:this._marker.lineStyle=t,this}setSeriesIndex(t){return this._marker.seriesIndex=t,this}build(){return this._marker}};var wt=class{_highlight;constructor(t,e){this._highlight={startTime:t,endTime:e};}setLabel(t){return this._highlight.label=t,this}setColor(t){return this._highlight.color=t,this}setOpacity(t){return this._highlight.opacity=t,this}setLabelPosition(t){return this._highlight.labelPosition=t,this}setRotate(t){return this._highlight.rotate=t,this}build(){return this._highlight}};var vt=class{_ann;constructor(t){this._ann={type:t};}setID(t){return this._ann.id=t,this}setTitle(t){return this._ann.title=t,this}setFrom(t,e,n){return this._ann.from={time:t,value:e,axis:n},this}setTo(t,e,n){return this._ann.to={time:t,value:e,axis:n},this}setAt(t,e,n){return this._ann.at={time:t,value:e,axis:n},this}setColor(t){return this._ann.color=t,this}setWidth(t){return this._ann.width=t,this}setDash(t){return this._ann.dash=t,this}setHeadSize(t){return this._ann.headSize=t,this}setFill(t){return this._ann.fill=t,this}setHatch(t){return this._ann.hatch=t,this}setStroke(t){return this._ann.stroke=t,this}setOpacity(t){return this._ann.opacity=t,this}setRadius(t){return this._ann.radius=t,this}setShape(t){return this._ann.shape=t,this}setText(t){return this._ann.text=t,this}setAnchor(t){return this._ann.anchor=t,this}setDx(t){return this._ann.dx=t,this}setDy(t){return this._ann.dy=t,this}setRotate(t){return this._ann.rotate=t,this}build(){return this._ann}};var kt=class{_band;constructor(t){this._band={name:t,items:[]};}setHeight(t){return this._band.height=t,this}setSpacing(t){return this._band.spacing=t,this}setHatch(t){return this._band.hatch=t,this}setShowAxis(t){return this._band.showAxis=t,this}setShowInLegend(t){return this._band.showInLegend=t,this}setBackground(t){return this._band.background=t,this}addItem(t){return this._band.items.push(t),this}build(){return this._band}},Ct=class{_item;constructor(t,e){this._item={startTime:t,endTime:e};}setFill(t){return this._item.fill=t,this}setHatch(t){return this._item.hatch=t,this}setStroke(t){return this._item.stroke=t,this}setStrokeWidth(t){return this._item.strokeWidth=t,this}setLabel(t,e,n,o){return this._item.label=t,e!==void 0&&(this._item.labelFontSize=e),n!==void 0&&(this._item.labelFill=n),o!==void 0&&(this._item.labelBaseline=o),this}build(){return this._item}};function Ge(i){let{thresholds:t,colors:e,hatches:n}=i;if(e.length!==t.length+1)throw new Error(`fillBetweenThresholds: expected ${t.length+1} colors for ${t.length} thresholds, got ${e.length}`);if(n!==void 0&&n.length!==e.length)throw new Error(`fillBetweenThresholds: hatches length (${n.length}) must equal colors length (${e.length})`);return {regions:e.map((r,s)=>{let a=n?.[s],h=a?{color:r,hatch:a}:r;return s===0?{to:{threshold:t[0]},fill:h}:s===e.length-1?{from:{threshold:t[t.length-1]},fill:h}:{from:{threshold:t[s-1]},to:{threshold:t[s]},fill:h}})}}function Ot(i){if(!i||typeof i!="object")throw new Error("DataPoint: object expected");let{time:t,value:e,annotation:n}=i;if(typeof t!="number"||Number.isNaN(t))throw new TypeError(`DataPoint: invalid time=${t}`);if(e!==null&&(typeof e!="number"||Number.isNaN(e)))throw new Error(`DataPoint: invalid value=${e}`);return {time:t,value:e,annotation:n&&typeof n=="string"?n:void 0}}function Ee(i){if(Array.isArray(i))return i.map(Ot);if(i&&typeof i=="object"){let t=i,e=t.name,n=t.data,o=t.sensorType,r=t.enumMap,s=t.color,a=t.lineWidth,h=t.smoothing,l=t.seriesType;if(!e||!e.length)throw new Error("Series: name required");if(!Array.isArray(n))throw new Error("Series: data must be an array");let d=s!==void 0||a!==void 0||h!==void 0?{color:s,width:a,smoothing:h}:void 0;return {name:e,data:n.map(Ot),sensorType:o??"numeric",enumMap:r,seriesType:l,...d&&{style:{line:d}}}}throw new Error("parseSeries: object or DataPoint[] expected")}function Ve(i){if(!i||typeof i!="object")throw new Error("parseAggregated: object expected");let t=i,e=t.name,n=t.data,o=t.showAs,r=t.avgLine,s=t.countOpacity,a=t.color;if(!e?.length)throw new Error("AggregatedSeries: name required");if(!Array.isArray(n))throw new Error("AggregatedSeries: data must be an array");return {name:e,data:Ne(n),showAs:o,avgLine:r,countOpacity:s,...a!==void 0&&{style:{line:{color:a},fill:a}}}}function Ne(i){let t=e=>typeof e=="number"?e:null;return i.map(e=>{let n=e;return {time:n.time??0,min:t(n.min),max:t(n.max),avg:t(n.avg),count:typeof n.count=="number"?n.count:0}})}/*!
|
|
47
47
|
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
48
48
|
* MIT with Attribution: free use incl. commercial requires visible credit to
|
|
49
49
|
* "Michael Lechner". Commercial license (no attribution) on request. See LICENSE.
|
|
@@ -62,4 +62,4 @@ ${e}
|
|
|
62
62
|
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
63
63
|
* MIT with Attribution: free use incl. commercial must have visible credit to
|
|
64
64
|
* "Michael Lechner". Commercial license (no attribution) on request. See LICENSE.
|
|
65
|
-
*/export{
|
|
65
|
+
*/export{kt as AnnotationBandBuilder,Ct as AnnotationBandItemBuilder,vt as AnnotationBuilder,bt as GraphBuilder,wt as HighlightBuilder,K as MLTimeGraph,_t as MarkerBuilder,q as SVGRenderer,St as ThresholdBuilder,xt as TimeSeriesBuilder,at as attachTooltip,Ge as fillBetweenThresholds,Q as getDefaultTheme,Ie as mount,Ve as parseAggregated,Ot as parseDataPoint,Ee as parseSeries,be as resetDefaultTheme,ye as setDefaultTheme};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var C=class{_config;_state;constructor(t,n){this._config={enabled:n?.enabled??true,zoomSpeed:n?.zoomSpeed??.1,minDomainMs:n?.minDomainMs??0,maxDomainMs:n?.maxDomainMs??365*24*60*60*1e3},this._state={domain:[...t],originalDomain:[...t],scale:1,offset:0};}get state(){return {...this._state,domain:[...this._state.domain]}}applyZoom(t,n,r){if(!this._config.enabled)return;let o=1+Math.sign(n)*this._config.zoomSpeed;if(o<=0)return;let[i,a]=this._state.domain,
|
|
1
|
+
var C=class{_config;_state;constructor(t,n){this._config={enabled:n?.enabled??true,zoomSpeed:n?.zoomSpeed??.1,minDomainMs:n?.minDomainMs??0,maxDomainMs:n?.maxDomainMs??365*24*60*60*1e3},this._state={domain:[...t],originalDomain:[...t],scale:1,offset:0};}get state(){return {...this._state,domain:[...this._state.domain]}}applyZoom(t,n,r){if(!this._config.enabled)return;let o=1+Math.sign(n)*this._config.zoomSpeed;if(o<=0)return;let[i,a]=this._state.domain,d=a-i,s=t/r,e=d/o,l=this._config.minDomainMs??0,m=this._config.maxDomainMs??1/0;e<l&&(e=l),e>m&&(e=m);let p=i+d*s,u=p-e*s,c=p+e*(1-s),[b,g]=this._state.originalDomain;c-u>g-b?(u=b,c=g,e=g-b):(u<b&&(c=g-(g-b)*((c-u)/(g-b)),u=b),c>g&&(u=b+(g-b)*((u-b)/(g-b)),c=g)),this._state.domain=[u,c],this._state.scale=(a-i)/e;}applyPan(t,n){if(!this._config.enabled)return;let[r,o]=this._state.domain,i=o-r,[a,d]=this._state.originalDomain,s=-(t/n)*i,e=r+s,l=o+s;e<a&&(s-=e-a),l>d&&(s-=l-d),this._state.domain=[r+s,o+s];}reset(){this._state.domain=[...this._state.originalDomain],this._state.scale=1,this._state.offset=0;}get enabled(){return this._config.enabled??true}};var w=new Map;function R(h,t){return `${h}|${JSON.stringify(t??{})}`}function k(h,t){let n=R(h,t),r=w.get(n);return r||(r=new Intl.DateTimeFormat(h,t),w.set(n,r)),r}var y=class{#t;#e;constructor(t){this.#t=[...t.domain],this.#e=[...t.range];}map(t){let n=Number(t),[r,o]=this.#t,[i,a]=this.#e;return o===r?i:i+(n-r)/(o-r)*(a-i)}invert(t){let[n,r]=this.#t,[o,i]=this.#e;return i===o?n:n+(t-o)/(i-o)*(r-n)}domain(){return [...this.#t]}range(){return [...this.#e]}},_=[{label:"second",ms:1e3},{label:"2_seconds",ms:2e3},{label:"5_seconds",ms:5e3},{label:"10_seconds",ms:1e4},{label:"30_seconds",ms:3e4},{label:"minute",ms:6e4},{label:"5_minutes",ms:3e5},{label:"15_minutes",ms:9e5},{label:"30_minutes",ms:18e5},{label:"hour",ms:36e5},{label:"3_hours",ms:108e5},{label:"6_hours",ms:216e5},{label:"day",ms:864e5},{label:"week",ms:6048e5},{label:"month",ms:2592e6},{label:"3_months",ms:7776e6},{label:"6_months",ms:15552e6},{label:"year",ms:31536e6},{label:"2_years",ms:63072e6},{label:"5_years",ms:15768e7}],x=class{#t;#e;constructor(t){this.#t=new y({domain:t.domain,range:t.range}),this.#e=t.locale||(typeof navigator<"u"?navigator.language:"en-US");}map(t){return this.#t.map(Number(t))}invert(t){return this.#t.invert(t)}domain(){return this.#t.domain()}range(){return this.#t.range()}get locale(){return this.#e}tickInterval(t,n=3,r=12){let[o,i]=this.#t.domain(),a=i-o;if(a<=0)return {interval:_[0].ms};let d=a/t,s=_[0].ms;for(let m of _)if(m.ms>=d){s=m.ms;break}let e=s,l=Math.round(a/e);for(;l>r&&e<_[_.length-1].ms;){let m=_.findIndex(p=>p.ms===e);e=_[Math.min(m+1,_.length-1)].ms,l=Math.round(a/e);}for(;l<n&&e>_[0].ms;){let m=_.findIndex(p=>p.ms===e);e=_[Math.max(m-1,0)].ms,l=Math.round(a/e);}return {interval:e}}ticks(t){let n=t?.minTicks??5,r=t?.maxTicks??12,{interval:o}=this.tickInterval((n+r)/2,n,r),[i,a]=this.#t.domain(),d=[],s=Math.ceil(i/o)*o;for(let e=s;e<=a;e+=o)d.push(e);return d}format(t,n){return k(this.#e,n).format(new Date(t))}};function v(h){let t=1/0,n=-1/0;for(let r=0;r<h.length;r++){let o=h[r];o<t&&(t=o),o>n&&(n=o);}return [t,n]}var M={stroke:"#4285f4",strokeWidth:2,pointSize:4,pointThreshold:100,gapThreshold:0,fill:"none",hatch:null,bandFill:"#4285f4",bandOpacity:.6,bandAvgLine:"#e53e3e",minColor:"#3b82f6",maxColor:"#ef4444",avgColor:"#64748b",areaFillAlpha:"4285f433",axisColor:"#ccc",tickColor:"#ddd",textColor:"#777",textSize:11,axisLabelColor:"#444",axisLabelSize:12,gridStroke:"#e2e8f0",gridStrokeWidth:1,gridOpacity:1,legendStroke:"#ccc",legendText:"#333",legendFont:11,annotationColor:"#334155",annotationWidth:1.5,annotationHead:9,annotationRadius:4,annotationFontSize:11,thresholdColor:"#666",thresholdLine:"dashed",thresholdFillOpacity:.12,thresholdFontSize:10,highlightColor:"#fbbf24",highlightOpacity:.2,highlightLabelColor:"#92400e",markerColor:"#f59e0b",markerSize:5,gapFill:"#fff",gapStroke:"#ccc",gapStrokeWidth:1,gapFontColor:"#999",gapFontSize:10,gapFillOpacity:.15,tooltipBg:"#fff",tooltipBorder:"#cbd5e1",tooltipText:"#1e293b",tooltipValue:"#3b82f6",tooltipCrosshair:"#94a3b8",tooltipSnapRadius:20,statsLineColor:"#94a3b8",statsLabelColor:"#64748b",minimapStroke:"#94a3b8",minimapBg:"#f8f9fa",minimapBrush:"#3b82f644",palette:["#4285f4","#ea4335","#22c55e","#fbbc05","#9334ea","#12b5e5","#fb923c","#6366f1"]};var I={...M};function S(){return I}var f=new Proxy({},{get:(h,t)=>S()[t],has:(h,t)=>t in S(),ownKeys:()=>Reflect.ownKeys(S()),getOwnPropertyDescriptor:(h,t)=>Reflect.getOwnPropertyDescriptor(S(),t)});var D=class{_data;_width;_height;_x;_y;_zoom;_stroke;_bgColor;_brushColor;constructor(t){this._data=t.data,this._width=t.width,this._height=t.height,this._x=t.x,this._y=t.y,this._zoom=t.zoom,this._stroke=t.stroke??f.minimapStroke,this._bgColor=t.bgColor??f.minimapBg,this._brushColor=t.brushColor??f.minimapBrush;}render(){if(this._data.length===0)return [];let t=[],n=this._data.map(e=>e.time),r=this._data.map(e=>e.value).filter(e=>e!==null),o=v(n),i=v(r),a=new x({domain:o,range:[0,this._width]}),d=new y({domain:i,range:[this._height,0]});t.push({type:"rect",x:this._x,y:this._y,w:this._width,h:this._height,fill:this._bgColor});let s=this._data.map(e=>({x:this._x+a.map(e.time),y:this._y+d.map(e.value)}));if(t.push({type:"path",points:s,smoothing:false,stroke:this._stroke,strokeWidth:1}),this._zoom){let e=this._zoom.state,l=this._x+a.map(e.domain[0]),m=this._x+a.map(e.domain[1]),p=Math.max(2,m-l);t.push({type:"rect",x:l,y:this._y,w:p,h:this._height,fill:this._brushColor});}return t}navigateTo(t){let n=this._data.map(a=>a.time),r=v(n),o=new x({domain:r,range:[0,this._width]}),i=t-this._x;return o.invert(i)}};var T=class{_mouseX;_mouseY;_timeScale;_valueScale;_data;_xRange;_yRange;_snapRadius;_bgColor;_borderColor;_textColor;constructor(t){this._mouseX=t.mouseX,this._mouseY=t.mouseY,this._timeScale=t.timeScale,this._valueScale=t.valueScale,this._data=t.data,this._xRange=t.xRange,this._yRange=t.yRange,this._snapRadius=t.snapRadius??f.tooltipSnapRadius,this._bgColor=t.bgColor??f.tooltipBg,this._borderColor=t.borderColor??f.tooltipBorder,this._textColor=t.textColor??f.tooltipText;}compute(){let t=[...this._data].filter(u=>u.value!==null).sort((u,c)=>u.time-c.time),n,r=1/0;for(let u of t){let c=this._timeScale.map(u.time),b=Math.abs(this._mouseX-c);b<r&&(r=b,n=u);}if(!n||r>this._snapRadius)return {visible:false,commands:[]};let o=this._timeScale.map(n.time),i=this._valueScale.map(n.value),a=[];a.push({type:"line",x1:o,y1:this._yRange[0],x2:o,y2:this._yRange[1],stroke:"#94a3b8",strokeWidth:1},{type:"line",x1:this._xRange[0],y1:i,x2:this._xRange[1],y2:i,stroke:"#94a3b8",strokeWidth:1},{type:"circle",cx:o,cy:i,r:5,fill:"#3b82f6"});let d=new Date(n.time).toLocaleString(),s=n.value.toFixed(2),e=120,l=44,m=o+12,p=i-l-4;return m+e>this._xRange[1]&&(m=o-e-12),p<this._yRange[0]&&(p=i+12),a.push({type:"rect",x:m,y:p,w:e,h:l,fill:this._bgColor,stroke:this._borderColor,strokeWidth:1},{type:"text",content:d,x:m+8,y:p+16,fontSize:10,fill:this._textColor},{type:"text",content:`Value: ${s}`,x:m+8,y:p+32,fontSize:11,fill:"#3b82f6"}),{visible:true,commands:a,dataPoint:n,snapX:o}}};/*!
|
|
2
2
|
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
3
3
|
* MIT with Attribution: free use incl. commercial requires visible credit to
|
|
4
4
|
* "Michael Lechner". Commercial license (no attribution) on request. See LICENSE.
|
|
5
|
-
*/export{
|
|
5
|
+
*/export{D as Minimap,T as Tooltip,C as Zoom};
|
package/dist/internals.d.ts
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
import { M as Marker } from './layout-
|
|
2
|
-
export { d as Layout, e as LayoutConfig, b as LayoutResult, f as LegendConfig, a as LegendItem, L as LegendOrientation, R as Renderer, m as measureLegend,
|
|
1
|
+
import { T as Theme, M as Marker } from './layout-3caueyKS.js';
|
|
2
|
+
export { d as Layout, e as LayoutConfig, b as LayoutResult, f as LegendConfig, a as LegendItem, L as LegendOrientation, R as Renderer, m as measureLegend, h as renderLegend } from './layout-3caueyKS.js';
|
|
3
3
|
import { j as AggregatedPoint, d as TimeScale, e as LinearScale, P as PointStyleType, D as DrawCommand, l as DataPoint, T as Threshold, G as Gap, g as HatchVariant, H as Highlight, b as Annotation, E as EnumMap, O as BandScale, Q as Point, i as AnnotationBandItem, L as LineVariant, F as FillSpec, x as GapStyle, f as TimeSeries } from './scale-CWAa8-uO.js';
|
|
4
4
|
export { R as AxisOrientation, U as AxisPosition, V as BandScaleConfig, W as CircleParams, X as Dashstyle_t, Y as DomainScaleConfig, Z as DrawCircle, _ as DrawGap, $ as DrawGapType_t, a0 as DrawGradient, a1 as DrawGroup, a2 as DrawLine, a3 as DrawPath, a4 as DrawRect, a5 as DrawText, a6 as LabelAnchor, a7 as LineParams, a8 as LinearScaleConfig, a9 as PathParams, aa as RectParams, ab as Scale, ac as ScaleConfig, ad as TIME_INTERVALS, ae as TextParams, af as TimeScaleConfig, ag as getHatch } from './scale-CWAa8-uO.js';
|
|
5
5
|
|
|
6
|
+
/*!
|
|
7
|
+
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
8
|
+
* MIT with Attribution: free use incl. commercial requires visible credit to
|
|
9
|
+
* "Michael Lechner". Commercial license (no attribution) on request. See LICENSE.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
declare const theme: Theme;
|
|
13
|
+
|
|
6
14
|
/*!
|
|
7
15
|
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
8
16
|
* MIT with Attribution: free use incl. commercial requires visible credit to
|
|
@@ -908,4 +916,4 @@ declare function resolveSeriesStyle(series: TimeSeries): ResolvedSeriesStyle;
|
|
|
908
916
|
*/
|
|
909
917
|
declare function slugify(s: string | undefined | null): string;
|
|
910
918
|
|
|
911
|
-
export { AnnotationBandSeries, type AnnotationRenderConfig, BandScale, BandSeries, type BandSeriesConfig, Clip, type ClipRegion, DrawCommand, EnumAxis, type EnumAxisConfig, EnumFormatter, type EnumFormatterOptions, type EnumTickInfo, Formatters, type GapRenderConfig, type GridConfig, type HighlightRenderConfig, LineSeries, type LineSeriesConfig, LinearScale, type MarkerRenderConfig, type MinMaxAvgConfig, MinMaxAvgSeries, type ResolvedLine, type ResolvedMarker, type ResolvedSeriesStyle, type ResolvedShadow, type StatLabelPosition, StatsOverlay, type StatsOverlayConfig, StepSeries, type StepSeriesConfig, type ThresholdRenderConfig, type TickInfo, TimeAxis, type TimeAxisConfig, type TimeFormatOptions, TimeFormatter, TimeScale, ValueAxis, type ValueAxisConfig, type ValueFormatOptions, ValueFormatter, type ValueTickInfo, type Zone, type ZonedFill, type ZonedLineConfig, ZonedLineSeries, renderAnnotations, renderArea, renderGaps, renderGrid, renderHighlights, renderLine, renderMarkers, renderMarkers$1 as renderSeriesMarkers, renderSplitLine, renderStep, renderThresholds, renderZonedArea, resolveFill, resolveGap, resolveLines, resolveMarkers, resolveSeriesStyle, resolveShadow, slugify };
|
|
919
|
+
export { AnnotationBandSeries, type AnnotationRenderConfig, BandScale, BandSeries, type BandSeriesConfig, Clip, type ClipRegion, DrawCommand, EnumAxis, type EnumAxisConfig, EnumFormatter, type EnumFormatterOptions, type EnumTickInfo, Formatters, type GapRenderConfig, type GridConfig, type HighlightRenderConfig, LineSeries, type LineSeriesConfig, LinearScale, type MarkerRenderConfig, type MinMaxAvgConfig, MinMaxAvgSeries, type ResolvedLine, type ResolvedMarker, type ResolvedSeriesStyle, type ResolvedShadow, type StatLabelPosition, StatsOverlay, type StatsOverlayConfig, StepSeries, type StepSeriesConfig, type ThresholdRenderConfig, type TickInfo, TimeAxis, type TimeAxisConfig, type TimeFormatOptions, TimeFormatter, TimeScale, ValueAxis, type ValueAxisConfig, type ValueFormatOptions, ValueFormatter, type ValueTickInfo, type Zone, type ZonedFill, type ZonedLineConfig, ZonedLineSeries, renderAnnotations, renderArea, renderGaps, renderGrid, renderHighlights, renderLine, renderMarkers, renderMarkers$1 as renderSeriesMarkers, renderSplitLine, renderStep, renderThresholds, renderZonedArea, resolveFill, resolveGap, resolveLines, resolveMarkers, resolveSeriesStyle, resolveShadow, slugify, theme };
|
package/dist/internals.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var G=class{};var x=class{static interpolateDataPoint(a,e,t){return {time:a.time+Math.round(t*(e.time-a.time)),value:(a.value??0)+t*((e.value??0)-(a.value??0))}}static interpolateAggregatedPoint(a,e,t){let n=(o,r)=>o!==null&&r!==null?o+t*(r-o):null;return {time:a.time+t*(e.time-a.time),min:n(a.min,e.min),max:n(a.max,e.max),avg:n(a.avg,e.avg),count:Math.round(a.count+t*(e.count-a.count))}}static getRuns(a,e,t=0){let n=[...a].sort((m,s)=>m.time-s.time),o=[],r=[],i=null;for(let m of n){let s=e(m),l=t>0&&i&&m.time-i.time>t;(s||l)&&r.length&&(o.push(r),r=[]),s||r.push(m),i=m;}return r.length&&o.push(r),o}static splitByBoundaries(a,e,t,n){if(a.length===0)return [];if(e.length===0)return [{data:a,zoneIndex:0}];let o=[...e].sort((s,l)=>s-l),r=[],i=s=>{let l=0;for(let u=0;u<o.length&&s>=o[u];u++)l=u+1;return l},m=[a[0]];for(let s=1;s<a.length;s++){let l=a[s-1],u=a[s],c=t(l),d=t(u),p;d>c?p=o.filter(f=>f>c&&f<=d):d<c?p=o.filter(f=>f>=d&&f<c).reverse():p=[];for(let f of p){let g=(f-c)/(d-c),b=n(l,u,g);m.push(b),r.push({data:m,zoneIndex:i((c+f)/2)}),m=[b];}m.push(u);}if(m.length>0){let s=t(m[0]),l=t(m[m.length-1]);r.push({data:m,zoneIndex:i((s+l)/2)});}return r}static splitByThreshold(a,e,t,n){let o=this.splitByBoundaries(a,[e],t,n),r={above:[],below:[]};for(let i of o)i.zoneIndex===0?r.below.push(i.data):r.above.push(i.data);return r}};var ce=class{static compute(a){let e=a.map(m=>m.value).filter(m=>m!==null).sort((m,s)=>m-s);if(e.length===0)return {min:NaN,max:NaN,avg:NaN,mean:NaN,median:NaN,stdDev:NaN,count:0};let t=e.length,n=e.reduce((m,s)=>m+s,0)/t,o=t%2===1?e[Math.floor(t/2)]:(e[t/2-1]+e[t/2])/2,r=e.reduce((m,s)=>m+Math.pow(s-n,2),0)/t,i=Math.sqrt(r);return {min:e[0],max:e[t-1],avg:n,mean:n,median:o,stdDev:i,count:t}}static computeInRange(a,e,t){let n=a.filter(o=>o.time>=e&&o.time<=t);return this.compute(n)}};var de={stroke:"#4285f4",strokeWidth:2,pointSize:4,pointThreshold:100,gapThreshold:0,fill:"none",hatch:null,bandFill:"#4285f4",bandOpacity:.6,bandAvgLine:"#e53e3e",minColor:"#3b82f6",maxColor:"#ef4444",avgColor:"#64748b",areaFillAlpha:"4285f433",axisColor:"#ccc",tickColor:"#ddd",textColor:"#777",textSize:11,axisLabelColor:"#444",axisLabelSize:12,gridStroke:"#e2e8f0",gridStrokeWidth:1,gridOpacity:1,legendStroke:"#ccc",legendText:"#333",legendFont:11,annotationColor:"#334155",annotationWidth:1.5,annotationHead:9,annotationRadius:4,annotationFontSize:11,thresholdColor:"#666",thresholdLine:"dashed",thresholdFillOpacity:.12,thresholdFontSize:10,highlightColor:"#fbbf24",highlightOpacity:.2,highlightLabelColor:"#92400e",markerColor:"#f59e0b",markerSize:5,gapFill:"#fff",gapStroke:"#ccc",gapStrokeWidth:1,gapFontColor:"#999",gapFontSize:10,gapFillOpacity:.15,tooltipBg:"#fff",tooltipBorder:"#cbd5e1",tooltipText:"#1e293b",tooltipValue:"#3b82f6",tooltipCrosshair:"#94a3b8",tooltipSnapRadius:20,statsLineColor:"#94a3b8",statsLabelColor:"#64748b",minimapStroke:"#94a3b8",minimapBg:"#f8f9fa",minimapBrush:"#3b82f644",palette:["#4285f4","#ea4335","#22c55e","#fbbc05","#9334ea","#12b5e5","#fb923c","#6366f1"]};var we={...de};function C(){return we}function he(a,e="classic-diagonal",t="rgba(200, 220, 255, 0.3)",n="#4D88FF",o=2){if(e==="none")return `
|
|
2
2
|
<pattern id="${a}" width="10" height="10" patternUnits="userSpaceOnUse">
|
|
3
3
|
<rect width="10" height="10" fill="${t}" />
|
|
4
4
|
</pattern>
|
|
@@ -21,10 +21,10 @@ var N=class{};var x=class{static interpolateDataPoint(a,e,t){return {time:a.time
|
|
|
21
21
|
${l}
|
|
22
22
|
${s}
|
|
23
23
|
</pattern>
|
|
24
|
-
`.trim()}function B(a){return {id:a.id,line:{stroke:a.stroke??h.stroke,strokeWidth:a.strokeWidth??h.strokeWidth,smoothing:a.smoothing??false,dashed:a.dashed??false},fill:a.fill??h.areaFillAlpha,markers:{type:a.pointStyle??"none",size:a.pointSize??h.pointSize,stroke:a.stroke??h.stroke,fill:"#ffffff"},shadow:{color:a.shadowColor??"transparent",blur:a.shadowBlur??0,offsetX:a.shadowOffsetX??0,offsetY:a.shadowOffsetY??0}}}function w(a,e,t){let n=[],o=a.reduce((i,m)=>i+m.data.length,0),r=B(t);for(let i=0;i<a.length;i++){let m=a[i];m.data.length>=2?n.push({type:"path",id:t.id?`${t.id}-line-${i}`:void 0,points:m.data.map(s=>({x:e.timeScale.map(s.time),y:e.valueScale.map(s.value)})),stroke:m.color??r.line.stroke,strokeWidth:r.line.strokeWidth,smoothing:r.line.smoothing,dashed:r.line.dashed,shadowColor:r.shadow.color,shadowBlur:r.shadow.blur,shadowOffsetX:r.shadow.offsetX,shadowOffsetY:r.shadow.offsetY,fill:"none"}):m.data.length===1&&o===1&&n.push({type:"circle",cx:e.timeScale.map(m.data[0].time),cy:e.valueScale.map(m.data[0].value),r:Math.max(r.markers.size,r.line.strokeWidth),fill:m.color??r.line.stroke,shadowColor:r.shadow.color,shadowBlur:r.shadow.blur});}return n}function ve(a){let e=[];for(let t of a)e.length===0?e.push(t):e.push({x:t.x,y:e[e.length-1].y},t);return e}function G(a,e,t){let n=[],o=B(t);for(let r=0;r<a.length;r++){let i=a[r];if(i.data.length<2)continue;let m=ve(i.data.map(s=>({x:e.timeScale.map(s.time),y:e.valueScale.map(s.value)})));n.push({type:"path",id:t.id?`${t.id}-line-${r}`:void 0,points:m,stroke:i.color??o.line.stroke,strokeWidth:o.line.strokeWidth,smoothing:false,fill:"none"});}return n}function we(a,e,t,n,o){let r=[],i=B(t);for(let m=0;m<a.length;m++){let s=a[m];if(s.data.length<2)continue;let l=s.data.map(c=>({x:e.timeScale.map(c.time),y:e.valueScale.map(n(c))})),u=s.data.map(c=>({x:e.timeScale.map(c.time),y:e.valueScale.map(o(c))})).reverse();r.push({type:"path",id:t.id?`${t.id}-fill-${m}`:void 0,points:[...l,...u],fill:s.color??i.fill,hatch:t.hatch,stroke:"none"});}return r}function H(a,e,t,n){if(a.length<2)return [];let o=x.splitByBoundaries(a,t.boundaries,t.getValue,t.interpolate),r=[];for(let i=0;i<o.length;i++){let m=o[i];if(m.data.length<2)continue;let s=t.getColor(m.zoneIndex);if(!s)continue;let l=m.data.map(c=>({x:e.timeScale.map(c.time),y:e.valueScale.map(t.yLow(c))})),u=m.data.map(c=>({x:e.timeScale.map(c.time),y:e.valueScale.map(t.yHigh(c))})).reverse();r.push({type:"path",id:n?.id?`${n.id}-fill-${i}`:void 0,points:[...l,...u],fill:s,hatch:t.getHatch?.(m.zoneIndex),stroke:"none"});}return r}function Ce(a,e,t,n){let o=x.splitByThreshold(a,e,i=>i.value,x.interpolateDataPoint),r=[];return n.below&&r.push(...w(o.below.map(i=>({data:i})),t,n.below)),n.above&&r.push(...w(o.above.map(i=>({data:i})),t,n.above)),r}function P(a,e,t,n){let o=B(t);if(!o.markers.type||o.markers.type==="none")return [];let r=[];for(let i=0;i<a.length;i++){let m=a[i],s=e.timeScale.map(m.time),l=e.valueScale.map(m.value),u=n(m),c=t.pointStroke??u,d=t.pointFill??u,p=t.pointStrokeWidth??1.5,f=t.id?`${t.id}-marker-${i}`:void 0;z(r,f,o.markers.type,s,l,o.markers.size,c,d,p);}return r}function z(a,e,t,n,o,r,i,m,s){switch(t){case "circle":a.push({type:"circle",cx:n,cy:o,r,fill:m,stroke:i,strokeWidth:s,id:e});break;case "square":a.push({type:"rect",x:n-r,y:o-r,w:r*2,h:r*2,fill:m,stroke:i,strokeWidth:s,id:e});break;case "cross":a.push({type:"line",x1:n-r,y1:o-r,x2:n+r,y2:o+r,stroke:i,strokeWidth:s,id:e},{type:"line",x1:n-r,y1:o+r,x2:n+r,y2:o-r,stroke:i,strokeWidth:s,id:e});break;case "diamond":a.push({type:"path",points:[{x:n,y:o-r},{x:n+r,y:o},{x:n,y:o+r},{x:n-r,y:o}],fill:m,stroke:i,strokeWidth:s,id:e});break;case "triangle":a.push({type:"path",points:[{x:n,y:o-r},{x:n+r,y:o+r},{x:n-r,y:o+r}],fill:m,stroke:i,strokeWidth:s,id:e});break;case "star":{let l=[];for(let u=0;u<10;u++){let c=u%2===0?r:r*.5,d=Math.PI/2*3+u*Math.PI/5;l.push({x:n+c*Math.cos(d),y:o+c*Math.sin(d)});}a.push({type:"path",points:l,fill:m,stroke:i,strokeWidth:s,id:e});break}case "arrow":a.push({type:"path",points:[{x:n-r,y:o+r},{x:n,y:o-r},{x:n+r,y:o+r}],stroke:i,strokeWidth:s,fill:"none",id:e});break;case "plus":a.push({type:"line",x1:n-r,y1:o,x2:n+r,y2:o,stroke:i,strokeWidth:s,id:e},{type:"line",x1:n,y1:o-r,x2:n,y2:o+r,stroke:i,strokeWidth:s,id:e});break;case "triangle-down":a.push({type:"path",points:[{x:n,y:o+r},{x:n+r,y:o-r},{x:n-r,y:o-r}],fill:m,stroke:i,strokeWidth:s,id:e});break;case "hexagon":{let l=[];for(let u=0;u<6;u++){let c=u*(Math.PI/3);l.push({x:n+r*Math.cos(c),y:o+r*Math.sin(c)});}a.push({type:"path",points:l,fill:m,stroke:i,strokeWidth:s,id:e});break}case "hourglass":a.push({type:"path",points:[{x:n-r,y:o-r},{x:n+r,y:o-r},{x:n-r,y:o+r},{x:n+r,y:o+r}],fill:m,stroke:i,strokeWidth:s,id:e});break;case "line-horizontal":a.push({type:"line",x1:n-r,y1:o,x2:n+r,y2:o,stroke:i,strokeWidth:s,id:e});break;default:a.push({type:"circle",cx:n,cy:o,r,fill:m,stroke:i,strokeWidth:s,id:e});}}var T=12,V=8,Y=20,Te=11,X=18,Z=a=>a.length*Te*.6;function Le(a,e="vertical"){if(e==="horizontal"){let n=0;for(let o of a)n+=T+V+Z(o.name)+X;return {width:Math.max(0,n-X),height:Y}}let t=0;for(let n of a)t=Math.max(t,Z(n.name));return {width:T+V+t,height:a.length*Y}}function De(a){let{items:e,x:t,y:n,orientation:o="vertical"}=a,r=[],i=t;return e.forEach((m,s)=>{let l=o==="horizontal"?i:t,u=o==="horizontal"?n:n+s*Y;r.push({type:"rect",x:l,y:u,w:T,h:T,fill:m.color,stroke:h.legendStroke,strokeWidth:1},{type:"text",content:m.name,x:l+T+V,y:u+T-2,fontSize:h.legendFont,fill:h.legendText}),o==="horizontal"&&(i+=T+V+Z(m.name)+X);}),{type:"group",cssClass:"chart-legend",commands:r}}function Me(a){let{xTicks:e,yTicks:t,xRange:n,yRange:o,stroke:r=h.gridStroke,strokeWidth:i=h.gridStrokeWidth,dashed:m=false,opacity:s=h.gridOpacity}=a,l=[];if(t)for(let u of t)l.push({type:"line",x1:n[0],y1:u,x2:n[1],y2:u,stroke:r,strokeWidth:i,dashed:m,opacity:s});if(e)for(let u of e)l.push({type:"line",x1:u,y1:o[0],x2:u,y2:o[1],stroke:r,strokeWidth:i,dashed:m,opacity:s});return l}var he=new Map;function _e(a,e){return `${a}|${JSON.stringify(e??{})}`}function A(a,e){let t=_e(a,e),n=he.get(t);return n||(n=new Intl.DateTimeFormat(a,e),he.set(t,n)),n}var L=class{#e;#t;constructor(e){this.#e=[...e.domain],this.#t=[...e.range];}map(e){let t=Number(e),[n,o]=this.#e,[r,i]=this.#t;return o===n?r:r+(t-n)/(o-n)*(i-r)}invert(e){let[t,n]=this.#e,[o,r]=this.#t;return r===o?t:t+(e-o)/(r-o)*(n-t)}domain(){return [...this.#e]}range(){return [...this.#t]}},k=[{label:"second",ms:1e3},{label:"2_seconds",ms:2e3},{label:"5_seconds",ms:5e3},{label:"10_seconds",ms:1e4},{label:"30_seconds",ms:3e4},{label:"minute",ms:6e4},{label:"5_minutes",ms:3e5},{label:"15_minutes",ms:9e5},{label:"30_minutes",ms:18e5},{label:"hour",ms:36e5},{label:"3_hours",ms:108e5},{label:"6_hours",ms:216e5},{label:"day",ms:864e5},{label:"week",ms:6048e5},{label:"month",ms:2592e6},{label:"3_months",ms:7776e6},{label:"6_months",ms:15552e6},{label:"year",ms:31536e6},{label:"2_years",ms:63072e6},{label:"5_years",ms:15768e7}],R=class{#e;#t;constructor(e){this.#e=new L({domain:e.domain,range:e.range}),this.#t=e.locale||(typeof navigator<"u"?navigator.language:"en-US");}map(e){return this.#e.map(Number(e))}invert(e){return this.#e.invert(e)}domain(){return this.#e.domain()}range(){return this.#e.range()}get locale(){return this.#t}tickInterval(e,t=3,n=12){let[o,r]=this.#e.domain(),i=r-o;if(i<=0)return {interval:k[0].ms};let m=i/e,s=k[0].ms;for(let c of k)if(c.ms>=m){s=c.ms;break}let l=s,u=Math.round(i/l);for(;u>n&&l<k[k.length-1].ms;){let c=k.findIndex(d=>d.ms===l);l=k[Math.min(c+1,k.length-1)].ms,u=Math.round(i/l);}for(;u<t&&l>k[0].ms;){let c=k.findIndex(d=>d.ms===l);l=k[Math.max(c-1,0)].ms,u=Math.round(i/l);}return {interval:l}}ticks(e){let t=e?.minTicks??5,n=e?.maxTicks??12,{interval:o}=this.tickInterval((t+n)/2,t,n),[r,i]=this.#e.domain(),m=[],s=Math.ceil(r/o)*o;for(let l=s;l<=i;l+=o)m.push(l);return m}format(e,t){return A(this.#t,t).format(new Date(e))}},W=class{#e;#t;#n;#r;constructor(e){this.#e=[...e.domain],this.#t=[...e.range],this.#n=e.paddingInner??.1,this.#r=e.paddingOuter??.05;}get step(){let[e,t]=this.#t,n=this.#e.length;return n<=1?Math.abs(t-e):Math.abs(t-e)*(1-this.#r*2)/n+Math.abs(t-e)*this.#n*2/n}get bandwidth(){let[e,t]=this.#t,n=this.#e.length;if(n<=1)return Math.abs(t-e)*(1-this.#r*2);let o=this.#r*2*Math.abs(t-e);return (Math.abs(t-e)-o)/n*(1-this.#n)}map(e){let t=this.#e.findIndex(c=>String(c)===String(e));if(t===-1)return this.#t[0];let[n,o]=this.#t,r=this.#e.length;if(r<=1)return (n+o)/2;let i=this.#r*2*Math.abs(o-n),m=Math.abs(o-n)-i,s=o>=n?1:-1,l=m/r;return n+this.#r*Math.abs(o-n)*s+t*l}invert(e){let t=0,n=1/0;for(let o=0;o<this.#e.length;o++){let r=this.map(this.#e[o]),i=Math.abs(e-r);i<n&&(n=i,t=o);}return this.#e[t]}domain(){return this.#e.length===0?["",""]:[this.#e[0],this.#e[this.#e.length-1]]}range(){return [...this.#t]}positions(){let e=new Map;for(let t of this.#e)e.set(t,this.map(t));return e}};function $e(a){return a==="dotted"?{dash:"dotted"}:a==="dashed"?{dash:"dashed"}:{}}function Fe(a){let{thresholds:e,valueScale:t,xRange:n}=a,[o,r]=n,[i,m]=t.range(),s=Math.min(i,m),l=Math.max(i,m),u=[],c=[];for(let d of e){let p=d.color??h.thresholdColor,f=t.map(d.value);d.fill==="above"?u.push({type:"rect",x:o,y:s,w:r-o,h:Math.max(0,f-s),fill:p,hatch:d.fillHatch,opacity:d.fillOpacity??.12,id:d.id?`${d.id}-fill`:void 0}):d.fill==="below"&&u.push({type:"rect",x:o,y:f,w:r-o,h:Math.max(0,l-f),fill:p,hatch:d.fillHatch,opacity:d.fillOpacity??.12,id:d.id?`${d.id}-fill`:void 0});let g=d.line??h.thresholdLine;if(g!=="none"){let b=$e(g),y={type:"line",x1:o,y1:f,x2:r,y2:f,stroke:p,strokeWidth:1,...b,id:d.id?`${d.id}-line`:void 0};d.shadowColor&&(y.shadowColor=d.shadowColor,y.shadowBlur=d.shadowBlur??4,y.shadowOffsetX=d.shadowOffsetX??0,y.shadowOffsetY=d.shadowOffsetY??2),u.push(y);}if(d.label!==false){let b=d.label&&typeof d.label=="object"?d.label:void 0,y=typeof d.label=="string"?d.label:b?.text??d.name,S=b?.position??"right";c.push({...Ae(y,S,o,r,f,p,b),id:d.id?`${d.id}-label`:void 0});}}return {inside:u,labels:c}}function Pe(a){let e=Fe(a);return [...e.inside,...e.labels]}function Ae(a,e,t,n,o,r,i){let m=(t+n)/2,s={type:"text",content:a,fontSize:h.thresholdFontSize,fill:r},l=i?{...i.rotate!==void 0&&{rotate:i.rotate},...i.textBaseline!==void 0&&{textBaseline:i.textBaseline}}:{};switch(e){case "left":return {...s,...l,x:t+4,y:o-4,anchor:"start"};case "above":return {...s,...l,x:m,y:o-6,anchor:"middle"};case "below":return {...s,...l,x:m,y:o+14,anchor:"middle"};case "center":return {...s,...l,x:m,y:o-4,anchor:"middle"};case "outside-left":return {...s,...l,x:t-6,y:o+3,anchor:"end",textBaseline:l.textBaseline??"middle"};case "outside-right":return {...s,...l,x:n+6,y:o+3,anchor:"start",textBaseline:l.textBaseline??"middle"};default:return {...s,...l,x:n-4,y:o-4,anchor:"end"}}}function Re(a){let{gaps:e,timeScale:t,yRange:n,fill:o=h.gapFill,hatch:r,fillOpacity:i=h.gapFillOpacity??.15,stroke:m=h.gapStroke,strokeWidth:s=h.gapStrokeWidth,dashed:l=true,fontSize:u=h.gapFontSize,fontFill:c=h.gapFontColor,labelBaseline:d="middle",labelRotate:p}=a,[f,g]=n,b=[];for(let y of e){let S=t.map(y.startTime),$=t.map(y.endTime),C=y.fill??o,F=y.hatch??r,me=y.fillOpacity??i,ue=y.label??"",xe=y.rotate??p,E=y.labelBaseline??d;if(y.style==="dashed_border"||!y.style?b.push({type:"rect",x:S,y:f,w:$-S,h:g-f,fill:C,hatch:F,opacity:me,stroke:m,strokeWidth:s,dashed:l}):y.style==="empty"&&b.push({type:"rect",x:S,y:f,w:$-S,h:g-f,fill:C,hatch:F,opacity:me}),ue){let Se=We(f,g,E),ke=E==="above"?"top":E==="below"?"bottom":"middle";b.push({type:"text",content:ue,x:(S+$)/2,y:Se,anchor:"middle",fontSize:u,fill:c,textBaseline:ke,rotate:xe});}}return b}function We(a,e,t){switch(t){case "above":return a-12;case "below":return e+4;default:return (a+e)/2}}function Oe(a){let{markers:e,timeScale:t,valueScale:n,yRange:o=[0,300]}=a,[r,i]=o,m=[];for(let s of e){let l=t.map(s.time),u=s.color??h.markerColor,c=s.pointStyle??(s.value!==void 0?"circle":"none"),d=s.lineStyle??"full";if(s.value!==void 0){let p=n.map(s.value);if(d==="to-value"?m.push({type:"line",x1:l,y1:i,x2:l,y2:p,stroke:u,strokeWidth:1,dashed:true}):d==="to-top"?m.push({type:"line",x1:l,y1:r,x2:l,y2:p,stroke:u,strokeWidth:1,dashed:true}):d==="full"&&m.push({type:"line",x1:l,y1:r,x2:l,y2:i,stroke:u,strokeWidth:1}),c!=="none"&&z(m,void 0,c,l,p,h.markerSize,u,u,1.5),s.label){let f=d==="to-value"?p-10:r-6;m.push({type:"text",content:s.label,x:l,y:f,anchor:"middle",fontSize:11,fill:u});}}else m.push({type:"line",x1:l,y1:r,x2:l,y2:i,stroke:u,strokeWidth:1}),s.label&&m.push({type:"text",content:s.label,x:l,y:r-6,anchor:"middle",fontSize:11,fill:u});}return m}function je(a){let{highlights:e,timeScale:t,yRange:n,height:o}=a,[r,i]=n,m=[];for(let s of e){let l=t.map(s.startTime),u=t.map(s.endTime);m.push({type:"rect",x:l,y:r,w:u-l,h:i-r,fill:s.color??h.highlightColor,opacity:s.opacity??h.highlightOpacity}),s.label&&m.push({type:"text",content:s.label,x:(l+u)/2,y:Ie(s.labelPosition??"top",r,i,o),anchor:"middle",fontSize:h.annotationFontSize,fill:s.color??h.highlightLabelColor,rotate:s.rotate});}return m}function Ie(a,e,t,n){switch(a){case "above":return e-5;case "below":return n!==void 0?n-5:t+14;case "center":return (e+t)/2+4;case "bottom":return t-6;default:return e+14}}function U(a){return a&&a.toString().normalize("NFKD").replace(/[Μ-Ν―]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,50)||"unnamed"}function Be(a){let{annotations:e,timeScale:t,valueScales:n}=a,o=[],r=i=>{let m=n.get(i.axis??0)??n.values().next().value;return {x:t.map(i.time),y:m?m.map(i.value):0}};for(let i of e){let m=[],s=l=>m.push(l);switch(i.type){case "line":{let l=r(i.from),u=r(i.to);s({type:"line",x1:l.x,y1:l.y,x2:u.x,y2:u.y,stroke:i.color??h.annotationColor,strokeWidth:i.width??h.annotationWidth,dash:i.dash});break}case "arrow":{let l=r(i.from),u=r(i.to),c=i.color??h.annotationColor,d=i.headSize??h.annotationHead;s({type:"line",x1:l.x,y1:l.y,x2:u.x,y2:u.y,stroke:c,strokeWidth:i.width??h.annotationWidth});let p=Math.hypot(u.x-l.x,u.y-l.y)||1,f=(u.x-l.x)/p,g=(u.y-l.y)/p,b=u.x-f*d,y=u.y-g*d;s({type:"path",points:[{x:u.x,y:u.y},{x:b-g*d*.5,y:y+f*d*.5},{x:b+g*d*.5,y:y-f*d*.5}],fill:c,stroke:"none"});break}case "rect":{let l=r(i.from),u=r(i.to);s({type:"rect",x:Math.min(l.x,u.x),y:Math.min(l.y,u.y),w:Math.abs(u.x-l.x),h:Math.abs(u.y-l.y),fill:i.fill??"none",stroke:i.stroke,opacity:i.opacity});break}case "point":{let l=r(i.at),u=i.color??"#334155",c=i.radius??h.annotationRadius,d=i.shape??"circle";d==="circle"?s({type:"circle",cx:l.x,cy:l.y,r:c,fill:u}):d==="square"?s({type:"rect",x:l.x-c,y:l.y-c,w:c*2,h:c*2,fill:u}):(s({type:"line",x1:l.x-c,y1:l.y-c,x2:l.x+c,y2:l.y+c,stroke:u,strokeWidth:1.5}),s({type:"line",x1:l.x-c,y1:l.y+c,x2:l.x+c,y2:l.y-c,stroke:u,strokeWidth:1.5}));break}case "label":{let l=r(i.at);s({type:"text",content:i.text,x:l.x+(i.dx??0),y:l.y+(i.dy??0),anchor:i.anchor??"middle",fontSize:h.annotationFontSize,fill:i.color??h.annotationColor,rotate:i.rotate});break}}if(i.id&&m.length>0){let l=U(i.id);o.push({type:"group",cssClass:`annotation annotation--${l}`,commands:m});}else o.push(...m);}return o}var q=class a{_config;constructor(e){this._config=e;}compute(){let{width:e,height:t,margin:n}=this._config;return {totalWidth:e,totalHeight:t,chartWidth:e-n.left-n.right,chartHeight:t-n.top-n.bottom,chartX:n.left,chartY:n.top,margin:n}}static default(e=800,t=400){return new a({width:e,height:t,margin:{top:20,right:20,bottom:40,left:60}})}};var K=class{#e;constructor(){this.#e=[];}add(e){this.#e.push(e);}clear(){this.#e=[];}isInside(e,t){return this.#e.length===0?true:this.#e.some(n=>e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height)}toSVGClipPath(e="clip"){if(this.#e.length===0)return "";let t=this.#e.map(n=>`<rect x="${n.x}" y="${n.y}" width="${n.width}" height="${n.height}" />`).join(`
|
|
24
|
+
`.trim()}var h=new Proxy({},{get:(a,e)=>C()[e],has:(a,e)=>e in C(),ownKeys:()=>Reflect.ownKeys(C()),getOwnPropertyDescriptor:(a,e)=>Reflect.getOwnPropertyDescriptor(C(),e)});function H(a){return {id:a.id,line:{stroke:a.stroke??h.stroke,strokeWidth:a.strokeWidth??h.strokeWidth,smoothing:a.smoothing??false,dashed:a.dashed??false},fill:a.fill??h.areaFillAlpha,markers:{type:a.pointStyle??"none",size:a.pointSize??h.pointSize,stroke:a.stroke??h.stroke,fill:"#ffffff"},shadow:{color:a.shadowColor??"transparent",blur:a.shadowBlur??0,offsetX:a.shadowOffsetX??0,offsetY:a.shadowOffsetY??0}}}function w(a,e,t){let n=[],o=a.reduce((i,m)=>i+m.data.length,0),r=H(t);for(let i=0;i<a.length;i++){let m=a[i];m.data.length>=2?n.push({type:"path",id:t.id?`${t.id}-line-${i}`:void 0,points:m.data.map(s=>({x:e.timeScale.map(s.time),y:e.valueScale.map(s.value)})),stroke:m.color??r.line.stroke,strokeWidth:r.line.strokeWidth,smoothing:r.line.smoothing,dashed:r.line.dashed,shadowColor:r.shadow.color,shadowBlur:r.shadow.blur,shadowOffsetX:r.shadow.offsetX,shadowOffsetY:r.shadow.offsetY,fill:"none"}):m.data.length===1&&o===1&&n.push({type:"circle",cx:e.timeScale.map(m.data[0].time),cy:e.valueScale.map(m.data[0].value),r:Math.max(r.markers.size,r.line.strokeWidth),fill:m.color??r.line.stroke,shadowColor:r.shadow.color,shadowBlur:r.shadow.blur});}return n}function Ce(a){let e=[];for(let t of a)e.length===0?e.push(t):e.push({x:t.x,y:e[e.length-1].y},t);return e}function z(a,e,t){let n=[],o=H(t);for(let r=0;r<a.length;r++){let i=a[r];if(i.data.length<2)continue;let m=Ce(i.data.map(s=>({x:e.timeScale.map(s.time),y:e.valueScale.map(s.value)})));n.push({type:"path",id:t.id?`${t.id}-line-${r}`:void 0,points:m,stroke:i.color??o.line.stroke,strokeWidth:o.line.strokeWidth,smoothing:false,fill:"none"});}return n}function Te(a,e,t,n,o){let r=[],i=H(t);for(let m=0;m<a.length;m++){let s=a[m];if(s.data.length<2)continue;let l=s.data.map(c=>({x:e.timeScale.map(c.time),y:e.valueScale.map(n(c))})),u=s.data.map(c=>({x:e.timeScale.map(c.time),y:e.valueScale.map(o(c))})).reverse();r.push({type:"path",id:t.id?`${t.id}-fill-${m}`:void 0,points:[...l,...u],fill:s.color??i.fill,hatch:t.hatch,stroke:"none"});}return r}function V(a,e,t,n){if(a.length<2)return [];let o=x.splitByBoundaries(a,t.boundaries,t.getValue,t.interpolate),r=[];for(let i=0;i<o.length;i++){let m=o[i];if(m.data.length<2)continue;let s=t.getColor(m.zoneIndex);if(!s)continue;let l=m.data.map(c=>({x:e.timeScale.map(c.time),y:e.valueScale.map(t.yLow(c))})),u=m.data.map(c=>({x:e.timeScale.map(c.time),y:e.valueScale.map(t.yHigh(c))})).reverse();r.push({type:"path",id:n?.id?`${n.id}-fill-${i}`:void 0,points:[...l,...u],fill:s,hatch:t.getHatch?.(m.zoneIndex),stroke:"none"});}return r}function Le(a,e,t,n){let o=x.splitByThreshold(a,e,i=>i.value,x.interpolateDataPoint),r=[];return n.below&&r.push(...w(o.below.map(i=>({data:i})),t,n.below)),n.above&&r.push(...w(o.above.map(i=>({data:i})),t,n.above)),r}function R(a,e,t,n){let o=H(t);if(!o.markers.type||o.markers.type==="none")return [];let r=[];for(let i=0;i<a.length;i++){let m=a[i],s=e.timeScale.map(m.time),l=e.valueScale.map(m.value),u=n(m),c=t.pointStroke??u,d=t.pointFill??u,p=t.pointStrokeWidth??1.5,f=t.id?`${t.id}-marker-${i}`:void 0;Y(r,f,o.markers.type,s,l,o.markers.size,c,d,p);}return r}function Y(a,e,t,n,o,r,i,m,s){switch(t){case "circle":a.push({type:"circle",cx:n,cy:o,r,fill:m,stroke:i,strokeWidth:s,id:e});break;case "square":a.push({type:"rect",x:n-r,y:o-r,w:r*2,h:r*2,fill:m,stroke:i,strokeWidth:s,id:e});break;case "cross":a.push({type:"line",x1:n-r,y1:o-r,x2:n+r,y2:o+r,stroke:i,strokeWidth:s,id:e},{type:"line",x1:n-r,y1:o+r,x2:n+r,y2:o-r,stroke:i,strokeWidth:s,id:e});break;case "diamond":a.push({type:"path",points:[{x:n,y:o-r},{x:n+r,y:o},{x:n,y:o+r},{x:n-r,y:o}],fill:m,stroke:i,strokeWidth:s,id:e});break;case "triangle":a.push({type:"path",points:[{x:n,y:o-r},{x:n+r,y:o+r},{x:n-r,y:o+r}],fill:m,stroke:i,strokeWidth:s,id:e});break;case "star":{let l=[];for(let u=0;u<10;u++){let c=u%2===0?r:r*.5,d=Math.PI/2*3+u*Math.PI/5;l.push({x:n+c*Math.cos(d),y:o+c*Math.sin(d)});}a.push({type:"path",points:l,fill:m,stroke:i,strokeWidth:s,id:e});break}case "arrow":a.push({type:"path",points:[{x:n-r,y:o+r},{x:n,y:o-r},{x:n+r,y:o+r}],stroke:i,strokeWidth:s,fill:"none",id:e});break;case "plus":a.push({type:"line",x1:n-r,y1:o,x2:n+r,y2:o,stroke:i,strokeWidth:s,id:e},{type:"line",x1:n,y1:o-r,x2:n,y2:o+r,stroke:i,strokeWidth:s,id:e});break;case "triangle-down":a.push({type:"path",points:[{x:n,y:o+r},{x:n+r,y:o-r},{x:n-r,y:o-r}],fill:m,stroke:i,strokeWidth:s,id:e});break;case "hexagon":{let l=[];for(let u=0;u<6;u++){let c=u*(Math.PI/3);l.push({x:n+r*Math.cos(c),y:o+r*Math.sin(c)});}a.push({type:"path",points:l,fill:m,stroke:i,strokeWidth:s,id:e});break}case "hourglass":a.push({type:"path",points:[{x:n-r,y:o-r},{x:n+r,y:o-r},{x:n-r,y:o+r},{x:n+r,y:o+r}],fill:m,stroke:i,strokeWidth:s,id:e});break;case "line-horizontal":a.push({type:"line",x1:n-r,y1:o,x2:n+r,y2:o,stroke:i,strokeWidth:s,id:e});break;default:a.push({type:"circle",cx:n,cy:o,r,fill:m,stroke:i,strokeWidth:s,id:e});}}var L=12,E=8,X=20,De=11,Z=18,U=a=>a.length*De*.6;function Me(a,e="vertical"){if(e==="horizontal"){let n=0;for(let o of a)n+=L+E+U(o.name)+Z;return {width:Math.max(0,n-Z),height:X}}let t=0;for(let n of a)t=Math.max(t,U(n.name));return {width:L+E+t,height:a.length*X}}function _e(a){let{items:e,x:t,y:n,orientation:o="vertical"}=a,r=[],i=t;return e.forEach((m,s)=>{let l=o==="horizontal"?i:t,u=o==="horizontal"?n:n+s*X;r.push({type:"rect",x:l,y:u,w:L,h:L,fill:m.color,stroke:h.legendStroke,strokeWidth:1},{type:"text",content:m.name,x:l+L+E,y:u+L-2,fontSize:h.legendFont,fill:h.legendText}),o==="horizontal"&&(i+=L+E+U(m.name)+Z);}),{type:"group",cssClass:"chart-legend",commands:r}}function $e(a){let{xTicks:e,yTicks:t,xRange:n,yRange:o,stroke:r=h.gridStroke,strokeWidth:i=h.gridStrokeWidth,dashed:m=false,opacity:s=h.gridOpacity}=a,l=[];if(t)for(let u of t)l.push({type:"line",x1:n[0],y1:u,x2:n[1],y2:u,stroke:r,strokeWidth:i,dashed:m,opacity:s});if(e)for(let u of e)l.push({type:"line",x1:u,y1:o[0],x2:u,y2:o[1],stroke:r,strokeWidth:i,dashed:m,opacity:s});return l}var pe=new Map;function Fe(a,e){return `${a}|${JSON.stringify(e??{})}`}function A(a,e){let t=Fe(a,e),n=pe.get(t);return n||(n=new Intl.DateTimeFormat(a,e),pe.set(t,n)),n}var D=class{#e;#t;constructor(e){this.#e=[...e.domain],this.#t=[...e.range];}map(e){let t=Number(e),[n,o]=this.#e,[r,i]=this.#t;return o===n?r:r+(t-n)/(o-n)*(i-r)}invert(e){let[t,n]=this.#e,[o,r]=this.#t;return r===o?t:t+(e-o)/(r-o)*(n-t)}domain(){return [...this.#e]}range(){return [...this.#t]}},k=[{label:"second",ms:1e3},{label:"2_seconds",ms:2e3},{label:"5_seconds",ms:5e3},{label:"10_seconds",ms:1e4},{label:"30_seconds",ms:3e4},{label:"minute",ms:6e4},{label:"5_minutes",ms:3e5},{label:"15_minutes",ms:9e5},{label:"30_minutes",ms:18e5},{label:"hour",ms:36e5},{label:"3_hours",ms:108e5},{label:"6_hours",ms:216e5},{label:"day",ms:864e5},{label:"week",ms:6048e5},{label:"month",ms:2592e6},{label:"3_months",ms:7776e6},{label:"6_months",ms:15552e6},{label:"year",ms:31536e6},{label:"2_years",ms:63072e6},{label:"5_years",ms:15768e7}],W=class{#e;#t;constructor(e){this.#e=new D({domain:e.domain,range:e.range}),this.#t=e.locale||(typeof navigator<"u"?navigator.language:"en-US");}map(e){return this.#e.map(Number(e))}invert(e){return this.#e.invert(e)}domain(){return this.#e.domain()}range(){return this.#e.range()}get locale(){return this.#t}tickInterval(e,t=3,n=12){let[o,r]=this.#e.domain(),i=r-o;if(i<=0)return {interval:k[0].ms};let m=i/e,s=k[0].ms;for(let c of k)if(c.ms>=m){s=c.ms;break}let l=s,u=Math.round(i/l);for(;u>n&&l<k[k.length-1].ms;){let c=k.findIndex(d=>d.ms===l);l=k[Math.min(c+1,k.length-1)].ms,u=Math.round(i/l);}for(;u<t&&l>k[0].ms;){let c=k.findIndex(d=>d.ms===l);l=k[Math.max(c-1,0)].ms,u=Math.round(i/l);}return {interval:l}}ticks(e){let t=e?.minTicks??5,n=e?.maxTicks??12,{interval:o}=this.tickInterval((t+n)/2,t,n),[r,i]=this.#e.domain(),m=[],s=Math.ceil(r/o)*o;for(let l=s;l<=i;l+=o)m.push(l);return m}format(e,t){return A(this.#t,t).format(new Date(e))}},O=class{#e;#t;#n;#r;constructor(e){this.#e=[...e.domain],this.#t=[...e.range],this.#n=e.paddingInner??.1,this.#r=e.paddingOuter??.05;}get step(){let[e,t]=this.#t,n=this.#e.length;return n<=1?Math.abs(t-e):Math.abs(t-e)*(1-this.#r*2)/n+Math.abs(t-e)*this.#n*2/n}get bandwidth(){let[e,t]=this.#t,n=this.#e.length;if(n<=1)return Math.abs(t-e)*(1-this.#r*2);let o=this.#r*2*Math.abs(t-e);return (Math.abs(t-e)-o)/n*(1-this.#n)}map(e){let t=this.#e.findIndex(c=>String(c)===String(e));if(t===-1)return this.#t[0];let[n,o]=this.#t,r=this.#e.length;if(r<=1)return (n+o)/2;let i=this.#r*2*Math.abs(o-n),m=Math.abs(o-n)-i,s=o>=n?1:-1,l=m/r;return n+this.#r*Math.abs(o-n)*s+t*l}invert(e){let t=0,n=1/0;for(let o=0;o<this.#e.length;o++){let r=this.map(this.#e[o]),i=Math.abs(e-r);i<n&&(n=i,t=o);}return this.#e[t]}domain(){return this.#e.length===0?["",""]:[this.#e[0],this.#e[this.#e.length-1]]}range(){return [...this.#t]}positions(){let e=new Map;for(let t of this.#e)e.set(t,this.map(t));return e}};function Pe(a){return a==="dotted"?{dash:"dotted"}:a==="dashed"?{dash:"dashed"}:{}}function Re(a){let{thresholds:e,valueScale:t,xRange:n}=a,[o,r]=n,[i,m]=t.range(),s=Math.min(i,m),l=Math.max(i,m),u=[],c=[];for(let d of e){let p=d.color??h.thresholdColor,f=t.map(d.value);d.fill==="above"?u.push({type:"rect",x:o,y:s,w:r-o,h:Math.max(0,f-s),fill:p,hatch:d.fillHatch,opacity:d.fillOpacity??.12,id:d.id?`${d.id}-fill`:void 0}):d.fill==="below"&&u.push({type:"rect",x:o,y:f,w:r-o,h:Math.max(0,l-f),fill:p,hatch:d.fillHatch,opacity:d.fillOpacity??.12,id:d.id?`${d.id}-fill`:void 0});let g=d.line??h.thresholdLine;if(g!=="none"){let b=Pe(g),y={type:"line",x1:o,y1:f,x2:r,y2:f,stroke:p,strokeWidth:1,...b,id:d.id?`${d.id}-line`:void 0};d.shadowColor&&(y.shadowColor=d.shadowColor,y.shadowBlur=d.shadowBlur??4,y.shadowOffsetX=d.shadowOffsetX??0,y.shadowOffsetY=d.shadowOffsetY??2),u.push(y);}if(d.label!==false){let b=d.label&&typeof d.label=="object"?d.label:void 0,y=typeof d.label=="string"?d.label:b?.text??d.name,S=b?.position??"right";c.push({...We(y,S,o,r,f,p,b),id:d.id?`${d.id}-label`:void 0});}}return {inside:u,labels:c}}function Ae(a){let e=Re(a);return [...e.inside,...e.labels]}function We(a,e,t,n,o,r,i){let m=(t+n)/2,s={type:"text",content:a,fontSize:h.thresholdFontSize,fill:r},l=i?{...i.rotate!==void 0&&{rotate:i.rotate},...i.textBaseline!==void 0&&{textBaseline:i.textBaseline}}:{};switch(e){case "left":return {...s,...l,x:t+4,y:o-4,anchor:"start"};case "above":return {...s,...l,x:m,y:o-6,anchor:"middle"};case "below":return {...s,...l,x:m,y:o+14,anchor:"middle"};case "center":return {...s,...l,x:m,y:o-4,anchor:"middle"};case "outside-left":return {...s,...l,x:t-6,y:o+3,anchor:"end",textBaseline:l.textBaseline??"middle"};case "outside-right":return {...s,...l,x:n+6,y:o+3,anchor:"start",textBaseline:l.textBaseline??"middle"};default:return {...s,...l,x:n-4,y:o-4,anchor:"end"}}}function Oe(a){let{gaps:e,timeScale:t,yRange:n,fill:o=h.gapFill,hatch:r,fillOpacity:i=h.gapFillOpacity??.15,stroke:m=h.gapStroke,strokeWidth:s=h.gapStrokeWidth,dashed:l=true,fontSize:u=h.gapFontSize,fontFill:c=h.gapFontColor,labelBaseline:d="middle",labelRotate:p}=a,[f,g]=n,b=[];for(let y of e){let S=t.map(y.startTime),F=t.map(y.endTime),T=y.fill??o,P=y.hatch??r,me=y.fillOpacity??i,ue=y.label??"",Se=y.rotate??p,N=y.labelBaseline??d;if(y.style==="dashed_border"||!y.style?b.push({type:"rect",x:S,y:f,w:F-S,h:g-f,fill:T,hatch:P,opacity:me,stroke:m,strokeWidth:s,dashed:l}):y.style==="empty"&&b.push({type:"rect",x:S,y:f,w:F-S,h:g-f,fill:T,hatch:P,opacity:me}),ue){let ke=je(f,g,N),ve=N==="above"?"top":N==="below"?"bottom":"middle";b.push({type:"text",content:ue,x:(S+F)/2,y:ke,anchor:"middle",fontSize:u,fill:c,textBaseline:ve,rotate:Se});}}return b}function je(a,e,t){switch(t){case "above":return a-12;case "below":return e+4;default:return (a+e)/2}}function Ie(a){let{markers:e,timeScale:t,valueScale:n,yRange:o=[0,300]}=a,[r,i]=o,m=[];for(let s of e){let l=t.map(s.time),u=s.color??h.markerColor,c=s.pointStyle??(s.value!==void 0?"circle":"none"),d=s.lineStyle??"full";if(s.value!==void 0){let p=n.map(s.value);if(d==="to-value"?m.push({type:"line",x1:l,y1:i,x2:l,y2:p,stroke:u,strokeWidth:1,dashed:true}):d==="to-top"?m.push({type:"line",x1:l,y1:r,x2:l,y2:p,stroke:u,strokeWidth:1,dashed:true}):d==="full"&&m.push({type:"line",x1:l,y1:r,x2:l,y2:i,stroke:u,strokeWidth:1}),c!=="none"&&Y(m,void 0,c,l,p,h.markerSize,u,u,1.5),s.label){let f=d==="to-value"?p-10:r-6;m.push({type:"text",content:s.label,x:l,y:f,anchor:"middle",fontSize:11,fill:u});}}else m.push({type:"line",x1:l,y1:r,x2:l,y2:i,stroke:u,strokeWidth:1}),s.label&&m.push({type:"text",content:s.label,x:l,y:r-6,anchor:"middle",fontSize:11,fill:u});}return m}function Be(a){let{highlights:e,timeScale:t,yRange:n,height:o}=a,[r,i]=n,m=[];for(let s of e){let l=t.map(s.startTime),u=t.map(s.endTime);m.push({type:"rect",x:l,y:r,w:u-l,h:i-r,fill:s.color??h.highlightColor,opacity:s.opacity??h.highlightOpacity}),s.label&&m.push({type:"text",content:s.label,x:(l+u)/2,y:He(s.labelPosition??"top",r,i,o),anchor:"middle",fontSize:h.annotationFontSize,fill:s.color??h.highlightLabelColor,rotate:s.rotate});}return m}function He(a,e,t,n){switch(a){case "above":return e-5;case "below":return n!==void 0?n-5:t+14;case "center":return (e+t)/2+4;case "bottom":return t-6;default:return e+14}}function q(a){return a&&a.toString().normalize("NFKD").replace(/[Μ-Ν―]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,50)||"unnamed"}function Ve(a){let{annotations:e,timeScale:t,valueScales:n}=a,o=[],r=i=>{let m=n.get(i.axis??0)??n.values().next().value;return {x:t.map(i.time),y:m?m.map(i.value):0}};for(let i of e){let m=[],s=l=>m.push(l);switch(i.type){case "line":{let l=r(i.from),u=r(i.to);s({type:"line",x1:l.x,y1:l.y,x2:u.x,y2:u.y,stroke:i.color??h.annotationColor,strokeWidth:i.width??h.annotationWidth,dash:i.dash});break}case "arrow":{let l=r(i.from),u=r(i.to),c=i.color??h.annotationColor,d=i.headSize??h.annotationHead;s({type:"line",x1:l.x,y1:l.y,x2:u.x,y2:u.y,stroke:c,strokeWidth:i.width??h.annotationWidth});let p=Math.hypot(u.x-l.x,u.y-l.y)||1,f=(u.x-l.x)/p,g=(u.y-l.y)/p,b=u.x-f*d,y=u.y-g*d;s({type:"path",points:[{x:u.x,y:u.y},{x:b-g*d*.5,y:y+f*d*.5},{x:b+g*d*.5,y:y-f*d*.5}],fill:c,stroke:"none"});break}case "rect":{let l=r(i.from),u=r(i.to);s({type:"rect",x:Math.min(l.x,u.x),y:Math.min(l.y,u.y),w:Math.abs(u.x-l.x),h:Math.abs(u.y-l.y),fill:i.fill??"none",stroke:i.stroke,opacity:i.opacity});break}case "point":{let l=r(i.at),u=i.color??"#334155",c=i.radius??h.annotationRadius,d=i.shape??"circle";d==="circle"?s({type:"circle",cx:l.x,cy:l.y,r:c,fill:u}):d==="square"?s({type:"rect",x:l.x-c,y:l.y-c,w:c*2,h:c*2,fill:u}):(s({type:"line",x1:l.x-c,y1:l.y-c,x2:l.x+c,y2:l.y+c,stroke:u,strokeWidth:1.5}),s({type:"line",x1:l.x-c,y1:l.y+c,x2:l.x+c,y2:l.y-c,stroke:u,strokeWidth:1.5}));break}case "label":{let l=r(i.at);s({type:"text",content:i.text,x:l.x+(i.dx??0),y:l.y+(i.dy??0),anchor:i.anchor??"middle",fontSize:h.annotationFontSize,fill:i.color??h.annotationColor,rotate:i.rotate});break}}if(i.id&&m.length>0){let l=q(i.id);o.push({type:"group",cssClass:`annotation annotation--${l}`,commands:m});}else o.push(...m);}return o}var K=class a{_config;constructor(e){this._config=e;}compute(){let{width:e,height:t,margin:n}=this._config;return {totalWidth:e,totalHeight:t,chartWidth:e-n.left-n.right,chartHeight:t-n.top-n.bottom,chartX:n.left,chartY:n.top,margin:n}}static default(e=800,t=400){return new a({width:e,height:t,margin:{top:20,right:20,bottom:40,left:60}})}};var J=class{#e;constructor(){this.#e=[];}add(e){this.#e.push(e);}clear(){this.#e=[];}isInside(e,t){return this.#e.length===0?true:this.#e.some(n=>e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height)}toSVGClipPath(e="clip"){if(this.#e.length===0)return "";let t=this.#e.map(n=>`<rect x="${n.x}" y="${n.y}" width="${n.width}" height="${n.height}" />`).join(`
|
|
25
25
|
`);return `<clipPath id="${e}">
|
|
26
26
|
${t}
|
|
27
|
-
</clipPath>`}get regions(){return [...this.#e]}};var O={axisColor:h.axisColor,tickColor:h.tickColor,textColor:h.textColor,textSize:h.textSize},j=class{#e;#t;constructor(e){this.#e=new R({domain:e.domain,range:e.xRange,locale:e.locale}),this.#t=e;}get scale(){return this.#e}get axisColor(){return (this.#t.colors??O).axisColor}get tickColor(){return (this.#t.colors??O).tickColor}get textColor(){return (this.#t.colors??O).textColor}get textSize(){return (this.#t.colors??O).textSize}generateTicks(){let e=this.#t.minTicks??5,t=this.#t.maxTicks??12,o=this.#e.ticks({minTicks:e,maxTicks:t}).map(r=>({time:r,x:this.#e.map(r),label:this.tickLabel(r)}));return this.antiOverlap(o)}tickLabel(e){if(this.#t.format)return this.#t.format(new Date(e));let t=this.#t.minTicks??5,n=this.#t.maxTicks??12,{interval:o}=this.#e.tickInterval((t+n)/2,t,n),r={};return o<6e4?(r.hour="2-digit",r.minute="2-digit",r.second="2-digit"):o<36e5||o<864e5?(r.hour="2-digit",r.minute="2-digit"):o<31536e6?(r.day="numeric",r.month="short",o>=2592e6&&(r.day=void 0,r.month="long")):(r.year="numeric",o<2*31536e6&&(r.month="short")),this.#e.format(e,r)}antiOverlap(e){if(e.length<=1)return e;let t=60,n=[e[0]];for(let o=1;o<e.length;o++){let r=n[n.length-1].x;Math.abs(e[o].x-r)>=t&&n.push(e[o]);}return n}render(){let e=this.generateTicks(),t=this.#t.colors??O,n=this.#t.y??0,o=[],[r,i]=this.#e.range();o.push({type:"line",x1:r,y1:n,x2:i,y2:n,stroke:t.axisColor,strokeWidth:t.axisWidth});for(let m of e)o.push({type:"line",x1:m.x,y1:n,x2:m.x,y2:n+6,stroke:t.tickColor,strokeWidth:t.axisWidth}),o.push({type:"text",content:m.label,x:m.x,y:n+t.textSize+6,anchor:"middle",fontSize:t.textSize,fill:t.textColor});return o}};var I={axisColor:"#ccc",tickColor:"#ddd",textColor:"#777",textSize:12};function He(a){return Math.abs(a)>=1e6?`${(a/1e6).toFixed(1)}M`:Math.abs(a)>=1e3?`${(a/1e3).toFixed(1)}k`:Number.isInteger(a)?String(a):a.toFixed(1)}function Ve(a){let e=new Array(a.length).fill(false),t=0;for(;t<a.length;){let n=t;for(;n+1<a.length&&a[n+1].label===a[t].label;)n++;for(let o=t+1;o<n;o++)e[o]=true;t=n+1;}return e}var J=class{#e;#t;constructor(e){this.#e=new L({domain:e.domain,range:e.range}),this.#t=e;}get scale(){return this.#e}get axisColor(){return (this.#t.colors??I).axisColor}get tickColor(){return (this.#t.colors??I).tickColor}get textColor(){return (this.#t.colors??I).textColor}get textSize(){return (this.#t.colors??I).textSize}generateTicks(){let e=this.#t.format??He,t=6,[n,o]=this.#e.domain(),r=o-n;if(r===0)return [{value:n,position:this.#e.map(n),label:e(n)}];let i=r/t,m=Math.pow(10,Math.floor(Math.log10(i))),s=i/m,l;s<=1.5?l=m:s<=3?l=2*m:s<=7?l=5*m:l=10*m;let u=[],c=Math.ceil(n/l)*l;for(let d=c;d<=o;d+=l)u.push({value:d,position:this.#e.map(d),label:e(d)});return u}render(){let e=this.generateTicks(),t=this.#t.colors??I,n=this.#t.x??0,o=this.#t.orientation??"vertical",r=this.#t.position??"left",i=this.#t.suppressLabelsNear??[],m=this.#t.suppressTolerancePx??8,s=u=>i.some(c=>Math.abs(c-u)<=m),l=[];if(o==="vertical"){let[u,c]=this.#e.range();l.push({type:"line",x1:n,y1:u,x2:n,y2:c,stroke:t.axisColor,strokeWidth:t.axisWidth});let d=Ve(e);e.forEach((p,f)=>{let g=s(p.position),b=d[f]?{opacity:0}:{};r==="left"?(l.push({type:"line",x1:n-4,y1:p.position,x2:n,y2:p.position,stroke:t.tickColor,strokeWidth:t.axisWidth}),g||l.push({type:"text",content:p.label,x:n-8,y:p.position+4,anchor:"end",fontSize:11,fill:t.textColor,...b})):(l.push({type:"line",x1:n,y1:p.position,x2:n+4,y2:p.position,stroke:t.tickColor,strokeWidth:t.axisWidth}),g||l.push({type:"text",content:p.label,x:n+8,y:p.position+4,anchor:"start",fontSize:11,fill:t.textColor,...b}));});}else {let[u,c]=this.#e.range();l.push({type:"line",x1:u,y1:n,x2:c,y2:n,stroke:t.axisColor,strokeWidth:t.axisWidth});for(let d of e)l.push({type:"line",x1:d.position,y1:n,x2:d.position,y2:n+6,stroke:t.tickColor,strokeWidth:t.axisWidth}),l.push({type:"text",content:d.label,x:d.position,y:n+18,anchor:"middle",fontSize:t.textSize,fill:t.textColor});}return l}};var Q=class{#e;#t;#n;constructor(e){let t=Object.keys(e.enumMap).map(Number).sort((n,o)=>n-o).map(String);this.#t=t,this.#e=new W({domain:t,range:e.range}),this.#n=e;}get scale(){return this.#e}generateTicks(){let{enumMap:e,showLabels:t=true,autoColor:n=true,gapValues:o}=this.#n,r=new Set(o??[]);return this.#t.map((i,m)=>{let s=Number(i),l=t?e[s]??String(s):String(s),u=this.#e.map(s),c=n?h.palette[m%h.palette.length]:void 0;return {value:s,label:l,y:u,color:c,isGap:r.has(s)}})}colorFor(e){let t=this.#t.indexOf(String(e));if(!(t===-1||!(this.#n.autoColor??true)))return h.palette[t%h.palette.length]}render(){let e=this.generateTicks(),t=this.#n.x??0,n=[];for(let o of e)o.isGap||n.push({type:"text",content:o.label,x:t,y:o.y+4,anchor:"end",fontSize:11,fill:o.color??h.textColor});return n}map(e){return this.#e.map(e)}isGap(e){return new Set(this.#n.gapValues??[]).has(e)}};var v=class a{#e;#t;static uidcnt=0;#n;constructor(e,t=[]){this.#e=e.id??"series-"+ ++a.uidcnt,this.#t=e.timeScale,this.#n=t;}get id(){return this.#e}get timeScale(){return this.#t}get data(){return this.#n}};var ee=class extends v{#e;constructor(e){super(e,e.data),this.#e=e;}points(){let e=this.#e.valueScale;return this.data.filter(t=>t.value!==null).map(t=>({x:this.timeScale.map(t.time),y:e.map(t.value),time:t.time})).sort((t,n)=>t.x-n.x)}render(){let e=this.#e,t={smoothing:e.smoothing??false,stroke:e.stroke??h.stroke,strokeWidth:e.strokeWidth??h.strokeWidth,dashed:e.dashed??false,pointStyle:e.pointStyle??"none",pointSize:e.pointSize??h.pointSize,shadowColor:e.shadowColor,shadowBlur:e.shadowBlur,shadowOffsetX:e.shadowOffsetX,shadowOffsetY:e.shadowOffsetY},n=e.pointThreshold??h.pointThreshold,o=e.gapThreshold??h.gapThreshold,r=e.id,i=x.getRuns(this.data,c=>c.value===null,o),m=i.reduce((c,d)=>c+d.length,0);if(m===0)return [];let s={timeScale:this.timeScale,valueScale:e.valueScale},l=i.map(c=>({data:c})),u=[];if(u.push(...w(l,s,{...t,id:r?`${r}-line`:void 0})),t.pointStyle&&t.pointStyle!=="none"&&m<=n)for(let c of i)u.push(...P(c,s,{...t,id:r?`${r}-marker`:void 0},()=>t.stroke));return u}};var te=class extends v{#e;constructor(e){super(e,e.data),this.#e=e;}points(){let e=this.#e.valueScale,t=[...this.data].filter(o=>o.value!==null).sort((o,r)=>o.time-r.time),n=[];for(let o=0;o<t.length;o++){let r=this.timeScale.map(t[o].time),i=e.map(t[o].value);o===0?n.push({x:r,y:i}):n.push({x:r,y:n[n.length-1].y},{x:r,y:i});}return n}render(){let e=x.getRuns(this.data,o=>o.value===null);if(e.length===0)return [];let t={timeScale:this.timeScale,valueScale:this.#e.valueScale},n=e.map(o=>({data:o}));return G(n,t,{stroke:this.#e.stroke??h.stroke,strokeWidth:this.#e.strokeWidth??h.strokeWidth,id:this.id?`${this.id}-line`:void 0})}};var ne=class extends v{#e;constructor(e){super(e,e.data),this.#e=e;}opacity(e){if(!(this.#e.countOpacity??false))return .6;let t=0;for(let n of this.data)n.count>t&&(t=n.count);return t===0?.2:.2+.8*e/t}render(){let e=this.#e,t=e.fill??h.bandFill,n=e.hatch,o=e.avgLine??false,r=e.avgLineColor??h.bandAvgLine,i=e.bandWidth??10,m=[];for(let s of this.data){if(s.min===null||s.max===null)continue;let l=this.timeScale.map(s.time),u=e.valueScale.map(s.max),c=e.valueScale.map(s.min),d=i,p=this.data.indexOf(s);if(m.push({type:"rect",x:l-d/2,y:u,w:d,h:c-u,fill:t,hatch:n,opacity:this.opacity(s.count),id:this.id?`${this.id}-slot-${p}`:void 0}),o&&s.avg!==null){let f=e.valueScale.map(s.avg);m.push({type:"line",x1:l-d/2,y1:f,x2:l+d/2,y2:f,stroke:r,strokeWidth:1,id:this.id?`${this.id}-avg-${p}`:void 0});}}return m}};var re=class extends v{#e;constructor(e){super(e,e.data),this.#e=e;}render(){let e=this.#e,t=e.minColor??h.minColor,n=e.maxColor??h.maxColor,o=e.avgColor??h.avgColor,r=e.avgDashed??true,i=e.smoothing??false,m=e.strokeWidth??h.strokeWidth,s=x.getRuns(this.data,p=>p.min===null||p.max===null||p.avg===null);if(s.length===0)return [];let l={timeScale:this.timeScale,valueScale:e.valueScale},u=[];s.forEach((p,f)=>{p.length<2||(e.fillToMax&&u.push(...H(p,l,{boundaries:[],yLow:g=>g.avg,yHigh:g=>g.max,getValue:g=>g.avg,interpolate:x.interpolateAggregatedPoint,getColor:()=>e.fillToMax,getHatch:()=>e.fillToMaxHatch},{id:this.id?`${this.id}-fillToMax-${f}`:void 0})),e.fillToMin&&u.push(...H(p,l,{boundaries:[],yLow:g=>g.avg,yHigh:g=>g.min,getValue:g=>g.avg,interpolate:x.interpolateAggregatedPoint,getColor:()=>e.fillToMin,getHatch:()=>e.fillToMinHatch},{id:this.id?`${this.id}-fillToMin-${f}`:void 0})));});let c=s.filter(p=>p.length>=2),d=p=>c.map(f=>({data:f.map(g=>({time:g.time,value:p(g)}))}));return u.push(...w(d(p=>p.max),l,{stroke:n,strokeWidth:m,smoothing:i,id:this.id?`${this.id}-max`:void 0}),...w(d(p=>p.min),l,{stroke:t,strokeWidth:m,smoothing:i,id:this.id?`${this.id}-min`:void 0}),...w(d(p=>p.avg),l,{stroke:o,strokeWidth:m,smoothing:i,dashed:r,id:this.id?`${this.id}-avg`:void 0})),u}};var oe=class extends v{#e;#t;constructor(e){super(e,e.data),this.#e=e,this.#t=[...e.zones??[]].sort((t,n)=>t.value-n.value);}#n(e){return e===0?this.#e.baseColor??h.stroke:this.#t[e-1].color}render(){let e=this.#e,t=e.baseColor??h.stroke,n={stroke:t,strokeWidth:e.strokeWidth??h.strokeWidth,smoothing:e.smoothing??false,pointStyle:e.pointStyle??"none",pointSize:e.pointSize??h.pointSize},o=e.gapThreshold??h.gapThreshold,r=e.pointThreshold??h.pointThreshold,i=x.getRuns(this.data,u=>u.value===null,o),m=i.reduce((u,c)=>u+c.length,0);if(m===0)return [];let s={timeScale:this.timeScale,valueScale:e.valueScale},l=[];for(let u of i){if(u.length<2)continue;if(e.fill){let f=e.fill.value,g=x.splitByBoundaries(u,[f],y=>y.value,x.interpolateDataPoint),b=e.valueScale.map(f);for(let y=0;y<g.length;y++){let S=g[y],$=(S.data[0].value+S.data[S.data.length-1].value)/2;if(e.fill.side==="above"==$>=f){let C=S.data.map(F=>({x:this.timeScale.map(F.time),y:e.valueScale.map(F.value)}));l.push({type:"path",id:this.id?`${this.id}-fill-${y}`:void 0,points:[...C,{x:C[C.length-1].x,y:b},{x:C[0].x,y:b}],fill:e.fill.color,hatch:e.fill.hatch,stroke:"none"});}}}let c=this.#t.map(f=>f.value),p=x.splitByBoundaries(u,c,f=>f.value,x.interpolateDataPoint).map(f=>({data:f.data,color:this.#n(f.zoneIndex)}));l.push(...w(p,s,{...n,id:this.id?`${this.id}-line`:void 0})),n.pointStyle&&n.pointStyle!=="none"&&m<=r&&l.push(...P(u,s,{...n,id:this.id?`${this.id}-marker`:void 0},f=>{let g=t;for(let b of this.#t)f.value>=b.value&&(g=b.color);return g}));}return l}};var ie=class{#e;constructor(e,t,n,o){this.#e={...e,xRange:t,y:n,height:o};}render(){let{items:e,timeScale:t,background:n,hatch:o,showAxis:r,xRange:i,y:m,height:s}=this.#e,l=[];n&&l.push({type:"rect",x:i[0],y:m,w:i[1]-i[0],h:s,fill:n,opacity:.04,stroke:"#ddd",strokeWidth:.25});for(let u of e){let c=t.map(u.startTime),d=t.map(u.endTime);if(!(d-c<1)&&(l.push({type:"rect",x:c,y:m,w:d-c,h:s,hatch:u.hatch??o,fill:u.fill??"#6b728044",stroke:u.stroke,strokeWidth:u.strokeWidth??0}),u.label)){let p=u.labelFontSize??10;l.push({type:"text",content:u.label,x:(c+d)/2,y:this.#t(u.labelBaseline,p),anchor:"middle",fontSize:p,fill:u.labelFill??"#333"});}}if(r){let u=new j({domain:t.domain(),xRange:i,y:m+s+4});l.push({type:"group",cssClass:"annotation-band-axis",commands:u.render()});}return l}#t(e,t){let{y:n,height:o}=this.#e;switch(e){case "top":return n+t*.9;case "bottom":return n+o-t*.25;default:return n+o/2+t*.35}}};var ae=class{#e;constructor(e){this.#e=e;}render(){let{data:e,valueScale:t,xRange:n,showMin:o=false,showMax:r=false,showAvg:i=true,showMedian:m=false,labelPosition:s="end",lineColor:l=h.statsLineColor,labelColor:u=h.statsLabelColor}=this.#e,c=ce.compute(e),d=[{name:"min",value:c.min,enabled:o},{name:"max",value:c.max,enabled:r},{name:"avg",value:c.avg,enabled:i},{name:"median",value:c.median,enabled:m}],p=[],[f,g]=n;for(let b of d.filter(y=>y.enabled)){let y=t.map(b.value);p.push({type:"line",x1:f,y1:y,x2:g,y2:y,stroke:l,strokeWidth:1});let S=`${b.name}: ${b.value.toFixed(1)}`;(s==="start"||s==="both")&&p.push({type:"text",content:S,x:f+4,y:y-4,anchor:"start",fontSize:10,fill:u}),(s==="end"||s==="both")&&p.push({type:"text",content:S,x:g-4,y:y-4,anchor:"end",fontSize:10,fill:u}),s==="center"&&p.push({type:"text",content:S,x:(f+g)/2,y:y-4,anchor:"middle",fontSize:10,fill:u});}return p}};var D=class{#e;#t;#n;constructor(e){this.#e=e?.locale||(typeof navigator<"u"?navigator.language:"en-US"),this.#t=e?.fallbackLocales??["en-US"],this.#n=e?.autoFormat??true;}format(e,t,n){try{let o=this.#n&&n?this.#r(e,n,t):t;return A(this.#e,o).format(new Date(e))}catch{for(let o of this.#t)try{return A(o,t).format(new Date(e))}catch{}return new Date(e).toISOString()}}formatRange(e,t){let n=this.format(e),o=this.format(t);return `${n} \u2014 ${o}`}#r(e,t,n){let o=Math.abs(e-t),r=864e5,i=36e5,m=6e4,s={};return o<m?(s.second="2-digit",s.minute="2-digit",s.hour="2-digit"):o<i?(s.minute="2-digit",s.hour="2-digit"):o<r?(s.hour="2-digit",s.minute="2-digit"):o<7*r?(s.weekday="short",s.day="numeric"):o<365*r?(s.month="short",s.day="numeric"):(s.month="short",s.year="numeric"),{...n,...s}}};var M=class a{#e;#t;_compact;#n;constructor(e){this.#e=e?.unit??"",this.#t=e?.decimals??1,this._compact=e?.compact??false,this.#n=e?.custom;}format(e){if(this.#n)return this.#n(e);let t;return this._compact&&Math.abs(e)>=1e6?t=`${(e/1e6).toFixed(this.#t)}M`:this._compact&&Math.abs(e)>=1e3?t=`${(e/1e3).toFixed(this.#t)}k`:t=e.toFixed(this.#t),this.#e?`${t}${this.#e}`:t}formatRange(e,t){return `${this.format(e)} \u2014 ${this.format(t)}`}static unit(e,t=1){return new a({unit:e,decimals:t})}static temperature(e="\xB0C"){return new a({unit:e,decimals:1})}static percentage(){return new a({unit:"%",decimals:0})}};var _=class a{#e;#t;#n;constructor(e){this.#e=e?.map??{},this.#t=e?.fallback??(t=>String(t)),this.#n=e?.showValue??false;}format(e){let t=this.#e[e]??this.#t(e);return this.#n?`(${e}) ${t}`:t}has(e){return e in this.#e}labels(){return Object.values(this.#e)}values(){return Object.keys(this.#e).map(Number)}static fromLabels(e,t=false){let n={};return e.forEach((o,r)=>{n[r]=o;}),new a({map:n,showValue:t})}};var Ee={time:new D,value:new M,enum:new _};var Ne={...h};function se(){return Ne}function le(a,e){let t=se();return {color:a.color??t.stroke,width:a.width??t.strokeWidth,style:a.style??"solid",smoothing:a.smoothing??false,shape:a.shape??(e.seriesType==="step"?"step":"line"),gapThreshold:a.gapThreshold??t.gapThreshold,opacity:a.opacity??1}}function pe(a){let e=a.style?.line;return e===false?[]:e===void 0?[le({},a)]:Array.isArray(e)?e.map(t=>le(t,a)):[le(e,a)]}function fe(a){let e=a.style?.markers;if(!e?.type||e.type==="none")return;let t=se(),o=(a.style?.line&&!Array.isArray(a.style.line)?a.style.line.color:void 0)??t.stroke;return {type:e.type,size:e.size??t.pointSize,stroke:e.stroke??o,fill:e.fill??"#ffffff",strokeWidth:e.strokeWidth??1,threshold:e.threshold}}function ge(a){let e=a.style?.shadow;if(!(!e?.color||e.color==="transparent"||e.color==="none"))return {color:e.color,blur:e.blur??4,offsetX:e.offsetX??0,offsetY:e.offsetY??0}}function ye(a){return a.style?.gap}function be(a){return a.style?.fill}function Ge(a){return {lines:pe(a),fill:be(a),markers:fe(a),shadow:ge(a),gap:ye(a),id:a.style?.id??a.id}}/*!
|
|
27
|
+
</clipPath>`}get regions(){return [...this.#e]}};var j={axisColor:h.axisColor,tickColor:h.tickColor,textColor:h.textColor,textSize:h.textSize},I=class{#e;#t;constructor(e){this.#e=new W({domain:e.domain,range:e.xRange,locale:e.locale}),this.#t=e;}get scale(){return this.#e}get axisColor(){return (this.#t.colors??j).axisColor}get tickColor(){return (this.#t.colors??j).tickColor}get textColor(){return (this.#t.colors??j).textColor}get textSize(){return (this.#t.colors??j).textSize}generateTicks(){let e=this.#t.minTicks??5,t=this.#t.maxTicks??12,o=this.#e.ticks({minTicks:e,maxTicks:t}).map(r=>({time:r,x:this.#e.map(r),label:this.tickLabel(r)}));return this.antiOverlap(o)}tickLabel(e){if(this.#t.format)return this.#t.format(new Date(e));let t=this.#t.minTicks??5,n=this.#t.maxTicks??12,{interval:o}=this.#e.tickInterval((t+n)/2,t,n),r={};return o<6e4?(r.hour="2-digit",r.minute="2-digit",r.second="2-digit"):o<36e5||o<864e5?(r.hour="2-digit",r.minute="2-digit"):o<31536e6?(r.day="numeric",r.month="short",o>=2592e6&&(r.day=void 0,r.month="long")):(r.year="numeric",o<2*31536e6&&(r.month="short")),this.#e.format(e,r)}antiOverlap(e){if(e.length<=1)return e;let t=60,n=[e[0]];for(let o=1;o<e.length;o++){let r=n[n.length-1].x;Math.abs(e[o].x-r)>=t&&n.push(e[o]);}return n}render(){let e=this.generateTicks(),t=this.#t.colors??j,n=this.#t.y??0,o=[],[r,i]=this.#e.range();o.push({type:"line",x1:r,y1:n,x2:i,y2:n,stroke:t.axisColor,strokeWidth:t.axisWidth});for(let m of e)o.push({type:"line",x1:m.x,y1:n,x2:m.x,y2:n+6,stroke:t.tickColor,strokeWidth:t.axisWidth}),o.push({type:"text",content:m.label,x:m.x,y:n+t.textSize+6,anchor:"middle",fontSize:t.textSize,fill:t.textColor});return o}};var B={axisColor:"#ccc",tickColor:"#ddd",textColor:"#777",textSize:12};function Ee(a){return Math.abs(a)>=1e6?`${(a/1e6).toFixed(1)}M`:Math.abs(a)>=1e3?`${(a/1e3).toFixed(1)}k`:Number.isInteger(a)?String(a):a.toFixed(1)}function Ne(a){let e=new Array(a.length).fill(false),t=0;for(;t<a.length;){let n=t;for(;n+1<a.length&&a[n+1].label===a[t].label;)n++;for(let o=t+1;o<n;o++)e[o]=true;t=n+1;}return e}var Q=class{#e;#t;constructor(e){this.#e=new D({domain:e.domain,range:e.range}),this.#t=e;}get scale(){return this.#e}get axisColor(){return (this.#t.colors??B).axisColor}get tickColor(){return (this.#t.colors??B).tickColor}get textColor(){return (this.#t.colors??B).textColor}get textSize(){return (this.#t.colors??B).textSize}generateTicks(){let e=this.#t.format??Ee,t=6,[n,o]=this.#e.domain(),r=o-n;if(r===0)return [{value:n,position:this.#e.map(n),label:e(n)}];let i=r/t,m=Math.pow(10,Math.floor(Math.log10(i))),s=i/m,l;s<=1.5?l=m:s<=3?l=2*m:s<=7?l=5*m:l=10*m;let u=[],c=Math.ceil(n/l)*l;for(let d=c;d<=o;d+=l)u.push({value:d,position:this.#e.map(d),label:e(d)});return u}render(){let e=this.generateTicks(),t=this.#t.colors??B,n=this.#t.x??0,o=this.#t.orientation??"vertical",r=this.#t.position??"left",i=this.#t.suppressLabelsNear??[],m=this.#t.suppressTolerancePx??8,s=u=>i.some(c=>Math.abs(c-u)<=m),l=[];if(o==="vertical"){let[u,c]=this.#e.range();l.push({type:"line",x1:n,y1:u,x2:n,y2:c,stroke:t.axisColor,strokeWidth:t.axisWidth});let d=Ne(e);e.forEach((p,f)=>{let g=s(p.position),b=d[f]?{opacity:0}:{};r==="left"?(l.push({type:"line",x1:n-4,y1:p.position,x2:n,y2:p.position,stroke:t.tickColor,strokeWidth:t.axisWidth}),g||l.push({type:"text",content:p.label,x:n-8,y:p.position+4,anchor:"end",fontSize:11,fill:t.textColor,...b})):(l.push({type:"line",x1:n,y1:p.position,x2:n+4,y2:p.position,stroke:t.tickColor,strokeWidth:t.axisWidth}),g||l.push({type:"text",content:p.label,x:n+8,y:p.position+4,anchor:"start",fontSize:11,fill:t.textColor,...b}));});}else {let[u,c]=this.#e.range();l.push({type:"line",x1:u,y1:n,x2:c,y2:n,stroke:t.axisColor,strokeWidth:t.axisWidth});for(let d of e)l.push({type:"line",x1:d.position,y1:n,x2:d.position,y2:n+6,stroke:t.tickColor,strokeWidth:t.axisWidth}),l.push({type:"text",content:d.label,x:d.position,y:n+18,anchor:"middle",fontSize:t.textSize,fill:t.textColor});}return l}};var ee=class{#e;#t;#n;constructor(e){let t=Object.keys(e.enumMap).map(Number).sort((n,o)=>n-o).map(String);this.#t=t,this.#e=new O({domain:t,range:e.range}),this.#n=e;}get scale(){return this.#e}generateTicks(){let{enumMap:e,showLabels:t=true,autoColor:n=true,gapValues:o}=this.#n,r=new Set(o??[]);return this.#t.map((i,m)=>{let s=Number(i),l=t?e[s]??String(s):String(s),u=this.#e.map(s),c=n?h.palette[m%h.palette.length]:void 0;return {value:s,label:l,y:u,color:c,isGap:r.has(s)}})}colorFor(e){let t=this.#t.indexOf(String(e));if(!(t===-1||!(this.#n.autoColor??true)))return h.palette[t%h.palette.length]}render(){let e=this.generateTicks(),t=this.#n.x??0,n=[];for(let o of e)o.isGap||n.push({type:"text",content:o.label,x:t,y:o.y+4,anchor:"end",fontSize:11,fill:o.color??h.textColor});return n}map(e){return this.#e.map(e)}isGap(e){return new Set(this.#n.gapValues??[]).has(e)}};var v=class a{#e;#t;static uidcnt=0;#n;constructor(e,t=[]){this.#e=e.id??"series-"+ ++a.uidcnt,this.#t=e.timeScale,this.#n=t;}get id(){return this.#e}get timeScale(){return this.#t}get data(){return this.#n}};var te=class extends v{#e;constructor(e){super(e,e.data),this.#e=e;}points(){let e=this.#e.valueScale;return this.data.filter(t=>t.value!==null).map(t=>({x:this.timeScale.map(t.time),y:e.map(t.value),time:t.time})).sort((t,n)=>t.x-n.x)}render(){let e=this.#e,t={smoothing:e.smoothing??false,stroke:e.stroke??h.stroke,strokeWidth:e.strokeWidth??h.strokeWidth,dashed:e.dashed??false,pointStyle:e.pointStyle??"none",pointSize:e.pointSize??h.pointSize,shadowColor:e.shadowColor,shadowBlur:e.shadowBlur,shadowOffsetX:e.shadowOffsetX,shadowOffsetY:e.shadowOffsetY},n=e.pointThreshold??h.pointThreshold,o=e.gapThreshold??h.gapThreshold,r=e.id,i=x.getRuns(this.data,c=>c.value===null,o),m=i.reduce((c,d)=>c+d.length,0);if(m===0)return [];let s={timeScale:this.timeScale,valueScale:e.valueScale},l=i.map(c=>({data:c})),u=[];if(u.push(...w(l,s,{...t,id:r?`${r}-line`:void 0})),t.pointStyle&&t.pointStyle!=="none"&&m<=n)for(let c of i)u.push(...R(c,s,{...t,id:r?`${r}-marker`:void 0},()=>t.stroke));return u}};var ne=class extends v{#e;constructor(e){super(e,e.data),this.#e=e;}points(){let e=this.#e.valueScale,t=[...this.data].filter(o=>o.value!==null).sort((o,r)=>o.time-r.time),n=[];for(let o=0;o<t.length;o++){let r=this.timeScale.map(t[o].time),i=e.map(t[o].value);o===0?n.push({x:r,y:i}):n.push({x:r,y:n[n.length-1].y},{x:r,y:i});}return n}render(){let e=x.getRuns(this.data,o=>o.value===null);if(e.length===0)return [];let t={timeScale:this.timeScale,valueScale:this.#e.valueScale},n=e.map(o=>({data:o}));return z(n,t,{stroke:this.#e.stroke??h.stroke,strokeWidth:this.#e.strokeWidth??h.strokeWidth,id:this.id?`${this.id}-line`:void 0})}};var re=class extends v{#e;constructor(e){super(e,e.data),this.#e=e;}opacity(e){if(!(this.#e.countOpacity??false))return .6;let t=0;for(let n of this.data)n.count>t&&(t=n.count);return t===0?.2:.2+.8*e/t}render(){let e=this.#e,t=e.fill??h.bandFill,n=e.hatch,o=e.avgLine??false,r=e.avgLineColor??h.bandAvgLine,i=e.bandWidth??10,m=[];for(let s of this.data){if(s.min===null||s.max===null)continue;let l=this.timeScale.map(s.time),u=e.valueScale.map(s.max),c=e.valueScale.map(s.min),d=i,p=this.data.indexOf(s);if(m.push({type:"rect",x:l-d/2,y:u,w:d,h:c-u,fill:t,hatch:n,opacity:this.opacity(s.count),id:this.id?`${this.id}-slot-${p}`:void 0}),o&&s.avg!==null){let f=e.valueScale.map(s.avg);m.push({type:"line",x1:l-d/2,y1:f,x2:l+d/2,y2:f,stroke:r,strokeWidth:1,id:this.id?`${this.id}-avg-${p}`:void 0});}}return m}};var oe=class extends v{#e;constructor(e){super(e,e.data),this.#e=e;}render(){let e=this.#e,t=e.minColor??h.minColor,n=e.maxColor??h.maxColor,o=e.avgColor??h.avgColor,r=e.avgDashed??true,i=e.smoothing??false,m=e.strokeWidth??h.strokeWidth,s=x.getRuns(this.data,p=>p.min===null||p.max===null||p.avg===null);if(s.length===0)return [];let l={timeScale:this.timeScale,valueScale:e.valueScale},u=[];s.forEach((p,f)=>{p.length<2||(e.fillToMax&&u.push(...V(p,l,{boundaries:[],yLow:g=>g.avg,yHigh:g=>g.max,getValue:g=>g.avg,interpolate:x.interpolateAggregatedPoint,getColor:()=>e.fillToMax,getHatch:()=>e.fillToMaxHatch},{id:this.id?`${this.id}-fillToMax-${f}`:void 0})),e.fillToMin&&u.push(...V(p,l,{boundaries:[],yLow:g=>g.avg,yHigh:g=>g.min,getValue:g=>g.avg,interpolate:x.interpolateAggregatedPoint,getColor:()=>e.fillToMin,getHatch:()=>e.fillToMinHatch},{id:this.id?`${this.id}-fillToMin-${f}`:void 0})));});let c=s.filter(p=>p.length>=2),d=p=>c.map(f=>({data:f.map(g=>({time:g.time,value:p(g)}))}));return u.push(...w(d(p=>p.max),l,{stroke:n,strokeWidth:m,smoothing:i,id:this.id?`${this.id}-max`:void 0}),...w(d(p=>p.min),l,{stroke:t,strokeWidth:m,smoothing:i,id:this.id?`${this.id}-min`:void 0}),...w(d(p=>p.avg),l,{stroke:o,strokeWidth:m,smoothing:i,dashed:r,id:this.id?`${this.id}-avg`:void 0})),u}};var ie=class extends v{#e;#t;constructor(e){super(e,e.data),this.#e=e,this.#t=[...e.zones??[]].sort((t,n)=>t.value-n.value);}#n(e){return e===0?this.#e.baseColor??h.stroke:this.#t[e-1].color}render(){let e=this.#e,t=e.baseColor??h.stroke,n={stroke:t,strokeWidth:e.strokeWidth??h.strokeWidth,smoothing:e.smoothing??false,pointStyle:e.pointStyle??"none",pointSize:e.pointSize??h.pointSize},o=e.gapThreshold??h.gapThreshold,r=e.pointThreshold??h.pointThreshold,i=x.getRuns(this.data,u=>u.value===null,o),m=i.reduce((u,c)=>u+c.length,0);if(m===0)return [];let s={timeScale:this.timeScale,valueScale:e.valueScale},l=[];for(let u of i){if(u.length<2)continue;if(e.fill){let f=e.fill.value,g=x.splitByBoundaries(u,[f],y=>y.value,x.interpolateDataPoint),b=e.valueScale.map(f);for(let y=0;y<g.length;y++){let S=g[y],F=(S.data[0].value+S.data[S.data.length-1].value)/2;if(e.fill.side==="above"==F>=f){let T=S.data.map(P=>({x:this.timeScale.map(P.time),y:e.valueScale.map(P.value)}));l.push({type:"path",id:this.id?`${this.id}-fill-${y}`:void 0,points:[...T,{x:T[T.length-1].x,y:b},{x:T[0].x,y:b}],fill:e.fill.color,hatch:e.fill.hatch,stroke:"none"});}}}let c=this.#t.map(f=>f.value),p=x.splitByBoundaries(u,c,f=>f.value,x.interpolateDataPoint).map(f=>({data:f.data,color:this.#n(f.zoneIndex)}));l.push(...w(p,s,{...n,id:this.id?`${this.id}-line`:void 0})),n.pointStyle&&n.pointStyle!=="none"&&m<=r&&l.push(...R(u,s,{...n,id:this.id?`${this.id}-marker`:void 0},f=>{let g=t;for(let b of this.#t)f.value>=b.value&&(g=b.color);return g}));}return l}};var ae=class{#e;constructor(e,t,n,o){this.#e={...e,xRange:t,y:n,height:o};}render(){let{items:e,timeScale:t,background:n,hatch:o,showAxis:r,xRange:i,y:m,height:s}=this.#e,l=[];n&&l.push({type:"rect",x:i[0],y:m,w:i[1]-i[0],h:s,fill:n,opacity:.04,stroke:"#ddd",strokeWidth:.25});for(let u of e){let c=t.map(u.startTime),d=t.map(u.endTime);if(!(d-c<1)&&(l.push({type:"rect",x:c,y:m,w:d-c,h:s,hatch:u.hatch??o,fill:u.fill??"#6b728044",stroke:u.stroke,strokeWidth:u.strokeWidth??0}),u.label)){let p=u.labelFontSize??10;l.push({type:"text",content:u.label,x:(c+d)/2,y:this.#t(u.labelBaseline,p),anchor:"middle",fontSize:p,fill:u.labelFill??"#333"});}}if(r){let u=new I({domain:t.domain(),xRange:i,y:m+s+4});l.push({type:"group",cssClass:"annotation-band-axis",commands:u.render()});}return l}#t(e,t){let{y:n,height:o}=this.#e;switch(e){case "top":return n+t*.9;case "bottom":return n+o-t*.25;default:return n+o/2+t*.35}}};var se=class{#e;constructor(e){this.#e=e;}render(){let{data:e,valueScale:t,xRange:n,showMin:o=false,showMax:r=false,showAvg:i=true,showMedian:m=false,labelPosition:s="end",lineColor:l=h.statsLineColor,labelColor:u=h.statsLabelColor}=this.#e,c=ce.compute(e),d=[{name:"min",value:c.min,enabled:o},{name:"max",value:c.max,enabled:r},{name:"avg",value:c.avg,enabled:i},{name:"median",value:c.median,enabled:m}],p=[],[f,g]=n;for(let b of d.filter(y=>y.enabled)){let y=t.map(b.value);p.push({type:"line",x1:f,y1:y,x2:g,y2:y,stroke:l,strokeWidth:1});let S=`${b.name}: ${b.value.toFixed(1)}`;(s==="start"||s==="both")&&p.push({type:"text",content:S,x:f+4,y:y-4,anchor:"start",fontSize:10,fill:u}),(s==="end"||s==="both")&&p.push({type:"text",content:S,x:g-4,y:y-4,anchor:"end",fontSize:10,fill:u}),s==="center"&&p.push({type:"text",content:S,x:(f+g)/2,y:y-4,anchor:"middle",fontSize:10,fill:u});}return p}};var M=class{#e;#t;#n;constructor(e){this.#e=e?.locale||(typeof navigator<"u"?navigator.language:"en-US"),this.#t=e?.fallbackLocales??["en-US"],this.#n=e?.autoFormat??true;}format(e,t,n){try{let o=this.#n&&n?this.#r(e,n,t):t;return A(this.#e,o).format(new Date(e))}catch{for(let o of this.#t)try{return A(o,t).format(new Date(e))}catch{}return new Date(e).toISOString()}}formatRange(e,t){let n=this.format(e),o=this.format(t);return `${n} \u2014 ${o}`}#r(e,t,n){let o=Math.abs(e-t),r=864e5,i=36e5,m=6e4,s={};return o<m?(s.second="2-digit",s.minute="2-digit",s.hour="2-digit"):o<i?(s.minute="2-digit",s.hour="2-digit"):o<r?(s.hour="2-digit",s.minute="2-digit"):o<7*r?(s.weekday="short",s.day="numeric"):o<365*r?(s.month="short",s.day="numeric"):(s.month="short",s.year="numeric"),{...n,...s}}};var _=class a{#e;#t;_compact;#n;constructor(e){this.#e=e?.unit??"",this.#t=e?.decimals??1,this._compact=e?.compact??false,this.#n=e?.custom;}format(e){if(this.#n)return this.#n(e);let t;return this._compact&&Math.abs(e)>=1e6?t=`${(e/1e6).toFixed(this.#t)}M`:this._compact&&Math.abs(e)>=1e3?t=`${(e/1e3).toFixed(this.#t)}k`:t=e.toFixed(this.#t),this.#e?`${t}${this.#e}`:t}formatRange(e,t){return `${this.format(e)} \u2014 ${this.format(t)}`}static unit(e,t=1){return new a({unit:e,decimals:t})}static temperature(e="\xB0C"){return new a({unit:e,decimals:1})}static percentage(){return new a({unit:"%",decimals:0})}};var $=class a{#e;#t;#n;constructor(e){this.#e=e?.map??{},this.#t=e?.fallback??(t=>String(t)),this.#n=e?.showValue??false;}format(e){let t=this.#e[e]??this.#t(e);return this.#n?`(${e}) ${t}`:t}has(e){return e in this.#e}labels(){return Object.values(this.#e)}values(){return Object.keys(this.#e).map(Number)}static fromLabels(e,t=false){let n={};return e.forEach((o,r)=>{n[r]=o;}),new a({map:n,showValue:t})}};var Ge={time:new M,value:new _,enum:new $};function le(a,e){let t=C();return {color:a.color??t.stroke,width:a.width??t.strokeWidth,style:a.style??"solid",smoothing:a.smoothing??false,shape:a.shape??(e.seriesType==="step"?"step":"line"),gapThreshold:a.gapThreshold??t.gapThreshold,opacity:a.opacity??1}}function fe(a){let e=a.style?.line;return e===false?[]:e===void 0?[le({},a)]:Array.isArray(e)?e.map(t=>le(t,a)):[le(e,a)]}function ge(a){let e=a.style?.markers;if(!e?.type||e.type==="none")return;let t=C(),o=(a.style?.line&&!Array.isArray(a.style.line)?a.style.line.color:void 0)??t.stroke;return {type:e.type,size:e.size??t.pointSize,stroke:e.stroke??o,fill:e.fill??"#ffffff",strokeWidth:e.strokeWidth??1,threshold:e.threshold}}function ye(a){let e=a.style?.shadow;if(!(!e?.color||e.color==="transparent"||e.color==="none"))return {color:e.color,blur:e.blur??4,offsetX:e.offsetX??0,offsetY:e.offsetY??0}}function be(a){return a.style?.gap}function xe(a){return a.style?.fill}function ze(a){return {lines:fe(a),fill:xe(a),markers:ge(a),shadow:ye(a),gap:be(a),id:a.style?.id??a.id}}/*!
|
|
28
28
|
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
29
29
|
* MIT with Attribution: free use incl. commercial requires visible credit to
|
|
30
30
|
* "Michael Lechner". Commercial license (no attribution) on request. See LICENSE.
|
|
@@ -43,4 +43,4 @@ var N=class{};var x=class{static interpolateDataPoint(a,e,t){return {time:a.time
|
|
|
43
43
|
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
44
44
|
* MIT with Attribution: free use incl. commercial must have visible credit to
|
|
45
45
|
* "Michael Lechner". Commercial license (no attribution) on request. See LICENSE.
|
|
46
|
-
*/export{
|
|
46
|
+
*/export{ae as AnnotationBandSeries,O as BandScale,re as BandSeries,J as Clip,ee as EnumAxis,$ as EnumFormatter,Ge as Formatters,K as Layout,te as LineSeries,D as LinearScale,oe as MinMaxAvgSeries,G as Renderer,se as StatsOverlay,ne as StepSeries,k as TIME_INTERVALS,I as TimeAxis,M as TimeFormatter,W as TimeScale,Q as ValueAxis,_ as ValueFormatter,ie as ZonedLineSeries,he as getHatch,Me as measureLegend,Ve as renderAnnotations,Te as renderArea,Oe as renderGaps,$e as renderGrid,Be as renderHighlights,_e as renderLegend,w as renderLine,Ie as renderMarkers,R as renderSeriesMarkers,Le as renderSplitLine,z as renderStep,Ae as renderThresholds,V as renderZonedArea,xe as resolveFill,be as resolveGap,fe as resolveLines,ge as resolveMarkers,ze as resolveSeriesStyle,ye as resolveShadow,q as slugify,h as theme};
|
|
@@ -158,6 +158,36 @@ declare const theme: {
|
|
|
158
158
|
readonly palette: readonly ["#4285f4", "#ea4335", "#22c55e", "#fbbc05", "#9334ea", "#12b5e5", "#fb923c", "#6366f1"];
|
|
159
159
|
};
|
|
160
160
|
|
|
161
|
+
/*!
|
|
162
|
+
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
163
|
+
* MIT with Attribution: free use incl. commercial requires visible credit to
|
|
164
|
+
* "Michael Lechner". Commercial license (no attribution) on request. See LICENSE.
|
|
165
|
+
*/
|
|
166
|
+
|
|
167
|
+
/** The Theme type β same shape as the immutable BUILTIN_DEFAULTS object. */
|
|
168
|
+
type Theme = typeof theme;
|
|
169
|
+
/**
|
|
170
|
+
* Apply a partial override on top of the current global default theme.
|
|
171
|
+
* Merged shallowly β nested objects (e.g. {@link Theme.palette}) are replaced
|
|
172
|
+
* wholesale, not deep-merged.
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* setDefaultTheme({ stroke: '#0f172a', gridStroke: '#f1f5f9' });
|
|
176
|
+
* new MLTimeGraph({ ... }); // picks up the new defaults
|
|
177
|
+
*/
|
|
178
|
+
declare function setDefaultTheme(partial: Partial<Theme>): void;
|
|
179
|
+
/**
|
|
180
|
+
* Read the current global default theme (a snapshot β mutating the result
|
|
181
|
+
* does NOT affect future reads).
|
|
182
|
+
*/
|
|
183
|
+
declare function getDefaultTheme(): Readonly<Theme>;
|
|
184
|
+
/**
|
|
185
|
+
* Restore the global default theme to the library's built-in values
|
|
186
|
+
* (`BUILTIN_DEFAULTS` from {@link ./defaults.ts}). Useful in test
|
|
187
|
+
* `afterEach` hooks and when you want to undo a previous `setDefaultTheme`.
|
|
188
|
+
*/
|
|
189
|
+
declare function resetDefaultTheme(): void;
|
|
190
|
+
|
|
161
191
|
/*!
|
|
162
192
|
* MLTimeGraph β Copyright (c) 2026 Michael Lechner
|
|
163
193
|
* MIT with Attribution: free use incl. commercial requires visible credit to
|
|
@@ -243,4 +273,4 @@ declare class Layout {
|
|
|
243
273
|
static default(width?: number, height?: number): Layout;
|
|
244
274
|
}
|
|
245
275
|
|
|
246
|
-
export { type LegendOrientation as L, type Marker as M, Renderer as R, type LegendItem as a, type LayoutResult as b, type RenderOutput as c, Layout as d, type LayoutConfig as e, type LegendConfig as f, measureLegend as m,
|
|
276
|
+
export { type LegendOrientation as L, type Marker as M, Renderer as R, type Theme as T, type LegendItem as a, type LayoutResult as b, type RenderOutput as c, Layout as d, type LayoutConfig as e, type LegendConfig as f, getDefaultTheme as g, renderLegend as h, measureLegend as m, resetDefaultTheme as r, setDefaultTheme as s };
|
package/package.json
CHANGED