waveform-analysis 0.1.65 → 0.1.66

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 (47) hide show
  1. package/README.md +23 -3
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.js +705 -617
  4. package/dist/types/components/WaveformChart.vue.d.ts +3 -2
  5. package/dist/types/components/core/constants.d.ts +2 -0
  6. package/dist/types/components/core/trackLayoutBuilder.d.ts +1 -0
  7. package/dist/types/components/core/types.d.ts +2 -1
  8. package/dist/types/components/core/useWaveformChartController.d.ts +3 -0
  9. package/dist/types/components/core/useWaveformPresentation.d.ts +2 -0
  10. package/dist/types/components/core/waveformChartTypes.d.ts +3 -1
  11. package/dist/types/components/core/yAxisTitleLayout.d.ts +4 -0
  12. package/dist/types/components/interaction/integerZoom.d.ts +12 -0
  13. package/dist/types/components/interaction/viewportDomain.d.ts +1 -0
  14. package/dist/types/components/interaction/zoomConstraints.d.ts +2 -1
  15. package/dist/types/components/rendering/WaveformTrack.vue.d.ts +2 -6
  16. package/dist/types/components/rendering/WaveformTrackBackdrop.vue.d.ts +0 -4
  17. package/dist/types/components/rendering/WaveformZeroLines.vue.d.ts +12 -0
  18. package/dist/types/demo/types.d.ts +3 -0
  19. package/dist/types/index.d.ts +1 -0
  20. package/dist/types/types/chart.d.ts +4 -0
  21. package/package.json +1 -1
  22. package/src/App.vue +6 -0
  23. package/src/components/WaveformChart.vue +1 -0
  24. package/src/components/core/constants.ts +2 -0
  25. package/src/components/core/trackLayoutBuilder.ts +26 -56
  26. package/src/components/core/types.ts +2 -0
  27. package/src/components/core/useWaveformChartLifecycle.ts +1 -1
  28. package/src/components/core/useWaveformLayout.ts +32 -16
  29. package/src/components/core/useWaveformPresentation.ts +10 -0
  30. package/src/components/core/waveformChartTypes.ts +3 -0
  31. package/src/components/core/yAxisTitleLayout.ts +78 -0
  32. package/src/components/interaction/integerZoom.ts +64 -0
  33. package/src/components/interaction/useWaveformViewport.ts +8 -12
  34. package/src/components/interaction/useWaveformZoom.ts +6 -4
  35. package/src/components/interaction/viewportDomain.ts +12 -0
  36. package/src/components/interaction/zoomConstraints.ts +7 -5
  37. package/src/components/rendering/WaveformTrack.vue +11 -4
  38. package/src/components/rendering/WaveformTrackAxes.vue +1 -1
  39. package/src/components/rendering/WaveformTrackBackdrop.vue +2 -34
  40. package/src/components/rendering/WaveformZeroLines.vue +53 -0
  41. package/src/demo/DemoChartHost.vue +1 -0
  42. package/src/demo/DemoGridFrameControls.vue +12 -0
  43. package/src/demo/DemoViewControls.vue +4 -0
  44. package/src/demo/types.ts +3 -0
  45. package/src/index.ts +1 -0
  46. package/src/styles.css +3 -3
  47. package/src/types/chart.ts +4 -0
package/dist/index.js CHANGED
@@ -1041,7 +1041,9 @@ var zt = {
1041
1041
  }, Gt = {
1042
1042
  COLOR: "#ff0000",
1043
1043
  WIDTH: 1,
1044
- DASH: "6 4"
1044
+ DASH: "6 4",
1045
+ OPACITY: .5,
1046
+ BOUNDARY_THRESHOLD: .02
1045
1047
  };
1046
1048
  //#endregion
1047
1049
  //#region src/components/core/yDomain.ts
@@ -1517,12 +1519,69 @@ function Qn(e, t, n = !1) {
1517
1519
  return t.bounds === "end" ? [e[0], r[1]] : r;
1518
1520
  }
1519
1521
  //#endregion
1522
+ //#region src/components/core/yAxisTitleLayout.ts
1523
+ var $n = 14, er = 11, tr = 2;
1524
+ function nr(e) {
1525
+ return Array.from(e).reduce((e, t) => e + (/[\u2e80-\u9fff\uf900-\ufaff\uff01-\uff60]/u.test(t) ? 1 : /[MW@%]/u.test(t) ? .95 : /[ilI1., :;|'!]/u.test(t) ? .4 : .65) * $n, 0);
1526
+ }
1527
+ function rr(e, t, n) {
1528
+ let r = t.seriesList[0], i = nr(r?.name.trim() || n || "") / 2, a = e.height / 2 - i - tr, o = e.height / 2 + i + tr, s = Math.min(...t.tickValues), c = t.tickValues.flatMap((e) => {
1529
+ let n = t.scale(e) + .5, i = n - (e === s ? er : er / 2);
1530
+ return (e === s ? n : n + er / 2) < a || i > o ? [] : [br(e, t.scale.domain(), t.tickValues, r?.unit).length * 7];
1531
+ });
1532
+ return Math.max(7, ...c) + 7 + 20 / 2;
1533
+ }
1534
+ function ir(e, t) {
1535
+ let n = /* @__PURE__ */ new Map();
1536
+ for (let r of e) {
1537
+ let e = 0;
1538
+ for (let i of r.yAxes) {
1539
+ if (i.side !== "left") continue;
1540
+ let a = `${r.column}:${e++}`;
1541
+ n.set(a, Math.max(n.get(a) ?? 0, rr(r, i, t)));
1542
+ }
1543
+ }
1544
+ for (let t of e) {
1545
+ let e = 0;
1546
+ for (let r of t.yAxes) r.side === "left" && (r.labelX = r.x - n.get(`${t.column}:${e++}`));
1547
+ }
1548
+ }
1549
+ //#endregion
1550
+ //#region src/components/interaction/integerZoom.ts
1551
+ function ar(e, t, n) {
1552
+ if (!n.integerZoom) return W().domain(e).ticks(t);
1553
+ let r = n.timeUnit === "s" ? 1 : 1e3;
1554
+ return W().domain(e.map((e) => e * r)).ticks(t).filter(Number.isInteger).map((e) => e / r);
1555
+ }
1556
+ function or(e) {
1557
+ return String(Math.round(e));
1558
+ }
1559
+ function sr(e) {
1560
+ let t = Math.round(e);
1561
+ return Math.abs(e - t) <= 2 ** -52 * Math.max(1, Math.abs(e)) * 16 ? t : e;
1562
+ }
1563
+ function cr(e, t) {
1564
+ if (!t.integerZoom) return e;
1565
+ let n = t.timeUnit === "s" ? 1 : 1e3, r = sr(Math.min(e[0], e[1]) * n), i = sr(Math.max(e[0], e[1]) * n);
1566
+ if (!Number.isSafeInteger(Math.floor(r)) || !Number.isSafeInteger(Math.ceil(i))) return e;
1567
+ let a = Math.floor(r);
1568
+ return [a / n, Math.max(a + 1, Math.ceil(i)) / n];
1569
+ }
1570
+ function lr(e, t) {
1571
+ return cr(e, t);
1572
+ }
1573
+ function ur(e, t) {
1574
+ if (!t.integerZoom) return e;
1575
+ let n = t.timeUnit === "s" ? 1 : 1e3;
1576
+ return [Math.round(e[0] * n) / n, Math.round(e[1] * n) / n];
1577
+ }
1578
+ //#endregion
1520
1579
  //#region src/components/core/trackLayoutBuilder.ts
1521
- function $n(e, t, n) {
1580
+ function dr(e, t, n) {
1522
1581
  let r = n.xDomainStrategy ?? { type: "data" }, i = n.initialXDomains?.[e.id] ?? n.initialXDomains?.[t] ?? n.initialXDomain;
1523
- return i ? Qn(i, r, !0) : Qn(e.xDomain, r);
1582
+ return cr(i ? Qn(i, r, !0) : Qn(e.xDomain, r), n);
1524
1583
  }
1525
- function er(e) {
1584
+ function fr(e) {
1526
1585
  let t = e.cells.map((e) => ({
1527
1586
  ...e,
1528
1587
  hasSeries: !!e.series
@@ -1535,14 +1594,16 @@ function er(e) {
1535
1594
  visibleSeries: [],
1536
1595
  xDomain: [0, 1],
1537
1596
  yDomain: [0, 1]
1538
- }, o = !i && a.visibleSeries.length > 0, s = a.visibleSeries[0] ?? a.series[0] ?? null, c = e.displayMode === "independent" ? W($n(a, s?.id ?? a.id, e), [0, t.width]) : W(e.sharedZoomDomain, [0, t.width]), l = (e.displayMode === "independent" ? e.independentTransforms[r] ?? J : J).rescaleX(c), u = pr(a, e.overlayMode, e.fixedYDomain, e.fixedYDomains, e.yDomains), d = {
1597
+ }, o = !i && a.visibleSeries.length > 0, s = a.visibleSeries[0] ?? a.series[0] ?? null, c = e.displayMode === "independent" ? W(dr(a, s?.id ?? a.id, e), [0, t.width]) : W(e.sharedZoomDomain, [0, t.width]), l = (e.displayMode === "independent" ? e.independentTransforms[r] ?? J : J).rescaleX(c);
1598
+ l.domain(lr(l.domain(), e));
1599
+ let u = Tr(a, e.overlayMode, e.fixedYDomain, e.fixedYDomains, e.yDomains), d = {
1539
1600
  left: 0,
1540
1601
  right: 0
1541
1602
  }, f = {
1542
1603
  left: 0,
1543
1604
  right: 0
1544
1605
  }, p = u.map((n) => {
1545
- let r = d[n.side]++, i = or(t.plotHeight, e.yAxisSplitNumber), a = sr(n.domain, i, e.yAxisNice !== !1), o = W(a.domain, [t.plotHeight, 0]), s = a.values, c = e.displayMode !== "compact" || t.row === 0 ? s : s.slice(0, -1), { tickTextWidth: l } = mr(o.domain(), !1, c, n.seriesList[0]?.unit, i), u = l + 7 + 0 + 20 + 4, p = e.yAxisSlots?.find((e) => e.side === n.side && e.sideIndex === r), m = p ? (n.side === "left" ? 0 : t.width) + p.axisOffset : n.side === "left" ? -f.left : t.width + f.right, h = l + 7 + 0 + 20 / 2, g = (p ? (n.side === "left" ? 0 : t.width) + p.labelOffset : m + (n.side === "left" ? -h : h)) - (n.side === "right" ? 10 : 0);
1606
+ let r = d[n.side]++, i = vr(t.plotHeight, e.yAxisSplitNumber), a = yr(n.domain, i, e.yAxisNice !== !1), o = W(a.domain, [t.plotHeight, 0]), s = a.values, c = e.displayMode !== "compact" || t.row === 0 ? s : s.slice(0, -1), { tickTextWidth: l } = Er(o.domain(), !1, c, 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);
1546
1607
  return p || (f[n.side] += u), {
1547
1608
  index: n.index,
1548
1609
  side: n.side,
@@ -1556,14 +1617,14 @@ function er(e) {
1556
1617
  };
1557
1618
  }), m = W(a.yDomain, [t.plotHeight, 0]);
1558
1619
  e.yAxisNice !== !1 && m.nice();
1559
- let h = p[0]?.scale ?? m, g = l.ticks(Math.max(2, Math.floor(t.width / 100))), _ = p[0]?.majorTicks ?? [], v = p[0]?.tickValues ?? [], y = l.domain(), b = {
1560
- start: Mt(y[0], y, e.timeUnit, "start", e.xAxisLabelFormatter),
1561
- end: Mt(y[1], y, e.timeUnit, "end", e.xAxisLabelFormatter)
1562
- }, x = b.start.length * 7 + 10, S = b.end.length * 7 + 10, C = g.filter((e) => {
1620
+ let h = p[0]?.scale ?? m, g = ar(l.domain(), Math.max(2, Math.floor(t.width / 100)), e), _ = e.xAxisLabelFormatter ?? (e.integerZoom ? or : void 0), v = p[0]?.majorTicks ?? [], y = p[0]?.tickValues ?? [], b = l.domain(), x = {
1621
+ start: Mt(b[0], b, e.timeUnit, "start", _),
1622
+ end: Mt(b[1], b, e.timeUnit, "end", _)
1623
+ }, S = x.start.length * 7 + 10, C = x.end.length * 7 + 10, w = g.filter((e) => {
1563
1624
  let n = l(e);
1564
- return n > x && n < t.width - S;
1565
- }), w = a.visibleSeries.map((n) => {
1566
- let r = p.find((e) => e.seriesList.some((e) => e.id === n.id)), a = r?.scale ?? h, o = Rn(n.points, y, t.width, e.rendering, {
1625
+ return n > S && n < t.width - C;
1626
+ }), T = a.visibleSeries.map((n) => {
1627
+ let r = p.find((e) => e.seriesList.some((e) => e.id === n.id)), a = r?.scale ?? h, o = Rn(n.points, b, t.width, e.rendering, {
1567
1628
  lineVisible: !i && n.lineType !== "none",
1568
1629
  linePointOverride: e.linePointOverrides?.[n.id],
1569
1630
  pointVisible: n.pointType !== "none",
@@ -1598,42 +1659,31 @@ function er(e) {
1598
1659
  yScale: h,
1599
1660
  yAxes: p,
1600
1661
  xMajorTicks: g,
1601
- xMinorTicks: vt(g, 3, y),
1602
- yMajorTicks: _,
1662
+ xAxisLabelFormatter: _,
1663
+ xMinorTicks: vt(g, 3, b),
1664
+ yMajorTicks: v,
1603
1665
  yMinorTicks: p[0]?.minorTicks ?? [],
1604
- yAxisTickValues: v,
1605
- xAxisTickValues: C,
1606
- endpointLabels: b,
1607
- path: w[0]?.path ?? null,
1608
- seriesPaths: w,
1666
+ yAxisTickValues: y,
1667
+ xAxisTickValues: w,
1668
+ endpointLabels: x,
1669
+ path: T[0]?.path ?? null,
1670
+ seriesPaths: T,
1609
1671
  gridLines: e.grid.trackLines[a.id] ?? {
1610
1672
  horizontal: !0,
1611
1673
  vertical: !0
1612
1674
  },
1613
1675
  showXAxis: (i || o) && (e.displayMode === "independent" || (e.displayMode === "compact" ? t.isLastRow ?? t.row === e.grid.rowCount - 1 : n.has(t.slotIndex)))
1614
1676
  };
1615
- }), i = /* @__PURE__ */ new Map();
1616
- for (let t of r) {
1617
- let n = 0;
1618
- for (let r of t.yAxes) {
1619
- if (r.side !== "left") continue;
1620
- let a = `${t.column}:${n++}`, o = r.seriesList[0], s = (o?.name.trim() || e.yLabel || "").length * 8 + 6, c = r.tickValues.filter((e) => Math.abs(r.scale(e) - t.height / 2) <= s), l = Math.max(7, ...c.map((e) => cr(e, r.scale.domain(), r.tickValues, o?.unit).length * 7)) + 7 + 20 / 2;
1621
- i.set(a, Math.max(i.get(a) ?? 0, l));
1622
- }
1623
- }
1624
- for (let e of r) {
1625
- let t = 0;
1626
- for (let n of e.yAxes) n.side === "left" && (n.labelX = n.x - i.get(`${e.column}:${t++}`));
1627
- }
1628
- return r;
1677
+ });
1678
+ return ir(r, e.yLabel), r;
1629
1679
  }
1630
1680
  //#endregion
1631
1681
  //#region src/components/core/layout.ts
1632
- var tr = 7, nr = 7, rr = 4, ir = 0, ar = 20;
1633
- function or(e, t) {
1682
+ var pr = 7, mr = 7, hr = 4, gr = 0, _r = 20;
1683
+ function vr(e, t) {
1634
1684
  return typeof t == "number" && Number.isFinite(t) ? Math.max(2, Math.floor(t)) : 5;
1635
1685
  }
1636
- function sr(e, t = 5, n = !0) {
1686
+ function yr(e, t = 5, n = !0) {
1637
1687
  let r = typeof t == "number" && Number.isFinite(t) ? Math.max(2, Math.floor(t)) : 5, i = W(e, [1, 0]);
1638
1688
  n && i.nice(Math.max(1, r - 1));
1639
1689
  let a = i.domain(), [o, s] = a;
@@ -1642,7 +1692,7 @@ function sr(e, t = 5, n = !0) {
1642
1692
  values: Array.from({ length: r }, (e, t) => o + (s - o) * t / (r - 1))
1643
1693
  };
1644
1694
  }
1645
- function cr(e, t, n, r) {
1695
+ function br(e, t, n, r) {
1646
1696
  return Ot(e, {
1647
1697
  axisMin: t[0],
1648
1698
  axisMax: t[1],
@@ -1650,7 +1700,7 @@ function cr(e, t, n, r) {
1650
1700
  unit: r
1651
1701
  });
1652
1702
  }
1653
- function lr(e) {
1703
+ function xr(e) {
1654
1704
  return e >= 4 ? [
1655
1705
  "left",
1656
1706
  "left",
@@ -1662,13 +1712,13 @@ function lr(e) {
1662
1712
  "right"
1663
1713
  ] : e === 2 ? ["left", "right"] : ["left"];
1664
1714
  }
1665
- var ur = /* @__PURE__ */ new WeakMap();
1666
- function dr(e, t) {
1667
- let n = ur.get(e);
1668
- n || (n = /* @__PURE__ */ new Map(), ur.set(e, n));
1715
+ var Sr = /* @__PURE__ */ new WeakMap();
1716
+ function Cr(e, t) {
1717
+ let n = Sr.get(e);
1718
+ n || (n = /* @__PURE__ */ new Map(), Sr.set(e, n));
1669
1719
  let r = n.get(t);
1670
1720
  if (r) return r;
1671
- let i = t === "multi-axis" ? Math.min(e.visibleSeries.length, 4) : Math.min(e.visibleSeries.length, 1), a = lr(i), o = Array.from({ length: i }, (e, t) => ({
1721
+ let i = t === "multi-axis" ? Math.min(e.visibleSeries.length, 4) : Math.min(e.visibleSeries.length, 1), a = xr(i), o = Array.from({ length: i }, (e, t) => ({
1672
1722
  index: t,
1673
1723
  side: a[t],
1674
1724
  seriesList: [],
@@ -1685,9 +1735,9 @@ function dr(e, t) {
1685
1735
  }
1686
1736
  }), n.set(t, o), o;
1687
1737
  }
1688
- function fr(e, t, n, r) {
1738
+ function wr(e, t, n, r) {
1689
1739
  let i = qt(e, r);
1690
- return dr(e, t).map((e) => {
1740
+ return Cr(e, t).map((e) => {
1691
1741
  if (i) return {
1692
1742
  ...e,
1693
1743
  domain: i,
@@ -1701,30 +1751,30 @@ function fr(e, t, n, r) {
1701
1751
  } : e;
1702
1752
  });
1703
1753
  }
1704
- function pr(e, t, n, r, i) {
1754
+ function Tr(e, t, n, r, i) {
1705
1755
  let a = i?.[e.id];
1706
- return fr(e, t, n, r).map((e) => !e.fixed && a ? {
1756
+ return wr(e, t, n, r).map((e) => !e.fixed && a ? {
1707
1757
  ...e,
1708
1758
  domain: a
1709
1759
  } : e);
1710
1760
  }
1711
- function mr(e, t = !0, n, r, i = 5, a = !1) {
1761
+ function Er(e, t = !0, n, r, i = 5, a = !1) {
1712
1762
  let o = n ? {
1713
1763
  domain: e,
1714
1764
  values: n
1715
- } : sr(e, i, t), s = [o.values];
1716
- return a && o.values.length > 1 && s.push(o.values.slice(0, -1)), { tickTextWidth: Math.max(1, ...s.flatMap((e) => e.map((t) => cr(t, o.domain, e, r).length))) * tr };
1765
+ } : yr(e, i, t), s = [o.values];
1766
+ return a && o.values.length > 1 && s.push(o.values.slice(0, -1)), { tickTextWidth: Math.max(1, ...s.flatMap((e) => e.map((t) => br(t, o.domain, e, r).length))) * pr };
1717
1767
  }
1718
- function hr(e, t, n, r, i, a = !0, o = !1, s) {
1768
+ function Dr(e, t, n, r, i, a = !0, o = !1, s) {
1719
1769
  let c = /* @__PURE__ */ new Map();
1720
1770
  e.forEach((e) => {
1721
1771
  let l = {
1722
1772
  left: 0,
1723
1773
  right: 0
1724
1774
  };
1725
- pr(e, t, n, r, s).forEach((e) => {
1726
- let t = l[e.side]++, n = `${e.side}:${t}`, r = mr(e.domain, a, void 0, e.seriesList[0]?.unit, i, o).tickTextWidth;
1727
- c.set(n, Math.max(c.get(n) ?? tr, r));
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));
1728
1778
  });
1729
1779
  });
1730
1780
  let l = [], u = {
@@ -1733,7 +1783,7 @@ function hr(e, t, n, r, i, a = !0, o = !1, s) {
1733
1783
  };
1734
1784
  return ["left", "right"].forEach((e) => {
1735
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) => {
1736
- let n = c.get(`${e}:${t}`) ?? tr, r = e === "left" && u.left > 0 ? -u.left : u[e], i = r + (n + nr + ir + ar / 2) * (e === "left" ? -1 : 1), a = n + nr + ir + ar + rr;
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;
1737
1787
  l.push({
1738
1788
  side: e,
1739
1789
  sideIndex: t,
@@ -1747,7 +1797,7 @@ function hr(e, t, n, r, i, a = !0, o = !1, s) {
1747
1797
  clearance: u
1748
1798
  };
1749
1799
  }
1750
- function gr(e, t, n) {
1800
+ function Or(e, t, n) {
1751
1801
  let r = (e) => {
1752
1802
  let r = t < e.left ? e.left - t : t > e.left + e.width ? t - e.left - e.width : 0;
1753
1803
  return n < e.top ? e.top - n : n > e.top + e.height ? n - (e.top + e.height) : r;
@@ -1766,11 +1816,11 @@ function gr(e, t, n) {
1766
1816
  }
1767
1817
  //#endregion
1768
1818
  //#region src/components/annotation/useWaveformChartAnnotations.ts
1769
- var _r = 0;
1770
- function vr() {
1771
- return _r += 1, typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `annotation-${Date.now()}-${_r}`;
1819
+ var kr = 0;
1820
+ function Ar() {
1821
+ return kr += 1, typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `annotation-${Date.now()}-${kr}`;
1772
1822
  }
1773
- function yr(e) {
1823
+ function jr(e) {
1774
1824
  let { props: t, emit: n, container: r, chartSeries: i, hiddenSeriesIdSet: a, internalHiddenSeriesIds: o, annotationInteraction: s, editorSeriesOptions: c, trackLayouts: l, annotationLayoutsForTrack: u, resolveSeriesYScale: d, chartWidth: f, chartHeight: p, innerWidth: m, resolvedChartLeftMargin: h, titleAreaHeight: g, chartTopMargin: _, activeInteractionMode: v, isPresentationMode: y } = e, b = x("");
1775
1825
  function S(e) {
1776
1826
  if (!i.value.some((t) => t.id === e)) return;
@@ -1803,7 +1853,7 @@ function yr(e) {
1803
1853
  };
1804
1854
  }
1805
1855
  function T(e, t, n) {
1806
- b.value = "", s.openCreate(e, vr, t), c.value = n;
1856
+ b.value = "", s.openCreate(e, Ar, t), c.value = n;
1807
1857
  let r = s.editorDraft.value, i = l.value.find((t) => t.index === e.trackIndex)?.seriesList.find((t) => t.id === e.seriesId);
1808
1858
  r?.mode === "add" && (r.annotation.style = {
1809
1859
  borderColor: i?.color || "#1677ff",
@@ -1863,7 +1913,7 @@ function yr(e) {
1863
1913
  let e = l.value[n];
1864
1914
  return e?.hasVisibleSeries ? e : void 0;
1865
1915
  }
1866
- return gr(l.value.filter((e) => e.hasVisibleSeries), e, t);
1916
+ return Or(l.value.filter((e) => e.hasVisibleSeries), e, t);
1867
1917
  }
1868
1918
  function A(e, t) {
1869
1919
  let n = e.currentTarget;
@@ -1954,7 +2004,7 @@ function yr(e) {
1954
2004
  }
1955
2005
  //#endregion
1956
2006
  //#region src/components/interaction/useWaveformHover.ts
1957
- function br(e) {
2007
+ function Mr(e) {
1958
2008
  let { emit: t, hoverState: n, suppressHoverUntilMove: r, hoverThrottle: i, selection: a, trackLayouts: o, innerWidth: s, resolvedChartLeftMargin: c, titleAreaHeight: l, chartTopMargin: u, sharedOverlayElement: d, isPresentationMode: f, updateViewportDrag: p, resolveTrackAtPointer: m } = e, h = () => i.cancel(), g = (e) => i.schedule(e), _ = (e) => n.points.length === e.length && e.every((e, t) => {
1959
2009
  let r = n.points[t];
1960
2010
  return r?.id === e.id && r.trackIndex === e.trackIndex && r.point === e.point;
@@ -2039,14 +2089,14 @@ function br(e) {
2039
2089
  }
2040
2090
  //#endregion
2041
2091
  //#region src/components/interaction/pointerCapture.ts
2042
- function xr(e, t) {
2092
+ function Nr(e, t) {
2043
2093
  try {
2044
2094
  e?.releasePointerCapture?.(t);
2045
2095
  } catch {}
2046
2096
  }
2047
2097
  //#endregion
2048
2098
  //#region src/components/interaction/viewportInteractionState.ts
2049
- function Sr(e) {
2099
+ function Pr(e) {
2050
2100
  return {
2051
2101
  ...e,
2052
2102
  currentX: e.startX,
@@ -2055,37 +2105,37 @@ function Sr(e) {
2055
2105
  yDomains: Object.fromEntries(Object.entries(e.yDomains).map(([e, t]) => [e, [...t]]))
2056
2106
  };
2057
2107
  }
2058
- function Cr(e, t) {
2108
+ function Fr(e, t) {
2059
2109
  return {
2060
2110
  ...e,
2061
2111
  ...t
2062
2112
  };
2063
2113
  }
2064
- function wr(e) {
2114
+ function Ir(e) {
2065
2115
  return {
2066
2116
  state: e,
2067
2117
  accepted: !1,
2068
2118
  completed: null
2069
2119
  };
2070
2120
  }
2071
- function Tr(e, t) {
2121
+ function Lr(e, t) {
2072
2122
  switch (t.type) {
2073
- case "begin": return e ? wr(e) : {
2074
- state: Sr(t.gesture),
2123
+ case "begin": return e ? Ir(e) : {
2124
+ state: Pr(t.gesture),
2075
2125
  accepted: !0,
2076
2126
  completed: null
2077
2127
  };
2078
- case "move": return !e || e.pointerId !== t.pointerId ? wr(e) : {
2079
- state: Cr(e, t.position),
2128
+ case "move": return !e || e.pointerId !== t.pointerId ? Ir(e) : {
2129
+ state: Fr(e, t.position),
2080
2130
  accepted: !0,
2081
2131
  completed: null
2082
2132
  };
2083
- case "finish": return !e || e.pointerId !== t.pointerId ? wr(e) : {
2133
+ case "finish": return !e || e.pointerId !== t.pointerId ? Ir(e) : {
2084
2134
  state: null,
2085
2135
  accepted: !0,
2086
- completed: Cr(e, t.position)
2136
+ completed: Fr(e, t.position)
2087
2137
  };
2088
- case "cancel": return !e || t.pointerId !== void 0 && e.pointerId !== t.pointerId ? wr(e) : {
2138
+ case "cancel": return !e || t.pointerId !== void 0 && e.pointerId !== t.pointerId ? Ir(e) : {
2089
2139
  state: null,
2090
2140
  accepted: !0,
2091
2141
  completed: null
@@ -2099,15 +2149,15 @@ function Tr(e, t) {
2099
2149
  }
2100
2150
  //#endregion
2101
2151
  //#region src/components/interaction/zoomConstraints.ts
2102
- var Er = /* @__PURE__ */ new WeakMap();
2103
- function Dr(e) {
2152
+ var Rr = /* @__PURE__ */ new WeakMap();
2153
+ function zr(e) {
2104
2154
  return e[0] <= e[1] ? [...e] : [e[1], e[0]];
2105
2155
  }
2106
- function Or(e) {
2156
+ function Br(e) {
2107
2157
  return Number.isFinite(e) && (e ?? 0) > 0 ? Math.ceil(e) : 0;
2108
2158
  }
2109
- function kr(e, t) {
2110
- let n = `${t[0]}\u0000${t[1]}`, r = Er.get(e)?.get(n);
2159
+ function Vr(e, t) {
2160
+ let n = `${t[0]}\u0000${t[1]}`, r = Rr.get(e)?.get(n);
2111
2161
  if (r) return r;
2112
2162
  let i = /* @__PURE__ */ new Set();
2113
2163
  for (let n of e) {
@@ -2117,14 +2167,14 @@ function kr(e, t) {
2117
2167
  r.x >= t[0] && r.x <= t[1] && i.add(r.x);
2118
2168
  }
2119
2169
  }
2120
- let a = Array.from(i).sort((e, t) => e - t), o = Er.get(e) ?? /* @__PURE__ */ new Map();
2121
- return o.set(n, a), Er.set(e, o), a;
2170
+ let a = Array.from(i).sort((e, t) => e - t), o = Rr.get(e) ?? /* @__PURE__ */ new Map();
2171
+ return o.set(n, a), Rr.set(e, o), a;
2122
2172
  }
2123
- function Ar(e, t, n) {
2173
+ function Hr(e, t, n) {
2124
2174
  if (n <= 1) return 0;
2125
2175
  let r = 0;
2126
2176
  for (let i of e) {
2127
- let e = kr(i, t);
2177
+ let e = Vr(i, t);
2128
2178
  if (e.length < n) return t[1] - t[0];
2129
2179
  let a = Infinity;
2130
2180
  for (let t = 0; t + n <= e.length; t += 1) a = Math.min(a, e[t + n - 1] - e[t]);
@@ -2133,17 +2183,17 @@ function Ar(e, t, n) {
2133
2183
  }
2134
2184
  return r;
2135
2185
  }
2136
- function jr(e, t, n) {
2137
- let r = Dr(e), i = r[1] - r[0];
2186
+ function Ur(e, t, n) {
2187
+ let r = cr(zr(e), n), i = r[1] - r[0];
2138
2188
  if (!Number.isFinite(i) || i <= 0) return 0;
2139
- let a = Number.isFinite(n.minZoomSpan) && (n.minZoomSpan ?? 0) > 0 ? Math.min(i, n.minZoomSpan) : 0, o = Or(n.minVisiblePoints), s = Ar(t, r, o), c = Number(n.maxZoomScale), l = Number.isFinite(c) && c >= Bt.MIN_SCALE ? i / c : n.maxZoomScale !== null && a === 0 && o === 0 ? i / Bt.DEFAULT_MAX_SCALE : 0;
2140
- return Math.max(a, s, l);
2189
+ let a = Number.isFinite(n.minZoomSpan) && (n.minZoomSpan ?? 0) > 0 ? Math.min(i, n.minZoomSpan) : 0, o = Br(n.minVisiblePoints), s = Hr(t, r, o), c = Number(n.maxZoomScale), l = Number.isFinite(c) && c >= Bt.MIN_SCALE ? i / c : n.maxZoomScale !== null && a === 0 && o === 0 ? i / Bt.DEFAULT_MAX_SCALE : 0, u = n.integerZoom ? n.timeUnit === "s" ? 1 : .001 : 0;
2190
+ return Math.max(a, s, l, u);
2141
2191
  }
2142
- function Mr(e, t, n, r) {
2192
+ function Wr(e, t, n, r) {
2143
2193
  if (r <= 0) return e;
2144
2194
  let i = 2 ** -52 * Math.max(1, Math.abs(t[0]), Math.abs(t[1])) * 16, a = e;
2145
2195
  for (let e of n) {
2146
- let n = kr(e, t);
2196
+ let n = Vr(e, t);
2147
2197
  if (n.length < r) return [...t];
2148
2198
  if (n.filter((e) => e >= a[0] && e <= a[1]).length >= r) continue;
2149
2199
  let o, s = Infinity, c = Infinity, l = (a[0] + a[1]) / 2;
@@ -2155,13 +2205,13 @@ function Mr(e, t, n, r) {
2155
2205
  }
2156
2206
  return a;
2157
2207
  }
2158
- function Nr(e, t, n, r) {
2159
- let i = Dr(t), a = i[1] - i[0];
2208
+ function Gr(e, t, n, r) {
2209
+ let i = cr(zr(t), r), a = i[1] - i[0];
2160
2210
  if (!Number.isFinite(a) || a <= 0 || Math.abs(e[1] - e[0]) >= a * .999999999999) return i;
2161
- let o = Mr([Math.max(i[0], Math.min(e[0], e[1])), Math.min(i[1], Math.max(e[0], e[1]))], i, n, Or(r.minVisiblePoints)), s = jr(i, n, r), c = Math.max(s, Math.min(a, o[1] - o[0])), l = (o[0] + o[1]) / 2, u = Math.max(i[0], Math.min(l - c / 2, i[1] - c));
2162
- return [u, u + c];
2211
+ let o = Wr([Math.max(i[0], Math.min(e[0], e[1])), Math.min(i[1], Math.max(e[0], e[1]))], i, n, Br(r.minVisiblePoints)), s = Ur(i, n, r), c = Math.max(s, Math.min(a, o[1] - o[0])), l = (o[0] + o[1]) / 2, u = Math.max(i[0], Math.min(l - c / 2, i[1] - c));
2212
+ return cr([u, u + c], r);
2163
2213
  }
2164
- function Pr(e, t, n) {
2214
+ function Kr(e, t, n) {
2165
2215
  let r = t[1] - t[0], i = e[1] - e[0];
2166
2216
  if (!Number.isFinite(r) || !Number.isFinite(i) || r <= 0 || i <= 0) return J;
2167
2217
  let a = r / i, o = W(t, [0, n]);
@@ -2169,7 +2219,11 @@ function Pr(e, t, n) {
2169
2219
  }
2170
2220
  //#endregion
2171
2221
  //#region src/components/interaction/viewportDomain.ts
2172
- function Fr(e) {
2222
+ function qr(e, t) {
2223
+ let n = e[1] - e[0];
2224
+ 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
+ }
2226
+ function Jr(e) {
2173
2227
  return (t, n) => {
2174
2228
  if (!(!Number.isFinite(t[0]) || !Number.isFinite(t[1]) || t[0] === t[1])) {
2175
2229
  if (e.cancelPendingZoom(), e.cancelViewportDrag(), e.props.displayMode === "independent") {
@@ -2177,12 +2231,12 @@ function Fr(e) {
2177
2231
  r.forEach((n) => {
2178
2232
  let r = e.trackLayouts.value.find((e) => e.index === n);
2179
2233
  if (!r) return;
2180
- let a = e.resolveInitialTrackDomain(r), o = Nr(t, a, [r.seriesList], e.props);
2181
- i[n] = Pr(o, a, r.width);
2234
+ let a = e.resolveInitialTrackDomain(r), o = Gr(t, a, [r.seriesList], e.props);
2235
+ i[n] = Kr(o, a, r.width);
2182
2236
  }), e.independentTransforms.value = i;
2183
2237
  } else {
2184
- let n = e.initialXDomain.value, r = Nr(t, n, e.trackLayouts.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), e.props);
2185
- e.sharedTransform.value = Pr(r, n, e.innerWidth.value);
2238
+ let n = e.initialXDomain.value, r = Gr(t, n, e.trackLayouts.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), e.props);
2239
+ e.sharedTransform.value = Kr(r, n, e.innerWidth.value);
2186
2240
  }
2187
2241
  e.clearHover(), e.editorSeriesOptions.value = [], f(e.configureZoom);
2188
2242
  }
@@ -2190,14 +2244,14 @@ function Fr(e) {
2190
2244
  }
2191
2245
  //#endregion
2192
2246
  //#region src/components/interaction/zoomEventPayload.ts
2193
- function Ir(e) {
2247
+ function Yr(e) {
2194
2248
  return [...e].sort().join("\0");
2195
2249
  }
2196
- function Lr(e, t) {
2197
- let n = Ir(t);
2198
- return e.find((e) => Ir(e.seriesList.map((e) => e.id)) === n);
2250
+ function Xr(e, t) {
2251
+ let n = Yr(t);
2252
+ return e.find((e) => Yr(e.seriesList.map((e) => e.id)) === n);
2199
2253
  }
2200
- function Rr(e, t, n, r) {
2254
+ function Zr(e, t, n, r) {
2201
2255
  e("zoom-intent", r ? {
2202
2256
  start: t[0],
2203
2257
  end: t[1],
@@ -2210,9 +2264,9 @@ function Rr(e, t, n, r) {
2210
2264
  gesture: "box"
2211
2265
  });
2212
2266
  }
2213
- function zr(e, t, n) {
2267
+ function Qr(e, t, n) {
2214
2268
  for (let r of n) {
2215
- let n = Lr(t, r);
2269
+ let n = Xr(t, r);
2216
2270
  if (!n) continue;
2217
2271
  let i = n.xScale.domain(), a = n.yScale.domain();
2218
2272
  e("zoom-end", {
@@ -2226,7 +2280,7 @@ function zr(e, t, n) {
2226
2280
  });
2227
2281
  }
2228
2282
  }
2229
- function Br(e, t, n) {
2283
+ function $r(e, t, n) {
2230
2284
  let r = n.filter((e) => e.hasVisibleSeries);
2231
2285
  if (r.length === 1) {
2232
2286
  let n = r[0]?.yScale.domain();
@@ -2248,13 +2302,13 @@ function Br(e, t, n) {
2248
2302
  }
2249
2303
  //#endregion
2250
2304
  //#region src/components/interaction/useWaveformViewport.ts
2251
- function Vr(e) {
2305
+ function ei(e) {
2252
2306
  let { props: n, emit: r, selection: i, spacePressed: a, trackLayouts: o, chartTracks: s, initialXDomain: c, innerWidth: l, innerHeight: u, sharedOverlayElement: d, sharedTransform: p, independentTransforms: m, sharedYDomains: h, independentYDomains: g, isZoomMode: _, isPresentationMode: v, editorSeriesOptions: y, resolveInitialTrackDomain: b, canZoomTrack: x, canZoomSharedTracks: S, configureZoom: C, cancelPendingZoom: T, clearHover: E, resolveTrackAtPointer: D } = e, O = w(), k = (e, t) => {
2253
2307
  let n = O.value, r = t?.currentTarget;
2254
- xr(n, e), r && r !== n && xr(r, e);
2308
+ Nr(n, e), r && r !== n && Nr(r, e);
2255
2309
  }, A = (e, t) => {
2256
2310
  let n = i.value;
2257
- !n || n.pointerId !== e || (k(e, t), i.value = Tr(i.value, {
2311
+ !n || n.pointerId !== e || (k(e, t), i.value = Lr(i.value, {
2258
2312
  type: "cancel",
2259
2313
  pointerId: e
2260
2314
  }).state, O.value = void 0);
@@ -2268,16 +2322,13 @@ function Vr(e) {
2268
2322
  width: Math.abs(e.currentX - e.startX),
2269
2323
  height: Math.abs(e.currentY - e.startY)
2270
2324
  };
2271
- }), M = (e, t) => {
2272
- let n = e[1] - e[0];
2273
- return n >= t[1] - t[0] ? [...t] : e[0] < t[0] ? [t[0], t[0] + n] : e[1] > t[1] ? [t[1] - n, t[1]] : e;
2274
- }, N = () => Object.fromEntries(o.value.filter((e) => e.hasVisibleSeries).map((e) => [e.series?.trackId ?? e.series?.id ?? e.id, e.yScale.domain()])), P = (e, t, r) => {
2325
+ }), M = () => Object.fromEntries(o.value.filter((e) => e.hasVisibleSeries).map((e) => [e.series?.trackId ?? e.series?.id ?? e.id, e.yScale.domain()])), N = (e, t, r) => {
2275
2326
  if (v.value) return;
2276
2327
  let s = n.pannable && a.value;
2277
2328
  if (!n.zoomable && !s || !_.value || e.button !== 0) return;
2278
2329
  let c = e.currentTarget, d = o.value.find((e) => e.index === t);
2279
2330
  if (!d) return;
2280
- let [f, p] = U(e, c), m = Math.max(0, Math.min(r ? d.width : l.value, f)), h = Math.max(0, Math.min(r ? d.height : u.value, p)), g = Tr(i.value, {
2331
+ let [f, p] = U(e, c), m = Math.max(0, Math.min(r ? d.width : l.value, f)), h = Math.max(0, Math.min(r ? d.height : u.value, p)), g = Lr(i.value, {
2281
2332
  type: "begin",
2282
2333
  gesture: {
2283
2334
  trackIndex: t,
@@ -2287,34 +2338,34 @@ function Vr(e) {
2287
2338
  pointerId: e.pointerId,
2288
2339
  kind: s ? "pan" : "box",
2289
2340
  xDomain: d.xScale.domain(),
2290
- yDomains: N()
2341
+ yDomains: M()
2291
2342
  }
2292
2343
  });
2293
2344
  g.accepted && (i.value = g.state, O.value = c, c.setPointerCapture?.(e.pointerId), E(), e.preventDefault());
2294
- }, F = (e) => {
2345
+ }, P = (e) => {
2295
2346
  if (!d.value) return;
2296
2347
  let [t, n] = U(e, d.value), r = D(t, n), i = (r?.hasVisibleSeries ? r : void 0) ?? o.value.find((e) => e.hasVisibleSeries);
2297
- i && P(e, i.index, !1);
2298
- }, I = (e, t) => {
2299
- let i = t.width || 1, a = t.height || 1, u = e.currentX - e.startX, d = e.currentY - e.startY, f = e.xDomain[1] - e.xDomain[0], _ = e.independent ? b(t) : c.value, v = M([e.xDomain[0] - u / i * f, e.xDomain[1] - u / i * f], _);
2348
+ 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);
2300
2351
  if (e.independent) {
2301
2352
  let e = [...m.value];
2302
- e[t.index] = Pr(v, _, i), m.value = e;
2303
- } else p.value = Pr(v, _, l.value);
2353
+ e[t.index] = Kr(v, _, i), m.value = e;
2354
+ } else p.value = Kr(v, _, l.value);
2304
2355
  let y = e.independent ? [t] : o.value.filter((e) => e.hasVisibleSeries), x = { ...g.value }, S = { ...h.value };
2305
2356
  y.forEach((t) => {
2306
2357
  let r = s.value.find((e) => e.id === t.id);
2307
2358
  if (r && Yt(r, n.yDomain, n.yDomains)) return;
2308
- let i = t.series?.trackId ?? t.series?.id ?? t.id, o = e.yDomains[i] ?? t.yScale.domain(), c = r?.yDomain ?? o, l = o[1] - o[0], u = M([o[0] + d / a * l, o[1] + d / a * l], c);
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);
2309
2360
  e.independent ? x[t.index] = u : S[i] = u;
2310
2361
  }), e.independent ? g.value = x : h.value = S, r("zoom-change", v);
2311
- }, L = (e) => {
2362
+ }, I = (e) => {
2312
2363
  if (v.value) return;
2313
2364
  let t = i.value, n = O.value;
2314
2365
  if (!t || !n || e.pointerId !== t.pointerId) return;
2315
2366
  let r = o.value.find((e) => e.index === t.trackIndex);
2316
2367
  if (!r) return;
2317
- let [a, s] = U(e, n), c = Math.max(0, Math.min(t.independent ? r.width : l.value, a)), d = Math.max(0, Math.min(t.independent ? r.height : u.value, s)), f = Tr(i.value, {
2368
+ let [a, s] = U(e, n), c = Math.max(0, Math.min(t.independent ? r.width : l.value, a)), d = Math.max(0, Math.min(t.independent ? r.height : u.value, s)), f = Lr(i.value, {
2318
2369
  type: "move",
2319
2370
  pointerId: e.pointerId,
2320
2371
  position: {
@@ -2324,21 +2375,21 @@ function Vr(e) {
2324
2375
  });
2325
2376
  if (!f.accepted || !f.state) return;
2326
2377
  let p = f.state;
2327
- i.value = p, p.kind === "pan" && I(p, r), e.preventDefault();
2328
- }, R = (e) => {
2378
+ i.value = p, p.kind === "pan" && F(p, r), e.preventDefault();
2379
+ }, L = (e) => {
2329
2380
  let t = i.value;
2330
2381
  !t || e && e.pointerId !== t.pointerId || A(t.pointerId, e);
2331
- }, z = (e) => {
2382
+ }, R = (e) => {
2332
2383
  let t = o.value.find((t) => t.index === e.trackIndex);
2333
2384
  if (!t || (e.independent ? !x(t) : !S())) return;
2334
2385
  let i = e.independent ? 0 : t.left, a = Math.max(0, Math.min(t.width, Math.min(e.startX, e.currentX) - i)), s = Math.max(0, Math.min(t.width, Math.max(e.startX, e.currentX) - i));
2335
2386
  if (s - a < 6) return;
2336
- let u = e.independent ? b(t) : c.value, d = e.independent ? [t.seriesList] : o.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), h = Nr([t.xScale.invert(a), t.xScale.invert(s)], u, d, n);
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);
2337
2388
  if (e.independent) {
2338
2389
  let e = [...m.value];
2339
- e[t.index] = Pr(h, u, t.width), m.value = e;
2340
- } else p.value = Pr(h, u, l.value);
2341
- Rr(r, h, t, e.independent);
2390
+ e[t.index] = Kr(h, u, t.width), m.value = e;
2391
+ } else p.value = Kr(h, u, l.value);
2392
+ Zr(r, h, t, e.independent);
2342
2393
  let g = e.independent ? [t] : o.value.filter((e) => e.hasVisibleSeries), _ = Object.fromEntries(g.map((e) => [e.series?.trackId ?? e.series?.id ?? e.id, e.yScale.domain()]));
2343
2394
  if (r("zoom-change", h), e.independent) {
2344
2395
  let e = _[t.series?.trackId ?? t.series?.id ?? t.id];
@@ -2367,9 +2418,9 @@ function Vr(e) {
2367
2418
  gesture: "box"
2368
2419
  });
2369
2420
  f(C);
2370
- }, B = (e) => {
2421
+ }, z = (e) => {
2371
2422
  if (v.value) {
2372
- R();
2423
+ L();
2373
2424
  return;
2374
2425
  }
2375
2426
  let t = i.value;
@@ -2379,7 +2430,7 @@ function Vr(e) {
2379
2430
  A(t.pointerId, e);
2380
2431
  return;
2381
2432
  }
2382
- let [a, s] = U(e, r), c = Math.max(0, Math.min(t.independent ? n.width : l.value, a)), d = Math.max(0, Math.min(t.independent ? n.height : u.value, s)), p = Tr(i.value, {
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, {
2383
2434
  type: "finish",
2384
2435
  pointerId: e.pointerId,
2385
2436
  position: {
@@ -2389,13 +2440,13 @@ function Vr(e) {
2389
2440
  }).completed;
2390
2441
  if (p) {
2391
2442
  if (i.value = null, k(p.pointerId, e), O.value = void 0, e.preventDefault(), p.kind === "pan") {
2392
- I(p, n), f(C);
2443
+ F(p, n), f(C);
2393
2444
  return;
2394
2445
  }
2395
- Math.abs(p.currentX - p.startX) >= 6 && z(p);
2446
+ Math.abs(p.currentX - p.startX) >= 6 && R(p);
2396
2447
  }
2397
- }, V = (e) => {
2398
- if (T(), R(), n.displayMode === "independent" && e !== void 0) {
2448
+ }, B = (e) => {
2449
+ if (T(), L(), n.displayMode === "independent" && e !== void 0) {
2399
2450
  let t = [...m.value];
2400
2451
  t[e] = J, m.value = t;
2401
2452
  let n = { ...g.value };
@@ -2405,13 +2456,13 @@ function Vr(e) {
2405
2456
  };
2406
2457
  return {
2407
2458
  selectionBox: j,
2408
- beginViewportDrag: P,
2409
- beginSharedViewportDrag: F,
2410
- updateViewportDrag: L,
2411
- finishViewportDrag: B,
2412
- cancelViewportDrag: R,
2413
- resetViewport: V,
2414
- setViewportDomain: Fr({
2459
+ beginViewportDrag: N,
2460
+ beginSharedViewportDrag: P,
2461
+ updateViewportDrag: I,
2462
+ finishViewportDrag: z,
2463
+ cancelViewportDrag: L,
2464
+ resetViewport: B,
2465
+ setViewportDomain: Jr({
2415
2466
  props: n,
2416
2467
  trackLayouts: o,
2417
2468
  initialXDomain: c,
@@ -2420,7 +2471,7 @@ function Vr(e) {
2420
2471
  sharedTransform: p,
2421
2472
  independentTransforms: m,
2422
2473
  cancelPendingZoom: T,
2423
- cancelViewportDrag: R,
2474
+ cancelViewportDrag: L,
2424
2475
  clearHover: E,
2425
2476
  editorSeriesOptions: y,
2426
2477
  configureZoom: C
@@ -2430,20 +2481,20 @@ function Vr(e) {
2430
2481
  if (n.displayMode === "independent") {
2431
2482
  let t = (e.target instanceof Element ? e.target : null)?.closest("[data-independent-overlay-index]"), n = Number(t?.getAttribute("data-independent-overlay-index")), i = o.value.find((e) => e.index === n);
2432
2483
  if (!i) return;
2433
- e.preventDefault(), V(n), r("zoom-reset", {
2484
+ e.preventDefault(), B(n), r("zoom-reset", {
2434
2485
  trackIndex: n,
2435
2486
  seriesIds: i.legendSeries.map((e) => e.id)
2436
2487
  });
2437
2488
  return;
2438
2489
  }
2439
- e.preventDefault(), V(), r("zoom-reset", {});
2490
+ e.preventDefault(), B(), r("zoom-reset", {});
2440
2491
  }
2441
2492
  }
2442
2493
  };
2443
2494
  }
2444
2495
  //#endregion
2445
2496
  //#region src/components/utils/useAnimationFrameThrottle.ts
2446
- function Hr() {
2497
+ function ti() {
2447
2498
  let e = null, t = null;
2448
2499
  function n(n) {
2449
2500
  t = n, e === null && (e = requestAnimationFrame(() => {
@@ -2472,27 +2523,27 @@ function Hr() {
2472
2523
  }
2473
2524
  //#endregion
2474
2525
  //#region src/components/interaction/useWaveformZoom.ts
2475
- function Ur(e) {
2476
- let { props: t, emit: n, svgElement: r, sharedOverlayElement: i, sharedTransform: a, independentTransforms: o, trackLayouts: s, initialXDomain: c, sharedZoomDomain: l, innerWidth: u, innerHeight: d, hasChartArea: f, isZoomMode: p, isPresentationMode: m, resolveInitialTrackDomain: h, cancelPendingHover: g } = e, _ = /* @__PURE__ */ new Map(), v = Hr(), y = !1, b = null, x = null, S = null, C = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ new Map(), E, D = !1, O = 0, k = () => v.schedule(M), A = (e) => {
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) => {
2477
2528
  if (y || m.value) return;
2478
2529
  g(), b = e.transform, x = "wheel", I();
2479
- let t = e.transform.rescaleX(W(c.value, [0, u.value])).domain();
2530
+ let [r, i] = lr(e.transform.rescaleX(W(c.value, [0, u.value])).domain(), t);
2480
2531
  n("zoom-intent", {
2481
- start: t[0],
2482
- end: t[1],
2532
+ start: r,
2533
+ end: i,
2483
2534
  gesture: "wheel"
2484
2535
  }), k();
2485
- }, j = (e, t) => {
2536
+ }, j = (e, r) => {
2486
2537
  if (y || m.value) return;
2487
- g(), C.set(t, e.transform), w.set(t, "wheel"), I();
2488
- let r = s.value.find((e) => e.index === t);
2489
- if (r) {
2490
- let i = e.transform.rescaleX(W(h(r), [0, r.width])).domain();
2538
+ g(), C.set(r, e.transform), w.set(r, "wheel"), I();
2539
+ let i = s.value.find((e) => e.index === r);
2540
+ if (i) {
2541
+ let a = e.transform.rescaleX(W(h(i), [0, i.width])).domain();
2491
2542
  n("zoom-intent", {
2492
- start: i[0],
2493
- end: i[1],
2494
- trackIndex: t,
2495
- seriesIds: r.seriesList.map((e) => e.id),
2543
+ start: lr(a, t)[0],
2544
+ end: lr(a, t)[1],
2545
+ trackIndex: r,
2546
+ seriesIds: i.seriesList.map((e) => e.id),
2496
2547
  gesture: "wheel"
2497
2548
  });
2498
2549
  }
@@ -2506,36 +2557,36 @@ function Ur(e) {
2506
2557
  if (b) {
2507
2558
  let e = b;
2508
2559
  b = null, S = x, x = null, a.value = e;
2509
- let t = e.rescaleX(W(c.value, [0, u.value])).domain();
2510
- n("zoom-change", [t[0], t[1]]);
2560
+ let r = e.rescaleX(W(c.value, [0, u.value])).domain();
2561
+ n("zoom-change", lr([r[0], r[1]], t));
2511
2562
  }
2512
2563
  if (!C.size) return;
2513
- let e = [...o.value], t = Array.from(C.keys()), r = new Map(w);
2564
+ let e = [...o.value], r = Array.from(C.keys()), i = new Map(w);
2514
2565
  C.forEach((t, n) => {
2515
2566
  e[n] = t;
2516
2567
  }), C.clear(), w.clear(), o.value = e;
2517
- let i = new Map(s.value.map((e) => [e.index, e]));
2518
- t.forEach((e) => {
2519
- let t = i.get(e);
2568
+ let l = new Map(s.value.map((e) => [e.index, e]));
2569
+ r.forEach((e) => {
2570
+ let t = l.get(e);
2520
2571
  if (!t) return;
2521
- if (r.get(e) === "wheel") {
2572
+ if (i.get(e) === "wheel") {
2522
2573
  let e = t.seriesList.map((e) => e.id);
2523
- T.set(Ir(e), e);
2574
+ T.set(Yr(e), e);
2524
2575
  }
2525
- let a = t.xScale.domain();
2526
- n("zoom-change", [a[0], a[1]]);
2576
+ let r = t.xScale.domain();
2577
+ n("zoom-change", [r[0], r[1]]);
2527
2578
  });
2528
2579
  }
2529
2580
  let N = () => {
2530
2581
  if (t.displayMode === "independent") {
2531
- zr(n, s.value, T.values()), T.clear();
2582
+ Qr(n, s.value, T.values()), T.clear();
2532
2583
  return;
2533
2584
  }
2534
2585
  if (S !== "wheel") {
2535
2586
  S = null;
2536
2587
  return;
2537
2588
  }
2538
- Br(n, l.value, s.value), S = null;
2589
+ $r(n, l.value, s.value), S = null;
2539
2590
  }, P = () => {
2540
2591
  v.flush(), M(), !(S === "wheel" || T.size) && N();
2541
2592
  }, F = (e) => {
@@ -2555,9 +2606,9 @@ function Ur(e) {
2555
2606
  }, B = (e, n) => {
2556
2607
  let r = Math.abs(e[1] - e[0]);
2557
2608
  if (!Number.isFinite(r) || r <= 0) return Bt.MIN_SCALE;
2558
- let i = jr(e, n, t);
2609
+ let i = Ur(e, n, t);
2559
2610
  return Math.max(Bt.MIN_SCALE, i > 0 ? r / i : Infinity);
2560
- }, V = (e, n, r, i) => Pr(Nr(e.rescaleX(W(n, [0, r])).domain(), n, i, t), n, r), H = (e) => {
2611
+ }, V = (e, n, r, i) => Kr(Gr(e.rescaleX(W(n, [0, r])).domain(), n, i, t), n, r), H = (e) => {
2561
2612
  let n = Number(t.minVisiblePoints);
2562
2613
  return jn(e.seriesList, e.xScale.domain(), Number.isFinite(n) && n > 0 ? Math.ceil(n) + 1 : n);
2563
2614
  }, U = () => {
@@ -2609,13 +2660,13 @@ function Ur(e) {
2609
2660
  }
2610
2661
  //#endregion
2611
2662
  //#region src/components/core/useWaveformChartLifecycle.ts
2612
- function Wr(e) {
2663
+ function ri(e) {
2613
2664
  return e instanceof Element && !!e.closest("button, input, select, textarea, [contenteditable]:not([contenteditable=\"false\"])");
2614
2665
  }
2615
- function Gr(e) {
2666
+ function ii(e) {
2616
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;
2617
2668
  function te(e) {
2618
- z.value || e.code !== "Space" || !t.pannable || !_.value || Wr(e.target) || (m.value = !0, e.preventDefault());
2669
+ z.value || e.code !== "Space" || !t.pannable || !_.value || ri(e.target) || (m.value = !0, e.preventDefault());
2619
2670
  }
2620
2671
  function ne(e) {
2621
2672
  e.code === "Space" && (m.value = !1);
@@ -2629,7 +2680,7 @@ function Gr(e) {
2629
2680
  if (t.displayMode === "independent") {
2630
2681
  K = void 0, q = new Map(w.value.flatMap((e) => {
2631
2682
  let t = e.xScale.domain(), n = I(e);
2632
- return t[1] - t[0] < n[1] - n[0] - 1e-12 ? [[Ir(e.seriesList.map((e) => e.id)), t]] : [];
2683
+ return t[1] - t[0] < n[1] - n[0] - 1e-12 ? [[Yr(e.seriesList.map((e) => e.id)), t]] : [];
2633
2684
  }));
2634
2685
  return;
2635
2686
  }
@@ -2646,14 +2697,14 @@ function Gr(e) {
2646
2697
  if (t.displayMode === "independent" && q) {
2647
2698
  let e = C.value.map(() => J);
2648
2699
  w.value.forEach((n) => {
2649
- let r = q?.get(Ir(n.seriesList.map((e) => e.id)));
2700
+ let r = q?.get(Yr(n.seriesList.map((e) => e.id)));
2650
2701
  if (!r) return;
2651
- let i = I(n), a = Nr(r, i, [n.seriesList], t);
2652
- e[n.index] = Pr(a, i, n.width);
2702
+ let i = I(n), a = Gr(r, i, [n.seriesList], t);
2703
+ e[n.index] = Kr(a, i, n.width);
2653
2704
  }), P.value = e, q = void 0;
2654
2705
  } else if (t.displayMode !== "independent" && K) {
2655
- let e = O.value, n = w.value.filter((e) => e.hasVisibleSeries).map((e) => e.seriesList), r = Nr(K, e, n, t);
2656
- A.value = Pr(r, e, T.value), K = void 0;
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;
2657
2708
  }
2658
2709
  H();
2659
2710
  });
@@ -2678,7 +2729,11 @@ function Gr(e) {
2678
2729
  j
2679
2730
  ], async () => {
2680
2731
  await f(), H();
2681
- }, { immediate: !0 }), k(() => t.displayMode, () => {
2732
+ }, { immediate: !0 }), k(() => [
2733
+ t.displayMode,
2734
+ t.integerZoom,
2735
+ t.integerZoom ? t.timeUnit : void 0
2736
+ ], () => {
2682
2737
  let e = v.value;
2683
2738
  v.value = 1, U(), e !== 1 && n("page-change", 1, y.value);
2684
2739
  }), k([
@@ -2739,7 +2794,7 @@ function Gr(e) {
2739
2794
  }
2740
2795
  //#endregion
2741
2796
  //#region src/components/core/useWaveformData.ts
2742
- function Kr(e) {
2797
+ function ai(e) {
2743
2798
  return dn(e).map(({ source: e, ...t }) => {
2744
2799
  let n = e.metrics(t.errorBar.visible);
2745
2800
  return {
@@ -2752,45 +2807,45 @@ function Kr(e) {
2752
2807
  };
2753
2808
  });
2754
2809
  }
2755
- function qr(e, t, n) {
2756
- let r = w(Kr(e()));
2810
+ function oi(e, t, n) {
2811
+ let r = w(ai(e()));
2757
2812
  return k(e, (e) => {
2758
- t(), r.value = Kr(e), n();
2813
+ t(), r.value = ai(e), n();
2759
2814
  }), r;
2760
2815
  }
2761
2816
  //#endregion
2762
2817
  //#region wasm/pkg/waveform_sampling_wasm.js
2763
- function Jr(e, t) {
2764
- let n = ci(e, $.__wbindgen_malloc), r = mi, i = ci(t, $.__wbindgen_malloc), a = mi, o = $.calculate_range(n, r, i, a);
2765
- if (o[3]) throw li(o[2]);
2766
- var s = $r(o[0], o[1]).slice();
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();
2767
2822
  return $.__wbindgen_free(o[0], o[1] * 8, 8), s;
2768
2823
  }
2769
- function Yr(e, t, n, r) {
2770
- let i = ci(e, $.__wbindgen_malloc), a = mi, o = ci(t, $.__wbindgen_malloc), s = mi, c = $.find_visible_range(i, a, o, s, n, r);
2771
- if (c[3]) throw li(c[2]);
2772
- var l = ei(c[0], c[1]).slice();
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();
2773
2828
  return $.__wbindgen_free(c[0], c[1] * 4, 4), l;
2774
2829
  }
2775
- function Xr(e, t, n, r) {
2776
- let i = ci(e, $.__wbindgen_malloc), a = mi, o = ci(t, $.__wbindgen_malloc), s = mi, c = $.sample_aggregates(i, a, o, s, n, r);
2777
- if (c[3]) throw li(c[2]);
2778
- var l = $r(c[0], c[1]).slice();
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();
2779
2834
  return $.__wbindgen_free(c[0], c[1] * 8, 8), l;
2780
2835
  }
2781
- function Zr(e, t, n, r) {
2782
- let i = ci(e, $.__wbindgen_malloc), a = mi, o = ci(t, $.__wbindgen_malloc), s = mi, c = $.sample_indexes(i, a, o, s, n, r);
2783
- if (c[3]) throw li(c[2]);
2784
- var l = ei(c[0], c[1]).slice();
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();
2785
2840
  return $.__wbindgen_free(c[0], c[1] * 4, 4), l;
2786
2841
  }
2787
- function Qr() {
2842
+ function di() {
2788
2843
  return {
2789
2844
  __proto__: null,
2790
2845
  "./waveform_sampling_wasm_bg.js": {
2791
2846
  __proto__: null,
2792
2847
  __wbindgen_cast_0000000000000001: function(e, t) {
2793
- return ri(e, t);
2848
+ return gi(e, t);
2794
2849
  },
2795
2850
  __wbindgen_init_externref_table: function() {
2796
2851
  let e = $.__wbindgen_externrefs, t = e.grow(4);
@@ -2799,52 +2854,52 @@ function Qr() {
2799
2854
  }
2800
2855
  };
2801
2856
  }
2802
- function $r(e, t) {
2803
- return e >>>= 0, ni().subarray(e / 8, e / 8 + t);
2857
+ function fi(e, t) {
2858
+ return e >>>= 0, hi().subarray(e / 8, e / 8 + t);
2804
2859
  }
2805
- function ei(e, t) {
2806
- return e >>>= 0, ai().subarray(e / 4, e / 4 + t);
2860
+ function pi(e, t) {
2861
+ return e >>>= 0, vi().subarray(e / 4, e / 4 + t);
2807
2862
  }
2808
- var ti = null;
2809
- function ni() {
2810
- return (ti === null || ti.byteLength === 0) && (ti = new Float64Array($.memory.buffer)), ti;
2863
+ var mi = null;
2864
+ function hi() {
2865
+ return (mi === null || mi.byteLength === 0) && (mi = new Float64Array($.memory.buffer)), mi;
2811
2866
  }
2812
- function ri(e, t) {
2813
- return e >>>= 0, pi(e, t);
2867
+ function gi(e, t) {
2868
+ return e >>>= 0, Ei(e, t);
2814
2869
  }
2815
- var ii = null;
2816
- function ai() {
2817
- return (ii === null || ii.byteLength === 0) && (ii = new Uint32Array($.memory.buffer)), ii;
2870
+ var _i = null;
2871
+ function vi() {
2872
+ return (_i === null || _i.byteLength === 0) && (_i = new Uint32Array($.memory.buffer)), _i;
2818
2873
  }
2819
- var oi = null;
2820
- function si() {
2821
- return (oi === null || oi.byteLength === 0) && (oi = new Uint8Array($.memory.buffer)), oi;
2874
+ var yi = null;
2875
+ function bi() {
2876
+ return (yi === null || yi.byteLength === 0) && (yi = new Uint8Array($.memory.buffer)), yi;
2822
2877
  }
2823
- function ci(e, t) {
2878
+ function xi(e, t) {
2824
2879
  let n = t(e.length * 8, 8) >>> 0;
2825
- return ni().set(e, n / 8), mi = e.length, n;
2880
+ return hi().set(e, n / 8), Di = e.length, n;
2826
2881
  }
2827
- function li(e) {
2882
+ function Si(e) {
2828
2883
  let t = $.__wbindgen_externrefs.get(e);
2829
2884
  return $.__externref_table_dealloc(e), t;
2830
2885
  }
2831
- var ui = new TextDecoder("utf-8", {
2886
+ var Ci = new TextDecoder("utf-8", {
2832
2887
  ignoreBOM: !0,
2833
2888
  fatal: !0
2834
2889
  });
2835
- ui.decode();
2836
- var di = 2146435072, fi = 0;
2837
- function pi(e, t) {
2838
- return fi += t, fi >= di && (ui = new TextDecoder("utf-8", {
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", {
2839
2894
  ignoreBOM: !0,
2840
2895
  fatal: !0
2841
- }), ui.decode(), fi = t), ui.decode(si().subarray(e, e + t));
2896
+ }), Ci.decode(), Ti = t), Ci.decode(bi().subarray(e, e + t));
2842
2897
  }
2843
- var mi = 0, $;
2844
- function hi(e, t) {
2845
- return $ = e.exports, ti = null, ii = null, oi = null, $.__wbindgen_start(), $;
2898
+ var Di = 0, $;
2899
+ function Oi(e, t) {
2900
+ return $ = e.exports, mi = null, _i = null, yi = null, $.__wbindgen_start(), $;
2846
2901
  }
2847
- async function gi(e, t) {
2902
+ async function ki(e, t) {
2848
2903
  if (typeof Response == "function" && e instanceof Response) {
2849
2904
  if (typeof WebAssembly.instantiateStreaming == "function") try {
2850
2905
  return await WebAssembly.instantiateStreaming(e, t);
@@ -2870,17 +2925,17 @@ async function gi(e, t) {
2870
2925
  return !1;
2871
2926
  }
2872
2927
  }
2873
- async function _i(e) {
2928
+ async function Ai(e) {
2874
2929
  if ($ !== void 0) return $;
2875
2930
  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/rSEQIAdBGGohCUGAgICAeAshCCAJIAg2AgACfyAHKAIYIghBgICAgHhGBEBBASEJIBCnDAELIAcgBygCEDYCaCAHQQQ2AmQgByAINgJgIAdBADYCXCAHQoCAgIDAADcCVCAHIAE2AlAgByALNgJMIAcgATYCSCAHIA83A0AgByAKNgI8IAdBgICAgHg2AjAgByAGNgIsIAdBADYCKCAHIAQ5AyAgByAQNwMYIAdBCGogB0EYahAXIAcoAgghCSAHKAIMCyEGIA4gCTYCACAOIAY2AgQgB0HwAGokACANKAIMIQogDSgCCCEGIAMEQCACIANBAnRBBBBHCyABBEAgACABQQN0QQgQRwsgDCAGQQFxIgA2AgggDCAKQQAgABs2AgQgDEEAIAogABs2AgAgDUEQaiQAIAwoAgAgDCgCBCAMKAIIIAxBEGokAAuBIAMmfwV8AX4jAEEQayIPJAAjAEFAaiIKJAAgCiAENgIoIAogAzYCJCAKIAI2AiAgCiABNgIcIAogADYCGCAKIApBKGo2AjwgCiAKQSRqNgI4IAogCkEgajYCNCAKIApBHGo2AjAgCiAKQRhqNgIsIApBDGohHyAKQSxqIQAjAEEQayITJAACQAJAQQBB6IzAACgCABEFACIQRQ0AIBAoAgBFBEAgEEF/NgIAIB8CfgJAIAAoAgAoAgAiASAQKAIMSQRAIBAoAgggAUHYAGxqIgcoAkhBgICAgHhHDQELQfyNwABBHBA/IQAgECAQKAIAQQFqNgIAIBMgADYCCEGAgICAeCEAIBMpAggMAQsgE0EEaiEYIAAoAgQoAgAhAiAAKAIIKAIAIQMgACgCDCgCACEeIAAoAhAoAgAhAEEAIQEjAEEwayIIJAACQAJAAkACQAJAIB5BA2sOBQABAQEAAQtBASAAIABBAU0bIgQgBygCOCIAIAIgACACSRsiGSAAIAMgACADSRsiACAAIBlJGyIgIBlrIhogBCAaSRsiIUEAIAAgAksbIh1BBHQhAgJAAkAgHUEBdCIGQf////8BSyACQfj///8HS3INAAJAIAJFBEBBCCEAQQAhBgwBC0EIIQkgAkEIEEsiAEUNAQsgCEEANgIIIAggADYCBCAIIAY2AgAgHQRAIAdByABqIREDQCAaIBxsICFuIgAgGWoiBSAcQQFqIhwgGmwgIW4iAiAZaiIiTw0DAkAgAiAAa2ciAEEfRg0AIABBH3MhG0EBIQsDQAJAIAcoAlAgC0sEQCAHKAJMIAtBJGxqKAIAQYCAgIB4Rw0BCyAHKAIUQX8CfyAHKAI4IgAgC3YgAEF/IAt0QX9zcUEAR2oiDa1CFH4iMEIgiFAEQCAwpwwBC0F/CyAHKAIQIgJqIgAgACACSRtJDQYgByAANgIQQQAhBgJAAkAgDUH/////AE0EQCANRQRAQQghAUEEIRRBCCEVDAMLQQghBiANQQN0IgBBCBBMIgENASAAIQELIAYgARA9AAsgAEEIEEwiFQRAIA1BAnQiAEEEEEwiFARAIA1BAXQhJCAHKAJMIAtBAWsiAkEkbGohDCAHKAI4IQ4gBygCNCElIAcoAighIyAHKAIsIRYgBysDCCEsIAcrAwAhLSAHKAIkISYgBygCHCEnIAcoAiAhF0EEIQBBACEGIAIgBygCUEkhKCAHKAIYQYCAgIB4RiEpQQAhCSAUIQMDQAJAIAZBAWohBAJAAnwCQAJAAkACQAJAAkACQCAoRQ0AIAwoAgBBgICAgHhGDQAgBiAMKAIIIgJPDQEgACABakEEayAMKAIEIAlqIhIrAwAgAiAESwR8IBJBCGorAwAFRAAAAAAAAAAAC6A5AwAgBiAMKAIUIgJPDQMgACAVakEEayAMKAIQIAlqIhIrAwAgAiAESwR8IBJBCGorAwAFRAAAAAAAAAAAC6A5AwAgBiAMKAIgIgJPDQQgDCgCHCAAaiISQQRrKAIAISogAyACIARLBH8gEigCAAVBAAsgKmo2AgAMCAsCQAJAAkAgKUUEQCAGIBdJDQEgBiAXQfiLwAAQJgALAkAgLSAsICZBgICAgHhGIhIEfyAGBSAGIBZPDQEgACAjakEEaygCAAu4oqAhKyAEIA5JDQJEAAAAAAAAAAAMCgsgBiAWQYiMwAAQJgALIAkgJ2oiAisDACErIAQgDkkNAUQAAAAAAAAAAAwICyAEIQIgEkUNBQwGCyAEIBdPDQEgAkEIaisDAAwGCyAGIAJBrIfAABAmAAsgBkEBaiAXQfiLwAAQJgALIAYgAkG8h8AAECYACyAGIAJBzIfAABAmAAsgBCAWSQRAIAAgI2ooAgAhAgwBCyAGQQFqIBZBiIzAABAmAAsgLSAsIAK4oqALIS4gACABakEEayArIC6gOQMAIAYgDk8NASAJICVqIgIrAwAhLkQAAAAAAAAAACErIAQgDkkiBARAIAJBCGorAwAhKwsgA0ECQQEgBBs2AgAgACAVakEEayAuICugOQMACyAJQRBqIQkgAEEIaiEAIANBBGohAyAGQQJqIgYgJEcNAQwECwsgBiAOQZyHwAAQJgALQQQgABA9AAtBCCAAED0ACyALIAcoAlAiBk8EQAJAIAtBAWoiBiARKAIIIgNNBEAgESAGNgIIIAMgBkYNASADIAZrIQkgESgCBCAGQSRsaiECA0ACQCACKAIAIgBBgICAgHhGDQAgAARAIAJBBGooAgAgAEEDdEEIEEcLIAJBDGooAgAiAARAIAJBEGooAgAgAEEDdEEIEEcLIAJBGGooAgAiAEUNACACQRxqKAIAIABBAnRBBBBHCyACQSRqIQIgCUEBayIJDQALDAELIAYgAyIAayIMIBEoAgAgAGtLBEAgESAAIAxBBEEkEBogESgCCCEACyARKAIEIQ4gDEEDcSIJBEAgACAJaiAGIANrIAlrIQwgDiAAQSRsaiECA0AgAkGAgICAeDYCACACQSRqIQIgCUEBayIJDQALIQALIAMgBmtBfE0EQCAOIABBJGxqIQIDQCACQYCAgIB4NgIAIAJB7ABqQYCAgIB4NgIAIAJByABqQYCAgIB4NgIAIAJBJGpBgICAgHg2AgAgAkGQAWohAiAAQQRqIQAgDEEEayIMDQALCyARIAA2AggLIAcoAlAhBgsgBiALTQ0JAkAgBygCTCALQSRsaiIAKAIAIgJBgICAgHhGDQAgAgRAIAAoAgQgAkEDdEEIEEcLIAAoAgwiAgRAIAAoAhAgAkEDdEEIEEcLIAAoAhgiAkUNACAAKAIcIAJBAnRBBBBHCyAAIA02AiAgACAUNgIcIAAgDTYCGCAAIA02AhQgACAVNgIQIAAgDTYCDCAAIA02AgggACABNgIEIAAgDTYCAAsgCyAbTw0BIAsgCyAbSWoiCyAbTQ0ACwsgBygCNCEMIAcoAjghFCAHKwMIIS4gBysDACEvIAcoAighDiAHKAIsIQYgBygCHCEVIAcoAiAhCyAHKAJMIRYgBygCUCENQQAhCUQAAAAAAAAAACEsIAcoAhhBgICAgHhGIRcgBygCJEGAgICAeEYhG0QAAAAAAAAAACErA0BBASEAAkAgBUEBcSAiIAVrIgJBAklyDQBBAiEAIAVBAnEgAkEESXINAEEEIQAgBUEEcSACQQhJcg0AQQghACAFQQhxIAJBEElyDQBBECEAIAVBEHEgAkEgSXINAEEgIQAgBUEgcSACQcAASXINAEHAACEAIAVBwABxIAJBgAFJcg0AQYABIQAgBUGAAXEgAkGAAklyDQBBgAIhACAFQYACcSACQYAESXINAEGABCEAIAVBgARxIAJBgAhJcg0AQYAIIQAgBUGACHEgAkGAEElyDQBBgBAhACAFQYAQcSACQYAgSXINAEGAICEAIAVBgCBxIAJBgMAASXINAEGAwAAhACAFQYDAAHEgAkGAgAFJcg0AQYCAASEAIAVBgIABcSACQYCAAklyDQBBgIACIQAgBUGAgAJxIAJBgIAESXINAEGAgAQhACAFQYCABHEgAkGAgAhJcg0AQYCACCEAIAVBgIAIcSACQYCAEElyDQBBgIAQIQAgBUGAgBBxIAJBgIAgSXINAEGAgCAhACAFQYCAIHEgAkGAgMAASXINAEGAgMAAIQAgBUGAgMAAcSACQYCAgAFJcg0AQYCAgAEhACAFQYCAgAFxIAJBgICAAklyDQBBgICAAiEAIAVBgICAAnEgAkGAgIAESXINAEGAgIAEIQAgBUGAgIAEcSACQYCAgAhJcg0AQYCAgAghACAFQYCAgAhxIAJBgICAEElyDQBBgICAECEAIAVBgICAEHEgAkGAgIAgSXINAEGAgIAgIQAgBUGAgIAgcSACQYCAgMAASXINAEGAgIDAACEAIAVBgICAwABxIAJBgICAgAFJcg0AQYCAgIABIQAgBUGAgICAAXEgAkGAgICAAklyDQBBgICAgAIhACAFQYCAgIACcSACQYCAgIAESXINAEGAgICABCEAIAVBgICAgARxIAJBAE5yDQAQSgALAkACQAJAAkACQCAAaCICRQRAAnwgF0UEQCAFIAtPDQQgFSAFQQN0aisDAAwBCyAvIC4gGwR/IAUFIAUgBk8NAyAOIAVBAnRqKAIAC7iioAshLSAFIBRPDQMgCUEBaiEJIAwgBUEDdGohAwwFCyACIA1PBEAgAiANQaiMwAAQJgALIBYgAkEkbGoiBCgCAEGAgICAeEcNAwwJCyAFIAZBiIzAABAmAAsgBSALQfiLwAAQJgALIAUgFEGYjMAAECYACwJAIAUgAnYiAiAEKAIIIgNJBEAgAiAEKAIUIgNPDQEgBCgCICIDIAJLBEAgAkEDdCIDIAQoAgRqKwMAIS0gBCgCECADaiEDIAQoAhwgAkECdGooAgAgCWohCQwDCyACIANB2IzAABAmAAsgAiADQbiMwAAQJgALIAIgA0HIjMAAECYACyAsIC2gISwgKyADKwMAoCErIAAgBWoiBSAiSQ0ACyAsIAm4IiyjIS0gCCgCCCIAIAgoAgBGBEAgCBAiCyAIKAIEIABBA3RqIC05AwAgCCAAQQFqIgI2AgggCCgCACACRgRAIAgQIgsgCCgCBCACQQN0aiArICyjICsgHkEDRhs5AwAgCCAAQQJqNgIIIBwgHUcNAAsLIBggCCgCCDYCCCAYIAgpAgA3AgAMAwsgCSACED0ACyAIIAc2AgwgCCAZNgIQIAggIDYCFEEAIQAgGkEAIBogIE0bIgFBGGwhAgJAIAFB1arVKksNAEEIIQYgAgRAQQghACACQQgQSyIGRQ0BIAEhAAsgCEEANgIgIAggBjYCHCAIIAA2AhggCEEANgIoIAggCEEgajYCJCAIIAY2AiwgCEEMaiAIQSRqEBMgCCgCGCEAIBggCCgCHCIBIAgoAiAgHSAeEAcgAARAIAEgAEEYbEEIEEcLIAgoAgAiAEUNAiAIKAIEIABBA3RBCBBHDAILIAAgAhA9AAtB+4rAAEEpED8hACAYQYCAgIB4NgIAIBggADYCBAsgCEEwaiQADAELIAsgBkGMh8AAECYACyAQIBAoAgBBAWo2AgAgEygCBCIAQYGAgIB4Rg0CIBMpAggLNwIEIB8gADYCACATQRBqJAAMAgtBuI7AABA3AAsQNgALAkACQAJ/IAooAgwiAUGAgICAeEYEQEEBIQBBACEBQQAhAyAKKAIQDAELIAooAhAhAAJAIAooAhQiAyABTwRAIAAhAQwBCyABQQN0IQIgA0UEQEEIIQEgACACQQgQRwwBCyAAIAJBCCADQQN0IgAQRCIBRQ0CC0EAIQBBAAshAiAPIAA2AgwgDyACNgIIIA8gAzYCBCAPIAE2AgAgCkFAayQADAELQQggABA9AAsgDygCACAPKAIEIA8oAgggDygCDCAPQRBqJAALugYCC38MfCMAQRBrIgYkACMAQRBrIggkACAIQQRqIQkjAEEQayIKJAAgCkEEaiAAIAEgAiADEAsgCigCCCEHAkACQAJAIAooAgQiDUGAgICAeEYEQCAJQYCAgIB4NgIAIAkgBzYCBAwBCyAJAn8gCigCDCIFRQRAQQghBEEADAELIAcrAwghDyAHKwMAIRACQCAFQQFGBEAgDyERIBAhEgwBCyAHQRhqIQQCfyAFQRhsIgxBMGsiDkEYbiIFQQNxQQNGBEAgECESIA8hESAHDAELQQAgBUEBakEDcWshCyAQIRIgDyERA0AgBCIFQRhqIQQgBUEIaisDACETIBIgBSsDACIUEDshEiAQIBQQPCEQIBEgExA7IREgDyATEDwhDyALQQFqIgsNAAsgBEEYawshBSAOQcgASQ0AIAcgDGohDANAIARByABqIgsrAwAhEyAEQTBqKwMAIRQgBEEYaisDACEVIARB0ABqKwMAIRYgBEE4aisDACEXIARBIGorAwAhGCAEKwMAIRkgESAFKwMgIhoQOyAYEDsgFxA7IBYQOyERIA8gGhA8IBgQPCAXEDwgFhA8IQ8gEiAZEDsgFRA7IBQQOyATEDshEiAQIBkQPCAVEDwgFBA8IBMQPCEQIAshBSAEQeAAaiIEIAxHDQALC0EgQQgQSyIERQ0CIAQgETkDGCAEIA85AxAgBCASOQMIIAQgEDkDAEEECyIFNgIIIAkgBDYCBCAJIAU2AgAgDUUNACAHIA1BGGxBCBBHCyAKQRBqJAAMAQtBCEEgEE4ACyADBEAgAiADQQN0QQgQRwsgAQRAIAAgAUEDdEEIEEcLAkACQAJ/IAgoAgQiAUGAgICAeEYEQEEBIQJBACEBQQAhAyAIKAIIDAELIAgoAgghAAJAIAgoAgwiAyABTwRAIAAhAQwBCyABQQN0IQIgA0UEQEEIIQEgACACQQgQRwwBCyAAIAJBCCADQQN0IgAQRCIBRQ0CC0EAIQJBAAshACAGIAI2AgwgBiAANgIIIAYgAzYCBCAGIAE2AgAgCEEQaiQADAELQQggABA9AAsgBigCACAGKAIEIAYoAgggBigCDCAGQRBqJAALswEBAn8jAEEQayIAJAAgASgCAEHkkcAAQQsgASgCBCgCDBECACEDIABBCGoiAkEAOgAFIAIgAzoABCACIAE2AgAgAiIBLQAEIQIgAS0ABQRAIAECf0EBIAJBAXENABogASgCACIBLQAKQYABcUUEQCABKAIAQaWSwABBAiABKAIEKAIMEQIADAELIAEoAgBBpJLAAEEBIAEoAgQoAgwRAgALIgI6AAQLIAJBAXEgAEEQaiQAC78GAwp/An4DfCMAQRBrIgskACMAQRBrIgwkACAMQQhqIQ4gACEIIwBB8ABrIgUkAAJAAkACQAJ/IAEgA0cEQEHXi8AAQSEQP60hD0GAgICAeCENIAVBGGoMAQsCfyABRQRAQYCAgIB4IQpBCCEGQQAMAQsgAUEDdCEJIAghByACIQYCQAJAAkADQAJAIAcpAwBC////////////AINC//////////f/AFYNACAGKQMAQv///////////wCDQv/////////3/wBWDQAgB0EIaiEHIAZBCGohBiAKQQFqIgogAUcNAQwCCwsgASAKSw0BCyABQQFGDQEgCCABQQFrIgdBA3RqKwMAIAgrAwChIAe4oyERDAELQaSLwABBMxA/rSEPQYCAgIB4IQ0gBUEYagwCC0EAIQdBACEGAn8DQEGAgICAeCAHIAlGDQEaIAcgCGogBrghEiAHQQhqIQcgBkEBaiEGKwMAIhMgESASoiAIKwMAoCISoZkgE5kgEpkQO0QAAAAAAADwPxA7RAAAAAAAACA9omUNAAsgCUEIEEsiB0UNAyAJBEAgByAIIAn8CgAACyAHrSABrUIghoQhECABCyEKIAlBCBBLIgZFDQMgCQRAIAYgAiAJ/AoAAAsgCCkDACEPIAELIQggBUEANgIYIAVBEGoLIA02AgACfyAFKAIYIgdBgICAgHhGBEBBASEGIA+nDAELIAUgBSgCEDYCaCAFQQQ2AmQgBSAHNgJgIAVBADYCXCAFQoCAgIDAADcCVCAFIAE2AlAgBSAGNgJMIAUgCDYCSCAFQYCAgIB4NgI8IAUgEDcCNCAFIAo2AjAgBSAENgIsIAVBADYCKCAFIBE5AyAgBSAPNwMYIAVBCGogBUEYahAXIAUoAgghBiAFKAIMCyEEIA4gBjYCACAOIAQ2AgQgBUHwAGokAAwCC0EIIAkQPQALQQggCRA9AAsgDCgCDCEIIAwoAgghBCADBEAgAiADQQN0QQgQRwsgAQRAIAAgAUEDdEEIEEcLIAsgBEEBcSIANgIIIAsgCEEAIAAbNgIEIAtBACAIIAAbNgIAIAxBEGokACALKAIAIAsoAgQgCygCCCALQRBqJAALLwEBfyMAQRBrIgAkACAAIABBD2qtQoCAgIDAAIQ3AwBBz4HAACAAQciOwAAQKQALLAEBfyMAQRBrIgEkACABIAFBD2qtQoCAgIDQAoQ3AwBBmILAACABIAAQKQALGQEBfyAAQQQQSyIBRQRAQQQgABBOAAsgAQscAQF/IAAoAgAiAUEASgRAIAAoAgQgAUEBEEcLCxkBAX8gACgCACIBBEAgACgCBCABQQEQRwsLFAAgASABIAAgACABYxsgACAAYhsLFAAgACAAIAEgACABYxsgASABYhsLHQAgAARAIAAgARBOAAtBgJLAAEEjQZSSwAAQKQALEQAgACABQQF0QQFyIAIQKQAL/gICA38BbyAAIAEQASEFAn8jAEEQayIDJAACQEH4lcAAKAIARQRAQfiVwABBfzYCAEGIlsAAKAIAIgFBhJbAACgCACIARgRAAn8gASABQfyVwAAoAgAiAEcNABrQb0GAASABIAFBgAFNGyIC/A8BIgBBf0YNAwJAQYyWwAAoAgAiBEUEQEGMlsAAIAA2AgAMAQsgASAEaiAARw0ECyABQfyVwAAoAgAiACABayACTw0AGiADQQRqIABBgJbAACgCACABIAJqIgBBBEEEEBwgAygCBEEBRg0DQYCWwAAgAygCCDYCAEH8lcAAIAA2AgBBhJbAACgCAAsiAiAATw0CQYCWwAAoAgAgAkECdGogAUEBajYCAEGElsAAIAJBAWoiADYCAAsgACABTQ0BQYiWwABBgJbAACgCACABQQJ0aigCADYCAEH4lcAAQfiVwAAoAgBBAWo2AgBBjJbAACgCACADQRBqJAAgAWoMAgtBxI/AABA3CwALIgAgBSYBIAALDwAgAQRAIAAgASACEEcLCxwAIABBzJDAACkCADcCCCAAQcSQwAApAgA3AgALHAAgAEG8kMAAKQIANwIIIABBtJDAACkCADcCAAsWACAAKAIAIAEgAiAAKAIEKAIMEQIAC+cGAQV/An8CQAJAAkACQAJAAkACQCAAQQRrIgcoAgAiCEF4cSIEQQRBCCAIQQNxIgUbIAFqTwRAIAVBACABQSdqIgYgBEkbDQECQCACQQlPBEAgAiADEBAiAg0BQQAMCgtBACECIANBzP97Sw0IQRAgA0ELakF4cSADQQtJGyEBIABBCGshBiAFRQRAIAZFIAFBgAJJciAEIAFrQYCACEsgASAET3JyDQcgAAwKCyAEIAZqIQUCQCABIARLBEAgBUHgmcAAKAIARg0BQdyZwAAoAgAgBUcEQCAFKAIEIghBAnENCSAIQXhxIgggBGoiBCABSQ0JIAUgCBARIAQgAWsiBUEQTwRAIAcgASAHKAIAQQFxckECcjYCACABIAZqIgEgBUEDcjYCBCAEIAZqIgQgBCgCBEEBcjYCBCABIAUQDAwJCyAHIAQgBygCAEEBcXJBAnI2AgAgBCAGaiIBIAEoAgRBAXI2AgQMCAtB1JnAACgCACAEaiIEIAFJDQgCQCAEIAFrIgVBD00EQCAHIAhBAXEgBHJBAnI2AgAgBCAGaiIBIAEoAgRBAXI2AgRBACEFQQAhAQwBCyAHIAEgCEEBcXJBAnI2AgAgASAGaiIBIAVBAXI2AgQgBCAGaiIEIAU2AgAgBCAEKAIEQX5xNgIEC0HcmcAAIAE2AgBB1JnAACAFNgIADAcLIAQgAWsiBEEPTQ0GIAcgASAIQQFxckECcjYCACABIAZqIgEgBEEDcjYCBCAFIAUoAgRBAXI2AgQgASAEEAwMBgtB2JnAACgCACAEaiIEIAFLDQQMBgsgAyABIAEgA0sbIgMEQCACIAAgA/wKAAALIAcoAgAiA0F4cSIHIAFBBEEIIANBA3EiAxtqSQ0CIANFIAYgB09yDQZBlJHAAEEuQcSRwAAQPgALQdSQwABBLkGEkcAAED4AC0GUkcAAQS5BxJHAABA+AAtB1JDAAEEuQYSRwAAQPgALIAcgASAIQQFxckECcjYCACABIAZqIgUgBCABayIBQQFyNgIEQdiZwAAgATYCAEHgmcAAIAU2AgALIAZFDQAgAAwDCyADEAIiAUUNASADQXxBeCAHKAIAIgJBA3EbIAJBeHFqIgIgAiADSxsiAgRAIAEgACAC/AoAAAsgASECCyAAEAgLIAILCxMAIABB1JHAADYCBCAAIAE2AgALEAAgASAAKAIAIAAoAgQQQwtfAQF/AkACQCAAQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABak8EQCACQQAgAyABQSdqSxsNASAAEAgMAgtB1JDAAEEuQYSRwAAQPgALQZSRwABBLkHEkcAAED4ACwsPACAAQeSPwAAgASACEAoLDgBBp5LAAEErIAAQPgALEgBBmpTAAEHzAEGsicAAECkACxkAAn8gAUEJTwRAIAEgABAQDAELIAAQAgsLPgACQAJ/IAFBCU8EQCABIAAQEAwBCyAAEAILIgFFDQAgAUEEay0AAEEDcUUgAEVyDQAgAUEAIAD8CwALIAELDAAgACABKQIANwMACz0BAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqIgAoAgAgACgCBEGglsAAKAIAIgBBAyAAGxEAAAALDQAgAUHQlcAAQRgQCQsNACABQbCVwABBIBAJCwwAQfiZwABBAToAAAsJACAAQQA2AgALBwBB6JXAAAsLhBYDAEGAgMAAC+gVFnNsaWNlIGluZGV4IHN0YXJ0cyBhdCDADSBidXQgZW5kcyBhdCDAACBpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIMASIGJ1dCB0aGUgaW5kZXggaXMgwAAScmFuZ2Ugc3RhcnQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAASGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb246IMAAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3NoYXJlZC9zbWFsbHNvcnQucnMAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9jb3JlL3NyYy9zbGljZS9zb3J0L3N0YWJsZS9xdWlja3NvcnQucnMAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjExOC9zcmMvZXh0ZXJucmVmLnJzAC9ydXN0Yy81OTgwNzYxNmUxZmEyNTQwNzI0YmZiYWMxNGQ3OTc2ZDdlNGEzODYwL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBzcmMvbGliLnJzAAAAAA4DEAAKAAAA0gAAABkAAAAOAxAACgAAANoAAAAaAAAADgMQAAoAAADaAAAAPQAAAA4DEAAKAAAAyQAAAB0AAAAOAxAACgAAAKoAAAAQAAAADgMQAAoAAACqAAAAIgAAAA4DEAAKAAAArQAAACIAAAAOAxAACgAAABcCAAAcAAAADgMQAAoAAAALAgAAJgAAAA4DEAAKAAAA8gEAACoAAAAOAxAACgAAAPgBAAAqAAAADgMQAAoAAAD+AQAAMgAAAA4DEAAKAAAAkgEAAA8AAAAOAxAACgAAAJIBAAAsAAAADgMQAAoAAACNAQAADwAAAA4DEAAKAAAAjQEAACwAAABzb3VyY2UgaW5kZXhlcyBtdXN0IGJlIGVtcHR5IG9yIG5vbmRlY3JlYXNpbmdzYW1wbGUgdmFsdWVzIG11c3QgYmUgZmluaXRlIGFuZCBhZGRyZXNzYWJsZXNhbXBsZSBtZXRhZGF0YSBtdXN0IGJlIGZpbml0ZSBhbmQgc2FtcGxlUmF0ZSBwb3NpdGl2ZQAOAxAACgAAABYBAAAkAAAADgMQAAoAAAAuAgAAMAAAAA4DEAAKAAAALwIAAB8AAAAOAxAACgAAAC8CAAA1AAAADgMQAAoAAADWAQAAIAAAAA4DEAAKAAAAsQEAAC0AAAAOAxAACgAAALIBAAAtAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZQ4DEAAKAAAAmgIAABYAAABzdHJhdGVneSBkb2VzIG5vdCByZXR1cm4gc291cmNlIGluZGV4ZXNzdHJhdGVneSBkb2VzIG5vdCByZXR1cm4gYWdncmVnYXRlIHZhbHVlc3JlZ2lzdGVyZWQgZGF0YXNldHMgbXVzdCBjb250YWluIGZpbml0ZSBjb29yZGluYXRlc3ggYW5kIHkgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aA4DEAAKAAAAdgEAABIAAAAOAxAACgAAAHMBAAA8AAAADgMQAAoAAABMAgAAHAAAAA4DEAAKAAAATwIAACwAAAAOAxAACgAAAFACAAAdAAAADgMQAAoAAABRAgAAHQAAAA4DEAAKAAAAUgIAACUAAAABAAAADgMQAAoAAACUAAAAEgAAAA4DEAAKAAAAggAAABAAAAAOAxAACgAAAIIAAAAiAAAADgMQAAoAAACFAAAAIgAAAA4DEAAKAAAAAQEAAB0AAAAOAxAACgAAABwDAAAlAAAADgMQAAoAAABJAAAAQwAAAA4DEAAKAAAALQMAAA4AAAAOAxAACgAAACYDAAAnAAAAZGF0YXNldCBoYW5kbGUgd2FzIG5vdCBmb3VuZA4DEAAKAAAAPwMAACUAAAAOAxAACgAAAAoDAAAlAAAADgMQAAoAAABRAwAAJQAAANoBEABPAAAA3wEAABkAAABtaWQgPiBsZW4AAAB6ARAAXwAAAE0AAAAfAAAAegEQAF8AAABHAAAAFwAAAA4DEAAKAAAAfwEAABoAAAAOAxAACgAAAPMAAAAWAAAADgMQAAoAAABJAAAAQwAAAA4DEAAKAAAASQAAAEMAAAAqAhAAZwAAAHwAAAARAAAAKgIQAGcAAACJAAAAEQAAAAUAAAAMAAAABAAAAAYAAAAHAAAACAAAAAAAAAAIAAAABAAAAAkAAAAKAAAACwAAAAwAAAANAAAAEAAAAAQAAAAOAAAADwAAABAAAAARAAAAbV3L1ixQ62N4QaZXcRuLuRWiXFU0VQfUU3itgVHwo/dhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAADjAhAAKgAAALEEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAA4wIQACoAAAC3BAAADQAAAAAAAAAIAAAABAAAABIAAABBY2Nlc3NFcnJvcgAFAAAADAAAAAQAAAATAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAACSAhAAUAAAABwAAAAFAAAAfSB9Y2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZTAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5YXR0ZW1wdCB0byBjYWxjdWxhdGUgdGhlIHJlbWFpbmRlciB3aXRoIGEgZGl2aXNvciBvZiB6ZXJvdXNlci1wcm92aWRlZCBjb21wYXJpc29uIGZ1bmN0aW9uIGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgYSB0b3RhbCBvcmRlcgAaARAAXwAAAFwDAAAFAAAAUmVmQ2VsbCBhbHJlYWR5IG11dGFibHkgYm9ycm93ZWRSZWZDZWxsIGFscmVhZHkgYm9ycm93ZWQAQfCVwAALAQgAQYCWwAALAQQAfAlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuOTUuMCAoNTk4MDc2MTZlIDIwMjYtMDQtMTQpBndhbHJ1cwYwLjI2LjEMd2FzbS1iaW5kZ2VuEzAuMi4xMTggKDc1M2JiN2ZmNCkAaw90YXJnZXRfZmVhdHVyZXMGKw9tdXRhYmxlLWdsb2JhbHMrE25vbnRyYXBwaW5nLWZwdG9pbnQrC2J1bGstbWVtb3J5KwhzaWduLWV4dCsPcmVmZXJlbmNlLXR5cGVzKwptdWx0aXZhbHVl", "" + import.meta.url));
2876
- let t = Qr();
2931
+ let t = di();
2877
2932
  (typeof e == "string" || typeof Request == "function" && e instanceof Request || typeof URL == "function" && e instanceof URL) && (e = fetch(e));
2878
- let { instance: n, module: r } = await gi(await e, t);
2879
- return hi(n, r);
2933
+ let { instance: n, module: r } = await ki(await e, t);
2934
+ return Oi(n, r);
2880
2935
  }
2881
2936
  //#endregion
2882
2937
  //#region src/core/wasmSampling.ts
2883
- var vi = {
2938
+ var ji = {
2884
2939
  none: 0,
2885
2940
  peak: 1,
2886
2941
  lttb: 2,
@@ -2889,24 +2944,24 @@ var vi = {
2889
2944
  max: 5,
2890
2945
  minmax: 6,
2891
2946
  sum: 7
2892
- }, yi;
2893
- function bi(e, t) {
2947
+ }, Mi;
2948
+ function Ni(e, t) {
2894
2949
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
2895
2950
  }
2896
- function xi(e) {
2951
+ function Pi(e) {
2897
2952
  if (e.x.length !== e.y.length) throw Error("x and y must have the same length");
2898
2953
  }
2899
- function Si(e) {
2900
- return yi ??= Promise.resolve(_i(e)).then(() => void 0), yi;
2954
+ function Fi(e) {
2955
+ return Mi ??= Promise.resolve(Ai(e)).then(() => void 0), Mi;
2901
2956
  }
2902
- async function Ci(e) {
2903
- xi(e), await Si();
2904
- let t = bi(e.targetPointCount, e.x.length), n = vi[e.strategy];
2957
+ async function Ii(e) {
2958
+ Pi(e), await Fi();
2959
+ let t = Ni(e.targetPointCount, e.x.length), n = ji[e.strategy];
2905
2960
  if (e.strategy !== "average" && e.strategy !== "sum") return {
2906
2961
  kind: "source-indexes",
2907
- sourceIndexes: Zr(e.x, e.y, n, t)
2962
+ sourceIndexes: ui(e.x, e.y, n, t)
2908
2963
  };
2909
- let r = Xr(e.x, e.y, n, t), i = new Float64Array(r.length / 2), a = new Float64Array(r.length / 2);
2964
+ let r = li(e.x, e.y, n, t), i = new Float64Array(r.length / 2), a = new Float64Array(r.length / 2);
2910
2965
  for (let e = 0; e < i.length; e += 1) i[e] = r[e * 2], a[e] = r[e * 2 + 1];
2911
2966
  return {
2912
2967
  kind: "aggregates",
@@ -2914,41 +2969,41 @@ async function Ci(e) {
2914
2969
  y: a
2915
2970
  };
2916
2971
  }
2917
- async function wi(e, t) {
2972
+ async function Li(e, t) {
2918
2973
  if (e.length !== t.length) throw Error("x and y must have the same length");
2919
- await Si();
2920
- let n = Jr(e, t);
2974
+ await Fi();
2975
+ let n = si(e, t);
2921
2976
  return n.length === 4 ? {
2922
2977
  x: [n[0], n[1]],
2923
2978
  y: [n[2], n[3]]
2924
2979
  } : void 0;
2925
2980
  }
2926
- async function Ti(e, t, n) {
2981
+ async function Ri(e, t, n) {
2927
2982
  if (e.length !== t.length) throw Error("x and y must have the same length");
2928
- await Si();
2929
- let r = Yr(e, t, n[0], n[1]);
2983
+ await Fi();
2984
+ let r = ci(e, t, n[0], n[1]);
2930
2985
  return [r[0], r[1]];
2931
2986
  }
2932
2987
  //#endregion
2933
2988
  //#region src/components/core/trackPagination.ts
2934
- var Ei = (e, t) => t ? e.filter((e) => e.series.length > 0) : e, Di = (e, t, n, r, i) => {
2989
+ var zi = (e, t) => t ? e.filter((e) => e.series.length > 0) : e, Bi = (e, t, n, r, i) => {
2935
2990
  let a = t?.[i];
2936
2991
  if (a !== void 0) return a;
2937
2992
  if (e !== void 0) return n === 1 ? e : typeof e == "number" ? e + r : `${e}-${r + 1}`;
2938
- }, Oi = (e, t, n) => (r) => {
2993
+ }, Vi = (e, t, n) => (r) => {
2939
2994
  let i = n(), a = i.findIndex((e) => e.id === r);
2940
- return Di(e(), t(), i.length, a >= 0 ? a : 0, r);
2995
+ return Bi(e(), t(), i.length, a >= 0 ? a : 0, r);
2941
2996
  };
2942
2997
  //#endregion
2943
2998
  //#region src/components/core/yAxisLayoutMetrics.ts
2944
- function ki(e, t, n, r) {
2999
+ function Hi(e, t, n, r) {
2945
3000
  return e === "independent" ? Object.fromEntries(t.flatMap((e, t) => {
2946
3001
  let n = r[t];
2947
3002
  return n ? [[e.id, n]] : [];
2948
3003
  })) : n;
2949
3004
  }
2950
- function Ai(e, t, n, r, i, a, o, s) {
2951
- let c = e.filter((e) => e.visibleSeries.length > 0).flatMap((e) => pr(e, t, n, r, i)).map((e) => mr(e.domain, a, void 0, e.seriesList[0]?.unit, o, s).tickTextWidth), l = Math.max(7, ...c), u = l + 7 + 4, d = -(7 + l + 0 + 20 / 2);
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);
2952
3007
  return {
2953
3008
  tickClearance: u,
2954
3009
  fullClearance: l + 7 + 0 + 20 + 4,
@@ -2957,7 +3012,7 @@ function Ai(e, t, n, r, i, a, o, s) {
2957
3012
  }
2958
3013
  //#endregion
2959
3014
  //#region src/components/core/useWaveformLayout.ts
2960
- function ji(e) {
3015
+ function Wi(e) {
2961
3016
  let { props: n, preparedSeries: r, currentPage: i, hiddenSeriesIdSet: a, chartWidth: o, innerHeight: s, isCleanView: c, sharedTransform: l, independentTransforms: u, sharedYDomains: d, independentYDomains: f, annotationInteraction: p, linePointOverrides: m } = e, h = t(() => r.value.map((e, t) => ({
2962
3017
  ...e,
2963
3018
  color: e.color ?? (t === 0 ? n.lineColor : Ut[t % Ut.length])
@@ -2980,10 +3035,10 @@ function ji(e) {
2980
3035
  yDomain: o.length ? _t(o) : [0, 1]
2981
3036
  };
2982
3037
  });
2983
- }), v = t(() => Dn(n.rendering)), y = t(() => Ei(_.value, g.value.hideEmptyTracks)), b = t(() => Un(y.value.length, g.value)), x = t(() => Wn(y.value, i.value, g.value)), S = t(() => {
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(() => {
2984
3039
  let e = x.value.filter((e) => e.series.length > 0);
2985
3040
  return g.value.fillIncompleteLastRow && e.length > 0 ? e : x.value;
2986
- }), C = t(() => or(s.value, n.axes?.y?.splitNumber)), w = t(() => ki(n.displayMode, _.value, d.value, f.value)), T = t(() => Ai(_.value, n.overlayMode, n.yDomain, n.yDomains, w.value, n.axes?.y?.nice !== !1, C.value, n.displayMode === "compact")), E = t(() => _.value.some((e) => e.visibleSeries.length === 1 && !!(e.visibleSeries[0]?.name.trim() || n.yLabel))), D = t(() => _.value.some((e) => e.visibleSeries.length > 0)), O = t(() => Math.max(zt.left, E.value ? T.value.fullClearance : D.value ? T.value.tickClearance : 0)), k = t(() => hr(S.value.filter((e) => e.visibleSeries.length > 0), n.overlayMode, n.yDomain, n.yDomains, C.value, n.axes?.y?.nice !== !1, n.displayMode === "compact", w.value)), A = t(() => n.overlayMode === "multi-axis" ? Math.max(O.value, k.value.clearance.left) : O.value), j = t(() => n.overlayMode === "multi-axis" ? Math.max(zt.right, k.value.clearance.right) : zt.right), M = t(() => Math.max(0, o.value - A.value - j.value)), N = t(() => {
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(() => {
2987
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;
2988
3043
  return {
2989
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,
@@ -2996,14 +3051,14 @@ function ji(e) {
2996
3051
  }), _t(e);
2997
3052
  }), B = t(() => {
2998
3053
  let e = n.initialXDomain;
2999
- return e && Number.isFinite(e[0]) && Number.isFinite(e[1]) && e[0] !== e[1] ? Qn(e[0] < e[1] ? e : [e[1], e[0]], n.xDomainStrategy, !0) : Qn(z.value, n.xDomainStrategy);
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);
3000
3055
  }), V = (e) => {
3001
3056
  let t = n.initialXDomains?.[e.series?.trackId ?? e.series?.id ?? e.id] ?? (e.series ? n.initialXDomains?.[e.series.id] : void 0) ?? n.initialXDomain;
3002
- return t && Number.isFinite(t[0]) && Number.isFinite(t[1]) && t[0] !== t[1] ? Qn(t[0] < t[1] ? t : [t[1], t[0]], n.xDomainStrategy, !0) : Qn(_t(e.seriesList.flatMap((e) => e.xDomain)), n.xDomainStrategy);
3003
- }, H = t(() => l.value.rescaleX(W(B.value, [0, M.value])).domain()), U = t(() => Kn(M.value, s.value, g.value, n.displayMode, S.value.map(Boolean), N.value.horizontalGap).map((e, t) => ({
3057
+ 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) => ({
3004
3059
  ...e,
3005
3060
  series: S.value[t]
3006
- }))), G = t(() => er({
3061
+ }))), G = t(() => fr({
3007
3062
  cells: U.value,
3008
3063
  grid: g.value,
3009
3064
  displayMode: n.displayMode,
@@ -3013,6 +3068,7 @@ function ji(e) {
3013
3068
  initialXDomain: n.initialXDomain ? B.value : void 0,
3014
3069
  initialXDomains: n.initialXDomains,
3015
3070
  xDomainStrategy: n.xDomainStrategy,
3071
+ integerZoom: n.integerZoom,
3016
3072
  fixedYDomain: n.yDomain,
3017
3073
  fixedYDomains: n.yDomains,
3018
3074
  yDomains: w.value,
@@ -3066,16 +3122,16 @@ function ji(e) {
3066
3122
  unit: t.unit
3067
3123
  } : void 0;
3068
3124
  }),
3069
- resolveFrameNumber: Oi(() => n.frameNumber, () => n.frameNumbers, () => _.value)
3125
+ resolveFrameNumber: Vi(() => n.frameNumber, () => n.frameNumbers, () => _.value)
3070
3126
  };
3071
3127
  }
3072
- var Mi = 1e-6;
3073
- function Ni(e) {
3128
+ var Gi = 1e-6;
3129
+ function Ki(e) {
3074
3130
  return Number.isFinite(e) ? Math.max(1, e) : 1;
3075
3131
  }
3076
- function Pi({ naturalWidth: e, naturalHeight: t, availableWidth: n, rotation: r }) {
3077
- let i = Ni(e), a = Ni(t), o = Ni(n), s = Number.isFinite(r) ? r : 0, c = s * Math.PI / 180, l = Math.abs(Math.cos(c)), u = Math.abs(Math.sin(c)), d = (s % 360 + 360) % 360;
3078
- if (!(d > Mi && Math.abs(d - 360) > Mi)) {
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)) {
3079
3135
  let e = Math.max(1, Math.ceil(i / o)), t = o, n = a * e;
3080
3136
  return {
3081
3137
  textWidth: t,
@@ -3100,17 +3156,19 @@ function Pi({ naturalWidth: e, naturalHeight: t, availableWidth: n, rotation: r
3100
3156
  }
3101
3157
  //#endregion
3102
3158
  //#region src/components/core/useWaveformPresentation.ts
3103
- function Fi(e) {
3159
+ function Ji(e) {
3104
3160
  let { props: n, observedWidth: r, observedHeight: i, measuredTitleWidth: a, measuredTitleHeight: o, internalHiddenSeriesIds: s, paginationBandHeight: c } = e, l = t(() => Number.isFinite(n.width) ? Math.max(0, n.width ?? 0) : void 0), u = t(() => Number.isFinite(n.height) ? Math.max(180, n.height ?? 0) : void 0), d = t(() => r.value > 0 ? r.value : l.value ?? 0), f = t(() => i.value > 0 ? i.value : u.value ?? 180), p = t(() => ({
3105
3161
  width: l.value === void 0 ? "100%" : `${l.value}px`,
3106
3162
  height: u.value === void 0 ? "100%" : `${u.value}px`
3107
3163
  })), m = t(() => n.cleanView === !0), h = t(() => n.presentationMode === !0), g = t(() => {
3108
- let e = n.zeroLine.width;
3164
+ let e = n.zeroLine.width, t = n.zeroLine.opacity, r = n.zeroLine.boundaryThreshold;
3109
3165
  return {
3110
3166
  visible: n.zeroLine.visible !== !1,
3111
3167
  color: n.zeroLine.color || Gt.COLOR,
3112
3168
  width: typeof e == "number" && Number.isFinite(e) && e > 0 ? e : Gt.WIDTH,
3113
- dash: n.zeroLine.dash ?? Gt.DASH
3169
+ dash: n.zeroLine.dash ?? Gt.DASH,
3170
+ opacity: typeof t == "number" && Number.isFinite(t) && t >= 0 && t <= 1 ? t : Gt.OPACITY,
3171
+ boundaryThreshold: typeof r == "number" && Number.isFinite(r) && r >= 0 ? r : Gt.BOUNDARY_THRESHOLD
3114
3172
  };
3115
3173
  }), _ = t(() => n.legend.backgroundColor || "rgba(255, 255, 255, 0.7)"), v = t(() => n.legend.interactive === !0), y = t(() => n.hiddenSeriesIds === void 0 ? s.value : new Set(n.hiddenSeriesIds)), b = t(() => Array.from(y.value)), x = (e) => n.legend.trackPositions?.[e] ?? n.legend.position ?? "top-right", S = (e) => {
3116
3174
  let t = n.legend.orientation ?? "auto";
@@ -3145,7 +3203,7 @@ function Fi(e) {
3145
3203
  maxWidth: O.value ? "none" : `${j.value}px`,
3146
3204
  whiteSpace: O.value ? "nowrap" : "normal",
3147
3205
  overflowWrap: O.value ? "normal" : "anywhere"
3148
- })), N = t(() => Pi({
3206
+ })), N = t(() => qi({
3149
3207
  naturalWidth: a.value || A.value,
3150
3208
  naturalHeight: o.value || E.value * 1.2,
3151
3209
  availableWidth: j.value,
@@ -3201,66 +3259,66 @@ function Fi(e) {
3201
3259
  }
3202
3260
  //#endregion
3203
3261
  //#region src/core/samplingReferenceValues.ts
3204
- function Ii(e, t) {
3262
+ function Yi(e, t) {
3205
3263
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
3206
3264
  }
3207
- function Li(e, t, n, r) {
3265
+ function Xi(e, t, n, r) {
3208
3266
  let i = r - n;
3209
3267
  return {
3210
3268
  start: n + Math.floor(e * i / t),
3211
3269
  end: n + Math.floor((e + 1) * i / t)
3212
3270
  };
3213
3271
  }
3214
- function Ri(e, t) {
3272
+ function Zi(e, t) {
3215
3273
  e[e.length - 1] !== t && e.push(t);
3216
3274
  }
3217
- function zi(e, t, n) {
3275
+ function Qi(e, t, n) {
3218
3276
  if (e <= t) return Array.from({ length: e }, (e, t) => t);
3219
3277
  if (t === 1) return [0];
3220
3278
  if (t === 2) return [0, e - 1];
3221
3279
  let r = [0];
3222
- return n().forEach((e) => Ri(r, e)), Ri(r, e - 1), r;
3280
+ return n().forEach((e) => Zi(r, e)), Zi(r, e - 1), r;
3223
3281
  }
3224
- function Bi(e, t, n) {
3282
+ function $i(e, t, n) {
3225
3283
  let r = n === "minmax" ? Math.floor((t - 2) / 2) : Math.max(0, t - 2);
3226
- return zi(e.length, t, () => {
3284
+ return Qi(e.length, t, () => {
3227
3285
  if (!r) return [];
3228
3286
  let t = [];
3229
3287
  for (let i = 0; i < r; i += 1) {
3230
- let a = Li(i, r, 1, e.length - 1), o = a.start, s = a.start;
3288
+ let a = Xi(i, r, 1, e.length - 1), o = a.start, s = a.start;
3231
3289
  for (let t = a.start + 1; t < a.end; t += 1) e[t] < e[o] && (o = t), e[t] > e[s] && (s = t);
3232
- n === "min" ? Ri(t, o) : n === "max" ? Ri(t, s) : o <= s ? (Ri(t, o), Ri(t, s)) : (Ri(t, s), Ri(t, o));
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));
3233
3291
  }
3234
3292
  return t;
3235
3293
  });
3236
3294
  }
3237
- function Vi(e, t) {
3295
+ function ea(e, t) {
3238
3296
  let n = Math.floor((t - 2) / 4);
3239
- return zi(e.length, t, () => {
3297
+ return Qi(e.length, t, () => {
3240
3298
  if (!n) return [];
3241
3299
  let t = [];
3242
3300
  for (let r = 0; r < n; r += 1) {
3243
- let i = Li(r, n, 1, e.length - 1), a = i.start, o = i.start;
3301
+ let i = Xi(r, n, 1, e.length - 1), a = i.start, o = i.start;
3244
3302
  for (let t = i.start + 1; t < i.end; t += 1) e[t] < e[a] && (a = t), e[t] > e[o] && (o = t);
3245
3303
  [
3246
3304
  i.start,
3247
3305
  a,
3248
3306
  o,
3249
3307
  i.end - 1
3250
- ].sort((e, t) => e - t).forEach((e) => Ri(t, e));
3308
+ ].sort((e, t) => e - t).forEach((e) => Zi(t, e));
3251
3309
  }
3252
3310
  return t;
3253
3311
  });
3254
3312
  }
3255
- function Hi(e, t, n) {
3256
- return zi(e.length, n, () => {
3313
+ function ta(e, t, n) {
3314
+ return Qi(e.length, n, () => {
3257
3315
  let r = (e.length - 2) / (n - 2), i = [], a = 0;
3258
3316
  for (let o = 0; o < n - 2; o += 1) {
3259
3317
  let s = Math.min(e.length, Math.floor((o + 1) * r) + 1), c = Math.min(e.length, Math.floor((o + 2) * r) + 1), l = 0, u = 0;
3260
3318
  for (let n = s; n < c; n += 1) l += e[n], u += t[n];
3261
3319
  let d = c - s;
3262
3320
  d ? (l /= d, u /= d) : (l = e[e.length - 1], u = t[t.length - 1]);
3263
- let f = Li(o, n - 2, 1, e.length - 1), p = f.start, m = -1;
3321
+ let f = Xi(o, n - 2, 1, e.length - 1), p = f.start, m = -1;
3264
3322
  for (let n = f.start; n < f.end; n += 1) {
3265
3323
  let r = Math.abs((e[a] - l) * (t[n] - t[a]) - (e[a] - e[n]) * (u - t[a]));
3266
3324
  r > m && (m = r, p = n);
@@ -3270,10 +3328,10 @@ function Hi(e, t, n) {
3270
3328
  return i;
3271
3329
  });
3272
3330
  }
3273
- function Ui(e, t, n, r) {
3274
- let i = Ii(n, e.length), a = new Float64Array(i), o = new Float64Array(i);
3331
+ function na(e, t, n, r) {
3332
+ let i = Yi(n, e.length), a = new Float64Array(i), o = new Float64Array(i);
3275
3333
  for (let n = 0; n < i; n += 1) {
3276
- let s = Li(n, i, 0, e.length);
3334
+ let s = Xi(n, i, 0, e.length);
3277
3335
  for (let r = s.start; r < s.end; r += 1) a[n] += e[r], o[n] += t[r];
3278
3336
  let c = s.end - s.start;
3279
3337
  a[n] /= c, r === "average" && (o[n] /= c);
@@ -3284,10 +3342,10 @@ function Ui(e, t, n, r) {
3284
3342
  y: o
3285
3343
  };
3286
3344
  }
3287
- function Wi(e, t, n, r) {
3345
+ function ra(e, t, n, r) {
3288
3346
  if (e.length !== t.length) throw Error("x and y must have the same length");
3289
- if (n === "average" || n === "sum") return Ui(e, t, r, n);
3290
- let i = Ii(r, e.length), a = n === "none" || e.length <= i ? Array.from({ length: e.length }, (e, t) => t) : n === "peak" ? Vi(t, i) : n === "lttb" ? Hi(e, t, i) : Bi(t, i, n);
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);
3291
3349
  return {
3292
3350
  kind: "source-indexes",
3293
3351
  sourceIndexes: Uint32Array.from(a)
@@ -3295,41 +3353,41 @@ function Wi(e, t, n, r) {
3295
3353
  }
3296
3354
  //#endregion
3297
3355
  //#region src/core/workerSampling/javascriptBackend.ts
3298
- var Gi = {
3356
+ var ia = {
3299
3357
  kind: "javascript",
3300
3358
  sample(e) {
3301
- return Wi(e.x, e.y, e.strategy, e.targetPointCount);
3359
+ return ra(e.x, e.y, e.strategy, e.targetPointCount);
3302
3360
  }
3303
- }, Ki = 8 * 1024 * 1024;
3304
- function qi(e, t) {
3361
+ }, aa = 8 * 1024 * 1024;
3362
+ function oa(e, t) {
3305
3363
  return t === 0 ? 0 : Number.isFinite(e) ? Math.min(t, Math.max(1, Math.floor(e))) : t;
3306
3364
  }
3307
- function Ji(e, t, n, r) {
3365
+ function sa(e, t, n, r) {
3308
3366
  let i = r - n;
3309
3367
  return {
3310
3368
  start: n + Math.floor(e * i / t),
3311
3369
  end: n + Math.floor((e + 1) * i / t)
3312
3370
  };
3313
3371
  }
3314
- function Yi(e, t) {
3372
+ function ca(e, t) {
3315
3373
  e[e.length - 1] !== t && e.push(t);
3316
3374
  }
3317
- function Xi(e) {
3375
+ function la(e) {
3318
3376
  return "minimumIndexes" in e ? e.minimumIndexes.byteLength + e.maximumIndexes.byteLength : e.x.byteLength + e.y.byteLength + e.count.byteLength;
3319
3377
  }
3320
- function Zi(e, t) {
3378
+ function ua(e, t) {
3321
3379
  let n = 1;
3322
3380
  for (; n * 2 <= t && e % (n * 2) == 0;) n *= 2;
3323
3381
  return n;
3324
3382
  }
3325
- var Qi = class {
3383
+ var da = class {
3326
3384
  points;
3327
3385
  extremaLayers = [];
3328
3386
  sumLayers = [];
3329
3387
  indexBytes = 0;
3330
3388
  maxBytes;
3331
3389
  constructor(e, t = {}) {
3332
- this.points = e, this.maxBytes = Number.isFinite(t.maxBytes) ? Math.max(0, Math.floor(t.maxBytes ?? 0)) : Ki;
3390
+ this.points = e, this.maxBytes = Number.isFinite(t.maxBytes) ? Math.max(0, Math.floor(t.maxBytes ?? 0)) : aa;
3333
3391
  }
3334
3392
  get byteLength() {
3335
3393
  return this.indexBytes;
@@ -3338,7 +3396,7 @@ var Qi = class {
3338
3396
  this.extremaLayers.length = 0, this.sumLayers.length = 0, this.indexBytes = 0;
3339
3397
  }
3340
3398
  sample(e, t, n, r) {
3341
- let i = Math.max(0, Math.min(this.points.length, Math.floor(e))), a = Math.max(i, Math.min(this.points.length, Math.floor(t))), o = a - i, s = qi(r, o);
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);
3342
3400
  if (n !== "lttb") return n === "average" || n === "sum" ? this.aggregate(i, a, s, n) : n === "none" || o <= s ? this.allIndexes(i, a) : s === 1 ? this.indexes([i]) : s === 2 ? this.indexes([i, a - 1]) : this.extrema(i, a, s, n);
3343
3401
  }
3344
3402
  allIndexes(e, t) {
@@ -3358,24 +3416,24 @@ var Qi = class {
3358
3416
  if (i === 0) return this.indexes([e, t - 1]);
3359
3417
  let a = [e];
3360
3418
  for (let n = 0; n < i; n += 1) {
3361
- let o = Ji(n, i, e + 1, t - 1), s = this.queryExtrema(o.start, o.end);
3419
+ let o = sa(n, i, e + 1, t - 1), s = this.queryExtrema(o.start, o.end);
3362
3420
  if (!s) return;
3363
- if (r === "min") Yi(a, s.minimum);
3364
- else if (r === "max") Yi(a, s.maximum);
3365
- else if (r === "minmax") s.minimum <= s.maximum ? (Yi(a, s.minimum), Yi(a, s.maximum)) : (Yi(a, s.maximum), Yi(a, s.minimum));
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));
3366
3424
  else for (let e of [
3367
3425
  o.start,
3368
3426
  s.minimum,
3369
3427
  s.maximum,
3370
3428
  o.end - 1
3371
- ].sort((e, t) => e - t)) Yi(a, e);
3429
+ ].sort((e, t) => e - t)) ca(a, e);
3372
3430
  }
3373
- return Yi(a, t - 1), this.indexes(a);
3431
+ return ca(a, t - 1), this.indexes(a);
3374
3432
  }
3375
3433
  aggregate(e, t, n, r) {
3376
3434
  let i = new Float64Array(n), a = new Float64Array(n);
3377
3435
  for (let o = 0; o < n; o += 1) {
3378
- let s = Ji(o, n, e, t), c = this.querySum(s.start, s.end);
3436
+ let s = sa(o, n, e, t), c = this.querySum(s.start, s.end);
3379
3437
  if (!c || c.count === 0) return;
3380
3438
  i[o] = c.x / c.count, a[o] = r === "average" ? c.y / c.count : c.y;
3381
3439
  }
@@ -3390,7 +3448,7 @@ var Qi = class {
3390
3448
  if (!this.ensureExtrema(n)) return;
3391
3449
  let r = e, i = e;
3392
3450
  for (let n = e; n < t;) {
3393
- let e = Zi(n, t - n), a = Math.floor(Math.log2(e)), o = n / e, s = this.extremaLayers[a], c = s ? s.minimumIndexes[o] : n, l = s ? s.maximumIndexes[o] : n;
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;
3394
3452
  this.isMinimum(c, r) && (r = c), this.isMaximum(l, i) && (i = l), n += e;
3395
3453
  }
3396
3454
  return {
@@ -3403,7 +3461,7 @@ var Qi = class {
3403
3461
  if (!this.ensureSum(n)) return;
3404
3462
  let r = 0, i = 0, a = 0;
3405
3463
  for (let n = e; n < t;) {
3406
- let e = Zi(n, t - n), o = Math.floor(Math.log2(e)), s = n / e, c = this.sumLayers[o];
3464
+ let e = ua(n, t - n), o = Math.floor(Math.log2(e)), s = n / e, c = this.sumLayers[o];
3407
3465
  if (c) r += c.x[s], i += c.y[s], a += c.count[s];
3408
3466
  else {
3409
3467
  let e = this.points[n];
@@ -3424,7 +3482,7 @@ var Qi = class {
3424
3482
  minimumIndexes: new Uint32Array(e),
3425
3483
  maximumIndexes: new Uint32Array(e)
3426
3484
  };
3427
- if (!this.reserve(Xi(n))) return !1;
3485
+ if (!this.reserve(la(n))) return !1;
3428
3486
  let r = this.extremaLayers[t - 1];
3429
3487
  for (let t = 0; t < e; t += 1) {
3430
3488
  let e = t * 2, i = e + 1, a = r ? r.minimumIndexes[e] : e, o = r ? r.maximumIndexes[e] : e, s = r ? i < r.minimumIndexes.length : i < this.points.length, c = r && s ? r.minimumIndexes[i] : i, l = r && s ? r.maximumIndexes[i] : i;
@@ -3442,7 +3500,7 @@ var Qi = class {
3442
3500
  y: new Float64Array(e),
3443
3501
  count: new Uint32Array(e)
3444
3502
  };
3445
- if (!this.reserve(Xi(n))) return !1;
3503
+ if (!this.reserve(la(n))) return !1;
3446
3504
  let r = this.sumLayers[t - 1];
3447
3505
  for (let t = 0; t < e; t += 1) {
3448
3506
  let e = t * 2, i = e + 1;
@@ -3467,8 +3525,8 @@ var Qi = class {
3467
3525
  let n = this.points[e], r = this.points[t];
3468
3526
  return n.y > r.y || n.y === r.y && e < t;
3469
3527
  }
3470
- }, $i = 1e3, ea = L((e) => e.x);
3471
- function ta(e) {
3528
+ }, fa = 1e3, pa = L((e) => e.x);
3529
+ function ma(e) {
3472
3530
  let t = [], n = !0, r = -Infinity;
3473
3531
  for (let i of e) !Number.isFinite(i.x) || !Number.isFinite(i.y) || (i.x < r && (n = !1), r = i.x, t.push({
3474
3532
  x: i.x,
@@ -3479,7 +3537,7 @@ function ta(e) {
3479
3537
  }));
3480
3538
  return n || t.sort((e, t) => e.x - t.x), t;
3481
3539
  }
3482
- function na(e, t) {
3540
+ function ha(e, t) {
3483
3541
  let n = Infinity, r = -Infinity, i = Infinity, a = -Infinity;
3484
3542
  for (let t of e) n = Math.min(n, t.x), r = Math.max(r, t.x), i = Math.min(i, t.y), a = Math.max(a, t.y);
3485
3543
  return {
@@ -3489,7 +3547,7 @@ function na(e, t) {
3489
3547
  yDomain: e.length ? [i, a] : null
3490
3548
  };
3491
3549
  }
3492
- function ra(e, t, n = e.length) {
3550
+ function ga(e, t, n = e.length) {
3493
3551
  let r = Infinity, i = -Infinity, a = Infinity, o = -Infinity;
3494
3552
  for (let n = 0; n < e.length; n += 1) r = Math.min(r, e[n]), i = Math.max(i, e[n]), a = Math.min(a, t[n]), o = Math.max(o, t[n]);
3495
3553
  return {
@@ -3499,39 +3557,39 @@ function ra(e, t, n = e.length) {
3499
3557
  yDomain: e.length ? [a, o] : null
3500
3558
  };
3501
3559
  }
3502
- function ia(e, t) {
3560
+ function _a(e, t) {
3503
3561
  return e ? e.revision === t ? "ok" : "stale-revision" : "not-found";
3504
3562
  }
3505
- function aa(e) {
3563
+ function va(e) {
3506
3564
  return e === "auto" ? "peak" : e;
3507
3565
  }
3508
- function oa(e) {
3566
+ function ya(e) {
3509
3567
  if (Number.isFinite(e.maxPointCount) && (e.maxPointCount ?? 0) >= 1) return Math.floor(e.maxPointCount);
3510
3568
  let t = Number.isFinite(e.plotWidth) ? Math.max(0, e.plotWidth) : 0, n = Number.isFinite(e.maxPointsPerPixel) ? Math.max(0, e.maxPointsPerPixel ?? 0) : 4;
3511
3569
  return Math.max(1, Math.floor(t * n));
3512
3570
  }
3513
- function sa(e, t) {
3571
+ function ba(e, t) {
3514
3572
  if (e.mode === "raw") return !0;
3515
3573
  if (e.mode !== "auto") return !1;
3516
- let n = Number.isFinite(e.autoThreshold) ? Math.max(1, Math.floor(e.autoThreshold ?? 0)) : $i;
3574
+ let n = Number.isFinite(e.autoThreshold) ? Math.max(1, Math.floor(e.autoThreshold ?? 0)) : fa;
3517
3575
  if (!e.previousSelectedMode) return t <= n;
3518
3576
  let r = Number.isFinite(e.autoHysteresis) ? Math.max(0, Math.floor(e.autoHysteresis ?? 0)) : 0;
3519
3577
  return e.previousSelectedMode === "raw" ? t <= n + r : t <= Math.max(0, n - r);
3520
3578
  }
3521
- function ca(e, t) {
3579
+ function xa(e, t) {
3522
3580
  let n = e[0], r = e.at(-1);
3523
- return Number.isFinite(t) && n && r && t >= n.x && t <= r.x ? e[ea.center(e, t)] : void 0;
3581
+ return Number.isFinite(t) && n && r && t >= n.x && t <= r.x ? e[pa.center(e, t)] : void 0;
3524
3582
  }
3525
- function la(e) {
3583
+ function Sa(e) {
3526
3584
  return e ? e.kind === "source-indexes" ? e.sourceIndexes.length : e.x.length : 0;
3527
3585
  }
3528
- function ua(e, t) {
3586
+ function Ca(e, t) {
3529
3587
  return e.kind === "aggregates" ? e : {
3530
3588
  kind: "source-indexes",
3531
3589
  sourceIndexes: Uint32Array.from(e.sourceIndexes, (e) => e + t)
3532
3590
  };
3533
3591
  }
3534
- function da(e, t, n, r, i) {
3592
+ function wa(e, t, n, r, i) {
3535
3593
  return [
3536
3594
  e.datasetId,
3537
3595
  e.revision,
@@ -3551,14 +3609,14 @@ function da(e, t, n, r, i) {
3551
3609
  e.errorBarMinSpacing ?? 0
3552
3610
  ].join("\0");
3553
3611
  }
3554
- function fa(e, t, n, r, i, a, o, s) {
3612
+ function Ta(e, t, n, r, i, a, o, s) {
3555
3613
  return {
3556
3614
  seriesId: e.seriesId,
3557
3615
  datasetId: e.datasetId,
3558
3616
  mode: e.mode,
3559
3617
  selectedMode: i,
3560
3618
  backend: r,
3561
- strategy: aa(e.strategy),
3619
+ strategy: va(e.strategy),
3562
3620
  sourcePointCount: t,
3563
3621
  visiblePointCount: n,
3564
3622
  renderedPointCount: o,
@@ -3574,18 +3632,18 @@ function fa(e, t, n, r, i, a, o, s) {
3574
3632
  }
3575
3633
  //#endregion
3576
3634
  //#region src/core/workerSampling/repositoryDataset.ts
3577
- function pa(e) {
3635
+ function Ea(e) {
3578
3636
  return e?.y.length ?? 0;
3579
3637
  }
3580
- function ma(e, t) {
3638
+ function Da(e, t) {
3581
3639
  return e.x ? e.x[t] : e.sampleStartTime + (e.sampleSourceIndexes?.[t] ?? t) / e.sampleRate;
3582
3640
  }
3583
- function ha(e, t) {
3641
+ function Oa(e, t) {
3584
3642
  let n = (t, n) => {
3585
- let r = 0, i = pa(e);
3643
+ let r = 0, i = Ea(e);
3586
3644
  for (; r < i;) {
3587
3645
  let a = r + Math.floor((i - r) / 2);
3588
- (n ? ma(e, a) <= t : ma(e, a) < t) ? r = a + 1 : i = a;
3646
+ (n ? Da(e, a) <= t : Da(e, a) < t) ? r = a + 1 : i = a;
3589
3647
  }
3590
3648
  return r;
3591
3649
  }, r = Math.min(t[0], t[1]), i = Math.max(t[0], t[1]);
@@ -3594,13 +3652,13 @@ function ha(e, t) {
3594
3652
  end: n(i, !0)
3595
3653
  };
3596
3654
  }
3597
- function ga(e, t, n) {
3598
- return e.x ? e.x.subarray(t, n) : Float64Array.from({ length: n - t }, (n, r) => ma(e, t + r));
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));
3599
3657
  }
3600
- function _a(e) {
3658
+ function Aa(e) {
3601
3659
  return e?.kind === "wasm" && "registerDataset" in e && "disposeDataset" in e && "disposeAllDatasets" in e && "datasetIndexBytes" in e && "registerSamples" in e && "sampleDataset" in e;
3602
3660
  }
3603
- function va(e, t) {
3661
+ function ja(e, t) {
3604
3662
  let n = [], r = Math.min(e.length, t.length);
3605
3663
  for (let i = 0; i < r; i += 1) Number.isFinite(e[i]) && Number.isFinite(t[i]) && n.push(i);
3606
3664
  return n.sort((t, n) => e[t] - e[n] || t - n), {
@@ -3608,14 +3666,14 @@ function va(e, t) {
3608
3666
  y: Float64Array.from(n, (e) => t[e])
3609
3667
  };
3610
3668
  }
3611
- function ya(e, t, n, r) {
3669
+ function Ma(e, t, n, r) {
3612
3670
  if (t?.kind === "typed") {
3613
- let e = va(t.x, t.y);
3671
+ let e = ja(t.x, t.y);
3614
3672
  return {
3615
3673
  x: e.x,
3616
3674
  y: e.y,
3617
3675
  revision: n,
3618
- metrics: ra(e.x, e.y, Math.max(t.x.length, t.y.length))
3676
+ metrics: ga(e.x, e.y, Math.max(t.x.length, t.y.length))
3619
3677
  };
3620
3678
  }
3621
3679
  if (t?.kind === "samples") {
@@ -3649,35 +3707,35 @@ function ya(e, t, n, r) {
3649
3707
  }
3650
3708
  };
3651
3709
  }
3652
- let i = ta(e ?? t?.points ?? []);
3710
+ let i = ma(e ?? t?.points ?? []);
3653
3711
  return {
3654
3712
  x: Float64Array.from(i, (e) => e.x),
3655
3713
  y: Float64Array.from(i, (e) => e.y),
3656
3714
  points: i,
3657
3715
  revision: n,
3658
- metrics: na(i, e?.length ?? t?.points.length ?? 0),
3659
- index: new Qi(i, { maxBytes: r })
3716
+ metrics: ha(i, e?.length ?? t?.points.length ?? 0),
3717
+ index: new da(i, { maxBytes: r })
3660
3718
  };
3661
3719
  }
3662
- function ba(e, t, n) {
3663
- !_a(e) || t.wasmDatasetHandle !== void 0 || (t.wasmDatasetHandle = t.x ? e.registerDataset(t.x, t.y, n) : e.registerSamples(t.y, t.sampleSourceIndexes, t.sampleStartTime, t.sampleRate, n), t.wasmIndexBytes = e.datasetIndexBytes(t.wasmDatasetHandle));
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));
3664
3722
  }
3665
- function xa(e, t) {
3666
- t.index?.dispose(), t.wasmDatasetHandle !== void 0 && _a(e) && e.disposeDataset(t.wasmDatasetHandle);
3723
+ function Pa(e, t) {
3724
+ t.index?.dispose(), t.wasmDatasetHandle !== void 0 && Aa(e) && e.disposeDataset(t.wasmDatasetHandle);
3667
3725
  }
3668
3726
  //#endregion
3669
3727
  //#region src/core/workerSampling/samplingCache.ts
3670
- var Sa = 96, Ca = 16 * 1024 * 1024;
3671
- function wa(e) {
3728
+ var Fa = 96, Ia = 16 * 1024 * 1024;
3729
+ function La(e) {
3672
3730
  return e.kind === "source-indexes" ? e.sourceIndexes.byteLength : e.x.byteLength + e.y.byteLength;
3673
3731
  }
3674
- var Ta = class {
3732
+ var Ra = class {
3675
3733
  entries = /* @__PURE__ */ new Map();
3676
3734
  bytes = 0;
3677
3735
  maxEntries;
3678
3736
  maxBytes;
3679
3737
  constructor(e = {}) {
3680
- this.maxEntries = Number.isFinite(e.maxEntries) ? Math.max(0, Math.floor(e.maxEntries ?? 0)) : Sa, this.maxBytes = Number.isFinite(e.maxBytes) ? Math.max(0, Math.floor(e.maxBytes ?? 0)) : Ca;
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;
3681
3739
  }
3682
3740
  get metrics() {
3683
3741
  return {
@@ -3692,7 +3750,7 @@ var Ta = class {
3692
3750
  if (t) return this.entries.delete(e), this.entries.set(e, t), t.output;
3693
3751
  }
3694
3752
  set(e, t) {
3695
- let n = wa(t);
3753
+ let n = La(t);
3696
3754
  if (n > this.maxBytes || this.maxEntries === 0) return;
3697
3755
  let r = this.entries.get(e);
3698
3756
  for (r && (this.bytes -= r.bytes, this.entries.delete(e)), this.entries.set(e, {
@@ -3712,14 +3770,14 @@ var Ta = class {
3712
3770
  clear() {
3713
3771
  this.entries.clear(), this.bytes = 0;
3714
3772
  }
3715
- }, Ea = class {
3773
+ }, za = class {
3716
3774
  datasets = /* @__PURE__ */ new Map();
3717
3775
  javascriptBackend;
3718
3776
  cache;
3719
3777
  indexMaxBytes;
3720
3778
  wasmBackend;
3721
3779
  constructor(e = {}) {
3722
- this.javascriptBackend = e.javascriptBackend ?? Gi, this.wasmBackend = e.wasmBackend, this.indexMaxBytes = e.indexMaxBytes, this.cache = new Ta({
3780
+ this.javascriptBackend = e.javascriptBackend ?? ia, this.wasmBackend = e.wasmBackend, this.indexMaxBytes = e.indexMaxBytes, this.cache = new Ra({
3723
3781
  maxEntries: e.cacheMaxEntries,
3724
3782
  maxBytes: e.cacheMaxBytes
3725
3783
  });
@@ -3732,9 +3790,9 @@ var Ta = class {
3732
3790
  };
3733
3791
  }
3734
3792
  setWasmBackend(e) {
3735
- this.wasmBackend && this.wasmBackend !== e && _a(this.wasmBackend) && (this.wasmBackend.disposeAllDatasets(), this.datasets.forEach((e) => {
3793
+ this.wasmBackend && this.wasmBackend !== e && Aa(this.wasmBackend) && (this.wasmBackend.disposeAllDatasets(), this.datasets.forEach((e) => {
3736
3794
  e.wasmDatasetHandle = void 0, e.wasmIndexBytes = void 0;
3737
- })), this.wasmBackend = e, _a(e) && this.datasets.forEach((t) => ba(e, t, this.indexMaxBytes));
3795
+ })), this.wasmBackend = e, Aa(e) && this.datasets.forEach((t) => Na(e, t, this.indexMaxBytes));
3738
3796
  }
3739
3797
  handle(e) {
3740
3798
  switch (e.type) {
@@ -3750,15 +3808,15 @@ var Ta = class {
3750
3808
  register(e, t, n, r) {
3751
3809
  let i = this.datasets.get(e);
3752
3810
  if (i) return this.datasetResponse(t, e, i, "stale-revision");
3753
- let a = ya(n, r, 1, this.indexMaxBytes);
3754
- return ba(this.wasmBackend, a, this.indexMaxBytes), this.datasets.set(e, a), this.datasetResponse(t, e, a, "ok");
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");
3755
3813
  }
3756
3814
  replace(e, t, n, r, i) {
3757
- let a = this.datasets.get(e), o = ia(a, n);
3815
+ let a = this.datasets.get(e), o = _a(a, n);
3758
3816
  if (o !== "ok" || !a) return this.datasetResponse(t, e, a, o);
3759
- xa(this.wasmBackend, a), this.cache.deleteDataset(e);
3760
- let s = ya(r, i, a.revision + 1, this.indexMaxBytes);
3761
- return ba(this.wasmBackend, s, this.indexMaxBytes), this.datasets.set(e, s), this.datasetResponse(t, e, s, "ok");
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");
3762
3820
  }
3763
3821
  sample(e) {
3764
3822
  return {
@@ -3768,28 +3826,28 @@ var Ta = class {
3768
3826
  };
3769
3827
  }
3770
3828
  sampleSeries(e, t) {
3771
- let n = performance.now(), r = this.datasets.get(t.datasetId), i = ia(r, t.revision);
3829
+ let n = performance.now(), r = this.datasets.get(t.datasetId), i = _a(r, t.revision);
3772
3830
  if (i !== "ok" || !r) return this.sampleResponse(e, t, i, void 0, "unavailable", "sampled", 0, n, !1);
3773
- let a = ha(r, t.xDomain), o = a.end - a.start;
3774
- if (sa(t, o)) return this.sampleResponse(e, t, "ok", {
3831
+ let a = Oa(r, t.xDomain), o = a.end - a.start;
3832
+ if (ba(t, o)) return this.sampleResponse(e, t, "ok", {
3775
3833
  kind: "source-indexes",
3776
3834
  sourceIndexes: Uint32Array.from({ length: o }, (e, t) => a.start + t)
3777
3835
  }, "raw", "raw", o, n, !1);
3778
3836
  let s = t.mode === "wasm" || t.mode === "auto" && this.wasmBackend ? this.wasmBackend : this.javascriptBackend, c = !s && t.wasmFailureFallback === "javascript", l = s ?? (c ? this.javascriptBackend : void 0);
3779
3837
  if (!l) return this.sampleResponse(e, t, "wasm-unavailable", void 0, "unavailable", "sampled", o, n, !1);
3780
- let u = aa(t.strategy), d = oa(t), f = da(t, a, u, d, l.kind), p = this.cache.get(f);
3838
+ let u = va(t.strategy), d = ya(t), f = wa(t, a, u, d, l.kind), p = this.cache.get(f);
3781
3839
  if (p) return this.sampleResponse(e, t, c ? "wasm-unavailable" : "ok", p, l.kind, "sampled", o, n, !0);
3782
- let m = (l.kind === "wasm" ? r.wasmDatasetHandle !== void 0 && _a(l) ? l.sampleDataset(r.wasmDatasetHandle, a.start, a.end, u, d) : void 0 : r.index?.sample(a.start, a.end, u, d)) ?? ua(l.sample({
3783
- x: ga(r, a.start, a.end),
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),
3784
3842
  y: r.y.subarray(a.start, a.end),
3785
3843
  points: r.points?.slice(a.start, a.end) ?? [],
3786
3844
  strategy: u,
3787
3845
  targetPointCount: d
3788
3846
  }), a.start);
3789
- return this.cache.set(f, m), r.wasmDatasetHandle !== void 0 && _a(l) && (r.wasmIndexBytes = l.datasetIndexBytes(r.wasmDatasetHandle)), this.sampleResponse(e, t, c ? "wasm-unavailable" : "ok", m, l.kind, "sampled", o, n, !1);
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);
3790
3848
  }
3791
3849
  sampleResponse(e, t, n, r, i, a, o, s, c) {
3792
- let l = fa(t, pa(this.datasets.get(t.datasetId)), o, i, a, performance.now() - s, la(r), c);
3850
+ let l = Ta(t, Ea(this.datasets.get(t.datasetId)), o, i, a, performance.now() - s, Sa(r), c);
3793
3851
  return l.requestId = e, {
3794
3852
  seriesId: t.seriesId,
3795
3853
  datasetId: t.datasetId,
@@ -3800,7 +3858,7 @@ var Ta = class {
3800
3858
  };
3801
3859
  }
3802
3860
  findNearest(e, t, n, r) {
3803
- let i = this.datasets.get(e), a = ia(i, n);
3861
+ let i = this.datasets.get(e), a = _a(i, n);
3804
3862
  return a !== "ok" || !i ? {
3805
3863
  type: "find-nearest-point-response",
3806
3864
  requestId: t,
@@ -3813,12 +3871,12 @@ var Ta = class {
3813
3871
  datasetId: e,
3814
3872
  revision: n,
3815
3873
  status: a,
3816
- point: i.points ? ca(i.points, r) : (() => {
3817
- let e = ha(i, [r, r]);
3818
- if (!pa(i) || r < ma(i, 0) || r > ma(i, pa(i) - 1)) return;
3819
- let t = Math.min(pa(i) - 1, e.start), n = Math.max(0, t - 1), a = Math.abs(r - ma(i, n)) < Math.abs(ma(i, t) - r) ? n : t;
3820
- return Number.isFinite(r) && pa(i) ? {
3821
- x: ma(i, a),
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),
3822
3880
  y: i.y[a]
3823
3881
  } : void 0;
3824
3882
  })()
@@ -3826,15 +3884,15 @@ var Ta = class {
3826
3884
  }
3827
3885
  metrics(e, t, n) {
3828
3886
  let r = this.datasets.get(e);
3829
- return this.datasetResponse(t, e, r, ia(r, n));
3887
+ return this.datasetResponse(t, e, r, _a(r, n));
3830
3888
  }
3831
3889
  dispose(e, t, n) {
3832
- let r = this.datasets.get(e), i = ia(r, n);
3833
- return i === "ok" && r && (xa(this.wasmBackend, r), this.cache.deleteDataset(e), this.datasets.delete(e)), this.datasetResponse(t, e, r, i);
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);
3834
3892
  }
3835
3893
  disposeAll(e) {
3836
3894
  let t = [...this.datasets.keys()];
3837
- return this.datasets.forEach((e) => xa(this.wasmBackend, e)), _a(this.wasmBackend) && this.wasmBackend.disposeAllDatasets(), this.datasets.clear(), this.cache.clear(), {
3895
+ return this.datasets.forEach((e) => Pa(this.wasmBackend, e)), Aa(this.wasmBackend) && this.wasmBackend.disposeAllDatasets(), this.datasets.clear(), this.cache.clear(), {
3838
3896
  type: "dispose-all-response",
3839
3897
  requestId: e,
3840
3898
  disposedDatasetIds: t
@@ -3856,10 +3914,10 @@ var Ta = class {
3856
3914
  };
3857
3915
  //#endregion
3858
3916
  //#region src/components/core/latestTaskScheduler.ts
3859
- function Da(e, t, n, r) {
3917
+ function Ba(e, t, n, r) {
3860
3918
  return r ? r === "raw" ? e <= t + n ? "raw" : "sampled" : e <= Math.max(0, t - n) ? "raw" : "sampled" : e <= t ? "raw" : "sampled";
3861
3919
  }
3862
- function Oa() {
3920
+ function Va() {
3863
3921
  let e = 0, t = !1, n, r = !1, i = {
3864
3922
  scheduled: 0,
3865
3923
  coalesced: 0,
@@ -3898,12 +3956,12 @@ function Oa() {
3898
3956
  }
3899
3957
  //#endregion
3900
3958
  //#region src/components/core/workerSamplingClient.ts
3901
- function ka(e) {
3959
+ function Ha(e) {
3902
3960
  return e?.message || "Web Worker is unavailable; JavaScript sampling is being used.";
3903
3961
  }
3904
- function Aa() {
3962
+ function Ua() {
3905
3963
  let e, t, n, r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = () => {
3906
- t ??= new Ea();
3964
+ t ??= new za();
3907
3965
  for (let [e, n] of i) {
3908
3966
  t.handle({
3909
3967
  type: "register-dataset",
@@ -3939,7 +3997,7 @@ function Aa() {
3939
3997
  let t = a();
3940
3998
  e.forEach(({ request: e, resolve: n }) => n(t.handle(e)));
3941
3999
  }, c = (r) => {
3942
- t || (n = ka(r), e?.terminate(), e = void 0, s());
4000
+ t || (n = Ha(r), e?.terminate(), e = void 0, s());
3943
4001
  };
3944
4002
  try {
3945
4003
  typeof Worker > "u" ? c() : (e = new Worker(new URL(
@@ -3976,20 +4034,20 @@ function Aa() {
3976
4034
  }
3977
4035
  };
3978
4036
  }
3979
- function ja(e) {
4037
+ function Wa(e) {
3980
4038
  return e.type === "dataset-response";
3981
4039
  }
3982
4040
  //#endregion
3983
4041
  //#region src/components/core/useWaveformRenderSampling.ts
3984
- var Ma = 120;
3985
- function Na(e, t) {
4042
+ var Ga = 120;
4043
+ function Ka(e, t) {
3986
4044
  let n = e.output;
3987
4045
  if (n) return n.kind === "aggregates" ? Array.from(n.x, (e, t) => ({
3988
4046
  x: e,
3989
4047
  y: n.y[t]
3990
4048
  })) : Array.from(n.sourceIndexes, (e) => t.pointAt(e)).filter((e) => e !== void 0);
3991
4049
  }
3992
- function Pa(e, t) {
4050
+ function qa(e, t) {
3993
4051
  let n = e.request, r = e.visibleRange.end - e.visibleRange.start;
3994
4052
  return {
3995
4053
  seriesId: n.seriesId,
@@ -4011,7 +4069,7 @@ function Pa(e, t) {
4011
4069
  maxPendingRequestCount: 0
4012
4070
  };
4013
4071
  }
4014
- function Fa(e) {
4072
+ function Ja(e) {
4015
4073
  let { source: t } = e, { start: n, end: r } = e.visibleRange, i = r - n, a = Number.isFinite(e.request.maxPointCount) && (e.request.maxPointCount ?? 0) >= 1 ? Math.floor(e.request.maxPointCount) : Math.max(1, Math.floor(e.request.plotWidth * e.request.maxPointsPerPixel));
4016
4074
  if (i <= a) return t.pointsInRange(n, r);
4017
4075
  if (a === 1) return t.pointAt(n) ? [t.pointAt(n)] : [];
@@ -4022,7 +4080,7 @@ function Fa(e) {
4022
4080
  }
4023
4081
  return o;
4024
4082
  }
4025
- function Ia(e, t, n, r) {
4083
+ function Ya(e, t, n, r) {
4026
4084
  return {
4027
4085
  message: e,
4028
4086
  mode: t,
@@ -4030,8 +4088,8 @@ function Ia(e, t, n, r) {
4030
4088
  seriesIds: r
4031
4089
  };
4032
4090
  }
4033
- function La(e) {
4034
- let n = w(0), r, i = 0, a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Map(), u = Oa(), d, f, p = !1, m = t(() => {
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(() => {
4035
4093
  let t = e.renderingOptions.value.sampling;
4036
4094
  return e.sourceTrackLayouts.value.flatMap((n) => {
4037
4095
  let r = n.xScale.domain();
@@ -4096,13 +4154,13 @@ function La(e) {
4096
4154
  revision: 0,
4097
4155
  dataset: t.source.toWorkerDataset()
4098
4156
  });
4099
- !u.isCurrent(n) || !ja(r) || r.status !== "ok" && r.status !== "stale-revision" || a.set(t.request.datasetId, r.revision);
4157
+ !u.isCurrent(n) || !Wa(r) || r.status !== "ok" && r.status !== "stale-revision" || a.set(t.request.datasetId, r.revision);
4100
4158
  }));
4101
4159
  }, x = async (t, n = !1) => {
4102
4160
  let o = m.value, c = { ...e.linePointOverrides.value }, l = [], d = [];
4103
4161
  if (o.forEach((e) => {
4104
- let r = e.visibleRange.end - e.visibleRange.start, i = n ? s.get(e.series.id) : void 0, a = e.request.mode === "auto" && Da(r, e.request.autoThreshold, e.request.autoHysteresis ?? 0, i) === "raw";
4105
- e.request.mode === "raw" || a ? (c[e.series.id] = e.source.pointsInRange(e.visibleRange.start, e.visibleRange.end), s.set(e.series.id, "raw"), d.push(Pa(e, t))) : (c[e.series.id]?.length || (c[e.series.id] = Fa(e)), l.push({
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({
4106
4164
  ...e,
4107
4165
  request: {
4108
4166
  ...e.request,
@@ -4114,7 +4172,7 @@ function La(e) {
4114
4172
  e.linePointOverrides.value = c, v(d);
4115
4173
  return;
4116
4174
  }
4117
- if (e.linePointOverrides.value = c, r ??= Aa(), await b(r, l, t), !u.isCurrent(t)) return;
4175
+ if (e.linePointOverrides.value = c, r ??= Ua(), await b(r, l, t), !u.isCurrent(t)) return;
4118
4176
  let f = l.map((e) => ({
4119
4177
  ...e.request,
4120
4178
  revision: a.get(e.request.datasetId) ?? 1
@@ -4129,22 +4187,22 @@ function La(e) {
4129
4187
  p = e;
4130
4188
  } catch (n) {
4131
4189
  if (!u.isCurrent(t)) return;
4132
- y(Ia(n instanceof Error ? n.message : String(n), e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id)));
4190
+ y(Ya(n instanceof Error ? n.message : String(n), e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id)));
4133
4191
  return;
4134
4192
  }
4135
4193
  if (!u.isCurrent(t)) return;
4136
4194
  let h = new Map(l.map((e) => [e.series.id, e.source]));
4137
4195
  p.results.forEach((e) => {
4138
- let t = h.get(e.seriesId), n = t ? Na(e, t) : void 0;
4139
- n && (e.status === "ok" || e.status === "wasm-unavailable") && (c[e.seriesId] = n), d.push(e.diagnostics), s.set(e.seriesId, e.diagnostics.selectedMode), e.status === "wasm-unavailable" && y(Ia(p.workerError ?? "WASM sampling is unavailable.", e.diagnostics.mode, e.diagnostics.backend === "javascript" ? "javascript" : "none", [e.seriesId]));
4140
- }), p.workerError && y(Ia(p.workerError, e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id))), r.workerFailureReason && p.results.every((e) => e.status !== "wasm-unavailable") && y(Ia(r.workerFailureReason, e.renderingOptions.value.sampling.mode, "javascript", l.map((e) => e.series.id))), e.linePointOverrides.value = { ...c }, v(d);
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);
4141
4199
  };
4142
4200
  return k(h, () => {
4143
4201
  f && clearTimeout(f);
4144
4202
  let t = p;
4145
4203
  p = !0, u.schedule((e) => x(e, t)), t && e.renderingOptions.value.sampling.mode === "auto" && e.renderingOptions.value.sampling.autoHysteresis > 0 && (f = setTimeout(() => {
4146
4204
  f = void 0, u.schedule((e) => x(e, !1));
4147
- }, Ma));
4205
+ }, Ga));
4148
4206
  }, { immediate: !0 }), k(e.preparedSeries, () => {
4149
4207
  u.cancelPending(), n.value += 1, e.linePointOverrides.value = {}, a.clear(), o.clear(), s.clear(), c.clear(), r?.dispose(), r = void 0;
4150
4208
  }, { flush: "sync" }), _(() => {
@@ -4153,10 +4211,10 @@ function La(e) {
4153
4211
  }
4154
4212
  //#endregion
4155
4213
  //#region src/components/core/useWaveformChartController.ts
4156
- function Ra(e, t) {
4214
+ function Za(e, t) {
4157
4215
  e.value = t instanceof Element ? t : void 0;
4158
4216
  }
4159
- function za(e, t) {
4217
+ function Qa(e, t) {
4160
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({
4161
4219
  points: [],
4162
4220
  trackIndex: null,
@@ -4166,13 +4224,13 @@ function za(e, t) {
4166
4224
  x: 0,
4167
4225
  y: 0
4168
4226
  }
4169
- }), _ = x(!1), v = x(1), y = w(), S = ue("waveform-clip"), T = x(new Set(e.defaultHiddenSeriesIds)), D = gt(), O = w({}), j = x([]), M = Hr();
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();
4170
4228
  k([() => e.yDomain, () => e.yDomains], () => {
4171
4229
  m.value = {}, h.value = {};
4172
4230
  }, { deep: !0 });
4173
- let N = w(null), P = x(!1), F = x(!1), I = () => void 0, L = () => void 0, R = () => void 0, z = qr(() => e.data, () => {
4231
+ let N = w(null), P = x(!1), F = x(!1), I = () => void 0, L = () => void 0, R = () => void 0, z = oi(() => e.data, () => {
4174
4232
  R(), I();
4175
- }, () => L()), B = Fi({
4233
+ }, () => L()), B = Ji({
4176
4234
  props: e,
4177
4235
  observedWidth: o,
4178
4236
  observedHeight: s,
@@ -4180,7 +4238,7 @@ function za(e, t) {
4180
4238
  measuredTitleHeight: l,
4181
4239
  internalHiddenSeriesIds: T,
4182
4240
  paginationBandHeight: u
4183
- }), { chartWidth: V, chartHeight: H, isCleanView: U, isPresentationMode: W, hiddenSeriesIdSet: G, resolvedTitleText: ee, titleAreaReserved: te, titleMeasureStyle: ne, titleAreaHeight: re, chartTopMargin: K, innerHeight: q } = B, ie = ji({
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({
4184
4242
  props: e,
4185
4243
  preparedSeries: z,
4186
4244
  currentPage: v,
@@ -4195,7 +4253,7 @@ function za(e, t) {
4195
4253
  annotationInteraction: d(D),
4196
4254
  linePointOverrides: O
4197
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;
4198
- La({
4256
+ Xa({
4199
4257
  props: e,
4200
4258
  emit: t,
4201
4259
  instanceId: S,
@@ -4206,7 +4264,7 @@ function za(e, t) {
4206
4264
  }), A(() => {
4207
4265
  u.value = le.value.showPagination && de.value > 1 && V.value <= 520 ? 40 : 0;
4208
4266
  });
4209
- let Se = Ur({
4267
+ let Se = ni({
4210
4268
  props: e,
4211
4269
  emit: t,
4212
4270
  svgElement: r,
@@ -4225,7 +4283,7 @@ function za(e, t) {
4225
4283
  cancelPendingHover: () => we.cancelPendingHover()
4226
4284
  });
4227
4285
  R = Se.prepareForDataChange;
4228
- let Ce = yr({
4286
+ let Ce = jr({
4229
4287
  props: e,
4230
4288
  emit: t,
4231
4289
  container: n,
@@ -4245,7 +4303,7 @@ function za(e, t) {
4245
4303
  chartTopMargin: K,
4246
4304
  activeInteractionMode: he,
4247
4305
  isPresentationMode: W
4248
- }), X = Vr({
4306
+ }), X = ei({
4249
4307
  props: e,
4250
4308
  emit: t,
4251
4309
  selection: N,
@@ -4270,7 +4328,7 @@ function za(e, t) {
4270
4328
  cancelPendingZoom: Se.cancelPendingZoom,
4271
4329
  clearHover: () => we.clearHover(),
4272
4330
  resolveTrackAtPointer: Ce.resolveTrackAtPointer
4273
- }), we = br({
4331
+ }), we = Mr({
4274
4332
  emit: t,
4275
4333
  hoverState: g,
4276
4334
  suppressHoverUntilMove: _,
@@ -4285,7 +4343,7 @@ function za(e, t) {
4285
4343
  isPresentationMode: W,
4286
4344
  updateViewportDrag: X.updateViewportDrag,
4287
4345
  resolveTrackAtPointer: Ce.resolveTrackAtPointer
4288
- }), Te = Gr({
4346
+ }), Te = ii({
4289
4347
  props: e,
4290
4348
  emit: t,
4291
4349
  container: n,
@@ -4348,34 +4406,34 @@ function za(e, t) {
4348
4406
  editorSeriesOptions: j,
4349
4407
  clipPathId: S,
4350
4408
  goToPage: Te.goToPage,
4351
- setContainer: (e) => Ra(n, e),
4352
- setSvgElement: (e) => Ra(r, e),
4353
- setTitleMeasureElement: (e) => Ra(i, e),
4354
- setSharedOverlayElement: (e) => Ra(a, e)
4409
+ setContainer: (e) => Za(n, e),
4410
+ setSvgElement: (e) => Za(r, e),
4411
+ setTitleMeasureElement: (e) => Za(i, e),
4412
+ setSharedOverlayElement: (e) => Za(a, e)
4355
4413
  });
4356
4414
  }
4357
4415
  //#endregion
4358
4416
  //#region src/components/annotation/WaveformAnnotationEditor.vue?vue&type=script&setup=true&lang.ts
4359
- var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4417
+ var $a = ["id"], eo = { class: "waveform-annotation-editor__content" }, to = {
4360
4418
  class: "waveform-annotation-editor__coordinates",
4361
4419
  "aria-label": "标注坐标"
4362
- }, Ua = ["aria-invalid"], Wa = {
4420
+ }, no = ["aria-invalid"], ro = {
4363
4421
  class: "waveform-annotation-editor__coordinate-value",
4364
4422
  "aria-hidden": "true"
4365
- }, Ga = ["id"], Ka = {
4423
+ }, io = ["id"], ao = {
4366
4424
  key: 0,
4367
4425
  class: "waveform-annotation-editor__series",
4368
4426
  "aria-label": "标注所属波形"
4369
- }, qa = { class: "waveform-annotation-editor__series-label" }, Ja = ["value"], Ya = ["value"], Xa = { key: 1 }, Za = { class: "waveform-annotation-editor__field" }, Qa = { class: "waveform-annotation-editor__label-row" }, $a = ["maxlength"], eo = { class: "waveform-annotation-editor__colors" }, to = {
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 = {
4370
4428
  class: "waveform-annotation-editor__color-field",
4371
4429
  title: "调整标注边框色和透明度"
4372
- }, no = {
4430
+ }, go = {
4373
4431
  class: "waveform-annotation-editor__color-field",
4374
4432
  title: "调整标注文字色和透明度"
4375
- }, ro = {
4433
+ }, _o = {
4376
4434
  class: "waveform-annotation-editor__color-field",
4377
4435
  title: "调整标注背景色和透明度"
4378
- }, io = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4436
+ }, vo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4379
4437
  __name: "WaveformAnnotationEditor",
4380
4438
  props: {
4381
4439
  annotation: {},
@@ -4446,9 +4504,9 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4446
4504
  onCancel: o[4] ||= (e) => p("cancel"),
4447
4505
  onOk: B
4448
4506
  }, {
4449
- title: j(() => [a("span", { id: D(g) }, T(d.mode === "add" ? "添加标注" : "编辑标注"), 9, Ba)]),
4450
- default: j(() => [a("div", Va, [
4451
- a("div", Ha, [
4507
+ title: j(() => [a("span", { id: D(g) }, T(d.mode === "add" ? "添加标注" : "编辑标注"), 9, $a)]),
4508
+ default: j(() => [a("div", eo, [
4509
+ a("div", to, [
4452
4510
  a("label", {
4453
4511
  class: "waveform-annotation-editor__coordinate-input",
4454
4512
  "aria-invalid": !!N.value
@@ -4471,26 +4529,26 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4471
4529
  "aria-invalid",
4472
4530
  "aria-describedby"
4473
4531
  ]),
4474
- a("code", Wa, T(v.value), 1)
4475
- ], 8, Ua),
4532
+ a("code", ro, T(v.value), 1)
4533
+ ], 8, no),
4476
4534
  N.value ? (y(), i("p", {
4477
4535
  key: 0,
4478
4536
  id: `${D(g)}-time-error`,
4479
4537
  class: "waveform-annotation-editor__coordinate-error",
4480
4538
  role: "alert"
4481
- }, T(N.value), 9, Ga)) : r("", !0),
4539
+ }, T(N.value), 9, io)) : r("", !0),
4482
4540
  a("span", null, [o[6] ||= a("b", null, "Y", -1), a("code", null, T(D(At)(d.annotation.y)), 1)])
4483
4541
  ]),
4484
4542
  o[13] ||= a("p", {
4485
4543
  class: "waveform-annotation-editor__coordinate-hint",
4486
4544
  role: "note"
4487
4545
  }, " 修改 X 轴后失焦时会自动吸附最近的采样点 ", -1),
4488
- I.value ? (y(), i("label", Ka, [
4546
+ I.value ? (y(), i("label", ao, [
4489
4547
  a("i", {
4490
4548
  style: m({ backgroundColor: I.value.color }),
4491
4549
  "aria-hidden": "true"
4492
4550
  }, null, 4),
4493
- a("span", qa, [o[7] ||= a("small", null, "标注波形", -1), a("b", null, T(I.value.name), 1)]),
4551
+ a("span", oo, [o[7] ||= a("small", null, "标注波形", -1), a("b", null, T(I.value.name), 1)]),
4494
4552
  d.seriesOptions?.length ? (y(), i("select", {
4495
4553
  key: 0,
4496
4554
  value: d.annotation.seriesId,
@@ -4499,9 +4557,9 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4499
4557
  }, [(y(!0), i(e, null, S(d.seriesOptions, (e) => (y(), i("option", {
4500
4558
  key: e.seriesId,
4501
4559
  value: e.seriesId
4502
- }, T(e.name) + T(e.unit ? ` (${e.unit})` : ""), 9, Ya))), 128))], 40, Ja)) : I.value.unit ? (y(), i("code", Xa, T(I.value.unit), 1)) : r("", !0)
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)
4503
4561
  ])) : r("", !0),
4504
- a("label", Za, [a("span", Qa, [o[8] ||= a("b", null, "标注文本", -1), a("small", null, T(F.value) + "/" + T(D(40)), 1)]), M(a("textarea", {
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", {
4505
4563
  ref_key: "textarea",
4506
4564
  ref: h,
4507
4565
  "onUpdate:modelValue": o[0] ||= (e) => _.value = e,
@@ -4510,10 +4568,10 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4510
4568
  "aria-label": "标注文本",
4511
4569
  placeholder: "输入这处波形的说明",
4512
4570
  onKeydown: V
4513
- }, null, 40, $a), [[O, _.value]])]),
4514
- a("fieldset", eo, [
4571
+ }, null, 40, po), [[O, _.value]])]),
4572
+ a("fieldset", mo, [
4515
4573
  o[12] ||= a("legend", null, "颜色与透明度", -1),
4516
- a("label", to, [o[9] ||= a("span", null, "边框色", -1), s(D(u), {
4574
+ a("label", ho, [o[9] ||= a("span", null, "边框色", -1), s(D(u), {
4517
4575
  "pure-color": C.value,
4518
4576
  "onUpdate:pureColor": o[1] ||= (e) => C.value = e,
4519
4577
  "aria-label": "标注边框色",
@@ -4523,7 +4581,7 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4523
4581
  "disable-alpha": !1,
4524
4582
  "blur-close": !0
4525
4583
  }, null, 8, ["pure-color"])]),
4526
- a("label", no, [o[10] ||= a("span", null, "文字色", -1), s(D(u), {
4584
+ a("label", go, [o[10] ||= a("span", null, "文字色", -1), s(D(u), {
4527
4585
  "pure-color": w.value,
4528
4586
  "onUpdate:pureColor": o[2] ||= (e) => w.value = e,
4529
4587
  "aria-label": "标注文字色",
@@ -4533,7 +4591,7 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4533
4591
  "disable-alpha": !1,
4534
4592
  "blur-close": !0
4535
4593
  }, null, 8, ["pure-color"])]),
4536
- a("label", ro, [o[11] ||= a("span", null, "背景色", -1), s(D(u), {
4594
+ a("label", _o, [o[11] ||= a("span", null, "背景色", -1), s(D(u), {
4537
4595
  "pure-color": E.value,
4538
4596
  "onUpdate:pureColor": o[3] ||= (e) => E.value = e,
4539
4597
  "aria-label": "标注背景色",
@@ -4548,13 +4606,13 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4548
4606
  _: 1
4549
4607
  }, 8, ["ok-button-props"]));
4550
4608
  }
4551
- }), [["__scopeId", "data-v-01ecd3a4"]]), ao = { class: "waveform-tooltip__series-content" }, oo = { class: "waveform-tooltip__series-label" }, so = {
4609
+ }), [["__scopeId", "data-v-01ecd3a4"]]), yo = { class: "waveform-tooltip__series-content" }, bo = { class: "waveform-tooltip__series-label" }, xo = {
4552
4610
  key: 0,
4553
4611
  class: "waveform-tooltip__value"
4554
- }, co = {
4612
+ }, So = {
4555
4613
  key: 1,
4556
4614
  class: "waveform-tooltip__value waveform-tooltip__value--missing"
4557
- }, lo = 12, uo = 8, fo = 560, po = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4615
+ }, Co = 12, wo = 8, To = 560, Eo = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4558
4616
  __name: "WaveformTooltip",
4559
4617
  props: {
4560
4618
  visible: { type: Boolean },
@@ -4584,12 +4642,12 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4584
4642
  }, { flush: "post" }), v(u);
4585
4643
  let d = t(() => {
4586
4644
  if (!s.visible || !s.hoveredPoint) return { display: "none" };
4587
- let e = s.position.x + lo, t = s.position.x - lo - l.value.width, n = Math.max(1, Math.min(fo, s.containerWidth - uo * 2));
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));
4588
4646
  return {
4589
- ...e + l.value.width <= s.containerWidth - uo ? { left: `${e}px` } : t >= uo ? { right: `${s.containerWidth - s.position.x + lo}px` } : { left: `${uo}px` },
4647
+ ...e + l.value.width <= s.containerWidth - wo ? { left: `${e}px` } : t >= wo ? { right: `${s.containerWidth - s.position.x + Co}px` } : { left: `${wo}px` },
4590
4648
  maxWidth: `${n}px`,
4591
4649
  visibility: l.value.width > 0 ? "visible" : "hidden",
4592
- top: `${Math.max(uo, Math.min(s.position.y - 18, s.containerHeight - l.value.height - uo))}px`
4650
+ top: `${Math.max(wo, Math.min(s.position.y - 18, s.containerHeight - l.value.height - wo))}px`
4593
4651
  };
4594
4652
  });
4595
4653
  return (t, s) => n.visible && n.hoveredPoint ? (y(), i("div", {
@@ -4601,9 +4659,9 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4601
4659
  }, [(y(!0), i(e, null, S(n.seriesPoints, (t) => (y(), i("span", {
4602
4660
  key: `${t.trackIndex}-${t.name}`,
4603
4661
  class: "waveform-tooltip__series waveform-chart__tooltip-series"
4604
- }, [a("i", { style: m({ backgroundColor: t.color }) }, null, 4), a("span", ao, [a("span", oo, [o(T(t.shotNo?.trim() || "未配置炮号") + ": " + T(t.name), 1), t.unit ? (y(), i(e, { key: 0 }, [o("(" + T(t.unit) + ")", 1)], 64)) : r("", !0)]), t.point ? (y(), i("span", so, "(x:" + T(D(Ft)(t.point.x, n.timeUnit)) + " y:" + T(D(kt)(t.point.y)) + ")", 1)) : (y(), i("span", co, "无数据"))])]))), 128))], 4)) : r("", !0);
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);
4605
4663
  }
4606
- }), [["__scopeId", "data-v-0d0d1d3c"]]), mo = /* @__PURE__ */ l({
4664
+ }), [["__scopeId", "data-v-0d0d1d3c"]]), Do = /* @__PURE__ */ l({
4607
4665
  __name: "WaveformHoverHost",
4608
4666
  props: {
4609
4667
  state: {},
@@ -4614,7 +4672,7 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4614
4672
  },
4615
4673
  setup(e) {
4616
4674
  let r = e, i = t(() => r.state.points.find((e) => e.point)?.point ?? null);
4617
- return (t, r) => (y(), n(po, {
4675
+ return (t, r) => (y(), n(Eo, {
4618
4676
  visible: e.visible && i.value !== null,
4619
4677
  position: e.state.position,
4620
4678
  "time-unit": e.timeUnit,
@@ -4632,16 +4690,16 @@ var Ba = ["id"], Va = { class: "waveform-annotation-editor__content" }, Ha = {
4632
4690
  "container-height"
4633
4691
  ]));
4634
4692
  }
4635
- }), ho = 13, go = 2, _o = 14, vo = 8, yo = 24, bo = {
4693
+ }), Oo = 13, ko = 2, Ao = 14, jo = 8, Mo = 24, No = {
4636
4694
  circle: te,
4637
4695
  square: re,
4638
4696
  triangle: K,
4639
4697
  diamond: ne
4640
4698
  };
4641
- function xo(e, t = 48) {
4642
- return e === "none" ? null : ee().type(bo[e]).size(t)() ?? null;
4699
+ function Po(e, t = 48) {
4700
+ return e === "none" ? null : ee().type(No[e]).size(t)() ?? null;
4643
4701
  }
4644
- function So(e, t, n = 48) {
4702
+ function Fo(e, t, n = 48) {
4645
4703
  if (e === "none" || t.length === 0) return null;
4646
4704
  if (e === "circle") {
4647
4705
  let e = Math.sqrt(n / Math.PI);
@@ -4658,24 +4716,24 @@ function So(e, t, n = 48) {
4658
4716
  let r = Math.sqrt(n / (2 * Math.tan(Math.PI / 6))), i = r * Math.tan(Math.PI / 6);
4659
4717
  return t.map(({ x: e, y: t }) => `M${e},${t - r}L${e + i},${t}L${e},${t + r}L${e - i},${t}Z`).join("");
4660
4718
  }
4661
- function Co(e) {
4719
+ function Io(e) {
4662
4720
  return e === "none" ? null : "M1 8H25";
4663
4721
  }
4664
- function wo(e) {
4722
+ function Lo(e) {
4665
4723
  if (e === "dashed") return "8 5";
4666
4724
  if (e === "dash-dot") return "8 5 1.5 5";
4667
4725
  }
4668
- function To(e) {
4669
- let t = (Number.isFinite(e) && e > 0 ? Math.min(e, yo) : vo) / 2, n = ho - t, r = ho + t;
4726
+ function Ro(e) {
4727
+ let t = (Number.isFinite(e) && e > 0 ? Math.min(e, Mo) : jo) / 2, n = Oo - t, r = Oo + t;
4670
4728
  return [
4671
- `M${n} ${go}H${r}`,
4672
- `M${ho} ${go}V${_o}`,
4673
- `M${n} ${_o}H${r}`
4729
+ `M${n} ${ko}H${r}`,
4730
+ `M${Oo} ${ko}V${Ao}`,
4731
+ `M${n} ${Ao}H${r}`
4674
4732
  ].join("");
4675
4733
  }
4676
4734
  //#endregion
4677
4735
  //#region src/components/rendering/WaveformSeriesLayer.vue?vue&type=script&setup=true&lang.ts
4678
- var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4736
+ var zo = ["clip-path"], Bo = ["data-series-id", "data-series-name"], Vo = [
4679
4737
  "data-series-id",
4680
4738
  "data-series-name",
4681
4739
  "data-y-axis-index",
@@ -4684,11 +4742,11 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4684
4742
  "d",
4685
4743
  "stroke",
4686
4744
  "stroke-dasharray"
4687
- ], ko = ["data-series-id"], Ao = [
4745
+ ], Ho = ["data-series-id"], Uo = [
4688
4746
  "d",
4689
4747
  "stroke",
4690
4748
  "stroke-width"
4691
- ], jo = ["data-series-id", "data-point-type"], Mo = ["d", "fill"], No = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4749
+ ], Wo = ["data-series-id", "data-point-type"], Go = ["d", "fill"], Ko = /*#__PURE__*/ nt(/* @__PURE__ */ l({
4692
4750
  __name: "WaveformSeriesLayer",
4693
4751
  props: {
4694
4752
  track: {},
@@ -4696,7 +4754,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4696
4754
  },
4697
4755
  setup(n) {
4698
4756
  let a = n, o = t(() => a.track.seriesPaths.map((e) => {
4699
- let t = So(e.series.pointType, e.pointRenderPoints.map((t) => ({
4757
+ let t = Fo(e.series.pointType, e.pointRenderPoints.map((t) => ({
4700
4758
  x: a.track.xScale(t.x),
4701
4759
  y: e.yScale(t.y)
4702
4760
  }))), n = e.series.errorBar.capWidth / 2, r = e.errorBarRenderPoints.map((t) => {
@@ -4733,8 +4791,8 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4733
4791
  "data-line-style": e.series.lineStyle,
4734
4792
  d: e.path,
4735
4793
  stroke: e.series.color,
4736
- "stroke-dasharray": D(wo)(e.series.lineStyle)
4737
- }, null, 8, Oo)) : r("", !0),
4794
+ "stroke-dasharray": D(Lo)(e.series.lineStyle)
4795
+ }, null, 8, Vo)) : r("", !0),
4738
4796
  e.series.errorBar.visible ? (y(), i("g", {
4739
4797
  key: 1,
4740
4798
  class: "waveform-track__error-bars waveform-chart__error-bars",
@@ -4745,7 +4803,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4745
4803
  d: e.errorBarPath,
4746
4804
  stroke: e.series.errorBar.color || e.series.color,
4747
4805
  "stroke-width": e.series.errorBar.width
4748
- }, null, 8, Ao)) : r("", !0)], 8, ko)) : r("", !0),
4806
+ }, null, 8, Uo)) : r("", !0)], 8, Ho)) : r("", !0),
4749
4807
  e.series.pointType === "none" ? r("", !0) : (y(), i("g", {
4750
4808
  key: 2,
4751
4809
  class: "waveform-track__points waveform-chart__points",
@@ -4756,28 +4814,72 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4756
4814
  class: "waveform-track__point waveform-chart__point",
4757
4815
  d: e.pointPath,
4758
4816
  fill: e.series.color
4759
- }, null, 8, Mo)) : r("", !0)], 8, jo))
4760
- ], 8, Do))), 128))], 8, Eo)) : r("", !0);
4817
+ }, null, 8, Go)) : r("", !0)], 8, Wo))
4818
+ ], 8, Bo))), 128))], 8, zo)) : r("", !0);
4761
4819
  }
4762
- }), [["__scopeId", "data-v-628502df"]]), Po = ["transform"], Fo = ["transform"], Io = {
4820
+ }), [["__scopeId", "data-v-628502df"]]), qo = ["clip-path"], Jo = [
4821
+ "data-y-axis-index",
4822
+ "x2",
4823
+ "y1",
4824
+ "y2",
4825
+ "stroke",
4826
+ "stroke-opacity",
4827
+ "stroke-width",
4828
+ "stroke-dasharray"
4829
+ ], Yo = /* @__PURE__ */ l({
4830
+ __name: "WaveformZeroLines",
4831
+ props: {
4832
+ track: {},
4833
+ clipPathId: {},
4834
+ innerWidth: {},
4835
+ cleanView: { type: Boolean },
4836
+ zeroLine: {}
4837
+ },
4838
+ setup(t) {
4839
+ let n = t;
4840
+ function a(e) {
4841
+ let [t, r] = e.scale.domain(), i = Math.abs(e.tickValues[1] - e.tickValues[0]) * n.zeroLine.boundaryThreshold;
4842
+ return !n.zeroLine.visible || t >= 0 || r <= 0 || -t < i || r < i ? null : e.scale(0);
4843
+ }
4844
+ return (n, o) => !t.track.isEmpty && t.track.hasVisibleSeries && t.zeroLine.visible && !t.cleanView ? (y(), i("g", {
4845
+ key: 0,
4846
+ class: "waveform-track__zero-lines waveform-chart__zero-lines",
4847
+ "clip-path": `url(#${t.clipPathId}-${t.track.index})`,
4848
+ "aria-hidden": "true",
4849
+ "pointer-events": "none"
4850
+ }, [(y(!0), i(e, null, S(t.track.yAxes, (n) => (y(), i(e, { key: `zero-line-${t.track.index}-${n.index}` }, [a(n) === null ? r("", !0) : (y(), i("line", {
4851
+ key: 0,
4852
+ class: "waveform-track__zero-line waveform-chart__zero-line",
4853
+ "data-y-axis-index": n.index,
4854
+ x1: "0",
4855
+ x2: t.track.width ?? t.innerWidth,
4856
+ y1: a(n) ?? 0,
4857
+ y2: a(n) ?? 0,
4858
+ stroke: t.zeroLine.color,
4859
+ "stroke-opacity": t.zeroLine.opacity,
4860
+ "stroke-width": t.zeroLine.width,
4861
+ "stroke-dasharray": t.zeroLine.dash || void 0
4862
+ }, null, 8, Jo))], 64))), 128))], 8, qo)) : r("", !0);
4863
+ }
4864
+ }), Xo = ["transform"], Zo = ["transform"], Qo = {
4763
4865
  class: "waveform-track__axis-endpoint waveform-track__axis-endpoint--start waveform-chart__axis-endpoint waveform-chart__axis-endpoint--start",
4764
4866
  x: "0",
4765
4867
  y: "7",
4766
4868
  dy: "0.71em",
4767
4869
  "text-anchor": "start"
4768
- }, Lo = ["x"], Ro = [
4870
+ }, $o = ["x"], es = [
4769
4871
  "data-y-axis-index",
4770
4872
  "data-y-axis-side",
4771
4873
  "transform"
4772
- ], zo = { key: 2 }, Bo = [
4874
+ ], ts = { key: 2 }, ns = [
4773
4875
  "x",
4774
4876
  "y",
4775
4877
  "width"
4776
- ], Vo = ["fill", "transform"], Ho = ["data-y-axis-title-index"], Uo = [
4878
+ ], rs = ["fill", "transform"], is = ["data-y-axis-title-index"], as = [
4777
4879
  "x",
4778
4880
  "y",
4779
4881
  "width"
4780
- ], Wo = ["fill", "transform"], Go = /* @__PURE__ */ l({
4882
+ ], os = ["fill", "transform"], ss = /* @__PURE__ */ l({
4781
4883
  __name: "WaveformTrackAxes",
4782
4884
  props: {
4783
4885
  track: {},
@@ -4806,13 +4908,13 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4806
4908
  if (n.track.yAxes.forEach((e, t) => {
4807
4909
  let r = s.value[t];
4808
4910
  if (!r) return;
4809
- let i = e.seriesList[0]?.unit, a = (e.side === "left" ? F(e.scale) : I(e.scale)).tickFormat((t) => cr(Number(t), e.scale.domain(), e.tickValues, i)).tickSize(-4).tickPadding(7).tickSizeOuter(0).tickValues(e.tickValues), o = G(r);
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);
4810
4912
  o.call(a);
4811
4913
  let c = Math.min(...e.tickValues);
4812
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);
4813
4915
  }), !o.value) return;
4814
4916
  let e = G(o.value);
4815
- e.call(P(n.track.xScale).tickValues(n.track.xAxisTickValues).tickFormat((e) => Mt(Number(e), n.track.xScale.domain(), n.timeUnit, "tick", n.axes?.x?.labelFormatter)).tickSize(-4).tickPadding(7).tickSizeOuter(0)), e.selectAll("path.domain").attr("display", n.axes?.x?.lineVisible === !1 ? "none" : null);
4917
+ e.call(P(n.track.xScale).tickValues(n.track.xAxisTickValues).tickFormat((e) => Mt(Number(e), n.track.xScale.domain(), n.timeUnit, "tick", n.axes?.x?.labelFormatter ?? n.track.xAxisLabelFormatter)).tickSize(-4).tickPadding(7).tickSizeOuter(0)), e.selectAll("path.domain").attr("display", n.axes?.x?.lineVisible === !1 ? "none" : null);
4816
4918
  }
4817
4919
  return g(async () => {
4818
4920
  await f(), m();
@@ -4834,7 +4936,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4834
4936
  ref: o,
4835
4937
  class: p(["waveform-track__axis waveform-track__axis--x waveform-chart__axis waveform-chart__axis--x", { "waveform-track__axis--line-hidden": t.axes?.x?.lineVisible === !1 }]),
4836
4938
  transform: `translate(0, ${t.track.height})`
4837
- }, null, 10, Po)) : r("", !0),
4939
+ }, null, 10, Xo)) : r("", !0),
4838
4940
  t.track.showXAxis ? (y(), i("g", {
4839
4941
  key: 1,
4840
4942
  class: "waveform-track__axis-endpoints waveform-chart__axis-endpoints",
@@ -4842,13 +4944,13 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4842
4944
  "font-family": "sans-serif",
4843
4945
  "font-size": "10",
4844
4946
  "aria-hidden": "true"
4845
- }, [a("text", Io, T(t.track.endpointLabels.start), 1), a("text", {
4947
+ }, [a("text", Qo, T(t.track.endpointLabels.start), 1), a("text", {
4846
4948
  class: "waveform-track__axis-endpoint waveform-track__axis-endpoint--end waveform-chart__axis-endpoint waveform-chart__axis-endpoint--end",
4847
4949
  x: t.track.width ?? t.innerWidth,
4848
4950
  y: "7",
4849
4951
  dy: "0.71em",
4850
4952
  "text-anchor": "end"
4851
- }, T(t.track.endpointLabels.end), 9, Lo)], 8, Fo)) : r("", !0),
4953
+ }, T(t.track.endpointLabels.end), 9, $o)], 8, Zo)) : r("", !0),
4852
4954
  (y(!0), i(e, null, S(t.track.isEmpty ? [] : t.track.yAxes, (e) => (y(), i("g", {
4853
4955
  key: `y-axis-${t.track.index}-${e.index}`,
4854
4956
  ref_for: !0,
@@ -4857,21 +4959,21 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4857
4959
  "data-y-axis-index": e.index,
4858
4960
  "data-y-axis-side": e.side,
4859
4961
  transform: `translate(${e.x}, 0)`
4860
- }, null, 10, Ro))), 128)),
4861
- !t.cleanView && !t.track.isEmpty && t.track.hasVisibleSeries && t.track.seriesList.length === 1 && t.track.showYAxisLabel && t.track.series && c(t.track.series) && d(t.track.height, t.track.index) ? (y(), i("g", zo, [a("rect", {
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", {
4862
4964
  class: "waveform-track__y-axis-label-bg waveform-chart__y-axis-label-bg",
4863
4965
  x: t.track.yAxes[0].labelX - D(20) / 2,
4864
4966
  y: t.track.height / 2 - 40,
4865
4967
  width: D(20),
4866
4968
  height: "80",
4867
4969
  rx: "2"
4868
- }, null, 8, Bo), a("text", {
4970
+ }, null, 8, ns), a("text", {
4869
4971
  class: "waveform-track__y-axis-label waveform-chart__y-axis-label",
4870
4972
  fill: t.track.series?.color,
4871
4973
  transform: `translate(${t.track.yAxes[0].labelX}, ${t.track.height / 2}) rotate(-90)`,
4872
4974
  "text-anchor": "middle",
4873
4975
  "dominant-baseline": "central"
4874
- }, T(t.track.series ? c(t.track.series) : ""), 9, Vo)])) : r("", !0),
4976
+ }, T(t.track.series ? c(t.track.series) : ""), 9, rs)])) : r("", !0),
4875
4977
  (y(!0), i(e, null, S(!t.cleanView && t.track.yAxes.length > 1 ? t.track.yAxes.filter(l) : [], (e) => (y(), i("g", {
4876
4978
  key: `y-axis-title-${t.track.index}-${e.index}`,
4877
4979
  class: "waveform-track__multi-axis-title",
@@ -4883,48 +4985,40 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4883
4985
  width: D(20),
4884
4986
  height: "80",
4885
4987
  rx: "2"
4886
- }, null, 8, Uo), a("text", {
4988
+ }, null, 8, as), a("text", {
4887
4989
  class: "waveform-track__y-axis-label waveform-chart__y-axis-label",
4888
4990
  fill: e.seriesList[0].color,
4889
4991
  transform: `translate(${e.labelX}, ${t.track.height / 2}) rotate(-90)`,
4890
4992
  "text-anchor": "middle",
4891
4993
  "dominant-baseline": "central"
4892
- }, T(c(e.seriesList[0])), 9, Wo)], 8, Ho))), 128))
4994
+ }, T(c(e.seriesList[0])), 9, os)], 8, is))), 128))
4893
4995
  ], 64));
4894
4996
  }
4895
- }), Ko = [
4997
+ }), cs = [
4896
4998
  "width",
4897
4999
  "height",
4898
5000
  "fill"
4899
- ], qo = ["clip-path"], Jo = { class: "waveform-track__grid waveform-track__grid--minor waveform-chart__grid waveform-chart__grid--minor" }, Yo = [
5001
+ ], ls = ["clip-path"], us = { class: "waveform-track__grid waveform-track__grid--minor waveform-chart__grid waveform-chart__grid--minor" }, ds = [
4900
5002
  "stroke",
4901
5003
  "x1",
4902
5004
  "x2",
4903
5005
  "y2"
4904
- ], Xo = [
5006
+ ], fs = [
4905
5007
  "stroke",
4906
5008
  "x2",
4907
5009
  "y1",
4908
5010
  "y2"
4909
- ], Zo = { class: "waveform-track__grid waveform-track__grid--major waveform-chart__grid waveform-chart__grid--major" }, Qo = [
5011
+ ], ps = { class: "waveform-track__grid waveform-track__grid--major waveform-chart__grid waveform-chart__grid--major" }, ms = [
4910
5012
  "stroke",
4911
5013
  "x1",
4912
5014
  "x2",
4913
5015
  "y2"
4914
- ], $o = [
5016
+ ], hs = [
4915
5017
  "stroke",
4916
5018
  "x2",
4917
5019
  "y1",
4918
5020
  "y2"
4919
- ], es = ["clip-path"], ts = [
4920
- "data-y-axis-index",
4921
- "x2",
4922
- "y1",
4923
- "y2",
4924
- "stroke",
4925
- "stroke-width",
4926
- "stroke-dasharray"
4927
- ], ns = ["x", "y"], rs = /* @__PURE__ */ l({
5021
+ ], gs = ["x", "y"], _s = /* @__PURE__ */ l({
4928
5022
  __name: "WaveformTrackBackdrop",
4929
5023
  props: {
4930
5024
  track: {},
@@ -4932,16 +5026,10 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4932
5026
  innerWidth: {},
4933
5027
  cleanView: { type: Boolean },
4934
5028
  frameNumber: {},
4935
- frameStyle: {},
4936
- zeroLine: {}
5029
+ frameStyle: {}
4937
5030
  },
4938
5031
  setup(t) {
4939
- let n = t;
4940
- function o(e) {
4941
- let [t, r] = e.scale.domain();
4942
- return !n.zeroLine.visible || t > 0 || r < 0 ? null : e.scale(0);
4943
- }
4944
- return (n, s) => (y(), i(e, null, [
5032
+ return (n, o) => (y(), i(e, null, [
4945
5033
  !t.track.isEmpty && !t.cleanView ? (y(), i("rect", {
4946
5034
  key: 0,
4947
5035
  class: "waveform-track__plot-background waveform-chart__plot-background",
@@ -4949,12 +5037,12 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4949
5037
  height: t.track.height,
4950
5038
  fill: t.frameStyle.backgroundColor,
4951
5039
  "aria-hidden": "true"
4952
- }, null, 8, Ko)) : r("", !0),
5040
+ }, null, 8, cs)) : r("", !0),
4953
5041
  !t.track.isEmpty && t.track.hasVisibleSeries && !t.cleanView ? (y(), i("g", {
4954
5042
  key: 1,
4955
5043
  "clip-path": `url(#${t.clipPathId}-${t.track.index})`,
4956
5044
  "aria-hidden": "true"
4957
- }, [a("g", Jo, [t.track.gridLines.vertical ? (y(!0), i(e, { key: 0 }, S(t.track.xMinorTicks, (e) => (y(), i("line", {
5045
+ }, [a("g", us, [t.track.gridLines.vertical ? (y(!0), i(e, { key: 0 }, S(t.track.xMinorTicks, (e) => (y(), i("line", {
4958
5046
  key: `x-minor-${t.track.index}-${e}`,
4959
5047
  "data-grid-direction": "vertical",
4960
5048
  stroke: t.track.gridLines.verticalColor,
@@ -4962,7 +5050,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4962
5050
  x2: t.track.xScale(e),
4963
5051
  y1: "0",
4964
5052
  y2: t.track.height
4965
- }, null, 8, Yo))), 128)) : r("", !0), t.track.gridLines.horizontal ? (y(!0), i(e, { key: 1 }, S(t.track.yMinorTicks, (e) => (y(), i("line", {
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", {
4966
5054
  key: `y-minor-${t.track.index}-${e}`,
4967
5055
  "data-grid-direction": "horizontal",
4968
5056
  stroke: t.track.gridLines.horizontalColor,
@@ -4970,7 +5058,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4970
5058
  x2: t.track.width ?? t.innerWidth,
4971
5059
  y1: t.track.yScale(e),
4972
5060
  y2: t.track.yScale(e)
4973
- }, null, 8, Xo))), 128)) : r("", !0)]), a("g", Zo, [t.track.gridLines.vertical ? (y(!0), i(e, { key: 0 }, S(t.track.xMajorTicks, (e) => (y(), i("line", {
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", {
4974
5062
  key: `x-major-${t.track.index}-${e}`,
4975
5063
  "data-grid-direction": "vertical",
4976
5064
  stroke: t.track.gridLines.verticalColor,
@@ -4978,7 +5066,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4978
5066
  x2: t.track.xScale(e),
4979
5067
  y1: "0",
4980
5068
  y2: t.track.height
4981
- }, null, 8, Qo))), 128)) : r("", !0), t.track.gridLines.horizontal ? (y(!0), i(e, { key: 1 }, S(t.track.yMajorTicks, (e) => (y(), i("line", {
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", {
4982
5070
  key: `y-major-${t.track.index}-${e}`,
4983
5071
  "data-grid-direction": "horizontal",
4984
5072
  stroke: t.track.gridLines.horizontalColor,
@@ -4986,26 +5074,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
4986
5074
  x2: t.track.width ?? t.innerWidth,
4987
5075
  y1: t.track.yScale(e),
4988
5076
  y2: t.track.yScale(e)
4989
- }, null, 8, $o))), 128)) : r("", !0)])], 8, qo)) : r("", !0),
4990
- !t.track.isEmpty && t.track.hasVisibleSeries && t.zeroLine.visible && !t.cleanView ? (y(), i("g", {
4991
- key: 2,
4992
- class: "waveform-track__zero-lines waveform-chart__zero-lines",
4993
- "clip-path": `url(#${t.clipPathId}-${t.track.index})`,
4994
- "aria-hidden": "true"
4995
- }, [(y(!0), i(e, null, S(t.track.yAxes, (n) => (y(), i(e, { key: `zero-line-${t.track.index}-${n.index}` }, [o(n) === null ? r("", !0) : (y(), i("line", {
4996
- key: 0,
4997
- class: "waveform-track__zero-line waveform-chart__zero-line",
4998
- "data-y-axis-index": n.index,
4999
- x1: "0",
5000
- x2: t.track.width ?? t.innerWidth,
5001
- y1: o(n) ?? 0,
5002
- y2: o(n) ?? 0,
5003
- stroke: t.zeroLine.color,
5004
- "stroke-width": t.zeroLine.width,
5005
- "stroke-dasharray": t.zeroLine.dash || void 0
5006
- }, null, 8, ts))], 64))), 128))], 8, es)) : r("", !0),
5077
+ }, null, 8, hs))), 128)) : r("", !0)])], 8, ls)) : r("", !0),
5007
5078
  !t.track.isEmpty && t.track.hasVisibleSeries && t.frameNumber !== void 0 && !t.cleanView ? (y(), i("text", {
5008
- key: 3,
5079
+ key: 2,
5009
5080
  class: "waveform-track__watermark waveform-chart__watermark",
5010
5081
  x: (t.track.width ?? t.innerWidth) / 2,
5011
5082
  y: t.track.height / 2,
@@ -5013,10 +5084,10 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5013
5084
  "text-anchor": "middle",
5014
5085
  "dominant-baseline": "central",
5015
5086
  "aria-hidden": "true"
5016
- }, T(t.frameNumber), 13, ns)) : r("", !0)
5087
+ }, T(t.frameNumber), 13, gs)) : r("", !0)
5017
5088
  ], 64));
5018
5089
  }
5019
- }), is = [
5090
+ }), vs = [
5020
5091
  "data-track-index",
5021
5092
  "data-track-id",
5022
5093
  "data-track-empty",
@@ -5026,19 +5097,19 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5026
5097
  "data-track-top",
5027
5098
  "data-track-height",
5028
5099
  "transform"
5029
- ], as = [
5100
+ ], ys = [
5030
5101
  "width",
5031
5102
  "height",
5032
5103
  "stroke",
5033
5104
  "stroke-width",
5034
5105
  "stroke-dasharray",
5035
5106
  "stroke-linecap"
5036
- ], os = [
5107
+ ], bs = [
5037
5108
  "data-interactive",
5038
5109
  "data-independent-overlay-index",
5039
5110
  "width",
5040
5111
  "height"
5041
- ], ss = ["x", "y"], cs = /* @__PURE__ */ l({
5112
+ ], xs = ["x", "y"], Ss = /* @__PURE__ */ l({
5042
5113
  __name: "WaveformTrack",
5043
5114
  props: {
5044
5115
  track: {},
@@ -5064,7 +5135,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5064
5135
  visible: !0,
5065
5136
  color: Gt.COLOR,
5066
5137
  width: Gt.WIDTH,
5067
- dash: Gt.DASH
5138
+ dash: Gt.DASH,
5139
+ opacity: Gt.OPACITY,
5140
+ boundaryThreshold: Gt.BOUNDARY_THRESHOLD
5068
5141
  }) }
5069
5142
  },
5070
5143
  emits: [
@@ -5098,24 +5171,22 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5098
5171
  "data-track-height": e.track.height,
5099
5172
  transform: `translate(${e.track.left ?? 0}, ${e.track.top})`
5100
5173
  }, [
5101
- s(rs, {
5174
+ s(_s, {
5102
5175
  track: e.track,
5103
5176
  "clip-path-id": e.clipPathId,
5104
5177
  "inner-width": e.innerWidth,
5105
5178
  "clean-view": e.cleanView,
5106
5179
  "frame-number": e.frameNumber,
5107
- "frame-style": c.value,
5108
- "zero-line": e.zeroLine
5180
+ "frame-style": c.value
5109
5181
  }, null, 8, [
5110
5182
  "track",
5111
5183
  "clip-path-id",
5112
5184
  "inner-width",
5113
5185
  "clean-view",
5114
5186
  "frame-number",
5115
- "frame-style",
5116
- "zero-line"
5187
+ "frame-style"
5117
5188
  ]),
5118
- s(Go, {
5189
+ s(ss, {
5119
5190
  track: e.track,
5120
5191
  "inner-width": e.innerWidth,
5121
5192
  "clean-view": e.cleanView,
@@ -5141,11 +5212,24 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5141
5212
  "stroke-dasharray": c.value.borderStyle === "dashed" ? "6 4" : c.value.borderStyle === "dotted" ? "1 3" : void 0,
5142
5213
  "stroke-linecap": c.value.borderStyle === "dotted" ? "round" : void 0,
5143
5214
  "aria-hidden": "true"
5144
- }, null, 8, as)),
5145
- s(No, {
5215
+ }, null, 8, ys)),
5216
+ s(Ko, {
5146
5217
  track: e.track,
5147
5218
  "clip-path-id": e.clipPathId
5148
5219
  }, null, 8, ["track", "clip-path-id"]),
5220
+ s(Yo, {
5221
+ track: e.track,
5222
+ "clip-path-id": e.clipPathId,
5223
+ "inner-width": e.innerWidth,
5224
+ "clean-view": e.cleanView,
5225
+ "zero-line": e.zeroLine
5226
+ }, null, 8, [
5227
+ "track",
5228
+ "clip-path-id",
5229
+ "inner-width",
5230
+ "clean-view",
5231
+ "zero-line"
5232
+ ]),
5149
5233
  !e.track.isEmpty && e.track.hasVisibleSeries && e.displayMode === "independent" ? (y(), i("rect", {
5150
5234
  key: 1,
5151
5235
  class: p(["waveform-track__overlay waveform-track__overlay--independent waveform-chart__overlay waveform-chart__overlay--independent", {
@@ -5164,7 +5248,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5164
5248
  onPointerleave: n[4] ||= (e) => o("pointer-leave"),
5165
5249
  onClick: n[5] ||= (e) => o("click", e),
5166
5250
  onContextmenu: n[6] ||= (e) => o("contextmenu", e)
5167
- }, null, 42, os)) : r("", !0),
5251
+ }, null, 42, bs)) : r("", !0),
5168
5252
  !e.track.isEmpty && !e.track.hasVisibleSeries && !e.cleanView ? (y(), i("text", {
5169
5253
  key: 2,
5170
5254
  class: "waveform-track__no-visible-series",
@@ -5172,33 +5256,33 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5172
5256
  y: e.track.height / 2,
5173
5257
  "text-anchor": "middle",
5174
5258
  "dominant-baseline": "central"
5175
- }, " 暂无可见曲线 ", 8, ss)) : r("", !0)
5176
- ], 10, is));
5259
+ }, " 暂无可见曲线 ", 8, xs)) : r("", !0)
5260
+ ], 10, vs));
5177
5261
  }
5178
- }), ls = [
5262
+ }), Cs = [
5179
5263
  "width",
5180
5264
  "height",
5181
5265
  "data-position",
5182
5266
  "data-orientation"
5183
- ], us = [
5267
+ ], ws = [
5184
5268
  "disabled",
5185
5269
  "aria-pressed",
5186
5270
  "aria-label",
5187
5271
  "onClick"
5188
- ], ds = [
5272
+ ], Ts = [
5189
5273
  "data-line-type",
5190
5274
  "data-line-style",
5191
5275
  "data-point-type",
5192
5276
  "data-error-bar-visible"
5193
- ], fs = [
5277
+ ], Es = [
5194
5278
  "d",
5195
5279
  "stroke",
5196
5280
  "stroke-dasharray"
5197
- ], ps = [
5281
+ ], Ds = [
5198
5282
  "d",
5199
5283
  "stroke",
5200
5284
  "stroke-width"
5201
- ], ms = ["d", "fill"], hs = ["title"], gs = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5285
+ ], Os = ["d", "fill"], ks = ["title"], As = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5202
5286
  __name: "WaveformLegend",
5203
5287
  props: {
5204
5288
  series: {},
@@ -5256,45 +5340,45 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5256
5340
  "data-point-type": e.pointType,
5257
5341
  "data-error-bar-visible": e.errorBar.visible || void 0
5258
5342
  }, [
5259
- D(Co)(e.lineType) ? (y(), i("path", {
5343
+ D(Io)(e.lineType) ? (y(), i("path", {
5260
5344
  key: 0,
5261
5345
  class: "waveform-legend__line",
5262
- d: D(Co)(e.lineType) ?? void 0,
5346
+ d: D(Io)(e.lineType) ?? void 0,
5263
5347
  stroke: e.color,
5264
- "stroke-dasharray": D(wo)(e.lineStyle),
5348
+ "stroke-dasharray": D(Lo)(e.lineStyle),
5265
5349
  "stroke-width": "1",
5266
5350
  fill: "none"
5267
- }, null, 8, fs)) : r("", !0),
5351
+ }, null, 8, Es)) : r("", !0),
5268
5352
  e.errorBar.visible ? (y(), i("path", {
5269
5353
  key: 1,
5270
5354
  class: "waveform-legend__error-bar",
5271
- d: D(To)(e.errorBar.capWidth),
5355
+ d: D(Ro)(e.errorBar.capWidth),
5272
5356
  stroke: e.errorBar.color || e.color,
5273
5357
  "stroke-width": e.errorBar.width,
5274
5358
  "stroke-linecap": "butt",
5275
5359
  fill: "none"
5276
- }, null, 8, ps)) : r("", !0),
5360
+ }, null, 8, Ds)) : r("", !0),
5277
5361
  e.pointType === "none" ? r("", !0) : (y(), i("path", {
5278
5362
  key: 2,
5279
5363
  class: "waveform-legend__point",
5280
- d: D(xo)(e.pointType, 30) ?? void 0,
5364
+ d: D(Po)(e.pointType, 30) ?? void 0,
5281
5365
  fill: e.color,
5282
5366
  transform: "translate(13 8)"
5283
- }, null, 8, ms))
5284
- ], 8, ds)), a("span", {
5367
+ }, null, 8, Os))
5368
+ ], 8, Ts)), a("span", {
5285
5369
  class: "waveform-legend__label",
5286
5370
  title: e.name
5287
- }, T(e.name), 9, hs)], 10, us))), 128))], 6)], 2)], 8, ls));
5371
+ }, T(e.name), 9, ks)], 10, ws))), 128))], 6)], 2)], 8, Cs));
5288
5372
  }
5289
- }), [["__scopeId", "data-v-3af7ebae"]]), _s = {
5373
+ }), [["__scopeId", "data-v-3af7ebae"]]), js = {
5290
5374
  class: "waveform-chart__hover-layer",
5291
5375
  "pointer-events": "none",
5292
5376
  "aria-hidden": "true"
5293
- }, vs = ["clip-path", "transform"], ys = [
5377
+ }, Ms = ["clip-path", "transform"], Ns = [
5294
5378
  "x1",
5295
5379
  "x2",
5296
5380
  "y2"
5297
- ], bs = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5381
+ ], Ps = /*#__PURE__*/ nt(/* @__PURE__ */ l({
5298
5382
  __name: "WaveformHoverLayer",
5299
5383
  props: {
5300
5384
  state: {},
@@ -5310,7 +5394,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5310
5394
  x: e.xScale(n)
5311
5395
  }] : [];
5312
5396
  }));
5313
- return (t, r) => (y(), i("g", _s, [(y(!0), i(e, null, S(o.value, (e) => (y(), i("g", {
5397
+ return (t, r) => (y(), i("g", js, [(y(!0), i(e, null, S(o.value, (e) => (y(), i("g", {
5314
5398
  key: e.track.index,
5315
5399
  class: "waveform-track__crosshair waveform-chart__crosshair",
5316
5400
  "clip-path": `url(#${n.clipPathId}-${e.track.index})`,
@@ -5320,9 +5404,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5320
5404
  x2: e.x,
5321
5405
  y1: "0",
5322
5406
  y2: e.track.height
5323
- }, null, 8, ys)], 8, vs))), 128))]));
5407
+ }, null, 8, Ns)], 8, Ms))), 128))]));
5324
5408
  }
5325
- }), [["__scopeId", "data-v-54a5a37d"]]), xs = [
5409
+ }), [["__scopeId", "data-v-54a5a37d"]]), Fs = [
5326
5410
  "data-display-mode",
5327
5411
  "data-interaction-mode",
5328
5412
  "data-presentation-mode",
@@ -5331,31 +5415,31 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5331
5415
  "data-plot-margin-top",
5332
5416
  "data-plot-margin-bottom",
5333
5417
  "data-title-area-height"
5334
- ], Ss = [
5418
+ ], Is = [
5335
5419
  "role",
5336
5420
  "aria-level",
5337
5421
  "aria-hidden"
5338
- ], Cs = ["data-title-scale", "data-title-wrapped"], ws = [
5422
+ ], Ls = ["data-title-scale", "data-title-wrapped"], Rs = [
5339
5423
  "width",
5340
5424
  "height",
5341
5425
  "aria-label"
5342
- ], Ts = ["id"], Es = ["width", "height"], Ds = ["transform"], Os = {
5426
+ ], zs = ["id"], Bs = ["width", "height"], Vs = ["transform"], Hs = {
5343
5427
  key: 0,
5344
5428
  class: "waveform-chart__grid-slots",
5345
5429
  "aria-hidden": "true"
5346
- }, ks = ["transform"], As = ["width", "height"], js = ["width", "height"], Ms = [
5430
+ }, Us = ["transform"], Ws = ["width", "height"], Gs = ["width", "height"], Ks = [
5347
5431
  "x",
5348
5432
  "y",
5349
5433
  "width",
5350
5434
  "height"
5351
- ], Ns = {
5435
+ ], qs = {
5352
5436
  key: 4,
5353
5437
  class: "waveform-chart__legend-layer"
5354
- }, Ps = [
5438
+ }, Js = [
5355
5439
  "data-legend-track-index",
5356
5440
  "data-legend-track-id",
5357
5441
  "transform"
5358
- ], Fs = ["x", "y"], Is = ["x", "y"], Ls = /* @__PURE__ */ l({
5442
+ ], Ys = ["x", "y"], Xs = ["x", "y"], Zs = /* @__PURE__ */ l({
5359
5443
  __name: "WaveformChartView",
5360
5444
  props: { controller: {} },
5361
5445
  setup(t) {
@@ -5408,7 +5492,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5408
5492
  style: m(D(M)),
5409
5493
  "data-title-scale": D(N).scale,
5410
5494
  "data-title-wrapped": D(N).wrapped || void 0
5411
- }, T(D(A)), 13, Cs)], 4)) : r("", !0)], 12, Ss)) : r("", !0),
5495
+ }, T(D(A)), 13, Ls)], 4)) : r("", !0)], 12, Is)) : r("", !0),
5412
5496
  (y(), i("svg", {
5413
5497
  ref: D(Xe),
5414
5498
  class: "waveform-chart__svg",
@@ -5425,9 +5509,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5425
5509
  }, [a("rect", {
5426
5510
  width: e.width,
5427
5511
  height: e.height
5428
- }, null, 8, Es)], 8, Ts))), 128))]),
5512
+ }, null, 8, Bs)], 8, zs))), 128))]),
5429
5513
  a("g", { transform: `translate(${D(g)}, ${D(B)})` }, [
5430
- D(o) !== "compact" && !D(l) ? (y(), i("g", Os, [(y(!0), i(e, null, S(D(V), (e) => (y(), i("g", {
5514
+ D(o) !== "compact" && !D(l) ? (y(), i("g", Hs, [(y(!0), i(e, null, S(D(V), (e) => (y(), i("g", {
5431
5515
  key: `grid-slot-${e.slotIndex}`,
5432
5516
  transform: `translate(${e.left}, ${e.top})`
5433
5517
  }, [e.series ? r("", !0) : (y(), i("rect", {
@@ -5435,7 +5519,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5435
5519
  class: "waveform-chart__grid-slot-placeholder",
5436
5520
  width: e.width,
5437
5521
  height: e.cellHeight
5438
- }, null, 8, As))], 8, ks))), 128))])) : r("", !0),
5522
+ }, null, 8, Ws))], 8, Us))), 128))])) : r("", !0),
5439
5523
  D(o) !== "independent" && D(R).length && D(H) ? (y(), i("rect", {
5440
5524
  key: 1,
5441
5525
  ref: D(Qe),
@@ -5452,8 +5536,8 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5452
5536
  onPointerleave: E[4] ||= (...e) => D(q) && D(q)(...e),
5453
5537
  onClick: E[5] ||= (...e) => D(ie) && D(ie)(...e),
5454
5538
  onContextmenu: E[6] ||= (...e) => D(J) && D(J)(...e)
5455
- }, null, 42, js)) : r("", !0),
5456
- (y(!0), i(e, null, S(D(R), (e) => (y(), n(D(cs), {
5539
+ }, null, 42, Gs)) : r("", !0),
5540
+ (y(!0), i(e, null, S(D(R), (e) => (y(), n(D(Ss), {
5457
5541
  key: `${e.index}-${e.id}`,
5458
5542
  track: e,
5459
5543
  "clip-path-id": D(z),
@@ -5499,7 +5583,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5499
5583
  "onClick",
5500
5584
  "onContextmenu"
5501
5585
  ]))), 128)),
5502
- s(D(bs), {
5586
+ s(D(Ps), {
5503
5587
  state: D(pe),
5504
5588
  tracks: D(R),
5505
5589
  "clip-path-id": D(z),
@@ -5518,7 +5602,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5518
5602
  width: D(he).width,
5519
5603
  height: D(he).height,
5520
5604
  "aria-hidden": "true"
5521
- }, null, 8, Ms)) : r("", !0),
5605
+ }, null, 8, Ks)) : r("", !0),
5522
5606
  D(l) ? r("", !0) : (y(), n(D(rt), {
5523
5607
  key: 3,
5524
5608
  annotations: D(ge),
@@ -5537,13 +5621,13 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5537
5621
  "onMove",
5538
5622
  "onDragEnd"
5539
5623
  ])),
5540
- D(l) ? r("", !0) : (y(), i("g", Ns, [(y(!0), i(e, null, S(D(R), (e) => (y(), i("g", {
5624
+ D(l) ? r("", !0) : (y(), i("g", qs, [(y(!0), i(e, null, S(D(R), (e) => (y(), i("g", {
5541
5625
  key: `legend-${e.index}-${e.id}`,
5542
5626
  class: "waveform-chart__legend-track",
5543
5627
  "data-legend-track-index": e.index,
5544
5628
  "data-legend-track-id": e.id,
5545
5629
  transform: `translate(${e.left}, ${e.top})`
5546
- }, [!e.isEmpty && e.legendSeries.length > 1 ? (y(), n(D(gs), {
5630
+ }, [!e.isEmpty && e.legendSeries.length > 1 ? (y(), n(D(As), {
5547
5631
  key: 0,
5548
5632
  series: e.legendSeries,
5549
5633
  position: D(Se)(e.id),
@@ -5564,23 +5648,23 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5564
5648
  "width",
5565
5649
  "height",
5566
5650
  "onToggle"
5567
- ])) : r("", !0)], 8, Ps))), 128))]))
5568
- ], 8, Ds),
5651
+ ])) : r("", !0)], 8, Js))), 128))]))
5652
+ ], 8, Vs),
5569
5653
  D(De) && !D(l) ? (y(), i("text", {
5570
5654
  key: 0,
5571
5655
  class: "waveform-chart__label waveform-chart__x-label",
5572
5656
  x: D(g) + D(G) / 2,
5573
5657
  y: D(Oe),
5574
5658
  "text-anchor": "middle"
5575
- }, T(D(De)), 9, Fs)) : r("", !0),
5659
+ }, T(D(De)), 9, Ys)) : r("", !0),
5576
5660
  D(ke) && !D(I) ? (y(), i("text", {
5577
5661
  key: 1,
5578
5662
  class: "waveform-chart__empty",
5579
5663
  x: D(P) / 2,
5580
5664
  y: D(F) / 2,
5581
5665
  "text-anchor": "middle"
5582
- }, " 暂无有效波形数据 ", 8, Is)) : r("", !0)
5583
- ], 40, ws)),
5666
+ }, " 暂无有效波形数据 ", 8, Xs)) : r("", !0)
5667
+ ], 40, Rs)),
5584
5668
  D(Ae).showPagination && D(je) > 1 && !D(l) ? (y(), n(D(ce), {
5585
5669
  key: 1,
5586
5670
  class: "waveform-chart__pagination",
@@ -5597,7 +5681,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5597
5681
  "total",
5598
5682
  "onChange"
5599
5683
  ])) : r("", !0),
5600
- D(Le) && !D(l) && !D(u) ? (y(), n(io, {
5684
+ D(Le) && !D(l) && !D(u) ? (y(), n(vo, {
5601
5685
  key: 2,
5602
5686
  annotation: D(Le).annotation,
5603
5687
  mode: D(Le).mode,
@@ -5639,7 +5723,7 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5639
5723
  "onDelete",
5640
5724
  "onClose"
5641
5725
  ])) : r("", !0),
5642
- s(D(mo), {
5726
+ s(D(Do), {
5643
5727
  state: D(pe),
5644
5728
  visible: D(me) && !D(u),
5645
5729
  "time-unit": D(ue),
@@ -5652,9 +5736,9 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5652
5736
  "container-width",
5653
5737
  "container-height"
5654
5738
  ])
5655
- ], 46, xs));
5739
+ ], 46, Fs));
5656
5740
  }
5657
- }), Rs = /* @__PURE__ */ l({
5741
+ }), Qs = /* @__PURE__ */ l({
5658
5742
  __name: "WaveformChart",
5659
5743
  props: {
5660
5744
  data: {},
@@ -5673,6 +5757,10 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5673
5757
  type: Boolean,
5674
5758
  default: !0
5675
5759
  },
5760
+ integerZoom: {
5761
+ type: Boolean,
5762
+ default: !1
5763
+ },
5676
5764
  pannable: {
5677
5765
  type: Boolean,
5678
5766
  default: !1
@@ -5738,12 +5826,12 @@ var Eo = ["clip-path"], Do = ["data-series-id", "data-series-name"], Oo = [
5738
5826
  "sampling-error"
5739
5827
  ],
5740
5828
  setup(e, { expose: t, emit: r }) {
5741
- let i = za(e, r);
5829
+ let i = Qa(e, r);
5742
5830
  return t({
5743
5831
  resetViewport: i.resetViewport,
5744
5832
  setViewportDomain: i.setViewportDomain
5745
- }), (e, t) => (y(), n(Ls, { controller: D(i) }, null, 8, ["controller"]));
5833
+ }), (e, t) => (y(), n(Zs, { controller: D(i) }, null, 8, ["controller"]));
5746
5834
  }
5747
5835
  });
5748
5836
  //#endregion
5749
- export { Q as DEFAULT_WAVEFORM_RENDERING_OPTIONS, Rs as WaveformChart, vt as buildMinorTicks, wi as calculateWasmRange, Rt as clamp, jt as displayTime, Ti as findWasmVisibleRange, Pt as formatAxisTime, Nt as formatEndpointTime, Ft as formatTooltipTime, Si as initializeWasmSampling, ln as normalizeWaveformData, fn as normalizeWaveformSeries, _t as paddedDomain, ht as parseWaveformAnnotations, Lt as resolveTrackGeometry, Dn as resolveWaveformRenderingOptions, Ci as sampleWaveformWasm, Fn as selectRenderablePoints, mt as serializeWaveformAnnotations };
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 };