waveform-analysis 0.1.66 → 0.1.68

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 (60) hide show
  1. package/README.md +124 -3
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.js +1059 -939
  4. package/dist/style.css +1 -1
  5. package/dist/types/components/WaveformChart.vue.d.ts +4 -0
  6. package/dist/types/components/core/grid.d.ts +1 -1
  7. package/dist/types/components/core/layout.d.ts +2 -2
  8. package/dist/types/components/core/pagination.d.ts +2 -0
  9. package/dist/types/components/core/title.d.ts +2 -1
  10. package/dist/types/components/core/trackLayoutBuilder.d.ts +4 -0
  11. package/dist/types/components/core/useWaveformChartController.d.ts +6 -0
  12. package/dist/types/components/core/useWaveformLayout.d.ts +1 -0
  13. package/dist/types/components/core/useWaveformPresentation.d.ts +1 -0
  14. package/dist/types/components/core/useWaveformYAxisLayout.d.ts +31 -0
  15. package/dist/types/components/core/waveformChartTypes.d.ts +9 -2
  16. package/dist/types/components/core/yAxisLayoutMetrics.d.ts +1 -1
  17. package/dist/types/components/data/types.d.ts +1 -1
  18. package/dist/types/components/interaction/interactionTarget.d.ts +1 -0
  19. package/dist/types/components/interaction/remoteViewport.d.ts +8 -0
  20. package/dist/types/components/interaction/useWaveformViewport.d.ts +1 -2
  21. package/dist/types/components/interaction/viewportDomain.d.ts +1 -2
  22. package/dist/types/components/interaction/viewportPan.d.ts +4 -0
  23. package/dist/types/components/rendering/WaveformLegend.vue.d.ts +2 -0
  24. package/dist/types/components/rendering/WaveformTrack.vue.d.ts +4 -0
  25. package/dist/types/components/rendering/WaveformTrackAxes.vue.d.ts +5 -1
  26. package/dist/types/data/recordedDampedWaveform.d.ts +1 -0
  27. package/dist/types/index.d.ts +1 -1
  28. package/dist/types/types/chart.d.ts +13 -0
  29. package/dist/types/types/index.d.ts +1 -1
  30. package/package.json +1 -1
  31. package/src/components/WaveformChart.css +5 -0
  32. package/src/components/WaveformChart.vue +2 -0
  33. package/src/components/WaveformChartView.vue +14 -3
  34. package/src/components/core/grid.ts +4 -1
  35. package/src/components/core/layout.ts +16 -2
  36. package/src/components/core/pagination.ts +17 -0
  37. package/src/components/core/title.ts +7 -3
  38. package/src/components/core/trackLayoutBuilder.ts +14 -4
  39. package/src/components/core/useWaveformChartController.ts +17 -1
  40. package/src/components/core/useWaveformChartLifecycle.ts +10 -16
  41. package/src/components/core/useWaveformLayout.ts +35 -91
  42. package/src/components/core/useWaveformPresentation.ts +17 -3
  43. package/src/components/core/useWaveformYAxisLayout.ts +140 -0
  44. package/src/components/core/waveformChartTypes.ts +12 -0
  45. package/src/components/core/yAxisLayoutMetrics.ts +11 -2
  46. package/src/components/data/types.ts +3 -0
  47. package/src/components/interaction/interactionTarget.ts +10 -0
  48. package/src/components/interaction/remoteViewport.ts +53 -0
  49. package/src/components/interaction/useWaveformViewport.ts +17 -55
  50. package/src/components/interaction/useWaveformZoom.ts +7 -7
  51. package/src/components/interaction/viewportDomain.ts +10 -14
  52. package/src/components/interaction/viewportPan.ts +82 -0
  53. package/src/components/rendering/WaveformLegend.vue +10 -1
  54. package/src/components/rendering/WaveformTrack.vue +13 -2
  55. package/src/components/rendering/WaveformTrackAxes.vue +15 -4
  56. package/src/data/recordedDampedWaveform.ts +3 -0
  57. package/src/data/simulatedWaveforms.ts +12 -10
  58. package/src/index.ts +3 -0
  59. package/src/types/chart.ts +16 -0
  60. 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());
@@ -1458,34 +1458,34 @@ function Wn(e, t, n) {
1458
1458
  function Gn(e) {
1459
1459
  return e === "compact" ? 0 : e === "separated" ? 16 : 14;
1460
1460
  }
1461
- function Kn(e, t, n, r, i = [], a, o = !0) {
1462
- 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();
1463
1463
  if (o) {
1464
- if (r === "independent") for (let e = 0; e < u; e += 1) p.add(e);
1465
- 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);
1466
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]) {
1467
- p.add(Math.floor(t / n.columnCount));
1467
+ m.add(Math.floor(t / n.columnCount));
1468
1468
  break;
1469
1469
  }
1470
1470
  }
1471
- let m = Math.max(0, u - 1) * d, h = p.size * 30, g = Math.max(1, (t - m - h) / u);
1472
- return Array.from({ length: l ? c : s }, (t, r) => {
1473
- 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) => {
1474
- let n = p.has(t) ? 30 : 0;
1475
- 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;
1476
1476
  }).reduce((e, t) => e + t, 0);
1477
1477
  return {
1478
1478
  slotIndex: r,
1479
1479
  row: i,
1480
1480
  column: a,
1481
- left: a * (m + f),
1482
- top: v,
1483
- width: m,
1484
- height: g,
1485
- plotHeight: g,
1486
- cellHeight: _,
1481
+ left: a * (c + p),
1482
+ top: _,
1483
+ width: c,
1484
+ height: v,
1485
+ plotHeight: v,
1486
+ cellHeight: g,
1487
1487
  xAxisBand: h,
1488
- isLastRow: i === u - 1
1488
+ isLastRow: i === d - 1
1489
1489
  };
1490
1490
  });
1491
1491
  }
@@ -1511,7 +1511,7 @@ function Qn(e, t, n = !1) {
1511
1511
  if (t.type === "integer-ms") {
1512
1512
  let t = e[0] * Yn, n = e[1] * Yn;
1513
1513
  if (!Number.isSafeInteger(Math.ceil(Math.abs(t))) || !Number.isSafeInteger(Math.ceil(Math.abs(n))) || n - t < 1) return [...e];
1514
- 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;
1515
1515
  return [Math.floor(t / r) * r / Yn, Math.ceil(n / r) * r / Yn];
1516
1516
  }
1517
1517
  if (t.type !== "nice") return [...e];
@@ -1582,9 +1582,9 @@ function dr(e, t, n) {
1582
1582
  return cr(i ? Qn(i, r, !0) : Qn(e.xDomain, r), n);
1583
1583
  }
1584
1584
  function fr(e) {
1585
- let t = e.cells.map((e) => ({
1586
- ...e,
1587
- hasSeries: !!e.series
1585
+ let t = e.cells.map((t) => ({
1586
+ ...t,
1587
+ hasSeries: e.useNonEmptyBottomTracks ? !!t.series?.series.length : !!t.series
1588
1588
  })), n = qn(t, e.grid.columnCount), r = t.flatMap((t, r) => {
1589
1589
  let i = !t.series || t.series.series.length === 0;
1590
1590
  if (!t.series && (e.displayMode !== "compact" || !e.showCompactEmptyTracks)) return [];
@@ -1594,16 +1594,16 @@ function fr(e) {
1594
1594
  visibleSeries: [],
1595
1595
  xDomain: [0, 1],
1596
1596
  yDomain: [0, 1]
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] ?? J : J).rescaleX(c);
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
1598
  l.domain(lr(l.domain(), e));
1599
- let u = Tr(a, e.overlayMode, e.fixedYDomain, e.fixedYDomains, e.yDomains), d = {
1599
+ let u = Tr(a, e.overlayMode, e.fixedYDomain, e.fixedYDomains, e.yDomains, e.yAxisUpperPaddingRatio), d = {
1600
1600
  left: 0,
1601
1601
  right: 0
1602
1602
  }, f = {
1603
1603
  left: 0,
1604
1604
  right: 0
1605
1605
  }, p = u.map((n) => {
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, 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);
1607
1607
  return p || (f[n.side] += u), {
1608
1608
  index: n.index,
1609
1609
  side: n.side,
@@ -1675,7 +1675,7 @@ function fr(e) {
1675
1675
  showXAxis: (i || o) && (e.displayMode === "independent" || (e.displayMode === "compact" ? t.isLastRow ?? t.row === e.grid.rowCount - 1 : n.has(t.slotIndex)))
1676
1676
  };
1677
1677
  });
1678
- return ir(r, e.yLabel), r;
1678
+ return e.compactYAxisLayout || ir(r, e.yLabel), r;
1679
1679
  }
1680
1680
  //#endregion
1681
1681
  //#region src/components/core/layout.ts
@@ -1751,11 +1751,14 @@ function wr(e, t, n, r) {
1751
1751
  } : e;
1752
1752
  });
1753
1753
  }
1754
- function Tr(e, t, n, r, i) {
1755
- let a = i?.[e.id];
1756
- return wr(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 ? {
1757
+ ...e,
1758
+ domain: o
1759
+ } : !e.fixed && Number.isFinite(a) && a > 0 ? {
1757
1760
  ...e,
1758
- domain: a
1761
+ domain: [e.domain[0], e.domain[1] + (e.domain[1] - e.domain[0]) * a]
1759
1762
  } : e);
1760
1763
  }
1761
1764
  function Er(e, t = !0, n, r, i = 5, a = !1) {
@@ -1765,36 +1768,36 @@ function Er(e, t = !0, n, r, i = 5, a = !1) {
1765
1768
  } : yr(e, i, t), s = [o.values];
1766
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 };
1767
1770
  }
1768
- function Dr(e, t, n, r, i, a = !0, o = !1, s) {
1769
- 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();
1770
1773
  e.forEach((e) => {
1771
- let l = {
1774
+ let d = {
1772
1775
  left: 0,
1773
1776
  right: 0
1774
1777
  };
1775
- Tr(e, t, n, r, s).forEach((e) => {
1776
- let t = l[e.side]++, n = `${e.side}:${t}`, r = Er(e.domain, a, void 0, e.seriesList[0]?.unit, i, o).tickTextWidth;
1777
- c.set(n, Math.max(c.get(n) ?? pr, 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));
1778
1781
  });
1779
1782
  });
1780
- let l = [], u = {
1783
+ let d = [], f = {
1781
1784
  left: 0,
1782
1785
  right: 0
1783
1786
  };
1784
1787
  return ["left", "right"].forEach((e) => {
1785
- Array.from(c.keys()).filter((t) => t.startsWith(`${e}:`)).map((t) => Number(t.slice(e.length + 1))).sort((e, t) => e - t).forEach((t) => {
1786
- let n = c.get(`${e}:${t}`) ?? pr, r = e === "left" && u.left > 0 ? -u.left : u[e], i = r + (n + mr + gr + _r / 2) * (e === "left" ? -1 : 1), a = n + mr + gr + _r + hr;
1787
- 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({
1788
1791
  side: e,
1789
1792
  sideIndex: t,
1790
1793
  axisOffset: r,
1791
1794
  labelOffset: i,
1792
1795
  clearance: a
1793
- }), u[e] += a;
1796
+ }), f[e] += a;
1794
1797
  });
1795
1798
  }), {
1796
- slots: l,
1797
- clearance: u
1799
+ slots: d,
1800
+ clearance: f
1798
1801
  };
1799
1802
  }
1800
1803
  function Or(e, t, n) {
@@ -2213,17 +2216,36 @@ function Gr(e, t, n, r) {
2213
2216
  }
2214
2217
  function Kr(e, t, n) {
2215
2218
  let r = t[1] - t[0], i = e[1] - e[0];
2216
- 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;
2217
2220
  let a = r / i, o = W(t, [0, n]);
2218
- return J.translate(-a * o(e[0]), 0).scale(a);
2221
+ return q.translate(-a * o(e[0]), 0).scale(a);
2219
2222
  }
2220
2223
  //#endregion
2221
- //#region src/components/interaction/viewportDomain.ts
2224
+ //#region src/components/interaction/remoteViewport.ts
2222
2225
  function qr(e, t) {
2223
2226
  let n = e[1] - e[0];
2224
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;
2225
2228
  }
2226
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);
2245
+ }
2246
+ //#endregion
2247
+ //#region src/components/interaction/viewportDomain.ts
2248
+ function Zr(e) {
2227
2249
  return (t, n) => {
2228
2250
  if (!(!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || t[0] === t[1])) {
2229
2251
  if (e.cancelPendingZoom(), e.cancelViewportDrag(), e.props.displayMode === "independent") {
@@ -2231,11 +2253,11 @@ function Jr(e) {
2231
2253
  r.forEach((n) => {
2232
2254
  let r = e.trackLayouts.value.find((e) => e.index === n);
2233
2255
  if (!r) return;
2234
- let a = e.resolveInitialTrackDomain(r), o = Gr(t, a, [r.seriesList], e.props);
2256
+ let a = e.resolveInitialTrackDomain(r), o = Xr(t, a, [r.seriesList], e.props);
2235
2257
  i[n] = Kr(o, a, r.width);
2236
2258
  }), e.independentTransforms.value = i;
2237
2259
  } else {
2238
- let n = e.initialXDomain.value, r = Gr(t, n, e.trackLayouts.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), e.props);
2260
+ let n = e.initialXDomain.value, r = Xr(t, n, e.trackLayouts.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), e.props);
2239
2261
  e.sharedTransform.value = Kr(r, n, e.innerWidth.value);
2240
2262
  }
2241
2263
  e.clearHover(), e.editorSeriesOptions.value = [], f(e.configureZoom);
@@ -2243,15 +2265,35 @@ function Jr(e) {
2243
2265
  };
2244
2266
  }
2245
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
2246
2288
  //#region src/components/interaction/zoomEventPayload.ts
2247
- function Yr(e) {
2289
+ function $r(e) {
2248
2290
  return [...e].sort().join("\0");
2249
2291
  }
2250
- function Xr(e, t) {
2251
- let n = Yr(t);
2252
- return e.find((e) => Yr(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);
2253
2295
  }
2254
- function Zr(e, t, n, r) {
2296
+ function ti(e, t, n, r) {
2255
2297
  e("zoom-intent", r ? {
2256
2298
  start: t[0],
2257
2299
  end: t[1],
@@ -2264,9 +2306,9 @@ function Zr(e, t, n, r) {
2264
2306
  gesture: "box"
2265
2307
  });
2266
2308
  }
2267
- function Qr(e, t, n) {
2309
+ function ni(e, t, n) {
2268
2310
  for (let r of n) {
2269
- let n = Xr(t, r);
2311
+ let n = ei(t, r);
2270
2312
  if (!n) continue;
2271
2313
  let i = n.xScale.domain(), a = n.yScale.domain();
2272
2314
  e("zoom-end", {
@@ -2280,7 +2322,7 @@ function Qr(e, t, n) {
2280
2322
  });
2281
2323
  }
2282
2324
  }
2283
- function $r(e, t, n) {
2325
+ function ri(e, t, n) {
2284
2326
  let r = n.filter((e) => e.hasVisibleSeries);
2285
2327
  if (r.length === 1) {
2286
2328
  let n = r[0]?.yScale.domain();
@@ -2302,7 +2344,7 @@ function $r(e, t, n) {
2302
2344
  }
2303
2345
  //#endregion
2304
2346
  //#region src/components/interaction/useWaveformViewport.ts
2305
- function ei(e) {
2347
+ function ii(e) {
2306
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) => {
2307
2349
  let n = O.value, r = t?.currentTarget;
2308
2350
  Nr(n, e), r && r !== n && Nr(r, e);
@@ -2346,20 +2388,7 @@ function ei(e) {
2346
2388
  if (!d.value) return;
2347
2389
  let [t, n] = U(e, d.value), r = D(t, n), i = (r?.hasVisibleSeries ? r : void 0) ?? o.value.find((e) => e.hasVisibleSeries);
2348
2390
  i && N(e, i.index, !1);
2349
- }, F = (e, t) => {
2350
- 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 = ur(qr([e.xDomain[0] - u / i * f, e.xDomain[1] - u / i * f], _), n);
2351
- if (e.independent) {
2352
- let e = [...m.value];
2353
- e[t.index] = Kr(v, _, i), m.value = e;
2354
- } else p.value = Kr(v, _, l.value);
2355
- let y = e.independent ? [t] : o.value.filter((e) => e.hasVisibleSeries), x = { ...g.value }, S = { ...h.value };
2356
- y.forEach((t) => {
2357
- let r = s.value.find((e) => e.id === t.id);
2358
- if (r && Yt(r, n.yDomain, n.yDomains)) return;
2359
- 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 = qr([o[0] + d / a * l, o[1] + d / a * l], c);
2360
- e.independent ? x[t.index] = u : S[i] = u;
2361
- }), e.independent ? g.value = x : h.value = S, r("zoom-change", v);
2362
- }, I = (e) => {
2391
+ }, F = Qr(e), I = (e) => {
2363
2392
  if (v.value) return;
2364
2393
  let t = i.value, n = O.value;
2365
2394
  if (!t || !n || e.pointerId !== t.pointerId) return;
@@ -2384,12 +2413,12 @@ function ei(e) {
2384
2413
  if (!t || (e.independent ? !x(t) : !S())) return;
2385
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));
2386
2415
  if (s - a < 6) return;
2387
- let u = e.independent ? b(t) : c.value, d = e.independent ? [t.seriesList] : o.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), h = Gr([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);
2388
2417
  if (e.independent) {
2389
2418
  let e = [...m.value];
2390
2419
  e[t.index] = Kr(h, u, t.width), m.value = e;
2391
2420
  } else p.value = Kr(h, u, l.value);
2392
- Zr(r, h, t, e.independent);
2421
+ ti(r, h, t, e.independent);
2393
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()]));
2394
2423
  if (r("zoom-change", h), e.independent) {
2395
2424
  let e = _[t.series?.trackId ?? t.series?.id ?? t.id];
@@ -2425,33 +2454,41 @@ function ei(e) {
2425
2454
  }
2426
2455
  let t = i.value;
2427
2456
  if (!t || e.pointerId !== t.pointerId) return;
2428
- let n = o.value.find((e) => e.index === t.trackIndex), r = O.value;
2429
- 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) {
2430
2459
  A(t.pointerId, e);
2431
2460
  return;
2432
2461
  }
2433
- 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 = Lr(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, {
2434
2463
  type: "finish",
2435
2464
  pointerId: e.pointerId,
2436
2465
  position: {
2437
- currentX: c,
2438
- currentY: d
2466
+ currentX: d,
2467
+ currentY: p
2439
2468
  }
2440
2469
  }).completed;
2441
- if (p) {
2442
- if (i.value = null, k(p.pointerId, e), O.value = void 0, e.preventDefault(), p.kind === "pan") {
2443
- F(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);
2444
2481
  return;
2445
2482
  }
2446
- Math.abs(p.currentX - p.startX) >= 6 && R(p);
2483
+ Math.abs(m.currentX - m.startX) >= 6 && R(m);
2447
2484
  }
2448
2485
  }, B = (e) => {
2449
2486
  if (T(), L(), n.displayMode === "independent" && e !== void 0) {
2450
2487
  let t = [...m.value];
2451
- t[e] = J, m.value = t;
2488
+ t[e] = q, m.value = t;
2452
2489
  let n = { ...g.value };
2453
2490
  delete n[e], g.value = n;
2454
- } 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 = {};
2455
2492
  E(), y.value = [], f(C);
2456
2493
  };
2457
2494
  return {
@@ -2462,7 +2499,7 @@ function ei(e) {
2462
2499
  finishViewportDrag: z,
2463
2500
  cancelViewportDrag: L,
2464
2501
  resetViewport: B,
2465
- setViewportDomain: Jr({
2502
+ setViewportDomain: Zr({
2466
2503
  props: n,
2467
2504
  trackLayouts: o,
2468
2505
  initialXDomain: c,
@@ -2494,7 +2531,7 @@ function ei(e) {
2494
2531
  }
2495
2532
  //#endregion
2496
2533
  //#region src/components/utils/useAnimationFrameThrottle.ts
2497
- function ti() {
2534
+ function ai() {
2498
2535
  let e = null, t = null;
2499
2536
  function n(n) {
2500
2537
  t = n, e === null && (e = requestAnimationFrame(() => {
@@ -2523,8 +2560,8 @@ function ti() {
2523
2560
  }
2524
2561
  //#endregion
2525
2562
  //#region src/components/interaction/useWaveformZoom.ts
2526
- function ni(e) {
2527
- 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 = ti(), 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) => {
2528
2565
  if (y || m.value) return;
2529
2566
  g(), b = e.transform, x = "wheel", I();
2530
2567
  let [r, i] = lr(e.transform.rescaleX(W(c.value, [0, u.value])).domain(), t);
@@ -2571,7 +2608,7 @@ function ni(e) {
2571
2608
  if (!t) return;
2572
2609
  if (i.get(e) === "wheel") {
2573
2610
  let e = t.seriesList.map((e) => e.id);
2574
- T.set(Yr(e), e);
2611
+ T.set($r(e), e);
2575
2612
  }
2576
2613
  let r = t.xScale.domain();
2577
2614
  n("zoom-change", [r[0], r[1]]);
@@ -2579,14 +2616,14 @@ function ni(e) {
2579
2616
  }
2580
2617
  let N = () => {
2581
2618
  if (t.displayMode === "independent") {
2582
- Qr(n, s.value, T.values()), T.clear();
2619
+ ni(n, s.value, T.values()), T.clear();
2583
2620
  return;
2584
2621
  }
2585
2622
  if (S !== "wheel") {
2586
2623
  S = null;
2587
2624
  return;
2588
2625
  }
2589
- $r(n, l.value, s.value), S = null;
2626
+ ri(n, l.value, s.value), S = null;
2590
2627
  }, P = () => {
2591
2628
  v.flush(), M(), !(S === "wheel" || T.size) && N();
2592
2629
  }, F = (e) => {
@@ -2608,16 +2645,16 @@ function ni(e) {
2608
2645
  if (!Number.isFinite(r) || r <= 0) return Bt.MIN_SCALE;
2609
2646
  let i = Ur(e, n, t);
2610
2647
  return Math.max(Bt.MIN_SCALE, i > 0 ? r / i : Infinity);
2611
- }, V = (e, n, r, i) => Kr(Gr(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) => {
2612
2649
  let n = Number(t.minVisiblePoints);
2613
2650
  return jn(e.seriesList, e.xScale.domain(), Number.isFinite(n) && n > 0 ? Math.ceil(n) + 1 : n);
2614
2651
  }, U = () => {
2615
2652
  let e = s.value.filter((e) => e.hasVisibleSeries);
2616
2653
  return e.length > 0 && e.every(H);
2617
- }, ee = (e, t) => {
2654
+ }, K = (e, t) => {
2618
2655
  if (e.type !== "wheel") return !1;
2619
2656
  let n = e.deltaY;
2620
- 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;
2621
2658
  };
2622
2659
  return {
2623
2660
  cancelPendingZoom: R,
@@ -2632,13 +2669,13 @@ function ni(e) {
2632
2669
  s.value.forEach((t) => {
2633
2670
  let n = r.value?.querySelector(`[data-independent-overlay-index="${t.index}"]`);
2634
2671
  if (!n) return;
2635
- let i = h(t), a = [t.seriesList], c = ie().filter((e) => {
2672
+ let i = h(t), a = [t.seriesList], c = ae().filter((e) => {
2636
2673
  let n = s.value.find((e) => e.index === t.index) ?? t;
2637
- return ee(e, H(n));
2674
+ return K(e, H(n));
2638
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));
2639
2676
  _.set(t.index, c), y = !0;
2640
2677
  try {
2641
- 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);
2642
2679
  } finally {
2643
2680
  y = !1;
2644
2681
  }
@@ -2647,7 +2684,7 @@ function ni(e) {
2647
2684
  }
2648
2685
  let n = i.value;
2649
2686
  if (!n) return;
2650
- 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));
2651
2688
  _.set("shared", g), y = !0;
2652
2689
  try {
2653
2690
  G(n).call(g).on("dblclick.zoom", null).call(g.transform, a.value);
@@ -2659,52 +2696,62 @@ function ni(e) {
2659
2696
  };
2660
2697
  }
2661
2698
  //#endregion
2662
- //#region src/components/core/useWaveformChartLifecycle.ts
2663
- function ri(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) {
2664
2709
  return e instanceof Element && !!e.closest("button, input, select, textarea, [contenteditable]:not([contenteditable=\"false\"])");
2665
2710
  }
2666
- function ii(e) {
2667
- 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;
2668
- function te(e) {
2669
- z.value || e.code !== "Space" || !t.pannable || !_.value || ri(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());
2670
2717
  }
2671
- function ne(e) {
2718
+ function te(e) {
2672
2719
  e.code === "Space" && (m.value = !1);
2673
2720
  }
2674
- function re(e) {
2721
+ function ne(e) {
2675
2722
  let r = Math.min(y.value, Math.max(1, Math.floor(e)));
2676
- 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));
2677
2724
  }
2678
- let K, q;
2679
- function ie() {
2725
+ let re, ie;
2726
+ function ae() {
2680
2727
  if (t.displayMode === "independent") {
2681
- K = void 0, q = new Map(w.value.flatMap((e) => {
2682
- let t = e.xScale.domain(), n = I(e);
2683
- return t[1] - t[0] < n[1] - n[0] - 1e-12 ? [[Yr(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]] : [];
2684
2731
  }));
2685
2732
  return;
2686
2733
  }
2687
- q = void 0;
2734
+ ie = void 0;
2688
2735
  let e = D.value, n = O.value;
2689
- 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;
2690
2737
  }
2691
- function ae() {
2738
+ function oe() {
2692
2739
  if (t.displayMode === "independent") {
2693
2740
  let e = P.value;
2694
- P.value = C.value.map((t, n) => e[n] ?? J);
2741
+ P.value = C.value.map((t, n) => e[n] ?? q);
2695
2742
  }
2696
2743
  B(), R.value = [], f(() => {
2697
- if (t.displayMode === "independent" && q) {
2698
- let e = C.value.map(() => J);
2744
+ if (t.displayMode === "independent" && ie) {
2745
+ let e = C.value.map(() => q);
2699
2746
  w.value.forEach((n) => {
2700
- let r = q?.get(Yr(n.seriesList.map((e) => e.id)));
2747
+ let r = ie?.get($r(n.seriesList.map((e) => e.id)));
2701
2748
  if (!r) return;
2702
- let i = I(n), a = Gr(r, i, [n.seriesList], t);
2749
+ let i = I(n), a = Yr(r, i, [n.seriesList], t);
2703
2750
  e[n.index] = Kr(a, i, n.width);
2704
- }), P.value = e, q = void 0;
2705
- } else if (t.displayMode !== "independent" && K) {
2706
- let e = O.value, n = w.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), r = Gr(K, e, n, t);
2707
- A.value = Kr(r, e, T.value), K = void 0;
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;
2708
2755
  }
2709
2756
  H();
2710
2757
  });
@@ -2747,7 +2794,7 @@ function ii(e) {
2747
2794
  }), k(j, () => {
2748
2795
  R.value = [];
2749
2796
  }), k(z, (e) => {
2750
- m.value = !1, e && (W(), ee(), B(), L.closeContextMenu(), V());
2797
+ m.value = !1, e && (W(), K(), B(), L.closeContextMenu(), V());
2751
2798
  }), k(() => S.value.map((e) => e.id).join("\0"), () => {
2752
2799
  if (t.hiddenSeriesIds !== void 0) return;
2753
2800
  let e = new Set(S.value.map((e) => e.id)), n = new Set(Array.from(N.value).filter((t) => e.has(t)));
@@ -2766,7 +2813,7 @@ function ii(e) {
2766
2813
  let n = L.editorDraft.value;
2767
2814
  n?.mode === "edit" && !e.some((e) => e.id === n.annotation.id) && L.closeEditor();
2768
2815
  }, { deep: !0 });
2769
- function oe() {
2816
+ function se() {
2770
2817
  if (!d.value || !i.value) {
2771
2818
  c.value = 0, l.value = 0;
2772
2819
  return;
@@ -2779,22 +2826,22 @@ function ii(e) {
2779
2826
  d,
2780
2827
  p
2781
2828
  ], async () => {
2782
- c.value = 0, l.value = 0, await f(), oe();
2829
+ c.value = 0, l.value = 0, await f(), se();
2783
2830
  }, { immediate: !0 }), g(() => {
2784
- window.addEventListener("keydown", te), window.addEventListener("keyup", ne), r.value && (a.value = new ResizeObserver(([e]) => {
2785
- 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);
2786
2833
  }), a.value.observe(r.value));
2787
2834
  }), h(() => {
2788
- 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 = [];
2789
2836
  }), {
2790
- goToPage: re,
2791
- handleBeforeDataReferenceChange: ie,
2792
- handleDataReferenceChange: ae
2837
+ goToPage: ne,
2838
+ handleBeforeDataReferenceChange: ae,
2839
+ handleDataReferenceChange: oe
2793
2840
  };
2794
2841
  }
2795
2842
  //#endregion
2796
2843
  //#region src/components/core/useWaveformData.ts
2797
- function ai(e) {
2844
+ function ui(e) {
2798
2845
  return dn(e).map(({ source: e, ...t }) => {
2799
2846
  let n = e.metrics(t.errorBar.visible);
2800
2847
  return {
@@ -2807,45 +2854,45 @@ function ai(e) {
2807
2854
  };
2808
2855
  });
2809
2856
  }
2810
- function oi(e, t, n) {
2811
- let r = w(ai(e()));
2857
+ function di(e, t, n) {
2858
+ let r = w(ui(e()));
2812
2859
  return k(e, (e) => {
2813
- t(), r.value = ai(e), n();
2860
+ t(), r.value = ui(e), n();
2814
2861
  }), r;
2815
2862
  }
2816
2863
  //#endregion
2817
2864
  //#region wasm/pkg/waveform_sampling_wasm.js
2818
- function si(e, t) {
2819
- let n = xi(e, $.__wbindgen_malloc), r = Di, i = xi(t, $.__wbindgen_malloc), a = Di, o = $.calculate_range(n, r, i, a);
2820
- if (o[3]) throw Si(o[2]);
2821
- var s = fi(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();
2822
2869
  return $.__wbindgen_free(o[0], o[1] * 8, 8), s;
2823
2870
  }
2824
- function ci(e, t, n, r) {
2825
- let i = xi(e, $.__wbindgen_malloc), a = Di, o = xi(t, $.__wbindgen_malloc), s = Di, c = $.find_visible_range(i, a, o, s, n, r);
2826
- if (c[3]) throw Si(c[2]);
2827
- var l = pi(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();
2828
2875
  return $.__wbindgen_free(c[0], c[1] * 4, 4), l;
2829
2876
  }
2830
- function li(e, t, n, r) {
2831
- let i = xi(e, $.__wbindgen_malloc), a = Di, o = xi(t, $.__wbindgen_malloc), s = Di, c = $.sample_aggregates(i, a, o, s, n, r);
2832
- if (c[3]) throw Si(c[2]);
2833
- var l = fi(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();
2834
2881
  return $.__wbindgen_free(c[0], c[1] * 8, 8), l;
2835
2882
  }
2836
- function ui(e, t, n, r) {
2837
- let i = xi(e, $.__wbindgen_malloc), a = Di, o = xi(t, $.__wbindgen_malloc), s = Di, c = $.sample_indexes(i, a, o, s, n, r);
2838
- if (c[3]) throw Si(c[2]);
2839
- var l = pi(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();
2840
2887
  return $.__wbindgen_free(c[0], c[1] * 4, 4), l;
2841
2888
  }
2842
- function di() {
2889
+ function gi() {
2843
2890
  return {
2844
2891
  __proto__: null,
2845
2892
  "./waveform_sampling_wasm_bg.js": {
2846
2893
  __proto__: null,
2847
2894
  __wbindgen_cast_0000000000000001: function(e, t) {
2848
- return gi(e, t);
2895
+ return xi(e, t);
2849
2896
  },
2850
2897
  __wbindgen_init_externref_table: function() {
2851
2898
  let e = $.__wbindgen_externrefs, t = e.grow(4);
@@ -2854,52 +2901,52 @@ function di() {
2854
2901
  }
2855
2902
  };
2856
2903
  }
2857
- function fi(e, t) {
2858
- return e >>>= 0, hi().subarray(e / 8, e / 8 + t);
2859
- }
2860
- function pi(e, t) {
2861
- return e >>>= 0, vi().subarray(e / 4, e / 4 + t);
2862
- }
2863
- var mi = null;
2864
- function hi() {
2865
- return (mi === null || mi.byteLength === 0) && (mi = new Float64Array($.memory.buffer)), mi;
2866
- }
2867
- function gi(e, t) {
2868
- return e >>>= 0, Ei(e, t);
2904
+ function _i(e, t) {
2905
+ return e >>>= 0, bi().subarray(e / 8, e / 8 + t);
2869
2906
  }
2870
- var _i = null;
2871
- function vi() {
2872
- return (_i === null || _i.byteLength === 0) && (_i = new Uint32Array($.memory.buffer)), _i;
2907
+ function vi(e, t) {
2908
+ return e >>>= 0, Ci().subarray(e / 4, e / 4 + t);
2873
2909
  }
2874
2910
  var yi = null;
2875
2911
  function bi() {
2876
- return (yi === null || yi.byteLength === 0) && (yi = new Uint8Array($.memory.buffer)), yi;
2912
+ return (yi === null || yi.byteLength === 0) && (yi = new Float64Array($.memory.buffer)), yi;
2877
2913
  }
2878
2914
  function xi(e, t) {
2915
+ return e >>>= 0, ji(e, t);
2916
+ }
2917
+ var Si = null;
2918
+ function Ci() {
2919
+ return (Si === null || Si.byteLength === 0) && (Si = new Uint32Array($.memory.buffer)), Si;
2920
+ }
2921
+ var wi = null;
2922
+ function Ti() {
2923
+ return (wi === null || wi.byteLength === 0) && (wi = new Uint8Array($.memory.buffer)), wi;
2924
+ }
2925
+ function Ei(e, t) {
2879
2926
  let n = t(e.length * 8, 8) >>> 0;
2880
- return hi().set(e, n / 8), Di = e.length, n;
2927
+ return bi().set(e, n / 8), Mi = e.length, n;
2881
2928
  }
2882
- function Si(e) {
2929
+ function Di(e) {
2883
2930
  let t = $.__wbindgen_externrefs.get(e);
2884
2931
  return $.__externref_table_dealloc(e), t;
2885
2932
  }
2886
- var Ci = new TextDecoder("utf-8", {
2933
+ var Oi = new TextDecoder("utf-8", {
2887
2934
  ignoreBOM: !0,
2888
2935
  fatal: !0
2889
2936
  });
2890
- Ci.decode();
2891
- var wi = 2146435072, Ti = 0;
2892
- function Ei(e, t) {
2893
- return Ti += t, Ti >= wi && (Ci = 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", {
2894
2941
  ignoreBOM: !0,
2895
2942
  fatal: !0
2896
- }), Ci.decode(), Ti = t), Ci.decode(bi().subarray(e, e + t));
2943
+ }), Oi.decode(), Ai = t), Oi.decode(Ti().subarray(e, e + t));
2897
2944
  }
2898
- var Di = 0, $;
2899
- function Oi(e, t) {
2900
- return $ = e.exports, mi = null, _i = null, yi = null, $.__wbindgen_start(), $;
2945
+ var Mi = 0, $;
2946
+ function Ni(e, t) {
2947
+ return $ = e.exports, yi = null, Si = null, wi = null, $.__wbindgen_start(), $;
2901
2948
  }
2902
- async function ki(e, t) {
2949
+ async function Pi(e, t) {
2903
2950
  if (typeof Response == "function" && e instanceof Response) {
2904
2951
  if (typeof WebAssembly.instantiateStreaming == "function") try {
2905
2952
  return await WebAssembly.instantiateStreaming(e, t);
@@ -2925,17 +2972,17 @@ async function ki(e, t) {
2925
2972
  return !1;
2926
2973
  }
2927
2974
  }
2928
- async function Ai(e) {
2975
+ async function Fi(e) {
2929
2976
  if ($ !== void 0) return $;
2930
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));
2931
- let t = di();
2978
+ let t = gi();
2932
2979
  (typeof e == "string" || typeof Request == "function" && e instanceof Request || typeof URL == "function" && e instanceof URL) && (e = fetch(e));
2933
- let { instance: n, module: r } = await ki(await e, t);
2934
- return Oi(n, r);
2980
+ let { instance: n, module: r } = await Pi(await e, t);
2981
+ return Ni(n, r);
2935
2982
  }
2936
2983
  //#endregion
2937
2984
  //#region src/core/wasmSampling.ts
2938
- var ji = {
2985
+ var Ii = {
2939
2986
  none: 0,
2940
2987
  peak: 1,
2941
2988
  lttb: 2,
@@ -2944,24 +2991,24 @@ var ji = {
2944
2991
  max: 5,
2945
2992
  minmax: 6,
2946
2993
  sum: 7
2947
- }, Mi;
2948
- function Ni(e, t) {
2994
+ }, Li;
2995
+ function Ri(e, t) {
2949
2996
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
2950
2997
  }
2951
- function Pi(e) {
2998
+ function zi(e) {
2952
2999
  if (e.x.length !== e.y.length) throw Error("x and y must have the same length");
2953
3000
  }
2954
- function Fi(e) {
2955
- return Mi ??= Promise.resolve(Ai(e)).then(() => void 0), Mi;
3001
+ function Bi(e) {
3002
+ return Li ??= Promise.resolve(Fi(e)).then(() => void 0), Li;
2956
3003
  }
2957
- async function Ii(e) {
2958
- Pi(e), await Fi();
2959
- let t = Ni(e.targetPointCount, e.x.length), n = ji[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];
2960
3007
  if (e.strategy !== "average" && e.strategy !== "sum") return {
2961
3008
  kind: "source-indexes",
2962
- sourceIndexes: ui(e.x, e.y, n, t)
3009
+ sourceIndexes: hi(e.x, e.y, n, t)
2963
3010
  };
2964
- let r = li(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);
2965
3012
  for (let e = 0; e < i.length; e += 1) i[e] = r[e * 2], a[e] = r[e * 2 + 1];
2966
3013
  return {
2967
3014
  kind: "aggregates",
@@ -2969,50 +3016,69 @@ async function Ii(e) {
2969
3016
  y: a
2970
3017
  };
2971
3018
  }
2972
- async function Li(e, t) {
3019
+ async function Hi(e, t) {
2973
3020
  if (e.length !== t.length) throw Error("x and y must have the same length");
2974
- await Fi();
2975
- let n = si(e, t);
3021
+ await Bi();
3022
+ let n = fi(e, t);
2976
3023
  return n.length === 4 ? {
2977
3024
  x: [n[0], n[1]],
2978
3025
  y: [n[2], n[3]]
2979
3026
  } : void 0;
2980
3027
  }
2981
- async function Ri(e, t, n) {
3028
+ async function Ui(e, t, n) {
2982
3029
  if (e.length !== t.length) throw Error("x and y must have the same length");
2983
- await Fi();
2984
- let r = ci(e, t, n[0], n[1]);
3030
+ await Bi();
3031
+ let r = pi(e, t, n[0], n[1]);
2985
3032
  return [r[0], r[1]];
2986
3033
  }
2987
3034
  //#endregion
2988
3035
  //#region src/components/core/trackPagination.ts
2989
- var zi = (e, t) => t ? e.filter((e) => e.series.length > 0) : e, Bi = (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) => {
2990
3037
  let a = t?.[i];
2991
3038
  if (a !== void 0) return a;
2992
3039
  if (e !== void 0) return n === 1 ? e : typeof e == "number" ? e + r : `${e}-${r + 1}`;
2993
- }, Vi = (e, t, n) => (r) => {
3040
+ }, Ki = (e, t, n) => (r) => {
2994
3041
  let i = n(), a = i.findIndex((e) => e.id === r);
2995
- return Bi(e(), t(), i.length, a >= 0 ? a : 0, r);
3042
+ return Gi(e(), t(), i.length, a >= 0 ? a : 0, r);
2996
3043
  };
2997
3044
  //#endregion
2998
3045
  //#region src/components/core/yAxisLayoutMetrics.ts
2999
- function Hi(e, t, n, r) {
3046
+ function qi(e, t, n, r) {
3000
3047
  return e === "independent" ? Object.fromEntries(t.flatMap((e, t) => {
3001
3048
  let n = r[t];
3002
3049
  return n ? [[e.id, n]] : [];
3003
3050
  })) : n;
3004
3051
  }
3005
- function Ui(e, t, n, r, i, a, o, s) {
3006
- let c = e.filter((e) => e.visibleSeries.length > 0).flatMap((e) => Tr(e, t, n, r, i)).map((e) => Er(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);
3007
3054
  return {
3008
- tickClearance: u,
3009
- fullClearance: l + 7 + 0 + 20 + 4,
3010
- 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 / 2 + 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
3011
3077
  };
3012
3078
  }
3013
3079
  //#endregion
3014
3080
  //#region src/components/core/useWaveformLayout.ts
3015
- function Wi(e) {
3081
+ function Xi(e) {
3016
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) => ({
3017
3083
  ...e,
3018
3084
  color: e.color ?? (t === 0 ? n.lineColor : Ut[t % Ut.length])
@@ -3035,84 +3101,91 @@ function Wi(e) {
3035
3101
  yDomain: o.length ? _t(o) : [0, 1]
3036
3102
  };
3037
3103
  });
3038
- }), v = t(() => Dn(n.rendering)), y = t(() => zi(_.value, g.value.hideEmptyTracks)), b = t(() => Un(y.value.length, g.value)), x = t(() => Wn(y.value, i.value, g.value)), S = t(() => {
3039
- let e = x.value.filter((e) => e.series.length > 0);
3040
- return g.value.fillIncompleteLastRow && e.length > 0 ? e : x.value;
3041
- }), C = t(() => vr(s.value, n.axes?.y?.splitNumber)), w = t(() => Hi(n.displayMode, _.value, d.value, f.value)), T = t(() => Ui(_.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(() => Dr(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(() => {
3042
- 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;
3043
- return {
3044
- 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,
3045
- hideSecondaryLabels: n.overlayMode !== "multi-axis" && r && E.value && !o
3046
- };
3047
- }), 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(() => {
3048
3116
  let e = [];
3049
3117
  return _.value.forEach((t) => {
3050
3118
  t.visibleSeries.length && e.push(t.xDomain[0], t.xDomain[1]);
3051
3119
  }), _t(e);
3052
- }), B = t(() => {
3120
+ }), R = t(() => {
3053
3121
  let e = n.initialXDomain;
3054
- 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(z.value, n.xDomainStrategy), n);
3055
- }), 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) => {
3056
3124
  let t = n.initialXDomains?.[e.series?.trackId ?? e.series?.id ?? e.id] ?? (e.series ? n.initialXDomains?.[e.series.id] : void 0) ?? n.initialXDomain;
3057
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);
3058
- }, H = t(() => lr(l.value.rescaleX(W(B.value, [0, M.value])).domain(), n)), U = t(() => Kn(M.value, s.value, g.value, n.displayMode, S.value.map(Boolean), N.value.horizontalGap).map((e, t) => ({
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) => ({
3059
3127
  ...e,
3060
- series: S.value[t]
3061
- }))), G = t(() => fr({
3062
- cells: U.value,
3128
+ series: C.value[t]
3129
+ }))), H = t(() => fr({
3130
+ cells: V.value,
3063
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",
3064
3135
  displayMode: n.displayMode,
3065
3136
  overlayMode: n.overlayMode,
3066
3137
  independentTransforms: u.value,
3067
- sharedZoomDomain: H.value,
3068
- initialXDomain: n.initialXDomain ? B.value : void 0,
3138
+ sharedZoomDomain: B.value,
3139
+ initialXDomain: n.initialXDomain ? R.value : void 0,
3069
3140
  initialXDomains: n.initialXDomains,
3070
3141
  xDomainStrategy: n.xDomainStrategy,
3071
3142
  integerZoom: n.integerZoom,
3072
3143
  fixedYDomain: n.yDomain,
3073
3144
  fixedYDomains: n.yDomains,
3074
- yDomains: w.value,
3145
+ yDomains: T.value,
3075
3146
  timeUnit: n.timeUnit,
3076
3147
  xAxisLabelFormatter: n.axes?.x?.labelFormatter,
3077
3148
  yAxisSplitNumber: n.axes?.y?.splitNumber,
3078
3149
  yAxisNice: n.axes?.y?.nice,
3079
- rendering: v.value,
3150
+ yAxisUpperPaddingRatio: n.axes?.y?.upperPaddingRatio,
3151
+ rendering: y.value,
3080
3152
  linePointOverrides: m?.value,
3081
- hideSecondaryLabels: c.value || N.value.hideSecondaryLabels,
3153
+ hideSecondaryLabels: c.value || A.value.hideSecondaryLabels,
3082
3154
  yLabel: n.yLabel,
3083
- yAxisLabelX: k.value.slots.find((e) => e.side === "left" && e.sideIndex === 0)?.labelOffset ?? T.value.labelCenterX,
3084
- yAxisSlots: k.value.slots,
3085
- showCompactEmptyTracks: n.displayMode === "compact" && P.value
3086
- })), 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) => ({
3087
3159
  ...e,
3088
3160
  series: t,
3089
3161
  yScale: e.seriesPaths.find((e) => e.series.id === t.id)?.yScale ?? e.yScale
3090
- })), 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));
3091
3163
  return {
3092
3164
  chartSeries: h,
3093
3165
  chartTracks: _,
3094
- pageableTracks: y,
3095
- renderingOptions: v,
3166
+ showLegendUnits: v,
3167
+ pageableTracks: b,
3168
+ renderingOptions: y,
3096
3169
  gridOptions: g,
3097
- pageCount: b,
3098
- pagedTracks: x,
3099
- resolvedChartLeftMargin: A,
3100
- innerWidth: M,
3101
- hasVisibleWaveformData: D,
3102
- hasWaveformData: P,
3103
- hasChartArea: F,
3104
- resolvedXLabel: I,
3105
- activeInteractionMode: L,
3106
- isZoomMode: R,
3107
- initialXDomain: B,
3108
- sharedZoomDomain: H,
3109
- resolveInitialTrackDomain: V,
3110
- gridCells: U,
3111
- trackLayouts: G,
3112
- annotationLayoutsForTrack: ee,
3113
- resolveSeriesYScale: te,
3114
- annotationTrackLayouts: ne,
3115
- 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) : []),
3116
3189
  editorSeries: t(() => {
3117
3190
  let e = p.editorDraft.value?.annotation.seriesId, t = h.value.find((t) => t.id === e);
3118
3191
  return t ? {
@@ -3122,41 +3195,41 @@ function Wi(e) {
3122
3195
  unit: t.unit
3123
3196
  } : void 0;
3124
3197
  }),
3125
- resolveFrameNumber: Vi(() => n.frameNumber, () => n.frameNumbers, () => _.value)
3198
+ resolveFrameNumber: Ki(() => n.frameNumber, () => n.frameNumbers, () => _.value)
3126
3199
  };
3127
3200
  }
3128
- var Gi = 1e-6;
3129
- function Ki(e) {
3201
+ var Zi = 1e-6;
3202
+ function Qi(e) {
3130
3203
  return Number.isFinite(e) ? Math.max(1, e) : 1;
3131
3204
  }
3132
- function qi({ naturalWidth: e, naturalHeight: t, availableWidth: n, rotation: r }) {
3133
- let i = Ki(e), a = Ki(t), o = Ki(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;
3134
- if (!(d > Gi && Math.abs(d - 360) > Gi)) {
3135
- 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;
3136
3209
  return {
3137
3210
  textWidth: t,
3138
3211
  textHeight: n,
3139
3212
  visualWidth: t,
3140
3213
  visualHeight: n,
3141
- areaHeight: Math.max(44, n + 18),
3214
+ areaHeight: Math.max(o, n + a),
3142
3215
  scale: 1,
3143
3216
  wrapped: e > 1
3144
3217
  };
3145
3218
  }
3146
- 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;
3147
3220
  return {
3148
- textWidth: i,
3149
- textHeight: a,
3150
- visualWidth: h,
3151
- visualHeight: g,
3152
- areaHeight: Math.min(160, Math.max(44, g + 18)),
3153
- 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,
3154
3227
  wrapped: !1
3155
3228
  };
3156
3229
  }
3157
3230
  //#endregion
3158
3231
  //#region src/components/core/useWaveformPresentation.ts
3159
- function Ji(e) {
3232
+ function ea(e) {
3160
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(() => ({
3161
3234
  width: l.value === void 0 ? "100%" : `${l.value}px`,
3162
3235
  height: u.value === void 0 ? "100%" : `${u.value}px`
@@ -3173,45 +3246,46 @@ function Ji(e) {
3173
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) => {
3174
3247
  let t = n.legend.orientation ?? "auto";
3175
3248
  return t === "auto" ? e === "top" || e === "bottom" ? "horizontal" : "vertical" : t;
3176
- }, 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(() => {
3177
3250
  let e = n.title?.textStyle?.fontSize;
3178
3251
  return Number.isFinite(e) && (e ?? 0) > 0 ? e : 14;
3179
- }), D = t(() => {
3252
+ }), O = t(() => {
3180
3253
  let e = n.title?.textStyle?.rotation;
3181
3254
  return Number.isFinite(e) ? e : 0;
3182
- }), O = t(() => {
3183
- let e = (D.value % 360 + 360) % 360;
3255
+ }), k = t(() => {
3256
+ let e = (O.value % 360 + 360) % 360;
3184
3257
  return e > 1e-6 && Math.abs(e - 360) > 1e-6;
3185
- }), k = t(() => ({
3258
+ }), A = t(() => ({
3186
3259
  color: n.title?.textStyle?.color ?? "#1f2937",
3187
- fontSize: `${E.value}px`,
3260
+ fontSize: `${D.value}px`,
3188
3261
  fontFamily: n.title?.textStyle?.fontFamily || "\"Microsoft YaHei\", \"微软雅黑\", sans-serif",
3189
3262
  fontWeight: n.title?.textStyle?.fontWeight ?? 400,
3190
3263
  fontStyle: n.title?.textStyle?.fontStyle ?? "normal",
3191
3264
  textDecoration: n.title?.textStyle?.textDecoration ?? "none",
3192
3265
  letterSpacing: n.title?.textStyle?.letterSpacing ?? "normal",
3193
3266
  lineHeight: String(Ht)
3194
- })), A = t(() => {
3195
- let e = Number.parseFloat(n.title?.textStyle?.letterSpacing ?? ""), t = Number.isFinite(e) ? Math.max(0, C.value.length - 1) * e : 0;
3196
- return Math.max(1, C.value.length * E.value * Vt + t);
3197
- }), 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(() => {
3198
3271
  let e = d.value - 48;
3199
- return e > 0 ? e : A.value;
3200
- }), M = t(() => ({
3201
- ...k.value,
3272
+ return e > 0 ? e : j.value;
3273
+ }), N = t(() => ({
3274
+ ...A.value,
3202
3275
  width: "max-content",
3203
- maxWidth: O.value ? "none" : `${j.value}px`,
3204
- whiteSpace: O.value ? "nowrap" : "normal",
3205
- overflowWrap: O.value ? "normal" : "anywhere"
3206
- })), N = t(() => qi({
3207
- naturalWidth: a.value || A.value,
3208
- naturalHeight: o.value || E.value * 1.2,
3209
- availableWidth: j.value,
3210
- rotation: D.value
3211
- })), P = t(() => w.value ? N.value.areaHeight : 0), F = (e, t) => typeof e == "number" && Number.isFinite(e) && e >= 0 ? e : t, I = t(() => ({
3212
- top: F(n.plotMargin.top, zt.top),
3213
- bottom: F(n.plotMargin.bottom, zt.bottom)
3214
- })), 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));
3215
3289
  return {
3216
3290
  fixedWidth: l,
3217
3291
  fixedHeight: u,
@@ -3219,6 +3293,7 @@ function Ji(e) {
3219
3293
  chartHeight: f,
3220
3294
  containerStyle: p,
3221
3295
  isCleanView: m,
3296
+ isEdgeCompact: C,
3222
3297
  isPresentationMode: h,
3223
3298
  resolvedZeroLine: g,
3224
3299
  legendBackgroundColor: _,
@@ -3227,98 +3302,98 @@ function Ji(e) {
3227
3302
  resolvedHiddenSeriesIds: b,
3228
3303
  resolveLegendPosition: x,
3229
3304
  resolveLegendOrientation: S,
3230
- resolvedTitleText: C,
3231
- titleAreaReserved: w,
3232
- titleVisible: T,
3233
- titleMeasureStyle: M,
3234
- titleLayout: N,
3235
- titleAreaHeight: P,
3236
- resolvedPlotMargin: I,
3237
- chartTopMargin: L,
3238
- drawingHeight: R,
3239
- xAxisTitleY: t(() => Math.max(0, R.value - 12)),
3240
- 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)),
3241
3316
  titleAreaStyle: t(() => ({
3242
- height: `${P.value}px`,
3317
+ height: `${F.value}px`,
3243
3318
  justifyContent: n.title?.align === "left" ? "flex-start" : n.title?.align === "right" ? "flex-end" : "center"
3244
3319
  })),
3245
3320
  titleVisualStyle: t(() => ({
3246
- width: `${N.value.visualWidth}px`,
3247
- height: `${N.value.visualHeight}px`
3321
+ width: `${P.value.visualWidth}px`,
3322
+ height: `${P.value.visualHeight}px`
3248
3323
  })),
3249
3324
  titleTextStyle: t(() => ({
3250
- ...k.value,
3251
- width: `${N.value.textWidth}px`,
3252
- minHeight: `${N.value.textHeight}px`,
3325
+ ...A.value,
3326
+ width: `${P.value.textWidth}px`,
3327
+ minHeight: `${P.value.textHeight}px`,
3253
3328
  textAlign: n.title?.align ?? "center",
3254
- whiteSpace: O.value ? "nowrap" : "normal",
3255
- overflowWrap: O.value ? "normal" : "anywhere",
3256
- 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})`
3257
3332
  }))
3258
3333
  };
3259
3334
  }
3260
3335
  //#endregion
3261
3336
  //#region src/core/samplingReferenceValues.ts
3262
- function Yi(e, t) {
3337
+ function ta(e, t) {
3263
3338
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
3264
3339
  }
3265
- function Xi(e, t, n, r) {
3340
+ function na(e, t, n, r) {
3266
3341
  let i = r - n;
3267
3342
  return {
3268
3343
  start: n + Math.floor(e * i / t),
3269
3344
  end: n + Math.floor((e + 1) * i / t)
3270
3345
  };
3271
3346
  }
3272
- function Zi(e, t) {
3347
+ function ra(e, t) {
3273
3348
  e[e.length - 1] !== t && e.push(t);
3274
3349
  }
3275
- function Qi(e, t, n) {
3350
+ function ia(e, t, n) {
3276
3351
  if (e <= t) return Array.from({ length: e }, (e, t) => t);
3277
3352
  if (t === 1) return [0];
3278
3353
  if (t === 2) return [0, e - 1];
3279
3354
  let r = [0];
3280
- return n().forEach((e) => Zi(r, e)), Zi(r, e - 1), r;
3355
+ return n().forEach((e) => ra(r, e)), ra(r, e - 1), r;
3281
3356
  }
3282
- function $i(e, t, n) {
3357
+ function aa(e, t, n) {
3283
3358
  let r = n === "minmax" ? Math.floor((t - 2) / 2) : Math.max(0, t - 2);
3284
- return Qi(e.length, t, () => {
3359
+ return ia(e.length, t, () => {
3285
3360
  if (!r) return [];
3286
3361
  let t = [];
3287
3362
  for (let i = 0; i < r; i += 1) {
3288
- let a = Xi(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;
3289
3364
  for (let t = a.start + 1; t < a.end; t += 1) e[t] < e[o] && (o = t), e[t] > e[s] && (s = t);
3290
- n === "min" ? Zi(t, o) : n === "max" ? Zi(t, s) : o <= s ? (Zi(t, o), Zi(t, s)) : (Zi(t, s), Zi(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));
3291
3366
  }
3292
3367
  return t;
3293
3368
  });
3294
3369
  }
3295
- function ea(e, t) {
3370
+ function oa(e, t) {
3296
3371
  let n = Math.floor((t - 2) / 4);
3297
- return Qi(e.length, t, () => {
3372
+ return ia(e.length, t, () => {
3298
3373
  if (!n) return [];
3299
3374
  let t = [];
3300
3375
  for (let r = 0; r < n; r += 1) {
3301
- let i = Xi(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;
3302
3377
  for (let t = i.start + 1; t < i.end; t += 1) e[t] < e[a] && (a = t), e[t] > e[o] && (o = t);
3303
3378
  [
3304
3379
  i.start,
3305
3380
  a,
3306
3381
  o,
3307
3382
  i.end - 1
3308
- ].sort((e, t) => e - t).forEach((e) => Zi(t, e));
3383
+ ].sort((e, t) => e - t).forEach((e) => ra(t, e));
3309
3384
  }
3310
3385
  return t;
3311
3386
  });
3312
3387
  }
3313
- function ta(e, t, n) {
3314
- return Qi(e.length, n, () => {
3388
+ function sa(e, t, n) {
3389
+ return ia(e.length, n, () => {
3315
3390
  let r = (e.length - 2) / (n - 2), i = [], a = 0;
3316
3391
  for (let o = 0; o < n - 2; o += 1) {
3317
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;
3318
3393
  for (let n = s; n < c; n += 1) l += e[n], u += t[n];
3319
3394
  let d = c - s;
3320
3395
  d ? (l /= d, u /= d) : (l = e[e.length - 1], u = t[t.length - 1]);
3321
- let f = Xi(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;
3322
3397
  for (let n = f.start; n < f.end; n += 1) {
3323
3398
  let r = Math.abs((e[a] - l) * (t[n] - t[a]) - (e[a] - e[n]) * (u - t[a]));
3324
3399
  r > m && (m = r, p = n);
@@ -3328,10 +3403,10 @@ function ta(e, t, n) {
3328
3403
  return i;
3329
3404
  });
3330
3405
  }
3331
- function na(e, t, n, r) {
3332
- let i = Yi(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);
3333
3408
  for (let n = 0; n < i; n += 1) {
3334
- let s = Xi(n, i, 0, e.length);
3409
+ let s = na(n, i, 0, e.length);
3335
3410
  for (let r = s.start; r < s.end; r += 1) a[n] += e[r], o[n] += t[r];
3336
3411
  let c = s.end - s.start;
3337
3412
  a[n] /= c, r === "average" && (o[n] /= c);
@@ -3342,10 +3417,10 @@ function na(e, t, n, r) {
3342
3417
  y: o
3343
3418
  };
3344
3419
  }
3345
- function ra(e, t, n, r) {
3420
+ function la(e, t, n, r) {
3346
3421
  if (e.length !== t.length) throw Error("x and y must have the same length");
3347
- if (n === "average" || n === "sum") return na(e, t, r, n);
3348
- let i = Yi(r, e.length), a = n === "none" || e.length <= i ? Array.from({ length: e.length }, (e, t) => t) : n === "peak" ? ea(t, i) : n === "lttb" ? ta(e, t, i) : $i(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);
3349
3424
  return {
3350
3425
  kind: "source-indexes",
3351
3426
  sourceIndexes: Uint32Array.from(a)
@@ -3353,41 +3428,41 @@ function ra(e, t, n, r) {
3353
3428
  }
3354
3429
  //#endregion
3355
3430
  //#region src/core/workerSampling/javascriptBackend.ts
3356
- var ia = {
3431
+ var ua = {
3357
3432
  kind: "javascript",
3358
3433
  sample(e) {
3359
- return ra(e.x, e.y, e.strategy, e.targetPointCount);
3434
+ return la(e.x, e.y, e.strategy, e.targetPointCount);
3360
3435
  }
3361
- }, aa = 8 * 1024 * 1024;
3362
- function oa(e, t) {
3436
+ }, da = 8 * 1024 * 1024;
3437
+ function fa(e, t) {
3363
3438
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
3364
3439
  }
3365
- function sa(e, t, n, r) {
3440
+ function pa(e, t, n, r) {
3366
3441
  let i = r - n;
3367
3442
  return {
3368
3443
  start: n + Math.floor(e * i / t),
3369
3444
  end: n + Math.floor((e + 1) * i / t)
3370
3445
  };
3371
3446
  }
3372
- function ca(e, t) {
3447
+ function ma(e, t) {
3373
3448
  e[e.length - 1] !== t && e.push(t);
3374
3449
  }
3375
- function la(e) {
3450
+ function ha(e) {
3376
3451
  return "minimumIndexes" in e ? e.minimumIndexes.byteLength + e.maximumIndexes.byteLength : e.x.byteLength + e.y.byteLength + e.count.byteLength;
3377
3452
  }
3378
- function ua(e, t) {
3453
+ function ga(e, t) {
3379
3454
  let n = 1;
3380
3455
  for (; n * 2 <= t && e % (n * 2) == 0;) n *= 2;
3381
3456
  return n;
3382
3457
  }
3383
- var da = class {
3458
+ var _a = class {
3384
3459
  points;
3385
3460
  extremaLayers = [];
3386
3461
  sumLayers = [];
3387
3462
  indexBytes = 0;
3388
3463
  maxBytes;
3389
3464
  constructor(e, t = {}) {
3390
- this.points = e, this.maxBytes = Number.isFinite(t.maxBytes) ? Math.max(0, Math.floor(t.maxBytes ?? 0)) : aa;
3465
+ this.points = e, this.maxBytes = Number.isFinite(t.maxBytes) ? Math.max(0, Math.floor(t.maxBytes ?? 0)) : da;
3391
3466
  }
3392
3467
  get byteLength() {
3393
3468
  return this.indexBytes;
@@ -3396,7 +3471,7 @@ var da = class {
3396
3471
  this.extremaLayers.length = 0, this.sumLayers.length = 0, this.indexBytes = 0;
3397
3472
  }
3398
3473
  sample(e, t, n, r) {
3399
- 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 = oa(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);
3400
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);
3401
3476
  }
3402
3477
  allIndexes(e, t) {
@@ -3416,24 +3491,24 @@ var da = class {
3416
3491
  if (i === 0) return this.indexes([e, t - 1]);
3417
3492
  let a = [e];
3418
3493
  for (let n = 0; n < i; n += 1) {
3419
- let o = sa(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);
3420
3495
  if (!s) return;
3421
- if (r === "min") ca(a, s.minimum);
3422
- else if (r === "max") ca(a, s.maximum);
3423
- else if (r === "minmax") s.minimum <= s.maximum ? (ca(a, s.minimum), ca(a, s.maximum)) : (ca(a, s.maximum), ca(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));
3424
3499
  else for (let e of [
3425
3500
  o.start,
3426
3501
  s.minimum,
3427
3502
  s.maximum,
3428
3503
  o.end - 1
3429
- ].sort((e, t) => e - t)) ca(a, e);
3504
+ ].sort((e, t) => e - t)) ma(a, e);
3430
3505
  }
3431
- return ca(a, t - 1), this.indexes(a);
3506
+ return ma(a, t - 1), this.indexes(a);
3432
3507
  }
3433
3508
  aggregate(e, t, n, r) {
3434
3509
  let i = new Float64Array(n), a = new Float64Array(n);
3435
3510
  for (let o = 0; o < n; o += 1) {
3436
- let s = sa(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);
3437
3512
  if (!c || c.count === 0) return;
3438
3513
  i[o] = c.x / c.count, a[o] = r === "average" ? c.y / c.count : c.y;
3439
3514
  }
@@ -3448,7 +3523,7 @@ var da = class {
3448
3523
  if (!this.ensureExtrema(n)) return;
3449
3524
  let r = e, i = e;
3450
3525
  for (let n = e; n < t;) {
3451
- let e = ua(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;
3452
3527
  this.isMinimum(c, r) && (r = c), this.isMaximum(l, i) && (i = l), n += e;
3453
3528
  }
3454
3529
  return {
@@ -3461,7 +3536,7 @@ var da = class {
3461
3536
  if (!this.ensureSum(n)) return;
3462
3537
  let r = 0, i = 0, a = 0;
3463
3538
  for (let n = e; n < t;) {
3464
- let e = ua(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];
3465
3540
  if (c) r += c.x[s], i += c.y[s], a += c.count[s];
3466
3541
  else {
3467
3542
  let e = this.points[n];
@@ -3482,7 +3557,7 @@ var da = class {
3482
3557
  minimumIndexes: new Uint32Array(e),
3483
3558
  maximumIndexes: new Uint32Array(e)
3484
3559
  };
3485
- if (!this.reserve(la(n))) return !1;
3560
+ if (!this.reserve(ha(n))) return !1;
3486
3561
  let r = this.extremaLayers[t - 1];
3487
3562
  for (let t = 0; t < e; t += 1) {
3488
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;
@@ -3500,7 +3575,7 @@ var da = class {
3500
3575
  y: new Float64Array(e),
3501
3576
  count: new Uint32Array(e)
3502
3577
  };
3503
- if (!this.reserve(la(n))) return !1;
3578
+ if (!this.reserve(ha(n))) return !1;
3504
3579
  let r = this.sumLayers[t - 1];
3505
3580
  for (let t = 0; t < e; t += 1) {
3506
3581
  let e = t * 2, i = e + 1;
@@ -3525,8 +3600,8 @@ var da = class {
3525
3600
  let n = this.points[e], r = this.points[t];
3526
3601
  return n.y > r.y || n.y === r.y && e < t;
3527
3602
  }
3528
- }, fa = 1e3, pa = L((e) => e.x);
3529
- function ma(e) {
3603
+ }, va = 1e3, ya = L((e) => e.x);
3604
+ function ba(e) {
3530
3605
  let t = [], n = !0, r = -Infinity;
3531
3606
  for (let i of e) !Number.isFinite(i.x) || !Number.isFinite(i.y) || (i.x < r && (n = !1), r = i.x, t.push({
3532
3607
  x: i.x,
@@ -3537,7 +3612,7 @@ function ma(e) {
3537
3612
  }));
3538
3613
  return n || t.sort((e, t) => e.x - t.x), t;
3539
3614
  }
3540
- function ha(e, t) {
3615
+ function xa(e, t) {
3541
3616
  let n = Infinity, r = -Infinity, i = Infinity, a = -Infinity;
3542
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);
3543
3618
  return {
@@ -3547,7 +3622,7 @@ function ha(e, t) {
3547
3622
  yDomain: e.length ? [i, a] : null
3548
3623
  };
3549
3624
  }
3550
- function ga(e, t, n = e.length) {
3625
+ function Sa(e, t, n = e.length) {
3551
3626
  let r = Infinity, i = -Infinity, a = Infinity, o = -Infinity;
3552
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]);
3553
3628
  return {
@@ -3557,39 +3632,39 @@ function ga(e, t, n = e.length) {
3557
3632
  yDomain: e.length ? [a, o] : null
3558
3633
  };
3559
3634
  }
3560
- function _a(e, t) {
3635
+ function Ca(e, t) {
3561
3636
  return e ? e.revision === t ? "ok" : "stale-revision" : "not-found";
3562
3637
  }
3563
- function va(e) {
3638
+ function wa(e) {
3564
3639
  return e === "auto" ? "peak" : e;
3565
3640
  }
3566
- function ya(e) {
3641
+ function Ta(e) {
3567
3642
  if (Number.isFinite(e.maxPointCount) && (e.maxPointCount ?? 0) >= 1) return Math.floor(e.maxPointCount);
3568
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;
3569
3644
  return Math.max(1, Math.floor(t * n));
3570
3645
  }
3571
- function ba(e, t) {
3646
+ function Ea(e, t) {
3572
3647
  if (e.mode === "raw") return !0;
3573
3648
  if (e.mode !== "auto") return !1;
3574
- let n = Number.isFinite(e.autoThreshold) ? Math.max(1, Math.floor(e.autoThreshold ?? 0)) : fa;
3649
+ let n = Number.isFinite(e.autoThreshold) ? Math.max(1, Math.floor(e.autoThreshold ?? 0)) : va;
3575
3650
  if (!e.previousSelectedMode) return t <= n;
3576
3651
  let r = Number.isFinite(e.autoHysteresis) ? Math.max(0, Math.floor(e.autoHysteresis ?? 0)) : 0;
3577
3652
  return e.previousSelectedMode === "raw" ? t <= n + r : t <= Math.max(0, n - r);
3578
3653
  }
3579
- function xa(e, t) {
3654
+ function Da(e, t) {
3580
3655
  let n = e[0], r = e.at(-1);
3581
- return Number.isFinite(t) && n && r && t >= n.x && t <= r.x ? e[pa.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;
3582
3657
  }
3583
- function Sa(e) {
3658
+ function Oa(e) {
3584
3659
  return e ? e.kind === "source-indexes" ? e.sourceIndexes.length : e.x.length : 0;
3585
3660
  }
3586
- function Ca(e, t) {
3661
+ function ka(e, t) {
3587
3662
  return e.kind === "aggregates" ? e : {
3588
3663
  kind: "source-indexes",
3589
3664
  sourceIndexes: Uint32Array.from(e.sourceIndexes, (e) => e + t)
3590
3665
  };
3591
3666
  }
3592
- function wa(e, t, n, r, i) {
3667
+ function Aa(e, t, n, r, i) {
3593
3668
  return [
3594
3669
  e.datasetId,
3595
3670
  e.revision,
@@ -3609,14 +3684,14 @@ function wa(e, t, n, r, i) {
3609
3684
  e.errorBarMinSpacing ?? 0
3610
3685
  ].join("\0");
3611
3686
  }
3612
- function Ta(e, t, n, r, i, a, o, s) {
3687
+ function ja(e, t, n, r, i, a, o, s) {
3613
3688
  return {
3614
3689
  seriesId: e.seriesId,
3615
3690
  datasetId: e.datasetId,
3616
3691
  mode: e.mode,
3617
3692
  selectedMode: i,
3618
3693
  backend: r,
3619
- strategy: va(e.strategy),
3694
+ strategy: wa(e.strategy),
3620
3695
  sourcePointCount: t,
3621
3696
  visiblePointCount: n,
3622
3697
  renderedPointCount: o,
@@ -3632,18 +3707,18 @@ function Ta(e, t, n, r, i, a, o, s) {
3632
3707
  }
3633
3708
  //#endregion
3634
3709
  //#region src/core/workerSampling/repositoryDataset.ts
3635
- function Ea(e) {
3710
+ function Ma(e) {
3636
3711
  return e?.y.length ?? 0;
3637
3712
  }
3638
- function Da(e, t) {
3713
+ function Na(e, t) {
3639
3714
  return e.x ? e.x[t] : e.sampleStartTime + (e.sampleSourceIndexes?.[t] ?? t) / e.sampleRate;
3640
3715
  }
3641
- function Oa(e, t) {
3716
+ function Pa(e, t) {
3642
3717
  let n = (t, n) => {
3643
- let r = 0, i = Ea(e);
3718
+ let r = 0, i = Ma(e);
3644
3719
  for (; r < i;) {
3645
3720
  let a = r + Math.floor((i - r) / 2);
3646
- (n ? Da(e, a) <= t : Da(e, a) < t) ? r = a + 1 : i = a;
3721
+ (n ? Na(e, a) <= t : Na(e, a) < t) ? r = a + 1 : i = a;
3647
3722
  }
3648
3723
  return r;
3649
3724
  }, r = Math.min(t[0], t[1]), i = Math.max(t[0], t[1]);
@@ -3652,13 +3727,13 @@ function Oa(e, t) {
3652
3727
  end: n(i, !0)
3653
3728
  };
3654
3729
  }
3655
- function ka(e, t, n) {
3656
- return e.x ? e.x.subarray(t, n) : Float64Array.from({ length: n - t }, (n, r) => Da(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));
3657
3732
  }
3658
- function Aa(e) {
3733
+ function Ia(e) {
3659
3734
  return e?.kind === "wasm" && "registerDataset" in e && "disposeDataset" in e && "disposeAllDatasets" in e && "datasetIndexBytes" in e && "registerSamples" in e && "sampleDataset" in e;
3660
3735
  }
3661
- function ja(e, t) {
3736
+ function La(e, t) {
3662
3737
  let n = [], r = Math.min(e.length, t.length);
3663
3738
  for (let i = 0; i < r; i += 1) Number.isFinite(e[i]) && Number.isFinite(t[i]) && n.push(i);
3664
3739
  return n.sort((t, n) => e[t] - e[n] || t - n), {
@@ -3666,14 +3741,14 @@ function ja(e, t) {
3666
3741
  y: Float64Array.from(n, (e) => t[e])
3667
3742
  };
3668
3743
  }
3669
- function Ma(e, t, n, r) {
3744
+ function Ra(e, t, n, r) {
3670
3745
  if (t?.kind === "typed") {
3671
- let e = ja(t.x, t.y);
3746
+ let e = La(t.x, t.y);
3672
3747
  return {
3673
3748
  x: e.x,
3674
3749
  y: e.y,
3675
3750
  revision: n,
3676
- metrics: ga(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))
3677
3752
  };
3678
3753
  }
3679
3754
  if (t?.kind === "samples") {
@@ -3707,35 +3782,35 @@ function Ma(e, t, n, r) {
3707
3782
  }
3708
3783
  };
3709
3784
  }
3710
- let i = ma(e ?? t?.points ?? []);
3785
+ let i = ba(e ?? t?.points ?? []);
3711
3786
  return {
3712
3787
  x: Float64Array.from(i, (e) => e.x),
3713
3788
  y: Float64Array.from(i, (e) => e.y),
3714
3789
  points: i,
3715
3790
  revision: n,
3716
- metrics: ha(i, e?.length ?? t?.points.length ?? 0),
3717
- index: new da(i, { maxBytes: r })
3791
+ metrics: xa(i, e?.length ?? t?.points.length ?? 0),
3792
+ index: new _a(i, { maxBytes: r })
3718
3793
  };
3719
3794
  }
3720
- function Na(e, t, n) {
3721
- !Aa(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));
3722
3797
  }
3723
- function Pa(e, t) {
3724
- t.index?.dispose(), t.wasmDatasetHandle !== void 0 && Aa(e) && e.disposeDataset(t.wasmDatasetHandle);
3798
+ function Ba(e, t) {
3799
+ t.index?.dispose(), t.wasmDatasetHandle !== void 0 && Ia(e) && e.disposeDataset(t.wasmDatasetHandle);
3725
3800
  }
3726
3801
  //#endregion
3727
3802
  //#region src/core/workerSampling/samplingCache.ts
3728
- var Fa = 96, Ia = 16 * 1024 * 1024;
3729
- function La(e) {
3803
+ var Va = 96, Ha = 16 * 1024 * 1024;
3804
+ function Ua(e) {
3730
3805
  return e.kind === "source-indexes" ? e.sourceIndexes.byteLength : e.x.byteLength + e.y.byteLength;
3731
3806
  }
3732
- var Ra = class {
3807
+ var Wa = class {
3733
3808
  entries = /* @__PURE__ */ new Map();
3734
3809
  bytes = 0;
3735
3810
  maxEntries;
3736
3811
  maxBytes;
3737
3812
  constructor(e = {}) {
3738
- this.maxEntries = Number.isFinite(e.maxEntries) ? Math.max(0, Math.floor(e.maxEntries ?? 0)) : Fa, this.maxBytes = Number.isFinite(e.maxBytes) ? Math.max(0, Math.floor(e.maxBytes ?? 0)) : Ia;
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;
3739
3814
  }
3740
3815
  get metrics() {
3741
3816
  return {
@@ -3750,7 +3825,7 @@ var Ra = class {
3750
3825
  if (t) return this.entries.delete(e), this.entries.set(e, t), t.output;
3751
3826
  }
3752
3827
  set(e, t) {
3753
- let n = La(t);
3828
+ let n = Ua(t);
3754
3829
  if (n > this.maxBytes || this.maxEntries === 0) return;
3755
3830
  let r = this.entries.get(e);
3756
3831
  for (r && (this.bytes -= r.bytes, this.entries.delete(e)), this.entries.set(e, {
@@ -3770,14 +3845,14 @@ var Ra = class {
3770
3845
  clear() {
3771
3846
  this.entries.clear(), this.bytes = 0;
3772
3847
  }
3773
- }, za = class {
3848
+ }, Ga = class {
3774
3849
  datasets = /* @__PURE__ */ new Map();
3775
3850
  javascriptBackend;
3776
3851
  cache;
3777
3852
  indexMaxBytes;
3778
3853
  wasmBackend;
3779
3854
  constructor(e = {}) {
3780
- this.javascriptBackend = e.javascriptBackend ?? ia, this.wasmBackend = e.wasmBackend, this.indexMaxBytes = e.indexMaxBytes, this.cache = new Ra({
3855
+ this.javascriptBackend = e.javascriptBackend ?? ua, this.wasmBackend = e.wasmBackend, this.indexMaxBytes = e.indexMaxBytes, this.cache = new Wa({
3781
3856
  maxEntries: e.cacheMaxEntries,
3782
3857
  maxBytes: e.cacheMaxBytes
3783
3858
  });
@@ -3790,9 +3865,9 @@ var Ra = class {
3790
3865
  };
3791
3866
  }
3792
3867
  setWasmBackend(e) {
3793
- this.wasmBackend && this.wasmBackend !== e && Aa(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) => {
3794
3869
  e.wasmDatasetHandle = void 0, e.wasmIndexBytes = void 0;
3795
- })), this.wasmBackend = e, Aa(e) && this.datasets.forEach((t) => Na(e, t, this.indexMaxBytes));
3870
+ })), this.wasmBackend = e, Ia(e) && this.datasets.forEach((t) => za(e, t, this.indexMaxBytes));
3796
3871
  }
3797
3872
  handle(e) {
3798
3873
  switch (e.type) {
@@ -3808,15 +3883,15 @@ var Ra = class {
3808
3883
  register(e, t, n, r) {
3809
3884
  let i = this.datasets.get(e);
3810
3885
  if (i) return this.datasetResponse(t, e, i, "stale-revision");
3811
- let a = Ma(n, r, 1, this.indexMaxBytes);
3812
- return Na(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");
3813
3888
  }
3814
3889
  replace(e, t, n, r, i) {
3815
- let a = this.datasets.get(e), o = _a(a, n);
3890
+ let a = this.datasets.get(e), o = Ca(a, n);
3816
3891
  if (o !== "ok" || !a) return this.datasetResponse(t, e, a, o);
3817
- Pa(this.wasmBackend, a), this.cache.deleteDataset(e);
3818
- let s = Ma(r, i, a.revision + 1, this.indexMaxBytes);
3819
- return Na(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");
3820
3895
  }
3821
3896
  sample(e) {
3822
3897
  return {
@@ -3826,28 +3901,28 @@ var Ra = class {
3826
3901
  };
3827
3902
  }
3828
3903
  sampleSeries(e, t) {
3829
- let n = performance.now(), r = this.datasets.get(t.datasetId), i = _a(r, t.revision);
3904
+ let n = performance.now(), r = this.datasets.get(t.datasetId), i = Ca(r, t.revision);
3830
3905
  if (i !== "ok" || !r) return this.sampleResponse(e, t, i, void 0, "unavailable", "sampled", 0, n, !1);
3831
- let a = Oa(r, t.xDomain), o = a.end - a.start;
3832
- if (ba(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", {
3833
3908
  kind: "source-indexes",
3834
3909
  sourceIndexes: Uint32Array.from({ length: o }, (e, t) => a.start + t)
3835
3910
  }, "raw", "raw", o, n, !1);
3836
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);
3837
3912
  if (!l) return this.sampleResponse(e, t, "wasm-unavailable", void 0, "unavailable", "sampled", o, n, !1);
3838
- let u = va(t.strategy), d = ya(t), f = wa(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);
3839
3914
  if (p) return this.sampleResponse(e, t, c ? "wasm-unavailable" : "ok", p, l.kind, "sampled", o, n, !0);
3840
- let m = (l.kind === "wasm" ? r.wasmDatasetHandle !== void 0 && Aa(l) ? l.sampleDataset(r.wasmDatasetHandle, a.start, a.end, u, d) : void 0 : r.index?.sample(a.start, a.end, u, d)) ?? Ca(l.sample({
3841
- x: ka(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),
3842
3917
  y: r.y.subarray(a.start, a.end),
3843
3918
  points: r.points?.slice(a.start, a.end) ?? [],
3844
3919
  strategy: u,
3845
3920
  targetPointCount: d
3846
3921
  }), a.start);
3847
- return this.cache.set(f, m), r.wasmDatasetHandle !== void 0 && Aa(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);
3848
3923
  }
3849
3924
  sampleResponse(e, t, n, r, i, a, o, s, c) {
3850
- let l = Ta(t, Ea(this.datasets.get(t.datasetId)), o, i, a, performance.now() - s, Sa(r), c);
3925
+ let l = ja(t, Ma(this.datasets.get(t.datasetId)), o, i, a, performance.now() - s, Oa(r), c);
3851
3926
  return l.requestId = e, {
3852
3927
  seriesId: t.seriesId,
3853
3928
  datasetId: t.datasetId,
@@ -3858,7 +3933,7 @@ var Ra = class {
3858
3933
  };
3859
3934
  }
3860
3935
  findNearest(e, t, n, r) {
3861
- let i = this.datasets.get(e), a = _a(i, n);
3936
+ let i = this.datasets.get(e), a = Ca(i, n);
3862
3937
  return a !== "ok" || !i ? {
3863
3938
  type: "find-nearest-point-response",
3864
3939
  requestId: t,
@@ -3871,12 +3946,12 @@ var Ra = class {
3871
3946
  datasetId: e,
3872
3947
  revision: n,
3873
3948
  status: a,
3874
- point: i.points ? xa(i.points, r) : (() => {
3875
- let e = Oa(i, [r, r]);
3876
- if (!Ea(i) || r < Da(i, 0) || r > Da(i, Ea(i) - 1)) return;
3877
- let t = Math.min(Ea(i) - 1, e.start), n = Math.max(0, t - 1), a = Math.abs(r - Da(i, n)) < Math.abs(Da(i, t) - r) ? n : t;
3878
- return Number.isFinite(r) && Ea(i) ? {
3879
- x: Da(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),
3880
3955
  y: i.y[a]
3881
3956
  } : void 0;
3882
3957
  })()
@@ -3884,15 +3959,15 @@ var Ra = class {
3884
3959
  }
3885
3960
  metrics(e, t, n) {
3886
3961
  let r = this.datasets.get(e);
3887
- return this.datasetResponse(t, e, r, _a(r, n));
3962
+ return this.datasetResponse(t, e, r, Ca(r, n));
3888
3963
  }
3889
3964
  dispose(e, t, n) {
3890
- let r = this.datasets.get(e), i = _a(r, n);
3891
- return i === "ok" && r && (Pa(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);
3892
3967
  }
3893
3968
  disposeAll(e) {
3894
3969
  let t = [...this.datasets.keys()];
3895
- return this.datasets.forEach((e) => Pa(this.wasmBackend, e)), Aa(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(), {
3896
3971
  type: "dispose-all-response",
3897
3972
  requestId: e,
3898
3973
  disposedDatasetIds: t
@@ -3914,10 +3989,10 @@ var Ra = class {
3914
3989
  };
3915
3990
  //#endregion
3916
3991
  //#region src/components/core/latestTaskScheduler.ts
3917
- function Ba(e, t, n, r) {
3992
+ function Ka(e, t, n, r) {
3918
3993
  return r ? r === "raw" ? e <= t + n ? "raw" : "sampled" : e <= Math.max(0, t - n) ? "raw" : "sampled" : e <= t ? "raw" : "sampled";
3919
3994
  }
3920
- function Va() {
3995
+ function qa() {
3921
3996
  let e = 0, t = !1, n, r = !1, i = {
3922
3997
  scheduled: 0,
3923
3998
  coalesced: 0,
@@ -3956,12 +4031,12 @@ function Va() {
3956
4031
  }
3957
4032
  //#endregion
3958
4033
  //#region src/components/core/workerSamplingClient.ts
3959
- function Ha(e) {
4034
+ function Ja(e) {
3960
4035
  return e?.message || "Web Worker is unavailable; JavaScript sampling is being used.";
3961
4036
  }
3962
- function Ua() {
4037
+ function Ya() {
3963
4038
  let e, t, n, r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = () => {
3964
- t ??= new za();
4039
+ t ??= new Ga();
3965
4040
  for (let [e, n] of i) {
3966
4041
  t.handle({
3967
4042
  type: "register-dataset",
@@ -3997,7 +4072,7 @@ function Ua() {
3997
4072
  let t = a();
3998
4073
  e.forEach(({ request: e, resolve: n }) => n(t.handle(e)));
3999
4074
  }, c = (r) => {
4000
- t || (n = Ha(r), e?.terminate(), e = void 0, s());
4075
+ t || (n = Ja(r), e?.terminate(), e = void 0, s());
4001
4076
  };
4002
4077
  try {
4003
4078
  typeof Worker > "u" ? c() : (e = new Worker(new URL(
@@ -4034,20 +4109,20 @@ function Ua() {
4034
4109
  }
4035
4110
  };
4036
4111
  }
4037
- function Wa(e) {
4112
+ function Xa(e) {
4038
4113
  return e.type === "dataset-response";
4039
4114
  }
4040
4115
  //#endregion
4041
4116
  //#region src/components/core/useWaveformRenderSampling.ts
4042
- var Ga = 120;
4043
- function Ka(e, t) {
4117
+ var Za = 120;
4118
+ function Qa(e, t) {
4044
4119
  let n = e.output;
4045
4120
  if (n) return n.kind === "aggregates" ? Array.from(n.x, (e, t) => ({
4046
4121
  x: e,
4047
4122
  y: n.y[t]
4048
4123
  })) : Array.from(n.sourceIndexes, (e) => t.pointAt(e)).filter((e) => e !== void 0);
4049
4124
  }
4050
- function qa(e, t) {
4125
+ function $a(e, t) {
4051
4126
  let n = e.request, r = e.visibleRange.end - e.visibleRange.start;
4052
4127
  return {
4053
4128
  seriesId: n.seriesId,
@@ -4069,7 +4144,7 @@ function qa(e, t) {
4069
4144
  maxPendingRequestCount: 0
4070
4145
  };
4071
4146
  }
4072
- function Ja(e) {
4147
+ function eo(e) {
4073
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));
4074
4149
  if (i <= a) return t.pointsInRange(n, r);
4075
4150
  if (a === 1) return t.pointAt(n) ? [t.pointAt(n)] : [];
@@ -4080,7 +4155,7 @@ function Ja(e) {
4080
4155
  }
4081
4156
  return o;
4082
4157
  }
4083
- function Ya(e, t, n, r) {
4158
+ function to(e, t, n, r) {
4084
4159
  return {
4085
4160
  message: e,
4086
4161
  mode: t,
@@ -4088,8 +4163,8 @@ function Ya(e, t, n, r) {
4088
4163
  seriesIds: r
4089
4164
  };
4090
4165
  }
4091
- function Xa(e) {
4092
- 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 = Va(), 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(() => {
4093
4168
  let t = e.renderingOptions.value.sampling;
4094
4169
  return e.sourceTrackLayouts.value.flatMap((n) => {
4095
4170
  let r = n.xScale.domain();
@@ -4154,13 +4229,13 @@ function Xa(e) {
4154
4229
  revision: 0,
4155
4230
  dataset: t.source.toWorkerDataset()
4156
4231
  });
4157
- !u.isCurrent(n) || !Wa(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);
4158
4233
  }));
4159
4234
  }, x = async (t, n = !1) => {
4160
4235
  let o = m.value, c = { ...e.linePointOverrides.value }, l = [], d = [];
4161
4236
  if (o.forEach((e) => {
4162
- let r = e.visibleRange.end - e.visibleRange.start, i = n ? s.get(e.series.id) : void 0, a = e.request.mode === "auto" && Ba(r, e.request.autoThreshold, e.request.autoHysteresis ?? 0, i) === "raw";
4163
- 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(qa(e, t))) : (c[e.series.id]?.length || (c[e.series.id] = Ja(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({
4164
4239
  ...e,
4165
4240
  request: {
4166
4241
  ...e.request,
@@ -4172,7 +4247,7 @@ function Xa(e) {
4172
4247
  e.linePointOverrides.value = c, v(d);
4173
4248
  return;
4174
4249
  }
4175
- if (e.linePointOverrides.value = c, r ??= Ua(), 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;
4176
4251
  let f = l.map((e) => ({
4177
4252
  ...e.request,
4178
4253
  revision: a.get(e.request.datasetId) ?? 1
@@ -4187,22 +4262,22 @@ function Xa(e) {
4187
4262
  p = e;
4188
4263
  } catch (n) {
4189
4264
  if (!u.isCurrent(t)) return;
4190
- y(Ya(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)));
4191
4266
  return;
4192
4267
  }
4193
4268
  if (!u.isCurrent(t)) return;
4194
4269
  let h = new Map(l.map((e) => [e.series.id, e.source]));
4195
4270
  p.results.forEach((e) => {
4196
- let t = h.get(e.seriesId), n = t ? Ka(e, t) : void 0;
4197
- 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(Ya(p.workerError ?? "WASM sampling is unavailable.", e.diagnostics.mode, e.diagnostics.backend === "javascript" ? "javascript" : "none", [e.seriesId]));
4198
- }), p.workerError && y(Ya(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(Ya(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);
4199
4274
  };
4200
4275
  return k(h, () => {
4201
4276
  f && clearTimeout(f);
4202
4277
  let t = p;
4203
4278
  p = !0, u.schedule((e) => x(e, t)), t && e.renderingOptions.value.sampling.mode === "auto" && e.renderingOptions.value.sampling.autoHysteresis > 0 && (f = setTimeout(() => {
4204
4279
  f = void 0, u.schedule((e) => x(e, !1));
4205
- }, Ga));
4280
+ }, Za));
4206
4281
  }, { immediate: !0 }), k(e.preparedSeries, () => {
4207
4282
  u.cancelPending(), n.value += 1, e.linePointOverrides.value = {}, a.clear(), o.clear(), s.clear(), c.clear(), r?.dispose(), r = void 0;
4208
4283
  }, { flush: "sync" }), _(() => {
@@ -4211,11 +4286,11 @@ function Xa(e) {
4211
4286
  }
4212
4287
  //#endregion
4213
4288
  //#region src/components/core/useWaveformChartController.ts
4214
- function Za(e, t) {
4289
+ function ro(e, t) {
4215
4290
  e.value = t instanceof Element ? t : void 0;
4216
4291
  }
4217
- function Qa(e, t) {
4218
- 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({
4219
4294
  points: [],
4220
4295
  trackIndex: null,
4221
4296
  queryX: null,
@@ -4224,216 +4299,219 @@ function Qa(e, t) {
4224
4299
  x: 0,
4225
4300
  y: 0
4226
4301
  }
4227
- }), _ = x(!1), v = x(1), y = w(), S = ue("waveform-clip"), T = x(new Set(e.defaultHiddenSeriesIds)), D = gt(), O = w({}), j = x([]), M = ti();
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();
4228
4303
  k([() => e.yDomain, () => e.yDomains], () => {
4229
- m.value = {}, h.value = {};
4304
+ h.value = {}, g.value = {};
4230
4305
  }, { deep: !0 });
4231
- let N = w(null), P = x(!1), F = x(!1), I = () => void 0, L = () => void 0, R = () => void 0, z = oi(() => e.data, () => {
4232
- R(), I();
4233
- }, () => L()), B = Ji({
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({
4234
4309
  props: e,
4235
- observedWidth: o,
4236
- observedHeight: s,
4237
- measuredTitleWidth: c,
4238
- measuredTitleHeight: l,
4239
- internalHiddenSeriesIds: T,
4240
- paginationBandHeight: u
4241
- }), { chartWidth: V, chartHeight: H, isCleanView: U, isPresentationMode: W, hiddenSeriesIdSet: G, resolvedTitleText: ee, titleAreaReserved: te, titleMeasureStyle: ne, titleAreaHeight: re, chartTopMargin: K, innerHeight: q } = B, ie = Wi({
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({
4242
4317
  props: e,
4243
- preparedSeries: z,
4244
- currentPage: v,
4245
- hiddenSeriesIdSet: G,
4246
- chartWidth: V,
4247
- innerHeight: q,
4248
- isCleanView: U,
4249
- sharedTransform: f,
4250
- independentTransforms: p,
4251
- sharedYDomains: m,
4252
- independentYDomains: h,
4253
- annotationInteraction: d(D),
4254
- linePointOverrides: O
4255
- }), { 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;
4256
- Xa({
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({
4257
4332
  props: e,
4258
- emit: t,
4259
- instanceId: S,
4260
- preparedSeries: z,
4261
- sourceTrackLayouts: ce,
4262
- renderingOptions: se,
4263
- linePointOverrides: O
4264
- }), A(() => {
4265
- 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
4339
+ });
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;
4266
4343
  });
4267
- let Se = ni({
4344
+ let X = oi({
4268
4345
  props: e,
4269
- emit: t,
4270
- svgElement: r,
4271
- sharedOverlayElement: a,
4272
- sharedTransform: f,
4273
- independentTransforms: p,
4274
- trackLayouts: ce,
4275
- initialXDomain: _e,
4276
- sharedZoomDomain: ve,
4277
- innerWidth: pe,
4278
- innerHeight: q,
4279
- hasChartArea: me,
4280
- isZoomMode: ge,
4281
- isPresentationMode: W,
4282
- resolveInitialTrackDomain: ye,
4283
- 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()
4284
4361
  });
4285
- R = Se.prepareForDataChange;
4286
- let Ce = jr({
4362
+ z = X.prepareForDataChange;
4363
+ let we = jr({
4287
4364
  props: e,
4288
- emit: t,
4289
- container: n,
4290
- chartSeries: ae,
4291
- hiddenSeriesIdSet: G,
4292
- internalHiddenSeriesIds: T,
4293
- annotationInteraction: D,
4294
- editorSeriesOptions: j,
4295
- trackLayouts: ce,
4296
- annotationLayoutsForTrack: be,
4297
- resolveSeriesYScale: xe,
4298
- chartWidth: V,
4299
- chartHeight: H,
4300
- innerWidth: pe,
4301
- 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,
4302
4379
  titleAreaHeight: re,
4303
- chartTopMargin: K,
4304
- activeInteractionMode: he,
4305
- isPresentationMode: W
4306
- }), X = ei({
4380
+ chartTopMargin: ie,
4381
+ activeInteractionMode: ge,
4382
+ isPresentationMode: G
4383
+ }), Te = ii({
4307
4384
  props: e,
4308
- emit: t,
4309
- selection: N,
4310
- spacePressed: P,
4311
- trackLayouts: ce,
4312
- chartTracks: oe,
4313
- initialXDomain: _e,
4314
- innerWidth: pe,
4315
- innerHeight: q,
4316
- sharedOverlayElement: a,
4317
- sharedTransform: f,
4318
- independentTransforms: p,
4319
- sharedYDomains: m,
4320
- independentYDomains: h,
4321
- isZoomMode: ge,
4322
- isPresentationMode: W,
4323
- editorSeriesOptions: j,
4324
- resolveInitialTrackDomain: ye,
4325
- canZoomTrack: Se.canZoomTrack,
4326
- canZoomSharedTracks: Se.canZoomSharedTracks,
4327
- configureZoom: Se.configureZoom,
4328
- cancelPendingZoom: Se.cancelPendingZoom,
4329
- clearHover: () => we.clearHover(),
4330
- resolveTrackAtPointer: Ce.resolveTrackAtPointer
4331
- }), we = Mr({
4332
- emit: t,
4333
- hoverState: g,
4334
- suppressHoverUntilMove: _,
4335
- hoverThrottle: M,
4336
- selection: N,
4337
- trackLayouts: ce,
4338
- innerWidth: pe,
4339
- 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,
4340
4417
  titleAreaHeight: re,
4341
- chartTopMargin: K,
4342
- sharedOverlayElement: a,
4343
- isPresentationMode: W,
4344
- updateViewportDrag: X.updateViewportDrag,
4345
- resolveTrackAtPointer: Ce.resolveTrackAtPointer
4346
- }), Te = ii({
4418
+ chartTopMargin: ie,
4419
+ sharedOverlayElement: o,
4420
+ isPresentationMode: G,
4421
+ updateViewportDrag: Te.updateViewportDrag,
4422
+ resolveTrackAtPointer: we.resolveTrackAtPointer
4423
+ }), De = li({
4347
4424
  props: e,
4348
- emit: t,
4349
- container: n,
4350
- titleMeasureElement: i,
4351
- resizeObserver: y,
4352
- observedWidth: o,
4353
- observedHeight: s,
4354
- measuredTitleWidth: c,
4355
- 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,
4356
4433
  resolvedTitleText: ee,
4357
4434
  titleAreaReserved: te,
4358
4435
  titleMeasureStyle: ne,
4359
- spacePressed: P,
4360
- pointerInsideChart: F,
4361
- currentPage: v,
4362
- pageCount: de,
4363
- pagedTracks: fe,
4364
- gridOptions: le,
4365
- chartSeries: ae,
4366
- chartTracks: oe,
4367
- trackLayouts: ce,
4368
- innerWidth: pe,
4369
- innerHeight: q,
4370
- sharedZoomDomain: ve,
4371
- initialXDomain: _e,
4372
- sharedTransform: f,
4373
- activeInteractionMode: he,
4374
- hiddenSeriesIdSet: G,
4375
- internalHiddenSeriesIds: T,
4376
- independentTransforms: p,
4377
- independentYDomains: h,
4378
- resolveInitialTrackDomain: ye,
4379
- annotationInteraction: D,
4380
- editorSeriesOptions: j,
4381
- isPresentationMode: W,
4382
- clearHover: we.clearHover,
4383
- cancelAnnotation: Ce.cancelAnnotation,
4384
- configureZoom: Se.configureZoom,
4385
- resetViewport: X.resetViewport,
4386
- cancelViewportDrag: X.cancelViewportDrag,
4387
- cancelPendingHover: we.cancelPendingHover,
4388
- 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
4389
4466
  });
4390
- return I = Te.handleBeforeDataReferenceChange, L = Te.handleDataReferenceChange, b({
4467
+ return L = De.handleBeforeDataReferenceChange, R = De.handleDataReferenceChange, b({
4391
4468
  ...E(e),
4392
- ...B,
4393
- ...ie,
4394
- ...Ce,
4395
- ...X,
4469
+ ...V,
4470
+ paginationVisible: Ce,
4471
+ ...oe,
4396
4472
  ...we,
4473
+ ...Te,
4474
+ ...Ee,
4397
4475
  margin: zt,
4398
4476
  getPageSize: Hn,
4399
- currentPage: v,
4400
- selection: N,
4401
- pointerInsideChart: F,
4402
- hoverState: g,
4403
- annotationInteraction: D,
4404
- editorDraft: D.editorDraft,
4405
- contextMenu: D.contextMenu,
4406
- editorSeriesOptions: j,
4407
- clipPathId: S,
4408
- goToPage: Te.goToPage,
4409
- setContainer: (e) => Za(n, e),
4410
- setSvgElement: (e) => Za(r, e),
4411
- setTitleMeasureElement: (e) => Za(i, e),
4412
- setSharedOverlayElement: (e) => Za(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)
4413
4491
  });
4414
4492
  }
4415
4493
  //#endregion
4416
4494
  //#region src/components/annotation/WaveformAnnotationEditor.vue?vue&type=script&setup=true&lang.ts
4417
- var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4495
+ var ao = ["id"], oo = { class: "waveform-annotation-editor__content" }, so = {
4418
4496
  class: "waveform-annotation-editor__coordinates",
4419
4497
  "aria-label": "标注坐标"
4420
- }, no = ["aria-invalid"], ro = {
4498
+ }, co = ["aria-invalid"], lo = {
4421
4499
  class: "waveform-annotation-editor__coordinate-value",
4422
4500
  "aria-hidden": "true"
4423
- }, io = ["id"], ao = {
4501
+ }, uo = ["id"], fo = {
4424
4502
  key: 0,
4425
4503
  class: "waveform-annotation-editor__series",
4426
4504
  "aria-label": "标注所属波形"
4427
- }, oo = { class: "waveform-annotation-editor__series-label" }, so = ["value"], co = ["value"], lo = { key: 1 }, uo = { class: "waveform-annotation-editor__field" }, fo = { class: "waveform-annotation-editor__label-row" }, po = ["maxlength"], mo = { class: "waveform-annotation-editor__colors" }, ho = {
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 = {
4428
4506
  class: "waveform-annotation-editor__color-field",
4429
4507
  title: "调整标注边框色和透明度"
4430
- }, go = {
4508
+ }, So = {
4431
4509
  class: "waveform-annotation-editor__color-field",
4432
4510
  title: "调整标注文字色和透明度"
4433
- }, _o = {
4511
+ }, Co = {
4434
4512
  class: "waveform-annotation-editor__color-field",
4435
4513
  title: "调整标注背景色和透明度"
4436
- }, vo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4514
+ }, wo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4437
4515
  __name: "WaveformAnnotationEditor",
4438
4516
  props: {
4439
4517
  annotation: {},
@@ -4453,7 +4531,7 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4453
4531
  let u = c(async () => typeof window > "u" ? {
4454
4532
  name: "WaveformColorPickerSsrFallback",
4455
4533
  render: () => null
4456
- } : (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(() => {
4457
4535
  let e = d.seriesOptions?.find((e) => e.seriesId === d.annotation.seriesId);
4458
4536
  return e ? {
4459
4537
  id: e.seriesId,
@@ -4491,7 +4569,7 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4491
4569
  let t = e.target;
4492
4570
  t.value && p("series-change", t.value);
4493
4571
  }
4494
- return (t, o) => (y(), n(D(se), {
4572
+ return (t, o) => (y(), n(D(ce), {
4495
4573
  visible: !0,
4496
4574
  width: 440,
4497
4575
  "mask-closable": !0,
@@ -4504,15 +4582,15 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4504
4582
  onCancel: o[4] ||= (e) => p("cancel"),
4505
4583
  onOk: B
4506
4584
  }, {
4507
- title: j(() => [a("span", { id: D(g) }, T(d.mode === "add" ? "添加标注" : "编辑标注"), 9, $a)]),
4508
- default: j(() => [a("div", eo, [
4509
- a("div", to, [
4585
+ title: j(() => [a("span", { id: D(g) }, T(d.mode === "add" ? "添加标注" : "编辑标注"), 9, ao)]),
4586
+ default: j(() => [a("div", oo, [
4587
+ a("div", so, [
4510
4588
  a("label", {
4511
4589
  class: "waveform-annotation-editor__coordinate-input",
4512
4590
  "aria-invalid": !!N.value
4513
4591
  }, [
4514
4592
  o[5] ||= a("b", null, "X", -1),
4515
- s(D(oe), {
4593
+ s(D(se), {
4516
4594
  value: v.value === "" ? void 0 : Number(v.value),
4517
4595
  controls: !0,
4518
4596
  step: .001,
@@ -4529,26 +4607,26 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4529
4607
  "aria-invalid",
4530
4608
  "aria-describedby"
4531
4609
  ]),
4532
- a("code", ro, T(v.value), 1)
4533
- ], 8, no),
4610
+ a("code", lo, T(v.value), 1)
4611
+ ], 8, co),
4534
4612
  N.value ? (y(), i("p", {
4535
4613
  key: 0,
4536
4614
  id: `${D(g)}-time-error`,
4537
4615
  class: "waveform-annotation-editor__coordinate-error",
4538
4616
  role: "alert"
4539
- }, T(N.value), 9, io)) : r("", !0),
4617
+ }, T(N.value), 9, uo)) : r("", !0),
4540
4618
  a("span", null, [o[6] ||= a("b", null, "Y", -1), a("code", null, T(D(At)(d.annotation.y)), 1)])
4541
4619
  ]),
4542
4620
  o[13] ||= a("p", {
4543
4621
  class: "waveform-annotation-editor__coordinate-hint",
4544
4622
  role: "note"
4545
4623
  }, " 修改 X 轴后失焦时会自动吸附最近的采样点 ", -1),
4546
- I.value ? (y(), i("label", ao, [
4624
+ I.value ? (y(), i("label", fo, [
4547
4625
  a("i", {
4548
4626
  style: m({ backgroundColor: I.value.color }),
4549
4627
  "aria-hidden": "true"
4550
4628
  }, null, 4),
4551
- a("span", oo, [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)]),
4552
4630
  d.seriesOptions?.length ? (y(), i("select", {
4553
4631
  key: 0,
4554
4632
  value: d.annotation.seriesId,
@@ -4557,9 +4635,9 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4557
4635
  }, [(y(!0), i(e, null, S(d.seriesOptions, (e) => (y(), i("option", {
4558
4636
  key: e.seriesId,
4559
4637
  value: e.seriesId
4560
- }, T(e.name) + T(e.unit ? ` (${e.unit})` : ""), 9, co))), 128))], 40, so)) : I.value.unit ? (y(), i("code", lo, 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)
4561
4639
  ])) : r("", !0),
4562
- a("label", uo, [a("span", fo, [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", {
4563
4641
  ref_key: "textarea",
4564
4642
  ref: h,
4565
4643
  "onUpdate:modelValue": o[0] ||= (e) => _.value = e,
@@ -4568,10 +4646,10 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4568
4646
  "aria-label": "标注文本",
4569
4647
  placeholder: "输入这处波形的说明",
4570
4648
  onKeydown: V
4571
- }, null, 40, po), [[O, _.value]])]),
4572
- a("fieldset", mo, [
4649
+ }, null, 40, yo), [[O, _.value]])]),
4650
+ a("fieldset", bo, [
4573
4651
  o[12] ||= a("legend", null, "颜色与透明度", -1),
4574
- a("label", ho, [o[9] ||= a("span", null, "边框色", -1), s(D(u), {
4652
+ a("label", xo, [o[9] ||= a("span", null, "边框色", -1), s(D(u), {
4575
4653
  "pure-color": C.value,
4576
4654
  "onUpdate:pureColor": o[1] ||= (e) => C.value = e,
4577
4655
  "aria-label": "标注边框色",
@@ -4581,7 +4659,7 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4581
4659
  "disable-alpha": !1,
4582
4660
  "blur-close": !0
4583
4661
  }, null, 8, ["pure-color"])]),
4584
- a("label", go, [o[10] ||= a("span", null, "文字色", -1), s(D(u), {
4662
+ a("label", So, [o[10] ||= a("span", null, "文字色", -1), s(D(u), {
4585
4663
  "pure-color": w.value,
4586
4664
  "onUpdate:pureColor": o[2] ||= (e) => w.value = e,
4587
4665
  "aria-label": "标注文字色",
@@ -4591,7 +4669,7 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4591
4669
  "disable-alpha": !1,
4592
4670
  "blur-close": !0
4593
4671
  }, null, 8, ["pure-color"])]),
4594
- a("label", _o, [o[11] ||= a("span", null, "背景色", -1), s(D(u), {
4672
+ a("label", Co, [o[11] ||= a("span", null, "背景色", -1), s(D(u), {
4595
4673
  "pure-color": E.value,
4596
4674
  "onUpdate:pureColor": o[3] ||= (e) => E.value = e,
4597
4675
  "aria-label": "标注背景色",
@@ -4606,13 +4684,13 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4606
4684
  _: 1
4607
4685
  }, 8, ["ok-button-props"]));
4608
4686
  }
4609
- }), [["__scopeId", "data-v-01ecd3a4"]]), yo = { class: "waveform-tooltip__series-content" }, bo = { class: "waveform-tooltip__series-label" }, xo = {
4687
+ }), [["__scopeId", "data-v-01ecd3a4"]]), To = { class: "waveform-tooltip__series-content" }, Eo = { class: "waveform-tooltip__series-label" }, Do = {
4610
4688
  key: 0,
4611
4689
  class: "waveform-tooltip__value"
4612
- }, So = {
4690
+ }, Oo = {
4613
4691
  key: 1,
4614
4692
  class: "waveform-tooltip__value waveform-tooltip__value--missing"
4615
- }, Co = 12, wo = 8, To = 560, Eo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4693
+ }, ko = 12, Ao = 8, jo = 560, Mo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4616
4694
  __name: "WaveformTooltip",
4617
4695
  props: {
4618
4696
  visible: { type: Boolean },
@@ -4642,12 +4720,12 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4642
4720
  }, { flush: "post" }), v(u);
4643
4721
  let d = t(() => {
4644
4722
  if (!s.visible || !s.hoveredPoint) return { display: "none" };
4645
- let e = s.position.x + Co, t = s.position.x - Co - l.value.width, n = Math.max(1, Math.min(To, s.containerWidth - wo * 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));
4646
4724
  return {
4647
- ...e + l.value.width <= s.containerWidth - wo ? { left: `${e}px` } : t >= wo ? { right: `${s.containerWidth - s.position.x + Co}px` } : { left: `${wo}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` },
4648
4726
  maxWidth: `${n}px`,
4649
4727
  visibility: l.value.width > 0 ? "visible" : "hidden",
4650
- top: `${Math.max(wo, Math.min(s.position.y - 18, s.containerHeight - l.value.height - wo))}px`
4728
+ top: `${Math.max(Ao, Math.min(s.position.y - 18, s.containerHeight - l.value.height - Ao))}px`
4651
4729
  };
4652
4730
  });
4653
4731
  return (t, s) => n.visible && n.hoveredPoint ? (y(), i("div", {
@@ -4659,9 +4737,9 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4659
4737
  }, [(y(!0), i(e, null, S(n.seriesPoints, (t) => (y(), i("span", {
4660
4738
  key: `${t.trackIndex}-${t.name}`,
4661
4739
  class: "waveform-tooltip__series waveform-chart__tooltip-series"
4662
- }, [a("i", { style: m({ backgroundColor: t.color }) }, null, 4), a("span", yo, [a("span", bo, [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", xo, "(x:" + T(D(Ft)(t.point.x, n.timeUnit)) + " y:" + T(D(kt)(t.point.y)) + ")", 1)) : (y(), i("span", So, "无数据"))])]))), 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);
4663
4741
  }
4664
- }), [["__scopeId", "data-v-0d0d1d3c"]]), Do = /* @__PURE__ */ l({
4742
+ }), [["__scopeId", "data-v-0d0d1d3c"]]), No = /* @__PURE__ */ l({
4665
4743
  __name: "WaveformHoverHost",
4666
4744
  props: {
4667
4745
  state: {},
@@ -4672,7 +4750,7 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4672
4750
  },
4673
4751
  setup(e) {
4674
4752
  let r = e, i = t(() => r.state.points.find((e) => e.point)?.point ?? null);
4675
- return (t, r) => (y(), n(Eo, {
4753
+ return (t, r) => (y(), n(Mo, {
4676
4754
  visible: e.visible && i.value !== null,
4677
4755
  position: e.state.position,
4678
4756
  "time-unit": e.timeUnit,
@@ -4690,16 +4768,16 @@ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4690
4768
  "container-height"
4691
4769
  ]));
4692
4770
  }
4693
- }), Oo = 13, ko = 2, Ao = 14, jo = 8, Mo = 24, No = {
4694
- circle: te,
4695
- square: re,
4696
- triangle: K,
4697
- 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
4698
4776
  };
4699
- function Po(e, t = 48) {
4700
- return e === "none" ? null : ee().type(No[e]).size(t)() ?? null;
4777
+ function Bo(e, t = 48) {
4778
+ return e === "none" ? null : K().type(zo[e]).size(t)() ?? null;
4701
4779
  }
4702
- function Fo(e, t, n = 48) {
4780
+ function Vo(e, t, n = 48) {
4703
4781
  if (e === "none" || t.length === 0) return null;
4704
4782
  if (e === "circle") {
4705
4783
  let e = Math.sqrt(n / Math.PI);
@@ -4716,24 +4794,24 @@ function Fo(e, t, n = 48) {
4716
4794
  let r = Math.sqrt(n / (2 * Math.tan(Math.PI / 6))), i = r * Math.tan(Math.PI / 6);
4717
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("");
4718
4796
  }
4719
- function Io(e) {
4797
+ function Ho(e) {
4720
4798
  return e === "none" ? null : "M1 8H25";
4721
4799
  }
4722
- function Lo(e) {
4800
+ function Uo(e) {
4723
4801
  if (e === "dashed") return "8 5";
4724
4802
  if (e === "dash-dot") return "8 5 1.5 5";
4725
4803
  }
4726
- function Ro(e) {
4727
- let t = (Number.isFinite(e) && e > 0 ? Math.min(e, Mo) : jo) / 2, n = Oo - t, r = Oo + 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;
4728
4806
  return [
4729
- `M${n} ${ko}H${r}`,
4730
- `M${Oo} ${ko}V${Ao}`,
4731
- `M${n} ${Ao}H${r}`
4807
+ `M${n} ${Fo}H${r}`,
4808
+ `M${Po} ${Fo}V${Io}`,
4809
+ `M${n} ${Io}H${r}`
4732
4810
  ].join("");
4733
4811
  }
4734
4812
  //#endregion
4735
4813
  //#region src/components/rendering/WaveformSeriesLayer.vue?vue&type=script&setup=true&lang.ts
4736
- var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4814
+ var Go = ["clip-path"], Ko = ["data-series-id", "data-series-name"], qo = [
4737
4815
  "data-series-id",
4738
4816
  "data-series-name",
4739
4817
  "data-y-axis-index",
@@ -4742,11 +4820,11 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4742
4820
  "d",
4743
4821
  "stroke",
4744
4822
  "stroke-dasharray"
4745
- ], Ho = ["data-series-id"], Uo = [
4823
+ ], Jo = ["data-series-id"], Yo = [
4746
4824
  "d",
4747
4825
  "stroke",
4748
4826
  "stroke-width"
4749
- ], Wo = ["data-series-id", "data-point-type"], Go = ["d", "fill"], Ko = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4827
+ ], Xo = ["data-series-id", "data-point-type"], Zo = ["d", "fill"], Qo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4750
4828
  __name: "WaveformSeriesLayer",
4751
4829
  props: {
4752
4830
  track: {},
@@ -4754,7 +4832,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4754
4832
  },
4755
4833
  setup(n) {
4756
4834
  let a = n, o = t(() => a.track.seriesPaths.map((e) => {
4757
- let t = Fo(e.series.pointType, e.pointRenderPoints.map((t) => ({
4835
+ let t = Vo(e.series.pointType, e.pointRenderPoints.map((t) => ({
4758
4836
  x: a.track.xScale(t.x),
4759
4837
  y: e.yScale(t.y)
4760
4838
  }))), n = e.series.errorBar.capWidth / 2, r = e.errorBarRenderPoints.map((t) => {
@@ -4791,8 +4869,8 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4791
4869
  "data-line-style": e.series.lineStyle,
4792
4870
  d: e.path,
4793
4871
  stroke: e.series.color,
4794
- "stroke-dasharray": D(Lo)(e.series.lineStyle)
4795
- }, null, 8, Vo)) : r("", !0),
4872
+ "stroke-dasharray": D(Uo)(e.series.lineStyle)
4873
+ }, null, 8, qo)) : r("", !0),
4796
4874
  e.series.errorBar.visible ? (y(), i("g", {
4797
4875
  key: 1,
4798
4876
  class: "waveform-track__error-bars waveform-chart__error-bars",
@@ -4803,7 +4881,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4803
4881
  d: e.errorBarPath,
4804
4882
  stroke: e.series.errorBar.color || e.series.color,
4805
4883
  "stroke-width": e.series.errorBar.width
4806
- }, null, 8, Uo)) : r("", !0)], 8, Ho)) : r("", !0),
4884
+ }, null, 8, Yo)) : r("", !0)], 8, Jo)) : r("", !0),
4807
4885
  e.series.pointType === "none" ? r("", !0) : (y(), i("g", {
4808
4886
  key: 2,
4809
4887
  class: "waveform-track__points waveform-chart__points",
@@ -4814,10 +4892,10 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4814
4892
  class: "waveform-track__point waveform-chart__point",
4815
4893
  d: e.pointPath,
4816
4894
  fill: e.series.color
4817
- }, null, 8, Go)) : r("", !0)], 8, Wo))
4818
- ], 8, Bo))), 128))], 8, zo)) : r("", !0);
4895
+ }, null, 8, Zo)) : r("", !0)], 8, Xo))
4896
+ ], 8, Ko))), 128))], 8, Go)) : r("", !0);
4819
4897
  }
4820
- }), [["__scopeId", "data-v-628502df"]]), qo = ["clip-path"], Jo = [
4898
+ }), [["__scopeId", "data-v-628502df"]]), $o = ["clip-path"], es = [
4821
4899
  "data-y-axis-index",
4822
4900
  "x2",
4823
4901
  "y1",
@@ -4826,7 +4904,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4826
4904
  "stroke-opacity",
4827
4905
  "stroke-width",
4828
4906
  "stroke-dasharray"
4829
- ], Yo = /* @__PURE__ */ l({
4907
+ ], ts = /* @__PURE__ */ l({
4830
4908
  __name: "WaveformZeroLines",
4831
4909
  props: {
4832
4910
  track: {},
@@ -4859,27 +4937,27 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4859
4937
  "stroke-opacity": t.zeroLine.opacity,
4860
4938
  "stroke-width": t.zeroLine.width,
4861
4939
  "stroke-dasharray": t.zeroLine.dash || void 0
4862
- }, null, 8, Jo))], 64))), 128))], 8, qo)) : r("", !0);
4940
+ }, null, 8, es))], 64))), 128))], 8, $o)) : r("", !0);
4863
4941
  }
4864
- }), Xo = ["transform"], Zo = ["transform"], Qo = {
4942
+ }), ns = ["transform"], rs = ["transform"], is = {
4865
4943
  class: "waveform-track__axis-endpoint waveform-track__axis-endpoint--start waveform-chart__axis-endpoint waveform-chart__axis-endpoint--start",
4866
4944
  x: "0",
4867
4945
  y: "7",
4868
4946
  dy: "0.71em",
4869
4947
  "text-anchor": "start"
4870
- }, $o = ["x"], es = [
4948
+ }, as = ["x"], os = [
4871
4949
  "data-y-axis-index",
4872
4950
  "data-y-axis-side",
4873
4951
  "transform"
4874
- ], ts = { key: 2 }, ns = [
4952
+ ], ss = { key: 2 }, cs = [
4875
4953
  "x",
4876
4954
  "y",
4877
4955
  "width"
4878
- ], rs = ["fill", "transform"], is = ["data-y-axis-title-index"], as = [
4956
+ ], ls = ["fill", "transform"], us = ["data-y-axis-title-index"], ds = [
4879
4957
  "x",
4880
4958
  "y",
4881
4959
  "width"
4882
- ], os = ["fill", "transform"], ss = /* @__PURE__ */ l({
4960
+ ], fs = ["fill", "transform"], ps = /* @__PURE__ */ l({
4883
4961
  __name: "WaveformTrackAxes",
4884
4962
  props: {
4885
4963
  track: {},
@@ -4887,7 +4965,12 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4887
4965
  cleanView: { type: Boolean },
4888
4966
  axes: {},
4889
4967
  timeUnit: {},
4890
- yLabel: {}
4968
+ yLabel: {},
4969
+ showUnits: {
4970
+ type: Boolean,
4971
+ default: !0
4972
+ },
4973
+ containYAxisEndpoints: { type: Boolean }
4891
4974
  },
4892
4975
  setup(t) {
4893
4976
  let n = t, o = x(), s = x([]);
@@ -4908,10 +4991,10 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4908
4991
  if (n.track.yAxes.forEach((e, t) => {
4909
4992
  let r = s.value[t];
4910
4993
  if (!r) return;
4911
- let i = e.seriesList[0]?.unit, 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);
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);
4912
4995
  o.call(a);
4913
- let c = Math.min(...e.tickValues);
4914
- 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);
4915
4998
  }), !o.value) return;
4916
4999
  let e = G(o.value);
4917
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);
@@ -4924,6 +5007,8 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4924
5007
  () => n.track.xAxisTickValues,
4925
5008
  () => n.track.yAxisTickValues,
4926
5009
  () => n.timeUnit,
5010
+ () => n.showUnits,
5011
+ () => n.containYAxisEndpoints,
4927
5012
  () => n.axes?.x?.labelFormatter,
4928
5013
  () => n.axes?.x?.lineVisible,
4929
5014
  () => n.axes?.y?.lineVisible
@@ -4936,7 +5021,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4936
5021
  ref: o,
4937
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 }]),
4938
5023
  transform: `translate(0, ${t.track.height})`
4939
- }, null, 10, Xo)) : r("", !0),
5024
+ }, null, 10, ns)) : r("", !0),
4940
5025
  t.track.showXAxis ? (y(), i("g", {
4941
5026
  key: 1,
4942
5027
  class: "waveform-track__axis-endpoints waveform-chart__axis-endpoints",
@@ -4944,13 +5029,13 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4944
5029
  "font-family": "sans-serif",
4945
5030
  "font-size": "10",
4946
5031
  "aria-hidden": "true"
4947
- }, [a("text", Qo, T(t.track.endpointLabels.start), 1), a("text", {
5032
+ }, [a("text", is, T(t.track.endpointLabels.start), 1), a("text", {
4948
5033
  class: "waveform-track__axis-endpoint waveform-track__axis-endpoint--end waveform-chart__axis-endpoint waveform-chart__axis-endpoint--end",
4949
5034
  x: t.track.width ?? t.innerWidth,
4950
5035
  y: "7",
4951
5036
  dy: "0.71em",
4952
5037
  "text-anchor": "end"
4953
- }, T(t.track.endpointLabels.end), 9, $o)], 8, Zo)) : r("", !0),
5038
+ }, T(t.track.endpointLabels.end), 9, as)], 8, rs)) : r("", !0),
4954
5039
  (y(!0), i(e, null, S(t.track.isEmpty ? [] : t.track.yAxes, (e) => (y(), i("g", {
4955
5040
  key: `y-axis-${t.track.index}-${e.index}`,
4956
5041
  ref_for: !0,
@@ -4959,21 +5044,21 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4959
5044
  "data-y-axis-index": e.index,
4960
5045
  "data-y-axis-side": e.side,
4961
5046
  transform: `translate(${e.x}, 0)`
4962
- }, null, 10, es))), 128)),
4963
- !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", ts, [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", {
4964
5049
  class: "waveform-track__y-axis-label-bg waveform-chart__y-axis-label-bg",
4965
5050
  x: t.track.yAxes[0].labelX - D(20) / 2,
4966
5051
  y: t.track.height / 2 - 40,
4967
5052
  width: D(20),
4968
5053
  height: "80",
4969
5054
  rx: "2"
4970
- }, null, 8, ns), a("text", {
5055
+ }, null, 8, cs), a("text", {
4971
5056
  class: "waveform-track__y-axis-label waveform-chart__y-axis-label",
4972
5057
  fill: t.track.series?.color,
4973
5058
  transform: `translate(${t.track.yAxes[0].labelX}, ${t.track.height / 2}) rotate(-90)`,
4974
5059
  "text-anchor": "middle",
4975
5060
  "dominant-baseline": "central"
4976
- }, T(t.track.series ? c(t.track.series) : ""), 9, rs)])) : r("", !0),
5061
+ }, T(t.track.series ? c(t.track.series) : ""), 9, ls)])) : r("", !0),
4977
5062
  (y(!0), i(e, null, S(!t.cleanView && t.track.yAxes.length > 1 ? t.track.yAxes.filter(l) : [], (e) => (y(), i("g", {
4978
5063
  key: `y-axis-title-${t.track.index}-${e.index}`,
4979
5064
  class: "waveform-track__multi-axis-title",
@@ -4985,40 +5070,40 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4985
5070
  width: D(20),
4986
5071
  height: "80",
4987
5072
  rx: "2"
4988
- }, null, 8, as), a("text", {
5073
+ }, null, 8, ds), a("text", {
4989
5074
  class: "waveform-track__y-axis-label waveform-chart__y-axis-label",
4990
5075
  fill: e.seriesList[0].color,
4991
5076
  transform: `translate(${e.labelX}, ${t.track.height / 2}) rotate(-90)`,
4992
5077
  "text-anchor": "middle",
4993
5078
  "dominant-baseline": "central"
4994
- }, T(c(e.seriesList[0])), 9, os)], 8, is))), 128))
5079
+ }, T(c(e.seriesList[0])), 9, fs)], 8, us))), 128))
4995
5080
  ], 64));
4996
5081
  }
4997
- }), cs = [
5082
+ }), ms = [
4998
5083
  "width",
4999
5084
  "height",
5000
5085
  "fill"
5001
- ], ls = ["clip-path"], us = { class: "waveform-track__grid waveform-track__grid--minor waveform-chart__grid waveform-chart__grid--minor" }, ds = [
5086
+ ], hs = ["clip-path"], gs = { class: "waveform-track__grid waveform-track__grid--minor waveform-chart__grid waveform-chart__grid--minor" }, _s = [
5002
5087
  "stroke",
5003
5088
  "x1",
5004
5089
  "x2",
5005
5090
  "y2"
5006
- ], fs = [
5091
+ ], vs = [
5007
5092
  "stroke",
5008
5093
  "x2",
5009
5094
  "y1",
5010
5095
  "y2"
5011
- ], ps = { class: "waveform-track__grid waveform-track__grid--major waveform-chart__grid waveform-chart__grid--major" }, ms = [
5096
+ ], ys = { class: "waveform-track__grid waveform-track__grid--major waveform-chart__grid waveform-chart__grid--major" }, bs = [
5012
5097
  "stroke",
5013
5098
  "x1",
5014
5099
  "x2",
5015
5100
  "y2"
5016
- ], hs = [
5101
+ ], xs = [
5017
5102
  "stroke",
5018
5103
  "x2",
5019
5104
  "y1",
5020
5105
  "y2"
5021
- ], gs = ["x", "y"], _s = /* @__PURE__ */ l({
5106
+ ], Ss = ["x", "y"], Cs = /* @__PURE__ */ l({
5022
5107
  __name: "WaveformTrackBackdrop",
5023
5108
  props: {
5024
5109
  track: {},
@@ -5037,12 +5122,12 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5037
5122
  height: t.track.height,
5038
5123
  fill: t.frameStyle.backgroundColor,
5039
5124
  "aria-hidden": "true"
5040
- }, null, 8, cs)) : r("", !0),
5125
+ }, null, 8, ms)) : r("", !0),
5041
5126
  !t.track.isEmpty && t.track.hasVisibleSeries && !t.cleanView ? (y(), i("g", {
5042
5127
  key: 1,
5043
5128
  "clip-path": `url(#${t.clipPathId}-${t.track.index})`,
5044
5129
  "aria-hidden": "true"
5045
- }, [a("g", us, [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", {
5046
5131
  key: `x-minor-${t.track.index}-${e}`,
5047
5132
  "data-grid-direction": "vertical",
5048
5133
  stroke: t.track.gridLines.verticalColor,
@@ -5050,7 +5135,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5050
5135
  x2: t.track.xScale(e),
5051
5136
  y1: "0",
5052
5137
  y2: t.track.height
5053
- }, null, 8, ds))), 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", {
5054
5139
  key: `y-minor-${t.track.index}-${e}`,
5055
5140
  "data-grid-direction": "horizontal",
5056
5141
  stroke: t.track.gridLines.horizontalColor,
@@ -5058,7 +5143,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5058
5143
  x2: t.track.width ?? t.innerWidth,
5059
5144
  y1: t.track.yScale(e),
5060
5145
  y2: t.track.yScale(e)
5061
- }, null, 8, fs))), 128)) : r("", !0)]), a("g", ps, [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", {
5062
5147
  key: `x-major-${t.track.index}-${e}`,
5063
5148
  "data-grid-direction": "vertical",
5064
5149
  stroke: t.track.gridLines.verticalColor,
@@ -5066,7 +5151,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5066
5151
  x2: t.track.xScale(e),
5067
5152
  y1: "0",
5068
5153
  y2: t.track.height
5069
- }, null, 8, ms))), 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", {
5070
5155
  key: `y-major-${t.track.index}-${e}`,
5071
5156
  "data-grid-direction": "horizontal",
5072
5157
  stroke: t.track.gridLines.horizontalColor,
@@ -5074,7 +5159,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5074
5159
  x2: t.track.width ?? t.innerWidth,
5075
5160
  y1: t.track.yScale(e),
5076
5161
  y2: t.track.yScale(e)
5077
- }, null, 8, hs))), 128)) : r("", !0)])], 8, ls)) : r("", !0),
5162
+ }, null, 8, xs))), 128)) : r("", !0)])], 8, hs)) : r("", !0),
5078
5163
  !t.track.isEmpty && t.track.hasVisibleSeries && t.frameNumber !== void 0 && !t.cleanView ? (y(), i("text", {
5079
5164
  key: 2,
5080
5165
  class: "waveform-track__watermark waveform-chart__watermark",
@@ -5084,10 +5169,10 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5084
5169
  "text-anchor": "middle",
5085
5170
  "dominant-baseline": "central",
5086
5171
  "aria-hidden": "true"
5087
- }, T(t.frameNumber), 13, gs)) : r("", !0)
5172
+ }, T(t.frameNumber), 13, Ss)) : r("", !0)
5088
5173
  ], 64));
5089
5174
  }
5090
- }), vs = [
5175
+ }), ws = [
5091
5176
  "data-track-index",
5092
5177
  "data-track-id",
5093
5178
  "data-track-empty",
@@ -5097,19 +5182,21 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5097
5182
  "data-track-top",
5098
5183
  "data-track-height",
5099
5184
  "transform"
5100
- ], ys = [
5185
+ ], Ts = [
5186
+ "x",
5187
+ "y",
5101
5188
  "width",
5102
5189
  "height",
5103
5190
  "stroke",
5104
5191
  "stroke-width",
5105
5192
  "stroke-dasharray",
5106
5193
  "stroke-linecap"
5107
- ], bs = [
5194
+ ], Es = [
5108
5195
  "data-interactive",
5109
5196
  "data-independent-overlay-index",
5110
5197
  "width",
5111
5198
  "height"
5112
- ], xs = ["x", "y"], Ss = /* @__PURE__ */ l({
5199
+ ], Ds = ["x", "y"], Os = /* @__PURE__ */ l({
5113
5200
  __name: "WaveformTrack",
5114
5201
  props: {
5115
5202
  track: {},
@@ -5127,6 +5214,12 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5127
5214
  axes: {},
5128
5215
  timeUnit: {},
5129
5216
  yLabel: {},
5217
+ showAxisUnits: {
5218
+ type: Boolean,
5219
+ default: !0
5220
+ },
5221
+ containYAxisEndpoints: { type: Boolean },
5222
+ containFrameStroke: { type: Boolean },
5130
5223
  cleanView: {
5131
5224
  type: Boolean,
5132
5225
  default: !1
@@ -5158,7 +5251,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5158
5251
  borderStyle: a.frameStyle?.borderStyle === "dashed" || a.frameStyle?.borderStyle === "dotted" ? a.frameStyle.borderStyle : "solid",
5159
5252
  backgroundColor: a.frameStyle?.backgroundColor || "transparent"
5160
5253
  };
5161
- });
5254
+ }), l = t(() => a.containFrameStroke ? c.value.borderWidth / 2 : 0);
5162
5255
  return (t, n) => (y(), i("g", {
5163
5256
  class: p(["waveform-track waveform-chart__track", { "waveform-track--empty waveform-chart__track--empty": e.track.isEmpty }]),
5164
5257
  "data-track-index": e.track.index,
@@ -5171,7 +5264,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5171
5264
  "data-track-height": e.track.height,
5172
5265
  transform: `translate(${e.track.left ?? 0}, ${e.track.top})`
5173
5266
  }, [
5174
- s(_s, {
5267
+ s(Cs, {
5175
5268
  track: e.track,
5176
5269
  "clip-path-id": e.clipPathId,
5177
5270
  "inner-width": e.innerWidth,
@@ -5186,38 +5279,44 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5186
5279
  "frame-number",
5187
5280
  "frame-style"
5188
5281
  ]),
5189
- s(ss, {
5282
+ s(ps, {
5190
5283
  track: e.track,
5191
5284
  "inner-width": e.innerWidth,
5192
5285
  "clean-view": e.cleanView,
5193
5286
  axes: e.axes,
5194
5287
  "time-unit": e.timeUnit,
5195
- "y-label": e.yLabel
5288
+ "y-label": e.yLabel,
5289
+ "show-units": e.showAxisUnits,
5290
+ "contain-y-axis-endpoints": e.containYAxisEndpoints
5196
5291
  }, null, 8, [
5197
5292
  "track",
5198
5293
  "inner-width",
5199
5294
  "clean-view",
5200
5295
  "axes",
5201
5296
  "time-unit",
5202
- "y-label"
5297
+ "y-label",
5298
+ "show-units",
5299
+ "contain-y-axis-endpoints"
5203
5300
  ]),
5204
5301
  e.track.isEmpty ? r("", !0) : (y(), i("rect", {
5205
5302
  key: 0,
5206
5303
  class: "waveform-track__plot-frame waveform-chart__plot-frame",
5207
- width: e.track.width ?? e.innerWidth,
5208
- 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),
5209
5308
  fill: "none",
5210
5309
  stroke: c.value.borderColor,
5211
5310
  "stroke-width": c.value.borderWidth,
5212
5311
  "stroke-dasharray": c.value.borderStyle === "dashed" ? "6 4" : c.value.borderStyle === "dotted" ? "1 3" : void 0,
5213
5312
  "stroke-linecap": c.value.borderStyle === "dotted" ? "round" : void 0,
5214
5313
  "aria-hidden": "true"
5215
- }, null, 8, ys)),
5216
- s(Ko, {
5314
+ }, null, 8, Ts)),
5315
+ s(Qo, {
5217
5316
  track: e.track,
5218
5317
  "clip-path-id": e.clipPathId
5219
5318
  }, null, 8, ["track", "clip-path-id"]),
5220
- s(Yo, {
5319
+ s(ts, {
5221
5320
  track: e.track,
5222
5321
  "clip-path-id": e.clipPathId,
5223
5322
  "inner-width": e.innerWidth,
@@ -5248,7 +5347,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5248
5347
  onPointerleave: n[4] ||= (e) => o("pointer-leave"),
5249
5348
  onClick: n[5] ||= (e) => o("click", e),
5250
5349
  onContextmenu: n[6] ||= (e) => o("contextmenu", e)
5251
- }, null, 42, bs)) : r("", !0),
5350
+ }, null, 42, Es)) : r("", !0),
5252
5351
  !e.track.isEmpty && !e.track.hasVisibleSeries && !e.cleanView ? (y(), i("text", {
5253
5352
  key: 2,
5254
5353
  class: "waveform-track__no-visible-series",
@@ -5256,33 +5355,33 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5256
5355
  y: e.track.height / 2,
5257
5356
  "text-anchor": "middle",
5258
5357
  "dominant-baseline": "central"
5259
- }, " 暂无可见曲线 ", 8, xs)) : r("", !0)
5260
- ], 10, vs));
5358
+ }, " 暂无可见曲线 ", 8, Ds)) : r("", !0)
5359
+ ], 10, ws));
5261
5360
  }
5262
- }), Cs = [
5361
+ }), ks = [
5263
5362
  "width",
5264
5363
  "height",
5265
5364
  "data-position",
5266
5365
  "data-orientation"
5267
- ], ws = [
5366
+ ], As = [
5268
5367
  "disabled",
5269
5368
  "aria-pressed",
5270
5369
  "aria-label",
5271
5370
  "onClick"
5272
- ], Ts = [
5371
+ ], js = [
5273
5372
  "data-line-type",
5274
5373
  "data-line-style",
5275
5374
  "data-point-type",
5276
5375
  "data-error-bar-visible"
5277
- ], Es = [
5376
+ ], Ms = [
5278
5377
  "d",
5279
5378
  "stroke",
5280
5379
  "stroke-dasharray"
5281
- ], Ds = [
5380
+ ], Ns = [
5282
5381
  "d",
5283
5382
  "stroke",
5284
5383
  "stroke-width"
5285
- ], Os = ["d", "fill"], ks = ["title"], As = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5384
+ ], Ps = ["d", "fill"], Fs = ["title"], Is = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5286
5385
  __name: "WaveformLegend",
5287
5386
  props: {
5288
5387
  series: {},
@@ -5295,15 +5394,23 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5295
5394
  type: Boolean,
5296
5395
  default: !1
5297
5396
  },
5397
+ showUnits: {
5398
+ type: Boolean,
5399
+ default: !1
5400
+ },
5298
5401
  hiddenSeriesIds: { default: () => [] }
5299
5402
  },
5300
5403
  emits: ["toggle"],
5301
5404
  setup(n, { emit: o }) {
5302
5405
  let s = n, c = o, l = t(() => new Set(s.hiddenSeriesIds));
5303
5406
  function u(e) {
5304
- return l.value.has(e);
5407
+ let t = e.unit?.trim();
5408
+ return s.showUnits && t && t !== "--" ? `${e.name} (${t})` : e.name;
5305
5409
  }
5306
5410
  function d(e) {
5411
+ return l.value.has(e);
5412
+ }
5413
+ function f(e) {
5307
5414
  s.interactive && c("toggle", e);
5308
5415
  }
5309
5416
  return (t, o) => (y(), i("foreignObject", {
@@ -5324,13 +5431,13 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5324
5431
  role: "list"
5325
5432
  }, [(y(!0), i(e, null, S(n.series, (e) => (y(), i("button", {
5326
5433
  key: e.id,
5327
- 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) }]),
5328
5435
  type: "button",
5329
5436
  role: "listitem",
5330
5437
  disabled: !n.interactive,
5331
- "aria-pressed": n.interactive ? !u(e.id) : void 0,
5332
- "aria-label": n.interactive ? `${u(e.id) ? "显示" : "隐藏"}曲线 ${e.name}` : void 0,
5333
- 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"])
5334
5441
  }, [(y(), i("svg", {
5335
5442
  class: "waveform-legend__swatch",
5336
5443
  viewBox: "0 0 26 16",
@@ -5340,45 +5447,45 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5340
5447
  "data-point-type": e.pointType,
5341
5448
  "data-error-bar-visible": e.errorBar.visible || void 0
5342
5449
  }, [
5343
- D(Io)(e.lineType) ? (y(), i("path", {
5450
+ D(Ho)(e.lineType) ? (y(), i("path", {
5344
5451
  key: 0,
5345
5452
  class: "waveform-legend__line",
5346
- d: D(Io)(e.lineType) ?? void 0,
5453
+ d: D(Ho)(e.lineType) ?? void 0,
5347
5454
  stroke: e.color,
5348
- "stroke-dasharray": D(Lo)(e.lineStyle),
5455
+ "stroke-dasharray": D(Uo)(e.lineStyle),
5349
5456
  "stroke-width": "1",
5350
5457
  fill: "none"
5351
- }, null, 8, Es)) : r("", !0),
5458
+ }, null, 8, Ms)) : r("", !0),
5352
5459
  e.errorBar.visible ? (y(), i("path", {
5353
5460
  key: 1,
5354
5461
  class: "waveform-legend__error-bar",
5355
- d: D(Ro)(e.errorBar.capWidth),
5462
+ d: D(Wo)(e.errorBar.capWidth),
5356
5463
  stroke: e.errorBar.color || e.color,
5357
5464
  "stroke-width": e.errorBar.width,
5358
5465
  "stroke-linecap": "butt",
5359
5466
  fill: "none"
5360
- }, null, 8, Ds)) : r("", !0),
5467
+ }, null, 8, Ns)) : r("", !0),
5361
5468
  e.pointType === "none" ? r("", !0) : (y(), i("path", {
5362
5469
  key: 2,
5363
5470
  class: "waveform-legend__point",
5364
- d: D(Po)(e.pointType, 30) ?? void 0,
5471
+ d: D(Bo)(e.pointType, 30) ?? void 0,
5365
5472
  fill: e.color,
5366
5473
  transform: "translate(13 8)"
5367
- }, null, 8, Os))
5368
- ], 8, Ts)), a("span", {
5474
+ }, null, 8, Ps))
5475
+ ], 8, js)), a("span", {
5369
5476
  class: "waveform-legend__label",
5370
- title: e.name
5371
- }, T(e.name), 9, ks)], 10, ws))), 128))], 6)], 2)], 8, Cs));
5477
+ title: u(e)
5478
+ }, T(u(e)), 9, Fs)], 10, As))), 128))], 6)], 2)], 8, ks));
5372
5479
  }
5373
- }), [["__scopeId", "data-v-3af7ebae"]]), js = {
5480
+ }), [["__scopeId", "data-v-d5958f86"]]), Ls = {
5374
5481
  class: "waveform-chart__hover-layer",
5375
5482
  "pointer-events": "none",
5376
5483
  "aria-hidden": "true"
5377
- }, Ms = ["clip-path", "transform"], Ns = [
5484
+ }, Rs = ["clip-path", "transform"], zs = [
5378
5485
  "x1",
5379
5486
  "x2",
5380
5487
  "y2"
5381
- ], Ps = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5488
+ ], Bs = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5382
5489
  __name: "WaveformHoverLayer",
5383
5490
  props: {
5384
5491
  state: {},
@@ -5394,7 +5501,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5394
5501
  x: e.xScale(n)
5395
5502
  }] : [];
5396
5503
  }));
5397
- return (t, r) => (y(), i("g", js, [(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", {
5398
5505
  key: e.track.index,
5399
5506
  class: "waveform-track__crosshair waveform-chart__crosshair",
5400
5507
  "clip-path": `url(#${n.clipPathId}-${e.track.index})`,
@@ -5404,9 +5511,9 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5404
5511
  x2: e.x,
5405
5512
  y1: "0",
5406
5513
  y2: e.track.height
5407
- }, null, 8, Ns)], 8, Ms))), 128))]));
5514
+ }, null, 8, zs)], 8, Rs))), 128))]));
5408
5515
  }
5409
- }), [["__scopeId", "data-v-54a5a37d"]]), Fs = [
5516
+ }), [["__scopeId", "data-v-54a5a37d"]]), Vs = [
5410
5517
  "data-display-mode",
5411
5518
  "data-interaction-mode",
5412
5519
  "data-presentation-mode",
@@ -5415,103 +5522,104 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5415
5522
  "data-plot-margin-top",
5416
5523
  "data-plot-margin-bottom",
5417
5524
  "data-title-area-height"
5418
- ], Is = [
5525
+ ], Hs = [
5419
5526
  "role",
5420
5527
  "aria-level",
5421
5528
  "aria-hidden"
5422
- ], Ls = ["data-title-scale", "data-title-wrapped"], Rs = [
5529
+ ], Us = ["data-title-scale", "data-title-wrapped"], Ws = [
5423
5530
  "width",
5424
5531
  "height",
5425
5532
  "aria-label"
5426
- ], zs = ["id"], Bs = ["width", "height"], Vs = ["transform"], Hs = {
5533
+ ], Gs = ["id"], Ks = ["width", "height"], qs = ["transform"], Js = {
5427
5534
  key: 0,
5428
5535
  class: "waveform-chart__grid-slots",
5429
5536
  "aria-hidden": "true"
5430
- }, Us = ["transform"], Ws = ["width", "height"], Gs = ["width", "height"], Ks = [
5537
+ }, Ys = ["transform"], Xs = ["width", "height"], Zs = ["width", "height"], Qs = [
5431
5538
  "x",
5432
5539
  "y",
5433
5540
  "width",
5434
5541
  "height"
5435
- ], qs = {
5542
+ ], $s = {
5436
5543
  key: 4,
5437
5544
  class: "waveform-chart__legend-layer"
5438
- }, Js = [
5545
+ }, ec = [
5439
5546
  "data-legend-track-index",
5440
5547
  "data-legend-track-id",
5441
5548
  "transform"
5442
- ], Ys = ["x", "y"], Xs = ["x", "y"], Zs = /* @__PURE__ */ l({
5549
+ ], tc = ["x", "y"], nc = ["x", "y"], rc = /* @__PURE__ */ l({
5443
5550
  __name: "WaveformChartView",
5444
5551
  props: { controller: {} },
5445
5552
  setup(t) {
5446
- 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);
5447
- function $e() {
5448
- 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();
5449
5556
  }
5450
5557
  return (t, E) => (y(), i("div", {
5451
- ref: D(Ye),
5558
+ ref: D(Qe),
5452
5559
  class: p(["waveform-chart", [
5453
5560
  `waveform-chart--${D(o)}`,
5454
5561
  `waveform-chart--interaction-${D(c)}`,
5455
5562
  {
5456
5563
  "waveform-chart--clean": D(l),
5457
- "waveform-chart--presentation": D(u),
5458
- "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"
5459
5567
  }
5460
5568
  ]]),
5461
- style: m(D(f)),
5569
+ style: m(D(g)),
5462
5570
  "data-display-mode": D(o),
5463
5571
  "data-interaction-mode": D(c),
5464
- "data-presentation-mode": D(u),
5465
- "data-overlay-mode": D(h),
5466
- "data-chart-left-margin": D(g),
5467
- "data-plot-margin-top": D(v).top,
5468
- "data-plot-margin-bottom": D(v).bottom,
5469
- "data-title-area-height": D(_),
5470
- onPointerenter: E[8] ||= (e) => b.value = !0,
5471
- onPointerleave: $e,
5472
- 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)
5473
5581
  }, [
5474
- D(C) ? (y(), i("div", {
5582
+ D(A) ? (y(), i("div", {
5475
5583
  key: 0,
5476
5584
  class: "waveform-chart__title-area",
5477
- style: m(D(w)),
5478
- role: D(O) ? "heading" : void 0,
5479
- "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,
5480
5588
  "aria-hidden": D(l) || void 0
5481
5589
  }, [a("span", {
5482
- ref: D(Ze),
5590
+ ref: D(et),
5483
5591
  class: "waveform-chart__title-measure",
5484
- style: m(D(k)),
5592
+ style: m(D(N)),
5485
5593
  "aria-hidden": "true"
5486
- }, T(D(A)), 5), D(O) ? (y(), i("span", {
5594
+ }, T(D(P)), 5), D(M) ? (y(), i("span", {
5487
5595
  key: 0,
5488
5596
  class: "waveform-chart__title-visual",
5489
- style: m(D(j))
5597
+ style: m(D(F))
5490
5598
  }, [a("span", {
5491
5599
  class: "waveform-chart__title-text",
5492
- style: m(D(M)),
5493
- "data-title-scale": D(N).scale,
5494
- "data-title-wrapped": D(N).wrapped || void 0
5495
- }, T(D(A)), 13, Ls)], 4)) : r("", !0)], 12, Is)) : 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),
5496
5604
  (y(), i("svg", {
5497
- ref: D(Xe),
5605
+ ref: D($e),
5498
5606
  class: "waveform-chart__svg",
5499
- width: D(P),
5500
- height: D(F),
5607
+ width: D(R),
5608
+ height: D(z),
5501
5609
  role: "img",
5502
- "aria-label": D(I) ? "波形折线图" : "暂无波形数据",
5503
- onDblclick: E[7] ||= (...e) => D(L) && D(L)(...e)
5610
+ "aria-label": D(B) ? "波形折线图" : "暂无波形数据",
5611
+ onDblclick: E[7] ||= (...e) => D(V) && D(V)(...e)
5504
5612
  }, [
5505
- a("defs", null, [(y(!0), i(e, null, S(D(R), (e) => (y(), i("clipPath", {
5506
- id: `${D(z)}-${e.index}`,
5507
- 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}`,
5508
5616
  clipPathUnits: "userSpaceOnUse"
5509
5617
  }, [a("rect", {
5510
5618
  width: e.width,
5511
5619
  height: e.height
5512
- }, null, 8, Bs)], 8, zs))), 128))]),
5513
- a("g", { transform: `translate(${D(g)}, ${D(B)})` }, [
5514
- D(o) !== "compact" && !D(l) ? (y(), i("g", Hs, [(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", {
5515
5623
  key: `grid-slot-${e.slotIndex}`,
5516
5624
  transform: `translate(${e.left}, ${e.top})`
5517
5625
  }, [e.series ? r("", !0) : (y(), i("rect", {
@@ -5519,47 +5627,50 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5519
5627
  class: "waveform-chart__grid-slot-placeholder",
5520
5628
  width: e.width,
5521
5629
  height: e.cellHeight
5522
- }, null, 8, Ws))], 8, Us))), 128))])) : r("", !0),
5523
- 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", {
5524
5632
  key: 1,
5525
- ref: D(Qe),
5633
+ ref: D(tt),
5526
5634
  class: p(["waveform-chart__overlay waveform-chart__overlay--shared", {
5527
- "is-zoomable": !D(u) && D(U) && D(W),
5528
- "is-annotating": !D(u) && D(c) === "annotation"
5635
+ "is-zoomable": !D(f) && D(ee) && D(te),
5636
+ "is-annotating": !D(f) && D(c) === "annotation"
5529
5637
  }]),
5530
- width: D(G),
5531
- height: D(ee),
5532
- onPointermove: E[0] ||= (...e) => D(te) && D(te)(...e),
5533
- onPointerdown: E[1] ||= (...e) => D(ne) && D(ne)(...e),
5534
- onPointerup: E[2] ||= (...e) => D(re) && D(re)(...e),
5535
- onPointercancel: E[3] ||= (...e) => D(K) && D(K)(...e),
5536
- onPointerleave: E[4] ||= (...e) => D(q) && D(q)(...e),
5537
- onClick: E[5] ||= (...e) => D(ie) && D(ie)(...e),
5538
- onContextmenu: E[6] ||= (...e) => D(J) && D(J)(...e)
5539
- }, null, 42, Gs)) : r("", !0),
5540
- (y(!0), i(e, null, S(D(R), (e) => (y(), n(D(Ss), {
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), {
5541
5649
  key: `${e.index}-${e.id}`,
5542
5650
  track: e,
5543
- "clip-path-id": D(z),
5544
- "inner-width": D(G),
5545
- zoomable: D(U),
5546
- interactive: !D(u),
5651
+ "clip-path-id": D(U),
5652
+ "inner-width": D(ne),
5653
+ zoomable: D(ee),
5654
+ interactive: !D(f),
5547
5655
  "display-mode": D(o),
5548
5656
  "interaction-mode": D(c),
5549
- "frame-number": D(ae)(e.id),
5550
- "frame-style": D(oe),
5551
- 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),
5552
5663
  "clean-view": D(l),
5553
- "zero-line": D(le),
5554
- "time-unit": D(ue),
5555
- "y-label": D(de),
5556
- onPointerMove: (t) => D(fe)(t, e.index),
5557
- onPointerDown: (t) => D(Y)(t, e.index, !0),
5558
- onPointerUp: D(re),
5559
- onPointerCancel: D(K),
5560
- onPointerLeave: D(q),
5561
- onClick: (t) => D(ie)(t, e.index),
5562
- 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)
5563
5674
  }, null, 8, [
5564
5675
  "track",
5565
5676
  "clip-path-id",
@@ -5571,6 +5682,9 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5571
5682
  "frame-number",
5572
5683
  "frame-style",
5573
5684
  "axes",
5685
+ "show-axis-units",
5686
+ "contain-y-axis-endpoints",
5687
+ "contain-frame-stroke",
5574
5688
  "clean-view",
5575
5689
  "zero-line",
5576
5690
  "time-unit",
@@ -5583,35 +5697,35 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5583
5697
  "onClick",
5584
5698
  "onContextmenu"
5585
5699
  ]))), 128)),
5586
- s(D(Ps), {
5587
- state: D(pe),
5588
- tracks: D(R),
5589
- "clip-path-id": D(z),
5590
- 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)
5591
5705
  }, null, 8, [
5592
5706
  "state",
5593
5707
  "tracks",
5594
5708
  "clip-path-id",
5595
5709
  "visible"
5596
5710
  ]),
5597
- D(he) && D(d)?.kind === "box" ? (y(), i("rect", {
5711
+ D(ye) && D(h)?.kind === "box" ? (y(), i("rect", {
5598
5712
  key: 2,
5599
5713
  class: "waveform-chart__zoom-selection",
5600
- x: D(he).x,
5601
- y: D(he).y,
5602
- width: D(he).width,
5603
- height: D(he).height,
5714
+ x: D(ye).x,
5715
+ y: D(ye).y,
5716
+ width: D(ye).width,
5717
+ height: D(ye).height,
5604
5718
  "aria-hidden": "true"
5605
- }, null, 8, Ks)) : r("", !0),
5719
+ }, null, 8, Qs)) : r("", !0),
5606
5720
  D(l) ? r("", !0) : (y(), n(D(rt), {
5607
5721
  key: 3,
5608
- annotations: D(ge),
5609
- visible: D(_e),
5610
- interactive: !D(u),
5611
- onContextmenu: D(ve),
5612
- onDragStart: D(ye),
5613
- onMove: D(be),
5614
- 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)
5615
5729
  }, null, 8, [
5616
5730
  "annotations",
5617
5731
  "visible",
@@ -5621,25 +5735,27 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5621
5735
  "onMove",
5622
5736
  "onDragEnd"
5623
5737
  ])),
5624
- D(l) ? r("", !0) : (y(), i("g", qs, [(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", {
5625
5739
  key: `legend-${e.index}-${e.id}`,
5626
5740
  class: "waveform-chart__legend-track",
5627
5741
  "data-legend-track-index": e.index,
5628
5742
  "data-legend-track-id": e.id,
5629
5743
  transform: `translate(${e.left}, ${e.top})`
5630
- }, [!e.isEmpty && e.legendSeries.length > 1 ? (y(), n(D(As), {
5744
+ }, [!e.isEmpty && (e.legendSeries.length > 1 || D(v) === "legend-single-series") ? (y(), n(D(Is), {
5631
5745
  key: 0,
5632
5746
  series: e.legendSeries,
5633
- position: D(Se)(e.id),
5634
- orientation: D(Ce)(D(Se)(e.id)),
5635
- "background-color": D(X),
5636
- interactive: D(we),
5637
- "hidden-series-ids": D(Te),
5638
- 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),
5639
5754
  height: e.height,
5640
- onToggle: D(Ee)
5755
+ onToggle: D(Ae)
5641
5756
  }, null, 8, [
5642
5757
  "series",
5758
+ "show-units",
5643
5759
  "position",
5644
5760
  "orientation",
5645
5761
  "background-color",
@@ -5648,51 +5764,51 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5648
5764
  "width",
5649
5765
  "height",
5650
5766
  "onToggle"
5651
- ])) : r("", !0)], 8, Js))), 128))]))
5652
- ], 8, Vs),
5653
- D(De) && !D(l) ? (y(), i("text", {
5767
+ ])) : r("", !0)], 8, ec))), 128))]))
5768
+ ], 8, qs),
5769
+ D(je) && !D(l) ? (y(), i("text", {
5654
5770
  key: 0,
5655
5771
  class: "waveform-chart__label waveform-chart__x-label",
5656
- x: D(g) + D(G) / 2,
5657
- y: D(Oe),
5772
+ x: D(x) + D(ne) / 2,
5773
+ y: D(Me),
5658
5774
  "text-anchor": "middle"
5659
- }, T(D(De)), 9, Ys)) : r("", !0),
5660
- D(ke) && !D(I) ? (y(), i("text", {
5775
+ }, T(D(je)), 9, tc)) : r("", !0),
5776
+ D(Ne) && !D(B) ? (y(), i("text", {
5661
5777
  key: 1,
5662
5778
  class: "waveform-chart__empty",
5663
- x: D(P) / 2,
5664
- y: D(F) / 2,
5779
+ x: D(R) / 2,
5780
+ y: D(z) / 2,
5665
5781
  "text-anchor": "middle"
5666
- }, " 暂无有效波形数据 ", 8, Xs)) : r("", !0)
5667
- ], 40, Rs)),
5668
- 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), {
5669
5785
  key: 1,
5670
5786
  class: "waveform-chart__pagination",
5671
5787
  "aria-label": "波形分页",
5672
- current: D(Me),
5673
- "page-size": D(Ne)(D(Ae)),
5674
- total: D(Pe).length,
5788
+ current: D(Fe),
5789
+ "page-size": D(Ie)(D(Pe)),
5790
+ total: D(Le).length,
5675
5791
  "show-size-changer": !1,
5676
5792
  "show-quick-jumper": !1,
5677
- onChange: D(Fe)
5793
+ onChange: D(Re)
5678
5794
  }, null, 8, [
5679
5795
  "current",
5680
5796
  "page-size",
5681
5797
  "total",
5682
5798
  "onChange"
5683
5799
  ])) : r("", !0),
5684
- D(Le) && !D(l) && !D(u) ? (y(), n(vo, {
5800
+ D(Be) && !D(l) && !D(f) ? (y(), n(wo, {
5685
5801
  key: 2,
5686
- annotation: D(Le).annotation,
5687
- mode: D(Le).mode,
5688
- series: D(ze),
5689
- "series-options": D(Be),
5690
- "time-unit": D(ue),
5691
- "time-error": D(Ve),
5692
- onConfirm: D(He),
5693
- onCancel: D(Ue),
5694
- onSeriesChange: D(We),
5695
- 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)
5696
5812
  }, null, 8, [
5697
5813
  "annotation",
5698
5814
  "mode",
@@ -5705,15 +5821,15 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5705
5821
  "onSeriesChange",
5706
5822
  "onTimeChange"
5707
5823
  ])) : r("", !0),
5708
- !D(l) && !D(u) ? (y(), n(D(it), {
5824
+ !D(l) && !D(f) ? (y(), n(D(it), {
5709
5825
  key: 3,
5710
- visible: D(Re) !== null,
5711
- x: D(Re)?.x || 0,
5712
- y: D(Re)?.y || 0,
5713
- "can-edit": !!D(Re)?.annotationId,
5714
- onEdit: D(Ke),
5715
- onDelete: D(qe),
5716
- 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
5717
5833
  }, null, 8, [
5718
5834
  "visible",
5719
5835
  "x",
@@ -5723,12 +5839,12 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5723
5839
  "onDelete",
5724
5840
  "onClose"
5725
5841
  ])) : r("", !0),
5726
- s(D(Do), {
5727
- state: D(pe),
5728
- visible: D(me) && !D(u),
5729
- "time-unit": D(ue),
5730
- "container-width": D(P),
5731
- "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)
5732
5848
  }, null, 8, [
5733
5849
  "state",
5734
5850
  "visible",
@@ -5736,14 +5852,16 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5736
5852
  "container-width",
5737
5853
  "container-height"
5738
5854
  ])
5739
- ], 46, Fs));
5855
+ ], 46, Vs));
5740
5856
  }
5741
- }), Qs = /* @__PURE__ */ l({
5857
+ }), ic = /* @__PURE__ */ l({
5742
5858
  __name: "WaveformChart",
5743
5859
  props: {
5744
5860
  data: {},
5745
5861
  displayMode: { default: "independent" },
5746
5862
  overlayMode: { default: "single-axis" },
5863
+ unitDisplayMode: { default: "axis" },
5864
+ layoutPreset: { default: "default" },
5747
5865
  width: {},
5748
5866
  height: {},
5749
5867
  xLabel: {},
@@ -5765,6 +5883,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5765
5883
  type: Boolean,
5766
5884
  default: !1
5767
5885
  },
5886
+ panXDomain: {},
5768
5887
  minZoomSpan: {},
5769
5888
  minVisiblePoints: { default: 0 },
5770
5889
  maxZoomScale: {},
@@ -5813,6 +5932,7 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5813
5932
  "zoom-intent",
5814
5933
  "zoom-change",
5815
5934
  "zoom-end",
5935
+ "pan-end",
5816
5936
  "zoom-reset",
5817
5937
  "update:annotations",
5818
5938
  "update:hidden-series-ids",
@@ -5826,12 +5946,12 @@ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
5826
5946
  "sampling-error"
5827
5947
  ],
5828
5948
  setup(e, { expose: t, emit: r }) {
5829
- let i = Qa(e, r);
5949
+ let i = io(e, r);
5830
5950
  return t({
5831
5951
  resetViewport: i.resetViewport,
5832
5952
  setViewportDomain: i.setViewportDomain
5833
- }), (e, t) => (y(), n(Zs, { controller: D(i) }, null, 8, ["controller"]));
5953
+ }), (e, t) => (y(), n(rc, { controller: D(i) }, null, 8, ["controller"]));
5834
5954
  }
5835
5955
  });
5836
5956
  //#endregion
5837
- export { Q as DEFAULT_WAVEFORM_RENDERING_OPTIONS, Qs as WaveformChart, vt as buildMinorTicks, Li as calculateWasmRange, Rt as clamp, jt as displayTime, Ri as findWasmVisibleRange, Pt as formatAxisTime, Nt as formatEndpointTime, Ft as formatTooltipTime, Fi as initializeWasmSampling, ln as normalizeWaveformData, fn as normalizeWaveformSeries, _t as paddedDomain, ht as parseWaveformAnnotations, Lt as resolveTrackGeometry, Dn as resolveWaveformRenderingOptions, Ii 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 };