teechart.js 4.0.5 → 5.0.0-beta.1
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/3D-COMPATIBILITY.md +45 -0
- package/README.md +463 -27
- package/dist/chunks/chart-p639xVyw.js +16 -0
- package/dist/chunks/chart-p639xVyw.js.map +1 -0
- package/dist/chunks/palette-series-DfyYptK1.js +16 -0
- package/dist/chunks/palette-series-DfyYptK1.js.map +1 -0
- package/dist/chunks/series-DeozLXIv.js +16 -0
- package/dist/chunks/series-DeozLXIv.js.map +1 -0
- package/dist/teechart.3d.esm.js +27 -0
- package/dist/teechart.3d.esm.js.map +1 -0
- package/dist/teechart.auto.esm.js +16 -0
- package/dist/teechart.auto.esm.js.map +1 -0
- package/dist/teechart.core.esm.js +16 -0
- package/dist/teechart.core.esm.js.map +1 -0
- package/dist/teechart.esm.js +3 -3
- package/dist/teechart.esm.js.map +1 -1
- package/dist/teechart.js +14 -3
- package/dist/teechart.js.map +1 -1
- package/dist/teechart.maps.esm.js +16 -0
- package/dist/teechart.maps.esm.js.map +1 -0
- package/dist/types/accessibility.d.ts +29 -0
- package/dist/types/accessibility.d.ts.map +1 -0
- package/dist/types/auto.d.ts +4 -0
- package/dist/types/auto.d.ts.map +1 -0
- package/dist/types/chart-options.d.ts +826 -0
- package/dist/types/chart-options.d.ts.map +1 -0
- package/dist/types/chart.d.ts +252 -0
- package/dist/types/chart.d.ts.map +1 -0
- package/dist/types/checkbox.d.ts +12 -0
- package/dist/types/checkbox.d.ts.map +1 -0
- package/dist/types/core/elements/axes.d.ts +17 -0
- package/dist/types/core/elements/axes.d.ts.map +1 -0
- package/dist/types/core/elements/axis-grid.d.ts +20 -0
- package/dist/types/core/elements/axis-grid.d.ts.map +1 -0
- package/dist/types/core/elements/axis-labels.d.ts +54 -0
- package/dist/types/core/elements/axis-labels.d.ts.map +1 -0
- package/dist/types/core/elements/axis-ticks.d.ts +19 -0
- package/dist/types/core/elements/axis-ticks.d.ts.map +1 -0
- package/dist/types/core/elements/axis-title.d.ts +16 -0
- package/dist/types/core/elements/axis-title.d.ts.map +1 -0
- package/dist/types/core/elements/axis.d.ts +125 -0
- package/dist/types/core/elements/axis.d.ts.map +1 -0
- package/dist/types/core/elements/chart-image.d.ts +13 -0
- package/dist/types/core/elements/chart-image.d.ts.map +1 -0
- package/dist/types/core/elements/font.d.ts +28 -0
- package/dist/types/core/elements/font.d.ts.map +1 -0
- package/dist/types/core/elements/format.d.ts +125 -0
- package/dist/types/core/elements/format.d.ts.map +1 -0
- package/dist/types/core/elements/gradient.d.ts +23 -0
- package/dist/types/core/elements/gradient.d.ts.map +1 -0
- package/dist/types/core/elements/legend-symbol.d.ts +49 -0
- package/dist/types/core/elements/legend-symbol.d.ts.map +1 -0
- package/dist/types/core/elements/legend.d.ts +131 -0
- package/dist/types/core/elements/legend.d.ts.map +1 -0
- package/dist/types/core/elements/margins.d.ts +9 -0
- package/dist/types/core/elements/margins.d.ts.map +1 -0
- package/dist/types/core/elements/panel.d.ts +13 -0
- package/dist/types/core/elements/panel.d.ts.map +1 -0
- package/dist/types/core/elements/scroll.d.ts +14 -0
- package/dist/types/core/elements/scroll.d.ts.map +1 -0
- package/dist/types/core/elements/shadow.d.ts +14 -0
- package/dist/types/core/elements/shadow.d.ts.map +1 -0
- package/dist/types/core/elements/stroke.d.ts +19 -0
- package/dist/types/core/elements/stroke.d.ts.map +1 -0
- package/dist/types/core/elements/wall.d.ts +13 -0
- package/dist/types/core/elements/wall.d.ts.map +1 -0
- package/dist/types/core/elements/zoom.d.ts +33 -0
- package/dist/types/core/elements/zoom.d.ts.map +1 -0
- package/dist/types/core/primitives.d.ts +33 -0
- package/dist/types/core/primitives.d.ts.map +1 -0
- package/dist/types/core.d.ts +96 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/data/data-engine.d.ts +245 -0
- package/dist/types/data/data-engine.d.ts.map +1 -0
- package/dist/types/date.format.d.ts +5 -0
- package/dist/types/date.format.d.ts.map +1 -0
- package/dist/types/declarative-tools.d.ts +6 -0
- package/dist/types/declarative-tools.d.ts.map +1 -0
- package/dist/types/do-http-request.d.ts +2 -0
- package/dist/types/do-http-request.d.ts.map +1 -0
- package/dist/types/dom-tip.d.ts +41 -0
- package/dist/types/dom-tip.d.ts.map +1 -0
- package/dist/types/events.d.ts +82 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/extras.d.ts +18 -0
- package/dist/types/extras.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interaction.d.ts +67 -0
- package/dist/types/interaction.d.ts.map +1 -0
- package/dist/types/map-series-definition.d.ts +5 -0
- package/dist/types/map-series-definition.d.ts.map +1 -0
- package/dist/types/maps/africa-map.d.ts +10 -0
- package/dist/types/maps/africa-map.d.ts.map +1 -0
- package/dist/types/maps/asia-map.d.ts +10 -0
- package/dist/types/maps/asia-map.d.ts.map +1 -0
- package/dist/types/maps/australia-map.d.ts +10 -0
- package/dist/types/maps/australia-map.d.ts.map +1 -0
- package/dist/types/maps/europe-map.d.ts +10 -0
- package/dist/types/maps/europe-map.d.ts.map +1 -0
- package/dist/types/maps/europe27-map.d.ts +10 -0
- package/dist/types/maps/europe27-map.d.ts.map +1 -0
- package/dist/types/maps/layout-map.d.ts +51 -0
- package/dist/types/maps/layout-map.d.ts.map +1 -0
- package/dist/types/maps/map-types.d.ts +19 -0
- package/dist/types/maps/map-types.d.ts.map +1 -0
- package/dist/types/maps/south-america-map.d.ts +10 -0
- package/dist/types/maps/south-america-map.d.ts.map +1 -0
- package/dist/types/maps/spain-map.d.ts +11 -0
- package/dist/types/maps/spain-map.d.ts.map +1 -0
- package/dist/types/maps/svg-map.d.ts +37 -0
- package/dist/types/maps/svg-map.d.ts.map +1 -0
- package/dist/types/maps/usa-map.d.ts +12 -0
- package/dist/types/maps/usa-map.d.ts.map +1 -0
- package/dist/types/maps/world-map.d.ts +14 -0
- package/dist/types/maps/world-map.d.ts.map +1 -0
- package/dist/types/maps.d.ts +15 -0
- package/dist/types/maps.d.ts.map +1 -0
- package/dist/types/marks-animation.d.ts +16 -0
- package/dist/types/marks-animation.d.ts.map +1 -0
- package/dist/types/modern-theme.d.ts +14 -0
- package/dist/types/modern-theme.d.ts.map +1 -0
- package/dist/types/optional-options.d.ts +6 -0
- package/dist/types/optional-options.d.ts.map +1 -0
- package/dist/types/palette.d.ts +11 -0
- package/dist/types/palette.d.ts.map +1 -0
- package/dist/types/platform.d.ts +27 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/plugin.d.ts +80 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/quadrants-plugin.d.ts +45 -0
- package/dist/types/quadrants-plugin.d.ts.map +1 -0
- package/dist/types/register-all.d.ts +3 -0
- package/dist/types/register-all.d.ts.map +1 -0
- package/dist/types/rendering/canvas-graphics.d.ts +65 -0
- package/dist/types/rendering/canvas-graphics.d.ts.map +1 -0
- package/dist/types/rendering/graphics.d.ts +59 -0
- package/dist/types/rendering/graphics.d.ts.map +1 -0
- package/dist/types/rendering/renderer.d.ts +58 -0
- package/dist/types/rendering/renderer.d.ts.map +1 -0
- package/dist/types/rendering/three-graphics.d.ts +22 -0
- package/dist/types/rendering/three-graphics.d.ts.map +1 -0
- package/dist/types/responsive.d.ts +8 -0
- package/dist/types/responsive.d.ts.map +1 -0
- package/dist/types/series/activity-gauge.d.ts +18 -0
- package/dist/types/series/activity-gauge.d.ts.map +1 -0
- package/dist/types/series/arc-gauge.d.ts +74 -0
- package/dist/types/series/arc-gauge.d.ts.map +1 -0
- package/dist/types/series/area.d.ts +24 -0
- package/dist/types/series/area.d.ts.map +1 -0
- package/dist/types/series/bar.d.ts +17 -0
- package/dist/types/series/bar.d.ts.map +1 -0
- package/dist/types/series/box-plot.d.ts +140 -0
- package/dist/types/series/box-plot.d.ts.map +1 -0
- package/dist/types/series/bubble.d.ts +25 -0
- package/dist/types/series/bubble.d.ts.map +1 -0
- package/dist/types/series/bullet.d.ts +86 -0
- package/dist/types/series/bullet.d.ts.map +1 -0
- package/dist/types/series/candle.d.ts +27 -0
- package/dist/types/series/candle.d.ts.map +1 -0
- package/dist/types/series/circular-gauge.d.ts +100 -0
- package/dist/types/series/circular-gauge.d.ts.map +1 -0
- package/dist/types/series/color-series.d.ts +59 -0
- package/dist/types/series/color-series.d.ts.map +1 -0
- package/dist/types/series/composed-series.d.ts +76 -0
- package/dist/types/series/composed-series.d.ts.map +1 -0
- package/dist/types/series/custom-bar.d.ts +63 -0
- package/dist/types/series/custom-bar.d.ts.map +1 -0
- package/dist/types/series/custom-series.d.ts +74 -0
- package/dist/types/series/custom-series.d.ts.map +1 -0
- package/dist/types/series/donut.d.ts +17 -0
- package/dist/types/series/donut.d.ts.map +1 -0
- package/dist/types/series/gantt.d.ts +47 -0
- package/dist/types/series/gantt.d.ts.map +1 -0
- package/dist/types/series/high-low-bar.d.ts +24 -0
- package/dist/types/series/high-low-bar.d.ts.map +1 -0
- package/dist/types/series/histogram.d.ts +36 -0
- package/dist/types/series/histogram.d.ts.map +1 -0
- package/dist/types/series/horiz-area.d.ts +11 -0
- package/dist/types/series/horiz-area.d.ts.map +1 -0
- package/dist/types/series/horiz-bar.d.ts +23 -0
- package/dist/types/series/horiz-bar.d.ts.map +1 -0
- package/dist/types/series/line.d.ts +22 -0
- package/dist/types/series/line.d.ts.map +1 -0
- package/dist/types/series/linear-gauge.d.ts +73 -0
- package/dist/types/series/linear-gauge.d.ts.map +1 -0
- package/dist/types/series/map-series.d.ts +82 -0
- package/dist/types/series/map-series.d.ts.map +1 -0
- package/dist/types/series/numeric-gauge.d.ts +96 -0
- package/dist/types/series/numeric-gauge.d.ts.map +1 -0
- package/dist/types/series/palette-series.d.ts +39 -0
- package/dist/types/series/palette-series.d.ts.map +1 -0
- package/dist/types/series/pie.d.ts +81 -0
- package/dist/types/series/pie.d.ts.map +1 -0
- package/dist/types/series/point-xy.d.ts +13 -0
- package/dist/types/series/point-xy.d.ts.map +1 -0
- package/dist/types/series/polar.d.ts +37 -0
- package/dist/types/series/polar.d.ts.map +1 -0
- package/dist/types/series/sankey.d.ts +90 -0
- package/dist/types/series/sankey.d.ts.map +1 -0
- package/dist/types/series/series-list.d.ts +127 -0
- package/dist/types/series/series-list.d.ts.map +1 -0
- package/dist/types/series/series-list.types.d.ts +43 -0
- package/dist/types/series/series-list.types.d.ts.map +1 -0
- package/dist/types/series/sliced.d.ts +13 -0
- package/dist/types/series/sliced.d.ts.map +1 -0
- package/dist/types/series/surface.d.ts +24 -0
- package/dist/types/series/surface.d.ts.map +1 -0
- package/dist/types/series/treemap.d.ts +107 -0
- package/dist/types/series/treemap.d.ts.map +1 -0
- package/dist/types/series/violin.d.ts +105 -0
- package/dist/types/series/violin.d.ts.map +1 -0
- package/dist/types/series/volume.d.ts +11 -0
- package/dist/types/series/volume.d.ts.map +1 -0
- package/dist/types/series-definitions.d.ts +30 -0
- package/dist/types/series-definitions.d.ts.map +1 -0
- package/dist/types/series-registry.d.ts +37 -0
- package/dist/types/series-registry.d.ts.map +1 -0
- package/dist/types/series-utils.d.ts +29 -0
- package/dist/types/series-utils.d.ts.map +1 -0
- package/dist/types/series.d.ts +342 -0
- package/dist/types/series.d.ts.map +1 -0
- package/dist/types/slider.d.ts +49 -0
- package/dist/types/slider.d.ts.map +1 -0
- package/dist/types/spline.d.ts +2 -0
- package/dist/types/spline.d.ts.map +1 -0
- package/dist/types/table/chart-table.d.ts +27 -0
- package/dist/types/table/chart-table.d.ts.map +1 -0
- package/dist/types/teechart-3d.d.ts +4 -0
- package/dist/types/teechart-3d.d.ts.map +1 -0
- package/dist/types/theme.d.ts +41 -0
- package/dist/types/theme.d.ts.map +1 -0
- package/dist/types/three/chart-3d.d.ts +77 -0
- package/dist/types/three/chart-3d.d.ts.map +1 -0
- package/dist/types/three/chart-options-3d.d.ts +5 -0
- package/dist/types/three/chart-options-3d.d.ts.map +1 -0
- package/dist/types/three/teechart-3d.d.ts +25 -0
- package/dist/types/three/teechart-3d.d.ts.map +1 -0
- package/dist/types/three-context.d.ts +184 -0
- package/dist/types/three-context.d.ts.map +1 -0
- package/dist/types/three-context.types.d.ts +177 -0
- package/dist/types/three-context.types.d.ts.map +1 -0
- package/dist/types/three-parametric-geometry.d.ts +7 -0
- package/dist/types/three-parametric-geometry.d.ts.map +1 -0
- package/dist/types/three.d.ts +6 -0
- package/dist/types/three.d.ts.map +1 -0
- package/dist/types/tools/animate-hover.d.ts +13 -0
- package/dist/types/tools/animate-hover.d.ts.map +1 -0
- package/dist/types/tools/annotation.d.ts +169 -0
- package/dist/types/tools/annotation.d.ts.map +1 -0
- package/dist/types/tools/base-animation.d.ts +83 -0
- package/dist/types/tools/base-animation.d.ts.map +1 -0
- package/dist/types/tools/cursor-tool.d.ts +51 -0
- package/dist/types/tools/cursor-tool.d.ts.map +1 -0
- package/dist/types/tools/drag-tool.d.ts +28 -0
- package/dist/types/tools/drag-tool.d.ts.map +1 -0
- package/dist/types/tools/index.d.ts +8 -0
- package/dist/types/tools/index.d.ts.map +1 -0
- package/dist/types/tools/tool.d.ts +27 -0
- package/dist/types/tools/tool.d.ts.map +1 -0
- package/dist/types/tools/tools.d.ts +33 -0
- package/dist/types/tools/tools.d.ts.map +1 -0
- package/dist/types/utils.d.ts +23 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/worker.d.ts +92 -0
- package/dist/types/worker.d.ts.map +1 -0
- package/package.json +73 -26
- package/dist/Tween.js +0 -13
- package/dist/date.format.js +0 -145
- package/dist/excanvas/canvas.text.js +0 -489
- package/dist/excanvas/excanvas.compiled.js +0 -35
- package/dist/excanvas/excanvas.js +0 -924
- package/dist/excanvas/excanvas_text.js +0 -1416
- package/dist/three.js +0 -990
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @preserve TeeChart(tm) for JavaScript(tm) * @fileOverview TeeChart for JavaScript(tm)
|
|
3
|
+
* v5.0.0 Jun 2026
|
|
4
|
+
* Copyright(c) 2012-2026 by Steema Software SL. All Rights Reserved.
|
|
5
|
+
* https://www.steema.com
|
|
6
|
+
*
|
|
7
|
+
* Licensed with commercial and non-commercial attributes,
|
|
8
|
+
* specifically: https://www.steema.com/licensing/html5
|
|
9
|
+
*
|
|
10
|
+
* JavaScript is a trademark of Oracle Corporation.
|
|
11
|
+
* @author <a href="mailto:david@steema.com">Steema Software</a>
|
|
12
|
+
* @version 5.0.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import{mapSeriesType as r}from"./teechart.maps.esm.js";export{AfricaMap,AsiaMap,AustraliaMap,Europe27Map,EuropeMap,LayoutMap,Map,SVGMap,SouthAmericaMap,SpainMap,USAMap,WorldMap}from"./teechart.maps.esm.js";export{MyParametricGeometry,Three}from"./teechart.3d.esm.js";import{registerAllSeriesTypes as s,registerAllOptions as t,registerSeriesType as u}from"./teechart.core.esm.js";export{ActivityGauge,ArcGauge,Area,Axes,Bar,BoxPlot,Bubble,Bullet,Candle,Chart,ChartTable,CheckBox,CircularGauge,ColorGrid,CursorTool,CustomBar,CustomSeries,DataDimension,DataEngine,DataMetric,Donut,DragTool,Gantt,HighLowBar,Histogram,HorizArea,HorizBar,Legend,LegendSymbol,Line,LinearGauge,MarksAnimation,NumericGauge,Panel,Pie,PointXY,Polar,Sankey,Scroll,Scroller,SeriesList,Sliced,Slider,SliderControl,Surface,Treemap,Violin,Volume,Wall,Zoom,arcGaugeSeriesType,boxPlotSeriesType,bulletSeriesType,candleSeriesType,circularGaugeSeriesType,colorGridSeriesType,compareChartOptions,createWorkerChart,defineSeriesType,describeChart,drawSpline,ganttSeriesType,highLowBarSeriesType,histogramSeriesType,linearGaugeSeriesType,numericGaugeSeriesType,quadrantsPlugin,registerPalette,registerPlugin,registerTheme,sankeySeriesType,startChartWorker,surfaceSeriesType,treemapSeriesType,unregisterPalette,unregisterPlugin,unregisterSeriesType,unregisterTheme,violinSeriesType}from"./teechart.core.esm.js";export{A as AnimateHover,a as Annotation,B as BaseAnimation,C as CanvasGraphics,b as CanvasRenderer,c as ChartImage,D as DOMTip,d as DOMTipController,e as DateUtils,E as Emitter,F as FadeAnimation,f as Font,g as Format,G as Gradient,M as Margins,h as Marks,P as Palette,i as PaletteSeries,j as Point,R as RainbowPalette,k as Rectangle,S as Series,l as SeriesAnimation,m as Shadow,n as Stroke,T as Title,o as Tool,p as ToolTip,q as doHttpRequest}from"./chunks/palette-series-DSxVNqPo.js";function y(){s(),t(),u("map",r)}y();export{r as mapSeriesType,y as registerAll,t as registerAllOptions,s as registerAllSeriesTypes,u as registerSeriesType};
|
|
16
|
+
//# sourceMappingURL=teechart.auto.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teechart.auto.esm.js","sources":["../../../src/auto.ts"],"sourcesContent":["export * from \"./index.js\"\n\nimport { registerAllOptions, registerAllSeriesTypes, registerSeriesType } from \"./core.js\"\nimport { mapSeriesType } from \"./maps.js\"\n\n/** Registers every built-in optional series type and chart option section. */\nexport function registerAll(): void {\n\tregisterAllSeriesTypes()\n\tregisterAllOptions()\n\tregisterSeriesType(\"map\", mapSeriesType)\n}\n\nregisterAll()\n"],"names":["registerAll","registerAllSeriesTypes","registerAllOptions","registerSeriesType","mapSeriesType"],"mappings":";;;;;;;;;;;;;;00DAMgBA,IACfC,IACAC,IACAC,EAAmB,MAAOC,EAC3B,CAEAJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @preserve TeeChart(tm) for JavaScript(tm) * @fileOverview TeeChart for JavaScript(tm)
|
|
3
|
+
* v5.0.0-beta.1 Jun 2026
|
|
4
|
+
* Copyright(c) 2012-2026 by Steema Software SL. All Rights Reserved.
|
|
5
|
+
* https://www.steema.com
|
|
6
|
+
*
|
|
7
|
+
* Licensed with commercial and non-commercial attributes,
|
|
8
|
+
* specifically: https://www.steema.com/licensing/html5
|
|
9
|
+
*
|
|
10
|
+
* JavaScript is a trademark of Oracle Corporation.
|
|
11
|
+
* @author <a href="mailto:david@steema.com">Steema Software</a>
|
|
12
|
+
* @version 5.0.0-beta.1
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import{C as t,f as r,B as x,t as v,v as y,D as w,c as k,d as V,k as z,A as _,r as N}from"./chunks/chart-p639xVyw.js";export{a as Axes,b as Bubble,L as Legend,e as LegendSymbol,P as Panel,g as Pie,h as PointXY,S as Scroll,i as SeriesList,W as Wall,Z as Zoom,j as compareChartOptions,q as quadrantsPlugin,l as registerPalette,m as registerPlugin,n as registerTheme,u as unregisterPalette,o as unregisterPlugin,p as unregisterSeriesType,s as unregisterTheme}from"./chunks/chart-p639xVyw.js";import{n as I,i as B,g as F,j as $,J as O,a as H,S as X,B as Y,t as J,Q,O as U,o as K,k as tt,F as et,U as it,V as st,W as at,w as nt,X as rt,q as ot,b as ht,Y as lt,u as ct,Z as dt,e as ut,P as mt,H as ft,x as gt,v as xt}from"./chunks/series-DeozLXIv.js";export{A as AnimateHover,C as CanvasGraphics,c as ChartImage,D as DOMTip,d as DOMTipController,E as Emitter,f as Font,G as Gradient,M as Margins,h as Marks,R as RainbowPalette,l as Shadow,m as Stroke,T as Title,p as doHttpRequest}from"./chunks/series-DeozLXIv.js";import{P as pt}from"./chunks/palette-series-DfyYptK1.js";class bt extends I{direction;size;followMouse;dragging;format;horizAxis;vertAxis;render;symbol;symbolSize;_pp;_canvasCopy;_ctxCopy;_hitEpsilon;_old;_rect;onchange;constructor(t){super(t),this.direction="both",this.size=new B(0,0),this.followMouse=!0,this.dragging=-1,this.format=new F(t),this.format.stroke.fill="#475569",this.format.stroke.size=1.5,this.horizAxis=t?t.axes.bottom:null,this.vertAxis=t?t.axes.left:null,this.render="copy",this.symbol="circle",this.symbolSize=9,this._hitEpsilon=3,this._old=null,this._rect=new $,this._pp=new B(0,0),this._canvasCopy=null,this._ctxCopy=null}getHitTarget(t){let e=-1;const i=this._rect,s=this._old;if(i.contains(t)&&s){const i=Math.abs(s.x-t.x)<this._hitEpsilon,a=Math.abs(s.y-t.y)<this._hitEpsilon,n=this.direction;"both"===n&&i&&a?e=0:!i||"both"!==n&&"vertical"!==n?!a||"both"!==n&&"horizontal"!==n||(e=2):e=1}return e}calculateBounds(){const t=this.chart.chartRect,e=this.horizAxis,i=this.vertAxis,s=this._rect;s.x=e?e.startPos:t.x,s.width=e?e.endPos-s.x:t.width,s.y=i?i.startPos:t.y,s.height=i?i.endPos-s.y:t.height}mousedown(t){return this.chart.calcMouse(t,this._pp),this.dragging=this.followMouse?-1:this.getHitTarget(this._pp),this.dragging>-1}clicked(){return this.dragging=-1,!1}mousemove(t){const e=this.dragging,i=this.followMouse;let s=this._old;const a=this._rect;if((i||e>-1)&&(s||(s=this._old=new B),(s.x!==t.x||s.y!==t.y)&&(this.calculateBounds(),a.contains(t)))){if((i||0===e||1===e)&&(s.x=t.x),(i||0===e||2===e)&&(s.y=t.y),"full"===this.render)this.chart.draw();else{if(this._canvasCopy)if("copy"===this.render)this.restoreCopy(this.chart.drawContext);else{const t=this.chart.bounds;this._ctxCopy?.clearRect(t.x,t.y,t.width,t.height)}this.drawCursor("copy"===this.render?this.chart.ctx:this._ctxCopy)}return this.onchange?.(t),void this._emit("change",t)}const n=this.getHitTarget(t);this.chart.newCursor=s&&n>-1?0===n?"move":1===n?"e-resize":"n-resize":"default"}setRender(t){this.render=t,this._canvasCopy&&(this.resetCopy(),this.chart.draw())}restoreCopy(t){this._canvasCopy&&this.copyBitmap(this._canvasCopy,t)}copyBitmap(t,e){e.save(),e.setTransform(1,0,0,1,0,0),e.globalAlpha=1,e.globalCompositeOperation="copy",e.shadowColor="transparent",e.filter="none",e.drawImage(t,0,0),e.restore()}resetCopy(){const t=this.chart.canvas,e=this._canvasCopy;e&&("layer"===this.render?(e.style.position="absolute",t.parentNode?.appendChild(e),e.setAttribute("left",`${t.offsetLeft}px`),e.setAttribute("top",`${t.offsetTop}px`),e.style.left=`${t.offsetLeft}px`,e.style.top=`${t.offsetTop}px`,e.style.zIndex="10",e.style.pointerEvents="none"):e.parentNode&&e.parentNode.removeChild(e))}draw(){if("full"===this.render)this.drawCursor(this.chart.ctx);else if(this._canvasCopy||(this._canvasCopy=this.chart.canvas.cloneNode(),this.resetCopy(),this._ctxCopy=this._canvasCopy.getContext("2d")),"copy"===this.render){const t=this.chart.canvas;this._canvasCopy.width===t.width&&this._canvasCopy.height===t.height||(this._canvasCopy.width=t.width,this._canvasCopy.height=t.height),this._ctxCopy&&this.copyBitmap(t,this._ctxCopy),this.drawCursor(this.chart.ctx)}else this.drawCursor(this._ctxCopy)}drawCursor(t){if(!t)return;const e=this.direction,i="both"===e,s=this._rect,a=this._old;if(this.calculateBounds(),a){if(t.save(),t.beginPath(),i||"vertical"===e){const e=.5*this.size.y;t.moveTo(a.x,0===e?s.y:a.y-e),t.lineTo(a.x,0===e?s.y+s.height:a.y+e)}if(i||"horizontal"===e){const e=.5*this.size.x;t.moveTo(0===e?s.x:a.x-e,a.y),t.lineTo(0===e?s.x+s.width:a.x+e,a.y)}if(t.strokeStyle="white",t.lineWidth=Math.max(this.format.stroke.size+3,4),t.setLineDash([]),t.stroke(),this.format.stroke.prepare(this.format.stroke.fill,t),t.stroke(),"none"!==this.symbol){const e=.5*this.symbolSize;t.beginPath(),"circle"===this.symbol?t.arc(a.x,a.y,e,0,2*Math.PI):"square"===this.symbol?t.rect(a.x-e,a.y-e,this.symbolSize,this.symbolSize):(t.moveTo(a.x,a.y-e),t.lineTo(a.x+e,a.y),t.lineTo(a.x,a.y+e),t.lineTo(a.x-e,a.y),t.closePath()),t.fillStyle="white",t.fill(),t.stroke()}t.restore()}}}class vt extends I{series;target;point;onchanging;onchanged;constructor(t){super(t),this.series=null,this.target={series:null,index:-1},this.point=new B(0,0)}clicked(){return this.target.series=null,this.target.index=-1,!1}mousedown(t){const e=this.chart.series.items,i=this.point,s=this.target;if(this.chart.calcMouse(t,i),s.series=null,s.index=-1,this.series?.visible)s.index=this.series.clicked(i),-1!==s.index&&(s.series=this.series);else for(const t of e)if(t.visible&&(s.index=t.clicked(i),-1!==s.index)){s.series=t;break}return-1!==s.index}mousemove(t){const e=this.target,i=e.series;if(-1!==e.index&&i){let s=i.mandatoryAxis.fromPos(i.yMandatory?t.y:t.x);this.onchanging&&(s=this.onchanging(this,s)),i.data.values[e.index]=s,this.onchanged&&this.onchanged(this,s),this._emit("changed",this,s),this.chart.draw()}}}function yt(t){return Number.isInteger(t)?String(t):t.toFixed(2).replace(/\.?0+$/,"")}function wt(t){const e=t.series.items.filter(t=>t.visible),i=t.title.text,s=[];if(i&&s.push(i),0===e.length)s.push("Chart without data");else{const t=1===e.length?"1 series":`${e.length} series`;s.push(`Chart with ${t}: ${e.map((t,e)=>function(t,e){const i=t.title||`Series ${e+1}`,s=t.data.values.filter(t=>"number"==typeof t&&Number.isFinite(t));if(0===s.length)return`${i}, no data`;const a=1===s.length?"1 point":`${s.length} points`;let n=s[0],r=s[0];for(const t of s)t<n&&(n=t),t>r&&(r=t);return`${i}, ${a}, from ${yt(n)} to ${yt(r)}`}(t,e)).join("; ")}`)}return`${s.join(". ")}.`}const kt={position:"absolute",width:"1px",height:"1px",margin:"-1px",padding:"0",overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:"0"};function Mt(t,e){let i=0,s=-1,a=null;const n=O();n&&e.parentNode&&(a=n.createElement("div"),a.setAttribute?.("role","status"),a.setAttribute?.("aria-live","polite"),a.style&&Object.assign(a.style,kt),e.parentNode.insertBefore(a,e.nextSibling??null));const r=(e,i)=>{for(const i of t.series.items)i!==e&&-1!==i.over&&i.doHover(-1);e.doHover(i),a&&(a.textContent=function(t,e){const i=t.data.labels[e],s=t.data.values[e],a=void 0===i||""===i?`point ${e+1}`:String(i),n="number"==typeof s?yt(s):String(s);return`${t.title||"Series"}, ${a}: ${n}`}(e,i)),t._emit("pointfocus",e,i)},o=e=>{const n=function(t){return t.series.items.filter(t=>t.visible&&t.data.values.length>0)}(t);if(0===n.length)return;i=Math.min(i,n.length-1);const o=n[i].data.values.length-1;let h=i,l=s<0?0:s;switch(e.key){case"ArrowRight":l=s<0?0:Math.min(o,s+1);break;case"ArrowLeft":l=s<0?o:Math.max(0,s-1);break;case"ArrowDown":h=Math.min(n.length-1,i+1);break;case"ArrowUp":h=Math.max(0,i-1);break;case"Home":l=0;break;case"End":l=o;break;case"Escape":for(const e of t.series.items)-1!==e.over&&e.doHover(-1);return s=-1,void(a&&(a.textContent=""));default:return}e.preventDefault?.(),i=h;const c=n[h];s=Math.min(l,c.data.values.length-1),r(c,s)};return e.setAttribute?.("tabindex","0"),e.addEventListener?.("keydown",o),()=>{e.removeEventListener?.("keydown",o),e.removeAttribute?.("tabindex"),a?.parentNode?.removeChild(a),a=null}}class Ct extends H{onchange;check;checked=!0;constructor(t,e="",i){super(t),this.transparent=!0,this.text=e,this.checked=i??!0,this.margins.left=10,this.cursor="pointer",this.check=new F(t),this.check.fill="white",this.chart.canvas.addEventListener("touchstart",()=>{})}async draw(){await super.draw();const t=this.chart.drawContext,e=this.position.x+2,i=.6*this.bounds.height,s=this.position.y+.4*(this.bounds.height-i);this.check.rectangle(e,s,i,i),this.checked&&(t.beginPath(),t.moveTo(e+3,s+5),t.lineTo(e+4,s+8),t.lineTo(e+7,s+2),this.check.stroke.prepare(),t.stroke())}onclick(){return this.checked=!this.checked,this.onchange&&this.onchange(this),!0}}class Tt extends X{bounds;useAxes=!1;min=0;max=100;step=0;value=0;angle=280;rotation=0;rotateText=!1;shape="circle";inverted=!1;drag={enabled:!0};onchange;ongetText;formatValue;ondrawHand;hands=[];cx=0;cy=0;cex=0;cey=0;tick0=0;tick1=0;tickMin=0;tickText=0;initRot=0;endRot=0;_oldValue=0;_newValue=0;constructor(t,e){super(t,e),this.bevel=new F(this.chart),this.bevel.gradient.visible=!0,this.bevel.gradient.colors=["white"],this.bevel.shadow.visible=!1,this.bevel.visible=!1,this.bevel.stroke.fill="",this.center=new F(this.chart),this.center.stroke.fill="",this.center.gradient.visible=!0,this.center.size=10,this.center.visible=!1,this.center.shadow.visible=!0,this.center.gradient.offset={x:2,y:-2},this.center.location={x:0,y:0},this.center.top=new F(this.chart),this.center.top.size=40,this.center.top.visible=!0,this.center.top.stroke.fill="",this.center.top.gradient.colors=["silver","white"],this.center.top.gradient.visible=!0,this.center.top.gradient.direction="topbottom",this.ticks=new F(this.chart),this.ticks.length=6,this.ticks.stroke.fill="silver",this.ticks.visible=!0,this.ticks.outside=!0,this.ticks.triangle=!1,this.ticks.fill="white",this.ticksBack=new F(this.chart),this.ticksBack.stroke.fill="",this.ticksBack.fill="black",this.ticksBack.gradient.visible=!0,this.ticksBack.gradient.colors=["red","yellow","green"],this.ticksBack.gradient.direction="rightleft",this.ticksBack.visible=!1,this.ticksBack.radius=0,this.minor=new F(this.chart),this.minor.stroke.fill="silver",this.minor.visible=!0,this.minor.count=4,this.minor.shape="",this.minorBack=new F(this.chart),this.minorBack.stroke.fill="",this.minorBack.visible=!1,this.minorBack.fill="white",this.minorBack.gradient.visible=!1,this.minorBack.gradient.direction="leftright",this.minorBack.gradient.colors=["green","yellow","red"],this.minorBack.radius=0,this.hand=this.addHand(),this.back=new F(this.chart),this.back.fill="black",this.back.visible=!0,this.back.gradient.visible=!0,this.back.gradient.colors=["rgba(255,126,95,0.8)","rgba(254,180,123,0.8)"],this.back.stroke.fill="",this.pointer=new F(this.chart),this.pointer.size=3,this.pointer.fill="black",this.pointer.stroke.fill="",this.pointer.visible=!1,this.marks.location={x:0,y:10},this.marks.visible=!0,this.marks.format.fill="black",this.marks.format.font.fill="black",this.marks.format.gradient.visible=!0,this.marks.format.gradient.colors=["rgba(255,126,95,0.6)","rgba(254,180,123,0.6)"],this.marks.format.shadow.visible=!0,this.marks.format.shadow.blur=8,this.marks.format.shadow.color="black",this.format.visible=!0,this.format.gradient.visible=!0,this.format.gradient.colors=["white"],this.format.shadow.visible=!0,this.format.font.style="12px Verdana",this.format.font.fill="black",this.format.font.visible=!0,this.format.size=2,this.format.round={x:6,y:6},this.format.padding=.5,this.units=new H(this.chart),this.units.transparent=!0,this.units.format.font.fill="black",this.units.location={x:0,y:24},this.bounds=this.getRect(),this.hover.enabled=!0,this.animate=new Y(this.chart,t=>{this.value=this._oldValue+t*(this._newValue-this._oldValue),this.chart.draw()}),this.animate.duration=100,this.animate.onstop=()=>{this.value=this._newValue,this.onchange&&this.onchange(this),this._emit("change",this),this.chart.draw()}}addHand(){const t=new F(this.chart);return t.size=6,t.length=60,t.back=20,t.gradient.visible=!0,t.gradient.colors[0]="orange",t.shadow.visible=!0,t.shadow.blur=12,t.shadow.color="black",t.stroke.fill="",t.pointer=!0,t.shape="needle",t.visible=!0,this.hands.push(t),t}destroy(){this.units?.destroy?.(),super.destroy()}setRanges(t){return this.ticksBack.ranges=t.map(t=>({value:t.to,fill:t.color})),this.ticksBack.visible=t.length>0,this}calcBounds(){return this.bounds.custom?this.bounds:this.cellRect(this.bounds,!0)}draw(){let t,e,i=.01745*this.angle,s=this.calcBounds();const a=this.format,n=this.back,r=this.ticks,o=this.ticksBack,h=this.minor,l=this.minorBack,c=this.marks,d=this.hand,u=this.center,m=this.pointer;this.cx=s.x+.5*s.width,this.cy=s.y+.5*s.height,this.bounds.custom?(t=s.width,e=s.height):e=t=Math.min(s.width,s.height);let f=this,g=f.chart.drawContext,x=1.57,p=t;for(this.initRot=.01745*f.rotation+.5*(6.283-i);this.initRot>=6.283;)this.initRot-=6.283;for(this.endRot=this.initRot+i;this.endRot>=6.283;)this.endRot-=6.283;function b(t,e,i,s,a){const n=t.radius;void 0!==n&&n>0&&(i=p*n*.01),g.beginPath(),g.arc(0,0,e,s,a,!1),g.arc(0,0,i,a,s,!0),t.draw(g,null,-i,-i,2*i,2*i)}function v(t,e,i){if(t.visible&&""!==t.fill){const s=t.ranges;if(s&&s.length>0){let a,n=x,r=t.fill,o=t.gradient.visible,h=f.max-f.min,l=f.endRot-f.initRot;t.gradient.visible=!1,f.inverted&&(n+=l);for(let r=0;r<s.length;r++){const o=Math.min(f.max,s[r].value),c=0===r?o:o-s[r-1].value+f.min;if(a=f.inverted?n-l*(c-f.min)/h:n+l*(c-f.min)/h,t.fill=s[r].fill,""!==t.fill&&(f.inverted?b(t,e,i,a,n):b(t,e,i,n,a)),n=a,o>=f.max)break}t.fill=r,t.gradient.visible=o}else b(t,e,i,x,x+(f.endRot-f.initRot))}}function y(s){if(s.visible)if("circle"===f.shape)s.ellipse(f.cx,f.cy,t,e);else if("segment"===f.shape){g.beginPath();const a=f.units.visible?275:240,n=x+.01745*f.rotation+.5*(6.283-.01745*Math.max(a,f.angle)),r=.5*t,o=.5*e;g.arc(f.cx,f.cy,r,n,n+Math.max(.01745*a,i),!1),g.closePath(),s.draw(g,null,f.cx-r,f.cy-o,t,e)}else s.rectangle(f.cx-.5*t,f.cy-.5*e,t,e);return!!s.visible}y(a)&&(t*=1-.01*a.size,e*=1-.01*a.size,this.bounds.custom||(p=e=t)),y(this.bevel)&&(t*=1-.002*a.size,e*=1-.002*a.size,this.bounds.custom||(p=e=t)),y(n);var w=r.outside,k=this.min,M=this.max-this.min,C=this.step;0===C&&(C=M/20),C=Math.max(M/1e3,C)||1,this.tick1=w?.48*p:.41*p,this.tick0=this.tick1-p*(.01*Number(r.length)),this.tickText=w?.39*p:this.rotateText?.46*p:.48*p,this.tickMin=w?.45*p:.38*p,a.font.prepare();var T=a.textHeight("Wj"),S=M/C,V=Math.max(1,J(S/(p*i/6.283/T)));g.fillStyle=a.font.fill,g.save();var A=this.cx,z=this.cy;function _(t,e,i){return t.enabled&&t.valid&&Math.abs(e-Number(t.value))<i?t:null}f.bounds.custom&&(t>e?z+=.75*e*e/t:A+=.75*t*t/e),g.translate(A,z),g.rotate(this.initRot),v(o,this.tick0,this.tick1),v(l,this.tickMin,this.tick1);var R=C*i/M/h.count,P=this.initRot,N=this.rotateText?0:.3*a.textHeight("Wj"),I=0;for(!r.visible&&w&&(this.tickText=.9*this.tickMin);k<=this.max;){if(r.visible){const t=_(this.hover,k,.2*C)||r;g.beginPath(),g.moveTo(0,this.tick0),r.triangle?(g.lineTo(-3,this.tick1),g.lineTo(3,this.tick1),g.closePath(),t.draw(g,null,-3,this.tick0,3,this.tick1)):(g.lineTo(0,this.tick1),t.stroke.prepare(),g.stroke())}if(a.font.visible&&I%V===0&&(360!==this.angle||k+C<=this.max)){const t=this.tickText-a.textHeight()*a.padding;g.translate(0,t);const e=this.rotateText?Math.PI:P;g.rotate(-e),a.font.prepare(),g.fillStyle=a.font.fill;let i,s=f.inverted?this.max-k+this.min:k;i=f.ongetText?f.ongetText(s):J(s)===s?s.toFixed(0):s.toFixed(this.decimals),g.fillText(i,0,N),g.rotate(e),g.translate(0,-t)}if(h.visible){if(k<this.max)for(let t=0;t<h.count;t++)if(g.rotate(R),t<h.count-1){const e=C/h.count,i=k+(t+1)*e,s=_(this.hover,i,.2*e)||h;if(i>this.max)break;"ellipse"===h.shape?h.ellipse(0,.5*(this.tickMin+this.tick1),h.size,h.size):(g.beginPath(),g.moveTo(0,this.tickMin),g.lineTo(0,this.tick1),s.stroke.prepare(),g.stroke())}}else g.rotate(R*h.count);P+=R*h.count,k+=C,I++}g.restore(),c.visible&&(c.text=this.formatValue?this.formatValue(this.value):this.value.toFixed(this.decimals),c.resize(),c.position.x=this.cx-.5*c.bounds.width+Q(c.location).x*t*.01,c.position.y=this.cy+Q(c.location).y*e*.01,c.draw());const B=this.units;B.visible&&(B.resize(),B.position.x=this.cx-.5*B.bounds.width+Q(B.location).x*t*.01,B.position.y=this.cy+Q(B.location).y*e*.01,B.draw()),g.save(),d.value=this.value;for(let s=0;s<this.hands.length;s++)this.hands[s].visible&&this.drawHand(this.hands[s],i,M,t,e,p,u,g,m);if(g.restore(),u.visible){const t=p*u.size*.01;u.ellipse(this.cex,this.cey,t,t);const e=u.top;if(e?.visible){const i=t*e.size*.01;e.ellipse(this.cex,this.cey,i,i)}}}drawHand(t,e,i,s,a,n,r,o,h){t.value=this.limitValue(Number(t.value));var l=this.inverted?this.max-t.value+this.min:t.value,c=.01745*this.rotation+.5*(9.4248-e)+e*(l-this.min)/i;this.cex=this.cx+s*Q(r.location).x*.005,this.cey=this.cy+a*Q(r.location).y*.005,o.save(),o.translate(this.cex,this.cey),o.rotate(c);var d=t.size,u=n*t.back*.5*.01,m=Math.min(d,6),f=n*Number(t.length)*.5*.01;o.beginPath(),d>1?(o.moveTo(-u+m,-d),"needle"===t.shape?(o.quadraticCurveTo(-u,-d,-u,-d+m),o.lineTo(-u,d-m),o.quadraticCurveTo(-u,d,-u+m,d),o.lineTo(f,0)):(o.lineTo(-u+m,d),o.lineTo(f,d),o.lineTo(f,-d)),o.closePath()):(o.moveTo(-u,0),o.lineTo(f,0)),d>1?t.draw(o,null,-u,-d,u+f,2*d):(t.stroke.prepare(),o.strokeStyle=t.fill,o.stroke()),this.ondrawHand&&this.ondrawHand(this,t),t.pointer&&h.visible&&h.ellipse(.5*(this.tickMin+this.tick1),0,h.size,h.size),o.restore()}limitValue(t){return Math.min(this.max,Math.max(this.min,t))}setValue(t){t=this.limitValue(t);const e=this.value!==t;if(e){const e=this.animate;e?.active&&e.duration>0?(this._oldValue=this.value,this._newValue=t,e.animate(this.chart)):(this.value=t,this.onchange&&this.onchange(this),this._emit("change",this))}return e}onclick(){}clicked(){return this.dragging=!1,-1}inValue(t,e){if(!e.contains(t))return!1;for(var i,s,a,n=t.x-this.cex,r=t.y-this.cey,o=Math.sqrt(n*n+r*r),h=Math.atan2(r,n)-.5*Math.PI;h<0;)h+=6.283;if(this.initRot>this.endRot?(i=this.endRot,a=h>=(s=this.initRot)||h<=i):(s=this.endRot,a=h>=(i=this.initRot)&&h<=s),a){let e;e=this.initRot>this.endRot?h>s?(h-s)/(6.283-s+i):(6.283-s+h)/(6.283-s+i):(h-i)/(s-i);let a=this.min+(this.max-this.min)*e;return this.inverted&&(a=this.min+(this.max-this.min)*(1-e)),t.value=a,t.inTicks=o>=Math.min(this.tick0,this.tickText)&&o<=this.tick1,!0}return t.inTicks=!1,!1}mousemove(t){function e(t,e){t.hover.value!==e&&(t.hover.value=e,t.hover.valid=null!==e,t.chart._scheduleDraw())}const i=this.calcBounds(),s=this.inValue(t,i);this.dragging||/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(U()?.userAgent||"")&&this.drag.enabled?(s&&this.setValue(t.value)&&this.chart.draw(),this.chart.newCursor="pointer"):t.inTicks&&this.drag.enabled?(e(this,t.value),this.chart.newCursor="pointer"):e(this,null)}mousedown(t){const e={x:0,y:0,value:0,inTicks:!1};if(this.drag.enabled){const i=this.calcBounds();return this.chart.calcMouse(t,e),this.inValue(e,i)?(this.dragging=!0,this.hover.value=null,this.hover.valid=!1,this.setValue(e.value)&&this.chart.draw()):this.dragging=!1,this.dragging}return!1}setChart(t,e){super.setChart(t,e);const i=t;i.back.setChart(e),i.center.setChart(e),i.center.top?.setChart(e),i.ticks.setChart(e),i.ticksBack.setChart(e),i.minor.setChart(e),i.minorBack.setChart(e),i.hand.setChart(e),i.units.setChart(e),i.pointer.setChart(e),i.bevel.setChart(e)}}function St(t,e){return e.x>=t.x&&e.x<=t.x+t.width&&e.y>=t.y&&e.y<=t.y+t.height}class Vt extends I{thumb;back;grip;gripSize;bounds;transparent;margin;min;max;position;useRange;thumbSize;horizontal;cursor;delta;_thumbRectTmp;_mousePointTmp;touchDragging;resizeBegin=!1;resizeEnd=!1;dragging=!1;onDrawThumb;invertThumb;lock=!1;onChanging;touchTarget;cleanupChart;chartCleanup=()=>this.destroy();onTouchStart=t=>{this.touchDragging=!0,t.preventDefault()};onTouchEnd=t=>{this.touchDragging=!1,t.preventDefault()};constructor(t,e){super(t),this.touchDragging=!1,this.thumb=new F(t);const i=this.thumb;i.round={x:4,y:4},i.stroke.size=.5,i.gradient.visible=!1,i.gradient.direction="leftright",i.shadow.visible=!1,this.back=new F(t);const s=this.back;s.fill="white",s.gradient.visible=!1,s.stroke.fill="darkgrey",s.round={x:4,y:4},this.grip=new F(t);const a=this.grip;a.round={x:4,y:4},a.stroke.fill="rgb(20,20,20,1.0)",this.gripSize=3,this.bounds=new $(10,10,200,20),this.transparent=!1,this.margin=16,this.min=0,this.max=100,this.position=void 0===e?50:e,this.useRange=!1,this.thumbSize=8,this.horizontal=!0,this.cursor="pointer",this.delta=0,this._thumbRectTmp=new $,this._mousePointTmp={x:0,y:0},this.cleanupChart=t,this.touchTarget=t.interactionCanvas||t.canvas,this.touchTarget.addEventListener("touchstart",this.onTouchStart),this.touchTarget.addEventListener("touchend",this.onTouchEnd),this.touchTarget.addEventListener("touchcancel",this.onTouchEnd),t._eventCleanups.push(this.chartCleanup)}destroy(){if(this.destroyed)return;this.touchTarget.removeEventListener("touchstart",this.onTouchStart),this.touchTarget.removeEventListener("touchend",this.onTouchEnd),this.touchTarget.removeEventListener("touchcancel",this.onTouchEnd),this.touchDragging=!1;const t=this.cleanupChart._eventCleanups.indexOf(this.chartCleanup);-1!==t&&this.cleanupChart._eventCleanups.splice(t,1),super.destroy()}thumbRect(t){const e=this.bounds,i=this.max-this.min,s=i>0?(this.position-this.min)/i:0;this.horizontal?(t.width=this.thumbSize,t.x=e.x+s*e.width-.5*t.width,t.y=e.y,t.height=e.height):(t.height=this.thumbSize,t.y=e.y+s*e.height-.5*t.height,t.x=e.x,t.width=e.width)}gripRect(t){if(this.horizontal){const e=.2*t.height;return new $(t.x-this.gripSize,t.y+.5*t.height-e,2*this.gripSize,2*e)}const e=.2*t.width;return new $(t.x+.5*t.width-e,t.y-this.gripSize,2*e,2*this.gripSize)}draw(){const t=this.bounds,e=this._thumbRectTmp,i=this.horizontal?t.height:t.width,s=i*this.margin*.01;if(this.transparent||(this.horizontal?this.back.rectangle(t.x,t.y+s,t.width,i-2*s):this.back.rectangle(t.x+s,t.y,i-2*s,t.height)),this.onDrawThumb&&this.onDrawThumb(this),this.thumbRect(e),this.invertThumb){const i=this.thumb;this.horizontal?(i.rectangle(t.x,t.y+s,e.x,t.height-2*s),i.rectangle(t.x+e.x+e.width,t.y+s,t.width,t.height-2*s)):(i.rectangle(t.x+s,t.y,t.width-2*s,e.y),i.rectangle(t.x+s,t.y+e.y+e.height,t.width-2*s,t.height))}else this.thumb.rectangle(e);if(this.useRange&&this.horizontal){const t=this.gripRect(e);this.grip.rectangle(t),t.x+=e.width,this.grip.rectangle(t)}}clickAt(t){const e=this.bounds,i=this.horizontal?e.x:e.y,s=this.horizontal?e.width:e.height,a=this.max-this.min;let n=this.min+Math.max(0,(t+this.delta-i)*a/s);if(n>this.max&&(n=this.max),this.onChanging){const t=this.onChanging(this,n);void 0!==t&&(n=t)}n<this.min?n=this.min:n>this.max&&(n=this.max),this.chart.newCursor=this.cursor,this.position!==n&&(this.position=n,this.chart.draw())}resized(){this.onChanging&&this.onChanging(this,this.position),this.chart.draw(),this.chart.newCursor="col-resize"}mousemove(t){const e=this.bounds,i=this._thumbRectTmp,s=this.horizontal?e.width:e.height,a=this.horizontal?t.x:t.y,n=this.max-this.min;if(this.thumbRect(i),this.resizeBegin&&a<i.x+i.width){const t=this.thumbSize,e=i.x-a,r=e*n/s*.5;this.thumbSize+=e,this.position-=r,this.position<this.min&&(this.position=this.min,this.thumbSize=t),this.resized()}else if(this.resizeEnd&&a>i.x){const t=i.x+i.width-a,e=t*n/s*.5;this.thumbSize-=t,this.position-=e,this.resized()}else if(this.dragging||this.touchDragging)this.clickAt(a);else{let e=!1;if(this.useRange){const s=this.gripRect(i);e=St(s,t),e||(s.x+=i.width,e=St(s,t))}e?this.chart.newCursor="col-resize":St(i,t)&&(this.chart.newCursor=this.cursor)}}mousedown(t){const e=this.bounds,i=this._thumbRectTmp,s=this._mousePointTmp;this.thumbRect(i),this.chart.calcMouse(t,s);const a=this.gripRect(i);if(this.resizeBegin=this.useRange&&St(a,s),a.x+=i.width,this.resizeEnd=this.useRange&&!this.resizeBegin&&St(a,s),this.dragging=!this.resizeBegin&&!this.resizeEnd&&St(i,s),!this.resizeBegin&&!this.resizeEnd)if(this.dragging)this.delta=this.horizontal?i.x+.5*i.width-s.x:i.y+.5*i.height-s.y;else if(St(e,s)){const t=this.horizontal?.5*i.width:.5*i.height;this.delta=-t,this.clickAt(t+(this.horizontal?s.x:s.y))}return this.dragging||this.resizeBegin||this.resizeEnd}clicked(){const t=this.dragging||this.resizeBegin||this.resizeEnd;return this.resizeBegin=this.resizeEnd=this.dragging=!1,this.delta=0,t}mouseout(){this.resizeBegin=this.resizeEnd=this.dragging=!1}}class At{datasets;onclickseries;constructor(){this.datasets=[]}addDataset(t,e,i,s){"object"==typeof e&&null!==e&&"implementation"in e&&(e=this.xmlToJson(e));const a=new _t(t,i,s);return a.object=e,a.dataset=a,a.dimensions=[],a.engine=this,this.datasets.push(a),a}removeDataset(t){const e=this.datasets.findIndex(e=>e===t||e.object===t);return-1!==e&&(this.datasets.splice(e,1),!0)}clear(){return this.datasets.length=0,this}addJson(t,e,i,s){return this.addDataset(t,JSON.parse(e),i,s)}applyStyle(t,e){if(0===e)t.panel.transparent=!1,t.panel.format.round.x=0,t.panel.format.round.y=0,t.panel.format.stroke.size=2,t.panel.format.stroke.fill="darkgray"}groupRemaining(t,e,i){let s,a,n,r=t.values.length;if(r>e){for(n=0,a=r-e,s=e-1;s<r;s++)n+=t.values[s];return t.values[e-1]=n,t.labels[e-1]=i,t.code&&(t.code[e-1]=null),t.values.splice(e,a),t.labels.splice(e,a),t.code?.splice(e,a),a}return-1}createSlider(t,e,i,s,a,n){const r=new Vt(t);return r.min=0,r.max=e.length-1,r.step=1,r.position=r.min,r.useRange=!1,r.thumbSize=12,r.horizontal=!0,r.bounds.x=i,r.bounds.y=s,r.bounds.width=a,r.bounds.height=n,t.tools.add(r),r}xmlToJson(t){let e={},i="";if(1===t.nodeType){if(t.attributes&&t.attributes.length>0)for(let i=0;i<t.attributes.length;i++){const s=t.attributes.item(i);s&&(e[s.nodeName]=s.value)}}else 3===t.nodeType&&(e=t.nodeValue);if(t.hasChildNodes())for(let s=0;s<t.childNodes.length;s++){const a=t.childNodes.item(s),n=a.nodeName,r=e;void 0===r[n]?"#text"===n?a.hasChildNodes()?r[n]=this.xmlToJson(a):(i=(a.nodeValue??"").trim(),""!==i&&(e=i)):"xml"===n?e=this.xmlToJson(a):r[n]=this.xmlToJson(a):(Array.isArray(r[n])||(r[n]=[r[n]]),r[n].push(this.xmlToJson(a)))}return e}loadXmlDocument(t){const e=it(),i=st(),s=e?new e:i?new i("Microsoft.XMLHTTP"):null;if(!s)throw new Error("XMLHttpRequest is not supported by this browser.");return s.open("GET",t,!1),s.send(),s.responseXML}loadXmlString(t){const e=at(),i=st();if(e)return(new e).parseFromString(t,"text/xml");if(!i)throw new Error("XML parsing is not supported by this browser.");const s=new i("Microsoft.XMLDOM");return s.async=!1,s.loadXML(t),s}_accumulate(t,e,i){switch(i.count++,t){case"sum":case"average":i.value+=e;break;case"high":(1===i.count||e>i.value)&&(i.value=e);break;case"low":(1===i.count||e<i.value)&&(i.value=e)}}queryDim(t,e,i,s=null){let a,n,r=t.dimension.getLinksTo(e);if(r){const s=r[0],o=new Map;for(const t of i)o.has(t.id)||o.set(t.id,t);t.initDims();const h="function"==typeof t.name?t.name:null;if(t.dimension.traverse((a,n)=>{const l=a??{};let c=null;if((!t.name||t.consider(l))&&(e?null===s.field&&e===s.dimension?c=e.hasID?e.parent?e.data[e.id]:l[e.id]:e===t.dimension?n||i.length:e.field?l[e.field]:n:(c=e.searchAcross(r,l),c&&e.hasID&&(c=c[e.id])):(c=t.dimension.title,c||(c=t.dimension.dataset?.object,t.dimension.field&&(c=c[t.dimension.field]))),null!==c&&(!e||e.nulls||void 0!==c&&""!==c))){let s=h?h(l):t.name?l[t.name]:l;if(void 0===s?s=null:("number"!=typeof s&&(s=parseFloat(s)),s!=s&&(s=null)),null!==s){e?.datetime&&(c=e.datePart(c));const a=Number.isNaN(c)?void 0:o.get(c);if(a)0===a.count?(a.count=1,a.value=s):this._accumulate(t.measure,s,a);else{const t={id:c,value:s,count:1};i.push(t),o.set(c,t)}}}return!0}),"count"===t.measure)for(a=0;a<i.length;a++)n=i[a],n.value=n.count;else if("average"===t.measure)for(a=0;a<i.length;a++)n=i[a],n.count>0&&(n.value=n.value/n.count);return!0}return!1}_sumOfCount(t){let e,i=0;for(e=0;e<t.length;e++)i+=t[e].count;return i}_initTotal(t,e){if(e)for(let i=0,s=e.length;i<s;i++)t.push({id:e[i],value:0,count:0})}query(t,e){let i,s,a,n,r,o,h=[],l=[],c=[],d=0,u=null;if(s=Array.isArray(e)?e:[e],n=Array.isArray(t)?t:[t],d=n.length,d>0){u=n[0];const t=u?u.selected:null;c=[],u?.anySelected()&&null!=t?c=u.selectedInclude?Array.isArray(t)?t:[t]:u.getIds().filter(t=>u?.inSelected(t)):u&&(u.id||u.field)&&(c=u.getIds())}for(r=0;r<s.length;r++)if(i=s[r],i)for(o=d-1;o>=0;o--){if(a=n[o],o>0){if(!a)continue;const t=a.selected,e=a.selectedInclude,s=a.select;let r;if(s)r=a.getIds().filter(t=>a.isSelected(t));else if(a.anySelected()){const e=Array.isArray(t)?t:[t];if(a.selectedInclude)r=e;else{r=a.getIds();for(const t of e){const e=r.indexOf(t);-1!==e&&r.splice(e,1)}}}else r=a.getIds();try{a.selectedInclude=!0,a.select=null;for(let t=0;t<r.length;t++)a.selected=r[t],(a.nulls||""!==a.selected)&&(h=[],this._initTotal(h,c),this.queryDim(i,n[o-1],h,a)&&(a.nulls||this._sumOfCount(h)>0)&&l.push({metric:i,dimension:a,values:h,master:a.selected,masterdim:n[o-1]}))}finally{a.selected=t,a.selectedInclude=e,a.select=s}break}h=[],this._initTotal(h,c),this.queryDim(i,a,h)&&l.push({metric:i,dimension:a,values:h,master:null})}if(u&&!u.nulls){const t=new Set;for(const e of l)for(const i of e.values)i.count>0&&t.add(i.id);for(const e of l)e.values=e.values.filter(e=>e.count>0||!Number.isNaN(e.id)&&t.has(e.id))}return l}createChart(e,i){const s=new t(e),a=this;s.engine=this,s.panel.margins.left=0;const n=new K(s);n.render="dom",s.tools.add(n),n.ongettext=(t,e,i,s)=>{let a="",n=i.data.labels;return i.chart.series.count()>1&&(a=`<br/>${i.title}`),i.data.x&&(a+=`<br/>${i.data.x[s]}`),`${e} ${n.length>0?n[s]:""}${a}`};const o=new Y;function h(t,e){let i,s=0;for(i=0;i<t.length;i++)s+=t[i].data.values[e];return s}if(o.onstart=function(){this.s.fill="yellow"},o.onstop=function(){this.s.fill=this.old},o.duration=100,o.animateHover=function(t){this.s=t.series.items[0].hover.stroke,this.old=this.s.fill,this.animate(t)},s.title.text=i??"",s.guessStyle=function(t){return this.defaultStyle?this.defaultStyle:t.length>30?r:x},s.newSeries=function(t,e){let i=e.values,a=e.dimension,n=e.master;e.masterdim||(n=n&&a?.id?n[a.id]:e.master||e.metric.title);const r=s.guessStyle(i),o=s.addSeries(new r),h=o.data;o.title=""===n?"(none)":`${n??"(none)"}`,o.marks.style="value",o.cursor="pointer",h.values=[],h.labels=[],h.code=[];let l,c,d,u,m=s.series.items.length,f=[];if(a?.titles&&Rt(a.titles,a,f),m>1){let t,e=s.series.items[m-2].data;for(u=0;u<e.values.length;u++)h.values.push(0),h.labels.push(e.labels[u]),h.code.push(e.code?.[u]);for(u=0;u<i.length;u++)l=i[u],t=e.code?.indexOf(l.id)??-1,-1===t?(h.values.push(l.value),a?.titles?(c=a.searchAcross(f,l.id),d=c?c[a.titles.id]:""):d=null!==l.id&&"object"==typeof l.id?l.id[a.id]:`${l.id}`,h.labels.push(d),h.code.push(l.id)):h.values[t]=l.value}else for(u=0;u<i.length;u++)l=i[u],h.values.push(l.value),a?.titles?(c=a.searchAcross(f,l.id),d=c?c[a.titles.id]:""):d=`${l.id}`,h.labels.push(d),h.code.push(l.id);return r===Tt&&o.setValue(o.data.values[0]),this.onnewseries&&this.onnewseries(this,o),o},s.defaultStyle=null,s.animateChanges=!1,s.setSeriesStyle=function(t){if(!t||""===t||"auto"===t)return void(this.defaultStyle=null);let e,i,s,a=this.series;if("string"==typeof t){const e=function(t,e=globalThis){return t.split(".").reduce((t,e)=>t?.[e],e)}(t);if(!e)throw new Error(`Unknown style: ${t}`);s=e}else s=t;this.defaultStyle=s;for(let t=0;t<a.items.length;t++)i=a.items[t].data,e=new s,e.setChart(e,this),e.format.fill=a.items[t].format.fill,e.data=i,a.items[t]=e;this.draw()},s.fill=function(t,e,i=!1){this.fillQuery(this.engine.query(t,e),t,e,i)},s.fillQuery=function(t,e,i,a=!1){let n,r,o,h=s.series.items;if(s.series.items=[],t){for(n=0;n<t.length;n++){r=t[n],o=r.metric;this.newSeries(o,r).onclick=s.engine._onclickseries,""!==s.title.text&&void 0!==s.title.text||(s.title.text=o.dimension.title),Array.isArray(i)||(s.legend.title.text=`${o.title}\n${o.measure}`,s.legend.title.format.font.textAlign="right");const a=Array.isArray(e)?e[0]:e;a&&a!==o.dataset&&(s.axes.bottom.title.text=a.datetime?`${a.title} ${a.dateKeys[a.datetime.selected]}`:a.title)}t.length>0&&(s.axes.left.title.text=t[0].metric.title)}const l=this.sort;if(""!==l.sortBy&&this.sortData(l.sortBy,"ascending"===l.order),""!==l.series&&this.sortSeries("ascending"===l.series),s.animateChanges&&h.length===s.series.items.length){const t=s.series.items[0],e=t.data.values;if(h[0].constructor===t.constructor&&h[0].data.values.length===e.length){let t,i=e.slice(0);const a=new Y(s,s=>{for(let a=0;a<e.length;a++)t=h[0].data.values[a],e[a]=t+(i[a]-t)*s}),n=s.axes.left.automatic;s.axes.left.automatic=!1,a.duration=150,a.animate(),s.axes.left.automatic=n}}a||s.draw()},this.applyStyle(s,0),s.animateClick=()=>{o.animateHover(s)},this.onclickseries=null,s.setSeriesPalette=(t,e)=>{let i,s=t.palette,a=t.count(),n=t.data.code;s.colors=new Array(a);for(let t=0;t<a;t++)i=n?.[t],e.isSelected(i)||(s.colors[t]="silver")},s.sortData=function(t,e){let i,s=this.series.count(),a=this.series.items[0];if(s>0){if(s>1&&"values"===t){let t,s=a.data.values.length,n=this.series.items;for(i=new Array(s),t=0;t<s;t++)i[t]=t;i.sort((t,i)=>{const s=h(n,t),a=h(n,i);return e?s-a:a-s})}else{const s=this.series.items[0].doSort(t,e);if(!s)return;i=s}this.series.each(t=>{let e,s={values:[],labels:[],code:[]},a=t.data;for(let t=0;t<a.values.length;t++)e=i[t],s.values.push(a.values[e]),s.labels.push(a.labels[e]),s.code?.push(a.code?.[e]);t.data={...s,source:void 0}})}},s.sortSeries=function(t){const e=this.series.items,i=e.length;if(i<2)return;let s,a,n,r=new Array(i),o=t?-1:1,h=t?1:-1;for(n=0;n<i;n++)r[n]=n;r.sort((t,i)=>(s=e[t].title.toLowerCase(),a=e[i].title.toLowerCase(),s<a?o:s===a?0:h));const l=new Array(i);for(n=0;n<i;n++)l[n]=e[r[n]];this.series.items=l},s.groupOther=function(t){this.series.each(e=>{a.groupRemaining(e.data,t,"Other")})},s.totalPoints=function(){let t=0;return this.series.each(e=>{t+=e.data.values.length}),t},s.sort={sortBy:"",order:"descending",series:"ascending"},s.setPositionPercent=function(t,e,i,s){const a=nt(),n=O();const r=a?.innerHeight?a.innerHeight:n?.documentElement?.clientHeight?n.documentElement.clientHeight:n?.body?n.body.clientHeight:0,o=a?.innerHeight?a.innerWidth:n?.documentElement?.clientHeight?n.documentElement.clientWidth:n?.body?n.body.clientWidth:0,h=this.canvas,l=t*o*.01,c=e*r*.01;i*=.01*o,s*=.01*r,i|=0,s|=0,h.style.position="absolute",h.style.left=`${l}px`,h.style.top=`${c}px`,h.style.width=`${i}px`,h.style.height=`${s}px`,h.setAttribute("width",String(i)),h.setAttribute("height",String(s)),this.bounds.width=i,this.bounds.height=s,this.draw()},tt){const t=new tt(s);s.animation=t,t.kind="zoomin",t.duration=300;const e=new et(s);e.fade.series=!0,t.items.push(e)}return s}_onclickseries(t,e){const i=t.chart;return i.onclickseries&&(i.animateClick(),i.onclickseries(t,e)),!1}}class zt{constructor(t,e,i){this.name=i,this.title=e||("string"==typeof i?i:""),this.dimension=t;const s=t.dataset;this.dataset=s,this.measure="sum"}initDims(){const t=this.dimension.dataset?.engine;if(!t)return;let e,i,s,a,n,r=t.datasets.length,o=this.dimension;for(this.allDims=[],e=0;e<r;e++)for(s=t.datasets[e].dimensions,a=s.length,i=0;i<a;i++)n=s[i],o!==n&&!o.hasParent(n)&&n.anySelected()&&(n.dataset===o.dataset?n._link=null:n._link=o.getLinksTo(n),this.allDims.push(n))}consider(t){let e;for(const i of this.allDims){if(i._link){e=t;for(const t of i._link)e=i.search(t,e);e&&i.id&&(e=e[i.id])}else e=t[i.id||i.field];if(null==e)return!1;if(i.datetime&&(e=i.datePart(e)),!i.inSelected(e))return!1}return!0}}class _t{constructor(t,e,i){this.dataset=null,this.parent=null,this.engine=null,this.subDimensions=[],this.field=e,this.id=i,this.title=t||e||"",this.nulls=!0,this.hasID=null!=i&&""!==i,this.metrics=[],this.links=[],this.selected=null,this.select=null,this.selectedInclude=!0,this.dateKeys={c:"Century",x:"Decade",y:"Year",m:"Month",w:"Weekday",d:"Day"}}addDimension(t,e,i){return this.addSubDimension(this,t,e,i)}addSubDimension(t,e,i,s){const a=new _t(e,i,s);return a.engine=this.engine,a.parent=t,t&&(a.dataset=t.dataset,a.dataset&&(a.index=a.dataset.dimensions.push(a)),t.subDimensions.push(a)),a}addMetric(t,e,i){const s=new zt(this,t,e);return i&&(s.measure=i),this.metrics.push(s),s}addLink(t,e,i){const s={field:t,dimension:e,datasetField:i,parent:this};return this.links.push(s),s}hasParent(t){let e=this.parent;for(;e;){if(e===t)return!0;e=e.parent}return!1}inSelected(t){return this.select?this.select(t):Array.isArray(this.selected)?this.selectedInclude?-1!==this.selected.indexOf(t):-1===this.selected.indexOf(t):this.selectedInclude?this.selected===t:this.selected!==t}get(t){let e,i=this.id,s=this.datetime;return this.traverse(a=>(s&&(a=this.datePart(a)),t!==(i?a[i]:a)||(e=a,!1))),e}datePart(t){const e=this.datetime;if(!e)return t;const i=e.selected;if("string"==typeof t){const s=t.match(/(\d+)/g)??[];if("y"===i)return s[e.yearField||2];if("m"===i)return s[e.monthField||0];if("x"===i)return 10*J(parseInt(s[2],10)/10);if("d"===i)return s[e.dayField||1];if("w"===i)return new Date(t).getDay()}else if(t instanceof Date){if("y"===i)return t.getFullYear();if("m"===i)return t.getMonth()+1;if("x"===i)return 10*J(t.getFullYear()/10);if("d"===i)return t.getDate();if("w"===i)return t.getDay()}return t}getValues(){const t=new Set,e=[],i=this.field,s=this.id;return this.traverse(a=>(s&&(a=i?a[i]:a[s]),this.datetime&&(a=this.datePart(a)),!Number.isNaN(a)&&t.has(a)||(t.add(a),e.push(a)),!0)),e}getIds(){const t=new Set;let e,i=[],s=this.id,a=this.field;return(this.parent?this.parent:this).traverse(n=>(e=s?n[s]:a?n[a]:n,this.datetime&&(e=this.datePart(e)),(this.nulls||null!=e&&""!==e)&&(!Number.isNaN(e)&&t.has(e)||(t.add(e),i.push(e))),!0)),i}isSelected(t){return!this.anySelected()||this.inSelected(t)}anySelected(){if(this.select)return!0;{const t=this.selected;return null!=t&&(!Array.isArray(t)||t.length>0)}}toggleSelected(t,e){Array.isArray(this.selected)||(this.selected=null==this.selected?[]:[this.selected]);const i=t.data.code?.[e],s=this.selected.indexOf(i);-1===s?this.selected.push(i):(this.selected.splice(s,1),0===this.selected.length&&(this.selected=null)),t.chart.setSeriesPalette(t,this)}traverse(t){let e=[],i=this;do{e.push(i),i=i.parent}while(i);const s=this.dataset?.object;null!=s&&function i(s,a){let n,r,o=e[a],h=o.anySelected(),l=o.field?s[o.field]:s,c=o.parent?s:l;if(!h||o.isSelected(o.id?c[o.id]:c))if(o.data=c,Array.isArray(l)){if(r=l.length,a>0){for(n=0;n<r;n++)if(!i(l[n],a-1))return!1}else for(n=0;n<r;n++)if(!t(l[n],n))return!1}else if(a>0){if(!function(i,s=0){let a,n,r;if(i&&"object"==typeof i){const s=i,o=Object.keys(s),h=o.length,l=e[0],c=l.anySelected();for(a=0;a<h;a++)if(r=o[a],(!c||l.isSelected(r))&&(n=s[r],l.data=n,!t(n,r)))return!1;return!0}return t(i,s)}(l))return!1}else if(!t(c))return!1;return!0}(s,e.length-1)}searchAcross(t,e){let i=e,s=this;for(let e=0;e<t.length;e++)i=s.search(t[e],i,e>0),e<t.length-1&&(s=t[e+1].parent,t[e+1].searchDimension=s);if(i&&this.engine?.cache){e.cache||(e.cache=[]);const t=e.cache;t[this.index]||(t[this.index]=i)}return i}search(t,e,i=!1){const s=e.cache;if(s?.[this.index])return s[this.index];let a,n,r,o=null,h=t.search,l=i?t.field:t.datasetField,c=i?t.datasetField:t.field,d=Array.isArray(c);if(d){const t=[],i=c;for(r=0;r<i.length;r++)t.push(e[i[r]]);a=t}else a=e[c];n=t.searchDimension||t.dimension;do{if(n.traverse(t=>{if(h){if(h(t,e))return o=t,!1}else if(d){let e=!0;const i=a;for(r=0;r<i.length;r++)if(t[l[r]]!==i[r]){e=!1;break}if(e)return o=t,!1}else if(t[l]==a)return o=t,!1;return!0}),!o)break;if(n.dataset!==this.dataset)return o;if(n!==this){if(!n.parent)break;n=n.parent,o=n.data}}while(n!==this);return o?this.id?o:o[this.field]:null}getLinksTo(t){if(t&&t!==this.dataset&&t.dataset!==this.dataset){let e=[],i=Rt(t,this,e);return i||(i=Rt(this,t,e)),i?e:null}return[{field:null,dimension:t,datasetField:null,parent:this}]}}function Rt(t,e,i){let s,a,n,r,o,h,l=e;do{if(n=l.links,n)for(r=n.length,a=0;a<r;a++)if(s=n[a].dimension,s)do{o=t;do{if(s===o)return n[a].searchDimension=n[a].dimension??void 0,i.push(n[a]),n[a];o=o.parent}while(o);if(h=Rt(t,s,i),h)return i.unshift(n[a]),h;if(h=Rt(s,t,i),h)return i.unshift(n[a]),h;s=s.parent}while(s);l=l.parent}while(l);const c=e.subDimensions;for(a=0;a<c.length;a++)if(h=Rt(t,c[a],i),h)return h;return null}const Pt=new WeakMap;function Nt(t,e){if(void 0!==e.cursor){const i=y(t,bt),s=e.cursor;void 0!==s.enabled&&(i.active=s.enabled),void 0!==s.direction&&(i.direction=s.direction),void 0!==s.render&&(i.render=s.render),void 0!==s.followMouse&&(i.followMouse=s.followMouse),void 0!==s.color&&(i.format.stroke.fill=s.color),void 0!==s.width&&(i.format.stroke.size=s.width),void 0!==s.symbol&&(i.symbol=s.symbol),void 0!==s.symbolSize&&(i.symbolSize=s.symbolSize)}if(void 0!==e.drag?.enabled&&(y(t,vt).active=e.drag.enabled),void 0===e.annotations)return;for(const e of Pt.get(t)??[])t.tools.remove(e,!0);const i=[];for(const s of e.annotations){const e=new H(t,s.text,s.x,s.y);if(void 0!==s.visible&&(e.visible=s.visible),void 0!==s.transparent&&(e.transparent=s.transparent),void 0!==s.backgroundColor&&(e.format.fill=s.backgroundColor),void 0!==s.borderColor&&(e.format.stroke.fill=s.borderColor),void 0!==s.borderWidth&&(e.format.stroke.size=s.borderWidth),void 0!==s.fontColor&&(e.format.font.fill=s.fontColor),void 0!==s.fontSize&&e.format.font.setSize(s.fontSize),void 0!==s.fontFamily){const t=e.format.font.style.split(" ");t[t.findIndex(t=>t.endsWith("px"))+1]=s.fontFamily,e.format.font.style=t.join(" ")}t.tools.add(e),i.push(e)}Pt.set(t,i)}function It(t,e){const i=new tt;void 0!==e.duration&&(i.duration=e.duration),void 0!==e.kind&&(i.kind=e.kind),void 0!==e.mode&&(i.mode=e.mode);const s=e.fade;if(s){const t=new et;void 0!==s.duration&&(t.duration=s.duration),void 0!==e.mode&&(t.mode=e.mode),t.fade.series=s.series,t.fade.marks=s.marks,t.fade.legend=s.legend,t.fade.title=s.title,t.fade.axes=s.axes,t.fade.panel=s.panel,i.items.push(t)}i.animate(t)}function Bt(){v("tools",Nt),v("animation",It),v("accessibility",(t,e)=>function(t,e){const i=t.canvas,s=void 0===e.label||!0===e.description;let a;const n=()=>{const s=e.label??t.title.text,n=!0===e.description?wt(t):e.description,r=`${s}\n${n}`;r!==a&&(a=r,i.setAttribute?.("role","img"),s?i.setAttribute?.("aria-label",s):i.removeAttribute?.("aria-label"),"string"==typeof n&&""!==n?(i.setAttribute?.("aria-description",n),i.textContent=n):i.removeAttribute?.("aria-description"))};n();const r=e.keyboard?Mt(t,i):void 0,o=s?t.on("draw",n):void 0,h=()=>{l(),o?.(),r?.()},l=t.once("destroy",h);return h}(t,e)),v("responsive",t=>function(t){const e=rt("ResizeObserver");if(!e)return()=>{};let i=new e(e=>{const i=e[e.length-1]?.contentRect;if(!i||t.destroyed)return;const s=Math.round(i.width),a=Math.round(i.height);s<=0||a<=0||s===Math.round(t.bounds.width)&&a===Math.round(t.bounds.height)||t.resize(s,a)});i.observe(t.canvas);const s=()=>{a(),i?.disconnect(),i=null},a=t.once("destroy",s);return s}(t))}function Dt(t,e="teechart:"){return"object"==typeof t&&null!==t&&"string"==typeof t.type&&t.type.startsWith(e)}function Wt(e={}){const i=e.port??globalThis;let s=null,a="";const n=t=>i.postMessage(t),r=i=>{const r=i.data;if(Dt(r))try{switch(r.type){case"teechart:init":s?.destroy(),s=e.createChart?.(r.canvas,r.options)??new t(r.canvas,r.options),1!==r.pixelRatio&&s.setPixelRatio(r.pixelRatio),r.width>0&&r.height>0?s.resize(r.width,r.height):s.draw(),n({type:"teechart:ready"});break;case"teechart:options":s?.setOptions(r.options);break;case"teechart:resize":s&&(s.pixelRatio!==r.pixelRatio&&s.setPixelRatio(r.pixelRatio),s.resize(r.width,r.height));break;case"teechart:pointer":{if(!s)break;s.dispatchPointerEvent(r.kind,r.event);const t=s.newCursor??"";"move"===r.kind&&t!==a&&(a=t,n({type:"teechart:cursor",cursor:a}));break}case"teechart:blob":{const{id:t}=r;if(!s){n({type:"teechart:blob",id:t,blob:null,error:"The chart is not ready"});break}s.toBlob(r.format,r.quality).then(e=>n({type:"teechart:blob",id:t,blob:e}),e=>n({type:"teechart:blob",id:t,blob:null,error:String(e)}));break}case"teechart:destroy":s?.destroy(),s=null}}catch(t){n({type:"teechart:error",message:t instanceof Error?t.message:String(t)})}};return i.addEventListener("message",r),()=>{i.removeEventListener?.("message",r),s?.destroy(),s=null}}function Et(t,e,i,s={}){const a=t;if("function"!=typeof a.transferControlToOffscreen)throw new Error("This browser cannot transfer a canvas to a worker (OffscreenCanvas is not supported)");const n=()=>s.pixelRatio??globalThis.devicePixelRatio??1,r=()=>({width:t.clientWidth||t.width,height:t.clientHeight||t.height});let o=()=>{},h=()=>{};const l=new Promise((t,e)=>{o=t,h=e});l.catch(()=>{});const c=new Map;let d=0,u=!1;const m=e=>{const i=e.data;if(Dt(i))if("teechart:ready"===i.type)o();else if("teechart:cursor"===i.type)t.style.cursor=i.cursor;else if("teechart:error"===i.type)h(new Error(i.message));else if("teechart:blob"===i.type){const t=c.get(i.id);c.delete(i.id),i.blob?t?.resolve(i.blob):t?.reject(new Error(i.error??"The chart could not be encoded"))}};e.addEventListener("message",m);const f=(t,i)=>{u||e.postMessage(t,i)},g=r(),x=a.transferControlToOffscreen();f({type:"teechart:init",canvas:x,options:i,width:g.width,height:g.height,pixelRatio:n()},[x]);const p=e=>i=>{const a=i,n=t.getBoundingClientRect();"wheel"===e&&s.captureWheel&&i.preventDefault(),f({type:"teechart:pointer",kind:e,event:{x:a.clientX-n.left,y:a.clientY-n.top,button:a.button,deltaY:"wheel"===e?a.deltaY:void 0,pointerId:a.pointerId}})},b=[["pointermove",p("move")],["pointerdown",p("down")],["pointerup",p("up")],["pointercancel",p("cancel")],["pointerleave",p("leave")],["wheel",p("wheel"),{passive:!s.captureWheel}]];for(const[e,i,s]of b)t.addEventListener(e,i,s);let v=null,y=g.width,w=g.height;return"undefined"!=typeof ResizeObserver&&(v=new ResizeObserver(()=>{const t=r();t.width===y&&t.height===w||(y=t.width,w=t.height,f({type:"teechart:resize",width:t.width,height:t.height,pixelRatio:n()}))}),v.observe(t)),{ready:l,setOptions:t=>f({type:"teechart:options",options:t}),resize:(t,e)=>{y=t,w=e,f({type:"teechart:resize",width:t,height:e,pixelRatio:n()})},toBlob:(t,e)=>new Promise((i,s)=>{if(u)return void s(new Error("The chart was destroyed"));const a=++d;c.set(a,{resolve:i,reject:s}),f({type:"teechart:blob",id:a,format:t,quality:e})}),destroy:()=>{if(!u){f({type:"teechart:destroy"}),u=!0,v?.disconnect();for(const[e,i,s]of b)t.removeEventListener(e,i,s);e.removeEventListener?.("message",m);for(const t of c.values())t.reject(new Error("The chart was destroyed"));c.clear()}}}}class Ft extends t{target;scroller;onChanging;constructor(t,e){super(t),this.target=e;const i=()=>e.domTip.stop(e);this.canvas.addEventListener("pointerenter",i),this.canvas.addEventListener("mouseenter",i),this._eventCleanups.push(()=>{this.canvas.removeEventListener("pointerenter",i),this.canvas.removeEventListener("mouseenter",i)}),this.aspect.clip=!1,this.panel.transparent=!0,this.title.visible=!1,this.scroller=new Vt(this);const s=this.scroller;s.useRange=!0,s.thumbSize=100;const a=s.thumb;a.shadow.height=0,a.transparency=.6,a.stroke.fill="black",a.shadow.visible=!1,s.horizontal=!0;const n=s.bounds;n.x=0,n.y=0,n.width=this.bounds.width,n.height=this.bounds.height,s.margin=0,s.lock=!1,this.tools.add(s);const r=this;e.ondraw=()=>{s.lock||r.draw()},e.onscroll=function(){const t=this.axes.bottom,e=this.series,i=e.minXValue(),s=e.maxXValue(),a=t.maximum-t.minimum;t.minimum<i&&(t.minimum=i,t.maximum=t.minimum+a),t.maximum>s&&(t.maximum=s,t.minimum=t.maximum-a)},s.onChanging=function(t,i){const s=t.bounds.width||1,a=t.max-t.min;let n=t.thumbSize*a/s*.5;const o=e.series,h=o.minXValue(),l=o.maxXValue();return Number.isFinite(n)||(n=0),i-n<h?i=h+n:i+n>l&&(i=l-n),e.axes.bottom.setMinMax(i-n,i+n),this.lock=!0,e.draw(),this.lock=!1,r.onChanging&&r.onChanging(r,i-n,i+n),i},s.onDrawThumb=t=>{const i=e.chartRect,a=e.ctx,n=e.graphics,o=new $(s.bounds.x,s.bounds.y,s.bounds.width,s.bounds.height);function h(t,e){const i={mi:t.minimum,ma:t.maximum,sp:t.startPos,ep:t.endPos};return l(t,e),i}function l(t,e){t.minimum=e.mi,t.maximum=e.ma,t.startPos=e.sp,t.endPos=e.ep,t.scale=(e.ep-e.sp)/(e.ma-e.mi)}e.chartRect=o,e.ctx=s.chart.ctx,e.graphics=s.chart.graphics;const c=s.bounds,d=e,u=d.series;t.min=u.minXValue(),t.max=u.maxXValue();const m=h(d.axes.bottom,{sp:c.x,ep:c.x+c.width,mi:t.min,ma:t.max}),f=h(d.axes.left,{sp:c.y,ep:c.y+c.height,mi:u.minYValue(),ma:u.maxYValue()}),g=.5*(m.mi+m.ma),x=m.ma-m.mi,p=t.max-t.min;t.thumbSize=0!==p?x*t.bounds.width/p:t.bounds.width;const b=.5*x;r.onChanging&&r.onChanging(r,g-b,g+b),t.position=g,d.series.each(t=>{if(t.visible&&t.useAxes){const e=ot(t);if(void 0!==e){const i=e.visible;e.visible=!1,t.draw?.(),e.visible=i}else t.draw?.()}}),l(d.axes.bottom,m),l(d.axes.left,f),d.chartRect=i,d.ctx=a,d.graphics=n}}useRange(t){this.scroller.useRange=t,this.draw()}invertThumb(t){this.scroller.invertThumb=t,this.draw()}setBounds(t,e,i,s){this.bounds.x=t,this.bounds.y=e,this.bounds.width=i,this.bounds.height=s;const a=this.scroller.bounds;a.x=t,a.y=e,a.width=i,a.height=s}}function $t(e){const i=new t(e);i.panel.transparent=!0,i.title.visible=!1;const s=new Vt(i),a=i.renderer instanceof ht?i.renderer.getSize():{width:i.canvas.width,height:i.canvas.height};return s.bounds.x=s.thumbSize+1,s.bounds.width=a.width-2*s.thumbSize-2,s.bounds.y=.5*(a.height-s.bounds.height),i.tools.add(s),s}class Ot extends Y{series;current=-1;marks;oldGetText=null;constructor(t){super(t),t instanceof X?(this.series=t,this.chart=t.chart):this.series=null,this.marks=this.series?.marks}marksText(t,e,i){return e<=this.current?i:""}start(){this.marks&&(this.oldGetText=this.marks.ongettext,this.marks.ongettext=this.marksText.bind(this))}stop(){this.marks&&(this.marks.ongettext=this.oldGetText),this.current=-1}doStep(t){this.series&&(this.current=J(this.series.data.values.length*t))}}class Ht extends w{constructor(t=[],e=[]){if(super([],[]),this.data={values:null!=t?t:[],labels:null!=e?e:[],source:null},this.donutArray=[],this.maxWidth=230,this.maxDrawWidth=this.maxWidth,null!=t)for(let s=0;s<t.length;s++){const a=40,n=a+(100-a)*s/t.length,r=a+(100-a)*(s+1)/t.length,o=Math.abs(this.maxDrawWidth*t[t.length-1-s]/this.maxValue());this.donutArray.push(i(t[t.length-1-s],e[t.length-1-s],n,r,o))}function i(t,e,i,s,a){const n=new w([t],[e]);return n.concentric=!0,n.marks.visible=!1,n.format.shadow.visible=!1,n.format.gradient.visible=!1,n.donut=i,n.maxRadius=s,n.angleWidth=a,n.rotation=270,n.visible=!1,n}function s(t,e,i){const s=t.format,a=e.format;s.fill=e.chart.palette.colors[e.donutArray.length-1-i%e.chart.palette.colors.length],s.font.baseLine=a.font.baseLine,s.font.fill=a.font.fill,s.font.style=a.font.style,s.font.textAlign=a.font.textAlign,s.gradient.colors=[s.fill],s.gradient.direction=a.gradient.direction,s.gradient.offset.x=a.gradient.offset.x,s.gradient.offset.y=a.gradient.offset.y,s.gradient.stops=a.gradient.stops,s.gradient.visible=a.gradient.visible,s.round.x=a.round.x,s.round.y=a.round.y,s.shadow.blur=a.shadow.blur,s.shadow.color=a.shadow.color,s.shadow.height=a.shadow.height,s.shadow.visible=a.shadow.visible,s.shadow.width=a.shadow.width,s.stroke.fill=a.stroke.fill.slice(0),s.stroke.cap=a.stroke.cap,s.stroke.dash=a.stroke.dash,s.stroke.join=a.stroke.join,s.stroke.size=a.stroke.size,s.transparency=a.transparency,t.fill=e=>t.getFillStyle(new $(t.center.x-t.radius,t.center.y-t.radius,2*t.radius,2*t.radius),s.fill)}this.clicked=function(t){let e=-1,i=0;for(;i<this.donutArray.length&&-1===e;)-1===e&&-1!==this.donutArray[i].clicked(t)&&(e=this.donutArray.length-i-1),i++;return e},this.add=function(t,e){const s=i(t,e,0,0,0);this.donutArray.push(s),this.data.values.push(t),this.data.labels.push(e),null!=this.chart&&this.linkDonutsToChart()},this.draw=function(){for(let t=0;t<this.donutArray.length;t++){const e=this.donutArray[t].chart.drawContext;s(this.donutArray[t],this,t),e.fillStyle=this.donutArray[t].getFillStyle(this.donutArray[t].chart.chartRect,this.donutArray[t].format.fill),this.recalcWidth(),this.donutArray[t].draw()}}}addRandom(t){for(let e=0;e<t;e++)this.add(Math.floor(20*Math.random()+10),String.fromCharCode(65+e));return this}maxValue(){let t=this.data.values[0];for(let e=0;e<this.data.values.length;e++)t<this.data.values[e]&&(t=this.data.values[e]);return t}linkDonutsToChart(){for(let t=0;t<this.donutArray.length;t++)this.donutArray[t].setChart(this.donutArray[t],this.chart)}minValue(){let t=this.data.values[0];for(let e=0;e<this.data.values.length;e++)t>this.data.values[e]&&(t=this.data.values[e]);return t}recalcWidth(){for(let t=0;t<this.donutArray.length;t++){const e=40;this.donutArray[t].donut=e+(100-e)*t/this.data.values.length,this.donutArray[t].maxRadius=e+(100-e)*(t+1)/this.data.values.length,this.donutArray[t].angleWidth=Math.abs(Number(this.maxDrawWidth)*this.data.values[this.data.values.length-1-t]/this.maxValue())}}}const qt=Math.PI/180,Xt="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif";class Lt extends X{useAxes=!1;min=0;max=100;value=0;angle=240;rotation=0;thickness=14;roundCaps=!0;inverted=!1;step=0;ranges=[];target;knob=!1;caption="";units="";limits=!0;showValue=!0;formatValue;trackColor="#e2e8f0";textColor="#0f172a";mutedColor="#64748b";surfaceColor="#ffffff";drag={enabled:!1};onchange;dragging=!1;frame;_oldValue=0;_newValue=0;layout={cx:0,cy:0,radius:0,start:0,sweep:0};constructor(t,e){super(t,e),this.legend.visible=!1,this.marks.visible=!1,this.frame=this.getRect(),this.animate=new Y(this.chart,t=>{this.value=this._oldValue+t*(this._newValue-this._oldValue),this.chart.draw()}),this.animate.duration=400,this.animate.onstop=()=>{this.value=this._newValue,this.onchange?.(this),this._emit("change",this),this.chart.draw()}}calcBounds(){return this.cellRect(this.frame,!0)}limitValue(t){return Math.min(this.max,Math.max(this.min,t))}colorAt(t){for(const e of this.ranges)if(t<=e.to)return e.color;return this.ranges.length>0?this.ranges[this.ranges.length-1].color:this.format.fill||"#3b82f6"}setValue(t,e=!0){const i=this.limitValue(t);if(i===this.value)return!1;const s=this.animate;return e&&s?.active&&s.duration>0?(this._oldValue=this.value,this._newValue=i,s.animate(this.chart)):(this.value=i,this.onchange?.(this),this._emit("change",this)),!0}text(t){if(this.formatValue)return this.formatValue(t);const e=10**this.decimals;return String(Math.round(t*e)/e)}draw(){const t=this.chart.drawContext,e=this.calcBounds(),i=Math.min(360,Math.max(1,this.angle))*qt,s=((i>=2*Math.PI?270:90+(360-i/qt)/2)+this.rotation)*qt,a=function(t,e){const i=[t,t+e];for(let s=Math.ceil(t/(Math.PI/2));s*(Math.PI/2)<t+e;s++)i.push(s*(Math.PI/2));const s=i.map(Math.cos),a=i.map(Math.sin);return e<2*Math.PI&&(s.push(0),a.push(0)),{minX:Math.min(...s),maxX:Math.max(...s),minY:Math.min(...a),maxY:Math.max(...a)}}(s,i),n=Math.min(.5,Math.max(.01,.01*this.thickness)),r=i>=2*Math.PI,o=this.limits&&!r,h=o?.2:0,l=.98*Math.min(e.width/(a.maxX-a.minX+n),e.height/(a.maxY-a.minY+n+h)),c=e.x+.5*e.width-(a.minX+a.maxX)/2*l,d=e.y+.5*e.height-(a.minY+a.maxY+h)/2*l;if(this.layout={cx:c,cy:d,radius:l,start:s,sweep:i},!(l>0))return;const u=this.max-this.min||1,m=Math.min(1,Math.max(0,(this.value-this.min)/u)),f=n*l;t.save(),t.lineCap=this.roundCaps?"round":"butt",t.lineWidth=f,t.beginPath(),t.arc(c,d,l,s,s+i,!1),t.strokeStyle=this.trackColor,t.stroke();const g=this.colorAt(this.value);if(m>0&&(t.beginPath(),this.inverted?t.arc(c,d,l,s+i*(1-m),s+i,!1):t.arc(c,d,l,s,s+i*m,!1),t.strokeStyle=g,t.stroke()),void 0!==this.target){const e=Math.min(1,Math.max(0,(this.target-this.min)/u)),a=s+i*(this.inverted?1-e:e),n=l-.75*f,r=l+.75*f;t.beginPath(),t.moveTo(c+Math.cos(a)*n,d+Math.sin(a)*n),t.lineTo(c+Math.cos(a)*r,d+Math.sin(a)*r),t.lineCap="butt",t.lineWidth=Math.max(2,.14*f),t.strokeStyle=this.textColor,t.stroke()}if(this.knob){const e=s+i*(this.inverted?1-m:m);t.beginPath(),t.arc(c+Math.cos(e)*l,d+Math.sin(e)*l,.78*f,0,2*Math.PI),t.fillStyle=this.surfaceColor,t.fill(),t.lineWidth=Math.max(2,.2*f),t.strokeStyle=g,t.stroke()}if(t.textAlign="center",t.textBaseline="middle",o){const e=Math.max(9,.115*l);t.font=`${e}px ${Xt}`,t.fillStyle=this.mutedColor;const a=(i,s)=>t.fillText(this.text(i),c+Math.cos(s)*l,d+Math.sin(s)*l+.5*f+.9*e);a(this.inverted?this.max:this.min,s),a(this.inverted?this.min:this.max,s+i)}this.showValue&&this.drawValue(l,n,a.maxY<=.1,c,d),t.restore()}drawValue(t,e,i,s,a){const n=this.chart.drawContext,r=this.text(this.value),o=t*(2-e)*.8,h=""!==this.caption;let l=t*(i?.36:.5);n.font=`600 ${l}px ${Xt}`;const c=""!==this.units,d=()=>.42*l,u=()=>{n.font=`600 ${l}px ${Xt}`;const t=n.measureText(r).width;return n.font=`500 ${d()}px ${Xt}`,t+(c?n.measureText(this.units).width+.12*l:0)};let m=u();m>o&&(l*=o/m,m=u());const f=Math.max(9,.34*l),g=l+(h?1.5*f:0),x=i?a-.1*t-g:a-.5*g,p=x+.5*l;n.font=`600 ${l}px ${Xt}`;const b=n.measureText(r).width,v=s-.5*m;n.textAlign="left",n.fillStyle=this.textColor,n.fillText(r,v,p),c&&(n.font=`500 ${d()}px ${Xt}`,n.fillStyle=this.mutedColor,n.textBaseline="alphabetic",n.fillText(this.units,v+b+.12*l,p+.3*l),n.textBaseline="middle"),h&&(n.textAlign="center",n.font=`500 ${f}px ${Xt}`,n.fillStyle=this.mutedColor,n.fillText(this.caption,s,x+l+.9*f))}valueAt(t,e=!1){const{cx:i,cy:s,radius:a,start:n,sweep:r}=this.layout,o=t.x-i,h=t.y-s,l=Math.hypot(o,h),c=Math.max(.01*this.thickness*a*1.2,12);if(!e&&Math.abs(l-a)>c)return null;let d=Math.atan2(h,o)-n;d=(d%(2*Math.PI)+2*Math.PI)%(2*Math.PI),d>r&&(d=d-r<(2*Math.PI-r)/2?r:0);const u=d/r,m=this.max-this.min;let f=this.inverted?this.max-u*m:this.min+u*m;return this.step>0&&(f=this.min+Math.round((f-this.min)/this.step)*this.step),this.limitValue(f)}mousedown(t){if(!this.drag.enabled)return!1;const e={x:0,y:0,value:0};this.chart.calcMouse(t,e);const i=this.valueAt(e);return this.dragging=null!==i,null!==i&&this.setValue(i,!1)&&this.chart.draw(),this.dragging}mousemove(t){if(this.drag.enabled)if(this.dragging){const e=this.valueAt(t,!0);null!==e&&this.setValue(e,!1)&&this.chart.draw(),this.chart.newCursor="pointer"}else null!==this.valueAt(t)&&(this.chart.newCursor="pointer")}clicked(){return this.dragging=!1,-1}}class Yt extends X{colorEach="yes";whisker="tukey";whiskerRange=1.5;whiskerMode="nearest";quantiles=7;minStats="extreme";maxStats="extreme";showPoints=!1;pointRadius=2.5;jitter=.5;width=60;showOutliers=!0;showMean=!1;fillOpacity=.55;lineWidth=2;medianColor="#111827";dotStroke="#ffffff";formatValue;source=[];boxes=[];continuous=!1;constructor(t,e){super(t,e),this.hover.enabled=!0,this.format.shadow.visible=!1}setData(t,e,i=!0){if(!t||"function"!=typeof t[Symbol.iterator])throw new TypeError("BoxPlot.setData requires an iterable collection of groups");const s=Array.from(t),a=null==e?[]:Array.from(e),n=s.length>0&&s.every(t=>"number"==typeof t)?[s]:s;return this.source=n.map((t,e)=>{const i=Array.isArray(t)?{values:t}:t;return{...i,name:i.name??a[e]??String(e+1)}}),this.rebuild(i)}rebuild(t=!0){return this.boxes=this.source.map(t=>({name:t.name??"",color:t.color,stats:this.summarize(t),values:t.values?t.values.filter(Number.isFinite).sort((t,e)=>t-e):[]})),this.data.values=this.boxes.map(t=>t.stats.median),this.data.labels=this.boxes.map(t=>t.name),t&&this.chart?.draw(),this}statsOf(t){return this.boxes[t]?.stats}summarize(t){if(t.values)return this.fromValues(t.values);const{min:e=0,q1:i=0,median:s=0,q3:a=0,max:n=0}=t;return{min:e,q1:i,median:s,q3:a,max:n,outliers:(t.outliers??[]).filter(Number.isFinite),mean:t.mean,count:t.count,low:e,high:n}}fromValues(t){const e=t.filter(Number.isFinite).sort((t,e)=>t-e),i=e.length;if(0===i)return{min:0,q1:0,median:0,q3:0,max:0,outliers:[],count:i,low:0,high:0};const{q1:s,median:a,q3:n}=this.quartiles(e);let r=e[0],o=e[i-1],h=[];if("tukey"===this.whisker){const t=s-this.whiskerRange*(n-s),a=n+this.whiskerRange*(n-s),l=e.filter(e=>e>=t&&e<=a);h=e.filter(e=>e<t||e>a),"exact"===this.whiskerMode?(r=Math.max(e[0],t),o=Math.min(e[i-1],a)):l.length>0&&(r=l[0],o=l[l.length-1])}return{min:e[0],q1:s,median:a,q3:n,max:e[i-1],outliers:h,mean:e.reduce((t,e)=>t+e,0)/i,count:i,low:r,high:o}}quartiles(t){const e=this.quantiles;if("function"==typeof e)return e(t);if("hinges"===e||"fivenum"===e)return function(t){const e=t.length,i=e=>(t[Math.floor(e)-1]+t[Math.ceil(e)-1])/2,s=Math.floor((e+3)/2)/2;return{q1:i(s),median:i((e+1)/2),q3:i(e+1-s)}}(t);const i=i=>{const s=(t.length-1)*i;switch(e){case"lower":return t[Math.floor(s)];case"higher":return t[Math.ceil(s)];case"nearest":return t[Math.round(s)];case"midpoint":return(t[Math.floor(s)]+t[Math.ceil(s)])/2;default:return lt(t,i)}};return{q1:i(.25),median:i(.5),q3:i(.75)}}halfWidth(){const t=this.notmandatory;return Math.abs(t.calc(1)-t.calc(0))*this.width*.01/2}box(t){const e=this.boxes[t];if(!e)return;const i=this.mandatoryAxis,s=i.calc(e.stats.q3),a=i.calc(e.stats.q1);return{x:this.notmandatory.calc(t),half:this.halfWidth(),top:Math.min(s,a),bottom:Math.max(s,a)}}draw(){const t=this.chart.ctx;if(!t||0===this.boxes.length)return;const e=this.chart.chartRect,i=this.mandatoryAxis;t.save(),t.beginPath(),t.rect(e.x,e.y,e.width,e.height),t.clip();for(let e=0;e<this.boxes.length;e++){const s=this.box(e);if(!s)continue;const{stats:a}=this.boxes[e],{x:n,half:r,top:o,bottom:h}=s,l=this.boxes[e].color??this.getFill(e,this.format),c=this.hover.enabled&&this.over===e,d=.5*r;t.lineWidth=Math.max(1,this.lineWidth)+(c?1:0),t.strokeStyle=l,t.lineJoin="round";const u=i.calc(a.low),m=i.calc(a.high);t.beginPath(),t.moveTo(n,h),t.lineTo(n,u),t.moveTo(n,o),t.lineTo(n,m),t.moveTo(n-d,u),t.lineTo(n+d,u),t.moveTo(n-d,m),t.lineTo(n+d,m),t.stroke(),t.globalAlpha=Math.min(1,this.fillOpacity+(c?.2:0)),t.fillStyle=l,t.fillRect(n-r,o,2*r,h-o),t.globalAlpha=1,t.strokeRect(n-r,o,2*r,h-o);const f=i.calc(a.median);if(t.strokeStyle=this.medianColor,t.lineWidth=2.5,t.beginPath(),t.moveTo(n-r,f),t.lineTo(n+r,f),t.stroke(),this.showPoints){const s=Math.max(1,this.pointRadius),a=r*Math.min(1,Math.max(0,this.jitter)),o=jt(e+1);for(const r of this.boxes[e].values){const e=(2*o()-1)*a;this.marker(t,n+e,i.calc(r),s,l,!1)}}else if(this.showOutliers)for(const e of a.outliers)this.marker(t,n,i.calc(e),3.5,l,!1);this.showMean&&void 0!==a.mean&&this.marker(t,n,i.calc(a.mean),5,l,!0)}t.restore()}marker(t,e,i,s,a,n){t.beginPath(),n?(t.moveTo(e,i-s),t.lineTo(e+s,i),t.lineTo(e,i+s),t.lineTo(e-s,i),t.closePath()):t.arc(e,i,s,0,2*Math.PI),t.fillStyle=n?this.medianColor:a,t.fill(),t.lineWidth=1.5,t.strokeStyle=this.dotStroke,t.stroke()}clicked(t){const e=this.mandatoryAxis;for(let i=this.boxes.length-1;i>=0;i--){const s=this.box(i);if(!s)continue;const{stats:a}=this.boxes[i],{x:n,half:r,top:o,bottom:h}=s;if(Math.abs(t.x-n)<=r&&t.y>=o&&t.y<=h)return i;const l=e.calc(a.low),c=e.calc(a.high);if(Math.abs(t.x-n)<=3&&t.y>=Math.min(l,c)&&t.y<=Math.max(l,c))return i}return-1}formatNumber(t){return this.formatValue?this.formatValue(t):String(Math.round(100*t)/100)}valueText(t){const e=this.boxes[t]?.stats;return e?this.formatNumber(e.median):"0"}tooltipParts(t){const e=this.boxes[t];if(!e)return;const{stats:i}=e,s=[];return void 0!==i.count&&s.push(["Values",String(i.count)]),s.push(["Maximum",this.formatNumber(i.max)],["Q3",this.formatNumber(i.q3)],["Median",this.formatNumber(i.median)],["Q1",this.formatNumber(i.q1)],["Minimum",this.formatNumber(i.min)]),void 0!==i.mean&&s.push(["Mean",this.formatNumber(i.mean)]),i.outliers.length>0&&s.push(["Outliers",String(i.outliers.length)]),{label:e.name,value:this.formatNumber(i.median),color:e.color??this.getFill(t),details:s}}legendColor(t){return this.boxes[t]?.color??super.legendColor(t)}vertMargins(t){t.x=t.y=this.lineWidth+6}minXValue(){return-.5}maxXValue(){return Math.max(0,this.boxes.length-1)+.5}minYValue(){return this.boxes.length>0?Math.min(...this.boxes.map(t=>this.lowest(t.stats))):0}maxYValue(){return this.boxes.length>0?Math.max(...this.boxes.map(t=>this.highest(t.stats))):0}lowest(t){return"box"===this.minStats?t.q1:"whisker"===this.minStats?t.low:this.showOutliers||this.showPoints?Math.min(t.low,t.min,...t.outliers):t.low}highest(t){return"box"===this.maxStats?t.q3:"whisker"===this.maxStats?t.high:this.showOutliers||this.showPoints?Math.max(t.high,t.max,...t.outliers):t.high}}function jt(t){let e=2654435761*t;return()=>(e=(1664525*e+1013904223)%4294967296,e/4294967296)}class Gt extends k{constructor(t,e){super(t,e),this.yMandatory=!1,this.format.gradient.direction="rightleft"}maxMarkWidth(){let t=0;const e=this.marks,i=this.count();if(e.visible){const s=e.format;s.font.prepare();for(let a=0;a<i;a+=e.drawEvery)if(!this.isNull(a)){const e=s.textWidth(`${this.markText(a)}W`);e>t&&(t=e)}}return t}horizMargins(t){const e=this.marks;let i=this.format.stroke;const s=this.minXValue()<this.origin;e.visible&&"center"!==e.location&&(t.y=(e.arrow.length??0)+this.maxMarkWidth()+e.margins.left+e.margins.right,i=e.format.stroke),""!==i.fill&&(t.y+=2*i.size+1),s&&(t.x=t.y)}vertMargins(t){this.initOffsets(),t.x+=this._margin,t.y+=this._margin}maxYValue(){return"sideAll"===this.stacked?this.countAll()-1:super.maxXValue()}minYValue(){return"sideAll"===this.stacked?0:super.minXValue()}minXValue(){const t=super.minYValue();return this.useOrigin?Math.min(this.origin,t):t}maxXValue(){return this.stackMaxValue()}calcBarBounds(t,e,i,s){e.y=t.y+i.x,e.height=i.y,this._horizAxis.inverted?(e.x=t.x,e.width=s-t.x):(e.x=s,e.width=t.x-e.x),e.width<0&&(e.x+=e.width,e.width=-e.width)}}class Jt extends Gt{limit={origin:38,width:.2,height:35,color:"red",visible:!0};states={colors:["#111","#444","#777","#BBB","#EEE"],values:[10,10,10,10,10],barSize:50,gradientVisible:!1,visible:!0};_rangeFormat=null;_limitFormat=null;_row=new B;_rect=new $;constructor(t,e){super(t,e),this.barSize=25,this.stacked="sideAll",this.marks.visible=!1}rangesAt(t){const e=this.states.values;return e.length>0&&Array.isArray(e[0])?e[t]||[]:e}targetAt(t){const e=this.limit.origin;return Array.isArray(e)?e[t]:e}minXValue(){return this.yMandatory?"sideAll"===this.stacked?0:this._baseMinXValue():this.minValue()}maxXValue(){return this.yMandatory?"sideAll"===this.stacked?this.countAll()-1:this._baseMaxXValue():this.maxValue()}minYValue(){return this.yMandatory?this.minValue():super.minYValue()}maxYValue(){return this.yMandatory?this.maxValue():super.maxYValue()}minValue(){const t=this._baseMinYValue();let e=this.useOrigin?Math.min(this.origin,t):t;if(this.limit.visible)for(let t=0;t<this.data.values.length;t++){const i=this.targetAt(t);void 0!==i&&(e=Math.min(e,this.origin+i))}return e}maxValue(){let t=this._baseMaxYValue();for(let e=0;e<this.data.values.length;e++){this.states.visible&&(t=Math.max(t,this.origin+this.rangesAt(e).reduce((t,e)=>t+e,0)));const i=this.targetAt(e);this.limit.visible&&void 0!==i&&(t=Math.max(t,this.origin+i+Math.max(0,this.limit.width)))}return t}rowCount(){return this.countAll()}countAll(t=!1){let e=0;for(const i of this.chart.series.items){if(t&&i===this)break;i.visible&&i.constructor===this.constructor&&i.notmandatory===this.notmandatory&&(e+=i.data.values.length)}return e}horizMargins(t){this.yMandatory||super.horizMargins(t)}vertMargins(t){if(!this.yMandatory)return;const e=this.marks;let i=this.format.stroke;e.visible&&"center"!==e.location&&(t.y=(e.arrow.length??0)+e.format.textHeight("Wj")+e.margins.top+e.margins.bottom,i=e.format.stroke),""!==i.fill&&(t.y+=2*i.size+1),this.minYValue()<this.origin&&(t.x=t.y)}calcBarBounds(t,e,i,s){this.yMandatory?(e.x=t.x+i.x,e.width=i.y,e.y=Math.min(t.y,s),e.height=Math.abs(t.y-s)):super.calcBarBounds(t,e,i,s)}rowLabel(t){for(const e of this.chart.series.items){if(!e.visible||e.constructor!==this.constructor||e.notmandatory!==this.notmandatory)continue;const i=e.data.values.length;if(t<i)return e.data.labels[t]||e.title||void 0;t-=i}}rowSize(){return this.notmandatory.calcSize(1)}prepareFormat(t){return t?t.setChart(this.chart):t=new F(this.chart),t.round.x=0,t.round.y=0,t.shadow.visible=!1,t.stroke.fill="",t.z=this.format.z,t.depth=this.format.depth,t}setBounds(t,e,i,s,a,n=0){const r=this.mandatoryAxis,o=r.calc(e),h=r.calc(i),l=Math.min(o,h),c=Math.max(n,Math.abs(h-o));this.yMandatory?t.set(s-.5*a,l,a,c):t.set(l,s-.5*a,c,a)}drawRanges(t,e,i){const s=this.rangesAt(t),a=this.states.colors;if(0===s.length||0===a.length)return;this._rangeFormat=this.prepareFormat(this._rangeFormat);const n=this._rangeFormat,r=this._rect,o=n.gradient;let h=this.origin;for(let t=0;t<s.length;t++){const l=a[t%a.length];this.states.gradientVisible?(o.colors=[a[Math.max(0,t-1)%a.length],l],o.direction=this.yMandatory?this.mandatoryAxis.inverted?"topbottom":"bottomtop":this.mandatoryAxis.inverted?"rightleft":"leftright",o.visible=!0):(o.visible=!1,n.fill=l),this.setBounds(r,h,h+s[t],e,i*this.states.barSize/100),r.width>0&&r.height>0&&(n.cube(r),n.draw(this.chart.drawContext,null,r)),h+=s[t]}}drawTarget(t,e,i){const s=this.targetAt(t);if(void 0===s)return;this._limitFormat=this.prepareFormat(this._limitFormat);const a=this._limitFormat,n=this._rect,r=this.origin+s;a.gradient.visible=!1,a.fill=this.limit.color,this.setBounds(n,r,r+this.limit.width,e,i*this.limit.height/100,2),a.cube(n),a.draw(this.chart.drawContext,null,n)}eachRow(t){const e=this.data.values.length;if(0===e)return;this.initOffsets();const i=this._row,s=this.rowSize();for(let a=0;a<e;a++)this.isNull(a)||(this.calcStackPos(a,i),t(a,this.yMandatory?i.x:i.y,s))}draw(){this.states.visible&&this.eachRow((t,e,i)=>this.drawRanges(t,e,i)),super.draw(),this.limit.visible&&this.eachRow((t,e,i)=>this.drawTarget(t,e,i))}}class Qt extends V{constructor(t,e){super(t,e),this.drawLine=!1,this.pointer.visible=!0,this.format.shadow.visible=!0,this.format.shadow.blur=10,this.format.z=.5,this.format.depth=.1,this.pointer.width=7,this.hi=this.higher=this.pointer.format,this.hi.fill="green",this.lo=this.lower=new F(this.chart),this.lo.fill="red",this.style="candle"}setChart(t,e){(0,V.prototype.setChart)(t,e),this.lo.setChart(e)}draw(){const t=this.data,e=t.values.length,i=new B,s=this.pointer,a=.5*s.width,n=this.mandatoryAxis,r=this.chart.ctx;if(r){r.z=this.format.z+.5*this.format.depth;for(let o=0;o<e;o++)if(!this.isNull(o)){this.calc(o,i);const e=i.x,h=n.calc(Number(t.open?.[o])),l=n.calc(Number(t.high?.[o])),c=n.calc(Number(t.low?.[o]));let d,u,m;if(i.y>h?(d=h,u=i.y-h,m=this.lo):(d=i.y,u=h-d,m=this.hi),"bar"===this.style)r.beginPath(),r.moveTo(e,l),r.lineTo(e,c),r.moveTo(e-a,h),r.lineTo(e,h),r.moveTo(e,i.y),r.lineTo(e+a,i.y),m.stroke.prepare(m.fill),r.stroke();else{m.depth=a/100,m.z=this.format.z+.5*this.format.depth-.5*m.depth;const t={x:e-a,y:d,width:s.width,height:u};"cylinder"===this.pointer.style?m.cylinder(t,1,!0,!1):m.cube(t),m.draw(r,null,t),this.hover.enabled&&this.over===o&&this.hover.rectangle(e-a,d,s.width,u)}"openclose"!==this.style&&(l<d||c>d+u)&&(r.z=this.format.z+.5*this.format.depth,r.beginPath(),r.moveTo(e,d),r.lineTo(e,l),r.moveTo(e,d+u),r.lineTo(e,c),this.hover.enabled&&this.over===o?this.hover.stroke.prepare(m.fill):m.stroke.prepare(m.fill),r.stroke())}}}minYValue(){const t=this.data.low;return t&&t.length>0?ct(t):0}maxYValue(){const t=this.data.high;return t&&t.length>0?dt(t):0}addRandom(t){const e=this.data;if(t||(t=10),e.values.length=t,e.close=e.values,e.open?e.open.length=t:e.open=new Array(t),e.high?e.high.length=t:e.high=new Array(t),e.low?e.low.length=t:e.low=new Array(t),t>0){let i=25+100*Math.random();for(let s=0;s<t;s++){const t=e.open[s]=i;i=e.close[s]=i+25*Math.random()-12.5,e.high[s]=Math.max(t,i)+15*Math.random(),e.low[s]=Math.min(t,i)-15*Math.random()}}return this}clicked(t){const e=this.pointer.width,i=this.mandatoryAxis,s=this.notmandatory,a=this.data,n=a.values.length,r=new $;r.width=e;for(let o=0;o<n;o++)if(!this.isNull(o)){r.x=s.calc(o)-.5*e;const n=i.calc(Number(a.open?.[o])),h=i.calc(Number(a.close?.[o]));if(r.y=n>h?h:n,r.height=Math.abs(n-h),r.contains(t))return o}return-1}vertMargins(){}}class Ut extends X{yMandatory=!1;dateFormat="mediumDate";nextTasks=[];nextTasksStrokeStyle="Black";nextTasksPosition="back";colorEach="yes";height=70;margin=new B(6,6);continuous=!1;r=new $;_h=0;constructor(t,e){super(t,e),this.hover.enabled=!0,this.hover.round.x=this.hover.round.y=8,this.data.start=this.data.values,this.data.x=[],this.data.end=[],this.format.shadow.visible=!0,this.format.round.x=this.format.round.y=8,this.format.stroke.fill="black",this.format.gradient.visible=!0}addNextTask(t,e){this.nextTasks.push([t,e])}addRandom(t=5){t||(t=5);const e=this.data;if(e.x.length=t,e.start.length=t,e.end.length=t,t>0){let i,s,a=2012;for(let n=0;n<t;n++)e.x[n]=n,i=J(12*Math.random()),s=J(10*Math.random()),e.start[n]=new Date(a,i,s),i<5&&(i=5+J(7*Math.random())),e.end[n]=new Date(a,i,s+10*Math.random())}return this}bounds(t,e=this.r){if("number"!=typeof t)return void super.bounds(t);const i=t;return!this.isNull(i)&&(this.calc(i,e),e.y-=.5*this._h,e.width=this.data.end?this.mandatoryAxis.calcSize(Number(this.data.end[i])-Number(this.data.start[i])):0,e.height=this._h,!0)}add(t,e,i,s){const a=this.data;a.labels.push(e),a.x.push(t),a.start.push(i),a.end.push(s)}tooltipParts(t){const{start:e,end:i,labels:s}=this.data;if(!e[t]||!i[t])return;const a=t=>ut.format(new Date(t),this.dateFormat),n=a(e[t]),r=a(i[t]),o=Math.round((Number(i[t])-Number(e[t]))/864e5);return{label:s[t]||"",value:`${n} → ${r}`,color:this.getFill(t),details:[["Start",n],["End",r],["Duration",`${o} days`]]}}clicked(t){const e=this.data.values.length;for(let i=0;i<e;i++)if(this.bounds(i,this.r)&&this.r.contains(t))return i;return-1}draw(){const t=this.data.values.length;let e=this.hover;const i=e.fill,s=this.chart.ctx;if(s){"back"===this.nextTasksPosition&&this.drawLines(s),this._h=this.notmandatory.calcSize(.01*this.height);for(let i=0;i<t;i++)this.bounds(i,this.r)&&(e=this.hover.enabled&&this.over===i?this.hover:this.format,e.fill=this.getFillStyle(this.r,this.getFill(i,e)),e.rectangle(this.r));this.hover.fill=i,"front"===this.nextTasksPosition&&this.drawLines(s)}}drawLines(t){for(let e=0;e<this.nextTasks.length;e++){const i=[];t.beginPath(),t.strokeStyle=this.nextTasksStrokeStyle,t.lineWidth=2,t.fillStyle="000000",i.push(Math.round(this.chart.axes.bottom.calc(Number(this.data.end[this.nextTasks[e][0]])))),i.push(Math.round(this.chart.axes.left.calc(Number(this.data.x[this.nextTasks[e][0]])))),i.push(Math.round(this.chart.axes.bottom.calc(Number(this.data.start[this.nextTasks[e][1]])))),i.push(Math.round(this.chart.axes.left.calc(Number(this.data.x[this.nextTasks[e][1]])))),t.moveTo(i[0],i[1]),t.lineTo(i[0]-(i[0]-i[2])/2,i[1]),t.lineTo(i[0]-(i[0]-i[2])/2,i[3]),t.lineTo(i[2],i[3]),t.stroke()}}horizMargins(t){t.x=this.margin.x,t.y=this.margin.y}minYValue(){return this._baseMinXValue()-.5}maxYValue(){return this._baseMaxXValue()+.5}minXValue(){return ct(this.data.start)}maxXValue(){return dt(this.data.end)}}class Kt extends V{useOrigin=!1;origin=0;drawLine=!0;closeArea=!0;maxmin=void 0;r=new $;constructor(t,e){super(t,e);const i=this.format;i.shadow.visible=!0,i.stroke.fill="black",i.fill="",i.beveled=!0,this.maxmin=new F(i.chart);const s=this.maxmin;s.shadow.visible=!1,s.stroke.fill="red",s.fill="",s.beveled=!0,i.depth=1,i.z=.5,this.data.lows=[]}addRandom(t=5){const e=this.data;e.values.length=t,e.x=void 0,e.lows=new Array(t);for(let i=0;i<t;i++)e.values[i]=1e3*Math.random(),e.lows[i]=50+150*Math.random();return this}calcLows(t,e){this.isStacked?this.calcStack(t,e,this.data.lows?.[t]??Number.NaN):super.calc(t,e)}draw(){const t=this.format,e=this.r,i=this.data.values.length;if(0===i)return;const s=this.mandatoryAxis,a=this.notmandatory,n=this.yMandatory,r=this.useOrigin?s.calc(this.origin):n&&s.inverted||!n&&!s.inverted?s.startPos:s.endPos;this.isStacked="no"!==this.stacked,this.isStack100="100"===this.stacked;let o,h,l=Number.NaN,c=0,d=i;const u=new B,m=this.chart.drawContext,f=this.isStacked;this.smooth||this.data.x||(c=Math.max(0,J(a.minimum)-1),d=Math.min(i,J(a.maximum)+2)),m.depth=t.depth,m.z=t.z;const g=[],x=[];let p=0;if(m.beginPath(),this.smooth>0){h=new Array(2*i);for(let t=0;t<i;t++)this.calc(t,u),h[2*t]=u.x,h[2*t+1]=u.y;if(o=n?h[0]:h[1],m.spline?m.spline(h,!0):z(m,h,this.smooth,!0),f){let t=0;for(let e=i-1;e>=0;e--)this.calcStack(e,u,0),h[t++]=u.x,h[t++]=u.y;m.lineTo(h[0],h[1]),m.spline?m.spline(h,!0):z(m,h,this.smooth,!1)}}else if(this.calc(c,u),m.moveTo(u.x,u.y),o=n?u.x:u.y,l=n?u.y:u.x,this.stairs)for(let t=c+1;t<d;t++)this.calc(t,u),m.lineTo(u.x,l),m.lineTo(u.x,u.y),l=n?u.y:u.x;else if(this.rects)for(let t=c;t<d;t++){this.calc(t,u);const e=this.mandatoryAxis.calc(this.data.lows?.[t]??Number.NaN),i=this.notmandatory.calc(Number(this.data.x?.[t+1]));m.rect(u.x,u.y,i-u.x,e-u.y),g[p]=new B(u.x,u.y),x[p++]=new B(u.x,e),g[p]=new B(i,u.y),x[p++]=new B(i,e)}else for(let t=c+1;t<d;t++)this.calc(t,u),m.lineTo(u.x,u.y);if(f&&0===this.smooth)for(let t=d-1;t>=c;t--)this.calcStack(t,u,0),this.stairs?(m.lineTo(u.x,l),m.lineTo(u.x,u.y),l=n?u.y:u.x):m.lineTo(u.x,u.y);else f||(n?this.closeArea&&(m.lineTo(u.x,r),m.lineTo(o,r)):(m.lineTo(r,u.y),m.lineTo(r,o)));m.closePath(),t.gradient.visible&&(t.gradient.colors[t.gradient.colors.length-1]=t.fill),this.bounds(e),m.__webgl&&(m.beveled=t.beveled),t.draw(m,null,e);for(const e of[g,x]){m.beginPath();for(const t of e)m.lineTo(t.x,t.y);t.stroke.prepare(t.fill,m),m.stroke()}this.pointer.visible&&this.drawPointers()}minYValue(){const t=this.yMandatory?super.minYValue():super.minXValue();return this.yMandatory&&this.useOrigin?Math.min(t,this.origin):t}minXValue(){const t=this.yMandatory?super.minXValue():super.minYValue();return this.yMandatory?t:this.useOrigin?Math.min(t,this.origin):t}maxYValue(){const t=this.yMandatory?this.stackMaxValue():super.maxXValue();return this.yMandatory&&this.useOrigin?Math.max(t,this.origin):t}maxXValue(){const t=this.yMandatory?super.maxXValue():this.stackMaxValue();return this.yMandatory?t:this.useOrigin?Math.max(t,this.origin):t}vertMargins(t){this.yMandatory&&""!==this.format.stroke.fill&&(t.y+=this.format.stroke.size+2)}horizMargins(t){this.yMandatory||""===this.format.stroke.fill||(t.y+=this.format.stroke.size+2)}}class Zt extends x{source=[];bins=0;binWidth=0;rule="sturges";normalize="count";edges=[];constructor(t,e){super(t,e),this.barSize=100,this.marks.visible=!1,this.format.round.x=0,this.format.round.y=0,this.format.gradient.visible=!1,this.format.shadow.visible=!1,this.colorEach="no"}setData(t,e,i=!0){if(!t||"function"!=typeof t[Symbol.iterator])throw new TypeError("Histogram.setData requires an iterable collection of values");return this.source=Array.from(t).filter(t=>Number.isFinite(t)),this.rebin(i)}rebin(t=!0){const e=this.data,i=[...this.source].sort((t,e)=>t-e),s=i.length;if(0===s)this.edges=[],e.values=[],e.x=[],e.labels=[];else{const t=i[0],a=i[s-1],n=this.resolveWidth(i,t,a),r=Math.max(1,Math.ceil((a-t)/n-1e-9)),o=new Array(r).fill(0);for(const e of i)o[Math.min(r-1,Math.floor((e-t)/n))]++;this.edges=Array.from({length:r+1},(e,i)=>t+i*n),e.x=o.map((e,i)=>t+(i+.5)*n),e.values=o.map(t=>this.scale(t,s,n)),e.labels=o.map((t,e)=>`${this.edges[e]} - ${this.edges[e+1]}`)}return t&&this.chart?.draw(),this}scale(t,e,i){return"percent"===this.normalize?100*t/e:"density"===this.normalize?t/(e*i):t}resolveWidth(t,e,i){const s=i-e;if(0===s)return this.binWidth>0?this.binWidth:1;if(this.binWidth>0)return this.binWidth;let a=Math.floor(this.bins);return a<1&&(a=this.ruleBins(t,s)),s/a}ruleBins(t,e){const i=t.length;if("sqrt"===this.rule)return Math.ceil(Math.sqrt(i));if("scott"===this.rule||"freedman"===this.rule){let s;if("scott"===this.rule){const e=t.reduce((t,e)=>t+e,0)/i;s=3.49*Math.sqrt(t.reduce((t,i)=>t+(i-e)**2,0)/i)/i**(1/3)}else s=2*(lt(t,.75)-lt(t,.25))/i**(1/3);if(s>0)return Math.max(1,Math.ceil(e/s))}return Math.ceil(Math.log2(i))+1}calcBarOffset(t){const e=this.data.values.length;if(e<2||"no"!==this.stacked)return void super.calcBarOffset(t);const i=t/(e-1),s=this.offsetPoint;s.y=this.customBarSize>0?this.customBarSize:i*this.barSize*.01,s.x=.5*-s.y,this._margin=.5*i}}class te extends _{constructor(t,e){super(t,e),this.yMandatory=!1}}class ee extends X{bounds;useAxes=!1;min=0;max=100;step=0;value=0;inverted=!1;onchange;angle=280;rotation=0;rotateText=!1;shape="rectangle";drag={enabled:!0};markers=[];oldValue=Number.NaN;newValue=Number.NaN;tick0=Number.NaN;tick1=Number.NaN;tickMin=Number.NaN;tickText=Number.NaN;initRot=Number.NaN;endRot=Number.NaN;cx=Number.NaN;cy=Number.NaN;cex=Number.NaN;cey=Number.NaN;p={x:0,y:0,value:0,inTicks:!1};constructor(t,e){super(t,e),this.legend.visible=!1,this.bevel=new F(this.chart),this.bevel.gradient.visible=!0,this.bevel.gradient.colors=["white"],this.bevel.shadow.visible=!1,this.bevel.visible=!1,this.bevel.stroke.fill="",this.center=new F(this.chart),this.center.stroke.fill="",this.center.gradient.visible=!0,this.center.size=10,this.center.visible=!1,this.center.shadow.visible=!0,this.center.gradient.offset={x:2,y:-2},this.center.location={x:0,y:0},this.center.top=new F(this.chart),this.center.top.size=40,this.center.top.visible=!0,this.center.top.stroke.fill="",this.center.top.gradient.colors=["silver","white"],this.center.top.gradient.visible=!0,this.center.top.gradient.direction="topbottom",this.ticks=new F(this.chart),this.ticks.length=6,this.ticks.stroke.fill="silver",this.ticks.visible=!0,this.ticks.outside=!0,this.ticks.triangle=!1,this.ticks.fill="white",this.ticksBack=new F(this.chart),this.ticksBack.stroke.fill="",this.ticksBack.fill="black",this.ticksBack.gradient.visible=!0,this.ticksBack.gradient.colors=["red","yellow","green"],this.ticksBack.gradient.direction="rightleft",this.ticksBack.visible=!1,this.ticksBack.radius=0,this.minor=new F(this.chart),this.minor.stroke.fill="silver",this.minor.visible=!0,this.minor.count=4,this.minor.shape="",this.minorBack=new F(this.chart),this.minorBack.stroke.fill="",this.minorBack.visible=!1,this.minorBack.fill="white",this.minorBack.gradient.visible=!1,this.minorBack.gradient.direction="leftright",this.minorBack.gradient.colors=["green","yellow","red"],this.minorBack.radius=0,this.back=new F(this.chart),this.back.fill="black",this.back.visible=!0,this.back.gradient.visible=!1,this.back.gradient.colors=["rgba(255,126,95,0.8)","rgba(254,180,123,0.8)"],this.back.stroke.fill="",this.pointer=new F(this.chart),this.pointer.size=3,this.pointer.fill="black",this.pointer.stroke.fill="",this.pointer.visible=!1,this.marks.format.fill="black",this.marks.format.font.fill="black",this.marks.format.gradient.visible=!0,this.marks.format.gradient.colors=["rgba(255,126,95,0.6)","rgba(254,180,123,0.6)"],this.marks.format.shadow.visible=!0,this.marks.format.shadow.blur=8,this.marks.format.shadow.color="black",this.format.visible=!0,this.format.gradient.visible=!0,this.format.gradient.colors=["white"],this.format.shadow.visible=!0,this.format.font.style="12px Verdana",this.format.font.fill="black",this.format.font.visible=!0,this.format.size=2,this.format.round={x:6,y:6},this.format.padding=0,this.units=new H(this.chart),this.units.transparent=!0,this.units.format.font.fill="black",this.units.location={x:0,y:24},this.bounds=this.getRect(),this.valueMarker=this.addValueMarker(),this.textMarker=this.addTextMarker(),this.unitsMarker=this.addUnitsMarker(),this.hover.enabled=!0,this.animate=new Y(this.chart,t=>{this.value=this.oldValue+t*(this.newValue-this.oldValue),this.chart.draw()}),this.animate.duration=100,this.animate.onstop=()=>{this.value=this.newValue,this.onchange&&this.onchange(this),this._emit("change",this),this.chart.draw()}}addValueMarker(){const t=new F(this.chart);return t.fill="white",t.font.fill="black",t.font.style="82px Arial",t.text="0",t.location={x:38,y:6},t.position={x:30,y:40},t.width=60,t.height=88,t.shape="rectangle",t.visible=!0,this.markers.push(t),t}destroy(){this.units?.destroy?.(),super.destroy()}addTextMarker(){const t=new F(this.chart);return t.fill="white",t.font.fill="black",t.font.style="40px Arial",t.font.textAlign="left",t.text="FREQ",t.location={x:1,y:5},t.position={x:37,y:25},t.width=20,t.height=20,t.shape="rectangle",t.visible=!0,this.markers.push(t),t}addUnitsMarker(){const t=new F(this.chart);return t.fill="white",t.font.fill="black",t.font.style="40px Arial",t.font.textAlign="left",t.text="Mhz",t.location={x:1,y:55},t.position={x:37,y:32},t.width=20,t.height=41,t.shape="rectangle",t.visible=!0,this.markers.push(t),t}calcBounds(){return this.bounds.custom?this.bounds:this.cellRect(this.bounds,!0)}drawMarker(t,e,i){if(t.visible){const s=e.width*t.width/100,a=e.height*t.height/100,n={x:e.width*Q(t.location).x/100,y:e.height*Q(t.location).y/100};i.fillStyle=t.fill,i.fillRect(n.x,n.y,s,a),i.font=t.font.style,i.fillStyle=t.font.fill;const r=n.x+s*t.position.x/100,o=n.y+a*t.position.y/100;i.fillText(t.text,r,o),i.save()}}draw(){const t=this.chart.drawContext,e=this.calcBounds();this.back.visible&&(t.fillStyle=this.back.fill,t.fillRect(0,0,e.width,e.height),t.save()),this.markers.forEach(i=>{this.drawMarker(i,e,t)})}limitValue(t){return Math.min(this.max,Math.max(this.min,t))}setValue(t){t=this.limitValue(t);const e=this.value!==t;if(e){const e=this.animate;e?.active&&e.duration>0?(this.oldValue=this.value,this.newValue=t,e.animate(this.chart)):(this.value=t,this.onchange&&this.onchange(this),this._emit("change",this))}return this.valueMarker.text=t.toFixed(),e}onclick(){}clicked(){return this.dragging=!1,-1}inValue(t,e){if(!e.contains(t))return!1;const i=t.x-this.cex,s=t.y-this.cey,a=Math.sqrt(i*i+s*s);let n,r,o,h=Math.atan2(s,i)-.5*Math.PI;for(;h<0;)h+=6.283;if(this.initRot>this.endRot?(n=this.endRot,r=this.initRot,o=h>=r||h<=n):(r=this.endRot,n=this.initRot,o=h>=n&&h<=r),o){let e;e=this.initRot>this.endRot?h>r?(h-r)/(6.283-r+n):(6.283-r+h)/(6.283-r+n):(h-n)/(r-n);let i=this.min+(this.max-this.min)*e;return this.inverted&&(i=this.min+(this.max-this.min)*(1-e)),t.value=i,t.inTicks=a>=Math.min(this.tick0,this.tickText)&&a<=this.tick1,!0}return t.inTicks=!1,!1}changeHover(t){this.hover.value!==t&&(this.hover.value=t,this.hover.valid=null!==t,this.chart._scheduleDraw())}mousemove(t){const e=this.calcBounds(),i=this.inValue(t,e);this.dragging||/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(U()?.userAgent||"")&&this.drag.enabled?(i&&this.setValue(t.value)&&this.chart.draw(),this.chart.newCursor="pointer"):t.inTicks&&this.drag.enabled?(this.changeHover(t.value),this.chart.newCursor="pointer"):this.changeHover(null)}mousedown(t){if(this.drag.enabled){const e=this.calcBounds();return this.chart.calcMouse(t,this.p),this.inValue(this.p,e)?(this.dragging=!0,this.hover.value=null,this.hover.valid=!1,this.setValue(this.p.value)&&this.chart.draw()):this.dragging=!1,this.dragging}return!1}setChart(t,e){super.setChart(t,e);const i=t;this.chart.panel.margins.bottom=0,this.chart.panel.margins.right=0,this.chart.panel.margins.top=0,this.chart.panel.margins.left=0,i.back.setChart(e),i.center.setChart(e),i.center.top?.setChart(e),i.ticks.setChart(e),i.ticksBack.setChart(e),i.minor.setChart(e),i.minorBack.setChart(e),i.units.setChart(e),i.pointer.setChart(e),i.bevel.setChart(e)}}class ie extends V{constructor(t,e){super(t,e),this.pointer.visible=!0,this.rotation=0,this._paintAxes=!1,this._paintWalls=!1,this.continuous=!1,this.useOrigin=!1,this.origin=0,this.clockwise=!0,this._polarPoint={x:0,y:0},this._polarCenter={x:0,y:0},this._polarRadius=0,this._pi180=Math.PI/180;const i=this.format;i.stroke.fill="black",i.z=.5}calc(t,e){const i=this.data,s=i.values[t],a=this.mandatoryAxis,n=i.x?Number(i.x[t]):360*t/i.values.length,r=a.inverted?a.maximum-s:s-a.minimum,o=this.clockwise?this._pi180*(this.rotation+n):-this._pi180*(this.rotation+n),h=r*this._polarRadius/(a.maximum-a.minimum),l=this._polarCenter;e.x=l.x+Math.cos(o)*h,e.y=l.y+Math.sin(o)*h}tryDrawAxis(t,e,i){if(t.visible){const s=t.axisPos;t.axisPos=e,t.startPos=i-this._polarRadius,t.endPos=i+this._polarRadius;const a=t.z;t.z=1-.5*t.chart.walls.back.size-.1,t.drawAxis(),t.axisPos=s,t.z=a}}calcCenter(t,e){const i=t.width,s=t.height,a=this._polarCenter;if(a.x=t.x+.5*i,a.y=t.y+.5*s,this._polarRadius=.5*Math.min(i,s),e.visible&&e.labels.visible){const t=e.labels.format.textHeight("W");this._polarRadius-=t}}beforeDraw(){let t;this.calcCenter(this.chart.chartRect,this.notmandatory);const e=this._polarCenter,i=this._polarRadius,s=this._pi180,a=this.chart.walls;if(a.visible){const s=a.back;if(s.visible){const a=s.format;t=a.z,a.z=1,a.ellipse(e.x,e.y,2*i,2*i),a.z=t}}if(this.chart.axes.visible){const n=this.notmandatory,r=n.grid.format.stroke,o=this.mandatoryAxis;let h=0;const l=this.chart.drawContext;let c,d=10;const u=n.rotation||0;if(n.visible&&n.labels.visible){const a={x:0,y:0,width:0,height:0},r=n.labels.format,o=r.textHeight("W"),l=i+.8*o;for(d=Math.max(10,90/J(i/o)),t=r.z,r.z=.6,h=0;h<360;)c=this.clockwise?s*(h+u):-s*(h+u),a.x=e.x+Math.cos(c)*l,a.y=e.y+Math.sin(c)*l-.5*o,r.drawText(a,`${h}`),h+=d;r.z=t}if(n.visible&&n.grid.visible){const t=n.increment||10;for(l.z=1-.5*a.back.size-.1,l.beginPath(),h=0;h<360;)c=s*(h+u),l.moveTo(e.x,e.y),l.lineTo(e.x+Math.cos(c)*i,e.y+Math.sin(c)*i),h+=t;r.prepare(r.fill,l),l.stroke()}if(o.visible&&o.grid.visible){let s;h=o.roundMin();const n=o.grid.format,r=2*i/(o.maximum-o.minimum);for(t=n.z,n.z=1-.5*a.back.size-.1,l.z=n.z;h<o.maximum;)s=(h-o.minimum)*r,n.ellipse(e.x,e.y,s,s),h+=o.increm;n.z=t}this.tryDrawAxis(o,e.x,e.y),this.tryDrawAxis(n,e.y,e.x)}}draw(){this.calcCenter(this.chart.chartRect,this.notmandatory);const t=this._polarPoint,e=[];let i,s=this.data.values.length;for(i=0;i<s;i++)this.isNull(i)||(this.calc(i,t),e.push({x:t.x,y:t.y}));if(s=e.length,s>0){const t=this._polarCenter;if("bar"===this.style){const a=this.chart.drawContext;for(a.beginPath(),i=0;i<s;i++)a.moveTo(t.x,t.y),a.lineTo(e[i].x,e[i].y);this.format.stroke.prepare(this.format.fill,a),a.stroke()}else this.format.polygon(e);this.pointer.visible&&this.drawPointers()}}minYValue(){const t=this._baseMinYValue();return this.useOrigin?Math.min(t,this.origin):t}maxYValue(){const t=this.stackMaxValue();return this.useOrigin?Math.max(t,this.origin):t}}class se extends X{useAxes=!1;colorEach="yes";nodeWidth=16;nodePadding=14;linkOpacity=.45;linkColor="source";iterations=6;labels=!0;formatValue;nodes=[];links=[];columns=[];lastPoint={x:0,y:0};constructor(t){super(),this.hover.enabled=!0,this.marks.visible=!1,this.format.stroke.fill="",t&&this.setGraph(t,!1)}setGraph(t,e=!0){return this.build(t),this.over=-1,e&&this.chart&&(this.chart._requestDraw?this.chart._requestDraw():this.chart.draw()),this}build(t){const e=new Map,i=[],s=(t,s)=>{let a=e.get(t);return a?void 0!==s&&(a.color=s):(a={index:i.length,name:t,color:s,value:0,depth:0,x0:0,x1:0,y0:0,y1:0,out:[],in:[]},e.set(t,a),i.push(a)),a};for(const e of t.nodes??[])"string"==typeof e?s(e):s(e.name,e.color);const a=[];for(const e of t.links??[]){if(!Number.isFinite(e.value)||e.value<0)throw new RangeError(`Sankey link ${e.source} -> ${e.target} needs a value of zero or more`);if(e.source===e.target)throw new Error(`Sankey link ${e.source} -> ${e.target} is a cycle`);if(0===e.value)continue;const t={source:s(e.source),target:s(e.target),value:e.value,width:0,color:e.color,y0:0,y1:0};t.source.out.push(t),t.target.in.push(t),a.push(t)}this.computeDepths(i);for(const t of i){const e=t.in.reduce((t,e)=>t+e.value,0),i=t.out.reduce((t,e)=>t+e.value,0);t.value=Math.max(e,i)}this.nodes=i,this.links=a;const n=[];for(const t of i){const e=n[t.depth]??[];e.push(t),n[t.depth]=e}this.columns=n,this.data.values=i.map(t=>t.value),this.data.labels=i.map(t=>t.name)}computeDepths(t){const e=t.map(t=>t.in.length),i=t.filter(t=>0===e[t.index]);let s=0,a=0;for(let t=0;t<i.length;t++){const n=i[t];s++,a=Math.max(a,n.depth);for(const t of n.out)t.target.depth=Math.max(t.target.depth,n.depth+1),0===--e[t.target.index]&&i.push(t.target)}if(s<t.length)throw new Error("Sankey links cannot contain cycles");for(const e of t)0===e.out.length&&e.in.length>0&&(e.depth=a)}formatNumber(t){return this.formatValue?this.formatValue(t):String(Math.round(100*t)/100)}text(t){return this.formatNumber(this.data.values[t])}valueText(t){const e=this.links[t-this.nodes.length];return e?this.formatNumber(e.value):this.text(t)}legendColor(t){const e=this.links[t-this.nodes.length];return e?this.linkStyleColor(e):this.nodeColor(this.nodes[t])}tooltipParts(t){const e=this.links[t-this.nodes.length];if(e){const t=e.value/Math.max(e.source.value,Number.EPSILON)*100;return{label:`${e.source.name} → ${e.target.name}`,value:this.formatNumber(e.value),color:this.linkStyleColor(e),details:[[`Share of ${e.source.name}`,`${t.toFixed(1)}%`]]}}const i=this.nodes[t];if(!i)return;const s=t=>t.reduce((t,e)=>t+e.value,0),a=[];return i.in.length>0&&a.push(["Incoming",this.formatNumber(s(i.in))]),i.out.length>0&&a.push(["Outgoing",this.formatNumber(s(i.out))]),{label:i.name,value:this.text(t),color:this.nodeColor(i),details:a}}legendCount(){return 0}font(){const t=this.chart.axes.left.labels.format.font;return{style:t.style,fill:t.fill}}labelWidth(t,e,i){t.font=`bold ${i}`;const s=t.measureText(e.name).width;return t.font=i,Math.max(s,t.measureText(this.text(e.index)).width)}layout(t,e){const i=this.columns,s=this.chart.chartRect,a=i.length-1;let n=s.x,r=s.x+s.width;if(this.labels&&i.length>0){const s=i=>i.reduce((i,s)=>Math.max(i,this.labelWidth(t,s,e)),0);n+=s(i[0])+6,a>0&&(r-=s(i[a])+6)}const o=s.y+4,h=s.y+s.height-4,l=Math.max(r-n,this.nodeWidth),c=a>0?(l-this.nodeWidth)/a:0;let d=Number.POSITIVE_INFINITY;for(const t of i){const e=t.reduce((t,e)=>t+e.value,0);e>0&&(d=Math.min(d,(h-o-(t.length-1)*this.nodePadding)/e))}(!Number.isFinite(d)||d<0)&&(d=0);for(const[t,e]of i.entries()){if(!e)continue;let i=o+(h-o-(e.reduce((t,e)=>t+e.value*d,0)+(e.length-1)*this.nodePadding))/2;for(const s of e)s.x0=n+t*c,s.x1=s.x0+this.nodeWidth,s.y0=i,s.y1=i+s.value*d,i=s.y1+this.nodePadding}for(const t of this.links)t.width=t.value*d;for(let t=0;t<this.iterations;t++){const e=.99**t,s=Math.max(1-e,(t+1)/this.iterations);for(let t=a-1;t>=0;t--)this.relax(i[t],"out",s,o,h);for(let t=1;t<=a;t++)this.relax(i[t],"in",e,o,h)}this.placeLinks()}relax(t,e,i,s,a){if(t){for(const s of t){let t=0,a=0;for(const i of s[e]){const s="out"===e?i.target:i.source;t+=(s.y0+s.y1)/2*i.value,a+=i.value}if(0===a)continue;const n=(t/a-(s.y0+s.y1)/2)*i;s.y0+=n,s.y1+=n}this.collide(t,s,a)}}collide(t,e,i){const s=this.nodePadding;t.sort((t,e)=>t.y0-e.y0||t.index-e.index);let a=e;for(const e of t){const t=a-e.y0;t>0&&(e.y0+=t,e.y1+=t),a=e.y1+s}const n=a-s-i;if(n>0){const e=t[t.length-1];e.y0-=n,e.y1-=n,a=e.y0;for(let e=t.length-2;e>=0;e--){const i=t[e],n=i.y1+s-a;n>0&&(i.y0-=n,i.y1-=n),a=i.y0}}}placeLinks(){for(const t of this.nodes){t.out.sort((t,e)=>t.target.y0-e.target.y0||t.target.index-e.target.index),t.in.sort((t,e)=>t.source.y0-e.source.y0||t.source.index-e.source.index);let e=t.y0;for(const i of t.out)i.y0=e+i.width/2,e+=i.width;e=t.y0;for(const i of t.in)i.y1=e+i.width/2,e+=i.width}}nodeColor(t){return t.color??this.getFill(t.index)}linkStyleColor(t){return t.color??this.nodeColor("target"===this.linkColor?t.target:t.source)}drawLinks(t){const e=this.over,i=e-this.nodes.length,s=this.linkOpacity;for(const[a,n]of this.links.entries()){const r=n.source.x1,o=n.target.x0,h=(r+o)/2,l=-1===e||(i>=0?a===i:n.source.index===e||n.target.index===e);let c;if(n.color)c=n.color;else if("target"===this.linkColor)c=this.nodeColor(n.target);else if("gradient"===this.linkColor){const e=t.createLinearGradient(r,0,o,0);e.addColorStop(0,this.nodeColor(n.source)),e.addColorStop(1,this.nodeColor(n.target)),c=e}else c=this.nodeColor(n.source);t.globalAlpha=-1===e?s:l?Math.min(1,s+.3):.35*s;const d=Math.max(n.width,1)/2;t.beginPath(),t.moveTo(r,n.y0-d),t.bezierCurveTo(h,n.y0-d,h,n.y1-d,o,n.y1-d),t.lineTo(o,n.y1+d),t.bezierCurveTo(h,n.y1+d,h,n.y0+d,r,n.y0+d),t.closePath(),t.fillStyle=c,t.fill()}t.globalAlpha=1}drawNodes(t){for(const e of this.nodes){const i=Math.max(e.y1-e.y0,1);t.fillStyle=this.nodeColor(e),t.fillRect(e.x0,e.y0,e.x1-e.x0,i),e.index===this.over&&this.hover.stroke.fill&&(t.strokeStyle=this.hover.stroke.fill,t.lineWidth=1.5,t.strokeRect(e.x0,e.y0,e.x1-e.x0,i))}}drawLabels(t,e,i){const s=this.columns.length-1,a=Number.parseFloat(e)||11;t.textBaseline="middle";for(const n of this.nodes){const r=0===s||0===n.depth||n.depth===s;if(!r&&n.y1-n.y0<a)continue;const o=n.name,h=this.text(n.index),l=(n.y0+n.y1)/2,c=0===n.depth&&s>0,d=c?n.x0-6:n.x1+6;t.textAlign=c?"right":"left";const u=this.labelWidth(t,n,e);if(!r){const e=d-3;t.fillStyle=this.chart.panel.format.fill||"white",t.globalAlpha=.75,t.fillRect(e,l-a-1,u+6,2*a+2),t.globalAlpha=1}t.fillStyle=i,t.font=`bold ${e}`,t.fillText(o,d,l-a/2),t.font=e,t.fillText(h,d,l+a/2)}}draw(){if(0===this.nodes.length)return;const t=this.chart.drawContext,{style:e,fill:i}=this.font();t.save(),t.shadowColor="transparent",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0,this.layout(t,e),this.drawLinks(t),this.drawNodes(t),this.labels&&this.drawLabels(t,e,i),t.restore()}clicked(t){this.lastPoint.x=t.x,this.lastPoint.y=t.y;for(const e of this.nodes)if(t.x>=e.x0&&t.x<=e.x1&&t.y>=e.y0&&t.y<=Math.max(e.y1,e.y0+1))return e.index;let e=-1,i=Number.POSITIVE_INFINITY;for(const[s,a]of this.links.entries()){const n=this.linkDistance(a,t);n<i&&(i=n,e=s)}return-1===e?-1:this.nodes.length+e}linkDistance(t,e){const i=t.source.x1,s=t.target.x0;if(e.x<i||e.x>s)return Number.POSITIVE_INFINITY;const a=(i+s)/2;let n=0,r=1;for(let t=0;t<24;t++){const t=(n+r)/2,o=1-t;o*o*o*i+3*o*o*t*a+3*o*t*t*a+t*t*t*s<e.x?n=t:r=t}const o=(n+r)/2,h=1-o,l=(h*h*h+3*h*h*o)*t.y0+(3*h*o*o+o*o*o)*t.y1,c=Math.abs(e.y-l);return c<=Math.max(t.width,1)/2?c:Number.POSITIVE_INFINITY}calc(t,e){const i=this.nodes[t];i?(e.x=(i.x0+i.x1)/2,e.y=Math.min(Math.max(this.lastPoint.y,i.y0),i.y1)):(e.x=this.lastPoint.x,e.y=this.lastPoint.y)}}class ae extends X{constructor(t,e){super(t,e),this.useAxes=!1,this.colorEach="yes"}draw(){if(this.data?.values&&this.data.labels){const t=this.chart.ctx;if(!t)return;this.calcColorEach();const e=this.data.values,i=this.data.labels,s=e.reduce((t,e)=>t+e,0),a=e.map((t,e)=>({value:t,label:i[e]})).sort((t,e)=>e.value-t.value);let n=0;const r=this.chart.chartRect.height,o=this.chart.chartRect.width;for(let e=0;e<a.length;e++){const i=a[e],h=i.value/s*r;t.beginPath(),t.fillStyle=this.getFill(e,this.format),t.fillRect(0,n,o,n+h),t.strokeStyle="black",t.lineWidth=2,t.strokeRect(0,n,o,n+h),t.closePath(),t.fillStyle="white",t.font="16px Arial",t.textAlign="center",t.textBaseline="middle",t.fillText(i.label,o/2,n+h/2),t.stroke(),n+=h}}}}function ne(t){const e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(t.trim());if(e){const t=3===e[1].length?[...e[1]].map(t=>t+t).join(""):e[1],i=Number.parseInt(t,16);return[i>>16&255,i>>8&255,255&i]}const i=/^rgba?\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)/i.exec(t.trim());return i?[Number(i[1]),Number(i[2]),Number(i[3])]:void 0}function re(t,e){const i=ne(t);if(!i)return t;const s=e<0?0:255,a=Math.abs(e);return`rgb(${i.map(t=>Math.round(t+(s-t)*a)).join(",")})`}class oe extends X{fillStyle="white";lineWidth=1.5;borderColor;useAxes=!1;root;tiling="squarify";colorBy="branch";padding=3;headerHeight=22;cornerRadius=3;maxDepth=0;labels=!0;showValues=!0;sortByValue=!0;zoomOnClick=!0;formatValue;onzoom;tiles=[];tileRoot=null;focus=null;lastPoint={x:0,y:0};constructor(e=null,i){const s=e instanceof t?e:null;super(),this.chart=s,this.root=s?i:!e||e instanceof t?void 0:e,this.hover.enabled=!0,this.hover.stroke.fill="rgba(0,0,0,0.55)",this.marks.visible=!1;this.format.font.style="13px Arial",this.palette=new mt(["#4466a3","#f39c35","#4e97a8","#1d7b63","#b3080e","#8e5fa8","#d9a21b","#2b406b","#5db79e","#707070","#e0678a","#8a9a2c"])}setRoot(t,e=!0){return this.root=t,this.focus=null,this.over=-1,this.redraw(e),this}zoomTo(t,e=!0){return this.focus=t&&t!==this.root?t:null,this.over=-1,this.onzoom&&this.onzoom(this.focus),this.redraw(e),this}path(){const t=[];for(let e=this.tileRoot;e;e=e.parent)t.unshift(e.node);return this.tileRoot?t:this.root?[this.root]:[]}redraw(t){t&&this.chart&&(this.chart._requestDraw?this.chart._requestDraw():this.chart.draw())}formatNumber(t){return this.formatValue?this.formatValue(t):String(Math.round(100*t)/100)}build(){const t=[],e=(t,i,s,a,n)=>{const r={index:-1,node:t,parent:i,depth:s,value:0,branch:a,children:[],x:0,y:0,width:0,height:0,header:0,open:!1},o=Array.isArray(t.children)?t.children:[];if(o.length>0&&n){for(const t of o){const i=e(t,r,s+1,0===s?r.children.length:a,!0);i&&r.children.push(i)}r.value=r.children.reduce((t,e)=>t+e.value,0),r.open=r.children.length>0}else if(o.length>0)r.value=this.sumOf(t);else{const e=void 0===t.value?1:t.value;r.value=Number.isFinite(e)&&e>0?e:0}return r.value>0?r:null};this.tiles=t,this.tileRoot=null;const i=this.root?e(this.root,null,0,0,!0):null;if(!i)return this.data.values=[],void(this.data.labels=[]);let s=i;if(this.focus){const t=this.find(i,this.focus);t?s=t:this.focus=null}this.tileRoot=s;const a=this.maxDepth>0?this.maxDepth:Number.POSITIVE_INFINITY,n=(e,i)=>{if(e.index=t.length,t.push(e),i>=a)e.open=!1;else for(const t of e.children)n(t,i+1)};n(s,0),this.data.values=t.map(t=>t.value),this.data.labels=t.map(t=>t.node.name??"")}sumOf(t){const e=Array.isArray(t.children)?t.children:[];if(0===e.length){const e=void 0===t.value?1:t.value;return Number.isFinite(e)&&e>0?e:0}return e.reduce((t,e)=>t+this.sumOf(e),0)}find(t,e){if(t.node===e)return t;for(const i of t.children){const t=this.find(i,e);if(t)return t}}layout(t,e,i,s,a){if(t.x=e,t.y=i,t.width=s,t.height=a,t.header=0,!t.open||0===t.children.length)return void this.collapse(t);const n=this.padding;let r=i+n;const o=t.depth===this.tileRoot?.depth?0:this.headerHeight;o>0&&a>o+2*n+8&&s>24&&(t.header=o,r+=o-n);const h={x:e+n,y:r,width:s-2*n,height:i+a-n-r};if(h.width<=0||h.height<=0)return t.header=0,void this.collapse(t);const l=this.sortByValue?[...t.children].sort((t,e)=>e.value-t.value):t.children;this.tile(l,h,t.depth);const c=n/2;for(const t of l){const e=Math.max(t.width-2*c,0),i=Math.max(t.height-2*c,0);this.layout(t,t.x+c,t.y+c,e,i)}}collapse(t){t.open=!1;for(const e of t.children)e.x=e.y=e.width=e.height=0,e.header=0,this.collapse(e)}tile(t,e,i){const s=t.reduce((t,e)=>t+e.value,0);if(s<=0)return;const a="sliceDice"===this.tiling?i%2==0?"dice":"slice":this.tiling;if("slice"===a||"dice"===a){let i=0;for(const n of t){const t=n.value/s;"slice"===a?(n.x=e.x,n.y=e.y+i,n.width=e.width,n.height=e.height*t,i+=n.height):(n.x=e.x+i,n.y=e.y,n.width=e.width*t,n.height=e.height,i+=n.width)}return}this.squarify(t,e,s)}squarify(t,e,i){let{x:s,y:a,width:n,height:r}=e;const o=n*r/i;let h=0;const l=(t,e,i,s)=>Math.max(s*s*i/(t*t),t*t/(s*s*e));for(;h<t.length;){const e=Math.min(n,r);let i=h,c=0,d=Number.POSITIVE_INFINITY,u=0,m=Number.POSITIVE_INFINITY;for(;i<t.length;){const s=t[i].value*o,a=Math.min(d,s),n=Math.max(u,s),r=l(c+s,a,n,e);if(i>h&&r>m)break;c+=s,d=a,u=n,m=r,i++}const f=t.slice(h,i);if(n>=r){const t=Math.min(c/r,n);let e=0;for(const i of f){const n=i.value*o/(t||1);i.x=s,i.y=a+e,i.width=t,i.height=n,e+=n}s+=t,n-=t}else{const t=Math.min(c/n,r);let e=0;for(const i of f){const n=i.value*o/(t||1);i.x=s+e,i.y=a,i.width=n,i.height=t,e+=n}a+=t,r-=t}h=i}}tileColor(t){if(t.node.color)return t.node.color;const e=this.tileRoot?.depth??0,i=t.depth-e;if("node"===this.colorBy)return this.getFill(t.index);if("level"===this.colorBy)return this.getFill(i);let s=t;for(;s.parent&&s.parent!==this.tileRoot;)s=s.parent;const a=s.node.color??this.getFill(s.parent?t.branch:0);if(t===this.tileRoot)return re(a,-.35);const n=t.depth-(this.tileRoot?.depth??0)-1;return n<=0?a:re(a,Math.min(.2+.12*(n-1),.6))}legendCount(){return 0}legendColor(t){const e=this.tiles[t];return e?this.tileColor(e):""}valueText(t){return this.formatNumber(this.data.values[t])}tooltipParts(t){const e=this.tiles[t];if(!e)return;const i=[];for(let t=e.parent;t&&t!==this.tileRoot?.parent;t=t.parent)i.unshift(t.node.name??"");const s=[],a=this.tileRoot?.value??0;a>0&&s.push(["Share of total",`${(e.value/a*100).toFixed(1)}%`]),e.parent&&e.parent!==this.tileRoot&&e.parent.value>0&&s.push([`Share of ${e.parent.node.name??"parent"}`,`${(e.value/e.parent.value*100).toFixed(1)}%`]);const n=this.leafCount(e);return e.children.length>0&&s.push(["Items",String(n)]),i.length>0&&s.push(["Path",i.filter(Boolean).join(" › ")]),{label:e.node.name||"(unnamed)",value:this.formatNumber(e.value),color:this.tileColor(e),details:s}}leafCount(t){return 0===t.children.length?1:t.children.reduce((t,e)=>t+this.leafCount(e),0)}fitText(t,e,i){if(t.measureText(e).width<=i)return e;let s="";for(const a of e){if(t.measureText(`${s}${a}…`).width>i)break;s+=a}return s?`${s}…`:""}roundRect(t,e,i,s,a){const n=Math.min(this.cornerRadius,s/2,a/2);t.beginPath(),n>.5&&"function"==typeof t.roundRect?t.roundRect(e,i,s,a,n):t.rect(e,i,s,a)}drawTile(t,e,i,s){const{x:a,y:n,width:r,height:o}=e;if(r<1||o<1)return;const h=this.over,l=e.index===h,c=h>=0&&!l&&!this.isRelated(e,h),d=this.tileColor(e),u=e.open&&e.children.length>0;if(u&&e===this.tileRoot)return;if(t.globalAlpha=c?.55:1,this.roundRect(t,a,n,r,o),t.fillStyle=u&&0===e.header&&e!==this.tileRoot?re(d,.05):d,t.fill(),this.lineWidth>0&&(t.lineWidth=this.lineWidth,t.strokeStyle=l&&this.hover.stroke.fill?this.hover.stroke.fill:this.borderColor??(this.chart.panel.format.fill||"white"),u&&!l||t.stroke()),l&&(t.fillStyle="rgba(255,255,255,0.14)",this.roundRect(t,a,n,r,o),t.fill()),t.globalAlpha=1,!this.labels)return;const m=e.node.name,f=function(t){const e=ne(t);return e&&(299*e[0]+587*e[1]+114*e[2])/1e3>150?"#1c1917":"white"}(d);if(t.textBaseline="middle",t.textAlign="left",t.fillStyle=f,u){if(e.header>0&&m){t.font=`bold ${i}px ${s}`;const o=this.showValues?this.formatNumber(e.value):"",h=o?t.measureText(o).width+6:0,l=this.fitText(t,m,r-12-h);l&&t.fillText(l,a+6,n+e.header/2+this.padding/2),l&&o&&r>t.measureText(l).width+h+12&&(t.font=`${i}px ${s}`,t.globalAlpha=.85,t.textAlign="right",t.fillText(o,a+r-6,n+e.header/2+this.padding/2),t.globalAlpha=1)}return}const g=1.25*i;if(!m||r<28||o<g+4)return;t.font=`bold ${i}px ${s}`;const x=this.fitText(t,m,r-12);if(!x)return;const p=this.showValues&&o>=2*g+6,b=n+6+g/2;if(t.fillText(x,a+6,b),p){t.font=`${i}px ${s}`,t.globalAlpha=.85;const n=this.fitText(t,this.formatNumber(e.value),r-12);n&&t.fillText(n,a+6,b+g),t.globalAlpha=1}}isRelated(t,e){const i=this.tiles[e];if(!i)return!1;for(let e=i;e;e=e.parent)if(e===t)return!0;for(let e=t;e;e=e.parent)if(e===i)return!0;return!1}draw(){this.build();const t=this.tileRoot;if(!t)return;const e=this.chart.drawContext,i=this.chart.chartRect,s=this.format.font,a=Number.parseFloat(s.style)||13,n=/\d+(?:\.\d+)?px\s+(.+)$/.exec(s.style)?.[1]??"Arial";this.layout(t,i.x,i.y,i.width,i.height),e.save(),e.shadowColor="transparent",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0,e.lineJoin="round";for(const t of this.tiles)this.drawTile(e,t,a,n);e.restore()}clicked(t){this.lastPoint.x=t.x,this.lastPoint.y=t.y;for(let e=this.tiles.length-1;e>=0;e--){const i=this.tiles[e];if(t.x>=i.x&&t.x<=i.x+i.width&&t.y>=i.y&&t.y<=i.y+i.height)return i===this.tileRoot&&this.tiles.length>1?-1:i.index}return-1}mousedown(t){if(!this.zoomOnClick||!this.chart)return!1;const e={x:0,y:0};this.chart.calcMouse(t,e);const i=this.tiles[this.clicked(e)];return!(!i?.open||0===i.children.length||i===this.tileRoot)&&(this.zoomTo(i.node),!0)}calc(t,e){const i=this.tiles[t];i&&(e.x=Math.min(Math.max(this.lastPoint.x,i.x),i.x+i.width),e.y=Math.min(Math.max(this.lastPoint.y,i.y),i.y+i.height))}}class he extends X{colorEach="yes";bandwidth=0;smoothing=1;cut=0;resolution=100;scale="width";width=80;inner="median";fillOpacity=.55;lineWidth=2;medianColor="#111827";dotStroke="#ffffff";formatValue;source=[];violins=[];continuous=!1;constructor(t,e){super(t,e),this.hover.enabled=!0,this.format.shadow.visible=!1}setData(t,e,i=!0){if(!t||"function"!=typeof t[Symbol.iterator])throw new TypeError("Violin.setData requires an iterable collection of groups");const s=Array.from(t),a=null==e?[]:Array.from(e),n=s.length>0&&s.every(t=>"number"==typeof t)?[s]:s;return this.source=n.map((t,e)=>{const i=Array.isArray(t)?{values:t}:t;return{...i,name:i.name??a[e]??String(e+1)}}),this.rebuild(i)}rebuild(t=!0){return this.violins=this.source.map(t=>this.estimate(t)),this.data.values=this.violins.map(t=>t.stats.median),this.data.labels=this.violins.map(t=>t.name),t&&this.chart?.draw(),this}statsOf(t){return this.violins[t]?.stats}estimate(t){const e=t.values.filter(t=>Number.isFinite(t)).sort((t,e)=>t-e),i=e.length,s=t.name??"";if(0===i){const e={count:i,min:0,q1:0,median:0,q3:0,max:0,mean:0,bandwidth:0};return{name:s,color:t.color,stats:e,grid:[],density:[]}}const a=e.reduce((t,e)=>t+e,0)/i,n=lt(e,.25),r=lt(e,.75),o={count:i,min:e[0],q1:n,median:lt(e,.5),q3:r,max:e[i-1],mean:a,bandwidth:this.bandwidth>0?this.bandwidth:le(e,a,r-n)*this.smoothing},h=Math.max(2,Math.floor(this.resolution)),l=o.min-this.cut*o.bandwidth,c=o.max+this.cut*o.bandwidth,d=Array.from({length:h},(t,e)=>l+(c-l)*e/(h-1)),u=1/(i*o.bandwidth*Math.sqrt(2*Math.PI)),m=d.map(t=>{let i=0;for(const s of e){const e=(t-s)/o.bandwidth;e<6&&e>-6&&(i+=Math.exp(-.5*e*e))}return i*u});return{name:s,color:t.color,stats:o,grid:d,density:m}}reference(t){const e=t=>Math.max(0,...t.density);return"width"===this.scale?e(this.violins[t]):"count"===this.scale?Math.max(0,...this.violins.map(t=>e(t)*t.stats.count)):Math.max(0,...this.violins.map(e))}halfWidth(){const t=this.notmandatory;return Math.abs(t.calc(1)-t.calc(0))*this.width*.01/2}outline(t){const e=this.violins[t];if(!e||0===e.grid.length)return;const i=this.reference(t),s=this.halfWidth(),a="count"===this.scale?e.stats.count:1,n=this.mandatoryAxis;return{x:this.notmandatory.calc(t),ys:e.grid.map(t=>n.calc(t)),widths:e.density.map(t=>i>0?t*a*s/i:0)}}trace(t,{x:e,ys:i,widths:s}){t.beginPath(),t.moveTo(e+s[0],i[0]);for(let a=1;a<i.length;a++)t.lineTo(e+s[a],i[a]);for(let a=i.length-1;a>=0;a--)t.lineTo(e-s[a],i[a]);t.closePath()}draw(){const t=this.chart.ctx;if(!t||0===this.violins.length)return;const e=this.chart.chartRect;t.save(),t.beginPath(),t.rect(e.x,e.y,e.width,e.height),t.clip();for(let e=0;e<this.violins.length;e++){const i=this.outline(e);if(!i)continue;const s=this.violins[e].color??this.getFill(e,this.format),a=this.hover.enabled&&this.over===e;this.trace(t,i),t.globalAlpha=Math.min(1,this.fillOpacity+(a?.2:0)),t.fillStyle=s,t.fill(),t.globalAlpha=1,this.lineWidth>0&&(t.lineJoin="round",t.lineWidth=this.lineWidth+(a?1:0),t.strokeStyle=s,t.stroke()),"none"!==this.inner&&this.drawInner(t,e,i.x,s)}t.restore()}drawInner(t,e,i,s){const{stats:a}=this.violins[e],n=this.mandatoryAxis,r=n.calc(a.median),o="box"===this.inner;if(t.strokeStyle=this.medianColor,t.lineCap="round",o)t.lineWidth=1.5,t.beginPath(),t.moveTo(i,n.calc(a.min)),t.lineTo(i,n.calc(a.max)),t.stroke(),t.lineWidth=6,t.beginPath(),t.moveTo(i,n.calc(a.q1)),t.lineTo(i,n.calc(a.q3)),t.stroke();else{const e=.5*this.halfWidth();t.lineWidth=2.5,t.beginPath(),t.moveTo(i-e,r),t.lineTo(i+e,r),t.stroke()}t.beginPath(),t.arc(i,r,4.5,0,2*Math.PI),t.fillStyle=o?this.dotStroke:s,t.fill(),t.lineWidth=1.5,t.strokeStyle=o?this.medianColor:this.dotStroke,t.stroke(),t.lineCap="butt"}clicked(t){for(let e=this.violins.length-1;e>=0;e--){const i=this.outline(e);if(!i)continue;const{x:s,ys:a,widths:n}=i;for(let i=1;i<a.length;i++){const r=Math.min(a[i-1],a[i]),o=Math.max(a[i-1],a[i]);if(t.y<r||t.y>o)continue;const h=a[i]===a[i-1]?0:(t.y-a[i-1])/(a[i]-a[i-1]),l=n[i-1]+(n[i]-n[i-1])*h;if(Math.abs(t.x-s)<=Math.max(l,2))return e;break}}return-1}formatNumber(t){return this.formatValue?this.formatValue(t):String(Math.round(100*t)/100)}valueText(t){const e=this.violins[t]?.stats;return e?this.formatNumber(e.median):"0"}tooltipParts(t){const e=this.violins[t];if(!e)return;const{stats:i}=e;return{label:e.name,value:this.formatNumber(i.median),color:e.color??this.getFill(t),details:[["Values",String(i.count)],["Minimum",this.formatNumber(i.min)],["Q1",this.formatNumber(i.q1)],["Median",this.formatNumber(i.median)],["Q3",this.formatNumber(i.q3)],["Maximum",this.formatNumber(i.max)],["Mean",this.formatNumber(i.mean)]]}}legendColor(t){return this.violins[t]?.color??super.legendColor(t)}vertMargins(t){t.x=t.y=this.lineWidth+1}minXValue(){return-.5}maxXValue(){return Math.max(0,this.violins.length-1)+.5}minYValue(){return this.violins.length>0?Math.min(...this.violins.map(t=>t.grid[0]??0)):0}maxYValue(){return this.violins.length>0?Math.max(...this.violins.map(t=>t.grid.at(-1)??0)):0}}function le(t,e,i){const s=t.length,a=Math.sqrt(t.reduce((t,i)=>t+(i-e)**2,0)/Math.max(1,s-1)),n=i>0?Math.min(a,i/1.34):a;return n>0?.9*n*s**-.2:Math.max(.05*Math.abs(t[0]),1)}class ce extends x{constructor(t,e){super(t,e),this.barStyle="line",this.marks.visible=!1,this.colorEach=!1,this.format.shadow.visible=!1,this.format.gradient.visible=!1,this.format.stroke.fill=""}}class de extends pt{smooth=!0;dataChanged=!0;d=[];width=0;height=0;image=void 0;imageData=void 0;c2=void 0;ctx2=void 0;x0=0;y0=0;x1=0;y1=0;min=null;max=null;range=0;InvRange255=1;addRandom(t,e){t=t||200,e=e||t,this.data.values=[];const i=this.data.values;for(let s=0;s<t;s++){const a=new Array(e);i[s]=a;const n=.5*this.square(Math.cos(s/(.2*e)));for(let i=0;i<e;i++)a[i]=this.square(Math.cos(i/(.2*t)))-Math.cos(i/(.5*e))+n}return this.dataChanged=!0,this}optimize(t,e,i){e&&(null!==e.getPropertyValue("image-rendering")&&e.setProperty("image-rendering",t?"optimizeQuality":"optimizeSpeed",""),void 0!==e.msInterpolationMode&&(e.msInterpolationMode=t?"bicubic":"nearest-neighbor")),i.imageSmoothingEnabled=t}square(t){return t*t}tryDrawGrid(t,e){if(""!==t.fill){let i,s,a,n=1,r=1;for(n=Math.max(1+4*this.width/Math.abs(this.axis2.calc(this.width)-this.axis2.calc(0))|0,1),r=Math.max(1+4*this.height/Math.abs(this.axis.calc(this.height)-this.axis.calc(0))|0,1),e.beginPath(),s=1;s<this.width;s+=n)i=this.axis2.calc(s-.5),e.moveTo(i,this.y1),e.lineTo(i,this.y0);for(a=1;a<this.height;a+=r)i=this.axis.calc(a-.5),e.moveTo(this.x0,i),e.lineTo(this.x1,i);t.prepare(),e.stroke()}}calcMinMax(){let t=this.d[0][0],e=t;for(let i=0;i<this.height;i++){const s=this.d[i];for(let i=0;i<this.width;i++){const a=s[i];null!==a&&(null===t&&(t=a),null===e&&(e=a),a<t?t=a:a>e&&(e=a))}}this.min=t,this.max=e;const i=t??0,s=e??0;this.range=s-i,this.InvRange255=s===i?1:255/(s-i)}fillPixels(t){const e=this.imageData;if(!e)return;let i=0;const s=this.palette.grayScale,a=this.palette.inverted,n=this.min??0,r=this.max??0;for(let o=0;o<this.height;o++){const h=this.d[o];for(let o=0;o<this.width;o++){if(s){const t=this.InvRange255*(a?r-h[o]:h[o]-n);e[i++]=t,e[i++]=t,e[i++]=t}else{const t=this.getColor(h[o]);e[i++]=Number(t.r),e[i++]=Number(t.g),e[i++]=Number(t.b)}e[i++]=t}}}draw(){const t=this.chart.ctx;if(t&&this.width>0){if(t.__webgl){this.d=this.data.values,this.axis=this.mandatoryAxis,this.axis2=this.notmandatory;const e=this.axis2.calc(-.5),i=this.axis2.calc(this.width-.5),s=this.axis.calc(-.5),a=this.axis.calc(this.height-.5);this.x0=Math.min(e,i),this.x1=Math.max(e,i),this.y0=Math.min(s,a),this.y1=Math.max(s,a);for(let e=0;e<this.height;e++){const i=this.axis.calc(e-.5),s=this.axis.calc(e+.5);for(let a=0;a<this.width;a++){const n=this.d[e][a];if(!Number.isFinite(n))continue;const r=this.axis2.calc(a-.5),o=this.axis2.calc(a+.5),h=0===this.range?this.palette.colors[0]:this.getColor(n);h&&(t.fillStyle="string"==typeof h?h:`rgb(${h.r},${h.g},${h.b})`,t.fillRect(Math.min(r,o),Math.min(i,s),Math.abs(o-r),Math.abs(s-i)))}}return}if(!this.image||!this.c2||this.c2.width!==this.width||this.c2.height!==this.height){if(this.c2||(this.c2=O()?.createElement("canvas")),!this.c2?.getContext)return;if(this.c2.width=this.width,this.c2.height=this.height,this.ctx2=this.c2.getContext("2d"),!this.ctx2)return;this.image=this.ctx2.getImageData(0,0,this.width,this.height),this.imageData=this.image.data}this.dataChanged&&(this.fillPixels(255*(1-this.format.transparency)),this.dataChanged=!1);const e=this.ctx2;if(!e||!this.image)return;e.putImageData(this.image,0,0),this.optimize(this.smooth,this.chart.canvas.style,t),this.axis=this.mandatoryAxis,this.axis2=this.notmandatory,this.y1=this.axis.calc(-.5),this.y0=this.axis.calc(this.height-.5),this.x0=this.axis2.calc(-.5),this.x1=this.axis2.calc(this.width-.5);let i=this.x0,s=this.y0,a=1,n=1;this.axis.inverted&&(n=-1,s=-this.y1),this.axis2.inverted&&(a=-1,i=-this.x1),t.scale(a,n),t.drawImage(e.canvas,0,0,this.width,this.height,i,s,this.x1-this.x0,this.y1-this.y0),t.setTransform(1,0,0,1,0,0),this.tryDrawGrid(this.format.stroke,t)}}valueText(t){const e=t%this.width,i=t/this.width|0;return this.data.values[i][e].toFixed(this.decimals)}minXValue(){return-.5}maxXValue(){return this.width-.5}minYValue(){return-.5}maxYValue(){return this.height-.5}recalcAxes(){super.recalcAxes(),this.d=this.data.values,this.height=this.d.length,this.width=this.height>0?this.d[0].length:0,this.size={x:this.width,y:this.height},this.width>0&&this.dataChanged&&(this.calcMinMax(),this._min=this.min??0,this._max=this.max??0,this._range=this.range,this.prepareColors())}clicked(t){let e,i;return t.x>=this.x0&&t.x<=this.x1&&(e=this.width*(t.x-this.x0)/(this.x1-this.x0)|0,t.y>=this.y0&&t.y<=this.y1)?(i=this.height*(t.y-this.y0)/(this.y1-this.y0)|0,i*this.width+e):-1}}class ue extends de{d=[];_sizeY=0;grid;wireFrame=!1;maxZ=3;constructor(t,e){super(t,e),this.grid=new F(this.chart).stroke}getY(t,e){return this.d[t][e]}draw(){if(this.size.x>0&&this.size.y>0&&(this.d=this.data.values,this.chart.__webgl)){const t=new $;this.bounds(t),this._sizeY=this.size.y-1,this.chart.drawContext.surface?.(this.size,this.getY.bind(this),t,this.wireFrame,this.grid.visible?this.grid.fill:null,this.maxZ)}}minXValue(){return 0}maxXValue(){return this.size.y}minYValue(){return this._min}maxYValue(){return this._max}}class me extends X{constructor(t,e){super(),this.format.stroke.fill="black",this.format.stroke.size=1,this.format.font.style="16px Arial",this.lineFill="#000",this.txtHeight=this.format.textHeight("Wj"),this.min=0,this.max=100,this.increment=20,this.markSymbol="%",this.decimals=0,this.barHeight=30,this.showTicks=!0,this.cornerRadius=0,this.trackColor="",this.ranges=[],this.gradientColors=["red","green"],this.animationIncrement=1,this.animationDuration=0,this._animStart=0,this._animFrom=0,this.startValue=void 0===t?0:t,this.finalValue=void 0===e?0:e,this.value=this.startValue,this._animationFrame=null,this._animationCleanupChart=null,this._cancelGaugeAnimation=()=>{null!==this._animationFrame&&ft(this._animationFrame),this._animationFrame=null},this.useAxes=!1}setValue(t,e=!0){this.startValue=this.value,this.finalValue=t,this.animation=e,this.chart?.draw()}_ensureAnimationCleanup(){const t=this.chart;if(!t||this._animationCleanupChart===t)return;this._animationCleanupChart=t;const e=this._cancelGaugeAnimation;e&&t._eventCleanups.push(e)}_scheduleGaugeAnimation(t){this._animationFrame=gt(()=>{this._animationFrame=null,t()})}_clamp(t){return Math.min(Math.max(t,this.min),this.max)}_position(t){const e=this.max-this.min;return e>0?this.gaugeX+this.gaugeWidth*(this._clamp(t)-this.min)/e:this.gaugeX}drawAll(t,e,i,s,a,n,r){this.drawBar(t,e,i,s,a,n,r,!0)}drawBar(t,e,i,s,a,n,r,o){const h=this.format;t=this._clamp(t),this.value=t,e.clearRect(this.gaugeX-1,s-1,this.gaugeWidth+2,this.gaugeHeight+2);const l=Math.min(this.cornerRadius,this.gaugeHeight/2,this.gaugeWidth/2),c=()=>{e.beginPath(),l>0?e.roundRect(this.gaugeX,s,this.gaugeWidth,this.gaugeHeight,l):e.rect(this.gaugeX,s,this.gaugeWidth,this.gaugeHeight)};this.trackColor&&(e.fillStyle=this.trackColor,c(),e.fill());const d=this._position(t),u=this.ranges.find(e=>t>=e.from&&t<=e.to);if(e.save(),c(),e.clip(),e.fillStyle=u?u.color:a,e.fillRect(this.gaugeX,s,d-this.gaugeX,this.gaugeHeight),e.restore(),this.marks.visible){const i=`${t.toFixed(this.decimals)}${this.markSymbol}`;e.font=this.marks.format.font.style;const a=this.marks.format.textHeight("Wj"),n=e.measureText(i).width+16,r=Math.max(a,18)+10,o=s-r-9,h=Math.min(Math.max(d-n/2,this.gaugeX),this.gaugeX+this.gaugeWidth-n),l=Math.min(Math.max(d,h+8),h+n-8);e.clearRect(this.gaugeX-n,o-1,this.gaugeWidth+2*n,r+9),e.fillStyle=u?u.color:this.gradientColors[1],e.beginPath(),e.roundRect(h,o,n,r,6),e.moveTo(l-5,o+r),e.lineTo(l+5,o+r),e.lineTo(l,o+r+6),e.closePath(),e.fill(),e.fillStyle=this.marks.format.font.fill,e.textAlign="center",e.textBaseline="middle",e.fillText(i,h+n/2,o+r/2),e.textBaseline="alphabetic"}if(h.stroke.size>0&&(e.strokeStyle=h.stroke.fill,e.lineWidth=h.stroke.size,c(),e.stroke()),o&&this.showTicks&&this.increment>0&&this.max>this.min){const t=Math.floor((this.max-this.min)/this.increment+1e-9),i=s+this.gaugeHeight+4;e.beginPath(),e.strokeStyle=this.lineFill,e.lineWidth=1;for(let s=0;s<=t;s++){const t=Math.round(this._position(this.min+s*this.increment))+.5;e.moveTo(t,i),e.lineTo(t,i+6)}e.stroke(),e.fillStyle=this.lineFill,e.font=this.chart.axes.bottom.labels.format.font.style;for(let s=0;s<=t;s++){const t=this.min+s*this.increment,a=`${t}${this.markSymbol}`;e.textAlign="center",e.fillText(a,this._position(t),i+8+this.txtHeight)}}}animateGauge(t,e,i,s,a,n,r,o,h){if(!this.chart.destroyed&&t!==e){if(this.animationDuration>0){const i=Math.min((Date.now()-this._animStart)/this.animationDuration,1),s=1-(1-i)**3;t=i>=1?e:this._animFrom+(e-this._animFrom)*s}else{const i=this.animationIncrement>0?this.animationIncrement:1;Math.abs(t-e)<=i?t=e:t<e?t+=i:t-=i}this.drawBar(t,o,this.gaugeX,a,i,this.gaugeWidth,this.gaugeHeight,h),this._scheduleGaugeAnimation(()=>this.animateGauge(t,e,i,s,a,n,r,o,!1))}}draw(){this._ensureAnimationCleanup(),this._cancelGaugeAnimation?.();const t=this._clamp(this.startValue),e=this._clamp(this.finalValue),i=this.chart.drawContext,s=this.chart.chartRect.height,a=this.chart.chartRect.width;this.gaugeX=30,this.gaugeWidth=Math.max(a-2*this.gaugeX,1),this.gaugeHeight=this.barHeight;const n=(s-this.gaugeHeight)/2+(this.marks.visible?14:0)-(this.showTicks?12:0),r=i.createLinearGradient(this.gaugeX,0,this.gaugeX+this.gaugeWidth,0);r.addColorStop(0,this.gradientColors[0]),r.addColorStop(1,this.gradientColors[1]),this.animation&&t!==e?(this._animStart=Date.now(),this._animFrom=t,this.animateGauge(t,e,r,this.gaugeX,n,this.gaugeWidth,this.gaugeHeight,i,!0)):this.drawAll(e,i,this.gaugeX,n,r,this.gaugeWidth,this.gaugeHeight)}}const fe={create:()=>new de,setData(t,e){t.data.values=e.map(t=>[...t]),t.dataChanged=!0}},ge={...fe,create:()=>new ue,configure(t,e){void 0!==e.wireFrame&&(t.wireFrame=e.wireFrame)}},xe={create:()=>new me,setData(t,e){const i=t;i.value=i.startValue=i.finalValue=e},configure(t,e){const i=t;void 0!==e.min&&(i.min=e.min),void 0!==e.max&&(i.max=e.max)}},pe={create:()=>new Qt,setData(t,e,i){const s=t.data;s.close=s.values=e.map(t=>t.close),s.open=e.map(t=>t.open),s.high=e.map(t=>t.high),s.low=e.map(t=>t.low),s.labels=i?[...i]:[],e.some(t=>void 0!==t.x)?s.x=e.map((t,e)=>t.x??e):delete s.x},configure(t,e){void 0!==e.style&&(t.style=e.style)}},be={create:()=>new Kt,setData(t,e,i){const s=t.data;s.values=e.map(t=>t.high),s.lows=e.map(t=>t.low),s.labels=i?[...i]:[]}},ve={create:()=>new Zt,setData(t,e){t.setData(e,void 0,!1)},configure(t,e){const i=t;void 0!==e.bins&&(i.bins=e.bins),void 0!==e.binWidth&&(i.binWidth=e.binWidth),void 0!==e.rule&&(i.rule=e.rule),void 0!==e.normalize&&(i.normalize=e.normalize),i.rebin(!1)}},ye={create:()=>new Ut,setData(t,e,i){const s=t.data;s.start=s.values=e.map(t=>t.start),s.end=e.map(t=>t.end),s.x=e.map((t,e)=>t.x??e),s.labels=e.map((t,e)=>t.label??i?.[e]??"")},configure(t,e){const i=t;void 0!==e.height&&(i.height=e.height),void 0!==e.borderRadius&&(i.format.round.x=e.borderRadius,i.format.round.y=e.borderRadius),void 0!==e.nextTasks&&(i.nextTasks=e.nextTasks.map(([t,e])=>[t,e])),void 0!==e.nextTasksStrokeStyle&&(i.nextTasksStrokeStyle=e.nextTasksStrokeStyle),void 0!==e.nextTasksPosition&&(i.nextTasksPosition=e.nextTasksPosition)}},we={create:()=>new oe,setData(t,e){const i=t;i.root!==e&&i.setRoot(e,!1)},configure(t,e){const i=t;void 0!==e.tiling&&(i.tiling=e.tiling),void 0!==e.colorBy&&(i.colorBy=e.colorBy),void 0!==e.padding&&(i.padding=e.padding),void 0!==e.headerHeight&&(i.headerHeight=e.headerHeight),void 0!==e.cornerRadius&&(i.cornerRadius=e.cornerRadius),void 0!==e.lineWidth&&(i.lineWidth=e.lineWidth),void 0!==e.borderColor&&(i.borderColor=e.borderColor),void 0!==e.maxDepth&&(i.maxDepth=e.maxDepth),void 0!==e.labels&&(i.labels=e.labels),void 0!==e.showValues&&(i.showValues=e.showValues),void 0!==e.sortByValue&&(i.sortByValue=e.sortByValue),void 0!==e.zoomOnClick&&(i.zoomOnClick=e.zoomOnClick),void 0!==e.formatValue&&(i.formatValue=e.formatValue)}},ke={create:()=>new he,setData(t,e,i){t.setData(e,i,!1)},configure(t,e){const i=t;void 0!==e.bandwidth&&(i.bandwidth=e.bandwidth),void 0!==e.smoothing&&(i.smoothing=e.smoothing),void 0!==e.cut&&(i.cut=e.cut),void 0!==e.resolution&&(i.resolution=e.resolution),void 0!==e.scale&&(i.scale=e.scale),void 0!==e.width&&(i.width=e.width),void 0!==e.inner&&(i.inner=e.inner),void 0!==e.fillOpacity&&(i.fillOpacity=e.fillOpacity),void 0!==e.lineWidth&&(i.lineWidth=e.lineWidth),void 0!==e.formatValue&&(i.formatValue=e.formatValue),i.rebuild(!1)}},Me={create:()=>new Yt,setData(t,e,i){t.setData(e,i,!1)},configure(t,e){const i=t;void 0!==e.whisker&&(i.whisker=e.whisker),void 0!==e.whiskerRange&&(i.whiskerRange=e.whiskerRange),void 0!==e.whiskerMode&&(i.whiskerMode=e.whiskerMode),void 0!==e.quantiles&&(i.quantiles=e.quantiles),void 0!==e.minStats&&(i.minStats=e.minStats),void 0!==e.maxStats&&(i.maxStats=e.maxStats),void 0!==e.showPoints&&(i.showPoints=e.showPoints),void 0!==e.pointRadius&&(i.pointRadius=e.pointRadius),void 0!==e.jitter&&(i.jitter=e.jitter),void 0!==e.width&&(i.width=e.width),void 0!==e.showOutliers&&(i.showOutliers=e.showOutliers),void 0!==e.showMean&&(i.showMean=e.showMean),void 0!==e.fillOpacity&&(i.fillOpacity=e.fillOpacity),void 0!==e.lineWidth&&(i.lineWidth=e.lineWidth),void 0!==e.formatValue&&(i.formatValue=e.formatValue),i.rebuild(!1)}},Ce={create:()=>new se,setData(t,e){t.setGraph(e,!1)},configure(t,e){const i=t;void 0!==e.nodeWidth&&(i.nodeWidth=e.nodeWidth),void 0!==e.nodePadding&&(i.nodePadding=e.nodePadding),void 0!==e.linkOpacity&&(i.linkOpacity=e.linkOpacity),void 0!==e.linkColor&&(i.linkColor=e.linkColor),void 0!==e.labels&&(i.labels=e.labels),void 0!==e.formatValue&&(i.formatValue=e.formatValue)}};function Te(t,e){return{create:t,setData(t,e){t.value=e},configure(t,i){const s=t;void 0!==i.min&&(s.min=i.min),void 0!==i.max&&(s.max=i.max),void 0!==i.animationDuration&&s.animate&&(s.animate.duration=i.animationDuration),e?.(s,i)}}}const Se=Te(()=>new Tt,(t,e)=>{void 0!==e.step&&(t.step=e.step),void 0!==e.minorTicks&&(t.minor.count=e.minorTicks,t.minor.visible=e.minorTicks>0),void 0!==e.angle&&(t.angle=e.angle),void 0!==e.rotation&&(t.rotation=e.rotation),void 0!==e.inverted&&(t.inverted=e.inverted),void 0!==e.rotateText&&(t.rotateText=e.rotateText),void 0!==e.shape&&(t.shape=e.shape),void 0!==e.handShape&&(t.hand.shape=e.handShape),void 0!==e.ranges&&t.setRanges(e.ranges),void 0!==e.units&&(t.units.text=e.units),void 0!==e.showValue&&(t.marks.visible=e.showValue),void 0!==e.draggable&&(t.drag.enabled=e.draggable),void 0!==e.formatLabel&&(t.ongetText=e.formatLabel),void 0!==e.formatValue&&(t.formatValue=e.formatValue)}),Ve=Te(()=>new ee),Ae=Te(()=>new Lt,(t,e)=>{void 0!==e.angle&&(t.angle=e.angle),void 0!==e.rotation&&(t.rotation=e.rotation),void 0!==e.thickness&&(t.thickness=e.thickness),void 0!==e.roundCaps&&(t.roundCaps=e.roundCaps),void 0!==e.inverted&&(t.inverted=e.inverted),void 0!==e.ranges&&(t.ranges=e.ranges.map(t=>({...t}))),void 0!==e.target&&(t.target=e.target),void 0!==e.caption&&(t.caption=e.caption),void 0!==e.units&&(t.units=e.units),void 0!==e.limits&&(t.limits=e.limits),void 0!==e.showValue&&(t.showValue=e.showValue),void 0!==e.draggable&&(t.drag.enabled=e.draggable),void 0!==e.knob&&(t.knob=e.knob),void 0!==e.step&&(t.step=e.step),void 0!==e.formatValue&&(t.formatValue=e.formatValue),void 0!==e.trackColor&&(t.trackColor=e.trackColor),void 0!==e.textColor&&(t.textColor=e.textColor)}),ze={create:()=>new Jt,configure(t,e){const i=t;void 0!==e.vertical&&(i.yMandatory=e.vertical),void 0!==e.target&&(i.limit.origin=e.target),void 0!==e.ranges&&(i.states.values=e.ranges)}};function _e(){N("colorGrid",fe),N("surface",ge),N("linearGauge",xe),N("activityGauge",Ht),N("arcGauge",Ae),N("bullet",ze),N("candle",pe),N("circularGauge",Se),N("gantt",ye),N("highLowBar",be),N("histogram",ve),N("horizArea",te),N("horizBar",Gt),N("numericGauge",Ve),N("polar",ie),N("sankey",Ce),N("sliced",ae),N("treemap",we),N("violin",ke),N("boxPlot",Me),N("volume",ce)}class Re extends V{definition;constructor(t){super(),this.definition=t,t.horizontal&&(this.yMandatory=!1),t.setup?.(this)}context(){const t=this.data.values.length,e=this.notmandatory;let i=[0,t];if(this.data.x){const s=xt(this.data.x,t,e.minimum,e.maximum);s&&(i=s)}else i=[Math.max(0,J(e.minimum)-1),Math.min(t,J(e.maximum)+2)];return{series:this,canvas:this.chart.drawContext,count:t,range:i,horizontal:!this.yMandatory,point:(t,e=new B)=>(this.calc(t,e),e),scale:t=>this.mandatoryAxis.calc(t),isNull:t=>this.isNull(t),value:t=>this.data.values[t],label:t=>this.data.labels?.[t]??"",color:t=>this.getFill(t,this.format)||this.format.fill}}draw(){0!==this.data.values.length&&(this.isStacked="no"!==this.stacked,this.isStack100="100"===this.stacked,this.definition.draw(this.context()),this.pointer.visible&&this.drawPointers())}clicked(t){const e=this.definition.hitTest;if(e&&this.data.values.length>0){const i=e(this.context(),t);if(i>=0)return i}return super.clicked(t)}}function Pe(t){if("function"!=typeof t?.draw)throw new Error("defineSeriesType requires a draw function");return{create:()=>new Re(t),setData:t.setData,configure:t.configure}}class Ne{header=0;firstCol=0;byCols=!0;chart;table;refreshCallback=null;handleCellClick=t=>{this.editCell(t.currentTarget)};handleInputChange=t=>{this.commitInputValue(t.currentTarget)};constructor(t,e){this.chart=e;const i=rt("HTMLTableElement"),s=O();this.table=i&&t instanceof i?t:"string"==typeof t?s?.getElementById(t):t}editCell(t){const e=rt("HTMLTableCellElement");if(!(e&&t instanceof e))return;t.onclick=null;const i=O();if(!i)return;const s=i.createElement("input");s.type="text",s.style.width=`${t.clientWidth}px`,s.onchange=this.handleInputChange,s.onkeydown=this.handleKeyDown,s.onblur=this.handleInputChange,s.value=t.innerHTML,s.className="inline-editor",t.innerHTML="",t.appendChild(s),s.focus()}handleKeyDown=t=>{const e=nt()?.event,i=e?.keyCode??t.which;if(!i)return!0;const s=t.currentTarget,a=s.parentElement,n=a?.parentElement,r=n?.parentElement;if(!a||!n||!r)return!0;if(27!==i&&13!==i||this.commitInputValue(s),9===i){if(t.shiftKey){if(a.cellIndex>this.firstCol)this.commitInputValue(s),this.editCell(n.cells[a.cellIndex-1]);else if(n.rowIndex>1){this.commitInputValue(s);const t=r.rows[n.rowIndex-1];this.editCell(t.cells[t.cells.length-1])}}else a.cellIndex<n.cells.length-1?(this.commitInputValue(s),this.editCell(n.cells[a.cellIndex+1])):n.rowIndex<r.rows.length-1&&(this.commitInputValue(s),this.editCell(r.rows[n.rowIndex+1].cells[1]));return!1}return 40===i&&n.rowIndex<r.rows.length-1?(this.commitInputValue(s),this.editCell(r.rows[n.rowIndex+1].cells[a.cellIndex])):38===i&&n.rowIndex>this.header&&(this.commitInputValue(s),this.editCell(r.rows[n.rowIndex-1].cells[a.cellIndex])),!0};commitInputValue(t){const e=rt("HTMLInputElement");if(!(e&&t instanceof e&&t.onchange))return;t.onchange=null;const i=t.parentElement;i&&(i.innerHTML=t.value,i.onclick=this.handleCellClick,this.refreshCallback?.(i))}highlightRows(t,e=null){const i="string"==typeof e?O()?.getElementById(e):e;if(this.table)for(const e of Array.from(this.table.rows))e.onmouseover=()=>{e.style.backgroundColor=t,i&&(i.style.visibility="visible")},e.onmouseout=()=>{e.style.backgroundColor="#FFFFFF",i&&(i.style.visibility="hidden")}}refreshChartFromCell(t){const e=this.byCols?t.parentElement?.rowIndex:t.cellIndex,i=this.byCols?t.cellIndex:t.parentElement?.rowIndex;if(null==e||null==i)return;const s=t.innerHTML;if(1===e){if(1===i)return void(s!==this.chart.footer.text&&(this.chart.footer.text=s,this.chart.draw()));const t=this.chart.series.items[i-2];return void(t&&s!==t.title&&(t.title=s,this.chart.draw()))}const a=e-2;if(1===i)return this.chart.series.each(t=>{t.data.labels[a]=s}),void this.chart.draw();const n=this.chart.series.items[i-2],r=Number.parseFloat(s);n&&r!==n.data.values[a]&&(n.data.values[a]=r,this.chart.draw())}enableEditing(t,e=this.refreshChartFromCell.bind(this)){if(this.refreshCallback=e,!this.table)return;const i=t?this.handleCellClick:null;for(const t of Array.from(this.table.rows))for(const e of Array.from(t.cells))e.onclick=i}setCellHoverState(t,e){t.style.backgroundColor=e?"gold":"",t.style.color=e?"white":""}getCellForPoint(t,e){if(!this.table)return null;const i=t.chart.series.items.indexOf(t)+2;return this.byCols?this.table.rows[e+2]?.cells[i]:this.table.rows[i]?.cells[e+2]}updateHoverCell=(t,e)=>{if(-1!==t.over){const e=this.getCellForPoint(t,t.over);e&&this.setCellHoverState(e,!1)}if(-1!==e){const i=this.getCellForPoint(t,e);i&&this.setCellHoverState(i,!0)}};getVisibleSeriesIndex(t){let e=-1;for(let i=0;i<this.chart.series.count();i++)if(this.chart.series.items[i].visible&&++e===t)return i;return-1}handleLegendHover=(t,e)=>{let i=this.byCols,s=1;const a=this.chart;if(a.legend.showValues()){const t=a.series.items.find(t=>t.visible);if(!t)return;s=2+a.series.items.indexOf(t),i=!i}this.table&&(i?(-1!==t&&this.setCellHoverState(this.table.rows[s].cells[this.getVisibleSeriesIndex(t)+2],!1),-1!==e&&this.setCellHoverState(this.table.rows[s].cells[this.getVisibleSeriesIndex(e)+2],!0)):(-1!==t&&this.setCellHoverState(this.table.rows[t+2].cells[s],!1),-1!==e&&this.setCellHoverState(this.table.rows[e+2].cells[s],!0)))}}export{Ht as ActivityGauge,H as Annotation,Lt as ArcGauge,_ as Area,x as Bar,Y as BaseAnimation,Yt as BoxPlot,Jt as Bullet,Qt as Candle,ht as CanvasRenderer,t as Chart,Ne as ChartTable,Ct as CheckBox,Tt as CircularGauge,de as ColorGrid,bt as CursorTool,k as CustomBar,V as CustomSeries,_t as DataDimension,At as DataEngine,zt as DataMetric,ut as DateUtils,w as Donut,vt as DragTool,et as FadeAnimation,F as Format,Ut as Gantt,Kt as HighLowBar,Zt as Histogram,te as HorizArea,Gt as HorizBar,r as Line,me as LinearGauge,Ot as MarksAnimation,ee as NumericGauge,mt as Palette,pt as PaletteSeries,B as Point,ie as Polar,$ as Rectangle,se as Sankey,Ft as Scroller,X as Series,tt as SeriesAnimation,ae as Sliced,Vt as Slider,$t as SliderControl,ue as Surface,I as Tool,K as ToolTip,oe as Treemap,he as Violin,ce as Volume,Ae as arcGaugeSeriesType,Me as boxPlotSeriesType,ze as bulletSeriesType,pe as candleSeriesType,Se as circularGaugeSeriesType,fe as colorGridSeriesType,Et as createWorkerChart,Pe as defineSeriesType,wt as describeChart,z as drawSpline,ye as ganttSeriesType,be as highLowBarSeriesType,ve as histogramSeriesType,xe as linearGaugeSeriesType,Ve as numericGaugeSeriesType,Bt as registerAllOptions,_e as registerAllSeriesTypes,N as registerSeriesType,Ce as sankeySeriesType,Wt as startChartWorker,ge as surfaceSeriesType,we as treemapSeriesType,ke as violinSeriesType};
|
|
16
|
+
//# sourceMappingURL=teechart.core.esm.js.map
|