velo-plot 3.0.0 → 4.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -15
- package/dist/ChartCore-KYG2HTcK.js +7474 -0
- package/dist/ChartCore-KYG2HTcK.js.map +1 -0
- package/dist/GpuChartRenderer-Dxc0hrQA.js +75 -0
- package/dist/GpuChartRenderer-Dxc0hrQA.js.map +1 -0
- package/dist/{index.core-BmZe2jRQ.js → PluginRegistry-CDf_jcnp.js} +19 -33
- package/dist/PluginRegistry-CDf_jcnp.js.map +1 -0
- package/dist/SVGDocumentBuilder-C-uLkcFW.js +83 -0
- package/dist/SVGDocumentBuilder-C-uLkcFW.js.map +1 -0
- package/dist/angular-hooks.js +1 -1
- package/dist/angular.js +8 -8
- package/dist/{axisFormat-CzumxpCL.js → axisFormat-Sz4WIJfQ.js} +2 -2
- package/dist/{axisFormat-CzumxpCL.js.map → axisFormat-Sz4WIJfQ.js.map} +1 -1
- package/dist/{chartSyncBridge-DbWrwtyP.js → chartSyncBridge-C1uRy0ZS.js} +12 -11
- package/dist/{chartSyncBridge-DbWrwtyP.js.map → chartSyncBridge-C1uRy0ZS.js.map} +1 -1
- package/dist/core/ChartStatistics.d.ts +1 -1
- package/dist/core/chart/ChartCore.d.ts +19 -20
- package/dist/core/chart/ChartFeatureHooks.d.ts +7 -0
- package/dist/core/chart/ChartRenderLoop.d.ts +5 -0
- package/dist/core/chart/ChartRenderer.d.ts +9 -0
- package/dist/core/chart/ChartSetup.d.ts +1 -0
- package/dist/core/chart/chartExportPatch.d.ts +2 -0
- package/dist/core/chart/exporter/SVGExporter.d.ts +9 -7
- package/dist/core/chart/exporter/svg/SVGDocumentBuilder.d.ts +27 -0
- package/dist/core/chart/exporter/svg/SVGExportContext.d.ts +147 -0
- package/dist/core/chart/exporter/svg/SVGOrchestrator.d.ts +3 -0
- package/dist/core/chart/exporter/svg/SVGThemeAdapter.d.ts +22 -0
- package/dist/core/chart/exporter/svg/__tests__/testFixtures.d.ts +46 -0
- package/dist/core/chart/exporter/svg/__tests__/visualTestUtils.d.ts +12 -0
- package/dist/core/chart/exporter/svg/overlay/axes.d.ts +4 -0
- package/dist/core/chart/exporter/svg/overlay/border.d.ts +4 -0
- package/dist/core/chart/exporter/svg/overlay/errorBars.d.ts +7 -0
- package/dist/core/chart/exporter/svg/overlay/grid.d.ts +4 -0
- package/dist/core/chart/exporter/svg/overlay/index.d.ts +12 -0
- package/dist/core/chart/exporter/svg/overlay/legend.d.ts +4 -0
- package/dist/core/chart/exporter/svg/overlay/pluginCharts.d.ts +6 -0
- package/dist/core/chart/exporter/svg/overlay/polarGrid.d.ts +4 -0
- package/dist/core/chart/exporter/svg/overlay/specialChart.d.ts +15 -0
- package/dist/core/chart/exporter/svg/overlay/title.d.ts +4 -0
- package/dist/core/chart/exporter/svg/plugins/annotations.d.ts +5 -0
- package/dist/core/chart/exporter/svg/plugins/brokenAxis.d.ts +20 -0
- package/dist/core/chart/exporter/svg/plugins/latex.d.ts +9 -0
- package/dist/core/chart/exporter/svg/plugins/register.d.ts +8 -0
- package/dist/core/chart/exporter/svg/plugins/regression.d.ts +33 -0
- package/dist/core/chart/exporter/svg/plugins/roi.d.ts +12 -0
- package/dist/core/chart/exporter/svg/plugins/tradeMarkers.d.ts +3 -0
- package/dist/core/chart/exporter/svg/plugins/types.d.ts +28 -0
- package/dist/core/chart/exporter/svg/plugins/watermark.d.ts +13 -0
- package/dist/core/chart/exporter/svg/series/band.d.ts +6 -0
- package/dist/core/chart/exporter/svg/series/bar.d.ts +6 -0
- package/dist/core/chart/exporter/svg/series/boxplot.d.ts +6 -0
- package/dist/core/chart/exporter/svg/series/candlestick.d.ts +6 -0
- package/dist/core/chart/exporter/svg/series/finitePoints.d.ts +6 -0
- package/dist/core/chart/exporter/svg/series/gauge.d.ts +5 -0
- package/dist/core/chart/exporter/svg/series/heatmap.d.ts +6 -0
- package/dist/core/chart/exporter/svg/series/indicator.d.ts +6 -0
- package/dist/core/chart/exporter/svg/series/line.d.ts +12 -0
- package/dist/core/chart/exporter/svg/series/polar.d.ts +6 -0
- package/dist/core/chart/exporter/svg/series/radar.d.ts +5 -0
- package/dist/core/chart/exporter/svg/series/registry.d.ts +10 -0
- package/dist/core/chart/exporter/svg/series/sankey.d.ts +5 -0
- package/dist/core/chart/exporter/svg/series/scatter.d.ts +1 -0
- package/dist/core/chart/exporter/svg/series/ternary.d.ts +7 -0
- package/dist/core/chart/exporter/svg/series/waterfall.d.ts +6 -0
- package/dist/core/chart/exporter/svg/seriesAtTimestamp.d.ts +4 -0
- package/dist/core/chart/exporter/svg/seriesUtils.d.ts +3 -0
- package/dist/core/chart/exporter/svg/symbols.d.ts +5 -0
- package/dist/core/chart/exporter/svg/tickUtils.d.ts +9 -0
- package/dist/core/chart/mountSVGString.d.ts +5 -0
- package/dist/core/chart/overlaySeriesRegistry.d.ts +7 -0
- package/dist/core/chart/series/SeriesActions.d.ts +1 -0
- package/dist/core/chart/series/SeriesBufferLite.d.ts +13 -0
- package/dist/core/chart/series/seriesOptionsRegistry.d.ts +8 -0
- package/dist/core/chart/series/seriesTypeRegistry.d.ts +5 -0
- package/dist/core/chart/types.d.ts +2 -2
- package/dist/core/stacked/StackSVGComposer.d.ts +14 -0
- package/dist/core/stacked/index.d.ts +3 -2
- package/dist/core/stacked/types.d.ts +12 -4
- package/dist/createStackedChart-DjA3aJAu.js +2761 -0
- package/dist/createStackedChart-DjA3aJAu.js.map +1 -0
- package/dist/{hooks-CYPCxoZx.js → hooks-4wQH27r9.js} +7 -7
- package/dist/{hooks-CYPCxoZx.js.map → hooks-4wQH27r9.js.map} +1 -1
- package/dist/{index-qunX30Xu.js → index-B7PTX94B.js} +2133 -2133
- package/dist/index-B7PTX94B.js.map +1 -0
- package/dist/{index-BMiZoKmm.js → index-BgrvqltV.js} +67 -67
- package/dist/index-BgrvqltV.js.map +1 -0
- package/dist/index-Bj-xyXY6.js +582 -0
- package/dist/index-Bj-xyXY6.js.map +1 -0
- package/dist/index-qhscKTDy.js.map +1 -1
- package/dist/index.core.d.ts +8 -6
- package/dist/index.d.ts +1 -14
- package/dist/plugins/3d.js +3 -1
- package/dist/plugins/3d.js.map +1 -1
- package/dist/plugins/PluginManager.d.ts +5 -0
- package/dist/plugins/analysis.js.map +1 -1
- package/dist/plugins/annotations.js +8 -7
- package/dist/plugins/annotations.js.map +1 -1
- package/dist/plugins/broken-axis.js +198 -152
- package/dist/plugins/broken-axis.js.map +1 -1
- package/dist/plugins/createPlugin.d.ts +8 -0
- package/dist/plugins/debug.js +32 -32
- package/dist/plugins/debug.js.map +1 -1
- package/dist/plugins/forecasting.js +273 -258
- package/dist/plugins/forecasting.js.map +1 -1
- package/dist/plugins/gpu.js +2033 -209
- package/dist/plugins/gpu.js.map +1 -1
- package/dist/plugins/i18n.js +286 -23
- package/dist/plugins/i18n.js.map +1 -1
- package/dist/plugins/latex.js +766 -207
- package/dist/plugins/latex.js.map +1 -1
- package/dist/plugins/loading/index.d.ts +1 -2
- package/dist/plugins/loading.js +3 -4
- package/dist/plugins/ml-integration.js +107 -93
- package/dist/plugins/ml-integration.js.map +1 -1
- package/dist/plugins/offscreen.js +11 -10
- package/dist/plugins/offscreen.js.map +1 -1
- package/dist/plugins/radar/types.d.ts +11 -0
- package/dist/plugins/radar.js +64 -53
- package/dist/plugins/radar.js.map +1 -1
- package/dist/plugins/regression.js +254 -256
- package/dist/plugins/regression.js.map +1 -1
- package/dist/plugins/roi/index.d.ts +2 -0
- package/dist/plugins/roi.js +184 -145
- package/dist/plugins/roi.js.map +1 -1
- package/dist/plugins/snapshot.js +20 -15
- package/dist/plugins/snapshot.js.map +1 -1
- package/dist/plugins/streaming.js +1 -1
- package/dist/plugins/tools.js +1 -1
- package/dist/plugins/types.d.ts +4 -0
- package/dist/react.js +55 -58
- package/dist/react.js.map +1 -1
- package/dist/regression-HNdyk1Dm.js +28 -0
- package/dist/regression-HNdyk1Dm.js.map +1 -0
- package/dist/renderer/ChartSeriesRenderer.d.ts +3 -2
- package/dist/renderer/NativeWebGLRenderer.d.ts +2 -1
- package/dist/renderer/SVGChartRenderer.d.ts +15 -0
- package/dist/renderer/SankeyRenderer.d.ts +1 -0
- package/dist/renderer/native/NativeWebGLRenderer.d.ts +5 -1
- package/dist/renderer/native/draw.d.ts +2 -47
- package/dist/renderer/native/drawCore.d.ts +27 -0
- package/dist/renderer/native/drawExtended.d.ts +29 -0
- package/dist/renderer/native/frameRenderExtended.d.ts +1 -0
- package/dist/renderer/native/frameRenderRegistry.d.ts +27 -0
- package/dist/renderer/native/programFactoryCore.d.ts +6 -0
- package/dist/renderer/native/programFactoryExtended.d.ts +4 -0
- package/dist/renderer/native/utils.d.ts +3 -29
- package/dist/renderer/native/utilsCore.d.ts +14 -0
- package/dist/renderer/native/utilsExtended.d.ts +17 -0
- package/dist/renderer/overlaySeriesExtended.d.ts +1 -0
- package/dist/renderer/registerExtendedSeries.d.ts +1 -0
- package/dist/renderer/registerSVG.d.ts +5 -0
- package/dist/renderer/registerWebGPU.d.ts +2 -0
- package/dist/renderer/sankeyLayout.d.ts +29 -0
- package/dist/renderer/seriesBufferExtended.d.ts +4 -0
- package/dist/scientific/index.d.ts +1 -5
- package/dist/scientific/registerScientific.d.ts +1 -0
- package/dist/scientific.js +41 -41
- package/dist/solid.js +56 -59
- package/dist/solid.js.map +1 -1
- package/dist/svelte.js +26 -29
- package/dist/svelte.js.map +1 -1
- package/dist/tickUtils-B_X-ha13.js +41 -0
- package/dist/tickUtils-B_X-ha13.js.map +1 -0
- package/dist/trading/index.d.ts +1 -4
- package/dist/trading/registerTrading.d.ts +3 -0
- package/dist/trading.js +42 -42
- package/dist/types.d.ts +5 -4
- package/dist/velo-plot.full.js +1951 -1275
- package/dist/velo-plot.full.js.map +1 -1
- package/dist/velo-plot.js +33 -28
- package/dist/velo-plot.js.map +1 -1
- package/dist/vue/VeloPlot.vue.d.ts +1 -1
- package/dist/vue/index.d.ts +33 -33
- package/dist/vue.js +17 -20
- package/dist/vue.js.map +1 -1
- package/package.json +14 -1
- package/dist/ChartCore-BpzRvN4Y.js +0 -8467
- package/dist/ChartCore-BpzRvN4Y.js.map +0 -1
- package/dist/createStackedChart-Dm-YqUT7.js +0 -756
- package/dist/createStackedChart-Dm-YqUT7.js.map +0 -1
- package/dist/gpuRenderer-BpaMYz-k.js +0 -1848
- package/dist/gpuRenderer-BpaMYz-k.js.map +0 -1
- package/dist/index-BMiZoKmm.js.map +0 -1
- package/dist/index-qunX30Xu.js.map +0 -1
- package/dist/index-x4stH3jD.js +0 -282
- package/dist/index-x4stH3jD.js.map +0 -1
- package/dist/index.core-BmZe2jRQ.js.map +0 -1
- package/dist/mockDatafeed-DHIDPcpX.js +0 -515
- package/dist/mockDatafeed-DHIDPcpX.js.map +0 -1
- package/dist/symbols-DT0eLlpW.js +0 -568
- package/dist/symbols-DT0eLlpW.js.map +0 -1
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
var
|
|
2
|
-
var T = (
|
|
3
|
-
var
|
|
4
|
-
|
|
1
|
+
var M = Object.defineProperty;
|
|
2
|
+
var T = (s, e, r) => e in s ? M(s, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : s[e] = r;
|
|
3
|
+
var $ = (s, e, r) => T(s, typeof e != "symbol" ? e + "" : e, r);
|
|
4
|
+
import { f as u } from "../SVGDocumentBuilder-C-uLkcFW.js";
|
|
5
|
+
class A {
|
|
5
6
|
constructor(e, r) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
$(this, "domain", [0, 1]);
|
|
8
|
+
$(this, "range", [0, 100]);
|
|
9
|
+
$(this, "type", "linear");
|
|
9
10
|
// Compatible with linear for renderer selection
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
$(this, "underlying");
|
|
12
|
+
$(this, "sortedBreaks", []);
|
|
13
|
+
$(this, "visibleRanges", []);
|
|
14
|
+
$(this, "availableVisualRatio", 1);
|
|
14
15
|
this.breaks = r, this.underlying = e, this.domain = [...e.domain], this.range = [...e.range], this.refresh();
|
|
15
16
|
}
|
|
16
17
|
setDomain(e, r) {
|
|
@@ -24,180 +25,221 @@ class v {
|
|
|
24
25
|
}
|
|
25
26
|
refresh() {
|
|
26
27
|
const [e, r] = this.domain;
|
|
27
|
-
this.sortedBreaks = this.breaks.filter((
|
|
28
|
-
...
|
|
29
|
-
start: Math.max(e,
|
|
30
|
-
end: Math.min(r,
|
|
31
|
-
visualRatio:
|
|
32
|
-
})).sort((
|
|
33
|
-
const
|
|
34
|
-
let
|
|
35
|
-
for (const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
this.availableVisualRatio = Math.max(0.1, 1 -
|
|
28
|
+
this.sortedBreaks = this.breaks.filter((n) => n.start < r && n.end > e).map((n) => ({
|
|
29
|
+
...n,
|
|
30
|
+
start: Math.max(e, n.start),
|
|
31
|
+
end: Math.min(r, n.end),
|
|
32
|
+
visualRatio: n.visualRatio ?? 0.02
|
|
33
|
+
})).sort((n, h) => n.start - h.start);
|
|
34
|
+
const o = [];
|
|
35
|
+
let a = e;
|
|
36
|
+
for (const n of this.sortedBreaks)
|
|
37
|
+
n.start > a && o.push({ start: a, end: n.start }), a = n.end;
|
|
38
|
+
a < r && o.push({ start: a, end: r });
|
|
39
|
+
const m = o.reduce((n, h) => n + (h.end - h.start), 0) || 1e-10, f = this.sortedBreaks.reduce((n, h) => n + (h.visualRatio || 0.02), 0);
|
|
40
|
+
this.availableVisualRatio = Math.max(0.1, 1 - f);
|
|
40
41
|
let c = 0;
|
|
41
|
-
this.visibleRanges =
|
|
42
|
-
const
|
|
43
|
-
start:
|
|
44
|
-
end:
|
|
42
|
+
this.visibleRanges = o.map((n) => {
|
|
43
|
+
const h = n.end - n.start, g = h / m * this.availableVisualRatio, x = {
|
|
44
|
+
start: n.start,
|
|
45
|
+
end: n.end,
|
|
45
46
|
pixelOffset: c,
|
|
46
|
-
pixelScale:
|
|
47
|
-
}, t = this.sortedBreaks.find((
|
|
48
|
-
return c +=
|
|
47
|
+
pixelScale: g / h
|
|
48
|
+
}, t = this.sortedBreaks.find((i) => Math.abs(i.start - n.end) < 1e-10);
|
|
49
|
+
return c += g + ((t == null ? void 0 : t.visualRatio) ?? 0), x;
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
52
|
transform(e) {
|
|
52
|
-
const [r,
|
|
53
|
+
const [r, o] = this.domain, [a, m] = this.range, f = m < a;
|
|
53
54
|
let c = 0;
|
|
54
55
|
if (e <= r) c = 0;
|
|
55
|
-
else if (e >=
|
|
56
|
+
else if (e >= o) c = 1;
|
|
56
57
|
else {
|
|
57
|
-
let
|
|
58
|
-
for (const
|
|
59
|
-
if (e >=
|
|
60
|
-
c =
|
|
58
|
+
let n = !1;
|
|
59
|
+
for (const h of this.visibleRanges)
|
|
60
|
+
if (e >= h.start && e <= h.end) {
|
|
61
|
+
c = h.pixelOffset + (e - h.start) * h.pixelScale, n = !0;
|
|
61
62
|
break;
|
|
62
63
|
}
|
|
63
|
-
if (!
|
|
64
|
-
for (const
|
|
65
|
-
if (e >=
|
|
66
|
-
const
|
|
67
|
-
c = (
|
|
64
|
+
if (!n) {
|
|
65
|
+
for (const h of this.sortedBreaks)
|
|
66
|
+
if (e >= h.start && e <= h.end) {
|
|
67
|
+
const g = this.visibleRanges.find((t) => Math.abs(t.end - h.start) < 1e-10);
|
|
68
|
+
c = (g ? g.pixelOffset + (g.end - g.start) * g.pixelScale : 0) + (e - h.start) / (h.end - h.start) * (h.visualRatio ?? 0.02), n = !0;
|
|
68
69
|
break;
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
+
n || (c = 0);
|
|
72
73
|
}
|
|
73
|
-
return
|
|
74
|
+
return f ? a - c * (a - m) : a + c * (m - a);
|
|
74
75
|
}
|
|
75
76
|
/** Map data value to 0-1 ratio space (handles breaks) */
|
|
76
77
|
mapToRatio(e) {
|
|
77
|
-
const [r,
|
|
78
|
+
const [r, o] = this.domain;
|
|
78
79
|
if (e <= r) return 0;
|
|
79
|
-
if (e >=
|
|
80
|
-
for (const
|
|
81
|
-
if (e >=
|
|
82
|
-
return
|
|
83
|
-
for (const
|
|
84
|
-
if (e >=
|
|
85
|
-
const
|
|
86
|
-
return (
|
|
80
|
+
if (e >= o) return 1;
|
|
81
|
+
for (const a of this.visibleRanges)
|
|
82
|
+
if (e >= a.start && e <= a.end)
|
|
83
|
+
return a.pixelOffset + (e - a.start) * a.pixelScale;
|
|
84
|
+
for (const a of this.sortedBreaks)
|
|
85
|
+
if (e >= a.start && e <= a.end) {
|
|
86
|
+
const m = this.visibleRanges.find((c) => Math.abs(c.end - a.start) < 1e-10);
|
|
87
|
+
return (m ? m.pixelOffset + (m.end - m.start) * m.pixelScale : 0) + (e - a.start) / (a.end - a.start) * (a.visualRatio ?? 0.02);
|
|
87
88
|
}
|
|
88
89
|
return 0;
|
|
89
90
|
}
|
|
90
91
|
invert(e) {
|
|
91
|
-
const [r,
|
|
92
|
-
for (const
|
|
93
|
-
const c =
|
|
94
|
-
if (
|
|
95
|
-
return
|
|
92
|
+
const [r, o] = this.range, a = (e - r) / (o - r), m = Math.max(0, Math.min(1, a));
|
|
93
|
+
for (const f of this.visibleRanges) {
|
|
94
|
+
const c = f.pixelOffset + (f.end - f.start) * f.pixelScale;
|
|
95
|
+
if (m >= f.pixelOffset && m <= c)
|
|
96
|
+
return f.start + (m - f.pixelOffset) / f.pixelScale;
|
|
96
97
|
}
|
|
97
|
-
for (let
|
|
98
|
-
const c = this.sortedBreaks[
|
|
99
|
-
if (
|
|
98
|
+
for (let f = 0; f < this.sortedBreaks.length; f++) {
|
|
99
|
+
const c = this.sortedBreaks[f], n = this.visibleRanges.find((g) => Math.abs(g.end - c.start) < 1e-10), h = n ? n.pixelOffset + (n.end - n.start) * n.pixelScale : 0;
|
|
100
|
+
if (m >= h && m <= h + (c.visualRatio ?? 0.02))
|
|
100
101
|
return c.start;
|
|
101
102
|
}
|
|
102
103
|
return this.domain[0];
|
|
103
104
|
}
|
|
104
105
|
ticks(e = 10) {
|
|
105
106
|
const r = [];
|
|
106
|
-
for (const
|
|
107
|
-
const
|
|
108
|
-
r.push(...
|
|
107
|
+
for (const o of this.visibleRanges) {
|
|
108
|
+
const a = (o.end - o.start) / (this.domain[1] - this.domain[0]), m = Math.max(2, Math.round(e * a / this.availableVisualRatio)), f = this.generateSegmentTicks(o.start, o.end, m);
|
|
109
|
+
r.push(...f);
|
|
109
110
|
}
|
|
110
|
-
return Array.from(new Set(r)).sort((
|
|
111
|
-
}
|
|
112
|
-
generateSegmentTicks(e, r,
|
|
113
|
-
const
|
|
114
|
-
if (
|
|
115
|
-
const
|
|
116
|
-
let
|
|
117
|
-
c < 1.5 ?
|
|
118
|
-
const
|
|
119
|
-
let
|
|
120
|
-
for (;
|
|
121
|
-
|
|
122
|
-
return
|
|
111
|
+
return Array.from(new Set(r)).sort((o, a) => o - a);
|
|
112
|
+
}
|
|
113
|
+
generateSegmentTicks(e, r, o) {
|
|
114
|
+
const a = r - e;
|
|
115
|
+
if (a <= 0 || !isFinite(a)) return [];
|
|
116
|
+
const m = a / o, f = Math.pow(10, Math.floor(Math.log10(m))), c = m / f;
|
|
117
|
+
let n;
|
|
118
|
+
c < 1.5 ? n = 1 : c < 3 ? n = 2 : c < 7 ? n = 5 : n = 10, n *= f;
|
|
119
|
+
const h = Math.ceil(e / n) * n, g = [];
|
|
120
|
+
let x = h;
|
|
121
|
+
for (; x <= r + n * 0.1; )
|
|
122
|
+
g.push(Math.round(x * 1e12) / 1e12), x += n;
|
|
123
|
+
return g;
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
|
-
|
|
126
|
+
function v(s, e, r, o) {
|
|
127
|
+
return r === "diagonal" ? `M ${u(s - 6)} ${u(e + 6 / 2)} L ${u(s + 6)} ${u(e - 6 / 2)} M ${u(s - 6 + 3)} ${u(e + 6 / 2)} L ${u(s + 6 + 3)} ${u(e - 6 / 2)}` : r === "zigzag" ? `M ${u(s - 6)} ${u(e)} L ${u(s - 6 / 2)} ${u(e - 6 / 2)} L ${u(s + 6 / 2)} ${u(e + 6 / 2)} L ${u(s + 6)} ${u(e)}` : o === "top" || o === "bottom" ? `M ${u(s - 6)} ${u(e - 2)} L ${u(s + 6)} ${u(e + 2)} M ${u(s - 6)} ${u(e - 6)} L ${u(s + 6)} ${u(e - 2)}` : `M ${u(s - 6)} ${u(e)} L ${u(s)} ${u(e - 6)} L ${u(s + 6)} ${u(e)}`;
|
|
128
|
+
}
|
|
129
|
+
function B(s, e) {
|
|
130
|
+
if (!s.builder) return;
|
|
131
|
+
const { plotArea: r } = s;
|
|
132
|
+
for (const o of e) {
|
|
133
|
+
const a = o.color ?? s.theme.xAxis.lineColor, m = o.style ?? "diagonal";
|
|
134
|
+
if (o.axis === "x") {
|
|
135
|
+
const f = s.xScale.transform(o.position), c = r.y, n = r.y + r.height;
|
|
136
|
+
s.builder.push(
|
|
137
|
+
"plugins",
|
|
138
|
+
`<path d="${v(f, c, m, "top")}" fill="none" stroke="${a}" stroke-width="1.5"/>`
|
|
139
|
+
), s.builder.push(
|
|
140
|
+
"plugins",
|
|
141
|
+
`<path d="${v(f, n, m, "bottom")}" fill="none" stroke="${a}" stroke-width="1.5"/>`
|
|
142
|
+
);
|
|
143
|
+
} else {
|
|
144
|
+
const f = s.yScales.values().next().value;
|
|
145
|
+
if (!f) continue;
|
|
146
|
+
const c = f.transform(o.position), n = r.x, h = 6;
|
|
147
|
+
s.builder.push(
|
|
148
|
+
"plugins",
|
|
149
|
+
`<path d="M ${u(n)} ${u(c - h)} L ${u(n + h)} ${u(c)} L ${u(n)} ${u(c + h)}" fill="none" stroke="${a}" stroke-width="1.5"/>`
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function _(s, e) {
|
|
155
|
+
const r = [];
|
|
156
|
+
for (const [o, a] of Object.entries(e))
|
|
157
|
+
if (o === "default" || o === "xAxis")
|
|
158
|
+
for (const f of a.breaks)
|
|
159
|
+
r.push({
|
|
160
|
+
axis: "x",
|
|
161
|
+
position: (f.start + f.end) / 2,
|
|
162
|
+
style: f.symbol ?? a.defaultSymbol,
|
|
163
|
+
color: a.symbolColor
|
|
164
|
+
});
|
|
165
|
+
B(s, r);
|
|
166
|
+
}
|
|
167
|
+
const O = {
|
|
126
168
|
name: "velo-plot-broken-axis",
|
|
127
169
|
version: "1.0.1",
|
|
128
170
|
description: "Support for gaps/breaks in axes with visual indicators",
|
|
129
171
|
provides: ["broken-axis", "coordinate-transform"],
|
|
130
172
|
tags: ["axis", "layout", "visualization"]
|
|
131
173
|
};
|
|
132
|
-
function
|
|
133
|
-
|
|
134
|
-
let e = null, r = null,
|
|
135
|
-
const
|
|
136
|
-
function
|
|
137
|
-
let t = 1 / 0,
|
|
138
|
-
for (const
|
|
139
|
-
for (let
|
|
140
|
-
const
|
|
141
|
-
|
|
174
|
+
function L(s = { axes: {} }) {
|
|
175
|
+
s.enabled === void 0 && (s.enabled = !0);
|
|
176
|
+
let e = null, r = null, o = null;
|
|
177
|
+
const a = /* @__PURE__ */ new Map();
|
|
178
|
+
function m() {
|
|
179
|
+
let t = 1 / 0, i = -1 / 0;
|
|
180
|
+
for (const d of a.values())
|
|
181
|
+
for (let l = 0; l < d.x.length; l++) {
|
|
182
|
+
const p = d.x[l];
|
|
183
|
+
p < t && (t = p), p > i && (i = p);
|
|
142
184
|
}
|
|
143
|
-
return !Number.isFinite(t) || !Number.isFinite(
|
|
185
|
+
return !Number.isFinite(t) || !Number.isFinite(i) || t === i ? null : [t, i];
|
|
144
186
|
}
|
|
145
|
-
function
|
|
146
|
-
if (!e || !
|
|
147
|
-
const t =
|
|
148
|
-
t &&
|
|
187
|
+
function f() {
|
|
188
|
+
if (!e || !s.enabled) return;
|
|
189
|
+
const t = s.axes.default || s.axes.xAxis;
|
|
190
|
+
t && o && (o.updateBreaks(t.breaks), c({ syncView: !0 }));
|
|
149
191
|
}
|
|
150
192
|
function c(t = {}) {
|
|
151
|
-
if (!e || !
|
|
152
|
-
const
|
|
153
|
-
if (!
|
|
154
|
-
const [
|
|
155
|
-
|
|
156
|
-
for (const [
|
|
157
|
-
const
|
|
158
|
-
for (let
|
|
159
|
-
|
|
160
|
-
|
|
193
|
+
if (!e || !o || !s.enabled) return;
|
|
194
|
+
const i = e.chart, d = m();
|
|
195
|
+
if (!d) return;
|
|
196
|
+
const [l, p] = d, z = p - l || 1;
|
|
197
|
+
o.setDomain(l, p);
|
|
198
|
+
for (const [b, k] of a.entries()) {
|
|
199
|
+
const R = new Float32Array(k.x.length);
|
|
200
|
+
for (let S = 0; S < k.x.length; S++)
|
|
201
|
+
R[S] = l + o.mapToRatio(k.x[S]) * z;
|
|
202
|
+
i._originalUpdateSeries && i._originalUpdateSeries(b, { x: R, y: k.y });
|
|
161
203
|
}
|
|
162
|
-
t.syncView && typeof
|
|
163
|
-
}
|
|
164
|
-
function
|
|
165
|
-
const { render:
|
|
166
|
-
if (!(!
|
|
167
|
-
for (const [
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
const
|
|
171
|
-
|
|
204
|
+
t.syncView && typeof i.zoom == "function" && i.zoom({ x: [l, p], animate: !1 });
|
|
205
|
+
}
|
|
206
|
+
function n(t) {
|
|
207
|
+
const { render: i } = t, { ctx2d: d, plotArea: l } = i;
|
|
208
|
+
if (!(!d || !o))
|
|
209
|
+
for (const [p, z] of Object.entries(s.axes)) {
|
|
210
|
+
const b = p === "default" || p === "xAxis" ? "horizontal" : "vertical";
|
|
211
|
+
b === "horizontal" && z.breaks.forEach((k) => {
|
|
212
|
+
const R = o.transform(k.start), S = o.transform(k.end), w = (R + S) / 2, y = k.symbol || z.defaultSymbol || "diagonal";
|
|
213
|
+
d.save(), d.lineWidth = 1.5, d.strokeStyle = z.symbolColor || "#ff00ff", b === "horizontal" && (h(d, w, l.y, y, "top"), h(d, w, l.y + l.height, y, "bottom")), d.restore();
|
|
172
214
|
});
|
|
173
215
|
}
|
|
174
216
|
}
|
|
175
|
-
function
|
|
176
|
-
t.beginPath(),
|
|
217
|
+
function h(t, i, d, l, p) {
|
|
218
|
+
t.beginPath(), l === "diagonal" ? (t.moveTo(i - 6, d + 6 / 2), t.lineTo(i + 6, d - 6 / 2), t.moveTo(i - 6 + 3, d + 6 / 2), t.lineTo(i + 6 + 3, d - 6 / 2)) : l === "zigzag" ? (t.moveTo(i - 6, d), t.lineTo(i - 6 / 2, d - 6 / 2), t.lineTo(i + 6 / 2, d + 6 / 2), t.lineTo(i + 6, d)) : p === "top" || p === "bottom" ? (t.moveTo(i - 6, d - 2), t.lineTo(i + 6, d + 2), t.moveTo(i - 6, d - 6), t.lineTo(i + 6, d - 2)) : (t.moveTo(i - 2, d - 6), t.lineTo(i + 2, d + 6)), t.stroke();
|
|
177
219
|
}
|
|
178
220
|
return {
|
|
179
|
-
manifest:
|
|
221
|
+
manifest: O,
|
|
180
222
|
onInit(t) {
|
|
181
223
|
e = t;
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
const
|
|
185
|
-
if (
|
|
186
|
-
|
|
187
|
-
},
|
|
188
|
-
var
|
|
189
|
-
|
|
190
|
-
},
|
|
191
|
-
const
|
|
192
|
-
if (
|
|
193
|
-
const
|
|
194
|
-
|
|
224
|
+
const i = e.chart;
|
|
225
|
+
i._originalUpdateSeries = i.updateSeries.bind(i), i._originalAddSeries = i.addSeries.bind(i), i._originalAppendData = i.appendData.bind(i);
|
|
226
|
+
const d = (l) => l instanceof Float32Array ? l : new Float32Array(typeof l == "number" ? [l] : l);
|
|
227
|
+
if (i.updateSeries = (l, p) => {
|
|
228
|
+
p.x && p.y && a.set(l, { x: d(p.x), y: d(p.y) }), s.enabled && o && p.x ? c({ syncView: !0 }) : i._originalUpdateSeries(l, p);
|
|
229
|
+
}, i.addSeries = (l) => {
|
|
230
|
+
var p, z, b;
|
|
231
|
+
l.id && ((p = l.data) != null && p.x) && ((z = l.data) != null && z.y) && a.set(l.id, { x: d(l.data.x), y: d(l.data.y) }), s.enabled && o && ((b = l.data) != null && b.x) ? (i._originalAddSeries(l), c({ syncView: !0 })) : i._originalAddSeries(l);
|
|
232
|
+
}, i.appendData = (l, p, z) => {
|
|
233
|
+
const b = a.get(l);
|
|
234
|
+
if (b) {
|
|
235
|
+
const k = d(p), R = d(z), S = new Float32Array(b.x.length + k.length), w = new Float32Array(b.y.length + R.length);
|
|
236
|
+
S.set(b.x), S.set(k, b.x.length), w.set(b.y), w.set(R, b.y.length), a.set(l, { x: S, y: w });
|
|
195
237
|
}
|
|
196
|
-
|
|
197
|
-
},
|
|
198
|
-
r =
|
|
199
|
-
const
|
|
200
|
-
|
|
238
|
+
s.enabled && o ? c({ syncView: !0 }) : i._originalAppendData(l, p, z);
|
|
239
|
+
}, s.enabled) {
|
|
240
|
+
r = i.xScale;
|
|
241
|
+
const l = s.axes.default || s.axes.xAxis;
|
|
242
|
+
o = new A(r, (l == null ? void 0 : l.breaks) || []), i.setXScale(o);
|
|
201
243
|
}
|
|
202
244
|
},
|
|
203
245
|
onDestroy() {
|
|
@@ -205,47 +247,51 @@ function _(d = { axes: {} }) {
|
|
|
205
247
|
const t = e.chart;
|
|
206
248
|
r && t.setXScale(r), t.updateSeries = t._originalUpdateSeries, t.addSeries = t._originalAddSeries, t.appendData = t._originalAppendData, delete t._originalUpdateSeries, delete t._originalAddSeries, delete t._originalAppendData;
|
|
207
249
|
}
|
|
208
|
-
e = null,
|
|
250
|
+
e = null, a.clear();
|
|
209
251
|
},
|
|
210
252
|
onRenderOverlay(t) {
|
|
211
|
-
|
|
253
|
+
s.enabled && n(t);
|
|
254
|
+
},
|
|
255
|
+
onExportSVG(t) {
|
|
256
|
+
var i;
|
|
257
|
+
!s.enabled || !t.builder || ((i = t.exportContext) == null ? void 0 : i.options.includeOverlays) === !1 || _(t, s.axes);
|
|
212
258
|
},
|
|
213
259
|
onViewChange() {
|
|
214
260
|
},
|
|
215
261
|
api: {
|
|
216
|
-
addBreak(t,
|
|
217
|
-
|
|
262
|
+
addBreak(t, i) {
|
|
263
|
+
s.axes[t] || (s.axes[t] = { breaks: [] }), s.axes[t].breaks.push(i), f(), e == null || e.requestRender();
|
|
218
264
|
},
|
|
219
265
|
clearBreaks(t) {
|
|
220
|
-
|
|
266
|
+
s.axes[t] && (s.axes[t].breaks = []), f(), e == null || e.requestRender();
|
|
221
267
|
},
|
|
222
268
|
setEnabled(t) {
|
|
223
|
-
var
|
|
224
|
-
const
|
|
225
|
-
if (
|
|
226
|
-
const
|
|
269
|
+
var d;
|
|
270
|
+
const i = s.enabled;
|
|
271
|
+
if (s.enabled = t, e && i !== t) {
|
|
272
|
+
const l = e.chart;
|
|
227
273
|
if (t)
|
|
228
|
-
r =
|
|
274
|
+
r = l.xScale, o = new A(r, ((d = s.axes.default || s.axes.xAxis) == null ? void 0 : d.breaks) || []), l.setXScale(o), c({ syncView: !0 });
|
|
229
275
|
else if (r) {
|
|
230
|
-
|
|
231
|
-
for (const [
|
|
232
|
-
|
|
276
|
+
l.setXScale(r), o = null;
|
|
277
|
+
for (const [p, z] of a.entries())
|
|
278
|
+
l._originalUpdateSeries(p, z);
|
|
233
279
|
}
|
|
234
280
|
}
|
|
235
281
|
e == null || e.requestRender();
|
|
236
282
|
},
|
|
237
283
|
getBreaks(t) {
|
|
238
|
-
var
|
|
239
|
-
return ((
|
|
284
|
+
var i;
|
|
285
|
+
return ((i = s.axes[t]) == null ? void 0 : i.breaks) || [];
|
|
240
286
|
},
|
|
241
287
|
updateConfig(t) {
|
|
242
|
-
Object.assign(
|
|
288
|
+
Object.assign(s, t), f(), e == null || e.requestRender();
|
|
243
289
|
}
|
|
244
290
|
}
|
|
245
291
|
};
|
|
246
292
|
}
|
|
247
293
|
export {
|
|
248
|
-
|
|
249
|
-
|
|
294
|
+
L as PluginBrokenAxis,
|
|
295
|
+
L as default
|
|
250
296
|
};
|
|
251
297
|
//# sourceMappingURL=broken-axis.js.map
|