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/velo-plot.js CHANGED
@@ -1,32 +1,37 @@
1
- import { A as r, D as s, z as t, e as n, d as i, L as g, a as c, N as l, a5 as o, S as E, c as m, N as T, a4 as u, b as A, f as N, y as P, C as d, g as f, P as L } from "./ChartCore-BpzRvN4Y.js";
2
- import { E as S } from "./axisFormat-CzumxpCL.js";
3
- import { h as p, f as I, c as M, d as R, g as _, r as x } from "./index.core-BmZe2jRQ.js";
1
+ import { E as g } from "./axisFormat-Sz4WIJfQ.js";
2
+ import { D as o, e as l, d as u, L as E, a as f, N as m, P, S as p, c as T, N as d, h as L, b as x, f as N, g as R, p as S } from "./ChartCore-KYG2HTcK.js";
3
+ import { c as C, d as H, g as M, r as b } from "./PluginRegistry-CDf_jcnp.js";
4
+ function t(e) {
5
+ return e;
6
+ }
7
+ function s(e, a) {
8
+ return (r) => ({
9
+ ...a(r),
10
+ manifest: e
11
+ });
12
+ }
4
13
  export {
5
- r as AnimationEngine,
6
- s as DARK_THEME,
7
- t as DEFAULT_ANIMATION_CONFIG,
8
- n as DEFAULT_THEME,
9
- S as EventEmitter,
10
- i as LIGHT_THEME,
11
- g as LinearScale,
12
- c as LogScale,
13
- l as NativeWebGLRenderer,
14
- o as PluginManagerImpl,
15
- E as Series,
16
- m as createChart,
17
- p as createConfigurablePlugin,
18
- T as createNativeRenderer,
19
- I as createPlugin,
20
- u as createPluginContext,
21
- M as createRenderer,
22
- A as createScale,
14
+ o as DARK_THEME,
15
+ l as DEFAULT_THEME,
16
+ g as EventEmitter,
17
+ u as LIGHT_THEME,
18
+ E as LinearScale,
19
+ f as LogScale,
20
+ m as NativeWebGLRenderer,
21
+ P as PluginManagerImpl,
22
+ p as Series,
23
+ T as createChart,
24
+ s as createConfigurablePlugin,
25
+ d as createNativeRenderer,
26
+ t as createPlugin,
27
+ L as createPluginContext,
28
+ C as createRenderer,
29
+ x as createScale,
23
30
  N as createTheme,
24
- R as definePlugin,
25
- P as easings,
26
- _ as getPluginRegistry,
27
- d as getSharedAnimationEngine,
28
- f as getThemeByName,
29
- L as parseColor,
30
- x as registerPlugin
31
+ H as definePlugin,
32
+ M as getPluginRegistry,
33
+ R as getThemeByName,
34
+ S as parseColor,
35
+ b as registerPlugin
31
36
  };
32
37
  //# sourceMappingURL=velo-plot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"velo-plot.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"velo-plot.js","sources":["../src/plugins/createPlugin.ts"],"sourcesContent":["import type { ChartPlugin, PluginFactory, PluginManifest } from \"./types\";\n\nexport function createPlugin<TConfig = void, TApi extends Record<string, unknown> = {}>(\n definition: ChartPlugin<TConfig> & { api?: TApi },\n): ChartPlugin<TConfig> & { api: TApi } {\n return definition as ChartPlugin<TConfig> & { api: TApi };\n}\n\nexport function createConfigurablePlugin<TConfig = void>(\n manifest: PluginManifest,\n factory: (config?: TConfig) => Omit<ChartPlugin<TConfig>, \"manifest\">,\n): PluginFactory<TConfig> {\n return (config?: TConfig) => ({\n ...factory(config),\n manifest,\n });\n}\n"],"names":["createPlugin","definition","createConfigurablePlugin","manifest","factory","config"],"mappings":";;;AAEO,SAASA,EACdC,GACsC;AACtC,SAAOA;AACT;AAEO,SAASC,EACdC,GACAC,GACwB;AACxB,SAAO,CAACC,OAAsB;AAAA,IAC5B,GAAGD,EAAQC,CAAM;AAAA,IACjB,UAAAF;AAAA,EAAA;AAEJ;"}
@@ -40,8 +40,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
40
40
  onZoomChange?: ((bounds: Bounds) => any) | undefined;
41
41
  }>, {
42
42
  width: number | string;
43
- height: number | string;
44
43
  series: VeloPlotSeries[];
44
+ height: number | string;
45
45
  keyboardNav: boolean;
46
46
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
47
47
  export default _default;
@@ -32,18 +32,28 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
32
32
  tooltip: {
33
33
  type: import('vue').PropType<import('..').TooltipOptions>;
34
34
  };
35
+ background: {
36
+ type: import('vue').PropType<string>;
37
+ };
38
+ series: {
39
+ type: import('vue').PropType<import('..').VeloPlotSeries[]>;
40
+ default: () => never[];
41
+ };
42
+ plugins: {
43
+ type: import('vue').PropType<import('..').ChartPlugin<unknown>[]>;
44
+ };
35
45
  theme: {
36
46
  type: import('vue').PropType<string | object>;
37
47
  };
48
+ showLegend: {
49
+ type: import('vue').PropType<boolean>;
50
+ };
38
51
  loading: {
39
52
  type: import('vue').PropType<boolean | import('..').PluginLoadingConfig>;
40
53
  };
41
54
  devicePixelRatio: {
42
55
  type: import('vue').PropType<number>;
43
56
  };
44
- background: {
45
- type: import('vue').PropType<string>;
46
- };
47
57
  colorScheme: {
48
58
  type: import('vue').PropType<string>;
49
59
  };
@@ -51,15 +61,8 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
51
61
  type: import('vue').PropType<string | number>;
52
62
  default: number;
53
63
  };
54
- series: {
55
- type: import('vue').PropType<import('..').VeloPlotSeries[]>;
56
- default: () => never[];
57
- };
58
64
  renderer: {
59
- type: import('vue').PropType<"webgl" | "webgpu">;
60
- };
61
- showLegend: {
62
- type: import('vue').PropType<boolean>;
65
+ type: import('vue').PropType<"webgl" | "webgpu" | "svg">;
63
66
  };
64
67
  legendPosition: {
65
68
  type: import('vue').PropType<{
@@ -84,9 +87,6 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
84
87
  reducedMotion?: boolean | "auto";
85
88
  })>;
86
89
  };
87
- plugins: {
88
- type: import('vue').PropType<any[]>;
89
- };
90
90
  layout: {
91
91
  type: import('vue').PropType<import('..').LayoutOptions>;
92
92
  };
@@ -105,10 +105,10 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
105
105
  clipboard: {
106
106
  type: import('vue').PropType<boolean | import('..').ClipboardOptions>;
107
107
  };
108
- class: {
108
+ ariaLabel: {
109
109
  type: import('vue').PropType<string>;
110
110
  };
111
- ariaLabel: {
111
+ class: {
112
112
  type: import('vue').PropType<string>;
113
113
  };
114
114
  autoResize: {
@@ -150,18 +150,28 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
150
150
  tooltip: {
151
151
  type: import('vue').PropType<import('..').TooltipOptions>;
152
152
  };
153
+ background: {
154
+ type: import('vue').PropType<string>;
155
+ };
156
+ series: {
157
+ type: import('vue').PropType<import('..').VeloPlotSeries[]>;
158
+ default: () => never[];
159
+ };
160
+ plugins: {
161
+ type: import('vue').PropType<import('..').ChartPlugin<unknown>[]>;
162
+ };
153
163
  theme: {
154
164
  type: import('vue').PropType<string | object>;
155
165
  };
166
+ showLegend: {
167
+ type: import('vue').PropType<boolean>;
168
+ };
156
169
  loading: {
157
170
  type: import('vue').PropType<boolean | import('..').PluginLoadingConfig>;
158
171
  };
159
172
  devicePixelRatio: {
160
173
  type: import('vue').PropType<number>;
161
174
  };
162
- background: {
163
- type: import('vue').PropType<string>;
164
- };
165
175
  colorScheme: {
166
176
  type: import('vue').PropType<string>;
167
177
  };
@@ -169,15 +179,8 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
169
179
  type: import('vue').PropType<string | number>;
170
180
  default: number;
171
181
  };
172
- series: {
173
- type: import('vue').PropType<import('..').VeloPlotSeries[]>;
174
- default: () => never[];
175
- };
176
182
  renderer: {
177
- type: import('vue').PropType<"webgl" | "webgpu">;
178
- };
179
- showLegend: {
180
- type: import('vue').PropType<boolean>;
183
+ type: import('vue').PropType<"webgl" | "webgpu" | "svg">;
181
184
  };
182
185
  legendPosition: {
183
186
  type: import('vue').PropType<{
@@ -202,9 +205,6 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
202
205
  reducedMotion?: boolean | "auto";
203
206
  })>;
204
207
  };
205
- plugins: {
206
- type: import('vue').PropType<any[]>;
207
- };
208
208
  layout: {
209
209
  type: import('vue').PropType<import('..').LayoutOptions>;
210
210
  };
@@ -223,10 +223,10 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
223
223
  clipboard: {
224
224
  type: import('vue').PropType<boolean | import('..').ClipboardOptions>;
225
225
  };
226
- class: {
226
+ ariaLabel: {
227
227
  type: import('vue').PropType<string>;
228
228
  };
229
- ariaLabel: {
229
+ class: {
230
230
  type: import('vue').PropType<string>;
231
231
  };
232
232
  autoResize: {
@@ -240,8 +240,8 @@ export declare const SciPlot: import('vue').DefineComponent<import('vue').Extrac
240
240
  onZoomChange?: ((bounds: import('..').Bounds) => any) | undefined;
241
241
  }>, {
242
242
  width: number | string;
243
- height: number | string;
244
243
  series: import('..').VeloPlotSeries[];
244
+ height: number | string;
245
245
  keyboardNav: boolean;
246
246
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
247
247
  /** @deprecated Use `useVeloPlot` instead. **Removed in v4.0.** */
package/dist/vue.js CHANGED
@@ -1,11 +1,8 @@
1
1
  import { ref as f, shallowRef as C, watch as m, onMounted as R, onUnmounted as p, defineComponent as A, createElementBlock as O, openBlock as P, normalizeStyle as L, normalizeClass as z, unref as j } from "vue";
2
- import { c as E, i as B, r as k, a as V, b as $ } from "./chartSyncBridge-DbWrwtyP.js";
3
- import { p as S, o as K, s as M, d as N } from "./optionsSync-QUiN4Inw.js";
4
- import "./ChartCore-BpzRvN4Y.js";
5
- import "./index-x4stH3jD.js";
6
- import "./symbols-DT0eLlpW.js";
2
+ import { p as S, o as E, s as V, d as $ } from "./optionsSync-QUiN4Inw.js";
3
+ import { c as K, i as B, r as k, a as M, b as N } from "./chartSyncBridge-C1uRy0ZS.js";
7
4
  import { a as I, u as Z } from "./a11y-Bw6urYpr.js";
8
- import { c as J } from "./createStackedChart-Dm-YqUT7.js";
5
+ import { c as J } from "./createStackedChart-DjA3aJAu.js";
9
6
  import { s as b, a as T, b as x } from "./stackedSync-tnrunZMt.js";
10
7
  function w(t = {}) {
11
8
  const d = f(null), a = C(null), e = f(!1), n = f(null), u = f(null);
@@ -19,14 +16,14 @@ function w(t = {}) {
19
16
  const s = a.value;
20
17
  if (!s) return;
21
18
  const v = S(l);
22
- K(o, v) && (M(s, o, v), o = v);
19
+ E(o, v) && (V(s, o, v), o = v);
23
20
  },
24
21
  { deep: !0 }
25
22
  ), R(() => {
26
23
  const l = d.value;
27
24
  if (l)
28
25
  try {
29
- const s = E(l, c.current, {
26
+ const s = K(l, c.current, {
30
27
  onBoundsChange: (v) => {
31
28
  u.value = v;
32
29
  },
@@ -122,7 +119,7 @@ const F = /* @__PURE__ */ A({
122
119
  return m(
123
120
  () => [e.series, r.value, u.value],
124
121
  () => {
125
- !r.value || !u.value || (v.value = N(
122
+ !r.value || !u.value || (v.value = $(
126
123
  {
127
124
  addSeries: o,
128
125
  updateSeries: i,
@@ -208,7 +205,7 @@ function G(t) {
208
205
  }
209
206
  };
210
207
  }
211
- const U = ["aria-label", "data-ready"], ae = /* @__PURE__ */ A({
208
+ const U = ["aria-label", "data-ready"], _ = /* @__PURE__ */ A({
212
209
  __name: "StackedPlot",
213
210
  props: {
214
211
  panes: {},
@@ -254,7 +251,7 @@ const U = ["aria-label", "data-ready"], ae = /* @__PURE__ */ A({
254
251
  }, null, 14, U));
255
252
  }
256
253
  });
257
- function le(t, d, a = {}) {
254
+ function ee(t, d, a = {}) {
258
255
  const e = f(null), n = f(!1), u = f(null);
259
256
  return m(
260
257
  () => [t(), d, JSON.stringify(a)],
@@ -267,7 +264,7 @@ function le(t, d, a = {}) {
267
264
  l && !B(r) && k(r, l.id);
268
265
  }), n.value = !0, u.value = null;
269
266
  try {
270
- const l = await V(r, d, a);
267
+ const l = await M(r, d, a);
271
268
  i || (e.value = l, n.value = !1);
272
269
  } catch (l) {
273
270
  i || (u.value = l instanceof Error ? l : new Error(String(l)), n.value = !1);
@@ -289,23 +286,23 @@ function X(t, d) {
289
286
  a.value = null;
290
287
  return;
291
288
  }
292
- e = $(n, d), a.value = e.group;
289
+ e = N(n, d), a.value = e.group;
293
290
  },
294
291
  { immediate: !0 }
295
292
  ), p(() => {
296
293
  e == null || e.destroy(), a.value = null;
297
294
  }), { group: a };
298
295
  }
299
- const ne = X, re = F, oe = w, se = w;
296
+ const te = X, ae = F, le = w, ne = w;
300
297
  export {
301
- re as SciPlot,
302
- ae as StackedPlot,
298
+ ae as SciPlot,
299
+ _ as StackedPlot,
303
300
  F as VeloPlot,
304
- ne as useChartGroup,
301
+ te as useChartGroup,
305
302
  X as useChartSync,
306
- le as useIndicator,
307
- se as useSciChart,
308
- oe as useSciPlot,
303
+ ee as useIndicator,
304
+ ne as useSciChart,
305
+ le as useSciPlot,
309
306
  G as useStackedPlot,
310
307
  w as useVeloPlot
311
308
  };
package/dist/vue.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vue.js","sources":["../src/vue/useVeloPlot.ts","../src/vue/VeloPlot.vue","../src/vue/useStackedPlot.ts","../src/vue/StackedPlot.vue","../src/vue/useIndicator.ts","../src/vue/useChartSync.ts","../src/vue/index.ts"],"sourcesContent":["/**\n * Vue composable for single charts.\n */\n\nimport { ref, shallowRef, onMounted, onUnmounted, watch } from \"vue\";\nimport type { Ref } from \"vue\";\nimport type { Chart } from \"../core/Chart\";\nimport type {\n SeriesOptions,\n SeriesUpdateData,\n ZoomOptions,\n Bounds,\n} 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 interface UseVeloPlotReturn {\n containerRef: Ref<HTMLDivElement | null>;\n chart: Ref<Chart | null>;\n isReady: Ref<boolean>;\n error: Ref<Error | null>;\n bounds: Ref<Bounds | null>;\n addSeries: (options: SeriesOptions) => void;\n updateSeries: (id: string, data: SeriesUpdateData) => void;\n removeSeries: (id: string) => void;\n zoom: (options: ZoomOptions) => void;\n resetZoom: () => void;\n}\n\nexport function useVeloPlot(options: UseVeloPlotOptions = {}): UseVeloPlotReturn {\n const containerRef = ref<HTMLDivElement | null>(null);\n const chart = shallowRef<Chart | null>(null);\n const isReady = ref(false);\n const error = ref<Error | null>(null);\n const bounds = ref<Bounds | null>(null);\n\n let destroy: (() => void) | null = null;\n const optionsRef = { current: options };\n let prevSync = pickSyncableOptions(options);\n\n watch(\n () => options,\n (next) => {\n optionsRef.current = next;\n const c = chart.value;\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 { deep: true },\n );\n\n onMounted(() => {\n const el = containerRef.value;\n if (!el) return;\n try {\n const handle = createChartLifecycle(el, optionsRef.current, {\n onBoundsChange: (b) => {\n bounds.value = b;\n },\n onError: (e) => {\n error.value = e;\n },\n });\n chart.value = handle.chart;\n destroy = handle.destroy;\n bounds.value = handle.getBounds();\n isReady.value = true;\n prevSync = pickSyncableOptions(optionsRef.current);\n } catch (e) {\n error.value = e instanceof Error ? e : new Error(String(e));\n }\n });\n\n onUnmounted(() => {\n destroy?.();\n destroy = null;\n chart.value = null;\n isReady.value = false;\n });\n\n const addSeries = (opts: SeriesOptions) => {\n chart.value?.addSeries(opts);\n if (chart.value) bounds.value = chart.value.getViewBounds();\n };\n\n return {\n containerRef,\n chart,\n isReady,\n error,\n bounds,\n addSeries,\n updateSeries: (id, data) => chart.value?.updateSeries(id, data),\n removeSeries: (id) => chart.value?.removeSeries(id),\n zoom: (z) => chart.value?.zoom(z),\n resetZoom: () => {\n chart.value?.resetZoom();\n if (chart.value) bounds.value = chart.value.getViewBounds();\n },\n };\n}\n","<script setup lang=\"ts\">\nimport { ref, watch, onUnmounted } from \"vue\";\nimport { useVeloPlot, type UseVeloPlotOptions } from \"./useVeloPlot\";\nimport {\n diffSeries,\n applyChartA11y,\n updateA11y,\n type VeloPlotSeries,\n} from \"../bindings/shared\";\nimport type { Bounds, CursorOptions, ZoomOptions } from \"../types\";\n\nconst props = withDefaults(\n defineProps<\n UseVeloPlotOptions & {\n series?: VeloPlotSeries[];\n zoom?: ZoomOptions;\n width?: number | string;\n height?: number | string;\n class?: string;\n cursor?: CursorOptions;\n ariaLabel?: string;\n keyboardNav?: boolean;\n }\n >(),\n {\n series: () => [],\n width: \"100%\",\n height: 400,\n keyboardNav: true,\n },\n);\n\nconst emit = defineEmits<{\n zoomChange: [bounds: Bounds];\n}>();\n\nconst {\n containerRef,\n chart,\n isReady,\n bounds,\n addSeries,\n updateSeries,\n removeSeries,\n resetZoom,\n} = useVeloPlot(props);\n\nconst previousSeries = ref(new Map<string, VeloPlotSeries>());\nlet a11yHandle: ReturnType<typeof applyChartA11y> | null = null;\n\nwatch(\n () => [props.series, isReady.value, chart.value] as const,\n () => {\n if (!isReady.value || !chart.value) return;\n previousSeries.value = diffSeries(\n {\n addSeries,\n updateSeries,\n removeSeries,\n autoScale: () => chart.value?.autoScale(),\n },\n props.series,\n previousSeries.value,\n );\n },\n { deep: true, immediate: true },\n);\n\nwatch(\n () => [isReady.value, chart.value, props.keyboardNav, props.ariaLabel] as const,\n () => {\n const el = containerRef.value;\n if (!el || !chart.value || !isReady.value) return;\n a11yHandle?.cleanup();\n a11yHandle = applyChartA11y(el, chart.value, {\n label: props.ariaLabel,\n series: props.series,\n bounds: bounds.value,\n enableKeyboard: props.keyboardNav,\n });\n },\n { immediate: true },\n);\n\nonUnmounted(() => a11yHandle?.cleanup());\n\nwatch(bounds, (b) => {\n const el = containerRef.value;\n if (el && a11yHandle) {\n updateA11y(el, a11yHandle.srTable, {\n label: props.ariaLabel,\n series: props.series,\n bounds: b,\n });\n }\n});\n\ndefineExpose({ getChart: () => chart.value, resetZoom, getBounds: () => bounds.value });\n</script>\n\n<template>\n <div\n ref=\"containerRef\"\n class=\"velo-plot-container\"\n :class=\"props.class\"\n :style=\"{\n position: 'relative',\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n }\"\n />\n</template>\n","/**\n * Vue composable for stacked charts.\n */\n\nimport { ref, shallowRef, onMounted, onUnmounted, watch } from \"vue\";\nimport { createStackedChart } from \"../core/stacked\";\nimport type { StackedChart, StackedChartOptions } from \"../core/stacked\";\nimport type { Range } from \"../types\";\nimport {\n stackedStructureKey,\n syncStackedOptions,\n syncStackedPaneSeries,\n} from \"../bindings/shared\";\nimport type { VeloPlotSeries } from \"../bindings/shared\";\n\nexport interface UseStackedPlotOptions\n extends Omit<StackedChartOptions, \"container\"> {}\n\nexport function useStackedPlot(options: UseStackedPlotOptions) {\n const containerRef = ref<HTMLDivElement | null>(null);\n const stack = shallowRef<StackedChart | null>(null);\n const isReady = ref(false);\n\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 = () => {\n const el = containerRef.value;\n if (!el) return;\n destroy?.();\n const created = createStackedChart({ ...options, container: el });\n stack.value = created;\n destroy = () => created.destroy();\n structureKey = stackedStructureKey(options.panes);\n paneSeries = syncStackedPaneSeries(created, options.panes, new Map());\n created.whenReady().then(() => {\n isReady.value = true;\n });\n };\n\n onMounted(mount);\n onUnmounted(() => {\n destroy?.();\n stack.value = null;\n isReady.value = false;\n });\n\n watch(\n () => options,\n (next) => {\n const current = stack.value;\n if (!current || !isReady.value) return;\n const nextKey = stackedStructureKey(next.panes);\n if (nextKey !== structureKey) {\n mount();\n return;\n }\n syncStackedOptions(current, next);\n paneSeries = syncStackedPaneSeries(current, next.panes, paneSeries);\n },\n { deep: true },\n );\n\n return {\n containerRef,\n stack,\n isReady,\n fitAll: (opts?: { x?: Range; padding?: number }) => stack.value?.fitAll(opts),\n resetAll: () => stack.value?.resetAll(),\n };\n}\n","<script setup lang=\"ts\">\nimport { useStackedPlot, type UseStackedPlotOptions } from \"./useStackedPlot\";\n\nconst props = withDefaults(\n defineProps<\n UseStackedPlotOptions & {\n width?: number | string;\n height?: number | string;\n class?: string;\n ariaLabel?: string;\n }\n >(),\n {\n width: \"100%\",\n height: 480,\n },\n);\n\nconst { containerRef, stack, isReady, fitAll, resetAll } = useStackedPlot(props);\n\ndefineExpose({\n getStack: () => stack.value,\n fitAll,\n resetAll,\n getBounds: () => stack.value?.getMaster().getViewBounds() ?? null,\n});\n</script>\n\n<template>\n <div\n ref=\"containerRef\"\n class=\"velo-plot-stacked\"\n :class=\"props.class\"\n role=\"img\"\n :aria-label=\"ariaLabel ?? `Stacked chart with ${panes.length} panes`\"\n :data-ready=\"isReady\"\n :style=\"{\n position: 'relative',\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n }\"\n />\n</template>\n","import { ref, watch, onUnmounted } from \"vue\";\nimport type { AddIndicatorOptions, AddIndicatorResult } from \"../core/indicator/addIndicator\";\nimport type { IndicatorPresetName } from \"../core/indicator/indicatorPresets\";\nimport {\n addIndicatorToHost,\n isStackedChart,\n removeIndicatorFromChart,\n type IndicatorHost,\n} 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 = ref<(AddIndicatorResult & { paneId?: string }) | null>(null);\n const isLoading = ref(false);\n const error = ref<Error | null>(null);\n\n watch(\n () => [host(), preset, JSON.stringify(options)] as const,\n async ([h], _, onCleanup) => {\n if (!h) return;\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n const res = result.value;\n if (res && !isStackedChart(h)) {\n removeIndicatorFromChart(h as Chart, res.id);\n }\n });\n isLoading.value = true;\n error.value = null;\n try {\n const res = await addIndicatorToHost(h, preset, options);\n if (!cancelled) {\n result.value = res;\n isLoading.value = false;\n }\n } catch (e) {\n if (!cancelled) {\n error.value = e instanceof Error ? e : new Error(String(e));\n isLoading.value = false;\n }\n }\n },\n { immediate: true },\n );\n\n onUnmounted(() => {\n const h = host();\n const res = result.value;\n if (res && h && !isStackedChart(h)) {\n removeIndicatorFromChart(h as Chart, res.id);\n }\n });\n\n return { result, isLoading, error };\n}\n","import { ref, watch, onUnmounted } from \"vue\";\nimport type { ChartLike, SyncOptions } from \"../core/sync\";\nimport { ChartGroup } from \"../core/sync\";\nimport { createChartSync } from \"../bindings/shared\";\n\nexport function useChartSync(\n charts: () => ChartLike[],\n options?: SyncOptions,\n) {\n const group = ref<ChartGroup | null>(null);\n let handle: ReturnType<typeof createChartSync> | null = null;\n\n watch(\n () => [charts(), JSON.stringify(options)] as const,\n ([list]) => {\n handle?.destroy();\n if (list.length < 2) {\n group.value = null;\n return;\n }\n handle = createChartSync(list, options);\n group.value = handle.group;\n },\n { immediate: true },\n );\n\n onUnmounted(() => {\n handle?.destroy();\n group.value = null;\n });\n\n return { group };\n}\n\nexport const useChartGroup = useChartSync;\n","export { default as VeloPlot } from \"./VeloPlot.vue\";\nexport { default as StackedPlot } from \"./StackedPlot.vue\";\nexport { useVeloPlot, type UseVeloPlotOptions, type UseVeloPlotReturn } from \"./useVeloPlot\";\nexport { useStackedPlot, type UseStackedPlotOptions } from \"./useStackedPlot\";\nexport { useIndicator } from \"./useIndicator\";\nexport { useChartSync, useChartGroup } from \"./useChartSync\";\n\nimport VeloPlotVue from \"./VeloPlot.vue\";\nimport { useVeloPlot as useVeloPlotImpl } from \"./useVeloPlot\";\n\n/** @deprecated Use `VeloPlot` instead. **Removed in v4.0.** */\nexport const SciPlot = VeloPlotVue;\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","containerRef","ref","chart","shallowRef","isReady","error","bounds","destroy","optionsRef","prevSync","pickSyncableOptions","watch","next","c","picked","optionsChanged","syncChartOptions","onMounted","el","handle","createChartLifecycle","b","e","onUnmounted","opts","_a","id","data","z","props","__props","addSeries","updateSeries","removeSeries","resetZoom","previousSeries","a11yHandle","diffSeries","applyChartA11y","updateA11y","__expose","_createElementBlock","_normalizeClass","_normalizeStyle","useStackedPlot","stack","structureKey","stackedStructureKey","paneSeries","mount","created","createStackedChart","syncStackedPaneSeries","current","syncStackedOptions","fitAll","resetAll","_unref","useIndicator","host","preset","result","isLoading","h","_","onCleanup","cancelled","res","isStackedChart","removeIndicatorFromChart","addIndicatorToHost","useChartSync","charts","group","list","createChartSync","useChartGroup","SciPlot","VeloPlotVue","useSciPlot","useVeloPlotImpl","useSciChart"],"mappings":"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"}
1
+ {"version":3,"file":"vue.js","sources":["../src/vue/useVeloPlot.ts","../src/vue/VeloPlot.vue","../src/vue/useStackedPlot.ts","../src/vue/StackedPlot.vue","../src/vue/useIndicator.ts","../src/vue/useChartSync.ts","../src/vue/index.ts"],"sourcesContent":["/**\n * Vue composable for single charts.\n */\n\nimport { ref, shallowRef, onMounted, onUnmounted, watch } from \"vue\";\nimport type { Ref } from \"vue\";\nimport type { Chart } from \"../core/Chart\";\nimport type {\n SeriesOptions,\n SeriesUpdateData,\n ZoomOptions,\n Bounds,\n} 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 interface UseVeloPlotReturn {\n containerRef: Ref<HTMLDivElement | null>;\n chart: Ref<Chart | null>;\n isReady: Ref<boolean>;\n error: Ref<Error | null>;\n bounds: Ref<Bounds | null>;\n addSeries: (options: SeriesOptions) => void;\n updateSeries: (id: string, data: SeriesUpdateData) => void;\n removeSeries: (id: string) => void;\n zoom: (options: ZoomOptions) => void;\n resetZoom: () => void;\n}\n\nexport function useVeloPlot(options: UseVeloPlotOptions = {}): UseVeloPlotReturn {\n const containerRef = ref<HTMLDivElement | null>(null);\n const chart = shallowRef<Chart | null>(null);\n const isReady = ref(false);\n const error = ref<Error | null>(null);\n const bounds = ref<Bounds | null>(null);\n\n let destroy: (() => void) | null = null;\n const optionsRef = { current: options };\n let prevSync = pickSyncableOptions(options);\n\n watch(\n () => options,\n (next) => {\n optionsRef.current = next;\n const c = chart.value;\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 { deep: true },\n );\n\n onMounted(() => {\n const el = containerRef.value;\n if (!el) return;\n try {\n const handle = createChartLifecycle(el, optionsRef.current, {\n onBoundsChange: (b) => {\n bounds.value = b;\n },\n onError: (e) => {\n error.value = e;\n },\n });\n chart.value = handle.chart;\n destroy = handle.destroy;\n bounds.value = handle.getBounds();\n isReady.value = true;\n prevSync = pickSyncableOptions(optionsRef.current);\n } catch (e) {\n error.value = e instanceof Error ? e : new Error(String(e));\n }\n });\n\n onUnmounted(() => {\n destroy?.();\n destroy = null;\n chart.value = null;\n isReady.value = false;\n });\n\n const addSeries = (opts: SeriesOptions) => {\n chart.value?.addSeries(opts);\n if (chart.value) bounds.value = chart.value.getViewBounds();\n };\n\n return {\n containerRef,\n chart,\n isReady,\n error,\n bounds,\n addSeries,\n updateSeries: (id, data) => chart.value?.updateSeries(id, data),\n removeSeries: (id) => chart.value?.removeSeries(id),\n zoom: (z) => chart.value?.zoom(z),\n resetZoom: () => {\n chart.value?.resetZoom();\n if (chart.value) bounds.value = chart.value.getViewBounds();\n },\n };\n}\n","<script setup lang=\"ts\">\nimport { ref, watch, onUnmounted } from \"vue\";\nimport { useVeloPlot, type UseVeloPlotOptions } from \"./useVeloPlot\";\nimport {\n diffSeries,\n applyChartA11y,\n updateA11y,\n type VeloPlotSeries,\n} from \"../bindings/shared\";\nimport type { Bounds, CursorOptions, ZoomOptions } from \"../types\";\n\nconst props = withDefaults(\n defineProps<\n UseVeloPlotOptions & {\n series?: VeloPlotSeries[];\n zoom?: ZoomOptions;\n width?: number | string;\n height?: number | string;\n class?: string;\n cursor?: CursorOptions;\n ariaLabel?: string;\n keyboardNav?: boolean;\n }\n >(),\n {\n series: () => [],\n width: \"100%\",\n height: 400,\n keyboardNav: true,\n },\n);\n\nconst emit = defineEmits<{\n zoomChange: [bounds: Bounds];\n}>();\n\nconst {\n containerRef,\n chart,\n isReady,\n bounds,\n addSeries,\n updateSeries,\n removeSeries,\n resetZoom,\n} = useVeloPlot(props);\n\nconst previousSeries = ref(new Map<string, VeloPlotSeries>());\nlet a11yHandle: ReturnType<typeof applyChartA11y> | null = null;\n\nwatch(\n () => [props.series, isReady.value, chart.value] as const,\n () => {\n if (!isReady.value || !chart.value) return;\n previousSeries.value = diffSeries(\n {\n addSeries,\n updateSeries,\n removeSeries,\n autoScale: () => chart.value?.autoScale(),\n },\n props.series,\n previousSeries.value,\n );\n },\n { deep: true, immediate: true },\n);\n\nwatch(\n () => [isReady.value, chart.value, props.keyboardNav, props.ariaLabel] as const,\n () => {\n const el = containerRef.value;\n if (!el || !chart.value || !isReady.value) return;\n a11yHandle?.cleanup();\n a11yHandle = applyChartA11y(el, chart.value, {\n label: props.ariaLabel,\n series: props.series,\n bounds: bounds.value,\n enableKeyboard: props.keyboardNav,\n });\n },\n { immediate: true },\n);\n\nonUnmounted(() => a11yHandle?.cleanup());\n\nwatch(bounds, (b) => {\n const el = containerRef.value;\n if (el && a11yHandle) {\n updateA11y(el, a11yHandle.srTable, {\n label: props.ariaLabel,\n series: props.series,\n bounds: b,\n });\n }\n});\n\ndefineExpose({ getChart: () => chart.value, resetZoom, getBounds: () => bounds.value });\n</script>\n\n<template>\n <div\n ref=\"containerRef\"\n class=\"velo-plot-container\"\n :class=\"props.class\"\n :style=\"{\n position: 'relative',\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n }\"\n />\n</template>\n","/**\n * Vue composable for stacked charts.\n */\n\nimport { ref, shallowRef, onMounted, onUnmounted, watch } from \"vue\";\nimport { createStackedChart } from \"../core/stacked\";\nimport type { StackedChart, StackedChartOptions } from \"../core/stacked\";\nimport type { Range } from \"../types\";\nimport {\n stackedStructureKey,\n syncStackedOptions,\n syncStackedPaneSeries,\n} from \"../bindings/shared\";\nimport type { VeloPlotSeries } from \"../bindings/shared\";\n\nexport interface UseStackedPlotOptions\n extends Omit<StackedChartOptions, \"container\"> {}\n\nexport function useStackedPlot(options: UseStackedPlotOptions) {\n const containerRef = ref<HTMLDivElement | null>(null);\n const stack = shallowRef<StackedChart | null>(null);\n const isReady = ref(false);\n\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 = () => {\n const el = containerRef.value;\n if (!el) return;\n destroy?.();\n const created = createStackedChart({ ...options, container: el });\n stack.value = created;\n destroy = () => created.destroy();\n structureKey = stackedStructureKey(options.panes);\n paneSeries = syncStackedPaneSeries(created, options.panes, new Map());\n created.whenReady().then(() => {\n isReady.value = true;\n });\n };\n\n onMounted(mount);\n onUnmounted(() => {\n destroy?.();\n stack.value = null;\n isReady.value = false;\n });\n\n watch(\n () => options,\n (next) => {\n const current = stack.value;\n if (!current || !isReady.value) return;\n const nextKey = stackedStructureKey(next.panes);\n if (nextKey !== structureKey) {\n mount();\n return;\n }\n syncStackedOptions(current, next);\n paneSeries = syncStackedPaneSeries(current, next.panes, paneSeries);\n },\n { deep: true },\n );\n\n return {\n containerRef,\n stack,\n isReady,\n fitAll: (opts?: { x?: Range; padding?: number }) => stack.value?.fitAll(opts),\n resetAll: () => stack.value?.resetAll(),\n };\n}\n","<script setup lang=\"ts\">\nimport { useStackedPlot, type UseStackedPlotOptions } from \"./useStackedPlot\";\n\nconst props = withDefaults(\n defineProps<\n UseStackedPlotOptions & {\n width?: number | string;\n height?: number | string;\n class?: string;\n ariaLabel?: string;\n }\n >(),\n {\n width: \"100%\",\n height: 480,\n },\n);\n\nconst { containerRef, stack, isReady, fitAll, resetAll } = useStackedPlot(props);\n\ndefineExpose({\n getStack: () => stack.value,\n fitAll,\n resetAll,\n getBounds: () => stack.value?.getMaster().getViewBounds() ?? null,\n});\n</script>\n\n<template>\n <div\n ref=\"containerRef\"\n class=\"velo-plot-stacked\"\n :class=\"props.class\"\n role=\"img\"\n :aria-label=\"ariaLabel ?? `Stacked chart with ${panes.length} panes`\"\n :data-ready=\"isReady\"\n :style=\"{\n position: 'relative',\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n }\"\n />\n</template>\n","import { ref, watch, onUnmounted } from \"vue\";\nimport type { AddIndicatorOptions, AddIndicatorResult } from \"../core/indicator/addIndicator\";\nimport type { IndicatorPresetName } from \"../core/indicator/indicatorPresets\";\nimport {\n addIndicatorToHost,\n isStackedChart,\n removeIndicatorFromChart,\n type IndicatorHost,\n} 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 = ref<(AddIndicatorResult & { paneId?: string }) | null>(null);\n const isLoading = ref(false);\n const error = ref<Error | null>(null);\n\n watch(\n () => [host(), preset, JSON.stringify(options)] as const,\n async ([h], _, onCleanup) => {\n if (!h) return;\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n const res = result.value;\n if (res && !isStackedChart(h)) {\n removeIndicatorFromChart(h as Chart, res.id);\n }\n });\n isLoading.value = true;\n error.value = null;\n try {\n const res = await addIndicatorToHost(h, preset, options);\n if (!cancelled) {\n result.value = res;\n isLoading.value = false;\n }\n } catch (e) {\n if (!cancelled) {\n error.value = e instanceof Error ? e : new Error(String(e));\n isLoading.value = false;\n }\n }\n },\n { immediate: true },\n );\n\n onUnmounted(() => {\n const h = host();\n const res = result.value;\n if (res && h && !isStackedChart(h)) {\n removeIndicatorFromChart(h as Chart, res.id);\n }\n });\n\n return { result, isLoading, error };\n}\n","import { ref, watch, onUnmounted } from \"vue\";\nimport type { ChartLike, SyncOptions } from \"../core/sync\";\nimport { ChartGroup } from \"../core/sync\";\nimport { createChartSync } from \"../bindings/shared\";\n\nexport function useChartSync(\n charts: () => ChartLike[],\n options?: SyncOptions,\n) {\n const group = ref<ChartGroup | null>(null);\n let handle: ReturnType<typeof createChartSync> | null = null;\n\n watch(\n () => [charts(), JSON.stringify(options)] as const,\n ([list]) => {\n handle?.destroy();\n if (list.length < 2) {\n group.value = null;\n return;\n }\n handle = createChartSync(list, options);\n group.value = handle.group;\n },\n { immediate: true },\n );\n\n onUnmounted(() => {\n handle?.destroy();\n group.value = null;\n });\n\n return { group };\n}\n\nexport const useChartGroup = useChartSync;\n","export { default as VeloPlot } from \"./VeloPlot.vue\";\nexport { default as StackedPlot } from \"./StackedPlot.vue\";\nexport { useVeloPlot, type UseVeloPlotOptions, type UseVeloPlotReturn } from \"./useVeloPlot\";\nexport { useStackedPlot, type UseStackedPlotOptions } from \"./useStackedPlot\";\nexport { useIndicator } from \"./useIndicator\";\nexport { useChartSync, useChartGroup } from \"./useChartSync\";\n\nimport VeloPlotVue from \"./VeloPlot.vue\";\nimport { useVeloPlot as useVeloPlotImpl } from \"./useVeloPlot\";\n\n/** @deprecated Use `VeloPlot` instead. **Removed in v4.0.** */\nexport const SciPlot = VeloPlotVue;\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","containerRef","ref","chart","shallowRef","isReady","error","bounds","destroy","optionsRef","prevSync","pickSyncableOptions","watch","next","c","picked","optionsChanged","syncChartOptions","onMounted","el","handle","createChartLifecycle","b","e","onUnmounted","opts","_a","id","data","z","props","__props","addSeries","updateSeries","removeSeries","resetZoom","previousSeries","a11yHandle","diffSeries","applyChartA11y","updateA11y","__expose","_createElementBlock","_normalizeClass","_normalizeStyle","useStackedPlot","stack","structureKey","stackedStructureKey","paneSeries","mount","created","createStackedChart","syncStackedPaneSeries","current","syncStackedOptions","fitAll","resetAll","_unref","useIndicator","host","preset","result","isLoading","h","_","onCleanup","cancelled","res","isStackedChart","removeIndicatorFromChart","addIndicatorToHost","useChartSync","charts","group","list","createChartSync","useChartGroup","SciPlot","VeloPlotVue","useSciPlot","useVeloPlotImpl","useSciChart"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "velo-plot",
3
- "version": "3.0.0",
3
+ "version": "4.0.0-alpha.1",
4
4
  "author": "jigonzalez930209",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -22,6 +22,7 @@
22
22
  "pnpm": ">=11"
23
23
  },
24
24
  "type": "module",
25
+ "sideEffects": false,
25
26
  "main": "./dist/velo-plot.js",
26
27
  "module": "./dist/velo-plot.js",
27
28
  "types": "./dist/index.core.d.ts",
@@ -232,7 +233,9 @@
232
233
  "@angular/compiler": "^19.2.25",
233
234
  "@angular/core": "^19.2.25",
234
235
  "@angular/platform-browser-dynamic": "^19.2.25",
236
+ "@eslint/js": "^10.0.1",
235
237
  "@playwright/test": "^1.52.0",
238
+ "@resvg/resvg-js": "^2.6.2",
236
239
  "@solidjs/testing-library": "^0.8.10",
237
240
  "@sveltejs/vite-plugin-svelte": "^7.2.0",
238
241
  "@testing-library/dom": "^10.4.1",
@@ -240,20 +243,28 @@
240
243
  "@testing-library/svelte": "^5.4.2",
241
244
  "@testing-library/vue": "^8.1.0",
242
245
  "@types/node": "^25.0.3",
246
+ "@types/pngjs": "^6.0.5",
243
247
  "@types/react": "^18.3.27",
244
248
  "@types/react-dom": "^18.3.7",
245
249
  "@vitejs/plugin-vue": "^6.0.7",
246
250
  "@vitest/coverage-v8": "^3.2.6",
247
251
  "@vue/test-utils": "^2.4.11",
248
252
  "astro": "^5.18.2",
253
+ "esbuild": "^0.28.1",
254
+ "eslint": "^9.39.4",
255
+ "eslint-plugin-react-hooks": "^7.1.1",
256
+ "globals": "^17.7.0",
249
257
  "happy-dom": "^20.10.6",
258
+ "pixelmatch": "^7.2.0",
250
259
  "playwright": "^1.52.0",
260
+ "pngjs": "^7.0.0",
251
261
  "react": "^19.2.3",
252
262
  "react-dom": "^19.2.3",
253
263
  "solid-js": "^1.9.14",
254
264
  "svelte": "^5.56.4",
255
265
  "typedoc": "^0.28.20",
256
266
  "typescript": "^5.2.2",
267
+ "typescript-eslint": "^8.63.0",
257
268
  "vite": "^5.0.0",
258
269
  "vite-plugin-dts": "^3.6.0",
259
270
  "vite-plugin-solid": "^2.11.12",
@@ -268,12 +279,14 @@
268
279
  "build": "tsc -p tsconfig.build.json && vite build -c vite.config.lib.ts && node scripts/copy-framework-assets.mjs",
269
280
  "preview": "vite preview",
270
281
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
282
+ "check:bundle-size": "node scripts/check-bundle-size.mjs",
271
283
  "test": "vitest run && pnpm test:bindings",
272
284
  "test:bindings": "vitest run --config vitest.bindings.config.ts",
273
285
  "test:coverage": "pnpm test:coverage:bindings && pnpm test:coverage:core",
274
286
  "test:coverage:core": "vitest run --coverage && node scripts/check-core-coverage.mjs",
275
287
  "test:coverage:bindings": "vitest run --config vitest.bindings.config.ts --coverage && node scripts/check-bindings-coverage.mjs",
276
288
  "test:watch": "vitest",
289
+ "test:svg-parity": "vitest run --coverage --coverage.reportsDirectory=coverage/svg src/core/chart/exporter/svg src/core/chart/exporter/SVGExporter.test.ts src/core/chart/SVGRenderer.dom.test.ts src/core/stacked/StackSVGComposer.dom.test.ts src/core/stacked/stackGoldenSVG.dom.test.ts && node scripts/check-svg-coverage.mjs && node scripts/validate-svg-parity.mjs",
277
290
  "test:dom": "vitest run .dom.test.ts",
278
291
  "test:e2e": "playwright test",
279
292
  "test:e2e:artifacts": "E2E_FULL_ARTIFACTS=1 playwright test",