velo-plot 1.15.0 → 1.19.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 (80) hide show
  1. package/dist/{ChartCore-BimVvUEg.js → ChartCore-DQ691eXH.js} +1523 -996
  2. package/dist/ChartCore-DQ691eXH.js.map +1 -0
  3. package/dist/assets/downsample.worker-C70QJ04y.js +2 -0
  4. package/dist/assets/downsample.worker-C70QJ04y.js.map +1 -0
  5. package/dist/assets/indicator.worker-bv0zC4EX.js +2 -0
  6. package/dist/assets/indicator.worker-bv0zC4EX.js.map +1 -0
  7. package/dist/core/OverlayRenderer.d.ts +2 -0
  8. package/dist/core/chart/ChartAlerts.d.ts +42 -0
  9. package/dist/core/chart/ChartCore.d.ts +19 -1
  10. package/dist/core/chart/ChartRenderLoop.d.ts +4 -2
  11. package/dist/core/chart/ChartRenderer.d.ts +3 -2
  12. package/dist/core/chart/candlestickMarkers.d.ts +23 -0
  13. package/dist/core/chart/heikinAshi.d.ts +10 -0
  14. package/dist/core/chart/series/types.d.ts +2 -2
  15. package/dist/core/chart/types.d.ts +7 -0
  16. package/dist/core/indicator/addIndicator.d.ts +36 -0
  17. package/dist/core/indicator/index.d.ts +2 -0
  18. package/dist/core/indicator/indicatorPresets.d.ts +37 -0
  19. package/dist/core/series/Series.d.ts +3 -0
  20. package/dist/core/stacked/types.d.ts +8 -0
  21. package/dist/core/time/TimeScale.d.ts +31 -0
  22. package/dist/createStackedChart-BPooTQ9z.js +1164 -0
  23. package/dist/createStackedChart-BPooTQ9z.js.map +1 -0
  24. package/dist/gpu/adapter/gpuRenderer.d.ts +21 -0
  25. package/dist/gpu/backends/webgpu/WebGPUBackend.d.ts +2 -1
  26. package/dist/gpuRenderer-BpaMYz-k.js +1848 -0
  27. package/dist/gpuRenderer-BpaMYz-k.js.map +1 -0
  28. package/dist/index-D7dTq6VB.js +503 -0
  29. package/dist/index-D7dTq6VB.js.map +1 -0
  30. package/dist/{index-Ce2JgkH_.js → index-DoYxf1cV.js} +86 -43
  31. package/dist/{index-Ce2JgkH_.js.map → index-DoYxf1cV.js.map} +1 -1
  32. package/dist/{index.core-C_-CFftD.js → index.core-BtGFYMOu.js} +2 -2
  33. package/dist/{index.core-C_-CFftD.js.map → index.core-BtGFYMOu.js.map} +1 -1
  34. package/dist/index.d.ts +12 -4
  35. package/dist/indicators--eJGmVox.js +302 -0
  36. package/dist/indicators--eJGmVox.js.map +1 -0
  37. package/dist/plugins/analysis.js +530 -807
  38. package/dist/plugins/analysis.js.map +1 -1
  39. package/dist/plugins/caching.js +26 -21
  40. package/dist/plugins/caching.js.map +1 -1
  41. package/dist/plugins/drawing-tools/index.d.ts +16 -0
  42. package/dist/plugins/gpu.js +202 -1895
  43. package/dist/plugins/gpu.js.map +1 -1
  44. package/dist/plugins/index.d.ts +2 -0
  45. package/dist/plugins/keyboard/index.d.ts +1 -7
  46. package/dist/plugins/keyboard.js +1 -1
  47. package/dist/plugins/lazy-load/types.d.ts +7 -0
  48. package/dist/plugins/lazy-load.js +131 -108
  49. package/dist/plugins/lazy-load.js.map +1 -1
  50. package/dist/plugins/replay/index.d.ts +19 -0
  51. package/dist/plugins/virtualization/types.d.ts +12 -0
  52. package/dist/plugins/virtualization.js +1 -1
  53. package/dist/pool-15HMCNv8.js +88 -0
  54. package/dist/pool-15HMCNv8.js.map +1 -0
  55. package/dist/react.js +2 -2
  56. package/dist/renderer/CandlestickRenderer.d.ts +1 -1
  57. package/dist/renderer/ChartSeriesRenderer.d.ts +6 -0
  58. package/dist/renderer/GpuChartRenderer.d.ts +23 -0
  59. package/dist/renderer/index.d.ts +3 -0
  60. package/dist/renderer/spike/WebGLGridSpike.d.ts +40 -0
  61. package/dist/testing/baselines/v1.15.0.json.d.ts +51 -0
  62. package/dist/testing/gridSpikeBenchmark.d.ts +49 -0
  63. package/dist/testing/index.d.ts +5 -0
  64. package/dist/testing/rendererBenchmark.d.ts +13 -0
  65. package/dist/testing/stage1BrowserBench.d.ts +42 -0
  66. package/dist/types.d.ts +21 -1
  67. package/dist/velo-plot.full.js +1322 -789
  68. package/dist/velo-plot.full.js.map +1 -1
  69. package/dist/velo-plot.js +20 -20
  70. package/dist/workers/downsample.d.ts +38 -0
  71. package/dist/workers/downsampleAsync.d.ts +6 -0
  72. package/dist/workers/indicator.worker.d.ts +32 -0
  73. package/dist/workers/indicatorsAsync.d.ts +26 -0
  74. package/dist/workers/pool.d.ts +36 -0
  75. package/package.json +11 -1
  76. package/dist/ChartCore-BimVvUEg.js.map +0 -1
  77. package/dist/createStackedChart-CjsKcOvX.js +0 -1088
  78. package/dist/createStackedChart-CjsKcOvX.js.map +0 -1
  79. package/dist/index-ChgIdk3N.js +0 -229
  80. package/dist/index-ChgIdk3N.js.map +0 -1
@@ -1,202 +1,204 @@
1
- import { a as I, s as _, d as z, i as E } from "../math-Ddm2EZjj.js";
2
- import { c as pn } from "../math-Ddm2EZjj.js";
3
- import { g as T, f as V, d as H, s as X, m as Y, a as G, b as O, v as Z, c as U } from "../utils-BK5UUXxj.js";
4
- import { h as In, e as dn, i as qn } from "../utils-BK5UUXxj.js";
5
- function K(e, o, r, t = {}) {
6
- const n = e.series.get(o);
7
- if (!n) throw new Error(`Series ${o} not found`);
1
+ import { a as A, s as W, d as _, i as z } from "../math-Ddm2EZjj.js";
2
+ import { c as on } from "../math-Ddm2EZjj.js";
3
+ import { g as E, f as T, d as H, s as X, m as Y, a as N, b as O, v as Z, c as G } from "../utils-BK5UUXxj.js";
4
+ import { h as sn, e as cn, i as an } from "../utils-BK5UUXxj.js";
5
+ import { r as K, e as Q, s as U } from "../indicators--eJGmVox.js";
6
+ import { i as fn, j as un, g as hn, f as mn, k as gn, d as dn, m as Mn, c as wn, n as pn, o as yn, p as Fn, b as An, h as bn, a as In, t as qn, v as xn, w as Pn } from "../indicators--eJGmVox.js";
7
+ function J(e, r, o, t = {}) {
8
+ const n = e.series.get(r);
9
+ if (!n) throw new Error(`Series ${r} not found`);
8
10
  const s = n.getData();
9
11
  if (!s || s.x.length < 2) return "";
10
- const c = D(s.x, s.y, r, t), a = n.getBounds(), l = (a == null ? void 0 : a.xMin) ?? 0, i = ((a == null ? void 0 : a.xMax) ?? 1) - l, u = 200, h = new Float32Array(u), m = new Float32Array(u);
11
- for (let g = 0; g < u; g++) {
12
- const F = l + g / (u - 1) * i;
13
- h[g] = F, m[g] = c.predict(F);
12
+ const c = L(s.x, s.y, o, t), i = n.getBounds(), l = (i == null ? void 0 : i.xMin) ?? 0, a = ((i == null ? void 0 : i.xMax) ?? 1) - l, u = 200, h = new Float32Array(u), m = new Float32Array(u);
13
+ for (let d = 0; d < u; d++) {
14
+ const w = l + d / (u - 1) * a;
15
+ h[d] = w, m[d] = c.predict(w);
14
16
  }
15
- const y = `${o}-fit-${Date.now()}`, w = n.getStyle();
17
+ const g = `${r}-fit-${Date.now()}`, M = n.getStyle();
16
18
  return e.addSeries({
17
- id: y,
19
+ id: g,
18
20
  type: "line",
19
21
  yAxisId: n.getYAxisId(),
20
22
  data: { x: h, y: m },
21
23
  style: {
22
- color: w.color,
23
- width: (w.width || 1) * 1.5,
24
+ color: M.color,
25
+ width: (M.width || 1) * 1.5,
24
26
  opacity: 0.8,
25
27
  lineDash: [5, 5]
26
28
  }
27
29
  }), e.addAnnotation({
28
30
  type: "text",
29
- x: l + i * 0.05,
30
- y: c.predict(l + i * 0.05),
31
+ x: l + a * 0.05,
32
+ y: c.predict(l + a * 0.05),
31
33
  text: `${c.equation}
32
34
  (R² = ${c.rSquared.toFixed(4)})`,
33
35
  fontSize: 12,
34
36
  backgroundColor: "rgba(0,0,0,0.7)",
35
- color: w.color || "#ffffff",
37
+ color: M.color || "#ffffff",
36
38
  padding: 4,
37
39
  anchor: "bottom-left",
38
40
  interactive: !0
39
- }), y;
41
+ }), g;
40
42
  }
41
- function v(e) {
42
- const o = e.length, r = S(o), t = new Float64Array(r);
43
- for (let s = 0; s < o; s++)
44
- t[s] = e[s];
45
- const n = new Array(r);
43
+ function x(e) {
44
+ const r = e.length, o = C(r), t = new Float64Array(o);
46
45
  for (let s = 0; s < r; s++)
46
+ t[s] = e[s];
47
+ const n = new Array(o);
48
+ for (let s = 0; s < o; s++)
47
49
  n[s] = { re: t[s], im: 0 };
48
- q(n);
49
- for (let s = 2; s <= r; s *= 2) {
50
- const c = s / 2, a = -2 * Math.PI / s;
51
- for (let l = 0; l < r; l += s)
50
+ b(n);
51
+ for (let s = 2; s <= o; s *= 2) {
52
+ const c = s / 2, i = -2 * Math.PI / s;
53
+ for (let l = 0; l < o; l += s)
52
54
  for (let f = 0; f < c; f++) {
53
- const i = a * f, u = Math.cos(i), h = Math.sin(i), m = l + f, y = l + f + c, w = u * n[y].re - h * n[y].im, g = u * n[y].im + h * n[y].re;
54
- n[y].re = n[m].re - w, n[y].im = n[m].im - g, n[m].re = n[m].re + w, n[m].im = n[m].im + g;
55
+ const a = i * f, u = Math.cos(a), h = Math.sin(a), m = l + f, g = l + f + c, M = u * n[g].re - h * n[g].im, d = u * n[g].im + h * n[g].re;
56
+ n[g].re = n[m].re - M, n[g].im = n[m].im - d, n[m].re = n[m].re + M, n[m].im = n[m].im + d;
55
57
  }
56
58
  }
57
59
  return n;
58
60
  }
59
- function Q(e) {
60
- const o = e.length, r = e.map((s) => ({ re: s.re, im: -s.im })), t = J(r), n = new Float32Array(o);
61
- for (let s = 0; s < o; s++)
62
- n[s] = t[s].re / o;
61
+ function V(e) {
62
+ const r = e.length, o = e.map((s) => ({ re: s.re, im: -s.im })), t = tt(o), n = new Float32Array(r);
63
+ for (let s = 0; s < r; s++)
64
+ n[s] = t[s].re / r;
63
65
  return n;
64
66
  }
65
- function J(e) {
66
- const o = e.length, r = e.map((t) => ({ ...t }));
67
- q(r);
68
- for (let t = 2; t <= o; t *= 2) {
67
+ function tt(e) {
68
+ const r = e.length, o = e.map((t) => ({ ...t }));
69
+ b(o);
70
+ for (let t = 2; t <= r; t *= 2) {
69
71
  const n = t / 2, s = -2 * Math.PI / t;
70
- for (let c = 0; c < o; c += t)
71
- for (let a = 0; a < n; a++) {
72
- const l = s * a, f = Math.cos(l), i = Math.sin(l), u = c + a, h = c + a + n, m = f * r[h].re - i * r[h].im, y = f * r[h].im + i * r[h].re;
73
- r[h].re = r[u].re - m, r[h].im = r[u].im - y, r[u].re = r[u].re + m, r[u].im = r[u].im + y;
72
+ for (let c = 0; c < r; c += t)
73
+ for (let i = 0; i < n; i++) {
74
+ const l = s * i, f = Math.cos(l), a = Math.sin(l), u = c + i, h = c + i + n, m = f * o[h].re - a * o[h].im, g = f * o[h].im + a * o[h].re;
75
+ o[h].re = o[u].re - m, o[h].im = o[u].im - g, o[u].re = o[u].re + m, o[u].im = o[u].im + g;
74
76
  }
75
77
  }
76
- return r;
78
+ return o;
77
79
  }
78
- function q(e) {
79
- const o = e.length, r = Math.log2(o);
80
- for (let t = 0; t < o; t++) {
81
- const n = tt(t, r);
80
+ function b(e) {
81
+ const r = e.length, o = Math.log2(r);
82
+ for (let t = 0; t < r; t++) {
83
+ const n = nt(t, o);
82
84
  if (n > t) {
83
85
  const s = e[t];
84
86
  e[t] = e[n], e[n] = s;
85
87
  }
86
88
  }
87
89
  }
88
- function tt(e, o) {
89
- let r = 0;
90
- for (let t = 0; t < o; t++)
91
- r = r << 1 | e & 1, e >>= 1;
92
- return r;
93
- }
94
- function S(e) {
95
- let o = 1;
96
- for (; o < e; ) o *= 2;
90
+ function nt(e, r) {
91
+ let o = 0;
92
+ for (let t = 0; t < r; t++)
93
+ o = o << 1 | e & 1, e >>= 1;
97
94
  return o;
98
95
  }
99
- function C(e, o = 1) {
100
- const r = v(e), t = r.length, n = t / 2, s = new Float32Array(n), c = new Float32Array(n), a = new Float32Array(n), l = new Float32Array(t), f = new Float32Array(t);
101
- for (let i = 0; i < t; i++)
102
- l[i] = r[i].re, f[i] = r[i].im;
103
- for (let i = 0; i < n; i++)
104
- s[i] = i * o / t, c[i] = Math.sqrt(r[i].re * r[i].re + r[i].im * r[i].im) / t, a[i] = Math.atan2(r[i].im, r[i].re);
105
- for (let i = 1; i < n; i++)
106
- c[i] *= 2;
96
+ function C(e) {
97
+ let r = 1;
98
+ for (; r < e; ) r *= 2;
99
+ return r;
100
+ }
101
+ function j(e, r = 1) {
102
+ const o = x(e), t = o.length, n = t / 2, s = new Float32Array(n), c = new Float32Array(n), i = new Float32Array(n), l = new Float32Array(t), f = new Float32Array(t);
103
+ for (let a = 0; a < t; a++)
104
+ l[a] = o[a].re, f[a] = o[a].im;
105
+ for (let a = 0; a < n; a++)
106
+ s[a] = a * r / t, c[a] = Math.sqrt(o[a].re * o[a].re + o[a].im * o[a].im) / t, i[a] = Math.atan2(o[a].im, o[a].re);
107
+ for (let a = 1; a < n; a++)
108
+ c[a] *= 2;
107
109
  return {
108
110
  frequency: s,
109
111
  magnitude: c,
110
- phase: a,
111
- complex: r,
112
+ phase: i,
113
+ complex: o,
112
114
  real: l,
113
115
  imag: f
114
116
  };
115
117
  }
116
- function vt(e, o = 1) {
117
- const r = C(e, o), t = r.frequency.length, n = new Float32Array(t), s = new Float32Array(t);
118
+ function kt(e, r = 1) {
119
+ const o = j(e, r), t = o.frequency.length, n = new Float32Array(t), s = new Float32Array(t);
118
120
  for (let c = 0; c < t; c++)
119
- n[c] = r.magnitude[c] * r.magnitude[c], s[c] = 10 * Math.log10(Math.max(n[c], 1e-20));
121
+ n[c] = o.magnitude[c] * o.magnitude[c], s[c] = 10 * Math.log10(Math.max(n[c], 1e-20));
120
122
  return {
121
- frequency: r.frequency,
123
+ frequency: o.frequency,
122
124
  power: n,
123
125
  powerDb: s
124
126
  };
125
127
  }
126
- function $t(e, o = 1, r = 0) {
127
- const t = C(e, o);
128
+ function Rt(e, r = 1, o = 0) {
129
+ const t = j(e, r);
128
130
  let n = 0, s = 0;
129
131
  for (let c = 0; c < t.magnitude.length; c++)
130
- t.frequency[c] >= r && t.magnitude[c] > n && (n = t.magnitude[c], s = c);
132
+ t.frequency[c] >= o && t.magnitude[c] > n && (n = t.magnitude[c], s = c);
131
133
  return {
132
134
  frequency: t.frequency[s],
133
135
  magnitude: n
134
136
  };
135
137
  }
136
- function Rt(e) {
137
- const o = e.length, r = new Float32Array(o);
138
- for (let t = 0; t < o; t++) {
139
- const n = 0.5 * (1 - Math.cos(2 * Math.PI * t / (o - 1)));
140
- r[t] = e[t] * n;
138
+ function Ct(e) {
139
+ const r = e.length, o = new Float32Array(r);
140
+ for (let t = 0; t < r; t++) {
141
+ const n = 0.5 * (1 - Math.cos(2 * Math.PI * t / (r - 1)));
142
+ o[t] = e[t] * n;
141
143
  }
142
- return r;
144
+ return o;
143
145
  }
144
146
  function jt(e) {
145
- const o = e.length, r = new Float32Array(o);
146
- for (let t = 0; t < o; t++) {
147
- const n = 0.54 - 0.46 * Math.cos(2 * Math.PI * t / (o - 1));
148
- r[t] = e[t] * n;
147
+ const r = e.length, o = new Float32Array(r);
148
+ for (let t = 0; t < r; t++) {
149
+ const n = 0.54 - 0.46 * Math.cos(2 * Math.PI * t / (r - 1));
150
+ o[t] = e[t] * n;
149
151
  }
150
- return r;
152
+ return o;
151
153
  }
152
- function kt(e) {
153
- const o = e.length, r = new Float32Array(o), t = 0.42, n = 0.5, s = 0.08;
154
- for (let c = 0; c < o; c++) {
155
- const a = t - n * Math.cos(2 * Math.PI * c / (o - 1)) + s * Math.cos(4 * Math.PI * c / (o - 1));
156
- r[c] = e[c] * a;
154
+ function Lt(e) {
155
+ const r = e.length, o = new Float32Array(r), t = 0.42, n = 0.5, s = 0.08;
156
+ for (let c = 0; c < r; c++) {
157
+ const i = t - n * Math.cos(2 * Math.PI * c / (r - 1)) + s * Math.cos(4 * Math.PI * c / (r - 1));
158
+ o[c] = e[c] * i;
157
159
  }
158
- return r;
160
+ return o;
159
161
  }
160
- function St(e, o = 1) {
161
- const r = v(e), t = r.length, n = t / 2, s = new Float32Array(t), c = new Float32Array(t), a = new Float32Array(t), l = new Float32Array(t), f = new Float32Array(t);
162
- for (let i = 0; i < t; i++)
163
- s[i] = r[i].re, c[i] = r[i].im, a[i] = i * o / t, l[i] = Math.sqrt(r[i].re * r[i].re + r[i].im * r[i].im), f[i] = Math.atan2(r[i].im, r[i].re);
162
+ function St(e, r = 1) {
163
+ const o = x(e), t = o.length, n = t / 2, s = new Float32Array(t), c = new Float32Array(t), i = new Float32Array(t), l = new Float32Array(t), f = new Float32Array(t);
164
+ for (let a = 0; a < t; a++)
165
+ s[a] = o[a].re, c[a] = o[a].im, i[a] = a * r / t, l[a] = Math.sqrt(o[a].re * o[a].re + o[a].im * o[a].im), f[a] = Math.atan2(o[a].im, o[a].re);
164
166
  return {
165
167
  real: s,
166
168
  imag: c,
167
- frequency: a,
169
+ frequency: i,
168
170
  magnitude: l,
169
171
  phase: f,
170
172
  length: t,
171
173
  nyquist: n
172
174
  };
173
175
  }
174
- function Ct(e, o) {
175
- const r = e.length;
176
- if (o.length !== r)
176
+ function Bt(e, r) {
177
+ const o = e.length;
178
+ if (r.length !== o)
177
179
  throw new Error("Real and imaginary arrays must have the same length");
178
- const t = S(r), n = new Array(t);
179
- for (let i = 0; i < t; i++)
180
- n[i] = {
181
- re: i < r ? e[i] : 0,
182
- im: i < r ? o[i] : 0
180
+ const t = C(o), n = new Array(t);
181
+ for (let a = 0; a < t; a++)
182
+ n[a] = {
183
+ re: a < o ? e[a] : 0,
184
+ im: a < o ? r[a] : 0
183
185
  };
184
- q(n);
185
- for (let i = 2; i <= t; i *= 2) {
186
- const u = i / 2, h = -2 * Math.PI / i;
187
- for (let m = 0; m < t; m += i)
188
- for (let y = 0; y < u; y++) {
189
- const w = h * y, g = Math.cos(w), F = Math.sin(w), A = m + y, p = m + y + u, b = g * n[p].re - F * n[p].im, d = g * n[p].im + F * n[p].re;
190
- n[p].re = n[A].re - b, n[p].im = n[A].im - d, n[A].re = n[A].re + b, n[A].im = n[A].im + d;
186
+ b(n);
187
+ for (let a = 2; a <= t; a *= 2) {
188
+ const u = a / 2, h = -2 * Math.PI / a;
189
+ for (let m = 0; m < t; m += a)
190
+ for (let g = 0; g < u; g++) {
191
+ const M = h * g, d = Math.cos(M), w = Math.sin(M), p = m + g, y = m + g + u, F = d * n[y].re - w * n[y].im, P = d * n[y].im + w * n[y].re;
192
+ n[y].re = n[p].re - F, n[y].im = n[p].im - P, n[p].re = n[p].re + F, n[p].im = n[p].im + P;
191
193
  }
192
194
  }
193
- const s = new Float32Array(t), c = new Float32Array(t), a = new Float32Array(t), l = new Float32Array(t), f = new Float32Array(t);
194
- for (let i = 0; i < t; i++)
195
- s[i] = n[i].re, c[i] = n[i].im, a[i] = i / t, l[i] = Math.sqrt(n[i].re * n[i].re + n[i].im * n[i].im), f[i] = Math.atan2(n[i].im, n[i].re);
195
+ const s = new Float32Array(t), c = new Float32Array(t), i = new Float32Array(t), l = new Float32Array(t), f = new Float32Array(t);
196
+ for (let a = 0; a < t; a++)
197
+ s[a] = n[a].re, c[a] = n[a].im, i[a] = a / t, l[a] = Math.sqrt(n[a].re * n[a].re + n[a].im * n[a].im), f[a] = Math.atan2(n[a].im, n[a].re);
196
198
  return {
197
199
  real: s,
198
200
  imag: c,
199
- frequency: a,
201
+ frequency: i,
200
202
  magnitude: l,
201
203
  phase: f,
202
204
  length: t,
@@ -204,105 +206,105 @@ function Ct(e, o) {
204
206
  };
205
207
  }
206
208
  function Dt(e) {
207
- const o = e.length, r = new Float32Array(o), t = new Float32Array(o);
208
- for (let n = 0; n < o; n++)
209
- r[n] = e[n].re, t[n] = e[n].im;
210
- return { real: r, imag: t };
209
+ const r = e.length, o = new Float32Array(r), t = new Float32Array(r);
210
+ for (let n = 0; n < r; n++)
211
+ o[n] = e[n].re, t[n] = e[n].im;
212
+ return { real: o, imag: t };
211
213
  }
212
- function nt(e, o) {
213
- const r = e.length;
214
- if (o.length !== r)
214
+ function et(e, r) {
215
+ const o = e.length;
216
+ if (r.length !== o)
215
217
  throw new Error("Real and imaginary arrays must have the same length");
216
- const t = new Array(r);
217
- for (let n = 0; n < r; n++)
218
- t[n] = { re: e[n], im: o[n] };
218
+ const t = new Array(o);
219
+ for (let n = 0; n < o; n++)
220
+ t[n] = { re: e[n], im: r[n] };
219
221
  return t;
220
222
  }
221
- function Lt(e, o) {
222
- const r = nt(e, o);
223
- return Q(r);
224
- }
225
- function Bt(e) {
226
- const o = e.length, t = e.map((c) => ({ re: c.re, im: -c.im })).map((c) => ({ ...c }));
227
- q(t);
228
- for (let c = 2; c <= o; c *= 2) {
229
- const a = c / 2, l = -2 * Math.PI / c;
230
- for (let f = 0; f < o; f += c)
231
- for (let i = 0; i < a; i++) {
232
- const u = l * i, h = Math.cos(u), m = Math.sin(u), y = f + i, w = f + i + a, g = h * t[w].re - m * t[w].im, F = h * t[w].im + m * t[w].re;
233
- t[w].re = t[y].re - g, t[w].im = t[y].im - F, t[y].re = t[y].re + g, t[y].im = t[y].im + F;
223
+ function Wt(e, r) {
224
+ const o = et(e, r);
225
+ return V(o);
226
+ }
227
+ function _t(e) {
228
+ const r = e.length, t = e.map((c) => ({ re: c.re, im: -c.im })).map((c) => ({ ...c }));
229
+ b(t);
230
+ for (let c = 2; c <= r; c *= 2) {
231
+ const i = c / 2, l = -2 * Math.PI / c;
232
+ for (let f = 0; f < r; f += c)
233
+ for (let a = 0; a < i; a++) {
234
+ const u = l * a, h = Math.cos(u), m = Math.sin(u), g = f + a, M = f + a + i, d = h * t[M].re - m * t[M].im, w = h * t[M].im + m * t[M].re;
235
+ t[M].re = t[g].re - d, t[M].im = t[g].im - w, t[g].re = t[g].re + d, t[g].im = t[g].im + w;
234
236
  }
235
237
  }
236
- const n = new Float32Array(o), s = new Float32Array(o);
237
- for (let c = 0; c < o; c++)
238
- n[c] = t[c].re / o, s[c] = -t[c].im / o;
238
+ const n = new Float32Array(r), s = new Float32Array(r);
239
+ for (let c = 0; c < r; c++)
240
+ n[c] = t[c].re / r, s[c] = -t[c].im / r;
239
241
  return { real: n, imag: s };
240
242
  }
241
- function Wt(e) {
242
- const o = e.nyquist;
243
+ function zt(e) {
244
+ const r = e.nyquist;
243
245
  return {
244
- real: e.real.slice(0, o),
245
- imag: e.imag.slice(0, o),
246
- frequency: e.frequency.slice(0, o),
247
- magnitude: e.magnitude.slice(0, o),
248
- phase: e.phase.slice(0, o)
246
+ real: e.real.slice(0, r),
247
+ imag: e.imag.slice(0, r),
248
+ frequency: e.frequency.slice(0, r),
249
+ magnitude: e.magnitude.slice(0, r),
250
+ phase: e.phase.slice(0, r)
249
251
  };
250
252
  }
251
- function D(e, o, r, t = {}) {
253
+ function L(e, r, o, t = {}) {
252
254
  if (e.length < 2) throw new Error("At least 2 points are required for fitting");
253
- switch (r) {
255
+ switch (o) {
254
256
  case "linear":
255
- return x(e, o, t);
257
+ return I(e, r, t);
256
258
  case "polynomial":
257
- return et(e, o, t.degree ?? 2, t);
259
+ return ot(e, r, t.degree ?? 2, t);
258
260
  case "exponential":
259
- return ot(e, o, t);
261
+ return rt(e, r, t);
260
262
  case "logarithmic":
261
- return rt(e, o, t);
263
+ return st(e, r, t);
262
264
  case "power":
263
- return st(e, o, t);
265
+ return ct(e, r, t);
264
266
  default:
265
- throw new Error(`Unsupported fit type: ${r}`);
267
+ throw new Error(`Unsupported fit type: ${o}`);
266
268
  }
267
269
  }
268
- function x(e, o, r) {
270
+ function I(e, r, o) {
269
271
  const t = e.length;
270
- let n = 0, s = 0, c = 0, a = 0;
272
+ let n = 0, s = 0, c = 0, i = 0;
271
273
  for (let m = 0; m < t; m++)
272
- n += e[m], s += o[m], c += e[m] * o[m], a += e[m] * e[m];
273
- const l = (t * c - n * s) / (t * a - n * n), f = (s - l * n) / t, i = (m) => l * m + f, u = r.precision ?? 4, h = r.label || "y";
274
+ n += e[m], s += r[m], c += e[m] * r[m], i += e[m] * e[m];
275
+ const l = (t * c - n * s) / (t * i - n * n), f = (s - l * n) / t, a = (m) => l * m + f, u = o.precision ?? 4, h = o.label || "y";
274
276
  return {
275
277
  type: "linear",
276
278
  coefficients: [l, f],
277
279
  equation: `${h} = ${l.toFixed(u)}x ${f >= 0 ? "+" : "-"} ${Math.abs(f).toFixed(u)}`,
278
- rSquared: I(e, o, i),
279
- predict: i
280
+ rSquared: A(e, r, a),
281
+ predict: a
280
282
  };
281
283
  }
282
- function et(e, o, r, t) {
283
- const n = e.length, s = r + 1, c = Array.from({ length: s }, () => new Array(s).fill(0)), a = new Array(s).fill(0);
284
+ function ot(e, r, o, t) {
285
+ const n = e.length, s = o + 1, c = Array.from({ length: s }, () => new Array(s).fill(0)), i = new Array(s).fill(0);
284
286
  for (let m = 0; m < s; m++) {
285
- for (let w = 0; w < s; w++) {
286
- let g = 0;
287
- for (let F = 0; F < n; F++)
288
- g += Math.pow(e[F], m + w);
289
- c[m][w] = g;
287
+ for (let M = 0; M < s; M++) {
288
+ let d = 0;
289
+ for (let w = 0; w < n; w++)
290
+ d += Math.pow(e[w], m + M);
291
+ c[m][M] = d;
290
292
  }
291
- let y = 0;
292
- for (let w = 0; w < n; w++)
293
- y += o[w] * Math.pow(e[w], m);
294
- a[m] = y;
295
- }
296
- const l = _(c, a), f = (m) => {
297
- let y = 0;
298
- for (let w = 0; w < l.length; w++)
299
- y += l[w] * Math.pow(m, w);
300
- return y;
301
- }, i = t.precision ?? 4;
293
+ let g = 0;
294
+ for (let M = 0; M < n; M++)
295
+ g += r[M] * Math.pow(e[M], m);
296
+ i[m] = g;
297
+ }
298
+ const l = W(c, i), f = (m) => {
299
+ let g = 0;
300
+ for (let M = 0; M < l.length; M++)
301
+ g += l[M] * Math.pow(m, M);
302
+ return g;
303
+ }, a = t.precision ?? 4;
302
304
  let u = "y = ";
303
305
  for (let m = l.length - 1; m >= 0; m--) {
304
- const y = l[m];
305
- m < l.length - 1 ? u += y >= 0 ? " + " : " - " : y < 0 && (u += "-"), u += `${Math.abs(y).toFixed(i)}${m > 0 ? m > 1 ? `x^${m}` : "x" : ""}`;
306
+ const g = l[m];
307
+ m < l.length - 1 ? u += g >= 0 ? " + " : " - " : g < 0 && (u += "-"), u += `${Math.abs(g).toFixed(a)}${m > 0 ? m > 1 ? `x^${m}` : "x" : ""}`;
306
308
  }
307
309
  const h = t.label || "y";
308
310
  return {
@@ -310,763 +312,484 @@ function et(e, o, r, t) {
310
312
  coefficients: l,
311
313
  equation: `${h} = ${u.substring(4)}`,
312
314
  // replace "y = " with custom label
313
- rSquared: I(e, o, f),
315
+ rSquared: A(e, r, f),
314
316
  predict: f
315
317
  };
316
318
  }
317
- function ot(e, o, r) {
319
+ function rt(e, r, o) {
318
320
  const t = e.length, n = [], s = [];
319
321
  for (let h = 0; h < t; h++)
320
- o[h] > 0 && (n.push(e[h]), s.push(Math.log(o[h])));
321
- const c = x(n, s, r), a = c.coefficients[0], l = Math.exp(c.coefficients[1]), f = (h) => l * Math.exp(a * h), i = r.precision ?? 4, u = r.label || "y";
322
+ r[h] > 0 && (n.push(e[h]), s.push(Math.log(r[h])));
323
+ const c = I(n, s, o), i = c.coefficients[0], l = Math.exp(c.coefficients[1]), f = (h) => l * Math.exp(i * h), a = o.precision ?? 4, u = o.label || "y";
322
324
  return {
323
325
  type: "exponential",
324
- coefficients: [l, a],
325
- equation: `${u} = ${l.toFixed(i)} * e^(${a.toFixed(i)}x)`,
326
- rSquared: I(e, o, f),
326
+ coefficients: [l, i],
327
+ equation: `${u} = ${l.toFixed(a)} * e^(${i.toFixed(a)}x)`,
328
+ rSquared: A(e, r, f),
327
329
  predict: f
328
330
  };
329
331
  }
330
- function rt(e, o, r) {
332
+ function st(e, r, o) {
331
333
  const t = e.length, n = [], s = [];
332
334
  for (let h = 0; h < t; h++)
333
- e[h] > 0 && (n.push(Math.log(e[h])), s.push(o[h]));
334
- const c = x(n, s, r), a = c.coefficients[0], l = c.coefficients[1], f = (h) => l + a * Math.log(h), i = r.precision ?? 4, u = r.label || "y";
335
+ e[h] > 0 && (n.push(Math.log(e[h])), s.push(r[h]));
336
+ const c = I(n, s, o), i = c.coefficients[0], l = c.coefficients[1], f = (h) => l + i * Math.log(h), a = o.precision ?? 4, u = o.label || "y";
335
337
  return {
336
338
  type: "logarithmic",
337
- coefficients: [l, a],
338
- equation: `${u} = ${l.toFixed(i)} ${a >= 0 ? "+" : "-"} ${Math.abs(a).toFixed(i)} * ln(x)`,
339
- rSquared: I(e, o, f),
339
+ coefficients: [l, i],
340
+ equation: `${u} = ${l.toFixed(a)} ${i >= 0 ? "+" : "-"} ${Math.abs(i).toFixed(a)} * ln(x)`,
341
+ rSquared: A(e, r, f),
340
342
  predict: f
341
343
  };
342
344
  }
343
- function st(e, o, r) {
345
+ function ct(e, r, o) {
344
346
  const t = e.length, n = [], s = [];
345
347
  for (let h = 0; h < t; h++)
346
- e[h] > 0 && o[h] > 0 && (n.push(Math.log(e[h])), s.push(Math.log(o[h])));
347
- const c = x(n, s, r), a = c.coefficients[0], l = Math.exp(c.coefficients[1]), f = (h) => l * Math.pow(h, a), i = r.precision ?? 4, u = r.label || "y";
348
+ e[h] > 0 && r[h] > 0 && (n.push(Math.log(e[h])), s.push(Math.log(r[h])));
349
+ const c = I(n, s, o), i = c.coefficients[0], l = Math.exp(c.coefficients[1]), f = (h) => l * Math.pow(h, i), a = o.precision ?? 4, u = o.label || "y";
348
350
  return {
349
351
  type: "power",
350
- coefficients: [l, a],
351
- equation: `${u} = ${l.toFixed(i)} * x^(${a.toFixed(i)})`,
352
- rSquared: I(e, o, f),
352
+ coefficients: [l, i],
353
+ equation: `${u} = ${l.toFixed(a)} * x^(${i.toFixed(a)})`,
354
+ rSquared: A(e, r, f),
353
355
  predict: f
354
356
  };
355
357
  }
356
- function N(e, o) {
357
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = new Float32Array(r.length);
358
- if (o < 1 || o > r.length)
359
- return t.fill(NaN), t;
360
- for (let s = 0; s < o - 1; s++)
361
- t[s] = NaN;
362
- let n = 0;
363
- for (let s = 0; s < o; s++)
364
- n += r[s];
365
- t[o - 1] = n / o;
366
- for (let s = o; s < r.length; s++)
367
- n = n - r[s - o] + r[s], t[s] = n / o;
368
- return t;
369
- }
370
- function M(e, o) {
371
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = new Float32Array(r.length);
372
- if (o < 1 || o > r.length)
373
- return t.fill(NaN), t;
374
- const n = 2 / (o + 1);
375
- for (let c = 0; c < o - 1; c++)
376
- t[c] = NaN;
377
- let s = 0;
378
- for (let c = 0; c < o; c++)
379
- s += r[c];
380
- t[o - 1] = s / o;
381
- for (let c = o; c < r.length; c++)
382
- t[c] = (r[c] - t[c - 1]) * n + t[c - 1];
383
- return t;
384
- }
385
- function _t(e, o) {
386
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = new Float32Array(r.length);
387
- if (o < 1 || o > r.length)
388
- return t.fill(NaN), t;
389
- const n = o * (o + 1) / 2;
390
- for (let s = 0; s < o - 1; s++)
391
- t[s] = NaN;
392
- for (let s = o - 1; s < r.length; s++) {
393
- let c = 0;
394
- for (let a = 0; a < o; a++)
395
- c += r[s - o + 1 + a] * (a + 1);
396
- t[s] = c / n;
397
- }
398
- return t;
399
- }
400
- function zt(e, o) {
401
- const r = M(e, o), t = M(r, o), n = new Float32Array(e.length);
402
- for (let s = 0; s < e.length; s++)
403
- n[s] = 2 * r[s] - t[s];
404
- return n;
405
- }
406
- function Et(e, o) {
407
- const r = M(e, o), t = M(r, o), n = M(t, o), s = new Float32Array(e.length);
408
- for (let c = 0; c < e.length; c++)
409
- s[c] = 3 * r[c] - 3 * t[c] + n[c];
410
- return s;
411
- }
412
- function ct(e, o = 14) {
413
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = new Float32Array(r.length);
414
- if (o < 1 || r.length < o + 1)
415
- return t.fill(NaN), t;
416
- for (let c = 0; c < o; c++)
417
- t[c] = NaN;
418
- let n = 0, s = 0;
419
- for (let c = 1; c <= o; c++) {
420
- const a = r[c] - r[c - 1];
421
- a > 0 ? n += a : s += Math.abs(a);
422
- }
423
- if (n /= o, s /= o, s === 0)
424
- t[o] = 100;
425
- else {
426
- const c = n / s;
427
- t[o] = 100 - 100 / (1 + c);
428
- }
429
- for (let c = o + 1; c < r.length; c++) {
430
- const a = r[c] - r[c - 1];
431
- let l = 0, f = 0;
432
- if (a > 0 ? l = a : f = Math.abs(a), n = (n * (o - 1) + l) / o, s = (s * (o - 1) + f) / o, s === 0)
433
- t[c] = 100;
434
- else {
435
- const i = n / s;
436
- t[c] = 100 - 100 / (1 + i);
437
- }
438
- }
439
- return t;
440
- }
441
- function Tt(e, o = 12, r = 26, t = 9) {
442
- const n = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), s = M(n, o), c = M(n, r), a = new Float32Array(n.length);
443
- for (let i = 0; i < n.length; i++)
444
- a[i] = s[i] - c[i];
445
- const l = M(a, t), f = new Float32Array(n.length);
446
- for (let i = 0; i < n.length; i++)
447
- f[i] = a[i] - l[i];
448
- return {
449
- values: a,
450
- signal: l,
451
- histogram: f
452
- };
358
+ function Et(e, r, o, t = 5) {
359
+ const n = r / (o / 2), s = S(Math.min(n, 0.99), t);
360
+ return q(e, s);
453
361
  }
454
- function Vt(e, o = 14, r = 3) {
455
- const { high: t, low: n, close: s } = e, c = s.length, a = new Float32Array(c);
456
- for (let f = 0; f < c; f++) {
457
- if (f < o - 1) {
458
- a[f] = NaN;
459
- continue;
460
- }
461
- let i = -1 / 0, u = 1 / 0;
462
- for (let m = f - o + 1; m <= f; m++)
463
- t[m] > i && (i = t[m]), n[m] < u && (u = n[m]);
464
- const h = i - u;
465
- h === 0 ? a[f] = 50 : a[f] = (s[f] - u) / h * 100;
466
- }
467
- const l = N(a, r);
468
- return {
469
- values: a,
470
- // %K
471
- signal: l
472
- // %D
473
- };
362
+ function Tt(e, r, o, t = 5) {
363
+ const n = r / (o / 2), s = it(Math.min(n, 0.99), t);
364
+ return q(e, s);
474
365
  }
475
- function Ht(e, o = 10) {
476
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = new Float32Array(r.length);
477
- for (let n = 0; n < o; n++)
478
- t[n] = NaN;
479
- for (let n = o; n < r.length; n++) {
480
- const s = r[n - o];
481
- s === 0 ? t[n] = NaN : t[n] = (r[n] - s) / s * 100;
482
- }
483
- return t;
484
- }
485
- function Xt(e, o = 10) {
486
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = new Float32Array(r.length);
487
- for (let n = 0; n < o; n++)
488
- t[n] = NaN;
489
- for (let n = o; n < r.length; n++)
490
- t[n] = r[n] - r[n - o];
491
- return t;
492
- }
493
- function Yt(e, o = 20, r = 2) {
494
- const t = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), n = N(t, o), s = new Float32Array(t.length), c = new Float32Array(t.length);
495
- for (let a = 0; a < t.length; a++) {
496
- if (a < o - 1) {
497
- s[a] = NaN, c[a] = NaN;
498
- continue;
499
- }
500
- let l = 0;
501
- for (let i = a - o + 1; i <= a; i++) {
502
- const u = t[i] - n[a];
503
- l += u * u;
504
- }
505
- const f = Math.sqrt(l / o);
506
- s[a] = n[a] + r * f, c[a] = n[a] - r * f;
507
- }
508
- return {
509
- values: n,
510
- upper: s,
511
- lower: c
512
- };
513
- }
514
- function Gt(e, o = 14) {
515
- const { high: r, low: t, close: n } = e, s = n.length, c = new Float32Array(s);
516
- c[0] = r[0] - t[0];
517
- for (let a = 1; a < s; a++) {
518
- const l = r[a] - t[a], f = Math.abs(r[a] - n[a - 1]), i = Math.abs(t[a] - n[a - 1]);
519
- c[a] = Math.max(l, f, i);
520
- }
521
- return M(c, o);
522
- }
523
- function Ot(e, o = 20) {
524
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = new Float32Array(r.length), n = N(r, o);
525
- for (let s = 0; s < r.length; s++) {
526
- if (s < o - 1) {
527
- t[s] = NaN;
528
- continue;
529
- }
530
- let c = 0;
531
- for (let a = s - o + 1; a <= s; a++) {
532
- const l = r[a] - n[s];
533
- c += l * l;
534
- }
535
- t[s] = Math.sqrt(c / o);
536
- }
537
- return t;
538
- }
539
- function Zt(e) {
540
- const { high: o, low: r, close: t, volume: n } = e;
541
- if (!n)
542
- throw new Error("VWAP requires volume data");
543
- const s = t.length, c = new Float32Array(s);
544
- let a = 0, l = 0;
545
- for (let f = 0; f < s; f++) {
546
- const i = (o[f] + r[f] + t[f]) / 3;
547
- a += i * n[f], l += n[f], l === 0 ? c[f] = i : c[f] = a / l;
548
- }
549
- return c;
550
- }
551
- function Ut(e, o) {
552
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = o instanceof Float32Array || o instanceof Float64Array ? o : Float32Array.from(o), n = new Float32Array(r.length);
553
- n[0] = t[0];
554
- for (let s = 1; s < r.length; s++)
555
- r[s] > r[s - 1] ? n[s] = n[s - 1] + t[s] : r[s] < r[s - 1] ? n[s] = n[s - 1] - t[s] : n[s] = n[s - 1];
556
- return n;
557
- }
558
- function Kt(e, o = 14) {
559
- const { high: r, low: t, close: n } = e, s = n.length, c = new Float32Array(s), a = new Float32Array(s), l = new Float32Array(s);
560
- l[0] = r[0] - t[0], c[0] = 0, a[0] = 0;
561
- for (let g = 1; g < s; g++) {
562
- const F = r[g] - r[g - 1], A = t[g - 1] - t[g];
563
- c[g] = F > A && F > 0 ? F : 0, a[g] = A > F && A > 0 ? A : 0;
564
- const p = r[g] - t[g], b = Math.abs(r[g] - n[g - 1]), d = Math.abs(t[g] - n[g - 1]);
565
- l[g] = Math.max(p, b, d);
566
- }
567
- const f = M(l, o), i = M(c, o), u = M(a, o), h = new Float32Array(s), m = new Float32Array(s), y = new Float32Array(s);
568
- for (let g = 0; g < s; g++)
569
- if (f[g] === 0 || isNaN(f[g]))
570
- h[g] = NaN, m[g] = NaN, y[g] = NaN;
571
- else {
572
- h[g] = i[g] / f[g] * 100, m[g] = u[g] / f[g] * 100;
573
- const F = h[g] + m[g];
574
- y[g] = F === 0 ? 0 : Math.abs(h[g] - m[g]) / F * 100;
575
- }
576
- return {
577
- values: M(y, o),
578
- upper: h,
579
- // +DI
580
- lower: m
581
- // -DI
582
- };
583
- }
584
- function Qt(e, o = 25) {
585
- const { high: r, low: t } = e, n = r.length, s = new Float32Array(n), c = new Float32Array(n);
586
- for (let l = 0; l < n; l++) {
587
- if (l < o) {
588
- s[l] = NaN, c[l] = NaN;
589
- continue;
590
- }
591
- let f = l, i = l, u = -1 / 0, h = 1 / 0;
592
- for (let m = l - o; m <= l; m++)
593
- r[m] > u && (u = r[m], f = m), t[m] < h && (h = t[m], i = m);
594
- s[l] = (o - (l - f)) / o * 100, c[l] = (o - (l - i)) / o * 100;
595
- }
596
- const a = new Float32Array(n);
597
- for (let l = 0; l < n; l++)
598
- a[l] = s[l] - c[l];
599
- return {
600
- values: a,
601
- upper: s,
602
- lower: c
603
- };
604
- }
605
- function Jt(e, o = 1) {
606
- const r = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), t = new Float32Array(r.length);
607
- for (let n = 0; n < o; n++)
608
- t[n] = NaN;
609
- for (let n = o; n < r.length; n++) {
610
- const s = r[n - o];
611
- s === 0 ? t[n] = NaN : t[n] = (r[n] - s) / s * 100;
612
- }
613
- return t;
614
- }
615
- function tn(e) {
616
- const o = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), r = new Float32Array(o.length);
617
- r[0] = o[0];
618
- for (let t = 1; t < o.length; t++)
619
- r[t] = r[t - 1] + o[t];
620
- return r;
621
- }
622
- function nn(e) {
623
- const o = e instanceof Float32Array || e instanceof Float64Array ? e : Float32Array.from(e), r = new Float32Array(o.length);
624
- let t = 1 / 0, n = -1 / 0;
625
- for (let c = 0; c < o.length; c++)
626
- isNaN(o[c]) || (o[c] < t && (t = o[c]), o[c] > n && (n = o[c]));
627
- const s = n - t;
628
- if (s === 0)
629
- r.fill(50);
630
- else
631
- for (let c = 0; c < o.length; c++)
632
- r[c] = (o[c] - t) / s * 100;
633
- return r;
634
- }
635
- function en(e, o, r, t = 5) {
636
- const n = o / (r / 2), s = L(Math.min(n, 0.99), t);
637
- return P(e, s);
638
- }
639
- function on(e, o, r, t = 5) {
640
- const n = o / (r / 2), s = at(Math.min(n, 0.99), t);
641
- return P(e, s);
642
- }
643
- function rn(e, o, r, t, n = 5) {
644
- const s = o / (t / 2), c = r / (t / 2), a = B(
366
+ function Ht(e, r, o, t, n = 5) {
367
+ const s = r / (t / 2), c = o / (t / 2), i = B(
645
368
  Math.max(s, 0.01),
646
369
  Math.min(c, 0.99),
647
370
  n
648
371
  );
649
- return P(e, a);
372
+ return q(e, i);
650
373
  }
651
- function sn(e, o, r, t, n = 5) {
652
- const s = o / (t / 2), c = r / (t / 2), a = lt(
374
+ function Xt(e, r, o, t, n = 5) {
375
+ const s = r / (t / 2), c = o / (t / 2), i = at(
653
376
  Math.max(s, 0.01),
654
377
  Math.min(c, 0.99),
655
378
  n
656
379
  );
657
- return P(e, a);
380
+ return q(e, i);
658
381
  }
659
- function L(e, o) {
660
- const r = 2 * o + 1, t = new Float32Array(r), n = e;
661
- for (let c = 0; c < r; c++) {
662
- const a = c - o;
663
- a === 0 ? t[c] = 2 * n : t[c] = Math.sin(2 * Math.PI * n * a) / (Math.PI * a), t[c] *= 0.54 - 0.46 * Math.cos(2 * Math.PI * c / (r - 1));
382
+ function S(e, r) {
383
+ const o = 2 * r + 1, t = new Float32Array(o), n = e;
384
+ for (let c = 0; c < o; c++) {
385
+ const i = c - r;
386
+ i === 0 ? t[c] = 2 * n : t[c] = Math.sin(2 * Math.PI * n * i) / (Math.PI * i), t[c] *= 0.54 - 0.46 * Math.cos(2 * Math.PI * c / (o - 1));
664
387
  }
665
388
  let s = 0;
666
- for (let c = 0; c < r; c++) s += t[c];
667
- for (let c = 0; c < r; c++) t[c] /= s;
389
+ for (let c = 0; c < o; c++) s += t[c];
390
+ for (let c = 0; c < o; c++) t[c] /= s;
668
391
  return t;
669
392
  }
670
- function at(e, o) {
671
- const r = L(e, o), t = r.length, n = new Float32Array(t);
393
+ function it(e, r) {
394
+ const o = S(e, r), t = o.length, n = new Float32Array(t);
672
395
  for (let s = 0; s < t; s++)
673
- n[s] = -r[s];
674
- return n[o] += 1, n;
675
- }
676
- function B(e, o, r) {
677
- const t = 2 * r + 1, n = new Float32Array(t), s = e, c = o;
678
- for (let a = 0; a < t; a++) {
679
- const l = a - r;
680
- l === 0 ? n[a] = 2 * (c - s) : n[a] = (Math.sin(2 * Math.PI * c * l) - Math.sin(2 * Math.PI * s * l)) / (Math.PI * l), n[a] *= 0.54 - 0.46 * Math.cos(2 * Math.PI * a / (t - 1));
396
+ n[s] = -o[s];
397
+ return n[r] += 1, n;
398
+ }
399
+ function B(e, r, o) {
400
+ const t = 2 * o + 1, n = new Float32Array(t), s = e, c = r;
401
+ for (let i = 0; i < t; i++) {
402
+ const l = i - o;
403
+ l === 0 ? n[i] = 2 * (c - s) : n[i] = (Math.sin(2 * Math.PI * c * l) - Math.sin(2 * Math.PI * s * l)) / (Math.PI * l), n[i] *= 0.54 - 0.46 * Math.cos(2 * Math.PI * i / (t - 1));
681
404
  }
682
405
  return n;
683
406
  }
684
- function lt(e, o, r) {
685
- const t = B(e, o, r), n = t.length, s = new Float32Array(n);
407
+ function at(e, r, o) {
408
+ const t = B(e, r, o), n = t.length, s = new Float32Array(n);
686
409
  for (let c = 0; c < n; c++)
687
410
  s[c] = -t[c];
688
- return s[r] += 1, s;
411
+ return s[o] += 1, s;
689
412
  }
690
- function P(e, o) {
691
- const r = e.length, t = o.length, n = Math.floor(t / 2), s = new Float32Array(r);
692
- for (let c = 0; c < r; c++) {
693
- let a = 0;
413
+ function q(e, r) {
414
+ const o = e.length, t = r.length, n = Math.floor(t / 2), s = new Float32Array(o);
415
+ for (let c = 0; c < o; c++) {
416
+ let i = 0;
694
417
  for (let l = 0; l < t; l++) {
695
418
  const f = c - n + l;
696
- f >= 0 && f < r && (a += e[f] * o[l]);
419
+ f >= 0 && f < o && (i += e[f] * r[l]);
697
420
  }
698
- s[c] = a;
421
+ s[c] = i;
699
422
  }
700
423
  return s;
701
424
  }
702
- function cn(e, o) {
703
- const { type: r, cutoff: t, cutoffHigh: n, sampleRate: s = 1, order: c = 2 } = o, a = 2 * t / s, l = n ? 2 * n / s : void 0, { b: f, a: i } = ut(r, a, l);
704
- return W(e, f, i);
425
+ function Yt(e, r) {
426
+ const { type: o, cutoff: t, cutoffHigh: n, sampleRate: s = 1, order: c = 2 } = r, i = 2 * t / s, l = n ? 2 * n / s : void 0, { b: f, a } = ut(o, i, l);
427
+ return D(e, f, a);
705
428
  }
706
- function it(e, o) {
707
- const { frequency: r, sampleRate: t, bandwidth: n = 1 } = o, { b: s, a: c } = ft(r, t, n);
708
- return W(e, s, c);
429
+ function lt(e, r) {
430
+ const { frequency: o, sampleRate: t, bandwidth: n = 1 } = r, { b: s, a: c } = ft(o, t, n);
431
+ return D(e, s, c);
709
432
  }
710
- function ft(e, o, r) {
711
- const t = 2 * Math.PI * e / o, s = 1 - 2 * Math.PI * r / o / 2, c = Math.cos(t), a = [1, -2 * c, 1], l = [1, -2 * s * c, s * s];
712
- return { b: a, a: l };
433
+ function ft(e, r, o) {
434
+ const t = 2 * Math.PI * e / r, s = 1 - 2 * Math.PI * o / r / 2, c = Math.cos(t), i = [1, -2 * c, 1], l = [1, -2 * s * c, s * s];
435
+ return { b: i, a: l };
713
436
  }
714
- function ut(e, o, r, t) {
715
- const n = Math.tan(Math.PI * o / 2);
437
+ function ut(e, r, o, t) {
438
+ const n = Math.tan(Math.PI * r / 2);
716
439
  if (e === "lowpass")
717
- return $(n);
440
+ return v(n);
718
441
  if (e === "highpass")
719
442
  return ht(n);
720
- if (e === "bandpass" && r) {
721
- const s = Math.tan(Math.PI * r / 2);
443
+ if (e === "bandpass" && o) {
444
+ const s = Math.tan(Math.PI * o / 2);
722
445
  return mt(n, s);
723
- } else if (e === "bandstop" && r) {
724
- const s = Math.tan(Math.PI * r / 2);
446
+ } else if (e === "bandstop" && o) {
447
+ const s = Math.tan(Math.PI * o / 2);
725
448
  return gt(n, s);
726
449
  }
727
- return $(n);
450
+ return v(n);
728
451
  }
729
- function $(e, o) {
730
- const r = e, t = r * r, n = Math.sqrt(2), s = 1 / (1 + n * r + t);
452
+ function v(e, r) {
453
+ const o = e, t = o * o, n = Math.sqrt(2), s = 1 / (1 + n * o + t);
731
454
  return {
732
455
  b: [t * s, 2 * t * s, t * s],
733
- a: [1, 2 * (t - 1) * s, (1 - n * r + t) * s]
456
+ a: [1, 2 * (t - 1) * s, (1 - n * o + t) * s]
734
457
  };
735
458
  }
736
- function ht(e, o) {
737
- const r = e, t = r * r, n = Math.sqrt(2), s = 1 / (1 + n * r + t);
459
+ function ht(e, r) {
460
+ const o = e, t = o * o, n = Math.sqrt(2), s = 1 / (1 + n * o + t);
738
461
  return {
739
462
  b: [s, -2 * s, s],
740
- a: [1, 2 * (t - 1) * s, (1 - n * r + t) * s]
463
+ a: [1, 2 * (t - 1) * s, (1 - n * o + t) * s]
741
464
  };
742
465
  }
743
- function mt(e, o, r) {
744
- const t = Math.sqrt(e * o), n = o - e, s = t / n, c = 1 / (1 + t / s + t * t);
466
+ function mt(e, r, o) {
467
+ const t = Math.sqrt(e * r), n = r - e, s = t / n, c = 1 / (1 + t / s + t * t);
745
468
  return {
746
469
  b: [t / s * c, 0, -t / s * c],
747
470
  a: [1, 2 * (t * t - 1) * c, (1 - t / s + t * t) * c]
748
471
  };
749
472
  }
750
- function gt(e, o, r) {
751
- const t = Math.sqrt(e * o), n = o - e, s = t / n, c = 1 / (1 + t / s + t * t);
473
+ function gt(e, r, o) {
474
+ const t = Math.sqrt(e * r), n = r - e, s = t / n, c = 1 / (1 + t / s + t * t);
752
475
  return {
753
476
  b: [(1 + t * t) * c, 2 * (t * t - 1) * c, (1 + t * t) * c],
754
477
  a: [1, 2 * (t * t - 1) * c, (1 - t / s + t * t) * c]
755
478
  };
756
479
  }
757
- function R(e, o, r) {
480
+ function $(e, r, o) {
758
481
  const t = e.length, n = new Float32Array(t);
759
482
  for (let s = 0; s < t; s++) {
760
- n[s] = o[0] * e[s];
761
- for (let c = 1; c < o.length; c++)
762
- s - c >= 0 && (n[s] += o[c] * e[s - c], n[s] -= r[c] * n[s - c]);
483
+ n[s] = r[0] * e[s];
484
+ for (let c = 1; c < r.length; c++)
485
+ s - c >= 0 && (n[s] += r[c] * e[s - c], n[s] -= o[c] * n[s - c]);
763
486
  }
764
487
  return n;
765
488
  }
766
- function W(e, o, r) {
767
- const t = R(e, o, r), n = new Float32Array(t.length);
768
- for (let a = 0; a < t.length; a++)
769
- n[a] = t[t.length - 1 - a];
770
- const s = R(n, o, r), c = new Float32Array(s.length);
771
- for (let a = 0; a < s.length; a++)
772
- c[a] = s[s.length - 1 - a];
489
+ function D(e, r, o) {
490
+ const t = $(e, r, o), n = new Float32Array(t.length);
491
+ for (let i = 0; i < t.length; i++)
492
+ n[i] = t[t.length - 1 - i];
493
+ const s = $(n, r, o), c = new Float32Array(s.length);
494
+ for (let i = 0; i < s.length; i++)
495
+ c[i] = s[s.length - 1 - i];
773
496
  return c;
774
497
  }
775
- function an(e, o = 0.3) {
776
- const r = e.length, t = new Float32Array(r);
498
+ function Nt(e, r = 0.3) {
499
+ const o = e.length, t = new Float32Array(o);
777
500
  t[0] = e[0];
778
- for (let n = 1; n < r; n++)
779
- t[n] = o * e[n] + (1 - o) * t[n - 1];
501
+ for (let n = 1; n < o; n++)
502
+ t[n] = r * e[n] + (1 - r) * t[n - 1];
780
503
  return t;
781
504
  }
782
- function ln(e, o = 2) {
783
- const r = e.length, t = new Float32Array(r), n = Math.ceil(o * 3) * 2 + 1, s = Math.floor(n / 2), c = new Float32Array(n);
784
- let a = 0;
505
+ function Ot(e, r = 2) {
506
+ const o = e.length, t = new Float32Array(o), n = Math.ceil(r * 3) * 2 + 1, s = Math.floor(n / 2), c = new Float32Array(n);
507
+ let i = 0;
785
508
  for (let l = 0; l < n; l++) {
786
509
  const f = l - s;
787
- c[l] = Math.exp(-(f * f) / (2 * o * o)), a += c[l];
510
+ c[l] = Math.exp(-(f * f) / (2 * r * r)), i += c[l];
788
511
  }
789
512
  for (let l = 0; l < n; l++)
790
- c[l] /= a;
791
- for (let l = 0; l < r; l++) {
513
+ c[l] /= i;
514
+ for (let l = 0; l < o; l++) {
792
515
  let f = 0;
793
- for (let i = 0; i < n; i++) {
794
- const u = l - s + i;
795
- u >= 0 && u < r && (f += e[u] * c[i]);
516
+ for (let a = 0; a < n; a++) {
517
+ const u = l - s + a;
518
+ u >= 0 && u < o && (f += e[u] * c[a]);
796
519
  }
797
520
  t[l] = f;
798
521
  }
799
522
  return t;
800
523
  }
801
- function fn(e, o = 5, r = 2) {
802
- const t = e.length, n = new Float32Array(t), s = Math.floor(o / 2), c = yt(o);
803
- for (let a = 0; a < t; a++) {
524
+ function Zt(e, r = 5, o = 2) {
525
+ const t = e.length, n = new Float32Array(t), s = Math.floor(r / 2), c = dt(r);
526
+ for (let i = 0; i < t; i++) {
804
527
  let l = 0;
805
528
  for (let f = -s; f <= s; f++) {
806
- const i = a + f;
807
- i >= 0 && i < t ? l += e[i] * c[f + s] : i < 0 ? l += e[0] * c[f + s] : l += e[t - 1] * c[f + s];
529
+ const a = i + f;
530
+ a >= 0 && a < t ? l += e[a] * c[f + s] : a < 0 ? l += e[0] * c[f + s] : l += e[t - 1] * c[f + s];
808
531
  }
809
- n[a] = l;
532
+ n[i] = l;
810
533
  }
811
534
  return n;
812
535
  }
813
- function yt(e, o) {
814
- const r = Math.floor(e / 2), t = new Float32Array(e), n = 1 / e;
536
+ function dt(e, r) {
537
+ const o = Math.floor(e / 2), t = new Float32Array(e), n = 1 / e;
815
538
  for (let c = 0; c < e; c++) {
816
- const a = c - r;
817
- t[c] = n * (1 - a * a / ((r + 1) * (r + 1)));
539
+ const i = c - o;
540
+ t[c] = n * (1 - i * i / ((o + 1) * (o + 1)));
818
541
  }
819
542
  let s = 0;
820
543
  for (let c = 0; c < e; c++) s += t[c];
821
544
  for (let c = 0; c < e; c++) t[c] /= s;
822
545
  return t;
823
546
  }
824
- function un(e, o = 5) {
825
- const r = e.length, t = new Float32Array(r), n = Math.floor(o / 2);
826
- for (let s = 0; s < r; s++) {
547
+ function Gt(e, r = 5) {
548
+ const o = e.length, t = new Float32Array(o), n = Math.floor(r / 2);
549
+ for (let s = 0; s < o; s++) {
827
550
  const c = [];
828
- for (let a = -n; a <= n; a++) {
829
- const l = s + a;
830
- l >= 0 && l < r && c.push(e[l]);
551
+ for (let i = -n; i <= n; i++) {
552
+ const l = s + i;
553
+ l >= 0 && l < o && c.push(e[l]);
831
554
  }
832
- c.sort((a, l) => a - l), t[s] = c[Math.floor(c.length / 2)];
555
+ c.sort((i, l) => i - l), t[s] = c[Math.floor(c.length / 2)];
833
556
  }
834
557
  return t;
835
558
  }
836
- function hn(e, o, r, t = {}) {
837
- const n = o.length, s = r.length, c = Math.min(...e), a = Math.max(...e), l = t.levels || wt(c, a, t.numLevels || 10), f = [];
838
- for (const i of l) {
559
+ function Kt(e, r, o, t = {}) {
560
+ const n = r.length, s = o.length, c = Math.min(...e), i = Math.max(...e), l = t.levels || Mt(c, i, t.numLevels || 10), f = [];
561
+ for (const a of l) {
839
562
  const u = [];
840
563
  for (let h = 0; h < s - 1; h++)
841
564
  for (let m = 0; m < n - 1; m++) {
842
- const y = e[h * n + m], w = e[h * n + (m + 1)], g = e[(h + 1) * n + (m + 1)], F = e[(h + 1) * n + m];
843
- Ft(m, h, y, w, g, F, i, o, r, u);
565
+ const g = e[h * n + m], M = e[h * n + (m + 1)], d = e[(h + 1) * n + (m + 1)], w = e[(h + 1) * n + m];
566
+ wt(m, h, g, M, d, w, a, r, o, u);
844
567
  }
845
568
  if (u.length > 0) {
846
569
  const h = [];
847
570
  for (const m of u)
848
571
  h.push({ x: m[0], y: m[1] }), h.push({ x: m[2], y: m[3] });
849
- f.push({ level: i, points: h });
572
+ f.push({ level: a, points: h });
850
573
  }
851
574
  }
852
575
  return f;
853
576
  }
854
- function wt(e, o, r) {
855
- const t = [], n = (o - e) / (r + 1);
856
- for (let s = 1; s <= r; s++)
577
+ function Mt(e, r, o) {
578
+ const t = [], n = (r - e) / (o + 1);
579
+ for (let s = 1; s <= o; s++)
857
580
  t.push(e + s * n);
858
581
  return t;
859
582
  }
860
- function Ft(e, o, r, t, n, s, c, a, l, f) {
861
- let i = 0;
862
- if (r >= c && (i |= 1), t >= c && (i |= 2), n >= c && (i |= 4), s >= c && (i |= 8), i === 0 || i === 15) return;
863
- const u = (w, g, F) => w + (g - w) * F, h = (w, g) => (c - w) / (g - w), m = (w) => {
864
- switch (w) {
583
+ function wt(e, r, o, t, n, s, c, i, l, f) {
584
+ let a = 0;
585
+ if (o >= c && (a |= 1), t >= c && (a |= 2), n >= c && (a |= 4), s >= c && (a |= 8), a === 0 || a === 15) return;
586
+ const u = (M, d, w) => M + (d - M) * w, h = (M, d) => (c - M) / (d - M), m = (M) => {
587
+ switch (M) {
865
588
  case 0:
866
- return [u(a[e], a[e + 1], h(r, t)), l[o]];
589
+ return [u(i[e], i[e + 1], h(o, t)), l[r]];
867
590
  case 1:
868
- return [a[e + 1], u(l[o], l[o + 1], h(t, n))];
591
+ return [i[e + 1], u(l[r], l[r + 1], h(t, n))];
869
592
  case 2:
870
- return [u(a[e], a[e + 1], h(s, n)), l[o + 1]];
593
+ return [u(i[e], i[e + 1], h(s, n)), l[r + 1]];
871
594
  case 3:
872
- return [a[e], u(l[o], l[o + 1], h(r, s))];
595
+ return [i[e], u(l[r], l[r + 1], h(o, s))];
873
596
  default:
874
597
  return [0, 0];
875
598
  }
876
- }, y = (w, g) => {
877
- const F = m(w), A = m(g);
878
- f.push([F[0], F[1], A[0], A[1]]);
599
+ }, g = (M, d) => {
600
+ const w = m(M), p = m(d);
601
+ f.push([w[0], w[1], p[0], p[1]]);
879
602
  };
880
- switch (i) {
603
+ switch (a) {
881
604
  case 1:
882
605
  case 14:
883
- y(0, 3);
606
+ g(0, 3);
884
607
  break;
885
608
  case 2:
886
609
  case 13:
887
- y(0, 1);
610
+ g(0, 1);
888
611
  break;
889
612
  case 3:
890
613
  case 12:
891
- y(1, 3);
614
+ g(1, 3);
892
615
  break;
893
616
  case 4:
894
617
  case 11:
895
- y(1, 2);
618
+ g(1, 2);
896
619
  break;
897
620
  case 5:
898
- y(0, 1), y(2, 3);
621
+ g(0, 1), g(2, 3);
899
622
  break;
900
623
  case 6:
901
624
  case 9:
902
- y(0, 2);
625
+ g(0, 2);
903
626
  break;
904
627
  case 7:
905
628
  case 8:
906
- y(2, 3);
629
+ g(2, 3);
907
630
  break;
908
631
  case 10:
909
- y(0, 3), y(1, 2);
632
+ g(0, 3), g(1, 2);
910
633
  break;
911
634
  }
912
635
  }
913
- function At(e, o, r) {
914
- const t = e.length, n = o.length, s = r ?? Math.min(t, n) - 1, c = 2 * s + 1, a = new Float32Array(c), l = new Float32Array(c);
915
- let f = 0, i = 0;
916
- for (let g = 0; g < t; g++) f += e[g];
917
- for (let g = 0; g < n; g++) i += o[g];
918
- f /= t, i /= n;
636
+ function pt(e, r, o) {
637
+ const t = e.length, n = r.length, s = o ?? Math.min(t, n) - 1, c = 2 * s + 1, i = new Float32Array(c), l = new Float32Array(c);
638
+ let f = 0, a = 0;
639
+ for (let d = 0; d < t; d++) f += e[d];
640
+ for (let d = 0; d < n; d++) a += r[d];
641
+ f /= t, a /= n;
919
642
  let u = 0, h = 0;
920
- for (let g = 0; g < t; g++) u += (e[g] - f) ** 2;
921
- for (let g = 0; g < n; g++) h += (o[g] - i) ** 2;
643
+ for (let d = 0; d < t; d++) u += (e[d] - f) ** 2;
644
+ for (let d = 0; d < n; d++) h += (r[d] - a) ** 2;
922
645
  u = Math.sqrt(u / t), h = Math.sqrt(h / n);
923
646
  const m = u * h * Math.min(t, n);
924
- let y = -1 / 0, w = 0;
925
- for (let g = 0; g < c; g++) {
926
- const F = g - s;
927
- l[g] = F;
928
- let A = 0;
929
- for (let p = 0; p < t; p++) {
930
- const b = p + F;
931
- b >= 0 && b < n && (A += (e[p] - f) * (o[b] - i));
647
+ let g = -1 / 0, M = 0;
648
+ for (let d = 0; d < c; d++) {
649
+ const w = d - s;
650
+ l[d] = w;
651
+ let p = 0;
652
+ for (let y = 0; y < t; y++) {
653
+ const F = y + w;
654
+ F >= 0 && F < n && (p += (e[y] - f) * (r[F] - a));
932
655
  }
933
- a[g] = m > 0 ? A / m : 0, a[g] > y && (y = a[g], w = g);
656
+ i[d] = m > 0 ? p / m : 0, i[d] > g && (g = i[d], M = d);
934
657
  }
935
658
  return {
936
- correlation: a,
659
+ correlation: i,
937
660
  lags: l,
938
- maxCorrelation: y,
939
- lagAtMax: l[w]
661
+ maxCorrelation: g,
662
+ lagAtMax: l[M]
940
663
  };
941
664
  }
942
- function mn(e, o) {
943
- return At(e, e, o);
665
+ function Qt(e, r) {
666
+ return pt(e, e, r);
944
667
  }
945
- function gn(e, o = {}) {
946
- const { method: r = "zscore", windowSize: t } = o;
947
- switch (r) {
668
+ function Ut(e, r = {}) {
669
+ const { method: o = "zscore", windowSize: t } = r;
670
+ switch (o) {
948
671
  case "zscore":
949
- return j(e, o.threshold ?? 3, t);
672
+ return k(e, r.threshold ?? 3, t);
950
673
  case "mad":
951
- return Mt(e, o.threshold ?? 2.5);
674
+ return yt(e, r.threshold ?? 2.5);
952
675
  case "iqr":
953
- return pt(e, o.threshold ?? 1.5);
676
+ return Ft(e, r.threshold ?? 1.5);
954
677
  case "isolation":
955
- return bt(e, o.threshold ?? 0.5);
678
+ return At(e, r.threshold ?? 0.5);
956
679
  default:
957
- return j(e, 3, t);
680
+ return k(e, 3, t);
958
681
  }
959
682
  }
960
- function j(e, o, r) {
683
+ function k(e, r, o) {
961
684
  const t = e.length, n = new Float32Array(t), s = [];
962
- if (r && r < t) {
963
- const c = Math.floor(r / 2);
964
- for (let a = 0; a < t; a++) {
965
- const l = Math.max(0, a - c), f = Math.min(t, a + c + 1);
966
- let i = 0;
967
- for (let h = l; h < f; h++) i += e[h];
968
- i /= f - l;
685
+ if (o && o < t) {
686
+ const c = Math.floor(o / 2);
687
+ for (let i = 0; i < t; i++) {
688
+ const l = Math.max(0, i - c), f = Math.min(t, i + c + 1);
689
+ let a = 0;
690
+ for (let h = l; h < f; h++) a += e[h];
691
+ a /= f - l;
969
692
  let u = 0;
970
- for (let h = l; h < f; h++) u += (e[h] - i) ** 2;
971
- u = Math.sqrt(u / (f - l)), n[a] = u > 0 ? Math.abs(e[a] - i) / u : 0, n[a] > o && s.push(a);
693
+ for (let h = l; h < f; h++) u += (e[h] - a) ** 2;
694
+ u = Math.sqrt(u / (f - l)), n[i] = u > 0 ? Math.abs(e[i] - a) / u : 0, n[i] > r && s.push(i);
972
695
  }
973
696
  } else {
974
697
  let c = 0;
975
698
  for (let l = 0; l < t; l++) c += e[l];
976
699
  c /= t;
977
- let a = 0;
978
- for (let l = 0; l < t; l++) a += (e[l] - c) ** 2;
979
- a = Math.sqrt(a / t);
700
+ let i = 0;
701
+ for (let l = 0; l < t; l++) i += (e[l] - c) ** 2;
702
+ i = Math.sqrt(i / t);
980
703
  for (let l = 0; l < t; l++)
981
- n[l] = a > 0 ? Math.abs(e[l] - c) / a : 0, n[l] > o && s.push(l);
704
+ n[l] = i > 0 ? Math.abs(e[l] - c) / i : 0, n[l] > r && s.push(l);
982
705
  }
983
- return { indices: s, scores: n, threshold: o };
706
+ return { indices: s, scores: n, threshold: r };
984
707
  }
985
- function Mt(e, o, r) {
986
- const t = e.length, n = new Float32Array(t), s = [], c = Array.from(e).sort((u, h) => u - h), a = c[Math.floor(t / 2)], i = 1.4826 * c.map((u) => Math.abs(u - a)).sort((u, h) => u - h)[Math.floor(t / 2)];
708
+ function yt(e, r, o) {
709
+ const t = e.length, n = new Float32Array(t), s = [], c = Array.from(e).sort((u, h) => u - h), i = c[Math.floor(t / 2)], a = 1.4826 * c.map((u) => Math.abs(u - i)).sort((u, h) => u - h)[Math.floor(t / 2)];
987
710
  for (let u = 0; u < t; u++)
988
- n[u] = i > 0 ? Math.abs(e[u] - a) / i : 0, n[u] > o && s.push(u);
989
- return { indices: s, scores: n, threshold: o };
990
- }
991
- function pt(e, o) {
992
- const r = e.length, t = new Float32Array(r), n = [], s = Array.from(e).sort((u, h) => u - h), c = s[Math.floor(r * 0.25)], a = s[Math.floor(r * 0.75)], l = a - c, f = c - o * l, i = a + o * l;
993
- for (let u = 0; u < r; u++)
994
- e[u] < f ? (t[u] = (f - e[u]) / l, n.push(u)) : e[u] > i ? (t[u] = (e[u] - i) / l, n.push(u)) : t[u] = 0;
995
- return { indices: n, scores: t, threshold: o };
996
- }
997
- function bt(e, o, r) {
998
- const t = e.length, n = new Float32Array(t), s = [], c = It(e);
999
- for (let a = 0; a < t; a++) {
711
+ n[u] = a > 0 ? Math.abs(e[u] - i) / a : 0, n[u] > r && s.push(u);
712
+ return { indices: s, scores: n, threshold: r };
713
+ }
714
+ function Ft(e, r) {
715
+ const o = e.length, t = new Float32Array(o), n = [], s = Array.from(e).sort((u, h) => u - h), c = s[Math.floor(o * 0.25)], i = s[Math.floor(o * 0.75)], l = i - c, f = c - r * l, a = i + r * l;
716
+ for (let u = 0; u < o; u++)
717
+ e[u] < f ? (t[u] = (f - e[u]) / l, n.push(u)) : e[u] > a ? (t[u] = (e[u] - a) / l, n.push(u)) : t[u] = 0;
718
+ return { indices: n, scores: t, threshold: r };
719
+ }
720
+ function At(e, r, o) {
721
+ const t = e.length, n = new Float32Array(t), s = [], c = bt(e);
722
+ for (let i = 0; i < t; i++) {
1000
723
  let l = 0;
1001
724
  for (let f = 0; f < t; f++)
1002
- a !== f && Math.abs(e[a] - e[f]) < c && l++;
1003
- n[a] = 1 - l / t, n[a] > o && s.push(a);
725
+ i !== f && Math.abs(e[i] - e[f]) < c && l++;
726
+ n[i] = 1 - l / t, n[i] > r && s.push(i);
1004
727
  }
1005
- return { indices: s, scores: n, threshold: o };
728
+ return { indices: s, scores: n, threshold: r };
1006
729
  }
1007
- function It(e) {
1008
- let o = 1 / 0, r = -1 / 0;
730
+ function bt(e) {
731
+ let r = 1 / 0, o = -1 / 0;
1009
732
  for (let t = 0; t < e.length; t++)
1010
- e[t] < o && (o = e[t]), e[t] > r && (r = e[t]);
1011
- return (r - o) * 0.1;
733
+ e[t] < r && (r = e[t]), e[t] > o && (o = e[t]);
734
+ return (o - r) * 0.1;
1012
735
  }
1013
- function k(e, o) {
1014
- const r = e.length;
1015
- if (r < 2) return 0;
736
+ function R(e, r) {
737
+ const o = e.length;
738
+ if (o < 2) return 0;
1016
739
  let t = 0;
1017
- if (typeof o == "number") {
1018
- const n = o;
1019
- for (let s = 1; s < r; s++)
740
+ if (typeof r == "number") {
741
+ const n = r;
742
+ for (let s = 1; s < o; s++)
1020
743
  t += (e[s - 1] + e[s]) * n / 2;
1021
- } else if (o)
1022
- for (let n = 1; n < r; n++)
1023
- t += (e[n - 1] + e[n]) * (o[n] - o[n - 1]) / 2;
744
+ } else if (r)
745
+ for (let n = 1; n < o; n++)
746
+ t += (e[n - 1] + e[n]) * (r[n] - r[n - 1]) / 2;
1024
747
  else
1025
- for (let n = 1; n < r; n++)
748
+ for (let n = 1; n < o; n++)
1026
749
  t += (e[n - 1] + e[n]) / 2;
1027
750
  return t;
1028
751
  }
1029
- function dt(e, o) {
1030
- const r = e.length;
1031
- if (r < 3) return k(e, o);
1032
- const t = r % 2 === 0 ? r - 1 : r;
752
+ function It(e, r) {
753
+ const o = e.length;
754
+ if (o < 3) return R(e, r);
755
+ const t = o % 2 === 0 ? o - 1 : o;
1033
756
  let n = 0;
1034
- if (typeof o == "number") {
1035
- const s = o;
757
+ if (typeof r == "number") {
758
+ const s = r;
1036
759
  n = e[0] + e[t - 1];
1037
760
  for (let c = 1; c < t - 1; c++)
1038
761
  n += (c % 2 === 0 ? 2 : 4) * e[c];
1039
- n *= s / 3, r !== t && (n += (e[r - 2] + e[r - 1]) * s / 2);
1040
- } else return o ? k(e, o) : dt(e, 1);
762
+ n *= s / 3, o !== t && (n += (e[o - 2] + e[o - 1]) * s / 2);
763
+ } else return r ? R(e, r) : It(e, 1);
1041
764
  return n;
1042
765
  }
1043
- function yn(e, o) {
1044
- const r = e.length, t = new Float32Array(r);
1045
- if (r < 2)
766
+ function Jt(e, r) {
767
+ const o = e.length, t = new Float32Array(o);
768
+ if (o < 2)
1046
769
  return t[0] = 0, t;
1047
- if (t[0] = 0, typeof o == "number") {
1048
- const n = o;
1049
- for (let s = 1; s < r; s++)
770
+ if (t[0] = 0, typeof r == "number") {
771
+ const n = r;
772
+ for (let s = 1; s < o; s++)
1050
773
  t[s] = t[s - 1] + (e[s - 1] + e[s]) * n / 2;
1051
- } else if (o)
1052
- for (let n = 1; n < r; n++)
1053
- t[n] = t[n - 1] + (e[n - 1] + e[n]) * (o[n] - o[n - 1]) / 2;
774
+ } else if (r)
775
+ for (let n = 1; n < o; n++)
776
+ t[n] = t[n - 1] + (e[n - 1] + e[n]) * (r[n] - r[n - 1]) / 2;
1054
777
  else
1055
- for (let n = 1; n < r; n++)
778
+ for (let n = 1; n < o; n++)
1056
779
  t[n] = t[n - 1] + (e[n - 1] + e[n]) / 2;
1057
780
  return t;
1058
781
  }
1059
- function wn(e, o) {
1060
- const r = e.length, t = o.length;
782
+ function Vt(e, r) {
783
+ const o = e.length, t = r.length;
1061
784
  let n = 0, s = 0;
1062
- for (let y = 0; y < r; y++) n += e[y];
1063
- for (let y = 0; y < t; y++) s += o[y];
1064
- n /= r, s /= t;
1065
- let c = 0, a = 0;
1066
- for (let y = 0; y < r; y++) c += (e[y] - n) ** 2;
1067
- for (let y = 0; y < t; y++) a += (o[y] - s) ** 2;
1068
- c /= r - 1, a /= t - 1;
1069
- const l = Math.sqrt(c / r + a / t), f = (n - s) / l, i = (c / r + a / t) ** 2, u = (c / r) ** 2 / (r - 1) + (a / t) ** 2 / (t - 1), h = i / u, m = 2 * (1 - qt(Math.abs(f)));
785
+ for (let g = 0; g < o; g++) n += e[g];
786
+ for (let g = 0; g < t; g++) s += r[g];
787
+ n /= o, s /= t;
788
+ let c = 0, i = 0;
789
+ for (let g = 0; g < o; g++) c += (e[g] - n) ** 2;
790
+ for (let g = 0; g < t; g++) i += (r[g] - s) ** 2;
791
+ c /= o - 1, i /= t - 1;
792
+ const l = Math.sqrt(c / o + i / t), f = (n - s) / l, a = (c / o + i / t) ** 2, u = (c / o) ** 2 / (o - 1) + (i / t) ** 2 / (t - 1), h = a / u, m = 2 * (1 - qt(Math.abs(f)));
1070
793
  return {
1071
794
  tStatistic: f,
1072
795
  degreesOfFreedom: h,
@@ -1075,10 +798,10 @@ function wn(e, o) {
1075
798
  };
1076
799
  }
1077
800
  function qt(e) {
1078
- const o = 0.254829592, r = -0.284496736, t = 1.421413741, n = -1.453152027, s = 1.061405429, c = 0.3275911, a = e < 0 ? -1 : 1;
801
+ const r = 0.254829592, o = -0.284496736, t = 1.421413741, n = -1.453152027, s = 1.061405429, c = 0.3275911, i = e < 0 ? -1 : 1;
1079
802
  e = Math.abs(e) / Math.sqrt(2);
1080
- const l = 1 / (1 + c * e), f = 1 - ((((s * l + n) * l + t) * l + r) * l + o) * l * Math.exp(-e * e);
1081
- return 0.5 * (1 + a * f);
803
+ const l = 1 / (1 + c * e), f = 1 - ((((s * l + n) * l + t) * l + o) * l + r) * l * Math.exp(-e * e);
804
+ return 0.5 * (1 + i * f);
1082
805
  }
1083
806
  const xt = {
1084
807
  name: "velo-plot-analysis",
@@ -1087,118 +810,118 @@ const xt = {
1087
810
  provides: ["analysis"],
1088
811
  tags: ["fft", "filters", "statistics", "math"]
1089
812
  };
1090
- function Fn(e = {}) {
1091
- let o;
813
+ function tn(e = {}) {
814
+ let r;
1092
815
  return {
1093
816
  manifest: xt,
1094
- onInit(r) {
1095
- o = r;
817
+ onInit(o) {
818
+ r = o;
1096
819
  },
1097
- onDestroy(r) {
820
+ onDestroy(o) {
1098
821
  },
1099
822
  api: {
1100
- addFitLine(r, t, n) {
1101
- return K(o.chart, r, t, n);
823
+ addFitLine(o, t, n) {
824
+ return J(r.chart, o, t, n);
1102
825
  },
1103
826
  // Math & Stats
1104
- integrate: E,
1105
- derivative: z,
1106
- calculateStats: U,
827
+ integrate: z,
828
+ derivative: _,
829
+ calculateStats: G,
1107
830
  validateData: Z,
1108
831
  // Signal Processing
1109
- fft: (r) => v(r),
832
+ fft: (o) => x(o),
1110
833
  detectPeaks: O,
1111
- detectCycles: G,
834
+ detectCycles: N,
1112
835
  movingAverage: Y,
1113
836
  subtractBaseline: X,
1114
837
  downsampleLTTB: H,
1115
- singleFrequencyFilter: it,
838
+ singleFrequencyFilter: lt,
1116
839
  // Fitting
1117
- fitData: D,
840
+ fitData: L,
1118
841
  // Indicators
1119
- sma: N,
1120
- ema: M,
1121
- rsi: ct,
842
+ sma: U,
843
+ ema: Q,
844
+ rsi: K,
1122
845
  // Utils
1123
- formatWithPrefix: V,
1124
- generateCycleColors: T
846
+ formatWithPrefix: T,
847
+ generateCycleColors: E
1125
848
  }
1126
849
  };
1127
850
  }
1128
851
  export {
1129
- Fn as PluginAnalysis,
1130
- Kt as adx,
852
+ tn as PluginAnalysis,
853
+ fn as adx,
1131
854
  St as analyzeComplexSpectrum,
1132
- C as analyzeSpectrum,
1133
- Qt as aroon,
1134
- nt as arraysToComplex,
1135
- Gt as atr,
1136
- mn as autoCorrelation,
1137
- rn as bandPassFilter,
1138
- sn as bandStopFilter,
1139
- kt as blackmanWindow,
1140
- Yt as bollingerBands,
1141
- cn as butterworth,
1142
- I as calculateR2,
1143
- U as calculateStats,
855
+ j as analyzeSpectrum,
856
+ un as aroon,
857
+ et as arraysToComplex,
858
+ hn as atr,
859
+ Qt as autoCorrelation,
860
+ Ht as bandPassFilter,
861
+ Xt as bandStopFilter,
862
+ Lt as blackmanWindow,
863
+ mn as bollingerBands,
864
+ Yt as butterworth,
865
+ A as calculateR2,
866
+ G as calculateStats,
1144
867
  Dt as complexToArrays,
1145
- At as crossCorrelation,
1146
- tn as cumsum,
1147
- pn as cumulativeIntegral,
1148
- yn as cumulativeIntegral2,
1149
- Fn as default,
1150
- zt as dema,
1151
- z as derivative,
1152
- gn as detectAnomalies,
1153
- G as detectCycles,
868
+ pt as crossCorrelation,
869
+ gn as cumsum,
870
+ on as cumulativeIntegral,
871
+ Jt as cumulativeIntegral2,
872
+ tn as default,
873
+ dn as dema,
874
+ _ as derivative,
875
+ Ut as detectAnomalies,
876
+ N as detectCycles,
1154
877
  O as detectPeaks,
1155
- $t as dominantFrequency,
878
+ Rt as dominantFrequency,
1156
879
  H as downsampleLTTB,
1157
- M as ema,
1158
- an as exponentialMovingAverage,
1159
- v as fft,
1160
- Ct as fftFromComplexInput,
1161
- D as fitData,
1162
- In as formatScientific,
1163
- dn as formatValue,
1164
- V as formatWithPrefix,
1165
- ln as gaussianSmooth,
1166
- hn as generateContours,
1167
- T as generateCycleColors,
1168
- qn as getBestPrefix,
1169
- Wt as getPositiveFrequencies,
880
+ Q as ema,
881
+ Nt as exponentialMovingAverage,
882
+ x as fft,
883
+ Bt as fftFromComplexInput,
884
+ L as fitData,
885
+ sn as formatScientific,
886
+ cn as formatValue,
887
+ T as formatWithPrefix,
888
+ Ot as gaussianSmooth,
889
+ Kt as generateContours,
890
+ E as generateCycleColors,
891
+ an as getBestPrefix,
892
+ zt as getPositiveFrequencies,
1170
893
  jt as hammingWindow,
1171
- Rt as hanningWindow,
1172
- on as highPassFilter,
1173
- Q as ifft,
1174
- Bt as ifftComplex,
1175
- Lt as ifftFromArrays,
1176
- E as integrate,
1177
- en as lowPassFilter,
1178
- Tt as macd,
1179
- un as medianFilter,
1180
- Xt as momentum,
894
+ Ct as hanningWindow,
895
+ Tt as highPassFilter,
896
+ V as ifft,
897
+ _t as ifftComplex,
898
+ Wt as ifftFromArrays,
899
+ z as integrate,
900
+ Et as lowPassFilter,
901
+ Mn as macd,
902
+ Gt as medianFilter,
903
+ wn as momentum,
1181
904
  Y as movingAverage,
1182
- S as nextPowerOf2,
1183
- nn as normalize,
1184
- Ut as obv,
1185
- Jt as percentChange,
1186
- vt as powerSpectrum,
1187
- Ht as roc,
1188
- ct as rsi,
1189
- fn as savitzkyGolay,
1190
- dt as simpsonsIntegration,
1191
- it as singleFrequencyFilter,
1192
- N as sma,
1193
- _ as solveLinearSystem,
1194
- Ot as standardDeviation,
1195
- Vt as stochastic,
905
+ C as nextPowerOf2,
906
+ pn as normalize,
907
+ yn as obv,
908
+ Fn as percentChange,
909
+ kt as powerSpectrum,
910
+ An as roc,
911
+ K as rsi,
912
+ Zt as savitzkyGolay,
913
+ It as simpsonsIntegration,
914
+ lt as singleFrequencyFilter,
915
+ U as sma,
916
+ W as solveLinearSystem,
917
+ bn as standardDeviation,
918
+ In as stochastic,
1196
919
  X as subtractBaseline,
1197
- wn as tTest,
1198
- Et as tema,
1199
- k as trapezoidalIntegration,
920
+ Vt as tTest,
921
+ qn as tema,
922
+ R as trapezoidalIntegration,
1200
923
  Z as validateData,
1201
- Zt as vwap,
1202
- _t as wma
924
+ xn as vwap,
925
+ Pn as wma
1203
926
  };
1204
927
  //# sourceMappingURL=analysis.js.map