waveform-analysis 0.1.65 → 0.1.67

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 (81) hide show
  1. package/README.md +146 -5
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.js +1326 -1118
  4. package/dist/style.css +1 -1
  5. package/dist/types/components/WaveformChart.vue.d.ts +7 -2
  6. package/dist/types/components/core/constants.d.ts +2 -0
  7. package/dist/types/components/core/grid.d.ts +1 -1
  8. package/dist/types/components/core/layout.d.ts +2 -2
  9. package/dist/types/components/core/pagination.d.ts +2 -0
  10. package/dist/types/components/core/title.d.ts +2 -1
  11. package/dist/types/components/core/trackLayoutBuilder.d.ts +5 -0
  12. package/dist/types/components/core/types.d.ts +2 -1
  13. package/dist/types/components/core/useWaveformChartController.d.ts +9 -0
  14. package/dist/types/components/core/useWaveformLayout.d.ts +1 -0
  15. package/dist/types/components/core/useWaveformPresentation.d.ts +3 -0
  16. package/dist/types/components/core/useWaveformYAxisLayout.d.ts +31 -0
  17. package/dist/types/components/core/waveformChartTypes.d.ts +11 -2
  18. package/dist/types/components/core/yAxisLayoutMetrics.d.ts +1 -1
  19. package/dist/types/components/core/yAxisTitleLayout.d.ts +4 -0
  20. package/dist/types/components/data/types.d.ts +1 -1
  21. package/dist/types/components/interaction/integerZoom.d.ts +12 -0
  22. package/dist/types/components/interaction/interactionTarget.d.ts +1 -0
  23. package/dist/types/components/interaction/remoteViewport.d.ts +8 -0
  24. package/dist/types/components/interaction/useWaveformViewport.d.ts +1 -2
  25. package/dist/types/components/interaction/viewportDomain.d.ts +1 -1
  26. package/dist/types/components/interaction/viewportPan.d.ts +4 -0
  27. package/dist/types/components/interaction/zoomConstraints.d.ts +2 -1
  28. package/dist/types/components/rendering/WaveformLegend.vue.d.ts +2 -0
  29. package/dist/types/components/rendering/WaveformTrack.vue.d.ts +6 -6
  30. package/dist/types/components/rendering/WaveformTrackAxes.vue.d.ts +5 -1
  31. package/dist/types/components/rendering/WaveformTrackBackdrop.vue.d.ts +0 -4
  32. package/dist/types/components/rendering/WaveformZeroLines.vue.d.ts +12 -0
  33. package/dist/types/data/recordedDampedWaveform.d.ts +1 -0
  34. package/dist/types/demo/types.d.ts +3 -0
  35. package/dist/types/index.d.ts +2 -1
  36. package/dist/types/types/chart.d.ts +17 -0
  37. package/dist/types/types/index.d.ts +1 -1
  38. package/package.json +1 -1
  39. package/src/App.vue +6 -0
  40. package/src/components/WaveformChart.css +5 -0
  41. package/src/components/WaveformChart.vue +3 -0
  42. package/src/components/WaveformChartView.vue +14 -3
  43. package/src/components/core/constants.ts +2 -0
  44. package/src/components/core/grid.ts +4 -1
  45. package/src/components/core/layout.ts +16 -2
  46. package/src/components/core/pagination.ts +17 -0
  47. package/src/components/core/title.ts +7 -3
  48. package/src/components/core/trackLayoutBuilder.ts +39 -59
  49. package/src/components/core/types.ts +2 -0
  50. package/src/components/core/useWaveformChartController.ts +17 -1
  51. package/src/components/core/useWaveformChartLifecycle.ts +11 -17
  52. package/src/components/core/useWaveformLayout.ts +67 -107
  53. package/src/components/core/useWaveformPresentation.ts +27 -3
  54. package/src/components/core/useWaveformYAxisLayout.ts +140 -0
  55. package/src/components/core/waveformChartTypes.ts +15 -0
  56. package/src/components/core/yAxisLayoutMetrics.ts +11 -2
  57. package/src/components/core/yAxisTitleLayout.ts +78 -0
  58. package/src/components/data/types.ts +3 -0
  59. package/src/components/interaction/integerZoom.ts +64 -0
  60. package/src/components/interaction/interactionTarget.ts +10 -0
  61. package/src/components/interaction/remoteViewport.ts +53 -0
  62. package/src/components/interaction/useWaveformViewport.ts +16 -58
  63. package/src/components/interaction/useWaveformZoom.ts +13 -11
  64. package/src/components/interaction/viewportDomain.ts +11 -3
  65. package/src/components/interaction/viewportPan.ts +82 -0
  66. package/src/components/interaction/zoomConstraints.ts +7 -5
  67. package/src/components/rendering/WaveformLegend.vue +10 -1
  68. package/src/components/rendering/WaveformTrack.vue +24 -6
  69. package/src/components/rendering/WaveformTrackAxes.vue +16 -5
  70. package/src/components/rendering/WaveformTrackBackdrop.vue +2 -34
  71. package/src/components/rendering/WaveformZeroLines.vue +53 -0
  72. package/src/data/recordedDampedWaveform.ts +3 -0
  73. package/src/data/simulatedWaveforms.ts +12 -10
  74. package/src/demo/DemoChartHost.vue +1 -0
  75. package/src/demo/DemoGridFrameControls.vue +12 -0
  76. package/src/demo/DemoViewControls.vue +4 -0
  77. package/src/demo/types.ts +3 -0
  78. package/src/index.ts +4 -0
  79. package/src/styles.css +3 -3
  80. package/src/types/chart.ts +20 -0
  81. package/src/types/index.ts +3 -0
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineAsyncComponent as c, defineComponent as l, getCurrentInstance as u, markRaw as d, nextTick as f, normalizeClass as p, normalizeStyle as m, onBeforeUnmount as h, onMounted as g, onScopeDispose as _, onUpdated as v, openBlock as y, reactive as b, ref as x, renderList as S, shallowReactive as C, shallowRef as w, toDisplayString as T, toRefs as E, unref as D, vModelText as O, watch as k, watchEffect as A, withCtx as j, withDirectives as M, withModifiers as N } from "vue";
2
- import { axisBottom as P, axisLeft as F, axisRight as I, bisector as L, curveStep as R, curveStepAfter as z, curveStepBefore as B, extent as V, line as H, pointer as U, scaleLinear as W, select as G, symbol as ee, symbolCircle as te, symbolDiamond as ne, symbolSquare as re, symbolTriangle as K, tickStep as q, zoom as ie, zoomIdentity as J, zoomTransform as ae } from "d3";
3
- import { InputNumber as oe, Modal as se, Pagination as ce } from "ant-design-vue";
2
+ import { axisBottom as P, axisLeft as F, axisRight as I, bisector as L, curveStep as R, curveStepAfter as z, curveStepBefore as B, extent as V, line as H, pointer as U, scaleLinear as W, select as G, symbol as K, symbolCircle as ee, symbolDiamond as te, symbolSquare as ne, symbolTriangle as re, tickStep as ie, zoom as ae, zoomIdentity as q, zoomTransform as oe } from "d3";
3
+ import { InputNumber as se, Modal as ce, Pagination as le } from "ant-design-vue";
4
4
  //#region src/utils/waveformId.ts
5
- var le = 0;
6
- function ue(e = "waveform") {
5
+ var ue = 0;
6
+ function de(e = "waveform") {
7
7
  let t = u();
8
- return `${e}-${t ? `v${t.uid}` : `f${++le}`}`;
8
+ return `${e}-${t ? `v${t.uid}` : `f${++ue}`}`;
9
9
  }
10
10
  //#endregion
11
11
  //#region src/core/compactSamplePointSource.ts
12
- function de(e, t, n, r) {
12
+ function fe(e, t, n, r) {
13
13
  let i = 0, a = e;
14
14
  for (; i < a;) {
15
15
  let e = i + Math.floor((a - i) / 2);
@@ -17,7 +17,7 @@ function de(e, t, n, r) {
17
17
  }
18
18
  return i;
19
19
  }
20
- function fe(e, t, n, r) {
20
+ function pe(e, t, n, r) {
21
21
  let i = (e) => n + (r?.[e] ?? e) / t, a = (t) => t < 0 || t >= e.length ? void 0 : {
22
22
  x: i(t),
23
23
  y: e[t]
@@ -33,15 +33,15 @@ function fe(e, t, n, r) {
33
33
  visibleRange(t) {
34
34
  let n = Math.min(t[0], t[1]), r = Math.max(t[0], t[1]);
35
35
  return {
36
- start: de(e.length, i, n, !1),
37
- end: de(e.length, i, r, !0)
36
+ start: fe(e.length, i, n, !1),
37
+ end: fe(e.length, i, r, !0)
38
38
  };
39
39
  },
40
40
  nearestPoint(t) {
41
41
  if (!Number.isFinite(t) || !e.length) return;
42
42
  if (t <= i(0)) return a(0);
43
43
  if (t >= i(e.length - 1)) return a(e.length - 1);
44
- let n = de(e.length, i, t, !1), r = Math.max(0, n - 1);
44
+ let n = fe(e.length, i, t, !1), r = Math.max(0, n - 1);
45
45
  return Math.abs(t - i(r)) < Math.abs(i(n) - t) ? a(r) : a(n);
46
46
  },
47
47
  metrics() {
@@ -68,17 +68,17 @@ function fe(e, t, n, r) {
68
68
  }
69
69
  //#endregion
70
70
  //#region src/core/waveformPointSource.ts
71
- function Y(e) {
71
+ function J(e) {
72
72
  return typeof e == "number" && Number.isFinite(e) && e >= 0 ? e : void 0;
73
73
  }
74
- function pe(e, t, n) {
74
+ function me(e, t, n) {
75
75
  let r = Math.max(0, Math.min(n, Math.floor(e)));
76
76
  return {
77
77
  start: r,
78
78
  end: Math.max(r, Math.min(n, Math.floor(t)))
79
79
  };
80
80
  }
81
- function me(e, t, n) {
81
+ function Y(e, t, n) {
82
82
  let r = 0, i = e;
83
83
  for (; r < i;) {
84
84
  let e = r + Math.floor((i - r) / 2);
@@ -99,7 +99,7 @@ function ge(e, t, n) {
99
99
  for (let c = 0; c < e; c += 1) {
100
100
  let e = t(c);
101
101
  if (!e || (r = Math.min(r, e.x), i = Math.max(i, e.x), a = Math.min(a, e.y), o = Math.max(o, e.y), !n)) continue;
102
- let l = Y(e.lowerError) ?? Y(e.error) ?? 0, u = Y(e.upperError) ?? Y(e.error) ?? 0;
102
+ let l = J(e.lowerError) ?? J(e.error) ?? 0, u = J(e.upperError) ?? J(e.error) ?? 0;
103
103
  s ||= l !== 0 || u !== 0, a = Math.min(a, e.y - l), o = Math.max(o, e.y + u);
104
104
  }
105
105
  return {
@@ -123,13 +123,13 @@ var _e = class {
123
123
  return this.sourcePoints[e];
124
124
  }
125
125
  pointsInRange(e = 0, t = this.length) {
126
- let n = pe(e, t, this.length);
126
+ let n = me(e, t, this.length);
127
127
  return this.sourcePoints.slice(n.start, n.end);
128
128
  }
129
129
  visibleRange(e) {
130
130
  let t = Math.min(e[0], e[1]), n = Math.max(e[0], e[1]);
131
131
  return {
132
- start: me(this.length, (e) => this.sourcePoints[e].x, t),
132
+ start: Y(this.length, (e) => this.sourcePoints[e].x, t),
133
133
  end: he(this.length, (e) => this.sourcePoints[e].x, n)
134
134
  };
135
135
  }
@@ -138,7 +138,7 @@ var _e = class {
138
138
  let t = this.sourcePoints[0], n = this.sourcePoints[this.length - 1];
139
139
  if (e <= t.x) return t;
140
140
  if (e >= n.x) return n;
141
- let r = me(this.length, (e) => this.sourcePoints[e].x, e), i = this.sourcePoints[Math.min(r, this.length - 1)], a = this.sourcePoints[Math.max(0, r - 1)];
141
+ let r = Y(this.length, (e) => this.sourcePoints[e].x, e), i = this.sourcePoints[Math.min(r, this.length - 1)], a = this.sourcePoints[Math.max(0, r - 1)];
142
142
  return Math.abs(e - a.x) < Math.abs(i.x - e) ? a : i;
143
143
  }
144
144
  metrics(e = !1) {
@@ -165,7 +165,7 @@ var _e = class {
165
165
  }
166
166
  pointAt(e) {
167
167
  if (e < 0 || e >= this.length) return;
168
- let t = Y(this.error?.[e]), n = Y(this.lowerError?.[e]), r = Y(this.upperError?.[e]);
168
+ let t = J(this.error?.[e]), n = J(this.lowerError?.[e]), r = J(this.upperError?.[e]);
169
169
  return {
170
170
  x: this.x[e],
171
171
  y: this.y[e],
@@ -175,14 +175,14 @@ var _e = class {
175
175
  };
176
176
  }
177
177
  pointsInRange(e = 0, t = this.length) {
178
- let n = pe(e, t, this.length), r = [];
178
+ let n = me(e, t, this.length), r = [];
179
179
  for (let e = n.start; e < n.end; e += 1) r.push(this.pointAt(e));
180
180
  return r;
181
181
  }
182
182
  visibleRange(e) {
183
183
  let t = Math.min(e[0], e[1]), n = Math.max(e[0], e[1]);
184
184
  return {
185
- start: me(this.length, (e) => this.x[e], t),
185
+ start: Y(this.length, (e) => this.x[e], t),
186
186
  end: he(this.length, (e) => this.x[e], n)
187
187
  };
188
188
  }
@@ -190,7 +190,7 @@ var _e = class {
190
190
  if (!Number.isFinite(e) || !this.length) return;
191
191
  if (e <= this.x[0]) return this.pointAt(0);
192
192
  if (e >= this.x[this.length - 1]) return this.pointAt(this.length - 1);
193
- let t = me(this.length, (e) => this.x[e], e), n = Math.min(t, this.length - 1), r = Math.max(0, t - 1);
193
+ let t = Y(this.length, (e) => this.x[e], e), n = Math.min(t, this.length - 1), r = Math.max(0, t - 1);
194
194
  return Math.abs(e - this.x[r]) < Math.abs(this.x[n] - e) ? this.pointAt(r) : this.pointAt(n);
195
195
  }
196
196
  metrics(e = !1) {
@@ -198,7 +198,7 @@ var _e = class {
198
198
  for (let o = 0; o < this.length; o += 1) {
199
199
  let s = this.x[o], c = this.y[o];
200
200
  if (t = Math.min(t, s), n = Math.max(n, s), r = Math.min(r, c), i = Math.max(i, c), !e) continue;
201
- let l = Y(this.lowerError?.[o]) ?? Y(this.error?.[o]) ?? 0, u = Y(this.upperError?.[o]) ?? Y(this.error?.[o]) ?? 0;
201
+ let l = J(this.lowerError?.[o]) ?? J(this.error?.[o]) ?? 0, u = J(this.upperError?.[o]) ?? J(this.error?.[o]) ?? 0;
202
202
  a ||= l !== 0 || u !== 0, r = Math.min(r, c - l), i = Math.max(i, c + u);
203
203
  }
204
204
  return {
@@ -230,7 +230,7 @@ function be(e) {
230
230
  return e.x instanceof Float64Array && t.every((t) => t === void 0 || ye(t) && t.length === e.x.length);
231
231
  }
232
232
  function xe(e) {
233
- if (!ye(e.values) || !Number.isFinite(e.sampleRate) || e.sampleRate <= 0 || e.startTime !== void 0 && !Number.isFinite(e.startTime)) return fe(/* @__PURE__ */ new Float64Array(), 1, 0);
233
+ if (!ye(e.values) || !Number.isFinite(e.sampleRate) || e.sampleRate <= 0 || e.startTime !== void 0 && !Number.isFinite(e.startTime)) return pe(/* @__PURE__ */ new Float64Array(), 1, 0);
234
234
  let t = e.startTime ?? 0, n = 0;
235
235
  for (let t = 0; t < e.values.length; t += 1) n += +!!Number.isFinite(e.values[t]);
236
236
  let r = e.values instanceof Float32Array ? new Float32Array(n) : new Float64Array(n), i = n === e.values.length ? void 0 : new Uint32Array(n);
@@ -238,7 +238,7 @@ function xe(e) {
238
238
  let a = e.values[t];
239
239
  Number.isFinite(a) && (r[n] = a, i && (i[n] = t), n += 1);
240
240
  }
241
- return fe(r, e.sampleRate, t, i);
241
+ return pe(r, e.sampleRate, t, i);
242
242
  }
243
243
  function Se(e) {
244
244
  if (!be(e)) return new ve(/* @__PURE__ */ new Float64Array(), /* @__PURE__ */ new Float64Array());
@@ -1041,7 +1041,9 @@ var zt = {
1041
1041
  }, Gt = {
1042
1042
  COLOR: "#ff0000",
1043
1043
  WIDTH: 1,
1044
- DASH: "6 4"
1044
+ DASH: "6 4",
1045
+ OPACITY: .5,
1046
+ BOUNDARY_THRESHOLD: .02
1045
1047
  };
1046
1048
  //#endregion
1047
1049
  //#region src/components/core/yDomain.ts
@@ -1456,34 +1458,34 @@ function Wn(e, t, n) {
1456
1458
  function Gn(e) {
1457
1459
  return e === "compact" ? 0 : e === "separated" ? 16 : 14;
1458
1460
  }
1459
- function Kn(e, t, n, r, i = [], a, o = !0) {
1460
- let s = Hn(n), c = i.filter(Boolean).length, l = n.fillIncompleteLastRow && c > 0 && c < s, u = l ? Math.ceil(c / n.columnCount) : n.rowCount, d = Gn(r), f = Number.isFinite(a) ? Math.max(0, a) : d, p = /* @__PURE__ */ new Set();
1461
+ function Kn(e, t, n, r, i = [], a, o = !0, s = !1) {
1462
+ let c = Hn(n), l = i.filter(Boolean).length, u = n.fillIncompleteLastRow && l > 0 && l < c, d = u ? Math.ceil(l / n.columnCount) : n.rowCount, f = Gn(r), p = Number.isFinite(a) ? Math.max(0, a) : f, m = /* @__PURE__ */ new Set();
1461
1463
  if (o) {
1462
- if (r === "independent") for (let e = 0; e < u; e += 1) p.add(e);
1463
- else if (r === "compact") p.add(u - 1);
1464
+ if (r === "independent") for (let e = 0; e < d; e += 1) m.add(e);
1465
+ else if (r === "compact") m.add(d - 1);
1464
1466
  else for (let e = 0; e < n.columnCount; e += 1) for (let t = Hn(n) - 1; t >= 0; --t) if (t % n.columnCount === e && i[t]) {
1465
- p.add(Math.floor(t / n.columnCount));
1467
+ m.add(Math.floor(t / n.columnCount));
1466
1468
  break;
1467
1469
  }
1468
1470
  }
1469
- let m = Math.max(0, u - 1) * d, h = p.size * 30, g = Math.max(1, (t - m - h) / u);
1470
- return Array.from({ length: l ? c : s }, (t, r) => {
1471
- let i = Math.floor(r / n.columnCount), a = r % n.columnCount, o = l && i === u - 1 ? c - i * n.columnCount : n.columnCount, s = Math.max(0, o - 1) * f, m = Math.max(1, (e - s) / o), h = p.has(i) ? 30 : 0, _ = g + h, v = Array.from({ length: i }, (e, t) => {
1472
- let n = p.has(t) ? 30 : 0;
1473
- return g + n + d;
1471
+ let h = Math.max(0, d - 1) * f, g = s && m.has(d - 1) ? 30 : 0, _ = m.size * 30 - g, v = Math.max(1, (t - h - _) / d);
1472
+ return Array.from({ length: u ? l : c }, (t, r) => {
1473
+ let i = Math.floor(r / n.columnCount), a = r % n.columnCount, o = u && i === d - 1 ? l - i * n.columnCount : n.columnCount, s = Math.max(0, o - 1) * p, c = Math.max(1, (e - s) / o), h = m.has(i) ? 30 : 0, g = v + h, _ = Array.from({ length: i }, (e, t) => {
1474
+ let n = m.has(t) ? 30 : 0;
1475
+ return v + n + f;
1474
1476
  }).reduce((e, t) => e + t, 0);
1475
1477
  return {
1476
1478
  slotIndex: r,
1477
1479
  row: i,
1478
1480
  column: a,
1479
- left: a * (m + f),
1480
- top: v,
1481
- width: m,
1482
- height: g,
1483
- plotHeight: g,
1484
- cellHeight: _,
1481
+ left: a * (c + p),
1482
+ top: _,
1483
+ width: c,
1484
+ height: v,
1485
+ plotHeight: v,
1486
+ cellHeight: g,
1485
1487
  xAxisBand: h,
1486
- isLastRow: i === u - 1
1488
+ isLastRow: i === d - 1
1487
1489
  };
1488
1490
  });
1489
1491
  }
@@ -1509,7 +1511,7 @@ function Qn(e, t, n = !1) {
1509
1511
  if (t.type === "integer-ms") {
1510
1512
  let t = e[0] * Yn, n = e[1] * Yn;
1511
1513
  if (!Number.isSafeInteger(Math.ceil(Math.abs(t))) || !Number.isSafeInteger(Math.ceil(Math.abs(n))) || n - t < 1) return [...e];
1512
- let r = n - t >= Xn ? Math.max(10, q(t, n, Jn) / 10) : 1;
1514
+ let r = n - t >= Xn ? Math.max(10, ie(t, n, Jn) / 10) : 1;
1513
1515
  return [Math.floor(t / r) * r / Yn, Math.ceil(n / r) * r / Yn];
1514
1516
  }
1515
1517
  if (t.type !== "nice") return [...e];
@@ -1517,15 +1519,72 @@ function Qn(e, t, n = !1) {
1517
1519
  return t.bounds === "end" ? [e[0], r[1]] : r;
1518
1520
  }
1519
1521
  //#endregion
1522
+ //#region src/components/core/yAxisTitleLayout.ts
1523
+ var $n = 14, er = 11, tr = 2;
1524
+ function nr(e) {
1525
+ return Array.from(e).reduce((e, t) => e + (/[\u2e80-\u9fff\uf900-\ufaff\uff01-\uff60]/u.test(t) ? 1 : /[MW@%]/u.test(t) ? .95 : /[ilI1., :;|'!]/u.test(t) ? .4 : .65) * $n, 0);
1526
+ }
1527
+ function rr(e, t, n) {
1528
+ let r = t.seriesList[0], i = nr(r?.name.trim() || n || "") / 2, a = e.height / 2 - i - tr, o = e.height / 2 + i + tr, s = Math.min(...t.tickValues), c = t.tickValues.flatMap((e) => {
1529
+ let n = t.scale(e) + .5, i = n - (e === s ? er : er / 2);
1530
+ return (e === s ? n : n + er / 2) < a || i > o ? [] : [br(e, t.scale.domain(), t.tickValues, r?.unit).length * 7];
1531
+ });
1532
+ return Math.max(7, ...c) + 7 + 20 / 2;
1533
+ }
1534
+ function ir(e, t) {
1535
+ let n = /* @__PURE__ */ new Map();
1536
+ for (let r of e) {
1537
+ let e = 0;
1538
+ for (let i of r.yAxes) {
1539
+ if (i.side !== "left") continue;
1540
+ let a = `${r.column}:${e++}`;
1541
+ n.set(a, Math.max(n.get(a) ?? 0, rr(r, i, t)));
1542
+ }
1543
+ }
1544
+ for (let t of e) {
1545
+ let e = 0;
1546
+ for (let r of t.yAxes) r.side === "left" && (r.labelX = r.x - n.get(`${t.column}:${e++}`));
1547
+ }
1548
+ }
1549
+ //#endregion
1550
+ //#region src/components/interaction/integerZoom.ts
1551
+ function ar(e, t, n) {
1552
+ if (!n.integerZoom) return W().domain(e).ticks(t);
1553
+ let r = n.timeUnit === "s" ? 1 : 1e3;
1554
+ return W().domain(e.map((e) => e * r)).ticks(t).filter(Number.isInteger).map((e) => e / r);
1555
+ }
1556
+ function or(e) {
1557
+ return String(Math.round(e));
1558
+ }
1559
+ function sr(e) {
1560
+ let t = Math.round(e);
1561
+ return Math.abs(e - t) <= 2 ** -52 * Math.max(1, Math.abs(e)) * 16 ? t : e;
1562
+ }
1563
+ function cr(e, t) {
1564
+ if (!t.integerZoom) return e;
1565
+ let n = t.timeUnit === "s" ? 1 : 1e3, r = sr(Math.min(e[0], e[1]) * n), i = sr(Math.max(e[0], e[1]) * n);
1566
+ if (!Number.isSafeInteger(Math.floor(r)) || !Number.isSafeInteger(Math.ceil(i))) return e;
1567
+ let a = Math.floor(r);
1568
+ return [a / n, Math.max(a + 1, Math.ceil(i)) / n];
1569
+ }
1570
+ function lr(e, t) {
1571
+ return cr(e, t);
1572
+ }
1573
+ function ur(e, t) {
1574
+ if (!t.integerZoom) return e;
1575
+ let n = t.timeUnit === "s" ? 1 : 1e3;
1576
+ return [Math.round(e[0] * n) / n, Math.round(e[1] * n) / n];
1577
+ }
1578
+ //#endregion
1520
1579
  //#region src/components/core/trackLayoutBuilder.ts
1521
- function $n(e, t, n) {
1580
+ function dr(e, t, n) {
1522
1581
  let r = n.xDomainStrategy ?? { type: "data" }, i = n.initialXDomains?.[e.id] ?? n.initialXDomains?.[t] ?? n.initialXDomain;
1523
- return i ? Qn(i, r, !0) : Qn(e.xDomain, r);
1582
+ return cr(i ? Qn(i, r, !0) : Qn(e.xDomain, r), n);
1524
1583
  }
1525
- function er(e) {
1526
- let t = e.cells.map((e) => ({
1527
- ...e,
1528
- hasSeries: !!e.series
1584
+ function fr(e) {
1585
+ let t = e.cells.map((t) => ({
1586
+ ...t,
1587
+ hasSeries: e.useNonEmptyBottomTracks ? !!t.series?.series.length : !!t.series
1529
1588
  })), n = qn(t, e.grid.columnCount), r = t.flatMap((t, r) => {
1530
1589
  let i = !t.series || t.series.series.length === 0;
1531
1590
  if (!t.series && (e.displayMode !== "compact" || !e.showCompactEmptyTracks)) return [];
@@ -1535,14 +1594,16 @@ function er(e) {
1535
1594
  visibleSeries: [],
1536
1595
  xDomain: [0, 1],
1537
1596
  yDomain: [0, 1]
1538
- }, o = !i && a.visibleSeries.length > 0, s = a.visibleSeries[0] ?? a.series[0] ?? null, c = e.displayMode === "independent" ? W($n(a, s?.id ?? a.id, e), [0, t.width]) : W(e.sharedZoomDomain, [0, t.width]), l = (e.displayMode === "independent" ? e.independentTransforms[r] ?? J : J).rescaleX(c), u = pr(a, e.overlayMode, e.fixedYDomain, e.fixedYDomains, e.yDomains), d = {
1597
+ }, o = !i && a.visibleSeries.length > 0, s = a.visibleSeries[0] ?? a.series[0] ?? null, c = e.displayMode === "independent" ? W(dr(a, s?.id ?? a.id, e), [0, t.width]) : W(e.sharedZoomDomain, [0, t.width]), l = (e.displayMode === "independent" ? e.independentTransforms[r] ?? q : q).rescaleX(c);
1598
+ l.domain(lr(l.domain(), e));
1599
+ let u = Tr(a, e.overlayMode, e.fixedYDomain, e.fixedYDomains, e.yDomains, e.yAxisUpperPaddingRatio), d = {
1539
1600
  left: 0,
1540
1601
  right: 0
1541
1602
  }, f = {
1542
1603
  left: 0,
1543
1604
  right: 0
1544
1605
  }, p = u.map((n) => {
1545
- let r = d[n.side]++, i = or(t.plotHeight, e.yAxisSplitNumber), a = sr(n.domain, i, e.yAxisNice !== !1), o = W(a.domain, [t.plotHeight, 0]), s = a.values, c = e.displayMode !== "compact" || t.row === 0 ? s : s.slice(0, -1), { tickTextWidth: l } = mr(o.domain(), !1, c, n.seriesList[0]?.unit, i), u = l + 7 + 0 + 20 + 4, p = e.yAxisSlots?.find((e) => e.side === n.side && e.sideIndex === r), m = p ? (n.side === "left" ? 0 : t.width) + p.axisOffset : n.side === "left" ? -f.left : t.width + f.right, h = l + 7 + 0 + 20 / 2, g = (p ? (n.side === "left" ? 0 : t.width) + p.labelOffset : m + (n.side === "left" ? -h : h)) - (n.side === "right" ? 10 : 0);
1606
+ let r = d[n.side]++, i = vr(t.plotHeight, e.yAxisSplitNumber), a = yr(n.domain, i, e.yAxisNice !== !1), o = W(a.domain, [t.plotHeight, 0]), s = a.values, c = e.displayMode !== "compact" || t.row === 0 ? s : s.slice(0, -1), { tickTextWidth: l } = Er(o.domain(), !1, c, e.showAxisUnits === !1 ? void 0 : n.seriesList[0]?.unit, i), u = l + 7 + 0 + 20 + 4, p = e.yAxisSlots?.find((e) => e.side === n.side && e.sideIndex === r), m = p ? (n.side === "left" ? 0 : t.width) + p.axisOffset : n.side === "left" ? -f.left : t.width + f.right, h = l + 7 + 0 + 20 / 2, g = (p ? (n.side === "left" ? 0 : t.width) + p.labelOffset : m + (n.side === "left" ? -h : h)) - (n.side === "right" && !e.compactYAxisLayout ? 10 : 0);
1546
1607
  return p || (f[n.side] += u), {
1547
1608
  index: n.index,
1548
1609
  side: n.side,
@@ -1556,14 +1617,14 @@ function er(e) {
1556
1617
  };
1557
1618
  }), m = W(a.yDomain, [t.plotHeight, 0]);
1558
1619
  e.yAxisNice !== !1 && m.nice();
1559
- let h = p[0]?.scale ?? m, g = l.ticks(Math.max(2, Math.floor(t.width / 100))), _ = p[0]?.majorTicks ?? [], v = p[0]?.tickValues ?? [], y = l.domain(), b = {
1560
- start: Mt(y[0], y, e.timeUnit, "start", e.xAxisLabelFormatter),
1561
- end: Mt(y[1], y, e.timeUnit, "end", e.xAxisLabelFormatter)
1562
- }, x = b.start.length * 7 + 10, S = b.end.length * 7 + 10, C = g.filter((e) => {
1620
+ let h = p[0]?.scale ?? m, g = ar(l.domain(), Math.max(2, Math.floor(t.width / 100)), e), _ = e.xAxisLabelFormatter ?? (e.integerZoom ? or : void 0), v = p[0]?.majorTicks ?? [], y = p[0]?.tickValues ?? [], b = l.domain(), x = {
1621
+ start: Mt(b[0], b, e.timeUnit, "start", _),
1622
+ end: Mt(b[1], b, e.timeUnit, "end", _)
1623
+ }, S = x.start.length * 7 + 10, C = x.end.length * 7 + 10, w = g.filter((e) => {
1563
1624
  let n = l(e);
1564
- return n > x && n < t.width - S;
1565
- }), w = a.visibleSeries.map((n) => {
1566
- let r = p.find((e) => e.seriesList.some((e) => e.id === n.id)), a = r?.scale ?? h, o = Rn(n.points, y, t.width, e.rendering, {
1625
+ return n > S && n < t.width - C;
1626
+ }), T = a.visibleSeries.map((n) => {
1627
+ let r = p.find((e) => e.seriesList.some((e) => e.id === n.id)), a = r?.scale ?? h, o = Rn(n.points, b, t.width, e.rendering, {
1567
1628
  lineVisible: !i && n.lineType !== "none",
1568
1629
  linePointOverride: e.linePointOverrides?.[n.id],
1569
1630
  pointVisible: n.pointType !== "none",
@@ -1598,42 +1659,31 @@ function er(e) {
1598
1659
  yScale: h,
1599
1660
  yAxes: p,
1600
1661
  xMajorTicks: g,
1601
- xMinorTicks: vt(g, 3, y),
1602
- yMajorTicks: _,
1662
+ xAxisLabelFormatter: _,
1663
+ xMinorTicks: vt(g, 3, b),
1664
+ yMajorTicks: v,
1603
1665
  yMinorTicks: p[0]?.minorTicks ?? [],
1604
- yAxisTickValues: v,
1605
- xAxisTickValues: C,
1606
- endpointLabels: b,
1607
- path: w[0]?.path ?? null,
1608
- seriesPaths: w,
1666
+ yAxisTickValues: y,
1667
+ xAxisTickValues: w,
1668
+ endpointLabels: x,
1669
+ path: T[0]?.path ?? null,
1670
+ seriesPaths: T,
1609
1671
  gridLines: e.grid.trackLines[a.id] ?? {
1610
1672
  horizontal: !0,
1611
1673
  vertical: !0
1612
1674
  },
1613
1675
  showXAxis: (i || o) && (e.displayMode === "independent" || (e.displayMode === "compact" ? t.isLastRow ?? t.row === e.grid.rowCount - 1 : n.has(t.slotIndex)))
1614
1676
  };
1615
- }), i = /* @__PURE__ */ new Map();
1616
- for (let t of r) {
1617
- let n = 0;
1618
- for (let r of t.yAxes) {
1619
- if (r.side !== "left") continue;
1620
- let a = `${t.column}:${n++}`, o = r.seriesList[0], s = (o?.name.trim() || e.yLabel || "").length * 8 + 6, c = r.tickValues.filter((e) => Math.abs(r.scale(e) - t.height / 2) <= s), l = Math.max(7, ...c.map((e) => cr(e, r.scale.domain(), r.tickValues, o?.unit).length * 7)) + 7 + 20 / 2;
1621
- i.set(a, Math.max(i.get(a) ?? 0, l));
1622
- }
1623
- }
1624
- for (let e of r) {
1625
- let t = 0;
1626
- for (let n of e.yAxes) n.side === "left" && (n.labelX = n.x - i.get(`${e.column}:${t++}`));
1627
- }
1628
- return r;
1677
+ });
1678
+ return e.compactYAxisLayout || ir(r, e.yLabel), r;
1629
1679
  }
1630
1680
  //#endregion
1631
1681
  //#region src/components/core/layout.ts
1632
- var tr = 7, nr = 7, rr = 4, ir = 0, ar = 20;
1633
- function or(e, t) {
1682
+ var pr = 7, mr = 7, hr = 4, gr = 0, _r = 20;
1683
+ function vr(e, t) {
1634
1684
  return typeof t == "number" && Number.isFinite(t) ? Math.max(2, Math.floor(t)) : 5;
1635
1685
  }
1636
- function sr(e, t = 5, n = !0) {
1686
+ function yr(e, t = 5, n = !0) {
1637
1687
  let r = typeof t == "number" && Number.isFinite(t) ? Math.max(2, Math.floor(t)) : 5, i = W(e, [1, 0]);
1638
1688
  n && i.nice(Math.max(1, r - 1));
1639
1689
  let a = i.domain(), [o, s] = a;
@@ -1642,7 +1692,7 @@ function sr(e, t = 5, n = !0) {
1642
1692
  values: Array.from({ length: r }, (e, t) => o + (s - o) * t / (r - 1))
1643
1693
  };
1644
1694
  }
1645
- function cr(e, t, n, r) {
1695
+ function br(e, t, n, r) {
1646
1696
  return Ot(e, {
1647
1697
  axisMin: t[0],
1648
1698
  axisMax: t[1],
@@ -1650,7 +1700,7 @@ function cr(e, t, n, r) {
1650
1700
  unit: r
1651
1701
  });
1652
1702
  }
1653
- function lr(e) {
1703
+ function xr(e) {
1654
1704
  return e >= 4 ? [
1655
1705
  "left",
1656
1706
  "left",
@@ -1662,13 +1712,13 @@ function lr(e) {
1662
1712
  "right"
1663
1713
  ] : e === 2 ? ["left", "right"] : ["left"];
1664
1714
  }
1665
- var ur = /* @__PURE__ */ new WeakMap();
1666
- function dr(e, t) {
1667
- let n = ur.get(e);
1668
- n || (n = /* @__PURE__ */ new Map(), ur.set(e, n));
1715
+ var Sr = /* @__PURE__ */ new WeakMap();
1716
+ function Cr(e, t) {
1717
+ let n = Sr.get(e);
1718
+ n || (n = /* @__PURE__ */ new Map(), Sr.set(e, n));
1669
1719
  let r = n.get(t);
1670
1720
  if (r) return r;
1671
- let i = t === "multi-axis" ? Math.min(e.visibleSeries.length, 4) : Math.min(e.visibleSeries.length, 1), a = lr(i), o = Array.from({ length: i }, (e, t) => ({
1721
+ let i = t === "multi-axis" ? Math.min(e.visibleSeries.length, 4) : Math.min(e.visibleSeries.length, 1), a = xr(i), o = Array.from({ length: i }, (e, t) => ({
1672
1722
  index: t,
1673
1723
  side: a[t],
1674
1724
  seriesList: [],
@@ -1685,9 +1735,9 @@ function dr(e, t) {
1685
1735
  }
1686
1736
  }), n.set(t, o), o;
1687
1737
  }
1688
- function fr(e, t, n, r) {
1738
+ function wr(e, t, n, r) {
1689
1739
  let i = qt(e, r);
1690
- return dr(e, t).map((e) => {
1740
+ return Cr(e, t).map((e) => {
1691
1741
  if (i) return {
1692
1742
  ...e,
1693
1743
  domain: i,
@@ -1701,53 +1751,56 @@ function fr(e, t, n, r) {
1701
1751
  } : e;
1702
1752
  });
1703
1753
  }
1704
- function pr(e, t, n, r, i) {
1705
- let a = i?.[e.id];
1706
- return fr(e, t, n, r).map((e) => !e.fixed && a ? {
1754
+ function Tr(e, t, n, r, i, a = 0) {
1755
+ let o = i?.[e.id];
1756
+ return wr(e, t, n, r).map((e) => !e.fixed && o ? {
1707
1757
  ...e,
1708
- domain: a
1758
+ domain: o
1759
+ } : !e.fixed && Number.isFinite(a) && a > 0 ? {
1760
+ ...e,
1761
+ domain: [e.domain[0], e.domain[1] + (e.domain[1] - e.domain[0]) * a]
1709
1762
  } : e);
1710
1763
  }
1711
- function mr(e, t = !0, n, r, i = 5, a = !1) {
1764
+ function Er(e, t = !0, n, r, i = 5, a = !1) {
1712
1765
  let o = n ? {
1713
1766
  domain: e,
1714
1767
  values: n
1715
- } : sr(e, i, t), s = [o.values];
1716
- return a && o.values.length > 1 && s.push(o.values.slice(0, -1)), { tickTextWidth: Math.max(1, ...s.flatMap((e) => e.map((t) => cr(t, o.domain, e, r).length))) * tr };
1768
+ } : yr(e, i, t), s = [o.values];
1769
+ return a && o.values.length > 1 && s.push(o.values.slice(0, -1)), { tickTextWidth: Math.max(1, ...s.flatMap((e) => e.map((t) => br(t, o.domain, e, r).length))) * pr };
1717
1770
  }
1718
- function hr(e, t, n, r, i, a = !0, o = !1, s) {
1719
- let c = /* @__PURE__ */ new Map();
1771
+ function Dr(e, t, n, r, i, a = !0, o = !1, s, c = 0, l = !0) {
1772
+ let u = /* @__PURE__ */ new Map();
1720
1773
  e.forEach((e) => {
1721
- let l = {
1774
+ let d = {
1722
1775
  left: 0,
1723
1776
  right: 0
1724
1777
  };
1725
- pr(e, t, n, r, s).forEach((e) => {
1726
- let t = l[e.side]++, n = `${e.side}:${t}`, r = mr(e.domain, a, void 0, e.seriesList[0]?.unit, i, o).tickTextWidth;
1727
- c.set(n, Math.max(c.get(n) ?? tr, r));
1778
+ Tr(e, t, n, r, s, c).forEach((e) => {
1779
+ let t = d[e.side]++, n = `${e.side}:${t}`, r = Er(e.domain, a, void 0, l ? e.seriesList[0]?.unit : void 0, i, o).tickTextWidth;
1780
+ u.set(n, Math.max(u.get(n) ?? pr, r));
1728
1781
  });
1729
1782
  });
1730
- let l = [], u = {
1783
+ let d = [], f = {
1731
1784
  left: 0,
1732
1785
  right: 0
1733
1786
  };
1734
1787
  return ["left", "right"].forEach((e) => {
1735
- Array.from(c.keys()).filter((t) => t.startsWith(`${e}:`)).map((t) => Number(t.slice(e.length + 1))).sort((e, t) => e - t).forEach((t) => {
1736
- let n = c.get(`${e}:${t}`) ?? tr, r = e === "left" && u.left > 0 ? -u.left : u[e], i = r + (n + nr + ir + ar / 2) * (e === "left" ? -1 : 1), a = n + nr + ir + ar + rr;
1737
- l.push({
1788
+ Array.from(u.keys()).filter((t) => t.startsWith(`${e}:`)).map((t) => Number(t.slice(e.length + 1))).sort((e, t) => e - t).forEach((t) => {
1789
+ let n = u.get(`${e}:${t}`) ?? pr, r = e === "left" && f.left > 0 ? -f.left : f[e], i = r + (n + mr + gr + _r / 2) * (e === "left" ? -1 : 1), a = n + mr + gr + _r + hr;
1790
+ d.push({
1738
1791
  side: e,
1739
1792
  sideIndex: t,
1740
1793
  axisOffset: r,
1741
1794
  labelOffset: i,
1742
1795
  clearance: a
1743
- }), u[e] += a;
1796
+ }), f[e] += a;
1744
1797
  });
1745
1798
  }), {
1746
- slots: l,
1747
- clearance: u
1799
+ slots: d,
1800
+ clearance: f
1748
1801
  };
1749
1802
  }
1750
- function gr(e, t, n) {
1803
+ function Or(e, t, n) {
1751
1804
  let r = (e) => {
1752
1805
  let r = t < e.left ? e.left - t : t > e.left + e.width ? t - e.left - e.width : 0;
1753
1806
  return n < e.top ? e.top - n : n > e.top + e.height ? n - (e.top + e.height) : r;
@@ -1766,11 +1819,11 @@ function gr(e, t, n) {
1766
1819
  }
1767
1820
  //#endregion
1768
1821
  //#region src/components/annotation/useWaveformChartAnnotations.ts
1769
- var _r = 0;
1770
- function vr() {
1771
- return _r += 1, typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `annotation-${Date.now()}-${_r}`;
1822
+ var kr = 0;
1823
+ function Ar() {
1824
+ return kr += 1, typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `annotation-${Date.now()}-${kr}`;
1772
1825
  }
1773
- function yr(e) {
1826
+ function jr(e) {
1774
1827
  let { props: t, emit: n, container: r, chartSeries: i, hiddenSeriesIdSet: a, internalHiddenSeriesIds: o, annotationInteraction: s, editorSeriesOptions: c, trackLayouts: l, annotationLayoutsForTrack: u, resolveSeriesYScale: d, chartWidth: f, chartHeight: p, innerWidth: m, resolvedChartLeftMargin: h, titleAreaHeight: g, chartTopMargin: _, activeInteractionMode: v, isPresentationMode: y } = e, b = x("");
1775
1828
  function S(e) {
1776
1829
  if (!i.value.some((t) => t.id === e)) return;
@@ -1803,7 +1856,7 @@ function yr(e) {
1803
1856
  };
1804
1857
  }
1805
1858
  function T(e, t, n) {
1806
- b.value = "", s.openCreate(e, vr, t), c.value = n;
1859
+ b.value = "", s.openCreate(e, Ar, t), c.value = n;
1807
1860
  let r = s.editorDraft.value, i = l.value.find((t) => t.index === e.trackIndex)?.seriesList.find((t) => t.id === e.seriesId);
1808
1861
  r?.mode === "add" && (r.annotation.style = {
1809
1862
  borderColor: i?.color || "#1677ff",
@@ -1863,7 +1916,7 @@ function yr(e) {
1863
1916
  let e = l.value[n];
1864
1917
  return e?.hasVisibleSeries ? e : void 0;
1865
1918
  }
1866
- return gr(l.value.filter((e) => e.hasVisibleSeries), e, t);
1919
+ return Or(l.value.filter((e) => e.hasVisibleSeries), e, t);
1867
1920
  }
1868
1921
  function A(e, t) {
1869
1922
  let n = e.currentTarget;
@@ -1954,7 +2007,7 @@ function yr(e) {
1954
2007
  }
1955
2008
  //#endregion
1956
2009
  //#region src/components/interaction/useWaveformHover.ts
1957
- function br(e) {
2010
+ function Mr(e) {
1958
2011
  let { emit: t, hoverState: n, suppressHoverUntilMove: r, hoverThrottle: i, selection: a, trackLayouts: o, innerWidth: s, resolvedChartLeftMargin: c, titleAreaHeight: l, chartTopMargin: u, sharedOverlayElement: d, isPresentationMode: f, updateViewportDrag: p, resolveTrackAtPointer: m } = e, h = () => i.cancel(), g = (e) => i.schedule(e), _ = (e) => n.points.length === e.length && e.every((e, t) => {
1959
2012
  let r = n.points[t];
1960
2013
  return r?.id === e.id && r.trackIndex === e.trackIndex && r.point === e.point;
@@ -2039,14 +2092,14 @@ function br(e) {
2039
2092
  }
2040
2093
  //#endregion
2041
2094
  //#region src/components/interaction/pointerCapture.ts
2042
- function xr(e, t) {
2095
+ function Nr(e, t) {
2043
2096
  try {
2044
2097
  e?.releasePointerCapture?.(t);
2045
2098
  } catch {}
2046
2099
  }
2047
2100
  //#endregion
2048
2101
  //#region src/components/interaction/viewportInteractionState.ts
2049
- function Sr(e) {
2102
+ function Pr(e) {
2050
2103
  return {
2051
2104
  ...e,
2052
2105
  currentX: e.startX,
@@ -2055,37 +2108,37 @@ function Sr(e) {
2055
2108
  yDomains: Object.fromEntries(Object.entries(e.yDomains).map(([e, t]) => [e, [...t]]))
2056
2109
  };
2057
2110
  }
2058
- function Cr(e, t) {
2111
+ function Fr(e, t) {
2059
2112
  return {
2060
2113
  ...e,
2061
2114
  ...t
2062
2115
  };
2063
2116
  }
2064
- function wr(e) {
2117
+ function Ir(e) {
2065
2118
  return {
2066
2119
  state: e,
2067
2120
  accepted: !1,
2068
2121
  completed: null
2069
2122
  };
2070
2123
  }
2071
- function Tr(e, t) {
2124
+ function Lr(e, t) {
2072
2125
  switch (t.type) {
2073
- case "begin": return e ? wr(e) : {
2074
- state: Sr(t.gesture),
2126
+ case "begin": return e ? Ir(e) : {
2127
+ state: Pr(t.gesture),
2075
2128
  accepted: !0,
2076
2129
  completed: null
2077
2130
  };
2078
- case "move": return !e || e.pointerId !== t.pointerId ? wr(e) : {
2079
- state: Cr(e, t.position),
2131
+ case "move": return !e || e.pointerId !== t.pointerId ? Ir(e) : {
2132
+ state: Fr(e, t.position),
2080
2133
  accepted: !0,
2081
2134
  completed: null
2082
2135
  };
2083
- case "finish": return !e || e.pointerId !== t.pointerId ? wr(e) : {
2136
+ case "finish": return !e || e.pointerId !== t.pointerId ? Ir(e) : {
2084
2137
  state: null,
2085
2138
  accepted: !0,
2086
- completed: Cr(e, t.position)
2139
+ completed: Fr(e, t.position)
2087
2140
  };
2088
- case "cancel": return !e || t.pointerId !== void 0 && e.pointerId !== t.pointerId ? wr(e) : {
2141
+ case "cancel": return !e || t.pointerId !== void 0 && e.pointerId !== t.pointerId ? Ir(e) : {
2089
2142
  state: null,
2090
2143
  accepted: !0,
2091
2144
  completed: null
@@ -2099,15 +2152,15 @@ function Tr(e, t) {
2099
2152
  }
2100
2153
  //#endregion
2101
2154
  //#region src/components/interaction/zoomConstraints.ts
2102
- var Er = /* @__PURE__ */ new WeakMap();
2103
- function Dr(e) {
2155
+ var Rr = /* @__PURE__ */ new WeakMap();
2156
+ function zr(e) {
2104
2157
  return e[0] <= e[1] ? [...e] : [e[1], e[0]];
2105
2158
  }
2106
- function Or(e) {
2159
+ function Br(e) {
2107
2160
  return Number.isFinite(e) && (e ?? 0) > 0 ? Math.ceil(e) : 0;
2108
2161
  }
2109
- function kr(e, t) {
2110
- let n = `${t[0]}\u0000${t[1]}`, r = Er.get(e)?.get(n);
2162
+ function Vr(e, t) {
2163
+ let n = `${t[0]}\u0000${t[1]}`, r = Rr.get(e)?.get(n);
2111
2164
  if (r) return r;
2112
2165
  let i = /* @__PURE__ */ new Set();
2113
2166
  for (let n of e) {
@@ -2117,14 +2170,14 @@ function kr(e, t) {
2117
2170
  r.x >= t[0] && r.x <= t[1] && i.add(r.x);
2118
2171
  }
2119
2172
  }
2120
- let a = Array.from(i).sort((e, t) => e - t), o = Er.get(e) ?? /* @__PURE__ */ new Map();
2121
- return o.set(n, a), Er.set(e, o), a;
2173
+ let a = Array.from(i).sort((e, t) => e - t), o = Rr.get(e) ?? /* @__PURE__ */ new Map();
2174
+ return o.set(n, a), Rr.set(e, o), a;
2122
2175
  }
2123
- function Ar(e, t, n) {
2176
+ function Hr(e, t, n) {
2124
2177
  if (n <= 1) return 0;
2125
2178
  let r = 0;
2126
2179
  for (let i of e) {
2127
- let e = kr(i, t);
2180
+ let e = Vr(i, t);
2128
2181
  if (e.length < n) return t[1] - t[0];
2129
2182
  let a = Infinity;
2130
2183
  for (let t = 0; t + n <= e.length; t += 1) a = Math.min(a, e[t + n - 1] - e[t]);
@@ -2133,17 +2186,17 @@ function Ar(e, t, n) {
2133
2186
  }
2134
2187
  return r;
2135
2188
  }
2136
- function jr(e, t, n) {
2137
- let r = Dr(e), i = r[1] - r[0];
2189
+ function Ur(e, t, n) {
2190
+ let r = cr(zr(e), n), i = r[1] - r[0];
2138
2191
  if (!Number.isFinite(i) || i <= 0) return 0;
2139
- let a = Number.isFinite(n.minZoomSpan) && (n.minZoomSpan ?? 0) > 0 ? Math.min(i, n.minZoomSpan) : 0, o = Or(n.minVisiblePoints), s = Ar(t, r, o), c = Number(n.maxZoomScale), l = Number.isFinite(c) && c >= Bt.MIN_SCALE ? i / c : n.maxZoomScale !== null && a === 0 && o === 0 ? i / Bt.DEFAULT_MAX_SCALE : 0;
2140
- return Math.max(a, s, l);
2192
+ let a = Number.isFinite(n.minZoomSpan) && (n.minZoomSpan ?? 0) > 0 ? Math.min(i, n.minZoomSpan) : 0, o = Br(n.minVisiblePoints), s = Hr(t, r, o), c = Number(n.maxZoomScale), l = Number.isFinite(c) && c >= Bt.MIN_SCALE ? i / c : n.maxZoomScale !== null && a === 0 && o === 0 ? i / Bt.DEFAULT_MAX_SCALE : 0, u = n.integerZoom ? n.timeUnit === "s" ? 1 : .001 : 0;
2193
+ return Math.max(a, s, l, u);
2141
2194
  }
2142
- function Mr(e, t, n, r) {
2195
+ function Wr(e, t, n, r) {
2143
2196
  if (r <= 0) return e;
2144
2197
  let i = 2 ** -52 * Math.max(1, Math.abs(t[0]), Math.abs(t[1])) * 16, a = e;
2145
2198
  for (let e of n) {
2146
- let n = kr(e, t);
2199
+ let n = Vr(e, t);
2147
2200
  if (n.length < r) return [...t];
2148
2201
  if (n.filter((e) => e >= a[0] && e <= a[1]).length >= r) continue;
2149
2202
  let o, s = Infinity, c = Infinity, l = (a[0] + a[1]) / 2;
@@ -2155,21 +2208,44 @@ function Mr(e, t, n, r) {
2155
2208
  }
2156
2209
  return a;
2157
2210
  }
2158
- function Nr(e, t, n, r) {
2159
- let i = Dr(t), a = i[1] - i[0];
2211
+ function Gr(e, t, n, r) {
2212
+ let i = cr(zr(t), r), a = i[1] - i[0];
2160
2213
  if (!Number.isFinite(a) || a <= 0 || Math.abs(e[1] - e[0]) >= a * .999999999999) return i;
2161
- let o = Mr([Math.max(i[0], Math.min(e[0], e[1])), Math.min(i[1], Math.max(e[0], e[1]))], i, n, Or(r.minVisiblePoints)), s = jr(i, n, r), c = Math.max(s, Math.min(a, o[1] - o[0])), l = (o[0] + o[1]) / 2, u = Math.max(i[0], Math.min(l - c / 2, i[1] - c));
2162
- return [u, u + c];
2214
+ let o = Wr([Math.max(i[0], Math.min(e[0], e[1])), Math.min(i[1], Math.max(e[0], e[1]))], i, n, Br(r.minVisiblePoints)), s = Ur(i, n, r), c = Math.max(s, Math.min(a, o[1] - o[0])), l = (o[0] + o[1]) / 2, u = Math.max(i[0], Math.min(l - c / 2, i[1] - c));
2215
+ return cr([u, u + c], r);
2163
2216
  }
2164
- function Pr(e, t, n) {
2217
+ function Kr(e, t, n) {
2165
2218
  let r = t[1] - t[0], i = e[1] - e[0];
2166
- if (!Number.isFinite(r) || !Number.isFinite(i) || r <= 0 || i <= 0) return J;
2219
+ if (!Number.isFinite(r) || !Number.isFinite(i) || r <= 0 || i <= 0) return q;
2167
2220
  let a = r / i, o = W(t, [0, n]);
2168
- return J.translate(-a * o(e[0]), 0).scale(a);
2221
+ return q.translate(-a * o(e[0]), 0).scale(a);
2222
+ }
2223
+ //#endregion
2224
+ //#region src/components/interaction/remoteViewport.ts
2225
+ function qr(e, t) {
2226
+ let n = e[1] - e[0];
2227
+ return n >= t[1] - t[0] ? [...t] : e[0] < t[0] ? [t[0], t[0] + n] : e[1] > t[1] ? [t[1] - n, t[1]] : e;
2228
+ }
2229
+ function Jr(e) {
2230
+ let t = e.panXDomain;
2231
+ return t && t.every(Number.isFinite) && t[0] < t[1] ? t : void 0;
2232
+ }
2233
+ function Yr(e, t, n, r) {
2234
+ let i = Jr(r);
2235
+ return i ? qr(e, i) : Gr(e, t, n, r);
2236
+ }
2237
+ function Xr(e, t, n, r) {
2238
+ let i = Jr(r);
2239
+ return i ? Gr(e, i, [], {
2240
+ ...r,
2241
+ minVisiblePoints: 0,
2242
+ maxZoomScale: null,
2243
+ minZoomSpan: Ur(t, n, r)
2244
+ }) : Gr(e, t, n, r);
2169
2245
  }
2170
2246
  //#endregion
2171
2247
  //#region src/components/interaction/viewportDomain.ts
2172
- function Fr(e) {
2248
+ function Zr(e) {
2173
2249
  return (t, n) => {
2174
2250
  if (!(!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || t[0] === t[1])) {
2175
2251
  if (e.cancelPendingZoom(), e.cancelViewportDrag(), e.props.displayMode === "independent") {
@@ -2177,27 +2253,47 @@ function Fr(e) {
2177
2253
  r.forEach((n) => {
2178
2254
  let r = e.trackLayouts.value.find((e) => e.index === n);
2179
2255
  if (!r) return;
2180
- let a = e.resolveInitialTrackDomain(r), o = Nr(t, a, [r.seriesList], e.props);
2181
- i[n] = Pr(o, a, r.width);
2256
+ let a = e.resolveInitialTrackDomain(r), o = Xr(t, a, [r.seriesList], e.props);
2257
+ i[n] = Kr(o, a, r.width);
2182
2258
  }), e.independentTransforms.value = i;
2183
2259
  } else {
2184
- let n = e.initialXDomain.value, r = Nr(t, n, e.trackLayouts.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), e.props);
2185
- e.sharedTransform.value = Pr(r, n, e.innerWidth.value);
2260
+ let n = e.initialXDomain.value, r = Xr(t, n, e.trackLayouts.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), e.props);
2261
+ e.sharedTransform.value = Kr(r, n, e.innerWidth.value);
2186
2262
  }
2187
2263
  e.clearHover(), e.editorSeriesOptions.value = [], f(e.configureZoom);
2188
2264
  }
2189
2265
  };
2190
2266
  }
2191
2267
  //#endregion
2268
+ //#region src/components/interaction/viewportPan.ts
2269
+ function Qr(e) {
2270
+ let { props: t, emit: n, resolveInitialTrackDomain: r, initialXDomain: i, independentTransforms: a, sharedTransform: o, innerWidth: s, trackLayouts: c, chartTracks: l, independentYDomains: u, sharedYDomains: d } = e;
2271
+ return (e, f) => {
2272
+ let p = f.width || 1, m = f.height || 1, h = e.currentX - e.startX, g = e.currentY - e.startY, _ = e.xDomain[1] - e.xDomain[0], v = e.independent ? r(f) : i.value, y = Jr(t) ?? v, b = qr(ur(qr([e.xDomain[0] - h / p * _, e.xDomain[1] - h / p * _], y), t), y);
2273
+ if (e.independent) {
2274
+ let e = [...a.value];
2275
+ e[f.index] = Kr(b, v, p), a.value = e;
2276
+ } else o.value = Kr(b, v, s.value);
2277
+ if (Jr(t)) return n("zoom-change", b), b;
2278
+ let x = e.independent ? [f] : c.value.filter((e) => e.hasVisibleSeries), S = { ...u.value }, C = { ...d.value };
2279
+ return x.forEach((n) => {
2280
+ let r = l.value.find((e) => e.id === n.id);
2281
+ if (r && Yt(r, t.yDomain, t.yDomains)) return;
2282
+ let i = n.series?.trackId ?? n.series?.id ?? n.id, a = e.yDomains[i] ?? n.yScale.domain(), o = r?.yDomain ?? a, s = a[1] - a[0], c = qr([a[0] + g / m * s, a[1] + g / m * s], o);
2283
+ e.independent ? S[n.index] = c : C[i] = c;
2284
+ }), e.independent ? u.value = S : d.value = C, n("zoom-change", b), b;
2285
+ };
2286
+ }
2287
+ //#endregion
2192
2288
  //#region src/components/interaction/zoomEventPayload.ts
2193
- function Ir(e) {
2289
+ function $r(e) {
2194
2290
  return [...e].sort().join("\0");
2195
2291
  }
2196
- function Lr(e, t) {
2197
- let n = Ir(t);
2198
- return e.find((e) => Ir(e.seriesList.map((e) => e.id)) === n);
2292
+ function ei(e, t) {
2293
+ let n = $r(t);
2294
+ return e.find((e) => $r(e.seriesList.map((e) => e.id)) === n);
2199
2295
  }
2200
- function Rr(e, t, n, r) {
2296
+ function ti(e, t, n, r) {
2201
2297
  e("zoom-intent", r ? {
2202
2298
  start: t[0],
2203
2299
  end: t[1],
@@ -2210,9 +2306,9 @@ function Rr(e, t, n, r) {
2210
2306
  gesture: "box"
2211
2307
  });
2212
2308
  }
2213
- function zr(e, t, n) {
2309
+ function ni(e, t, n) {
2214
2310
  for (let r of n) {
2215
- let n = Lr(t, r);
2311
+ let n = ei(t, r);
2216
2312
  if (!n) continue;
2217
2313
  let i = n.xScale.domain(), a = n.yScale.domain();
2218
2314
  e("zoom-end", {
@@ -2226,7 +2322,7 @@ function zr(e, t, n) {
2226
2322
  });
2227
2323
  }
2228
2324
  }
2229
- function Br(e, t, n) {
2325
+ function ri(e, t, n) {
2230
2326
  let r = n.filter((e) => e.hasVisibleSeries);
2231
2327
  if (r.length === 1) {
2232
2328
  let n = r[0]?.yScale.domain();
@@ -2248,13 +2344,13 @@ function Br(e, t, n) {
2248
2344
  }
2249
2345
  //#endregion
2250
2346
  //#region src/components/interaction/useWaveformViewport.ts
2251
- function Vr(e) {
2347
+ function ii(e) {
2252
2348
  let { props: n, emit: r, selection: i, spacePressed: a, trackLayouts: o, chartTracks: s, initialXDomain: c, innerWidth: l, innerHeight: u, sharedOverlayElement: d, sharedTransform: p, independentTransforms: m, sharedYDomains: h, independentYDomains: g, isZoomMode: _, isPresentationMode: v, editorSeriesOptions: y, resolveInitialTrackDomain: b, canZoomTrack: x, canZoomSharedTracks: S, configureZoom: C, cancelPendingZoom: T, clearHover: E, resolveTrackAtPointer: D } = e, O = w(), k = (e, t) => {
2253
2349
  let n = O.value, r = t?.currentTarget;
2254
- xr(n, e), r && r !== n && xr(r, e);
2350
+ Nr(n, e), r && r !== n && Nr(r, e);
2255
2351
  }, A = (e, t) => {
2256
2352
  let n = i.value;
2257
- !n || n.pointerId !== e || (k(e, t), i.value = Tr(i.value, {
2353
+ !n || n.pointerId !== e || (k(e, t), i.value = Lr(i.value, {
2258
2354
  type: "cancel",
2259
2355
  pointerId: e
2260
2356
  }).state, O.value = void 0);
@@ -2268,16 +2364,13 @@ function Vr(e) {
2268
2364
  width: Math.abs(e.currentX - e.startX),
2269
2365
  height: Math.abs(e.currentY - e.startY)
2270
2366
  };
2271
- }), M = (e, t) => {
2272
- let n = e[1] - e[0];
2273
- return n >= t[1] - t[0] ? [...t] : e[0] < t[0] ? [t[0], t[0] + n] : e[1] > t[1] ? [t[1] - n, t[1]] : e;
2274
- }, N = () => Object.fromEntries(o.value.filter((e) => e.hasVisibleSeries).map((e) => [e.series?.trackId ?? e.series?.id ?? e.id, e.yScale.domain()])), P = (e, t, r) => {
2367
+ }), M = () => Object.fromEntries(o.value.filter((e) => e.hasVisibleSeries).map((e) => [e.series?.trackId ?? e.series?.id ?? e.id, e.yScale.domain()])), N = (e, t, r) => {
2275
2368
  if (v.value) return;
2276
2369
  let s = n.pannable && a.value;
2277
2370
  if (!n.zoomable && !s || !_.value || e.button !== 0) return;
2278
2371
  let c = e.currentTarget, d = o.value.find((e) => e.index === t);
2279
2372
  if (!d) return;
2280
- let [f, p] = U(e, c), m = Math.max(0, Math.min(r ? d.width : l.value, f)), h = Math.max(0, Math.min(r ? d.height : u.value, p)), g = Tr(i.value, {
2373
+ let [f, p] = U(e, c), m = Math.max(0, Math.min(r ? d.width : l.value, f)), h = Math.max(0, Math.min(r ? d.height : u.value, p)), g = Lr(i.value, {
2281
2374
  type: "begin",
2282
2375
  gesture: {
2283
2376
  trackIndex: t,
@@ -2287,34 +2380,21 @@ function Vr(e) {
2287
2380
  pointerId: e.pointerId,
2288
2381
  kind: s ? "pan" : "box",
2289
2382
  xDomain: d.xScale.domain(),
2290
- yDomains: N()
2383
+ yDomains: M()
2291
2384
  }
2292
2385
  });
2293
2386
  g.accepted && (i.value = g.state, O.value = c, c.setPointerCapture?.(e.pointerId), E(), e.preventDefault());
2294
- }, F = (e) => {
2387
+ }, P = (e) => {
2295
2388
  if (!d.value) return;
2296
2389
  let [t, n] = U(e, d.value), r = D(t, n), i = (r?.hasVisibleSeries ? r : void 0) ?? o.value.find((e) => e.hasVisibleSeries);
2297
- i && P(e, i.index, !1);
2298
- }, I = (e, t) => {
2299
- let i = t.width || 1, a = t.height || 1, u = e.currentX - e.startX, d = e.currentY - e.startY, f = e.xDomain[1] - e.xDomain[0], _ = e.independent ? b(t) : c.value, v = M([e.xDomain[0] - u / i * f, e.xDomain[1] - u / i * f], _);
2300
- if (e.independent) {
2301
- let e = [...m.value];
2302
- e[t.index] = Pr(v, _, i), m.value = e;
2303
- } else p.value = Pr(v, _, l.value);
2304
- let y = e.independent ? [t] : o.value.filter((e) => e.hasVisibleSeries), x = { ...g.value }, S = { ...h.value };
2305
- y.forEach((t) => {
2306
- let r = s.value.find((e) => e.id === t.id);
2307
- if (r && Yt(r, n.yDomain, n.yDomains)) return;
2308
- let i = t.series?.trackId ?? t.series?.id ?? t.id, o = e.yDomains[i] ?? t.yScale.domain(), c = r?.yDomain ?? o, l = o[1] - o[0], u = M([o[0] + d / a * l, o[1] + d / a * l], c);
2309
- e.independent ? x[t.index] = u : S[i] = u;
2310
- }), e.independent ? g.value = x : h.value = S, r("zoom-change", v);
2311
- }, L = (e) => {
2390
+ i && N(e, i.index, !1);
2391
+ }, F = Qr(e), I = (e) => {
2312
2392
  if (v.value) return;
2313
2393
  let t = i.value, n = O.value;
2314
2394
  if (!t || !n || e.pointerId !== t.pointerId) return;
2315
2395
  let r = o.value.find((e) => e.index === t.trackIndex);
2316
2396
  if (!r) return;
2317
- let [a, s] = U(e, n), c = Math.max(0, Math.min(t.independent ? r.width : l.value, a)), d = Math.max(0, Math.min(t.independent ? r.height : u.value, s)), f = Tr(i.value, {
2397
+ let [a, s] = U(e, n), c = Math.max(0, Math.min(t.independent ? r.width : l.value, a)), d = Math.max(0, Math.min(t.independent ? r.height : u.value, s)), f = Lr(i.value, {
2318
2398
  type: "move",
2319
2399
  pointerId: e.pointerId,
2320
2400
  position: {
@@ -2324,21 +2404,21 @@ function Vr(e) {
2324
2404
  });
2325
2405
  if (!f.accepted || !f.state) return;
2326
2406
  let p = f.state;
2327
- i.value = p, p.kind === "pan" && I(p, r), e.preventDefault();
2328
- }, R = (e) => {
2407
+ i.value = p, p.kind === "pan" && F(p, r), e.preventDefault();
2408
+ }, L = (e) => {
2329
2409
  let t = i.value;
2330
2410
  !t || e && e.pointerId !== t.pointerId || A(t.pointerId, e);
2331
- }, z = (e) => {
2411
+ }, R = (e) => {
2332
2412
  let t = o.value.find((t) => t.index === e.trackIndex);
2333
2413
  if (!t || (e.independent ? !x(t) : !S())) return;
2334
2414
  let i = e.independent ? 0 : t.left, a = Math.max(0, Math.min(t.width, Math.min(e.startX, e.currentX) - i)), s = Math.max(0, Math.min(t.width, Math.max(e.startX, e.currentX) - i));
2335
2415
  if (s - a < 6) return;
2336
- let u = e.independent ? b(t) : c.value, d = e.independent ? [t.seriesList] : o.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), h = Nr([t.xScale.invert(a), t.xScale.invert(s)], u, d, n);
2416
+ let u = e.independent ? b(t) : c.value, d = e.independent ? [t.seriesList] : o.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), h = Xr([t.xScale.invert(a), t.xScale.invert(s)], u, d, n);
2337
2417
  if (e.independent) {
2338
2418
  let e = [...m.value];
2339
- e[t.index] = Pr(h, u, t.width), m.value = e;
2340
- } else p.value = Pr(h, u, l.value);
2341
- Rr(r, h, t, e.independent);
2419
+ e[t.index] = Kr(h, u, t.width), m.value = e;
2420
+ } else p.value = Kr(h, u, l.value);
2421
+ ti(r, h, t, e.independent);
2342
2422
  let g = e.independent ? [t] : o.value.filter((e) => e.hasVisibleSeries), _ = Object.fromEntries(g.map((e) => [e.series?.trackId ?? e.series?.id ?? e.id, e.yScale.domain()]));
2343
2423
  if (r("zoom-change", h), e.independent) {
2344
2424
  let e = _[t.series?.trackId ?? t.series?.id ?? t.id];
@@ -2367,51 +2447,59 @@ function Vr(e) {
2367
2447
  gesture: "box"
2368
2448
  });
2369
2449
  f(C);
2370
- }, B = (e) => {
2450
+ }, z = (e) => {
2371
2451
  if (v.value) {
2372
- R();
2452
+ L();
2373
2453
  return;
2374
2454
  }
2375
2455
  let t = i.value;
2376
2456
  if (!t || e.pointerId !== t.pointerId) return;
2377
- let n = o.value.find((e) => e.index === t.trackIndex), r = O.value;
2378
- if (!n || !r || !r.parentNode) {
2457
+ let n = o.value.find((e) => e.index === t.trackIndex), a = O.value;
2458
+ if (!n || !a || !a.parentNode) {
2379
2459
  A(t.pointerId, e);
2380
2460
  return;
2381
2461
  }
2382
- let [a, s] = U(e, r), c = Math.max(0, Math.min(t.independent ? n.width : l.value, a)), d = Math.max(0, Math.min(t.independent ? n.height : u.value, s)), p = Tr(i.value, {
2462
+ let [s, c] = U(e, a), d = Math.max(0, Math.min(t.independent ? n.width : l.value, s)), p = Math.max(0, Math.min(t.independent ? n.height : u.value, c)), m = Lr(i.value, {
2383
2463
  type: "finish",
2384
2464
  pointerId: e.pointerId,
2385
2465
  position: {
2386
- currentX: c,
2387
- currentY: d
2466
+ currentX: d,
2467
+ currentY: p
2388
2468
  }
2389
2469
  }).completed;
2390
- if (p) {
2391
- if (i.value = null, k(p.pointerId, e), O.value = void 0, e.preventDefault(), p.kind === "pan") {
2392
- I(p, n), f(C);
2470
+ if (m) {
2471
+ if (i.value = null, k(m.pointerId, e), O.value = void 0, e.preventDefault(), m.kind === "pan") {
2472
+ let e = F(m, n);
2473
+ e.some((e, t) => Math.abs(e - m.xDomain[t]) > 1e-12) && r("pan-end", {
2474
+ start: e[0],
2475
+ end: e[1],
2476
+ ...m.independent ? {
2477
+ trackIndex: n.index,
2478
+ seriesIds: n.seriesList.map((e) => e.id)
2479
+ } : {}
2480
+ }), f(C);
2393
2481
  return;
2394
2482
  }
2395
- Math.abs(p.currentX - p.startX) >= 6 && z(p);
2483
+ Math.abs(m.currentX - m.startX) >= 6 && R(m);
2396
2484
  }
2397
- }, V = (e) => {
2398
- if (T(), R(), n.displayMode === "independent" && e !== void 0) {
2485
+ }, B = (e) => {
2486
+ if (T(), L(), n.displayMode === "independent" && e !== void 0) {
2399
2487
  let t = [...m.value];
2400
- t[e] = J, m.value = t;
2488
+ t[e] = q, m.value = t;
2401
2489
  let n = { ...g.value };
2402
2490
  delete n[e], g.value = n;
2403
- } else p.value = J, m.value = s.value.map(() => J), h.value = {}, g.value = {};
2491
+ } else p.value = q, m.value = s.value.map(() => q), h.value = {}, g.value = {};
2404
2492
  E(), y.value = [], f(C);
2405
2493
  };
2406
2494
  return {
2407
2495
  selectionBox: j,
2408
- beginViewportDrag: P,
2409
- beginSharedViewportDrag: F,
2410
- updateViewportDrag: L,
2411
- finishViewportDrag: B,
2412
- cancelViewportDrag: R,
2413
- resetViewport: V,
2414
- setViewportDomain: Fr({
2496
+ beginViewportDrag: N,
2497
+ beginSharedViewportDrag: P,
2498
+ updateViewportDrag: I,
2499
+ finishViewportDrag: z,
2500
+ cancelViewportDrag: L,
2501
+ resetViewport: B,
2502
+ setViewportDomain: Zr({
2415
2503
  props: n,
2416
2504
  trackLayouts: o,
2417
2505
  initialXDomain: c,
@@ -2420,7 +2508,7 @@ function Vr(e) {
2420
2508
  sharedTransform: p,
2421
2509
  independentTransforms: m,
2422
2510
  cancelPendingZoom: T,
2423
- cancelViewportDrag: R,
2511
+ cancelViewportDrag: L,
2424
2512
  clearHover: E,
2425
2513
  editorSeriesOptions: y,
2426
2514
  configureZoom: C
@@ -2430,20 +2518,20 @@ function Vr(e) {
2430
2518
  if (n.displayMode === "independent") {
2431
2519
  let t = (e.target instanceof Element ? e.target : null)?.closest("[data-independent-overlay-index]"), n = Number(t?.getAttribute("data-independent-overlay-index")), i = o.value.find((e) => e.index === n);
2432
2520
  if (!i) return;
2433
- e.preventDefault(), V(n), r("zoom-reset", {
2521
+ e.preventDefault(), B(n), r("zoom-reset", {
2434
2522
  trackIndex: n,
2435
2523
  seriesIds: i.legendSeries.map((e) => e.id)
2436
2524
  });
2437
2525
  return;
2438
2526
  }
2439
- e.preventDefault(), V(), r("zoom-reset", {});
2527
+ e.preventDefault(), B(), r("zoom-reset", {});
2440
2528
  }
2441
2529
  }
2442
2530
  };
2443
2531
  }
2444
2532
  //#endregion
2445
2533
  //#region src/components/utils/useAnimationFrameThrottle.ts
2446
- function Hr() {
2534
+ function ai() {
2447
2535
  let e = null, t = null;
2448
2536
  function n(n) {
2449
2537
  t = n, e === null && (e = requestAnimationFrame(() => {
@@ -2472,27 +2560,27 @@ function Hr() {
2472
2560
  }
2473
2561
  //#endregion
2474
2562
  //#region src/components/interaction/useWaveformZoom.ts
2475
- function Ur(e) {
2476
- let { props: t, emit: n, svgElement: r, sharedOverlayElement: i, sharedTransform: a, independentTransforms: o, trackLayouts: s, initialXDomain: c, sharedZoomDomain: l, innerWidth: u, innerHeight: d, hasChartArea: f, isZoomMode: p, isPresentationMode: m, resolveInitialTrackDomain: h, cancelPendingHover: g } = e, _ = /* @__PURE__ */ new Map(), v = Hr(), y = !1, b = null, x = null, S = null, C = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ new Map(), E, D = !1, O = 0, k = () => v.schedule(M), A = (e) => {
2563
+ function oi(e) {
2564
+ let { props: t, emit: n, svgElement: r, sharedOverlayElement: i, sharedTransform: a, independentTransforms: o, trackLayouts: s, initialXDomain: c, sharedZoomDomain: l, innerWidth: u, innerHeight: d, hasChartArea: f, isZoomMode: p, isPresentationMode: m, resolveInitialTrackDomain: h, cancelPendingHover: g } = e, _ = /* @__PURE__ */ new Map(), v = ai(), y = !1, b = null, x = null, S = null, C = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ new Map(), E, D = !1, O = 0, k = () => v.schedule(M), A = (e) => {
2477
2565
  if (y || m.value) return;
2478
2566
  g(), b = e.transform, x = "wheel", I();
2479
- let t = e.transform.rescaleX(W(c.value, [0, u.value])).domain();
2567
+ let [r, i] = lr(e.transform.rescaleX(W(c.value, [0, u.value])).domain(), t);
2480
2568
  n("zoom-intent", {
2481
- start: t[0],
2482
- end: t[1],
2569
+ start: r,
2570
+ end: i,
2483
2571
  gesture: "wheel"
2484
2572
  }), k();
2485
- }, j = (e, t) => {
2573
+ }, j = (e, r) => {
2486
2574
  if (y || m.value) return;
2487
- g(), C.set(t, e.transform), w.set(t, "wheel"), I();
2488
- let r = s.value.find((e) => e.index === t);
2489
- if (r) {
2490
- let i = e.transform.rescaleX(W(h(r), [0, r.width])).domain();
2575
+ g(), C.set(r, e.transform), w.set(r, "wheel"), I();
2576
+ let i = s.value.find((e) => e.index === r);
2577
+ if (i) {
2578
+ let a = e.transform.rescaleX(W(h(i), [0, i.width])).domain();
2491
2579
  n("zoom-intent", {
2492
- start: i[0],
2493
- end: i[1],
2494
- trackIndex: t,
2495
- seriesIds: r.seriesList.map((e) => e.id),
2580
+ start: lr(a, t)[0],
2581
+ end: lr(a, t)[1],
2582
+ trackIndex: r,
2583
+ seriesIds: i.seriesList.map((e) => e.id),
2496
2584
  gesture: "wheel"
2497
2585
  });
2498
2586
  }
@@ -2506,36 +2594,36 @@ function Ur(e) {
2506
2594
  if (b) {
2507
2595
  let e = b;
2508
2596
  b = null, S = x, x = null, a.value = e;
2509
- let t = e.rescaleX(W(c.value, [0, u.value])).domain();
2510
- n("zoom-change", [t[0], t[1]]);
2597
+ let r = e.rescaleX(W(c.value, [0, u.value])).domain();
2598
+ n("zoom-change", lr([r[0], r[1]], t));
2511
2599
  }
2512
2600
  if (!C.size) return;
2513
- let e = [...o.value], t = Array.from(C.keys()), r = new Map(w);
2601
+ let e = [...o.value], r = Array.from(C.keys()), i = new Map(w);
2514
2602
  C.forEach((t, n) => {
2515
2603
  e[n] = t;
2516
2604
  }), C.clear(), w.clear(), o.value = e;
2517
- let i = new Map(s.value.map((e) => [e.index, e]));
2518
- t.forEach((e) => {
2519
- let t = i.get(e);
2605
+ let l = new Map(s.value.map((e) => [e.index, e]));
2606
+ r.forEach((e) => {
2607
+ let t = l.get(e);
2520
2608
  if (!t) return;
2521
- if (r.get(e) === "wheel") {
2609
+ if (i.get(e) === "wheel") {
2522
2610
  let e = t.seriesList.map((e) => e.id);
2523
- T.set(Ir(e), e);
2611
+ T.set($r(e), e);
2524
2612
  }
2525
- let a = t.xScale.domain();
2526
- n("zoom-change", [a[0], a[1]]);
2613
+ let r = t.xScale.domain();
2614
+ n("zoom-change", [r[0], r[1]]);
2527
2615
  });
2528
2616
  }
2529
2617
  let N = () => {
2530
2618
  if (t.displayMode === "independent") {
2531
- zr(n, s.value, T.values()), T.clear();
2619
+ ni(n, s.value, T.values()), T.clear();
2532
2620
  return;
2533
2621
  }
2534
2622
  if (S !== "wheel") {
2535
2623
  S = null;
2536
2624
  return;
2537
2625
  }
2538
- Br(n, l.value, s.value), S = null;
2626
+ ri(n, l.value, s.value), S = null;
2539
2627
  }, P = () => {
2540
2628
  v.flush(), M(), !(S === "wheel" || T.size) && N();
2541
2629
  }, F = (e) => {
@@ -2555,18 +2643,18 @@ function Ur(e) {
2555
2643
  }, B = (e, n) => {
2556
2644
  let r = Math.abs(e[1] - e[0]);
2557
2645
  if (!Number.isFinite(r) || r <= 0) return Bt.MIN_SCALE;
2558
- let i = jr(e, n, t);
2646
+ let i = Ur(e, n, t);
2559
2647
  return Math.max(Bt.MIN_SCALE, i > 0 ? r / i : Infinity);
2560
- }, V = (e, n, r, i) => Pr(Nr(e.rescaleX(W(n, [0, r])).domain(), n, i, t), n, r), H = (e) => {
2648
+ }, V = (e, n, r, i) => Kr(Xr(e.rescaleX(W(n, [0, r])).domain(), n, i, t), n, r), H = (e) => {
2561
2649
  let n = Number(t.minVisiblePoints);
2562
2650
  return jn(e.seriesList, e.xScale.domain(), Number.isFinite(n) && n > 0 ? Math.ceil(n) + 1 : n);
2563
2651
  }, U = () => {
2564
2652
  let e = s.value.filter((e) => e.hasVisibleSeries);
2565
2653
  return e.length > 0 && e.every(H);
2566
- }, ee = (e, t) => {
2654
+ }, K = (e, t) => {
2567
2655
  if (e.type !== "wheel") return !1;
2568
2656
  let n = e.deltaY;
2569
- return n < 0 ? t : n > 0 && ae(e.currentTarget).k > Bt.MIN_SCALE;
2657
+ return n < 0 ? t : n > 0 && oe(e.currentTarget).k > Bt.MIN_SCALE;
2570
2658
  };
2571
2659
  return {
2572
2660
  cancelPendingZoom: R,
@@ -2581,13 +2669,13 @@ function Ur(e) {
2581
2669
  s.value.forEach((t) => {
2582
2670
  let n = r.value?.querySelector(`[data-independent-overlay-index="${t.index}"]`);
2583
2671
  if (!n) return;
2584
- let i = h(t), a = [t.seriesList], c = ie().filter((e) => {
2672
+ let i = h(t), a = [t.seriesList], c = ae().filter((e) => {
2585
2673
  let n = s.value.find((e) => e.index === t.index) ?? t;
2586
- return ee(e, H(n));
2674
+ return K(e, H(n));
2587
2675
  }).scaleExtent([1, B(i, a)]).constrain((e) => V(e, i, t.width, a)).extent([[0, 0], [t.width, t.height]]).translateExtent([[0, 0], [t.width, t.height]]).on("zoom", (e) => j(e, t.index)).on("end", () => F(e));
2588
2676
  _.set(t.index, c), y = !0;
2589
2677
  try {
2590
- G(n).call(c).on("dblclick.zoom", null).call(c.transform, o.value[t.index] ?? J);
2678
+ G(n).call(c).on("dblclick.zoom", null).call(c.transform, o.value[t.index] ?? q);
2591
2679
  } finally {
2592
2680
  y = !1;
2593
2681
  }
@@ -2596,7 +2684,7 @@ function Ur(e) {
2596
2684
  }
2597
2685
  let n = i.value;
2598
2686
  if (!n) return;
2599
- let l = s.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), g = ie().filter((e) => ee(e, U())).scaleExtent([1, B(c.value, l)]).constrain((e) => V(e, c.value, u.value, l)).extent([[0, 0], [u.value, d.value]]).translateExtent([[0, 0], [u.value, d.value]]).on("zoom", A).on("end", () => F(e));
2687
+ let l = s.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), g = ae().filter((e) => K(e, U())).scaleExtent([1, B(c.value, l)]).constrain((e) => V(e, c.value, u.value, l)).extent([[0, 0], [u.value, d.value]]).translateExtent([[0, 0], [u.value, d.value]]).on("zoom", A).on("end", () => F(e));
2600
2688
  _.set("shared", g), y = !0;
2601
2689
  try {
2602
2690
  G(n).call(g).on("dblclick.zoom", null).call(g.transform, a.value);
@@ -2608,52 +2696,62 @@ function Ur(e) {
2608
2696
  };
2609
2697
  }
2610
2698
  //#endregion
2611
- //#region src/components/core/useWaveformChartLifecycle.ts
2612
- function Wr(e) {
2699
+ //#region src/components/core/pagination.ts
2700
+ function si(e, t, n, r, i) {
2701
+ if (!e) return 0;
2702
+ if (t <= 520) return 40;
2703
+ let a = Math.min(n, 9) + 2, o = a * 32 + a * 8, s = r + Array.from(i).length * 18 / 2;
2704
+ return t - 10 - s - 8 >= o ? 16 : 40;
2705
+ }
2706
+ //#endregion
2707
+ //#region src/components/interaction/interactionTarget.ts
2708
+ function ci(e) {
2613
2709
  return e instanceof Element && !!e.closest("button, input, select, textarea, [contenteditable]:not([contenteditable=\"false\"])");
2614
2710
  }
2615
- function Gr(e) {
2616
- let { props: t, emit: n, container: r, titleMeasureElement: i, resizeObserver: a, observedWidth: o, observedHeight: s, measuredTitleWidth: c, measuredTitleHeight: l, resolvedTitleText: u, titleAreaReserved: d, titleMeasureStyle: p, spacePressed: m, pointerInsideChart: _, currentPage: v, pageCount: y, pagedTracks: b, gridOptions: x, chartSeries: S, chartTracks: C, trackLayouts: w, innerWidth: T, innerHeight: E, sharedZoomDomain: D, initialXDomain: O, sharedTransform: A, activeInteractionMode: j, hiddenSeriesIdSet: M, internalHiddenSeriesIds: N, independentTransforms: P, independentYDomains: F, resolveInitialTrackDomain: I, annotationInteraction: L, editorSeriesOptions: R, isPresentationMode: z, clearHover: B, cancelAnnotation: V, configureZoom: H, resetViewport: U, cancelViewportDrag: W, cancelPendingHover: G, clearZoomBindings: ee } = e;
2617
- function te(e) {
2618
- z.value || e.code !== "Space" || !t.pannable || !_.value || Wr(e.target) || (m.value = !0, e.preventDefault());
2711
+ //#endregion
2712
+ //#region src/components/core/useWaveformChartLifecycle.ts
2713
+ function li(e) {
2714
+ let { props: t, emit: n, container: r, titleMeasureElement: i, resizeObserver: a, observedWidth: o, observedHeight: s, measuredTitleWidth: c, measuredTitleHeight: l, resolvedTitleText: u, titleAreaReserved: d, titleMeasureStyle: p, spacePressed: m, pointerInsideChart: _, currentPage: v, pageCount: y, pagedTracks: b, gridOptions: x, chartSeries: S, chartTracks: C, trackLayouts: w, innerWidth: T, innerHeight: E, sharedZoomDomain: D, initialXDomain: O, sharedTransform: A, activeInteractionMode: j, hiddenSeriesIdSet: M, internalHiddenSeriesIds: N, independentTransforms: P, independentYDomains: F, resolveInitialTrackDomain: I, annotationInteraction: L, editorSeriesOptions: R, isPresentationMode: z, clearHover: B, cancelAnnotation: V, configureZoom: H, resetViewport: U, cancelViewportDrag: W, cancelPendingHover: G, clearZoomBindings: K } = e;
2715
+ function ee(e) {
2716
+ z.value || e.code !== "Space" || !t.pannable || !_.value || ci(e.target) || (m.value = !0, e.preventDefault());
2619
2717
  }
2620
- function ne(e) {
2718
+ function te(e) {
2621
2719
  e.code === "Space" && (m.value = !1);
2622
2720
  }
2623
- function re(e) {
2721
+ function ne(e) {
2624
2722
  let r = Math.min(y.value, Math.max(1, Math.floor(e)));
2625
- r !== v.value && (v.value = r, B(), L.closeContextMenu(), V(), t.displayMode === "independent" && (P.value = b.value.map(() => J), F.value = {}), f(H), n("page-change", r, y.value));
2723
+ r !== v.value && (v.value = r, B(), L.closeContextMenu(), V(), t.displayMode === "independent" && (P.value = b.value.map(() => q), F.value = {}), f(H), n("page-change", r, y.value));
2626
2724
  }
2627
- let K, q;
2628
- function ie() {
2725
+ let re, ie;
2726
+ function ae() {
2629
2727
  if (t.displayMode === "independent") {
2630
- K = void 0, q = new Map(w.value.flatMap((e) => {
2631
- let t = e.xScale.domain(), n = I(e);
2632
- return t[1] - t[0] < n[1] - n[0] - 1e-12 ? [[Ir(e.seriesList.map((e) => e.id)), t]] : [];
2728
+ re = void 0, ie = new Map(w.value.flatMap((e) => {
2729
+ let n = e.xScale.domain(), r = I(e);
2730
+ return Jr(t) || n[1] - n[0] < r[1] - r[0] - 1e-12 ? [[$r(e.seriesList.map((e) => e.id)), n]] : [];
2633
2731
  }));
2634
2732
  return;
2635
2733
  }
2636
- q = void 0;
2734
+ ie = void 0;
2637
2735
  let e = D.value, n = O.value;
2638
- K = e[1] - e[0] < n[1] - n[0] - 1e-12 ? [...e] : void 0;
2736
+ re = Jr(t) || e[1] - e[0] < n[1] - n[0] - 1e-12 ? [...e] : void 0;
2639
2737
  }
2640
- function ae() {
2738
+ function oe() {
2641
2739
  if (t.displayMode === "independent") {
2642
2740
  let e = P.value;
2643
- P.value = C.value.map((t, n) => e[n] ?? J);
2741
+ P.value = C.value.map((t, n) => e[n] ?? q);
2644
2742
  }
2645
2743
  B(), R.value = [], f(() => {
2646
- if (t.displayMode === "independent" && q) {
2647
- let e = C.value.map(() => J);
2744
+ if (t.displayMode === "independent" && ie) {
2745
+ let e = C.value.map(() => q);
2648
2746
  w.value.forEach((n) => {
2649
- let r = q?.get(Ir(n.seriesList.map((e) => e.id)));
2747
+ let r = ie?.get($r(n.seriesList.map((e) => e.id)));
2650
2748
  if (!r) return;
2651
- let i = I(n), a = Nr(r, i, [n.seriesList], t);
2652
- e[n.index] = Pr(a, i, n.width);
2653
- }), P.value = e, q = void 0;
2654
- } else if (t.displayMode !== "independent" && K) {
2655
- let e = O.value, n = w.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), r = Nr(K, e, n, t);
2656
- A.value = Pr(r, e, T.value), K = void 0;
2749
+ let i = I(n), a = Yr(r, i, [n.seriesList], t);
2750
+ e[n.index] = Kr(a, i, n.width);
2751
+ }), P.value = e, ie = void 0;
2752
+ } else if (t.displayMode !== "independent" && re) {
2753
+ let e = O.value, n = w.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), r = Yr(re, e, n, t);
2754
+ A.value = Kr(r, e, T.value), re = void 0;
2657
2755
  }
2658
2756
  H();
2659
2757
  });
@@ -2678,7 +2776,11 @@ function Gr(e) {
2678
2776
  j
2679
2777
  ], async () => {
2680
2778
  await f(), H();
2681
- }, { immediate: !0 }), k(() => t.displayMode, () => {
2779
+ }, { immediate: !0 }), k(() => [
2780
+ t.displayMode,
2781
+ t.integerZoom,
2782
+ t.integerZoom ? t.timeUnit : void 0
2783
+ ], () => {
2682
2784
  let e = v.value;
2683
2785
  v.value = 1, U(), e !== 1 && n("page-change", 1, y.value);
2684
2786
  }), k([
@@ -2692,7 +2794,7 @@ function Gr(e) {
2692
2794
  }), k(j, () => {
2693
2795
  R.value = [];
2694
2796
  }), k(z, (e) => {
2695
- m.value = !1, e && (W(), ee(), B(), L.closeContextMenu(), V());
2797
+ m.value = !1, e && (W(), K(), B(), L.closeContextMenu(), V());
2696
2798
  }), k(() => S.value.map((e) => e.id).join("\0"), () => {
2697
2799
  if (t.hiddenSeriesIds !== void 0) return;
2698
2800
  let e = new Set(S.value.map((e) => e.id)), n = new Set(Array.from(N.value).filter((t) => e.has(t)));
@@ -2711,7 +2813,7 @@ function Gr(e) {
2711
2813
  let n = L.editorDraft.value;
2712
2814
  n?.mode === "edit" && !e.some((e) => e.id === n.annotation.id) && L.closeEditor();
2713
2815
  }, { deep: !0 });
2714
- function oe() {
2816
+ function se() {
2715
2817
  if (!d.value || !i.value) {
2716
2818
  c.value = 0, l.value = 0;
2717
2819
  return;
@@ -2724,22 +2826,22 @@ function Gr(e) {
2724
2826
  d,
2725
2827
  p
2726
2828
  ], async () => {
2727
- c.value = 0, l.value = 0, await f(), oe();
2829
+ c.value = 0, l.value = 0, await f(), se();
2728
2830
  }, { immediate: !0 }), g(() => {
2729
- window.addEventListener("keydown", te), window.addEventListener("keyup", ne), r.value && (a.value = new ResizeObserver(([e]) => {
2730
- o.value = Math.max(0, e?.contentRect.width ?? 0), s.value = Math.max(0, e?.contentRect.height ?? 0), f(oe);
2831
+ window.addEventListener("keydown", ee), window.addEventListener("keyup", te), r.value && (a.value = new ResizeObserver(([e]) => {
2832
+ o.value = Math.max(0, e?.contentRect.width ?? 0), s.value = Math.max(0, e?.contentRect.height ?? 0), f(se);
2731
2833
  }), a.value.observe(r.value));
2732
2834
  }), h(() => {
2733
- window.removeEventListener("keydown", te), window.removeEventListener("keyup", ne), G(), a.value?.disconnect(), ee(), R.value = [];
2835
+ window.removeEventListener("keydown", ee), window.removeEventListener("keyup", te), G(), a.value?.disconnect(), K(), R.value = [];
2734
2836
  }), {
2735
- goToPage: re,
2736
- handleBeforeDataReferenceChange: ie,
2737
- handleDataReferenceChange: ae
2837
+ goToPage: ne,
2838
+ handleBeforeDataReferenceChange: ae,
2839
+ handleDataReferenceChange: oe
2738
2840
  };
2739
2841
  }
2740
2842
  //#endregion
2741
2843
  //#region src/components/core/useWaveformData.ts
2742
- function Kr(e) {
2844
+ function ui(e) {
2743
2845
  return dn(e).map(({ source: e, ...t }) => {
2744
2846
  let n = e.metrics(t.errorBar.visible);
2745
2847
  return {
@@ -2752,45 +2854,45 @@ function Kr(e) {
2752
2854
  };
2753
2855
  });
2754
2856
  }
2755
- function qr(e, t, n) {
2756
- let r = w(Kr(e()));
2857
+ function di(e, t, n) {
2858
+ let r = w(ui(e()));
2757
2859
  return k(e, (e) => {
2758
- t(), r.value = Kr(e), n();
2860
+ t(), r.value = ui(e), n();
2759
2861
  }), r;
2760
2862
  }
2761
2863
  //#endregion
2762
2864
  //#region wasm/pkg/waveform_sampling_wasm.js
2763
- function Jr(e, t) {
2764
- let n = ci(e, $.__wbindgen_malloc), r = mi, i = ci(t, $.__wbindgen_malloc), a = mi, o = $.calculate_range(n, r, i, a);
2765
- if (o[3]) throw li(o[2]);
2766
- var s = $r(o[0], o[1]).slice();
2865
+ function fi(e, t) {
2866
+ let n = Ei(e, $.__wbindgen_malloc), r = Mi, i = Ei(t, $.__wbindgen_malloc), a = Mi, o = $.calculate_range(n, r, i, a);
2867
+ if (o[3]) throw Di(o[2]);
2868
+ var s = _i(o[0], o[1]).slice();
2767
2869
  return $.__wbindgen_free(o[0], o[1] * 8, 8), s;
2768
2870
  }
2769
- function Yr(e, t, n, r) {
2770
- let i = ci(e, $.__wbindgen_malloc), a = mi, o = ci(t, $.__wbindgen_malloc), s = mi, c = $.find_visible_range(i, a, o, s, n, r);
2771
- if (c[3]) throw li(c[2]);
2772
- var l = ei(c[0], c[1]).slice();
2871
+ function pi(e, t, n, r) {
2872
+ let i = Ei(e, $.__wbindgen_malloc), a = Mi, o = Ei(t, $.__wbindgen_malloc), s = Mi, c = $.find_visible_range(i, a, o, s, n, r);
2873
+ if (c[3]) throw Di(c[2]);
2874
+ var l = vi(c[0], c[1]).slice();
2773
2875
  return $.__wbindgen_free(c[0], c[1] * 4, 4), l;
2774
2876
  }
2775
- function Xr(e, t, n, r) {
2776
- let i = ci(e, $.__wbindgen_malloc), a = mi, o = ci(t, $.__wbindgen_malloc), s = mi, c = $.sample_aggregates(i, a, o, s, n, r);
2777
- if (c[3]) throw li(c[2]);
2778
- var l = $r(c[0], c[1]).slice();
2877
+ function mi(e, t, n, r) {
2878
+ let i = Ei(e, $.__wbindgen_malloc), a = Mi, o = Ei(t, $.__wbindgen_malloc), s = Mi, c = $.sample_aggregates(i, a, o, s, n, r);
2879
+ if (c[3]) throw Di(c[2]);
2880
+ var l = _i(c[0], c[1]).slice();
2779
2881
  return $.__wbindgen_free(c[0], c[1] * 8, 8), l;
2780
2882
  }
2781
- function Zr(e, t, n, r) {
2782
- let i = ci(e, $.__wbindgen_malloc), a = mi, o = ci(t, $.__wbindgen_malloc), s = mi, c = $.sample_indexes(i, a, o, s, n, r);
2783
- if (c[3]) throw li(c[2]);
2784
- var l = ei(c[0], c[1]).slice();
2883
+ function hi(e, t, n, r) {
2884
+ let i = Ei(e, $.__wbindgen_malloc), a = Mi, o = Ei(t, $.__wbindgen_malloc), s = Mi, c = $.sample_indexes(i, a, o, s, n, r);
2885
+ if (c[3]) throw Di(c[2]);
2886
+ var l = vi(c[0], c[1]).slice();
2785
2887
  return $.__wbindgen_free(c[0], c[1] * 4, 4), l;
2786
2888
  }
2787
- function Qr() {
2889
+ function gi() {
2788
2890
  return {
2789
2891
  __proto__: null,
2790
2892
  "./waveform_sampling_wasm_bg.js": {
2791
2893
  __proto__: null,
2792
2894
  __wbindgen_cast_0000000000000001: function(e, t) {
2793
- return ri(e, t);
2895
+ return xi(e, t);
2794
2896
  },
2795
2897
  __wbindgen_init_externref_table: function() {
2796
2898
  let e = $.__wbindgen_externrefs, t = e.grow(4);
@@ -2799,52 +2901,52 @@ function Qr() {
2799
2901
  }
2800
2902
  };
2801
2903
  }
2802
- function $r(e, t) {
2803
- return e >>>= 0, ni().subarray(e / 8, e / 8 + t);
2904
+ function _i(e, t) {
2905
+ return e >>>= 0, bi().subarray(e / 8, e / 8 + t);
2804
2906
  }
2805
- function ei(e, t) {
2806
- return e >>>= 0, ai().subarray(e / 4, e / 4 + t);
2907
+ function vi(e, t) {
2908
+ return e >>>= 0, Ci().subarray(e / 4, e / 4 + t);
2807
2909
  }
2808
- var ti = null;
2809
- function ni() {
2810
- return (ti === null || ti.byteLength === 0) && (ti = new Float64Array($.memory.buffer)), ti;
2910
+ var yi = null;
2911
+ function bi() {
2912
+ return (yi === null || yi.byteLength === 0) && (yi = new Float64Array($.memory.buffer)), yi;
2811
2913
  }
2812
- function ri(e, t) {
2813
- return e >>>= 0, pi(e, t);
2914
+ function xi(e, t) {
2915
+ return e >>>= 0, ji(e, t);
2814
2916
  }
2815
- var ii = null;
2816
- function ai() {
2817
- return (ii === null || ii.byteLength === 0) && (ii = new Uint32Array($.memory.buffer)), ii;
2917
+ var Si = null;
2918
+ function Ci() {
2919
+ return (Si === null || Si.byteLength === 0) && (Si = new Uint32Array($.memory.buffer)), Si;
2818
2920
  }
2819
- var oi = null;
2820
- function si() {
2821
- return (oi === null || oi.byteLength === 0) && (oi = new Uint8Array($.memory.buffer)), oi;
2921
+ var wi = null;
2922
+ function Ti() {
2923
+ return (wi === null || wi.byteLength === 0) && (wi = new Uint8Array($.memory.buffer)), wi;
2822
2924
  }
2823
- function ci(e, t) {
2925
+ function Ei(e, t) {
2824
2926
  let n = t(e.length * 8, 8) >>> 0;
2825
- return ni().set(e, n / 8), mi = e.length, n;
2927
+ return bi().set(e, n / 8), Mi = e.length, n;
2826
2928
  }
2827
- function li(e) {
2929
+ function Di(e) {
2828
2930
  let t = $.__wbindgen_externrefs.get(e);
2829
2931
  return $.__externref_table_dealloc(e), t;
2830
2932
  }
2831
- var ui = new TextDecoder("utf-8", {
2933
+ var Oi = new TextDecoder("utf-8", {
2832
2934
  ignoreBOM: !0,
2833
2935
  fatal: !0
2834
2936
  });
2835
- ui.decode();
2836
- var di = 2146435072, fi = 0;
2837
- function pi(e, t) {
2838
- return fi += t, fi >= di && (ui = new TextDecoder("utf-8", {
2937
+ Oi.decode();
2938
+ var ki = 2146435072, Ai = 0;
2939
+ function ji(e, t) {
2940
+ return Ai += t, Ai >= ki && (Oi = new TextDecoder("utf-8", {
2839
2941
  ignoreBOM: !0,
2840
2942
  fatal: !0
2841
- }), ui.decode(), fi = t), ui.decode(si().subarray(e, e + t));
2943
+ }), Oi.decode(), Ai = t), Oi.decode(Ti().subarray(e, e + t));
2842
2944
  }
2843
- var mi = 0, $;
2844
- function hi(e, t) {
2845
- return $ = e.exports, ti = null, ii = null, oi = null, $.__wbindgen_start(), $;
2945
+ var Mi = 0, $;
2946
+ function Ni(e, t) {
2947
+ return $ = e.exports, yi = null, Si = null, wi = null, $.__wbindgen_start(), $;
2846
2948
  }
2847
- async function gi(e, t) {
2949
+ async function Pi(e, t) {
2848
2950
  if (typeof Response == "function" && e instanceof Response) {
2849
2951
  if (typeof WebAssembly.instantiateStreaming == "function") try {
2850
2952
  return await WebAssembly.instantiateStreaming(e, t);
@@ -2870,17 +2972,17 @@ async function gi(e, t) {
2870
2972
  return !1;
2871
2973
  }
2872
2974
  }
2873
- async function _i(e) {
2975
+ async function Fi(e) {
2874
2976
  if ($ !== void 0) return $;
2875
2977
  e !== void 0 && (Object.getPrototypeOf(e) === Object.prototype ? {module_or_path: e} = e : console.warn("using deprecated parameters for the initialization function; pass a single object instead")), e === void 0 && (e = new URL("data:application/wasm;base64,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kkA7AAAgAkEEayECIAVB/6ziBEsNAAsLIABBCUsEQCACQQJrIgIgBkEGamogACAAQf//A3FB5ABuIgBB5ABsa0H//wNxQQF0LwDSkkA7AAALQQAgBCAAG0UEQCACQQFrIgIgBkEGamogAEEBdC0A05JAOgAACwJ/IAZBBmogAmohB0EAIQRBK0GAgMQAIAEoAggiA0GAgIABcSIAGyEIIANBgICABHFFRSEKAkBBCiACayILIABBFXZqIgAgAS8BDCIFSQRAAkACQCADQYCAgAhxRQRAIAUgAGshBUEAIQACQAJAAkAgA0EddkEDcUEBaw4DAAEAAgsgBSEADAELIAVB/v8DcUEBdiEACyADQf///wBxIQkgASgCBCEDIAEoAgAhAQNAIARB//8DcSAAQf//A3FPDQJBASECIARBAWohBCABIAkgAygCEBEBAEUNAAsMBAsgASABKQIIIgynQYCAgP95cUGwgICAAnI2AghBASECIAEoAgAiAyABKAIEIgkgCCAKECwNAyAFIABrQf//A3EhAANAIARB//8DcSAATw0CIARBAWohBCADQTAgCSgCEBEBAEUNAAsMAwtBASECIAEgAyAIIAoQLA0CIAEgByALIAMoAgwRAgANAkEAIQQgBSAAa0H//wNxIQADQCAEQf//A3EiBSAASSECIAAgBU0NAyAEQQFqIQQgASAJIAMoAhARAQBFDQALDAILIAMgByALIAkoAgwRAgANASABIAw3AghBAAwCC0EBIQIgASgCACIAIAEoAgQiASAIIAoQLA0AIAAgByALIAEoAgwRAgAhAgsgAgsgBkEQaiQAC4gCAQZ/IAAoAggiBCECAn9BASABQYABSQ0AGkECIAFBgBBJDQAaQQNBBCABQYCABEkbCyIGIAAoAgAgBGtLBH8gACAEIAYQHSAAKAIIBSACCyAAKAIEaiECAkAgAUGAAU8EQCABQT9xQYB/ciEFIAFBBnYhAyABQYAQSQRAIAIgBToAASACIANBwAFyOgAADAILIAFBDHYhByADQT9xQYB/ciEDIAFB//8DTQRAIAIgBToAAiACIAM6AAEgAiAHQeABcjoAAAwCCyACIAU6AAMgAiADOgACIAIgB0E/cUGAf3I6AAEgAiABQRJ2QXByOgAADAELIAIgAToAAAsgACAEIAZqNgIIQQALzwIBCH9BAEHo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gIACcSABQYCABElyDQBBgIAEIQYgAEGAgARxIAFBgIAISXINAEGAgAghBiAAQYCACHEgAUGAgBBJcg0AQYCAECEGIABBgIAQcSABQYCAIElyDQBBgIAgIQYgAEGAgCBxIAFBgIDAAElyDQBBgIDAACEGIABBgIDAAHEgAUGAgIABSXINAEGAgIABIQYgAEGAgIABcSABQYCAgAJJcg0AQYCAgAIhBiAAQYCAgAJxIAFBgICABElyDQBBgICABCEGIABBgICABHEgAUGAgIAISXINAEGAgIAIIQYgAEGAgIAIcSABQYCAgBBJcg0AQYCAgBAhBiAAQYCAgBBxIAFBgICAIElyDQBBgICAICEGIABBgICAIHEgAUGAgIDAAElyDQBBgICAwAAhBiAAQYCAgMAAcSABQYCAgIABSXINAEGAgICAASEGIABBgICAgAFxIAFBgICAgAJJcg0AQYCAgIACIQYgAEGAgICAAnEgAUGAgICABElyDQBBgICAgAQhBiAAQYCAgIAEcSABQQBOcg0AEEoACyAAIQEgACEDAkAgBmgiCEUNAAJAIAggC0kEQCAQIAhBGGxqIgEoAgBBgICAgHhHDQEMDAsgCCALQbyJwAAQJgALIAAgCHYiAyABKAIIIghJBEAgASgCFCIIIANLBEAgA0ECdCIIIAEoAhBqKAIAIQMgASgCBCAIaigCACEBDAILIAMgCEHcicAAECYACyADIAhBzInAABAmAAsgASAMTw0BIAcgDE8NAiAHIAEgDyABQQN0aisDACInIA8gB0EDdGorAwAiKGNFIAEgB08gJyAoYnJxGyEHIAMgDE8NAyAEIAxPDQQgBCADIA8gA0EDdGorAwAiJyAPIARBA3RqKwMAIihkRSADIARPICcgKGJycRshBCAAIAZqIgAgI0kNAAsCQAJAAkACQAJAIBZBAWsOBgMAAAECBAALQZyKwABBKEHEisAAED4ACyAFKAIUIgAEQCAFKAIQIABBAnRqQQRrKAIAIAdGDQkLIAUoAgwgAEYEQCAFQQxqECcLIAUoAhAgAEECdGogBzYCACAFIABBAWo2AhQMCAsgBSgCFCIABEAgBSgCECAAQQJ0akEEaygCACAERg0ICyAFKAIMIABGBEAgBUEMahAnCyAFKAIQIABBAnRqIAQ2AgAgBSAAQQFqNgIUDAcLIAUgBDYC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IQ4gAyEKIwBB8ABrIgckAAJ/AkAgBL0iEEL///////////8Ag0KAgICAgICA+P8AWg0AIAW9IhFC////////////AIMiD1AgEUIAUyIIIA9CAX1C/////////wdUcXIgD0KAgICAgICA+P8AUXIgD0KAgICAgICA+P8AVXIgD0KAgICAgICACH1CgICAgICAgPD/AFQgCHFyDQAgAUEDdCELQQAhCAJAA0AgCCALRg0BIAAgCGogCEEIaiEIKQMAQv///////////wCDQv/////////3/wBYDQALQcmIwABBLBA/rSEQIAdBGGohCUGAgICAeAwCCwJAIApFDQAgASAKRgRAIAFBAWohCSACIQgDQCAJQQFrIglBAkkNAiAIKAIAIQsgCyAIQQRqIggoAgBNDQALC0GciMAAQS0QP60hECAHQRhqIQlBgICAgHgMAgsCQCABRQRAQQghCwwBCyABQQN0IghBCBBLIgsEQCAIRQ0BIAsgACAI/AoAAAwBC0EIIAgQPQALAkACQCAKRQRAQYCAgIB4IQoMAQsgCkECdCIJQQQQSyIIRQ0BIAkEQCAIIAIgCfwKAAALIAitIAqtQiCGhCEPC0QAAAAAAADwPyAFoyEEIAdBADYCGCAHQRBqIQlBAAwCC0EEIAkQPQALQfWIwABBNhA/rSEQIAdBGGohCUGAgICAeAshCCAJIAg2AgACfyAHKAIYIghBgICAgHhGBEBBASEJIBCnDAELIAcgBygCEDYCaCAHQQQ2AmQgByAINgJgIAdBADYCXCAHQoCAgIDAADcCVCAHIAE2AlAgByALNgJMIAcgATYCSCAHIA83A0AgByAKNgI8IAdBgICAgHg2AjAgByAGNgIsIAdBADYCKCAHIAQ5AyAgByAQNwMYIAdBCGogB0EYahAXIAcoAgghCSAHKAIMCyEGIA4gCTYCACAOIAY2AgQgB0HwAGokACANKAIMIQogDSgCCCEGIAMEQCACIANBAnRBBBBHCyABBEAgACABQQN0QQgQRwsgDCAGQQFxIgA2AgggDCAKQQAgABs2AgQgDEEAIAogABs2AgAgDUEQaiQAIAwoAgAgDCgCBCAMKAIIIAxBEGokAAuBIAMmfwV8AX4jAEEQayIPJAAjAEFAaiIKJAAgCiAENgIoIAogAzYCJCAKIAI2AiAgCiABNgIcIAogADYC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ZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAASGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb246IMAAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnMAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjExOC9zcmMvZXh0ZXJucmVmLnJzAC9ydXN0Yy81OTgwNzYxNmUxZmEyNTQwNzI0YmZiYWMxNGQ3OTc2ZDdlNGEzODYwL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBzcmMvbGliLnJzAAAAAA4DEAAKAAAA0gAAABkAAAAOAxAACgAAANoAAAAaAAAADgMQAAoAAADaAAAAPQAAAA4DEAAKAAAAyQAAAB0AAAAOAxAACgAAAKoAAAAQAAAADgMQAAoAAACqAAAAIgAAAA4DEAAKAAAArQAAACIAAAAOAxAACgAAABcCAAAcAAAADgMQAAoAAAALAgAAJgAAAA4DEAAKAAAA8gEAACoAAAAOAxAACgAAAPgBAAAqAAAADgMQAAoAAAD+AQAAMgAAAA4DEAAKAAAAkgEAAA8AAAAOAxAACgAAAJIBAAAsAAAADgMQAAoAAACNAQAADwAAAA4DEAAKAAAAjQEAACwAAABzb3VyY2UgaW5kZXhlcyBtdXN0IGJlIGVtcHR5IG9yIG5vbmRlY3JlYXNpbmdzYW1wbGUgdmFsdWVzIG11c3QgYmUgZmluaXRlIGFuZCBhZGRyZXNzYWJsZXNhbXBsZSBtZXRhZGF0YSBtdXN0IGJlIGZpbml0ZSBhbmQgc2FtcGxlUmF0ZSBwb3NpdGl2ZQAOAxAACgAAABYBAAAkAAAADgMQAAoAAAAuAgAAMAAAAA4DEAAKAAAALwIAAB8AAAAOAxAACgAAAC8CAAA1AAAADgMQAAoAAADWAQAAIAAAAA4DEAAKAAAAsQEAAC0AAAAOAxAACgAAALIBAAAtAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZQ4DEAAKAAAAmgIAABYAAABzdHJhdGVneSBkb2VzIG5vdCByZXR1cm4gc291cmNlIGluZGV4ZXNzdHJhdGVneSBkb2VzIG5vdCByZXR1cm4gYWdncmVnYXRlIHZhbHVlc3JlZ2lzdGVyZWQgZGF0YXNldHMgbXVzdCBjb250YWluIGZpbml0ZSBjb29yZGluYXRlc3ggYW5kIHkgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aA4DEAAKAAAAdgEAABIAAAAOAxAACgAAAHMBAAA8AAAADgMQAAoAAABMAgAAHAAAAA4DEAAKAAAATwIAACwAAAAOAxAACgAAAFACAAAdAAAADgMQAAoAAABRAgAAHQAAAA4DEAAKAAAAUgIAACUAAAABAAAADgMQAAoAAACUAAAAEgAAAA4DEAAKAAAAggAAABAAAAAOAxAACgAAAIIAAAAiAAAADgMQAAoAAACFAAAAIgAAAA4DEAAKAAAAAQEAAB0AAAAOAxAACgAAABwDAAAlAAAADgMQAAoAAABJAAAAQwAAAA4DEAAKAAAALQMAAA4AAAAOAxAACgAAACYDAAAnAAAAZGF0YXNldCBoYW5kbGUgd2FzIG5vdCBmb3VuZA4DEAAKAAAAPwMAACUAAAAOAxAACgAAAAoDAAAlAAAADgMQAAoAAABRAwAAJQAAANoBEABPAAAA3wEAABkAAABtaWQgPiBsZW4AAAB6ARAAXwAAAE0AAAAfAAAAegEQAF8AAABHAAAAFwAAAA4DEAAKAAAAfwEAABoAAAAOAxAACgAAAPMAAAAWAAAADgMQAAoAAABJAAAAQwAAAA4DEAAKAAAASQAAAEMAAAAqAhAAZwAAAHwAAAARAAAAKgIQAGcAAACJAAAAEQAAAAUAAAAMAAAABAAAAAYAAAAHAAAACAAAAAAAAAAIAAAABAAAAAkAAAAKAAAACwAAAAwAAAANAAAAEAAAAAQAAAAOAAAADwAAABAAAAARAAAAbV3L1ixQ62N4QaZXcRuLuRWiXFU0VQfUU3itgVHwo/dhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAADjAhAAKgAAALEEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAA4wIQACoAAAC3BAAADQAAAAAAAAAIAAAABAAAABIAAABBY2Nlc3NFcnJvcgAFAAAADAAAAAQAAAATAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAACSAhAAUAAAABwAAAAFAAAAfSB9Y2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZTAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5YXR0ZW1wdCB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmRlciB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvdXNlci1wcm92aWRlZCBjb21wYXJpc29uIGZ1bmN0aW9uIGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgYSB0b3RhbCBvcmRlcgAaARAAXwAAAFwDAAAFAAAAUmVmQ2VsbCBhbHJlYWR5IG11dGFibHkgYm9ycm93ZWRSZWZDZWxsIGFscmVhZHkgYm9ycm93ZWQAQfCVwAALAQgAQYCWwAALAQQAfAlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuOTUuMCAoNTk4MDc2MTZlIDIwMjYtMDQtMTQpBndhbHJ1cwYwLjI2LjEMd2FzbS1iaW5kZ2VuEzAuMi4xMTggKDc1M2JiN2ZmNCkAaw90YXJnZXRfZmVhdHVyZXMGKw9tdXRhYmxlLWdsb2JhbHMrE25vbnRyYXBwaW5nLWZwdG9pbnQrC2J1bGstbWVtb3J5KwhzaWduLWV4dCsPcmVmZXJlbmNlLXR5cGVzKwptdWx0aXZhbHVl", "" + import.meta.url));
2876
- let t = Qr();
2978
+ let t = gi();
2877
2979
  (typeof e == "string" || typeof Request == "function" && e instanceof Request || typeof URL == "function" && e instanceof URL) && (e = fetch(e));
2878
- let { instance: n, module: r } = await gi(await e, t);
2879
- return hi(n, r);
2980
+ let { instance: n, module: r } = await Pi(await e, t);
2981
+ return Ni(n, r);
2880
2982
  }
2881
2983
  //#endregion
2882
2984
  //#region src/core/wasmSampling.ts
2883
- var vi = {
2985
+ var Ii = {
2884
2986
  none: 0,
2885
2987
  peak: 1,
2886
2988
  lttb: 2,
@@ -2889,24 +2991,24 @@ var vi = {
2889
2991
  max: 5,
2890
2992
  minmax: 6,
2891
2993
  sum: 7
2892
- }, yi;
2893
- function bi(e, t) {
2994
+ }, Li;
2995
+ function Ri(e, t) {
2894
2996
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
2895
2997
  }
2896
- function xi(e) {
2998
+ function zi(e) {
2897
2999
  if (e.x.length !== e.y.length) throw Error("x and y must have the same length");
2898
3000
  }
2899
- function Si(e) {
2900
- return yi ??= Promise.resolve(_i(e)).then(() => void 0), yi;
3001
+ function Bi(e) {
3002
+ return Li ??= Promise.resolve(Fi(e)).then(() => void 0), Li;
2901
3003
  }
2902
- async function Ci(e) {
2903
- xi(e), await Si();
2904
- let t = bi(e.targetPointCount, e.x.length), n = vi[e.strategy];
3004
+ async function Vi(e) {
3005
+ zi(e), await Bi();
3006
+ let t = Ri(e.targetPointCount, e.x.length), n = Ii[e.strategy];
2905
3007
  if (e.strategy !== "average" && e.strategy !== "sum") return {
2906
3008
  kind: "source-indexes",
2907
- sourceIndexes: Zr(e.x, e.y, n, t)
3009
+ sourceIndexes: hi(e.x, e.y, n, t)
2908
3010
  };
2909
- let r = Xr(e.x, e.y, n, t), i = new Float64Array(r.length / 2), a = new Float64Array(r.length / 2);
3011
+ let r = mi(e.x, e.y, n, t), i = new Float64Array(r.length / 2), a = new Float64Array(r.length / 2);
2910
3012
  for (let e = 0; e < i.length; e += 1) i[e] = r[e * 2], a[e] = r[e * 2 + 1];
2911
3013
  return {
2912
3014
  kind: "aggregates",
@@ -2914,50 +3016,69 @@ async function Ci(e) {
2914
3016
  y: a
2915
3017
  };
2916
3018
  }
2917
- async function wi(e, t) {
3019
+ async function Hi(e, t) {
2918
3020
  if (e.length !== t.length) throw Error("x and y must have the same length");
2919
- await Si();
2920
- let n = Jr(e, t);
3021
+ await Bi();
3022
+ let n = fi(e, t);
2921
3023
  return n.length === 4 ? {
2922
3024
  x: [n[0], n[1]],
2923
3025
  y: [n[2], n[3]]
2924
3026
  } : void 0;
2925
3027
  }
2926
- async function Ti(e, t, n) {
3028
+ async function Ui(e, t, n) {
2927
3029
  if (e.length !== t.length) throw Error("x and y must have the same length");
2928
- await Si();
2929
- let r = Yr(e, t, n[0], n[1]);
3030
+ await Bi();
3031
+ let r = pi(e, t, n[0], n[1]);
2930
3032
  return [r[0], r[1]];
2931
3033
  }
2932
3034
  //#endregion
2933
3035
  //#region src/components/core/trackPagination.ts
2934
- var Ei = (e, t) => t ? e.filter((e) => e.series.length > 0) : e, Di = (e, t, n, r, i) => {
3036
+ var Wi = (e, t) => t ? e.filter((e) => e.series.length > 0) : e, Gi = (e, t, n, r, i) => {
2935
3037
  let a = t?.[i];
2936
3038
  if (a !== void 0) return a;
2937
3039
  if (e !== void 0) return n === 1 ? e : typeof e == "number" ? e + r : `${e}-${r + 1}`;
2938
- }, Oi = (e, t, n) => (r) => {
3040
+ }, Ki = (e, t, n) => (r) => {
2939
3041
  let i = n(), a = i.findIndex((e) => e.id === r);
2940
- return Di(e(), t(), i.length, a >= 0 ? a : 0, r);
3042
+ return Gi(e(), t(), i.length, a >= 0 ? a : 0, r);
2941
3043
  };
2942
3044
  //#endregion
2943
3045
  //#region src/components/core/yAxisLayoutMetrics.ts
2944
- function ki(e, t, n, r) {
3046
+ function qi(e, t, n, r) {
2945
3047
  return e === "independent" ? Object.fromEntries(t.flatMap((e, t) => {
2946
3048
  let n = r[t];
2947
3049
  return n ? [[e.id, n]] : [];
2948
3050
  })) : n;
2949
3051
  }
2950
- function Ai(e, t, n, r, i, a, o, s) {
2951
- let c = e.filter((e) => e.visibleSeries.length > 0).flatMap((e) => pr(e, t, n, r, i)).map((e) => mr(e.domain, a, void 0, e.seriesList[0]?.unit, o, s).tickTextWidth), l = Math.max(7, ...c), u = l + 7 + 4, d = -(7 + l + 0 + 20 / 2);
3052
+ function Ji(e, t, n, r, i, a, o, s, c = 0, l = !0) {
3053
+ let u = e.filter((e) => e.visibleSeries.length > 0).flatMap((e) => Tr(e, t, n, r, i, c)).map((e) => Er(e.domain, a, void 0, l ? e.seriesList[0]?.unit : void 0, o, s).tickTextWidth), d = Math.max(7, ...u), f = d + 7 + 4, p = -(7 + d + 0 + 20 / 2);
2952
3054
  return {
2953
- tickClearance: u,
2954
- fullClearance: l + 7 + 0 + 20 + 4,
2955
- labelCenterX: d
3055
+ tickClearance: f,
3056
+ fullClearance: d + 7 + 0 + 20 + 4,
3057
+ labelCenterX: p
3058
+ };
3059
+ }
3060
+ //#endregion
3061
+ //#region src/components/core/useWaveformYAxisLayout.ts
3062
+ function Yi(e) {
3063
+ let { props: n, chartTracks: r, layoutTracks: i, chartWidth: a, gridOptions: o, viewportYDomains: s, yAxisTickCount: c } = e, l = t(() => n.layoutPreset === "edge-compact"), u = t(() => !l.value || n.unitDisplayMode === "axis"), d = t(() => Ji(r.value, n.overlayMode, n.yDomain, n.yDomains, s.value, n.axes?.y?.nice !== !1, c.value, n.displayMode === "compact", n.axes?.y?.upperPaddingRatio, u.value)), f = t(() => r.value.some((e) => e.visibleSeries.length === 1 && !!(e.visibleSeries[0]?.name.trim() || n.yLabel))), p = t(() => r.value.some((e) => e.visibleSeries.length > 0)), m = t(() => Math.max(zt.left, f.value ? d.value.fullClearance : p.value ? d.value.tickClearance : 0)), h = t(() => Dr(i.value.filter((e) => e.visibleSeries.length > 0), n.overlayMode, n.yDomain, n.yDomains, c.value, n.axes?.y?.nice !== !1, n.displayMode === "compact", s.value, n.axes?.y?.upperPaddingRatio, u.value)), g = t(() => l.value ? zt.right + Math.max(0, _.value - 4) : n.overlayMode === "multi-axis" ? Math.max(m.value, h.value.clearance.left) : m.value), _ = t(() => p.value ? n.overlayMode === "multi-axis" || f.value ? h.value.clearance.left : d.value.tickClearance : 0), v = t(() => n.overlayMode === "multi-axis" ? Math.max(zt.right, h.value.clearance.right) : zt.right), y = t(() => Math.max(0, a.value - g.value - v.value));
3064
+ return {
3065
+ yAxisMetrics: d,
3066
+ yAxisSlots: h,
3067
+ resolvedChartLeftMargin: g,
3068
+ innerWidth: y,
3069
+ yAxisLayout: t(() => {
3070
+ let e = Gn(n.displayMode), t = o.value.columnCount, r = t > 1, i = Math.max(e, l.value ? h.value.clearance.left : d.value.fullClearance), a = Math.max(e, d.value.tickClearance), s = (y.value - i * Math.max(0, t - 1)) / t >= 120;
3071
+ return {
3072
+ horizontalGap: n.overlayMode === "multi-axis" && r && p.value ? Math.max(e, h.value.clearance.left + h.value.clearance.right) : r && p.value ? f.value && s ? i : a : e,
3073
+ hideSecondaryLabels: n.overlayMode !== "multi-axis" && r && f.value && !s
3074
+ };
3075
+ }),
3076
+ hasVisibleWaveformData: p
2956
3077
  };
2957
3078
  }
2958
3079
  //#endregion
2959
3080
  //#region src/components/core/useWaveformLayout.ts
2960
- function ji(e) {
3081
+ function Xi(e) {
2961
3082
  let { props: n, preparedSeries: r, currentPage: i, hiddenSeriesIdSet: a, chartWidth: o, innerHeight: s, isCleanView: c, sharedTransform: l, independentTransforms: u, sharedYDomains: d, independentYDomains: f, annotationInteraction: p, linePointOverrides: m } = e, h = t(() => r.value.map((e, t) => ({
2962
3083
  ...e,
2963
3084
  color: e.color ?? (t === 0 ? n.lineColor : Ut[t % Ut.length])
@@ -2980,83 +3101,91 @@ function ji(e) {
2980
3101
  yDomain: o.length ? _t(o) : [0, 1]
2981
3102
  };
2982
3103
  });
2983
- }), v = t(() => Dn(n.rendering)), y = t(() => Ei(_.value, g.value.hideEmptyTracks)), b = t(() => Un(y.value.length, g.value)), x = t(() => Wn(y.value, i.value, g.value)), S = t(() => {
2984
- let e = x.value.filter((e) => e.series.length > 0);
2985
- return g.value.fillIncompleteLastRow && e.length > 0 ? e : x.value;
2986
- }), C = t(() => or(s.value, n.axes?.y?.splitNumber)), w = t(() => ki(n.displayMode, _.value, d.value, f.value)), T = t(() => Ai(_.value, n.overlayMode, n.yDomain, n.yDomains, w.value, n.axes?.y?.nice !== !1, C.value, n.displayMode === "compact")), E = t(() => _.value.some((e) => e.visibleSeries.length === 1 && !!(e.visibleSeries[0]?.name.trim() || n.yLabel))), D = t(() => _.value.some((e) => e.visibleSeries.length > 0)), O = t(() => Math.max(zt.left, E.value ? T.value.fullClearance : D.value ? T.value.tickClearance : 0)), k = t(() => hr(S.value.filter((e) => e.visibleSeries.length > 0), n.overlayMode, n.yDomain, n.yDomains, C.value, n.axes?.y?.nice !== !1, n.displayMode === "compact", w.value)), A = t(() => n.overlayMode === "multi-axis" ? Math.max(O.value, k.value.clearance.left) : O.value), j = t(() => n.overlayMode === "multi-axis" ? Math.max(zt.right, k.value.clearance.right) : zt.right), M = t(() => Math.max(0, o.value - A.value - j.value)), N = t(() => {
2987
- let e = Gn(n.displayMode), t = g.value.columnCount, r = t > 1, i = Math.max(e, T.value.fullClearance), a = Math.max(e, T.value.tickClearance), o = (M.value - i * Math.max(0, t - 1)) / t >= 120;
2988
- return {
2989
- horizontalGap: n.overlayMode === "multi-axis" && r && D.value ? Math.max(e, k.value.clearance.left + k.value.clearance.right) : r && D.value ? E.value && o ? i : a : e,
2990
- hideSecondaryLabels: n.overlayMode !== "multi-axis" && r && E.value && !o
2991
- };
2992
- }), P = t(() => h.value.length > 0), F = t(() => M.value > 0 && s.value > 0), I = t(() => n.xLabel ?? `时间(${n.timeUnit})`), L = t(() => n.interactionMode), R = t(() => L.value !== "annotation"), z = t(() => {
3104
+ }), v = t(() => n.unitDisplayMode === "legend-single-series" && !_.value.some((e) => e.series.length > 1)), y = t(() => Dn(n.rendering)), b = t(() => Wi(_.value, g.value.hideEmptyTracks)), x = t(() => Un(b.value.length, g.value)), S = t(() => Wn(b.value, i.value, g.value)), C = t(() => {
3105
+ let e = S.value.filter((e) => e.series.length > 0);
3106
+ return g.value.fillIncompleteLastRow && e.length > 0 ? e : S.value;
3107
+ }), w = t(() => vr(s.value, n.axes?.y?.splitNumber)), T = t(() => qi(n.displayMode, _.value, d.value, f.value)), { yAxisMetrics: E, yAxisSlots: D, resolvedChartLeftMargin: O, innerWidth: k, yAxisLayout: A, hasVisibleWaveformData: j } = Yi({
3108
+ props: n,
3109
+ chartTracks: _,
3110
+ layoutTracks: C,
3111
+ chartWidth: o,
3112
+ gridOptions: g,
3113
+ viewportYDomains: T,
3114
+ yAxisTickCount: w
3115
+ }), M = t(() => h.value.length > 0), N = t(() => k.value > 0 && s.value > 0), P = t(() => n.xLabel ?? `时间(${n.timeUnit})`), F = t(() => n.interactionMode), I = t(() => F.value !== "annotation"), L = t(() => {
2993
3116
  let e = [];
2994
3117
  return _.value.forEach((t) => {
2995
3118
  t.visibleSeries.length && e.push(t.xDomain[0], t.xDomain[1]);
2996
3119
  }), _t(e);
2997
- }), B = t(() => {
3120
+ }), R = t(() => {
2998
3121
  let e = n.initialXDomain;
2999
- return e && Number.isFinite(e[0]) && Number.isFinite(e[1]) && e[0] !== e[1] ? Qn(e[0] < e[1] ? e : [e[1], e[0]], n.xDomainStrategy, !0) : Qn(z.value, n.xDomainStrategy);
3000
- }), V = (e) => {
3122
+ return e && Number.isFinite(e[0]) && Number.isFinite(e[1]) && e[0] !== e[1] ? cr(Qn(e[0] < e[1] ? e : [e[1], e[0]], n.xDomainStrategy, !0), n) : cr(Qn(L.value, n.xDomainStrategy), n);
3123
+ }), z = (e) => {
3001
3124
  let t = n.initialXDomains?.[e.series?.trackId ?? e.series?.id ?? e.id] ?? (e.series ? n.initialXDomains?.[e.series.id] : void 0) ?? n.initialXDomain;
3002
- return t && Number.isFinite(t[0]) && Number.isFinite(t[1]) && t[0] !== t[1] ? Qn(t[0] < t[1] ? t : [t[1], t[0]], n.xDomainStrategy, !0) : Qn(_t(e.seriesList.flatMap((e) => e.xDomain)), n.xDomainStrategy);
3003
- }, H = t(() => l.value.rescaleX(W(B.value, [0, M.value])).domain()), U = t(() => Kn(M.value, s.value, g.value, n.displayMode, S.value.map(Boolean), N.value.horizontalGap).map((e, t) => ({
3125
+ return t && Number.isFinite(t[0]) && Number.isFinite(t[1]) && t[0] !== t[1] ? cr(Qn(t[0] < t[1] ? t : [t[1], t[0]], n.xDomainStrategy, !0), n) : cr(Qn(_t(e.seriesList.flatMap((e) => e.xDomain)), n.xDomainStrategy), n);
3126
+ }, B = t(() => lr(l.value.rescaleX(W(R.value, [0, k.value])).domain(), n)), V = t(() => Kn(k.value, s.value, g.value, n.displayMode, C.value.map((e) => n.layoutPreset === "edge-compact" ? e.series.length > 0 : !!e), A.value.horizontalGap, !0, n.layoutPreset === "edge-compact" && !c.value).map((e, t) => ({
3004
3127
  ...e,
3005
- series: S.value[t]
3006
- }))), G = t(() => er({
3007
- cells: U.value,
3128
+ series: C.value[t]
3129
+ }))), H = t(() => fr({
3130
+ cells: V.value,
3008
3131
  grid: g.value,
3132
+ useNonEmptyBottomTracks: n.layoutPreset === "edge-compact",
3133
+ compactYAxisLayout: n.layoutPreset === "edge-compact",
3134
+ showAxisUnits: n.layoutPreset !== "edge-compact" || n.unitDisplayMode === "axis",
3009
3135
  displayMode: n.displayMode,
3010
3136
  overlayMode: n.overlayMode,
3011
3137
  independentTransforms: u.value,
3012
- sharedZoomDomain: H.value,
3013
- initialXDomain: n.initialXDomain ? B.value : void 0,
3138
+ sharedZoomDomain: B.value,
3139
+ initialXDomain: n.initialXDomain ? R.value : void 0,
3014
3140
  initialXDomains: n.initialXDomains,
3015
3141
  xDomainStrategy: n.xDomainStrategy,
3142
+ integerZoom: n.integerZoom,
3016
3143
  fixedYDomain: n.yDomain,
3017
3144
  fixedYDomains: n.yDomains,
3018
- yDomains: w.value,
3145
+ yDomains: T.value,
3019
3146
  timeUnit: n.timeUnit,
3020
3147
  xAxisLabelFormatter: n.axes?.x?.labelFormatter,
3021
3148
  yAxisSplitNumber: n.axes?.y?.splitNumber,
3022
3149
  yAxisNice: n.axes?.y?.nice,
3023
- rendering: v.value,
3150
+ yAxisUpperPaddingRatio: n.axes?.y?.upperPaddingRatio,
3151
+ rendering: y.value,
3024
3152
  linePointOverrides: m?.value,
3025
- hideSecondaryLabels: c.value || N.value.hideSecondaryLabels,
3153
+ hideSecondaryLabels: c.value || A.value.hideSecondaryLabels,
3026
3154
  yLabel: n.yLabel,
3027
- yAxisLabelX: k.value.slots.find((e) => e.side === "left" && e.sideIndex === 0)?.labelOffset ?? T.value.labelCenterX,
3028
- yAxisSlots: k.value.slots,
3029
- showCompactEmptyTracks: n.displayMode === "compact" && P.value
3030
- })), ee = (e) => e.seriesList.map((t) => ({
3155
+ yAxisLabelX: D.value.slots.find((e) => e.side === "left" && e.sideIndex === 0)?.labelOffset ?? E.value.labelCenterX,
3156
+ yAxisSlots: D.value.slots,
3157
+ showCompactEmptyTracks: n.displayMode === "compact" && M.value
3158
+ })), U = (e) => e.seriesList.map((t) => ({
3031
3159
  ...e,
3032
3160
  series: t,
3033
3161
  yScale: e.seriesPaths.find((e) => e.series.id === t.id)?.yScale ?? e.yScale
3034
- })), te = (e, t) => e.seriesPaths.find((e) => e.series.id === t)?.yScale ?? e.yScale, ne = t(() => G.value.flatMap(ee));
3162
+ })), G = (e, t) => e.seriesPaths.find((e) => e.series.id === t)?.yScale ?? e.yScale, K = t(() => H.value.flatMap(U));
3035
3163
  return {
3036
3164
  chartSeries: h,
3037
3165
  chartTracks: _,
3038
- pageableTracks: y,
3039
- renderingOptions: v,
3166
+ showLegendUnits: v,
3167
+ pageableTracks: b,
3168
+ renderingOptions: y,
3040
3169
  gridOptions: g,
3041
- pageCount: b,
3042
- pagedTracks: x,
3043
- resolvedChartLeftMargin: A,
3044
- innerWidth: M,
3045
- hasVisibleWaveformData: D,
3046
- hasWaveformData: P,
3047
- hasChartArea: F,
3048
- resolvedXLabel: I,
3049
- activeInteractionMode: L,
3050
- isZoomMode: R,
3051
- initialXDomain: B,
3052
- sharedZoomDomain: H,
3053
- resolveInitialTrackDomain: V,
3054
- gridCells: U,
3055
- trackLayouts: G,
3056
- annotationLayoutsForTrack: ee,
3057
- resolveSeriesYScale: te,
3058
- annotationTrackLayouts: ne,
3059
- renderedAnnotations: t(() => n.annotationsVisible ? Pe(n.annotations, ne.value, M.value, s.value) : []),
3170
+ pageCount: x,
3171
+ pagedTracks: S,
3172
+ resolvedChartLeftMargin: O,
3173
+ innerWidth: k,
3174
+ hasVisibleWaveformData: j,
3175
+ hasWaveformData: M,
3176
+ hasChartArea: N,
3177
+ resolvedXLabel: P,
3178
+ activeInteractionMode: F,
3179
+ isZoomMode: I,
3180
+ initialXDomain: R,
3181
+ sharedZoomDomain: B,
3182
+ resolveInitialTrackDomain: z,
3183
+ gridCells: V,
3184
+ trackLayouts: H,
3185
+ annotationLayoutsForTrack: U,
3186
+ resolveSeriesYScale: G,
3187
+ annotationTrackLayouts: K,
3188
+ renderedAnnotations: t(() => n.annotationsVisible ? Pe(n.annotations, K.value, k.value, s.value) : []),
3060
3189
  editorSeries: t(() => {
3061
3190
  let e = p.editorDraft.value?.annotation.seriesId, t = h.value.find((t) => t.id === e);
3062
3191
  return t ? {
@@ -3066,94 +3195,97 @@ function ji(e) {
3066
3195
  unit: t.unit
3067
3196
  } : void 0;
3068
3197
  }),
3069
- resolveFrameNumber: Oi(() => n.frameNumber, () => n.frameNumbers, () => _.value)
3198
+ resolveFrameNumber: Ki(() => n.frameNumber, () => n.frameNumbers, () => _.value)
3070
3199
  };
3071
3200
  }
3072
- var Mi = 1e-6;
3073
- function Ni(e) {
3201
+ var Zi = 1e-6;
3202
+ function Qi(e) {
3074
3203
  return Number.isFinite(e) ? Math.max(1, e) : 1;
3075
3204
  }
3076
- function Pi({ naturalWidth: e, naturalHeight: t, availableWidth: n, rotation: r }) {
3077
- let i = Ni(e), a = Ni(t), o = Ni(n), s = Number.isFinite(r) ? r : 0, c = s * Math.PI / 180, l = Math.abs(Math.cos(c)), u = Math.abs(Math.sin(c)), d = (s % 360 + 360) % 360;
3078
- if (!(d > Mi && Math.abs(d - 360) > Mi)) {
3079
- let e = Math.max(1, Math.ceil(i / o)), t = o, n = a * e;
3205
+ function $i({ naturalWidth: e, naturalHeight: t, availableWidth: n, rotation: r, edgeCompact: i = !1 }) {
3206
+ let a = i ? 8 : 18, o = i ? 0 : 44, s = Qi(e), c = Qi(t), l = Qi(n), u = Number.isFinite(r) ? r : 0, d = u * Math.PI / 180, f = Math.abs(Math.cos(d)), p = Math.abs(Math.sin(d)), m = (u % 360 + 360) % 360;
3207
+ if (!(m > Zi && Math.abs(m - 360) > Zi)) {
3208
+ let e = Math.max(1, Math.ceil(s / l)), t = l, n = c * e;
3080
3209
  return {
3081
3210
  textWidth: t,
3082
3211
  textHeight: n,
3083
3212
  visualWidth: t,
3084
3213
  visualHeight: n,
3085
- areaHeight: Math.max(44, n + 18),
3214
+ areaHeight: Math.max(o, n + a),
3086
3215
  scale: 1,
3087
3216
  wrapped: e > 1
3088
3217
  };
3089
3218
  }
3090
- let f = i * l + a * u, p = i * u + a * l, m = Math.min(1, o / f, 142 / p), h = f * m, g = p * m;
3219
+ let h = 160 - a, g = s * f + c * p, _ = s * p + c * f, v = Math.min(1, l / g, h / _), y = g * v, b = _ * v;
3091
3220
  return {
3092
- textWidth: i,
3093
- textHeight: a,
3094
- visualWidth: h,
3095
- visualHeight: g,
3096
- areaHeight: Math.min(160, Math.max(44, g + 18)),
3097
- scale: m,
3221
+ textWidth: s,
3222
+ textHeight: c,
3223
+ visualWidth: y,
3224
+ visualHeight: b,
3225
+ areaHeight: Math.min(160, Math.max(o, b + a)),
3226
+ scale: v,
3098
3227
  wrapped: !1
3099
3228
  };
3100
3229
  }
3101
3230
  //#endregion
3102
3231
  //#region src/components/core/useWaveformPresentation.ts
3103
- function Fi(e) {
3232
+ function ea(e) {
3104
3233
  let { props: n, observedWidth: r, observedHeight: i, measuredTitleWidth: a, measuredTitleHeight: o, internalHiddenSeriesIds: s, paginationBandHeight: c } = e, l = t(() => Number.isFinite(n.width) ? Math.max(0, n.width ?? 0) : void 0), u = t(() => Number.isFinite(n.height) ? Math.max(180, n.height ?? 0) : void 0), d = t(() => r.value > 0 ? r.value : l.value ?? 0), f = t(() => i.value > 0 ? i.value : u.value ?? 180), p = t(() => ({
3105
3234
  width: l.value === void 0 ? "100%" : `${l.value}px`,
3106
3235
  height: u.value === void 0 ? "100%" : `${u.value}px`
3107
3236
  })), m = t(() => n.cleanView === !0), h = t(() => n.presentationMode === !0), g = t(() => {
3108
- let e = n.zeroLine.width;
3237
+ let e = n.zeroLine.width, t = n.zeroLine.opacity, r = n.zeroLine.boundaryThreshold;
3109
3238
  return {
3110
3239
  visible: n.zeroLine.visible !== !1,
3111
3240
  color: n.zeroLine.color || Gt.COLOR,
3112
3241
  width: typeof e == "number" && Number.isFinite(e) && e > 0 ? e : Gt.WIDTH,
3113
- dash: n.zeroLine.dash ?? Gt.DASH
3242
+ dash: n.zeroLine.dash ?? Gt.DASH,
3243
+ opacity: typeof t == "number" && Number.isFinite(t) && t >= 0 && t <= 1 ? t : Gt.OPACITY,
3244
+ boundaryThreshold: typeof r == "number" && Number.isFinite(r) && r >= 0 ? r : Gt.BOUNDARY_THRESHOLD
3114
3245
  };
3115
3246
  }), _ = t(() => n.legend.backgroundColor || "rgba(255, 255, 255, 0.7)"), v = t(() => n.legend.interactive === !0), y = t(() => n.hiddenSeriesIds === void 0 ? s.value : new Set(n.hiddenSeriesIds)), b = t(() => Array.from(y.value)), x = (e) => n.legend.trackPositions?.[e] ?? n.legend.position ?? "top-right", S = (e) => {
3116
3247
  let t = n.legend.orientation ?? "auto";
3117
3248
  return t === "auto" ? e === "top" || e === "bottom" ? "horizontal" : "vertical" : t;
3118
- }, C = t(() => n.title?.text.trim() ?? ""), w = t(() => !!n.title && n.title?.visible !== !1 && C.value.length > 0), T = t(() => w.value && !m.value), E = t(() => {
3249
+ }, C = t(() => n.layoutPreset === "edge-compact"), w = t(() => n.title?.text.trim() ?? ""), T = t(() => !!n.title && n.title?.visible !== !1 && w.value.length > 0), E = t(() => T.value && !m.value), D = t(() => {
3119
3250
  let e = n.title?.textStyle?.fontSize;
3120
3251
  return Number.isFinite(e) && (e ?? 0) > 0 ? e : 14;
3121
- }), D = t(() => {
3252
+ }), O = t(() => {
3122
3253
  let e = n.title?.textStyle?.rotation;
3123
3254
  return Number.isFinite(e) ? e : 0;
3124
- }), O = t(() => {
3125
- let e = (D.value % 360 + 360) % 360;
3255
+ }), k = t(() => {
3256
+ let e = (O.value % 360 + 360) % 360;
3126
3257
  return e > 1e-6 && Math.abs(e - 360) > 1e-6;
3127
- }), k = t(() => ({
3258
+ }), A = t(() => ({
3128
3259
  color: n.title?.textStyle?.color ?? "#1f2937",
3129
- fontSize: `${E.value}px`,
3260
+ fontSize: `${D.value}px`,
3130
3261
  fontFamily: n.title?.textStyle?.fontFamily || "\"Microsoft YaHei\", \"微软雅黑\", sans-serif",
3131
3262
  fontWeight: n.title?.textStyle?.fontWeight ?? 400,
3132
3263
  fontStyle: n.title?.textStyle?.fontStyle ?? "normal",
3133
3264
  textDecoration: n.title?.textStyle?.textDecoration ?? "none",
3134
3265
  letterSpacing: n.title?.textStyle?.letterSpacing ?? "normal",
3135
3266
  lineHeight: String(Ht)
3136
- })), A = t(() => {
3137
- let e = Number.parseFloat(n.title?.textStyle?.letterSpacing ?? ""), t = Number.isFinite(e) ? Math.max(0, C.value.length - 1) * e : 0;
3138
- return Math.max(1, C.value.length * E.value * Vt + t);
3139
- }), j = t(() => {
3267
+ })), j = t(() => {
3268
+ let e = Number.parseFloat(n.title?.textStyle?.letterSpacing ?? ""), t = Number.isFinite(e) ? Math.max(0, w.value.length - 1) * e : 0;
3269
+ return Math.max(1, w.value.length * D.value * Vt + t);
3270
+ }), M = t(() => {
3140
3271
  let e = d.value - 48;
3141
- return e > 0 ? e : A.value;
3142
- }), M = t(() => ({
3143
- ...k.value,
3272
+ return e > 0 ? e : j.value;
3273
+ }), N = t(() => ({
3274
+ ...A.value,
3144
3275
  width: "max-content",
3145
- maxWidth: O.value ? "none" : `${j.value}px`,
3146
- whiteSpace: O.value ? "nowrap" : "normal",
3147
- overflowWrap: O.value ? "normal" : "anywhere"
3148
- })), N = t(() => Pi({
3149
- naturalWidth: a.value || A.value,
3150
- naturalHeight: o.value || E.value * 1.2,
3151
- availableWidth: j.value,
3152
- rotation: D.value
3153
- })), P = t(() => w.value ? N.value.areaHeight : 0), F = (e, t) => typeof e == "number" && Number.isFinite(e) && e >= 0 ? e : t, I = t(() => ({
3154
- top: F(n.plotMargin.top, zt.top),
3155
- bottom: F(n.plotMargin.bottom, zt.bottom)
3156
- })), L = t(() => I.value.top), R = t(() => Math.max(0, f.value - P.value - c.value));
3276
+ maxWidth: k.value ? "none" : `${M.value}px`,
3277
+ whiteSpace: k.value ? "nowrap" : "normal",
3278
+ overflowWrap: k.value ? "normal" : "anywhere"
3279
+ })), P = t(() => $i({
3280
+ naturalWidth: C.value && !k.value && o.value > 0 ? Math.min(a.value || M.value, M.value) : a.value || j.value,
3281
+ naturalHeight: o.value || D.value * 1.2,
3282
+ availableWidth: M.value,
3283
+ rotation: O.value,
3284
+ edgeCompact: C.value
3285
+ })), F = t(() => T.value ? P.value.areaHeight : 0), I = (e, t) => typeof e == "number" && Number.isFinite(e) && e >= 0 ? e : t, L = t(() => ({
3286
+ top: I(n.plotMargin.top, zt.top),
3287
+ bottom: Math.max(C.value ? 44 : 0, I(n.plotMargin.bottom, zt.bottom))
3288
+ })), R = t(() => L.value.top), z = t(() => Math.max(0, f.value - F.value - c.value));
3157
3289
  return {
3158
3290
  fixedWidth: l,
3159
3291
  fixedHeight: u,
@@ -3161,6 +3293,7 @@ function Fi(e) {
3161
3293
  chartHeight: f,
3162
3294
  containerStyle: p,
3163
3295
  isCleanView: m,
3296
+ isEdgeCompact: C,
3164
3297
  isPresentationMode: h,
3165
3298
  resolvedZeroLine: g,
3166
3299
  legendBackgroundColor: _,
@@ -3169,98 +3302,98 @@ function Fi(e) {
3169
3302
  resolvedHiddenSeriesIds: b,
3170
3303
  resolveLegendPosition: x,
3171
3304
  resolveLegendOrientation: S,
3172
- resolvedTitleText: C,
3173
- titleAreaReserved: w,
3174
- titleVisible: T,
3175
- titleMeasureStyle: M,
3176
- titleLayout: N,
3177
- titleAreaHeight: P,
3178
- resolvedPlotMargin: I,
3179
- chartTopMargin: L,
3180
- drawingHeight: R,
3181
- xAxisTitleY: t(() => Math.max(0, R.value - 12)),
3182
- innerHeight: t(() => Math.max(0, R.value - I.value.top - I.value.bottom)),
3305
+ resolvedTitleText: w,
3306
+ titleAreaReserved: T,
3307
+ titleVisible: E,
3308
+ titleMeasureStyle: N,
3309
+ titleLayout: P,
3310
+ titleAreaHeight: F,
3311
+ resolvedPlotMargin: L,
3312
+ chartTopMargin: R,
3313
+ drawingHeight: z,
3314
+ xAxisTitleY: t(() => Math.max(0, z.value - 12 + (C.value ? 3 : 0))),
3315
+ innerHeight: t(() => Math.max(0, z.value - L.value.top - L.value.bottom)),
3183
3316
  titleAreaStyle: t(() => ({
3184
- height: `${P.value}px`,
3317
+ height: `${F.value}px`,
3185
3318
  justifyContent: n.title?.align === "left" ? "flex-start" : n.title?.align === "right" ? "flex-end" : "center"
3186
3319
  })),
3187
3320
  titleVisualStyle: t(() => ({
3188
- width: `${N.value.visualWidth}px`,
3189
- height: `${N.value.visualHeight}px`
3321
+ width: `${P.value.visualWidth}px`,
3322
+ height: `${P.value.visualHeight}px`
3190
3323
  })),
3191
3324
  titleTextStyle: t(() => ({
3192
- ...k.value,
3193
- width: `${N.value.textWidth}px`,
3194
- minHeight: `${N.value.textHeight}px`,
3325
+ ...A.value,
3326
+ width: `${P.value.textWidth}px`,
3327
+ minHeight: `${P.value.textHeight}px`,
3195
3328
  textAlign: n.title?.align ?? "center",
3196
- whiteSpace: O.value ? "nowrap" : "normal",
3197
- overflowWrap: O.value ? "normal" : "anywhere",
3198
- transform: `translate(-50%, -50%) rotate(${D.value}deg) scale(${N.value.scale})`
3329
+ whiteSpace: k.value ? "nowrap" : "normal",
3330
+ overflowWrap: k.value ? "normal" : "anywhere",
3331
+ transform: `translate(-50%, -50%) rotate(${O.value}deg) scale(${P.value.scale})`
3199
3332
  }))
3200
3333
  };
3201
3334
  }
3202
3335
  //#endregion
3203
3336
  //#region src/core/samplingReferenceValues.ts
3204
- function Ii(e, t) {
3337
+ function ta(e, t) {
3205
3338
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
3206
3339
  }
3207
- function Li(e, t, n, r) {
3340
+ function na(e, t, n, r) {
3208
3341
  let i = r - n;
3209
3342
  return {
3210
3343
  start: n + Math.floor(e * i / t),
3211
3344
  end: n + Math.floor((e + 1) * i / t)
3212
3345
  };
3213
3346
  }
3214
- function Ri(e, t) {
3347
+ function ra(e, t) {
3215
3348
  e[e.length - 1] !== t && e.push(t);
3216
3349
  }
3217
- function zi(e, t, n) {
3350
+ function ia(e, t, n) {
3218
3351
  if (e <= t) return Array.from({ length: e }, (e, t) => t);
3219
3352
  if (t === 1) return [0];
3220
3353
  if (t === 2) return [0, e - 1];
3221
3354
  let r = [0];
3222
- return n().forEach((e) => Ri(r, e)), Ri(r, e - 1), r;
3355
+ return n().forEach((e) => ra(r, e)), ra(r, e - 1), r;
3223
3356
  }
3224
- function Bi(e, t, n) {
3357
+ function aa(e, t, n) {
3225
3358
  let r = n === "minmax" ? Math.floor((t - 2) / 2) : Math.max(0, t - 2);
3226
- return zi(e.length, t, () => {
3359
+ return ia(e.length, t, () => {
3227
3360
  if (!r) return [];
3228
3361
  let t = [];
3229
3362
  for (let i = 0; i < r; i += 1) {
3230
- let a = Li(i, r, 1, e.length - 1), o = a.start, s = a.start;
3363
+ let a = na(i, r, 1, e.length - 1), o = a.start, s = a.start;
3231
3364
  for (let t = a.start + 1; t < a.end; t += 1) e[t] < e[o] && (o = t), e[t] > e[s] && (s = t);
3232
- n === "min" ? Ri(t, o) : n === "max" ? Ri(t, s) : o <= s ? (Ri(t, o), Ri(t, s)) : (Ri(t, s), Ri(t, o));
3365
+ n === "min" ? ra(t, o) : n === "max" ? ra(t, s) : o <= s ? (ra(t, o), ra(t, s)) : (ra(t, s), ra(t, o));
3233
3366
  }
3234
3367
  return t;
3235
3368
  });
3236
3369
  }
3237
- function Vi(e, t) {
3370
+ function oa(e, t) {
3238
3371
  let n = Math.floor((t - 2) / 4);
3239
- return zi(e.length, t, () => {
3372
+ return ia(e.length, t, () => {
3240
3373
  if (!n) return [];
3241
3374
  let t = [];
3242
3375
  for (let r = 0; r < n; r += 1) {
3243
- let i = Li(r, n, 1, e.length - 1), a = i.start, o = i.start;
3376
+ let i = na(r, n, 1, e.length - 1), a = i.start, o = i.start;
3244
3377
  for (let t = i.start + 1; t < i.end; t += 1) e[t] < e[a] && (a = t), e[t] > e[o] && (o = t);
3245
3378
  [
3246
3379
  i.start,
3247
3380
  a,
3248
3381
  o,
3249
3382
  i.end - 1
3250
- ].sort((e, t) => e - t).forEach((e) => Ri(t, e));
3383
+ ].sort((e, t) => e - t).forEach((e) => ra(t, e));
3251
3384
  }
3252
3385
  return t;
3253
3386
  });
3254
3387
  }
3255
- function Hi(e, t, n) {
3256
- return zi(e.length, n, () => {
3388
+ function sa(e, t, n) {
3389
+ return ia(e.length, n, () => {
3257
3390
  let r = (e.length - 2) / (n - 2), i = [], a = 0;
3258
3391
  for (let o = 0; o < n - 2; o += 1) {
3259
3392
  let s = Math.min(e.length, Math.floor((o + 1) * r) + 1), c = Math.min(e.length, Math.floor((o + 2) * r) + 1), l = 0, u = 0;
3260
3393
  for (let n = s; n < c; n += 1) l += e[n], u += t[n];
3261
3394
  let d = c - s;
3262
3395
  d ? (l /= d, u /= d) : (l = e[e.length - 1], u = t[t.length - 1]);
3263
- let f = Li(o, n - 2, 1, e.length - 1), p = f.start, m = -1;
3396
+ let f = na(o, n - 2, 1, e.length - 1), p = f.start, m = -1;
3264
3397
  for (let n = f.start; n < f.end; n += 1) {
3265
3398
  let r = Math.abs((e[a] - l) * (t[n] - t[a]) - (e[a] - e[n]) * (u - t[a]));
3266
3399
  r > m && (m = r, p = n);
@@ -3270,10 +3403,10 @@ function Hi(e, t, n) {
3270
3403
  return i;
3271
3404
  });
3272
3405
  }
3273
- function Ui(e, t, n, r) {
3274
- let i = Ii(n, e.length), a = new Float64Array(i), o = new Float64Array(i);
3406
+ function ca(e, t, n, r) {
3407
+ let i = ta(n, e.length), a = new Float64Array(i), o = new Float64Array(i);
3275
3408
  for (let n = 0; n < i; n += 1) {
3276
- let s = Li(n, i, 0, e.length);
3409
+ let s = na(n, i, 0, e.length);
3277
3410
  for (let r = s.start; r < s.end; r += 1) a[n] += e[r], o[n] += t[r];
3278
3411
  let c = s.end - s.start;
3279
3412
  a[n] /= c, r === "average" && (o[n] /= c);
@@ -3284,10 +3417,10 @@ function Ui(e, t, n, r) {
3284
3417
  y: o
3285
3418
  };
3286
3419
  }
3287
- function Wi(e, t, n, r) {
3420
+ function la(e, t, n, r) {
3288
3421
  if (e.length !== t.length) throw Error("x and y must have the same length");
3289
- if (n === "average" || n === "sum") return Ui(e, t, r, n);
3290
- let i = Ii(r, e.length), a = n === "none" || e.length <= i ? Array.from({ length: e.length }, (e, t) => t) : n === "peak" ? Vi(t, i) : n === "lttb" ? Hi(e, t, i) : Bi(t, i, n);
3422
+ if (n === "average" || n === "sum") return ca(e, t, r, n);
3423
+ let i = ta(r, e.length), a = n === "none" || e.length <= i ? Array.from({ length: e.length }, (e, t) => t) : n === "peak" ? oa(t, i) : n === "lttb" ? sa(e, t, i) : aa(t, i, n);
3291
3424
  return {
3292
3425
  kind: "source-indexes",
3293
3426
  sourceIndexes: Uint32Array.from(a)
@@ -3295,41 +3428,41 @@ function Wi(e, t, n, r) {
3295
3428
  }
3296
3429
  //#endregion
3297
3430
  //#region src/core/workerSampling/javascriptBackend.ts
3298
- var Gi = {
3431
+ var ua = {
3299
3432
  kind: "javascript",
3300
3433
  sample(e) {
3301
- return Wi(e.x, e.y, e.strategy, e.targetPointCount);
3434
+ return la(e.x, e.y, e.strategy, e.targetPointCount);
3302
3435
  }
3303
- }, Ki = 8 * 1024 * 1024;
3304
- function qi(e, t) {
3436
+ }, da = 8 * 1024 * 1024;
3437
+ function fa(e, t) {
3305
3438
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
3306
3439
  }
3307
- function Ji(e, t, n, r) {
3440
+ function pa(e, t, n, r) {
3308
3441
  let i = r - n;
3309
3442
  return {
3310
3443
  start: n + Math.floor(e * i / t),
3311
3444
  end: n + Math.floor((e + 1) * i / t)
3312
3445
  };
3313
3446
  }
3314
- function Yi(e, t) {
3447
+ function ma(e, t) {
3315
3448
  e[e.length - 1] !== t && e.push(t);
3316
3449
  }
3317
- function Xi(e) {
3450
+ function ha(e) {
3318
3451
  return "minimumIndexes" in e ? e.minimumIndexes.byteLength + e.maximumIndexes.byteLength : e.x.byteLength + e.y.byteLength + e.count.byteLength;
3319
3452
  }
3320
- function Zi(e, t) {
3453
+ function ga(e, t) {
3321
3454
  let n = 1;
3322
3455
  for (; n * 2 <= t && e % (n * 2) == 0;) n *= 2;
3323
3456
  return n;
3324
3457
  }
3325
- var Qi = class {
3458
+ var _a = class {
3326
3459
  points;
3327
3460
  extremaLayers = [];
3328
3461
  sumLayers = [];
3329
3462
  indexBytes = 0;
3330
3463
  maxBytes;
3331
3464
  constructor(e, t = {}) {
3332
- this.points = e, this.maxBytes = Number.isFinite(t.maxBytes) ? Math.max(0, Math.floor(t.maxBytes ?? 0)) : Ki;
3465
+ this.points = e, this.maxBytes = Number.isFinite(t.maxBytes) ? Math.max(0, Math.floor(t.maxBytes ?? 0)) : da;
3333
3466
  }
3334
3467
  get byteLength() {
3335
3468
  return this.indexBytes;
@@ -3338,7 +3471,7 @@ var Qi = class {
3338
3471
  this.extremaLayers.length = 0, this.sumLayers.length = 0, this.indexBytes = 0;
3339
3472
  }
3340
3473
  sample(e, t, n, r) {
3341
- let i = Math.max(0, Math.min(this.points.length, Math.floor(e))), a = Math.max(i, Math.min(this.points.length, Math.floor(t))), o = a - i, s = qi(r, o);
3474
+ let i = Math.max(0, Math.min(this.points.length, Math.floor(e))), a = Math.max(i, Math.min(this.points.length, Math.floor(t))), o = a - i, s = fa(r, o);
3342
3475
  if (n !== "lttb") return n === "average" || n === "sum" ? this.aggregate(i, a, s, n) : n === "none" || o <= s ? this.allIndexes(i, a) : s === 1 ? this.indexes([i]) : s === 2 ? this.indexes([i, a - 1]) : this.extrema(i, a, s, n);
3343
3476
  }
3344
3477
  allIndexes(e, t) {
@@ -3358,24 +3491,24 @@ var Qi = class {
3358
3491
  if (i === 0) return this.indexes([e, t - 1]);
3359
3492
  let a = [e];
3360
3493
  for (let n = 0; n < i; n += 1) {
3361
- let o = Ji(n, i, e + 1, t - 1), s = this.queryExtrema(o.start, o.end);
3494
+ let o = pa(n, i, e + 1, t - 1), s = this.queryExtrema(o.start, o.end);
3362
3495
  if (!s) return;
3363
- if (r === "min") Yi(a, s.minimum);
3364
- else if (r === "max") Yi(a, s.maximum);
3365
- else if (r === "minmax") s.minimum <= s.maximum ? (Yi(a, s.minimum), Yi(a, s.maximum)) : (Yi(a, s.maximum), Yi(a, s.minimum));
3496
+ if (r === "min") ma(a, s.minimum);
3497
+ else if (r === "max") ma(a, s.maximum);
3498
+ else if (r === "minmax") s.minimum <= s.maximum ? (ma(a, s.minimum), ma(a, s.maximum)) : (ma(a, s.maximum), ma(a, s.minimum));
3366
3499
  else for (let e of [
3367
3500
  o.start,
3368
3501
  s.minimum,
3369
3502
  s.maximum,
3370
3503
  o.end - 1
3371
- ].sort((e, t) => e - t)) Yi(a, e);
3504
+ ].sort((e, t) => e - t)) ma(a, e);
3372
3505
  }
3373
- return Yi(a, t - 1), this.indexes(a);
3506
+ return ma(a, t - 1), this.indexes(a);
3374
3507
  }
3375
3508
  aggregate(e, t, n, r) {
3376
3509
  let i = new Float64Array(n), a = new Float64Array(n);
3377
3510
  for (let o = 0; o < n; o += 1) {
3378
- let s = Ji(o, n, e, t), c = this.querySum(s.start, s.end);
3511
+ let s = pa(o, n, e, t), c = this.querySum(s.start, s.end);
3379
3512
  if (!c || c.count === 0) return;
3380
3513
  i[o] = c.x / c.count, a[o] = r === "average" ? c.y / c.count : c.y;
3381
3514
  }
@@ -3390,7 +3523,7 @@ var Qi = class {
3390
3523
  if (!this.ensureExtrema(n)) return;
3391
3524
  let r = e, i = e;
3392
3525
  for (let n = e; n < t;) {
3393
- let e = Zi(n, t - n), a = Math.floor(Math.log2(e)), o = n / e, s = this.extremaLayers[a], c = s ? s.minimumIndexes[o] : n, l = s ? s.maximumIndexes[o] : n;
3526
+ let e = ga(n, t - n), a = Math.floor(Math.log2(e)), o = n / e, s = this.extremaLayers[a], c = s ? s.minimumIndexes[o] : n, l = s ? s.maximumIndexes[o] : n;
3394
3527
  this.isMinimum(c, r) && (r = c), this.isMaximum(l, i) && (i = l), n += e;
3395
3528
  }
3396
3529
  return {
@@ -3403,7 +3536,7 @@ var Qi = class {
3403
3536
  if (!this.ensureSum(n)) return;
3404
3537
  let r = 0, i = 0, a = 0;
3405
3538
  for (let n = e; n < t;) {
3406
- let e = Zi(n, t - n), o = Math.floor(Math.log2(e)), s = n / e, c = this.sumLayers[o];
3539
+ let e = ga(n, t - n), o = Math.floor(Math.log2(e)), s = n / e, c = this.sumLayers[o];
3407
3540
  if (c) r += c.x[s], i += c.y[s], a += c.count[s];
3408
3541
  else {
3409
3542
  let e = this.points[n];
@@ -3424,7 +3557,7 @@ var Qi = class {
3424
3557
  minimumIndexes: new Uint32Array(e),
3425
3558
  maximumIndexes: new Uint32Array(e)
3426
3559
  };
3427
- if (!this.reserve(Xi(n))) return !1;
3560
+ if (!this.reserve(ha(n))) return !1;
3428
3561
  let r = this.extremaLayers[t - 1];
3429
3562
  for (let t = 0; t < e; t += 1) {
3430
3563
  let e = t * 2, i = e + 1, a = r ? r.minimumIndexes[e] : e, o = r ? r.maximumIndexes[e] : e, s = r ? i < r.minimumIndexes.length : i < this.points.length, c = r && s ? r.minimumIndexes[i] : i, l = r && s ? r.maximumIndexes[i] : i;
@@ -3442,7 +3575,7 @@ var Qi = class {
3442
3575
  y: new Float64Array(e),
3443
3576
  count: new Uint32Array(e)
3444
3577
  };
3445
- if (!this.reserve(Xi(n))) return !1;
3578
+ if (!this.reserve(ha(n))) return !1;
3446
3579
  let r = this.sumLayers[t - 1];
3447
3580
  for (let t = 0; t < e; t += 1) {
3448
3581
  let e = t * 2, i = e + 1;
@@ -3467,8 +3600,8 @@ var Qi = class {
3467
3600
  let n = this.points[e], r = this.points[t];
3468
3601
  return n.y > r.y || n.y === r.y && e < t;
3469
3602
  }
3470
- }, $i = 1e3, ea = L((e) => e.x);
3471
- function ta(e) {
3603
+ }, va = 1e3, ya = L((e) => e.x);
3604
+ function ba(e) {
3472
3605
  let t = [], n = !0, r = -Infinity;
3473
3606
  for (let i of e) !Number.isFinite(i.x) || !Number.isFinite(i.y) || (i.x < r && (n = !1), r = i.x, t.push({
3474
3607
  x: i.x,
@@ -3479,7 +3612,7 @@ function ta(e) {
3479
3612
  }));
3480
3613
  return n || t.sort((e, t) => e.x - t.x), t;
3481
3614
  }
3482
- function na(e, t) {
3615
+ function xa(e, t) {
3483
3616
  let n = Infinity, r = -Infinity, i = Infinity, a = -Infinity;
3484
3617
  for (let t of e) n = Math.min(n, t.x), r = Math.max(r, t.x), i = Math.min(i, t.y), a = Math.max(a, t.y);
3485
3618
  return {
@@ -3489,7 +3622,7 @@ function na(e, t) {
3489
3622
  yDomain: e.length ? [i, a] : null
3490
3623
  };
3491
3624
  }
3492
- function ra(e, t, n = e.length) {
3625
+ function Sa(e, t, n = e.length) {
3493
3626
  let r = Infinity, i = -Infinity, a = Infinity, o = -Infinity;
3494
3627
  for (let n = 0; n < e.length; n += 1) r = Math.min(r, e[n]), i = Math.max(i, e[n]), a = Math.min(a, t[n]), o = Math.max(o, t[n]);
3495
3628
  return {
@@ -3499,39 +3632,39 @@ function ra(e, t, n = e.length) {
3499
3632
  yDomain: e.length ? [a, o] : null
3500
3633
  };
3501
3634
  }
3502
- function ia(e, t) {
3635
+ function Ca(e, t) {
3503
3636
  return e ? e.revision === t ? "ok" : "stale-revision" : "not-found";
3504
3637
  }
3505
- function aa(e) {
3638
+ function wa(e) {
3506
3639
  return e === "auto" ? "peak" : e;
3507
3640
  }
3508
- function oa(e) {
3641
+ function Ta(e) {
3509
3642
  if (Number.isFinite(e.maxPointCount) && (e.maxPointCount ?? 0) >= 1) return Math.floor(e.maxPointCount);
3510
3643
  let t = Number.isFinite(e.plotWidth) ? Math.max(0, e.plotWidth) : 0, n = Number.isFinite(e.maxPointsPerPixel) ? Math.max(0, e.maxPointsPerPixel ?? 0) : 4;
3511
3644
  return Math.max(1, Math.floor(t * n));
3512
3645
  }
3513
- function sa(e, t) {
3646
+ function Ea(e, t) {
3514
3647
  if (e.mode === "raw") return !0;
3515
3648
  if (e.mode !== "auto") return !1;
3516
- let n = Number.isFinite(e.autoThreshold) ? Math.max(1, Math.floor(e.autoThreshold ?? 0)) : $i;
3649
+ let n = Number.isFinite(e.autoThreshold) ? Math.max(1, Math.floor(e.autoThreshold ?? 0)) : va;
3517
3650
  if (!e.previousSelectedMode) return t <= n;
3518
3651
  let r = Number.isFinite(e.autoHysteresis) ? Math.max(0, Math.floor(e.autoHysteresis ?? 0)) : 0;
3519
3652
  return e.previousSelectedMode === "raw" ? t <= n + r : t <= Math.max(0, n - r);
3520
3653
  }
3521
- function ca(e, t) {
3654
+ function Da(e, t) {
3522
3655
  let n = e[0], r = e.at(-1);
3523
- return Number.isFinite(t) && n && r && t >= n.x && t <= r.x ? e[ea.center(e, t)] : void 0;
3656
+ return Number.isFinite(t) && n && r && t >= n.x && t <= r.x ? e[ya.center(e, t)] : void 0;
3524
3657
  }
3525
- function la(e) {
3658
+ function Oa(e) {
3526
3659
  return e ? e.kind === "source-indexes" ? e.sourceIndexes.length : e.x.length : 0;
3527
3660
  }
3528
- function ua(e, t) {
3661
+ function ka(e, t) {
3529
3662
  return e.kind === "aggregates" ? e : {
3530
3663
  kind: "source-indexes",
3531
3664
  sourceIndexes: Uint32Array.from(e.sourceIndexes, (e) => e + t)
3532
3665
  };
3533
3666
  }
3534
- function da(e, t, n, r, i) {
3667
+ function Aa(e, t, n, r, i) {
3535
3668
  return [
3536
3669
  e.datasetId,
3537
3670
  e.revision,
@@ -3551,14 +3684,14 @@ function da(e, t, n, r, i) {
3551
3684
  e.errorBarMinSpacing ?? 0
3552
3685
  ].join("\0");
3553
3686
  }
3554
- function fa(e, t, n, r, i, a, o, s) {
3687
+ function ja(e, t, n, r, i, a, o, s) {
3555
3688
  return {
3556
3689
  seriesId: e.seriesId,
3557
3690
  datasetId: e.datasetId,
3558
3691
  mode: e.mode,
3559
3692
  selectedMode: i,
3560
3693
  backend: r,
3561
- strategy: aa(e.strategy),
3694
+ strategy: wa(e.strategy),
3562
3695
  sourcePointCount: t,
3563
3696
  visiblePointCount: n,
3564
3697
  renderedPointCount: o,
@@ -3574,18 +3707,18 @@ function fa(e, t, n, r, i, a, o, s) {
3574
3707
  }
3575
3708
  //#endregion
3576
3709
  //#region src/core/workerSampling/repositoryDataset.ts
3577
- function pa(e) {
3710
+ function Ma(e) {
3578
3711
  return e?.y.length ?? 0;
3579
3712
  }
3580
- function ma(e, t) {
3713
+ function Na(e, t) {
3581
3714
  return e.x ? e.x[t] : e.sampleStartTime + (e.sampleSourceIndexes?.[t] ?? t) / e.sampleRate;
3582
3715
  }
3583
- function ha(e, t) {
3716
+ function Pa(e, t) {
3584
3717
  let n = (t, n) => {
3585
- let r = 0, i = pa(e);
3718
+ let r = 0, i = Ma(e);
3586
3719
  for (; r < i;) {
3587
3720
  let a = r + Math.floor((i - r) / 2);
3588
- (n ? ma(e, a) <= t : ma(e, a) < t) ? r = a + 1 : i = a;
3721
+ (n ? Na(e, a) <= t : Na(e, a) < t) ? r = a + 1 : i = a;
3589
3722
  }
3590
3723
  return r;
3591
3724
  }, r = Math.min(t[0], t[1]), i = Math.max(t[0], t[1]);
@@ -3594,13 +3727,13 @@ function ha(e, t) {
3594
3727
  end: n(i, !0)
3595
3728
  };
3596
3729
  }
3597
- function ga(e, t, n) {
3598
- return e.x ? e.x.subarray(t, n) : Float64Array.from({ length: n - t }, (n, r) => ma(e, t + r));
3730
+ function Fa(e, t, n) {
3731
+ return e.x ? e.x.subarray(t, n) : Float64Array.from({ length: n - t }, (n, r) => Na(e, t + r));
3599
3732
  }
3600
- function _a(e) {
3733
+ function Ia(e) {
3601
3734
  return e?.kind === "wasm" && "registerDataset" in e && "disposeDataset" in e && "disposeAllDatasets" in e && "datasetIndexBytes" in e && "registerSamples" in e && "sampleDataset" in e;
3602
3735
  }
3603
- function va(e, t) {
3736
+ function La(e, t) {
3604
3737
  let n = [], r = Math.min(e.length, t.length);
3605
3738
  for (let i = 0; i < r; i += 1) Number.isFinite(e[i]) && Number.isFinite(t[i]) && n.push(i);
3606
3739
  return n.sort((t, n) => e[t] - e[n] || t - n), {
@@ -3608,14 +3741,14 @@ function va(e, t) {
3608
3741
  y: Float64Array.from(n, (e) => t[e])
3609
3742
  };
3610
3743
  }
3611
- function ya(e, t, n, r) {
3744
+ function Ra(e, t, n, r) {
3612
3745
  if (t?.kind === "typed") {
3613
- let e = va(t.x, t.y);
3746
+ let e = La(t.x, t.y);
3614
3747
  return {
3615
3748
  x: e.x,
3616
3749
  y: e.y,
3617
3750
  revision: n,
3618
- metrics: ra(e.x, e.y, Math.max(t.x.length, t.y.length))
3751
+ metrics: Sa(e.x, e.y, Math.max(t.x.length, t.y.length))
3619
3752
  };
3620
3753
  }
3621
3754
  if (t?.kind === "samples") {
@@ -3649,35 +3782,35 @@ function ya(e, t, n, r) {
3649
3782
  }
3650
3783
  };
3651
3784
  }
3652
- let i = ta(e ?? t?.points ?? []);
3785
+ let i = ba(e ?? t?.points ?? []);
3653
3786
  return {
3654
3787
  x: Float64Array.from(i, (e) => e.x),
3655
3788
  y: Float64Array.from(i, (e) => e.y),
3656
3789
  points: i,
3657
3790
  revision: n,
3658
- metrics: na(i, e?.length ?? t?.points.length ?? 0),
3659
- index: new Qi(i, { maxBytes: r })
3791
+ metrics: xa(i, e?.length ?? t?.points.length ?? 0),
3792
+ index: new _a(i, { maxBytes: r })
3660
3793
  };
3661
3794
  }
3662
- function ba(e, t, n) {
3663
- !_a(e) || t.wasmDatasetHandle !== void 0 || (t.wasmDatasetHandle = t.x ? e.registerDataset(t.x, t.y, n) : e.registerSamples(t.y, t.sampleSourceIndexes, t.sampleStartTime, t.sampleRate, n), t.wasmIndexBytes = e.datasetIndexBytes(t.wasmDatasetHandle));
3795
+ function za(e, t, n) {
3796
+ !Ia(e) || t.wasmDatasetHandle !== void 0 || (t.wasmDatasetHandle = t.x ? e.registerDataset(t.x, t.y, n) : e.registerSamples(t.y, t.sampleSourceIndexes, t.sampleStartTime, t.sampleRate, n), t.wasmIndexBytes = e.datasetIndexBytes(t.wasmDatasetHandle));
3664
3797
  }
3665
- function xa(e, t) {
3666
- t.index?.dispose(), t.wasmDatasetHandle !== void 0 && _a(e) && e.disposeDataset(t.wasmDatasetHandle);
3798
+ function Ba(e, t) {
3799
+ t.index?.dispose(), t.wasmDatasetHandle !== void 0 && Ia(e) && e.disposeDataset(t.wasmDatasetHandle);
3667
3800
  }
3668
3801
  //#endregion
3669
3802
  //#region src/core/workerSampling/samplingCache.ts
3670
- var Sa = 96, Ca = 16 * 1024 * 1024;
3671
- function wa(e) {
3803
+ var Va = 96, Ha = 16 * 1024 * 1024;
3804
+ function Ua(e) {
3672
3805
  return e.kind === "source-indexes" ? e.sourceIndexes.byteLength : e.x.byteLength + e.y.byteLength;
3673
3806
  }
3674
- var Ta = class {
3807
+ var Wa = class {
3675
3808
  entries = /* @__PURE__ */ new Map();
3676
3809
  bytes = 0;
3677
3810
  maxEntries;
3678
3811
  maxBytes;
3679
3812
  constructor(e = {}) {
3680
- this.maxEntries = Number.isFinite(e.maxEntries) ? Math.max(0, Math.floor(e.maxEntries ?? 0)) : Sa, this.maxBytes = Number.isFinite(e.maxBytes) ? Math.max(0, Math.floor(e.maxBytes ?? 0)) : Ca;
3813
+ this.maxEntries = Number.isFinite(e.maxEntries) ? Math.max(0, Math.floor(e.maxEntries ?? 0)) : Va, this.maxBytes = Number.isFinite(e.maxBytes) ? Math.max(0, Math.floor(e.maxBytes ?? 0)) : Ha;
3681
3814
  }
3682
3815
  get metrics() {
3683
3816
  return {
@@ -3692,7 +3825,7 @@ var Ta = class {
3692
3825
  if (t) return this.entries.delete(e), this.entries.set(e, t), t.output;
3693
3826
  }
3694
3827
  set(e, t) {
3695
- let n = wa(t);
3828
+ let n = Ua(t);
3696
3829
  if (n > this.maxBytes || this.maxEntries === 0) return;
3697
3830
  let r = this.entries.get(e);
3698
3831
  for (r && (this.bytes -= r.bytes, this.entries.delete(e)), this.entries.set(e, {
@@ -3712,14 +3845,14 @@ var Ta = class {
3712
3845
  clear() {
3713
3846
  this.entries.clear(), this.bytes = 0;
3714
3847
  }
3715
- }, Ea = class {
3848
+ }, Ga = class {
3716
3849
  datasets = /* @__PURE__ */ new Map();
3717
3850
  javascriptBackend;
3718
3851
  cache;
3719
3852
  indexMaxBytes;
3720
3853
  wasmBackend;
3721
3854
  constructor(e = {}) {
3722
- this.javascriptBackend = e.javascriptBackend ?? Gi, this.wasmBackend = e.wasmBackend, this.indexMaxBytes = e.indexMaxBytes, this.cache = new Ta({
3855
+ this.javascriptBackend = e.javascriptBackend ?? ua, this.wasmBackend = e.wasmBackend, this.indexMaxBytes = e.indexMaxBytes, this.cache = new Wa({
3723
3856
  maxEntries: e.cacheMaxEntries,
3724
3857
  maxBytes: e.cacheMaxBytes
3725
3858
  });
@@ -3732,9 +3865,9 @@ var Ta = class {
3732
3865
  };
3733
3866
  }
3734
3867
  setWasmBackend(e) {
3735
- this.wasmBackend && this.wasmBackend !== e && _a(this.wasmBackend) && (this.wasmBackend.disposeAllDatasets(), this.datasets.forEach((e) => {
3868
+ this.wasmBackend && this.wasmBackend !== e && Ia(this.wasmBackend) && (this.wasmBackend.disposeAllDatasets(), this.datasets.forEach((e) => {
3736
3869
  e.wasmDatasetHandle = void 0, e.wasmIndexBytes = void 0;
3737
- })), this.wasmBackend = e, _a(e) && this.datasets.forEach((t) => ba(e, t, this.indexMaxBytes));
3870
+ })), this.wasmBackend = e, Ia(e) && this.datasets.forEach((t) => za(e, t, this.indexMaxBytes));
3738
3871
  }
3739
3872
  handle(e) {
3740
3873
  switch (e.type) {
@@ -3750,15 +3883,15 @@ var Ta = class {
3750
3883
  register(e, t, n, r) {
3751
3884
  let i = this.datasets.get(e);
3752
3885
  if (i) return this.datasetResponse(t, e, i, "stale-revision");
3753
- let a = ya(n, r, 1, this.indexMaxBytes);
3754
- return ba(this.wasmBackend, a, this.indexMaxBytes), this.datasets.set(e, a), this.datasetResponse(t, e, a, "ok");
3886
+ let a = Ra(n, r, 1, this.indexMaxBytes);
3887
+ return za(this.wasmBackend, a, this.indexMaxBytes), this.datasets.set(e, a), this.datasetResponse(t, e, a, "ok");
3755
3888
  }
3756
3889
  replace(e, t, n, r, i) {
3757
- let a = this.datasets.get(e), o = ia(a, n);
3890
+ let a = this.datasets.get(e), o = Ca(a, n);
3758
3891
  if (o !== "ok" || !a) return this.datasetResponse(t, e, a, o);
3759
- xa(this.wasmBackend, a), this.cache.deleteDataset(e);
3760
- let s = ya(r, i, a.revision + 1, this.indexMaxBytes);
3761
- return ba(this.wasmBackend, s, this.indexMaxBytes), this.datasets.set(e, s), this.datasetResponse(t, e, s, "ok");
3892
+ Ba(this.wasmBackend, a), this.cache.deleteDataset(e);
3893
+ let s = Ra(r, i, a.revision + 1, this.indexMaxBytes);
3894
+ return za(this.wasmBackend, s, this.indexMaxBytes), this.datasets.set(e, s), this.datasetResponse(t, e, s, "ok");
3762
3895
  }
3763
3896
  sample(e) {
3764
3897
  return {
@@ -3768,28 +3901,28 @@ var Ta = class {
3768
3901
  };
3769
3902
  }
3770
3903
  sampleSeries(e, t) {
3771
- let n = performance.now(), r = this.datasets.get(t.datasetId), i = ia(r, t.revision);
3904
+ let n = performance.now(), r = this.datasets.get(t.datasetId), i = Ca(r, t.revision);
3772
3905
  if (i !== "ok" || !r) return this.sampleResponse(e, t, i, void 0, "unavailable", "sampled", 0, n, !1);
3773
- let a = ha(r, t.xDomain), o = a.end - a.start;
3774
- if (sa(t, o)) return this.sampleResponse(e, t, "ok", {
3906
+ let a = Pa(r, t.xDomain), o = a.end - a.start;
3907
+ if (Ea(t, o)) return this.sampleResponse(e, t, "ok", {
3775
3908
  kind: "source-indexes",
3776
3909
  sourceIndexes: Uint32Array.from({ length: o }, (e, t) => a.start + t)
3777
3910
  }, "raw", "raw", o, n, !1);
3778
3911
  let s = t.mode === "wasm" || t.mode === "auto" && this.wasmBackend ? this.wasmBackend : this.javascriptBackend, c = !s && t.wasmFailureFallback === "javascript", l = s ?? (c ? this.javascriptBackend : void 0);
3779
3912
  if (!l) return this.sampleResponse(e, t, "wasm-unavailable", void 0, "unavailable", "sampled", o, n, !1);
3780
- let u = aa(t.strategy), d = oa(t), f = da(t, a, u, d, l.kind), p = this.cache.get(f);
3913
+ let u = wa(t.strategy), d = Ta(t), f = Aa(t, a, u, d, l.kind), p = this.cache.get(f);
3781
3914
  if (p) return this.sampleResponse(e, t, c ? "wasm-unavailable" : "ok", p, l.kind, "sampled", o, n, !0);
3782
- let m = (l.kind === "wasm" ? r.wasmDatasetHandle !== void 0 && _a(l) ? l.sampleDataset(r.wasmDatasetHandle, a.start, a.end, u, d) : void 0 : r.index?.sample(a.start, a.end, u, d)) ?? ua(l.sample({
3783
- x: ga(r, a.start, a.end),
3915
+ let m = (l.kind === "wasm" ? r.wasmDatasetHandle !== void 0 && Ia(l) ? l.sampleDataset(r.wasmDatasetHandle, a.start, a.end, u, d) : void 0 : r.index?.sample(a.start, a.end, u, d)) ?? ka(l.sample({
3916
+ x: Fa(r, a.start, a.end),
3784
3917
  y: r.y.subarray(a.start, a.end),
3785
3918
  points: r.points?.slice(a.start, a.end) ?? [],
3786
3919
  strategy: u,
3787
3920
  targetPointCount: d
3788
3921
  }), a.start);
3789
- return this.cache.set(f, m), r.wasmDatasetHandle !== void 0 && _a(l) && (r.wasmIndexBytes = l.datasetIndexBytes(r.wasmDatasetHandle)), this.sampleResponse(e, t, c ? "wasm-unavailable" : "ok", m, l.kind, "sampled", o, n, !1);
3922
+ return this.cache.set(f, m), r.wasmDatasetHandle !== void 0 && Ia(l) && (r.wasmIndexBytes = l.datasetIndexBytes(r.wasmDatasetHandle)), this.sampleResponse(e, t, c ? "wasm-unavailable" : "ok", m, l.kind, "sampled", o, n, !1);
3790
3923
  }
3791
3924
  sampleResponse(e, t, n, r, i, a, o, s, c) {
3792
- let l = fa(t, pa(this.datasets.get(t.datasetId)), o, i, a, performance.now() - s, la(r), c);
3925
+ let l = ja(t, Ma(this.datasets.get(t.datasetId)), o, i, a, performance.now() - s, Oa(r), c);
3793
3926
  return l.requestId = e, {
3794
3927
  seriesId: t.seriesId,
3795
3928
  datasetId: t.datasetId,
@@ -3800,7 +3933,7 @@ var Ta = class {
3800
3933
  };
3801
3934
  }
3802
3935
  findNearest(e, t, n, r) {
3803
- let i = this.datasets.get(e), a = ia(i, n);
3936
+ let i = this.datasets.get(e), a = Ca(i, n);
3804
3937
  return a !== "ok" || !i ? {
3805
3938
  type: "find-nearest-point-response",
3806
3939
  requestId: t,
@@ -3813,12 +3946,12 @@ var Ta = class {
3813
3946
  datasetId: e,
3814
3947
  revision: n,
3815
3948
  status: a,
3816
- point: i.points ? ca(i.points, r) : (() => {
3817
- let e = ha(i, [r, r]);
3818
- if (!pa(i) || r < ma(i, 0) || r > ma(i, pa(i) - 1)) return;
3819
- let t = Math.min(pa(i) - 1, e.start), n = Math.max(0, t - 1), a = Math.abs(r - ma(i, n)) < Math.abs(ma(i, t) - r) ? n : t;
3820
- return Number.isFinite(r) && pa(i) ? {
3821
- x: ma(i, a),
3949
+ point: i.points ? Da(i.points, r) : (() => {
3950
+ let e = Pa(i, [r, r]);
3951
+ if (!Ma(i) || r < Na(i, 0) || r > Na(i, Ma(i) - 1)) return;
3952
+ let t = Math.min(Ma(i) - 1, e.start), n = Math.max(0, t - 1), a = Math.abs(r - Na(i, n)) < Math.abs(Na(i, t) - r) ? n : t;
3953
+ return Number.isFinite(r) && Ma(i) ? {
3954
+ x: Na(i, a),
3822
3955
  y: i.y[a]
3823
3956
  } : void 0;
3824
3957
  })()
@@ -3826,15 +3959,15 @@ var Ta = class {
3826
3959
  }
3827
3960
  metrics(e, t, n) {
3828
3961
  let r = this.datasets.get(e);
3829
- return this.datasetResponse(t, e, r, ia(r, n));
3962
+ return this.datasetResponse(t, e, r, Ca(r, n));
3830
3963
  }
3831
3964
  dispose(e, t, n) {
3832
- let r = this.datasets.get(e), i = ia(r, n);
3833
- return i === "ok" && r && (xa(this.wasmBackend, r), this.cache.deleteDataset(e), this.datasets.delete(e)), this.datasetResponse(t, e, r, i);
3965
+ let r = this.datasets.get(e), i = Ca(r, n);
3966
+ return i === "ok" && r && (Ba(this.wasmBackend, r), this.cache.deleteDataset(e), this.datasets.delete(e)), this.datasetResponse(t, e, r, i);
3834
3967
  }
3835
3968
  disposeAll(e) {
3836
3969
  let t = [...this.datasets.keys()];
3837
- return this.datasets.forEach((e) => xa(this.wasmBackend, e)), _a(this.wasmBackend) && this.wasmBackend.disposeAllDatasets(), this.datasets.clear(), this.cache.clear(), {
3970
+ return this.datasets.forEach((e) => Ba(this.wasmBackend, e)), Ia(this.wasmBackend) && this.wasmBackend.disposeAllDatasets(), this.datasets.clear(), this.cache.clear(), {
3838
3971
  type: "dispose-all-response",
3839
3972
  requestId: e,
3840
3973
  disposedDatasetIds: t
@@ -3856,10 +3989,10 @@ var Ta = class {
3856
3989
  };
3857
3990
  //#endregion
3858
3991
  //#region src/components/core/latestTaskScheduler.ts
3859
- function Da(e, t, n, r) {
3992
+ function Ka(e, t, n, r) {
3860
3993
  return r ? r === "raw" ? e <= t + n ? "raw" : "sampled" : e <= Math.max(0, t - n) ? "raw" : "sampled" : e <= t ? "raw" : "sampled";
3861
3994
  }
3862
- function Oa() {
3995
+ function qa() {
3863
3996
  let e = 0, t = !1, n, r = !1, i = {
3864
3997
  scheduled: 0,
3865
3998
  coalesced: 0,
@@ -3898,12 +4031,12 @@ function Oa() {
3898
4031
  }
3899
4032
  //#endregion
3900
4033
  //#region src/components/core/workerSamplingClient.ts
3901
- function ka(e) {
4034
+ function Ja(e) {
3902
4035
  return e?.message || "Web Worker is unavailable; JavaScript sampling is being used.";
3903
4036
  }
3904
- function Aa() {
4037
+ function Ya() {
3905
4038
  let e, t, n, r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = () => {
3906
- t ??= new Ea();
4039
+ t ??= new Ga();
3907
4040
  for (let [e, n] of i) {
3908
4041
  t.handle({
3909
4042
  type: "register-dataset",
@@ -3939,7 +4072,7 @@ function Aa() {
3939
4072
  let t = a();
3940
4073
  e.forEach(({ request: e, resolve: n }) => n(t.handle(e)));
3941
4074
  }, c = (r) => {
3942
- t || (n = ka(r), e?.terminate(), e = void 0, s());
4075
+ t || (n = Ja(r), e?.terminate(), e = void 0, s());
3943
4076
  };
3944
4077
  try {
3945
4078
  typeof Worker > "u" ? c() : (e = new Worker(new URL(
@@ -3976,20 +4109,20 @@ function Aa() {
3976
4109
  }
3977
4110
  };
3978
4111
  }
3979
- function ja(e) {
4112
+ function Xa(e) {
3980
4113
  return e.type === "dataset-response";
3981
4114
  }
3982
4115
  //#endregion
3983
4116
  //#region src/components/core/useWaveformRenderSampling.ts
3984
- var Ma = 120;
3985
- function Na(e, t) {
4117
+ var Za = 120;
4118
+ function Qa(e, t) {
3986
4119
  let n = e.output;
3987
4120
  if (n) return n.kind === "aggregates" ? Array.from(n.x, (e, t) => ({
3988
4121
  x: e,
3989
4122
  y: n.y[t]
3990
4123
  })) : Array.from(n.sourceIndexes, (e) => t.pointAt(e)).filter((e) => e !== void 0);
3991
4124
  }
3992
- function Pa(e, t) {
4125
+ function $a(e, t) {
3993
4126
  let n = e.request, r = e.visibleRange.end - e.visibleRange.start;
3994
4127
  return {
3995
4128
  seriesId: n.seriesId,
@@ -4011,7 +4144,7 @@ function Pa(e, t) {
4011
4144
  maxPendingRequestCount: 0
4012
4145
  };
4013
4146
  }
4014
- function Fa(e) {
4147
+ function eo(e) {
4015
4148
  let { source: t } = e, { start: n, end: r } = e.visibleRange, i = r - n, a = Number.isFinite(e.request.maxPointCount) && (e.request.maxPointCount ?? 0) >= 1 ? Math.floor(e.request.maxPointCount) : Math.max(1, Math.floor(e.request.plotWidth * e.request.maxPointsPerPixel));
4016
4149
  if (i <= a) return t.pointsInRange(n, r);
4017
4150
  if (a === 1) return t.pointAt(n) ? [t.pointAt(n)] : [];
@@ -4022,7 +4155,7 @@ function Fa(e) {
4022
4155
  }
4023
4156
  return o;
4024
4157
  }
4025
- function Ia(e, t, n, r) {
4158
+ function to(e, t, n, r) {
4026
4159
  return {
4027
4160
  message: e,
4028
4161
  mode: t,
@@ -4030,8 +4163,8 @@ function Ia(e, t, n, r) {
4030
4163
  seriesIds: r
4031
4164
  };
4032
4165
  }
4033
- function La(e) {
4034
- let n = w(0), r, i = 0, a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map(), u = Oa(), d, f, p = !1, m = t(() => {
4166
+ function no(e) {
4167
+ let n = w(0), r, i = 0, a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map(), u = qa(), d, f, p = !1, m = t(() => {
4035
4168
  let t = e.renderingOptions.value.sampling;
4036
4169
  return e.sourceTrackLayouts.value.flatMap((n) => {
4037
4170
  let r = n.xScale.domain();
@@ -4096,13 +4229,13 @@ function La(e) {
4096
4229
  revision: 0,
4097
4230
  dataset: t.source.toWorkerDataset()
4098
4231
  });
4099
- !u.isCurrent(n) || !ja(r) || r.status !== "ok" && r.status !== "stale-revision" || a.set(t.request.datasetId, r.revision);
4232
+ !u.isCurrent(n) || !Xa(r) || r.status !== "ok" && r.status !== "stale-revision" || a.set(t.request.datasetId, r.revision);
4100
4233
  }));
4101
4234
  }, x = async (t, n = !1) => {
4102
4235
  let o = m.value, c = { ...e.linePointOverrides.value }, l = [], d = [];
4103
4236
  if (o.forEach((e) => {
4104
- let r = e.visibleRange.end - e.visibleRange.start, i = n ? s.get(e.series.id) : void 0, a = e.request.mode === "auto" && Da(r, e.request.autoThreshold, e.request.autoHysteresis ?? 0, i) === "raw";
4105
- e.request.mode === "raw" || a ? (c[e.series.id] = e.source.pointsInRange(e.visibleRange.start, e.visibleRange.end), s.set(e.series.id, "raw"), d.push(Pa(e, t))) : (c[e.series.id]?.length || (c[e.series.id] = Fa(e)), l.push({
4237
+ let r = e.visibleRange.end - e.visibleRange.start, i = n ? s.get(e.series.id) : void 0, a = e.request.mode === "auto" && Ka(r, e.request.autoThreshold, e.request.autoHysteresis ?? 0, i) === "raw";
4238
+ e.request.mode === "raw" || a ? (c[e.series.id] = e.source.pointsInRange(e.visibleRange.start, e.visibleRange.end), s.set(e.series.id, "raw"), d.push($a(e, t))) : (c[e.series.id]?.length || (c[e.series.id] = eo(e)), l.push({
4106
4239
  ...e,
4107
4240
  request: {
4108
4241
  ...e.request,
@@ -4114,7 +4247,7 @@ function La(e) {
4114
4247
  e.linePointOverrides.value = c, v(d);
4115
4248
  return;
4116
4249
  }
4117
- if (e.linePointOverrides.value = c, r ??= Aa(), await b(r, l, t), !u.isCurrent(t)) return;
4250
+ if (e.linePointOverrides.value = c, r ??= Ya(), await b(r, l, t), !u.isCurrent(t)) return;
4118
4251
  let f = l.map((e) => ({
4119
4252
  ...e.request,
4120
4253
  revision: a.get(e.request.datasetId) ?? 1
@@ -4129,22 +4262,22 @@ function La(e) {
4129
4262
  p = e;
4130
4263
  } catch (n) {
4131
4264
  if (!u.isCurrent(t)) return;
4132
- y(Ia(n instanceof Error ? n.message : String(n), e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id)));
4265
+ y(to(n instanceof Error ? n.message : String(n), e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id)));
4133
4266
  return;
4134
4267
  }
4135
4268
  if (!u.isCurrent(t)) return;
4136
4269
  let h = new Map(l.map((e) => [e.series.id, e.source]));
4137
4270
  p.results.forEach((e) => {
4138
- let t = h.get(e.seriesId), n = t ? Na(e, t) : void 0;
4139
- n && (e.status === "ok" || e.status === "wasm-unavailable") && (c[e.seriesId] = n), d.push(e.diagnostics), s.set(e.seriesId, e.diagnostics.selectedMode), e.status === "wasm-unavailable" && y(Ia(p.workerError ?? "WASM sampling is unavailable.", e.diagnostics.mode, e.diagnostics.backend === "javascript" ? "javascript" : "none", [e.seriesId]));
4140
- }), p.workerError && y(Ia(p.workerError, e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id))), r.workerFailureReason && p.results.every((e) => e.status !== "wasm-unavailable") && y(Ia(r.workerFailureReason, e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id))), e.linePointOverrides.value = { ...c }, v(d);
4271
+ let t = h.get(e.seriesId), n = t ? Qa(e, t) : void 0;
4272
+ n && (e.status === "ok" || e.status === "wasm-unavailable") && (c[e.seriesId] = n), d.push(e.diagnostics), s.set(e.seriesId, e.diagnostics.selectedMode), e.status === "wasm-unavailable" && y(to(p.workerError ?? "WASM sampling is unavailable.", e.diagnostics.mode, e.diagnostics.backend === "javascript" ? "javascript" : "none", [e.seriesId]));
4273
+ }), p.workerError && y(to(p.workerError, e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id))), r.workerFailureReason && p.results.every((e) => e.status !== "wasm-unavailable") && y(to(r.workerFailureReason, e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id))), e.linePointOverrides.value = { ...c }, v(d);
4141
4274
  };
4142
4275
  return k(h, () => {
4143
4276
  f && clearTimeout(f);
4144
4277
  let t = p;
4145
4278
  p = !0, u.schedule((e) => x(e, t)), t && e.renderingOptions.value.sampling.mode === "auto" && e.renderingOptions.value.sampling.autoHysteresis > 0 && (f = setTimeout(() => {
4146
4279
  f = void 0, u.schedule((e) => x(e, !1));
4147
- }, Ma));
4280
+ }, Za));
4148
4281
  }, { immediate: !0 }), k(e.preparedSeries, () => {
4149
4282
  u.cancelPending(), n.value += 1, e.linePointOverrides.value = {}, a.clear(), o.clear(), s.clear(), c.clear(), r?.dispose(), r = void 0;
4150
4283
  }, { flush: "sync" }), _(() => {
@@ -4153,11 +4286,11 @@ function La(e) {
4153
4286
  }
4154
4287
  //#endregion
4155
4288
  //#region src/components/core/useWaveformChartController.ts
4156
- function Ra(e, t) {
4289
+ function ro(e, t) {
4157
4290
  e.value = t instanceof Element ? t : void 0;
4158
4291
  }
4159
- function za(e, t) {
4160
- let n = x(), r = x(), i = x(), a = x(), o = x(0), s = x(0), c = x(0), l = x(0), u = x(0), f = w(J), p = w([]), m = x({}), h = x({}), g = C({
4292
+ function io(e, n) {
4293
+ let r = x(), i = x(), a = x(), o = x(), s = x(0), c = x(0), l = x(0), u = x(0), f = x(0), p = w(q), m = w([]), h = x({}), g = x({}), _ = C({
4161
4294
  points: [],
4162
4295
  trackIndex: null,
4163
4296
  queryX: null,
@@ -4166,216 +4299,219 @@ function za(e, t) {
4166
4299
  x: 0,
4167
4300
  y: 0
4168
4301
  }
4169
- }), _ = x(!1), v = x(1), y = w(), S = ue("waveform-clip"), T = x(new Set(e.defaultHiddenSeriesIds)), D = gt(), O = w({}), j = x([]), M = Hr();
4302
+ }), v = x(!1), y = x(1), S = w(), T = de("waveform-clip"), D = x(new Set(e.defaultHiddenSeriesIds)), O = gt(), j = w({}), M = x([]), N = ai();
4170
4303
  k([() => e.yDomain, () => e.yDomains], () => {
4171
- m.value = {}, h.value = {};
4304
+ h.value = {}, g.value = {};
4172
4305
  }, { deep: !0 });
4173
- let N = w(null), P = x(!1), F = x(!1), I = () => void 0, L = () => void 0, R = () => void 0, z = qr(() => e.data, () => {
4174
- R(), I();
4175
- }, () => L()), B = Fi({
4306
+ let P = w(null), F = x(!1), I = x(!1), L = () => void 0, R = () => void 0, z = () => void 0, B = di(() => e.data, () => {
4307
+ z(), L();
4308
+ }, () => R()), V = ea({
4176
4309
  props: e,
4177
- observedWidth: o,
4178
- observedHeight: s,
4179
- measuredTitleWidth: c,
4180
- measuredTitleHeight: l,
4181
- internalHiddenSeriesIds: T,
4182
- paginationBandHeight: u
4183
- }), { chartWidth: V, chartHeight: H, isCleanView: U, isPresentationMode: W, hiddenSeriesIdSet: G, resolvedTitleText: ee, titleAreaReserved: te, titleMeasureStyle: ne, titleAreaHeight: re, chartTopMargin: K, innerHeight: q } = B, ie = ji({
4310
+ observedWidth: s,
4311
+ observedHeight: c,
4312
+ measuredTitleWidth: l,
4313
+ measuredTitleHeight: u,
4314
+ internalHiddenSeriesIds: D,
4315
+ paginationBandHeight: f
4316
+ }), { chartWidth: H, chartHeight: U, isCleanView: W, isPresentationMode: G, hiddenSeriesIdSet: K, resolvedTitleText: ee, titleAreaReserved: te, titleMeasureStyle: ne, titleAreaHeight: re, chartTopMargin: ie, innerHeight: ae } = V, oe = Xi({
4184
4317
  props: e,
4185
- preparedSeries: z,
4186
- currentPage: v,
4187
- hiddenSeriesIdSet: G,
4188
- chartWidth: V,
4189
- innerHeight: q,
4190
- isCleanView: U,
4191
- sharedTransform: f,
4192
- independentTransforms: p,
4193
- sharedYDomains: m,
4194
- independentYDomains: h,
4195
- annotationInteraction: d(D),
4196
- linePointOverrides: O
4197
- }), { chartSeries: ae, chartTracks: oe, renderingOptions: se, trackLayouts: ce, gridOptions: le, pageCount: de, pagedTracks: fe, resolvedChartLeftMargin: Y, innerWidth: pe, hasChartArea: me, activeInteractionMode: he, isZoomMode: ge, initialXDomain: _e, sharedZoomDomain: ve, resolveInitialTrackDomain: ye, annotationLayoutsForTrack: be, resolveSeriesYScale: xe } = ie;
4198
- La({
4318
+ preparedSeries: B,
4319
+ currentPage: y,
4320
+ hiddenSeriesIdSet: K,
4321
+ chartWidth: H,
4322
+ innerHeight: ae,
4323
+ isCleanView: W,
4324
+ sharedTransform: p,
4325
+ independentTransforms: m,
4326
+ sharedYDomains: h,
4327
+ independentYDomains: g,
4328
+ annotationInteraction: d(O),
4329
+ linePointOverrides: j
4330
+ }), { chartSeries: se, chartTracks: ce, renderingOptions: le, trackLayouts: ue, gridOptions: fe, pageCount: pe, pagedTracks: J, resolvedChartLeftMargin: me, innerWidth: Y, hasChartArea: he, activeInteractionMode: ge, isZoomMode: _e, initialXDomain: ve, sharedZoomDomain: ye, resolveInitialTrackDomain: be, annotationLayoutsForTrack: xe, resolveSeriesYScale: Se } = oe;
4331
+ no({
4199
4332
  props: e,
4200
- emit: t,
4201
- instanceId: S,
4202
- preparedSeries: z,
4203
- sourceTrackLayouts: ce,
4204
- renderingOptions: se,
4205
- linePointOverrides: O
4206
- }), A(() => {
4207
- u.value = le.value.showPagination && de.value > 1 && V.value <= 520 ? 40 : 0;
4333
+ emit: n,
4334
+ instanceId: T,
4335
+ preparedSeries: B,
4336
+ sourceTrackLayouts: ue,
4337
+ renderingOptions: le,
4338
+ linePointOverrides: j
4208
4339
  });
4209
- let Se = Ur({
4340
+ let Ce = t(() => fe.value.showPagination && pe.value > 1 && !W.value);
4341
+ A(() => {
4342
+ f.value = e.layoutPreset === "edge-compact" ? si(Ce.value, H.value, pe.value, me.value + Y.value / 2, oe.resolvedXLabel.value) : fe.value.showPagination && pe.value > 1 && H.value <= 520 ? 40 : 0;
4343
+ });
4344
+ let X = oi({
4210
4345
  props: e,
4211
- emit: t,
4212
- svgElement: r,
4213
- sharedOverlayElement: a,
4214
- sharedTransform: f,
4215
- independentTransforms: p,
4216
- trackLayouts: ce,
4217
- initialXDomain: _e,
4218
- sharedZoomDomain: ve,
4219
- innerWidth: pe,
4220
- innerHeight: q,
4221
- hasChartArea: me,
4222
- isZoomMode: ge,
4223
- isPresentationMode: W,
4224
- resolveInitialTrackDomain: ye,
4225
- cancelPendingHover: () => we.cancelPendingHover()
4346
+ emit: n,
4347
+ svgElement: i,
4348
+ sharedOverlayElement: o,
4349
+ sharedTransform: p,
4350
+ independentTransforms: m,
4351
+ trackLayouts: ue,
4352
+ initialXDomain: ve,
4353
+ sharedZoomDomain: ye,
4354
+ innerWidth: Y,
4355
+ innerHeight: ae,
4356
+ hasChartArea: he,
4357
+ isZoomMode: _e,
4358
+ isPresentationMode: G,
4359
+ resolveInitialTrackDomain: be,
4360
+ cancelPendingHover: () => Ee.cancelPendingHover()
4226
4361
  });
4227
- R = Se.prepareForDataChange;
4228
- let Ce = yr({
4362
+ z = X.prepareForDataChange;
4363
+ let we = jr({
4229
4364
  props: e,
4230
- emit: t,
4231
- container: n,
4232
- chartSeries: ae,
4233
- hiddenSeriesIdSet: G,
4234
- internalHiddenSeriesIds: T,
4235
- annotationInteraction: D,
4236
- editorSeriesOptions: j,
4237
- trackLayouts: ce,
4238
- annotationLayoutsForTrack: be,
4239
- resolveSeriesYScale: xe,
4240
- chartWidth: V,
4241
- chartHeight: H,
4242
- innerWidth: pe,
4243
- resolvedChartLeftMargin: Y,
4365
+ emit: n,
4366
+ container: r,
4367
+ chartSeries: se,
4368
+ hiddenSeriesIdSet: K,
4369
+ internalHiddenSeriesIds: D,
4370
+ annotationInteraction: O,
4371
+ editorSeriesOptions: M,
4372
+ trackLayouts: ue,
4373
+ annotationLayoutsForTrack: xe,
4374
+ resolveSeriesYScale: Se,
4375
+ chartWidth: H,
4376
+ chartHeight: U,
4377
+ innerWidth: Y,
4378
+ resolvedChartLeftMargin: me,
4244
4379
  titleAreaHeight: re,
4245
- chartTopMargin: K,
4246
- activeInteractionMode: he,
4247
- isPresentationMode: W
4248
- }), X = Vr({
4380
+ chartTopMargin: ie,
4381
+ activeInteractionMode: ge,
4382
+ isPresentationMode: G
4383
+ }), Te = ii({
4249
4384
  props: e,
4250
- emit: t,
4251
- selection: N,
4252
- spacePressed: P,
4253
- trackLayouts: ce,
4254
- chartTracks: oe,
4255
- initialXDomain: _e,
4256
- innerWidth: pe,
4257
- innerHeight: q,
4258
- sharedOverlayElement: a,
4259
- sharedTransform: f,
4260
- independentTransforms: p,
4261
- sharedYDomains: m,
4262
- independentYDomains: h,
4263
- isZoomMode: ge,
4264
- isPresentationMode: W,
4265
- editorSeriesOptions: j,
4266
- resolveInitialTrackDomain: ye,
4267
- canZoomTrack: Se.canZoomTrack,
4268
- canZoomSharedTracks: Se.canZoomSharedTracks,
4269
- configureZoom: Se.configureZoom,
4270
- cancelPendingZoom: Se.cancelPendingZoom,
4271
- clearHover: () => we.clearHover(),
4272
- resolveTrackAtPointer: Ce.resolveTrackAtPointer
4273
- }), we = br({
4274
- emit: t,
4275
- hoverState: g,
4276
- suppressHoverUntilMove: _,
4277
- hoverThrottle: M,
4278
- selection: N,
4279
- trackLayouts: ce,
4280
- innerWidth: pe,
4281
- resolvedChartLeftMargin: Y,
4385
+ emit: n,
4386
+ selection: P,
4387
+ spacePressed: F,
4388
+ trackLayouts: ue,
4389
+ chartTracks: ce,
4390
+ initialXDomain: ve,
4391
+ innerWidth: Y,
4392
+ innerHeight: ae,
4393
+ sharedOverlayElement: o,
4394
+ sharedTransform: p,
4395
+ independentTransforms: m,
4396
+ sharedYDomains: h,
4397
+ independentYDomains: g,
4398
+ isZoomMode: _e,
4399
+ isPresentationMode: G,
4400
+ editorSeriesOptions: M,
4401
+ resolveInitialTrackDomain: be,
4402
+ canZoomTrack: X.canZoomTrack,
4403
+ canZoomSharedTracks: X.canZoomSharedTracks,
4404
+ configureZoom: X.configureZoom,
4405
+ cancelPendingZoom: X.cancelPendingZoom,
4406
+ clearHover: () => Ee.clearHover(),
4407
+ resolveTrackAtPointer: we.resolveTrackAtPointer
4408
+ }), Ee = Mr({
4409
+ emit: n,
4410
+ hoverState: _,
4411
+ suppressHoverUntilMove: v,
4412
+ hoverThrottle: N,
4413
+ selection: P,
4414
+ trackLayouts: ue,
4415
+ innerWidth: Y,
4416
+ resolvedChartLeftMargin: me,
4282
4417
  titleAreaHeight: re,
4283
- chartTopMargin: K,
4284
- sharedOverlayElement: a,
4285
- isPresentationMode: W,
4286
- updateViewportDrag: X.updateViewportDrag,
4287
- resolveTrackAtPointer: Ce.resolveTrackAtPointer
4288
- }), Te = Gr({
4418
+ chartTopMargin: ie,
4419
+ sharedOverlayElement: o,
4420
+ isPresentationMode: G,
4421
+ updateViewportDrag: Te.updateViewportDrag,
4422
+ resolveTrackAtPointer: we.resolveTrackAtPointer
4423
+ }), De = li({
4289
4424
  props: e,
4290
- emit: t,
4291
- container: n,
4292
- titleMeasureElement: i,
4293
- resizeObserver: y,
4294
- observedWidth: o,
4295
- observedHeight: s,
4296
- measuredTitleWidth: c,
4297
- measuredTitleHeight: l,
4425
+ emit: n,
4426
+ container: r,
4427
+ titleMeasureElement: a,
4428
+ resizeObserver: S,
4429
+ observedWidth: s,
4430
+ observedHeight: c,
4431
+ measuredTitleWidth: l,
4432
+ measuredTitleHeight: u,
4298
4433
  resolvedTitleText: ee,
4299
4434
  titleAreaReserved: te,
4300
4435
  titleMeasureStyle: ne,
4301
- spacePressed: P,
4302
- pointerInsideChart: F,
4303
- currentPage: v,
4304
- pageCount: de,
4305
- pagedTracks: fe,
4306
- gridOptions: le,
4307
- chartSeries: ae,
4308
- chartTracks: oe,
4309
- trackLayouts: ce,
4310
- innerWidth: pe,
4311
- innerHeight: q,
4312
- sharedZoomDomain: ve,
4313
- initialXDomain: _e,
4314
- sharedTransform: f,
4315
- activeInteractionMode: he,
4316
- hiddenSeriesIdSet: G,
4317
- internalHiddenSeriesIds: T,
4318
- independentTransforms: p,
4319
- independentYDomains: h,
4320
- resolveInitialTrackDomain: ye,
4321
- annotationInteraction: D,
4322
- editorSeriesOptions: j,
4323
- isPresentationMode: W,
4324
- clearHover: we.clearHover,
4325
- cancelAnnotation: Ce.cancelAnnotation,
4326
- configureZoom: Se.configureZoom,
4327
- resetViewport: X.resetViewport,
4328
- cancelViewportDrag: X.cancelViewportDrag,
4329
- cancelPendingHover: we.cancelPendingHover,
4330
- clearZoomBindings: Se.clearZoomBindings
4436
+ spacePressed: F,
4437
+ pointerInsideChart: I,
4438
+ currentPage: y,
4439
+ pageCount: pe,
4440
+ pagedTracks: J,
4441
+ gridOptions: fe,
4442
+ chartSeries: se,
4443
+ chartTracks: ce,
4444
+ trackLayouts: ue,
4445
+ innerWidth: Y,
4446
+ innerHeight: ae,
4447
+ sharedZoomDomain: ye,
4448
+ initialXDomain: ve,
4449
+ sharedTransform: p,
4450
+ activeInteractionMode: ge,
4451
+ hiddenSeriesIdSet: K,
4452
+ internalHiddenSeriesIds: D,
4453
+ independentTransforms: m,
4454
+ independentYDomains: g,
4455
+ resolveInitialTrackDomain: be,
4456
+ annotationInteraction: O,
4457
+ editorSeriesOptions: M,
4458
+ isPresentationMode: G,
4459
+ clearHover: Ee.clearHover,
4460
+ cancelAnnotation: we.cancelAnnotation,
4461
+ configureZoom: X.configureZoom,
4462
+ resetViewport: Te.resetViewport,
4463
+ cancelViewportDrag: Te.cancelViewportDrag,
4464
+ cancelPendingHover: Ee.cancelPendingHover,
4465
+ clearZoomBindings: X.clearZoomBindings
4331
4466
  });
4332
- return I = Te.handleBeforeDataReferenceChange, L = Te.handleDataReferenceChange, b({
4467
+ return L = De.handleBeforeDataReferenceChange, R = De.handleDataReferenceChange, b({
4333
4468
  ...E(e),
4334
- ...B,
4335
- ...ie,
4336
- ...Ce,
4337
- ...X,
4469
+ ...V,
4470
+ paginationVisible: Ce,
4471
+ ...oe,
4338
4472
  ...we,
4473
+ ...Te,
4474
+ ...Ee,
4339
4475
  margin: zt,
4340
4476
  getPageSize: Hn,
4341
- currentPage: v,
4342
- selection: N,
4343
- pointerInsideChart: F,
4344
- hoverState: g,
4345
- annotationInteraction: D,
4346
- editorDraft: D.editorDraft,
4347
- contextMenu: D.contextMenu,
4348
- editorSeriesOptions: j,
4349
- clipPathId: S,
4350
- goToPage: Te.goToPage,
4351
- setContainer: (e) => Ra(n, e),
4352
- setSvgElement: (e) => Ra(r, e),
4353
- setTitleMeasureElement: (e) => Ra(i, e),
4354
- setSharedOverlayElement: (e) => Ra(a, e)
4477
+ currentPage: y,
4478
+ selection: P,
4479
+ pointerInsideChart: I,
4480
+ hoverState: _,
4481
+ annotationInteraction: O,
4482
+ editorDraft: O.editorDraft,
4483
+ contextMenu: O.contextMenu,
4484
+ editorSeriesOptions: M,
4485
+ clipPathId: T,
4486
+ goToPage: De.goToPage,
4487
+ setContainer: (e) => ro(r, e),
4488
+ setSvgElement: (e) => ro(i, e),
4489
+ setTitleMeasureElement: (e) => ro(a, e),
4490
+ setSharedOverlayElement: (e) => ro(o, e)
4355
4491
  });
4356
4492
  }
4357
4493
  //#endregion
4358
4494
  //#region src/components/annotation/WaveformAnnotationEditor.vue?vue&type=script&setup=true&lang.ts
4359
- var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4495
+ var ao = ["id"], oo = { class: "waveform-annotation-editor__content" }, so = {
4360
4496
  class: "waveform-annotation-editor__coordinates",
4361
4497
  "aria-label": "标注坐标"
4362
- }, Ua = ["aria-invalid"], Wa = {
4498
+ }, co = ["aria-invalid"], lo = {
4363
4499
  class: "waveform-annotation-editor__coordinate-value",
4364
4500
  "aria-hidden": "true"
4365
- }, Ga = ["id"], Ka = {
4501
+ }, uo = ["id"], fo = {
4366
4502
  key: 0,
4367
4503
  class: "waveform-annotation-editor__series",
4368
4504
  "aria-label": "标注所属波形"
4369
- }, qa = { class: "waveform-annotation-editor__series-label" }, Ja = ["value"], Ya = ["value"], Xa = { key: 1 }, Za = { class: "waveform-annotation-editor__field" }, Qa = { class: "waveform-annotation-editor__label-row" }, $a = ["maxlength"], eo = { class: "waveform-annotation-editor__colors" }, to = {
4505
+ }, po = { class: "waveform-annotation-editor__series-label" }, mo = ["value"], ho = ["value"], go = { key: 1 }, _o = { class: "waveform-annotation-editor__field" }, vo = { class: "waveform-annotation-editor__label-row" }, yo = ["maxlength"], bo = { class: "waveform-annotation-editor__colors" }, xo = {
4370
4506
  class: "waveform-annotation-editor__color-field",
4371
4507
  title: "调整标注边框色和透明度"
4372
- }, no = {
4508
+ }, So = {
4373
4509
  class: "waveform-annotation-editor__color-field",
4374
4510
  title: "调整标注文字色和透明度"
4375
- }, ro = {
4511
+ }, Co = {
4376
4512
  class: "waveform-annotation-editor__color-field",
4377
4513
  title: "调整标注背景色和透明度"
4378
- }, io = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4514
+ }, wo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4379
4515
  __name: "WaveformAnnotationEditor",
4380
4516
  props: {
4381
4517
  annotation: {},
@@ -4395,7 +4531,7 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4395
4531
  let u = c(async () => typeof window > "u" ? {
4396
4532
  name: "WaveformColorPickerSsrFallback",
4397
4533
  render: () => null
4398
- } : (await import("vue3-colorpicker")).ColorPicker), d = o, p = l, h = x(), g = ue("waveform-annotation-editor-title"), _ = x(""), v = x(""), b = x(!1), C = x(""), w = x(""), E = x(""), A = t(() => b.value && (!v.value.trim() || !Number.isFinite(Number(v.value))) ? "请输入有效的时间" : ""), N = t(() => b.value && (A.value || d.timeError) || ""), P = t(() => _.value.trim().length > 0 && v.value.trim().length > 0 && Number.isFinite(Number(v.value)) && !N.value), F = t(() => _.value.length), I = t(() => {
4534
+ } : (await import("vue3-colorpicker")).ColorPicker), d = o, p = l, h = x(), g = de("waveform-annotation-editor-title"), _ = x(""), v = x(""), b = x(!1), C = x(""), w = x(""), E = x(""), A = t(() => b.value && (!v.value.trim() || !Number.isFinite(Number(v.value))) ? "请输入有效的时间" : ""), N = t(() => b.value && (A.value || d.timeError) || ""), P = t(() => _.value.trim().length > 0 && v.value.trim().length > 0 && Number.isFinite(Number(v.value)) && !N.value), F = t(() => _.value.length), I = t(() => {
4399
4535
  let e = d.seriesOptions?.find((e) => e.seriesId === d.annotation.seriesId);
4400
4536
  return e ? {
4401
4537
  id: e.seriesId,
@@ -4433,7 +4569,7 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4433
4569
  let t = e.target;
4434
4570
  t.value && p("series-change", t.value);
4435
4571
  }
4436
- return (t, o) => (y(), n(D(se), {
4572
+ return (t, o) => (y(), n(D(ce), {
4437
4573
  visible: !0,
4438
4574
  width: 440,
4439
4575
  "mask-closable": !0,
@@ -4446,15 +4582,15 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4446
4582
  onCancel: o[4] ||= (e) => p("cancel"),
4447
4583
  onOk: B
4448
4584
  }, {
4449
- title: j(() => [a("span", { id: D(g) }, T(d.mode === "add" ? "添加标注" : "编辑标注"), 9, Ba)]),
4450
- default: j(() => [a("div", Va, [
4451
- a("div", Ha, [
4585
+ title: j(() => [a("span", { id: D(g) }, T(d.mode === "add" ? "添加标注" : "编辑标注"), 9, ao)]),
4586
+ default: j(() => [a("div", oo, [
4587
+ a("div", so, [
4452
4588
  a("label", {
4453
4589
  class: "waveform-annotation-editor__coordinate-input",
4454
4590
  "aria-invalid": !!N.value
4455
4591
  }, [
4456
4592
  o[5] ||= a("b", null, "X", -1),
4457
- s(D(oe), {
4593
+ s(D(se), {
4458
4594
  value: v.value === "" ? void 0 : Number(v.value),
4459
4595
  controls: !0,
4460
4596
  step: .001,
@@ -4471,26 +4607,26 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4471
4607
  "aria-invalid",
4472
4608
  "aria-describedby"
4473
4609
  ]),
4474
- a("code", Wa, T(v.value), 1)
4475
- ], 8, Ua),
4610
+ a("code", lo, T(v.value), 1)
4611
+ ], 8, co),
4476
4612
  N.value ? (y(), i("p", {
4477
4613
  key: 0,
4478
4614
  id: `${D(g)}-time-error`,
4479
4615
  class: "waveform-annotation-editor__coordinate-error",
4480
4616
  role: "alert"
4481
- }, T(N.value), 9, Ga)) : r("", !0),
4617
+ }, T(N.value), 9, uo)) : r("", !0),
4482
4618
  a("span", null, [o[6] ||= a("b", null, "Y", -1), a("code", null, T(D(At)(d.annotation.y)), 1)])
4483
4619
  ]),
4484
4620
  o[13] ||= a("p", {
4485
4621
  class: "waveform-annotation-editor__coordinate-hint",
4486
4622
  role: "note"
4487
4623
  }, " 修改 X 轴后失焦时会自动吸附最近的采样点 ", -1),
4488
- I.value ? (y(), i("label", Ka, [
4624
+ I.value ? (y(), i("label", fo, [
4489
4625
  a("i", {
4490
4626
  style: m({ backgroundColor: I.value.color }),
4491
4627
  "aria-hidden": "true"
4492
4628
  }, null, 4),
4493
- a("span", qa, [o[7] ||= a("small", null, "标注波形", -1), a("b", null, T(I.value.name), 1)]),
4629
+ a("span", po, [o[7] ||= a("small", null, "标注波形", -1), a("b", null, T(I.value.name), 1)]),
4494
4630
  d.seriesOptions?.length ? (y(), i("select", {
4495
4631
  key: 0,
4496
4632
  value: d.annotation.seriesId,
@@ -4499,9 +4635,9 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4499
4635
  }, [(y(!0), i(e, null, S(d.seriesOptions, (e) => (y(), i("option", {
4500
4636
  key: e.seriesId,
4501
4637
  value: e.seriesId
4502
- }, T(e.name) + T(e.unit ? ` (${e.unit})` : ""), 9, Ya))), 128))], 40, Ja)) : I.value.unit ? (y(), i("code", Xa, T(I.value.unit), 1)) : r("", !0)
4638
+ }, T(e.name) + T(e.unit ? ` (${e.unit})` : ""), 9, ho))), 128))], 40, mo)) : I.value.unit ? (y(), i("code", go, T(I.value.unit), 1)) : r("", !0)
4503
4639
  ])) : r("", !0),
4504
- a("label", Za, [a("span", Qa, [o[8] ||= a("b", null, "标注文本", -1), a("small", null, T(F.value) + "/" + T(D(40)), 1)]), M(a("textarea", {
4640
+ a("label", _o, [a("span", vo, [o[8] ||= a("b", null, "标注文本", -1), a("small", null, T(F.value) + "/" + T(D(40)), 1)]), M(a("textarea", {
4505
4641
  ref_key: "textarea",
4506
4642
  ref: h,
4507
4643
  "onUpdate:modelValue": o[0] ||= (e) => _.value = e,
@@ -4510,10 +4646,10 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4510
4646
  "aria-label": "标注文本",
4511
4647
  placeholder: "输入这处波形的说明",
4512
4648
  onKeydown: V
4513
- }, null, 40, $a), [[O, _.value]])]),
4514
- a("fieldset", eo, [
4649
+ }, null, 40, yo), [[O, _.value]])]),
4650
+ a("fieldset", bo, [
4515
4651
  o[12] ||= a("legend", null, "颜色与透明度", -1),
4516
- a("label", to, [o[9] ||= a("span", null, "边框色", -1), s(D(u), {
4652
+ a("label", xo, [o[9] ||= a("span", null, "边框色", -1), s(D(u), {
4517
4653
  "pure-color": C.value,
4518
4654
  "onUpdate:pureColor": o[1] ||= (e) => C.value = e,
4519
4655
  "aria-label": "标注边框色",
@@ -4523,7 +4659,7 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4523
4659
  "disable-alpha": !1,
4524
4660
  "blur-close": !0
4525
4661
  }, null, 8, ["pure-color"])]),
4526
- a("label", no, [o[10] ||= a("span", null, "文字色", -1), s(D(u), {
4662
+ a("label", So, [o[10] ||= a("span", null, "文字色", -1), s(D(u), {
4527
4663
  "pure-color": w.value,
4528
4664
  "onUpdate:pureColor": o[2] ||= (e) => w.value = e,
4529
4665
  "aria-label": "标注文字色",
@@ -4533,7 +4669,7 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4533
4669
  "disable-alpha": !1,
4534
4670
  "blur-close": !0
4535
4671
  }, null, 8, ["pure-color"])]),
4536
- a("label", ro, [o[11] ||= a("span", null, "背景色", -1), s(D(u), {
4672
+ a("label", Co, [o[11] ||= a("span", null, "背景色", -1), s(D(u), {
4537
4673
  "pure-color": E.value,
4538
4674
  "onUpdate:pureColor": o[3] ||= (e) => E.value = e,
4539
4675
  "aria-label": "标注背景色",
@@ -4548,13 +4684,13 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4548
4684
  _: 1
4549
4685
  }, 8, ["ok-button-props"]));
4550
4686
  }
4551
- }), [["__scopeId", "data-v-01ecd3a4"]]), ao = { class: "waveform-tooltip__series-content" }, oo = { class: "waveform-tooltip__series-label" }, so = {
4687
+ }), [["__scopeId", "data-v-01ecd3a4"]]), To = { class: "waveform-tooltip__series-content" }, Eo = { class: "waveform-tooltip__series-label" }, Do = {
4552
4688
  key: 0,
4553
4689
  class: "waveform-tooltip__value"
4554
- }, co = {
4690
+ }, Oo = {
4555
4691
  key: 1,
4556
4692
  class: "waveform-tooltip__value waveform-tooltip__value--missing"
4557
- }, lo = 12, uo = 8, fo = 560, po = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4693
+ }, ko = 12, Ao = 8, jo = 560, Mo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4558
4694
  __name: "WaveformTooltip",
4559
4695
  props: {
4560
4696
  visible: { type: Boolean },
@@ -4584,12 +4720,12 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4584
4720
  }, { flush: "post" }), v(u);
4585
4721
  let d = t(() => {
4586
4722
  if (!s.visible || !s.hoveredPoint) return { display: "none" };
4587
- let e = s.position.x + lo, t = s.position.x - lo - l.value.width, n = Math.max(1, Math.min(fo, s.containerWidth - uo * 2));
4723
+ let e = s.position.x + ko, t = s.position.x - ko - l.value.width, n = Math.max(1, Math.min(jo, s.containerWidth - Ao * 2));
4588
4724
  return {
4589
- ...e + l.value.width <= s.containerWidth - uo ? { left: `${e}px` } : t >= uo ? { right: `${s.containerWidth - s.position.x + lo}px` } : { left: `${uo}px` },
4725
+ ...e + l.value.width <= s.containerWidth - Ao ? { left: `${e}px` } : t >= Ao ? { right: `${s.containerWidth - s.position.x + ko}px` } : { left: `${Ao}px` },
4590
4726
  maxWidth: `${n}px`,
4591
4727
  visibility: l.value.width > 0 ? "visible" : "hidden",
4592
- top: `${Math.max(uo, Math.min(s.position.y - 18, s.containerHeight - l.value.height - uo))}px`
4728
+ top: `${Math.max(Ao, Math.min(s.position.y - 18, s.containerHeight - l.value.height - Ao))}px`
4593
4729
  };
4594
4730
  });
4595
4731
  return (t, s) => n.visible && n.hoveredPoint ? (y(), i("div", {
@@ -4601,9 +4737,9 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4601
4737
  }, [(y(!0), i(e, null, S(n.seriesPoints, (t) => (y(), i("span", {
4602
4738
  key: `${t.trackIndex}-${t.name}`,
4603
4739
  class: "waveform-tooltip__series waveform-chart__tooltip-series"
4604
- }, [a("i", { style: m({ backgroundColor: t.color }) }, null, 4), a("span", ao, [a("span", oo, [o(T(t.shotNo?.trim() || "未配置炮号") + ": " + T(t.name), 1), t.unit ? (y(), i(e, { key: 0 }, [o("(" + T(t.unit) + ")", 1)], 64)) : r("", !0)]), t.point ? (y(), i("span", so, "(x:" + T(D(Ft)(t.point.x, n.timeUnit)) + " y:" + T(D(kt)(t.point.y)) + ")", 1)) : (y(), i("span", co, "无数据"))])]))), 128))], 4)) : r("", !0);
4740
+ }, [a("i", { style: m({ backgroundColor: t.color }) }, null, 4), a("span", To, [a("span", Eo, [o(T(t.shotNo?.trim() || "未配置炮号") + ": " + T(t.name), 1), t.unit ? (y(), i(e, { key: 0 }, [o("(" + T(t.unit) + ")", 1)], 64)) : r("", !0)]), t.point ? (y(), i("span", Do, "(x:" + T(D(Ft)(t.point.x, n.timeUnit)) + " y:" + T(D(kt)(t.point.y)) + ")", 1)) : (y(), i("span", Oo, "无数据"))])]))), 128))], 4)) : r("", !0);
4605
4741
  }
4606
- }), [["__scopeId", "data-v-0d0d1d3c"]]), mo = /* @__PURE__ */ l({
4742
+ }), [["__scopeId", "data-v-0d0d1d3c"]]), No = /* @__PURE__ */ l({
4607
4743
  __name: "WaveformHoverHost",
4608
4744
  props: {
4609
4745
  state: {},
@@ -4614,7 +4750,7 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4614
4750
  },
4615
4751
  setup(e) {
4616
4752
  let r = e, i = t(() => r.state.points.find((e) => e.point)?.point ?? null);
4617
- return (t, r) => (y(), n(po, {
4753
+ return (t, r) => (y(), n(Mo, {
4618
4754
  visible: e.visible && i.value !== null,
4619
4755
  position: e.state.position,
4620
4756
  "time-unit": e.timeUnit,
@@ -4632,16 +4768,16 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4632
4768
  "container-height"
4633
4769
  ]));
4634
4770
  }
4635
- }), ho = 13, go = 2, _o = 14, vo = 8, yo = 24, bo = {
4636
- circle: te,
4637
- square: re,
4638
- triangle: K,
4639
- diamond: ne
4771
+ }), Po = 13, Fo = 2, Io = 14, Lo = 8, Ro = 24, zo = {
4772
+ circle: ee,
4773
+ square: ne,
4774
+ triangle: re,
4775
+ diamond: te
4640
4776
  };
4641
- function xo(e, t = 48) {
4642
- return e === "none" ? null : ee().type(bo[e]).size(t)() ?? null;
4777
+ function Bo(e, t = 48) {
4778
+ return e === "none" ? null : K().type(zo[e]).size(t)() ?? null;
4643
4779
  }
4644
- function So(e, t, n = 48) {
4780
+ function Vo(e, t, n = 48) {
4645
4781
  if (e === "none" || t.length === 0) return null;
4646
4782
  if (e === "circle") {
4647
4783
  let e = Math.sqrt(n / Math.PI);
@@ -4658,24 +4794,24 @@ function So(e, t, n = 48) {
4658
4794
  let r = Math.sqrt(n / (2 * Math.tan(Math.PI / 6))), i = r * Math.tan(Math.PI / 6);
4659
4795
  return t.map(({ x: e, y: t }) => `M${e},${t - r}L${e + i},${t}L${e},${t + r}L${e - i},${t}Z`).join("");
4660
4796
  }
4661
- function Co(e) {
4797
+ function Ho(e) {
4662
4798
  return e === "none" ? null : "M1 8H25";
4663
4799
  }
4664
- function wo(e) {
4800
+ function Uo(e) {
4665
4801
  if (e === "dashed") return "8 5";
4666
4802
  if (e === "dash-dot") return "8 5 1.5 5";
4667
4803
  }
4668
- function To(e) {
4669
- let t = (Number.isFinite(e) && e > 0 ? Math.min(e, yo) : vo) / 2, n = ho - t, r = ho + t;
4804
+ function Wo(e) {
4805
+ let t = (Number.isFinite(e) && e > 0 ? Math.min(e, Ro) : Lo) / 2, n = Po - t, r = Po + t;
4670
4806
  return [
4671
- `M${n} ${go}H${r}`,
4672
- `M${ho} ${go}V${_o}`,
4673
- `M${n} ${_o}H${r}`
4807
+ `M${n} ${Fo}H${r}`,
4808
+ `M${Po} ${Fo}V${Io}`,
4809
+ `M${n} ${Io}H${r}`
4674
4810
  ].join("");
4675
4811
  }
4676
4812
  //#endregion
4677
4813
  //#region src/components/rendering/WaveformSeriesLayer.vue?vue&type=script&setup=true&lang.ts
4678
- var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4814
+ var Go = ["clip-path"], Ko = ["data-series-id", "data-series-name"], qo = [
4679
4815
  "data-series-id",
4680
4816
  "data-series-name",
4681
4817
  "data-y-axis-index",
@@ -4684,11 +4820,11 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4684
4820
  "d",
4685
4821
  "stroke",
4686
4822
  "stroke-dasharray"
4687
- ], ko = ["data-series-id"], Ao = [
4823
+ ], Jo = ["data-series-id"], Yo = [
4688
4824
  "d",
4689
4825
  "stroke",
4690
4826
  "stroke-width"
4691
- ], jo = ["data-series-id", "data-point-type"], Mo = ["d", "fill"], No = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4827
+ ], Xo = ["data-series-id", "data-point-type"], Zo = ["d", "fill"], Qo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4692
4828
  __name: "WaveformSeriesLayer",
4693
4829
  props: {
4694
4830
  track: {},
@@ -4696,7 +4832,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4696
4832
  },
4697
4833
  setup(n) {
4698
4834
  let a = n, o = t(() => a.track.seriesPaths.map((e) => {
4699
- let t = So(e.series.pointType, e.pointRenderPoints.map((t) => ({
4835
+ let t = Vo(e.series.pointType, e.pointRenderPoints.map((t) => ({
4700
4836
  x: a.track.xScale(t.x),
4701
4837
  y: e.yScale(t.y)
4702
4838
  }))), n = e.series.errorBar.capWidth / 2, r = e.errorBarRenderPoints.map((t) => {
@@ -4733,8 +4869,8 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4733
4869
  "data-line-style": e.series.lineStyle,
4734
4870
  d: e.path,
4735
4871
  stroke: e.series.color,
4736
- "stroke-dasharray": D(wo)(e.series.lineStyle)
4737
- }, null, 8, Oo)) : r("", !0),
4872
+ "stroke-dasharray": D(Uo)(e.series.lineStyle)
4873
+ }, null, 8, qo)) : r("", !0),
4738
4874
  e.series.errorBar.visible ? (y(), i("g", {
4739
4875
  key: 1,
4740
4876
  class: "waveform-track__error-bars waveform-chart__error-bars",
@@ -4745,7 +4881,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4745
4881
  d: e.errorBarPath,
4746
4882
  stroke: e.series.errorBar.color || e.series.color,
4747
4883
  "stroke-width": e.series.errorBar.width
4748
- }, null, 8, Ao)) : r("", !0)], 8, ko)) : r("", !0),
4884
+ }, null, 8, Yo)) : r("", !0)], 8, Jo)) : r("", !0),
4749
4885
  e.series.pointType === "none" ? r("", !0) : (y(), i("g", {
4750
4886
  key: 2,
4751
4887
  class: "waveform-track__points waveform-chart__points",
@@ -4756,28 +4892,72 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4756
4892
  class: "waveform-track__point waveform-chart__point",
4757
4893
  d: e.pointPath,
4758
4894
  fill: e.series.color
4759
- }, null, 8, Mo)) : r("", !0)], 8, jo))
4760
- ], 8, Do))), 128))], 8, Eo)) : r("", !0);
4895
+ }, null, 8, Zo)) : r("", !0)], 8, Xo))
4896
+ ], 8, Ko))), 128))], 8, Go)) : r("", !0);
4761
4897
  }
4762
- }), [["__scopeId", "data-v-628502df"]]), Po = ["transform"], Fo = ["transform"], Io = {
4898
+ }), [["__scopeId", "data-v-628502df"]]), $o = ["clip-path"], es = [
4899
+ "data-y-axis-index",
4900
+ "x2",
4901
+ "y1",
4902
+ "y2",
4903
+ "stroke",
4904
+ "stroke-opacity",
4905
+ "stroke-width",
4906
+ "stroke-dasharray"
4907
+ ], ts = /* @__PURE__ */ l({
4908
+ __name: "WaveformZeroLines",
4909
+ props: {
4910
+ track: {},
4911
+ clipPathId: {},
4912
+ innerWidth: {},
4913
+ cleanView: { type: Boolean },
4914
+ zeroLine: {}
4915
+ },
4916
+ setup(t) {
4917
+ let n = t;
4918
+ function a(e) {
4919
+ let [t, r] = e.scale.domain(), i = Math.abs(e.tickValues[1] - e.tickValues[0]) * n.zeroLine.boundaryThreshold;
4920
+ return !n.zeroLine.visible || t >= 0 || r <= 0 || -t < i || r < i ? null : e.scale(0);
4921
+ }
4922
+ return (n, o) => !t.track.isEmpty && t.track.hasVisibleSeries && t.zeroLine.visible && !t.cleanView ? (y(), i("g", {
4923
+ key: 0,
4924
+ class: "waveform-track__zero-lines waveform-chart__zero-lines",
4925
+ "clip-path": `url(#${t.clipPathId}-${t.track.index})`,
4926
+ "aria-hidden": "true",
4927
+ "pointer-events": "none"
4928
+ }, [(y(!0), i(e, null, S(t.track.yAxes, (n) => (y(), i(e, { key: `zero-line-${t.track.index}-${n.index}` }, [a(n) === null ? r("", !0) : (y(), i("line", {
4929
+ key: 0,
4930
+ class: "waveform-track__zero-line waveform-chart__zero-line",
4931
+ "data-y-axis-index": n.index,
4932
+ x1: "0",
4933
+ x2: t.track.width ?? t.innerWidth,
4934
+ y1: a(n) ?? 0,
4935
+ y2: a(n) ?? 0,
4936
+ stroke: t.zeroLine.color,
4937
+ "stroke-opacity": t.zeroLine.opacity,
4938
+ "stroke-width": t.zeroLine.width,
4939
+ "stroke-dasharray": t.zeroLine.dash || void 0
4940
+ }, null, 8, es))], 64))), 128))], 8, $o)) : r("", !0);
4941
+ }
4942
+ }), ns = ["transform"], rs = ["transform"], is = {
4763
4943
  class: "waveform-track__axis-endpoint waveform-track__axis-endpoint--start waveform-chart__axis-endpoint waveform-chart__axis-endpoint--start",
4764
4944
  x: "0",
4765
4945
  y: "7",
4766
4946
  dy: "0.71em",
4767
4947
  "text-anchor": "start"
4768
- }, Lo = ["x"], Ro = [
4948
+ }, as = ["x"], os = [
4769
4949
  "data-y-axis-index",
4770
4950
  "data-y-axis-side",
4771
4951
  "transform"
4772
- ], zo = { key: 2 }, Bo = [
4952
+ ], ss = { key: 2 }, cs = [
4773
4953
  "x",
4774
4954
  "y",
4775
4955
  "width"
4776
- ], Vo = ["fill", "transform"], Ho = ["data-y-axis-title-index"], Uo = [
4956
+ ], ls = ["fill", "transform"], us = ["data-y-axis-title-index"], ds = [
4777
4957
  "x",
4778
4958
  "y",
4779
4959
  "width"
4780
- ], Wo = ["fill", "transform"], Go = /* @__PURE__ */ l({
4960
+ ], fs = ["fill", "transform"], ps = /* @__PURE__ */ l({
4781
4961
  __name: "WaveformTrackAxes",
4782
4962
  props: {
4783
4963
  track: {},
@@ -4785,7 +4965,12 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4785
4965
  cleanView: { type: Boolean },
4786
4966
  axes: {},
4787
4967
  timeUnit: {},
4788
- yLabel: {}
4968
+ yLabel: {},
4969
+ showUnits: {
4970
+ type: Boolean,
4971
+ default: !0
4972
+ },
4973
+ containYAxisEndpoints: { type: Boolean }
4789
4974
  },
4790
4975
  setup(t) {
4791
4976
  let n = t, o = x(), s = x([]);
@@ -4806,13 +4991,13 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4806
4991
  if (n.track.yAxes.forEach((e, t) => {
4807
4992
  let r = s.value[t];
4808
4993
  if (!r) return;
4809
- let i = e.seriesList[0]?.unit, a = (e.side === "left" ? F(e.scale) : I(e.scale)).tickFormat((t) => cr(Number(t), e.scale.domain(), e.tickValues, i)).tickSize(-4).tickPadding(7).tickSizeOuter(0).tickValues(e.tickValues), o = G(r);
4994
+ let i = n.showUnits ? e.seriesList[0]?.unit : void 0, a = (e.side === "left" ? F(e.scale) : I(e.scale)).tickFormat((t) => br(Number(t), e.scale.domain(), e.tickValues, i)).tickSize(-4).tickPadding(7).tickSizeOuter(0).tickValues(e.tickValues), o = G(r);
4810
4995
  o.call(a);
4811
- let c = Math.min(...e.tickValues);
4812
- o.selectAll(".tick text").attr("y", null).attr("dy", (e) => e === c ? "0" : "0.32em").attr("dominant-baseline", (e) => e === c ? "text-after-edge" : null), o.selectAll("path.domain").attr("display", n.axes?.y?.lineVisible === !1 ? "none" : null);
4996
+ let c = Math.min(...e.tickValues), l = n.containYAxisEndpoints ? Math.max(...e.tickValues) : void 0;
4997
+ o.selectAll(".tick text").attr("y", null).attr("dy", (e) => e === c || e === l ? "0" : "0.32em").attr("dominant-baseline", (e) => e === c ? "text-after-edge" : e === l ? "text-before-edge" : null), o.selectAll("path.domain").attr("display", n.axes?.y?.lineVisible === !1 ? "none" : null);
4813
4998
  }), !o.value) return;
4814
4999
  let e = G(o.value);
4815
- e.call(P(n.track.xScale).tickValues(n.track.xAxisTickValues).tickFormat((e) => Mt(Number(e), n.track.xScale.domain(), n.timeUnit, "tick", n.axes?.x?.labelFormatter)).tickSize(-4).tickPadding(7).tickSizeOuter(0)), e.selectAll("path.domain").attr("display", n.axes?.x?.lineVisible === !1 ? "none" : null);
5000
+ e.call(P(n.track.xScale).tickValues(n.track.xAxisTickValues).tickFormat((e) => Mt(Number(e), n.track.xScale.domain(), n.timeUnit, "tick", n.axes?.x?.labelFormatter ?? n.track.xAxisLabelFormatter)).tickSize(-4).tickPadding(7).tickSizeOuter(0)), e.selectAll("path.domain").attr("display", n.axes?.x?.lineVisible === !1 ? "none" : null);
4816
5001
  }
4817
5002
  return g(async () => {
4818
5003
  await f(), m();
@@ -4822,6 +5007,8 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4822
5007
  () => n.track.xAxisTickValues,
4823
5008
  () => n.track.yAxisTickValues,
4824
5009
  () => n.timeUnit,
5010
+ () => n.showUnits,
5011
+ () => n.containYAxisEndpoints,
4825
5012
  () => n.axes?.x?.labelFormatter,
4826
5013
  () => n.axes?.x?.lineVisible,
4827
5014
  () => n.axes?.y?.lineVisible
@@ -4834,7 +5021,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4834
5021
  ref: o,
4835
5022
  class: p(["waveform-track__axis waveform-track__axis--x waveform-chart__axis waveform-chart__axis--x", { "waveform-track__axis--line-hidden": t.axes?.x?.lineVisible === !1 }]),
4836
5023
  transform: `translate(0, ${t.track.height})`
4837
- }, null, 10, Po)) : r("", !0),
5024
+ }, null, 10, ns)) : r("", !0),
4838
5025
  t.track.showXAxis ? (y(), i("g", {
4839
5026
  key: 1,
4840
5027
  class: "waveform-track__axis-endpoints waveform-chart__axis-endpoints",
@@ -4842,13 +5029,13 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4842
5029
  "font-family": "sans-serif",
4843
5030
  "font-size": "10",
4844
5031
  "aria-hidden": "true"
4845
- }, [a("text", Io, T(t.track.endpointLabels.start), 1), a("text", {
5032
+ }, [a("text", is, T(t.track.endpointLabels.start), 1), a("text", {
4846
5033
  class: "waveform-track__axis-endpoint waveform-track__axis-endpoint--end waveform-chart__axis-endpoint waveform-chart__axis-endpoint--end",
4847
5034
  x: t.track.width ?? t.innerWidth,
4848
5035
  y: "7",
4849
5036
  dy: "0.71em",
4850
5037
  "text-anchor": "end"
4851
- }, T(t.track.endpointLabels.end), 9, Lo)], 8, Fo)) : r("", !0),
5038
+ }, T(t.track.endpointLabels.end), 9, as)], 8, rs)) : r("", !0),
4852
5039
  (y(!0), i(e, null, S(t.track.isEmpty ? [] : t.track.yAxes, (e) => (y(), i("g", {
4853
5040
  key: `y-axis-${t.track.index}-${e.index}`,
4854
5041
  ref_for: !0,
@@ -4857,21 +5044,21 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4857
5044
  "data-y-axis-index": e.index,
4858
5045
  "data-y-axis-side": e.side,
4859
5046
  transform: `translate(${e.x}, 0)`
4860
- }, null, 10, Ro))), 128)),
4861
- !t.cleanView && !t.track.isEmpty && t.track.hasVisibleSeries && t.track.seriesList.length === 1 && t.track.showYAxisLabel && t.track.series && c(t.track.series) && d(t.track.height, t.track.index) ? (y(), i("g", zo, [a("rect", {
5047
+ }, null, 10, os))), 128)),
5048
+ !t.cleanView && !t.track.isEmpty && t.track.hasVisibleSeries && t.track.seriesList.length === 1 && t.track.showYAxisLabel && t.track.series && c(t.track.series) && d(t.track.height, t.track.index) ? (y(), i("g", ss, [a("rect", {
4862
5049
  class: "waveform-track__y-axis-label-bg waveform-chart__y-axis-label-bg",
4863
5050
  x: t.track.yAxes[0].labelX - D(20) / 2,
4864
5051
  y: t.track.height / 2 - 40,
4865
5052
  width: D(20),
4866
5053
  height: "80",
4867
5054
  rx: "2"
4868
- }, null, 8, Bo), a("text", {
5055
+ }, null, 8, cs), a("text", {
4869
5056
  class: "waveform-track__y-axis-label waveform-chart__y-axis-label",
4870
5057
  fill: t.track.series?.color,
4871
5058
  transform: `translate(${t.track.yAxes[0].labelX}, ${t.track.height / 2}) rotate(-90)`,
4872
5059
  "text-anchor": "middle",
4873
5060
  "dominant-baseline": "central"
4874
- }, T(t.track.series ? c(t.track.series) : ""), 9, Vo)])) : r("", !0),
5061
+ }, T(t.track.series ? c(t.track.series) : ""), 9, ls)])) : r("", !0),
4875
5062
  (y(!0), i(e, null, S(!t.cleanView && t.track.yAxes.length > 1 ? t.track.yAxes.filter(l) : [], (e) => (y(), i("g", {
4876
5063
  key: `y-axis-title-${t.track.index}-${e.index}`,
4877
5064
  class: "waveform-track__multi-axis-title",
@@ -4883,48 +5070,40 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4883
5070
  width: D(20),
4884
5071
  height: "80",
4885
5072
  rx: "2"
4886
- }, null, 8, Uo), a("text", {
5073
+ }, null, 8, ds), a("text", {
4887
5074
  class: "waveform-track__y-axis-label waveform-chart__y-axis-label",
4888
5075
  fill: e.seriesList[0].color,
4889
5076
  transform: `translate(${e.labelX}, ${t.track.height / 2}) rotate(-90)`,
4890
5077
  "text-anchor": "middle",
4891
5078
  "dominant-baseline": "central"
4892
- }, T(c(e.seriesList[0])), 9, Wo)], 8, Ho))), 128))
5079
+ }, T(c(e.seriesList[0])), 9, fs)], 8, us))), 128))
4893
5080
  ], 64));
4894
5081
  }
4895
- }), Ko = [
5082
+ }), ms = [
4896
5083
  "width",
4897
5084
  "height",
4898
5085
  "fill"
4899
- ], qo = ["clip-path"], Jo = { class: "waveform-track__grid waveform-track__grid--minor waveform-chart__grid waveform-chart__grid--minor" }, Yo = [
5086
+ ], hs = ["clip-path"], gs = { class: "waveform-track__grid waveform-track__grid--minor waveform-chart__grid waveform-chart__grid--minor" }, _s = [
4900
5087
  "stroke",
4901
5088
  "x1",
4902
5089
  "x2",
4903
5090
  "y2"
4904
- ], Xo = [
5091
+ ], vs = [
4905
5092
  "stroke",
4906
5093
  "x2",
4907
5094
  "y1",
4908
5095
  "y2"
4909
- ], Zo = { class: "waveform-track__grid waveform-track__grid--major waveform-chart__grid waveform-chart__grid--major" }, Qo = [
5096
+ ], ys = { class: "waveform-track__grid waveform-track__grid--major waveform-chart__grid waveform-chart__grid--major" }, bs = [
4910
5097
  "stroke",
4911
5098
  "x1",
4912
5099
  "x2",
4913
5100
  "y2"
4914
- ], $o = [
5101
+ ], xs = [
4915
5102
  "stroke",
4916
5103
  "x2",
4917
5104
  "y1",
4918
5105
  "y2"
4919
- ], es = ["clip-path"], ts = [
4920
- "data-y-axis-index",
4921
- "x2",
4922
- "y1",
4923
- "y2",
4924
- "stroke",
4925
- "stroke-width",
4926
- "stroke-dasharray"
4927
- ], ns = ["x", "y"], rs = /* @__PURE__ */ l({
5106
+ ], Ss = ["x", "y"], Cs = /* @__PURE__ */ l({
4928
5107
  __name: "WaveformTrackBackdrop",
4929
5108
  props: {
4930
5109
  track: {},
@@ -4932,16 +5111,10 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4932
5111
  innerWidth: {},
4933
5112
  cleanView: { type: Boolean },
4934
5113
  frameNumber: {},
4935
- frameStyle: {},
4936
- zeroLine: {}
5114
+ frameStyle: {}
4937
5115
  },
4938
5116
  setup(t) {
4939
- let n = t;
4940
- function o(e) {
4941
- let [t, r] = e.scale.domain();
4942
- return !n.zeroLine.visible || t > 0 || r < 0 ? null : e.scale(0);
4943
- }
4944
- return (n, s) => (y(), i(e, null, [
5117
+ return (n, o) => (y(), i(e, null, [
4945
5118
  !t.track.isEmpty && !t.cleanView ? (y(), i("rect", {
4946
5119
  key: 0,
4947
5120
  class: "waveform-track__plot-background waveform-chart__plot-background",
@@ -4949,12 +5122,12 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4949
5122
  height: t.track.height,
4950
5123
  fill: t.frameStyle.backgroundColor,
4951
5124
  "aria-hidden": "true"
4952
- }, null, 8, Ko)) : r("", !0),
5125
+ }, null, 8, ms)) : r("", !0),
4953
5126
  !t.track.isEmpty && t.track.hasVisibleSeries && !t.cleanView ? (y(), i("g", {
4954
5127
  key: 1,
4955
5128
  "clip-path": `url(#${t.clipPathId}-${t.track.index})`,
4956
5129
  "aria-hidden": "true"
4957
- }, [a("g", Jo, [t.track.gridLines.vertical ? (y(!0), i(e, { key: 0 }, S(t.track.xMinorTicks, (e) => (y(), i("line", {
5130
+ }, [a("g", gs, [t.track.gridLines.vertical ? (y(!0), i(e, { key: 0 }, S(t.track.xMinorTicks, (e) => (y(), i("line", {
4958
5131
  key: `x-minor-${t.track.index}-${e}`,
4959
5132
  "data-grid-direction": "vertical",
4960
5133
  stroke: t.track.gridLines.verticalColor,
@@ -4962,7 +5135,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4962
5135
  x2: t.track.xScale(e),
4963
5136
  y1: "0",
4964
5137
  y2: t.track.height
4965
- }, null, 8, Yo))), 128)) : r("", !0), t.track.gridLines.horizontal ? (y(!0), i(e, { key: 1 }, S(t.track.yMinorTicks, (e) => (y(), i("line", {
5138
+ }, null, 8, _s))), 128)) : r("", !0), t.track.gridLines.horizontal ? (y(!0), i(e, { key: 1 }, S(t.track.yMinorTicks, (e) => (y(), i("line", {
4966
5139
  key: `y-minor-${t.track.index}-${e}`,
4967
5140
  "data-grid-direction": "horizontal",
4968
5141
  stroke: t.track.gridLines.horizontalColor,
@@ -4970,7 +5143,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4970
5143
  x2: t.track.width ?? t.innerWidth,
4971
5144
  y1: t.track.yScale(e),
4972
5145
  y2: t.track.yScale(e)
4973
- }, null, 8, Xo))), 128)) : r("", !0)]), a("g", Zo, [t.track.gridLines.vertical ? (y(!0), i(e, { key: 0 }, S(t.track.xMajorTicks, (e) => (y(), i("line", {
5146
+ }, null, 8, vs))), 128)) : r("", !0)]), a("g", ys, [t.track.gridLines.vertical ? (y(!0), i(e, { key: 0 }, S(t.track.xMajorTicks, (e) => (y(), i("line", {
4974
5147
  key: `x-major-${t.track.index}-${e}`,
4975
5148
  "data-grid-direction": "vertical",
4976
5149
  stroke: t.track.gridLines.verticalColor,
@@ -4978,7 +5151,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4978
5151
  x2: t.track.xScale(e),
4979
5152
  y1: "0",
4980
5153
  y2: t.track.height
4981
- }, null, 8, Qo))), 128)) : r("", !0), t.track.gridLines.horizontal ? (y(!0), i(e, { key: 1 }, S(t.track.yMajorTicks, (e) => (y(), i("line", {
5154
+ }, null, 8, bs))), 128)) : r("", !0), t.track.gridLines.horizontal ? (y(!0), i(e, { key: 1 }, S(t.track.yMajorTicks, (e) => (y(), i("line", {
4982
5155
  key: `y-major-${t.track.index}-${e}`,
4983
5156
  "data-grid-direction": "horizontal",
4984
5157
  stroke: t.track.gridLines.horizontalColor,
@@ -4986,26 +5159,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4986
5159
  x2: t.track.width ?? t.innerWidth,
4987
5160
  y1: t.track.yScale(e),
4988
5161
  y2: t.track.yScale(e)
4989
- }, null, 8, $o))), 128)) : r("", !0)])], 8, qo)) : r("", !0),
4990
- !t.track.isEmpty && t.track.hasVisibleSeries && t.zeroLine.visible && !t.cleanView ? (y(), i("g", {
4991
- key: 2,
4992
- class: "waveform-track__zero-lines waveform-chart__zero-lines",
4993
- "clip-path": `url(#${t.clipPathId}-${t.track.index})`,
4994
- "aria-hidden": "true"
4995
- }, [(y(!0), i(e, null, S(t.track.yAxes, (n) => (y(), i(e, { key: `zero-line-${t.track.index}-${n.index}` }, [o(n) === null ? r("", !0) : (y(), i("line", {
4996
- key: 0,
4997
- class: "waveform-track__zero-line waveform-chart__zero-line",
4998
- "data-y-axis-index": n.index,
4999
- x1: "0",
5000
- x2: t.track.width ?? t.innerWidth,
5001
- y1: o(n) ?? 0,
5002
- y2: o(n) ?? 0,
5003
- stroke: t.zeroLine.color,
5004
- "stroke-width": t.zeroLine.width,
5005
- "stroke-dasharray": t.zeroLine.dash || void 0
5006
- }, null, 8, ts))], 64))), 128))], 8, es)) : r("", !0),
5162
+ }, null, 8, xs))), 128)) : r("", !0)])], 8, hs)) : r("", !0),
5007
5163
  !t.track.isEmpty && t.track.hasVisibleSeries && t.frameNumber !== void 0 && !t.cleanView ? (y(), i("text", {
5008
- key: 3,
5164
+ key: 2,
5009
5165
  class: "waveform-track__watermark waveform-chart__watermark",
5010
5166
  x: (t.track.width ?? t.innerWidth) / 2,
5011
5167
  y: t.track.height / 2,
@@ -5013,10 +5169,10 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5013
5169
  "text-anchor": "middle",
5014
5170
  "dominant-baseline": "central",
5015
5171
  "aria-hidden": "true"
5016
- }, T(t.frameNumber), 13, ns)) : r("", !0)
5172
+ }, T(t.frameNumber), 13, Ss)) : r("", !0)
5017
5173
  ], 64));
5018
5174
  }
5019
- }), is = [
5175
+ }), ws = [
5020
5176
  "data-track-index",
5021
5177
  "data-track-id",
5022
5178
  "data-track-empty",
@@ -5026,19 +5182,21 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5026
5182
  "data-track-top",
5027
5183
  "data-track-height",
5028
5184
  "transform"
5029
- ], as = [
5185
+ ], Ts = [
5186
+ "x",
5187
+ "y",
5030
5188
  "width",
5031
5189
  "height",
5032
5190
  "stroke",
5033
5191
  "stroke-width",
5034
5192
  "stroke-dasharray",
5035
5193
  "stroke-linecap"
5036
- ], os = [
5194
+ ], Es = [
5037
5195
  "data-interactive",
5038
5196
  "data-independent-overlay-index",
5039
5197
  "width",
5040
5198
  "height"
5041
- ], ss = ["x", "y"], cs = /* @__PURE__ */ l({
5199
+ ], Ds = ["x", "y"], Os = /* @__PURE__ */ l({
5042
5200
  __name: "WaveformTrack",
5043
5201
  props: {
5044
5202
  track: {},
@@ -5056,6 +5214,12 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5056
5214
  axes: {},
5057
5215
  timeUnit: {},
5058
5216
  yLabel: {},
5217
+ showAxisUnits: {
5218
+ type: Boolean,
5219
+ default: !0
5220
+ },
5221
+ containYAxisEndpoints: { type: Boolean },
5222
+ containFrameStroke: { type: Boolean },
5059
5223
  cleanView: {
5060
5224
  type: Boolean,
5061
5225
  default: !1
@@ -5064,7 +5228,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5064
5228
  visible: !0,
5065
5229
  color: Gt.COLOR,
5066
5230
  width: Gt.WIDTH,
5067
- dash: Gt.DASH
5231
+ dash: Gt.DASH,
5232
+ opacity: Gt.OPACITY,
5233
+ boundaryThreshold: Gt.BOUNDARY_THRESHOLD
5068
5234
  }) }
5069
5235
  },
5070
5236
  emits: [
@@ -5085,7 +5251,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5085
5251
  borderStyle: a.frameStyle?.borderStyle === "dashed" || a.frameStyle?.borderStyle === "dotted" ? a.frameStyle.borderStyle : "solid",
5086
5252
  backgroundColor: a.frameStyle?.backgroundColor || "transparent"
5087
5253
  };
5088
- });
5254
+ }), l = t(() => a.containFrameStroke ? c.value.borderWidth / 2 : 0);
5089
5255
  return (t, n) => (y(), i("g", {
5090
5256
  class: p(["waveform-track waveform-chart__track", { "waveform-track--empty waveform-chart__track--empty": e.track.isEmpty }]),
5091
5257
  "data-track-index": e.track.index,
@@ -5098,54 +5264,71 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5098
5264
  "data-track-height": e.track.height,
5099
5265
  transform: `translate(${e.track.left ?? 0}, ${e.track.top})`
5100
5266
  }, [
5101
- s(rs, {
5267
+ s(Cs, {
5102
5268
  track: e.track,
5103
5269
  "clip-path-id": e.clipPathId,
5104
5270
  "inner-width": e.innerWidth,
5105
5271
  "clean-view": e.cleanView,
5106
5272
  "frame-number": e.frameNumber,
5107
- "frame-style": c.value,
5108
- "zero-line": e.zeroLine
5273
+ "frame-style": c.value
5109
5274
  }, null, 8, [
5110
5275
  "track",
5111
5276
  "clip-path-id",
5112
5277
  "inner-width",
5113
5278
  "clean-view",
5114
5279
  "frame-number",
5115
- "frame-style",
5116
- "zero-line"
5280
+ "frame-style"
5117
5281
  ]),
5118
- s(Go, {
5282
+ s(ps, {
5119
5283
  track: e.track,
5120
5284
  "inner-width": e.innerWidth,
5121
5285
  "clean-view": e.cleanView,
5122
5286
  axes: e.axes,
5123
5287
  "time-unit": e.timeUnit,
5124
- "y-label": e.yLabel
5288
+ "y-label": e.yLabel,
5289
+ "show-units": e.showAxisUnits,
5290
+ "contain-y-axis-endpoints": e.containYAxisEndpoints
5125
5291
  }, null, 8, [
5126
5292
  "track",
5127
5293
  "inner-width",
5128
5294
  "clean-view",
5129
5295
  "axes",
5130
5296
  "time-unit",
5131
- "y-label"
5297
+ "y-label",
5298
+ "show-units",
5299
+ "contain-y-axis-endpoints"
5132
5300
  ]),
5133
5301
  e.track.isEmpty ? r("", !0) : (y(), i("rect", {
5134
5302
  key: 0,
5135
5303
  class: "waveform-track__plot-frame waveform-chart__plot-frame",
5136
- width: e.track.width ?? e.innerWidth,
5137
- height: e.track.height,
5304
+ x: e.containFrameStroke ? l.value : void 0,
5305
+ y: e.containFrameStroke ? l.value : void 0,
5306
+ width: Math.max(0, (e.track.width ?? e.innerWidth) - l.value * 2),
5307
+ height: Math.max(0, e.track.height - l.value * 2),
5138
5308
  fill: "none",
5139
5309
  stroke: c.value.borderColor,
5140
5310
  "stroke-width": c.value.borderWidth,
5141
5311
  "stroke-dasharray": c.value.borderStyle === "dashed" ? "6 4" : c.value.borderStyle === "dotted" ? "1 3" : void 0,
5142
5312
  "stroke-linecap": c.value.borderStyle === "dotted" ? "round" : void 0,
5143
5313
  "aria-hidden": "true"
5144
- }, null, 8, as)),
5145
- s(No, {
5314
+ }, null, 8, Ts)),
5315
+ s(Qo, {
5146
5316
  track: e.track,
5147
5317
  "clip-path-id": e.clipPathId
5148
5318
  }, null, 8, ["track", "clip-path-id"]),
5319
+ s(ts, {
5320
+ track: e.track,
5321
+ "clip-path-id": e.clipPathId,
5322
+ "inner-width": e.innerWidth,
5323
+ "clean-view": e.cleanView,
5324
+ "zero-line": e.zeroLine
5325
+ }, null, 8, [
5326
+ "track",
5327
+ "clip-path-id",
5328
+ "inner-width",
5329
+ "clean-view",
5330
+ "zero-line"
5331
+ ]),
5149
5332
  !e.track.isEmpty && e.track.hasVisibleSeries && e.displayMode === "independent" ? (y(), i("rect", {
5150
5333
  key: 1,
5151
5334
  class: p(["waveform-track__overlay waveform-track__overlay--independent waveform-chart__overlay waveform-chart__overlay--independent", {
@@ -5164,7 +5347,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5164
5347
  onPointerleave: n[4] ||= (e) => o("pointer-leave"),
5165
5348
  onClick: n[5] ||= (e) => o("click", e),
5166
5349
  onContextmenu: n[6] ||= (e) => o("contextmenu", e)
5167
- }, null, 42, os)) : r("", !0),
5350
+ }, null, 42, Es)) : r("", !0),
5168
5351
  !e.track.isEmpty && !e.track.hasVisibleSeries && !e.cleanView ? (y(), i("text", {
5169
5352
  key: 2,
5170
5353
  class: "waveform-track__no-visible-series",
@@ -5172,33 +5355,33 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5172
5355
  y: e.track.height / 2,
5173
5356
  "text-anchor": "middle",
5174
5357
  "dominant-baseline": "central"
5175
- }, " 暂无可见曲线 ", 8, ss)) : r("", !0)
5176
- ], 10, is));
5358
+ }, " 暂无可见曲线 ", 8, Ds)) : r("", !0)
5359
+ ], 10, ws));
5177
5360
  }
5178
- }), ls = [
5361
+ }), ks = [
5179
5362
  "width",
5180
5363
  "height",
5181
5364
  "data-position",
5182
5365
  "data-orientation"
5183
- ], us = [
5366
+ ], As = [
5184
5367
  "disabled",
5185
5368
  "aria-pressed",
5186
5369
  "aria-label",
5187
5370
  "onClick"
5188
- ], ds = [
5371
+ ], js = [
5189
5372
  "data-line-type",
5190
5373
  "data-line-style",
5191
5374
  "data-point-type",
5192
5375
  "data-error-bar-visible"
5193
- ], fs = [
5376
+ ], Ms = [
5194
5377
  "d",
5195
5378
  "stroke",
5196
5379
  "stroke-dasharray"
5197
- ], ps = [
5380
+ ], Ns = [
5198
5381
  "d",
5199
5382
  "stroke",
5200
5383
  "stroke-width"
5201
- ], ms = ["d", "fill"], hs = ["title"], gs = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5384
+ ], Ps = ["d", "fill"], Fs = ["title"], Is = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5202
5385
  __name: "WaveformLegend",
5203
5386
  props: {
5204
5387
  series: {},
@@ -5211,15 +5394,23 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5211
5394
  type: Boolean,
5212
5395
  default: !1
5213
5396
  },
5397
+ showUnits: {
5398
+ type: Boolean,
5399
+ default: !1
5400
+ },
5214
5401
  hiddenSeriesIds: { default: () => [] }
5215
5402
  },
5216
5403
  emits: ["toggle"],
5217
5404
  setup(n, { emit: o }) {
5218
5405
  let s = n, c = o, l = t(() => new Set(s.hiddenSeriesIds));
5219
5406
  function u(e) {
5220
- return l.value.has(e);
5407
+ let t = e.unit?.trim();
5408
+ return s.showUnits && t && t !== "--" ? `${e.name} (${t})` : e.name;
5221
5409
  }
5222
5410
  function d(e) {
5411
+ return l.value.has(e);
5412
+ }
5413
+ function f(e) {
5223
5414
  s.interactive && c("toggle", e);
5224
5415
  }
5225
5416
  return (t, o) => (y(), i("foreignObject", {
@@ -5240,13 +5431,13 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5240
5431
  role: "list"
5241
5432
  }, [(y(!0), i(e, null, S(n.series, (e) => (y(), i("button", {
5242
5433
  key: e.id,
5243
- class: p(["waveform-legend__item waveform-chart__legend-item", { "is-hidden": u(e.id) }]),
5434
+ class: p(["waveform-legend__item waveform-chart__legend-item", { "is-hidden": d(e.id) }]),
5244
5435
  type: "button",
5245
5436
  role: "listitem",
5246
5437
  disabled: !n.interactive,
5247
- "aria-pressed": n.interactive ? !u(e.id) : void 0,
5248
- "aria-label": n.interactive ? `${u(e.id) ? "显示" : "隐藏"}曲线 ${e.name}` : void 0,
5249
- onClick: N((t) => d(e.id), ["stop"])
5438
+ "aria-pressed": n.interactive ? !d(e.id) : void 0,
5439
+ "aria-label": n.interactive ? `${d(e.id) ? "显示" : "隐藏"}曲线 ${e.name}` : void 0,
5440
+ onClick: N((t) => f(e.id), ["stop"])
5250
5441
  }, [(y(), i("svg", {
5251
5442
  class: "waveform-legend__swatch",
5252
5443
  viewBox: "0 0 26 16",
@@ -5256,45 +5447,45 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5256
5447
  "data-point-type": e.pointType,
5257
5448
  "data-error-bar-visible": e.errorBar.visible || void 0
5258
5449
  }, [
5259
- D(Co)(e.lineType) ? (y(), i("path", {
5450
+ D(Ho)(e.lineType) ? (y(), i("path", {
5260
5451
  key: 0,
5261
5452
  class: "waveform-legend__line",
5262
- d: D(Co)(e.lineType) ?? void 0,
5453
+ d: D(Ho)(e.lineType) ?? void 0,
5263
5454
  stroke: e.color,
5264
- "stroke-dasharray": D(wo)(e.lineStyle),
5455
+ "stroke-dasharray": D(Uo)(e.lineStyle),
5265
5456
  "stroke-width": "1",
5266
5457
  fill: "none"
5267
- }, null, 8, fs)) : r("", !0),
5458
+ }, null, 8, Ms)) : r("", !0),
5268
5459
  e.errorBar.visible ? (y(), i("path", {
5269
5460
  key: 1,
5270
5461
  class: "waveform-legend__error-bar",
5271
- d: D(To)(e.errorBar.capWidth),
5462
+ d: D(Wo)(e.errorBar.capWidth),
5272
5463
  stroke: e.errorBar.color || e.color,
5273
5464
  "stroke-width": e.errorBar.width,
5274
5465
  "stroke-linecap": "butt",
5275
5466
  fill: "none"
5276
- }, null, 8, ps)) : r("", !0),
5467
+ }, null, 8, Ns)) : r("", !0),
5277
5468
  e.pointType === "none" ? r("", !0) : (y(), i("path", {
5278
5469
  key: 2,
5279
5470
  class: "waveform-legend__point",
5280
- d: D(xo)(e.pointType, 30) ?? void 0,
5471
+ d: D(Bo)(e.pointType, 30) ?? void 0,
5281
5472
  fill: e.color,
5282
5473
  transform: "translate(13 8)"
5283
- }, null, 8, ms))
5284
- ], 8, ds)), a("span", {
5474
+ }, null, 8, Ps))
5475
+ ], 8, js)), a("span", {
5285
5476
  class: "waveform-legend__label",
5286
- title: e.name
5287
- }, T(e.name), 9, hs)], 10, us))), 128))], 6)], 2)], 8, ls));
5477
+ title: u(e)
5478
+ }, T(u(e)), 9, Fs)], 10, As))), 128))], 6)], 2)], 8, ks));
5288
5479
  }
5289
- }), [["__scopeId", "data-v-3af7ebae"]]), _s = {
5480
+ }), [["__scopeId", "data-v-d5958f86"]]), Ls = {
5290
5481
  class: "waveform-chart__hover-layer",
5291
5482
  "pointer-events": "none",
5292
5483
  "aria-hidden": "true"
5293
- }, vs = ["clip-path", "transform"], ys = [
5484
+ }, Rs = ["clip-path", "transform"], zs = [
5294
5485
  "x1",
5295
5486
  "x2",
5296
5487
  "y2"
5297
- ], bs = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5488
+ ], Bs = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5298
5489
  __name: "WaveformHoverLayer",
5299
5490
  props: {
5300
5491
  state: {},
@@ -5310,7 +5501,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5310
5501
  x: e.xScale(n)
5311
5502
  }] : [];
5312
5503
  }));
5313
- return (t, r) => (y(), i("g", _s, [(y(!0), i(e, null, S(o.value, (e) => (y(), i("g", {
5504
+ return (t, r) => (y(), i("g", Ls, [(y(!0), i(e, null, S(o.value, (e) => (y(), i("g", {
5314
5505
  key: e.track.index,
5315
5506
  class: "waveform-track__crosshair waveform-chart__crosshair",
5316
5507
  "clip-path": `url(#${n.clipPathId}-${e.track.index})`,
@@ -5320,9 +5511,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5320
5511
  x2: e.x,
5321
5512
  y1: "0",
5322
5513
  y2: e.track.height
5323
- }, null, 8, ys)], 8, vs))), 128))]));
5514
+ }, null, 8, zs)], 8, Rs))), 128))]));
5324
5515
  }
5325
- }), [["__scopeId", "data-v-54a5a37d"]]), xs = [
5516
+ }), [["__scopeId", "data-v-54a5a37d"]]), Vs = [
5326
5517
  "data-display-mode",
5327
5518
  "data-interaction-mode",
5328
5519
  "data-presentation-mode",
@@ -5331,103 +5522,104 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5331
5522
  "data-plot-margin-top",
5332
5523
  "data-plot-margin-bottom",
5333
5524
  "data-title-area-height"
5334
- ], Ss = [
5525
+ ], Hs = [
5335
5526
  "role",
5336
5527
  "aria-level",
5337
5528
  "aria-hidden"
5338
- ], Cs = ["data-title-scale", "data-title-wrapped"], ws = [
5529
+ ], Us = ["data-title-scale", "data-title-wrapped"], Ws = [
5339
5530
  "width",
5340
5531
  "height",
5341
5532
  "aria-label"
5342
- ], Ts = ["id"], Es = ["width", "height"], Ds = ["transform"], Os = {
5533
+ ], Gs = ["id"], Ks = ["width", "height"], qs = ["transform"], Js = {
5343
5534
  key: 0,
5344
5535
  class: "waveform-chart__grid-slots",
5345
5536
  "aria-hidden": "true"
5346
- }, ks = ["transform"], As = ["width", "height"], js = ["width", "height"], Ms = [
5537
+ }, Ys = ["transform"], Xs = ["width", "height"], Zs = ["width", "height"], Qs = [
5347
5538
  "x",
5348
5539
  "y",
5349
5540
  "width",
5350
5541
  "height"
5351
- ], Ns = {
5542
+ ], $s = {
5352
5543
  key: 4,
5353
5544
  class: "waveform-chart__legend-layer"
5354
- }, Ps = [
5545
+ }, ec = [
5355
5546
  "data-legend-track-index",
5356
5547
  "data-legend-track-id",
5357
5548
  "transform"
5358
- ], Fs = ["x", "y"], Is = ["x", "y"], Ls = /* @__PURE__ */ l({
5549
+ ], tc = ["x", "y"], nc = ["x", "y"], rc = /* @__PURE__ */ l({
5359
5550
  __name: "WaveformChartView",
5360
5551
  props: { controller: {} },
5361
5552
  setup(t) {
5362
- let { displayMode: o, activeInteractionMode: c, isCleanView: l, isPresentationMode: u, selection: d, containerStyle: f, overlayMode: h, resolvedChartLeftMargin: g, titleAreaHeight: _, resolvedPlotMargin: v, pointerInsideChart: b, handleNativeContextMenu: x, titleAreaReserved: C, titleAreaStyle: w, titleVisible: O, titleMeasureStyle: k, resolvedTitleText: A, titleVisualStyle: j, titleTextStyle: M, titleLayout: N, chartWidth: P, drawingHeight: F, hasWaveformData: I, requestViewportReset: L, trackLayouts: R, clipPathId: z, chartTopMargin: B, gridCells: V, hasVisibleWaveformData: H, zoomable: U, isZoomMode: W, innerWidth: G, innerHeight: ee, handleSharedPointerMove: te, beginSharedViewportDrag: ne, finishViewportDrag: re, cancelViewportDrag: K, handlePointerLeave: q, handleAnnotationClick: ie, handleAnnotationContextMenu: J, resolveFrameNumber: ae, frameStyle: oe, axes: se, resolvedZeroLine: le, timeUnit: ue, yLabel: de, handleIndependentPointerMove: fe, beginViewportDrag: Y, hoverState: pe, showTooltip: me, selectionBox: he, renderedAnnotations: ge, annotationsVisible: _e, handleExistingAnnotationContextMenu: ve, beginAnnotationDrag: ye, handleAnnotationMove: be, endAnnotationDrag: xe, resolveLegendPosition: Se, resolveLegendOrientation: Ce, legendBackgroundColor: X, legendInteractive: we, resolvedHiddenSeriesIds: Te, toggleSeriesVisibility: Ee, resolvedXLabel: De, xAxisTitleY: Oe, hasChartArea: ke, gridOptions: Ae, pageCount: je, currentPage: Me, getPageSize: Ne, pageableTracks: Pe, goToPage: Fe, annotationInteraction: Ie, editorDraft: Le, contextMenu: Re, editorSeries: ze, editorSeriesOptions: Be, timeError: Ve, confirmAnnotation: He, cancelAnnotation: Ue, changeDraftSeries: We, changeDraftTime: Ge, editContextAnnotation: Ke, deleteContextAnnotation: qe, chartHeight: Je, setContainer: Ye, setSvgElement: Xe, setTitleMeasureElement: Ze, setSharedOverlayElement: Qe } = E(t.controller);
5363
- function $e() {
5364
- b.value = !1, q.value();
5553
+ let { displayMode: o, activeInteractionMode: c, isCleanView: l, isEdgeCompact: u, paginationVisible: d, isPresentationMode: f, selection: h, containerStyle: g, overlayMode: _, unitDisplayMode: v, showLegendUnits: b, resolvedChartLeftMargin: x, titleAreaHeight: C, resolvedPlotMargin: w, pointerInsideChart: O, handleNativeContextMenu: k, titleAreaReserved: A, titleAreaStyle: j, titleVisible: M, titleMeasureStyle: N, resolvedTitleText: P, titleVisualStyle: F, titleTextStyle: I, titleLayout: L, chartWidth: R, drawingHeight: z, hasWaveformData: B, requestViewportReset: V, trackLayouts: H, clipPathId: U, chartTopMargin: W, gridCells: G, hasVisibleWaveformData: K, zoomable: ee, isZoomMode: te, innerWidth: ne, innerHeight: re, handleSharedPointerMove: ie, beginSharedViewportDrag: ae, finishViewportDrag: q, cancelViewportDrag: oe, handlePointerLeave: se, handleAnnotationClick: ce, handleAnnotationContextMenu: ue, resolveFrameNumber: de, frameStyle: fe, axes: pe, resolvedZeroLine: J, timeUnit: me, yLabel: Y, handleIndependentPointerMove: he, beginViewportDrag: ge, hoverState: _e, showTooltip: ve, selectionBox: ye, renderedAnnotations: be, annotationsVisible: xe, handleExistingAnnotationContextMenu: Se, beginAnnotationDrag: Ce, handleAnnotationMove: X, endAnnotationDrag: we, resolveLegendPosition: Te, resolveLegendOrientation: Ee, legendBackgroundColor: De, legendInteractive: Oe, resolvedHiddenSeriesIds: ke, toggleSeriesVisibility: Ae, resolvedXLabel: je, xAxisTitleY: Me, hasChartArea: Ne, gridOptions: Pe, currentPage: Fe, getPageSize: Ie, pageableTracks: Le, goToPage: Re, annotationInteraction: ze, editorDraft: Be, contextMenu: Ve, editorSeries: He, editorSeriesOptions: Ue, timeError: We, confirmAnnotation: Ge, cancelAnnotation: Ke, changeDraftSeries: qe, changeDraftTime: Je, editContextAnnotation: Ye, deleteContextAnnotation: Xe, chartHeight: Ze, setContainer: Qe, setSvgElement: $e, setTitleMeasureElement: et, setSharedOverlayElement: tt } = E(t.controller);
5554
+ function nt() {
5555
+ O.value = !1, se.value();
5365
5556
  }
5366
5557
  return (t, E) => (y(), i("div", {
5367
- ref: D(Ye),
5558
+ ref: D(Qe),
5368
5559
  class: p(["waveform-chart", [
5369
5560
  `waveform-chart--${D(o)}`,
5370
5561
  `waveform-chart--interaction-${D(c)}`,
5371
5562
  {
5372
5563
  "waveform-chart--clean": D(l),
5373
- "waveform-chart--presentation": D(u),
5374
- "waveform-chart--panning": D(d)?.kind === "pan"
5564
+ "waveform-chart--edge-compact": D(u),
5565
+ "waveform-chart--presentation": D(f),
5566
+ "waveform-chart--panning": D(h)?.kind === "pan"
5375
5567
  }
5376
5568
  ]]),
5377
- style: m(D(f)),
5569
+ style: m(D(g)),
5378
5570
  "data-display-mode": D(o),
5379
5571
  "data-interaction-mode": D(c),
5380
- "data-presentation-mode": D(u),
5381
- "data-overlay-mode": D(h),
5382
- "data-chart-left-margin": D(g),
5383
- "data-plot-margin-top": D(v).top,
5384
- "data-plot-margin-bottom": D(v).bottom,
5385
- "data-title-area-height": D(_),
5386
- onPointerenter: E[8] ||= (e) => b.value = !0,
5387
- onPointerleave: $e,
5388
- onContextmenuCapture: E[9] ||= (...e) => D(x) && D(x)(...e)
5572
+ "data-presentation-mode": D(f),
5573
+ "data-overlay-mode": D(_),
5574
+ "data-chart-left-margin": D(x),
5575
+ "data-plot-margin-top": D(w).top,
5576
+ "data-plot-margin-bottom": D(w).bottom,
5577
+ "data-title-area-height": D(C),
5578
+ onPointerenter: E[8] ||= (e) => O.value = !0,
5579
+ onPointerleave: nt,
5580
+ onContextmenuCapture: E[9] ||= (...e) => D(k) && D(k)(...e)
5389
5581
  }, [
5390
- D(C) ? (y(), i("div", {
5582
+ D(A) ? (y(), i("div", {
5391
5583
  key: 0,
5392
5584
  class: "waveform-chart__title-area",
5393
- style: m(D(w)),
5394
- role: D(O) ? "heading" : void 0,
5395
- "aria-level": D(O) ? 2 : void 0,
5585
+ style: m(D(j)),
5586
+ role: D(M) ? "heading" : void 0,
5587
+ "aria-level": D(M) ? 2 : void 0,
5396
5588
  "aria-hidden": D(l) || void 0
5397
5589
  }, [a("span", {
5398
- ref: D(Ze),
5590
+ ref: D(et),
5399
5591
  class: "waveform-chart__title-measure",
5400
- style: m(D(k)),
5592
+ style: m(D(N)),
5401
5593
  "aria-hidden": "true"
5402
- }, T(D(A)), 5), D(O) ? (y(), i("span", {
5594
+ }, T(D(P)), 5), D(M) ? (y(), i("span", {
5403
5595
  key: 0,
5404
5596
  class: "waveform-chart__title-visual",
5405
- style: m(D(j))
5597
+ style: m(D(F))
5406
5598
  }, [a("span", {
5407
5599
  class: "waveform-chart__title-text",
5408
- style: m(D(M)),
5409
- "data-title-scale": D(N).scale,
5410
- "data-title-wrapped": D(N).wrapped || void 0
5411
- }, T(D(A)), 13, Cs)], 4)) : r("", !0)], 12, Ss)) : r("", !0),
5600
+ style: m(D(I)),
5601
+ "data-title-scale": D(L).scale,
5602
+ "data-title-wrapped": D(L).wrapped || void 0
5603
+ }, T(D(P)), 13, Us)], 4)) : r("", !0)], 12, Hs)) : r("", !0),
5412
5604
  (y(), i("svg", {
5413
- ref: D(Xe),
5605
+ ref: D($e),
5414
5606
  class: "waveform-chart__svg",
5415
- width: D(P),
5416
- height: D(F),
5607
+ width: D(R),
5608
+ height: D(z),
5417
5609
  role: "img",
5418
- "aria-label": D(I) ? "波形折线图" : "暂无波形数据",
5419
- onDblclick: E[7] ||= (...e) => D(L) && D(L)(...e)
5610
+ "aria-label": D(B) ? "波形折线图" : "暂无波形数据",
5611
+ onDblclick: E[7] ||= (...e) => D(V) && D(V)(...e)
5420
5612
  }, [
5421
- a("defs", null, [(y(!0), i(e, null, S(D(R), (e) => (y(), i("clipPath", {
5422
- id: `${D(z)}-${e.index}`,
5423
- key: `${D(z)}-${e.index}`,
5613
+ a("defs", null, [(y(!0), i(e, null, S(D(H), (e) => (y(), i("clipPath", {
5614
+ id: `${D(U)}-${e.index}`,
5615
+ key: `${D(U)}-${e.index}`,
5424
5616
  clipPathUnits: "userSpaceOnUse"
5425
5617
  }, [a("rect", {
5426
5618
  width: e.width,
5427
5619
  height: e.height
5428
- }, null, 8, Es)], 8, Ts))), 128))]),
5429
- a("g", { transform: `translate(${D(g)}, ${D(B)})` }, [
5430
- D(o) !== "compact" && !D(l) ? (y(), i("g", Os, [(y(!0), i(e, null, S(D(V), (e) => (y(), i("g", {
5620
+ }, null, 8, Ks)], 8, Gs))), 128))]),
5621
+ a("g", { transform: `translate(${D(x)}, ${D(W)})` }, [
5622
+ D(o) !== "compact" && !D(l) ? (y(), i("g", Js, [(y(!0), i(e, null, S(D(G), (e) => (y(), i("g", {
5431
5623
  key: `grid-slot-${e.slotIndex}`,
5432
5624
  transform: `translate(${e.left}, ${e.top})`
5433
5625
  }, [e.series ? r("", !0) : (y(), i("rect", {
@@ -5435,47 +5627,50 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5435
5627
  class: "waveform-chart__grid-slot-placeholder",
5436
5628
  width: e.width,
5437
5629
  height: e.cellHeight
5438
- }, null, 8, As))], 8, ks))), 128))])) : r("", !0),
5439
- D(o) !== "independent" && D(R).length && D(H) ? (y(), i("rect", {
5630
+ }, null, 8, Xs))], 8, Ys))), 128))])) : r("", !0),
5631
+ D(o) !== "independent" && D(H).length && D(K) ? (y(), i("rect", {
5440
5632
  key: 1,
5441
- ref: D(Qe),
5633
+ ref: D(tt),
5442
5634
  class: p(["waveform-chart__overlay waveform-chart__overlay--shared", {
5443
- "is-zoomable": !D(u) && D(U) && D(W),
5444
- "is-annotating": !D(u) && D(c) === "annotation"
5635
+ "is-zoomable": !D(f) && D(ee) && D(te),
5636
+ "is-annotating": !D(f) && D(c) === "annotation"
5445
5637
  }]),
5446
- width: D(G),
5447
- height: D(ee),
5448
- onPointermove: E[0] ||= (...e) => D(te) && D(te)(...e),
5449
- onPointerdown: E[1] ||= (...e) => D(ne) && D(ne)(...e),
5450
- onPointerup: E[2] ||= (...e) => D(re) && D(re)(...e),
5451
- onPointercancel: E[3] ||= (...e) => D(K) && D(K)(...e),
5452
- onPointerleave: E[4] ||= (...e) => D(q) && D(q)(...e),
5453
- onClick: E[5] ||= (...e) => D(ie) && D(ie)(...e),
5454
- onContextmenu: E[6] ||= (...e) => D(J) && D(J)(...e)
5455
- }, null, 42, js)) : r("", !0),
5456
- (y(!0), i(e, null, S(D(R), (e) => (y(), n(D(cs), {
5638
+ width: D(ne),
5639
+ height: D(re),
5640
+ onPointermove: E[0] ||= (...e) => D(ie) && D(ie)(...e),
5641
+ onPointerdown: E[1] ||= (...e) => D(ae) && D(ae)(...e),
5642
+ onPointerup: E[2] ||= (...e) => D(q) && D(q)(...e),
5643
+ onPointercancel: E[3] ||= (...e) => D(oe) && D(oe)(...e),
5644
+ onPointerleave: E[4] ||= (...e) => D(se) && D(se)(...e),
5645
+ onClick: E[5] ||= (...e) => D(ce) && D(ce)(...e),
5646
+ onContextmenu: E[6] ||= (...e) => D(ue) && D(ue)(...e)
5647
+ }, null, 42, Zs)) : r("", !0),
5648
+ (y(!0), i(e, null, S(D(H), (e) => (y(), n(D(Os), {
5457
5649
  key: `${e.index}-${e.id}`,
5458
5650
  track: e,
5459
- "clip-path-id": D(z),
5460
- "inner-width": D(G),
5461
- zoomable: D(U),
5462
- interactive: !D(u),
5651
+ "clip-path-id": D(U),
5652
+ "inner-width": D(ne),
5653
+ zoomable: D(ee),
5654
+ interactive: !D(f),
5463
5655
  "display-mode": D(o),
5464
5656
  "interaction-mode": D(c),
5465
- "frame-number": D(ae)(e.id),
5466
- "frame-style": D(oe),
5467
- axes: D(se),
5657
+ "frame-number": D(de)(e.id),
5658
+ "frame-style": D(fe),
5659
+ axes: D(pe),
5660
+ "show-axis-units": D(v) === "axis",
5661
+ "contain-y-axis-endpoints": D(u),
5662
+ "contain-frame-stroke": D(u),
5468
5663
  "clean-view": D(l),
5469
- "zero-line": D(le),
5470
- "time-unit": D(ue),
5471
- "y-label": D(de),
5472
- onPointerMove: (t) => D(fe)(t, e.index),
5473
- onPointerDown: (t) => D(Y)(t, e.index, !0),
5474
- onPointerUp: D(re),
5475
- onPointerCancel: D(K),
5476
- onPointerLeave: D(q),
5477
- onClick: (t) => D(ie)(t, e.index),
5478
- onContextmenu: (t) => D(J)(t, e.index)
5664
+ "zero-line": D(J),
5665
+ "time-unit": D(me),
5666
+ "y-label": D(Y),
5667
+ onPointerMove: (t) => D(he)(t, e.index),
5668
+ onPointerDown: (t) => D(ge)(t, e.index, !0),
5669
+ onPointerUp: D(q),
5670
+ onPointerCancel: D(oe),
5671
+ onPointerLeave: D(se),
5672
+ onClick: (t) => D(ce)(t, e.index),
5673
+ onContextmenu: (t) => D(ue)(t, e.index)
5479
5674
  }, null, 8, [
5480
5675
  "track",
5481
5676
  "clip-path-id",
@@ -5487,6 +5682,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5487
5682
  "frame-number",
5488
5683
  "frame-style",
5489
5684
  "axes",
5685
+ "show-axis-units",
5686
+ "contain-y-axis-endpoints",
5687
+ "contain-frame-stroke",
5490
5688
  "clean-view",
5491
5689
  "zero-line",
5492
5690
  "time-unit",
@@ -5499,35 +5697,35 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5499
5697
  "onClick",
5500
5698
  "onContextmenu"
5501
5699
  ]))), 128)),
5502
- s(D(bs), {
5503
- state: D(pe),
5504
- tracks: D(R),
5505
- "clip-path-id": D(z),
5506
- visible: D(me) && !D(u)
5700
+ s(D(Bs), {
5701
+ state: D(_e),
5702
+ tracks: D(H),
5703
+ "clip-path-id": D(U),
5704
+ visible: D(ve) && !D(f)
5507
5705
  }, null, 8, [
5508
5706
  "state",
5509
5707
  "tracks",
5510
5708
  "clip-path-id",
5511
5709
  "visible"
5512
5710
  ]),
5513
- D(he) && D(d)?.kind === "box" ? (y(), i("rect", {
5711
+ D(ye) && D(h)?.kind === "box" ? (y(), i("rect", {
5514
5712
  key: 2,
5515
5713
  class: "waveform-chart__zoom-selection",
5516
- x: D(he).x,
5517
- y: D(he).y,
5518
- width: D(he).width,
5519
- height: D(he).height,
5714
+ x: D(ye).x,
5715
+ y: D(ye).y,
5716
+ width: D(ye).width,
5717
+ height: D(ye).height,
5520
5718
  "aria-hidden": "true"
5521
- }, null, 8, Ms)) : r("", !0),
5719
+ }, null, 8, Qs)) : r("", !0),
5522
5720
  D(l) ? r("", !0) : (y(), n(D(rt), {
5523
5721
  key: 3,
5524
- annotations: D(ge),
5525
- visible: D(_e),
5526
- interactive: !D(u),
5527
- onContextmenu: D(ve),
5528
- onDragStart: D(ye),
5529
- onMove: D(be),
5530
- onDragEnd: D(xe)
5722
+ annotations: D(be),
5723
+ visible: D(xe),
5724
+ interactive: !D(f),
5725
+ onContextmenu: D(Se),
5726
+ onDragStart: D(Ce),
5727
+ onMove: D(X),
5728
+ onDragEnd: D(we)
5531
5729
  }, null, 8, [
5532
5730
  "annotations",
5533
5731
  "visible",
@@ -5537,25 +5735,27 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5537
5735
  "onMove",
5538
5736
  "onDragEnd"
5539
5737
  ])),
5540
- D(l) ? r("", !0) : (y(), i("g", Ns, [(y(!0), i(e, null, S(D(R), (e) => (y(), i("g", {
5738
+ D(l) ? r("", !0) : (y(), i("g", $s, [(y(!0), i(e, null, S(D(H), (e) => (y(), i("g", {
5541
5739
  key: `legend-${e.index}-${e.id}`,
5542
5740
  class: "waveform-chart__legend-track",
5543
5741
  "data-legend-track-index": e.index,
5544
5742
  "data-legend-track-id": e.id,
5545
5743
  transform: `translate(${e.left}, ${e.top})`
5546
- }, [!e.isEmpty && e.legendSeries.length > 1 ? (y(), n(D(gs), {
5744
+ }, [!e.isEmpty && (e.legendSeries.length > 1 || D(v) === "legend-single-series") ? (y(), n(D(Is), {
5547
5745
  key: 0,
5548
5746
  series: e.legendSeries,
5549
- position: D(Se)(e.id),
5550
- orientation: D(Ce)(D(Se)(e.id)),
5551
- "background-color": D(X),
5552
- interactive: D(we),
5553
- "hidden-series-ids": D(Te),
5554
- width: e.width ?? D(G),
5747
+ "show-units": D(b),
5748
+ position: D(Te)(e.id),
5749
+ orientation: D(Ee)(D(Te)(e.id)),
5750
+ "background-color": D(De),
5751
+ interactive: D(Oe),
5752
+ "hidden-series-ids": D(ke),
5753
+ width: e.width ?? D(ne),
5555
5754
  height: e.height,
5556
- onToggle: D(Ee)
5755
+ onToggle: D(Ae)
5557
5756
  }, null, 8, [
5558
5757
  "series",
5758
+ "show-units",
5559
5759
  "position",
5560
5760
  "orientation",
5561
5761
  "background-color",
@@ -5564,51 +5764,51 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5564
5764
  "width",
5565
5765
  "height",
5566
5766
  "onToggle"
5567
- ])) : r("", !0)], 8, Ps))), 128))]))
5568
- ], 8, Ds),
5569
- D(De) && !D(l) ? (y(), i("text", {
5767
+ ])) : r("", !0)], 8, ec))), 128))]))
5768
+ ], 8, qs),
5769
+ D(je) && !D(l) ? (y(), i("text", {
5570
5770
  key: 0,
5571
5771
  class: "waveform-chart__label waveform-chart__x-label",
5572
- x: D(g) + D(G) / 2,
5573
- y: D(Oe),
5772
+ x: D(x) + D(ne) / 2,
5773
+ y: D(Me),
5574
5774
  "text-anchor": "middle"
5575
- }, T(D(De)), 9, Fs)) : r("", !0),
5576
- D(ke) && !D(I) ? (y(), i("text", {
5775
+ }, T(D(je)), 9, tc)) : r("", !0),
5776
+ D(Ne) && !D(B) ? (y(), i("text", {
5577
5777
  key: 1,
5578
5778
  class: "waveform-chart__empty",
5579
- x: D(P) / 2,
5580
- y: D(F) / 2,
5779
+ x: D(R) / 2,
5780
+ y: D(z) / 2,
5581
5781
  "text-anchor": "middle"
5582
- }, " 暂无有效波形数据 ", 8, Is)) : r("", !0)
5583
- ], 40, ws)),
5584
- D(Ae).showPagination && D(je) > 1 && !D(l) ? (y(), n(D(ce), {
5782
+ }, " 暂无有效波形数据 ", 8, nc)) : r("", !0)
5783
+ ], 40, Ws)),
5784
+ D(d) ? (y(), n(D(le), {
5585
5785
  key: 1,
5586
5786
  class: "waveform-chart__pagination",
5587
5787
  "aria-label": "波形分页",
5588
- current: D(Me),
5589
- "page-size": D(Ne)(D(Ae)),
5590
- total: D(Pe).length,
5788
+ current: D(Fe),
5789
+ "page-size": D(Ie)(D(Pe)),
5790
+ total: D(Le).length,
5591
5791
  "show-size-changer": !1,
5592
5792
  "show-quick-jumper": !1,
5593
- onChange: D(Fe)
5793
+ onChange: D(Re)
5594
5794
  }, null, 8, [
5595
5795
  "current",
5596
5796
  "page-size",
5597
5797
  "total",
5598
5798
  "onChange"
5599
5799
  ])) : r("", !0),
5600
- D(Le) && !D(l) && !D(u) ? (y(), n(io, {
5800
+ D(Be) && !D(l) && !D(f) ? (y(), n(wo, {
5601
5801
  key: 2,
5602
- annotation: D(Le).annotation,
5603
- mode: D(Le).mode,
5604
- series: D(ze),
5605
- "series-options": D(Be),
5606
- "time-unit": D(ue),
5607
- "time-error": D(Ve),
5608
- onConfirm: D(He),
5609
- onCancel: D(Ue),
5610
- onSeriesChange: D(We),
5611
- onTimeChange: D(Ge)
5802
+ annotation: D(Be).annotation,
5803
+ mode: D(Be).mode,
5804
+ series: D(He),
5805
+ "series-options": D(Ue),
5806
+ "time-unit": D(me),
5807
+ "time-error": D(We),
5808
+ onConfirm: D(Ge),
5809
+ onCancel: D(Ke),
5810
+ onSeriesChange: D(qe),
5811
+ onTimeChange: D(Je)
5612
5812
  }, null, 8, [
5613
5813
  "annotation",
5614
5814
  "mode",
@@ -5621,15 +5821,15 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5621
5821
  "onSeriesChange",
5622
5822
  "onTimeChange"
5623
5823
  ])) : r("", !0),
5624
- !D(l) && !D(u) ? (y(), n(D(it), {
5824
+ !D(l) && !D(f) ? (y(), n(D(it), {
5625
5825
  key: 3,
5626
- visible: D(Re) !== null,
5627
- x: D(Re)?.x || 0,
5628
- y: D(Re)?.y || 0,
5629
- "can-edit": !!D(Re)?.annotationId,
5630
- onEdit: D(Ke),
5631
- onDelete: D(qe),
5632
- onClose: D(Ie).closeContextMenu
5826
+ visible: D(Ve) !== null,
5827
+ x: D(Ve)?.x || 0,
5828
+ y: D(Ve)?.y || 0,
5829
+ "can-edit": !!D(Ve)?.annotationId,
5830
+ onEdit: D(Ye),
5831
+ onDelete: D(Xe),
5832
+ onClose: D(ze).closeContextMenu
5633
5833
  }, null, 8, [
5634
5834
  "visible",
5635
5835
  "x",
@@ -5639,12 +5839,12 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5639
5839
  "onDelete",
5640
5840
  "onClose"
5641
5841
  ])) : r("", !0),
5642
- s(D(mo), {
5643
- state: D(pe),
5644
- visible: D(me) && !D(u),
5645
- "time-unit": D(ue),
5646
- "container-width": D(P),
5647
- "container-height": D(Je)
5842
+ s(D(No), {
5843
+ state: D(_e),
5844
+ visible: D(ve) && !D(f),
5845
+ "time-unit": D(me),
5846
+ "container-width": D(R),
5847
+ "container-height": D(Ze)
5648
5848
  }, null, 8, [
5649
5849
  "state",
5650
5850
  "visible",
@@ -5652,14 +5852,16 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5652
5852
  "container-width",
5653
5853
  "container-height"
5654
5854
  ])
5655
- ], 46, xs));
5855
+ ], 46, Vs));
5656
5856
  }
5657
- }), Rs = /* @__PURE__ */ l({
5857
+ }), ic = /* @__PURE__ */ l({
5658
5858
  __name: "WaveformChart",
5659
5859
  props: {
5660
5860
  data: {},
5661
5861
  displayMode: { default: "independent" },
5662
5862
  overlayMode: { default: "single-axis" },
5863
+ unitDisplayMode: { default: "axis" },
5864
+ layoutPreset: { default: "default" },
5663
5865
  width: {},
5664
5866
  height: {},
5665
5867
  xLabel: {},
@@ -5673,10 +5875,15 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5673
5875
  type: Boolean,
5674
5876
  default: !0
5675
5877
  },
5878
+ integerZoom: {
5879
+ type: Boolean,
5880
+ default: !1
5881
+ },
5676
5882
  pannable: {
5677
5883
  type: Boolean,
5678
5884
  default: !1
5679
5885
  },
5886
+ panXDomain: {},
5680
5887
  minZoomSpan: {},
5681
5888
  minVisiblePoints: { default: 0 },
5682
5889
  maxZoomScale: {},
@@ -5725,6 +5932,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5725
5932
  "zoom-intent",
5726
5933
  "zoom-change",
5727
5934
  "zoom-end",
5935
+ "pan-end",
5728
5936
  "zoom-reset",
5729
5937
  "update:annotations",
5730
5938
  "update:hidden-series-ids",
@@ -5738,12 +5946,12 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5738
5946
  "sampling-error"
5739
5947
  ],
5740
5948
  setup(e, { expose: t, emit: r }) {
5741
- let i = za(e, r);
5949
+ let i = io(e, r);
5742
5950
  return t({
5743
5951
  resetViewport: i.resetViewport,
5744
5952
  setViewportDomain: i.setViewportDomain
5745
- }), (e, t) => (y(), n(Ls, { controller: D(i) }, null, 8, ["controller"]));
5953
+ }), (e, t) => (y(), n(rc, { controller: D(i) }, null, 8, ["controller"]));
5746
5954
  }
5747
5955
  });
5748
5956
  //#endregion
5749
- export { Q as DEFAULT_WAVEFORM_RENDERING_OPTIONS, Rs as WaveformChart, vt as buildMinorTicks, wi as calculateWasmRange, Rt as clamp, jt as displayTime, Ti as findWasmVisibleRange, Pt as formatAxisTime, Nt as formatEndpointTime, Ft as formatTooltipTime, Si as initializeWasmSampling, ln as normalizeWaveformData, fn as normalizeWaveformSeries, _t as paddedDomain, ht as parseWaveformAnnotations, Lt as resolveTrackGeometry, Dn as resolveWaveformRenderingOptions, Ci as sampleWaveformWasm, Fn as selectRenderablePoints, mt as serializeWaveformAnnotations };
5957
+ export { Q as DEFAULT_WAVEFORM_RENDERING_OPTIONS, ic as WaveformChart, vt as buildMinorTicks, Hi as calculateWasmRange, Rt as clamp, jt as displayTime, Ui as findWasmVisibleRange, Pt as formatAxisTime, Nt as formatEndpointTime, Ft as formatTooltipTime, Bi as initializeWasmSampling, ln as normalizeWaveformData, fn as normalizeWaveformSeries, _t as paddedDomain, ht as parseWaveformAnnotations, Lt as resolveTrackGeometry, Dn as resolveWaveformRenderingOptions, Vi as sampleWaveformWasm, Fn as selectRenderablePoints, mt as serializeWaveformAnnotations };