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
package/dist/solid.js CHANGED
@@ -1,47 +1,44 @@
1
- import { template as E, use as b, effect as P, setStyleProperty as g } from "solid-js/web";
1
+ import { template as I, use as b, effect as P, setStyleProperty as g } from "solid-js/web";
2
2
  import { createSignal as f, onCleanup as C, createEffect as y } from "solid-js";
3
- import { c as I, a as B, i as $, r as A, b as K } from "./chartSyncBridge-DbWrwtyP.js";
4
- import { p as w, o as V, s as L, d as M } from "./optionsSync-QUiN4Inw.js";
5
- import { c as z } from "./createStackedChart-Dm-YqUT7.js";
6
- import "./ChartCore-BpzRvN4Y.js";
7
- import "./index-x4stH3jD.js";
8
- import "./symbols-DT0eLlpW.js";
3
+ import { p as w, o as B, s as $, d as A } from "./optionsSync-QUiN4Inw.js";
4
+ import { c as K, a as V, i as p, r as L, b as M } from "./chartSyncBridge-C1uRy0ZS.js";
5
+ import { c as z } from "./createStackedChart-DjA3aJAu.js";
9
6
  import { s as R, a as G, b as x } from "./stackedSync-tnrunZMt.js";
10
7
  function k(e = () => ({})) {
11
8
  const [t, l] = f(null), [n, a] = f(!1), [o, u] = f(null), [d, h] = f(null);
12
- let m, r = null, s = w(e());
9
+ let S, s = null, r = w(e());
13
10
  const v = (i) => {
14
- m = i, r == null || r();
15
- const c = I(i, e(), {
11
+ S = i, s == null || s();
12
+ const c = K(i, e(), {
16
13
  onBoundsChange: h,
17
14
  onError: u
18
15
  });
19
- l(c.chart), r = c.destroy, h(c.getBounds()), a(!0), s = w(e());
16
+ l(c.chart), s = c.destroy, h(c.getBounds()), a(!0), r = w(e());
20
17
  };
21
18
  return C(() => {
22
- r == null || r(), l(null), a(!1);
19
+ s == null || s(), l(null), a(!1);
23
20
  }), y(() => {
24
21
  const i = t(), c = e();
25
22
  if (!i) return;
26
- const S = w(c);
27
- V(s, S) && (L(i, s, S), s = S);
23
+ const m = w(c);
24
+ B(r, m) && ($(i, r, m), r = m);
28
25
  }), {
29
26
  setContainerRef: (i) => {
30
- i && i !== m && v(i);
27
+ i && i !== S && v(i);
31
28
  },
32
29
  chart: t,
33
30
  isReady: n,
34
31
  error: o,
35
32
  bounds: d,
36
33
  addSeries: (i) => {
37
- var S;
38
- (S = t()) == null || S.addSeries(i);
34
+ var m;
35
+ (m = t()) == null || m.addSeries(i);
39
36
  const c = t();
40
37
  c && h(c.getViewBounds());
41
38
  },
42
39
  updateSeries: (i, c) => {
43
- var S;
44
- return (S = t()) == null ? void 0 : S.updateSeries(i, c);
40
+ var m;
41
+ return (m = t()) == null ? void 0 : m.updateSeries(i, c);
45
42
  },
46
43
  removeSeries: (i) => {
47
44
  var c;
@@ -62,51 +59,51 @@ function k(e = () => ({})) {
62
59
  function N(e) {
63
60
  const [t, l] = f(null), [n, a] = f(!1);
64
61
  let o = null, u = "", d = /* @__PURE__ */ new Map();
65
- const h = (r) => {
62
+ const h = (s) => {
66
63
  o == null || o();
67
- const s = e(), v = z({ ...s, container: r });
68
- l(v), o = () => v.destroy(), u = R(s.panes), d = x(v, s.panes, /* @__PURE__ */ new Map()), v.whenReady().then(() => a(!0));
69
- }, m = (r) => {
70
- r && h(r);
64
+ const r = e(), v = z({ ...r, container: s });
65
+ l(v), o = () => v.destroy(), u = R(r.panes), d = x(v, r.panes, /* @__PURE__ */ new Map()), v.whenReady().then(() => a(!0));
66
+ }, S = (s) => {
67
+ s && h(s);
71
68
  };
72
69
  return C(() => {
73
70
  o == null || o(), l(null), a(!1);
74
71
  }), {
75
- setContainerRef: m,
72
+ setContainerRef: S,
76
73
  stack: t,
77
74
  isReady: n,
78
- fitAll: (r) => {
79
- var s;
80
- return (s = t()) == null ? void 0 : s.fitAll(r);
75
+ fitAll: (s) => {
76
+ var r;
77
+ return (r = t()) == null ? void 0 : r.fitAll(s);
81
78
  },
82
79
  resetAll: () => {
83
- var r;
84
- return (r = t()) == null ? void 0 : r.resetAll();
80
+ var s;
81
+ return (s = t()) == null ? void 0 : s.resetAll();
85
82
  },
86
83
  sync: () => {
87
- const r = t(), s = e();
88
- if (!r || !n()) return;
89
- if (R(s.panes) !== u) {
90
- h(r.container);
84
+ const s = t(), r = e();
85
+ if (!s || !n()) return;
86
+ if (R(r.panes) !== u) {
87
+ h(s.container);
91
88
  return;
92
89
  }
93
- G(r, s), d = x(r, s.panes, d);
90
+ G(s, r), d = x(s, r.panes, d);
94
91
  }
95
92
  };
96
93
  }
97
- var p = /* @__PURE__ */ E("<div role=img style=position:relative>");
94
+ var E = /* @__PURE__ */ I("<div role=img style=position:relative>");
98
95
  function O(e) {
99
96
  const t = k(() => e);
100
97
  let l = /* @__PURE__ */ new Map();
101
98
  return y(() => {
102
- !t.isReady() || !t.chart() || (l = M({
99
+ !t.isReady() || !t.chart() || (l = A({
103
100
  addSeries: t.addSeries,
104
101
  updateSeries: t.updateSeries,
105
102
  removeSeries: t.removeSeries,
106
103
  autoScale: () => t.chart().autoScale()
107
104
  }, e.series ?? [], l));
108
105
  }), (() => {
109
- var n = p();
106
+ var n = E();
110
107
  return b((a) => t.setContainerRef(a), n), P((a) => {
111
108
  var o = `velo-plot-container${e.class ? ` ${e.class}` : ""}`, u = typeof e.width == "number" ? `${e.width}px` : e.width ?? "100%", d = typeof e.height == "number" ? `${e.height}px` : e.height ?? "400px";
112
109
  return o !== a.e && (n.className = a.e = o), u !== a.t && g(n, "width", a.t = u), d !== a.a && g(n, "height", a.a = d), a;
@@ -117,10 +114,10 @@ function O(e) {
117
114
  }), n;
118
115
  })();
119
116
  }
120
- function W(e) {
117
+ function J(e) {
121
118
  const t = N(() => e);
122
119
  return y(() => t.sync()), (() => {
123
- var l = p();
120
+ var l = E();
124
121
  return b((n) => t.setContainerRef(n), l), P((n) => {
125
122
  var a = `velo-plot-stacked${e.class ? ` ${e.class}` : ""}`, o = typeof e.width == "number" ? `${e.width}px` : e.width ?? "100%", u = typeof e.height == "number" ? `${e.height}px` : e.height ?? "480px";
126
123
  return a !== n.e && (l.className = n.e = a), o !== n.t && g(l, "width", n.t = o), u !== n.a && g(l, "height", n.a = u), n;
@@ -131,20 +128,20 @@ function W(e) {
131
128
  }), l;
132
129
  })();
133
130
  }
134
- function X(e, t, l = {}) {
131
+ function Q(e, t, l = {}) {
135
132
  const [n, a] = f(null), [o, u] = f(!1), [d, h] = f(null);
136
133
  return y(() => {
137
- const m = e();
138
- if (!m) return;
139
- let r = !1;
140
- u(!0), B(m, t, l).then((s) => {
141
- r || (a(s), u(!1));
142
- }).catch((s) => {
143
- r || (h(s instanceof Error ? s : new Error(String(s))), u(!1));
134
+ const S = e();
135
+ if (!S) return;
136
+ let s = !1;
137
+ u(!0), V(S, t, l).then((r) => {
138
+ s || (a(r), u(!1));
139
+ }).catch((r) => {
140
+ s || (h(r instanceof Error ? r : new Error(String(r))), u(!1));
144
141
  }), C(() => {
145
- r = !0;
146
- const s = n();
147
- s && !$(m) && A(m, s.id);
142
+ s = !0;
143
+ const r = n();
144
+ r && !p(S) && L(S, r.id);
148
145
  });
149
146
  }), { result: n, isLoading: o, error: d };
150
147
  }
@@ -153,19 +150,19 @@ function Z(e, t) {
153
150
  return y(() => {
154
151
  const a = e();
155
152
  let o = null;
156
- a.length >= 2 ? (o = K(a, t), n(o.group)) : n(null), C(() => o == null ? void 0 : o.destroy());
153
+ a.length >= 2 ? (o = M(a, t), n(o.group)) : n(null), C(() => o == null ? void 0 : o.destroy());
157
154
  }), { group: l };
158
155
  }
159
- const Y = Z, _ = O, ee = k, te = k;
156
+ const U = Z, W = O, X = k, Y = k;
160
157
  export {
161
- _ as SciPlot,
162
- W as StackedPlot,
158
+ W as SciPlot,
159
+ J as StackedPlot,
163
160
  O as VeloPlot,
164
- Y as useChartGroup,
161
+ U as useChartGroup,
165
162
  Z as useChartSync,
166
- X as useIndicator,
167
- te as useSciChart,
168
- ee as useSciPlot,
163
+ Q as useIndicator,
164
+ Y as useSciChart,
165
+ X as useSciPlot,
169
166
  N as useStackedPlot,
170
167
  k as useVeloPlot
171
168
  };
package/dist/solid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"solid.js","sources":["../src/solid/useVeloPlot.ts","../src/solid/useStackedPlot.ts","../src/solid/VeloPlot.tsx","../src/solid/useIndicator.ts","../src/solid/useChartSync.ts","../src/solid/index.ts"],"sourcesContent":["import { createSignal, onCleanup, createEffect } from \"solid-js\";\nimport type { Chart } from \"../core/Chart\";\nimport type { SeriesOptions, SeriesUpdateData, ZoomOptions, Bounds } from \"../types\";\nimport {\n createChartLifecycle,\n type ChartBindingOptions,\n optionsChanged,\n syncChartOptions,\n pickSyncableOptions,\n} from \"../bindings/shared\";\n\nexport interface UseVeloPlotOptions extends ChartBindingOptions {}\n\nexport function useVeloPlot(options: () => UseVeloPlotOptions = () => ({})) {\n const [chart, setChart] = createSignal<Chart | null>(null);\n const [isReady, setIsReady] = createSignal(false);\n const [error, setError] = createSignal<Error | null>(null);\n const [bounds, setBounds] = createSignal<Bounds | null>(null);\n let container: HTMLDivElement | undefined;\n let destroy: (() => void) | null = null;\n let prevSync = pickSyncableOptions(options());\n\n const mount = (el: HTMLDivElement) => {\n container = el;\n destroy?.();\n const handle = createChartLifecycle(el, options(), {\n onBoundsChange: setBounds,\n onError: setError,\n });\n setChart(handle.chart);\n destroy = handle.destroy;\n setBounds(handle.getBounds());\n setIsReady(true);\n prevSync = pickSyncableOptions(options());\n };\n\n onCleanup(() => {\n destroy?.();\n setChart(null);\n setIsReady(false);\n });\n\n createEffect(() => {\n const c = chart();\n const opts = options();\n if (!c) return;\n const next = pickSyncableOptions(opts);\n if (optionsChanged(prevSync, next)) {\n syncChartOptions(c, prevSync, next);\n prevSync = next;\n }\n });\n\n return {\n setContainerRef: (el: HTMLDivElement | null | undefined) => {\n if (el && el !== container) mount(el);\n },\n chart,\n isReady,\n error,\n bounds,\n addSeries: (opts: SeriesOptions) => {\n chart()?.addSeries(opts);\n const c = chart();\n if (c) setBounds(c.getViewBounds());\n },\n updateSeries: (id: string, data: SeriesUpdateData) => chart()?.updateSeries(id, data),\n removeSeries: (id: string) => chart()?.removeSeries(id),\n zoom: (z: ZoomOptions) => chart()?.zoom(z),\n resetZoom: () => {\n chart()?.resetZoom();\n const c = chart();\n if (c) setBounds(c.getViewBounds());\n },\n };\n}\n","import { createSignal, onCleanup } from \"solid-js\";\nimport { createStackedChart } from \"../core/stacked\";\nimport type { StackedChart, StackedChartOptions } from \"../core/stacked\";\nimport type { Range } from \"../types\";\nimport { stackedStructureKey, syncStackedOptions, syncStackedPaneSeries } from \"../bindings/shared\";\nimport type { VeloPlotSeries } from \"../bindings/shared\";\n\nexport function useStackedPlot(getOptions: () => Omit<StackedChartOptions, \"container\">) {\n const [stack, setStack] = createSignal<StackedChart | null>(null);\n const [isReady, setIsReady] = createSignal(false);\n let destroy: (() => void) | null = null;\n let structureKey = \"\";\n let paneSeries = new Map<string, Map<string, VeloPlotSeries>>();\n\n const mount = (el: HTMLDivElement) => {\n destroy?.();\n const opts = getOptions();\n const created = createStackedChart({ ...opts, container: el });\n setStack(created);\n destroy = () => created.destroy();\n structureKey = stackedStructureKey(opts.panes);\n paneSeries = syncStackedPaneSeries(created, opts.panes, new Map());\n created.whenReady().then(() => setIsReady(true));\n };\n\n const setContainerRef = (el: HTMLDivElement | null | undefined) => {\n if (el) mount(el);\n };\n\n onCleanup(() => {\n destroy?.();\n setStack(null);\n setIsReady(false);\n });\n\n return {\n setContainerRef,\n stack,\n isReady,\n fitAll: (opts?: { x?: Range; padding?: number }) => stack()?.fitAll(opts),\n resetAll: () => stack()?.resetAll(),\n sync: () => {\n const s = stack();\n const opts = getOptions();\n if (!s || !isReady()) return;\n const nextKey = stackedStructureKey(opts.panes);\n if (nextKey !== structureKey) {\n mount(s.container);\n return;\n }\n syncStackedOptions(s, opts);\n paneSeries = syncStackedPaneSeries(s, opts.panes, paneSeries);\n },\n };\n}\n","import { createEffect } from \"solid-js\";\nimport { useVeloPlot, type UseVeloPlotOptions } from \"./useVeloPlot\";\nimport { useStackedPlot } from \"./useStackedPlot\";\nimport { diffSeries, type VeloPlotSeries } from \"../bindings/shared\";\n\nexport interface VeloPlotProps extends UseVeloPlotOptions {\n series?: VeloPlotSeries[];\n width?: number | string;\n height?: number | string;\n class?: string;\n}\n\nexport function VeloPlot(props: VeloPlotProps) {\n const api = useVeloPlot(() => props);\n let previous = new Map<string, VeloPlotSeries>();\n\n createEffect(() => {\n if (!api.isReady() || !api.chart()) return;\n previous = diffSeries(\n {\n addSeries: api.addSeries,\n updateSeries: api.updateSeries,\n removeSeries: api.removeSeries,\n autoScale: () => api.chart()!.autoScale(),\n },\n props.series ?? [],\n previous,\n );\n });\n\n return (\n <div\n ref={(el) => api.setContainerRef(el)}\n className={`velo-plot-container${props.class ? ` ${props.class}` : \"\"}`}\n role=\"img\"\n style={{\n position: \"relative\",\n width: typeof props.width === \"number\" ? `${props.width}px` : props.width ?? \"100%\",\n height: typeof props.height === \"number\" ? `${props.height}px` : props.height ?? \"400px\",\n }}\n />\n );\n}\n\nexport function StackedPlot(\n props: {\n panes: import(\"../core/stacked\").StackedPaneConfig[];\n width?: number | string;\n height?: number | string;\n class?: string;\n } & Omit<import(\"../core/stacked\").StackedChartOptions, \"container\" | \"panes\">,\n) {\n const api = useStackedPlot(() => props);\n createEffect(() => api.sync());\n\n return (\n <div\n ref={(el) => api.setContainerRef(el)}\n className={`velo-plot-stacked${props.class ? ` ${props.class}` : \"\"}`}\n role=\"img\"\n style={{\n position: \"relative\",\n width: typeof props.width === \"number\" ? `${props.width}px` : props.width ?? \"100%\",\n height: typeof props.height === \"number\" ? `${props.height}px` : props.height ?? \"480px\",\n }}\n />\n );\n}\n","import { createSignal, createEffect, onCleanup } from \"solid-js\";\nimport type { AddIndicatorOptions, AddIndicatorResult } from \"../core/indicator/addIndicator\";\nimport type { IndicatorPresetName } from \"../core/indicator/indicatorPresets\";\nimport { addIndicatorToHost, isStackedChart, removeIndicatorFromChart, type IndicatorHost } from \"../bindings/shared\";\nimport type { Chart } from \"../core/chart/types\";\n\nexport function useIndicator(\n host: () => IndicatorHost,\n preset: IndicatorPresetName,\n options: AddIndicatorOptions = {},\n) {\n const [result, setResult] = createSignal<(AddIndicatorResult & { paneId?: string }) | null>(null);\n const [isLoading, setIsLoading] = createSignal(false);\n const [error, setError] = createSignal<Error | null>(null);\n\n createEffect(() => {\n const h = host();\n if (!h) return;\n let cancelled = false;\n setIsLoading(true);\n addIndicatorToHost(h, preset, options)\n .then((res) => {\n if (!cancelled) {\n setResult(res);\n setIsLoading(false);\n }\n })\n .catch((e) => {\n if (!cancelled) {\n setError(e instanceof Error ? e : new Error(String(e)));\n setIsLoading(false);\n }\n });\n onCleanup(() => {\n cancelled = true;\n const res = result();\n if (res && !isStackedChart(h)) removeIndicatorFromChart(h as Chart, res.id);\n });\n });\n\n return { result, isLoading, error };\n}\n","import { createSignal, createEffect, onCleanup } from \"solid-js\";\nimport type { ChartLike, SyncOptions } from \"../core/sync\";\nimport { ChartGroup } from \"../core/sync\";\nimport { createChartSync } from \"../bindings/shared\";\n\nexport function useChartSync(charts: () => ChartLike[], options?: SyncOptions) {\n const [group, setGroup] = createSignal<ChartGroup | null>(null);\n\n createEffect(() => {\n const list = charts();\n let handle: ReturnType<typeof createChartSync> | null = null;\n if (list.length >= 2) {\n handle = createChartSync(list, options);\n setGroup(handle.group);\n } else {\n setGroup(null);\n }\n onCleanup(() => handle?.destroy());\n });\n\n return { group };\n}\n\nexport const useChartGroup = useChartSync;\n","export { VeloPlot, StackedPlot } from \"./VeloPlot\";\nexport { useVeloPlot, type UseVeloPlotOptions } from \"./useVeloPlot\";\nexport { useStackedPlot } from \"./useStackedPlot\";\nexport { useIndicator } from \"./useIndicator\";\nexport { useChartSync, useChartGroup } from \"./useChartSync\";\n\nimport { VeloPlot as VeloPlotImpl } from \"./VeloPlot\";\nimport { useVeloPlot as useVeloPlotImpl } from \"./useVeloPlot\";\n\n/** @deprecated Use `VeloPlot` instead. **Removed in v4.0.** */\nexport const SciPlot = VeloPlotImpl;\n/** @deprecated Use `useVeloPlot` instead. **Removed in v4.0.** */\nexport const useSciPlot = useVeloPlotImpl;\n/** @deprecated Use `useVeloPlot` instead. **Removed in v4.0.** */\nexport const useSciChart = useVeloPlotImpl;\n"],"names":["useVeloPlot","options","chart","setChart","createSignal","isReady","setIsReady","error","setError","bounds","setBounds","container","destroy","prevSync","pickSyncableOptions","mount","el","handle","createChartLifecycle","onCleanup","createEffect","c","opts","next","optionsChanged","syncChartOptions","_a","id","data","z","useStackedPlot","getOptions","stack","setStack","structureKey","paneSeries","created","createStackedChart","stackedStructureKey","syncStackedPaneSeries","setContainerRef","s","syncStackedOptions","VeloPlot","props","api","previous","Map","diffSeries","addSeries","updateSeries","removeSeries","autoScale","series","_el$","_tmpl$","_$use","_$effect","_p$","_v$","class","_v$2","width","_v$3","height","e","className","t","_$setStyleProperty","a","undefined","StackedPlot","sync","_el$2","_v$4","_v$5","_v$6","useIndicator","host","preset","result","setResult","isLoading","setIsLoading","h","cancelled","addIndicatorToHost","res","isStackedChart","removeIndicatorFromChart","useChartSync","charts","group","setGroup","list","createChartSync","useChartGroup","SciPlot","VeloPlotImpl","useSciPlot","useVeloPlotImpl","useSciChart"],"mappings":"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"}
1
+ {"version":3,"file":"solid.js","sources":["../src/solid/useVeloPlot.ts","../src/solid/useStackedPlot.ts","../src/solid/VeloPlot.tsx","../src/solid/useIndicator.ts","../src/solid/useChartSync.ts","../src/solid/index.ts"],"sourcesContent":["import { createSignal, onCleanup, createEffect } from \"solid-js\";\nimport type { Chart } from \"../core/Chart\";\nimport type { SeriesOptions, SeriesUpdateData, ZoomOptions, Bounds } from \"../types\";\nimport {\n createChartLifecycle,\n type ChartBindingOptions,\n optionsChanged,\n syncChartOptions,\n pickSyncableOptions,\n} from \"../bindings/shared\";\n\nexport interface UseVeloPlotOptions extends ChartBindingOptions {}\n\nexport function useVeloPlot(options: () => UseVeloPlotOptions = () => ({})) {\n const [chart, setChart] = createSignal<Chart | null>(null);\n const [isReady, setIsReady] = createSignal(false);\n const [error, setError] = createSignal<Error | null>(null);\n const [bounds, setBounds] = createSignal<Bounds | null>(null);\n let container: HTMLDivElement | undefined;\n let destroy: (() => void) | null = null;\n let prevSync = pickSyncableOptions(options());\n\n const mount = (el: HTMLDivElement) => {\n container = el;\n destroy?.();\n const handle = createChartLifecycle(el, options(), {\n onBoundsChange: setBounds,\n onError: setError,\n });\n setChart(handle.chart);\n destroy = handle.destroy;\n setBounds(handle.getBounds());\n setIsReady(true);\n prevSync = pickSyncableOptions(options());\n };\n\n onCleanup(() => {\n destroy?.();\n setChart(null);\n setIsReady(false);\n });\n\n createEffect(() => {\n const c = chart();\n const opts = options();\n if (!c) return;\n const next = pickSyncableOptions(opts);\n if (optionsChanged(prevSync, next)) {\n syncChartOptions(c, prevSync, next);\n prevSync = next;\n }\n });\n\n return {\n setContainerRef: (el: HTMLDivElement | null | undefined) => {\n if (el && el !== container) mount(el);\n },\n chart,\n isReady,\n error,\n bounds,\n addSeries: (opts: SeriesOptions) => {\n chart()?.addSeries(opts);\n const c = chart();\n if (c) setBounds(c.getViewBounds());\n },\n updateSeries: (id: string, data: SeriesUpdateData) => chart()?.updateSeries(id, data),\n removeSeries: (id: string) => chart()?.removeSeries(id),\n zoom: (z: ZoomOptions) => chart()?.zoom(z),\n resetZoom: () => {\n chart()?.resetZoom();\n const c = chart();\n if (c) setBounds(c.getViewBounds());\n },\n };\n}\n","import { createSignal, onCleanup } from \"solid-js\";\nimport { createStackedChart } from \"../core/stacked\";\nimport type { StackedChart, StackedChartOptions } from \"../core/stacked\";\nimport type { Range } from \"../types\";\nimport { stackedStructureKey, syncStackedOptions, syncStackedPaneSeries } from \"../bindings/shared\";\nimport type { VeloPlotSeries } from \"../bindings/shared\";\n\nexport function useStackedPlot(getOptions: () => Omit<StackedChartOptions, \"container\">) {\n const [stack, setStack] = createSignal<StackedChart | null>(null);\n const [isReady, setIsReady] = createSignal(false);\n let destroy: (() => void) | null = null;\n let structureKey = \"\";\n let paneSeries = new Map<string, Map<string, VeloPlotSeries>>();\n\n const mount = (el: HTMLDivElement) => {\n destroy?.();\n const opts = getOptions();\n const created = createStackedChart({ ...opts, container: el });\n setStack(created);\n destroy = () => created.destroy();\n structureKey = stackedStructureKey(opts.panes);\n paneSeries = syncStackedPaneSeries(created, opts.panes, new Map());\n created.whenReady().then(() => setIsReady(true));\n };\n\n const setContainerRef = (el: HTMLDivElement | null | undefined) => {\n if (el) mount(el);\n };\n\n onCleanup(() => {\n destroy?.();\n setStack(null);\n setIsReady(false);\n });\n\n return {\n setContainerRef,\n stack,\n isReady,\n fitAll: (opts?: { x?: Range; padding?: number }) => stack()?.fitAll(opts),\n resetAll: () => stack()?.resetAll(),\n sync: () => {\n const s = stack();\n const opts = getOptions();\n if (!s || !isReady()) return;\n const nextKey = stackedStructureKey(opts.panes);\n if (nextKey !== structureKey) {\n mount(s.container);\n return;\n }\n syncStackedOptions(s, opts);\n paneSeries = syncStackedPaneSeries(s, opts.panes, paneSeries);\n },\n };\n}\n","import { createEffect } from \"solid-js\";\nimport { useVeloPlot, type UseVeloPlotOptions } from \"./useVeloPlot\";\nimport { useStackedPlot } from \"./useStackedPlot\";\nimport { diffSeries, type VeloPlotSeries } from \"../bindings/shared\";\n\nexport interface VeloPlotProps extends UseVeloPlotOptions {\n series?: VeloPlotSeries[];\n width?: number | string;\n height?: number | string;\n class?: string;\n}\n\nexport function VeloPlot(props: VeloPlotProps) {\n const api = useVeloPlot(() => props);\n let previous = new Map<string, VeloPlotSeries>();\n\n createEffect(() => {\n if (!api.isReady() || !api.chart()) return;\n previous = diffSeries(\n {\n addSeries: api.addSeries,\n updateSeries: api.updateSeries,\n removeSeries: api.removeSeries,\n autoScale: () => api.chart()!.autoScale(),\n },\n props.series ?? [],\n previous,\n );\n });\n\n return (\n <div\n ref={(el) => api.setContainerRef(el)}\n className={`velo-plot-container${props.class ? ` ${props.class}` : \"\"}`}\n role=\"img\"\n style={{\n position: \"relative\",\n width: typeof props.width === \"number\" ? `${props.width}px` : props.width ?? \"100%\",\n height: typeof props.height === \"number\" ? `${props.height}px` : props.height ?? \"400px\",\n }}\n />\n );\n}\n\nexport function StackedPlot(\n props: {\n panes: import(\"../core/stacked\").StackedPaneConfig[];\n width?: number | string;\n height?: number | string;\n class?: string;\n } & Omit<import(\"../core/stacked\").StackedChartOptions, \"container\" | \"panes\">,\n) {\n const api = useStackedPlot(() => props);\n createEffect(() => api.sync());\n\n return (\n <div\n ref={(el) => api.setContainerRef(el)}\n className={`velo-plot-stacked${props.class ? ` ${props.class}` : \"\"}`}\n role=\"img\"\n style={{\n position: \"relative\",\n width: typeof props.width === \"number\" ? `${props.width}px` : props.width ?? \"100%\",\n height: typeof props.height === \"number\" ? `${props.height}px` : props.height ?? \"480px\",\n }}\n />\n );\n}\n","import { createSignal, createEffect, onCleanup } from \"solid-js\";\nimport type { AddIndicatorOptions, AddIndicatorResult } from \"../core/indicator/addIndicator\";\nimport type { IndicatorPresetName } from \"../core/indicator/indicatorPresets\";\nimport { addIndicatorToHost, isStackedChart, removeIndicatorFromChart, type IndicatorHost } from \"../bindings/shared\";\nimport type { Chart } from \"../core/chart/types\";\n\nexport function useIndicator(\n host: () => IndicatorHost,\n preset: IndicatorPresetName,\n options: AddIndicatorOptions = {},\n) {\n const [result, setResult] = createSignal<(AddIndicatorResult & { paneId?: string }) | null>(null);\n const [isLoading, setIsLoading] = createSignal(false);\n const [error, setError] = createSignal<Error | null>(null);\n\n createEffect(() => {\n const h = host();\n if (!h) return;\n let cancelled = false;\n setIsLoading(true);\n addIndicatorToHost(h, preset, options)\n .then((res) => {\n if (!cancelled) {\n setResult(res);\n setIsLoading(false);\n }\n })\n .catch((e) => {\n if (!cancelled) {\n setError(e instanceof Error ? e : new Error(String(e)));\n setIsLoading(false);\n }\n });\n onCleanup(() => {\n cancelled = true;\n const res = result();\n if (res && !isStackedChart(h)) removeIndicatorFromChart(h as Chart, res.id);\n });\n });\n\n return { result, isLoading, error };\n}\n","import { createSignal, createEffect, onCleanup } from \"solid-js\";\nimport type { ChartLike, SyncOptions } from \"../core/sync\";\nimport { ChartGroup } from \"../core/sync\";\nimport { createChartSync } from \"../bindings/shared\";\n\nexport function useChartSync(charts: () => ChartLike[], options?: SyncOptions) {\n const [group, setGroup] = createSignal<ChartGroup | null>(null);\n\n createEffect(() => {\n const list = charts();\n let handle: ReturnType<typeof createChartSync> | null = null;\n if (list.length >= 2) {\n handle = createChartSync(list, options);\n setGroup(handle.group);\n } else {\n setGroup(null);\n }\n onCleanup(() => handle?.destroy());\n });\n\n return { group };\n}\n\nexport const useChartGroup = useChartSync;\n","export { VeloPlot, StackedPlot } from \"./VeloPlot\";\nexport { useVeloPlot, type UseVeloPlotOptions } from \"./useVeloPlot\";\nexport { useStackedPlot } from \"./useStackedPlot\";\nexport { useIndicator } from \"./useIndicator\";\nexport { useChartSync, useChartGroup } from \"./useChartSync\";\n\nimport { VeloPlot as VeloPlotImpl } from \"./VeloPlot\";\nimport { useVeloPlot as useVeloPlotImpl } from \"./useVeloPlot\";\n\n/** @deprecated Use `VeloPlot` instead. **Removed in v4.0.** */\nexport const SciPlot = VeloPlotImpl;\n/** @deprecated Use `useVeloPlot` instead. **Removed in v4.0.** */\nexport const useSciPlot = useVeloPlotImpl;\n/** @deprecated Use `useVeloPlot` instead. **Removed in v4.0.** */\nexport const useSciChart = useVeloPlotImpl;\n"],"names":["useVeloPlot","options","chart","setChart","createSignal","isReady","setIsReady","error","setError","bounds","setBounds","container","destroy","prevSync","pickSyncableOptions","mount","el","handle","createChartLifecycle","onCleanup","createEffect","c","opts","next","optionsChanged","syncChartOptions","_a","id","data","z","useStackedPlot","getOptions","stack","setStack","structureKey","paneSeries","created","createStackedChart","stackedStructureKey","syncStackedPaneSeries","setContainerRef","syncStackedOptions","VeloPlot","props","api","previous","Map","diffSeries","addSeries","updateSeries","removeSeries","autoScale","series","_el$","_tmpl$","_$use","_$effect","_p$","_v$","class","_v$2","width","_v$3","height","e","className","t","_$setStyleProperty","a","undefined","StackedPlot","sync","_el$2","_v$4","_v$5","_v$6","useIndicator","host","preset","result","setResult","isLoading","setIsLoading","h","cancelled","addIndicatorToHost","res","isStackedChart","removeIndicatorFromChart","useChartSync","charts","group","setGroup","list","createChartSync","useChartGroup","SciPlot","VeloPlotImpl","useSciPlot","useVeloPlotImpl","useSciChart"],"mappings":"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"}
package/dist/svelte.js CHANGED
@@ -1,13 +1,10 @@
1
- import { writable as p, get as i } from "svelte/store";
2
- import { c as g, i as k, r as b, a as w, b as P } from "./chartSyncBridge-DbWrwtyP.js";
3
- import { p as m, o as I, s as O } from "./optionsSync-QUiN4Inw.js";
4
- import { c as v } from "./createStackedChart-Dm-YqUT7.js";
5
- import "./ChartCore-BpzRvN4Y.js";
6
- import "./index-x4stH3jD.js";
7
- import "./symbols-DT0eLlpW.js";
1
+ import { writable as f, get as i } from "svelte/store";
2
+ import { p as m, o as g, s as k } from "./optionsSync-QUiN4Inw.js";
3
+ import { c as b, i as w, r as P, a as I, b as O } from "./chartSyncBridge-C1uRy0ZS.js";
4
+ import { c as v } from "./createStackedChart-DjA3aJAu.js";
8
5
  import { s as S, a as A, b as C } from "./stackedSync-tnrunZMt.js";
9
6
  function y(u = {}) {
10
- const n = p(null), c = p(!1), s = p(null), a = p(null);
7
+ const n = f(null), c = f(!1), s = f(null), a = f(null);
11
8
  let r = null, d = m(u);
12
9
  return {
13
10
  chart: n,
@@ -16,7 +13,7 @@ function y(u = {}) {
16
13
  bounds: a,
17
14
  mount: (t) => {
18
15
  r == null || r();
19
- const e = g(t, u, {
16
+ const e = b(t, u, {
20
17
  onBoundsChange: (l) => a.set(l),
21
18
  onError: (l) => s.set(l)
22
19
  });
@@ -29,7 +26,7 @@ function y(u = {}) {
29
26
  const e = i(n);
30
27
  if (!e) return;
31
28
  const l = m(t);
32
- I(d, l) && (O(e, d, l), d = l);
29
+ g(d, l) && (k(e, d, l), d = l);
33
30
  },
34
31
  addSeries: (t) => {
35
32
  var l;
@@ -57,8 +54,8 @@ function y(u = {}) {
57
54
  }
58
55
  };
59
56
  }
60
- function x(u) {
61
- const n = p(null), c = p(!1);
57
+ function L(u) {
58
+ const n = f(null), c = f(!1);
62
59
  let s = null, a = S(u.panes), r = /* @__PURE__ */ new Map();
63
60
  const d = (o) => {
64
61
  s == null || s();
@@ -91,29 +88,29 @@ function x(u) {
91
88
  }
92
89
  };
93
90
  }
94
- function F(u, n, c = {}) {
95
- const s = p(null), a = p(!1), r = p(null);
91
+ function M(u, n, c = {}) {
92
+ const s = f(null), a = f(!1), r = f(null);
96
93
  return { result: s, isLoading: a, error: r, run: async () => {
97
- const f = u();
98
- if (f) {
94
+ const p = u();
95
+ if (p) {
99
96
  a.set(!0);
100
97
  try {
101
- const o = await w(f, n, c);
98
+ const o = await I(p, n, c);
102
99
  s.set(o), a.set(!1);
103
100
  } catch (o) {
104
101
  r.set(o instanceof Error ? o : new Error(String(o))), a.set(!1);
105
102
  }
106
103
  }
107
104
  }, cleanup: () => {
108
- const f = u();
105
+ const p = u();
109
106
  let o = null;
110
107
  s.subscribe((e) => {
111
108
  o = (e == null ? void 0 : e.id) ?? null;
112
- })(), o && f && !k(f) && b(f, o);
109
+ })(), o && p && !w(p) && P(p, o);
113
110
  } };
114
111
  }
115
112
  function B(u, n) {
116
- const c = p(null);
113
+ const c = f(null);
117
114
  let s = null;
118
115
  return { group: c, sync: () => {
119
116
  s == null || s.destroy();
@@ -122,22 +119,22 @@ function B(u, n) {
122
119
  c.set(null);
123
120
  return;
124
121
  }
125
- s = P(d, n), c.set(s.group);
122
+ s = O(d, n), c.set(s.group);
126
123
  }, destroy: () => {
127
124
  s == null || s.destroy(), c.set(null);
128
125
  } };
129
126
  }
130
- const G = B, T = y, j = y, q = y;
127
+ const Z = B, x = y, F = y, G = y;
131
128
  export {
132
- j as createSciPlot,
133
- x as createStackedPlot,
129
+ F as createSciPlot,
130
+ L as createStackedPlot,
134
131
  y as createVeloPlot,
135
- G as useChartGroup,
132
+ Z as useChartGroup,
136
133
  B as useChartSync,
137
- F as useIndicator,
138
- q as useSciChart,
139
- T as useSciPlot,
140
- x as useStackedPlot,
134
+ M as useIndicator,
135
+ G as useSciChart,
136
+ x as useSciPlot,
137
+ L as useStackedPlot,
141
138
  y as useVeloPlot
142
139
  };
143
140
  //# sourceMappingURL=svelte.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"svelte.js","sources":["../src/svelte/useVeloPlot.ts","../src/svelte/useStackedPlot.ts","../src/svelte/useIndicator.ts","../src/svelte/useChartSync.ts","../src/svelte/index.ts"],"sourcesContent":["/**\n * Svelte composables for velo-plot (exported as functions).\n */\n\nimport { writable, get } from \"svelte/store\";\nimport type { Chart } from \"../core/Chart\";\nimport type { SeriesOptions, SeriesUpdateData, ZoomOptions, Bounds } from \"../types\";\nimport {\n createChartLifecycle,\n type ChartBindingOptions,\n optionsChanged,\n syncChartOptions,\n pickSyncableOptions,\n} from \"../bindings/shared\";\n\nexport interface UseVeloPlotOptions extends ChartBindingOptions {}\n\nexport function createVeloPlot(options: UseVeloPlotOptions = {}) {\n const chart = writable<Chart | null>(null);\n const isReady = writable(false);\n const error = writable<Error | null>(null);\n const bounds = writable<Bounds | null>(null);\n\n let destroy: (() => void) | null = null;\n let prevSync = pickSyncableOptions(options);\n\n const mount = (container: HTMLDivElement) => {\n destroy?.();\n const handle = createChartLifecycle(container, options, {\n onBoundsChange: (b) => bounds.set(b),\n onError: (e) => error.set(e),\n });\n chart.set(handle.chart);\n destroy = handle.destroy;\n bounds.set(handle.getBounds());\n isReady.set(true);\n prevSync = pickSyncableOptions(options);\n };\n\n const updateOptions = (next: UseVeloPlotOptions) => {\n const c = get(chart);\n if (!c) return;\n const picked = pickSyncableOptions(next);\n if (optionsChanged(prevSync, picked)) {\n syncChartOptions(c, prevSync, picked);\n prevSync = picked;\n }\n };\n\n const unmount = () => {\n destroy?.();\n destroy = null;\n chart.set(null);\n isReady.set(false);\n };\n\n return {\n chart,\n isReady,\n error,\n bounds,\n mount,\n unmount,\n updateOptions,\n addSeries: (opts: SeriesOptions) => {\n get(chart)?.addSeries(opts);\n const c = get(chart);\n if (c) bounds.set(c.getViewBounds());\n },\n updateSeries: (id: string, data: SeriesUpdateData) => get(chart)?.updateSeries(id, data),\n removeSeries: (id: string) => get(chart)?.removeSeries(id),\n zoom: (z: ZoomOptions) => get(chart)?.zoom(z),\n resetZoom: () => {\n get(chart)?.resetZoom();\n const c = get(chart);\n if (c) bounds.set(c.getViewBounds());\n },\n };\n}\n\nexport { createVeloPlot as useVeloPlot };\n","import { writable, get } from \"svelte/store\";\nimport { createStackedChart } from \"../core/stacked\";\nimport type { StackedChart, StackedChartOptions } from \"../core/stacked\";\nimport type { Range } from \"../types\";\nimport { stackedStructureKey, syncStackedOptions, syncStackedPaneSeries } from \"../bindings/shared\";\nimport type { VeloPlotSeries } from \"../bindings/shared\";\n\nexport function createStackedPlot(options: Omit<StackedChartOptions, \"container\">) {\n const stack = writable<StackedChart | null>(null);\n const isReady = writable(false);\n let destroy: (() => void) | null = null;\n let structureKey = stackedStructureKey(options.panes);\n let paneSeries = new Map<string, Map<string, VeloPlotSeries>>();\n\n const mount = (container: HTMLDivElement) => {\n destroy?.();\n const created = createStackedChart({ ...options, container });\n stack.set(created);\n destroy = () => created.destroy();\n structureKey = stackedStructureKey(options.panes);\n paneSeries = syncStackedPaneSeries(created, options.panes, new Map());\n created.whenReady().then(() => isReady.set(true));\n };\n\n const sync = (next: Omit<StackedChartOptions, \"container\">) => {\n const s = get(stack);\n if (!s || !get(isReady)) return;\n const nextKey = stackedStructureKey(next.panes);\n if (nextKey !== structureKey) {\n mount(s.container);\n return;\n }\n syncStackedOptions(s, next);\n paneSeries = syncStackedPaneSeries(s, next.panes, paneSeries);\n };\n\n const unmount = () => {\n destroy?.();\n stack.set(null);\n isReady.set(false);\n };\n\n return {\n stack,\n isReady,\n mount,\n unmount,\n sync,\n fitAll: (opts?: { x?: Range; padding?: number }) => get(stack)?.fitAll(opts),\n resetAll: () => get(stack)?.resetAll(),\n };\n}\n\nexport { createStackedPlot as useStackedPlot };\n","import { writable } from \"svelte/store\";\nimport type { AddIndicatorOptions, AddIndicatorResult } from \"../core/indicator/addIndicator\";\nimport type { IndicatorPresetName } from \"../core/indicator/indicatorPresets\";\nimport { addIndicatorToHost, isStackedChart, removeIndicatorFromChart, type IndicatorHost } from \"../bindings/shared\";\nimport type { Chart } from \"../core/chart/types\";\n\nexport function useIndicator(\n getHost: () => IndicatorHost,\n preset: IndicatorPresetName,\n options: AddIndicatorOptions = {},\n) {\n const result = writable<(AddIndicatorResult & { paneId?: string }) | null>(null);\n const isLoading = writable(false);\n const error = writable<Error | null>(null);\n\n const run = async () => {\n const host = getHost();\n if (!host) return;\n isLoading.set(true);\n try {\n const res = await addIndicatorToHost(host, preset, options);\n result.set(res);\n isLoading.set(false);\n } catch (e) {\n error.set(e instanceof Error ? e : new Error(String(e)));\n isLoading.set(false);\n }\n };\n\n const cleanupIndicator = () => {\n const host = getHost();\n let currentId: string | null = null;\n const unsub = result.subscribe((r) => {\n currentId = r?.id ?? null;\n });\n unsub();\n if (currentId && host && !isStackedChart(host)) {\n removeIndicatorFromChart(host as Chart, currentId);\n }\n };\n\n return { result, isLoading, error, run, cleanup: cleanupIndicator };\n}\n","import { writable } from \"svelte/store\";\nimport type { ChartLike, SyncOptions } from \"../core/sync\";\nimport { ChartGroup } from \"../core/sync\";\nimport { createChartSync } from \"../bindings/shared\";\n\nexport function useChartSync(getCharts: () => ChartLike[], options?: SyncOptions) {\n const group = writable<ChartGroup | null>(null);\n let handle: ReturnType<typeof createChartSync> | null = null;\n\n const sync = () => {\n handle?.destroy();\n const charts = getCharts();\n if (charts.length < 2) {\n group.set(null);\n return;\n }\n handle = createChartSync(charts, options);\n group.set(handle.group);\n };\n\n const destroy = () => {\n handle?.destroy();\n group.set(null);\n };\n\n return { group, sync, destroy };\n}\n\nexport const useChartGroup = useChartSync;\n","export { createVeloPlot, useVeloPlot, type UseVeloPlotOptions } from \"./useVeloPlot\";\nexport { createStackedPlot, useStackedPlot } from \"./useStackedPlot\";\nexport { useIndicator } from \"./useIndicator\";\nexport { useChartSync, useChartGroup } from \"./useChartSync\";\n\nimport { useVeloPlot as useVeloPlotImpl, createVeloPlot as createVeloPlotImpl } from \"./useVeloPlot\";\n\n/** @deprecated Use `useVeloPlot` / `createVeloPlot` instead. **Removed in v4.0.** */\nexport const useSciPlot = useVeloPlotImpl;\n/** @deprecated Use `createVeloPlot` instead. **Removed in v4.0.** */\nexport const createSciPlot = createVeloPlotImpl;\n/** @deprecated Use `useVeloPlot` instead. **Removed in v4.0.** */\nexport const useSciChart = useVeloPlotImpl;\n\n// Svelte components: import from 'velo-plot/svelte/VeloPlot.svelte' (shipped as source)\n"],"names":["createVeloPlot","options","chart","writable","isReady","error","bounds","destroy","prevSync","pickSyncableOptions","container","handle","createChartLifecycle","b","e","next","c","get","picked","optionsChanged","syncChartOptions","opts","_a","id","data","z","createStackedPlot","stack","structureKey","stackedStructureKey","paneSeries","mount","created","createStackedChart","syncStackedPaneSeries","s","syncStackedOptions","useIndicator","getHost","preset","result","isLoading","host","res","addIndicatorToHost","currentId","r","isStackedChart","removeIndicatorFromChart","useChartSync","getCharts","group","charts","createChartSync","useChartGroup","useSciPlot","useVeloPlotImpl","createSciPlot","createVeloPlotImpl","useSciChart"],"mappings":"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"}
1
+ {"version":3,"file":"svelte.js","sources":["../src/svelte/useVeloPlot.ts","../src/svelte/useStackedPlot.ts","../src/svelte/useIndicator.ts","../src/svelte/useChartSync.ts","../src/svelte/index.ts"],"sourcesContent":["/**\n * Svelte composables for velo-plot (exported as functions).\n */\n\nimport { writable, get } from \"svelte/store\";\nimport type { Chart } from \"../core/Chart\";\nimport type { SeriesOptions, SeriesUpdateData, ZoomOptions, Bounds } from \"../types\";\nimport {\n createChartLifecycle,\n type ChartBindingOptions,\n optionsChanged,\n syncChartOptions,\n pickSyncableOptions,\n} from \"../bindings/shared\";\n\nexport interface UseVeloPlotOptions extends ChartBindingOptions {}\n\nexport function createVeloPlot(options: UseVeloPlotOptions = {}) {\n const chart = writable<Chart | null>(null);\n const isReady = writable(false);\n const error = writable<Error | null>(null);\n const bounds = writable<Bounds | null>(null);\n\n let destroy: (() => void) | null = null;\n let prevSync = pickSyncableOptions(options);\n\n const mount = (container: HTMLDivElement) => {\n destroy?.();\n const handle = createChartLifecycle(container, options, {\n onBoundsChange: (b) => bounds.set(b),\n onError: (e) => error.set(e),\n });\n chart.set(handle.chart);\n destroy = handle.destroy;\n bounds.set(handle.getBounds());\n isReady.set(true);\n prevSync = pickSyncableOptions(options);\n };\n\n const updateOptions = (next: UseVeloPlotOptions) => {\n const c = get(chart);\n if (!c) return;\n const picked = pickSyncableOptions(next);\n if (optionsChanged(prevSync, picked)) {\n syncChartOptions(c, prevSync, picked);\n prevSync = picked;\n }\n };\n\n const unmount = () => {\n destroy?.();\n destroy = null;\n chart.set(null);\n isReady.set(false);\n };\n\n return {\n chart,\n isReady,\n error,\n bounds,\n mount,\n unmount,\n updateOptions,\n addSeries: (opts: SeriesOptions) => {\n get(chart)?.addSeries(opts);\n const c = get(chart);\n if (c) bounds.set(c.getViewBounds());\n },\n updateSeries: (id: string, data: SeriesUpdateData) => get(chart)?.updateSeries(id, data),\n removeSeries: (id: string) => get(chart)?.removeSeries(id),\n zoom: (z: ZoomOptions) => get(chart)?.zoom(z),\n resetZoom: () => {\n get(chart)?.resetZoom();\n const c = get(chart);\n if (c) bounds.set(c.getViewBounds());\n },\n };\n}\n\nexport { createVeloPlot as useVeloPlot };\n","import { writable, get } from \"svelte/store\";\nimport { createStackedChart } from \"../core/stacked\";\nimport type { StackedChart, StackedChartOptions } from \"../core/stacked\";\nimport type { Range } from \"../types\";\nimport { stackedStructureKey, syncStackedOptions, syncStackedPaneSeries } from \"../bindings/shared\";\nimport type { VeloPlotSeries } from \"../bindings/shared\";\n\nexport function createStackedPlot(options: Omit<StackedChartOptions, \"container\">) {\n const stack = writable<StackedChart | null>(null);\n const isReady = writable(false);\n let destroy: (() => void) | null = null;\n let structureKey = stackedStructureKey(options.panes);\n let paneSeries = new Map<string, Map<string, VeloPlotSeries>>();\n\n const mount = (container: HTMLDivElement) => {\n destroy?.();\n const created = createStackedChart({ ...options, container });\n stack.set(created);\n destroy = () => created.destroy();\n structureKey = stackedStructureKey(options.panes);\n paneSeries = syncStackedPaneSeries(created, options.panes, new Map());\n created.whenReady().then(() => isReady.set(true));\n };\n\n const sync = (next: Omit<StackedChartOptions, \"container\">) => {\n const s = get(stack);\n if (!s || !get(isReady)) return;\n const nextKey = stackedStructureKey(next.panes);\n if (nextKey !== structureKey) {\n mount(s.container);\n return;\n }\n syncStackedOptions(s, next);\n paneSeries = syncStackedPaneSeries(s, next.panes, paneSeries);\n };\n\n const unmount = () => {\n destroy?.();\n stack.set(null);\n isReady.set(false);\n };\n\n return {\n stack,\n isReady,\n mount,\n unmount,\n sync,\n fitAll: (opts?: { x?: Range; padding?: number }) => get(stack)?.fitAll(opts),\n resetAll: () => get(stack)?.resetAll(),\n };\n}\n\nexport { createStackedPlot as useStackedPlot };\n","import { writable } from \"svelte/store\";\nimport type { AddIndicatorOptions, AddIndicatorResult } from \"../core/indicator/addIndicator\";\nimport type { IndicatorPresetName } from \"../core/indicator/indicatorPresets\";\nimport { addIndicatorToHost, isStackedChart, removeIndicatorFromChart, type IndicatorHost } from \"../bindings/shared\";\nimport type { Chart } from \"../core/chart/types\";\n\nexport function useIndicator(\n getHost: () => IndicatorHost,\n preset: IndicatorPresetName,\n options: AddIndicatorOptions = {},\n) {\n const result = writable<(AddIndicatorResult & { paneId?: string }) | null>(null);\n const isLoading = writable(false);\n const error = writable<Error | null>(null);\n\n const run = async () => {\n const host = getHost();\n if (!host) return;\n isLoading.set(true);\n try {\n const res = await addIndicatorToHost(host, preset, options);\n result.set(res);\n isLoading.set(false);\n } catch (e) {\n error.set(e instanceof Error ? e : new Error(String(e)));\n isLoading.set(false);\n }\n };\n\n const cleanupIndicator = () => {\n const host = getHost();\n let currentId: string | null = null;\n const unsub = result.subscribe((r) => {\n currentId = r?.id ?? null;\n });\n unsub();\n if (currentId && host && !isStackedChart(host)) {\n removeIndicatorFromChart(host as Chart, currentId);\n }\n };\n\n return { result, isLoading, error, run, cleanup: cleanupIndicator };\n}\n","import { writable } from \"svelte/store\";\nimport type { ChartLike, SyncOptions } from \"../core/sync\";\nimport { ChartGroup } from \"../core/sync\";\nimport { createChartSync } from \"../bindings/shared\";\n\nexport function useChartSync(getCharts: () => ChartLike[], options?: SyncOptions) {\n const group = writable<ChartGroup | null>(null);\n let handle: ReturnType<typeof createChartSync> | null = null;\n\n const sync = () => {\n handle?.destroy();\n const charts = getCharts();\n if (charts.length < 2) {\n group.set(null);\n return;\n }\n handle = createChartSync(charts, options);\n group.set(handle.group);\n };\n\n const destroy = () => {\n handle?.destroy();\n group.set(null);\n };\n\n return { group, sync, destroy };\n}\n\nexport const useChartGroup = useChartSync;\n","export { createVeloPlot, useVeloPlot, type UseVeloPlotOptions } from \"./useVeloPlot\";\nexport { createStackedPlot, useStackedPlot } from \"./useStackedPlot\";\nexport { useIndicator } from \"./useIndicator\";\nexport { useChartSync, useChartGroup } from \"./useChartSync\";\n\nimport { useVeloPlot as useVeloPlotImpl, createVeloPlot as createVeloPlotImpl } from \"./useVeloPlot\";\n\n/** @deprecated Use `useVeloPlot` / `createVeloPlot` instead. **Removed in v4.0.** */\nexport const useSciPlot = useVeloPlotImpl;\n/** @deprecated Use `createVeloPlot` instead. **Removed in v4.0.** */\nexport const createSciPlot = createVeloPlotImpl;\n/** @deprecated Use `useVeloPlot` instead. **Removed in v4.0.** */\nexport const useSciChart = useVeloPlotImpl;\n\n// Svelte components: import from 'velo-plot/svelte/VeloPlot.svelte' (shipped as source)\n"],"names":["createVeloPlot","options","chart","writable","isReady","error","bounds","destroy","prevSync","pickSyncableOptions","container","handle","createChartLifecycle","b","e","next","c","get","picked","optionsChanged","syncChartOptions","opts","_a","id","data","z","createStackedPlot","stack","structureKey","stackedStructureKey","paneSeries","mount","created","createStackedChart","syncStackedPaneSeries","s","syncStackedOptions","useIndicator","getHost","preset","result","isLoading","host","res","addIndicatorToHost","currentId","r","isStackedChart","removeIndicatorFromChart","useChartSync","getCharts","group","charts","createChartSync","useChartGroup","useSciPlot","useVeloPlotImpl","createSciPlot","createVeloPlotImpl","useSciChart"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ function s(t, e) {
2
+ if (t.length < 2 || e < 2) return [];
3
+ const n = [];
4
+ for (let r = 0; r < t.length - 1; r++) {
5
+ const o = (t[r + 1] - t[r]) / e;
6
+ for (let u = 1; u < e; u++)
7
+ n.push(t[r] + o * u);
8
+ }
9
+ return n;
10
+ }
11
+ function c(t, e) {
12
+ if (!e) return t;
13
+ const n = e.timeByIndex.length - 1;
14
+ if (n < 0) return [];
15
+ const r = /* @__PURE__ */ new Set(), o = [];
16
+ for (const u of t) {
17
+ const f = Math.round(u);
18
+ f >= 0 && f <= n && !r.has(f) && (r.add(f), o.push(f));
19
+ }
20
+ return o;
21
+ }
22
+ function a(t, e, n) {
23
+ return c(t.ticks(e), n);
24
+ }
25
+ function i(t, e) {
26
+ return t.ticks(e);
27
+ }
28
+ function l(t, e) {
29
+ return e && t.has(e) ? t.get(e) : t.get("default") ?? t.values().next().value;
30
+ }
31
+ function h(t, e, n) {
32
+ return e && t.has(e) ? t.get(e) : l(t, n);
33
+ }
34
+ export {
35
+ a,
36
+ h as b,
37
+ s as g,
38
+ l as p,
39
+ i as r
40
+ };
41
+ //# sourceMappingURL=tickUtils-B_X-ha13.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickUtils-B_X-ha13.js","sources":["../src/core/chart/exporter/svg/tickUtils.ts"],"sourcesContent":["/**\n * Tick generation utilities shared with OverlayRenderer logic.\n */\n\nimport type { Scale } from \"../../../../scales\";\nimport type { BusinessDayMapping } from \"../../../time/TimeScale\";\n\nexport function generateMinorTicks(majorTicks: number[], divisions: number): number[] {\n if (majorTicks.length < 2 || divisions < 2) return [];\n const minor: number[] = [];\n for (let i = 0; i < majorTicks.length - 1; i++) {\n const step = (majorTicks[i + 1] - majorTicks[i]) / divisions;\n for (let j = 1; j < divisions; j++) {\n minor.push(majorTicks[i] + step * j);\n }\n }\n return minor;\n}\n\nexport function filterBusinessDayXTicks(\n ticks: number[],\n mapping: BusinessDayMapping | null | undefined,\n): number[] {\n if (!mapping) return ticks;\n const maxIdx = mapping.timeByIndex.length - 1;\n if (maxIdx < 0) return [];\n const seen = new Set<number>();\n const result: number[] = [];\n for (const tick of ticks) {\n const idx = Math.round(tick);\n if (idx >= 0 && idx <= maxIdx && !seen.has(idx)) {\n seen.add(idx);\n result.push(idx);\n }\n }\n return result;\n}\n\nexport function resolveXTicks(\n xScale: Scale,\n tickCount: number,\n mapping?: BusinessDayMapping | null,\n): number[] {\n return filterBusinessDayXTicks(xScale.ticks(tickCount), mapping);\n}\n\nexport function resolveGridXTicks(xScale: Scale, tickCount: number): number[] {\n return xScale.ticks(tickCount);\n}\n\nexport function primaryYScale(\n yAxes: Map<string, Scale>,\n primaryYAxisId?: string,\n): Scale | undefined {\n if (primaryYAxisId && yAxes.has(primaryYAxisId)) {\n return yAxes.get(primaryYAxisId);\n }\n return yAxes.get(\"default\") ?? yAxes.values().next().value;\n}\n\nexport function resolveYScale(\n yAxes: Map<string, Scale>,\n yAxisId: string | undefined,\n primaryYAxisId?: string,\n): Scale | undefined {\n if (yAxisId && yAxes.has(yAxisId)) return yAxes.get(yAxisId);\n return primaryYScale(yAxes, primaryYAxisId);\n}\n"],"names":["generateMinorTicks","majorTicks","divisions","minor","i","step","j","filterBusinessDayXTicks","ticks","mapping","maxIdx","seen","result","tick","idx","resolveXTicks","xScale","tickCount","resolveGridXTicks","primaryYScale","yAxes","primaryYAxisId","resolveYScale","yAxisId"],"mappings":"AAOO,SAASA,EAAmBC,GAAsBC,GAA6B;AACpF,MAAID,EAAW,SAAS,KAAKC,IAAY,UAAU,CAAA;AACnD,QAAMC,IAAkB,CAAA;AACxB,WAASC,IAAI,GAAGA,IAAIH,EAAW,SAAS,GAAGG,KAAK;AAC9C,UAAMC,KAAQJ,EAAWG,IAAI,CAAC,IAAIH,EAAWG,CAAC,KAAKF;AACnD,aAASI,IAAI,GAAGA,IAAIJ,GAAWI;AAC7B,MAAAH,EAAM,KAAKF,EAAWG,CAAC,IAAIC,IAAOC,CAAC;AAAA,EAEvC;AACA,SAAOH;AACT;AAEO,SAASI,EACdC,GACAC,GACU;AACV,MAAI,CAACA,EAAS,QAAOD;AACrB,QAAME,IAASD,EAAQ,YAAY,SAAS;AAC5C,MAAIC,IAAS,EAAG,QAAO,CAAA;AACvB,QAAMC,wBAAW,IAAA,GACXC,IAAmB,CAAA;AACzB,aAAWC,KAAQL,GAAO;AACxB,UAAMM,IAAM,KAAK,MAAMD,CAAI;AAC3B,IAAIC,KAAO,KAAKA,KAAOJ,KAAU,CAACC,EAAK,IAAIG,CAAG,MAC5CH,EAAK,IAAIG,CAAG,GACZF,EAAO,KAAKE,CAAG;AAAA,EAEnB;AACA,SAAOF;AACT;AAEO,SAASG,EACdC,GACAC,GACAR,GACU;AACV,SAAOF,EAAwBS,EAAO,MAAMC,CAAS,GAAGR,CAAO;AACjE;AAEO,SAASS,EAAkBF,GAAeC,GAA6B;AAC5E,SAAOD,EAAO,MAAMC,CAAS;AAC/B;AAEO,SAASE,EACdC,GACAC,GACmB;AACnB,SAAIA,KAAkBD,EAAM,IAAIC,CAAc,IACrCD,EAAM,IAAIC,CAAc,IAE1BD,EAAM,IAAI,SAAS,KAAKA,EAAM,OAAA,EAAS,OAAO;AACvD;AAEO,SAASE,EACdF,GACAG,GACAF,GACmB;AACnB,SAAIE,KAAWH,EAAM,IAAIG,CAAO,IAAUH,EAAM,IAAIG,CAAO,IACpDJ,EAAcC,GAAOC,CAAc;AAC5C;"}
@@ -1,7 +1,4 @@
1
- /**
2
- * velo-plot/trading — focused trading dashboard bundle (Stage 2).
3
- * Tree-shakes scientific/3D plugins; includes stacked charts, indicators, drawings, replay.
4
- */
1
+
5
2
  export { createChart } from '../core/Chart';
6
3
  export { createStackedChart } from '../core/stacked/createStackedChart';
7
4
  export type { Chart, ChartOptions } from '../core/Chart';
@@ -0,0 +1,3 @@
1
+ export declare function patchChartTradingMethods(): void;
2
+ /** Register trading extensions (call on `velo-plot/trading` import). */
3
+ export declare function registerTradingBundle(): void;