velo-plot 3.0.0 → 4.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/README.md +22 -15
  2. package/dist/ChartCore-KYG2HTcK.js +7474 -0
  3. package/dist/ChartCore-KYG2HTcK.js.map +1 -0
  4. package/dist/GpuChartRenderer-Dxc0hrQA.js +75 -0
  5. package/dist/GpuChartRenderer-Dxc0hrQA.js.map +1 -0
  6. package/dist/{index.core-BmZe2jRQ.js → PluginRegistry-CDf_jcnp.js} +19 -33
  7. package/dist/PluginRegistry-CDf_jcnp.js.map +1 -0
  8. package/dist/SVGDocumentBuilder-C-uLkcFW.js +83 -0
  9. package/dist/SVGDocumentBuilder-C-uLkcFW.js.map +1 -0
  10. package/dist/angular-hooks.js +1 -1
  11. package/dist/angular.js +8 -8
  12. package/dist/{axisFormat-CzumxpCL.js → axisFormat-Sz4WIJfQ.js} +2 -2
  13. package/dist/{axisFormat-CzumxpCL.js.map → axisFormat-Sz4WIJfQ.js.map} +1 -1
  14. package/dist/{chartSyncBridge-DbWrwtyP.js → chartSyncBridge-C1uRy0ZS.js} +12 -11
  15. package/dist/{chartSyncBridge-DbWrwtyP.js.map → chartSyncBridge-C1uRy0ZS.js.map} +1 -1
  16. package/dist/core/ChartStatistics.d.ts +1 -1
  17. package/dist/core/chart/ChartCore.d.ts +19 -20
  18. package/dist/core/chart/ChartFeatureHooks.d.ts +7 -0
  19. package/dist/core/chart/ChartRenderLoop.d.ts +5 -0
  20. package/dist/core/chart/ChartRenderer.d.ts +9 -0
  21. package/dist/core/chart/ChartSetup.d.ts +1 -0
  22. package/dist/core/chart/chartExportPatch.d.ts +2 -0
  23. package/dist/core/chart/exporter/SVGExporter.d.ts +9 -7
  24. package/dist/core/chart/exporter/svg/SVGDocumentBuilder.d.ts +27 -0
  25. package/dist/core/chart/exporter/svg/SVGExportContext.d.ts +147 -0
  26. package/dist/core/chart/exporter/svg/SVGOrchestrator.d.ts +3 -0
  27. package/dist/core/chart/exporter/svg/SVGThemeAdapter.d.ts +22 -0
  28. package/dist/core/chart/exporter/svg/__tests__/testFixtures.d.ts +46 -0
  29. package/dist/core/chart/exporter/svg/__tests__/visualTestUtils.d.ts +12 -0
  30. package/dist/core/chart/exporter/svg/overlay/axes.d.ts +4 -0
  31. package/dist/core/chart/exporter/svg/overlay/border.d.ts +4 -0
  32. package/dist/core/chart/exporter/svg/overlay/errorBars.d.ts +7 -0
  33. package/dist/core/chart/exporter/svg/overlay/grid.d.ts +4 -0
  34. package/dist/core/chart/exporter/svg/overlay/index.d.ts +12 -0
  35. package/dist/core/chart/exporter/svg/overlay/legend.d.ts +4 -0
  36. package/dist/core/chart/exporter/svg/overlay/pluginCharts.d.ts +6 -0
  37. package/dist/core/chart/exporter/svg/overlay/polarGrid.d.ts +4 -0
  38. package/dist/core/chart/exporter/svg/overlay/specialChart.d.ts +15 -0
  39. package/dist/core/chart/exporter/svg/overlay/title.d.ts +4 -0
  40. package/dist/core/chart/exporter/svg/plugins/annotations.d.ts +5 -0
  41. package/dist/core/chart/exporter/svg/plugins/brokenAxis.d.ts +20 -0
  42. package/dist/core/chart/exporter/svg/plugins/latex.d.ts +9 -0
  43. package/dist/core/chart/exporter/svg/plugins/register.d.ts +8 -0
  44. package/dist/core/chart/exporter/svg/plugins/regression.d.ts +33 -0
  45. package/dist/core/chart/exporter/svg/plugins/roi.d.ts +12 -0
  46. package/dist/core/chart/exporter/svg/plugins/tradeMarkers.d.ts +3 -0
  47. package/dist/core/chart/exporter/svg/plugins/types.d.ts +28 -0
  48. package/dist/core/chart/exporter/svg/plugins/watermark.d.ts +13 -0
  49. package/dist/core/chart/exporter/svg/series/band.d.ts +6 -0
  50. package/dist/core/chart/exporter/svg/series/bar.d.ts +6 -0
  51. package/dist/core/chart/exporter/svg/series/boxplot.d.ts +6 -0
  52. package/dist/core/chart/exporter/svg/series/candlestick.d.ts +6 -0
  53. package/dist/core/chart/exporter/svg/series/finitePoints.d.ts +6 -0
  54. package/dist/core/chart/exporter/svg/series/gauge.d.ts +5 -0
  55. package/dist/core/chart/exporter/svg/series/heatmap.d.ts +6 -0
  56. package/dist/core/chart/exporter/svg/series/indicator.d.ts +6 -0
  57. package/dist/core/chart/exporter/svg/series/line.d.ts +12 -0
  58. package/dist/core/chart/exporter/svg/series/polar.d.ts +6 -0
  59. package/dist/core/chart/exporter/svg/series/radar.d.ts +5 -0
  60. package/dist/core/chart/exporter/svg/series/registry.d.ts +10 -0
  61. package/dist/core/chart/exporter/svg/series/sankey.d.ts +5 -0
  62. package/dist/core/chart/exporter/svg/series/scatter.d.ts +1 -0
  63. package/dist/core/chart/exporter/svg/series/ternary.d.ts +7 -0
  64. package/dist/core/chart/exporter/svg/series/waterfall.d.ts +6 -0
  65. package/dist/core/chart/exporter/svg/seriesAtTimestamp.d.ts +4 -0
  66. package/dist/core/chart/exporter/svg/seriesUtils.d.ts +3 -0
  67. package/dist/core/chart/exporter/svg/symbols.d.ts +5 -0
  68. package/dist/core/chart/exporter/svg/tickUtils.d.ts +9 -0
  69. package/dist/core/chart/mountSVGString.d.ts +5 -0
  70. package/dist/core/chart/overlaySeriesRegistry.d.ts +7 -0
  71. package/dist/core/chart/series/SeriesActions.d.ts +1 -0
  72. package/dist/core/chart/series/SeriesBufferLite.d.ts +13 -0
  73. package/dist/core/chart/series/seriesOptionsRegistry.d.ts +8 -0
  74. package/dist/core/chart/series/seriesTypeRegistry.d.ts +5 -0
  75. package/dist/core/chart/types.d.ts +2 -2
  76. package/dist/core/stacked/StackSVGComposer.d.ts +14 -0
  77. package/dist/core/stacked/index.d.ts +3 -2
  78. package/dist/core/stacked/types.d.ts +12 -4
  79. package/dist/createStackedChart-DjA3aJAu.js +2761 -0
  80. package/dist/createStackedChart-DjA3aJAu.js.map +1 -0
  81. package/dist/{hooks-CYPCxoZx.js → hooks-4wQH27r9.js} +7 -7
  82. package/dist/{hooks-CYPCxoZx.js.map → hooks-4wQH27r9.js.map} +1 -1
  83. package/dist/{index-qunX30Xu.js → index-B7PTX94B.js} +2133 -2133
  84. package/dist/index-B7PTX94B.js.map +1 -0
  85. package/dist/{index-BMiZoKmm.js → index-BgrvqltV.js} +67 -67
  86. package/dist/index-BgrvqltV.js.map +1 -0
  87. package/dist/index-Bj-xyXY6.js +582 -0
  88. package/dist/index-Bj-xyXY6.js.map +1 -0
  89. package/dist/index-qhscKTDy.js.map +1 -1
  90. package/dist/index.core.d.ts +8 -6
  91. package/dist/index.d.ts +1 -14
  92. package/dist/plugins/3d.js +3 -1
  93. package/dist/plugins/3d.js.map +1 -1
  94. package/dist/plugins/PluginManager.d.ts +5 -0
  95. package/dist/plugins/analysis.js.map +1 -1
  96. package/dist/plugins/annotations.js +8 -7
  97. package/dist/plugins/annotations.js.map +1 -1
  98. package/dist/plugins/broken-axis.js +198 -152
  99. package/dist/plugins/broken-axis.js.map +1 -1
  100. package/dist/plugins/createPlugin.d.ts +8 -0
  101. package/dist/plugins/debug.js +32 -32
  102. package/dist/plugins/debug.js.map +1 -1
  103. package/dist/plugins/forecasting.js +273 -258
  104. package/dist/plugins/forecasting.js.map +1 -1
  105. package/dist/plugins/gpu.js +2033 -209
  106. package/dist/plugins/gpu.js.map +1 -1
  107. package/dist/plugins/i18n.js +286 -23
  108. package/dist/plugins/i18n.js.map +1 -1
  109. package/dist/plugins/latex.js +766 -207
  110. package/dist/plugins/latex.js.map +1 -1
  111. package/dist/plugins/loading/index.d.ts +1 -2
  112. package/dist/plugins/loading.js +3 -4
  113. package/dist/plugins/ml-integration.js +107 -93
  114. package/dist/plugins/ml-integration.js.map +1 -1
  115. package/dist/plugins/offscreen.js +11 -10
  116. package/dist/plugins/offscreen.js.map +1 -1
  117. package/dist/plugins/radar/types.d.ts +11 -0
  118. package/dist/plugins/radar.js +64 -53
  119. package/dist/plugins/radar.js.map +1 -1
  120. package/dist/plugins/regression.js +254 -256
  121. package/dist/plugins/regression.js.map +1 -1
  122. package/dist/plugins/roi/index.d.ts +2 -0
  123. package/dist/plugins/roi.js +184 -145
  124. package/dist/plugins/roi.js.map +1 -1
  125. package/dist/plugins/snapshot.js +20 -15
  126. package/dist/plugins/snapshot.js.map +1 -1
  127. package/dist/plugins/streaming.js +1 -1
  128. package/dist/plugins/tools.js +1 -1
  129. package/dist/plugins/types.d.ts +4 -0
  130. package/dist/react.js +55 -58
  131. package/dist/react.js.map +1 -1
  132. package/dist/regression-HNdyk1Dm.js +28 -0
  133. package/dist/regression-HNdyk1Dm.js.map +1 -0
  134. package/dist/renderer/ChartSeriesRenderer.d.ts +3 -2
  135. package/dist/renderer/NativeWebGLRenderer.d.ts +2 -1
  136. package/dist/renderer/SVGChartRenderer.d.ts +15 -0
  137. package/dist/renderer/SankeyRenderer.d.ts +1 -0
  138. package/dist/renderer/native/NativeWebGLRenderer.d.ts +5 -1
  139. package/dist/renderer/native/draw.d.ts +2 -47
  140. package/dist/renderer/native/drawCore.d.ts +27 -0
  141. package/dist/renderer/native/drawExtended.d.ts +29 -0
  142. package/dist/renderer/native/frameRenderExtended.d.ts +1 -0
  143. package/dist/renderer/native/frameRenderRegistry.d.ts +27 -0
  144. package/dist/renderer/native/programFactoryCore.d.ts +6 -0
  145. package/dist/renderer/native/programFactoryExtended.d.ts +4 -0
  146. package/dist/renderer/native/utils.d.ts +3 -29
  147. package/dist/renderer/native/utilsCore.d.ts +14 -0
  148. package/dist/renderer/native/utilsExtended.d.ts +17 -0
  149. package/dist/renderer/overlaySeriesExtended.d.ts +1 -0
  150. package/dist/renderer/registerExtendedSeries.d.ts +1 -0
  151. package/dist/renderer/registerSVG.d.ts +5 -0
  152. package/dist/renderer/registerWebGPU.d.ts +2 -0
  153. package/dist/renderer/sankeyLayout.d.ts +29 -0
  154. package/dist/renderer/seriesBufferExtended.d.ts +4 -0
  155. package/dist/scientific/index.d.ts +1 -5
  156. package/dist/scientific/registerScientific.d.ts +1 -0
  157. package/dist/scientific.js +41 -41
  158. package/dist/solid.js +56 -59
  159. package/dist/solid.js.map +1 -1
  160. package/dist/svelte.js +26 -29
  161. package/dist/svelte.js.map +1 -1
  162. package/dist/tickUtils-B_X-ha13.js +41 -0
  163. package/dist/tickUtils-B_X-ha13.js.map +1 -0
  164. package/dist/trading/index.d.ts +1 -4
  165. package/dist/trading/registerTrading.d.ts +3 -0
  166. package/dist/trading.js +42 -42
  167. package/dist/types.d.ts +5 -4
  168. package/dist/velo-plot.full.js +1951 -1275
  169. package/dist/velo-plot.full.js.map +1 -1
  170. package/dist/velo-plot.js +33 -28
  171. package/dist/velo-plot.js.map +1 -1
  172. package/dist/vue/VeloPlot.vue.d.ts +1 -1
  173. package/dist/vue/index.d.ts +33 -33
  174. package/dist/vue.js +17 -20
  175. package/dist/vue.js.map +1 -1
  176. package/package.json +14 -1
  177. package/dist/ChartCore-BpzRvN4Y.js +0 -8467
  178. package/dist/ChartCore-BpzRvN4Y.js.map +0 -1
  179. package/dist/createStackedChart-Dm-YqUT7.js +0 -756
  180. package/dist/createStackedChart-Dm-YqUT7.js.map +0 -1
  181. package/dist/gpuRenderer-BpaMYz-k.js +0 -1848
  182. package/dist/gpuRenderer-BpaMYz-k.js.map +0 -1
  183. package/dist/index-BMiZoKmm.js.map +0 -1
  184. package/dist/index-qunX30Xu.js.map +0 -1
  185. package/dist/index-x4stH3jD.js +0 -282
  186. package/dist/index-x4stH3jD.js.map +0 -1
  187. package/dist/index.core-BmZe2jRQ.js.map +0 -1
  188. package/dist/mockDatafeed-DHIDPcpX.js +0 -515
  189. package/dist/mockDatafeed-DHIDPcpX.js.map +0 -1
  190. package/dist/symbols-DT0eLlpW.js +0 -568
  191. package/dist/symbols-DT0eLlpW.js.map +0 -1
@@ -1,200 +1,198 @@
1
1
  import { s as P } from "../math-Ddm2EZjj.js";
2
- function T(f) {
3
- return Array.from(f);
2
+ function T(u) {
3
+ return Array.from(u);
4
4
  }
5
- function v(f) {
6
- return new Float32Array(f);
5
+ function v(u) {
6
+ return new Float32Array(u);
7
7
  }
8
- function _(f) {
9
- return f.reduce((h, i) => h + i, 0) / f.length;
8
+ function _(u) {
9
+ return u.reduce((h, i) => h + i, 0) / u.length;
10
10
  }
11
- function z(f) {
12
- const h = _(f);
13
- return f.reduce((i, c) => i + Math.pow(c - h, 2), 0) / f.length;
11
+ function z(u) {
12
+ const h = _(u);
13
+ return u.reduce((i, l) => i + Math.pow(l - h, 2), 0) / u.length;
14
14
  }
15
- function O(f, h) {
16
- const i = _(f);
17
- let c = 0, l = 0;
18
- for (let g = 0; g < f.length; g++)
19
- c += Math.pow(f[g] - h[g], 2), l += Math.pow(f[g] - i, 2);
20
- return 1 - c / l;
15
+ function O(u, h) {
16
+ const i = _(u);
17
+ let l = 0, c = 0;
18
+ for (let m = 0; m < u.length; m++)
19
+ l += Math.pow(u[m] - h[m], 2), c += Math.pow(u[m] - i, 2);
20
+ return 1 - l / c;
21
21
  }
22
- function C(f, h, i) {
23
- return 1 - (1 - f) * (h - 1) / (h - i - 1);
22
+ function C(u, h, i) {
23
+ return 1 - (1 - u) * (h - 1) / (h - i - 1);
24
24
  }
25
- function E(f, h) {
25
+ function E(u, h) {
26
26
  let i = 0;
27
- for (let c = 0; c < f.length; c++)
28
- i += Math.pow(f[c] - h[c], 2);
29
- return Math.sqrt(i / f.length);
27
+ for (let l = 0; l < u.length; l++)
28
+ i += Math.pow(u[l] - h[l], 2);
29
+ return Math.sqrt(i / u.length);
30
30
  }
31
- function V(f, h = {}) {
32
- const i = performance.now(), c = T(f.x), l = T(f.y), g = f.weights ? T(f.weights) : null, { forceOrigin: M = !1 } = h, d = c.length;
33
- if (M) {
31
+ function V(u, h = {}) {
32
+ const i = performance.now(), l = T(u.x), c = T(u.y), m = u.weights ? T(u.weights) : null, { forceOrigin: S = !1 } = h, f = l.length;
33
+ if (S) {
34
34
  let w = 0, p = 0;
35
- for (let t = 0; t < d; t++) {
36
- const e = g ? g[t] : 1;
37
- w += e * c[t] * l[t], p += e * c[t] * c[t];
35
+ for (let t = 0; t < f; t++) {
36
+ const e = m ? m[t] : 1;
37
+ w += e * l[t] * c[t], p += e * l[t] * l[t];
38
38
  }
39
- const R = w / p, $ = c.map((t) => R * t), S = l.map((t, e) => t - $[e]), y = O(l, $), q = C(y, d, 1), x = E(l, $);
39
+ const R = w / p, $ = l.map((t) => R * t), y = c.map((t, e) => t - $[e]), x = O(c, $), q = C(x, f, 1), M = E(c, $);
40
40
  return {
41
41
  method: "linear",
42
42
  parameters: {
43
43
  parameters: [R],
44
- uncertainties: [Math.sqrt(p / (d * w))],
44
+ uncertainties: [Math.sqrt(p / (f * w))],
45
45
  // Simplified
46
46
  correlationMatrix: [[1]]
47
47
  },
48
48
  statistics: {
49
- rSquared: y,
49
+ rSquared: x,
50
50
  adjustedRSquared: q,
51
- rmse: x,
52
- rss: S.reduce((t, e) => t + e * e, 0),
53
- tss: l.reduce((t, e) => t + Math.pow(e - _(l), 2), 0),
54
- n: d,
51
+ rmse: M,
52
+ rss: y.reduce((t, e) => t + e * e, 0),
53
+ tss: c.reduce((t, e) => t + Math.pow(e - _(c), 2), 0),
54
+ n: f,
55
55
  k: 1
56
56
  },
57
57
  fittedValues: v($),
58
- residuals: v(S),
59
- goodnessOfFit: y > 0.9 ? "excellent" : y > 0.7 ? "good" : y > 0.5 ? "fair" : "poor",
58
+ residuals: v(y),
59
+ goodnessOfFit: x > 0.9 ? "excellent" : x > 0.7 ? "good" : x > 0.5 ? "fair" : "poor",
60
60
  converged: !0,
61
61
  iterations: 1,
62
62
  processingTime: performance.now() - i
63
63
  };
64
64
  } else {
65
- let w = 0, p = 0, R = 0, $ = 0, S = 0, y = 0;
66
- for (let u = 0; u < d; u++) {
67
- const m = g ? g[u] : 1;
68
- w += m * c[u], p += m * l[u], R += m * c[u] * l[u], $ += m * c[u] * c[u], S += m * l[u] * l[u], y += m;
65
+ let w = 0, p = 0, R = 0, $ = 0, y = 0;
66
+ for (let r = 0; r < f; r++) {
67
+ const d = m ? m[r] : 1;
68
+ w += d * l[r], p += d * c[r], R += d * l[r] * c[r], $ += d * l[r] * l[r], y += d;
69
69
  }
70
- const q = w / y, x = p / y, t = (R - y * q * x) / ($ - y * q * q), e = x - t * q, s = c.map((u) => t * u + e), o = l.map((u, m) => u - s[m]), r = O(l, s), n = C(r, d, 2), a = E(l, s);
70
+ const x = w / y, q = p / y, M = (R - y * x * q) / ($ - y * x * x), t = q - M * x, e = l.map((r) => M * r + t), s = c.map((r, d) => r - e[d]), o = O(c, e), n = C(o, f, 2), a = E(c, e);
71
71
  return {
72
72
  method: "linear",
73
73
  parameters: {
74
- parameters: [t, e],
74
+ parameters: [M, t],
75
75
  uncertainties: [0.1, 0.1],
76
76
  // Simplified
77
77
  correlationMatrix: [[1, -0.5], [-0.5, 1]]
78
78
  // Simplified
79
79
  },
80
80
  statistics: {
81
- rSquared: r,
81
+ rSquared: o,
82
82
  adjustedRSquared: n,
83
83
  rmse: a,
84
- rss: o.reduce((u, m) => u + m * m, 0),
85
- tss: l.reduce((u, m) => u + Math.pow(m - x, 2), 0),
86
- n: d,
84
+ rss: s.reduce((r, d) => r + d * d, 0),
85
+ tss: c.reduce((r, d) => r + Math.pow(d - q, 2), 0),
86
+ n: f,
87
87
  k: 2
88
88
  },
89
- fittedValues: v(s),
90
- residuals: v(o),
91
- goodnessOfFit: r > 0.9 ? "excellent" : r > 0.7 ? "good" : r > 0.5 ? "fair" : "poor",
89
+ fittedValues: v(e),
90
+ residuals: v(s),
91
+ goodnessOfFit: o > 0.9 ? "excellent" : o > 0.7 ? "good" : o > 0.5 ? "fair" : "poor",
92
92
  converged: !0,
93
93
  iterations: 1,
94
94
  processingTime: performance.now() - i
95
95
  };
96
96
  }
97
97
  }
98
- function U(f, h) {
99
- const i = performance.now(), c = T(f.x), l = T(f.y), { degree: g } = h, M = c.length, d = g + 1, w = [];
100
- for (let x = 0; x < M; x++) {
98
+ function U(u, h) {
99
+ const i = performance.now(), l = T(u.x), c = T(u.y), { degree: m } = h, S = l.length, f = m + 1, w = [];
100
+ for (let M = 0; M < S; M++) {
101
101
  const t = [];
102
- for (let e = 0; e <= g; e++)
103
- t.push(Math.pow(c[x], e));
102
+ for (let e = 0; e <= m; e++)
103
+ t.push(Math.pow(l[M], e));
104
104
  w.push(t);
105
105
  }
106
- const p = Y(w, l, 0), R = c.map((x) => {
106
+ const p = L(w, c, 0), R = l.map((M) => {
107
107
  let t = 0;
108
- for (let e = 0; e <= g; e++)
109
- t += p[e] * Math.pow(x, e);
108
+ for (let e = 0; e <= m; e++)
109
+ t += p[e] * Math.pow(M, e);
110
110
  return t;
111
- }), $ = l.map((x, t) => x - R[t]), S = O(l, R), y = C(S, M, d), q = E(l, R);
111
+ }), $ = c.map((M, t) => M - R[t]), y = O(c, R), x = C(y, S, f), q = E(c, R);
112
112
  return {
113
113
  method: "polynomial",
114
114
  parameters: {
115
115
  parameters: p,
116
- uncertainties: new Array(d).fill(0.1),
116
+ uncertainties: new Array(f).fill(0.1),
117
117
  // Simplified
118
- correlationMatrix: Array(d).fill(0).map(() => Array(d).fill(0))
118
+ correlationMatrix: Array(f).fill(0).map(() => Array(f).fill(0))
119
119
  // Simplified
120
120
  },
121
121
  statistics: {
122
- rSquared: S,
123
- adjustedRSquared: y,
122
+ rSquared: y,
123
+ adjustedRSquared: x,
124
124
  rmse: q,
125
- rss: $.reduce((x, t) => x + t * t, 0),
126
- tss: l.reduce((x, t) => x + Math.pow(t - _(l), 2), 0),
127
- n: M,
128
- k: d
125
+ rss: $.reduce((M, t) => M + t * t, 0),
126
+ tss: c.reduce((M, t) => M + Math.pow(t - _(c), 2), 0),
127
+ n: S,
128
+ k: f
129
129
  },
130
130
  fittedValues: v(R),
131
131
  residuals: v($),
132
- goodnessOfFit: S > 0.9 ? "excellent" : S > 0.7 ? "good" : S > 0.5 ? "fair" : "poor",
132
+ goodnessOfFit: y > 0.9 ? "excellent" : y > 0.7 ? "good" : y > 0.5 ? "fair" : "poor",
133
133
  converged: !0,
134
134
  iterations: 10,
135
135
  // Simplified
136
136
  processingTime: performance.now() - i
137
137
  };
138
138
  }
139
- function N(f, h = {}) {
140
- const i = performance.now(), c = T(f.x), l = T(f.y);
141
- let g = Math.min(...l) - 1;
142
- const M = l.map((t) => {
143
- const e = t - g;
139
+ function N(u, h = {}) {
140
+ const i = performance.now(), l = T(u.x), c = T(u.y), m = Math.min(...c) - 1, S = c.map((t) => {
141
+ const e = t - m;
144
142
  return e > 0 ? Math.log(e) : 0;
145
- }), d = V(
146
- { x: c, y: M },
143
+ }), f = V(
144
+ { x: l, y: S },
147
145
  { forceOrigin: !1 }
148
- ), [w, p] = d.parameters.parameters, R = Math.exp(p), $ = c.map((t) => R * Math.exp(w * t) + g), S = l.map((t, e) => t - $[e]), y = O(l, $), q = C(y, c.length, 3), x = E(l, $);
146
+ ), [w, p] = f.parameters.parameters, R = Math.exp(p), $ = l.map((t) => R * Math.exp(w * t) + m), y = c.map((t, e) => t - $[e]), x = O(c, $), q = C(x, l.length, 3), M = E(c, $);
149
147
  return {
150
148
  method: "exponential",
151
149
  parameters: {
152
- parameters: [R, w, g],
150
+ parameters: [R, w, m],
153
151
  uncertainties: [0.1, 0.01, 0.1],
154
152
  // Simplified
155
153
  correlationMatrix: [[1, 0.5, 0.2], [0.5, 1, 0.3], [0.2, 0.3, 1]]
156
154
  // Simplified
157
155
  },
158
156
  statistics: {
159
- rSquared: y,
157
+ rSquared: x,
160
158
  adjustedRSquared: q,
161
- rmse: x,
162
- rss: S.reduce((t, e) => t + e * e, 0),
163
- tss: l.reduce((t, e) => t + Math.pow(e - _(l), 2), 0),
164
- n: c.length,
159
+ rmse: M,
160
+ rss: y.reduce((t, e) => t + e * e, 0),
161
+ tss: c.reduce((t, e) => t + Math.pow(e - _(c), 2), 0),
162
+ n: l.length,
165
163
  k: 3
166
164
  },
167
165
  fittedValues: v($),
168
- residuals: v(S),
169
- goodnessOfFit: y > 0.9 ? "excellent" : y > 0.7 ? "good" : y > 0.5 ? "fair" : "poor",
166
+ residuals: v(y),
167
+ goodnessOfFit: x > 0.9 ? "excellent" : x > 0.7 ? "good" : x > 0.5 ? "fair" : "poor",
170
168
  converged: !0,
171
169
  iterations: 5,
172
170
  // Simplified
173
171
  processingTime: performance.now() - i
174
172
  };
175
173
  }
176
- function X(f, h = {}) {
177
- const i = performance.now(), c = T(f.x), l = T(f.y);
178
- let g = Math.max(...l), M = c.reduce((e, s) => e + s, 0) / c.length, d = Math.sqrt(z(c)), w = Math.min(...l);
174
+ function X(u, h = {}) {
175
+ const i = performance.now(), l = T(u.x), c = T(u.y);
176
+ let m = Math.max(...c), S = l.reduce((e, s) => e + s, 0) / l.length, f = Math.sqrt(z(l)), w = Math.min(...c);
179
177
  const p = 1e-3, R = 100, $ = 1e-6;
180
178
  for (let e = 0; e < R; e++) {
181
- let s = 0, o = 0, r = 0, n = 0, a = 0;
182
- for (let u = 0; u < c.length; u++) {
183
- const m = c[u], A = l[u], b = -Math.pow(m - M, 2) / (2 * d * d), j = g * Math.exp(b) + w, F = A - j;
184
- a += F * F;
179
+ let s = 0, o = 0, n = 0, a = 0, r = 0;
180
+ for (let d = 0; d < l.length; d++) {
181
+ const g = l[d], A = c[d], b = -Math.pow(g - S, 2) / (2 * f * f), j = m * Math.exp(b) + w, F = A - j;
182
+ r += F * F;
185
183
  const k = Math.exp(b);
186
- s += F * k, o += F * g * k * (m - M) / (d * d), r += F * g * k * Math.pow(m - M, 2) / Math.pow(d, 3), n += F;
184
+ s += F * k, o += F * m * k * (g - S) / (f * f), n += F * m * k * Math.pow(g - S, 2) / Math.pow(f, 3), a += F;
187
185
  }
188
- if (g += p * s, M += p * o, d += p * r, w += p * n, d = Math.max(d, 0.01), a < $) break;
186
+ if (m += p * s, S += p * o, f += p * n, w += p * a, f = Math.max(f, 0.01), r < $) break;
189
187
  }
190
- const S = c.map((e) => {
191
- const s = -Math.pow(e - M, 2) / (2 * d * d);
192
- return g * Math.exp(s) + w;
193
- }), y = l.map((e, s) => e - S[s]), q = O(l, S), x = C(q, c.length, 4), t = E(l, S);
188
+ const y = l.map((e) => {
189
+ const s = -Math.pow(e - S, 2) / (2 * f * f);
190
+ return m * Math.exp(s) + w;
191
+ }), x = c.map((e, s) => e - y[s]), q = O(c, y), M = C(q, l.length, 4), t = E(c, y);
194
192
  return {
195
193
  method: "gaussian",
196
194
  parameters: {
197
- parameters: [g, M, d, w],
195
+ parameters: [m, S, f, w],
198
196
  uncertainties: [0.1, 0.1, 0.01, 0.1],
199
197
  // Simplified
200
198
  correlationMatrix: Array(4).fill(0).map(() => Array(4).fill(0))
@@ -202,35 +200,35 @@ function X(f, h = {}) {
202
200
  },
203
201
  statistics: {
204
202
  rSquared: q,
205
- adjustedRSquared: x,
203
+ adjustedRSquared: M,
206
204
  rmse: t,
207
- rss: y.reduce((e, s) => e + s * s, 0),
208
- tss: l.reduce((e, s) => e + Math.pow(s - _(l), 2), 0),
209
- n: c.length,
205
+ rss: x.reduce((e, s) => e + s * s, 0),
206
+ tss: c.reduce((e, s) => e + Math.pow(s - _(c), 2), 0),
207
+ n: l.length,
210
208
  k: 4
211
209
  },
212
- fittedValues: v(S),
213
- residuals: v(y),
210
+ fittedValues: v(y),
211
+ residuals: v(x),
214
212
  goodnessOfFit: q > 0.9 ? "excellent" : q > 0.7 ? "good" : q > 0.5 ? "fair" : "poor",
215
213
  converged: !0,
216
214
  iterations: R,
217
215
  processingTime: performance.now() - i
218
216
  };
219
217
  }
220
- function Y(f, h, i = 0) {
221
- const c = f.length, l = f[0].length, g = Array(l).fill(0).map(() => Array(l).fill(0)), M = Array(l).fill(0);
222
- for (let d = 0; d < c; d++)
223
- for (let w = 0; w < l; w++) {
224
- for (let p = 0; p < l; p++)
225
- g[w][p] += f[d][w] * f[d][p];
226
- M[w] += f[d][w] * h[d];
218
+ function L(u, h, i = 0) {
219
+ const l = u.length, c = u[0].length, m = Array(c).fill(0).map(() => Array(c).fill(0)), S = Array(c).fill(0);
220
+ for (let f = 0; f < l; f++)
221
+ for (let w = 0; w < c; w++) {
222
+ for (let p = 0; p < c; p++)
223
+ m[w][p] += u[f][w] * u[f][p];
224
+ S[w] += u[f][w] * h[f];
227
225
  }
228
226
  if (i > 0)
229
- for (let d = 0; d < l; d++)
230
- g[d][d] += i;
231
- return P(g, M);
227
+ for (let f = 0; f < c; f++)
228
+ m[f][f] += i;
229
+ return P(m, S);
232
230
  }
233
- const L = {
231
+ const Y = {
234
232
  name: "regression",
235
233
  version: "1.0.0",
236
234
  description: "Advanced scientific regression and curve fitting",
@@ -249,87 +247,87 @@ const L = {
249
247
  enableParallelProcessing: !1,
250
248
  parallelChunkSize: 1e3
251
249
  };
252
- function B(f = {}) {
253
- const h = { ...J, ...f };
250
+ function B(u = {}) {
251
+ const h = { ...J, ...u };
254
252
  let i = null;
255
- const c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Map();
256
- async function M(t, e, s = h.defaultMethod, o = {}) {
253
+ const l = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Set(), m = /* @__PURE__ */ new Map();
254
+ async function S(t, e, s = h.defaultMethod, o = {}) {
257
255
  try {
258
256
  p.hideVisualization(t);
259
- let r;
257
+ let n;
260
258
  switch (s) {
261
259
  case "linear":
262
- r = V(e, o);
260
+ n = V(e, o);
263
261
  break;
264
262
  case "polynomial":
265
- r = U(e, o);
263
+ n = U(e, o);
266
264
  break;
267
265
  case "exponential":
268
- r = N(e, o);
266
+ n = N(e, o);
269
267
  break;
270
268
  case "gaussian":
271
- r = X(e, o);
269
+ n = X(e, o);
272
270
  break;
273
271
  case "logarithmic":
274
- const n = Array.from(e.x).map((m) => Math.log(m));
275
- r = V({ ...e, x: new Float32Array(n) }, o), r.method = "logarithmic";
272
+ const a = Array.from(e.x).map((g) => Math.log(g));
273
+ n = V({ ...e, x: new Float32Array(a) }, o), n.method = "logarithmic";
276
274
  break;
277
275
  case "power":
278
- const a = Array.from(e.y).map((m) => Math.log(m)), u = Array.from(e.x).map((m) => Math.log(m));
279
- r = V({ ...e, x: new Float32Array(u), y: new Float32Array(a) }, o), r.method = "power";
276
+ const r = Array.from(e.y).map((g) => Math.log(g)), d = Array.from(e.x).map((g) => Math.log(g));
277
+ n = V({ ...e, x: new Float32Array(d), y: new Float32Array(r) }, o), n.method = "power";
280
278
  break;
281
279
  case "lorentzian":
282
280
  case "sigmoid":
283
281
  case "custom":
284
- r = V(e, o);
282
+ n = V(e, o);
285
283
  break;
286
284
  default:
287
285
  throw new Error(`Unsupported regression method: ${s}`);
288
286
  }
289
- return c.set(t, [r]), i && i.events.emit("regression:completed", {
290
- result: r,
287
+ return l.set(t, [n]), i && i.events.emit("regression:completed", {
288
+ result: n,
291
289
  seriesId: t,
292
290
  method: s,
293
291
  timestamp: Date.now()
294
- }), i == null || i.log.info(`Regression completed for ${t}: ${s} (R² = ${r.statistics.rSquared.toFixed(3)})`), r;
295
- } catch (r) {
292
+ }), i == null || i.log.info(`Regression completed for ${t}: ${s} (R² = ${n.statistics.rSquared.toFixed(3)})`), n;
293
+ } catch (n) {
296
294
  throw i && i.events.emit("regression:failed", {
297
- error: r,
295
+ error: n,
298
296
  seriesId: t,
299
297
  method: s,
300
- reason: `Fitting failed: ${r}`,
298
+ reason: `Fitting failed: ${n}`,
301
299
  timestamp: Date.now()
302
- }), r;
300
+ }), n;
303
301
  }
304
302
  }
305
- async function d(t, e, s, o) {
306
- const r = [];
307
- for (let a = 0; a < s.length; a++) {
308
- const u = s[a], m = o ? o[a] : {};
303
+ async function f(t, e, s, o) {
304
+ const n = [];
305
+ for (let r = 0; r < s.length; r++) {
306
+ const d = s[r], g = o ? o[r] : {};
309
307
  try {
310
- const A = await M(t, e, u, m);
311
- r.push(A);
308
+ const A = await S(t, e, d, g);
309
+ n.push(A);
312
310
  } catch (A) {
313
- i == null || i.log.warn(`Regression failed for ${u}: ${A}`);
311
+ i == null || i.log.warn(`Regression failed for ${d}: ${A}`);
314
312
  }
315
313
  }
316
- const n = h.modelSelectionCriteria;
317
- return r.sort((a, u) => {
318
- switch (n) {
314
+ const a = h.modelSelectionCriteria;
315
+ return n.sort((r, d) => {
316
+ switch (a) {
319
317
  case "aic":
320
- return (a.statistics.aic || 0) - (u.statistics.aic || 0);
318
+ return (r.statistics.aic || 0) - (d.statistics.aic || 0);
321
319
  case "bic":
322
- return (a.statistics.bic || 0) - (u.statistics.bic || 0);
320
+ return (r.statistics.bic || 0) - (d.statistics.bic || 0);
323
321
  case "adjusted-r2":
324
- return u.statistics.adjustedRSquared - a.statistics.adjustedRSquared;
322
+ return d.statistics.adjustedRSquared - r.statistics.adjustedRSquared;
325
323
  default:
326
- return u.statistics.rSquared - a.statistics.rSquared;
324
+ return d.statistics.rSquared - r.statistics.rSquared;
327
325
  }
328
- }), r;
326
+ }), n;
329
327
  }
330
328
  async function w(t, e, s = ["linear", "polynomial", "exponential", "gaussian"]) {
331
- const o = s.map((a) => {
332
- switch (a) {
329
+ const o = s.map((r) => {
330
+ switch (r) {
333
331
  case "polynomial":
334
332
  return { degree: 2 };
335
333
  case "exponential":
@@ -339,122 +337,122 @@ function B(f = {}) {
339
337
  default:
340
338
  return {};
341
339
  }
342
- }), r = await d(t, e, s, o);
343
- if (r.length === 0)
340
+ }), n = await f(t, e, s, o);
341
+ if (n.length === 0)
344
342
  throw new Error("No regression methods succeeded");
345
- const n = r[0];
343
+ const a = n[0];
346
344
  return i && i.events.emit("model:selected", {
347
- selectedMethod: n.method,
348
- candidateResults: r,
345
+ selectedMethod: a.method,
346
+ candidateResults: n,
349
347
  selectionCriteria: h.modelSelectionCriteria,
350
348
  seriesId: t,
351
349
  timestamp: Date.now()
352
- }), i == null || i.log.info(`Auto-fit selected ${n.method} for ${t} (R² = ${n.statistics.rSquared.toFixed(3)})`), n;
350
+ }), i == null || i.log.info(`Auto-fit selected ${a.method} for ${t} (R² = ${a.statistics.rSquared.toFixed(3)})`), a;
353
351
  }
354
352
  const p = {
355
- fit: M,
356
- fitAndCompare: d,
353
+ fit: S,
354
+ fitAndCompare: f,
357
355
  autoFit: w,
358
356
  getResults(t) {
359
- return c.get(t) || [];
357
+ return l.get(t) || [];
360
358
  },
361
359
  clearResults(t) {
362
- c.delete(t), i == null || i.log.info(`Regression results cleared for series: ${t}`);
360
+ l.delete(t), i == null || i.log.info(`Regression results cleared for series: ${t}`);
363
361
  },
364
362
  predict(t, e, s = 0) {
365
- const o = c.get(t);
363
+ const o = l.get(t);
366
364
  if (!o || o.length === 0)
367
365
  throw new Error(`No regression results found for series: ${t}`);
368
- const r = o[Math.min(s, o.length - 1)], n = Array.from(e), a = r.parameters.parameters, u = n.map((m) => {
369
- switch (r.method) {
366
+ const n = o[Math.min(s, o.length - 1)], a = Array.from(e), r = n.parameters.parameters, d = a.map((g) => {
367
+ switch (n.method) {
370
368
  case "linear":
371
- return a[0] * m + (a[1] || 0);
369
+ return r[0] * g + (r[1] || 0);
372
370
  case "polynomial":
373
371
  let A = 0;
374
- for (let j = 0; j < a.length; j++)
375
- A += a[j] * Math.pow(m, j);
372
+ for (let j = 0; j < r.length; j++)
373
+ A += r[j] * Math.pow(g, j);
376
374
  return A;
377
375
  case "exponential":
378
- return a[0] * Math.exp(a[1] * m) + (a[2] || 0);
376
+ return r[0] * Math.exp(r[1] * g) + (r[2] || 0);
379
377
  case "gaussian":
380
- const b = -Math.pow(m - a[1], 2) / (2 * a[2] * a[2]);
381
- return a[0] * Math.exp(b) + (a[3] || 0);
378
+ const b = -Math.pow(g - r[1], 2) / (2 * r[2] * r[2]);
379
+ return r[0] * Math.exp(b) + (r[3] || 0);
382
380
  case "logarithmic":
383
- return a[0] * Math.log(m) + (a[1] || 0);
381
+ return r[0] * Math.log(g) + (r[1] || 0);
384
382
  case "power":
385
- return a[0] * Math.pow(m, a[1]);
383
+ return r[0] * Math.pow(g, r[1]);
386
384
  default:
387
385
  return 0;
388
386
  }
389
387
  });
390
- return new Float32Array(u);
388
+ return new Float32Array(d);
391
389
  },
392
390
  getConfidenceIntervals(t, e, s = h.defaultConfidenceLevel, o = 0) {
393
- const r = this.predict(t, e, o), n = 0.1, a = r.map((m) => m - n), u = r.map((m) => m + n);
391
+ const n = this.predict(t, e, o), a = 0.1, r = n.map((g) => g - a), d = n.map((g) => g + a);
394
392
  return {
395
- lower: new Float32Array(a),
396
- upper: new Float32Array(u)
393
+ lower: new Float32Array(r),
394
+ upper: new Float32Array(d)
397
395
  };
398
396
  },
399
397
  evaluate(t, e, s = 0) {
400
- const o = c.get(t);
398
+ const o = l.get(t);
401
399
  if (!o || o.length === 0)
402
400
  throw new Error(`No regression results found for series: ${t}`);
403
- const r = o[Math.min(s, o.length - 1)], n = Array.from(e.x), a = Array.from(e.y), u = p.predict(t, n, s), m = Array.from(u), A = $(a, m), b = S(A, a.length, r.parameters.parameters.length), j = y(a, m);
401
+ const n = o[Math.min(s, o.length - 1)], a = Array.from(e.x), r = Array.from(e.y), d = p.predict(t, a, s), g = Array.from(d), A = $(r, g), b = y(A, r.length, n.parameters.parameters.length), j = x(r, g);
404
402
  return {
405
403
  rSquared: A,
406
404
  adjustedRSquared: b,
407
405
  rmse: j,
408
- rss: a.reduce((F, k, D) => F + Math.pow(k - m[D], 2), 0),
409
- tss: a.reduce((F, k) => F + Math.pow(k - R(a), 2), 0),
410
- n: a.length,
411
- k: r.parameters.parameters.length
406
+ rss: r.reduce((F, k, D) => F + Math.pow(k - g[D], 2), 0),
407
+ tss: r.reduce((F, k) => F + Math.pow(k - R(r), 2), 0),
408
+ n: r.length,
409
+ k: n.parameters.parameters.length
412
410
  };
413
411
  },
414
412
  enableRealtimeFitting(t, e = h.defaultMethod, s = {}) {
415
- l.add(t);
413
+ c.add(t);
416
414
  const o = i == null ? void 0 : i.chart;
417
415
  if (o) {
418
- const r = o.getSeries(t);
419
- if (r) {
420
- const n = r.getData();
421
- n && n.x.length > 0 && M(t, {
422
- x: n.x,
423
- y: n.y
416
+ const n = o.getSeries(t);
417
+ if (n) {
418
+ const a = n.getData();
419
+ a && a.x.length > 0 && S(t, {
420
+ x: a.x,
421
+ y: a.y
424
422
  }, e, s);
425
423
  }
426
424
  }
427
425
  i == null || i.log.info(`Real-time regression fitting enabled for series: ${t}`);
428
426
  },
429
427
  disableRealtimeFitting(t) {
430
- l.delete(t);
431
- const e = g.get(t);
432
- e && (clearTimeout(e), g.delete(t)), i == null || i.log.info(`Real-time regression fitting disabled for series: ${t}`);
428
+ c.delete(t);
429
+ const e = m.get(t);
430
+ e && (clearTimeout(e), m.delete(t)), i == null || i.log.info(`Real-time regression fitting disabled for series: ${t}`);
433
431
  },
434
432
  getStatistics(t) {
435
433
  if (t) {
436
- const e = c.get(t) || [], s = {};
434
+ const e = l.get(t) || [], s = {};
437
435
  for (const o of e)
438
436
  s[o.method] = (s[o.method] || 0) + 1;
439
437
  return {
440
438
  totalFittings: e.length,
441
439
  methodsUsed: s,
442
- averageRSquared: e.length > 0 ? e.reduce((o, r) => o + r.statistics.rSquared, 0) / e.length : 0,
443
- averageProcessingTime: e.length > 0 ? e.reduce((o, r) => o + r.processingTime, 0) / e.length : 0
440
+ averageRSquared: e.length > 0 ? e.reduce((o, n) => o + n.statistics.rSquared, 0) / e.length : 0,
441
+ averageProcessingTime: e.length > 0 ? e.reduce((o, n) => o + n.processingTime, 0) / e.length : 0
444
442
  };
445
443
  } else {
446
444
  let e = 0;
447
- const s = {}, o = [], r = [];
448
- for (const n of c.values()) {
449
- e += n.length, o.push(...n.map((a) => a.statistics.rSquared)), r.push(...n.map((a) => a.processingTime));
450
- for (const a of n)
451
- s[a.method] = (s[a.method] || 0) + 1;
445
+ const s = {}, o = [], n = [];
446
+ for (const a of l.values()) {
447
+ e += a.length, o.push(...a.map((r) => r.statistics.rSquared)), n.push(...a.map((r) => r.processingTime));
448
+ for (const r of a)
449
+ s[r.method] = (s[r.method] || 0) + 1;
452
450
  }
453
451
  return {
454
452
  totalFittings: e,
455
453
  methodsUsed: s,
456
- averageRSquared: o.length > 0 ? o.reduce((n, a) => n + a, 0) / o.length : 0,
457
- averageProcessingTime: r.length > 0 ? r.reduce((n, a) => n + a, 0) / r.length : 0
454
+ averageRSquared: o.length > 0 ? o.reduce((a, r) => a + r, 0) / o.length : 0,
455
+ averageProcessingTime: n.length > 0 ? n.reduce((a, r) => a + r, 0) / n.length : 0
458
456
  };
459
457
  }
460
458
  },
@@ -465,20 +463,20 @@ function B(f = {}) {
465
463
  visualizeFit(t, e = 0) {
466
464
  const s = i == null ? void 0 : i.chart;
467
465
  if (!s) return;
468
- const o = c.get(t);
466
+ const o = l.get(t);
469
467
  if (!o || o.length === 0) return;
470
- const r = o[Math.min(e, o.length - 1)], n = s.getSeries(t);
471
- if (!n) return;
472
- const a = n.getData();
468
+ const n = o[Math.min(e, o.length - 1)], a = s.getSeries(t);
473
469
  if (!a) return;
470
+ const r = a.getData();
471
+ if (!r) return;
474
472
  this.hideVisualization(t);
475
- const u = `${t}_fit_${r.method}`, m = p.predict(t, a.x, e);
473
+ const d = `${t}_fit_${n.method}`, g = p.predict(t, r.x, e);
476
474
  s.addSeries({
477
- id: u,
475
+ id: d,
478
476
  type: "line",
479
477
  data: {
480
- x: new Float32Array(Array.from(a.x)),
481
- y: new Float32Array(m)
478
+ x: new Float32Array(Array.from(r.x)),
479
+ y: new Float32Array(g)
482
480
  },
483
481
  style: {
484
482
  color: "#ff6b6b",
@@ -487,13 +485,13 @@ function B(f = {}) {
487
485
  lineDash: [5, 5]
488
486
  }
489
487
  });
490
- const A = q(r), b = `${t}_equation_${r.method}`;
488
+ const A = q(n), b = `${t}_equation_${n.method}`;
491
489
  s.addAnnotation({
492
490
  id: b,
493
491
  type: "text",
494
- text: `${r.method.toUpperCase()}: ${A}\\nR² = ${r.statistics.rSquared.toFixed(3)}`,
495
- x: a.x[0],
496
- y: Math.max(...Array.from(m)),
492
+ text: `${n.method.toUpperCase()}: ${A}\\nR² = ${n.statistics.rSquared.toFixed(3)}`,
493
+ x: r.x[0],
494
+ y: Math.max(...Array.from(g)),
497
495
  style: {
498
496
  color: "#ff6b6b",
499
497
  fontSize: 12,
@@ -516,35 +514,35 @@ function B(f = {}) {
516
514
  "custom"
517
515
  ];
518
516
  for (const o of s) {
519
- const r = `${t}_fit_${o}`;
520
- e.getSeries(r) && e.removeSeries(r);
521
- const n = `${t}_equation_${o}`;
522
- e.getAnnotation(n) && e.removeAnnotation(n);
517
+ const n = `${t}_fit_${o}`;
518
+ e.getSeries(n) && e.removeSeries(n);
519
+ const a = `${t}_equation_${o}`;
520
+ e.getAnnotation(a) && e.removeAnnotation(a);
523
521
  }
524
522
  },
525
523
  exportResults(t, e = "json") {
526
- const s = c.get(t) || [];
524
+ const s = l.get(t) || [];
527
525
  switch (e) {
528
526
  case "json":
529
527
  return JSON.stringify(s, null, 2);
530
528
  case "csv":
531
529
  let o = `Method,R²,RMSE,Parameters,ProcessingTime
532
530
  `;
533
- for (const n of s)
534
- o += `${n.method},${n.statistics.rSquared},${n.statistics.rmse},"${n.parameters.parameters.join(", ")}",${n.processingTime}
531
+ for (const a of s)
532
+ o += `${a.method},${a.statistics.rSquared},${a.statistics.rmse},"${a.parameters.parameters.join(", ")}",${a.processingTime}
535
533
  `;
536
534
  return o;
537
535
  case "matlab":
538
- let r = `% Regression results for ${t}
536
+ let n = `% Regression results for ${t}
539
537
  `;
540
- for (let n = 0; n < s.length; n++) {
541
- const a = s[n];
542
- r += `result${n + 1}.method = '${a.method}';
543
- `, r += `result${n + 1}.rSquared = ${a.statistics.rSquared};
544
- `, r += `result${n + 1}.parameters = [${a.parameters.parameters.join(", ")}];
538
+ for (let a = 0; a < s.length; a++) {
539
+ const r = s[a];
540
+ n += `result${a + 1}.method = '${r.method}';
541
+ `, n += `result${a + 1}.rSquared = ${r.statistics.rSquared};
542
+ `, n += `result${a + 1}.parameters = [${r.parameters.parameters.join(", ")}];
545
543
  `;
546
544
  }
547
- return r;
545
+ return n;
548
546
  default:
549
547
  return JSON.stringify(s, null, 2);
550
548
  }
@@ -555,15 +553,15 @@ function B(f = {}) {
555
553
  }
556
554
  function $(t, e) {
557
555
  const s = R(t);
558
- let o = 0, r = 0;
559
- for (let n = 0; n < t.length; n++)
560
- o += Math.pow(t[n] - e[n], 2), r += Math.pow(t[n] - s, 2);
561
- return 1 - o / r;
556
+ let o = 0, n = 0;
557
+ for (let a = 0; a < t.length; a++)
558
+ o += Math.pow(t[a] - e[a], 2), n += Math.pow(t[a] - s, 2);
559
+ return 1 - o / n;
562
560
  }
563
- function S(t, e, s) {
561
+ function y(t, e, s) {
564
562
  return 1 - (1 - t) * (e - 1) / (e - s - 1);
565
563
  }
566
- function y(t, e) {
564
+ function x(t, e) {
567
565
  let s = 0;
568
566
  for (let o = 0; o < t.length; o++)
569
567
  s += Math.pow(t[o] - e[o], 2);
@@ -576,10 +574,10 @@ function B(f = {}) {
576
574
  case "linear":
577
575
  return e.length === 1 ? `y = ${e[0].toFixed(3)}x` : `y = ${e[0].toFixed(3)}x + ${e[1].toFixed(3)}`;
578
576
  case "polynomial":
579
- let r = "y = ";
580
- for (let n = e.length - 1; n >= 0; n--)
581
- e[n] !== 0 && (n === 0 ? r += e[n].toFixed(3) : n === 1 ? r += `${e[n].toFixed(3)}x + ` : r += `${e[n].toFixed(3)}x^${n} + `);
582
- return r.replace(" + ", "").trim();
577
+ let n = "y = ";
578
+ for (let a = e.length - 1; a >= 0; a--)
579
+ e[a] !== 0 && (a === 0 ? n += e[a].toFixed(3) : a === 1 ? n += `${e[a].toFixed(3)}x + ` : n += `${e[a].toFixed(3)}x^${a} + `);
580
+ return n.replace(" + ", "").trim();
583
581
  case "exponential":
584
582
  return `y = ${e[0].toFixed(3)} * exp(${e[1].toFixed(3)}x) + ${((s = e[2]) == null ? void 0 : s.toFixed(3)) || 0}`;
585
583
  case "gaussian":
@@ -588,29 +586,29 @@ function B(f = {}) {
588
586
  return "y = f(x, parameters)";
589
587
  }
590
588
  }
591
- function x(t, e) {
589
+ function M(t, e) {
592
590
  const { seriesId: s } = e;
593
- if (l.has(s)) {
594
- const o = g.get(s);
591
+ if (c.has(s)) {
592
+ const o = m.get(s);
595
593
  o && clearTimeout(o);
596
- const r = setTimeout(() => {
597
- const n = t.chart;
598
- if (n) {
599
- const a = n.getSeries(s);
600
- if (a) {
601
- const u = a.getData();
602
- u && u.x.length > 0 && (M(s, {
603
- x: u.x,
604
- y: u.y
594
+ const n = setTimeout(() => {
595
+ const a = t.chart;
596
+ if (a) {
597
+ const r = a.getSeries(s);
598
+ if (r) {
599
+ const d = r.getData();
600
+ d && d.x.length > 0 && (S(s, {
601
+ x: d.x,
602
+ y: d.y
605
603
  }), p.visualizeFit(s));
606
604
  }
607
605
  }
608
606
  }, 500);
609
- g.set(s, r);
607
+ m.set(s, n);
610
608
  }
611
609
  }
612
610
  return {
613
- manifest: L,
611
+ manifest: Y,
614
612
  onInit(t) {
615
613
  i = t, i.log.info("Regression plugin initialized");
616
614
  },
@@ -618,11 +616,11 @@ function B(f = {}) {
618
616
  },
619
617
  onBeforeRender(t, e) {
620
618
  },
621
- onDataUpdate: x,
619
+ onDataUpdate: M,
622
620
  onDestroy(t) {
623
- for (const e of g.values())
621
+ for (const e of m.values())
624
622
  clearTimeout(e);
625
- g.clear(), c.clear(), l.clear();
623
+ m.clear(), l.clear(), c.clear();
626
624
  },
627
625
  api: p
628
626
  };