apexcharts 8.2.0 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/apexcharts.common.js +2 -2
- package/dist/apexcharts.core.js +271 -173
- package/dist/apexcharts.core.min.js +2 -2
- package/dist/apexcharts.css +35 -0
- package/dist/apexcharts.esm.js +1722 -1527
- package/dist/apexcharts.full.js +1459 -1075
- package/dist/apexcharts.full.min.js +2 -2
- package/dist/apexcharts.js +994 -715
- package/dist/apexcharts.min.js +2 -2
- package/dist/apexcharts.ssr.common.js +2 -2
- package/dist/apexcharts.ssr.esm.js +994 -715
- package/dist/area.common.js +2 -2
- package/dist/area.esm.js +91 -40
- package/dist/bar.common.js +2 -2
- package/dist/bar.esm.js +433 -394
- package/dist/bar.js +2 -2
- package/dist/boxPlot.common.js +2 -2
- package/dist/boxPlot.esm.js +364 -322
- package/dist/bubble.common.js +2 -2
- package/dist/bubble.esm.js +91 -40
- package/dist/candlestick.common.js +2 -2
- package/dist/candlestick.esm.js +364 -322
- package/dist/candlestick.js +2 -2
- package/dist/column.common.js +2 -2
- package/dist/column.esm.js +433 -394
- package/dist/core.common.js +2 -2
- package/dist/core.esm.js +271 -173
- package/dist/donut.common.js +1 -1
- package/dist/donut.esm.js +1 -1
- package/dist/dumbbell.common.js +2 -2
- package/dist/dumbbell.esm.js +433 -394
- package/dist/features/all.common.js +2 -2
- package/dist/features/all.esm.js +250 -187
- package/dist/features/annotations.common.js +1 -1
- package/dist/features/annotations.esm.js +1 -1
- package/dist/features/annotations.js +1 -1
- package/dist/features/context-menu.common.js +1 -1
- package/dist/features/context-menu.esm.js +1 -1
- package/dist/features/context-menu.js +1 -1
- package/dist/features/drilldown.common.js +2 -2
- package/dist/features/drilldown.esm.js +4 -2
- package/dist/features/drilldown.js +2 -2
- package/dist/features/dumbbell.common.js +1 -1
- package/dist/features/dumbbell.esm.js +1 -1
- package/dist/features/dumbbell.js +1 -1
- package/dist/features/exports.common.js +1 -1
- package/dist/features/exports.esm.js +1 -1
- package/dist/features/exports.js +1 -1
- package/dist/features/facet.common.js +1 -1
- package/dist/features/facet.esm.js +1 -1
- package/dist/features/facet.js +1 -1
- package/dist/features/highlight-filter.common.js +2 -2
- package/dist/features/highlight-filter.esm.js +14 -9
- package/dist/features/highlight-filter.js +2 -2
- package/dist/features/history.common.js +1 -1
- package/dist/features/history.esm.js +1 -1
- package/dist/features/history.js +1 -1
- package/dist/features/ink.common.js +1 -1
- package/dist/features/ink.esm.js +1 -1
- package/dist/features/ink.js +1 -1
- package/dist/features/keyboard.common.js +2 -2
- package/dist/features/keyboard.esm.js +97 -145
- package/dist/features/keyboard.js +2 -2
- package/dist/features/legend.common.js +2 -2
- package/dist/features/legend.esm.js +63 -43
- package/dist/features/legend.js +2 -2
- package/dist/features/link.common.js +1 -1
- package/dist/features/link.esm.js +1 -1
- package/dist/features/link.js +1 -1
- package/dist/features/marks.common.js +1 -1
- package/dist/features/marks.esm.js +1 -1
- package/dist/features/marks.js +1 -1
- package/dist/features/measure.common.js +1 -1
- package/dist/features/measure.esm.js +1 -1
- package/dist/features/measure.js +1 -1
- package/dist/features/morph.common.js +1 -1
- package/dist/features/morph.esm.js +1 -1
- package/dist/features/morph.js +1 -1
- package/dist/features/perspectives.common.js +1 -1
- package/dist/features/perspectives.esm.js +1 -1
- package/dist/features/perspectives.js +1 -1
- package/dist/features/raincloud.common.js +1 -1
- package/dist/features/raincloud.esm.js +1 -1
- package/dist/features/raincloud.js +1 -1
- package/dist/features/renderer-canvas.common.js +2 -2
- package/dist/features/renderer-canvas.esm.js +2 -1
- package/dist/features/renderer-canvas.js +2 -2
- package/dist/features/stats.common.js +1 -1
- package/dist/features/stats.esm.js +1 -1
- package/dist/features/stats.js +1 -1
- package/dist/features/storyboard.common.js +1 -1
- package/dist/features/storyboard.esm.js +1 -1
- package/dist/features/storyboard.js +1 -1
- package/dist/features/streamgraph.common.js +2 -2
- package/dist/features/streamgraph.esm.js +3 -2
- package/dist/features/streamgraph.js +2 -2
- package/dist/features/toolbar.common.js +2 -2
- package/dist/features/toolbar.esm.js +92 -2
- package/dist/features/toolbar.js +2 -2
- package/dist/features/trellis.common.js +2 -2
- package/dist/features/trellis.esm.js +83 -47
- package/dist/features/trellis.js +2 -2
- package/dist/features/waterfall.common.js +1 -1
- package/dist/features/waterfall.esm.js +1 -1
- package/dist/features/waterfall.js +1 -1
- package/dist/features/weave.common.js +1 -1
- package/dist/features/weave.esm.js +1 -1
- package/dist/features/weave.js +1 -1
- package/dist/full.common.js +2 -2
- package/dist/full.esm.js +950 -795
- package/dist/heatmap.common.js +2 -2
- package/dist/heatmap.esm.js +3 -17
- package/dist/heatmap.js +2 -2
- package/dist/histogram.common.js +2 -2
- package/dist/histogram.esm.js +433 -394
- package/dist/icicle.common.js +2 -2
- package/dist/icicle.esm.js +54 -38
- package/dist/icicle.js +2 -2
- package/dist/line.common.js +2 -2
- package/dist/line.esm.js +91 -40
- package/dist/line.js +2 -2
- package/dist/locales/en.json +2 -1
- package/dist/locales/ro.json +3 -2
- package/dist/pictograms.common.js +1 -1
- package/dist/pictograms.esm.js +1 -1
- package/dist/pictograms.js +1 -1
- package/dist/pie.common.js +1 -1
- package/dist/pie.esm.js +1 -1
- package/dist/pie.js +1 -1
- package/dist/polarArea.common.js +1 -1
- package/dist/polarArea.esm.js +1 -1
- package/dist/radar.common.js +2 -2
- package/dist/radar.esm.js +5 -4
- package/dist/radar.js +2 -2
- package/dist/radialBar.common.js +1 -1
- package/dist/radialBar.esm.js +1 -1
- package/dist/radialBar.js +1 -1
- package/dist/raincloud.common.js +2 -2
- package/dist/raincloud.esm.js +72 -26
- package/dist/rangeArea.common.js +2 -2
- package/dist/rangeArea.esm.js +91 -40
- package/dist/rangeBar.common.js +2 -2
- package/dist/rangeBar.esm.js +433 -394
- package/dist/scatter.common.js +2 -2
- package/dist/scatter.esm.js +91 -40
- package/dist/streamgraph.common.js +2 -2
- package/dist/streamgraph.esm.js +93 -41
- package/dist/sunburst.common.js +2 -2
- package/dist/sunburst.esm.js +103 -93
- package/dist/sunburst.js +2 -2
- package/dist/treemap.common.js +2 -2
- package/dist/treemap.esm.js +105 -86
- package/dist/treemap.js +2 -2
- package/dist/unit-shapes.common.js +1 -1
- package/dist/unit-shapes.esm.js +1 -1
- package/dist/unit-shapes.js +1 -1
- package/dist/unit.common.js +2 -2
- package/dist/unit.esm.js +280 -202
- package/dist/unit.js +2 -2
- package/dist/violin.common.js +2 -2
- package/dist/violin.esm.js +72 -26
- package/dist/violin.js +2 -2
- package/dist/waterfall.common.js +2 -2
- package/dist/waterfall.esm.js +432 -393
- package/package.json +1 -1
- package/src/apexcharts.js +13 -6
- package/src/assets/apexcharts.css +35 -0
- package/src/charts/Bar.js +62 -55
- package/src/charts/BarStacked.js +80 -88
- package/src/charts/BoxCandleStick.js +28 -31
- package/src/charts/Icicle.js +37 -37
- package/src/charts/Line.js +118 -42
- package/src/charts/Radar.js +5 -7
- package/src/charts/RangeBar.js +47 -43
- package/src/charts/Sunburst.js +101 -98
- package/src/charts/Treemap.js +108 -66
- package/src/charts/Unit.js +368 -250
- package/src/charts/Violin.js +48 -30
- package/src/charts/common/Breadcrumb.js +2 -2
- package/src/charts/common/Hierarchy.js +32 -11
- package/src/charts/common/Jitter.js +32 -7
- package/src/charts/common/bar/DataLabels.js +76 -81
- package/src/charts/common/bar/Helpers.js +43 -7
- package/src/charts/common/line/Helpers.js +12 -15
- package/src/charts/common/partition/NodeTooltip.js +8 -1
- package/src/charts/common/partition/Partition.js +33 -1
- package/src/charts/common/treemap/Helpers.js +3 -11
- package/src/locales/en.json +2 -1
- package/src/locales/ro.json +3 -2
- package/src/modules/Core.js +4 -0
- package/src/modules/CoreUtils.js +18 -42
- package/src/modules/Data.js +23 -24
- package/src/modules/DataLabels.js +6 -6
- package/src/modules/Graphics.js +62 -49
- package/src/modules/Markers.js +3 -1
- package/src/modules/Range.js +44 -29
- package/src/modules/RendererController.js +17 -3
- package/src/modules/Scales.js +32 -9
- package/src/modules/Series.js +39 -18
- package/src/modules/Theme.js +1 -1
- package/src/modules/ZoomPanSelection.js +119 -2
- package/src/modules/accessibility/KeyboardNavigation.js +114 -186
- package/src/modules/animations/LengthTransition.js +22 -2
- package/src/modules/drilldown/Breadcrumb.js +5 -2
- package/src/modules/helpers/Destroy.js +1 -1
- package/src/modules/highlightFilter/HighlightFilter.js +8 -9
- package/src/modules/highlightFilter/TreemapPart.js +2 -2
- package/src/modules/legend/HeatmapGradientLegend.js +76 -45
- package/src/modules/legend/Helpers.js +2 -0
- package/src/modules/legend/Legend.js +11 -12
- package/src/modules/settings/Options.js +7 -0
- package/src/modules/streamgraph/StreamLabels.js +1 -0
- package/src/modules/tooltip/Tooltip.js +20 -4
- package/src/modules/tooltip/Utils.js +8 -0
- package/src/modules/trellis/Trellis.js +6 -0
- package/src/modules/trellis/TrellisChrome.js +18 -7
- package/src/modules/trellis/TrellisSync.js +2 -0
- package/src/renderers/canvas/CanvasGraphics.js +1 -0
- package/src/ssr/DOMShim.js +10 -0
- package/src/types/internal.d.ts +9 -3
- package/types/apexcharts.d.ts +31 -12
package/dist/apexcharts.js
CHANGED
|
@@ -7,6 +7,7 @@ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
|
7
7
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
9
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __pow = Math.pow;
|
|
10
11
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
12
|
var __spreadValues = (a, b) => {
|
|
12
13
|
for (var prop in b || (b = {}))
|
|
@@ -54,7 +55,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
54
55
|
});
|
|
55
56
|
};
|
|
56
57
|
/*!
|
|
57
|
-
* ApexCharts v8.
|
|
58
|
+
* ApexCharts v8.3.0
|
|
58
59
|
* (c) 2018-2026 ApexCharts
|
|
59
60
|
*/
|
|
60
61
|
|
|
@@ -128,6 +129,15 @@ var __async = (__this, __arguments, generator) => {
|
|
|
128
129
|
setAttribute(name2, value) {
|
|
129
130
|
this.attributes.set(name2, value);
|
|
130
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Namespaced attributes serialize by their qualified name.
|
|
134
|
+
* @param {any} _ns
|
|
135
|
+
* @param {string} name
|
|
136
|
+
* @param {any} value
|
|
137
|
+
*/
|
|
138
|
+
setAttributeNS(_ns, name2, value) {
|
|
139
|
+
this.setAttribute(name2, value);
|
|
140
|
+
}
|
|
131
141
|
/**
|
|
132
142
|
* @param {string} name
|
|
133
143
|
*/
|
|
@@ -1925,7 +1935,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
1925
1935
|
}
|
|
1926
1936
|
}
|
|
1927
1937
|
const name = "en";
|
|
1928
|
-
const options = { "months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], "shortMonths": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], "days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], "toolbar": { "exportToSVG": "Download SVG", "exportToPNG": "Download PNG", "exportToCSV": "Download CSV", "menu": "Menu", "selection": "Selection", "selectionZoom": "Selection Zoom", "zoomIn": "Zoom In", "zoomOut": "Zoom Out", "pan": "Panning", "reset": "Reset Zoom", "measure": "Measure" } };
|
|
1938
|
+
const options = { "months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], "shortMonths": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], "days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], "toolbar": { "exportToSVG": "Download SVG", "exportToPNG": "Download PNG", "exportToCSV": "Download CSV", "menu": "Menu", "selection": "Selection", "selectionZoom": "Selection Zoom", "zoomIn": "Zoom In", "zoomOut": "Zoom Out", "pan": "Panning", "reset": "Reset Zoom", "measure": "Measure", "wheelZoomHint": "Use {key} + scroll to zoom" } };
|
|
1929
1939
|
const en = {
|
|
1930
1940
|
name,
|
|
1931
1941
|
options
|
|
@@ -2735,7 +2745,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
2735
2745
|
// asked for and nobody can undo is a trap. Set either to true to
|
|
2736
2746
|
// force the gesture on regardless (for a page that supplies its own
|
|
2737
2747
|
// reset control), or false to turn it off outright.
|
|
2748
|
+
//
|
|
2749
|
+
// The 'auto' wheel is also cooperative: a bare wheel scrolls the
|
|
2750
|
+
// page, and Ctrl/Cmd + wheel (or a trackpad pinch) zooms, so a page
|
|
2751
|
+
// of charts scrolls past them. `true` zooms on every wheel.
|
|
2738
2752
|
allowMouseWheelZoom: "auto",
|
|
2753
|
+
// With the cooperative wheel, a bare scroll over the chart briefly
|
|
2754
|
+
// shows how to zoom it ("Use Ctrl + scroll to zoom").
|
|
2755
|
+
wheelHint: true,
|
|
2739
2756
|
// Momentum: two-finger pinch-zoom on touch devices. Zooms the x-axis
|
|
2740
2757
|
// around the pinch centroid (matching the x-only wheel/toolbar zoom),
|
|
2741
2758
|
// frame-by-frame rather than the 400ms wheel throttle.
|
|
@@ -9073,21 +9090,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
9073
9090
|
});
|
|
9074
9091
|
gl.seriesYAxisMap = axisSeriesMap.map((x2) => x2);
|
|
9075
9092
|
gl.seriesYAxisReverseMap = seriesYAxisReverseMap.map((x2) => x2);
|
|
9076
|
-
gl.seriesYAxisMap.forEach((axisSeries, ai) => {
|
|
9077
|
-
axisSeries.forEach((si) => {
|
|
9078
|
-
if (
|
|
9079
|
-
/** @type {any} */
|
|
9080
|
-
cnf.series[si] && /** @type {any} */
|
|
9081
|
-
cnf.series[si].group === void 0
|
|
9082
|
-
) {
|
|
9083
|
-
const _series = (
|
|
9084
|
-
/** @type {any} */
|
|
9085
|
-
cnf.series[si]
|
|
9086
|
-
);
|
|
9087
|
-
_series.group = "apexcharts-axis-".concat(ai.toString());
|
|
9088
|
-
}
|
|
9089
|
-
});
|
|
9090
|
-
});
|
|
9091
9093
|
}
|
|
9092
9094
|
/**
|
|
9093
9095
|
* @param {number | null} [index]
|
|
@@ -9221,12 +9223,15 @@ var __async = (__this, __arguments, generator) => {
|
|
|
9221
9223
|
(s2, i2) => isBarSeries(s2) ? -1 : i2
|
|
9222
9224
|
).filter((i2) => i2 !== -1) : [];
|
|
9223
9225
|
const stackedTotals = excluded.length ? this.getStackedSeriesTotals(excluded) : w.seriesData.stackedSeriesTotals;
|
|
9224
|
-
const sx = w.axisFlags.isXNumeric &&
|
|
9226
|
+
const sx = w.axisFlags.isXNumeric && w.seriesData.seriesX;
|
|
9227
|
+
const gi = w.labelData.seriesGroupIndex;
|
|
9228
|
+
const byKey = sx || w.labelData.seriesGroups.length > 1;
|
|
9229
|
+
const key = (i2, j2) => gi[i2] + " " + (sx ? sx[i2][j2] : j2);
|
|
9225
9230
|
const byX = /* @__PURE__ */ new Map();
|
|
9226
|
-
if (
|
|
9231
|
+
if (byKey) {
|
|
9227
9232
|
w.seriesData.series.forEach((s2, i2) => {
|
|
9228
9233
|
if (excluded.indexOf(i2) < 0) {
|
|
9229
|
-
s2.forEach((v, j2) => byX.set(
|
|
9234
|
+
s2.forEach((v, j2) => byX.set(key(i2, j2), (byX.get(key(i2, j2)) || 0) + v));
|
|
9230
9235
|
}
|
|
9231
9236
|
});
|
|
9232
9237
|
}
|
|
@@ -9234,7 +9239,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
9234
9239
|
const seriesPercent = [];
|
|
9235
9240
|
if (Array.isArray(ser)) {
|
|
9236
9241
|
for (let j2 = 0; j2 < ser.length; j2++) {
|
|
9237
|
-
const total =
|
|
9242
|
+
const total = byKey ? byX.get(key(i2, j2)) : stackedTotals[j2];
|
|
9238
9243
|
let percent = 0;
|
|
9239
9244
|
if (total) {
|
|
9240
9245
|
percent = 100 * ser[j2] / total;
|
|
@@ -9281,13 +9286,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
9281
9286
|
if (!zRatio) {
|
|
9282
9287
|
zRatio = 1;
|
|
9283
9288
|
}
|
|
9284
|
-
|
|
9285
|
-
|
|
9286
|
-
|
|
9287
|
-
|
|
9288
|
-
|
|
9289
|
-
_hasNegsGl.hasNegs = true;
|
|
9290
|
-
}
|
|
9289
|
+
const _hasNegsGl = (
|
|
9290
|
+
/** @type {any} */
|
|
9291
|
+
gl
|
|
9292
|
+
);
|
|
9293
|
+
_hasNegsGl.hasNegs = gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0;
|
|
9291
9294
|
if (w.globals.seriesYAxisReverseMap.length > 0) {
|
|
9292
9295
|
const scaleBaseLineYScale = (y, i2) => {
|
|
9293
9296
|
const yAxis = w.config.yaxis[w.globals.seriesYAxisReverseMap[i2]];
|
|
@@ -9444,7 +9447,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
9444
9447
|
// other series of the same type on the same axis.
|
|
9445
9448
|
/**
|
|
9446
9449
|
* @param {Record<string, any>} typeSeries
|
|
9447
|
-
* @param {
|
|
9450
|
+
* @param {number[]} typeGroups
|
|
9448
9451
|
* @param {string} type
|
|
9449
9452
|
* @param {string} chartClass
|
|
9450
9453
|
*/
|
|
@@ -9456,10 +9459,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
9456
9459
|
const gs = [];
|
|
9457
9460
|
const gi = [];
|
|
9458
9461
|
typeSeries.i.forEach((i2, ii) => {
|
|
9459
|
-
if (
|
|
9460
|
-
/** @type {Record<string,any>} */
|
|
9461
|
-
w.config.series[i2].group === gn
|
|
9462
|
-
) {
|
|
9462
|
+
if (w.labelData.seriesGroupIndex[i2] === gn) {
|
|
9463
9463
|
gs.push(typeSeries.series[ii]);
|
|
9464
9464
|
gi.push(i2);
|
|
9465
9465
|
}
|
|
@@ -11572,6 +11572,22 @@ var __async = (__this, __arguments, generator) => {
|
|
|
11572
11572
|
].join(" ");
|
|
11573
11573
|
return arc;
|
|
11574
11574
|
}
|
|
11575
|
+
/**
|
|
11576
|
+
* stroke.dashArray of a series, shared with the canvas renderer. A plugin
|
|
11577
|
+
* may have claimed it: resolved here rather than written into the config,
|
|
11578
|
+
* so the caller's own dashing is untouched and there is nothing to restore
|
|
11579
|
+
* when the claim goes. See weave/Claims.
|
|
11580
|
+
* @param {number} realIndex
|
|
11581
|
+
*/
|
|
11582
|
+
seriesDash(realIndex) {
|
|
11583
|
+
const d = this.w.config.stroke.dashArray;
|
|
11584
|
+
return resolveClaimed(
|
|
11585
|
+
this.w,
|
|
11586
|
+
"stroke.dashArray",
|
|
11587
|
+
realIndex,
|
|
11588
|
+
Array.isArray(d) ? d[realIndex] : d
|
|
11589
|
+
);
|
|
11590
|
+
}
|
|
11575
11591
|
/**
|
|
11576
11592
|
* @memberof Graphics
|
|
11577
11593
|
* @param {Record<string, any>} opts
|
|
@@ -11644,19 +11660,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
11644
11660
|
w.globals.animationEnded = true;
|
|
11645
11661
|
}
|
|
11646
11662
|
}
|
|
11647
|
-
const strokeDashArrayOpt = w.config.stroke.dashArray;
|
|
11648
|
-
let strokeDashArray = 0;
|
|
11649
|
-
if (Array.isArray(strokeDashArrayOpt)) {
|
|
11650
|
-
strokeDashArray = strokeDashArrayOpt[realIndex];
|
|
11651
|
-
} else {
|
|
11652
|
-
strokeDashArray = w.config.stroke.dashArray;
|
|
11653
|
-
}
|
|
11654
|
-
strokeDashArray = resolveClaimed(
|
|
11655
|
-
w,
|
|
11656
|
-
"stroke.dashArray",
|
|
11657
|
-
realIndex,
|
|
11658
|
-
strokeDashArray
|
|
11659
|
-
);
|
|
11660
11663
|
const el = this.drawPath({
|
|
11661
11664
|
d,
|
|
11662
11665
|
stroke,
|
|
@@ -11665,7 +11668,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
11665
11668
|
fillOpacity: 1,
|
|
11666
11669
|
classes: className,
|
|
11667
11670
|
strokeLinecap,
|
|
11668
|
-
strokeDashArray
|
|
11671
|
+
strokeDashArray: this.seriesDash(realIndex)
|
|
11669
11672
|
});
|
|
11670
11673
|
el.attr("index", realIndex);
|
|
11671
11674
|
if (shouldClipToGrid) {
|
|
@@ -11858,13 +11861,19 @@ var __async = (__this, __arguments, generator) => {
|
|
|
11858
11861
|
}
|
|
11859
11862
|
return g;
|
|
11860
11863
|
}
|
|
11861
|
-
/** @param {{ text: any, maxWidth: any, fontSize: any, fontFamily?: any }} opts */
|
|
11862
|
-
getTextBasedOnMaxWidth({ text, maxWidth, fontSize, fontFamily }) {
|
|
11863
|
-
const tRects = this.getTextRects(
|
|
11864
|
-
|
|
11865
|
-
|
|
11864
|
+
/** @param {{ text: any, maxWidth: any, fontSize: any, fontFamily?: any, fontWeight?: any }} opts */
|
|
11865
|
+
getTextBasedOnMaxWidth({ text, maxWidth, fontSize, fontFamily, fontWeight }) {
|
|
11866
|
+
const tRects = this.getTextRects(
|
|
11867
|
+
text,
|
|
11868
|
+
fontSize,
|
|
11869
|
+
fontFamily,
|
|
11870
|
+
"",
|
|
11871
|
+
true,
|
|
11872
|
+
fontWeight
|
|
11873
|
+
);
|
|
11874
|
+
const n2 = Math.floor(maxWidth / (tRects.width / text.length)) - 3;
|
|
11866
11875
|
if (maxWidth < tRects.width) {
|
|
11867
|
-
return text.slice(0,
|
|
11876
|
+
return n2 < 0 ? "" : text.slice(0, n2) + "...";
|
|
11868
11877
|
}
|
|
11869
11878
|
return text;
|
|
11870
11879
|
}
|
|
@@ -11901,7 +11910,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
11901
11910
|
const commonProps = {
|
|
11902
11911
|
maxWidth,
|
|
11903
11912
|
fontSize,
|
|
11904
|
-
fontFamily
|
|
11913
|
+
fontFamily,
|
|
11914
|
+
fontWeight
|
|
11905
11915
|
};
|
|
11906
11916
|
let elText;
|
|
11907
11917
|
if (Array.isArray(text)) {
|
|
@@ -12102,7 +12112,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
12102
12112
|
if (w.config.states.hover.filter.type !== "none") {
|
|
12103
12113
|
if (!w.interact.isTouchDevice) {
|
|
12104
12114
|
const hoverFilter = w.config.states.hover.filter;
|
|
12105
|
-
filters.applyFilter(
|
|
12115
|
+
filters.applyFilter(
|
|
12116
|
+
path,
|
|
12117
|
+
Filters.isSliceChart(w) ? j2 : i2,
|
|
12118
|
+
hoverFilter.type,
|
|
12119
|
+
hoverFilter.value
|
|
12120
|
+
);
|
|
12106
12121
|
}
|
|
12107
12122
|
}
|
|
12108
12123
|
}
|
|
@@ -12136,33 +12151,28 @@ var __async = (__this, __arguments, generator) => {
|
|
|
12136
12151
|
}
|
|
12137
12152
|
if (Filters.hoverOutlineOwnsHoverState(w)) return;
|
|
12138
12153
|
if (w.config.states.hover.filter.type !== "none") {
|
|
12139
|
-
filters.getDefaultFilter(path, i2);
|
|
12154
|
+
filters.getDefaultFilter(path, Filters.isSliceChart(w) ? j2 : i2);
|
|
12140
12155
|
}
|
|
12141
12156
|
}
|
|
12142
12157
|
/**
|
|
12143
12158
|
* Clear every selected data point (single-select mode): reset the selection
|
|
12144
|
-
* array and restore the default filter on
|
|
12145
|
-
*
|
|
12146
|
-
*
|
|
12147
|
-
* @param {any} filters
|
|
12159
|
+
* array and restore the default filter on each selected node, with its own
|
|
12160
|
+
* series index (dropShadow.enabledOnSeries is per series; a pie slice's
|
|
12161
|
+
* shadow is per slice, j).
|
|
12162
|
+
* @param {any} filters
|
|
12148
12163
|
*/
|
|
12149
|
-
_clearAllDataPointSelections(filters
|
|
12164
|
+
_clearAllDataPointSelections(filters) {
|
|
12150
12165
|
const w = this.w;
|
|
12151
12166
|
w.interact.selectedDataPoints = [];
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
);
|
|
12155
|
-
const elCircles = w.dom.Paper.find(
|
|
12156
|
-
".apexcharts-series circle:not(.apexcharts-decoration-element), .apexcharts-series rect:not(.apexcharts-decoration-element)"
|
|
12157
|
-
);
|
|
12158
|
-
const deSelect = (els) => {
|
|
12159
|
-
Array.prototype.forEach.call(els, (el) => {
|
|
12167
|
+
w.dom.Paper.find('.apexcharts-series [selected="true"]').forEach(
|
|
12168
|
+
(el) => {
|
|
12160
12169
|
el.node.setAttribute("selected", "false");
|
|
12161
|
-
filters.getDefaultFilter(
|
|
12162
|
-
|
|
12163
|
-
|
|
12164
|
-
|
|
12165
|
-
|
|
12170
|
+
filters.getDefaultFilter(
|
|
12171
|
+
el,
|
|
12172
|
+
+el.node.getAttribute(Filters.isSliceChart(w) ? "j" : "index")
|
|
12173
|
+
);
|
|
12174
|
+
}
|
|
12175
|
+
);
|
|
12166
12176
|
}
|
|
12167
12177
|
/**
|
|
12168
12178
|
* Toggle the selected state of a single data point. Mutates
|
|
@@ -12182,7 +12192,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
12182
12192
|
return "false";
|
|
12183
12193
|
}
|
|
12184
12194
|
if (!w.config.states.active.allowMultipleDataPointsSelection && w.interact.selectedDataPoints.length > 0) {
|
|
12185
|
-
this._clearAllDataPointSelections(filters
|
|
12195
|
+
this._clearAllDataPointSelections(filters);
|
|
12186
12196
|
}
|
|
12187
12197
|
path.node.setAttribute("selected", "true");
|
|
12188
12198
|
if (typeof w.interact.selectedDataPoints[i2] === "undefined") {
|
|
@@ -12202,10 +12212,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
12202
12212
|
if (Filters.sliceOffsetOwnsActiveState(w)) return;
|
|
12203
12213
|
if (selected === "true") {
|
|
12204
12214
|
const activeFilter = w.config.states.active.filter;
|
|
12205
|
-
if (activeFilter !== "none") {
|
|
12215
|
+
if (activeFilter.type !== "none") {
|
|
12206
12216
|
filters.applyFilter(path, i2, activeFilter.type, activeFilter.value);
|
|
12207
12217
|
} else {
|
|
12208
|
-
if (w.config.states.hover.filter !== "none") {
|
|
12218
|
+
if (w.config.states.hover.filter.type !== "none") {
|
|
12209
12219
|
if (!w.interact.isTouchDevice) {
|
|
12210
12220
|
const hoverFilter = w.config.states.hover.filter;
|
|
12211
12221
|
filters.applyFilter(path, i2, hoverFilter.type, hoverFilter.value);
|
|
@@ -12238,7 +12248,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
12238
12248
|
const crossfilterClick = !!(link && (typeof link.dimension === "function" || link.enabled));
|
|
12239
12249
|
if (!crossfilterClick) {
|
|
12240
12250
|
const selected = this._togglePointSelection(path, filters, i2, j2);
|
|
12241
|
-
this._applyPointSelectionFilter(
|
|
12251
|
+
this._applyPointSelectionFilter(
|
|
12252
|
+
path,
|
|
12253
|
+
filters,
|
|
12254
|
+
Filters.isSliceChart(w) ? j2 : i2,
|
|
12255
|
+
selected
|
|
12256
|
+
);
|
|
12242
12257
|
}
|
|
12243
12258
|
if (typeof w.config.chart.events.dataPointSelection === "function") {
|
|
12244
12259
|
w.config.chart.events.dataPointSelection(e2, this.ctx, {
|
|
@@ -13026,7 +13041,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
13026
13041
|
}
|
|
13027
13042
|
setGlobalMarkerSize() {
|
|
13028
13043
|
const w = this.w;
|
|
13029
|
-
w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size : [w.config.markers.size];
|
|
13044
|
+
w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size.slice() : [w.config.markers.size];
|
|
13030
13045
|
if (w.globals.markers.size.length > 0) {
|
|
13031
13046
|
if (w.globals.markers.size.length < w.seriesData.series.length + 1) {
|
|
13032
13047
|
for (let i2 = 0; i2 <= w.seriesData.series.length; i2++) {
|
|
@@ -13736,6 +13751,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
13736
13751
|
* @param {string} fontSize
|
|
13737
13752
|
*/
|
|
13738
13753
|
dataLabelsCorrection(x2, y, val, i2, dataPointIndex, alwaysDrawDataLabel, fontSize) {
|
|
13754
|
+
var _a;
|
|
13739
13755
|
const w = this.w;
|
|
13740
13756
|
const graphics = new Graphics(this.w);
|
|
13741
13757
|
let drawnextLabel = false;
|
|
@@ -13778,6 +13794,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
13778
13794
|
if (dataPointIndex === 0 || alwaysDrawDataLabel) {
|
|
13779
13795
|
drawnextLabel = true;
|
|
13780
13796
|
}
|
|
13797
|
+
if (drawnextLabel) {
|
|
13798
|
+
((_a = w.globals.lastDrawnDataLabelsIndexes)[i2] || (_a[i2] = [])).push(len + 1);
|
|
13799
|
+
}
|
|
13781
13800
|
return {
|
|
13782
13801
|
x: x2,
|
|
13783
13802
|
y,
|
|
@@ -14023,10 +14042,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
14023
14042
|
}
|
|
14024
14043
|
parent.add(dataLabelText);
|
|
14025
14044
|
if (penDrawn(w, i2)) applyProgressiveReveal(dataLabelText, x2, w);
|
|
14026
|
-
if (typeof w.globals.lastDrawnDataLabelsIndexes[i2] === "undefined") {
|
|
14027
|
-
w.globals.lastDrawnDataLabelsIndexes[i2] = [];
|
|
14028
|
-
}
|
|
14029
|
-
w.globals.lastDrawnDataLabelsIndexes[i2].push(j2);
|
|
14030
14045
|
}
|
|
14031
14046
|
return dataLabelText;
|
|
14032
14047
|
}
|
|
@@ -15990,6 +16005,13 @@ var __async = (__this, __arguments, generator) => {
|
|
|
15990
16005
|
if (typeof gl.yAxisScale[index] === "undefined") {
|
|
15991
16006
|
gl.yAxisScale[index] = [];
|
|
15992
16007
|
}
|
|
16008
|
+
if (y.logarithmic && minY <= Number.MIN_VALUE) {
|
|
16009
|
+
const s2 = this.w.seriesData.series;
|
|
16010
|
+
const map = gl.isMultipleYAxis && gl.seriesYAxisMap[index];
|
|
16011
|
+
const b = y.logBase || 10;
|
|
16012
|
+
const m = (map ? map.map((i2) => s2[i2]) : s2).flat().reduce((a2, v) => v > 0 && (!a2 || v < a2) ? v : a2, 0);
|
|
16013
|
+
minY = m && Math.min(b, __pow(b, Math.floor(Math.log(m) / Math.log(b))));
|
|
16014
|
+
}
|
|
15993
16015
|
const range = Math.abs(maxY - minY);
|
|
15994
16016
|
const spansABase = y.logarithmic && this._logDomainSpan(minY, maxY, y.logBase) >= 1;
|
|
15995
16017
|
const validLogScale = y.logarithmic && (spansABase || range > 5);
|
|
@@ -16022,19 +16044,26 @@ var __async = (__this, __arguments, generator) => {
|
|
|
16022
16044
|
* @param {number} maxX
|
|
16023
16045
|
*/
|
|
16024
16046
|
setXScale(minX, maxX) {
|
|
16047
|
+
var _a;
|
|
16025
16048
|
const w = this.w;
|
|
16026
16049
|
const gl = w.globals;
|
|
16027
16050
|
if (maxX === -Number.MAX_VALUE || !Utils$1.isNumber(maxX)) {
|
|
16028
16051
|
gl.xAxisScale = this.linearScale(0, 10, 10);
|
|
16029
16052
|
} else {
|
|
16030
|
-
const
|
|
16031
|
-
|
|
16032
|
-
|
|
16033
|
-
|
|
16034
|
-
|
|
16035
|
-
0
|
|
16036
|
-
|
|
16037
|
-
);
|
|
16053
|
+
const x2 = w.config.xaxis;
|
|
16054
|
+
let step = ((_a = x2.max) != null ? _a : x2.range) === void 0 ? x2.stepSize : void 0;
|
|
16055
|
+
const fit = step > 0 && !gl.isBarHorizontal && x2.type !== "datetime";
|
|
16056
|
+
if (fit) {
|
|
16057
|
+
const n2 = Math.ceil((maxX - minX) / step - 1e-9);
|
|
16058
|
+
n2 > 1e3 ? step = void 0 : gl.xTickAmount = n2;
|
|
16059
|
+
}
|
|
16060
|
+
let s2 = this.linearScale(minX, maxX, gl.xTickAmount, 0, step);
|
|
16061
|
+
if (fit && step) {
|
|
16062
|
+
while (s2.niceMax < maxX)
|
|
16063
|
+
s2 = this.linearScale(minX, maxX, ++gl.xTickAmount, 0, step);
|
|
16064
|
+
gl.maxX = s2.niceMax;
|
|
16065
|
+
}
|
|
16066
|
+
gl.xAxisScale = s2;
|
|
16038
16067
|
}
|
|
16039
16068
|
return gl.xAxisScale;
|
|
16040
16069
|
}
|
|
@@ -16669,22 +16698,21 @@ var __async = (__this, __arguments, generator) => {
|
|
|
16669
16698
|
gl.barGroups = [];
|
|
16670
16699
|
gl.lineGroups = [];
|
|
16671
16700
|
gl.areaGroups = [];
|
|
16672
|
-
cnf.series.forEach((s2) => {
|
|
16673
|
-
const
|
|
16701
|
+
cnf.series.forEach((s2, i2) => {
|
|
16702
|
+
const g = this.w.labelData.seriesGroupIndex[i2];
|
|
16703
|
+
switch (
|
|
16674
16704
|
/** @type {any} */
|
|
16675
|
-
s2
|
|
16676
|
-
)
|
|
16677
|
-
const type = _s.type || cnf.chart.type;
|
|
16678
|
-
switch (type) {
|
|
16705
|
+
s2.type || cnf.chart.type
|
|
16706
|
+
) {
|
|
16679
16707
|
case "bar":
|
|
16680
16708
|
case "column":
|
|
16681
|
-
gl.barGroups.push(
|
|
16709
|
+
gl.barGroups.push(g);
|
|
16682
16710
|
break;
|
|
16683
16711
|
case "line":
|
|
16684
|
-
gl.lineGroups.push(
|
|
16712
|
+
gl.lineGroups.push(g);
|
|
16685
16713
|
break;
|
|
16686
16714
|
case "area":
|
|
16687
|
-
gl.areaGroups.push(
|
|
16715
|
+
gl.areaGroups.push(g);
|
|
16688
16716
|
break;
|
|
16689
16717
|
}
|
|
16690
16718
|
});
|
|
@@ -16769,9 +16797,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
16769
16797
|
ticks = gl.dataPoints - 1;
|
|
16770
16798
|
}
|
|
16771
16799
|
} else if (cnf.xaxis.tickAmount === "dataPoints") {
|
|
16772
|
-
|
|
16773
|
-
|
|
16774
|
-
|
|
16800
|
+
ticks = Math.max(
|
|
16801
|
+
1,
|
|
16802
|
+
(this.w.seriesData.series[gl.maxValsInArrayIndex] || []).length - 1
|
|
16803
|
+
);
|
|
16775
16804
|
if (this.w.axisFlags.isXNumeric) {
|
|
16776
16805
|
const diff = Math.round(gl.maxX - gl.minX);
|
|
16777
16806
|
if (diff < 30) {
|
|
@@ -16829,8 +16858,26 @@ var __async = (__this, __arguments, generator) => {
|
|
|
16829
16858
|
}
|
|
16830
16859
|
}
|
|
16831
16860
|
if (isXNumeric && gl.isBarHorizontal) {
|
|
16861
|
+
const rows = (this.w.seriesData.seriesX[gl.maxValsInArrayIndex] || []).slice();
|
|
16862
|
+
const seen = new Set(rows);
|
|
16863
|
+
const n2 = rows.length;
|
|
16864
|
+
if (cnf.chart.type === "bar") {
|
|
16865
|
+
this.w.seriesData.seriesX.forEach(
|
|
16866
|
+
(s2) => s2 == null ? void 0 : s2.forEach((x2) => {
|
|
16867
|
+
if (x2 != null && !seen.has(x2)) {
|
|
16868
|
+
seen.add(x2);
|
|
16869
|
+
rows.push(x2);
|
|
16870
|
+
}
|
|
16871
|
+
})
|
|
16872
|
+
);
|
|
16873
|
+
}
|
|
16874
|
+
if (rows.length > n2) {
|
|
16875
|
+
const dir = rows[0] > rows[n2 - 1] ? -1 : 1;
|
|
16876
|
+
rows.sort((a2, b) => (a2 - b) * dir);
|
|
16877
|
+
gl.dataPoints = rows.length;
|
|
16878
|
+
}
|
|
16832
16879
|
this.w.labelData.labels = /** @type {any} */
|
|
16833
|
-
|
|
16880
|
+
rows;
|
|
16834
16881
|
} else if (isXNumeric) {
|
|
16835
16882
|
this.w.labelData.labels = /** @type {any} */
|
|
16836
16883
|
gl.xAxisScale.result.slice();
|
|
@@ -16955,7 +17002,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
16955
17002
|
const windowed = this._autoScaleYEnabled();
|
|
16956
17003
|
if (!this.w.seriesData.series.length) return;
|
|
16957
17004
|
const gIdx = this.w.labelData.seriesGroupIndex;
|
|
16958
|
-
const byX = this.w.axisFlags.isXNumeric
|
|
17005
|
+
const byX = this.w.axisFlags.isXNumeric;
|
|
16959
17006
|
const stacks = /* @__PURE__ */ new Map();
|
|
16960
17007
|
this.w.config.series.forEach(
|
|
16961
17008
|
(serie, i2) => {
|
|
@@ -16970,7 +17017,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
16970
17017
|
if (!st) stacks.set(key, st = [0, 0]);
|
|
16971
17018
|
const v = this.w.seriesData.series[i2][j2];
|
|
16972
17019
|
if (stackSeries && v !== null && Utils$1.isNumber(v)) {
|
|
16973
|
-
v > 0 ? st[0] +=
|
|
17020
|
+
v > 0 ? st[0] += v * 1.000001 : st[1] += +v;
|
|
16974
17021
|
}
|
|
16975
17022
|
}
|
|
16976
17023
|
}
|
|
@@ -18683,6 +18730,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
18683
18730
|
return count === 0 ? k2 : `${k2}#${count}`;
|
|
18684
18731
|
});
|
|
18685
18732
|
}
|
|
18733
|
+
function seriesKeys(w, realIndex, n2 = ((_a) => (_a = w.seriesData.series[realIndex]) == null ? void 0 : _a.length)() | 0) {
|
|
18734
|
+
return uniquifyKeys(
|
|
18735
|
+
Array.from({ length: n2 }, (_, j2) => datumKey(w, realIndex, j2))
|
|
18736
|
+
);
|
|
18737
|
+
}
|
|
18686
18738
|
function seriesJoin(w, realIndex, includeIdentity = false, allowReorder = false) {
|
|
18687
18739
|
var _a, _b;
|
|
18688
18740
|
if (!lengthTransitionEnabled(w)) return null;
|
|
@@ -18695,7 +18747,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
18695
18747
|
const oldKeys = uniquifyKeys(
|
|
18696
18748
|
oldY.map((_, j2) => frameDatumKey(frame, realIndex, j2))
|
|
18697
18749
|
);
|
|
18698
|
-
const newKeys =
|
|
18750
|
+
const newKeys = seriesKeys(w, realIndex);
|
|
18699
18751
|
const join = joinKeys(oldKeys, newKeys);
|
|
18700
18752
|
if (!join.ordered && !allowReorder) return null;
|
|
18701
18753
|
if (!join.changed && !includeIdentity) return null;
|
|
@@ -20130,11 +20182,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20130
20182
|
*/
|
|
20131
20183
|
isSeriesHidden(seriesName) {
|
|
20132
20184
|
var _a;
|
|
20133
|
-
const
|
|
20134
|
-
|
|
20135
|
-
/** @type {Element} */
|
|
20136
|
-
targetElement
|
|
20137
|
-
);
|
|
20185
|
+
const el = this.getSeriesByName(seriesName);
|
|
20186
|
+
if (!el) return { isHidden: false, realIndex: -1 };
|
|
20138
20187
|
const realIndex = parseInt((_a = el.getAttribute("data:realIndex")) != null ? _a : "0", 10);
|
|
20139
20188
|
const gl = this.w.globals;
|
|
20140
20189
|
const isHidden = el.classList.contains("apexcharts-series-collapsed") || gl.collapsedSeriesIndices.includes(realIndex) || gl.ancillaryCollapsedSeriesIndices.includes(realIndex);
|
|
@@ -20284,9 +20333,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20284
20333
|
*/
|
|
20285
20334
|
toggleSeries(seriesName) {
|
|
20286
20335
|
var _a;
|
|
20287
|
-
const
|
|
20288
|
-
(_a = this._toggleDataSeries) == null ? void 0 : _a.call(this,
|
|
20289
|
-
return
|
|
20336
|
+
const { isHidden, realIndex } = this.isSeriesHidden(seriesName);
|
|
20337
|
+
if (realIndex > -1) (_a = this._toggleDataSeries) == null ? void 0 : _a.call(this, realIndex, isHidden);
|
|
20338
|
+
return isHidden;
|
|
20290
20339
|
}
|
|
20291
20340
|
/**
|
|
20292
20341
|
* @param {string} seriesName
|
|
@@ -20304,7 +20353,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20304
20353
|
hideSeries(seriesName) {
|
|
20305
20354
|
var _a;
|
|
20306
20355
|
const isSeriesHidden = this.isSeriesHidden(seriesName);
|
|
20307
|
-
if (!isSeriesHidden.isHidden) {
|
|
20356
|
+
if (!isSeriesHidden.isHidden && isSeriesHidden.realIndex > -1) {
|
|
20308
20357
|
(_a = this._toggleDataSeries) == null ? void 0 : _a.call(this, isSeriesHidden.realIndex, false);
|
|
20309
20358
|
}
|
|
20310
20359
|
}
|
|
@@ -20380,10 +20429,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20380
20429
|
* @param {any[]} series
|
|
20381
20430
|
*/
|
|
20382
20431
|
emptyCollapsedSeries(series) {
|
|
20383
|
-
const
|
|
20432
|
+
const gl = this.w.globals;
|
|
20384
20433
|
if (!Array.isArray(series)) return series;
|
|
20385
20434
|
for (let i2 = 0; i2 < series.length; i2++) {
|
|
20386
|
-
if (
|
|
20435
|
+
if (gl.collapsedSeriesIndices.includes(i2) || gl.ancillaryCollapsedSeriesIndices.includes(i2)) {
|
|
20387
20436
|
if (series[i2] && typeof series[i2] === "object") {
|
|
20388
20437
|
series[i2].data = [];
|
|
20389
20438
|
} else {
|
|
@@ -20589,9 +20638,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20589
20638
|
* @param {'highlight'|'reset'} action
|
|
20590
20639
|
*/
|
|
20591
20640
|
highlightRangeInSeries(rangeIndex, action) {
|
|
20641
|
+
var _a, _b;
|
|
20592
20642
|
const w = this.w;
|
|
20643
|
+
const t2 = w.config.chart.type === "treemap" ? "treemap" : "heatmap";
|
|
20593
20644
|
const allHeatMapElements = w.dom.baseEl.getElementsByClassName(
|
|
20594
|
-
|
|
20645
|
+
`apexcharts-${t2}-rect`
|
|
20595
20646
|
);
|
|
20596
20647
|
const toggleAllInactive = (op) => {
|
|
20597
20648
|
for (let i2 = 0; i2 < allHeatMapElements.length; i2++) {
|
|
@@ -20608,14 +20659,23 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20608
20659
|
toggleAllInactive("remove");
|
|
20609
20660
|
return;
|
|
20610
20661
|
}
|
|
20611
|
-
const ranges = w.config.plotOptions.
|
|
20662
|
+
const ranges = w.config.plotOptions[t2].colorScale.ranges;
|
|
20612
20663
|
const range = ranges && ranges[rangeIndex];
|
|
20613
20664
|
if (!range) return;
|
|
20614
20665
|
toggleAllInactive("add");
|
|
20615
20666
|
for (let i2 = 0; i2 < allHeatMapElements.length; i2++) {
|
|
20616
|
-
const
|
|
20667
|
+
const el = allHeatMapElements[i2];
|
|
20668
|
+
const val = Number(
|
|
20669
|
+
(_b = el.getAttribute("val")) != null ? _b : (_a = w.seriesData.series[
|
|
20670
|
+
/** @type {any} */
|
|
20671
|
+
el.getAttribute("i")
|
|
20672
|
+
]) == null ? void 0 : _a[
|
|
20673
|
+
/** @type {any} */
|
|
20674
|
+
el.getAttribute("j")
|
|
20675
|
+
]
|
|
20676
|
+
);
|
|
20617
20677
|
if (val >= range.from && val <= range.to) {
|
|
20618
|
-
|
|
20678
|
+
el.classList.remove(this.legendInactiveClass);
|
|
20619
20679
|
}
|
|
20620
20680
|
}
|
|
20621
20681
|
}
|
|
@@ -20629,10 +20689,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20629
20689
|
const activeSeriesIndex = w.config.series.map((s2, index) => {
|
|
20630
20690
|
const checkChartType = () => {
|
|
20631
20691
|
if (w.globals.comboCharts) {
|
|
20632
|
-
return chartTypes.length === 0 || chartTypes.length && chartTypes.indexOf(
|
|
20633
|
-
/** @type {Record<string,any>} */
|
|
20634
|
-
w.config.series[index].type
|
|
20635
|
-
) > -1;
|
|
20692
|
+
return chartTypes.length === 0 || chartTypes.length && chartTypes.indexOf(s2.type || w.config.chart.type) > -1;
|
|
20636
20693
|
}
|
|
20637
20694
|
return true;
|
|
20638
20695
|
};
|
|
@@ -20670,7 +20727,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20670
20727
|
let last = -1;
|
|
20671
20728
|
w.config.series.forEach((s2, i2) => {
|
|
20672
20729
|
if (w.labelData.seriesGroupIndex[i2] !== gi) return;
|
|
20673
|
-
if (w.globals.comboCharts && chartTypes.length && chartTypes.indexOf(s2.type) === -1) {
|
|
20730
|
+
if (w.globals.comboCharts && chartTypes.length && chartTypes.indexOf(s2.type || w.config.chart.type) === -1) {
|
|
20674
20731
|
return;
|
|
20675
20732
|
}
|
|
20676
20733
|
const hasData = s2.data && s2.data.length > 0 && w.globals.collapsedSeriesIndices.indexOf(i2) === -1;
|
|
@@ -20683,7 +20740,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20683
20740
|
const w = this.w;
|
|
20684
20741
|
if (w.globals.comboCharts) {
|
|
20685
20742
|
return this.w.config.series.map((s2, i2) => {
|
|
20686
|
-
|
|
20743
|
+
const t2 = s2.type || w.config.chart.type;
|
|
20744
|
+
return t2 === "bar" || t2 === "column" ? i2 : -1;
|
|
20687
20745
|
}).filter((i2) => {
|
|
20688
20746
|
return i2 !== -1;
|
|
20689
20747
|
});
|
|
@@ -20738,6 +20796,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20738
20796
|
for (let j2 = 0; j2 < paths.length; j2++) {
|
|
20739
20797
|
if (paths[j2].hasAttribute("pathTo")) {
|
|
20740
20798
|
const d = (type === "line" || type === "area") && paths[j2].getAttribute("d") || paths[j2].getAttribute("pathTo");
|
|
20799
|
+
if (paths[j2].classList.contains("apexcharts-raincloud-box")) {
|
|
20800
|
+
const body = dArr.paths[dArr.paths.length - 1];
|
|
20801
|
+
if (body) (body.box || (body.box = [])).push(d);
|
|
20802
|
+
continue;
|
|
20803
|
+
}
|
|
20741
20804
|
dArr.paths.push({
|
|
20742
20805
|
d,
|
|
20743
20806
|
key: paths[j2].getAttribute("data:pathKey"),
|
|
@@ -20761,7 +20824,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
20761
20824
|
"rangeArea",
|
|
20762
20825
|
"candlestick",
|
|
20763
20826
|
"boxPlot",
|
|
20764
|
-
"radar"
|
|
20827
|
+
"radar",
|
|
20828
|
+
"violin"
|
|
20765
20829
|
];
|
|
20766
20830
|
chartTypes.forEach((type) => {
|
|
20767
20831
|
const paths = getPaths(type);
|
|
@@ -21336,7 +21400,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
21336
21400
|
applyColorTypes(colorTypes, defaultColors) {
|
|
21337
21401
|
const w = this.w;
|
|
21338
21402
|
colorTypes.forEach((c) => {
|
|
21339
|
-
w.globals[c].colors = w.config[c].colors === void 0 ? this.isColorFn ? w.config.colors.slice() : defaultColors : w.config[c].colors.slice();
|
|
21403
|
+
w.globals[c].colors = w.config[c].colors === void 0 ? this.isColorFn && w.config.colors ? w.config.colors.slice() : defaultColors : w.config[c].colors.slice();
|
|
21340
21404
|
this.pushExtraColors(
|
|
21341
21405
|
/** @type {Record<string,any>} */
|
|
21342
21406
|
w.globals[c].colors
|
|
@@ -22352,7 +22416,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
22352
22416
|
text.setAttribute("class", "apexcharts-breadcrumb-label");
|
|
22353
22417
|
text.textContent = String(label);
|
|
22354
22418
|
btn.appendChild(text);
|
|
22355
|
-
btn.addEventListener("click", () => opts.onNavigate(i2, crumb));
|
|
22419
|
+
btn.addEventListener("click", (e2) => opts.onNavigate(i2, crumb, e2));
|
|
22356
22420
|
nav.appendChild(btn);
|
|
22357
22421
|
});
|
|
22358
22422
|
elWrap.appendChild(nav);
|
|
@@ -23289,6 +23353,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
23289
23353
|
const { w, ctx } = this;
|
|
23290
23354
|
const { config: cnf, globals: gl } = w;
|
|
23291
23355
|
const { line, boxCandlestick, violin } = renderers;
|
|
23356
|
+
if (cnf.chart.type !== "unit") ctx._unitPrevDots = null;
|
|
23292
23357
|
let elGraph = [];
|
|
23293
23358
|
if (gl.comboCharts) {
|
|
23294
23359
|
const coreUtils = new CoreUtils(this.w);
|
|
@@ -24007,26 +24072,33 @@ var __async = (__this, __arguments, generator) => {
|
|
|
24007
24072
|
const list = dd && Array.isArray(dd.series) ? dd.series : [];
|
|
24008
24073
|
return list.find((s2) => s2 && s2.id === id);
|
|
24009
24074
|
}
|
|
24010
|
-
function
|
|
24075
|
+
function segment(name2, seen) {
|
|
24076
|
+
var _a;
|
|
24077
|
+
const n2 = String(name2).replace(/\//g, "%2F");
|
|
24078
|
+
const o2 = ((_a = seen.get(n2)) != null ? _a : -1) + 1;
|
|
24079
|
+
seen.set(n2, o2);
|
|
24080
|
+
return `${o2}:${n2}`;
|
|
24081
|
+
}
|
|
24082
|
+
function toNode(w, d, i2, paletteFromParent, parentKey, seenIds = null, opts = {}, seen = /* @__PURE__ */ new Map()) {
|
|
24011
24083
|
var _a, _b, _c;
|
|
24012
24084
|
const isObj = d && typeof d === "object";
|
|
24013
24085
|
const name2 = isObj ? (_b = (_a = d.x) != null ? _a : d.name) != null ? _b : "" : "";
|
|
24014
|
-
const
|
|
24086
|
+
const raw = isObj ? (_c = d.y) != null ? _c : d.value : d;
|
|
24087
|
+
const value = raw == null || raw === "" ? NaN : Number(raw);
|
|
24015
24088
|
const node = {
|
|
24016
24089
|
name: String(name2),
|
|
24017
24090
|
value: isNaN(value) ? null : value,
|
|
24018
24091
|
color: isObj && d.color ? d.color : void 0,
|
|
24019
|
-
|
|
24020
|
-
// siblings stay distinct). Update animations morph matched keys in place.
|
|
24021
|
-
_key: `${parentKey}/${i2}:${name2}`
|
|
24092
|
+
_key: `${parentKey}/${segment(name2, seen)}`
|
|
24022
24093
|
};
|
|
24023
24094
|
if (paletteFromParent && !node.color) {
|
|
24024
24095
|
node.color = paletteFromParent[i2 % paletteFromParent.length];
|
|
24025
24096
|
}
|
|
24026
24097
|
if (opts.keepDatum) node._datum = d;
|
|
24098
|
+
const kids = /* @__PURE__ */ new Map();
|
|
24027
24099
|
if (isObj && Array.isArray(d.children) && d.children.length) {
|
|
24028
24100
|
node.children = d.children.map(
|
|
24029
|
-
(c, j2) => toNode(w, c, j2, null, node._key, seenIds, opts)
|
|
24101
|
+
(c, j2) => toNode(w, c, j2, null, node._key, seenIds, opts, kids)
|
|
24030
24102
|
);
|
|
24031
24103
|
} else if (isObj && d.drilldown != null && opts.expandDrilldown !== false) {
|
|
24032
24104
|
const visited = seenIds || /* @__PURE__ */ new Set();
|
|
@@ -24037,7 +24109,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
24037
24109
|
nextSeen.add(d.drilldown);
|
|
24038
24110
|
const palette = Array.isArray(dd.colors) ? dd.colors : null;
|
|
24039
24111
|
node.children = dd.data.map(
|
|
24040
|
-
(c, j2) => toNode(w, c, j2, palette, node._key, nextSeen, opts)
|
|
24112
|
+
(c, j2) => toNode(w, c, j2, palette, node._key, nextSeen, opts, kids)
|
|
24041
24113
|
);
|
|
24042
24114
|
}
|
|
24043
24115
|
}
|
|
@@ -24050,10 +24122,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
24050
24122
|
series || w.config.series
|
|
24051
24123
|
);
|
|
24052
24124
|
if (!Array.isArray(cfgSeries)) return [];
|
|
24125
|
+
const seen = /* @__PURE__ */ new Map();
|
|
24053
24126
|
return cfgSeries.map((s2, i2) => {
|
|
24054
24127
|
var _a, _b;
|
|
24055
24128
|
const data = s2 && Array.isArray(s2.data) ? s2.data : [];
|
|
24056
|
-
const key =
|
|
24129
|
+
const key = segment((_a = s2 == null ? void 0 : s2.name) != null ? _a : "", seen);
|
|
24130
|
+
const kids = /* @__PURE__ */ new Map();
|
|
24057
24131
|
const root = {
|
|
24058
24132
|
name: String((_b = s2 == null ? void 0 : s2.name) != null ? _b : ""),
|
|
24059
24133
|
value: null,
|
|
@@ -24061,7 +24135,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
24061
24135
|
_key: key,
|
|
24062
24136
|
_seriesIndex: i2,
|
|
24063
24137
|
children: data.map(
|
|
24064
|
-
(d, j2) => toNode(w, d, j2, null, key, null, opts)
|
|
24138
|
+
(d, j2) => toNode(w, d, j2, null, key, null, opts, kids)
|
|
24065
24139
|
)
|
|
24066
24140
|
};
|
|
24067
24141
|
return root;
|
|
@@ -24211,7 +24285,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
24211
24285
|
var _a;
|
|
24212
24286
|
if (!d || typeof d !== "object") return Utils$1.parseNumber(d) || 0;
|
|
24213
24287
|
const v = (_a = d.y) != null ? _a : d.value;
|
|
24214
|
-
if (v != null) return Utils$1.parseNumber(v) || 0;
|
|
24288
|
+
if (v != null && v !== "") return Utils$1.parseNumber(v) || 0;
|
|
24215
24289
|
if (!Array.isArray(d.children)) return 0;
|
|
24216
24290
|
return d.children.reduce(
|
|
24217
24291
|
(s2, c) => s2 + Math.max(0, subtreeTotal(c)),
|
|
@@ -24937,13 +25011,18 @@ var __async = (__this, __arguments, generator) => {
|
|
|
24937
25011
|
}
|
|
24938
25012
|
});
|
|
24939
25013
|
this.coreUtils.setSeriesYAxisMappings();
|
|
24940
|
-
const
|
|
24941
|
-
const
|
|
24942
|
-
...new Set(cnf.series.map((s2) => s2.group))
|
|
24943
|
-
];
|
|
24944
|
-
this.w.labelData.seriesGroupIndex = cnf.series.map(
|
|
25014
|
+
const rev = this.w.globals.seriesYAxisReverseMap;
|
|
25015
|
+
const keys = cnf.series.map(
|
|
24945
25016
|
(s2, i2) => {
|
|
24946
|
-
|
|
25017
|
+
var _a2;
|
|
25018
|
+
return (_a2 = s2.group) != null ? _a2 : "apexcharts-axis-" + rev[i2];
|
|
25019
|
+
}
|
|
25020
|
+
);
|
|
25021
|
+
const buckets = [];
|
|
25022
|
+
const groups = [...new Set(keys)];
|
|
25023
|
+
this.w.labelData.seriesGroupIndex = keys.map(
|
|
25024
|
+
(k2, i2) => {
|
|
25025
|
+
const index = groups.indexOf(k2);
|
|
24947
25026
|
if (!buckets[index]) buckets[index] = [];
|
|
24948
25027
|
buckets[index].push(this.w.seriesData.seriesNames[i2]);
|
|
24949
25028
|
return index;
|
|
@@ -25226,12 +25305,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
25226
25305
|
if (rootColors && x2 !== void 0) {
|
|
25227
25306
|
rootColors[labels.length] = dataPoint.color;
|
|
25228
25307
|
}
|
|
25229
|
-
if (x2 !== void 0 &&
|
|
25230
|
-
labels.push(String(x2));
|
|
25231
|
-
values.push(Utils$1.parseNumber(y));
|
|
25232
|
-
} else if (x2 !== void 0 && Array.isArray(dataPoint.children)) {
|
|
25308
|
+
if (x2 !== void 0 && Array.isArray(dataPoint.children)) {
|
|
25233
25309
|
labels.push(String(x2));
|
|
25234
25310
|
values.push(subtreeTotal(dataPoint));
|
|
25311
|
+
} else if (x2 !== void 0 && y !== void 0) {
|
|
25312
|
+
labels.push(String(x2));
|
|
25313
|
+
values.push(Utils$1.parseNumber(y));
|
|
25235
25314
|
} else {
|
|
25236
25315
|
console.warn(
|
|
25237
25316
|
"ApexCharts: Invalid data point format for pie chart. Expected {x, y} format:",
|
|
@@ -27168,6 +27247,13 @@ var __async = (__this, __arguments, generator) => {
|
|
|
27168
27247
|
const markers = this.getElMarkers(capturedSeries);
|
|
27169
27248
|
return markers.length > 0;
|
|
27170
27249
|
}
|
|
27250
|
+
/**
|
|
27251
|
+
* Whether any visible series has a marker node, its points' or its hover
|
|
27252
|
+
* dot's.
|
|
27253
|
+
*/
|
|
27254
|
+
hasVisibleMarkers() {
|
|
27255
|
+
return this.getAllMarkers(true).some(Boolean);
|
|
27256
|
+
}
|
|
27171
27257
|
/**
|
|
27172
27258
|
* @param {any} point
|
|
27173
27259
|
* @param {number} size
|
|
@@ -27614,11 +27700,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
27614
27700
|
*/
|
|
27615
27701
|
placeAroundCell(cell, plot, {
|
|
27616
27702
|
el = null,
|
|
27617
|
-
ttWidth = ((
|
|
27618
|
-
ttHeight = ((
|
|
27703
|
+
ttWidth = ((_b) => (_b = this.ttCtx.tooltipRect) == null ? void 0 : _b.ttWidth)() || 0,
|
|
27704
|
+
ttHeight = ((_c) => (_c = this.ttCtx.tooltipRect) == null ? void 0 : _c.ttHeight)() || 0
|
|
27619
27705
|
} = {}) {
|
|
27620
|
-
var
|
|
27621
|
-
if (!((
|
|
27706
|
+
var _a;
|
|
27707
|
+
if (!((_a = el == null ? void 0 : el.closest) == null ? void 0 : _a.call(el, '[clip-path*="heatmapHexMask"]'))) {
|
|
27622
27708
|
cell = this._visiblePart(cell, plot);
|
|
27623
27709
|
}
|
|
27624
27710
|
return this._placeAround(placeAroundCell, cell, plot, {
|
|
@@ -27689,11 +27775,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
27689
27775
|
* @param {{ ttWidth?: number, ttHeight?: number, side?: 'left'|'right'|null, beside?: boolean }} [opts]
|
|
27690
27776
|
* @returns {import('./placement').CellPlacement}
|
|
27691
27777
|
*/
|
|
27692
|
-
_placeAround(decide, mark, plot,
|
|
27693
|
-
var
|
|
27694
|
-
ttWidth = ((
|
|
27695
|
-
ttHeight = ((
|
|
27696
|
-
} =
|
|
27778
|
+
_placeAround(decide, mark, plot, _f = {}) {
|
|
27779
|
+
var _g = _f, {
|
|
27780
|
+
ttWidth = ((_d) => (_d = this.ttCtx.tooltipRect) == null ? void 0 : _d.ttWidth)() || 0,
|
|
27781
|
+
ttHeight = ((_e) => (_e = this.ttCtx.tooltipRect) == null ? void 0 : _e.ttHeight)() || 0
|
|
27782
|
+
} = _g, rest = __objRest(_g, [
|
|
27697
27783
|
"ttWidth",
|
|
27698
27784
|
"ttHeight"
|
|
27699
27785
|
]);
|
|
@@ -31877,16 +31963,22 @@ var __async = (__this, __arguments, generator) => {
|
|
|
31877
31963
|
ttCtx.tooltipLabels.drawSeriesTexts(__spreadProps(__spreadValues({}, commonSeriesTextsParams), {
|
|
31878
31964
|
shared: this.showOnIntersect ? false : this.tConfig.shared
|
|
31879
31965
|
}));
|
|
31880
|
-
|
|
31966
|
+
const capturedPoints = hasMarkers || dynamicPoints;
|
|
31967
|
+
if (capturedPoints || w.globals.comboCharts && !canvasMode && this.tooltipUtil.hasVisibleMarkers()) {
|
|
31881
31968
|
handlePoints();
|
|
31882
|
-
}
|
|
31969
|
+
}
|
|
31970
|
+
if (this.tooltipUtil.hasBars()) {
|
|
31883
31971
|
if (canvasMode) {
|
|
31884
|
-
|
|
31972
|
+
if (!capturedPoints) {
|
|
31973
|
+
ttCtx.tooltipPosition.moveStickyTooltipOverBars(j2, capturedSeries);
|
|
31974
|
+
}
|
|
31885
31975
|
} else if ([...bars].some((b) => b.querySelector("path"))) {
|
|
31886
31976
|
const graphics = new Graphics(this.w, this.ctx);
|
|
31887
31977
|
const paths = w.dom.Paper.find(`.apexcharts-bar-area[j='${j2}']`);
|
|
31888
31978
|
this.deactivateHoverFilter();
|
|
31889
|
-
|
|
31979
|
+
if (!capturedPoints) {
|
|
31980
|
+
ttCtx.tooltipPosition.moveStickyTooltipOverBars(j2, capturedSeries);
|
|
31981
|
+
}
|
|
31890
31982
|
for (let b = 0; b < paths.length; b++) {
|
|
31891
31983
|
graphics.pathMouseEnter(
|
|
31892
31984
|
/** @type {any} */
|
|
@@ -32087,7 +32179,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
32087
32179
|
this._activate(desired, this._instances[desired]);
|
|
32088
32180
|
return this._activeKind;
|
|
32089
32181
|
}
|
|
32090
|
-
if (mode === desired) {
|
|
32182
|
+
if (mode === desired && !this._warned) {
|
|
32183
|
+
this._warned = 1;
|
|
32091
32184
|
warnMissingFeature(
|
|
32092
32185
|
`\`chart.renderer: '${desired}'\``,
|
|
32093
32186
|
`renderer-${desired}`,
|
|
@@ -32096,11 +32189,17 @@ var __async = (__this, __arguments, generator) => {
|
|
|
32096
32189
|
}
|
|
32097
32190
|
);
|
|
32098
32191
|
}
|
|
32099
|
-
} else if (mode === "canvas" && hasCanvasUnsupportedFeature(this.w)) {
|
|
32192
|
+
} else if (mode === "canvas" && !this._warned && hasCanvasUnsupportedFeature(this.w)) {
|
|
32193
|
+
this._warned = 1;
|
|
32100
32194
|
console.warn(
|
|
32101
32195
|
`[apexcharts] renderer:"canvas" requested but this chart uses a feature the canvas renderer does not render yet (gradient/pattern/image fill or a state color-matrix filter); falling back to SVG.`
|
|
32102
32196
|
);
|
|
32103
32197
|
}
|
|
32198
|
+
const prev = this._instances[this._activeKind];
|
|
32199
|
+
if (prev) {
|
|
32200
|
+
prev.destroy();
|
|
32201
|
+
delete this._instances[this._activeKind];
|
|
32202
|
+
}
|
|
32104
32203
|
this._activate("svg", this.svg);
|
|
32105
32204
|
return this._activeKind;
|
|
32106
32205
|
}
|
|
@@ -33351,7 +33450,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
33351
33450
|
if (isUpdating) {
|
|
33352
33451
|
this.ctx._zoomPanSelection = null;
|
|
33353
33452
|
this.ctx._toolbar = null;
|
|
33354
|
-
(_e = this.ctx._keyboardNavigation) == null ? void 0 : _e.destroy();
|
|
33453
|
+
(_e = this.ctx._keyboardNavigation) == null ? void 0 : _e.destroy(true);
|
|
33355
33454
|
this.ctx._keyboardNavigation = null;
|
|
33356
33455
|
} else {
|
|
33357
33456
|
(_f = this.ctx.perspectives) == null ? void 0 : _f.teardown();
|
|
@@ -33640,7 +33739,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
33640
33739
|
ros.delete(fn);
|
|
33641
33740
|
}
|
|
33642
33741
|
}
|
|
33643
|
-
const apexCSS = '@keyframes opaque{0%{opacity:0}to{opacity:1}}.apexcharts-canvas{position:relative;direction:ltr!important;user-select:none;--apexcharts-focus-color: #008FFB}.apexcharts-canvas .apexcharts-theme-dark,.apexcharts-theme-dark.apexcharts-canvas{--apexcharts-focus-color: #FFD500}.apexcharts-canvas.apexcharts-high-contrast,.apexcharts-high-contrast.apexcharts-canvas{--apexcharts-focus-color: #FFFF00}.apexcharts-sr-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.apexcharts-canvas:not(.apexcharts-ignore-reduced-motion) *,.apexcharts-canvas:not(.apexcharts-ignore-reduced-motion) *:before,.apexcharts-canvas:not(.apexcharts-ignore-reduced-motion) *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.apexcharts-canvas ::-webkit-scrollbar{-webkit-appearance:none;width:6px}.apexcharts-canvas ::-webkit-scrollbar-thumb{border-radius:4px;background-color:#00000080;box-shadow:0 0 1px #ffffff80;-webkit-box-shadow:0 0 1px rgba(255,255,255,.5)}.apexcharts-inner{position:relative}.apexcharts-text tspan{font-family:inherit}rect.legend-mouseover-inactive,.legend-mouseover-inactive rect,.legend-mouseover-inactive path,.legend-mouseover-inactive circle,.legend-mouseover-inactive line,.legend-mouseover-inactive text.apexcharts-yaxis-title-text,.legend-mouseover-inactive text.apexcharts-yaxis-label{transition:.15s ease all;opacity:.2}.apexcharts-crossfilter-dimmed{transition:opacity .25s ease;opacity:var(--apx-cf-dim, .2)}.apexcharts-cf-table{border-collapse:collapse;width:100%;font-size:13px}.apexcharts-cf-table caption{caption-side:bottom;text-align:right;padding:6px 2px;font-size:12px;opacity:.7}.apexcharts-cf-table th,.apexcharts-cf-table td{padding:6px 10px;text-align:left;border-bottom:1px solid rgba(0,0,0,.08)}.apexcharts-cf-table th{font-weight:600;border-bottom-width:2px}.apexcharts-cf-table tbody tr:hover{background:#6366f10f}.apexcharts-canvas{--apx-measure-up: #16a34a;--apx-measure-down: #dc2626;--apx-measure-neutral: #64748b;--apx-measure-guide: #94a3b8}.apexcharts-measure-capture{cursor:crosshair}.apexcharts-canvas{--apx-menu-bg: #ffffff;--apx-menu-fg: #1e293b;--apx-menu-border: #e2e8f0;--apx-menu-hover: #f1f5f9;--apx-menu-shadow: rgba(15, 23, 42, .18)}.apexcharts-context-menu{min-width:168px;padding:4px;border-radius:8px;background:var(--apx-menu-bg);border:1px solid var(--apx-menu-border);box-shadow:0 6px 22px var(--apx-menu-shadow);font-family:Helvetica,Arial,sans-serif;font-size:13px;z-index:20;user-select:none}.apexcharts-context-menu-item{display:block;width:100%;box-sizing:border-box;text-align:left;padding:7px 12px;border:0;border-radius:5px;background:transparent;color:var(--apx-menu-fg);font:inherit;cursor:pointer}.apexcharts-context-menu-item:hover,.apexcharts-context-menu-item--active{background:var(--apx-menu-hover)}.apexcharts-context-menu-item:focus{outline:none}.apexcharts-canvas{--apx-ink-card-bg: #ffffff;--apx-ink-card-fg: #1e293b;--apx-ink-card-border: #e2e8f0;--apx-ink-card-hover: #f1f5f9;--apx-ink-card-accent: #6366f1;--apx-ink-card-shadow: rgba(15, 23, 42, .18)}.apexcharts-ink-card{position:absolute;z-index:25;display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:8px;background:var(--apx-ink-card-bg);border:1px solid var(--apx-ink-card-border);box-shadow:0 6px 22px var(--apx-ink-card-shadow);font-family:Helvetica,Arial,sans-serif;font-size:12px;color:var(--apx-ink-card-fg);user-select:none}.apexcharts-ink-card-row{display:flex;align-items:center;gap:4px}.apexcharts-ink-card input.apexcharts-ink-editor{flex:1 1 auto;width:150px;min-width:0;box-sizing:border-box;padding:4px 6px;font:inherit;color:inherit;background:transparent;border:1px solid var(--apx-ink-card-border);border-radius:5px}.apexcharts-ink-card input.apexcharts-ink-editor:focus{outline:none;border-color:var(--apx-ink-card-accent)}.apexcharts-ink-btn{flex:0 0 auto;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:5px;background:transparent;color:inherit;font:inherit;font-size:12px;line-height:1;cursor:pointer}.apexcharts-ink-btn:hover,.apexcharts-ink-btn--active{background:var(--apx-ink-card-hover)}.apexcharts-ink-btn:focus-visible,.apexcharts-ink-swatch:focus-visible{outline:2px solid var(--apx-ink-card-accent);outline-offset:1px}.apexcharts-ink-btn--bold{font-weight:700}.apexcharts-ink-btn--delete:hover{color:#dc2626}.apexcharts-ink-swatch{flex:0 0 auto;width:16px;height:16px;padding:0;border:1px solid rgba(100,116,139,.45);border-radius:50%;cursor:pointer}.apexcharts-ink-swatch--active{box-shadow:0 0 0 2px var(--apx-ink-card-bg),0 0 0 4px var(--apx-ink-card-accent)}.apexcharts-ink-sep{flex:0 0 auto;width:1px;height:16px;margin:0 2px;background:var(--apx-ink-card-border)}.apexcharts-ink-cardlabel{flex:0 0 auto;font-size:10px;letter-spacing:.4px;text-transform:uppercase;opacity:.65;margin-right:2px}.apexcharts-ink-marker-size{flex:0 0 auto;min-width:16px;text-align:center;font-variant-numeric:tabular-nums}.apexcharts-legend-text{padding-left:15px;margin-left:-15px}.apexcharts-legend-series[role=button]:focus{outline:2px solid var(--apexcharts-focus-color, #008FFB);outline-offset:2px}.apexcharts-legend-series[role=button]:focus:not(:focus-visible){outline:none}.apexcharts-legend-series[role=button]:focus-visible{outline:2px solid var(--apexcharts-focus-color, #008FFB);outline-offset:2px}.apexcharts-series-collapsed{opacity:0}.apexcharts-series-collapsed.apexcharts-series-collapsing{opacity:1}.apexcharts-datalabels.apexcharts-series-collapsing{animation:apexcharts-datalabels-exit var(--apexcharts-dl-exit, .4s) ease-in forwards}@keyframes apexcharts-datalabels-exit{0%{opacity:1}to{opacity:0}}.apexcharts-canvas svg:focus:not(:focus-visible){outline:none}.apexcharts-bar-area.apexcharts-keyboard-focused,.apexcharts-candlestick-area.apexcharts-keyboard-focused,.apexcharts-boxPlot-area.apexcharts-keyboard-focused,.apexcharts-violin-area.apexcharts-keyboard-focused,.apexcharts-rangebar-area.apexcharts-keyboard-focused,.apexcharts-pie-area.apexcharts-keyboard-focused,.apexcharts-heatmap-rect.apexcharts-keyboard-focused,.apexcharts-treemap-rect.apexcharts-keyboard-focused,.apexcharts-keyboard-focus-ring{stroke:var(--apexcharts-focus-color, #008FFB);stroke-width:2;stroke-opacity:1}.apexcharts-keyboard-focus-ring{fill:none;pointer-events:none}.apexcharts-tooltip{--apx-tt-bg: #ffffff;--apx-tt-border: rgba(15, 23, 42, .12);--apx-tt-shadow-dir: 1;--apx-tt-shadow: 0 calc(var(--apx-tt-shadow-dir) * 1px) 2px rgba(15, 23, 42, .06), 0 calc(var(--apx-tt-shadow-dir) * 4px) 8px -2px rgba(15, 23, 42, .1), 0 calc(var(--apx-tt-shadow-dir) * 12px) 20px -8px rgba(15, 23, 42, .14);--apx-tt-arrow-bg: var(--apx-tt-bg);--apx-tt-color: #0f172a;--apx-tt-color-muted: rgba(15, 23, 42, .55);border-radius:8px;background:var(--apx-tt-bg);border:1px solid var(--apx-tt-border);box-shadow:var(--apx-tt-shadow);color:var(--apx-tt-color);cursor:default;font-size:13px;left:0;top:0;opacity:0;pointer-events:none;position:absolute;display:flex;flex-direction:column;padding:2px 0;white-space:nowrap;z-index:12;transition:opacity .12s ease}.apexcharts-tooltip.apexcharts-active{opacity:1;transition:opacity .12s ease}.apexcharts-tooltip.apexcharts-tooltip-interactive.apexcharts-active{pointer-events:auto}.apexcharts-tooltip.apexcharts-active[data-positioned=true]{transition:opacity .12s ease,left .16s ease-out,top .16s ease-out}.apexcharts-tooltip.apexcharts-theme-dark{--apx-tt-bg: #1c1c1f;--apx-tt-border: rgba(255, 255, 255, .16);--apx-tt-shadow: 0 calc(var(--apx-tt-shadow-dir) * 1px) 2px rgba(0, 0, 0, .24), 0 calc(var(--apx-tt-shadow-dir) * 4px) 8px -2px rgba(0, 0, 0, .3), 0 calc(var(--apx-tt-shadow-dir) * 12px) 20px -8px rgba(0, 0, 0, .38);--apx-tt-color: #f3f4f6;--apx-tt-color-muted: rgba(243, 244, 246, .55)}.apexcharts-tooltip *{font-family:inherit}.apexcharts-tooltip.apexcharts-annotation-tooltip{padding:6px 10px;max-width:240px;white-space:normal;line-height:1.4;pointer-events:none;z-index:13}.apexcharts-tooltip-title{padding:8px 12px 4px;font-size:12px;font-weight:600;letter-spacing:.01em;color:var(--apx-tt-color-muted);background:transparent;border-bottom:none;margin-bottom:0}.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title,.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title{background:transparent;border-bottom:none}.apexcharts-tooltip.apexcharts-tooltip-fill-series{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border:none;padding:0;overflow:hidden;color:#fff}.apexcharts-tooltip.apexcharts-tooltip-fill-series .apexcharts-tooltip-title{background:#00000038;color:#fff;opacity:1;padding:6px 12px}.apexcharts-tooltip.apexcharts-tooltip-fill-series .apexcharts-tooltip-series-group{color:#fff}.apexcharts-tooltip-arrow{position:absolute;box-sizing:border-box;width:10px;height:10px;background:var(--apx-tt-arrow-bg);transform:rotate(45deg);pointer-events:none;top:calc(var(--apx-tt-arrow-y, calc(50% + 1px) ) - 6px)}.apexcharts-tooltip[data-placement=right] .apexcharts-tooltip-arrow{left:-6px;border-left:1px solid var(--apx-tt-border);border-bottom:1px solid var(--apx-tt-border)}.apexcharts-tooltip[data-placement=left] .apexcharts-tooltip-arrow{right:-6px;border-top:1px solid var(--apx-tt-border);border-right:1px solid var(--apx-tt-border)}.apexcharts-tooltip[data-placement=top] .apexcharts-tooltip-arrow,.apexcharts-tooltip[data-placement=bottom] .apexcharts-tooltip-arrow{top:auto;left:calc(var(--apx-tt-arrow-x, calc(50% + 1px) ) - 6px)}.apexcharts-tooltip[data-placement=top] .apexcharts-tooltip-arrow{bottom:-6px;border-right:1px solid var(--apx-tt-border);border-bottom:1px solid var(--apx-tt-border)}.apexcharts-tooltip[data-placement=bottom] .apexcharts-tooltip-arrow{top:-6px;border-top:1px solid var(--apx-tt-border);border-left:1px solid var(--apx-tt-border)}.apexcharts-tooltip[data-placement=bottom]{--apx-tt-shadow-dir: -1 }.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value{display:inline-block;margin-left:5px;font-weight:600}.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty{display:none}.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value{padding:6px 0 5px}.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value{display:flex}.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty){margin-top:-6px}.apexcharts-tooltip-marker{display:inline-flex;align-items:center;justify-content:center;position:relative;width:12px;height:12px;margin-right:6px;vertical-align:middle;color:inherit}.apexcharts-tooltip-marker svg{width:100%;height:100%;display:block}.apexcharts-tooltip-series-group{padding:4px 12px;display:none;gap:8px;text-align:left;justify-content:left;align-items:center}.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker{opacity:1}.apexcharts-tooltip-series-group.apexcharts-active:last-child,.apexcharts-tooltip-series-group:last-child{padding-bottom:8px}.apexcharts-tooltip-y-group{padding:6px 0 5px}.apexcharts-tooltip.apexcharts-tooltip-compact{padding:3px 8px;font-size:11px;line-height:1.35}.apexcharts-tooltip-compact .apexcharts-tooltip-title{padding:0;font-size:11px;white-space:nowrap}.apexcharts-tooltip-compact .apexcharts-tooltip-series-group,.apexcharts-tooltip-compact .apexcharts-tooltip-series-group.apexcharts-active:last-child,.apexcharts-tooltip-compact .apexcharts-tooltip-series-group:last-child{padding:0;gap:5px}.apexcharts-tooltip-compact .apexcharts-tooltip-y-group{padding:0}.apexcharts-tooltip-compact .apexcharts-tooltip-marker{width:8px;height:8px}.apexcharts-tooltip.apexcharts-tooltip-compact.apexcharts-tooltip-value-only{flex-direction:row;align-items:baseline;gap:6px}.apexcharts-tooltip-value-only .apexcharts-tooltip-marker,.apexcharts-tooltip-value-only .apexcharts-tooltip-text-y-label{display:none}.apexcharts-custom-tooltip,.apexcharts-tooltip-box{padding:4px 8px}.apexcharts-tooltip-boxPlot{display:flex;flex-direction:column-reverse}.apexcharts-tooltip-box>div{margin:4px 0}.apexcharts-tooltip-box span.value{font-weight:700}.apexcharts-tooltip-rangebar{padding:5px 8px}.apexcharts-tooltip-rangebar .category{font-weight:600;color:#777}.apexcharts-tooltip-rangebar .series-name{font-weight:700;display:block;margin-bottom:5px}.apexcharts-tooltip-stream{padding:5px 8px}.apexcharts-tooltip-stream .apexcharts-tooltip-title{background:transparent;border:0;padding:0 0 4px;margin:0;font-weight:700}.apexcharts-tooltip-stream-band{display:flex;align-items:center;gap:5px;line-height:1.6;opacity:.72}.apexcharts-tooltip-stream-band.apexcharts-active{opacity:1;font-weight:700}.apexcharts-tooltip-stream-band .series-name{flex:1 1 auto;margin-right:8px}.apexcharts-tooltip-stream-band .value{font-weight:700;margin-left:auto}.apexcharts-tooltip-stream-total{display:flex;align-items:center;margin-top:4px;padding-top:4px;border-top:1px solid var(--apx-tt-border, rgba(15, 23, 42, .12))}.apexcharts-tooltip-stream-total .series-name{flex:1 1 auto;font-weight:600}.apexcharts-tooltip-stream-total .value{font-weight:700;margin-left:auto}.apexcharts-streamgraph-label{pointer-events:none}.apexcharts-xaxistooltip,.apexcharts-yaxistooltip{--apx-axt-bg: #ffffff;--apx-axt-border: rgba(15, 23, 42, .08);--apx-axt-color: #0f172a;--apx-axt-shadow: 0 4px 12px -4px rgba(15, 23, 42, .18), 0 1px 3px -1px rgba(15, 23, 42, .12);opacity:0;pointer-events:none;color:var(--apx-axt-color);font-size:12px;font-weight:500;text-align:center;border-radius:6px;position:absolute;z-index:10;background:var(--apx-axt-bg);border:1px solid var(--apx-axt-border);box-shadow:var(--apx-axt-shadow)}.apexcharts-xaxistooltip.apexcharts-theme-dark,.apexcharts-yaxistooltip.apexcharts-theme-dark{--apx-axt-bg: #1c1c1f;--apx-axt-border: rgba(255, 255, 255, .1);--apx-axt-color: #f3f4f6;--apx-axt-shadow: 0 4px 12px -4px rgba(0, 0, 0, .55), 0 1px 3px -1px rgba(0, 0, 0, .45) }.apexcharts-xaxistooltip{padding:4px 8px;transition:.15s ease all}.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before{left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-xaxistooltip:after{border-color:transparent;border-width:5px;margin-left:-5px}.apexcharts-xaxistooltip:before{border-color:transparent;border-width:6px;margin-left:-6px}.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before{bottom:100%}.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before{top:100%}.apexcharts-xaxistooltip-bottom:after{border-bottom-color:var(--apx-axt-bg)}.apexcharts-xaxistooltip-bottom:before{border-bottom-color:var(--apx-axt-border)}.apexcharts-xaxistooltip-top:after{border-top-color:var(--apx-axt-bg)}.apexcharts-xaxistooltip-top:before{border-top-color:var(--apx-axt-border)}.apexcharts-xaxistooltip.apexcharts-active{opacity:1;transition:.15s ease all}.apexcharts-yaxistooltip{padding:3px 8px}.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before{top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-yaxistooltip:after{border-color:transparent;border-width:5px;margin-top:-5px}.apexcharts-yaxistooltip:before{border-color:transparent;border-width:6px;margin-top:-6px}.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before{left:100%}.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before{right:100%}.apexcharts-yaxistooltip-left:after{border-left-color:var(--apx-axt-bg)}.apexcharts-yaxistooltip-left:before{border-left-color:var(--apx-axt-border)}.apexcharts-yaxistooltip-right:after{border-right-color:var(--apx-axt-bg)}.apexcharts-yaxistooltip-right:before{border-right-color:var(--apx-axt-border)}.apexcharts-yaxistooltip.apexcharts-active{opacity:1}.apexcharts-yaxistooltip-hidden{display:none}.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{pointer-events:none;opacity:0;transition:.15s ease all}.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active{opacity:1;transition:.15s ease all}.apexcharts-ycrosshairs-hidden{opacity:0}.apexcharts-selection-rect{cursor:move}.svg_select_shape{stroke-width:1;stroke-dasharray:10 10;stroke:#000;stroke-opacity:.1;pointer-events:none;fill:none}.svg_select_handle{stroke-width:3;stroke:#000;fill:none}.svg_select_handle_r{cursor:e-resize}.svg_select_handle_l{cursor:w-resize}.apexcharts-svg.apexcharts-zoomable.hovering-zoom{cursor:crosshair}.apexcharts-svg.apexcharts-zoomable.hovering-pan{cursor:move}.apexcharts-menu-icon,.apexcharts-measure-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon{cursor:pointer;width:26px;height:24px;line-height:24px;color:#6e8192;text-align:center;padding:0;margin:0;background:transparent;border:0;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;transition:background-color .12s ease,color .12s ease}.apexcharts-menu-icon svg,.apexcharts-measure-icon svg,.apexcharts-pan-icon svg,.apexcharts-reset-icon svg,.apexcharts-selection-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.apexcharts-theme-dark .apexcharts-menu-icon,.apexcharts-theme-dark .apexcharts-measure-icon,.apexcharts-theme-dark .apexcharts-pan-icon,.apexcharts-theme-dark .apexcharts-reset-icon,.apexcharts-theme-dark .apexcharts-selection-icon,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon,.apexcharts-theme-dark .apexcharts-zoom-icon,.apexcharts-theme-dark .apexcharts-zoomin-icon,.apexcharts-theme-dark .apexcharts-zoomout-icon{color:#d4d6dc}.apexcharts-canvas .apexcharts-measure-icon.apexcharts-selected,.apexcharts-canvas .apexcharts-pan-icon.apexcharts-selected,.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected{background:#008ffb1f;color:#008ffb}.apexcharts-theme-light .apexcharts-menu-icon:hover,.apexcharts-theme-light .apexcharts-measure-icon:not(.apexcharts-selected):hover,.apexcharts-theme-light .apexcharts-pan-icon:not(.apexcharts-selected):hover,.apexcharts-theme-light .apexcharts-reset-icon:hover,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover,.apexcharts-theme-light .apexcharts-zoomin-icon:hover,.apexcharts-theme-light .apexcharts-zoomout-icon:hover{background:#0f172a0f;color:#1f2937}.apexcharts-theme-dark .apexcharts-menu-icon:hover,.apexcharts-theme-dark .apexcharts-measure-icon:not(.apexcharts-selected):hover,.apexcharts-theme-dark .apexcharts-pan-icon:not(.apexcharts-selected):hover,.apexcharts-theme-dark .apexcharts-reset-icon:hover,.apexcharts-theme-dark .apexcharts-selection-icon:not(.apexcharts-selected):hover,.apexcharts-theme-dark .apexcharts-zoom-icon:not(.apexcharts-selected):hover,.apexcharts-theme-dark .apexcharts-zoomin-icon:hover,.apexcharts-theme-dark .apexcharts-zoomout-icon:hover{background:#ffffff14;color:#fff}.apexcharts-menu-icon,.apexcharts-selection-icon{position:relative}.apexcharts-toolbar{position:absolute;z-index:11;display:inline-flex;align-items:center;gap:1px;padding:3px;border-radius:8px;background:#ffffffd9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.apexcharts-theme-dark .apexcharts-toolbar{background:#1c1c1fd1}.apexcharts-menu{background:#fffffff2;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);position:absolute;top:calc(100% + 4px);border:1px solid rgba(15,23,42,.08);border-radius:8px;padding:4px;right:0;opacity:0;min-width:120px;transition:opacity .15s ease,transform .15s ease;transform:translateY(-2px);pointer-events:none;box-shadow:0 4px 16px -4px #0f172a1f,0 2px 4px -1px #0f172a0f}.apexcharts-menu.apexcharts-menu-open{opacity:1;transform:translateY(0);pointer-events:all}.apexcharts-menu-item{padding:6px 9px;font-size:12px;border-radius:5px;cursor:pointer}.apexcharts-theme-light .apexcharts-menu-item:hover{background:#0f172a0f}.apexcharts-theme-dark .apexcharts-menu{background:#1c1c1feb;border-color:#ffffff14;color:#f3f4f6;box-shadow:0 4px 16px -4px #00000080,0 2px 4px -1px #0006}.apexcharts-theme-dark .apexcharts-menu-item:hover{background:#ffffff14}@media screen and (min-width:768px){.apexcharts-canvas:hover .apexcharts-toolbar{opacity:1}}.apexcharts-toolbar:focus-within{opacity:1}.apexcharts-menu-icon:focus-visible,.apexcharts-measure-icon:focus-visible,.apexcharts-pan-icon:focus-visible,.apexcharts-reset-icon:focus-visible,.apexcharts-selection-icon:focus-visible,.apexcharts-toolbar-custom-icon:focus-visible,.apexcharts-zoom-icon:focus-visible,.apexcharts-zoomin-icon:focus-visible,.apexcharts-zoomout-icon:focus-visible{outline:2px solid var(--apexcharts-focus-color, #008FFB);outline-offset:1px;border-radius:5px}.apexcharts-menu-item:focus-visible{outline:2px solid var(--apexcharts-focus-color, #008FFB);outline-offset:-2px;background:#eee}.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points{opacity:0}.apexcharts-hidden-element-shown{opacity:1;transition:.25s ease all}.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label,.apexcharts-pie-name-label,.apexcharts-pie-name-label-group,.apexcharts-pie-label-connector,.apexcharts-unit-outer-label,.apexcharts-unit-outer-label-group,.apexcharts-unit-label-connector{cursor:default;pointer-events:none}.apexcharts-pie-label-connector,.apexcharts-unit-label-connector{fill:none}.apexcharts-pie-label-delay,.apexcharts-unit-label-delay{opacity:0;animation-name:opaque;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease}.apexcharts-unit-label-delay{animation-duration:.5s}.apexcharts-radialbar-label{cursor:pointer}.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-gridline,.apexcharts-line,.apexcharts-point-annotation-label,.apexcharts-radar-series path:not(.apexcharts-marker),.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect,.no-pointer-events{pointer-events:none}.apexcharts-tooltip-active .apexcharts-marker{transition:.15s ease all}.apexcharts-radar-series .apexcharts-yaxis,.apexcharts-bar-goals-markers,.apexcharts-bar-shadows,.apexcharts-rangebar-goals-markers{pointer-events:none}.apexcharts-drilldown-target{cursor:pointer}.apexcharts-breadcrumb{position:absolute;z-index:11;display:inline-flex;align-items:center;gap:2px;font-size:12px;font-family:inherit;padding:2px 4px}.apexcharts-breadcrumb-item{background:transparent;border:none;padding:2px 6px;border-radius:3px;font:inherit;color:inherit;cursor:pointer;line-height:1.2}.apexcharts-breadcrumb-item:hover:not(.apexcharts-breadcrumb-current){background:#00000014}.apexcharts-breadcrumb-arrow{margin-right:4px;font-weight:600;user-select:none}.apexcharts-breadcrumb-current{cursor:default;font-weight:600;opacity:.85}.apexcharts-breadcrumb-separator{opacity:.5;user-select:none}.apexcharts-theme-dark .apexcharts-breadcrumb-item:hover:not(.apexcharts-breadcrumb-current){background:#ffffff1f}.apexcharts-drilldown-loading{position:absolute;inset:0;z-index:12;display:flex;align-items:center;justify-content:center;gap:10px;font-size:13px;font-family:inherit;color:inherit;background:#ffffff9e;cursor:progress}.apexcharts-drilldown-loading-spinner{width:26px;height:26px;border-radius:50%;border:2.5px solid rgba(0,0,0,.16);border-top-color:#0000008c;animation:apexcharts-drilldown-spin .7s linear infinite}.apexcharts-drilldown-loading-text{opacity:.8}.apexcharts-theme-dark .apexcharts-drilldown-loading{background:#1e1e1e9e}.apexcharts-theme-dark .apexcharts-drilldown-loading-spinner{border-color:#ffffff38;border-top-color:#ffffffb3}@keyframes apexcharts-drilldown-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.apexcharts-canvas:not(.apexcharts-ignore-reduced-motion) .apexcharts-drilldown-loading-spinner{animation:apexcharts-drilldown-pulse 1.4s ease-in-out infinite!important}@keyframes apexcharts-drilldown-pulse{0%,to{opacity:.35}50%{opacity:1}}}.apexcharts-disable-transitions *{transition:none!important}.apexcharts-trellis{position:relative}.apexcharts-trellis-grid{display:grid}.apexcharts-trellis-cell{min-width:0;position:relative}.apexcharts-trellis-header{font-size:12px;font-weight:600;line-height:22px;height:22px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-title{font-size:14px;font-weight:700;padding:2px 0 6px;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-mute-y .apexcharts-yaxis,.apexcharts-trellis-mute-x .apexcharts-xaxis{opacity:0}.apexcharts-trellis-has-toolbar{padding-top:24px}.apexcharts-trellis-strip{font-size:12px;font-weight:600;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.apexcharts-trellis-strip-column{text-align:center;line-height:22px;height:22px;align-self:end}.apexcharts-trellis-strip-row{align-self:center;max-width:140px;padding-right:6px}.apexcharts-trellis-cell-empty{position:relative}.apexcharts-trellis-empty-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f));opacity:.45;pointer-events:none}.apexcharts-trellis-cell-hidden>*{visibility:hidden}.apexcharts-trellis-gradient-legend{margin:10px auto 0}.apexcharts-trellis-panel.apexcharts-trellis-skeleton{background:var(--apx-fore, var(--apx-trellis-fore, #373d3f));opacity:.05;border-radius:4px}.apexcharts-trellis[data-tooltip-mode=panel] .apexcharts-trellis-cell:not(:hover) .apexcharts-tooltip,.apexcharts-trellis[data-tooltip-mode=panel] .apexcharts-trellis-cell:not(:hover) .apexcharts-xaxistooltip,.apexcharts-trellis[data-tooltip-mode=panel] .apexcharts-trellis-cell:not(:hover) .apexcharts-yaxistooltip{opacity:0!important}.apexcharts-trellis[data-tooltip-mode=grid] .apexcharts-trellis-cell .apexcharts-tooltip,.apexcharts-trellis[data-tooltip-mode=grid] .apexcharts-trellis-cell .apexcharts-xaxistooltip,.apexcharts-trellis[data-tooltip-mode=grid] .apexcharts-trellis-cell .apexcharts-yaxistooltip{opacity:0!important}.apexcharts-trellis-tooltip{position:absolute;top:0;left:0;z-index:14;pointer-events:none;opacity:0;transition:opacity .1s ease;background:var(--apx-bg, #fff);color:var(--apx-fore, var(--apx-trellis-fore, #373d3f));border:1px solid rgba(120,120,120,.25);border-radius:5px;box-shadow:2px 2px 6px -4px #0006;font-size:12px;min-width:140px;max-width:320px}.apexcharts-trellis-tooltip-active{opacity:1}.apexcharts-trellis-tooltip .apexcharts-tooltip-title{padding:5px 10px;font-weight:600;background:#78787814;border-bottom:1px solid rgba(120,120,120,.18);margin-bottom:2px}.apexcharts-trellis-tooltip-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:2px 10px;line-height:1.6}.apexcharts-trellis-tooltip-row-active{background:#7878781a;font-weight:600}.apexcharts-trellis-tooltip-key{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.apexcharts-trellis-tooltip-vals{display:flex;gap:10px;white-space:nowrap}.apexcharts-trellis-tooltip-val{display:inline-flex;align-items:center;gap:5px}.apexcharts-trellis-tooltip-marker{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.apexcharts-trellis-cell-promoted{grid-column:1 / -1}.apexcharts-trellis-cell-parked{display:none}.apexcharts-trellis-cell-promoted.apexcharts-trellis-mute-y .apexcharts-yaxis,.apexcharts-trellis-cell-promoted.apexcharts-trellis-mute-x .apexcharts-xaxis{opacity:1}.apexcharts-trellis-header-clickable{cursor:pointer}.apexcharts-trellis-header-clickable:hover{text-decoration:underline;text-underline-offset:3px}.apexcharts-trellis-breadcrumb{display:flex;align-items:center;gap:6px;font-size:12px;padding:2px 0 6px;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-breadcrumb-back{border:none;background:none;padding:0;font-size:12px;cursor:pointer;color:var(--apx-accent, #008ffb)}.apexcharts-trellis-breadcrumb-back:hover{text-decoration:underline}.apexcharts-trellis-breadcrumb-sep{opacity:.5}.apexcharts-trellis-breadcrumb-current{font-weight:600}.apexcharts-trellis-menu{position:absolute;top:26px;right:0;display:none;flex-direction:column;min-width:132px;background:var(--apx-bg, #fff);border:1px solid rgba(120,120,120,.25);border-radius:5px;box-shadow:2px 2px 6px -4px #0006;padding:4px;z-index:15}.apexcharts-trellis-menu-open{display:flex}.apexcharts-trellis-menu-item{border:none;background:none;text-align:left;font-size:12px;padding:5px 8px;border-radius:3px;cursor:pointer;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-menu-item:hover{background:#7878781f}.apexcharts-trellis-toolbar{position:absolute;top:0;right:0;display:flex;gap:2px;z-index:12}.apexcharts-trellis-tool{border:0;background:transparent;padding:2px;cursor:pointer;border-radius:3px;color:#6e8192;line-height:0}.apexcharts-trellis-tool:hover{color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-tool.apexcharts-selected{color:var(--apx-accent, #008ffb)}.apexcharts-trellis-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 14px;padding:8px 10px 2px}.apexcharts-trellis-legend-item{display:flex;align-items:center;gap:6px;cursor:pointer;line-height:1}.apexcharts-trellis-legend-item .apexcharts-legend-marker{width:12px;height:12px;border-radius:50%;display:inline-block}.apexcharts-trellis-legend-item .apexcharts-legend-text{font-size:12px;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-legend-item.apexcharts-inactive-legend{opacity:.45}@media print{.apexcharts-canvas.apexcharts-printing,.apexcharts-canvas.apexcharts-printing svg{max-width:100%!important}.apexcharts-canvas.apexcharts-printing svg{height:auto!important}.apexcharts-canvas.apexcharts-printing{height:auto!important}.apexcharts-toolbar{display:none!important}}';
|
|
33742
|
+
const apexCSS = '@keyframes opaque{0%{opacity:0}to{opacity:1}}.apexcharts-canvas{position:relative;direction:ltr!important;user-select:none;--apexcharts-focus-color: #008FFB}.apexcharts-canvas .apexcharts-theme-dark,.apexcharts-theme-dark.apexcharts-canvas{--apexcharts-focus-color: #FFD500}.apexcharts-canvas.apexcharts-high-contrast,.apexcharts-high-contrast.apexcharts-canvas{--apexcharts-focus-color: #FFFF00}.apexcharts-sr-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.apexcharts-canvas:not(.apexcharts-ignore-reduced-motion) *,.apexcharts-canvas:not(.apexcharts-ignore-reduced-motion) *:before,.apexcharts-canvas:not(.apexcharts-ignore-reduced-motion) *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.apexcharts-canvas ::-webkit-scrollbar{-webkit-appearance:none;width:6px}.apexcharts-canvas ::-webkit-scrollbar-thumb{border-radius:4px;background-color:#00000080;box-shadow:0 0 1px #ffffff80;-webkit-box-shadow:0 0 1px rgba(255,255,255,.5)}.apexcharts-inner{position:relative}.apexcharts-text tspan{font-family:inherit}rect.legend-mouseover-inactive,.legend-mouseover-inactive rect,.legend-mouseover-inactive path,.legend-mouseover-inactive circle,.legend-mouseover-inactive line,.legend-mouseover-inactive text.apexcharts-yaxis-title-text,.legend-mouseover-inactive text.apexcharts-yaxis-label{transition:.15s ease all;opacity:.2}.apexcharts-crossfilter-dimmed{transition:opacity .25s ease;opacity:var(--apx-cf-dim, .2)}.apexcharts-cf-table{border-collapse:collapse;width:100%;font-size:13px}.apexcharts-cf-table caption{caption-side:bottom;text-align:right;padding:6px 2px;font-size:12px;opacity:.7}.apexcharts-cf-table th,.apexcharts-cf-table td{padding:6px 10px;text-align:left;border-bottom:1px solid rgba(0,0,0,.08)}.apexcharts-cf-table th{font-weight:600;border-bottom-width:2px}.apexcharts-cf-table tbody tr:hover{background:#6366f10f}.apexcharts-canvas{--apx-measure-up: #16a34a;--apx-measure-down: #dc2626;--apx-measure-neutral: #64748b;--apx-measure-guide: #94a3b8}.apexcharts-measure-capture{cursor:crosshair}.apexcharts-canvas{--apx-menu-bg: #ffffff;--apx-menu-fg: #1e293b;--apx-menu-border: #e2e8f0;--apx-menu-hover: #f1f5f9;--apx-menu-shadow: rgba(15, 23, 42, .18)}.apexcharts-context-menu{min-width:168px;padding:4px;border-radius:8px;background:var(--apx-menu-bg);border:1px solid var(--apx-menu-border);box-shadow:0 6px 22px var(--apx-menu-shadow);font-family:Helvetica,Arial,sans-serif;font-size:13px;z-index:20;user-select:none}.apexcharts-context-menu-item{display:block;width:100%;box-sizing:border-box;text-align:left;padding:7px 12px;border:0;border-radius:5px;background:transparent;color:var(--apx-menu-fg);font:inherit;cursor:pointer}.apexcharts-context-menu-item:hover,.apexcharts-context-menu-item--active{background:var(--apx-menu-hover)}.apexcharts-context-menu-item:focus{outline:none}.apexcharts-canvas{--apx-ink-card-bg: #ffffff;--apx-ink-card-fg: #1e293b;--apx-ink-card-border: #e2e8f0;--apx-ink-card-hover: #f1f5f9;--apx-ink-card-accent: #6366f1;--apx-ink-card-shadow: rgba(15, 23, 42, .18)}.apexcharts-ink-card{position:absolute;z-index:25;display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:8px;background:var(--apx-ink-card-bg);border:1px solid var(--apx-ink-card-border);box-shadow:0 6px 22px var(--apx-ink-card-shadow);font-family:Helvetica,Arial,sans-serif;font-size:12px;color:var(--apx-ink-card-fg);user-select:none}.apexcharts-ink-card-row{display:flex;align-items:center;gap:4px}.apexcharts-ink-card input.apexcharts-ink-editor{flex:1 1 auto;width:150px;min-width:0;box-sizing:border-box;padding:4px 6px;font:inherit;color:inherit;background:transparent;border:1px solid var(--apx-ink-card-border);border-radius:5px}.apexcharts-ink-card input.apexcharts-ink-editor:focus{outline:none;border-color:var(--apx-ink-card-accent)}.apexcharts-ink-btn{flex:0 0 auto;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:5px;background:transparent;color:inherit;font:inherit;font-size:12px;line-height:1;cursor:pointer}.apexcharts-ink-btn:hover,.apexcharts-ink-btn--active{background:var(--apx-ink-card-hover)}.apexcharts-ink-btn:focus-visible,.apexcharts-ink-swatch:focus-visible{outline:2px solid var(--apx-ink-card-accent);outline-offset:1px}.apexcharts-ink-btn--bold{font-weight:700}.apexcharts-ink-btn--delete:hover{color:#dc2626}.apexcharts-ink-swatch{flex:0 0 auto;width:16px;height:16px;padding:0;border:1px solid rgba(100,116,139,.45);border-radius:50%;cursor:pointer}.apexcharts-ink-swatch--active{box-shadow:0 0 0 2px var(--apx-ink-card-bg),0 0 0 4px var(--apx-ink-card-accent)}.apexcharts-ink-sep{flex:0 0 auto;width:1px;height:16px;margin:0 2px;background:var(--apx-ink-card-border)}.apexcharts-ink-cardlabel{flex:0 0 auto;font-size:10px;letter-spacing:.4px;text-transform:uppercase;opacity:.65;margin-right:2px}.apexcharts-ink-marker-size{flex:0 0 auto;min-width:16px;text-align:center;font-variant-numeric:tabular-nums}.apexcharts-legend-text{padding-left:15px;margin-left:-15px}.apexcharts-legend-series[role=button]:focus{outline:2px solid var(--apexcharts-focus-color, #008FFB);outline-offset:2px}.apexcharts-legend-series[role=button]:focus:not(:focus-visible){outline:none}.apexcharts-legend-series[role=button]:focus-visible{outline:2px solid var(--apexcharts-focus-color, #008FFB);outline-offset:2px}.apexcharts-series-collapsed{opacity:0}.apexcharts-series-collapsed.apexcharts-series-collapsing{opacity:1}.apexcharts-datalabels.apexcharts-series-collapsing{animation:apexcharts-datalabels-exit var(--apexcharts-dl-exit, .4s) ease-in forwards}@keyframes apexcharts-datalabels-exit{0%{opacity:1}to{opacity:0}}.apexcharts-canvas svg:focus:not(:focus-visible){outline:none}.apexcharts-bar-area.apexcharts-keyboard-focused,.apexcharts-candlestick-area.apexcharts-keyboard-focused,.apexcharts-boxPlot-area.apexcharts-keyboard-focused,.apexcharts-violin-area.apexcharts-keyboard-focused,.apexcharts-rangebar-area.apexcharts-keyboard-focused,.apexcharts-pie-area.apexcharts-keyboard-focused,.apexcharts-heatmap-rect.apexcharts-keyboard-focused,.apexcharts-treemap-rect.apexcharts-keyboard-focused,.apexcharts-keyboard-focus-ring{stroke:var(--apexcharts-focus-color, #008FFB);stroke-width:2;stroke-opacity:1}.apexcharts-keyboard-focus-ring{fill:none;pointer-events:none}.apexcharts-tooltip{--apx-tt-bg: #ffffff;--apx-tt-border: rgba(15, 23, 42, .12);--apx-tt-shadow-dir: 1;--apx-tt-shadow: 0 calc(var(--apx-tt-shadow-dir) * 1px) 2px rgba(15, 23, 42, .06), 0 calc(var(--apx-tt-shadow-dir) * 4px) 8px -2px rgba(15, 23, 42, .1), 0 calc(var(--apx-tt-shadow-dir) * 12px) 20px -8px rgba(15, 23, 42, .14);--apx-tt-arrow-bg: var(--apx-tt-bg);--apx-tt-color: #0f172a;--apx-tt-color-muted: rgba(15, 23, 42, .55);border-radius:8px;background:var(--apx-tt-bg);border:1px solid var(--apx-tt-border);box-shadow:var(--apx-tt-shadow);color:var(--apx-tt-color);cursor:default;font-size:13px;left:0;top:0;opacity:0;pointer-events:none;position:absolute;display:flex;flex-direction:column;padding:2px 0;white-space:nowrap;z-index:12;transition:opacity .12s ease}.apexcharts-tooltip.apexcharts-active{opacity:1;transition:opacity .12s ease}.apexcharts-tooltip.apexcharts-tooltip-interactive.apexcharts-active{pointer-events:auto}.apexcharts-tooltip.apexcharts-active[data-positioned=true]{transition:opacity .12s ease,left .16s ease-out,top .16s ease-out}.apexcharts-tooltip.apexcharts-theme-dark{--apx-tt-bg: #1c1c1f;--apx-tt-border: rgba(255, 255, 255, .16);--apx-tt-shadow: 0 calc(var(--apx-tt-shadow-dir) * 1px) 2px rgba(0, 0, 0, .24), 0 calc(var(--apx-tt-shadow-dir) * 4px) 8px -2px rgba(0, 0, 0, .3), 0 calc(var(--apx-tt-shadow-dir) * 12px) 20px -8px rgba(0, 0, 0, .38);--apx-tt-color: #f3f4f6;--apx-tt-color-muted: rgba(243, 244, 246, .55)}.apexcharts-tooltip *{font-family:inherit}.apexcharts-tooltip.apexcharts-annotation-tooltip{padding:6px 10px;max-width:240px;white-space:normal;line-height:1.4;pointer-events:none;z-index:13}.apexcharts-tooltip-title{padding:8px 12px 4px;font-size:12px;font-weight:600;letter-spacing:.01em;color:var(--apx-tt-color-muted);background:transparent;border-bottom:none;margin-bottom:0}.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title,.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title{background:transparent;border-bottom:none}.apexcharts-tooltip.apexcharts-tooltip-fill-series{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border:none;padding:0;overflow:hidden;color:#fff}.apexcharts-tooltip.apexcharts-tooltip-fill-series .apexcharts-tooltip-title{background:#00000038;color:#fff;opacity:1;padding:6px 12px}.apexcharts-tooltip.apexcharts-tooltip-fill-series .apexcharts-tooltip-series-group{color:#fff}.apexcharts-tooltip-arrow{position:absolute;box-sizing:border-box;width:10px;height:10px;background:var(--apx-tt-arrow-bg);transform:rotate(45deg);pointer-events:none;top:calc(var(--apx-tt-arrow-y, calc(50% + 1px) ) - 6px)}.apexcharts-tooltip[data-placement=right] .apexcharts-tooltip-arrow{left:-6px;border-left:1px solid var(--apx-tt-border);border-bottom:1px solid var(--apx-tt-border)}.apexcharts-tooltip[data-placement=left] .apexcharts-tooltip-arrow{right:-6px;border-top:1px solid var(--apx-tt-border);border-right:1px solid var(--apx-tt-border)}.apexcharts-tooltip[data-placement=top] .apexcharts-tooltip-arrow,.apexcharts-tooltip[data-placement=bottom] .apexcharts-tooltip-arrow{top:auto;left:calc(var(--apx-tt-arrow-x, calc(50% + 1px) ) - 6px)}.apexcharts-tooltip[data-placement=top] .apexcharts-tooltip-arrow{bottom:-6px;border-right:1px solid var(--apx-tt-border);border-bottom:1px solid var(--apx-tt-border)}.apexcharts-tooltip[data-placement=bottom] .apexcharts-tooltip-arrow{top:-6px;border-top:1px solid var(--apx-tt-border);border-left:1px solid var(--apx-tt-border)}.apexcharts-tooltip[data-placement=bottom]{--apx-tt-shadow-dir: -1 }.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value{display:inline-block;margin-left:5px;font-weight:600}.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty{display:none}.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value{padding:6px 0 5px}.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value{display:flex}.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty){margin-top:-6px}.apexcharts-tooltip-marker{display:inline-flex;align-items:center;justify-content:center;position:relative;width:12px;height:12px;margin-right:6px;vertical-align:middle;color:inherit}.apexcharts-tooltip-marker svg{width:100%;height:100%;display:block}.apexcharts-tooltip-series-group{padding:4px 12px;display:none;gap:8px;text-align:left;justify-content:left;align-items:center}.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker{opacity:1}.apexcharts-tooltip-series-group.apexcharts-active:last-child,.apexcharts-tooltip-series-group:last-child{padding-bottom:8px}.apexcharts-tooltip-y-group{padding:6px 0 5px}.apexcharts-tooltip.apexcharts-tooltip-compact{padding:3px 8px;font-size:11px;line-height:1.35}.apexcharts-tooltip-compact .apexcharts-tooltip-title{padding:0;font-size:11px;white-space:nowrap}.apexcharts-tooltip-compact .apexcharts-tooltip-series-group,.apexcharts-tooltip-compact .apexcharts-tooltip-series-group.apexcharts-active:last-child,.apexcharts-tooltip-compact .apexcharts-tooltip-series-group:last-child{padding:0;gap:5px}.apexcharts-tooltip-compact .apexcharts-tooltip-y-group{padding:0}.apexcharts-tooltip-compact .apexcharts-tooltip-marker{width:8px;height:8px}.apexcharts-tooltip.apexcharts-tooltip-compact.apexcharts-tooltip-value-only{flex-direction:row;align-items:baseline;gap:6px}.apexcharts-tooltip-value-only .apexcharts-tooltip-marker,.apexcharts-tooltip-value-only .apexcharts-tooltip-text-y-label{display:none}.apexcharts-custom-tooltip,.apexcharts-tooltip-box{padding:4px 8px}.apexcharts-tooltip-boxPlot{display:flex;flex-direction:column-reverse}.apexcharts-tooltip-box>div{margin:4px 0}.apexcharts-tooltip-box span.value{font-weight:700}.apexcharts-tooltip-rangebar{padding:5px 8px}.apexcharts-tooltip-rangebar .category{font-weight:600;color:#777}.apexcharts-tooltip-rangebar .series-name{font-weight:700;display:block;margin-bottom:5px}.apexcharts-tooltip-stream{padding:5px 8px}.apexcharts-tooltip-stream .apexcharts-tooltip-title{background:transparent;border:0;padding:0 0 4px;margin:0;font-weight:700}.apexcharts-tooltip-stream-band{display:flex;align-items:center;gap:5px;line-height:1.6;opacity:.72}.apexcharts-tooltip-stream-band.apexcharts-active{opacity:1;font-weight:700}.apexcharts-tooltip-stream-band .series-name{flex:1 1 auto;margin-right:8px}.apexcharts-tooltip-stream-band .value{font-weight:700;margin-left:auto}.apexcharts-tooltip-stream-total{display:flex;align-items:center;margin-top:4px;padding-top:4px;border-top:1px solid var(--apx-tt-border, rgba(15, 23, 42, .12))}.apexcharts-tooltip-stream-total .series-name{flex:1 1 auto;font-weight:600}.apexcharts-tooltip-stream-total .value{font-weight:700;margin-left:auto}.apexcharts-streamgraph-label{pointer-events:none}.apexcharts-xaxistooltip,.apexcharts-yaxistooltip{--apx-axt-bg: #ffffff;--apx-axt-border: rgba(15, 23, 42, .08);--apx-axt-color: #0f172a;--apx-axt-shadow: 0 4px 12px -4px rgba(15, 23, 42, .18), 0 1px 3px -1px rgba(15, 23, 42, .12);opacity:0;pointer-events:none;color:var(--apx-axt-color);font-size:12px;font-weight:500;text-align:center;border-radius:6px;position:absolute;z-index:10;background:var(--apx-axt-bg);border:1px solid var(--apx-axt-border);box-shadow:var(--apx-axt-shadow)}.apexcharts-xaxistooltip.apexcharts-theme-dark,.apexcharts-yaxistooltip.apexcharts-theme-dark{--apx-axt-bg: #1c1c1f;--apx-axt-border: rgba(255, 255, 255, .1);--apx-axt-color: #f3f4f6;--apx-axt-shadow: 0 4px 12px -4px rgba(0, 0, 0, .55), 0 1px 3px -1px rgba(0, 0, 0, .45) }.apexcharts-xaxistooltip{padding:4px 8px;transition:.15s ease all}.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before{left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-xaxistooltip:after{border-color:transparent;border-width:5px;margin-left:-5px}.apexcharts-xaxistooltip:before{border-color:transparent;border-width:6px;margin-left:-6px}.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before{bottom:100%}.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before{top:100%}.apexcharts-xaxistooltip-bottom:after{border-bottom-color:var(--apx-axt-bg)}.apexcharts-xaxistooltip-bottom:before{border-bottom-color:var(--apx-axt-border)}.apexcharts-xaxistooltip-top:after{border-top-color:var(--apx-axt-bg)}.apexcharts-xaxistooltip-top:before{border-top-color:var(--apx-axt-border)}.apexcharts-xaxistooltip.apexcharts-active{opacity:1;transition:.15s ease all}.apexcharts-yaxistooltip{padding:3px 8px}.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before{top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-yaxistooltip:after{border-color:transparent;border-width:5px;margin-top:-5px}.apexcharts-yaxistooltip:before{border-color:transparent;border-width:6px;margin-top:-6px}.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before{left:100%}.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before{right:100%}.apexcharts-yaxistooltip-left:after{border-left-color:var(--apx-axt-bg)}.apexcharts-yaxistooltip-left:before{border-left-color:var(--apx-axt-border)}.apexcharts-yaxistooltip-right:after{border-right-color:var(--apx-axt-bg)}.apexcharts-yaxistooltip-right:before{border-right-color:var(--apx-axt-border)}.apexcharts-yaxistooltip.apexcharts-active{opacity:1}.apexcharts-yaxistooltip-hidden{display:none}.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{pointer-events:none;opacity:0;transition:.15s ease all}.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active{opacity:1;transition:.15s ease all}.apexcharts-ycrosshairs-hidden{opacity:0}.apexcharts-selection-rect{cursor:move}.svg_select_shape{stroke-width:1;stroke-dasharray:10 10;stroke:#000;stroke-opacity:.1;pointer-events:none;fill:none}.svg_select_handle{stroke-width:3;stroke:#000;fill:none}.svg_select_handle_r{cursor:e-resize}.svg_select_handle_l{cursor:w-resize}.apexcharts-svg.apexcharts-zoomable.hovering-zoom{cursor:crosshair}.apexcharts-svg.apexcharts-zoomable.hovering-pan{cursor:move}.apexcharts-wheel-hint{position:absolute;inset:0;z-index:12;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity .2s ease}.apexcharts-wheel-hint-visible{opacity:1}.apexcharts-wheel-hint span{padding:6px 12px;border-radius:8px;font-size:13px;color:#fff;background:#1c1c1fd1}.apexcharts-theme-dark .apexcharts-wheel-hint span{color:#1c1c1f;background:#ffffffe6}@media(prefers-reduced-motion:reduce){.apexcharts-wheel-hint{transition:none}}.apexcharts-menu-icon,.apexcharts-measure-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon{cursor:pointer;width:26px;height:24px;line-height:24px;color:#6e8192;text-align:center;padding:0;margin:0;background:transparent;border:0;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;transition:background-color .12s ease,color .12s ease}.apexcharts-menu-icon svg,.apexcharts-measure-icon svg,.apexcharts-pan-icon svg,.apexcharts-reset-icon svg,.apexcharts-selection-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.apexcharts-theme-dark .apexcharts-menu-icon,.apexcharts-theme-dark .apexcharts-measure-icon,.apexcharts-theme-dark .apexcharts-pan-icon,.apexcharts-theme-dark .apexcharts-reset-icon,.apexcharts-theme-dark .apexcharts-selection-icon,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon,.apexcharts-theme-dark .apexcharts-zoom-icon,.apexcharts-theme-dark .apexcharts-zoomin-icon,.apexcharts-theme-dark .apexcharts-zoomout-icon{color:#d4d6dc}.apexcharts-canvas .apexcharts-measure-icon.apexcharts-selected,.apexcharts-canvas .apexcharts-pan-icon.apexcharts-selected,.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected{background:#008ffb1f;color:#008ffb}.apexcharts-theme-light .apexcharts-menu-icon:hover,.apexcharts-theme-light .apexcharts-measure-icon:not(.apexcharts-selected):hover,.apexcharts-theme-light .apexcharts-pan-icon:not(.apexcharts-selected):hover,.apexcharts-theme-light .apexcharts-reset-icon:hover,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover,.apexcharts-theme-light .apexcharts-zoomin-icon:hover,.apexcharts-theme-light .apexcharts-zoomout-icon:hover{background:#0f172a0f;color:#1f2937}.apexcharts-theme-dark .apexcharts-menu-icon:hover,.apexcharts-theme-dark .apexcharts-measure-icon:not(.apexcharts-selected):hover,.apexcharts-theme-dark .apexcharts-pan-icon:not(.apexcharts-selected):hover,.apexcharts-theme-dark .apexcharts-reset-icon:hover,.apexcharts-theme-dark .apexcharts-selection-icon:not(.apexcharts-selected):hover,.apexcharts-theme-dark .apexcharts-zoom-icon:not(.apexcharts-selected):hover,.apexcharts-theme-dark .apexcharts-zoomin-icon:hover,.apexcharts-theme-dark .apexcharts-zoomout-icon:hover{background:#ffffff14;color:#fff}.apexcharts-menu-icon,.apexcharts-selection-icon{position:relative}.apexcharts-toolbar{position:absolute;z-index:11;display:inline-flex;align-items:center;gap:1px;padding:3px;border-radius:8px;background:#ffffffd9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.apexcharts-theme-dark .apexcharts-toolbar{background:#1c1c1fd1}.apexcharts-menu{background:#fffffff2;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);position:absolute;top:calc(100% + 4px);border:1px solid rgba(15,23,42,.08);border-radius:8px;padding:4px;right:0;opacity:0;min-width:120px;transition:opacity .15s ease,transform .15s ease;transform:translateY(-2px);pointer-events:none;box-shadow:0 4px 16px -4px #0f172a1f,0 2px 4px -1px #0f172a0f}.apexcharts-menu.apexcharts-menu-open{opacity:1;transform:translateY(0);pointer-events:all}.apexcharts-menu-item{padding:6px 9px;font-size:12px;border-radius:5px;cursor:pointer}.apexcharts-theme-light .apexcharts-menu-item:hover{background:#0f172a0f}.apexcharts-theme-dark .apexcharts-menu{background:#1c1c1feb;border-color:#ffffff14;color:#f3f4f6;box-shadow:0 4px 16px -4px #00000080,0 2px 4px -1px #0006}.apexcharts-theme-dark .apexcharts-menu-item:hover{background:#ffffff14}@media screen and (min-width:768px){.apexcharts-canvas:hover .apexcharts-toolbar{opacity:1}}.apexcharts-toolbar:focus-within{opacity:1}.apexcharts-menu-icon:focus-visible,.apexcharts-measure-icon:focus-visible,.apexcharts-pan-icon:focus-visible,.apexcharts-reset-icon:focus-visible,.apexcharts-selection-icon:focus-visible,.apexcharts-toolbar-custom-icon:focus-visible,.apexcharts-zoom-icon:focus-visible,.apexcharts-zoomin-icon:focus-visible,.apexcharts-zoomout-icon:focus-visible{outline:2px solid var(--apexcharts-focus-color, #008FFB);outline-offset:1px;border-radius:5px}.apexcharts-menu-item:focus-visible{outline:2px solid var(--apexcharts-focus-color, #008FFB);outline-offset:-2px;background:#eee}.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points{opacity:0}.apexcharts-hidden-element-shown{opacity:1;transition:.25s ease all}.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label,.apexcharts-pie-name-label,.apexcharts-pie-name-label-group,.apexcharts-pie-label-connector,.apexcharts-unit-outer-label,.apexcharts-unit-outer-label-group,.apexcharts-unit-label-connector{cursor:default;pointer-events:none}.apexcharts-pie-label-connector,.apexcharts-unit-label-connector{fill:none}.apexcharts-pie-label-delay,.apexcharts-unit-label-delay{opacity:0;animation-name:opaque;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease}.apexcharts-unit-label-delay{animation-duration:.5s}.apexcharts-radialbar-label{cursor:pointer}.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-gridline,.apexcharts-line,.apexcharts-point-annotation-label,.apexcharts-radar-series path:not(.apexcharts-marker),.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect,.no-pointer-events{pointer-events:none}.apexcharts-tooltip-active .apexcharts-marker{transition:.15s ease all}.apexcharts-radar-series .apexcharts-yaxis,.apexcharts-bar-goals-markers,.apexcharts-bar-shadows,.apexcharts-rangebar-goals-markers{pointer-events:none}.apexcharts-drilldown-target{cursor:pointer}.apexcharts-breadcrumb{position:absolute;z-index:11;display:inline-flex;align-items:center;gap:2px;font-size:12px;font-family:inherit;padding:2px 4px}.apexcharts-breadcrumb-item{background:transparent;border:none;padding:2px 6px;border-radius:3px;font:inherit;color:inherit;cursor:pointer;line-height:1.2}.apexcharts-breadcrumb-item:hover:not(.apexcharts-breadcrumb-current){background:#00000014}.apexcharts-breadcrumb-arrow{margin-right:4px;font-weight:600;user-select:none}.apexcharts-breadcrumb-current{cursor:default;font-weight:600;opacity:.85}.apexcharts-breadcrumb-separator{opacity:.5;user-select:none}.apexcharts-theme-dark .apexcharts-breadcrumb-item:hover:not(.apexcharts-breadcrumb-current){background:#ffffff1f}.apexcharts-drilldown-loading{position:absolute;inset:0;z-index:12;display:flex;align-items:center;justify-content:center;gap:10px;font-size:13px;font-family:inherit;color:inherit;background:#ffffff9e;cursor:progress}.apexcharts-drilldown-loading-spinner{width:26px;height:26px;border-radius:50%;border:2.5px solid rgba(0,0,0,.16);border-top-color:#0000008c;animation:apexcharts-drilldown-spin .7s linear infinite}.apexcharts-drilldown-loading-text{opacity:.8}.apexcharts-theme-dark .apexcharts-drilldown-loading{background:#1e1e1e9e}.apexcharts-theme-dark .apexcharts-drilldown-loading-spinner{border-color:#ffffff38;border-top-color:#ffffffb3}@keyframes apexcharts-drilldown-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.apexcharts-canvas:not(.apexcharts-ignore-reduced-motion) .apexcharts-drilldown-loading-spinner{animation:apexcharts-drilldown-pulse 1.4s ease-in-out infinite!important}@keyframes apexcharts-drilldown-pulse{0%,to{opacity:.35}50%{opacity:1}}}.apexcharts-disable-transitions *{transition:none!important}.apexcharts-trellis{position:relative}.apexcharts-trellis-grid{display:grid}.apexcharts-trellis-cell{min-width:0;position:relative}.apexcharts-trellis-header{font-size:12px;font-weight:600;line-height:22px;height:22px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-title{font-size:14px;font-weight:700;padding:2px 0 6px;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-mute-y .apexcharts-yaxis,.apexcharts-trellis-mute-x .apexcharts-xaxis{opacity:0}.apexcharts-trellis-has-toolbar{padding-top:24px}.apexcharts-trellis-strip{font-size:12px;font-weight:600;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.apexcharts-trellis-strip-column{text-align:center;line-height:22px;height:22px;align-self:end}.apexcharts-trellis-strip-row{align-self:center;max-width:140px;padding-right:6px}.apexcharts-trellis-cell-empty{position:relative}.apexcharts-trellis-empty-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f));opacity:.45;pointer-events:none}.apexcharts-trellis-cell-hidden>*{visibility:hidden}.apexcharts-trellis-gradient-legend{margin:10px auto 0}.apexcharts-trellis-panel.apexcharts-trellis-skeleton{background:var(--apx-fore, var(--apx-trellis-fore, #373d3f));opacity:.05;border-radius:4px}.apexcharts-trellis[data-tooltip-mode=panel] .apexcharts-trellis-cell:not(:hover) .apexcharts-tooltip,.apexcharts-trellis[data-tooltip-mode=panel] .apexcharts-trellis-cell:not(:hover) .apexcharts-xaxistooltip,.apexcharts-trellis[data-tooltip-mode=panel] .apexcharts-trellis-cell:not(:hover) .apexcharts-yaxistooltip{opacity:0!important}.apexcharts-trellis[data-tooltip-mode=grid] .apexcharts-trellis-cell .apexcharts-tooltip,.apexcharts-trellis[data-tooltip-mode=grid] .apexcharts-trellis-cell .apexcharts-xaxistooltip,.apexcharts-trellis[data-tooltip-mode=grid] .apexcharts-trellis-cell .apexcharts-yaxistooltip{opacity:0!important}.apexcharts-trellis-tooltip{position:absolute;top:0;left:0;z-index:14;pointer-events:none;opacity:0;transition:opacity .1s ease;background:var(--apx-bg, #fff);color:var(--apx-fore, var(--apx-trellis-fore, #373d3f));border:1px solid rgba(120,120,120,.25);border-radius:5px;box-shadow:2px 2px 6px -4px #0006;font-size:12px;min-width:140px;max-width:320px}.apexcharts-trellis-tooltip-active{opacity:1}.apexcharts-trellis-tooltip .apexcharts-tooltip-title{padding:5px 10px;font-weight:600;background:#78787814;border-bottom:1px solid rgba(120,120,120,.18);margin-bottom:2px}.apexcharts-trellis-tooltip-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:2px 10px;line-height:1.6}.apexcharts-trellis-tooltip-row-active{background:#7878781a;font-weight:600}.apexcharts-trellis-tooltip-key{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.apexcharts-trellis-tooltip-vals{display:flex;gap:10px;white-space:nowrap}.apexcharts-trellis-tooltip-val{display:inline-flex;align-items:center;gap:5px}.apexcharts-trellis-tooltip-marker{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.apexcharts-trellis-cell-promoted{grid-column:1 / -1}.apexcharts-trellis-cell-parked{display:none}.apexcharts-trellis-cell-promoted.apexcharts-trellis-mute-y .apexcharts-yaxis,.apexcharts-trellis-cell-promoted.apexcharts-trellis-mute-x .apexcharts-xaxis{opacity:1}.apexcharts-trellis-header-clickable{cursor:pointer}.apexcharts-trellis-header-clickable:hover{text-decoration:underline;text-underline-offset:3px}.apexcharts-trellis-breadcrumb{display:flex;align-items:center;gap:6px;font-size:12px;padding:2px 0 6px;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-breadcrumb-back{border:none;background:none;padding:0;font-size:12px;cursor:pointer;color:var(--apx-accent, #008ffb)}.apexcharts-trellis-breadcrumb-back:hover{text-decoration:underline}.apexcharts-trellis-breadcrumb-sep{opacity:.5}.apexcharts-trellis-breadcrumb-current{font-weight:600}.apexcharts-trellis-menu{position:absolute;top:26px;right:0;display:none;flex-direction:column;min-width:132px;background:var(--apx-bg, #fff);border:1px solid rgba(120,120,120,.25);border-radius:5px;box-shadow:2px 2px 6px -4px #0006;padding:4px;z-index:15}.apexcharts-trellis-menu-open{display:flex}.apexcharts-trellis-menu-item{border:none;background:none;text-align:left;font-size:12px;padding:5px 8px;border-radius:3px;cursor:pointer;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-menu-item:hover{background:#7878781f}.apexcharts-trellis-toolbar{position:absolute;top:0;right:0;display:flex;gap:2px;z-index:12}.apexcharts-trellis-tool{border:0;background:transparent;padding:2px;cursor:pointer;border-radius:3px;color:#6e8192;line-height:0}.apexcharts-trellis-tool:hover{color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-tool.apexcharts-selected{color:var(--apx-accent, #008ffb)}.apexcharts-trellis-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 14px;padding:8px 10px 2px}.apexcharts-trellis-legend-item{display:flex;align-items:center;gap:6px;cursor:pointer;line-height:1}.apexcharts-trellis-legend-item .apexcharts-legend-marker{width:12px;height:12px;border-radius:50%;display:inline-block}.apexcharts-trellis-legend-item .apexcharts-legend-text{font-size:12px;color:var(--apx-fore, var(--apx-trellis-fore, #373d3f))}.apexcharts-trellis-legend-item.apexcharts-inactive-legend{opacity:.45}@media print{.apexcharts-canvas.apexcharts-printing,.apexcharts-canvas.apexcharts-printing svg{max-width:100%!important}.apexcharts-canvas.apexcharts-printing svg{height:auto!important}.apexcharts-canvas.apexcharts-printing{height:auto!important}.apexcharts-toolbar{display:none!important}}';
|
|
33644
33743
|
const e = globalThis.console;
|
|
33645
33744
|
function t(t2, ...s2) {
|
|
33646
33745
|
e.error(t2, ...s2);
|
|
@@ -34689,6 +34788,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
34689
34788
|
if (w.config.chart.accessibility.enabled && w.config.chart.accessibility.keyboard.enabled && w.config.chart.accessibility.keyboard.navigation.enabled) {
|
|
34690
34789
|
(_i = me.keyboardNavigation) == null ? void 0 : _i.init();
|
|
34691
34790
|
}
|
|
34791
|
+
w.interact.keyNav = null;
|
|
34692
34792
|
if (Environment.isBrowser() && w.globals.axisCharts && (w.axisFlags.isXNumeric || /** @type {Record<string,any>} */
|
|
34693
34793
|
w.config.xaxis.convertedCatToNumeric || w.axisFlags.isRangeBar)) {
|
|
34694
34794
|
if (w.config.chart.zoom.enabled || w.config.chart.selection && w.config.chart.selection.enabled || // @ts-ignore — chart.pan is an internal toolbar config property
|
|
@@ -35993,21 +36093,19 @@ var __async = (__this, __arguments, generator) => {
|
|
|
35993
36093
|
* Returns the highest y value in the specified series.
|
|
35994
36094
|
*
|
|
35995
36095
|
* @param {number} [seriesIndex=0]
|
|
35996
|
-
* @returns {number}
|
|
36096
|
+
* @returns {number | undefined}
|
|
35997
36097
|
*/
|
|
35998
36098
|
getHighestValueInSeries(seriesIndex = 0) {
|
|
35999
|
-
|
|
36000
|
-
return range.getMinYMaxY(seriesIndex).highestY;
|
|
36099
|
+
return this.w.seriesData.series[seriesIndex] && new Range(this.w).getMinYMaxY(seriesIndex).highestY;
|
|
36001
36100
|
}
|
|
36002
36101
|
/**
|
|
36003
36102
|
* Returns the lowest y value in the specified series.
|
|
36004
36103
|
*
|
|
36005
36104
|
* @param {number} [seriesIndex=0]
|
|
36006
|
-
* @returns {number}
|
|
36105
|
+
* @returns {number | undefined}
|
|
36007
36106
|
*/
|
|
36008
36107
|
getLowestValueInSeries(seriesIndex = 0) {
|
|
36009
|
-
|
|
36010
|
-
return range.getMinYMaxY(seriesIndex).lowestY;
|
|
36108
|
+
return this.w.seriesData.series[seriesIndex] && new Range(this.w).getMinYMaxY(seriesIndex).lowestY;
|
|
36011
36109
|
}
|
|
36012
36110
|
/**
|
|
36013
36111
|
* Returns the sum of each series (the totals used for percentage calculations).
|
|
@@ -37434,6 +37532,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
37434
37532
|
toggleDataSeries(seriesCnt, isHidden) {
|
|
37435
37533
|
var _a, _b, _c;
|
|
37436
37534
|
const w = this.w;
|
|
37535
|
+
if (!w.dom.baseEl) return;
|
|
37437
37536
|
if (w.globals.axisCharts || w.config.chart.type === "radialBar") {
|
|
37438
37537
|
w.globals.resized = true;
|
|
37439
37538
|
let seriesEl = null;
|
|
@@ -37903,9 +38002,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
37903
38002
|
this._min = 0;
|
|
37904
38003
|
this._max = 0;
|
|
37905
38004
|
this._geom = null;
|
|
38005
|
+
this._grad = null;
|
|
37906
38006
|
this._bandHitEls = [];
|
|
37907
38007
|
this._activeBandIndex = -1;
|
|
37908
38008
|
this._targetEl = null;
|
|
38009
|
+
this.panelsW = null;
|
|
37909
38010
|
this._onCellEnter = this._onCellEnter.bind(this);
|
|
37910
38011
|
this._onCellLeave = this._onCellLeave.bind(this);
|
|
37911
38012
|
this._onBandEnter = this._onBandEnter.bind(this);
|
|
@@ -38020,15 +38121,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38020
38121
|
linearGrad.setAttribute("x2", "1");
|
|
38021
38122
|
linearGrad.setAttribute("y2", "0");
|
|
38022
38123
|
}
|
|
38023
|
-
|
|
38024
|
-
|
|
38025
|
-
this._max = max;
|
|
38026
|
-
stops.forEach((s2) => {
|
|
38027
|
-
const stopEl = BrowserAPIs.createElementNS(SVG_NS, "stop");
|
|
38028
|
-
stopEl.setAttribute("offset", `${(s2.percent * 100).toFixed(2)}%`);
|
|
38029
|
-
stopEl.setAttribute("stop-color", s2.color);
|
|
38030
|
-
linearGrad.appendChild(stopEl);
|
|
38031
|
-
});
|
|
38124
|
+
this._grad = linearGrad;
|
|
38125
|
+
const { min, max, bands } = this._paintStops();
|
|
38032
38126
|
defs.appendChild(linearGrad);
|
|
38033
38127
|
svg.appendChild(defs);
|
|
38034
38128
|
const rect = BrowserAPIs.createElementNS(SVG_NS, "rect");
|
|
@@ -38237,6 +38331,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38237
38331
|
*/
|
|
38238
38332
|
repositionToPlot() {
|
|
38239
38333
|
var _a, _b;
|
|
38334
|
+
if (this._grad) this._paintStops();
|
|
38240
38335
|
if (!Environment.isBrowser()) return;
|
|
38241
38336
|
if (this._targetEl) return;
|
|
38242
38337
|
const w = this.w;
|
|
@@ -38371,14 +38466,25 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38371
38466
|
if (idx < 0 || idx === this._activeBandIndex) return;
|
|
38372
38467
|
this._activeBandIndex = idx;
|
|
38373
38468
|
(_d = (_c = (_b = this.ctx) == null ? void 0 : _b.events) == null ? void 0 : _c.fireEvent) == null ? void 0 : _d.call(_c, "legendHover", [this.ctx, idx, w]);
|
|
38374
|
-
|
|
38469
|
+
this._highlightRange(idx, "highlight");
|
|
38375
38470
|
}
|
|
38376
38471
|
/** Leaving a band clears the highlight. */
|
|
38377
38472
|
_onBandLeave() {
|
|
38378
38473
|
if (this._activeBandIndex < 0) return;
|
|
38379
38474
|
const idx = this._activeBandIndex;
|
|
38380
38475
|
this._activeBandIndex = -1;
|
|
38381
|
-
|
|
38476
|
+
this._highlightRange(idx, "reset");
|
|
38477
|
+
}
|
|
38478
|
+
/**
|
|
38479
|
+
* A shared trellis strip sets `panelsW` so a band reaches every panel.
|
|
38480
|
+
* @param {number} idx
|
|
38481
|
+
* @param {'highlight'|'reset'} action
|
|
38482
|
+
*/
|
|
38483
|
+
_highlightRange(idx, action) {
|
|
38484
|
+
var _a;
|
|
38485
|
+
(((_a = this.panelsW) == null ? void 0 : _a.call(this)) || [this.w]).forEach(
|
|
38486
|
+
(w) => new Series(w).highlightRangeInSeries(idx, action)
|
|
38487
|
+
);
|
|
38382
38488
|
}
|
|
38383
38489
|
_attachHoverListeners() {
|
|
38384
38490
|
var _a, _b;
|
|
@@ -38400,10 +38506,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38400
38506
|
*/
|
|
38401
38507
|
_onCellEnter(...args) {
|
|
38402
38508
|
var _a, _b, _c;
|
|
38403
|
-
const w = this.w;
|
|
38404
38509
|
if (!this.arrowEl) return;
|
|
38405
38510
|
const opts = args[args.length - 1];
|
|
38406
38511
|
if (!opts || typeof opts !== "object") return;
|
|
38512
|
+
const w = opts.w || this.w;
|
|
38407
38513
|
const i2 = opts.seriesIndex;
|
|
38408
38514
|
const j2 = opts.dataPointIndex;
|
|
38409
38515
|
if (typeof i2 !== "number" || typeof j2 !== "number") return;
|
|
@@ -38515,6 +38621,21 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38515
38621
|
polygon.setAttribute("pointer-events", "none");
|
|
38516
38622
|
return polygon;
|
|
38517
38623
|
}
|
|
38624
|
+
/** (Re)write the strip's stops; returns `_computeStops()`. */
|
|
38625
|
+
_paintStops() {
|
|
38626
|
+
const r2 = this._computeStops();
|
|
38627
|
+
const grad = this._grad;
|
|
38628
|
+
this._min = r2.min;
|
|
38629
|
+
this._max = r2.max;
|
|
38630
|
+
grad.innerHTML = "";
|
|
38631
|
+
r2.stops.forEach((s2) => {
|
|
38632
|
+
const stopEl = BrowserAPIs.createElementNS(SVG_NS, "stop");
|
|
38633
|
+
stopEl.setAttribute("offset", `${(s2.percent * 100).toFixed(2)}%`);
|
|
38634
|
+
stopEl.setAttribute("stop-color", s2.color);
|
|
38635
|
+
grad.appendChild(stopEl);
|
|
38636
|
+
});
|
|
38637
|
+
return r2;
|
|
38638
|
+
}
|
|
38518
38639
|
/**
|
|
38519
38640
|
* Build gradient stops + return effective min/max.
|
|
38520
38641
|
* - If `colorScale.ranges` is set, stops are placed at each range boundary
|
|
@@ -38556,7 +38677,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38556
38677
|
if (!Number.isFinite(dataMax)) dataMax = 0;
|
|
38557
38678
|
let min = dataMin;
|
|
38558
38679
|
let max = dataMax;
|
|
38559
|
-
|
|
38680
|
+
const csWindow = typeof cs.min !== "undefined" && typeof cs.max !== "undefined" && cs.max > cs.min;
|
|
38681
|
+
if (csWindow) {
|
|
38560
38682
|
min = cs.min;
|
|
38561
38683
|
max = cs.max;
|
|
38562
38684
|
} else {
|
|
@@ -38587,34 +38709,30 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38587
38709
|
} else {
|
|
38588
38710
|
const baseColor = w.globals.colors[0] || "#008FFB";
|
|
38589
38711
|
const utils = new Utils$1();
|
|
38590
|
-
const
|
|
38712
|
+
const type = w.config.chart.type;
|
|
38713
|
+
const plot = w.config.plotOptions[type] || {};
|
|
38591
38714
|
const shadeIntensity = (_b = plot.shadeIntensity) != null ? _b : 0.5;
|
|
38592
|
-
const
|
|
38715
|
+
const g = (
|
|
38593
38716
|
/** @type {any} */
|
|
38594
|
-
w.globals
|
|
38717
|
+
w.globals
|
|
38595
38718
|
);
|
|
38719
|
+
const hasNegs = g.hasNegs;
|
|
38720
|
+
const yExt = type === "heatmap" && !plot.distributed && !csWindow && g.maxY >= g.minY;
|
|
38721
|
+
const hi = yExt ? g.maxY : max;
|
|
38722
|
+
const total = Math.abs(hi) + Math.abs(yExt ? cs.min < g.minY ? cs.min : g.minY : min);
|
|
38723
|
+
const k2 = shadeIntensity * 1.25;
|
|
38596
38724
|
const n2 = Math.max(2, cfg.stops || 16);
|
|
38597
38725
|
for (let s2 = 0; s2 < n2; s2++) {
|
|
38598
38726
|
const t2 = s2 / (n2 - 1);
|
|
38599
|
-
const
|
|
38600
|
-
const
|
|
38601
|
-
|
|
38602
|
-
|
|
38603
|
-
|
|
38604
|
-
|
|
38605
|
-
|
|
38606
|
-
|
|
38607
|
-
|
|
38608
|
-
}
|
|
38609
|
-
} else {
|
|
38610
|
-
colorShadePercent = 1 - percent_v / 100;
|
|
38611
|
-
}
|
|
38612
|
-
if (colorShadePercent > 1) colorShadePercent = 1;
|
|
38613
|
-
if (colorShadePercent < -1) colorShadePercent = -1;
|
|
38614
|
-
const shaded = plot.enableShades ? utils.shadeColor(
|
|
38615
|
-
w.config.theme.mode === "dark" ? colorShadePercent * -1 : colorShadePercent,
|
|
38616
|
-
baseColor
|
|
38617
|
-
) : baseColor;
|
|
38727
|
+
const p = total === 0 ? 0 : Math.min(min + t2 * (max - min), hi) / total;
|
|
38728
|
+
const c = Math.max(
|
|
38729
|
+
-1,
|
|
38730
|
+
Math.min(
|
|
38731
|
+
1,
|
|
38732
|
+
hasNegs ? plot.reverseNegativeShade ? (p < 0 ? p : 1 - p) * k2 : p <= 0 ? 1 - (1 + p) * shadeIntensity : (1 - p) * shadeIntensity : (1 - p) * (type === "treemap" ? k2 : 1)
|
|
38733
|
+
)
|
|
38734
|
+
);
|
|
38735
|
+
const shaded = plot.enableShades ? utils.shadeColor(w.config.theme.mode === "dark" ? -c : c, baseColor) : baseColor;
|
|
38618
38736
|
stops.push({ percent: t2, color: shaded });
|
|
38619
38737
|
}
|
|
38620
38738
|
}
|
|
@@ -38644,9 +38762,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38644
38762
|
this.legendHelpers = new Helpers$3(this);
|
|
38645
38763
|
}
|
|
38646
38764
|
init() {
|
|
38765
|
+
var _a;
|
|
38647
38766
|
const w = this.w;
|
|
38648
38767
|
const gl = w.globals;
|
|
38649
38768
|
const cnf = w.config;
|
|
38769
|
+
(_a = this.heatmapGradientLegend) == null ? void 0 : _a.destroy();
|
|
38770
|
+
this.heatmapGradientLegend = null;
|
|
38650
38771
|
this.isBarsDistributed = cnf.chart.type === "bar" && cnf.plotOptions.bar.distributed && cnf.series.length === 1;
|
|
38651
38772
|
const showLegendAlways = cnf.legend.showForSingleSeries && this.w.seriesData.series.length === 1 || this.isBarsDistributed || // Heatmap legends are colorScale-driven (discrete ranges or the
|
|
38652
38773
|
// gradient strip), not series-driven, so they must render even for a
|
|
@@ -38664,10 +38785,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38664
38785
|
while (elLegendWrap.firstChild) {
|
|
38665
38786
|
elLegendWrap.removeChild(elLegendWrap.firstChild);
|
|
38666
38787
|
}
|
|
38667
|
-
if (this.heatmapGradientLegend) {
|
|
38668
|
-
this.heatmapGradientLegend.destroy();
|
|
38669
|
-
this.heatmapGradientLegend = null;
|
|
38670
|
-
}
|
|
38671
38788
|
if (HeatmapGradientLegend.isEnabled(w)) {
|
|
38672
38789
|
this.heatmapGradientLegend = new HeatmapGradientLegend(w, this.ctx);
|
|
38673
38790
|
this.heatmapGradientLegend.draw();
|
|
@@ -38845,7 +38962,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38845
38962
|
}
|
|
38846
38963
|
}
|
|
38847
38964
|
const lg = legendGroups[w.labelData.seriesGroupIndex[i2]];
|
|
38848
|
-
if (lg) elLegendWrap.appendChild(lg);
|
|
38965
|
+
if (lg && !lg.parentNode) elLegendWrap.appendChild(lg);
|
|
38849
38966
|
(lg || elLegendWrap).appendChild(elLegend);
|
|
38850
38967
|
elLegendWrap.classList.add(
|
|
38851
38968
|
`apexcharts-align-${w.config.legend.horizontalAlign}`
|
|
@@ -38956,7 +39073,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38956
39073
|
);
|
|
38957
39074
|
const hoverOverLegend = isLegendItem(target);
|
|
38958
39075
|
if (w.config.chart.type !== "heatmap" && !this.isBarsDistributed) {
|
|
38959
|
-
if (!target.
|
|
39076
|
+
if (hoverOverLegend && !target.closest(".apexcharts-inactive-legend")) {
|
|
38960
39077
|
const series = new Series(this.ctx.w);
|
|
38961
39078
|
series.toggleSeriesOnHover(e2, target);
|
|
38962
39079
|
}
|
|
@@ -38990,7 +39107,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
38990
39107
|
me.onLegendClick(e2);
|
|
38991
39108
|
if (rel !== null && w.config.legend.onItemClick.toggleDataSeries) {
|
|
38992
39109
|
requestAnimationFrame(() => {
|
|
38993
|
-
|
|
39110
|
+
var _a;
|
|
39111
|
+
const restored = (_a = w.dom.baseEl) == null ? void 0 : _a.querySelector(
|
|
38994
39112
|
`.apexcharts-legend-series[rel="${rel}"]`
|
|
38995
39113
|
);
|
|
38996
39114
|
if (restored) restored.focus();
|
|
@@ -40027,6 +40145,63 @@ var __async = (__this, __arguments, generator) => {
|
|
|
40027
40145
|
const { zoom } = this.w.config.chart;
|
|
40028
40146
|
return this._incidentalZoomEnabled(zoom && zoom.allowMouseWheelZoom);
|
|
40029
40147
|
}
|
|
40148
|
+
/** An explicit `true` zooms on every wheel; 'auto' needs Ctrl/Cmd. */
|
|
40149
|
+
_wheelZoomGreedy() {
|
|
40150
|
+
return this.w.config.chart.zoom.allowMouseWheelZoom === true;
|
|
40151
|
+
}
|
|
40152
|
+
/**
|
|
40153
|
+
* Tell a viewer whose bare wheel just scrolled past the chart how to zoom it.
|
|
40154
|
+
* Shown over the chart while the scroll goes on and faded out shortly after
|
|
40155
|
+
* it stops. Only for a mostly vertical wheel: a sideways trackpad swipe is
|
|
40156
|
+
* not someone reaching for zoom.
|
|
40157
|
+
*
|
|
40158
|
+
* The node lives in elWrap and the timer on w.interact, since a re-render can
|
|
40159
|
+
* replace both this instance and the wrapper's contents while it is up.
|
|
40160
|
+
*
|
|
40161
|
+
* @param {any} e
|
|
40162
|
+
*/
|
|
40163
|
+
_showWheelHint(e2) {
|
|
40164
|
+
const w = this.w;
|
|
40165
|
+
if (w.config.chart.zoom.wheelHint === false) return;
|
|
40166
|
+
if (Math.abs(e2.deltaY) <= Math.abs(e2.deltaX)) return;
|
|
40167
|
+
const wrap = w.dom.elWrap;
|
|
40168
|
+
if (!wrap) return;
|
|
40169
|
+
let el = wrap.querySelector(".apexcharts-wheel-hint");
|
|
40170
|
+
if (!el) {
|
|
40171
|
+
const win = BrowserAPIs.getWindow();
|
|
40172
|
+
const nav = win && win.navigator;
|
|
40173
|
+
const mac = !!nav && /Mac|iPhone|iPad/.test(nav.platform || nav.userAgent);
|
|
40174
|
+
const text = (w.globals.locale.toolbar.wheelZoomHint || "").replace(
|
|
40175
|
+
"{key}",
|
|
40176
|
+
mac ? "⌘" : "Ctrl"
|
|
40177
|
+
);
|
|
40178
|
+
el = BrowserAPIs.createElement("div");
|
|
40179
|
+
el.className = "apexcharts-wheel-hint";
|
|
40180
|
+
el.setAttribute("aria-hidden", "true");
|
|
40181
|
+
const label = BrowserAPIs.createElement("span");
|
|
40182
|
+
label.textContent = text;
|
|
40183
|
+
label.style.fontFamily = w.config.chart.fontFamily;
|
|
40184
|
+
el.appendChild(label);
|
|
40185
|
+
wrap.appendChild(el);
|
|
40186
|
+
void /** @type {HTMLElement} */
|
|
40187
|
+
el.offsetWidth;
|
|
40188
|
+
}
|
|
40189
|
+
el.classList.add("apexcharts-wheel-hint-visible");
|
|
40190
|
+
const it = w.interact;
|
|
40191
|
+
if (it.wheelHintTimer) clearTimeout(it.wheelHintTimer);
|
|
40192
|
+
it.wheelHintTimer = setTimeout(() => this._hideWheelHint(), 1200);
|
|
40193
|
+
}
|
|
40194
|
+
_hideWheelHint() {
|
|
40195
|
+
var _a;
|
|
40196
|
+
const w = this.w;
|
|
40197
|
+
const it = w.interact;
|
|
40198
|
+
if (it.wheelHintTimer) {
|
|
40199
|
+
clearTimeout(it.wheelHintTimer);
|
|
40200
|
+
it.wheelHintTimer = null;
|
|
40201
|
+
}
|
|
40202
|
+
const el = (_a = w.dom.elWrap) == null ? void 0 : _a.querySelector(".apexcharts-wheel-hint");
|
|
40203
|
+
if (el) el.classList.remove("apexcharts-wheel-hint-visible");
|
|
40204
|
+
}
|
|
40030
40205
|
/**
|
|
40031
40206
|
* Put keyboard focus on the chart, where the chart is focusable at all.
|
|
40032
40207
|
*
|
|
@@ -40098,8 +40273,13 @@ var __async = (__this, __arguments, generator) => {
|
|
|
40098
40273
|
* @param {any} e
|
|
40099
40274
|
*/
|
|
40100
40275
|
mouseWheelEvent(e2) {
|
|
40101
|
-
e2.preventDefault();
|
|
40102
40276
|
const st = this._wheel();
|
|
40277
|
+
if (!this._wheelZoomGreedy() && !e2.ctrlKey && !e2.metaKey && st.endTimer == null) {
|
|
40278
|
+
this._showWheelHint(e2);
|
|
40279
|
+
return;
|
|
40280
|
+
}
|
|
40281
|
+
e2.preventDefault();
|
|
40282
|
+
this._hideWheelHint();
|
|
40103
40283
|
let dy = e2.deltaY;
|
|
40104
40284
|
if (e2.deltaMode === 1) dy *= 33;
|
|
40105
40285
|
else if (e2.deltaMode === 2) dy *= 330;
|
|
@@ -40863,6 +41043,34 @@ var __async = (__this, __arguments, generator) => {
|
|
|
40863
41043
|
w.config.chart.events.scrolled(this.ctx, args);
|
|
40864
41044
|
this.ctx.events.fireEvent("scrolled", args);
|
|
40865
41045
|
}
|
|
41046
|
+
/**
|
|
41047
|
+
* Pan a zoomed x-window by `fraction` of its width (keyboard Shift+Arrow),
|
|
41048
|
+
* clamped to the data as a drag pan is, and reported as one (`scrolled`).
|
|
41049
|
+
* @param {number} fraction
|
|
41050
|
+
*/
|
|
41051
|
+
panBy(fraction) {
|
|
41052
|
+
const w = this.w;
|
|
41053
|
+
if (!w.interact.zoomed) return;
|
|
41054
|
+
const { min, max } = this._currentXWindow();
|
|
41055
|
+
let d = (max - min) * fraction;
|
|
41056
|
+
if (w.config.xaxis.convertedCatToNumeric) {
|
|
41057
|
+
d = d > 0 ? Math.ceil(d) : Math.floor(d);
|
|
41058
|
+
}
|
|
41059
|
+
if (w.axisFlags.isRangeBar) {
|
|
41060
|
+
const r2 = w.rangeData;
|
|
41061
|
+
let lo = Infinity;
|
|
41062
|
+
let hi = -Infinity;
|
|
41063
|
+
r2.seriesRangeStart.concat(r2.seriesRangeEnd).flat().forEach((y) => {
|
|
41064
|
+
if (y != null) {
|
|
41065
|
+
lo = Math.min(lo, y);
|
|
41066
|
+
hi = Math.max(hi, y);
|
|
41067
|
+
}
|
|
41068
|
+
});
|
|
41069
|
+
d = d > 0 ? Math.min(d, Math.max(0, hi - max)) : Math.max(d, Math.min(0, lo - min));
|
|
41070
|
+
if (!d) return;
|
|
41071
|
+
}
|
|
41072
|
+
if (this._applyXRange(min + d, max + d, false)) this._fireScrolled();
|
|
41073
|
+
}
|
|
40866
41074
|
/** @param {number} x @param {number} t */
|
|
40867
41075
|
_pushSample(x2, t2) {
|
|
40868
41076
|
const s2 = this._m().samples;
|
|
@@ -42327,16 +42535,35 @@ var __async = (__this, __arguments, generator) => {
|
|
|
42327
42535
|
});
|
|
42328
42536
|
svgEl.addEventListener("keydown", this._onKeyDown, { passive: false });
|
|
42329
42537
|
this.ctx.events.addEventListener("legendClick", this._onLegendClick);
|
|
42538
|
+
const kept = w.interact.keyNav;
|
|
42539
|
+
const doc = svgEl.ownerDocument;
|
|
42540
|
+
w.interact.keyNav = null;
|
|
42541
|
+
if (kept && (!doc.activeElement || doc.activeElement === doc.body)) {
|
|
42542
|
+
[this.seriesIndex, this.dataPointIndex, , this._tooltipDismissed] = kept;
|
|
42543
|
+
if (!kept[2]) this.notePointerFocus();
|
|
42544
|
+
svgEl.focus({ preventScroll: true });
|
|
42545
|
+
}
|
|
42330
42546
|
}
|
|
42331
42547
|
/**
|
|
42332
|
-
* Removes all event listeners. Called from chart.destroy()
|
|
42548
|
+
* Removes all event listeners. Called from chart.destroy(), and with
|
|
42549
|
+
* `updating` when an update is about to replace the SVG.
|
|
42550
|
+
* @param {boolean} [updating]
|
|
42333
42551
|
*/
|
|
42334
|
-
destroy() {
|
|
42552
|
+
destroy(updating) {
|
|
42553
|
+
var _a;
|
|
42335
42554
|
const w = this.w;
|
|
42336
42555
|
const svgEl = w.dom.Paper && w.dom.Paper.node;
|
|
42337
42556
|
this.ctx.events.removeEventListener("legendClick", this._onLegendClick);
|
|
42338
42557
|
clearTimeout(this._announceTimer);
|
|
42339
42558
|
if (!svgEl) return;
|
|
42559
|
+
if (updating && ((_a = svgEl.getRootNode) == null ? void 0 : _a.call(svgEl).activeElement) === svgEl) {
|
|
42560
|
+
w.interact.keyNav = [
|
|
42561
|
+
this.seriesIndex,
|
|
42562
|
+
this.dataPointIndex,
|
|
42563
|
+
this.active,
|
|
42564
|
+
this._tooltipDismissed
|
|
42565
|
+
];
|
|
42566
|
+
}
|
|
42340
42567
|
svgEl.removeEventListener("focus", this._onFocus);
|
|
42341
42568
|
svgEl.removeEventListener("blur", this._onBlur);
|
|
42342
42569
|
svgEl.removeEventListener("keydown", this._onKeyDown);
|
|
@@ -42388,7 +42615,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
42388
42615
|
this.active = true;
|
|
42389
42616
|
this._clampCursor();
|
|
42390
42617
|
this._snapToVisibleRange();
|
|
42391
|
-
this._showCurrentPoint();
|
|
42618
|
+
if (!this._tooltipDismissed) this._showCurrentPoint();
|
|
42392
42619
|
}
|
|
42393
42620
|
_onBlur() {
|
|
42394
42621
|
this.active = false;
|
|
@@ -42434,20 +42661,18 @@ var __async = (__this, __arguments, generator) => {
|
|
|
42434
42661
|
break;
|
|
42435
42662
|
case "Home":
|
|
42436
42663
|
e2.preventDefault();
|
|
42437
|
-
this.
|
|
42438
|
-
this._skipNullForward();
|
|
42664
|
+
this._seek(0, 1);
|
|
42439
42665
|
this._showCurrentPoint();
|
|
42440
42666
|
break;
|
|
42441
42667
|
case "End":
|
|
42442
42668
|
e2.preventDefault();
|
|
42443
|
-
this.
|
|
42444
|
-
this._skipNullBackward();
|
|
42669
|
+
this._seek(this._getDataPointCount(this.seriesIndex) - 1, -1);
|
|
42445
42670
|
this._showCurrentPoint();
|
|
42446
42671
|
break;
|
|
42447
42672
|
case "Enter":
|
|
42448
42673
|
case " ":
|
|
42449
42674
|
e2.preventDefault();
|
|
42450
|
-
this._fireClick();
|
|
42675
|
+
this._fireClick(e2);
|
|
42451
42676
|
break;
|
|
42452
42677
|
case "+":
|
|
42453
42678
|
case "=":
|
|
@@ -42495,22 +42720,15 @@ var __async = (__this, __arguments, generator) => {
|
|
|
42495
42720
|
);
|
|
42496
42721
|
}
|
|
42497
42722
|
_canPan() {
|
|
42498
|
-
return this._canZoom();
|
|
42723
|
+
return this._canZoom() && this.w.interact.zoomed;
|
|
42499
42724
|
}
|
|
42500
42725
|
/**
|
|
42501
|
-
* Shift the visible x-range by ~10% in the given direction.
|
|
42726
|
+
* Shift the visible x-range by ~10% in the given direction, as a drag pan.
|
|
42502
42727
|
* @param {number} direction +1 = right, -1 = left
|
|
42503
42728
|
*/
|
|
42504
42729
|
_panBy(direction) {
|
|
42505
|
-
|
|
42506
|
-
|
|
42507
|
-
const r2 = toolbar._currentXRange();
|
|
42508
|
-
const minX = Number(r2.minX);
|
|
42509
|
-
const maxX = Number(r2.maxX);
|
|
42510
|
-
if (!isFinite(minX) || !isFinite(maxX) || minX === maxX) return;
|
|
42511
|
-
const span = maxX - minX;
|
|
42512
|
-
const step = span * 0.1 * direction;
|
|
42513
|
-
toolbar.zoomUpdateOptions(minX + step, maxX + step);
|
|
42730
|
+
var _a;
|
|
42731
|
+
(_a = this.ctx.zoomPanSelection) == null ? void 0 : _a.panBy(direction / 10);
|
|
42514
42732
|
this._announce(direction > 0 ? "Panned right" : "Panned left");
|
|
42515
42733
|
}
|
|
42516
42734
|
// ─── Navigation ───────────────────────────────────────────────────────────
|
|
@@ -42525,8 +42743,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
42525
42743
|
if (dSeries !== 0) {
|
|
42526
42744
|
const ttCtx = this.w.globals.tooltip;
|
|
42527
42745
|
const type = w.config.chart.type;
|
|
42528
|
-
const perCell = type === "heatmap" || type === "treemap";
|
|
42529
|
-
if (!perCell && ttCtx
|
|
42746
|
+
const perCell = type === "heatmap" || type === "treemap" || type === "radialBar";
|
|
42747
|
+
if (!perCell && (ttCtx == null ? void 0 : ttCtx.ttItems) && ttCtx.tConfig.shared) {
|
|
42530
42748
|
const j2 = this.dataPointIndex;
|
|
42531
42749
|
const isActuallyShared = ttCtx.tooltipUtil && ttCtx.tooltipUtil.isXoverlap(j2) && ttCtx.tooltipUtil.isInitialSeriesSameLen();
|
|
42532
42750
|
if (isActuallyShared) return;
|
|
@@ -42552,59 +42770,43 @@ var __async = (__this, __arguments, generator) => {
|
|
|
42552
42770
|
}
|
|
42553
42771
|
}
|
|
42554
42772
|
if (dPoint !== 0) {
|
|
42555
|
-
|
|
42556
|
-
let di = this.dataPointIndex + dPoint;
|
|
42557
|
-
if (di < 0) di = wrapAround ? dpCount - 1 : 0;
|
|
42558
|
-
if (di >= dpCount) di = wrapAround ? 0 : dpCount - 1;
|
|
42559
|
-
this.dataPointIndex = di;
|
|
42560
|
-
if (dPoint > 0) {
|
|
42561
|
-
this._skipNullForward();
|
|
42562
|
-
} else {
|
|
42563
|
-
this._skipNullBackward();
|
|
42564
|
-
}
|
|
42773
|
+
this._seek(this.dataPointIndex + dPoint, dPoint);
|
|
42565
42774
|
if (!this._isDataPointVisible(this.seriesIndex, this.dataPointIndex)) {
|
|
42566
42775
|
this._snapToVisibleRangeInDirection(dPoint);
|
|
42567
42776
|
}
|
|
42568
42777
|
}
|
|
42569
42778
|
this._showCurrentPoint();
|
|
42570
42779
|
}
|
|
42571
|
-
/**
|
|
42572
|
-
|
|
42573
|
-
|
|
42574
|
-
|
|
42575
|
-
|
|
42576
|
-
|
|
42577
|
-
|
|
42578
|
-
if (!Array.isArray(w.seriesData.series[si])) return;
|
|
42579
|
-
while (attempts < dpCount && w.seriesData.series[si][di] === null) {
|
|
42580
|
-
di = (di + 1) % dpCount;
|
|
42581
|
-
attempts++;
|
|
42582
|
-
}
|
|
42583
|
-
this.dataPointIndex = di;
|
|
42584
|
-
}
|
|
42585
|
-
/** Retreat dataPointIndex backward past any nulls */
|
|
42586
|
-
_skipNullBackward() {
|
|
42780
|
+
/**
|
|
42781
|
+
* Land on the first non-null point from `di` going `dir`. Past an edge it
|
|
42782
|
+
* wraps only with wrapAround; when no point lies ahead the cursor stays.
|
|
42783
|
+
* @param {number} di
|
|
42784
|
+
* @param {number} dir
|
|
42785
|
+
*/
|
|
42786
|
+
_seek(di, dir) {
|
|
42587
42787
|
const w = this.w;
|
|
42588
|
-
const
|
|
42589
|
-
const
|
|
42590
|
-
let
|
|
42591
|
-
|
|
42592
|
-
|
|
42593
|
-
|
|
42594
|
-
|
|
42595
|
-
|
|
42788
|
+
const row = w.seriesData.series[this.seriesIndex];
|
|
42789
|
+
const n2 = this._getDataPointCount(this.seriesIndex);
|
|
42790
|
+
for (let k2 = 0; k2 < n2; k2++, di += dir) {
|
|
42791
|
+
if (w.config.chart.accessibility.keyboard.navigation.wrapAround) {
|
|
42792
|
+
di = (di + n2) % n2;
|
|
42793
|
+
} else if (di < 0 || di >= n2) return;
|
|
42794
|
+
if (!Array.isArray(row) || row[di] !== null) {
|
|
42795
|
+
this.dataPointIndex = di;
|
|
42796
|
+
return;
|
|
42797
|
+
}
|
|
42596
42798
|
}
|
|
42597
|
-
this.dataPointIndex = di;
|
|
42598
42799
|
}
|
|
42599
42800
|
// ─── Display ──────────────────────────────────────────────────────────────
|
|
42600
42801
|
_showCurrentPoint() {
|
|
42601
42802
|
const { seriesIndex: i2, dataPointIndex: j2 } = this;
|
|
42602
42803
|
const w = this.w;
|
|
42603
42804
|
const ttCtx = w.globals.tooltip;
|
|
42604
|
-
|
|
42805
|
+
this._tooltipDismissed = false;
|
|
42605
42806
|
w.interact.capturedSeriesIndex = i2;
|
|
42606
42807
|
w.interact.capturedDataPointIndex = j2;
|
|
42607
42808
|
this._applyFocusClass(i2, j2);
|
|
42809
|
+
if (!(ttCtx == null ? void 0 : ttCtx.ttItems)) return this._announce(this._buildPointLabel(i2, j2));
|
|
42608
42810
|
this._showTooltip(
|
|
42609
42811
|
i2,
|
|
42610
42812
|
j2,
|
|
@@ -42662,10 +42864,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
42662
42864
|
if (w.config.chart.accessibility.enabled && w.config.chart.accessibility.announcements.enabled) {
|
|
42663
42865
|
tooltipEl.removeAttribute("aria-hidden");
|
|
42664
42866
|
}
|
|
42665
|
-
if (type === "pie" || type === "donut" || type === "polarArea") {
|
|
42867
|
+
if (type === "pie" || type === "donut" || type === "polarArea" || type === "radialBar") {
|
|
42666
42868
|
this._showTooltipNonAxis(i2, j2, ttCtx, tooltipEl);
|
|
42667
|
-
} else if (type === "radialBar") {
|
|
42668
|
-
this._showTooltipRadialBar(i2, j2, ttCtx, tooltipEl);
|
|
42669
42869
|
} else if (type === "heatmap" || type === "treemap") {
|
|
42670
42870
|
this._showTooltipHeatTree(i2, j2, ttCtx, tooltipEl, type);
|
|
42671
42871
|
} else if (this._isBarLikeSeries(i2)) {
|
|
@@ -43020,24 +43220,23 @@ var __async = (__this, __arguments, generator) => {
|
|
|
43020
43220
|
return true;
|
|
43021
43221
|
}
|
|
43022
43222
|
/**
|
|
43023
|
-
* pie / donut / polarArea
|
|
43223
|
+
* pie / donut / polarArea (a slice per point, i is 0) and radialBar (a ring
|
|
43224
|
+
* per series, j is 0)
|
|
43024
43225
|
* @param {number} i
|
|
43025
43226
|
* @param {number} j
|
|
43026
43227
|
* @param {import('../tooltip/Tooltip').default} ttCtx
|
|
43027
43228
|
* @param {HTMLElement} tooltipEl
|
|
43028
43229
|
*/
|
|
43029
43230
|
_showTooltipNonAxis(i2, j2, ttCtx, tooltipEl) {
|
|
43030
|
-
const w = this.w;
|
|
43031
43231
|
ttCtx.tooltipLabels.drawSeriesTexts({
|
|
43032
43232
|
ttItems: ttCtx.ttItems,
|
|
43033
|
-
i: j2,
|
|
43233
|
+
i: i2 + j2,
|
|
43034
43234
|
shared: false
|
|
43035
43235
|
});
|
|
43036
43236
|
const tooltipBound = tooltipEl.getBoundingClientRect();
|
|
43037
43237
|
const ttWidth = tooltipBound.width || ttCtx.tooltipRect.ttWidth || 0;
|
|
43038
43238
|
const ttHeight = tooltipBound.height || ttCtx.tooltipRect.ttHeight || 0;
|
|
43039
|
-
const
|
|
43040
|
-
const anchor = ttCtx.getSliceAnchor(sliceEl);
|
|
43239
|
+
const anchor = ttCtx.getSliceAnchor(this._getFocusableElement(i2, j2));
|
|
43041
43240
|
if (anchor) {
|
|
43042
43241
|
const pos = ttCtx.tooltipPosition.placeOverAnchor(
|
|
43043
43242
|
anchor.x,
|
|
@@ -43050,56 +43249,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
43050
43249
|
tooltipEl.style.top = pos.y + "px";
|
|
43051
43250
|
}
|
|
43052
43251
|
}
|
|
43053
|
-
/**
|
|
43054
|
-
* radialBar — one ring per series, single value each
|
|
43055
|
-
* @param {number} i
|
|
43056
|
-
* @param {any} _j
|
|
43057
|
-
* @param {import('../tooltip/Tooltip').default} ttCtx
|
|
43058
|
-
* @param {HTMLElement} tooltipEl
|
|
43059
|
-
*/
|
|
43060
|
-
_showTooltipRadialBar(i2, _j, ttCtx, tooltipEl) {
|
|
43061
|
-
var _a;
|
|
43062
|
-
const w = this.w;
|
|
43063
|
-
ttCtx.tooltipLabels.drawSeriesTexts({
|
|
43064
|
-
ttItems: ttCtx.ttItems,
|
|
43065
|
-
i: i2,
|
|
43066
|
-
shared: false
|
|
43067
|
-
});
|
|
43068
|
-
const { ttWidth = 0, ttHeight = 0 } = ttCtx.getCachedDimensions();
|
|
43069
|
-
const arcEl = w.dom.baseEl.querySelector(
|
|
43070
|
-
`.apexcharts-radialbar-series[data\\:realIndex='${i2}'] path`
|
|
43071
|
-
);
|
|
43072
|
-
if (arcEl) {
|
|
43073
|
-
const angle = parseFloat((_a = arcEl.getAttribute("data:angle")) != null ? _a : "") || 0;
|
|
43074
|
-
const initialAngle = w.config.plotOptions.radialBar.startAngle || 0;
|
|
43075
|
-
const midAngle = initialAngle + angle / 2;
|
|
43076
|
-
const centerX = w.layout.gridWidth / 2;
|
|
43077
|
-
const centerY = w.layout.gridHeight / 2;
|
|
43078
|
-
const radialSize = w.globals.radialSize || Math.min(w.layout.gridWidth, w.layout.gridHeight) / 2;
|
|
43079
|
-
const seriesCount = w.seriesData.series.length;
|
|
43080
|
-
const trackSize = radialSize / Math.max(seriesCount, 1);
|
|
43081
|
-
const outerRadius = radialSize - i2 * trackSize;
|
|
43082
|
-
const innerRadius = outerRadius - trackSize;
|
|
43083
|
-
const ringRadius = (outerRadius + innerRadius) / 2;
|
|
43084
|
-
const centroid = Utils$1.polarToCartesian(
|
|
43085
|
-
centerX,
|
|
43086
|
-
centerY,
|
|
43087
|
-
ringRadius,
|
|
43088
|
-
midAngle
|
|
43089
|
-
);
|
|
43090
|
-
const x2 = centroid.x + (w.layout.translateX || 0);
|
|
43091
|
-
const y = centroid.y + (w.layout.translateY || 0);
|
|
43092
|
-
const pos = ttCtx.tooltipPosition.placeOverAnchor(
|
|
43093
|
-
x2,
|
|
43094
|
-
y,
|
|
43095
|
-
ttWidth,
|
|
43096
|
-
ttHeight,
|
|
43097
|
-
10
|
|
43098
|
-
);
|
|
43099
|
-
tooltipEl.style.left = pos.x + "px";
|
|
43100
|
-
tooltipEl.style.top = pos.y + "px";
|
|
43101
|
-
}
|
|
43102
|
-
}
|
|
43103
43252
|
/**
|
|
43104
43253
|
* heatmap / treemap — position tooltip using element bounding rect
|
|
43105
43254
|
* @param {number} i
|
|
@@ -43359,9 +43508,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
43359
43508
|
const mark = this._canvasMark(i2, j2);
|
|
43360
43509
|
if (!mark) return this._drawCanvasMarkerFocusRing(i2, j2);
|
|
43361
43510
|
const w = this.w;
|
|
43362
|
-
const host =
|
|
43363
|
-
w.dom.baseEl.querySelectorAll(".apexcharts-series")
|
|
43364
|
-
).find((g) => g.getAttribute("data:realIndex") === String(i2));
|
|
43511
|
+
const host = this._seriesGroup(i2);
|
|
43365
43512
|
if (!host) return null;
|
|
43366
43513
|
const ring = new Graphics(w, this.ctx).drawPath({
|
|
43367
43514
|
d: mark.d,
|
|
@@ -43385,9 +43532,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
43385
43532
|
const marker = this._canvasMarker(i2, j2);
|
|
43386
43533
|
if (!marker) return null;
|
|
43387
43534
|
const w = this.w;
|
|
43388
|
-
const host =
|
|
43389
|
-
w.dom.baseEl.querySelectorAll(".apexcharts-series")
|
|
43390
|
-
).find((g) => g.getAttribute("data:realIndex") === String(i2));
|
|
43535
|
+
const host = this._seriesGroup(i2);
|
|
43391
43536
|
if (!host) return null;
|
|
43392
43537
|
const ring = new Graphics(w, this.ctx).drawPath({
|
|
43393
43538
|
d: marker.d,
|
|
@@ -43481,6 +43626,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
43481
43626
|
* @param {number} j
|
|
43482
43627
|
*/
|
|
43483
43628
|
_getFocusableElement(i2, j2) {
|
|
43629
|
+
var _a, _b;
|
|
43484
43630
|
const w = this.w;
|
|
43485
43631
|
const type = w.config.chart.type;
|
|
43486
43632
|
const baseEl = w.dom.baseEl;
|
|
@@ -43498,32 +43644,47 @@ var __async = (__this, __arguments, generator) => {
|
|
|
43498
43644
|
);
|
|
43499
43645
|
}
|
|
43500
43646
|
if (type === "radialBar") {
|
|
43501
|
-
return baseEl.querySelector(
|
|
43502
|
-
`.apexcharts-radialbar-series[data\\:realIndex='${i2}'] path`
|
|
43503
|
-
);
|
|
43647
|
+
return baseEl.querySelector(`.apexcharts-radialbar-slice-${i2}`);
|
|
43504
43648
|
}
|
|
43505
43649
|
if (this._isBarLikeSeries(i2)) {
|
|
43506
43650
|
if (this._canvasMark(i2, j2)) return null;
|
|
43507
|
-
return
|
|
43508
|
-
`.apexcharts-series[data\\:realIndex='${i2}'] path[j='${j2}']`
|
|
43509
|
-
);
|
|
43651
|
+
return (_a = this._seriesGroup(i2)) == null ? void 0 : _a.querySelector(`path[j='${j2}']`);
|
|
43510
43652
|
}
|
|
43511
|
-
|
|
43512
|
-
|
|
43513
|
-
|
|
43514
|
-
|
|
43653
|
+
return (_b = this._seriesGroup(i2)) == null ? void 0 : _b.querySelector(`.apexcharts-marker[rel='${j2}']`);
|
|
43654
|
+
}
|
|
43655
|
+
/**
|
|
43656
|
+
* The series' own group, by realIndex (`rel` counts within a type's groups,
|
|
43657
|
+
* which a combo has several of). Matched in script: not every selector
|
|
43658
|
+
* engine takes the escaped `data\:realIndex` attribute.
|
|
43659
|
+
* @param {number} i
|
|
43660
|
+
* @returns {Element | undefined}
|
|
43661
|
+
*/
|
|
43662
|
+
_seriesGroup(i2) {
|
|
43663
|
+
return Array.from(
|
|
43664
|
+
this.w.dom.baseEl.querySelectorAll(".apexcharts-series")
|
|
43665
|
+
).find((g) => g.getAttribute("data:realIndex") === String(i2));
|
|
43515
43666
|
}
|
|
43516
43667
|
// ─── Click / Enter ────────────────────────────────────────────────────────
|
|
43517
|
-
|
|
43518
|
-
|
|
43519
|
-
|
|
43520
|
-
|
|
43521
|
-
|
|
43522
|
-
|
|
43523
|
-
|
|
43524
|
-
|
|
43525
|
-
|
|
43526
|
-
|
|
43668
|
+
/**
|
|
43669
|
+
* What a click on the focused mark does: its mousedown selects it
|
|
43670
|
+
* (dataPointSelection), its mouseup slides a pie slice out and fires
|
|
43671
|
+
* markerClick.
|
|
43672
|
+
* @param {KeyboardEvent} e
|
|
43673
|
+
*/
|
|
43674
|
+
_fireClick(e2) {
|
|
43675
|
+
var _a, _b;
|
|
43676
|
+
const el = (
|
|
43677
|
+
/** @type {any} */
|
|
43678
|
+
(_a = this._focusedEl) == null ? void 0 : _a.instance
|
|
43679
|
+
);
|
|
43680
|
+
const pie = this.ctx.pie;
|
|
43681
|
+
if (el) new Graphics(this.w, this.ctx).pathMouseDown(el, e2);
|
|
43682
|
+
if (pie && pie.getExpandOffset() > 0) pie.pieClicked(this.dataPointIndex);
|
|
43683
|
+
(_b = this.w.globals.tooltip) == null ? void 0 : _b.markerClick(
|
|
43684
|
+
e2,
|
|
43685
|
+
this.seriesIndex,
|
|
43686
|
+
this.dataPointIndex
|
|
43687
|
+
);
|
|
43527
43688
|
}
|
|
43528
43689
|
// ─── Helpers ──────────────────────────────────────────────────────────────
|
|
43529
43690
|
_isNavEnabled() {
|
|
@@ -43547,8 +43708,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
43547
43708
|
if (type === "pie" || type === "donut" || type === "polarArea") {
|
|
43548
43709
|
return w.seriesData.series.length;
|
|
43549
43710
|
}
|
|
43550
|
-
const
|
|
43551
|
-
return
|
|
43711
|
+
const s2 = w.seriesData.series[si];
|
|
43712
|
+
return Array.isArray(s2) ? s2.length : 1;
|
|
43552
43713
|
}
|
|
43553
43714
|
_clampCursor() {
|
|
43554
43715
|
const seriesCount = this._getSeriesCount();
|
|
@@ -47730,7 +47891,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
47730
47891
|
barXPosition,
|
|
47731
47892
|
barYPosition,
|
|
47732
47893
|
visibleSeries,
|
|
47733
|
-
hl
|
|
47894
|
+
hl,
|
|
47895
|
+
noLabel
|
|
47734
47896
|
} = opts;
|
|
47735
47897
|
const w = this.w;
|
|
47736
47898
|
const graphics = new Graphics(this.barCtx.w);
|
|
@@ -47844,7 +48006,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
47844
48006
|
dataLabelsPos.dataLabelsX = (box.levelStart + box.levelEnd) / 2 + offX;
|
|
47845
48007
|
}
|
|
47846
48008
|
}
|
|
47847
|
-
dataLabels = this.drawCalculatedDataLabels({
|
|
48009
|
+
dataLabels = noLabel ? null : this.drawCalculatedDataLabels({
|
|
47848
48010
|
x: dataLabelsPos.dataLabelsX,
|
|
47849
48011
|
y: dataLabelsPos.dataLabelsY,
|
|
47850
48012
|
neg: params.neg,
|
|
@@ -47930,8 +48092,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
47930
48092
|
return ctx && byGroups && byGroups[ctx.groupIndex] ? byGroups[ctx.groupIndex][j2] : this.barCtx.stackedSeriesTotals[j2];
|
|
47931
48093
|
}
|
|
47932
48094
|
/**
|
|
47933
|
-
* The running stack at this
|
|
47934
|
-
*
|
|
48095
|
+
* The running stack at this bar's x (BarStacked `tops`) on a numeric axis,
|
|
48096
|
+
* where bars stack by x rather than by index.
|
|
47935
48097
|
* @param {number} realIndex @param {number} j
|
|
47936
48098
|
*/
|
|
47937
48099
|
xStackTop(realIndex, j2) {
|
|
@@ -47940,6 +48102,21 @@ var __async = (__this, __arguments, generator) => {
|
|
|
47940
48102
|
return w.axisFlags.isXNumeric && /** @type {any} */
|
|
47941
48103
|
((_b = (_a = this.barCtx.stacks) == null ? void 0 : _a[w.labelData.seriesGroupIndex[realIndex]]) == null ? void 0 : _b.tops.get(w.seriesData.seriesX[realIndex][j2]));
|
|
47942
48104
|
}
|
|
48105
|
+
/**
|
|
48106
|
+
* The stacked total's text box, measured in the total's own font.
|
|
48107
|
+
* @param {number} realIndex @param {number} j
|
|
48108
|
+
*/
|
|
48109
|
+
totalRects(realIndex, j2) {
|
|
48110
|
+
const s2 = this.barCtx.barOptions.dataLabels.total.style;
|
|
48111
|
+
return new Graphics(this.w).getTextRects(
|
|
48112
|
+
this.getStackedTotalDataLabel({ realIndex, j: j2 }),
|
|
48113
|
+
s2.fontSize,
|
|
48114
|
+
s2.fontFamily,
|
|
48115
|
+
void 0,
|
|
48116
|
+
true,
|
|
48117
|
+
s2.fontWeight
|
|
48118
|
+
);
|
|
48119
|
+
}
|
|
47943
48120
|
/** @param {{realIndex: any, j: any}} opts */
|
|
47944
48121
|
getStackedTotalDataLabel({ realIndex, j: j2 }) {
|
|
47945
48122
|
const w = this.w;
|
|
@@ -47960,7 +48137,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
47960
48137
|
var _a;
|
|
47961
48138
|
const w = this.w;
|
|
47962
48139
|
let {
|
|
47963
|
-
i: i2,
|
|
47964
48140
|
j: j2,
|
|
47965
48141
|
realIndex,
|
|
47966
48142
|
y,
|
|
@@ -47970,7 +48146,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
47970
48146
|
textRects,
|
|
47971
48147
|
dataLabelsX,
|
|
47972
48148
|
dataLabelsY,
|
|
47973
|
-
dataLabelsConfig,
|
|
47974
48149
|
barDataLabelsConfig,
|
|
47975
48150
|
barTotalDataLabelsConfig,
|
|
47976
48151
|
strokeWidth,
|
|
@@ -47984,7 +48159,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
47984
48159
|
barHeight = Math.abs(barHeight);
|
|
47985
48160
|
const vertical = w.config.plotOptions.bar.dataLabels.orientation === "vertical";
|
|
47986
48161
|
const { zeroEncounters } = this.barCtx.barHelpers.getZeroValueEncounters({
|
|
47987
|
-
i:
|
|
48162
|
+
i: realIndex,
|
|
47988
48163
|
j: j2
|
|
47989
48164
|
});
|
|
47990
48165
|
bcx = bcx - strokeWidth / 2;
|
|
@@ -48005,7 +48180,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48005
48180
|
const offsetDLX = 2;
|
|
48006
48181
|
dataLabelsX = dataLabelsX + textRects.height / 2 - strokeWidth / 2 - offsetDLX;
|
|
48007
48182
|
}
|
|
48008
|
-
const valIsNegative = (_a = opts.neg) != null ? _a : w.seriesData.series[
|
|
48183
|
+
const valIsNegative = (_a = opts.neg) != null ? _a : w.seriesData.series[realIndex][j2] < 0;
|
|
48009
48184
|
let newY = y;
|
|
48010
48185
|
if (this.barCtx.isReversed) {
|
|
48011
48186
|
newY = y + (valIsNegative ? barHeight : -barHeight);
|
|
@@ -48079,16 +48254,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48079
48254
|
});
|
|
48080
48255
|
if (this.hlt) lowestPrevY = this.hlt.edge;
|
|
48081
48256
|
if (this.drawsStackedTotal(realIndex) && barTotalDataLabelsConfig.enabled) {
|
|
48082
|
-
const
|
|
48083
|
-
const graphics = new Graphics(this.barCtx.w);
|
|
48084
|
-
const totalLabeltextRects = graphics.getTextRects(
|
|
48085
|
-
this.getStackedTotalDataLabel({ realIndex, j: j2 }),
|
|
48086
|
-
dataLabelsConfig.fontSize
|
|
48087
|
-
);
|
|
48257
|
+
const h = this.totalRects(realIndex, j2).height;
|
|
48088
48258
|
if (valIsNegative) {
|
|
48089
|
-
totalDataLabelsY = lowestPrevY
|
|
48259
|
+
totalDataLabelsY = lowestPrevY + h * 0.77 - offY - barTotalDataLabelsConfig.offsetY;
|
|
48090
48260
|
} else {
|
|
48091
|
-
totalDataLabelsY = lowestPrevY
|
|
48261
|
+
totalDataLabelsY = lowestPrevY - h * 0.3 + offY + barTotalDataLabelsConfig.offsetY;
|
|
48092
48262
|
}
|
|
48093
48263
|
const xDivision = dataPointsDividedWidth;
|
|
48094
48264
|
totalDataLabelsX = totalDataLabelsBcx + (w.axisFlags.isXNumeric ? -barWidth / 2 : barWidth / 2 - xDivision) + barTotalDataLabelsConfig.offsetX;
|
|
@@ -48118,7 +48288,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48118
48288
|
const w = this.w;
|
|
48119
48289
|
let {
|
|
48120
48290
|
x: x2,
|
|
48121
|
-
i: i2,
|
|
48122
48291
|
j: j2,
|
|
48123
48292
|
realIndex,
|
|
48124
48293
|
bcy,
|
|
@@ -48135,7 +48304,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48135
48304
|
} = opts;
|
|
48136
48305
|
const dataPointsDividedHeight = w.layout.gridHeight / w.globals.dataPoints;
|
|
48137
48306
|
const { zeroEncounters } = this.barCtx.barHelpers.getZeroValueEncounters({
|
|
48138
|
-
i:
|
|
48307
|
+
i: realIndex,
|
|
48139
48308
|
j: j2
|
|
48140
48309
|
});
|
|
48141
48310
|
barWidth = Math.abs(barWidth);
|
|
@@ -48152,7 +48321,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48152
48321
|
let totalDataLabelsX;
|
|
48153
48322
|
let totalDataLabelsY;
|
|
48154
48323
|
let totalDataLabelsAnchor = "start";
|
|
48155
|
-
const valIsNegative = (_b = opts.neg) != null ? _b : w.seriesData.series[
|
|
48324
|
+
const valIsNegative = (_b = opts.neg) != null ? _b : w.seriesData.series[realIndex][j2] < 0;
|
|
48156
48325
|
let newX = x2;
|
|
48157
48326
|
if (this.barCtx.isReversed) {
|
|
48158
48327
|
newX = x2 + (valIsNegative ? -barWidth : barWidth);
|
|
@@ -48187,10 +48356,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48187
48356
|
}
|
|
48188
48357
|
let lowestPrevX = newX;
|
|
48189
48358
|
const totalGroupCtx = this.getTotalGroupContext(realIndex);
|
|
48190
|
-
const
|
|
48359
|
+
const top = this.xStackTop(realIndex, j2);
|
|
48360
|
+
const stacks = top ? [] : (
|
|
48191
48361
|
/** @type {any} */
|
|
48192
48362
|
this.barCtx.stacks || []
|
|
48193
48363
|
);
|
|
48364
|
+
if (top) {
|
|
48365
|
+
lowestPrevX = valIsNegative ? Math.min(newX, top[4]) : Math.max(newX, top[5]);
|
|
48366
|
+
}
|
|
48194
48367
|
stacks.forEach((g, gi) => {
|
|
48195
48368
|
if (totalGroupCtx && gi !== totalGroupCtx.groupIndex) return;
|
|
48196
48369
|
g.prevX.forEach((arr) => {
|
|
@@ -48203,11 +48376,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48203
48376
|
});
|
|
48204
48377
|
if (this.hlt) lowestPrevX = this.hlt.edge;
|
|
48205
48378
|
if (this.drawsStackedTotal(realIndex) && barTotalDataLabelsConfig.enabled) {
|
|
48206
|
-
const
|
|
48207
|
-
const totalLabeltextRects = graphics.getTextRects(
|
|
48208
|
-
this.getStackedTotalDataLabel({ realIndex, j: j2 }),
|
|
48209
|
-
dataLabelsConfig.fontSize
|
|
48210
|
-
);
|
|
48379
|
+
const totalLabeltextRects = this.totalRects(realIndex, j2);
|
|
48211
48380
|
if (valIsNegative) {
|
|
48212
48381
|
totalDataLabelsX = lowestPrevX - strokeWidth - offX - barTotalDataLabelsConfig.offsetX;
|
|
48213
48382
|
totalDataLabelsAnchor = "end";
|
|
@@ -48276,8 +48445,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48276
48445
|
let elDataLabelsWrap = null;
|
|
48277
48446
|
const isSeriesCollapsed = w.globals.collapsedSeriesIndices.indexOf(i2) > -1;
|
|
48278
48447
|
const isSeriesCollapsing = (w.globals.collapsingSeriesIndices || []).indexOf(i2) > -1;
|
|
48448
|
+
const dlKey = `${i2}::${this.barCtx._keys(i2)[j2]}`;
|
|
48279
48449
|
if (isSeriesCollapsing) {
|
|
48280
|
-
const prev = (_a = w.globals.prevDataLabels) == null ? void 0 : _a.get(
|
|
48450
|
+
const prev = (_a = w.globals.prevDataLabels) == null ? void 0 : _a.get(dlKey);
|
|
48281
48451
|
if (prev && isFinite(prev.val)) {
|
|
48282
48452
|
val = prev.val;
|
|
48283
48453
|
text = void 0;
|
|
@@ -48290,10 +48460,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48290
48460
|
});
|
|
48291
48461
|
const dlCfg = w.config.dataLabels;
|
|
48292
48462
|
if (((_b = dlCfg.animate) == null ? void 0 : _b.enabled) || ((_c = dlCfg.countUp) == null ? void 0 : _c.enabled)) {
|
|
48293
|
-
elDataLabelsWrap.node.setAttribute(
|
|
48294
|
-
"data:dlKey",
|
|
48295
|
-
`${i2}::${datumKey(w, i2, j2)}`
|
|
48296
|
-
);
|
|
48463
|
+
elDataLabelsWrap.node.setAttribute("data:dlKey", dlKey);
|
|
48297
48464
|
elDataLabelsWrap.node.setAttribute("data:dlJ", String(j2));
|
|
48298
48465
|
if (typeof val === "number" && isFinite(val)) {
|
|
48299
48466
|
elDataLabelsWrap.node.setAttribute("data:dlVal", String(val));
|
|
@@ -48311,29 +48478,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48311
48478
|
if (!val && w.config.plotOptions.bar.hideZeroBarsWhenGrouped) {
|
|
48312
48479
|
text = "";
|
|
48313
48480
|
}
|
|
48314
|
-
|
|
48315
|
-
const position = w.config.plotOptions.bar.dataLabels.position;
|
|
48481
|
+
let anchor = dataLabelsConfig.textAnchor;
|
|
48316
48482
|
if (w.config.plotOptions.bar.dataLabels.orientation === "vertical") {
|
|
48317
|
-
|
|
48318
|
-
if (valIsNegative) dataLabelsConfig.textAnchor = "end";
|
|
48319
|
-
else dataLabelsConfig.textAnchor = "start";
|
|
48320
|
-
}
|
|
48321
|
-
if (position === "center") {
|
|
48322
|
-
dataLabelsConfig.textAnchor = "middle";
|
|
48323
|
-
}
|
|
48324
|
-
if (position === "bottom") {
|
|
48325
|
-
if (valIsNegative) dataLabelsConfig.textAnchor = "end";
|
|
48326
|
-
else dataLabelsConfig.textAnchor = "start";
|
|
48327
|
-
}
|
|
48483
|
+
anchor = w.config.plotOptions.bar.dataLabels.position === "center" ? "middle" : (neg != null ? neg : w.seriesData.series[i2][j2] < 0) ? "end" : "start";
|
|
48328
48484
|
}
|
|
48329
|
-
if (this.barCtx.isRangeBar && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) {
|
|
48330
|
-
|
|
48331
|
-
text,
|
|
48332
|
-
parseFloat(dataLabelsConfig.style.fontSize).toString()
|
|
48333
|
-
);
|
|
48334
|
-
if (barWidth < txRect.width) {
|
|
48335
|
-
text = "";
|
|
48336
|
-
}
|
|
48485
|
+
if (this.barCtx.isRangeBar && this.barCtx.barOptions.dataLabels.hideOverflowingLabels && barWidth < textRects.width) {
|
|
48486
|
+
text = "";
|
|
48337
48487
|
}
|
|
48338
48488
|
if (w.config.chart.stacked && this.barCtx.barOptions.dataLabels.hideOverflowingLabels && // A collapsing series is measured against its NEW extent, which is
|
|
48339
48489
|
// already zero, so this would blank a label whose bar is still at full
|
|
@@ -48349,14 +48499,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48349
48499
|
}
|
|
48350
48500
|
}
|
|
48351
48501
|
}
|
|
48352
|
-
const modifiedDataLabelsConfig = __spreadValues({}, dataLabelsConfig)
|
|
48353
|
-
|
|
48354
|
-
|
|
48355
|
-
|
|
48356
|
-
|
|
48357
|
-
|
|
48358
|
-
|
|
48359
|
-
|
|
48502
|
+
const modifiedDataLabelsConfig = __spreadProps(__spreadValues({}, dataLabelsConfig), {
|
|
48503
|
+
textAnchor: anchor
|
|
48504
|
+
});
|
|
48505
|
+
if (this.barCtx.isHorizontal && val < 0) {
|
|
48506
|
+
if (anchor === "start") {
|
|
48507
|
+
modifiedDataLabelsConfig.textAnchor = "end";
|
|
48508
|
+
} else if (anchor === "end") {
|
|
48509
|
+
modifiedDataLabelsConfig.textAnchor = "start";
|
|
48360
48510
|
}
|
|
48361
48511
|
}
|
|
48362
48512
|
dataLabels.plotDataLabelsText({
|
|
@@ -48408,7 +48558,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48408
48558
|
const { groupIndex } = this.barCtx.barHelpers.getGroupIndex(realIndex);
|
|
48409
48559
|
totalDataLabelText.node.setAttribute(
|
|
48410
48560
|
"data:dlTotalKey",
|
|
48411
|
-
`${groupIndex}::${
|
|
48561
|
+
`${groupIndex}::${this.barCtx._keys(realIndex)[j2]}`
|
|
48412
48562
|
);
|
|
48413
48563
|
totalDataLabelText.node.setAttribute(
|
|
48414
48564
|
"data:dlTotalSeries",
|
|
@@ -48438,9 +48588,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48438
48588
|
}
|
|
48439
48589
|
/**
|
|
48440
48590
|
* @param {any[]} series
|
|
48591
|
+
* @param {any} [seriesIndex] a combo's real indices of `series`
|
|
48441
48592
|
*/
|
|
48442
|
-
initVariables(series) {
|
|
48593
|
+
initVariables(series, seriesIndex) {
|
|
48443
48594
|
const w = this.w;
|
|
48595
|
+
this.seriesIndex = seriesIndex;
|
|
48444
48596
|
this.barCtx.series = series;
|
|
48445
48597
|
this.barCtx.totalItems = 0;
|
|
48446
48598
|
this.barCtx.seriesLen = 0;
|
|
@@ -48461,6 +48613,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48461
48613
|
this.barCtx.visibleItems = w.globals.dataPoints;
|
|
48462
48614
|
}
|
|
48463
48615
|
}
|
|
48616
|
+
const labels = w.labelData.labels;
|
|
48617
|
+
this.rows = w.globals.isBarHorizontal && w.axisFlags.isXNumeric && !this.barCtx.isRangeBar && w.seriesData.seriesX.some((s2) => s2 == null ? void 0 : s2.some((x2, j2) => x2 !== labels[j2])) ? new Map(labels.map((x2, r2) => [x2, r2])) : null;
|
|
48464
48618
|
this.arrBorderRadius = this.createBorderRadiusArr(w.seriesData.series);
|
|
48465
48619
|
if (Utils$1.isSafari()) {
|
|
48466
48620
|
this.arrBorderRadius = this.arrBorderRadius.map(
|
|
@@ -48525,15 +48679,19 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48525
48679
|
* Collapsed series count too, exactly as they did for `minXDiff`. Skipping
|
|
48526
48680
|
* them would widen every bar the moment someone hid the tightest-spaced
|
|
48527
48681
|
* series from the legend, so bar geometry would depend on legend state.
|
|
48682
|
+
* In a combo only this renderer's own series count: a line's x values say
|
|
48683
|
+
* nothing about how wide a column may be.
|
|
48528
48684
|
*
|
|
48529
48685
|
* @returns {number}
|
|
48530
48686
|
*/
|
|
48531
48687
|
_unionMinXGap() {
|
|
48532
48688
|
const w = this.w;
|
|
48533
48689
|
const seriesX = w.seriesData.seriesX || [];
|
|
48690
|
+
const own = this.seriesIndex;
|
|
48534
48691
|
const arrays = [];
|
|
48535
48692
|
for (let i2 = 0; i2 < seriesX.length; i2++) {
|
|
48536
48693
|
const xs = seriesX[i2];
|
|
48694
|
+
if (own && own.indexOf(i2) < 0) continue;
|
|
48537
48695
|
if (Array.isArray(xs) && xs.length > 0) {
|
|
48538
48696
|
arrays.push(
|
|
48539
48697
|
xs.some((v, n2) => v < xs[n2 - 1]) ? xs.filter((v) => v === +v).sort((a2, b) => a2 - b) : xs
|
|
@@ -48574,6 +48732,15 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48574
48732
|
}
|
|
48575
48733
|
return isFinite(min) ? min : 0;
|
|
48576
48734
|
}
|
|
48735
|
+
/**
|
|
48736
|
+
* The band a horizontal bar is drawn in: its x's band when the series do
|
|
48737
|
+
* not line up by index (see initVariables), else its index.
|
|
48738
|
+
* @param {number} realIndex @param {number} j
|
|
48739
|
+
*/
|
|
48740
|
+
barRow(realIndex, j2) {
|
|
48741
|
+
var _a, _b, _c;
|
|
48742
|
+
return (_c = (_b = this.rows) == null ? void 0 : _b.get((_a = this.w.seriesData.seriesX[realIndex]) == null ? void 0 : _a[j2])) != null ? _c : j2;
|
|
48743
|
+
}
|
|
48577
48744
|
/**
|
|
48578
48745
|
* @param {number} realIndex
|
|
48579
48746
|
*/
|
|
@@ -48696,7 +48863,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48696
48863
|
});
|
|
48697
48864
|
}
|
|
48698
48865
|
const connectorFill = this.getDumbbellConnectorFill(i2, j2);
|
|
48699
|
-
const datumFill = connectorFill || ((_a = w.config.series[
|
|
48866
|
+
const datumFill = connectorFill || ((_a = w.config.series[realIndex].data[j2]) == null ? void 0 : _a.fill);
|
|
48700
48867
|
const connector = this.barCtx.barOptions.isDumbbell ? w.config.plotOptions.bar.dumbbell.connector : null;
|
|
48701
48868
|
let connectorOpacity;
|
|
48702
48869
|
if (connector && connector.color) {
|
|
@@ -48849,11 +49016,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
48849
49016
|
* @returns {string[][]}
|
|
48850
49017
|
*/
|
|
48851
49018
|
createBorderRadiusArr(series) {
|
|
48852
|
-
var _a;
|
|
48853
49019
|
const w = this.w;
|
|
48854
49020
|
const alwaysApplyRadius = !this.w.config.chart.stacked || w.config.plotOptions.bar.borderRadius <= 0;
|
|
48855
49021
|
const numSeries = series.length;
|
|
48856
|
-
const numColumns = (
|
|
49022
|
+
const numColumns = Math.max(0, ...series.map((s2) => (s2 == null ? void 0 : s2.length) | 0));
|
|
48857
49023
|
const output = Array.from(
|
|
48858
49024
|
{ length: numSeries },
|
|
48859
49025
|
() => Array(numColumns).fill(alwaysApplyRadius ? "top" : "none")
|
|
@@ -49009,7 +49175,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49009
49175
|
j: j2,
|
|
49010
49176
|
w
|
|
49011
49177
|
}) {
|
|
49012
|
-
var _a, _b;
|
|
49178
|
+
var _a, _b, _c;
|
|
49013
49179
|
const r2 = this.barRect({
|
|
49014
49180
|
a: barXPosition,
|
|
49015
49181
|
len: barWidth,
|
|
@@ -49040,7 +49206,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49040
49206
|
const _ctx = this.barCtx.groupCtx;
|
|
49041
49207
|
_ctx.yArrj.push(y2 - strokeCenter * direction);
|
|
49042
49208
|
_ctx.yArrjF.push(Math.abs(y1 - y2 + r2.strokeWidth * direction));
|
|
49043
|
-
_ctx.yArrjVal.push(this.barCtx.series[i2][j2]);
|
|
49209
|
+
_ctx.yArrjVal.push((_c = this.barCtx.series[i2][j2]) != null ? _c : null);
|
|
49044
49210
|
}
|
|
49045
49211
|
return {
|
|
49046
49212
|
pathTo,
|
|
@@ -49230,7 +49396,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49230
49396
|
j: j2,
|
|
49231
49397
|
w
|
|
49232
49398
|
}) {
|
|
49233
|
-
var _a, _b;
|
|
49399
|
+
var _a, _b, _c;
|
|
49234
49400
|
const graphics = new Graphics(this.barCtx.w);
|
|
49235
49401
|
const r2 = this.barRect({
|
|
49236
49402
|
a: barYPosition,
|
|
@@ -49266,7 +49432,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49266
49432
|
const _ctx = this.barCtx.groupCtx;
|
|
49267
49433
|
_ctx.xArrj.push(x2 + strokeCenter * direction);
|
|
49268
49434
|
_ctx.xArrjF.push(Math.abs(x1 - x2 - r2.strokeWidth * direction));
|
|
49269
|
-
_ctx.xArrjVal.push(this.barCtx.series[i2][j2]);
|
|
49435
|
+
_ctx.xArrjVal.push((_c = this.barCtx.series[i2][j2]) != null ? _c : null);
|
|
49270
49436
|
}
|
|
49271
49437
|
return {
|
|
49272
49438
|
pathTo,
|
|
@@ -49311,6 +49477,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49311
49477
|
const w = this.w;
|
|
49312
49478
|
const goals = [];
|
|
49313
49479
|
const pushGoal = (value, attrs) => {
|
|
49480
|
+
if (!w.globals.invalidLogScale) {
|
|
49481
|
+
value = new CoreUtils(w).getLogValAtSeriesIndex(value, i2);
|
|
49482
|
+
}
|
|
49314
49483
|
goals.push({
|
|
49315
49484
|
[type]: type === "x" ? this.getXForValue(value, zeroW, false) : this.getYForValue(value, zeroH, translationsIndex, false),
|
|
49316
49485
|
attrs
|
|
@@ -49565,11 +49734,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49565
49734
|
let zeroEncounters = 0;
|
|
49566
49735
|
const seriesIndices = w.config.plotOptions.bar.horizontal ? w.seriesData.series.map((_, _i) => _i) : ((_a = w.globals.columnSeries) == null ? void 0 : _a.i.map((_i) => _i)) || [];
|
|
49567
49736
|
seriesIndices.forEach((_si) => {
|
|
49568
|
-
const val = w.
|
|
49737
|
+
const val = w.seriesData.series[_si][j2];
|
|
49569
49738
|
if (val) {
|
|
49570
49739
|
nonZeroColumns++;
|
|
49571
49740
|
}
|
|
49572
|
-
if (_si < i2 && val
|
|
49741
|
+
if (_si < i2 && !val) {
|
|
49573
49742
|
zeroEncounters++;
|
|
49574
49743
|
}
|
|
49575
49744
|
});
|
|
@@ -49672,15 +49841,17 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49672
49841
|
/**
|
|
49673
49842
|
* Point the per-series axis state at this series' y axis. Every bar-family
|
|
49674
49843
|
* renderer calls it before initialPositions, which reads the baseline by
|
|
49675
|
-
* this.translationsIndex.
|
|
49844
|
+
* this.translationsIndex and flips it for a reversed axis.
|
|
49676
49845
|
* @param {number} realIndex
|
|
49677
49846
|
* @return {number} translationsIndex
|
|
49678
49847
|
*/
|
|
49679
49848
|
setSeriesAxis(realIndex) {
|
|
49849
|
+
var _a;
|
|
49680
49850
|
if (this.yRatio.length > 1) {
|
|
49681
49851
|
this.yaxisIndex = this.w.globals.seriesYAxisReverseMap[realIndex];
|
|
49682
49852
|
this.translationsIndex = realIndex;
|
|
49683
49853
|
}
|
|
49854
|
+
this.isReversed = (_a = this.w.config.yaxis[this.yaxisIndex]) == null ? void 0 : _a.reversed;
|
|
49684
49855
|
return this.translationsIndex;
|
|
49685
49856
|
}
|
|
49686
49857
|
/** primary draw method which is called on bar object
|
|
@@ -49697,7 +49868,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49697
49868
|
series = coreUtils.getLogSeries(series);
|
|
49698
49869
|
this.series = series;
|
|
49699
49870
|
this.yRatio = coreUtils.getLogYRatios(this.yRatio);
|
|
49700
|
-
this.barHelpers.initVariables(series);
|
|
49871
|
+
this.barHelpers.initVariables(series, seriesIndex);
|
|
49701
49872
|
const ret = graphics.group({
|
|
49702
49873
|
class: "apexcharts-bar-series apexcharts-plot-series"
|
|
49703
49874
|
});
|
|
@@ -49729,7 +49900,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49729
49900
|
this.visibleI = this.visibleI + 1;
|
|
49730
49901
|
}
|
|
49731
49902
|
const translationsIndex = this.setSeriesAxis(realIndex);
|
|
49732
|
-
this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
|
|
49733
49903
|
if (this.isPyramid) {
|
|
49734
49904
|
this.pyramidLayout = this.barHelpers.computePyramidLayout(series[i2]);
|
|
49735
49905
|
}
|
|
@@ -49807,7 +49977,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49807
49977
|
elSeries
|
|
49808
49978
|
};
|
|
49809
49979
|
if (this.isHorizontal) {
|
|
49810
|
-
paths = this.drawBarPaths(__spreadProps(__spreadValues({}, pathsParams), {
|
|
49980
|
+
paths = this.drawBarPaths(__spreadProps(__spreadValues(__spreadValues({}, pathsParams), this.barHelpers.rows && {
|
|
49981
|
+
y: initY + this.barHelpers.barRow(realIndex, j2) * yDivision
|
|
49982
|
+
}), {
|
|
49811
49983
|
barHeight,
|
|
49812
49984
|
zeroW,
|
|
49813
49985
|
yDivision
|
|
@@ -49889,6 +50061,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49889
50061
|
series,
|
|
49890
50062
|
barHeight: Math.abs(paths.barHeight ? paths.barHeight : barHeight),
|
|
49891
50063
|
barWidth: Math.abs(paths.barWidth ? paths.barWidth : barWidth),
|
|
50064
|
+
barXPosition: paths.barXPosition,
|
|
49892
50065
|
elDataLabelsWrap,
|
|
49893
50066
|
elGoalsMarkers,
|
|
49894
50067
|
elBarShadows,
|
|
@@ -49899,15 +50072,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49899
50072
|
w.globals.seriesXvalues[realIndex] = xArrj;
|
|
49900
50073
|
w.globals.seriesYvalues[realIndex] = yArrj;
|
|
49901
50074
|
if (w.globals.previousPaths.length > 0) {
|
|
49902
|
-
const newKeys = [];
|
|
49903
|
-
for (let j2 = 0; j2 < series[i2].length; j2++) {
|
|
49904
|
-
newKeys.push(datumKey(w, realIndex, j2));
|
|
49905
|
-
}
|
|
49906
50075
|
renderBarExitGhosts({
|
|
49907
50076
|
w,
|
|
49908
50077
|
elSeries,
|
|
49909
50078
|
record: this._prevRecord(realIndex),
|
|
49910
|
-
newKeys,
|
|
50079
|
+
newKeys: this._keys(realIndex),
|
|
49911
50080
|
isHorizontal: this.isHorizontal,
|
|
49912
50081
|
speed: w.config.chart.animations.dynamicAnimation.speed
|
|
49913
50082
|
});
|
|
@@ -49916,7 +50085,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49916
50085
|
}
|
|
49917
50086
|
return ret;
|
|
49918
50087
|
}
|
|
49919
|
-
/** @param {{ hl?: any, realIndex?: any, pathFill?: any, lineFill?: any, j?: any, i?: any, columnGroupIndex?: any, pathFrom?: any, pathTo?: any, strokeWidth?: any, elSeries?: any, x?: any, y?: any, y1?: any, y2?: any, series?: any, barHeight?: any, barWidth?: any, barXPosition?: any, barYPosition?: any, elDataLabelsWrap?: any, elGoalsMarkers?: any, elBarShadows?: any, visibleSeries?: any, type?: any, classes?: any, fadeReveal?: boolean }} opts */
|
|
50088
|
+
/** @param {{ hl?: any, realIndex?: any, pathFill?: any, lineFill?: any, j?: any, i?: any, columnGroupIndex?: any, pathFrom?: any, pathTo?: any, strokeWidth?: any, elSeries?: any, x?: any, y?: any, y1?: any, y2?: any, series?: any, barHeight?: any, barWidth?: any, barXPosition?: any, barYPosition?: any, elDataLabelsWrap?: any, elGoalsMarkers?: any, elBarShadows?: any, visibleSeries?: any, type?: any, classes?: any, fadeReveal?: boolean, noLabel?: boolean }} opts */
|
|
49920
50089
|
renderSeries({
|
|
49921
50090
|
hl,
|
|
49922
50091
|
realIndex,
|
|
@@ -49948,7 +50117,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
49948
50117
|
visibleSeries,
|
|
49949
50118
|
type,
|
|
49950
50119
|
classes,
|
|
49951
|
-
fadeReveal = false
|
|
50120
|
+
fadeReveal = false,
|
|
50121
|
+
noLabel
|
|
50122
|
+
// a datum's extra paths (box halves, box lane) label nothing
|
|
49952
50123
|
}) {
|
|
49953
50124
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
49954
50125
|
const w = this.w;
|
|
@@ -50022,7 +50193,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50022
50193
|
barXPosition,
|
|
50023
50194
|
barYPosition,
|
|
50024
50195
|
visibleSeries,
|
|
50025
|
-
hl: hl == null ? void 0 : hl.label
|
|
50196
|
+
hl: hl == null ? void 0 : hl.label,
|
|
50197
|
+
noLabel
|
|
50026
50198
|
})
|
|
50027
50199
|
);
|
|
50028
50200
|
if (delayMs > 0) {
|
|
@@ -50038,19 +50210,18 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50038
50210
|
}
|
|
50039
50211
|
let leaving = false;
|
|
50040
50212
|
if (!w.globals.isBarHorizontal) {
|
|
50041
|
-
|
|
50213
|
+
const cx = barXPosition === void 0 ? dataLabelsObj.dataLabelsPos.dataLabelsX : barXPosition + barWidth / 2;
|
|
50214
|
+
const pad = Math.max(barWidth, w.globals.barPadForNumericAxis);
|
|
50215
|
+
if (cx + pad < 0 || cx - pad > w.layout.gridWidth) {
|
|
50042
50216
|
if (this._wasOnScreen(realIndex, j2)) leaving = true;
|
|
50043
50217
|
else skipDrawing = true;
|
|
50044
50218
|
}
|
|
50045
50219
|
}
|
|
50046
|
-
|
|
50047
|
-
/** @type {
|
|
50048
|
-
w.config.series[
|
|
50049
|
-
|
|
50050
|
-
)
|
|
50051
|
-
lineFill = /** @type {Record<string,any>} */
|
|
50052
|
-
w.config.series[i2].data[j2].strokeColor;
|
|
50053
|
-
}
|
|
50220
|
+
const datum = (
|
|
50221
|
+
/** @type {any} */
|
|
50222
|
+
w.config.series[realIndex].data[j2]
|
|
50223
|
+
);
|
|
50224
|
+
if (datum && datum.strokeColor) lineFill = datum.strokeColor;
|
|
50054
50225
|
const fill = pathFill;
|
|
50055
50226
|
if (this.isNullValue && w.globals.collapsingSeriesIndices.indexOf(realIndex) === -1) {
|
|
50056
50227
|
pathFill = "none";
|
|
@@ -50073,7 +50244,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50073
50244
|
pathTo,
|
|
50074
50245
|
stroke: lineFill,
|
|
50075
50246
|
strokeWidth,
|
|
50076
|
-
|
|
50247
|
+
strokeLinecap: w.config.stroke.lineCap,
|
|
50077
50248
|
fill: pathFill,
|
|
50078
50249
|
pathToInterp,
|
|
50079
50250
|
animationDelay: delay,
|
|
@@ -50125,12 +50296,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50125
50296
|
cy: dataLabelsObj.dataLabelsPos.bcy,
|
|
50126
50297
|
cx: dataLabelsObj.dataLabelsPos.bcx,
|
|
50127
50298
|
j: j2,
|
|
50128
|
-
val: w.seriesData.series[
|
|
50299
|
+
val: w.seriesData.series[realIndex][j2],
|
|
50129
50300
|
barHeight,
|
|
50130
50301
|
barWidth,
|
|
50131
50302
|
// Datum identity for the next update's keyed join (see
|
|
50132
50303
|
// LengthTransition): survivors match by key, not array position.
|
|
50133
|
-
"data:pathKey":
|
|
50304
|
+
"data:pathKey": this._keys(realIndex)[j2]
|
|
50134
50305
|
});
|
|
50135
50306
|
hl == null ? void 0 : hl.paint(renderedPath, {
|
|
50136
50307
|
delay,
|
|
@@ -50206,7 +50377,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50206
50377
|
const j2 = indexes.j;
|
|
50207
50378
|
let barYPosition;
|
|
50208
50379
|
if (w.config.plotOptions.bar.hideZeroBarsWhenGrouped) {
|
|
50209
|
-
const { nonZeroColumns, zeroEncounters } = this.barHelpers.getZeroValueEncounters({
|
|
50380
|
+
const { nonZeroColumns, zeroEncounters } = this.barHelpers.getZeroValueEncounters({
|
|
50381
|
+
i: indexes.realIndex,
|
|
50382
|
+
j: j2
|
|
50383
|
+
});
|
|
50210
50384
|
if (nonZeroColumns > 0) {
|
|
50211
50385
|
barHeight = this.seriesLen * barHeight / nonZeroColumns;
|
|
50212
50386
|
}
|
|
@@ -50345,7 +50519,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50345
50519
|
barXPosition = xForNumericX.barXPosition;
|
|
50346
50520
|
} else {
|
|
50347
50521
|
if (w.config.plotOptions.bar.hideZeroBarsWhenGrouped) {
|
|
50348
|
-
const { nonZeroColumns, zeroEncounters } = this.barHelpers.getZeroValueEncounters({ i:
|
|
50522
|
+
const { nonZeroColumns, zeroEncounters } = this.barHelpers.getZeroValueEncounters({ i: realIndex, j: j2 });
|
|
50349
50523
|
if (nonZeroColumns > 0) {
|
|
50350
50524
|
barWidth = this.seriesLen * barWidth / nonZeroColumns;
|
|
50351
50525
|
}
|
|
@@ -50409,15 +50583,16 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50409
50583
|
/** @param {{x: any, barWidth: any, realIndex: any, j: any}} opts */
|
|
50410
50584
|
getBarXForNumericXAxis({ x: x2, barWidth, realIndex, j: j2 }) {
|
|
50411
50585
|
const w = this.w;
|
|
50586
|
+
const overlay = isHistogramOverlay(w);
|
|
50412
50587
|
let sxI = realIndex;
|
|
50413
50588
|
if (!w.seriesData.seriesX[realIndex].length) {
|
|
50414
50589
|
sxI = w.globals.maxValsInArrayIndex;
|
|
50415
50590
|
}
|
|
50416
50591
|
if (Utils$1.isNumber(w.seriesData.seriesX[sxI][j2])) {
|
|
50417
|
-
x2 = AxisMapping.dataXToPx(w, w.seriesData.seriesX[sxI][j2]) - barWidth * this.seriesLen / 2;
|
|
50592
|
+
x2 = AxisMapping.dataXToPx(w, w.seriesData.seriesX[sxI][j2]) - barWidth * (overlay ? 1 : this.seriesLen) / 2;
|
|
50418
50593
|
}
|
|
50419
50594
|
return {
|
|
50420
|
-
barXPosition: x2 + (
|
|
50595
|
+
barXPosition: x2 + (overlay ? 0 : barWidth * this.visibleI),
|
|
50421
50596
|
x: x2
|
|
50422
50597
|
};
|
|
50423
50598
|
}
|
|
@@ -50438,7 +50613,20 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50438
50613
|
_wasOnScreen(realIndex, j2) {
|
|
50439
50614
|
if (!lengthTransitionEnabled(this.w)) return false;
|
|
50440
50615
|
const keyed = this._prevKeyedPaths(realIndex);
|
|
50441
|
-
return !!keyed && keyed.has(
|
|
50616
|
+
return !!keyed && keyed.has(this._keys(realIndex)[j2]);
|
|
50617
|
+
}
|
|
50618
|
+
/**
|
|
50619
|
+
* This render's datum keys for a series (see seriesKeys), as stamped on
|
|
50620
|
+
* each bar and looked up in the previous render's.
|
|
50621
|
+
* @param {number} realIndex
|
|
50622
|
+
* @returns {string[]}
|
|
50623
|
+
*/
|
|
50624
|
+
_keys(realIndex) {
|
|
50625
|
+
const c = (
|
|
50626
|
+
/** @type {any} */
|
|
50627
|
+
this._keyCache || (this._keyCache = {})
|
|
50628
|
+
);
|
|
50629
|
+
return c[realIndex] || (c[realIndex] = seriesKeys(this.w, realIndex));
|
|
50442
50630
|
}
|
|
50443
50631
|
/**
|
|
50444
50632
|
* The captured previous-render record for a series (last match wins, same
|
|
@@ -50494,7 +50682,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50494
50682
|
* @returns {boolean}
|
|
50495
50683
|
*/
|
|
50496
50684
|
isLengthTransition(realIndex) {
|
|
50497
|
-
var _a, _b;
|
|
50685
|
+
var _a, _b, _c, _d, _e, _f;
|
|
50498
50686
|
if (!this._ltCache) this._ltCache = {};
|
|
50499
50687
|
if (this._ltCache[realIndex] !== void 0) return this._ltCache[realIndex];
|
|
50500
50688
|
const w = this.w;
|
|
@@ -50502,20 +50690,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50502
50690
|
if (lengthTransitionEnabled(w) && w.globals.previousPaths.length > 0) {
|
|
50503
50691
|
const record = this._prevRecord(realIndex);
|
|
50504
50692
|
const dataLen = (_b = (_a = w.seriesData.series[realIndex]) == null ? void 0 : _a.length) != null ? _b : 0;
|
|
50693
|
+
const keyed = record && this._prevKeyedPaths(realIndex);
|
|
50505
50694
|
if (!record) {
|
|
50506
50695
|
result = dataLen > 0;
|
|
50507
|
-
} else if (
|
|
50508
|
-
|
|
50696
|
+
} else if (keyed) {
|
|
50697
|
+
const now = new Set(this._keys(realIndex));
|
|
50698
|
+
result = ((_f = (_e = (_d = (_c = w.globals.prevStreamFrame) == null ? void 0 : _c.seriesY) == null ? void 0 : _d[realIndex]) == null ? void 0 : _e.length) != null ? _f : dataLen) !== dataLen || [...keyed.keys()].some((k2) => !now.has(k2));
|
|
50509
50699
|
} else {
|
|
50510
|
-
|
|
50511
|
-
if (keyed) {
|
|
50512
|
-
for (let j2 = 0; j2 < dataLen; j2++) {
|
|
50513
|
-
if (!keyed.has(datumKey(w, realIndex, j2))) {
|
|
50514
|
-
result = true;
|
|
50515
|
-
break;
|
|
50516
|
-
}
|
|
50517
|
-
}
|
|
50518
|
-
}
|
|
50700
|
+
result = record.paths.length !== dataLen;
|
|
50519
50701
|
}
|
|
50520
50702
|
}
|
|
50521
50703
|
this._ltCache[realIndex] = result;
|
|
@@ -50575,7 +50757,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50575
50757
|
let isNewDatum = false;
|
|
50576
50758
|
const keyed = this._prevKeyedPaths(realIndex);
|
|
50577
50759
|
if (keyed) {
|
|
50578
|
-
const prev = keyed.get(
|
|
50760
|
+
const prev = keyed.get(this._keys(realIndex)[j2]);
|
|
50579
50761
|
if (prev) {
|
|
50580
50762
|
oldD = prev.d;
|
|
50581
50763
|
} else {
|
|
@@ -50718,11 +50900,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50718
50900
|
* @returns {boolean | null} null when there is no previous record to consult
|
|
50719
50901
|
*/
|
|
50720
50902
|
getPreviousFlip(realIndex, j2) {
|
|
50721
|
-
const w = this.w;
|
|
50722
50903
|
const record = this._prevRecord(realIndex);
|
|
50723
50904
|
if (!record) return null;
|
|
50724
50905
|
const keyed = this._prevKeyedPaths(realIndex);
|
|
50725
|
-
const prev = keyed ? keyed.get(
|
|
50906
|
+
const prev = keyed ? keyed.get(this._keys(realIndex)[j2]) : record.paths[j2];
|
|
50726
50907
|
return prev ? !!prev.flip : null;
|
|
50727
50908
|
}
|
|
50728
50909
|
/**
|
|
@@ -50749,7 +50930,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50749
50930
|
const coreUtils = new CoreUtils(this.w);
|
|
50750
50931
|
series = coreUtils.getLogSeries(series);
|
|
50751
50932
|
this.yRatio = coreUtils.getLogYRatios(this.yRatio);
|
|
50752
|
-
this.barHelpers.initVariables(series);
|
|
50933
|
+
this.barHelpers.initVariables(series, seriesIndex);
|
|
50753
50934
|
if (w.config.chart.stackType === "100%") {
|
|
50754
50935
|
series = w.globals.comboCharts ? (
|
|
50755
50936
|
/** @type {any} */
|
|
@@ -50780,7 +50961,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50780
50961
|
const xArrValues = [];
|
|
50781
50962
|
const yArrValues = [];
|
|
50782
50963
|
const translationsIndex = this.setSeriesAxis(realIndex);
|
|
50783
|
-
this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;
|
|
50784
50964
|
let elSeries = this.graphics.group({
|
|
50785
50965
|
class: `apexcharts-series`,
|
|
50786
50966
|
seriesName: Utils$1.escapeString(w.seriesData.seriesNames[realIndex]),
|
|
@@ -50850,7 +51030,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50850
51030
|
null
|
|
50851
51031
|
);
|
|
50852
51032
|
if (this.isHorizontal) {
|
|
50853
|
-
paths = this.drawStackedBarPaths(__spreadProps(__spreadValues({}, commonPathOpts), {
|
|
51033
|
+
paths = this.drawStackedBarPaths(__spreadProps(__spreadValues(__spreadValues({}, commonPathOpts), this.barHelpers.rows && {
|
|
51034
|
+
y: initPositions.y + this.barHelpers.barRow(realIndex, j2) * yDivision
|
|
51035
|
+
}), {
|
|
50854
51036
|
zeroW,
|
|
50855
51037
|
barHeight,
|
|
50856
51038
|
yDivision
|
|
@@ -50924,6 +51106,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50924
51106
|
series,
|
|
50925
51107
|
barHeight,
|
|
50926
51108
|
barWidth,
|
|
51109
|
+
barXPosition: paths.barXPosition,
|
|
50927
51110
|
elDataLabelsWrap,
|
|
50928
51111
|
elGoalsMarkers,
|
|
50929
51112
|
type: "bar",
|
|
@@ -50941,7 +51124,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50941
51124
|
this.groupCtx.prevXVal.push(this.groupCtx.xArrjVal);
|
|
50942
51125
|
ret.add(elSeries);
|
|
50943
51126
|
}
|
|
50944
|
-
if (heldMirrors) this.settleHeldMirrors();
|
|
51127
|
+
if (heldMirrors) this.settleHeldMirrors(ret);
|
|
50945
51128
|
return ret;
|
|
50946
51129
|
}
|
|
50947
51130
|
/**
|
|
@@ -50962,15 +51145,21 @@ var __async = (__this, __arguments, generator) => {
|
|
|
50962
51145
|
* 'bottom' → 'top', where the endpoint really is rounded at the other end;
|
|
50963
51146
|
* everywhere else the mirror is an exact identity on the settled shape, so
|
|
50964
51147
|
* removing it changes nothing on screen.
|
|
51148
|
+
*
|
|
51149
|
+
* The marks are collected now, not when the timer fires: a query then also
|
|
51150
|
+
* stripped the mirrors a LATER update was still holding mid-tween.
|
|
51151
|
+
* @param {any} [ret] this draw's series group (default: the whole chart)
|
|
50965
51152
|
*/
|
|
50966
|
-
settleHeldMirrors() {
|
|
51153
|
+
settleHeldMirrors(ret) {
|
|
50967
51154
|
const w = this.w;
|
|
50968
51155
|
if (!Environment.isBrowser()) return;
|
|
50969
51156
|
const anim = w.config.chart.animations;
|
|
50970
51157
|
const hold = (anim.dynamicAnimation.speed || 0) + (anim.speed || 0) + 100;
|
|
51158
|
+
const held = (ret ? ret.node : w.dom.baseEl).querySelectorAll(
|
|
51159
|
+
".apexcharts-flip-held"
|
|
51160
|
+
);
|
|
50971
51161
|
setTimeout(() => {
|
|
50972
|
-
|
|
50973
|
-
w.dom.baseEl.querySelectorAll(".apexcharts-flip-held").forEach((el) => {
|
|
51162
|
+
held.forEach((el) => {
|
|
50974
51163
|
el.classList.remove(
|
|
50975
51164
|
"apexcharts-flip-held",
|
|
50976
51165
|
"apexcharts-flip-y",
|
|
@@ -51046,7 +51235,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51046
51235
|
yDivision,
|
|
51047
51236
|
elSeries
|
|
51048
51237
|
}) {
|
|
51049
|
-
var _a, _b
|
|
51238
|
+
var _a, _b;
|
|
51050
51239
|
const w = this.w;
|
|
51051
51240
|
const barYPosition = y + columnGroupIndex * barHeight;
|
|
51052
51241
|
let barXPosition;
|
|
@@ -51054,36 +51243,21 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51054
51243
|
const j2 = indexes.j;
|
|
51055
51244
|
const realIndex = indexes.realIndex;
|
|
51056
51245
|
const translationsIndex = indexes.translationsIndex;
|
|
51057
|
-
|
|
51058
|
-
for (let k2 = 0; k2 < this.groupCtx.prevXF.length; k2++) {
|
|
51059
|
-
prevBarW = prevBarW + this.groupCtx.prevXF[k2][j2];
|
|
51060
|
-
}
|
|
51061
|
-
const gsi = this.groupCtx.prevX.length;
|
|
51062
|
-
if (gsi > 0) {
|
|
51063
|
-
let bXP = zeroW;
|
|
51064
|
-
if (this.groupCtx.prevXVal[gsi - 1][j2] < 0) {
|
|
51065
|
-
bXP = /** @type {any} */
|
|
51066
|
-
((_a = this.series[i2]) == null ? void 0 : _a[j2]) >= 0 ? this.groupCtx.prevX[gsi - 1][j2] + prevBarW - (this.isReversed ? prevBarW : 0) * 2 : this.groupCtx.prevX[gsi - 1][j2];
|
|
51067
|
-
} else if (this.groupCtx.prevXVal[gsi - 1][j2] >= 0) {
|
|
51068
|
-
bXP = /** @type {any} */
|
|
51069
|
-
((_b = this.series[i2]) == null ? void 0 : _b[j2]) >= 0 ? this.groupCtx.prevX[gsi - 1][j2] : this.groupCtx.prevX[gsi - 1][j2] - prevBarW + (this.isReversed ? prevBarW : 0) * 2;
|
|
51070
|
-
}
|
|
51071
|
-
barXPosition = bXP;
|
|
51072
|
-
} else {
|
|
51073
|
-
barXPosition = zeroW;
|
|
51074
|
-
}
|
|
51075
|
-
if (
|
|
51246
|
+
const v = (
|
|
51076
51247
|
/** @type {any} */
|
|
51077
|
-
((
|
|
51078
|
-
)
|
|
51079
|
-
|
|
51248
|
+
(_b = (_a = this.series[i2]) == null ? void 0 : _a[j2]) != null ? _b : null
|
|
51249
|
+
);
|
|
51250
|
+
const g = this.groupCtx;
|
|
51251
|
+
const key = w.axisFlags.isXNumeric ? w.seriesData.seriesX[realIndex][j2] : j2;
|
|
51252
|
+
const top = g.tops.get(key);
|
|
51253
|
+
if (top) {
|
|
51254
|
+
const [prevX, prevVal, prevBarW] = top;
|
|
51255
|
+
const flip = (this.isReversed ? prevBarW : 0) * 2;
|
|
51256
|
+
barXPosition = prevVal < 0 ? v >= 0 ? prevX + prevBarW - flip : prevX : v >= 0 ? prevX : prevX - prevBarW + flip;
|
|
51080
51257
|
} else {
|
|
51081
|
-
|
|
51082
|
-
((_d = this.series[i2]) == null ? void 0 : _d[j2]) / this.invertedYRatio - (this.isReversed ? (
|
|
51083
|
-
/** @type {any} */
|
|
51084
|
-
((_e = this.series[i2]) == null ? void 0 : _e[j2]) / this.invertedYRatio
|
|
51085
|
-
) : 0) * 2;
|
|
51258
|
+
barXPosition = zeroW;
|
|
51086
51259
|
}
|
|
51260
|
+
x2 = barXPosition + v / this.invertedYRatio * (this.isReversed ? -1 : 1);
|
|
51087
51261
|
const paths = this.barHelpers.getBarpaths({
|
|
51088
51262
|
barYPosition,
|
|
51089
51263
|
barHeight,
|
|
@@ -51097,6 +51271,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51097
51271
|
j: j2,
|
|
51098
51272
|
w
|
|
51099
51273
|
});
|
|
51274
|
+
this._setTop(key, top, g.xArrj[j2], g.xArrjVal[j2], g.xArrjF[j2], realIndex, j2);
|
|
51100
51275
|
this.barHelpers.barBackground({
|
|
51101
51276
|
j: j2,
|
|
51102
51277
|
i: i2,
|
|
@@ -51134,13 +51309,17 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51134
51309
|
columnGroupIndex,
|
|
51135
51310
|
elSeries
|
|
51136
51311
|
}) {
|
|
51137
|
-
var _a, _b, _c
|
|
51312
|
+
var _a, _b, _c;
|
|
51138
51313
|
const w = this.w;
|
|
51139
51314
|
const i2 = indexes.i;
|
|
51140
51315
|
const j2 = indexes.j;
|
|
51141
51316
|
const bc = indexes.bc;
|
|
51142
51317
|
const realIndex = indexes.realIndex;
|
|
51143
51318
|
const translationsIndex = indexes.translationsIndex;
|
|
51319
|
+
const v = (
|
|
51320
|
+
/** @type {any} */
|
|
51321
|
+
(_b = (_a = this.series[i2]) == null ? void 0 : _a[j2]) != null ? _b : null
|
|
51322
|
+
);
|
|
51144
51323
|
if (w.axisFlags.isXNumeric) {
|
|
51145
51324
|
let seriesVal = w.seriesData.seriesX[realIndex][j2];
|
|
51146
51325
|
if (!seriesVal) seriesVal = 0;
|
|
@@ -51155,11 +51334,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51155
51334
|
const [prevYValue, prevVal, prevBarH] = top;
|
|
51156
51335
|
let bYP;
|
|
51157
51336
|
if (prevVal < 0) {
|
|
51158
|
-
bYP =
|
|
51159
|
-
((_a = this.series[i2]) == null ? void 0 : _a[j2]) >= 0 ? prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2 : prevYValue;
|
|
51337
|
+
bYP = v >= 0 ? prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2 : prevYValue;
|
|
51160
51338
|
} else if (prevVal >= 0) {
|
|
51161
|
-
bYP =
|
|
51162
|
-
((_b = this.series[i2]) == null ? void 0 : _b[j2]) >= 0 ? prevYValue : prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2;
|
|
51339
|
+
bYP = v >= 0 ? prevYValue : prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2;
|
|
51163
51340
|
}
|
|
51164
51341
|
if (typeof bYP === "undefined") bYP = w.layout.gridHeight;
|
|
51165
51342
|
if (((_c = g.prevYF[0]) == null ? void 0 : _c.every((val) => val === 0)) && g.prevYF.slice(1).every(
|
|
@@ -51172,25 +51349,16 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51172
51349
|
} else {
|
|
51173
51350
|
barYPosition = zeroH;
|
|
51174
51351
|
}
|
|
51175
|
-
|
|
51176
|
-
/** @type {any} */
|
|
51177
|
-
(_d = this.series[i2]) == null ? void 0 : _d[j2]
|
|
51178
|
-
) {
|
|
51179
|
-
y = barYPosition - /** @type {any} */
|
|
51180
|
-
((_e = this.series[i2]) == null ? void 0 : _e[j2]) / this.yRatio[translationsIndex] + (this.isReversed ? (
|
|
51181
|
-
/** @type {any} */
|
|
51182
|
-
((_f = this.series[i2]) == null ? void 0 : _f[j2]) / this.yRatio[translationsIndex]
|
|
51183
|
-
) : 0) * 2;
|
|
51184
|
-
} else {
|
|
51185
|
-
y = barYPosition;
|
|
51186
|
-
}
|
|
51352
|
+
y = barYPosition - v / this.yRatio[translationsIndex] * (this.isReversed ? -1 : 1);
|
|
51187
51353
|
const paths = this.barHelpers.getColumnPaths({
|
|
51188
51354
|
barXPosition,
|
|
51189
51355
|
barWidth,
|
|
51190
51356
|
y1: barYPosition,
|
|
51191
51357
|
y2: y,
|
|
51192
51358
|
yRatio: this.yRatio[translationsIndex],
|
|
51193
|
-
|
|
51359
|
+
// the series' width even for an empty segment, so a hidden layer keeps
|
|
51360
|
+
// its place, but no inset at all when no stroke is drawn
|
|
51361
|
+
strokeWidth: w.config.stroke.show ? this.strokeWidth : 0,
|
|
51194
51362
|
isReversed: this.isReversed,
|
|
51195
51363
|
series: this.series,
|
|
51196
51364
|
realIndex: indexes.realIndex,
|
|
@@ -51198,17 +51366,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51198
51366
|
j: j2,
|
|
51199
51367
|
w
|
|
51200
51368
|
});
|
|
51201
|
-
|
|
51202
|
-
if (!isNaN(t2)) {
|
|
51203
|
-
g.tops.set(key, [
|
|
51204
|
-
t2,
|
|
51205
|
-
g.yArrjVal[j2],
|
|
51206
|
-
(top ? top[2] : 0) + g.yArrjF[j2],
|
|
51207
|
-
(top ? top[3] : 0) + (w.seriesData.series[realIndex][j2] || 0),
|
|
51208
|
-
top ? Math.min(top[0], top[4]) : 1 / 0,
|
|
51209
|
-
top ? Math.max(top[0], top[5]) : -1 / 0
|
|
51210
|
-
]);
|
|
51211
|
-
}
|
|
51369
|
+
this._setTop(key, top, g.yArrj[j2], g.yArrjVal[j2], g.yArrjF[j2], realIndex, j2);
|
|
51212
51370
|
this.barHelpers.barBackground({
|
|
51213
51371
|
bc,
|
|
51214
51372
|
j: j2,
|
|
@@ -51227,17 +51385,47 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51227
51385
|
zeroH,
|
|
51228
51386
|
realIndex,
|
|
51229
51387
|
j2,
|
|
51230
|
-
|
|
51388
|
+
translationsIndex
|
|
51231
51389
|
),
|
|
51232
51390
|
barXPosition,
|
|
51233
51391
|
x: w.axisFlags.isXNumeric ? x2 : x2 + xDivision,
|
|
51234
51392
|
y
|
|
51235
51393
|
};
|
|
51236
51394
|
}
|
|
51395
|
+
/**
|
|
51396
|
+
* Record the segment just drawn as the top of its stack. Per key it holds
|
|
51397
|
+
* the top and value of the last segment drawn there, the summed lengths and
|
|
51398
|
+
* raw values of every segment so far (the total label's value), and the
|
|
51399
|
+
* extreme tops below that segment (the total label's position).
|
|
51400
|
+
* @param {any} key @param {any} top @param {number} t @param {any} val
|
|
51401
|
+
* @param {number} len @param {number} realIndex @param {number} j
|
|
51402
|
+
*/
|
|
51403
|
+
_setTop(key, top, t2, val, len, realIndex, j2) {
|
|
51404
|
+
if (isNaN(t2)) return;
|
|
51405
|
+
this.groupCtx.tops.set(key, [
|
|
51406
|
+
t2,
|
|
51407
|
+
val,
|
|
51408
|
+
(top ? top[2] : 0) + len,
|
|
51409
|
+
(top ? top[3] : 0) + (this.w.seriesData.series[realIndex][j2] || 0),
|
|
51410
|
+
top ? Math.min(top[0], top[4]) : 1 / 0,
|
|
51411
|
+
top ? Math.max(top[0], top[5]) : -1 / 0
|
|
51412
|
+
]);
|
|
51413
|
+
}
|
|
51414
|
+
}
|
|
51415
|
+
function jitterExtent(pool, w) {
|
|
51416
|
+
let lo = Infinity;
|
|
51417
|
+
let hi = -Infinity;
|
|
51418
|
+
pool.slice(0, w.seriesData.series.length).flat(2).forEach((v) => {
|
|
51419
|
+
if (v === +v) {
|
|
51420
|
+
if (v < lo) lo = v;
|
|
51421
|
+
if (v > hi) hi = v;
|
|
51422
|
+
}
|
|
51423
|
+
});
|
|
51424
|
+
return [lo, hi];
|
|
51237
51425
|
}
|
|
51238
51426
|
function buildJitterGroups({
|
|
51239
|
-
w,
|
|
51240
51427
|
points,
|
|
51428
|
+
extent,
|
|
51241
51429
|
seedA,
|
|
51242
51430
|
seedB,
|
|
51243
51431
|
center,
|
|
@@ -51248,6 +51436,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51248
51436
|
clampAt,
|
|
51249
51437
|
sideSign
|
|
51250
51438
|
}) {
|
|
51439
|
+
var _a, _b;
|
|
51251
51440
|
const opts = options2;
|
|
51252
51441
|
if (!opts || opts.show === false) return [];
|
|
51253
51442
|
if (!points || !points.length) return [];
|
|
@@ -51261,8 +51450,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51261
51450
|
const scale = opts.colorScale;
|
|
51262
51451
|
const useScale = scale && Array.isArray(scale.colors) && scale.colors.length > 0;
|
|
51263
51452
|
const steps = useScale ? Math.max(2, scale.steps || 24) : 1;
|
|
51264
|
-
const sMin =
|
|
51265
|
-
const sMax =
|
|
51453
|
+
const sMin = (_a = scale == null ? void 0 : scale.min) != null ? _a : extent[0];
|
|
51454
|
+
const sMax = (_b = scale == null ? void 0 : scale.max) != null ? _b : extent[1];
|
|
51266
51455
|
const span = sMax - sMin || 1;
|
|
51267
51456
|
const buckets = useScale ? new Array(steps).fill("") : [""];
|
|
51268
51457
|
for (let k2 = 0; k2 < points.length; k2 += stride) {
|
|
@@ -51348,7 +51537,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51348
51537
|
elSeries.add(elPointsWrap);
|
|
51349
51538
|
}
|
|
51350
51539
|
function darkenColor(color, amount) {
|
|
51351
|
-
const rgb = Utils$1.
|
|
51540
|
+
const rgb = Utils$1.parseColor(color) || Utils$1.parseColor(Utils$1.resolveColor(color));
|
|
51352
51541
|
if (!rgb) return color;
|
|
51353
51542
|
const f = Math.max(0, 1 - amount);
|
|
51354
51543
|
return `rgb(${Math.round(rgb[0] * f)},${Math.round(rgb[1] * f)},${Math.round(rgb[2] * f)})`;
|
|
@@ -51413,7 +51602,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51413
51602
|
if (!keyed || keyed.size === 0 || !row || row.length === 0) return false;
|
|
51414
51603
|
let survivors = 0;
|
|
51415
51604
|
for (let j2 = 0; j2 < row.length; j2++) {
|
|
51416
|
-
if (keyed.has(
|
|
51605
|
+
if (keyed.has(this._keys(realIndex)[j2])) survivors++;
|
|
51417
51606
|
}
|
|
51418
51607
|
return survivors / keyed.size < 0.5;
|
|
51419
51608
|
}
|
|
@@ -51442,7 +51631,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51442
51631
|
}
|
|
51443
51632
|
this._prevHalves[realIndex] = map;
|
|
51444
51633
|
}
|
|
51445
|
-
const halves = map && map.get(
|
|
51634
|
+
const halves = map && map.get(this._keys(realIndex)[j2]);
|
|
51446
51635
|
return halves && halves.length === 2 ? halves[pi] : null;
|
|
51447
51636
|
}
|
|
51448
51637
|
/**
|
|
@@ -51452,7 +51641,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51452
51641
|
*/
|
|
51453
51642
|
// @ts-ignore -- BoxCandleStick.draw has an extra ctype param compared to Bar.draw
|
|
51454
51643
|
draw(series, ctype, seriesIndex) {
|
|
51455
|
-
var _a;
|
|
51644
|
+
var _a, _b;
|
|
51456
51645
|
const w = this.w;
|
|
51457
51646
|
const graphics = new Graphics(this.w);
|
|
51458
51647
|
const type = w.globals.comboCharts ? ctype : w.config.chart.type;
|
|
@@ -51460,16 +51649,17 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51460
51649
|
this.candlestickOptions = this.w.config.plotOptions.candlestick;
|
|
51461
51650
|
this.boxOptions = this.w.config.plotOptions.boxPlot;
|
|
51462
51651
|
this.isHorizontal = w.config.plotOptions.bar.horizontal;
|
|
51463
|
-
this.isOHLC = this.candlestickOptions && this.candlestickOptions.type === "ohlc";
|
|
51464
51652
|
this.coreUtils = new CoreUtils(this.w);
|
|
51465
51653
|
series = this.coreUtils.getLogSeries(series);
|
|
51466
51654
|
this.series = series;
|
|
51467
51655
|
this.yRatio = this.coreUtils.getLogYRatios(this.yRatio);
|
|
51468
|
-
this.barHelpers.initVariables(series);
|
|
51656
|
+
this.barHelpers.initVariables(series, seriesIndex);
|
|
51469
51657
|
const ret = graphics.group({
|
|
51470
51658
|
class: `apexcharts-${type}-series apexcharts-plot-series`
|
|
51471
51659
|
});
|
|
51472
51660
|
this.isBoxPlot = type === "boxPlot";
|
|
51661
|
+
this.isOHLC = !this.isBoxPlot && ((_a = this.candlestickOptions) == null ? void 0 : _a.type) === "ohlc";
|
|
51662
|
+
const jx = jitterExtent(w.candleData.seriesBoxPoints, w);
|
|
51473
51663
|
for (let i2 = 0; i2 < series.length; i2++) {
|
|
51474
51664
|
let x2;
|
|
51475
51665
|
let y;
|
|
@@ -51595,6 +51785,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51595
51785
|
i: i2,
|
|
51596
51786
|
pathFrom: (_a2 = this._prevBoxHalf(realIndex, j2, pi)) != null ? _a2 : paths.pathFrom,
|
|
51597
51787
|
fadeReveal,
|
|
51788
|
+
noLabel: pi > 0,
|
|
51598
51789
|
pathTo,
|
|
51599
51790
|
strokeWidth,
|
|
51600
51791
|
elSeries,
|
|
@@ -51616,7 +51807,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51616
51807
|
}
|
|
51617
51808
|
);
|
|
51618
51809
|
if (boxPointsOpts && boxPointsOpts.show !== false) {
|
|
51619
|
-
const pts = (
|
|
51810
|
+
const pts = (_b = w.candleData.seriesBoxPoints[realIndex]) == null ? void 0 : _b[j2];
|
|
51620
51811
|
if (pts && pts.length) {
|
|
51621
51812
|
const logVal = (v) => (
|
|
51622
51813
|
/** @type {any} */
|
|
@@ -51627,14 +51818,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51627
51818
|
);
|
|
51628
51819
|
let center, halfExtent, alongFn;
|
|
51629
51820
|
if (this.isHorizontal) {
|
|
51630
|
-
const yRatio = this.invertedYRatio;
|
|
51821
|
+
const yRatio = this.invertedYRatio * (this.isReversed ? -1 : 1);
|
|
51631
51822
|
const bh = barHeight != null ? barHeight : 0;
|
|
51632
51823
|
const z = zeroW != null ? zeroW : 0;
|
|
51633
51824
|
center = paths.barYPosition + bh / 2;
|
|
51634
51825
|
halfExtent = bh / 2;
|
|
51635
51826
|
alongFn = (v) => z + logVal(v) / yRatio;
|
|
51636
51827
|
} else {
|
|
51637
|
-
const yRatio = this.yRatio[translationsIndex];
|
|
51828
|
+
const yRatio = this.yRatio[translationsIndex] * (this.isReversed ? -1 : 1);
|
|
51638
51829
|
const bw = barWidth != null ? barWidth : 0;
|
|
51639
51830
|
const z = zeroH != null ? zeroH : 0;
|
|
51640
51831
|
center = paths.barXPosition + bw / 2;
|
|
@@ -51642,8 +51833,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51642
51833
|
alongFn = (v) => z - logVal(v) / yRatio;
|
|
51643
51834
|
}
|
|
51644
51835
|
const groups = buildJitterGroups({
|
|
51645
|
-
w,
|
|
51646
51836
|
points: pts,
|
|
51837
|
+
extent: jx,
|
|
51647
51838
|
seedA: realIndex,
|
|
51648
51839
|
seedB: j2,
|
|
51649
51840
|
center,
|
|
@@ -51672,15 +51863,13 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51672
51863
|
w.globals.seriesXvalues[realIndex] = xArrj;
|
|
51673
51864
|
w.globals.seriesYvalues[realIndex] = yArrj;
|
|
51674
51865
|
if (w.globals.previousPaths.length > 0 && !fadeReveal) {
|
|
51675
|
-
const newKeys = [];
|
|
51676
|
-
for (let j2 = 0; j2 < series[i2].length; j2++) {
|
|
51677
|
-
newKeys.push(datumKey(w, realIndex, j2));
|
|
51678
|
-
}
|
|
51679
51866
|
renderBarExitGhosts({
|
|
51680
51867
|
w,
|
|
51681
51868
|
elSeries,
|
|
51682
51869
|
record: this._prevRecord(realIndex),
|
|
51683
|
-
newKeys
|
|
51870
|
+
newKeys: this._keys(realIndex).filter(
|
|
51871
|
+
(_, j2) => series[i2][j2] != null
|
|
51872
|
+
),
|
|
51684
51873
|
isHorizontal: this.isHorizontal,
|
|
51685
51874
|
speed: w.config.chart.animations.dynamicAnimation.speed
|
|
51686
51875
|
});
|
|
@@ -51699,7 +51888,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51699
51888
|
strokeWidth,
|
|
51700
51889
|
cullBounds = null
|
|
51701
51890
|
}) {
|
|
51702
|
-
var _a, _b, _c
|
|
51891
|
+
var _a, _b, _c;
|
|
51703
51892
|
const w = this.w;
|
|
51704
51893
|
const graphics = new Graphics(this.w);
|
|
51705
51894
|
const i2 = indexes.i;
|
|
@@ -51710,7 +51899,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51710
51899
|
const getColor = (color2) => Array.isArray(color2) ? color2[realIndex] : color2;
|
|
51711
51900
|
const colorPos = getColor(candleColors.upward);
|
|
51712
51901
|
const colorNeg = getColor(candleColors.downward);
|
|
51713
|
-
const yRatio = this.yRatio[indexes.translationsIndex];
|
|
51902
|
+
const yRatio = this.yRatio[indexes.translationsIndex] * (this.isReversed ? -1 : 1);
|
|
51714
51903
|
const ohlc = this.getOHLCValue(realIndex, j2);
|
|
51715
51904
|
let l1 = zeroH;
|
|
51716
51905
|
let l2 = zeroH;
|
|
@@ -51727,9 +51916,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51727
51916
|
x2 = pos.x;
|
|
51728
51917
|
barXPosition = pos.barXPosition;
|
|
51729
51918
|
}
|
|
51730
|
-
|
|
51731
|
-
|
|
51732
|
-
|
|
51919
|
+
const hole = (
|
|
51920
|
+
/** @type {any} */
|
|
51921
|
+
((_a = this.series[i2]) == null ? void 0 : _a[j2]) == null
|
|
51922
|
+
);
|
|
51923
|
+
if (hole) {
|
|
51733
51924
|
y1 = zeroH;
|
|
51734
51925
|
y2 = zeroH;
|
|
51735
51926
|
} else {
|
|
@@ -51739,7 +51930,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51739
51930
|
l2 = zeroH - ohlc.l / yRatio;
|
|
51740
51931
|
m = zeroH - ohlc.m / yRatio;
|
|
51741
51932
|
}
|
|
51742
|
-
if (cullBounds && (barXPosition + barWidth < cullBounds.lo || barXPosition > cullBounds.hi) && !this._wasOnScreen(realIndex, j2)) {
|
|
51933
|
+
if (hole || cullBounds && (barXPosition + barWidth < cullBounds.lo || barXPosition > cullBounds.hi) && !this._wasOnScreen(realIndex, j2)) {
|
|
51743
51934
|
return {
|
|
51744
51935
|
pathTo: null,
|
|
51745
51936
|
pathFrom: null,
|
|
@@ -51769,7 +51960,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51769
51960
|
];
|
|
51770
51961
|
}
|
|
51771
51962
|
let pathFrom = null;
|
|
51772
|
-
const morphFrom = (
|
|
51963
|
+
const morphFrom = (_c = (_b = this.ctx) == null ? void 0 : _b.morphTypeChange) == null ? void 0 : _c.getInitialPathFor(realIndex, j2);
|
|
51773
51964
|
if (morphFrom) {
|
|
51774
51965
|
pathFrom = morphFrom;
|
|
51775
51966
|
} else if (w.globals.previousPaths.length > 0) {
|
|
@@ -51808,7 +51999,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51808
51999
|
zeroW,
|
|
51809
52000
|
strokeWidth
|
|
51810
52001
|
}) {
|
|
51811
|
-
var _a, _b, _c
|
|
52002
|
+
var _a, _b, _c;
|
|
51812
52003
|
const w = this.w;
|
|
51813
52004
|
const graphics = new Graphics(this.w);
|
|
51814
52005
|
const i2 = indexes.i;
|
|
@@ -51817,7 +52008,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51817
52008
|
const { colors: candleColors } = w.config.plotOptions.candlestick;
|
|
51818
52009
|
const { colors: boxColors } = this.boxOptions;
|
|
51819
52010
|
const getColor = (color2) => Array.isArray(color2) ? color2[realIndex] : color2;
|
|
51820
|
-
const yRatio = this.invertedYRatio;
|
|
52011
|
+
const yRatio = this.invertedYRatio * (this.isReversed ? -1 : 1);
|
|
51821
52012
|
const ohlc = this.getOHLCValue(realIndex, j2);
|
|
51822
52013
|
let color = ohlc.o < ohlc.c ? [getColor(candleColors.upward)] : [getColor(candleColors.downward)];
|
|
51823
52014
|
if (this.isBoxPlot) {
|
|
@@ -51829,9 +52020,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51829
52020
|
let x2 = Math.max(ohlc.o, ohlc.c);
|
|
51830
52021
|
let m = ohlc.m;
|
|
51831
52022
|
const barYPosition = y + barHeight * this.visibleI;
|
|
51832
|
-
|
|
51833
|
-
|
|
51834
|
-
|
|
52023
|
+
const hole = (
|
|
52024
|
+
/** @type {any} */
|
|
52025
|
+
((_a = this.series[i2]) == null ? void 0 : _a[j2]) == null
|
|
52026
|
+
);
|
|
52027
|
+
if (hole) {
|
|
51835
52028
|
x1 = zeroW;
|
|
51836
52029
|
x2 = zeroW;
|
|
51837
52030
|
} else {
|
|
@@ -51846,7 +52039,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51846
52039
|
graphics.move(m, barYPosition) + graphics.line(m, barYPosition + barHeight) + graphics.line(x2, barYPosition + barHeight) + graphics.line(x2, barYPosition + barHeight / 2) + graphics.line(l2, barYPosition + barHeight / 2) + graphics.line(l2, barYPosition + barHeight - barHeight / 4) + graphics.line(l2, barYPosition + barHeight / 4) + graphics.line(l2, barYPosition + barHeight / 2) + graphics.line(x2, barYPosition + barHeight / 2) + graphics.line(x2, barYPosition) + graphics.line(m, barYPosition) + "z"
|
|
51847
52040
|
];
|
|
51848
52041
|
let pathFrom = null;
|
|
51849
|
-
const morphFrom = (
|
|
52042
|
+
const morphFrom = (_c = (_b = this.ctx) == null ? void 0 : _b.morphTypeChange) == null ? void 0 : _c.getInitialPathFor(realIndex, j2);
|
|
51850
52043
|
if (morphFrom) {
|
|
51851
52044
|
pathFrom = morphFrom;
|
|
51852
52045
|
} else if (w.globals.previousPaths.length > 0) {
|
|
@@ -51871,7 +52064,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
51871
52064
|
0
|
|
51872
52065
|
),
|
|
51873
52066
|
barYPosition,
|
|
51874
|
-
color
|
|
52067
|
+
color,
|
|
52068
|
+
culled: hole
|
|
51875
52069
|
};
|
|
51876
52070
|
}
|
|
51877
52071
|
/**
|
|
@@ -52048,13 +52242,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
52048
52242
|
elDataLabelsWrap = graphics.group({
|
|
52049
52243
|
class: "apexcharts-data-labels"
|
|
52050
52244
|
});
|
|
52051
|
-
const offX = resolveDataLabelOffset(dataLabelsConfig.offsetX, w, i2, j2);
|
|
52052
|
-
const offY = resolveDataLabelOffset(dataLabelsConfig.offsetY, w, i2, j2);
|
|
52053
|
-
const dataLabelsX = x2 + offX;
|
|
52054
|
-
const dataLabelsY = y + parseFloat(dataLabelsConfig.style.fontSize) / 3 + offY;
|
|
52055
52245
|
dataLabels.plotDataLabelsText({
|
|
52056
|
-
x:
|
|
52057
|
-
y:
|
|
52246
|
+
x: x2,
|
|
52247
|
+
y: y + parseFloat(dataLabelsConfig.style.fontSize) / 3,
|
|
52058
52248
|
text,
|
|
52059
52249
|
i: i2,
|
|
52060
52250
|
j: j2,
|
|
@@ -52518,18 +52708,16 @@ var __async = (__this, __arguments, generator) => {
|
|
|
52518
52708
|
this.lineCtx = lineCtx;
|
|
52519
52709
|
}
|
|
52520
52710
|
/**
|
|
52521
|
-
* @param {number} i
|
|
52711
|
+
* @param {number} i index into `series`, the rows this draw call renders
|
|
52522
52712
|
* @param {any[]} series
|
|
52713
|
+
* @param {number} realIndex index into the config / fill options
|
|
52523
52714
|
*/
|
|
52524
|
-
sameValueSeriesFix(i2, series) {
|
|
52715
|
+
sameValueSeriesFix(i2, series, realIndex) {
|
|
52525
52716
|
const w = this.w;
|
|
52526
|
-
|
|
52527
|
-
|
|
52528
|
-
|
|
52529
|
-
|
|
52530
|
-
gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 1e-6;
|
|
52531
|
-
series[i2] = gSeries;
|
|
52532
|
-
}
|
|
52717
|
+
const s2 = series[i2];
|
|
52718
|
+
if ((w.config.fill.type === "gradient" || w.config.fill.type[realIndex] === "gradient") && s2.every((v) => v === s2[0])) {
|
|
52719
|
+
series[i2] = s2.slice();
|
|
52720
|
+
series[i2][s2.length - 1] += 1e-6;
|
|
52533
52721
|
}
|
|
52534
52722
|
return series;
|
|
52535
52723
|
}
|
|
@@ -52818,13 +53006,27 @@ var __async = (__this, __arguments, generator) => {
|
|
|
52818
53006
|
this.yRatio = coreUtils.getLogYRatios(this.yRatio);
|
|
52819
53007
|
this.prevSeriesY = [];
|
|
52820
53008
|
this.prevSeriesYByX = /* @__PURE__ */ new Map();
|
|
53009
|
+
this._stackXs = null;
|
|
53010
|
+
if (w.config.chart.stacked && w.axisFlags.isXNumeric) {
|
|
53011
|
+
const xs = series.map(
|
|
53012
|
+
(_, i2) => w.globals.comboCharts ? (
|
|
53013
|
+
/** @type {any} */
|
|
53014
|
+
seriesIndex[i2]
|
|
53015
|
+
) : i2
|
|
53016
|
+
).filter((ri) => !this._hidden(ri)).map((ri) => w.seriesData.seriesX[ri] || []);
|
|
53017
|
+
if (xs.some(
|
|
53018
|
+
(a2) => a2.length !== xs[0].length || a2.some((v, k2) => v !== xs[0][k2])
|
|
53019
|
+
)) {
|
|
53020
|
+
this._stackXs = [...new Set(xs.flat())].sort((a2, b) => a2 - b);
|
|
53021
|
+
}
|
|
53022
|
+
}
|
|
52821
53023
|
const allSeries = [];
|
|
52822
53024
|
for (let i2 = 0; i2 < series.length; i2++) {
|
|
52823
|
-
series = this.lineHelpers.sameValueSeriesFix(i2, series);
|
|
52824
53025
|
const realIndex = w.globals.comboCharts ? (
|
|
52825
53026
|
/** @type {any} */
|
|
52826
53027
|
seriesIndex[i2]
|
|
52827
53028
|
) : i2;
|
|
53029
|
+
series = this.lineHelpers.sameValueSeriesFix(i2, series, realIndex);
|
|
52828
53030
|
const translationsIndex = this.yRatio.length > 1 ? realIndex : 0;
|
|
52829
53031
|
const flat = this._collapsedBaselineRow(series, i2, realIndex);
|
|
52830
53032
|
this._shapeOnly = !!flat;
|
|
@@ -53008,9 +53210,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53008
53210
|
const gl = w.globals;
|
|
53009
53211
|
if (w.config.chart.stacked || this.pointsChart) return null;
|
|
53010
53212
|
if (!Array.isArray(series[i2]) || series[i2].length !== 0) return null;
|
|
53011
|
-
if (
|
|
53012
|
-
return null;
|
|
53013
|
-
}
|
|
53213
|
+
if (!this._hidden(realIndex)) return null;
|
|
53014
53214
|
const n2 = w.axisFlags.isXNumeric ? (w.seriesData.seriesX[realIndex] || []).length : gl.dataPoints;
|
|
53015
53215
|
if (!n2) return null;
|
|
53016
53216
|
const lo = Utils$1.isNumber(gl.minYArr[realIndex]) ? gl.minYArr[realIndex] : gl.minY;
|
|
@@ -53139,6 +53339,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53139
53339
|
if (key === void 0 || key === null) return void 0;
|
|
53140
53340
|
return this.prevSeriesYByX.get(key);
|
|
53141
53341
|
}
|
|
53342
|
+
/** @param {number} ri */
|
|
53343
|
+
_hidden(ri) {
|
|
53344
|
+
const g = this.w.globals;
|
|
53345
|
+
return g.collapsedSeriesIndices.indexOf(ri) > -1 || g.ancillaryCollapsedSeriesIndices.indexOf(ri) > -1;
|
|
53346
|
+
}
|
|
53142
53347
|
/**
|
|
53143
53348
|
* Fold a drawn series into the running stack top, so the next series can find
|
|
53144
53349
|
* its baseline by x (#4886).
|
|
@@ -53154,19 +53359,18 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53154
53359
|
* correct if that representation ever changes.
|
|
53155
53360
|
* @param {number} realIndex
|
|
53156
53361
|
* @param {any[]} yArrj
|
|
53362
|
+
* @param {any[]} [row] the drawn row, if not the series' own (a part)
|
|
53157
53363
|
*/
|
|
53158
|
-
_recordStackTops(realIndex, yArrj) {
|
|
53364
|
+
_recordStackTops(realIndex, yArrj, row = this.w.seriesData.series[realIndex]) {
|
|
53159
53365
|
const w = this.w;
|
|
53160
53366
|
if (!w.config.chart.stacked) return;
|
|
53161
53367
|
if (!Array.isArray(yArrj)) return;
|
|
53162
|
-
if (
|
|
53163
|
-
return;
|
|
53164
|
-
}
|
|
53368
|
+
if (this._hidden(realIndex)) return;
|
|
53165
53369
|
for (let j2 = 0; j2 < yArrj.length; j2++) {
|
|
53166
53370
|
const key = this._stackKey(realIndex, j2);
|
|
53167
53371
|
if (key === void 0 || key === null) continue;
|
|
53168
53372
|
const y = yArrj[j2];
|
|
53169
|
-
if (!Utils$1.isNumber(y)) continue;
|
|
53373
|
+
if (!Utils$1.isNumber(y) || (row == null ? void 0 : row[j2]) == null) continue;
|
|
53170
53374
|
this.prevSeriesYByX.set(key, y);
|
|
53171
53375
|
}
|
|
53172
53376
|
}
|
|
@@ -53199,7 +53403,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53199
53403
|
w.globals.seriesYvalues[realIndex] = paths.yArrj;
|
|
53200
53404
|
const forecast = w.config.forecastDataPoints;
|
|
53201
53405
|
if (forecast.count > 0 && type !== "rangeArea") {
|
|
53202
|
-
const
|
|
53406
|
+
const ci = paths.xArrj.length - forecast.count - 1;
|
|
53407
|
+
const forecastCutoff = w.axisFlags.isXNumeric ? (w.seriesData.seriesX[realIndex][ci] - w.globals.minX) / this.xRatio : w.globals.padHorizontal + this.categoryAxisCorrection + ci * this.xDivision;
|
|
53203
53408
|
const elForecastMask = graphics.drawRect(
|
|
53204
53409
|
forecastCutoff,
|
|
53205
53410
|
0,
|
|
@@ -53286,7 +53491,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53286
53491
|
scrollMorph: !!streamScroll,
|
|
53287
53492
|
stroke: "none",
|
|
53288
53493
|
strokeWidth: 0,
|
|
53289
|
-
|
|
53494
|
+
strokeLinecap: null,
|
|
53290
53495
|
fill: pathFill
|
|
53291
53496
|
}));
|
|
53292
53497
|
this.elSeries.add(renderedPath);
|
|
@@ -53328,7 +53533,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53328
53533
|
scrollMorph: !!streamScroll,
|
|
53329
53534
|
stroke: lineFill,
|
|
53330
53535
|
strokeWidth: this.strokeWidth,
|
|
53331
|
-
|
|
53536
|
+
strokeLinecap: w.config.stroke.lineCap,
|
|
53332
53537
|
fill: type === "rangeArea" ? pathFill : "none"
|
|
53333
53538
|
});
|
|
53334
53539
|
const renderedPath = emit.renderPaths(linePathCommonOpts);
|
|
@@ -53382,7 +53587,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53382
53587
|
isRangeStart,
|
|
53383
53588
|
seriesRangeEnd
|
|
53384
53589
|
}) {
|
|
53385
|
-
var _a, _b;
|
|
53590
|
+
var _a, _b, _c;
|
|
53386
53591
|
const w = this.w;
|
|
53387
53592
|
const graphics = new Graphics(this.w);
|
|
53388
53593
|
const yRatio = this.yRatio;
|
|
@@ -53434,15 +53639,30 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53434
53639
|
});
|
|
53435
53640
|
if (fast) return fast;
|
|
53436
53641
|
}
|
|
53642
|
+
const ks = stackSeries ? this._stackXs : null;
|
|
53643
|
+
let kp = 0;
|
|
53644
|
+
const midsAt = [];
|
|
53437
53645
|
for (let j2 = 0; j2 < iterations; j2++) {
|
|
53438
53646
|
if (series[i2].length === 0) break;
|
|
53439
53647
|
const isNull = typeof series[i2][j2 + 1] === "undefined" || series[i2][j2 + 1] === null;
|
|
53440
53648
|
if (w.axisFlags.isXNumeric) {
|
|
53441
|
-
|
|
53442
|
-
|
|
53443
|
-
|
|
53649
|
+
const sxs = w.seriesData.seriesX[realIndex];
|
|
53650
|
+
let sX = sxs[j2 + 1];
|
|
53651
|
+
if (typeof sX === "undefined") {
|
|
53652
|
+
sX = sxs[iterations - 1];
|
|
53444
53653
|
}
|
|
53445
53654
|
x2 = (sX - w.globals.minX) / this.xRatio;
|
|
53655
|
+
if (ks) {
|
|
53656
|
+
const m = [];
|
|
53657
|
+
while (ks[kp] <= sxs[j2]) kp++;
|
|
53658
|
+
while (ks[kp] < sX) {
|
|
53659
|
+
m.push([
|
|
53660
|
+
(ks[kp] - w.globals.minX) / this.xRatio,
|
|
53661
|
+
(_c = this.prevSeriesYByX.get(ks[kp++])) != null ? _c : this.zeroY
|
|
53662
|
+
]);
|
|
53663
|
+
}
|
|
53664
|
+
if (m.length) midsAt[j2 + 1] = m;
|
|
53665
|
+
}
|
|
53446
53666
|
} else {
|
|
53447
53667
|
x2 = x2 + this.xDivision;
|
|
53448
53668
|
}
|
|
@@ -53452,9 +53672,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53452
53672
|
var _a2;
|
|
53453
53673
|
for (let pii = pi; pii >= 0; pii--) {
|
|
53454
53674
|
const ri = (_a2 = seriesIndex == null ? void 0 : seriesIndex[pii]) != null ? _a2 : pii;
|
|
53455
|
-
if (
|
|
53456
|
-
return pii;
|
|
53457
|
-
}
|
|
53675
|
+
if (!this._hidden(ri)) return pii;
|
|
53458
53676
|
}
|
|
53459
53677
|
return -1;
|
|
53460
53678
|
};
|
|
@@ -53510,6 +53728,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53510
53728
|
j: j2,
|
|
53511
53729
|
x: x2,
|
|
53512
53730
|
y,
|
|
53731
|
+
midsAt,
|
|
53513
53732
|
y2,
|
|
53514
53733
|
xArrj,
|
|
53515
53734
|
yArrj,
|
|
@@ -53750,7 +53969,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53750
53969
|
numericXY: nxs ? { xs: nxs, ys: nys, areaCloseY: bottomY } : void 0
|
|
53751
53970
|
};
|
|
53752
53971
|
}
|
|
53753
|
-
/** @param {{type: any, series: any, i: any, j: any, x: any, y: any, xArrj: any, yArrj: any, y2: any, y2Arrj: any, pX: any, pY: any, pathState: any, segmentStartX: any, linePath: any, areaPath: any, linePaths: any, areaPaths: any, curve: any, isRangeStart: any}} opts */
|
|
53972
|
+
/** @param {{type: any, series: any, i: any, j: any, x: any, y: any, midsAt: any[][], xArrj: any, yArrj: any, y2: any, y2Arrj: any, pX: any, pY: any, pathState: any, segmentStartX: any, linePath: any, areaPath: any, linePaths: any, areaPaths: any, curve: any, isRangeStart: any}} opts */
|
|
53754
53973
|
_createPaths({
|
|
53755
53974
|
type,
|
|
53756
53975
|
series,
|
|
@@ -53758,6 +53977,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53758
53977
|
j: j2,
|
|
53759
53978
|
x: x2,
|
|
53760
53979
|
y,
|
|
53980
|
+
midsAt,
|
|
53761
53981
|
xArrj,
|
|
53762
53982
|
yArrj,
|
|
53763
53983
|
y2,
|
|
@@ -53777,6 +53997,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53777
53997
|
const areaBottomY = this.areaBottomY;
|
|
53778
53998
|
const rangeArea = type === "rangeArea";
|
|
53779
53999
|
const isLowerRangeAreaPath = type === "rangeArea" && isRangeStart;
|
|
54000
|
+
const mids = midsAt[j2 + 1];
|
|
54001
|
+
const via = (f) => mids ? [...mids, [x2, y]].map(([bx, by], k2, a2) => f(...k2 ? a2[k2 - 1] : [pX, pY], bx, by)).join("") : f(pX, pY, x2, y);
|
|
53780
54002
|
switch (curve) {
|
|
53781
54003
|
case "monotoneCubic": {
|
|
53782
54004
|
const yAj = isRangeStart ? yArrj : y2Arrj;
|
|
@@ -53822,8 +54044,19 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53822
54044
|
}
|
|
53823
54045
|
// falls through
|
|
53824
54046
|
case 2: {
|
|
53825
|
-
|
|
53826
|
-
|
|
54047
|
+
let _xAj = isRangeStart ? xArrj : xArrj.slice().reverse();
|
|
54048
|
+
let _yAj = isRangeStart ? yAj : yAj.slice().reverse();
|
|
54049
|
+
if (midsAt.length && !rangeArea) {
|
|
54050
|
+
const P = [];
|
|
54051
|
+
_xAj.forEach((v, k2) => {
|
|
54052
|
+
if (_yAj[k2] !== null && _yAj[k2 - 1] != null && midsAt[k2]) {
|
|
54053
|
+
P.push(...midsAt[k2]);
|
|
54054
|
+
}
|
|
54055
|
+
P.push([v, _yAj[k2]]);
|
|
54056
|
+
});
|
|
54057
|
+
_xAj = P.map((p) => p[0]);
|
|
54058
|
+
_yAj = P.map((p) => p[1]);
|
|
54059
|
+
}
|
|
53827
54060
|
const smoothInputs = getSmoothInputs(_xAj, _yAj);
|
|
53828
54061
|
const points = smoothInputs.length > 1 ? spline.points(smoothInputs) : smoothInputs;
|
|
53829
54062
|
let smoothInputsLower = [];
|
|
@@ -53882,7 +54115,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53882
54115
|
break;
|
|
53883
54116
|
}
|
|
53884
54117
|
case "smooth": {
|
|
53885
|
-
const
|
|
54118
|
+
const toPoint = (ax, ay, bx, by) => {
|
|
54119
|
+
const l2 = (bx - ax) * 0.35;
|
|
54120
|
+
return graphics.curve(ax + l2, ay, bx - l2, by, bx, by);
|
|
54121
|
+
};
|
|
53886
54122
|
if (series[i2][j2] === null) {
|
|
53887
54123
|
pathState = 0;
|
|
53888
54124
|
} else {
|
|
@@ -53902,7 +54138,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53902
54138
|
}
|
|
53903
54139
|
pathState = 1;
|
|
53904
54140
|
if (j2 < series[i2].length - 2) {
|
|
53905
|
-
const p =
|
|
54141
|
+
const p = via(toPoint);
|
|
53906
54142
|
linePath += p;
|
|
53907
54143
|
areaPath += p;
|
|
53908
54144
|
break;
|
|
@@ -53920,7 +54156,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53920
54156
|
areaPaths.push(areaPath);
|
|
53921
54157
|
pathState = -1;
|
|
53922
54158
|
} else {
|
|
53923
|
-
const p =
|
|
54159
|
+
const p = via(toPoint);
|
|
53924
54160
|
linePath += p;
|
|
53925
54161
|
areaPath += p;
|
|
53926
54162
|
if (j2 >= series[i2].length - 2) {
|
|
@@ -53941,9 +54177,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53941
54177
|
break;
|
|
53942
54178
|
}
|
|
53943
54179
|
default: {
|
|
53944
|
-
const pathToPoint = (
|
|
54180
|
+
const pathToPoint = (_ax, _ay, x3, y3) => {
|
|
53945
54181
|
let path = "";
|
|
53946
|
-
switch (
|
|
54182
|
+
switch (curve) {
|
|
53947
54183
|
case "stepline":
|
|
53948
54184
|
path = graphics.line(x3, null, "H") + graphics.line(null, y3, "V");
|
|
53949
54185
|
break;
|
|
@@ -53975,7 +54211,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53975
54211
|
}
|
|
53976
54212
|
pathState = 1;
|
|
53977
54213
|
if (j2 < series[i2].length - 2) {
|
|
53978
|
-
const p = pathToPoint
|
|
54214
|
+
const p = via(pathToPoint);
|
|
53979
54215
|
linePath += p;
|
|
53980
54216
|
areaPath += p;
|
|
53981
54217
|
break;
|
|
@@ -53993,7 +54229,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
53993
54229
|
areaPaths.push(areaPath);
|
|
53994
54230
|
pathState = -1;
|
|
53995
54231
|
} else {
|
|
53996
|
-
const p = pathToPoint
|
|
54232
|
+
const p = via(pathToPoint);
|
|
53997
54233
|
linePath += p;
|
|
53998
54234
|
areaPath += p;
|
|
53999
54235
|
if (j2 >= series[i2].length - 2) {
|
|
@@ -55852,7 +56088,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
55852
56088
|
}
|
|
55853
56089
|
s2.forEach((dv, j2) => {
|
|
55854
56090
|
const range = Math.abs(this.maxValue - this.minValue);
|
|
55855
|
-
dv = dv - this.minValue;
|
|
56091
|
+
dv = Math.max(0, dv - this.minValue);
|
|
55856
56092
|
if (this.isLog) {
|
|
55857
56093
|
dv = this.coreUtils.getLogVal(this.logBase, dv, 0);
|
|
55858
56094
|
}
|
|
@@ -55889,7 +56125,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
55889
56125
|
shouldClipToGrid: false,
|
|
55890
56126
|
bindEventsOnPaths: false,
|
|
55891
56127
|
stroke: w.globals.stroke.colors[i2],
|
|
55892
|
-
|
|
56128
|
+
strokeLinecap: w.config.stroke.lineCap
|
|
55893
56129
|
};
|
|
55894
56130
|
let pathFrom = null;
|
|
55895
56131
|
if (w.globals.previousPaths.length > 0) {
|
|
@@ -56066,6 +56302,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
56066
56302
|
drawXAxisTexts() {
|
|
56067
56303
|
const w = this.w;
|
|
56068
56304
|
const xaxisLabelsConfig = w.config.xaxis.labels;
|
|
56305
|
+
const lc = xaxisLabelsConfig.style.colors;
|
|
56069
56306
|
const elXAxisWrap = this.graphics.group({
|
|
56070
56307
|
class: "apexcharts-xaxis"
|
|
56071
56308
|
});
|
|
@@ -56089,7 +56326,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
56089
56326
|
j: i2,
|
|
56090
56327
|
parent: elXAxisWrap,
|
|
56091
56328
|
className: "apexcharts-xaxis-label",
|
|
56092
|
-
color: Array.isArray(
|
|
56329
|
+
color: (Array.isArray(lc) ? lc[i2] : lc) || "#a8a8a8",
|
|
56093
56330
|
dataLabelsConfig: __spreadValues({
|
|
56094
56331
|
textAnchor: textPos.textAnchor,
|
|
56095
56332
|
dropShadow: { enabled: false }
|
|
@@ -57074,14 +57311,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57074
57311
|
* @param {number} seriesIndex
|
|
57075
57312
|
*/
|
|
57076
57313
|
draw(series, seriesIndex) {
|
|
57077
|
-
var _a, _b, _c, _d, _e, _f
|
|
57314
|
+
var _a, _b, _c, _d, _e, _f;
|
|
57078
57315
|
const w = this.w;
|
|
57079
57316
|
const graphics = new Graphics(this.w);
|
|
57080
57317
|
this.rangeBarOptions = this.w.config.plotOptions.rangeBar;
|
|
57081
57318
|
this.series = series;
|
|
57082
57319
|
this.seriesRangeStart = w.rangeData.seriesRangeStart;
|
|
57083
57320
|
this.seriesRangeEnd = w.rangeData.seriesRangeEnd;
|
|
57084
|
-
this.barHelpers.initVariables(series);
|
|
57321
|
+
this.barHelpers.initVariables(series, seriesIndex);
|
|
57085
57322
|
const ret = graphics.group({
|
|
57086
57323
|
class: "apexcharts-rangebar-series apexcharts-plot-series"
|
|
57087
57324
|
});
|
|
@@ -57103,6 +57340,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57103
57340
|
this.visibleI = this.visibleI + 1;
|
|
57104
57341
|
}
|
|
57105
57342
|
const translationsIndex = this.setSeriesAxis(realIndex);
|
|
57343
|
+
if (this.isHorizontal && w.labelData.timescaleLabels.length) {
|
|
57344
|
+
this.isReversed = false;
|
|
57345
|
+
}
|
|
57106
57346
|
const initPositions = this.barHelpers.initialPositions(realIndex);
|
|
57107
57347
|
const {
|
|
57108
57348
|
y: initY,
|
|
@@ -57112,10 +57352,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57112
57352
|
zeroH
|
|
57113
57353
|
// zeroH is the baseline where 0 meets y axis
|
|
57114
57354
|
} = initPositions;
|
|
57115
|
-
|
|
57116
|
-
|
|
57117
|
-
const yDivision = (_c = initPositions.yDivision) != null ? _c : 0;
|
|
57118
|
-
const xDivision = (_d = initPositions.xDivision) != null ? _d : 0;
|
|
57355
|
+
const yDivision = (_a = initPositions.yDivision) != null ? _a : 0;
|
|
57356
|
+
const xDivision = (_b = initPositions.xDivision) != null ? _b : 0;
|
|
57119
57357
|
y = initY;
|
|
57120
57358
|
x2 = initX;
|
|
57121
57359
|
const elDataLabelsWrap = graphics.group({
|
|
@@ -57125,10 +57363,16 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57125
57363
|
const elGoalsMarkers = graphics.group({
|
|
57126
57364
|
class: "apexcharts-rangebar-goals-markers"
|
|
57127
57365
|
});
|
|
57366
|
+
const data = (
|
|
57367
|
+
/** @type {any} */
|
|
57368
|
+
w.config.series[realIndex].data
|
|
57369
|
+
);
|
|
57128
57370
|
for (let j2 = 0; j2 < w.globals.dataPoints; j2++) {
|
|
57129
57371
|
const strokeWidth = this.barHelpers.getStrokeWidth(i2, j2, realIndex);
|
|
57130
|
-
|
|
57131
|
-
|
|
57372
|
+
let barWidth = (_c = initPositions.barWidth) != null ? _c : 0;
|
|
57373
|
+
let barHeight = (_d = initPositions.barHeight) != null ? _d : 0;
|
|
57374
|
+
const y1 = this.seriesRangeStart[realIndex][j2];
|
|
57375
|
+
const y2 = this.seriesRangeEnd[realIndex][j2];
|
|
57132
57376
|
let paths = (
|
|
57133
57377
|
/** @type {any} */
|
|
57134
57378
|
null
|
|
@@ -57140,20 +57384,16 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57140
57384
|
if (w.config.plotOptions.bar.rangeBarGroupRows) {
|
|
57141
57385
|
seriesLen = 1;
|
|
57142
57386
|
}
|
|
57143
|
-
if (typeof
|
|
57144
|
-
((_e = w.config.series[i2].data) == null ? void 0 : _e[j2]) === "undefined") {
|
|
57387
|
+
if (typeof (data == null ? void 0 : data[j2]) === "undefined") {
|
|
57145
57388
|
break;
|
|
57146
57389
|
}
|
|
57147
57390
|
if (this.isHorizontal) {
|
|
57148
57391
|
barYPosition = y + barHeight * /** @type {any} */
|
|
57149
57392
|
this.visibleI;
|
|
57150
57393
|
const srty = (yDivision - barHeight * seriesLen) / 2;
|
|
57151
|
-
if (
|
|
57152
|
-
/** @type {Record<string,any>} */
|
|
57153
|
-
(_g = (_f = w.config.series[i2].data) == null ? void 0 : _f[j2]) == null ? void 0 : _g.x
|
|
57154
|
-
) {
|
|
57394
|
+
if (((_e = data[j2]) == null ? void 0 : _e.x) != null) {
|
|
57155
57395
|
const positions = this.detectOverlappingBars({
|
|
57156
|
-
i:
|
|
57396
|
+
i: realIndex,
|
|
57157
57397
|
j: j2,
|
|
57158
57398
|
barYPosition,
|
|
57159
57399
|
srty,
|
|
@@ -57176,17 +57416,14 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57176
57416
|
barWidth = paths.barWidth;
|
|
57177
57417
|
} else {
|
|
57178
57418
|
if (w.axisFlags.isXNumeric) {
|
|
57179
|
-
x2 = (w.seriesData.seriesX[
|
|
57419
|
+
x2 = (w.seriesData.seriesX[realIndex][j2] - w.globals.minX) / this.xRatio - barWidth / 2;
|
|
57180
57420
|
}
|
|
57181
57421
|
barXPosition = x2 + barWidth * /** @type {any} */
|
|
57182
57422
|
this.visibleI;
|
|
57183
57423
|
const srtx = (xDivision - barWidth * seriesLen) / 2;
|
|
57184
|
-
if (
|
|
57185
|
-
/** @type {Record<string,any>} */
|
|
57186
|
-
(_i = (_h = w.config.series[i2].data) == null ? void 0 : _h[j2]) == null ? void 0 : _i.x
|
|
57187
|
-
) {
|
|
57424
|
+
if (((_f = data[j2]) == null ? void 0 : _f.x) != null) {
|
|
57188
57425
|
const positions = this.detectOverlappingBars({
|
|
57189
|
-
i:
|
|
57426
|
+
i: realIndex,
|
|
57190
57427
|
j: j2,
|
|
57191
57428
|
barXPosition,
|
|
57192
57429
|
srtx,
|
|
@@ -57205,9 +57442,10 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57205
57442
|
xDivision
|
|
57206
57443
|
}, params));
|
|
57207
57444
|
barHeight = paths.barHeight;
|
|
57445
|
+
barXPosition = paths.barXPosition;
|
|
57208
57446
|
}
|
|
57209
57447
|
const barGoalLine = this.barHelpers.drawGoalLine({
|
|
57210
|
-
barXPosition
|
|
57448
|
+
barXPosition,
|
|
57211
57449
|
barYPosition,
|
|
57212
57450
|
goalX: paths.goalX,
|
|
57213
57451
|
goalY: paths.goalY,
|
|
@@ -57252,19 +57490,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57252
57490
|
});
|
|
57253
57491
|
}
|
|
57254
57492
|
if (w.globals.previousPaths.length > 0) {
|
|
57255
|
-
const data = (
|
|
57256
|
-
/** @type {Record<string,any>} */
|
|
57257
|
-
w.config.series[i2].data || []
|
|
57258
|
-
);
|
|
57259
|
-
const newKeys = [];
|
|
57260
|
-
for (let j2 = 0; j2 < data.length; j2++) {
|
|
57261
|
-
newKeys.push(datumKey(w, realIndex, j2));
|
|
57262
|
-
}
|
|
57263
57493
|
renderBarExitGhosts({
|
|
57264
57494
|
w,
|
|
57265
57495
|
elSeries,
|
|
57266
57496
|
record: this._prevRecord(realIndex),
|
|
57267
|
-
newKeys,
|
|
57497
|
+
newKeys: this._keys(realIndex),
|
|
57268
57498
|
isHorizontal: this.isHorizontal,
|
|
57269
57499
|
speed: w.config.chart.animations.dynamicAnimation.speed
|
|
57270
57500
|
});
|
|
@@ -57316,11 +57546,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57316
57546
|
);
|
|
57317
57547
|
if (overlaps.indexOf(rangeName) > -1) {
|
|
57318
57548
|
barHeight = initPositions.barHeight / overlaps.length;
|
|
57319
|
-
barYPosition
|
|
57549
|
+
barYPosition += barHeight * overlaps.indexOf(rangeName);
|
|
57320
57550
|
}
|
|
57321
57551
|
}
|
|
57322
57552
|
} else {
|
|
57323
|
-
if (rowIndex > -1 && !w.
|
|
57553
|
+
if (rowIndex > -1 && !w.axisFlags.isXNumeric) {
|
|
57324
57554
|
if (w.config.plotOptions.bar.rangeBarGroupRows) {
|
|
57325
57555
|
barXPosition = srtx + xDivision * rowIndex;
|
|
57326
57556
|
} else {
|
|
@@ -57334,7 +57564,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57334
57564
|
);
|
|
57335
57565
|
if (overlaps.indexOf(rangeName) > -1) {
|
|
57336
57566
|
barWidth = initPositions.barWidth / overlaps.length;
|
|
57337
|
-
barXPosition
|
|
57567
|
+
barXPosition += barWidth * overlaps.indexOf(rangeName);
|
|
57338
57568
|
}
|
|
57339
57569
|
}
|
|
57340
57570
|
}
|
|
@@ -57357,7 +57587,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57357
57587
|
var _a, _b;
|
|
57358
57588
|
const w = this.w;
|
|
57359
57589
|
const { i: i2, j: j2, realIndex, translationsIndex } = indexes;
|
|
57360
|
-
const yRatio = this.yRatio[translationsIndex];
|
|
57590
|
+
const yRatio = this.yRatio[translationsIndex] * (this.isReversed ? -1 : 1);
|
|
57361
57591
|
const range = this.getRangeValue(realIndex, j2);
|
|
57362
57592
|
let y1 = Math.min(range.start, range.end);
|
|
57363
57593
|
let y2 = Math.max(range.start, range.end);
|
|
@@ -57365,7 +57595,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57365
57595
|
((_a = this.series[i2]) == null ? void 0 : _a[j2]) === "undefined" || /** @type {any} */
|
|
57366
57596
|
((_b = this.series[i2]) == null ? void 0 : _b[j2]) === null);
|
|
57367
57597
|
if (!hasValue) {
|
|
57368
|
-
y1 = zeroH;
|
|
57598
|
+
y1 = y2 = zeroH;
|
|
57369
57599
|
} else {
|
|
57370
57600
|
y1 = zeroH - y1 / yRatio;
|
|
57371
57601
|
y2 = zeroH - y2 / yRatio;
|
|
@@ -57426,6 +57656,30 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57426
57656
|
barXPosition
|
|
57427
57657
|
};
|
|
57428
57658
|
}
|
|
57659
|
+
/**
|
|
57660
|
+
* Timeline datums key by their own row, not by the j-th label: a row can
|
|
57661
|
+
* hold several bars, so labels[j] names some other datum's row.
|
|
57662
|
+
* @param {number} realIndex
|
|
57663
|
+
* @returns {string[]}
|
|
57664
|
+
*/
|
|
57665
|
+
_keys(realIndex) {
|
|
57666
|
+
const c = (
|
|
57667
|
+
/** @type {any} */
|
|
57668
|
+
this._keyCache || (this._keyCache = {})
|
|
57669
|
+
);
|
|
57670
|
+
const data = (
|
|
57671
|
+
/** @type {any} */
|
|
57672
|
+
this.w.config.series[realIndex].data
|
|
57673
|
+
);
|
|
57674
|
+
return c[realIndex] || (c[realIndex] = uniquifyKeys(
|
|
57675
|
+
(data || []).map(
|
|
57676
|
+
(d, j2) => {
|
|
57677
|
+
var _a;
|
|
57678
|
+
return "c:" + ((_a = d == null ? void 0 : d.x) != null ? _a : j2);
|
|
57679
|
+
}
|
|
57680
|
+
)
|
|
57681
|
+
));
|
|
57682
|
+
}
|
|
57429
57683
|
/**
|
|
57430
57684
|
* @param {number} val
|
|
57431
57685
|
*/
|
|
@@ -57452,8 +57706,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57452
57706
|
}) {
|
|
57453
57707
|
const w = this.w;
|
|
57454
57708
|
const { realIndex, j: j2 } = indexes;
|
|
57455
|
-
const
|
|
57456
|
-
const
|
|
57709
|
+
const ratio = this.invertedYRatio * (this.isReversed ? -1 : 1);
|
|
57710
|
+
const x1 = this.preventBarOverflow(zeroW + y1 / ratio);
|
|
57711
|
+
const x2 = this.preventBarOverflow(zeroW + y2 / ratio);
|
|
57457
57712
|
const range = this.getRangeValue(realIndex, j2);
|
|
57458
57713
|
const barWidth = Math.abs(x2 - x1);
|
|
57459
57714
|
const paths = this.barHelpers.getBarpaths({
|
|
@@ -57786,7 +58041,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57786
58041
|
if (w.config.chart.dropShadow.enabled) {
|
|
57787
58042
|
const shadow = w.config.chart.dropShadow;
|
|
57788
58043
|
const filters = new Filters(this.w);
|
|
57789
|
-
filters.dropShadow(
|
|
58044
|
+
filters.dropShadow(elSeries, shadow, i2);
|
|
57790
58045
|
}
|
|
57791
58046
|
const elDataLabelWrap = graphics.group({
|
|
57792
58047
|
class: "apexcharts-data-labels"
|
|
@@ -57880,6 +58135,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57880
58135
|
});
|
|
57881
58136
|
elRect.node.classList.add("apexcharts-treemap-rect");
|
|
57882
58137
|
elRect.node.setAttribute("data:key", morphKey(leaf._key));
|
|
58138
|
+
let tileTween = null;
|
|
57883
58139
|
let fromRect = {
|
|
57884
58140
|
x: x1 + (x2 - x1) / 2,
|
|
57885
58141
|
y: y1 + (y2 - y1) / 2,
|
|
@@ -57905,7 +58161,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57905
58161
|
if (w.globals.resized) {
|
|
57906
58162
|
w.globals.animationEnded = true;
|
|
57907
58163
|
} else {
|
|
57908
|
-
this.animateTreemap(
|
|
58164
|
+
tileTween = this.animateTreemap(
|
|
57909
58165
|
elRect,
|
|
57910
58166
|
fromRect,
|
|
57911
58167
|
toRect,
|
|
@@ -57916,7 +58172,6 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57916
58172
|
);
|
|
57917
58173
|
}
|
|
57918
58174
|
}
|
|
57919
|
-
let tileTween = null;
|
|
57920
58175
|
let labelFrom = null;
|
|
57921
58176
|
let prevLook = null;
|
|
57922
58177
|
if (w.globals.dataChanged) {
|
|
@@ -58298,7 +58553,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58298
58553
|
const elGroup = graphics.group({
|
|
58299
58554
|
class: "apexcharts-treemap-parent",
|
|
58300
58555
|
"data:depth": depth,
|
|
58301
|
-
"data:name":
|
|
58556
|
+
"data:name": node.name
|
|
58302
58557
|
});
|
|
58303
58558
|
const key = morphKey(node._key);
|
|
58304
58559
|
const morphFrom = this._morphKeyed() ? this.ctx.morphTypeChange.getInitialPathForKey(key) : null;
|
|
@@ -58407,7 +58662,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58407
58662
|
if (typeof header.formatter === "function") {
|
|
58408
58663
|
text = String(
|
|
58409
58664
|
header.formatter(node.name, {
|
|
58410
|
-
value: node.
|
|
58665
|
+
value: node._area,
|
|
58411
58666
|
depth,
|
|
58412
58667
|
seriesIndex: i2,
|
|
58413
58668
|
node,
|
|
@@ -58415,7 +58670,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58415
58670
|
})
|
|
58416
58671
|
);
|
|
58417
58672
|
} else if (header.showValue) {
|
|
58418
|
-
text = `${text} ${this._formatValue(node.
|
|
58673
|
+
text = `${text} ${this._formatValue(node._area, node._si)}`;
|
|
58419
58674
|
}
|
|
58420
58675
|
headerText = text;
|
|
58421
58676
|
const offsetX = Number(header.offsetX) || 0;
|
|
@@ -58426,7 +58681,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58426
58681
|
const clipped = graphics.getTextBasedOnMaxWidth({
|
|
58427
58682
|
text,
|
|
58428
58683
|
maxWidth,
|
|
58429
|
-
fontSize
|
|
58684
|
+
fontSize,
|
|
58685
|
+
fontFamily: chrome.headerFontFamily,
|
|
58686
|
+
fontWeight: chrome.headerFontWeight
|
|
58430
58687
|
});
|
|
58431
58688
|
if (clipped) {
|
|
58432
58689
|
let tx = x1 + pad + offsetX;
|
|
@@ -58501,7 +58758,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58501
58758
|
const total = this._drawnTotal();
|
|
58502
58759
|
const pct = total > 0 ? (node._area / total * 100).toFixed(1) : "0";
|
|
58503
58760
|
const n2 = this._countLeaves(node);
|
|
58504
|
-
const lead = visibleText && String(visibleText).trim() ? String(visibleText).replace(/\s+/g, " ").trim() : `${node.name}, ${this._formatValue(node._area)}`;
|
|
58761
|
+
const lead = visibleText && String(visibleText).trim() ? String(visibleText).replace(/\s+/g, " ").trim() : `${node.name}, ${this._formatValue(node._area, node._si)}`;
|
|
58505
58762
|
return `${lead}, ${n2} ${n2 === 1 ? "item" : "items"}, ${pct}% of total`;
|
|
58506
58763
|
}
|
|
58507
58764
|
/**
|
|
@@ -58520,15 +58777,18 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58520
58777
|
* @param {string} [visibleText] the header's rendered text, unclipped
|
|
58521
58778
|
*/
|
|
58522
58779
|
_makeParentAccessible(el, node, chrome, elRect, visibleText) {
|
|
58780
|
+
const a11y = this.w.config.chart.accessibility;
|
|
58523
58781
|
if (!el || !el.setAttribute) return;
|
|
58524
|
-
if (!this._zoomEnabled()) return;
|
|
58782
|
+
if (!a11y.enabled || !a11y.keyboard.enabled || !this._zoomEnabled()) return;
|
|
58783
|
+
const open = this.w.globals.treemapFocusKey === node._key;
|
|
58784
|
+
el.tmKey = node._key;
|
|
58525
58785
|
el.setAttribute("role", "button");
|
|
58526
58786
|
el.setAttribute("tabindex", "0");
|
|
58527
58787
|
el.setAttribute(
|
|
58528
58788
|
"aria-label",
|
|
58529
|
-
`${this._parentLabel(node, visibleText)}. Zoom in`
|
|
58789
|
+
`${this._parentLabel(node, visibleText)}. Zoom ${open ? "out" : "in"}`
|
|
58530
58790
|
);
|
|
58531
|
-
el.setAttribute("aria-expanded",
|
|
58791
|
+
el.setAttribute("aria-expanded", open);
|
|
58532
58792
|
if (!Environment.isBrowser() || !el.addEventListener) return;
|
|
58533
58793
|
el.addEventListener("focus", () => {
|
|
58534
58794
|
elRect.node.setAttribute("stroke", chrome.hoverColor);
|
|
@@ -58595,15 +58855,17 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58595
58855
|
* @returns {boolean}
|
|
58596
58856
|
*/
|
|
58597
58857
|
_zoomEnabled() {
|
|
58858
|
+
var _a;
|
|
58598
58859
|
const w = this.w;
|
|
58599
58860
|
const z = w.config.plotOptions.treemap.zoom;
|
|
58600
58861
|
if (!z || !z.enabled || !this.showParents) return false;
|
|
58601
58862
|
const dd = w.config.drilldown;
|
|
58602
|
-
|
|
58603
|
-
|
|
58604
|
-
|
|
58863
|
+
const d = this.ctx.drilldown;
|
|
58864
|
+
if (d && dd && dd.enabled && (((_a = dd.series) == null ? void 0 : _a.length) || dd.onDrillDown)) {
|
|
58865
|
+
if (!d.zoomWarned) {
|
|
58866
|
+
d.zoomWarned = true;
|
|
58605
58867
|
console.warn(
|
|
58606
|
-
"ApexCharts treemap:
|
|
58868
|
+
"ApexCharts treemap: zoom is ignored while drilldown is active (plotOptions.treemap.zoom vs drilldown series or onDrillDown)."
|
|
58607
58869
|
);
|
|
58608
58870
|
}
|
|
58609
58871
|
return false;
|
|
@@ -58613,8 +58875,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58613
58875
|
/**
|
|
58614
58876
|
* The focused branch for this render, looked up by the key stashed on the
|
|
58615
58877
|
* last click. Keys are rebuilt identically from the same data, so the focus
|
|
58616
|
-
* survives a re-render; a key that no longer resolves
|
|
58617
|
-
* it)
|
|
58878
|
+
* survives a re-render; a key that no longer resolves, or a branch left with
|
|
58879
|
+
* nothing to draw (the data changed under it), falls back to the whole tree.
|
|
58618
58880
|
* @param {any[]} drawn
|
|
58619
58881
|
* @returns {any}
|
|
58620
58882
|
*/
|
|
@@ -58631,7 +58893,11 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58631
58893
|
if (node.children) node.children.forEach(walk);
|
|
58632
58894
|
};
|
|
58633
58895
|
drawn.forEach(walk);
|
|
58634
|
-
|
|
58896
|
+
if (found && found.children && found.children.length && this._subtreeArea(found) > 0) {
|
|
58897
|
+
return found;
|
|
58898
|
+
}
|
|
58899
|
+
this.w.globals.treemapFocusKey = null;
|
|
58900
|
+
return null;
|
|
58635
58901
|
}
|
|
58636
58902
|
/**
|
|
58637
58903
|
* @param {any} node
|
|
@@ -58644,28 +58910,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58644
58910
|
const w = this.w;
|
|
58645
58911
|
if (!node || !node.children || !node.children.length) return;
|
|
58646
58912
|
const next = w.globals.treemapFocusKey === node._key ? null : node._key;
|
|
58647
|
-
|
|
58648
|
-
if (!restoreFocus || !done || typeof done.then !== "function") return;
|
|
58649
|
-
done.then(() => {
|
|
58650
|
-
if (!Environment.isBrowser()) return;
|
|
58651
|
-
const crumb = (
|
|
58652
|
-
/** @type {any} */
|
|
58653
|
-
w.dom.baseEl.querySelector(
|
|
58654
|
-
".apexcharts-breadcrumb .apexcharts-breadcrumb-item"
|
|
58655
|
-
)
|
|
58656
|
-
);
|
|
58657
|
-
if (crumb && crumb.focus) {
|
|
58658
|
-
crumb.focus();
|
|
58659
|
-
return;
|
|
58660
|
-
}
|
|
58661
|
-
const header = (
|
|
58662
|
-
/** @type {any} */
|
|
58663
|
-
w.dom.baseEl.querySelector(
|
|
58664
|
-
".apexcharts-treemap-parent-header[tabindex]"
|
|
58665
|
-
)
|
|
58666
|
-
);
|
|
58667
|
-
if (header && header.focus) header.focus();
|
|
58668
|
-
});
|
|
58913
|
+
this._refocus(next, restoreFocus);
|
|
58669
58914
|
}
|
|
58670
58915
|
/**
|
|
58671
58916
|
* Re-render focused on another branch (null: the whole tree).
|
|
@@ -58676,22 +58921,34 @@ var __async = (__this, __arguments, generator) => {
|
|
|
58676
58921
|
* left, which replayed the mount animation (every tile growing from
|
|
58677
58922
|
* nothing) or snapped, while the containers, headers and labels jumped.
|
|
58678
58923
|
* @param {string | null} next
|
|
58679
|
-
* @
|
|
58924
|
+
* @param {boolean} [restoreFocus] see _zoomTo
|
|
58680
58925
|
*/
|
|
58681
|
-
_refocus(next) {
|
|
58682
|
-
var _a;
|
|
58926
|
+
_refocus(next, restoreFocus) {
|
|
58683
58927
|
const w = this.w;
|
|
58684
58928
|
const gl = w.globals;
|
|
58929
|
+
const from = gl.treemapFocusKey;
|
|
58685
58930
|
const anim = w.config.chart.animations;
|
|
58686
58931
|
const animate = !!(anim.enabled && anim.dynamicAnimation.enabled);
|
|
58687
|
-
gl.treemapZoom = animate && Environment.isBrowser() ? { from:
|
|
58932
|
+
gl.treemapZoom = animate && Environment.isBrowser() ? { from: from != null ? from : null, to: next } : null;
|
|
58688
58933
|
gl.treemapFocusKey = next;
|
|
58689
58934
|
this._hideParentTooltip();
|
|
58690
58935
|
gl.shouldAnimate = animate;
|
|
58691
58936
|
gl.resized = true;
|
|
58692
58937
|
gl.dataChanged = true;
|
|
58693
58938
|
if (gl.treemapZoom) this.ctx.series.getPreviousPaths();
|
|
58694
|
-
|
|
58939
|
+
const done = this.ctx.update();
|
|
58940
|
+
if (restoreFocus) {
|
|
58941
|
+
done.then(() => {
|
|
58942
|
+
const b = w.dom.baseEl;
|
|
58943
|
+
const heads = (
|
|
58944
|
+
/** @type {any[]} */
|
|
58945
|
+
Array.from(
|
|
58946
|
+
b.querySelectorAll(".apexcharts-treemap-parent-header[tabindex]")
|
|
58947
|
+
)
|
|
58948
|
+
);
|
|
58949
|
+
(b.querySelector(".apexcharts-breadcrumb-item") || heads.find((h) => h.tmKey === from) || heads[0] || b).focus();
|
|
58950
|
+
});
|
|
58951
|
+
}
|
|
58695
58952
|
}
|
|
58696
58953
|
/**
|
|
58697
58954
|
* A zoom reframes one tree, so it moves like a camera: one map takes the
|
|
@@ -59003,8 +59260,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
59003
59260
|
crumbs: [{ label: "All", data: null }].concat(
|
|
59004
59261
|
chain.map((n2) => ({ label: n2.name, data: n2 }))
|
|
59005
59262
|
),
|
|
59006
|
-
|
|
59007
|
-
|
|
59263
|
+
// A keyboard click (detail 0) keeps focus in the chart.
|
|
59264
|
+
onNavigate: (_i, crumb, e2) => {
|
|
59265
|
+
this._refocus(crumb.data ? crumb.data._key : null, !e2.detail);
|
|
59008
59266
|
}
|
|
59009
59267
|
});
|
|
59010
59268
|
if (!nav) return;
|
|
@@ -59053,7 +59311,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
59053
59311
|
const t2 = this._tip();
|
|
59054
59312
|
if (!t2) return;
|
|
59055
59313
|
const total = this._drawnTotal();
|
|
59056
|
-
const parentVal = node._parent ? node._parent
|
|
59314
|
+
const parentVal = node._parent ? this._subtreeArea(node._parent) : total;
|
|
59057
59315
|
const pctTotal = total > 0 ? (node._area / total * 100).toFixed(1) : "0.0";
|
|
59058
59316
|
const pctParent = parentVal > 0 ? (node._area / parentVal * 100).toFixed(1) : pctTotal;
|
|
59059
59317
|
const cfg = this.w.config.plotOptions.treemap.parents;
|
|
@@ -59074,10 +59332,9 @@ var __async = (__this, __arguments, generator) => {
|
|
|
59074
59332
|
} else {
|
|
59075
59333
|
const marker = this._parentChrome(node.depth || 0).headerBg;
|
|
59076
59334
|
const groupBg = w.config.tooltip.fillSeriesColor ? `background-color:${marker};` : "";
|
|
59077
|
-
html = `<div class="apexcharts-tooltip-series-group apexcharts-active" style="display:flex;${groupBg}"><div class="apexcharts-tooltip-text"><div class="apexcharts-tooltip-y-group"><span class="apexcharts-tooltip-text-y-label">${
|
|
59078
|
-
node.
|
|
59079
|
-
|
|
59080
|
-
node._area
|
|
59335
|
+
html = `<div class="apexcharts-tooltip-series-group apexcharts-active" style="display:flex;${groupBg}"><div class="apexcharts-tooltip-text"><div class="apexcharts-tooltip-y-group"><span class="apexcharts-tooltip-text-y-label">${String(node.name).replace(/&/g, "&").replace(/</g, "<")}: </span><span class="apexcharts-tooltip-text-y-value">${this._formatValue(
|
|
59336
|
+
node._area,
|
|
59337
|
+
node._si
|
|
59081
59338
|
)}</span></div><div class="apexcharts-tooltip-y-group"><span class="apexcharts-tooltip-text-y-label">${leafCount} items, </span><span class="apexcharts-tooltip-text-y-value">${pctParent}% of parent, ${pctTotal}% of total</span></div></div></div>`;
|
|
59082
59339
|
}
|
|
59083
59340
|
t2.innerHTML = html;
|
|
@@ -59173,17 +59430,21 @@ var __async = (__this, __arguments, generator) => {
|
|
|
59173
59430
|
}
|
|
59174
59431
|
/**
|
|
59175
59432
|
* Format an aggregate the way the chart formats its own y values, so a
|
|
59176
|
-
* parent's total reads like the tiles it contains.
|
|
59433
|
+
* parent's total reads like the tiles it contains. A branch is no data
|
|
59434
|
+
* point, so dataPointIndex is -1.
|
|
59177
59435
|
* @param {number} v
|
|
59436
|
+
* @param {number} [si] the branch's series index
|
|
59178
59437
|
* @returns {string}
|
|
59179
59438
|
*/
|
|
59180
|
-
_formatValue(v) {
|
|
59439
|
+
_formatValue(v, si) {
|
|
59181
59440
|
var _a, _b, _c, _d, _e;
|
|
59182
59441
|
const w = this.w;
|
|
59183
59442
|
const fmt = ((_b = (_a = w.config.tooltip) == null ? void 0 : _a.y) == null ? void 0 : _b.formatter) || ((_e = (_d = (_c = w.config.yaxis) == null ? void 0 : _c[0]) == null ? void 0 : _d.labels) == null ? void 0 : _e.formatter);
|
|
59184
59443
|
if (typeof fmt === "function") {
|
|
59185
59444
|
try {
|
|
59186
|
-
return String(
|
|
59445
|
+
return String(
|
|
59446
|
+
fmt(v, { seriesIndex: si || 0, dataPointIndex: -1, w })
|
|
59447
|
+
);
|
|
59187
59448
|
} catch (_) {
|
|
59188
59449
|
}
|
|
59189
59450
|
}
|
|
@@ -59264,7 +59525,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
59264
59525
|
*/
|
|
59265
59526
|
rotateToFitLabel(elText, fontSize, text, x1, y1, x2, y2) {
|
|
59266
59527
|
const graphics = new Graphics(this.w);
|
|
59267
|
-
const textRect =
|
|
59528
|
+
const textRect = this._labelRect(graphics, text, fontSize);
|
|
59268
59529
|
if (textRect.width + this.w.config.stroke.width + 5 > x2 - x1 && textRect.width <= y2 - y1) {
|
|
59269
59530
|
const labelRotatingCenter = graphics.rotateAroundCenter(elText.node);
|
|
59270
59531
|
elText.node.setAttribute(
|
|
@@ -59273,6 +59534,24 @@ var __async = (__this, __arguments, generator) => {
|
|
|
59273
59534
|
);
|
|
59274
59535
|
}
|
|
59275
59536
|
}
|
|
59537
|
+
/**
|
|
59538
|
+
* A tile label's box, measured at the family and weight it is drawn at
|
|
59539
|
+
* (bold is wider than the default regular).
|
|
59540
|
+
* @param {Graphics} graphics
|
|
59541
|
+
* @param {string} text
|
|
59542
|
+
* @param {string | number} fontSize
|
|
59543
|
+
*/
|
|
59544
|
+
_labelRect(graphics, text, fontSize) {
|
|
59545
|
+
const st = this.w.config.dataLabels.style;
|
|
59546
|
+
return graphics.getTextRects(
|
|
59547
|
+
text,
|
|
59548
|
+
String(fontSize),
|
|
59549
|
+
st.fontFamily,
|
|
59550
|
+
"",
|
|
59551
|
+
true,
|
|
59552
|
+
st.fontWeight
|
|
59553
|
+
);
|
|
59554
|
+
}
|
|
59276
59555
|
// This is an alternative label formatting method that uses a
|
|
59277
59556
|
// consistent font size, and trims the edge of long labels
|
|
59278
59557
|
/**
|
|
@@ -59285,13 +59564,13 @@ var __async = (__this, __arguments, generator) => {
|
|
|
59285
59564
|
*/
|
|
59286
59565
|
truncateLabels(text, fontSize, x1, y1, x2, y2) {
|
|
59287
59566
|
const graphics = new Graphics(this.w);
|
|
59288
|
-
const textRect =
|
|
59567
|
+
const textRect = this._labelRect(graphics, text, fontSize);
|
|
59289
59568
|
const labelMaxWidth = textRect.width + this.w.config.stroke.width + 5 > x2 - x1 && y2 - y1 > x2 - x1 ? y2 - y1 : x2 - x1;
|
|
59290
|
-
const truncatedText = graphics.getTextBasedOnMaxWidth({
|
|
59569
|
+
const truncatedText = graphics.getTextBasedOnMaxWidth(__spreadProps(__spreadValues({}, this.w.config.dataLabels.style), {
|
|
59291
59570
|
text,
|
|
59292
59571
|
maxWidth: labelMaxWidth,
|
|
59293
59572
|
fontSize
|
|
59294
|
-
});
|
|
59573
|
+
}));
|
|
59295
59574
|
if (text.length !== truncatedText.length && labelMaxWidth / fontSize < 5) {
|
|
59296
59575
|
return "";
|
|
59297
59576
|
} else {
|