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