velo-plot 3.1.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 (116) hide show
  1. package/dist/{ChartCore-AnR_3Xkb.js → ChartCore-KYG2HTcK.js} +1349 -1213
  2. package/dist/ChartCore-KYG2HTcK.js.map +1 -0
  3. package/dist/{PluginRegistry-CzMHebYP.js → PluginRegistry-CDf_jcnp.js} +2 -2
  4. package/dist/{PluginRegistry-CzMHebYP.js.map → PluginRegistry-CDf_jcnp.js.map} +1 -1
  5. package/dist/SVGDocumentBuilder-C-uLkcFW.js +83 -0
  6. package/dist/SVGDocumentBuilder-C-uLkcFW.js.map +1 -0
  7. package/dist/angular-hooks.js +1 -1
  8. package/dist/angular.js +4 -4
  9. package/dist/{chartSyncBridge-D_rCtbFq.js → chartSyncBridge-C1uRy0ZS.js} +3 -3
  10. package/dist/{chartSyncBridge-D_rCtbFq.js.map → chartSyncBridge-C1uRy0ZS.js.map} +1 -1
  11. package/dist/core/chart/ChartCore.d.ts +7 -3
  12. package/dist/core/chart/ChartRenderLoop.d.ts +5 -0
  13. package/dist/core/chart/ChartRenderer.d.ts +9 -0
  14. package/dist/core/chart/ChartSetup.d.ts +1 -0
  15. package/dist/core/chart/exporter/SVGExporter.d.ts +9 -7
  16. package/dist/core/chart/exporter/svg/SVGDocumentBuilder.d.ts +27 -0
  17. package/dist/core/chart/exporter/svg/SVGExportContext.d.ts +147 -0
  18. package/dist/core/chart/exporter/svg/SVGOrchestrator.d.ts +3 -0
  19. package/dist/core/chart/exporter/svg/SVGThemeAdapter.d.ts +22 -0
  20. package/dist/core/chart/exporter/svg/__tests__/testFixtures.d.ts +46 -0
  21. package/dist/core/chart/exporter/svg/__tests__/visualTestUtils.d.ts +12 -0
  22. package/dist/core/chart/exporter/svg/overlay/axes.d.ts +4 -0
  23. package/dist/core/chart/exporter/svg/overlay/border.d.ts +4 -0
  24. package/dist/core/chart/exporter/svg/overlay/errorBars.d.ts +7 -0
  25. package/dist/core/chart/exporter/svg/overlay/grid.d.ts +4 -0
  26. package/dist/core/chart/exporter/svg/overlay/index.d.ts +12 -0
  27. package/dist/core/chart/exporter/svg/overlay/legend.d.ts +4 -0
  28. package/dist/core/chart/exporter/svg/overlay/pluginCharts.d.ts +6 -0
  29. package/dist/core/chart/exporter/svg/overlay/polarGrid.d.ts +4 -0
  30. package/dist/core/chart/exporter/svg/overlay/specialChart.d.ts +15 -0
  31. package/dist/core/chart/exporter/svg/overlay/title.d.ts +4 -0
  32. package/dist/core/chart/exporter/svg/plugins/annotations.d.ts +5 -0
  33. package/dist/core/chart/exporter/svg/plugins/brokenAxis.d.ts +20 -0
  34. package/dist/core/chart/exporter/svg/plugins/latex.d.ts +9 -0
  35. package/dist/core/chart/exporter/svg/plugins/register.d.ts +8 -0
  36. package/dist/core/chart/exporter/svg/plugins/regression.d.ts +33 -0
  37. package/dist/core/chart/exporter/svg/plugins/roi.d.ts +12 -0
  38. package/dist/core/chart/exporter/svg/plugins/tradeMarkers.d.ts +3 -0
  39. package/dist/core/chart/exporter/svg/plugins/types.d.ts +28 -0
  40. package/dist/core/chart/exporter/svg/plugins/watermark.d.ts +13 -0
  41. package/dist/core/chart/exporter/svg/series/band.d.ts +6 -0
  42. package/dist/core/chart/exporter/svg/series/bar.d.ts +6 -0
  43. package/dist/core/chart/exporter/svg/series/boxplot.d.ts +6 -0
  44. package/dist/core/chart/exporter/svg/series/candlestick.d.ts +6 -0
  45. package/dist/core/chart/exporter/svg/series/finitePoints.d.ts +6 -0
  46. package/dist/core/chart/exporter/svg/series/gauge.d.ts +5 -0
  47. package/dist/core/chart/exporter/svg/series/heatmap.d.ts +6 -0
  48. package/dist/core/chart/exporter/svg/series/indicator.d.ts +6 -0
  49. package/dist/core/chart/exporter/svg/series/line.d.ts +12 -0
  50. package/dist/core/chart/exporter/svg/series/polar.d.ts +6 -0
  51. package/dist/core/chart/exporter/svg/series/radar.d.ts +5 -0
  52. package/dist/core/chart/exporter/svg/series/registry.d.ts +10 -0
  53. package/dist/core/chart/exporter/svg/series/sankey.d.ts +5 -0
  54. package/dist/core/chart/exporter/svg/series/scatter.d.ts +1 -0
  55. package/dist/core/chart/exporter/svg/series/ternary.d.ts +7 -0
  56. package/dist/core/chart/exporter/svg/series/waterfall.d.ts +6 -0
  57. package/dist/core/chart/exporter/svg/seriesAtTimestamp.d.ts +4 -0
  58. package/dist/core/chart/exporter/svg/seriesUtils.d.ts +3 -0
  59. package/dist/core/chart/exporter/svg/symbols.d.ts +5 -0
  60. package/dist/core/chart/exporter/svg/tickUtils.d.ts +9 -0
  61. package/dist/core/chart/mountSVGString.d.ts +5 -0
  62. package/dist/core/chart/types.d.ts +2 -2
  63. package/dist/core/stacked/StackSVGComposer.d.ts +14 -0
  64. package/dist/core/stacked/index.d.ts +3 -2
  65. package/dist/core/stacked/types.d.ts +12 -4
  66. package/dist/createStackedChart-DjA3aJAu.js +2761 -0
  67. package/dist/createStackedChart-DjA3aJAu.js.map +1 -0
  68. package/dist/{hooks-DH-3bewj.js → hooks-4wQH27r9.js} +3 -3
  69. package/dist/{hooks-DH-3bewj.js.map → hooks-4wQH27r9.js.map} +1 -1
  70. package/dist/index-Bj-xyXY6.js +582 -0
  71. package/dist/index-Bj-xyXY6.js.map +1 -0
  72. package/dist/plugins/PluginManager.d.ts +5 -0
  73. package/dist/plugins/annotations.js +8 -7
  74. package/dist/plugins/annotations.js.map +1 -1
  75. package/dist/plugins/broken-axis.js +198 -152
  76. package/dist/plugins/broken-axis.js.map +1 -1
  77. package/dist/plugins/forecasting.js +273 -258
  78. package/dist/plugins/forecasting.js.map +1 -1
  79. package/dist/plugins/ml-integration.js +107 -93
  80. package/dist/plugins/ml-integration.js.map +1 -1
  81. package/dist/plugins/radar/types.d.ts +11 -0
  82. package/dist/plugins/radar.js +64 -53
  83. package/dist/plugins/radar.js.map +1 -1
  84. package/dist/plugins/roi/index.d.ts +2 -0
  85. package/dist/plugins/roi.js +184 -145
  86. package/dist/plugins/roi.js.map +1 -1
  87. package/dist/plugins/snapshot.js +20 -15
  88. package/dist/plugins/snapshot.js.map +1 -1
  89. package/dist/plugins/types.d.ts +4 -0
  90. package/dist/react.js +2 -2
  91. package/dist/regression-HNdyk1Dm.js +28 -0
  92. package/dist/regression-HNdyk1Dm.js.map +1 -0
  93. package/dist/renderer/ChartSeriesRenderer.d.ts +3 -2
  94. package/dist/renderer/SVGChartRenderer.d.ts +15 -0
  95. package/dist/renderer/SankeyRenderer.d.ts +1 -0
  96. package/dist/renderer/registerSVG.d.ts +5 -0
  97. package/dist/renderer/sankeyLayout.d.ts +29 -0
  98. package/dist/scientific.js +2 -2
  99. package/dist/solid.js +2 -2
  100. package/dist/svelte.js +2 -2
  101. package/dist/tickUtils-B_X-ha13.js +41 -0
  102. package/dist/tickUtils-B_X-ha13.js.map +1 -0
  103. package/dist/trading.js +3 -3
  104. package/dist/types.d.ts +2 -1
  105. package/dist/velo-plot.full.js +1107 -1292
  106. package/dist/velo-plot.full.js.map +1 -1
  107. package/dist/velo-plot.js +2 -2
  108. package/dist/vue/VeloPlot.vue.d.ts +1 -1
  109. package/dist/vue/index.d.ts +33 -33
  110. package/dist/vue.js +2 -2
  111. package/package.json +6 -1
  112. package/dist/ChartCore-AnR_3Xkb.js.map +0 -1
  113. package/dist/createStackedChart-DqcLCFGS.js +0 -1338
  114. package/dist/createStackedChart-DqcLCFGS.js.map +0 -1
  115. package/dist/index-Cv6ZDLWf.js +0 -521
  116. package/dist/index-Cv6ZDLWf.js.map +0 -1
@@ -1,8 +1,9 @@
1
- function E(l) {
1
+ import { e as D } from "../regression-HNdyk1Dm.js";
2
+ function P(l) {
2
3
  return Array.from(l);
3
4
  }
4
- function D(l) {
5
- const a = [
5
+ function I(l) {
6
+ const i = [
6
7
  [0.5, 0.674],
7
8
  [0.68, 0.994],
8
9
  [0.8, 1.282],
@@ -12,41 +13,41 @@ function D(l) {
12
13
  [0.99, 2.576],
13
14
  [0.995, 2.807]
14
15
  ];
15
- let o = a[0], e = 1 / 0;
16
- for (const c of a) {
16
+ let s = i[0], n = 1 / 0;
17
+ for (const c of i) {
17
18
  const t = Math.abs(c[0] - l);
18
- t < e && (e = t, o = c);
19
+ t < n && (n = t, s = c);
19
20
  }
20
- return o[1];
21
+ return s[1];
21
22
  }
22
- function C(l, a, o, e, c = {}, t = 0.95) {
23
+ function B(l, i, s, n, c = {}, t = 0.95) {
23
24
  const r = l.length;
24
25
  if (r === 0) throw new Error("Dataset is empty");
25
- const s = E(a), n = E(l), i = r > 1 ? (n[r - 1] - n[0]) / (r - 1) : 1, m = n[r - 1];
26
- let f;
27
- switch (o) {
26
+ const o = P(i), e = P(l), a = r > 1 ? (e[r - 1] - e[0]) / (r - 1) : 1, w = e[r - 1];
27
+ let u;
28
+ switch (s) {
28
29
  case "sma":
29
- f = X(s, e, c.windowSize || 10);
30
+ u = C(o, n, c.windowSize || 10);
30
31
  break;
31
32
  case "ema":
32
- f = R(s, e, c.alpha ?? 0.3);
33
+ u = R(o, n, c.alpha ?? 0.3);
33
34
  break;
34
35
  case "linear":
35
- f = j(n, s, e);
36
+ u = j(e, o, n);
36
37
  break;
37
38
  case "expSmoothing":
38
- f = B(s, e, c.alpha ?? 0.3);
39
+ u = Y(o, n, c.alpha ?? 0.3);
39
40
  break;
40
41
  case "holt":
41
- f = F(s, e, c.alpha ?? 0.3, c.beta ?? 0.1);
42
+ u = F(o, n, c.alpha ?? 0.3, c.beta ?? 0.1);
42
43
  break;
43
44
  case "wma":
44
- f = W(s, e, c.windowSize || 10);
45
+ u = X(o, n, c.windowSize || 10);
45
46
  break;
46
47
  case "holtWinters":
47
- f = Y(
48
- s,
49
- e,
48
+ u = H(
49
+ o,
50
+ n,
50
51
  c.period || 12,
51
52
  c.alpha ?? 0.3,
52
53
  c.beta ?? 0.1,
@@ -54,363 +55,377 @@ function C(l, a, o, e, c = {}, t = 0.95) {
54
55
  );
55
56
  break;
56
57
  case "arima":
57
- f = H(
58
- s,
59
- e,
58
+ u = O(
59
+ o,
60
+ n,
60
61
  c.p ?? 1,
61
62
  c.d ?? 1,
62
63
  c.q ?? 0
63
64
  );
64
65
  break;
65
66
  default:
66
- throw new Error(`Method ${o} not implemented yet`);
67
+ throw new Error(`Method ${s} not implemented yet`);
67
68
  }
68
- const w = new Array(e);
69
- for (let S = 0; S < e; S++)
70
- w[S] = m + (S + 1) * i;
71
- const u = J(s, f.fitted), y = D(t), h = u.rmse, { lower: v, upper: x } = I(
72
- f.yValues,
69
+ const g = new Array(n);
70
+ for (let p = 0; p < n; p++)
71
+ g[p] = w + (p + 1) * a;
72
+ const f = K(o, u.fitted), y = I(t), h = f.rmse, { lower: v, upper: b } = W(
73
+ u.yValues,
73
74
  h,
74
75
  y,
75
- f.accumulates
76
+ u.accumulates
76
77
  );
77
78
  return {
78
- xValues: w,
79
- yValues: f.yValues,
79
+ xValues: g,
80
+ yValues: u.yValues,
80
81
  lowerBound: v,
81
- upperBound: x,
82
- method: o,
83
- metadata: { ...u, confidence: t }
82
+ upperBound: b,
83
+ method: s,
84
+ metadata: { ...f, confidence: t }
84
85
  };
85
86
  }
86
- function I(l, a, o, e) {
87
+ function W(l, i, s, n) {
87
88
  const c = new Array(l.length), t = new Array(l.length);
88
89
  for (let r = 0; r < l.length; r++) {
89
- const s = e ? Math.sqrt(r + 1) : 1, n = o * a * s;
90
- c[r] = l[r] - n, t[r] = l[r] + n;
90
+ const o = n ? Math.sqrt(r + 1) : 1, e = s * i * o;
91
+ c[r] = l[r] - e, t[r] = l[r] + e;
91
92
  }
92
93
  return { lower: c, upper: t };
93
94
  }
94
- function W(l, a, o) {
95
- const e = l.length, c = Math.min(o, e), t = (n) => {
96
- const i = Math.min(c, n);
97
- let m = 0, f = 0;
98
- for (let w = 0; w < i; w++) {
99
- const u = w + 1;
100
- m += l[n - i + w] * u, f += u;
95
+ function X(l, i, s) {
96
+ const n = l.length, c = Math.min(s, n), t = (e) => {
97
+ const a = Math.min(c, e);
98
+ let w = 0, u = 0;
99
+ for (let g = 0; g < a; g++) {
100
+ const f = g + 1;
101
+ w += l[e - a + g] * f, u += f;
101
102
  }
102
- return m / f;
103
- }, r = new Array(e).fill(null);
104
- for (let n = 1; n < e; n++) r[n] = t(n);
105
- const s = t(e);
106
- return { yValues: new Array(a).fill(s), fitted: r, accumulates: !1 };
103
+ return w / u;
104
+ }, r = new Array(n).fill(null);
105
+ for (let e = 1; e < n; e++) r[e] = t(e);
106
+ const o = t(n);
107
+ return { yValues: new Array(i).fill(o), fitted: r, accumulates: !1 };
107
108
  }
108
- function X(l, a, o) {
109
- const e = l.length, c = Math.min(o, e), t = (n) => {
110
- const i = Math.min(c, n);
111
- let m = 0;
112
- for (let f = n - i; f < n; f++) m += l[f];
113
- return m / i;
114
- }, r = new Array(e).fill(null);
115
- for (let n = 1; n < e; n++) r[n] = t(n);
116
- const s = t(e);
117
- return { yValues: new Array(a).fill(s), fitted: r, accumulates: !1 };
109
+ function C(l, i, s) {
110
+ const n = l.length, c = Math.min(s, n), t = (e) => {
111
+ const a = Math.min(c, e);
112
+ let w = 0;
113
+ for (let u = e - a; u < e; u++) w += l[u];
114
+ return w / a;
115
+ }, r = new Array(n).fill(null);
116
+ for (let e = 1; e < n; e++) r[e] = t(e);
117
+ const o = t(n);
118
+ return { yValues: new Array(i).fill(o), fitted: r, accumulates: !1 };
118
119
  }
119
- function R(l, a, o) {
120
- const e = l.length;
120
+ function R(l, i, s) {
121
+ const n = l.length;
121
122
  let c = l[0];
122
- const t = new Array(e).fill(null);
123
- for (let r = 1; r < e; r++)
124
- t[r] = c, c = o * l[r] + (1 - o) * c;
125
- return { yValues: new Array(a).fill(c), fitted: t, accumulates: !1 };
123
+ const t = new Array(n).fill(null);
124
+ for (let r = 1; r < n; r++)
125
+ t[r] = c, c = s * l[r] + (1 - s) * c;
126
+ return { yValues: new Array(i).fill(c), fitted: t, accumulates: !1 };
126
127
  }
127
- function j(l, a, o) {
128
- const e = l.length;
129
- let c = 0, t = 0, r = 0, s = 0;
130
- for (let h = 0; h < e; h++)
131
- c += l[h], t += a[h], r += l[h] * a[h], s += l[h] * l[h];
132
- const n = e * s - c * c, i = n !== 0 ? (e * r - c * t) / n : 0, m = (t - i * c) / e, f = new Array(e);
133
- for (let h = 0; h < e; h++) f[h] = i * l[h] + m;
134
- const w = l[e - 1], u = e > 1 ? (l[e - 1] - l[0]) / (e - 1) : 1, y = new Array(o);
135
- for (let h = 0; h < o; h++) {
136
- const v = w + (h + 1) * u;
137
- y[h] = i * v + m;
128
+ function j(l, i, s) {
129
+ const n = l.length;
130
+ let c = 0, t = 0, r = 0, o = 0;
131
+ for (let h = 0; h < n; h++)
132
+ c += l[h], t += i[h], r += l[h] * i[h], o += l[h] * l[h];
133
+ const e = n * o - c * c, a = e !== 0 ? (n * r - c * t) / e : 0, w = (t - a * c) / n, u = new Array(n);
134
+ for (let h = 0; h < n; h++) u[h] = a * l[h] + w;
135
+ const g = l[n - 1], f = n > 1 ? (l[n - 1] - l[0]) / (n - 1) : 1, y = new Array(s);
136
+ for (let h = 0; h < s; h++) {
137
+ const v = g + (h + 1) * f;
138
+ y[h] = a * v + w;
138
139
  }
139
- return { yValues: y, fitted: f, accumulates: !0 };
140
+ return { yValues: y, fitted: u, accumulates: !0 };
140
141
  }
141
- function B(l, a, o) {
142
- const e = l.length;
142
+ function Y(l, i, s) {
143
+ const n = l.length;
143
144
  let c = l[0];
144
- const t = new Array(e).fill(null);
145
- for (let r = 1; r < e; r++)
146
- t[r] = c, c = o * l[r] + (1 - o) * c;
147
- return { yValues: new Array(a).fill(c), fitted: t, accumulates: !1 };
145
+ const t = new Array(n).fill(null);
146
+ for (let r = 1; r < n; r++)
147
+ t[r] = c, c = s * l[r] + (1 - s) * c;
148
+ return { yValues: new Array(i).fill(c), fitted: t, accumulates: !1 };
148
149
  }
149
- function F(l, a, o, e) {
150
+ function F(l, i, s, n) {
150
151
  const c = l.length;
151
152
  if (c < 2)
152
- return { yValues: new Array(a).fill(l[0] || 0), fitted: [], accumulates: !0 };
153
+ return { yValues: new Array(i).fill(l[0] || 0), fitted: [], accumulates: !0 };
153
154
  let t = l[0], r = l[1] - l[0];
154
- const s = new Array(c).fill(null);
155
- for (let i = 1; i < c; i++) {
156
- s[i] = t + r;
157
- const m = t;
158
- t = o * l[i] + (1 - o) * (t + r), r = e * (t - m) + (1 - e) * r;
155
+ const o = new Array(c).fill(null);
156
+ for (let a = 1; a < c; a++) {
157
+ o[a] = t + r;
158
+ const w = t;
159
+ t = s * l[a] + (1 - s) * (t + r), r = n * (t - w) + (1 - n) * r;
159
160
  }
160
- const n = new Array(a);
161
- for (let i = 0; i < a; i++) n[i] = t + (i + 1) * r;
162
- return { yValues: n, fitted: s, accumulates: !0 };
161
+ const e = new Array(i);
162
+ for (let a = 0; a < i; a++) e[a] = t + (a + 1) * r;
163
+ return { yValues: e, fitted: o, accumulates: !0 };
163
164
  }
164
- function Y(l, a, o, e, c, t) {
165
+ function H(l, i, s, n, c, t) {
165
166
  const r = l.length;
166
- if (r < o * 2)
167
- return F(l, a, e, c);
168
- const s = new Array(o), n = new Array(Math.floor(r / o));
169
- for (let u = 0; u < n.length; u++) {
167
+ if (r < s * 2)
168
+ return F(l, i, n, c);
169
+ const o = new Array(s), e = new Array(Math.floor(r / s));
170
+ for (let f = 0; f < e.length; f++) {
170
171
  let y = 0;
171
- for (let h = 0; h < o; h++) y += l[u * o + h];
172
- n[u] = y / o;
172
+ for (let h = 0; h < s; h++) y += l[f * s + h];
173
+ e[f] = y / s;
173
174
  }
174
- for (let u = 0; u < o; u++) {
175
+ for (let f = 0; f < s; f++) {
175
176
  let y = 0;
176
- for (let h = 0; h < n.length; h++)
177
- y += l[h * o + u] - n[h];
178
- s[u] = y / n.length;
177
+ for (let h = 0; h < e.length; h++)
178
+ y += l[h * s + f] - e[h];
179
+ o[f] = y / e.length;
179
180
  }
180
- let i = n[0], m = (n[n.length - 1] - n[0]) / ((n.length - 1) * o);
181
- const f = new Array(r).fill(null);
182
- for (let u = 0; u < r; u++) {
183
- const y = s[u % o];
184
- u > 0 && (f[u] = i + m + y);
185
- const h = i, v = l[u];
186
- i = e * (v - y) + (1 - e) * (i + m), m = c * (i - h) + (1 - c) * m, s[u % o] = t * (v - i) + (1 - t) * y;
181
+ let a = e[0], w = (e[e.length - 1] - e[0]) / ((e.length - 1) * s);
182
+ const u = new Array(r).fill(null);
183
+ for (let f = 0; f < r; f++) {
184
+ const y = o[f % s];
185
+ f > 0 && (u[f] = a + w + y);
186
+ const h = a, v = l[f];
187
+ a = n * (v - y) + (1 - n) * (a + w), w = c * (a - h) + (1 - c) * w, o[f % s] = t * (v - a) + (1 - t) * y;
187
188
  }
188
- const w = new Array(a);
189
- for (let u = 0; u < a; u++) {
190
- const y = u + 1;
191
- w[u] = i + y * m + s[(r + u) % o];
189
+ const g = new Array(i);
190
+ for (let f = 0; f < i; f++) {
191
+ const y = f + 1;
192
+ g[f] = a + y * w + o[(r + f) % s];
192
193
  }
193
- return { yValues: w, fitted: f, accumulates: !0 };
194
+ return { yValues: g, fitted: u, accumulates: !0 };
194
195
  }
195
- function H(l, a, o, e, c) {
196
- const t = l.length, r = Math.max(o, c);
197
- if (t < e + r + 2 || t < 4)
198
- return F(l, a, 0.3, 0.1);
199
- const s = [l.slice()];
200
- for (let g = 0; g < e; g++)
201
- s.push($(s[g]));
202
- const n = s[e], i = n.length, m = n.reduce((g, A) => g + A, 0) / i, f = n.map((g) => g - m);
203
- let w = new Array(i).fill(0);
196
+ function O(l, i, s, n, c) {
197
+ const t = l.length, r = Math.max(s, c);
198
+ if (t < n + r + 2 || t < 4)
199
+ return F(l, i, 0.3, 0.1);
200
+ const o = [l.slice()];
201
+ for (let m = 0; m < n; m++)
202
+ o.push(_(o[m]));
203
+ const e = o[n], a = e.length, w = e.reduce((m, A) => m + A, 0) / a, u = e.map((m) => m - w);
204
+ let g = new Array(a).fill(0);
204
205
  if (c > 0) {
205
- const g = Math.min(Math.max(o + c + 2, 5), Math.floor(i / 2)), { residuals: A } = _(f, g);
206
- w = A;
206
+ const m = Math.min(Math.max(s + c + 2, 5), Math.floor(a / 2)), { residuals: A } = G(u, m);
207
+ g = A;
207
208
  }
208
- const u = Math.max(o, c), y = [], h = [];
209
- for (let g = u; g < i; g++) {
209
+ const f = Math.max(s, c), y = [], h = [];
210
+ for (let m = f; m < a; m++) {
210
211
  const A = [];
211
- for (let d = 1; d <= o; d++) A.push(f[g - d]);
212
- for (let d = 1; d <= c; d++) A.push(w[g - d]);
213
- y.push(A), h.push(f[g]);
212
+ for (let d = 1; d <= s; d++) A.push(u[m - d]);
213
+ for (let d = 1; d <= c; d++) A.push(g[m - d]);
214
+ y.push(A), h.push(u[m]);
214
215
  }
215
216
  let v = [];
216
- if (y.length > 0 && y[0].length > 0 && (v = L(y, h)), v.length !== o + c || v.some((g) => !Number.isFinite(g)))
217
- return F(l, a, 0.3, 0.1);
218
- const x = v.slice(0, o), S = v.slice(o, o + c), k = new Array(t).fill(null), T = new Array(i).fill(0);
219
- for (let g = u; g < i; g++) {
217
+ if (y.length > 0 && y[0].length > 0 && (v = L(y, h)), v.length !== s + c || v.some((m) => !Number.isFinite(m)))
218
+ return F(l, i, 0.3, 0.1);
219
+ const b = v.slice(0, s), p = v.slice(s, s + c), k = new Array(t).fill(null), V = new Array(a).fill(0);
220
+ for (let m = f; m < a; m++) {
220
221
  let A = 0;
221
- for (let d = 1; d <= o; d++) A += x[d - 1] * f[g - d];
222
- for (let d = 1; d <= c; d++) A += S[d - 1] * T[g - d];
223
- T[g] = f[g] - A, k[g + (t - i)] = O(s, e, g, A + m);
222
+ for (let d = 1; d <= s; d++) A += b[d - 1] * u[m - d];
223
+ for (let d = 1; d <= c; d++) A += p[d - 1] * V[m - d];
224
+ V[m] = u[m] - A, k[m + (t - a)] = N(o, n, m, A + w);
224
225
  }
225
- const V = f.slice(), b = T.slice(), p = [];
226
- for (let g = 0; g < a; g++) {
226
+ const T = u.slice(), S = V.slice(), x = [];
227
+ for (let m = 0; m < i; m++) {
227
228
  let A = 0;
228
- for (let d = 1; d <= o; d++)
229
- A += x[d - 1] * V[V.length - d];
229
+ for (let d = 1; d <= s; d++)
230
+ A += b[d - 1] * T[T.length - d];
230
231
  for (let d = 1; d <= c; d++)
231
- A += S[d - 1] * b[b.length - d];
232
- V.push(A), b.push(0), p.push(A + m);
232
+ A += p[d - 1] * S[S.length - d];
233
+ T.push(A), S.push(0), x.push(A + w);
233
234
  }
234
- return { yValues: N(s, e, p), fitted: k, accumulates: !0 };
235
+ return { yValues: $(o, n, x), fitted: k, accumulates: !0 };
235
236
  }
236
- function $(l) {
237
- const a = new Array(l.length - 1);
238
- for (let o = 1; o < l.length; o++) a[o - 1] = l[o] - l[o - 1];
239
- return a;
237
+ function _(l) {
238
+ const i = new Array(l.length - 1);
239
+ for (let s = 1; s < l.length; s++) i[s - 1] = l[s] - l[s - 1];
240
+ return i;
240
241
  }
241
- function N(l, a, o) {
242
- let e = o.slice();
243
- for (let c = a; c >= 1; c--) {
242
+ function $(l, i, s) {
243
+ let n = s.slice();
244
+ for (let c = i; c >= 1; c--) {
244
245
  const t = l[c - 1];
245
246
  let r = t[t.length - 1];
246
- const s = new Array(e.length);
247
- for (let n = 0; n < e.length; n++)
248
- r += e[n], s[n] = r;
249
- e = s;
247
+ const o = new Array(n.length);
248
+ for (let e = 0; e < n.length; e++)
249
+ r += n[e], o[e] = r;
250
+ n = o;
250
251
  }
251
- return e;
252
+ return n;
252
253
  }
253
- function O(l, a, o, e) {
254
- return a === 0 ? e : l[a - 1][o] + e;
254
+ function N(l, i, s, n) {
255
+ return i === 0 ? n : l[i - 1][s] + n;
255
256
  }
256
- function _(l, a) {
257
- const o = l.length, e = [], c = [];
258
- for (let s = a; s < o; s++) {
259
- const n = [];
260
- for (let i = 1; i <= a; i++) n.push(l[s - i]);
261
- e.push(n), c.push(l[s]);
257
+ function G(l, i) {
258
+ const s = l.length, n = [], c = [];
259
+ for (let o = i; o < s; o++) {
260
+ const e = [];
261
+ for (let a = 1; a <= i; a++) e.push(l[o - a]);
262
+ n.push(e), c.push(l[o]);
262
263
  }
263
- const t = e.length > 0 ? L(e, c) : new Array(a).fill(0), r = new Array(o).fill(0);
264
- for (let s = a; s < o; s++) {
265
- let n = 0;
266
- for (let i = 1; i <= a; i++) n += (t[i - 1] || 0) * l[s - i];
267
- r[s] = l[s] - n;
264
+ const t = n.length > 0 ? L(n, c) : new Array(i).fill(0), r = new Array(s).fill(0);
265
+ for (let o = i; o < s; o++) {
266
+ let e = 0;
267
+ for (let a = 1; a <= i; a++) e += (t[a - 1] || 0) * l[o - a];
268
+ r[o] = l[o] - e;
268
269
  }
269
270
  return { coeffs: t, residuals: r };
270
271
  }
271
- function L(l, a) {
272
- const o = l.length, e = l[0].length, c = Array.from({ length: e }, () => new Array(e).fill(0)), t = new Array(e).fill(0);
273
- for (let r = 0; r < o; r++)
274
- for (let s = 0; s < e; s++) {
275
- t[s] += l[r][s] * a[r];
276
- for (let n = 0; n < e; n++)
277
- c[s][n] += l[r][s] * l[r][n];
272
+ function L(l, i) {
273
+ const s = l.length, n = l[0].length, c = Array.from({ length: n }, () => new Array(n).fill(0)), t = new Array(n).fill(0);
274
+ for (let r = 0; r < s; r++)
275
+ for (let o = 0; o < n; o++) {
276
+ t[o] += l[r][o] * i[r];
277
+ for (let e = 0; e < n; e++)
278
+ c[o][e] += l[r][o] * l[r][e];
278
279
  }
279
- for (let r = 0; r < e; r++) c[r][r] += 1e-8;
280
- return G(c, t);
280
+ for (let r = 0; r < n; r++) c[r][r] += 1e-8;
281
+ return J(c, t);
281
282
  }
282
- function G(l, a) {
283
- const o = a.length, e = l.map((t, r) => [...t, a[r]]);
284
- for (let t = 0; t < o; t++) {
283
+ function J(l, i) {
284
+ const s = i.length, n = l.map((t, r) => [...t, i[r]]);
285
+ for (let t = 0; t < s; t++) {
285
286
  let r = t;
286
- for (let s = t + 1; s < o; s++)
287
- Math.abs(e[s][t]) > Math.abs(e[r][t]) && (r = s);
288
- if (Math.abs(e[r][t]) < 1e-12) return [];
289
- [e[t], e[r]] = [e[r], e[t]];
290
- for (let s = 0; s < o; s++) {
291
- if (s === t) continue;
292
- const n = e[s][t] / e[t][t];
293
- for (let i = t; i <= o; i++) e[s][i] -= n * e[t][i];
287
+ for (let o = t + 1; o < s; o++)
288
+ Math.abs(n[o][t]) > Math.abs(n[r][t]) && (r = o);
289
+ if (Math.abs(n[r][t]) < 1e-12) return [];
290
+ [n[t], n[r]] = [n[r], n[t]];
291
+ for (let o = 0; o < s; o++) {
292
+ if (o === t) continue;
293
+ const e = n[o][t] / n[t][t];
294
+ for (let a = t; a <= s; a++) n[o][a] -= e * n[t][a];
294
295
  }
295
296
  }
296
- const c = new Array(o);
297
- for (let t = 0; t < o; t++) c[t] = e[t][o] / e[t][t];
297
+ const c = new Array(s);
298
+ for (let t = 0; t < s; t++) c[t] = n[t][s] / n[t][t];
298
299
  return c;
299
300
  }
300
- function J(l, a) {
301
- if (!a || a.length === 0)
301
+ function K(l, i) {
302
+ if (!i || i.length === 0)
302
303
  return { mse: 0, rmse: 0, mae: 0, r2: 0 };
303
- let o = 0, e = 0, c = 0;
304
+ let s = 0, n = 0, c = 0;
304
305
  const t = [];
305
- for (let w = 0; w < a.length && w < l.length; w++) {
306
- const u = a[w];
307
- if (u == null || !Number.isFinite(u)) continue;
308
- const y = l[w] - u;
309
- o += y * y, e += Math.abs(y), t.push(l[w]), c++;
306
+ for (let g = 0; g < i.length && g < l.length; g++) {
307
+ const f = i[g];
308
+ if (f == null || !Number.isFinite(f)) continue;
309
+ const y = l[g] - f;
310
+ s += y * y, n += Math.abs(y), t.push(l[g]), c++;
310
311
  }
311
312
  if (c === 0) return { mse: 0, rmse: 0, mae: 0, r2: 0 };
312
- const r = o / c, s = Math.sqrt(r), n = e / c, i = t.reduce((w, u) => w + u, 0) / t.length, m = t.reduce((w, u) => w + (u - i) * (u - i), 0), f = m > 0 ? 1 - o / m : 0;
313
+ const r = s / c, o = Math.sqrt(r), e = n / c, a = t.reduce((g, f) => g + f, 0) / t.length, w = t.reduce((g, f) => g + (f - a) * (f - a), 0), u = w > 0 ? 1 - s / w : 0;
313
314
  return {
314
- mse: P(r),
315
- rmse: P(s),
316
- mae: P(n),
317
- r2: P(f)
315
+ mse: E(r),
316
+ rmse: E(o),
317
+ mae: E(e),
318
+ r2: E(u)
318
319
  };
319
320
  }
320
- function P(l) {
321
+ function E(l) {
321
322
  return Math.round(l * 1e6) / 1e6;
322
323
  }
323
- const K = {
324
+ const Q = {
324
325
  name: "velo-plot-forecasting",
325
326
  version: "1.0.0",
326
327
  description: "Time series forecasting for velo-plot",
327
328
  provides: ["analysis", "forecasting"],
328
329
  tags: ["statistics", "forecasting", "analysis"]
329
330
  };
330
- function Q(l = {}) {
331
- let a = null;
332
- const o = /* @__PURE__ */ new Map(), e = {
331
+ function Z(l = {}) {
332
+ let i = null;
333
+ const s = /* @__PURE__ */ new Map(), n = {
333
334
  forecast(t, r) {
334
- let s, n;
335
+ let o, e;
335
336
  if (typeof t == "string") {
336
- if (!a) throw new Error("Plugin not initialized");
337
- const i = a.data.getAllSeries().find((f) => f.getId() === t);
338
- if (!i) throw new Error(`Series not found: ${t}`);
339
- const m = i.getData();
340
- s = m.x, n = m.y;
337
+ if (!i) throw new Error("Plugin not initialized");
338
+ const a = i.data.getAllSeries().find((u) => u.getId() === t);
339
+ if (!a) throw new Error(`Series not found: ${t}`);
340
+ const w = a.getData();
341
+ o = w.x, e = w.y;
341
342
  } else if (Array.isArray(t))
342
- n = t, s = t.map((i, m) => m);
343
+ e = t, o = t.map((a, w) => w);
343
344
  else if (t.x && t.y)
344
- s = t.x, n = t.y;
345
+ o = t.x, e = t.y;
345
346
  else
346
347
  throw new Error("Invalid data format for forecasting");
347
- return C(s, n, r.method, r.horizon, r.params, r.confidence);
348
+ return B(o, e, r.method, r.horizon, r.params, r.confidence);
348
349
  },
349
350
  async forecastSeries(t, r) {
350
- if (!a) throw new Error("Plugin not initialized");
351
- const s = a.data.getAllSeries().find((i) => i.getId() === t);
352
- if (!s) throw new Error(`Series not found: ${t}`);
353
- const n = s.getData();
354
- return this.forecast(n, r);
351
+ if (!i) throw new Error("Plugin not initialized");
352
+ const o = i.data.getAllSeries().find((a) => a.getId() === t);
353
+ if (!o) throw new Error(`Series not found: ${t}`);
354
+ const e = o.getData();
355
+ return this.forecast(e, r);
355
356
  },
356
357
  visualize(t, r = {}) {
357
- const s = `forecast-${Math.random().toString(36).substr(2, 9)}`, n = {
358
+ const o = `forecast-${Math.random().toString(36).substr(2, 9)}`, e = {
358
359
  showLine: !0,
359
360
  showConfidenceInterval: !0,
360
361
  ...l.defaultVisualization,
361
362
  ...r
362
363
  };
363
- return o.set(s, { result: t, config: n }), a == null || a.requestRender(), s;
364
+ return s.set(o, { result: t, config: e }), i == null || i.requestRender(), o;
364
365
  },
365
366
  clear(t) {
366
- t ? o.delete(t) : o.clear(), a == null || a.requestRender();
367
+ t ? s.delete(t) : s.clear(), i == null || i.requestRender();
367
368
  }
368
369
  };
369
370
  function c(t) {
370
- const { render: r, coords: s } = t, { ctx2d: n } = r;
371
- n && o.forEach((i) => {
372
- var v, x, S, k, T, V;
373
- const { result: m, config: f } = i, { xValues: w, yValues: u, lowerBound: y, upperBound: h } = m;
374
- if (n.save(), f.showConfidenceInterval && y && h) {
375
- n.beginPath();
376
- const b = ((v = f.intervalStyle) == null ? void 0 : v.opacity) ?? 0.15, p = ((x = f.intervalStyle) == null ? void 0 : x.fillColor) || ((S = f.lineStyle) == null ? void 0 : S.color) || "#3b82f6";
377
- n.fillStyle = p.startsWith("rgba") ? p : p + Math.floor(b * 255).toString(16).padStart(2, "0");
378
- for (let M = 0; M < w.length; M++) {
379
- const g = s.dataToPixelX(w[M]), A = s.dataToPixelY(h[M]);
380
- M === 0 ? n.moveTo(g, A) : n.lineTo(g, A);
371
+ const { render: r, coords: o } = t, { ctx2d: e } = r;
372
+ e && s.forEach((a) => {
373
+ var v, b, p, k, V, T;
374
+ const { result: w, config: u } = a, { xValues: g, yValues: f, lowerBound: y, upperBound: h } = w;
375
+ if (e.save(), u.showConfidenceInterval && y && h) {
376
+ e.beginPath();
377
+ const S = ((v = u.intervalStyle) == null ? void 0 : v.opacity) ?? 0.15, x = ((b = u.intervalStyle) == null ? void 0 : b.fillColor) || ((p = u.lineStyle) == null ? void 0 : p.color) || "#3b82f6";
378
+ e.fillStyle = x.startsWith("rgba") ? x : x + Math.floor(S * 255).toString(16).padStart(2, "0");
379
+ for (let M = 0; M < g.length; M++) {
380
+ const m = o.dataToPixelX(g[M]), A = o.dataToPixelY(h[M]);
381
+ M === 0 ? e.moveTo(m, A) : e.lineTo(m, A);
381
382
  }
382
- for (let M = w.length - 1; M >= 0; M--) {
383
- const g = s.dataToPixelX(w[M]), A = s.dataToPixelY(y[M]);
384
- n.lineTo(g, A);
383
+ for (let M = g.length - 1; M >= 0; M--) {
384
+ const m = o.dataToPixelX(g[M]), A = o.dataToPixelY(y[M]);
385
+ e.lineTo(m, A);
385
386
  }
386
- n.closePath(), n.fill();
387
+ e.closePath(), e.fill();
387
388
  }
388
- if (f.showLine) {
389
- n.beginPath(), n.strokeStyle = ((k = f.lineStyle) == null ? void 0 : k.color) || "#3b82f6", n.lineWidth = ((T = f.lineStyle) == null ? void 0 : T.width) || 2, (V = f.lineStyle) != null && V.dash ? n.setLineDash(f.lineStyle.dash) : n.setLineDash([5, 5]);
390
- for (let b = 0; b < w.length; b++) {
391
- const p = s.dataToPixelX(w[b]), M = s.dataToPixelY(u[b]);
392
- b === 0 ? n.moveTo(p, M) : n.lineTo(p, M);
389
+ if (u.showLine) {
390
+ e.beginPath(), e.strokeStyle = ((k = u.lineStyle) == null ? void 0 : k.color) || "#3b82f6", e.lineWidth = ((V = u.lineStyle) == null ? void 0 : V.width) || 2, (T = u.lineStyle) != null && T.dash ? e.setLineDash(u.lineStyle.dash) : e.setLineDash([5, 5]);
391
+ for (let S = 0; S < g.length; S++) {
392
+ const x = o.dataToPixelX(g[S]), M = o.dataToPixelY(f[S]);
393
+ S === 0 ? e.moveTo(x, M) : e.lineTo(x, M);
393
394
  }
394
- n.stroke();
395
+ e.stroke();
395
396
  }
396
- n.restore();
397
+ e.restore();
397
398
  });
398
399
  }
399
400
  return {
400
- manifest: K,
401
+ manifest: Q,
401
402
  onInit(t) {
402
- a = t;
403
+ i = t;
403
404
  },
404
405
  onRenderOverlay(t, r) {
405
406
  c(t);
406
407
  },
407
- api: e
408
+ onExportSVG(t) {
409
+ var r;
410
+ !t.builder || ((r = t.exportContext) == null ? void 0 : r.options.includeOverlays) === !1 || s.forEach(({ result: o, config: e }) => {
411
+ var v;
412
+ const { xValues: a, yValues: w, lowerBound: u, upperBound: g } = o, f = a.length, y = [];
413
+ for (let b = 0; b < f; b++)
414
+ y.push({ x: a[b], y: w[b] });
415
+ const h = e.showConfidenceInterval && u && g ? {
416
+ upper: Array.from({ length: f }, (b, p) => ({ x: a[p], y: g[p] })),
417
+ lower: Array.from({ length: f }, (b, p) => ({ x: a[p], y: u[p] }))
418
+ } : void 0;
419
+ D(t, y, h, ((v = e.lineStyle) == null ? void 0 : v.color) ?? "#3b82f6");
420
+ });
421
+ },
422
+ api: n
408
423
  };
409
424
  }
410
425
  export {
411
- Q as PluginForecasting,
412
- C as calculateForecast,
413
- G as gaussianSolve,
414
- K as manifestForecasting
426
+ Z as PluginForecasting,
427
+ B as calculateForecast,
428
+ J as gaussianSolve,
429
+ Q as manifestForecasting
415
430
  };
416
431
  //# sourceMappingURL=forecasting.js.map