velo-plot 2.20.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +26 -12
  2. package/dist/ChartCore-AnR_3Xkb.js +7338 -0
  3. package/dist/ChartCore-AnR_3Xkb.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-COREBDNq.js → PluginRegistry-CzMHebYP.js} +24 -38
  7. package/dist/PluginRegistry-CzMHebYP.js.map +1 -0
  8. package/dist/a11y-Bw6urYpr.js +105 -0
  9. package/dist/a11y-Bw6urYpr.js.map +1 -0
  10. package/dist/angular/hooks-entry.d.ts +1 -0
  11. package/dist/angular/hooks.d.ts +26 -0
  12. package/dist/angular/index.d.ts +8 -0
  13. package/dist/angular/velo-plot.component.d.ts +46 -0
  14. package/dist/angular-hooks.d.ts +1 -0
  15. package/dist/angular-hooks.js +9 -0
  16. package/dist/angular-hooks.js.map +1 -0
  17. package/dist/angular.d.ts +1 -0
  18. package/dist/angular.js +166 -0
  19. package/dist/angular.js.map +1 -0
  20. package/dist/assets/indicator.worker-bv0zC4EX.js.map +1 -1
  21. package/dist/astro/StackedPlot.astro +19 -0
  22. package/dist/astro/VeloPlot.astro +23 -0
  23. package/dist/{axisFormat-CzumxpCL.js → axisFormat-Sz4WIJfQ.js} +2 -2
  24. package/dist/{axisFormat-CzumxpCL.js.map → axisFormat-Sz4WIJfQ.js.map} +1 -1
  25. package/dist/bindings/shared/a11y.d.ts +26 -0
  26. package/dist/bindings/shared/chartLifecycle.d.ts +16 -0
  27. package/dist/bindings/shared/chartSyncBridge.d.ts +8 -0
  28. package/dist/bindings/shared/dimensions.d.ts +1 -0
  29. package/dist/bindings/shared/index.d.ts +9 -0
  30. package/dist/bindings/shared/indicatorBridge.d.ts +11 -0
  31. package/dist/bindings/shared/optionsSync.d.ts +7 -0
  32. package/dist/bindings/shared/seriesDiff.d.ts +8 -0
  33. package/dist/bindings/shared/stackedSync.d.ts +9 -0
  34. package/dist/bindings/shared/types.d.ts +46 -0
  35. package/dist/bindings/test-utils/index.d.ts +35 -0
  36. package/dist/bindings/test-utils/mockLifecycle.d.ts +120 -0
  37. package/dist/bindings/test-utils/vitestSveltePlugin.d.ts +3 -0
  38. package/dist/chartSyncBridge-D_rCtbFq.js +58 -0
  39. package/dist/chartSyncBridge-D_rCtbFq.js.map +1 -0
  40. package/dist/core/Chart.d.ts +1 -1
  41. package/dist/core/ChartStatistics.d.ts +1 -1
  42. package/dist/core/InteractionManager.d.ts +7 -1
  43. package/dist/core/OverlayRenderer.d.ts +5 -0
  44. package/dist/core/annotations/types.d.ts +1 -1
  45. package/dist/core/chart/ChartCore.d.ts +14 -19
  46. package/dist/core/chart/ChartFeatureHooks.d.ts +7 -0
  47. package/dist/core/chart/chartExportPatch.d.ts +2 -0
  48. package/dist/core/chart/overlaySeriesRegistry.d.ts +7 -0
  49. package/dist/core/chart/series/SeriesActions.d.ts +1 -0
  50. package/dist/core/chart/series/SeriesBufferLite.d.ts +13 -0
  51. package/dist/core/chart/series/seriesOptionsRegistry.d.ts +8 -0
  52. package/dist/core/chart/series/seriesTypeRegistry.d.ts +5 -0
  53. package/dist/core/chart/types.d.ts +1 -1
  54. package/dist/core/clipboard/index.d.ts +1 -1
  55. package/dist/core/debug/index.d.ts +1 -1
  56. package/dist/core/keybindings/index.d.ts +1 -1
  57. package/dist/core/loading/index.d.ts +1 -1
  58. package/dist/core/locale/index.d.ts +1 -1
  59. package/dist/core/stacked/paneResize.d.ts +3 -0
  60. package/dist/core/stacked/types.d.ts +10 -0
  61. package/dist/core/theme-editor/index.d.ts +1 -1
  62. package/dist/createStackedChart-DqcLCFGS.js +1338 -0
  63. package/dist/createStackedChart-DqcLCFGS.js.map +1 -0
  64. package/dist/examples/PluginDemonstration.d.ts +1 -1
  65. package/dist/hooks-DH-3bewj.js +69 -0
  66. package/dist/hooks-DH-3bewj.js.map +1 -0
  67. package/dist/{index-BBpJwOct.js → index-0InEyj0q.js} +119 -121
  68. package/dist/index-0InEyj0q.js.map +1 -0
  69. package/dist/{index-qunX30Xu.js → index-B7PTX94B.js} +2133 -2133
  70. package/dist/index-B7PTX94B.js.map +1 -0
  71. package/dist/{index-BMiZoKmm.js → index-BgrvqltV.js} +67 -67
  72. package/dist/index-BgrvqltV.js.map +1 -0
  73. package/dist/{index-DoYxf1cV.js → index-CWxIHdwX.js} +38 -98
  74. package/dist/index-CWxIHdwX.js.map +1 -0
  75. package/dist/index-CaXWSOTk.js.map +1 -1
  76. package/dist/{mockDatafeed-927foCM4.js → index-Cv6ZDLWf.js} +227 -217
  77. package/dist/index-Cv6ZDLWf.js.map +1 -0
  78. package/dist/index-Dag88bW4.js.map +1 -1
  79. package/dist/index-qhscKTDy.js.map +1 -1
  80. package/dist/index.core.d.ts +9 -7
  81. package/dist/index.d.ts +2 -15
  82. package/dist/indicators--eJGmVox.js.map +1 -1
  83. package/dist/optionsSync-QUiN4Inw.js +119 -0
  84. package/dist/optionsSync-QUiN4Inw.js.map +1 -0
  85. package/dist/plugins/3d/index.d.ts +2 -2
  86. package/dist/plugins/3d.d.ts +2 -2
  87. package/dist/plugins/3d.js +3 -1
  88. package/dist/plugins/3d.js.map +1 -1
  89. package/dist/plugins/analysis/index.d.ts +1 -1
  90. package/dist/plugins/analysis/indicators.d.ts +1 -1
  91. package/dist/plugins/analysis.d.ts +2 -2
  92. package/dist/plugins/analysis.js +2 -2
  93. package/dist/plugins/analysis.js.map +1 -1
  94. package/dist/plugins/annotations/index.d.ts +1 -1
  95. package/dist/plugins/annotations.d.ts +2 -2
  96. package/dist/plugins/annotations.js.map +1 -1
  97. package/dist/plugins/anomaly-detection.js +1 -1
  98. package/dist/plugins/anomaly-detection.js.map +1 -1
  99. package/dist/plugins/broken-axis.d.ts +2 -2
  100. package/dist/plugins/builtins/crosshair/CrosshairPlugin.d.ts +1 -1
  101. package/dist/plugins/builtins/index.d.ts +1 -1
  102. package/dist/plugins/caching.d.ts +2 -2
  103. package/dist/plugins/clipboard/index.d.ts +2 -2
  104. package/dist/plugins/clipboard.d.ts +2 -2
  105. package/dist/plugins/clipboard.js.map +1 -1
  106. package/dist/plugins/context-menu/index.d.ts +1 -1
  107. package/dist/plugins/context-menu.d.ts +2 -2
  108. package/dist/plugins/context-menu.js +1 -1
  109. package/dist/plugins/context-menu.js.map +1 -1
  110. package/dist/plugins/createPlugin.d.ts +8 -0
  111. package/dist/plugins/data-export/index.d.ts +1 -1
  112. package/dist/plugins/data-export.d.ts +2 -2
  113. package/dist/plugins/data-export.js +2 -2
  114. package/dist/plugins/data-export.js.map +1 -1
  115. package/dist/plugins/data-transform.d.ts +2 -2
  116. package/dist/plugins/data-transform.js +19 -19
  117. package/dist/plugins/data-transform.js.map +1 -1
  118. package/dist/plugins/debug/index.d.ts +2 -2
  119. package/dist/plugins/debug.d.ts +2 -2
  120. package/dist/plugins/debug.js +33 -33
  121. package/dist/plugins/debug.js.map +1 -1
  122. package/dist/plugins/forecasting/index.d.ts +1 -1
  123. package/dist/plugins/forecasting.js.map +1 -1
  124. package/dist/plugins/gpu/index.d.ts +2 -2
  125. package/dist/plugins/gpu.d.ts +2 -2
  126. package/dist/plugins/gpu.js +2033 -209
  127. package/dist/plugins/gpu.js.map +1 -1
  128. package/dist/plugins/i18n/index.d.ts +2 -2
  129. package/dist/plugins/i18n.d.ts +2 -2
  130. package/dist/plugins/i18n.js +286 -23
  131. package/dist/plugins/i18n.js.map +1 -1
  132. package/dist/plugins/index.d.ts +1 -1
  133. package/dist/plugins/keyboard.d.ts +2 -2
  134. package/dist/plugins/keyboard.js +65 -5
  135. package/dist/plugins/keyboard.js.map +1 -1
  136. package/dist/plugins/latex.js +766 -207
  137. package/dist/plugins/latex.js.map +1 -1
  138. package/dist/plugins/lazy-load.d.ts +2 -2
  139. package/dist/plugins/loading/index.d.ts +2 -3
  140. package/dist/plugins/loading.d.ts +2 -2
  141. package/dist/plugins/loading.js +3 -4
  142. package/dist/plugins/ml-integration.d.ts +2 -2
  143. package/dist/plugins/ml-integration.js +5 -5
  144. package/dist/plugins/ml-integration.js.map +1 -1
  145. package/dist/plugins/offscreen.d.ts +2 -2
  146. package/dist/plugins/offscreen.js +11 -10
  147. package/dist/plugins/offscreen.js.map +1 -1
  148. package/dist/plugins/pattern-recognition.d.ts +2 -2
  149. package/dist/plugins/pattern-recognition.js +1 -1
  150. package/dist/plugins/pattern-recognition.js.map +1 -1
  151. package/dist/plugins/radar.d.ts +2 -2
  152. package/dist/plugins/regression.d.ts +2 -2
  153. package/dist/plugins/regression.js +255 -257
  154. package/dist/plugins/regression.js.map +1 -1
  155. package/dist/plugins/roi.js +9 -9
  156. package/dist/plugins/roi.js.map +1 -1
  157. package/dist/plugins/snapshot/index.d.ts +1 -1
  158. package/dist/plugins/snapshot/types.d.ts +1 -1
  159. package/dist/plugins/snapshot.d.ts +2 -2
  160. package/dist/plugins/snapshot.js.map +1 -1
  161. package/dist/plugins/streaming/index.d.ts +2 -2
  162. package/dist/plugins/streaming.d.ts +2 -2
  163. package/dist/plugins/streaming.js +1 -1
  164. package/dist/plugins/sync/index.d.ts +3 -2
  165. package/dist/plugins/sync.d.ts +2 -2
  166. package/dist/plugins/sync.js.map +1 -1
  167. package/dist/plugins/theme-editor/index.d.ts +1 -1
  168. package/dist/plugins/theme-editor.d.ts +2 -2
  169. package/dist/plugins/tools/index.d.ts +1 -1
  170. package/dist/plugins/tools/tooltip/index.d.ts +1 -1
  171. package/dist/plugins/tools.d.ts +2 -2
  172. package/dist/plugins/tools.js +1 -1
  173. package/dist/plugins/types.d.ts +1 -1
  174. package/dist/plugins/video-recorder.d.ts +2 -2
  175. package/dist/plugins/virtualization.d.ts +2 -2
  176. package/dist/plugins/virtualization.js +1 -1
  177. package/dist/pool-DZ8shSqv.js +109 -0
  178. package/dist/pool-DZ8shSqv.js.map +1 -0
  179. package/dist/react/StackedPlot.d.ts +31 -0
  180. package/dist/react/VeloPlot.d.ts +29 -0
  181. package/dist/react/index.d.ts +25 -3
  182. package/dist/react/useChartSync.d.ts +8 -0
  183. package/dist/react/useIndicator.d.ts +12 -0
  184. package/dist/react/useVeloPlot.d.ts +19 -0
  185. package/dist/react.js +325 -24
  186. package/dist/react.js.map +1 -1
  187. package/dist/renderer/NativeWebGLRenderer.d.ts +2 -1
  188. package/dist/renderer/native/NativeWebGLRenderer.d.ts +5 -1
  189. package/dist/renderer/native/draw.d.ts +2 -47
  190. package/dist/renderer/native/drawCore.d.ts +27 -0
  191. package/dist/renderer/native/drawExtended.d.ts +29 -0
  192. package/dist/renderer/native/frameRenderExtended.d.ts +1 -0
  193. package/dist/renderer/native/frameRenderRegistry.d.ts +27 -0
  194. package/dist/renderer/native/programFactoryCore.d.ts +6 -0
  195. package/dist/renderer/native/programFactoryExtended.d.ts +4 -0
  196. package/dist/renderer/native/utils.d.ts +3 -29
  197. package/dist/renderer/native/utilsCore.d.ts +14 -0
  198. package/dist/renderer/native/utilsExtended.d.ts +17 -0
  199. package/dist/renderer/overlaySeriesExtended.d.ts +1 -0
  200. package/dist/renderer/registerExtendedSeries.d.ts +1 -0
  201. package/dist/renderer/registerWebGPU.d.ts +2 -0
  202. package/dist/renderer/seriesBufferExtended.d.ts +4 -0
  203. package/dist/scientific/index.d.ts +44 -0
  204. package/dist/scientific/registerScientific.d.ts +1 -0
  205. package/dist/scientific.d.ts +1 -0
  206. package/dist/scientific.js +91 -0
  207. package/dist/scientific.js.map +1 -0
  208. package/dist/solid/VeloPlot.d.ts +16 -0
  209. package/dist/solid/index.d.ts +13 -0
  210. package/dist/solid/useChartSync.d.ts +6 -0
  211. package/dist/solid/useIndicator.d.ts +11 -0
  212. package/dist/solid/useStackedPlot.d.ts +14 -0
  213. package/dist/solid/useVeloPlot.d.ts +18 -0
  214. package/dist/solid.d.ts +1 -0
  215. package/dist/solid.js +169 -0
  216. package/dist/solid.js.map +1 -0
  217. package/dist/stackedSync-tnrunZMt.js +100 -0
  218. package/dist/stackedSync-tnrunZMt.js.map +1 -0
  219. package/dist/svelte/StackedPlot.svelte +29 -0
  220. package/dist/svelte/StackedPlot.test.ts +114 -0
  221. package/dist/svelte/VeloPlot.svelte +44 -0
  222. package/dist/svelte/VeloPlot.test.ts +105 -0
  223. package/dist/svelte/index.d.ts +11 -0
  224. package/dist/svelte/index.test.ts +20 -0
  225. package/dist/svelte/index.ts +15 -0
  226. package/dist/svelte/useChartSync.d.ts +8 -0
  227. package/dist/svelte/useChartSync.test.ts +49 -0
  228. package/dist/svelte/useChartSync.ts +29 -0
  229. package/dist/svelte/useIndicator.d.ts +13 -0
  230. package/dist/svelte/useIndicator.test.ts +67 -0
  231. package/dist/svelte/useIndicator.ts +43 -0
  232. package/dist/svelte/useStackedPlot.d.ts +16 -0
  233. package/dist/svelte/useStackedPlot.test.ts +76 -0
  234. package/dist/svelte/useStackedPlot.ts +54 -0
  235. package/dist/svelte/useVeloPlot.d.ts +21 -0
  236. package/dist/svelte/useVeloPlot.test.ts +100 -0
  237. package/dist/svelte/useVeloPlot.ts +81 -0
  238. package/dist/svelte.d.ts +1 -0
  239. package/dist/svelte.js +140 -0
  240. package/dist/svelte.js.map +1 -0
  241. package/dist/testing/index.d.ts +1 -1
  242. package/dist/theme/index.d.ts +2 -1
  243. package/dist/trading/index.d.ts +1 -4
  244. package/dist/trading/registerTrading.d.ts +3 -0
  245. package/dist/trading.js +42 -42
  246. package/dist/types.d.ts +4 -4
  247. package/dist/{utils-BK5UUXxj.js → utils-Dx0h0bgQ.js} +9 -9
  248. package/dist/{utils-BK5UUXxj.js.map → utils-Dx0h0bgQ.js.map} +1 -1
  249. package/dist/velo-plot.full.js +2216 -1346
  250. package/dist/velo-plot.full.js.map +1 -1
  251. package/dist/velo-plot.js +33 -28
  252. package/dist/velo-plot.js.map +1 -1
  253. package/dist/vue/StackedPlot.vue.d.ts +48 -0
  254. package/dist/vue/VeloPlot.vue.d.ts +64 -0
  255. package/dist/vue/index.d.ts +250 -0
  256. package/dist/vue/useChartSync.d.ts +52 -0
  257. package/dist/vue/useIndicator.d.ts +23 -0
  258. package/dist/vue/useStackedPlot.d.ts +15 -0
  259. package/dist/vue/useVeloPlot.d.ts +20 -0
  260. package/dist/vue.d.ts +1 -0
  261. package/dist/vue.js +309 -0
  262. package/dist/vue.js.map +1 -0
  263. package/dist/workers/indicatorsAsync.d.ts +2 -0
  264. package/dist/workers/pool.d.ts +9 -0
  265. package/package.json +96 -10
  266. package/dist/ChartCore-ivzLqxVb.js +0 -8350
  267. package/dist/ChartCore-ivzLqxVb.js.map +0 -1
  268. package/dist/SciPlot-CEU4ApgD.js +0 -463
  269. package/dist/SciPlot-CEU4ApgD.js.map +0 -1
  270. package/dist/createStackedChart-DxNW0VkF.js +0 -705
  271. package/dist/createStackedChart-DxNW0VkF.js.map +0 -1
  272. package/dist/gpuRenderer-BpaMYz-k.js +0 -1848
  273. package/dist/gpuRenderer-BpaMYz-k.js.map +0 -1
  274. package/dist/index-BBpJwOct.js.map +0 -1
  275. package/dist/index-BMiZoKmm.js.map +0 -1
  276. package/dist/index-DoYxf1cV.js.map +0 -1
  277. package/dist/index-qunX30Xu.js.map +0 -1
  278. package/dist/index-x4stH3jD.js +0 -282
  279. package/dist/index-x4stH3jD.js.map +0 -1
  280. package/dist/index.core-COREBDNq.js.map +0 -1
  281. package/dist/mockDatafeed-927foCM4.js.map +0 -1
  282. package/dist/pool-15HMCNv8.js +0 -88
  283. package/dist/pool-15HMCNv8.js.map +0 -1
  284. package/dist/react/SciPlot.d.ts +0 -60
  285. package/dist/react/useSciPlot.d.ts +0 -56
  286. package/dist/symbols-DT0eLlpW.js +0 -568
  287. package/dist/symbols-DT0eLlpW.js.map +0 -1
package/dist/vue.js ADDED
@@ -0,0 +1,309 @@
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 { 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-D_rCtbFq.js";
4
+ import { a as I, u as Z } from "./a11y-Bw6urYpr.js";
5
+ import { c as J } from "./createStackedChart-DqcLCFGS.js";
6
+ import { s as b, a as T, b as x } from "./stackedSync-tnrunZMt.js";
7
+ function w(t = {}) {
8
+ const d = f(null), a = C(null), e = f(!1), n = f(null), u = f(null);
9
+ let r = null;
10
+ const c = { current: t };
11
+ let o = S(t);
12
+ return m(
13
+ () => t,
14
+ (l) => {
15
+ c.current = l;
16
+ const s = a.value;
17
+ if (!s) return;
18
+ const v = S(l);
19
+ E(o, v) && (V(s, o, v), o = v);
20
+ },
21
+ { deep: !0 }
22
+ ), R(() => {
23
+ const l = d.value;
24
+ if (l)
25
+ try {
26
+ const s = K(l, c.current, {
27
+ onBoundsChange: (v) => {
28
+ u.value = v;
29
+ },
30
+ onError: (v) => {
31
+ n.value = v;
32
+ }
33
+ });
34
+ a.value = s.chart, r = s.destroy, u.value = s.getBounds(), e.value = !0, o = S(c.current);
35
+ } catch (s) {
36
+ n.value = s instanceof Error ? s : new Error(String(s));
37
+ }
38
+ }), p(() => {
39
+ r == null || r(), r = null, a.value = null, e.value = !1;
40
+ }), {
41
+ containerRef: d,
42
+ chart: a,
43
+ isReady: e,
44
+ error: n,
45
+ bounds: u,
46
+ addSeries: (l) => {
47
+ var s;
48
+ (s = a.value) == null || s.addSeries(l), a.value && (u.value = a.value.getViewBounds());
49
+ },
50
+ updateSeries: (l, s) => {
51
+ var v;
52
+ return (v = a.value) == null ? void 0 : v.updateSeries(l, s);
53
+ },
54
+ removeSeries: (l) => {
55
+ var s;
56
+ return (s = a.value) == null ? void 0 : s.removeSeries(l);
57
+ },
58
+ zoom: (l) => {
59
+ var s;
60
+ return (s = a.value) == null ? void 0 : s.zoom(l);
61
+ },
62
+ resetZoom: () => {
63
+ var l;
64
+ (l = a.value) == null || l.resetZoom(), a.value && (u.value = a.value.getViewBounds());
65
+ }
66
+ };
67
+ }
68
+ const F = /* @__PURE__ */ A({
69
+ __name: "VeloPlot",
70
+ props: {
71
+ id: {},
72
+ renderer: {},
73
+ xAxis: {},
74
+ yAxis: {},
75
+ background: {},
76
+ devicePixelRatio: {},
77
+ theme: {},
78
+ colorScheme: {},
79
+ showLegend: { type: Boolean },
80
+ legendPosition: {},
81
+ showControls: { type: Boolean },
82
+ toolbar: {},
83
+ autoScroll: { type: Boolean },
84
+ showStatistics: { type: Boolean },
85
+ tooltip: {},
86
+ animations: { type: [Object, Boolean] },
87
+ responsive: { type: [Object, Boolean] },
88
+ plugins: {},
89
+ loading: { type: [Boolean, Object] },
90
+ layout: {},
91
+ readOnly: { type: Boolean },
92
+ debug: { type: [Boolean, Object] },
93
+ locale: {},
94
+ keyBindings: { type: [Boolean, Array] },
95
+ clipboard: { type: [Boolean, Object] },
96
+ autoResize: { type: Boolean },
97
+ series: { default: () => [] },
98
+ zoom: {},
99
+ width: { default: "100%" },
100
+ height: { default: 400 },
101
+ class: {},
102
+ cursor: {},
103
+ ariaLabel: {},
104
+ keyboardNav: { type: Boolean, default: !0 }
105
+ },
106
+ emits: ["zoomChange"],
107
+ setup(t, { expose: d, emit: a }) {
108
+ const e = t, {
109
+ containerRef: n,
110
+ chart: u,
111
+ isReady: r,
112
+ bounds: c,
113
+ addSeries: o,
114
+ updateSeries: i,
115
+ removeSeries: l,
116
+ resetZoom: s
117
+ } = w(e), v = f(/* @__PURE__ */ new Map());
118
+ let h = null;
119
+ return m(
120
+ () => [e.series, r.value, u.value],
121
+ () => {
122
+ !r.value || !u.value || (v.value = $(
123
+ {
124
+ addSeries: o,
125
+ updateSeries: i,
126
+ removeSeries: l,
127
+ autoScale: () => {
128
+ var y;
129
+ return (y = u.value) == null ? void 0 : y.autoScale();
130
+ }
131
+ },
132
+ e.series,
133
+ v.value
134
+ ));
135
+ },
136
+ { deep: !0, immediate: !0 }
137
+ ), m(
138
+ () => [r.value, u.value, e.keyboardNav, e.ariaLabel],
139
+ () => {
140
+ const y = n.value;
141
+ !y || !u.value || !r.value || (h == null || h.cleanup(), h = I(y, u.value, {
142
+ label: e.ariaLabel,
143
+ series: e.series,
144
+ bounds: c.value,
145
+ enableKeyboard: e.keyboardNav
146
+ }));
147
+ },
148
+ { immediate: !0 }
149
+ ), p(() => h == null ? void 0 : h.cleanup()), m(c, (y) => {
150
+ const g = n.value;
151
+ g && h && Z(g, h.srTable, {
152
+ label: e.ariaLabel,
153
+ series: e.series,
154
+ bounds: y
155
+ });
156
+ }), d({ getChart: () => u.value, resetZoom: s, getBounds: () => c.value }), (y, g) => (P(), O("div", {
157
+ ref_key: "containerRef",
158
+ ref: n,
159
+ class: z(["velo-plot-container", e.class]),
160
+ style: L({
161
+ position: "relative",
162
+ width: typeof t.width == "number" ? `${t.width}px` : t.width,
163
+ height: typeof t.height == "number" ? `${t.height}px` : t.height
164
+ })
165
+ }, null, 6));
166
+ }
167
+ });
168
+ function G(t) {
169
+ const d = f(null), a = C(null), e = f(!1);
170
+ let n = null, u = b(t.panes), r = /* @__PURE__ */ new Map();
171
+ const c = () => {
172
+ const o = d.value;
173
+ if (!o) return;
174
+ n == null || n();
175
+ const i = J({ ...t, container: o });
176
+ a.value = i, n = () => i.destroy(), u = b(t.panes), r = x(i, t.panes, /* @__PURE__ */ new Map()), i.whenReady().then(() => {
177
+ e.value = !0;
178
+ });
179
+ };
180
+ return R(c), p(() => {
181
+ n == null || n(), a.value = null, e.value = !1;
182
+ }), m(
183
+ () => t,
184
+ (o) => {
185
+ const i = a.value;
186
+ if (!i || !e.value) return;
187
+ if (b(o.panes) !== u) {
188
+ c();
189
+ return;
190
+ }
191
+ T(i, o), r = x(i, o.panes, r);
192
+ },
193
+ { deep: !0 }
194
+ ), {
195
+ containerRef: d,
196
+ stack: a,
197
+ isReady: e,
198
+ fitAll: (o) => {
199
+ var i;
200
+ return (i = a.value) == null ? void 0 : i.fitAll(o);
201
+ },
202
+ resetAll: () => {
203
+ var o;
204
+ return (o = a.value) == null ? void 0 : o.resetAll();
205
+ }
206
+ };
207
+ }
208
+ const U = ["aria-label", "data-ready"], _ = /* @__PURE__ */ A({
209
+ __name: "StackedPlot",
210
+ props: {
211
+ panes: {},
212
+ direction: {},
213
+ masterPaneId: {},
214
+ sharedXAxis: {},
215
+ sharedYAxis: {},
216
+ xAxis: {},
217
+ theme: {},
218
+ devicePixelRatio: {},
219
+ gap: {},
220
+ resizable: { type: [Boolean, Object] },
221
+ showLegend: { type: Boolean },
222
+ sync: { type: [Boolean, Object] },
223
+ layout: {},
224
+ width: { default: "100%" },
225
+ height: { default: 480 },
226
+ class: {},
227
+ ariaLabel: {}
228
+ },
229
+ setup(t, { expose: d }) {
230
+ const a = t, { containerRef: e, stack: n, isReady: u, fitAll: r, resetAll: c } = G(a);
231
+ return d({
232
+ getStack: () => n.value,
233
+ fitAll: r,
234
+ resetAll: c,
235
+ getBounds: () => {
236
+ var o;
237
+ return ((o = n.value) == null ? void 0 : o.getMaster().getViewBounds()) ?? null;
238
+ }
239
+ }), (o, i) => (P(), O("div", {
240
+ ref_key: "containerRef",
241
+ ref: e,
242
+ class: z(["velo-plot-stacked", a.class]),
243
+ role: "img",
244
+ "aria-label": t.ariaLabel ?? `Stacked chart with ${t.panes.length} panes`,
245
+ "data-ready": j(u),
246
+ style: L({
247
+ position: "relative",
248
+ width: typeof t.width == "number" ? `${t.width}px` : t.width,
249
+ height: typeof t.height == "number" ? `${t.height}px` : t.height
250
+ })
251
+ }, null, 14, U));
252
+ }
253
+ });
254
+ function ee(t, d, a = {}) {
255
+ const e = f(null), n = f(!1), u = f(null);
256
+ return m(
257
+ () => [t(), d, JSON.stringify(a)],
258
+ async ([r], c, o) => {
259
+ if (!r) return;
260
+ let i = !1;
261
+ o(() => {
262
+ i = !0;
263
+ const l = e.value;
264
+ l && !B(r) && k(r, l.id);
265
+ }), n.value = !0, u.value = null;
266
+ try {
267
+ const l = await M(r, d, a);
268
+ i || (e.value = l, n.value = !1);
269
+ } catch (l) {
270
+ i || (u.value = l instanceof Error ? l : new Error(String(l)), n.value = !1);
271
+ }
272
+ },
273
+ { immediate: !0 }
274
+ ), p(() => {
275
+ const r = t(), c = e.value;
276
+ c && r && !B(r) && k(r, c.id);
277
+ }), { result: e, isLoading: n, error: u };
278
+ }
279
+ function X(t, d) {
280
+ const a = f(null);
281
+ let e = null;
282
+ return m(
283
+ () => [t(), JSON.stringify(d)],
284
+ ([n]) => {
285
+ if (e == null || e.destroy(), n.length < 2) {
286
+ a.value = null;
287
+ return;
288
+ }
289
+ e = N(n, d), a.value = e.group;
290
+ },
291
+ { immediate: !0 }
292
+ ), p(() => {
293
+ e == null || e.destroy(), a.value = null;
294
+ }), { group: a };
295
+ }
296
+ const te = X, ae = F, le = w, ne = w;
297
+ export {
298
+ ae as SciPlot,
299
+ _ as StackedPlot,
300
+ F as VeloPlot,
301
+ te as useChartGroup,
302
+ X as useChartSync,
303
+ ee as useIndicator,
304
+ ne as useSciChart,
305
+ le as useSciPlot,
306
+ G as useStackedPlot,
307
+ w as useVeloPlot
308
+ };
309
+ //# sourceMappingURL=vue.js.map
@@ -0,0 +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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"}
@@ -47,4 +47,6 @@ export declare function bollingerBandsAsync(data: Float32Array | Float64Array |
47
47
  export declare function destroyIndicatorPool(): void;
48
48
  /** Exposed for tests */
49
49
  export declare function getIndicatorPoolSize(): number;
50
+ /** Exposed for tests */
51
+ export declare function isIndicatorPreferSync(): boolean;
50
52
  export {};
@@ -7,6 +7,12 @@ export interface WorkerPoolOptions {
7
7
  poolSize?: number;
8
8
  /** Run tasks on main thread when Worker is unavailable */
9
9
  syncFallback?: boolean;
10
+ /**
11
+ * If a worker never answers (common with broken Vite worker URLs in docs),
12
+ * fall back to syncHandler after this many ms (default: 250).
13
+ * Set 0 to disable.
14
+ */
15
+ timeoutMs?: number;
10
16
  }
11
17
  export declare class WorkerPool<TMessage extends {
12
18
  id: string;
@@ -16,6 +22,7 @@ export declare class WorkerPool<TMessage extends {
16
22
  private nextWorker;
17
23
  private readonly poolSize;
18
24
  private readonly syncFallback;
25
+ private readonly timeoutMs;
19
26
  private readonly workerFactory;
20
27
  private readonly syncHandler?;
21
28
  private destroyed;
@@ -25,6 +32,8 @@ export declare class WorkerPool<TMessage extends {
25
32
  private removeWorker;
26
33
  private workerErrorMessage;
27
34
  private rejectPendingWithSyncFallback;
35
+ private clearTaskTimer;
36
+ private settleWithSync;
28
37
  private spawnWorker;
29
38
  /** Dispatch a task to the pool. Falls back to syncHandler when no workers exist. */
30
39
  run(task: TMessage): Promise<TResult>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "velo-plot",
3
- "version": "2.20.0",
3
+ "version": "3.1.0",
4
4
  "author": "jigonzalez930209",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -18,10 +18,11 @@
18
18
  ],
19
19
  "description": "A high-performance scientific charting engine for web applications.",
20
20
  "engines": {
21
- "node": ">=24",
21
+ "node": ">=22",
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",
@@ -38,10 +39,34 @@
38
39
  "types": "./dist/trading/index.d.ts",
39
40
  "import": "./dist/trading.js"
40
41
  },
42
+ "./scientific": {
43
+ "types": "./dist/scientific/index.d.ts",
44
+ "import": "./dist/scientific.js"
45
+ },
41
46
  "./react": {
42
47
  "types": "./dist/react/index.d.ts",
43
48
  "import": "./dist/react.js"
44
49
  },
50
+ "./vue": {
51
+ "types": "./dist/vue/index.d.ts",
52
+ "import": "./dist/vue.js"
53
+ },
54
+ "./svelte": {
55
+ "types": "./dist/svelte/index.d.ts",
56
+ "import": "./dist/svelte.js"
57
+ },
58
+ "./solid": {
59
+ "types": "./dist/solid/index.d.ts",
60
+ "import": "./dist/solid.js"
61
+ },
62
+ "./angular": {
63
+ "types": "./dist/angular/index.d.ts",
64
+ "import": "./dist/angular.js"
65
+ },
66
+ "./astro": {
67
+ "import": "./dist/astro/VeloPlot.astro"
68
+ },
69
+ "./astro/*": "./dist/astro/*",
45
70
  "./plugins/3d": {
46
71
  "types": "./dist/plugins/3d.d.ts",
47
72
  "import": "./dist/plugins/3d.js"
@@ -173,30 +198,89 @@
173
198
  "LICENSE"
174
199
  ],
175
200
  "peerDependencies": {
201
+ "@angular/core": ">=17.0.0",
202
+ "astro": ">=4.0.0",
176
203
  "react": ">=16.8.0",
177
- "react-dom": ">=16.8.0"
204
+ "react-dom": ">=16.8.0",
205
+ "solid-js": ">=1.8.0",
206
+ "svelte": ">=4.0.0",
207
+ "vue": ">=3.3.0"
208
+ },
209
+ "peerDependenciesMeta": {
210
+ "react": {
211
+ "optional": true
212
+ },
213
+ "react-dom": {
214
+ "optional": true
215
+ },
216
+ "vue": {
217
+ "optional": true
218
+ },
219
+ "svelte": {
220
+ "optional": true
221
+ },
222
+ "solid-js": {
223
+ "optional": true
224
+ },
225
+ "@angular/core": {
226
+ "optional": true
227
+ },
228
+ "astro": {
229
+ "optional": true
230
+ }
178
231
  },
179
232
  "devDependencies": {
233
+ "@angular/compiler": "^19.2.25",
234
+ "@angular/core": "^19.2.25",
235
+ "@angular/platform-browser-dynamic": "^19.2.25",
236
+ "@eslint/js": "^10.0.1",
180
237
  "@playwright/test": "^1.52.0",
238
+ "@solidjs/testing-library": "^0.8.10",
239
+ "@sveltejs/vite-plugin-svelte": "^7.2.0",
240
+ "@testing-library/dom": "^10.4.1",
241
+ "@testing-library/react": "^16.3.2",
242
+ "@testing-library/svelte": "^5.4.2",
243
+ "@testing-library/vue": "^8.1.0",
181
244
  "@types/node": "^25.0.3",
182
- "@types/react": "^18.2.0",
183
- "@types/react-dom": "^18.2.0",
245
+ "@types/react": "^18.3.27",
246
+ "@types/react-dom": "^18.3.7",
247
+ "@vitejs/plugin-vue": "^6.0.7",
184
248
  "@vitest/coverage-v8": "^3.2.6",
249
+ "@vue/test-utils": "^2.4.11",
250
+ "astro": "^5.18.2",
251
+ "esbuild": "^0.28.1",
252
+ "eslint": "^9.39.4",
253
+ "eslint-plugin-react-hooks": "^7.1.1",
254
+ "globals": "^17.7.0",
185
255
  "happy-dom": "^20.10.6",
186
256
  "playwright": "^1.52.0",
257
+ "react": "^19.2.3",
258
+ "react-dom": "^19.2.3",
259
+ "solid-js": "^1.9.14",
260
+ "svelte": "^5.56.4",
261
+ "typedoc": "^0.28.20",
187
262
  "typescript": "^5.2.2",
263
+ "typescript-eslint": "^8.63.0",
188
264
  "vite": "^5.0.0",
189
265
  "vite-plugin-dts": "^3.6.0",
266
+ "vite-plugin-solid": "^2.11.12",
267
+ "vite-plugin-svelte": "^3.0.1",
190
268
  "vitepress": "^1.0.0-rc.31",
191
- "vitest": "^3.2.6"
269
+ "vitest": "^3.2.6",
270
+ "vue": "^3.5.26",
271
+ "zone.js": "^0.15.1"
192
272
  },
193
273
  "scripts": {
194
274
  "dev": "vite",
195
- "build": "tsc -p tsconfig.build.json && vite build -c vite.config.lib.ts",
275
+ "build": "tsc -p tsconfig.build.json && vite build -c vite.config.lib.ts && node scripts/copy-framework-assets.mjs",
196
276
  "preview": "vite preview",
197
277
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
198
- "test": "vitest run",
199
- "test:coverage": "vitest run --coverage",
278
+ "check:bundle-size": "node scripts/check-bundle-size.mjs",
279
+ "test": "vitest run && pnpm test:bindings",
280
+ "test:bindings": "vitest run --config vitest.bindings.config.ts",
281
+ "test:coverage": "pnpm test:coverage:bindings && pnpm test:coverage:core",
282
+ "test:coverage:core": "vitest run --coverage && node scripts/check-core-coverage.mjs",
283
+ "test:coverage:bindings": "vitest run --config vitest.bindings.config.ts --coverage && node scripts/check-bindings-coverage.mjs",
200
284
  "test:watch": "vitest",
201
285
  "test:dom": "vitest run .dom.test.ts",
202
286
  "test:e2e": "playwright test",
@@ -216,6 +300,8 @@
216
300
  "test:bench-regression": "node scripts/compare-benchmark-regression.mjs",
217
301
  "docs:dev": "vitepress dev docs",
218
302
  "docs:build": "vitepress build docs",
219
- "docs:preview": "vitepress preview docs"
303
+ "docs:preview": "vitepress preview docs",
304
+ "create-plugin": "node scripts/create-plugin.mjs",
305
+ "docs:api": "typedoc"
220
306
  }
221
307
  }