@ledgerhq/lumen-ui-react-visualization 0.1.18 → 0.1.20

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 (113) hide show
  1. package/dist/lib/Components/Axis/Axis.types.d.ts +6 -0
  2. package/dist/lib/Components/Axis/Axis.types.d.ts.map +1 -1
  3. package/dist/lib/Components/Axis/XAxis/XAxis.d.ts +1 -1
  4. package/dist/lib/Components/Axis/XAxis/XAxis.d.ts.map +1 -1
  5. package/dist/lib/Components/Axis/XAxis/XAxis.js +24 -23
  6. package/dist/lib/Components/Axis/YAxis/YAxis.d.ts +1 -1
  7. package/dist/lib/Components/Axis/YAxis/YAxis.d.ts.map +1 -1
  8. package/dist/lib/Components/Axis/YAxis/YAxis.js +36 -35
  9. package/dist/lib/Components/CartesianChart/CartesianChart.d.ts +1 -1
  10. package/dist/lib/Components/CartesianChart/CartesianChart.d.ts.map +1 -1
  11. package/dist/lib/Components/CartesianChart/CartesianChart.js +89 -82
  12. package/dist/lib/Components/CartesianChart/ChartEmptyLabel/ChartEmptyLabel.d.ts +11 -0
  13. package/dist/lib/Components/CartesianChart/ChartEmptyLabel/ChartEmptyLabel.d.ts.map +1 -0
  14. package/dist/lib/Components/CartesianChart/ChartEmptyLabel/ChartEmptyLabel.js +21 -0
  15. package/dist/lib/Components/CartesianChart/RevealAnimation/RevealAnimationProvider.d.ts +3 -0
  16. package/dist/lib/Components/CartesianChart/RevealAnimation/RevealAnimationProvider.d.ts.map +1 -0
  17. package/dist/lib/Components/CartesianChart/RevealAnimation/RevealAnimationProvider.js +41 -0
  18. package/dist/lib/Components/CartesianChart/RevealAnimation/context.d.ts +15 -0
  19. package/dist/lib/Components/CartesianChart/RevealAnimation/context.d.ts.map +1 -0
  20. package/dist/lib/Components/CartesianChart/RevealAnimation/context.js +10 -0
  21. package/dist/lib/Components/CartesianChart/RevealAnimation/index.d.ts +3 -0
  22. package/dist/lib/Components/CartesianChart/RevealAnimation/index.d.ts.map +1 -0
  23. package/dist/lib/Components/CartesianChart/RevealAnimation/types.d.ts +57 -0
  24. package/dist/lib/Components/CartesianChart/RevealAnimation/types.d.ts.map +1 -0
  25. package/dist/lib/Components/CartesianChart/RevealAnimation/utils.d.ts +31 -0
  26. package/dist/lib/Components/CartesianChart/RevealAnimation/utils.d.ts.map +1 -0
  27. package/dist/lib/Components/CartesianChart/RevealAnimation/utils.js +67 -0
  28. package/dist/lib/Components/CartesianChart/hooks/useShimmerAnimation.d.ts +18 -0
  29. package/dist/lib/Components/CartesianChart/hooks/useShimmerAnimation.d.ts.map +1 -0
  30. package/dist/lib/Components/CartesianChart/hooks/useShimmerAnimation.js +14 -0
  31. package/dist/lib/Components/CartesianChart/types.d.ts +11 -0
  32. package/dist/lib/Components/CartesianChart/types.d.ts.map +1 -1
  33. package/dist/lib/Components/CartesianChart/utils.d.ts +1 -24
  34. package/dist/lib/Components/CartesianChart/utils.d.ts.map +1 -1
  35. package/dist/lib/Components/CartesianChart/utils.js +12 -23
  36. package/dist/lib/Components/Line/Line.d.ts +1 -1
  37. package/dist/lib/Components/Line/Line.d.ts.map +1 -1
  38. package/dist/lib/Components/Line/Line.js +43 -36
  39. package/dist/lib/Components/Line/constants.d.ts +4 -0
  40. package/dist/lib/Components/Line/constants.d.ts.map +1 -0
  41. package/dist/lib/Components/Line/constants.js +7 -0
  42. package/dist/lib/Components/Line/index.d.ts +1 -1
  43. package/dist/lib/Components/Line/index.d.ts.map +1 -1
  44. package/dist/lib/Components/Line/types.d.ts +15 -0
  45. package/dist/lib/Components/Line/types.d.ts.map +1 -1
  46. package/dist/lib/Components/Line/utils.d.ts +11 -6
  47. package/dist/lib/Components/Line/utils.d.ts.map +1 -1
  48. package/dist/lib/Components/Line/utils.js +36 -18
  49. package/dist/lib/Components/LineChart/LineChart.d.ts +1 -1
  50. package/dist/lib/Components/LineChart/LineChart.d.ts.map +1 -1
  51. package/dist/lib/Components/LineChart/LineChart.js +152 -69
  52. package/dist/lib/Components/LineChart/LineChartEmptyState/LineChartEmptyState.d.ts +9 -0
  53. package/dist/lib/Components/LineChart/LineChartEmptyState/LineChartEmptyState.d.ts.map +1 -0
  54. package/dist/lib/Components/LineChart/LineChartEmptyState/LineChartEmptyState.js +51 -0
  55. package/dist/lib/Components/LineChart/LineChartEmptyState/index.d.ts +3 -0
  56. package/dist/lib/Components/LineChart/LineChartEmptyState/index.d.ts.map +1 -0
  57. package/dist/lib/Components/LineChart/LineChartEmptyState/types.d.ts +3 -0
  58. package/dist/lib/Components/LineChart/LineChartEmptyState/types.d.ts.map +1 -0
  59. package/dist/lib/Components/LineChart/LineChartEmptyState/utils.d.ts +14 -0
  60. package/dist/lib/Components/LineChart/LineChartEmptyState/utils.d.ts.map +1 -0
  61. package/dist/lib/Components/LineChart/LineChartEmptyState/utils.js +9 -0
  62. package/dist/lib/Components/LineChart/__stories__/chartStoryFixtures.d.ts +57 -3
  63. package/dist/lib/Components/LineChart/__stories__/chartStoryFixtures.d.ts.map +1 -1
  64. package/dist/lib/Components/LineChart/types.d.ts +39 -1
  65. package/dist/lib/Components/LineChart/types.d.ts.map +1 -1
  66. package/dist/lib/Components/LineChart/utils.d.ts +43 -0
  67. package/dist/lib/Components/LineChart/utils.d.ts.map +1 -0
  68. package/dist/lib/Components/LineChart/utils.js +37 -0
  69. package/dist/lib/Components/Point/Point.d.ts.map +1 -1
  70. package/dist/lib/Components/Point/Point.js +29 -27
  71. package/dist/lib/Components/ReferenceLine/ReferenceLine.d.ts.map +1 -1
  72. package/dist/lib/Components/ReferenceLine/ReferenceLine.js +16 -16
  73. package/dist/lib/Components/ReferenceLine/constants.d.ts +3 -3
  74. package/dist/lib/Components/ReferenceLine/constants.d.ts.map +1 -1
  75. package/dist/lib/Components/ReferenceLine/constants.js +5 -5
  76. package/dist/lib/Components/ReferenceLine/utils.d.ts.map +1 -1
  77. package/dist/lib/Components/ReferenceLine/utils.js +15 -14
  78. package/dist/lib/Components/Scrubber/DefaultScrubberTooltip/DefaultScrubberTooltip.d.ts.map +1 -1
  79. package/dist/lib/Components/Scrubber/DefaultScrubberTooltip/DefaultScrubberTooltip.js +4 -2
  80. package/dist/lib/Components/Scrubber/Scrubber.d.ts.map +1 -1
  81. package/dist/lib/Components/Scrubber/Scrubber.js +34 -29
  82. package/dist/lib/Components/Scrubber/ScrubberProvider.d.ts.map +1 -1
  83. package/dist/lib/Components/Scrubber/ScrubberProvider.js +68 -67
  84. package/dist/lib/Components/Scrubber/utils.d.ts.map +1 -1
  85. package/dist/lib/Components/Scrubber/utils.js +30 -32
  86. package/dist/lib/utils/index.d.ts +1 -1
  87. package/dist/lib/utils/index.d.ts.map +1 -1
  88. package/dist/lib/utils/numbers.d.ts +13 -0
  89. package/dist/lib/utils/numbers.d.ts.map +1 -0
  90. package/dist/lib/utils/numbers.js +5 -0
  91. package/dist/lib/utils/ticks/ticks.d.ts +1 -11
  92. package/dist/lib/utils/ticks/ticks.d.ts.map +1 -1
  93. package/dist/lib/utils/ticks/ticks.js +19 -21
  94. package/dist/lib/utils/types.d.ts +26 -1
  95. package/dist/lib/utils/types.d.ts.map +1 -1
  96. package/dist/node_modules/d3-shape/src/curve/monotone.js +69 -0
  97. package/dist/node_modules/d3-shape/src/curve/natural.js +41 -0
  98. package/dist/node_modules/d3-shape/src/curve/step.js +51 -0
  99. package/dist/package.json +3 -3
  100. package/package.json +3 -3
  101. package/dist/lib/Components/CartesianChart/RevealClip/RevealClipDefs.d.ts +0 -3
  102. package/dist/lib/Components/CartesianChart/RevealClip/RevealClipDefs.d.ts.map +0 -1
  103. package/dist/lib/Components/CartesianChart/RevealClip/RevealClipDefs.js +0 -41
  104. package/dist/lib/Components/CartesianChart/RevealClip/context.d.ts +0 -7
  105. package/dist/lib/Components/CartesianChart/RevealClip/context.d.ts.map +0 -1
  106. package/dist/lib/Components/CartesianChart/RevealClip/context.js +0 -6
  107. package/dist/lib/Components/CartesianChart/RevealClip/index.d.ts +0 -3
  108. package/dist/lib/Components/CartesianChart/RevealClip/index.d.ts.map +0 -1
  109. package/dist/lib/Components/CartesianChart/RevealClip/types.d.ts +0 -37
  110. package/dist/lib/Components/CartesianChart/RevealClip/types.d.ts.map +0 -1
  111. package/dist/lib/Components/CartesianChart/RevealClip/utils.d.ts +0 -17
  112. package/dist/lib/Components/CartesianChart/RevealClip/utils.d.ts.map +0 -1
  113. package/dist/lib/Components/CartesianChart/RevealClip/utils.js +0 -23
@@ -1 +1 @@
1
- {"version":3,"file":"Scrubber.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/Scrubber/Scrubber.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAgB,EAChB,WAAmB,EACnB,WAAmB,EACnB,OAAO,GACR,EAAE,QAAQ,CAAC,aAAa,CAAC,kDAoJzB"}
1
+ {"version":3,"file":"Scrubber.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/Scrubber/Scrubber.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAgB,EAChB,WAAmB,EACnB,WAAmB,EACnB,OAAO,GACR,EAAE,QAAQ,CAAC,aAAa,CAAC,kDAwJzB"}
@@ -1,17 +1,18 @@
1
- import { jsxs as f, jsx as i, Fragment as N } from "react/jsx-runtime";
2
- import { useId as P, useMemo as u } from "react";
3
- import { DefaultScrubberTooltip as R } from "./DefaultScrubberTooltip/DefaultScrubberTooltip.js";
4
- import { resolvePixelX as X, resolvePixelY as w, LINE_GRADIENT_EDGE_OPACITY as E, OVERLAY_OPACITY as L, BEACON_STROKE_WIDTH as G, BEACON_RADIUS as V, OVERLAY_OFFSET as p, OVERLAY_LINE_INSET as O } from "./utils.js";
5
- import { useScrubberContext as F } from "./context/scrubberContext.js";
1
+ import { jsxs as f, jsx as i, Fragment as R } from "react/jsx-runtime";
2
+ import { useId as D, useMemo as u } from "react";
3
+ import { LINE_DEFAULT_STROKE_COLOR as N } from "../Line/constants.js";
4
+ import { DefaultScrubberTooltip as P } from "./DefaultScrubberTooltip/DefaultScrubberTooltip.js";
5
+ import { resolvePixelX as X, resolvePixelY as w, LINE_GRADIENT_EDGE_OPACITY as O, OVERLAY_OPACITY as F, BEACON_STROKE_WIDTH as G, BEACON_RADIUS as U, OVERLAY_OFFSET as m, OVERLAY_LINE_INSET as C } from "./utils.js";
6
+ import { useScrubberContext as V } from "./context/scrubberContext.js";
6
7
  import { useCartesianChartContext as H } from "../CartesianChart/context/cartesianChartContext.js";
7
8
  import { cssVar as o } from "../../../libs/design-core/dist/lib/cssVar/cssVar.js";
8
- function B({
9
- hideLine: A = !1,
10
- hideOverlay: Y = !1,
9
+ function Q({
10
+ hideLine: _ = !1,
11
+ hideOverlay: A = !1,
11
12
  showBeacons: n = !1,
12
13
  tooltip: d
13
14
  }) {
14
- const m = P(), { scrubberPosition: e } = F(), {
15
+ const p = D(), { scrubberPosition: e } = V(), {
15
16
  getXScale: v,
16
17
  getXAxisConfig: b,
17
18
  getYScale: h,
@@ -21,9 +22,13 @@ function B({
21
22
  } = H(), r = u(() => {
22
23
  if (e !== void 0)
23
24
  return X(e, v, b());
24
- }, [e, v, b]), k = u(() => e === void 0 || !n ? [] : y.map((t) => {
25
- const c = g.get(t.id)?.data, C = w(e, c, h);
26
- return C === void 0 ? null : { id: t.id, stroke: t.stroke, pixelY: C };
25
+ }, [e, v, b]), T = u(() => e === void 0 || !n ? [] : y.map((t) => {
26
+ const c = g.get(t.id)?.data, E = w(e, c, h);
27
+ return E === void 0 ? null : {
28
+ id: t.id,
29
+ stroke: t.stroke || N,
30
+ pixelY: E
31
+ };
27
32
  }).filter(
28
33
  (t) => t !== null
29
34
  ), [e, n, y, g, h]), s = u(() => {
@@ -46,16 +51,16 @@ function B({
46
51
  y: a,
47
52
  width: S,
48
53
  height: l
49
- } = x, T = r + O, _ = a - p, W = Math.max(
54
+ } = x, Y = r + C, k = a - m, W = Math.max(
50
55
  0,
51
- I + S - r - O + p
52
- ), D = l + p * 2;
56
+ I + S - r - C + m
57
+ ), L = l + m * 2;
53
58
  return /* @__PURE__ */ f("g", { "data-testid": "scrubber", children: [
54
- !A && /* @__PURE__ */ f(N, { children: [
59
+ !_ && /* @__PURE__ */ f(R, { children: [
55
60
  /* @__PURE__ */ i("defs", { children: /* @__PURE__ */ f(
56
61
  "linearGradient",
57
62
  {
58
- id: m,
63
+ id: p,
59
64
  gradientUnits: "userSpaceOnUse",
60
65
  x1: r,
61
66
  y1: a,
@@ -67,7 +72,7 @@ function B({
67
72
  {
68
73
  offset: "0%",
69
74
  stopColor: o("var(--border-base)"),
70
- stopOpacity: E
75
+ stopOpacity: O
71
76
  }
72
77
  ),
73
78
  /* @__PURE__ */ i("stop", { offset: "20%", stopColor: o("var(--border-base)") }),
@@ -77,7 +82,7 @@ function B({
77
82
  {
78
83
  offset: "100%",
79
84
  stopColor: o("var(--border-base)"),
80
- stopOpacity: E
85
+ stopOpacity: O
81
86
  }
82
87
  )
83
88
  ]
@@ -91,30 +96,30 @@ function B({
91
96
  y1: a,
92
97
  x2: r,
93
98
  y2: a + l,
94
- stroke: `url(#${m})`,
99
+ stroke: `url(#${p})`,
95
100
  strokeWidth: o("var(--stroke-1)")
96
101
  }
97
102
  )
98
103
  ] }),
99
- !Y && /* @__PURE__ */ i(
104
+ !A && /* @__PURE__ */ i(
100
105
  "rect",
101
106
  {
102
107
  "data-testid": "scrubber-overlay",
103
- x: T,
104
- y: _,
108
+ x: Y,
109
+ y: k,
105
110
  width: W,
106
- height: D,
111
+ height: L,
107
112
  fill: o("var(--background-base)"),
108
- opacity: L
113
+ opacity: F
109
114
  }
110
115
  ),
111
- n && k.map((t) => /* @__PURE__ */ i(
116
+ n && T.map((t) => /* @__PURE__ */ i(
112
117
  "circle",
113
118
  {
114
119
  "data-testid": `scrubber-beacon-${t.id}`,
115
120
  cx: r,
116
121
  cy: t.pixelY,
117
- r: V,
122
+ r: U,
118
123
  fill: t.stroke,
119
124
  stroke: o("var(--background-canvas)"),
120
125
  strokeWidth: G
@@ -122,7 +127,7 @@ function B({
122
127
  t.id
123
128
  )),
124
129
  s !== void 0 && /* @__PURE__ */ i(
125
- R,
130
+ P,
126
131
  {
127
132
  pixelX: r,
128
133
  drawingArea: x,
@@ -135,5 +140,5 @@ function B({
135
140
  ] });
136
141
  }
137
142
  export {
138
- B as Scrubber
143
+ Q as Scrubber
139
144
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ScrubberProvider.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/Scrubber/ScrubberProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAwB,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAQ3E,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,eAAe,EACf,wBAAwB,EACxB,YAAgB,GACjB,EAAE,QAAQ,CAAC,qBAAqB,CAAC,2CA+NjC"}
1
+ {"version":3,"file":"ScrubberProvider.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/Scrubber/ScrubberProvider.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAwB,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAQ3E,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,eAAe,EACf,wBAAwB,EACxB,YAAgB,GACjB,EAAE,QAAQ,CAAC,qBAAqB,CAAC,2CA+NjC"}
@@ -1,84 +1,85 @@
1
- import { jsx as F } from "react/jsx-runtime";
2
- import { useState as q, useRef as C, useMemo as I, useCallback as s, useEffect as K } from "react";
3
- import { buildSortedMagnets as j, getDataIndexFromPosition as z, resolvePixelX as H, applyMagnetization as N } from "./utils.js";
4
- import { useCartesianChartContext as U } from "../CartesianChart/context/cartesianChartContext.js";
5
- import { useMagneticPointsContext as V } from "../Point/pointContext/magneticPointsContext.js";
6
- import { ScrubberContextProvider as G } from "./context/scrubberContext.js";
7
- function _({
8
- children: X,
9
- svgRef: k,
1
+ import { jsx as q } from "react/jsx-runtime";
2
+ import { useState as K, useRef as k, useMemo as X, useCallback as c, useEffect as j } from "react";
3
+ import { clamp as p } from "../../utils/numbers.js";
4
+ import { buildSortedMagnets as z, getDataIndexFromPosition as H, resolvePixelX as N, applyMagnetization as U } from "./utils.js";
5
+ import { useCartesianChartContext as V } from "../CartesianChart/context/cartesianChartContext.js";
6
+ import { useMagneticPointsContext as G } from "../Point/pointContext/magneticPointsContext.js";
7
+ import { ScrubberContextProvider as J } from "./context/scrubberContext.js";
8
+ function S({
9
+ children: R,
10
+ svgRef: D,
10
11
  enableScrubbing: r,
11
- onScrubberPositionChange: D,
12
- magnetRadius: p = 8
12
+ onScrubberPositionChange: y,
13
+ magnetRadius: E = 8
13
14
  }) {
14
- const { getXScale: f, getXAxisConfig: m, dataLength: c } = U(), { getMagneticPoints: y, version: R } = V(), [v, T] = q(
15
+ const { getXScale: f, getXAxisConfig: v, dataLength: n } = V(), { getMagneticPoints: w, version: T } = G(), [m, B] = K(
15
16
  void 0
16
- ), h = C(v);
17
- h.current = v;
18
- const x = C(null), l = C(0), w = I(() => {
19
- const t = y();
20
- return j({
17
+ ), h = k(m);
18
+ h.current = m;
19
+ const g = k(null), l = k(0), A = X(() => {
20
+ const t = w();
21
+ return z({
21
22
  magneticIndices: t,
22
- getPixelForIndex: (e) => H(e, f, m())
23
+ getPixelForIndex: (e) => N(e, f, v())
23
24
  });
24
- }, [R, y, f, m]), i = s(
25
+ }, [T, w, f, v]), i = c(
25
26
  (t) => {
26
- const e = t === void 0 ? void 0 : Math.max(0, Math.min(t, c - 1));
27
- T(e), D?.(e);
27
+ const e = t === void 0 || n <= 0 ? void 0 : p(t, 0, n - 1);
28
+ B(e), y?.(e);
28
29
  },
29
- [c, D]
30
- ), A = s(
30
+ [n, y]
31
+ ), I = c(
31
32
  (t) => {
32
33
  const e = f();
33
- if (!e || !r || c <= 0) return;
34
- const a = m();
35
- let o = z(
34
+ if (!e || !r || n <= 0) return;
35
+ const a = v();
36
+ let o = H(
36
37
  t,
37
38
  e,
38
39
  a,
39
- c
40
+ n
40
41
  );
41
- p > 0 && (o = N({
42
+ E > 0 && (o = U({
42
43
  resolvedIndex: o,
43
44
  pixelX: t,
44
- sortedMagnets: w,
45
- magnetRadius: p
45
+ sortedMagnets: A,
46
+ magnetRadius: E
46
47
  })), o !== h.current && i(o);
47
48
  },
48
49
  [
49
50
  r,
50
51
  f,
51
- m,
52
- c,
53
- w,
54
- p,
52
+ v,
53
+ n,
54
+ A,
55
+ E,
55
56
  i
56
57
  ]
57
- ), u = s(
58
+ ), u = c(
58
59
  (t) => {
59
- x.current = t, l.current || (l.current = requestAnimationFrame(() => {
60
+ g.current = t, l.current || (l.current = requestAnimationFrame(() => {
60
61
  l.current = 0;
61
- const e = x.current;
62
- e !== null && (x.current = null, A(e));
62
+ const e = g.current;
63
+ e !== null && (g.current = null, I(e));
63
64
  }));
64
65
  },
65
- [A]
66
- ), n = s(() => {
66
+ [I]
67
+ ), s = c(() => {
67
68
  r && i(void 0);
68
- }, [r, i]), E = s(
69
+ }, [r, i]), L = c(
69
70
  (t) => {
70
71
  const a = t.currentTarget.getBoundingClientRect();
71
72
  u(t.clientX - a.left);
72
73
  },
73
74
  [u]
74
- ), g = s(
75
+ ), x = c(
75
76
  (t) => {
76
77
  if (!r || !t.touches.length) return;
77
78
  const e = t.touches[0], o = t.currentTarget.getBoundingClientRect();
78
79
  u(e.clientX - o.left);
79
80
  },
80
81
  [r, u]
81
- ), L = s(
82
+ ), P = c(
82
83
  (t) => {
83
84
  if (!t.touches.length) return;
84
85
  t.preventDefault();
@@ -86,17 +87,17 @@ function _({
86
87
  u(e.clientX - o.left);
87
88
  },
88
89
  [u]
89
- ), M = s(
90
+ ), C = c(
90
91
  (t) => {
91
- if (!r || c <= 0) return;
92
- const e = c - 1, a = h.current ?? e, o = t.shiftKey ? Math.min(10, Math.max(1, Math.floor(e * 0.1))) : 1;
92
+ if (!r || n <= 0) return;
93
+ const e = n - 1, a = h.current ?? e, o = t.shiftKey ? p(Math.floor(e * 0.1), 1, 10) : 1;
93
94
  let d;
94
95
  switch (t.key) {
95
96
  case "ArrowLeft":
96
- t.preventDefault(), d = Math.max(0, a - o);
97
+ t.preventDefault(), d = p(a - o, 0, e);
97
98
  break;
98
99
  case "ArrowRight":
99
- t.preventDefault(), d = Math.min(e, a + o);
100
+ t.preventDefault(), d = p(a + o, 0, e);
100
101
  break;
101
102
  case "Home":
102
103
  t.preventDefault(), d = 0;
@@ -112,36 +113,36 @@ function _({
112
113
  }
113
114
  i(d);
114
115
  },
115
- [r, c, i]
116
- ), P = s(() => {
117
- !r || h.current === void 0 || n();
118
- }, [r, n]);
119
- K(() => {
120
- const t = k.current;
116
+ [r, n, i]
117
+ ), M = c(() => {
118
+ !r || h.current === void 0 || s();
119
+ }, [r, s]);
120
+ j(() => {
121
+ const t = D.current;
121
122
  if (!(!t || !r))
122
- return t.addEventListener("mousemove", E), t.addEventListener("mouseleave", n), t.addEventListener("touchstart", g, { passive: !1 }), t.addEventListener("touchmove", L, { passive: !1 }), t.addEventListener("touchend", n), t.addEventListener("touchcancel", n), t.addEventListener("keydown", M), t.addEventListener("blur", P), () => {
123
- t.removeEventListener("mousemove", E), t.removeEventListener("mouseleave", n), t.removeEventListener("touchstart", g), t.removeEventListener("touchmove", L), t.removeEventListener("touchend", n), t.removeEventListener("touchcancel", n), t.removeEventListener("keydown", M), t.removeEventListener("blur", P), cancelAnimationFrame(l.current), l.current = 0;
123
+ return t.addEventListener("mousemove", L), t.addEventListener("mouseleave", s), t.addEventListener("touchstart", x, { passive: !1 }), t.addEventListener("touchmove", P, { passive: !1 }), t.addEventListener("touchend", s), t.addEventListener("touchcancel", s), t.addEventListener("keydown", C), t.addEventListener("blur", M), () => {
124
+ t.removeEventListener("mousemove", L), t.removeEventListener("mouseleave", s), t.removeEventListener("touchstart", x), t.removeEventListener("touchmove", P), t.removeEventListener("touchend", s), t.removeEventListener("touchcancel", s), t.removeEventListener("keydown", C), t.removeEventListener("blur", M), cancelAnimationFrame(l.current), l.current = 0;
124
125
  };
125
126
  }, [
126
- k,
127
+ D,
127
128
  r,
128
- E,
129
- n,
130
- g,
131
129
  L,
132
- M,
133
- P
130
+ s,
131
+ x,
132
+ P,
133
+ C,
134
+ M
134
135
  ]);
135
- const B = I(
136
+ const F = X(
136
137
  () => ({
137
138
  enableScrubbing: r,
138
- scrubberPosition: v,
139
+ scrubberPosition: m,
139
140
  onScrubberPositionChange: i
140
141
  }),
141
- [r, v, i]
142
+ [r, m, i]
142
143
  );
143
- return /* @__PURE__ */ F(G, { value: B, children: X });
144
+ return /* @__PURE__ */ q(J, { value: F, children: R });
144
145
  }
145
146
  export {
146
- _ as ScrubberProvider
147
+ S as ScrubberProvider
147
148
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/Scrubber/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,wCAGhC;IACD,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACzD,KAAG,WAAW,EAad,CAAC;AAgCF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,OAAO,kBAAkB,EACzB,YAAY,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,EAC9C,YAAY,MAAM,KACjB,MA2BF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,WAAW,MAAM,EACjB,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,SAAS,EACzC,WAAW,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,WAAW,CAAC,KAClE,MAAM,GAAG,SASX,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,WAAW,MAAM,EACjB,WAAW,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,WAAW,CAAC,EACnE,aAAa,aAAa,KACzB,MAAM,GAAG,SAMX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,eAAe,SAAS,WAAW,EAAE,EACrC,QAAQ,MAAM,KACb,MAsBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,yDAKhC;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB,KAAG,MAWH,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/Components/Scrubber/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,wCAGhC;IACD,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACzD,KAAG,WAAW,EAad,CAAC;AAgCF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,OAAO,kBAAkB,EACzB,YAAY,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,EAC9C,YAAY,MAAM,KACjB,MAwBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,WAAW,MAAM,EACjB,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,SAAS,EACzC,WAAW,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,WAAW,CAAC,KAClE,MAAM,GAAG,SASX,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,WAAW,MAAM,EACjB,WAAW,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,WAAW,CAAC,EACnE,aAAa,aAAa,KACzB,MAAM,GAAG,SAMX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,eAAe,SAAS,WAAW,EAAE,EACrC,QAAQ,MAAM,KACb,MAsBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,yDAKhC;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB,KAAG,MAWH,CAAC"}
@@ -1,5 +1,6 @@
1
- import { getPointOnScale as f, isNumericScale as l, isCategoricalScale as a } from "../../utils/scales/scales.js";
2
- const v = 5, E = 2, m = 2, p = 0.5, A = 0.8, I = 0.1, O = ({
1
+ import { clamp as f } from "../../utils/numbers.js";
2
+ import { getPointOnScale as a, isNumericScale as u, isCategoricalScale as d } from "../../utils/scales/scales.js";
3
+ const E = 5, m = 2, A = 2, I = 0.5, O = 0.8, _ = 0.1, S = ({
3
4
  magneticIndices: o,
4
5
  getPixelForIndex: i
5
6
  }) => {
@@ -10,7 +11,7 @@ const v = 5, E = 2, m = 2, p = 0.5, A = 0.8, I = 0.1, O = ({
10
11
  t !== void 0 && n.push({ index: e, pixelX: t });
11
12
  }
12
13
  return n.sort((e, t) => e.pixelX - t.pixelX), n;
13
- }, d = (o) => typeof o[0] == "number", u = (o, i, n) => {
14
+ }, h = (o) => typeof o[0] == "number", l = (o, i, n) => {
14
15
  let e = 0, t = 1 / 0;
15
16
  for (let r = 0; r < o; r++) {
16
17
  const c = n(r);
@@ -19,41 +20,38 @@ const v = 5, E = 2, m = 2, p = 0.5, A = 0.8, I = 0.1, O = ({
19
20
  s < t && (t = s, e = r);
20
21
  }
21
22
  return e;
22
- }, _ = (o, i, n, e) => {
23
- if (a(i)) {
23
+ }, b = (o, i, n, e) => {
24
+ if (d(i)) {
24
25
  const t = i.domain(), r = i.bandwidth();
25
- return u(t.length, o, (c) => {
26
+ return l(t.length, o, (c) => {
26
27
  const s = i(t[c]);
27
28
  return s === void 0 ? void 0 : s + r / 2;
28
29
  });
29
30
  }
30
- if (l(i)) {
31
+ if (u(i)) {
31
32
  const t = n?.data;
32
- if (t && t.length > 0 && d(t))
33
- return u(
33
+ if (t && t.length > 0 && h(t))
34
+ return l(
34
35
  t.length,
35
36
  o,
36
37
  (c) => i(t[c])
37
38
  );
38
39
  const r = i.invert(o);
39
- return Math.max(
40
- 0,
41
- Math.min(Math.round(r), e - 1)
42
- );
40
+ return f(Math.round(r), 0, e - 1);
43
41
  }
44
42
  return 0;
45
- }, S = (o, i, n) => {
43
+ }, N = (o, i, n) => {
46
44
  const e = n();
47
- if (!e || !l(e) || !i) return;
45
+ if (!e || !u(e) || !i) return;
48
46
  const t = i[o];
49
47
  if (t != null)
50
48
  return e(t);
51
- }, b = (o, i, n) => {
49
+ }, T = (o, i, n) => {
52
50
  const e = i();
53
51
  if (!e) return;
54
52
  const t = n?.data?.[o];
55
- return f(typeof t == "number" ? t : o, e);
56
- }, h = (o, i) => {
53
+ return a(typeof t == "number" ? t : o, e);
54
+ }, p = (o, i) => {
57
55
  if (o.length === 0) return -1;
58
56
  let n = 0, e = o.length;
59
57
  for (; n < e; ) {
@@ -64,27 +62,27 @@ const v = 5, E = 2, m = 2, p = 0.5, A = 0.8, I = 0.1, O = ({
64
62
  if (n === o.length) return n - 1;
65
63
  const t = i - o[n - 1].pixelX, r = o[n].pixelX - i;
66
64
  return t <= r ? n - 1 : n;
67
- }, N = ({
65
+ }, y = ({
68
66
  resolvedIndex: o,
69
67
  pixelX: i,
70
68
  sortedMagnets: n,
71
69
  magnetRadius: e
72
70
  }) => {
73
71
  if (e <= 0 || n.length === 0) return o;
74
- const t = h(n, i);
72
+ const t = p(n, i);
75
73
  return t >= 0 && Math.abs(n[t].pixelX - i) <= e ? n[t].index : o;
76
74
  };
77
75
  export {
78
- v as BEACON_RADIUS,
79
- E as BEACON_STROKE_WIDTH,
80
- I as LINE_GRADIENT_EDGE_OPACITY,
81
- p as OVERLAY_LINE_INSET,
82
- m as OVERLAY_OFFSET,
83
- A as OVERLAY_OPACITY,
84
- N as applyMagnetization,
85
- O as buildSortedMagnets,
86
- _ as getDataIndexFromPosition,
87
- h as nearestIndex,
88
- b as resolvePixelX,
89
- S as resolvePixelY
76
+ E as BEACON_RADIUS,
77
+ m as BEACON_STROKE_WIDTH,
78
+ _ as LINE_GRADIENT_EDGE_OPACITY,
79
+ I as OVERLAY_LINE_INSET,
80
+ A as OVERLAY_OFFSET,
81
+ O as OVERLAY_OPACITY,
82
+ y as applyMagnetization,
83
+ S as buildSortedMagnets,
84
+ b as getDataIndexFromPosition,
85
+ p as nearestIndex,
86
+ T as resolvePixelX,
87
+ N as resolvePixelY
90
88
  };
@@ -1,2 +1,2 @@
1
- export type { CartesianChartContextValue, CategoricalScale, ChartInset, ChartScaleFunction, DrawingArea, NumericScale, Series, } from './types';
1
+ export type { CartesianChartContextValue, CategoricalScale, ChartInset, ChartScaleFunction, CurveType, DrawingArea, NumericScale, Series, } from './types';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,MAAM,GACP,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,GACP,MAAM,SAAS,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Type guard for a finite number. Narrows out `null`, `undefined`, `NaN` and
3
+ * `Infinity`, i.e. any value that cannot be projected to a valid coordinate or
4
+ * counted as a drawable data point.
5
+ */
6
+ export declare const isFiniteNumber: (value: unknown) => value is number;
7
+ /**
8
+ * Constrains `value` to the inclusive `[min, max]` range. For a degenerate
9
+ * range where `min > max` (e.g. an index range `[0, length - 1]` for empty
10
+ * data), `min` takes precedence and is returned — matching `lodash.clamp`.
11
+ */
12
+ export declare const clamp: (value: number, min: number, max: number) => number;
13
+ //# sourceMappingURL=numbers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/numbers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACjC,CAAC;AAEzB;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAC3B,CAAC"}
@@ -0,0 +1,5 @@
1
+ const m = (i) => Number.isFinite(i), n = (i, t, e) => Math.max(Math.min(i, e), t);
2
+ export {
3
+ n as clamp,
4
+ m as isFiniteNumber
5
+ };
@@ -1,5 +1,5 @@
1
1
  import { BaseAxisProps } from '../../Components/Axis';
2
- import { ChartScaleFunction, DrawingArea } from '../types';
2
+ import { ChartScaleFunction } from '../types';
3
3
  export declare const APPROXIMATE_TICK_COUNT = 5;
4
4
  export type TickData = {
5
5
  position: number;
@@ -32,14 +32,4 @@ export declare const getTickLabel: (tick: number, axisData: BaseAxisProps["data"
32
32
  * Builds the complete tick data array from a scale and axis configuration.
33
33
  */
34
34
  export declare const buildTicksData: (scale: ChartScaleFunction, axisConfig?: BaseAxisProps, explicitTicks?: number[], formatter?: (value: number | string) => string) => TickData[];
35
- /**
36
- * Excludes the X grid line at the Y-axis origin (left edge)
37
- * to prevent overlap with the Y-axis solid line.
38
- */
39
- export declare const isTickOnXAxisDomainEdge: (tick: TickData, drawingArea: DrawingArea) => boolean;
40
- /**
41
- * Excludes the Y grid line at the X-axis origin (bottom edge)
42
- * to prevent overlap with the X-axis solid line.
43
- */
44
- export declare const isTickOnYAxisDomainEdge: (tick: TickData, drawingArea: DrawingArea) => boolean;
45
35
  //# sourceMappingURL=ticks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ticks.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/ticks/ticks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEhE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,kBAAkB,EACzB,gBAAgB,MAAM,EAAE,EACxB,WAAW,aAAa,CAAC,MAAM,CAAC,KAC/B,MAAM,EAUR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,kBAAkB,EACzB,MAAM,MAAM,KACX,MAKF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,UAAU,aAAa,CAAC,MAAM,CAAC,EAC/B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,KAC7C,MAeF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,kBAAkB,EACzB,aAAa,aAAa,EAC1B,gBAAgB,MAAM,EAAE,EACxB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,KAC7C,QAAQ,EASV,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,QAAQ,EACd,aAAa,WAAW,KACvB,OAEF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,QAAQ,EACd,aAAa,WAAW,KACvB,OAEF,CAAC"}
1
+ {"version":3,"file":"ticks.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/ticks/ticks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,kBAAkB,EACzB,gBAAgB,MAAM,EAAE,EACxB,WAAW,aAAa,CAAC,MAAM,CAAC,KAC/B,MAAM,EAUR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,kBAAkB,EACzB,MAAM,MAAM,KACX,MAKF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,UAAU,aAAa,CAAC,MAAM,CAAC,EAC/B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,KAC7C,MAeF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,kBAAkB,EACzB,aAAa,aAAa,EAC1B,gBAAgB,MAAM,EAAE,EACxB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,KAC7C,QAAQ,EASV,CAAC"}
@@ -1,25 +1,23 @@
1
- import { isCategoricalScale as u, isNumericScale as g } from "../scales/scales.js";
2
- const s = 5, f = (n, r, o) => r && r.length > 0 ? r : o && o.length > 0 ? typeof o[0] == "number" ? o : o.map((e, t) => t) : u(n) ? n.domain() : g(n) ? n.ticks(s) : [], d = (n, r) => u(n) ? (n(r) ?? 0) + n.bandwidth() / 2 : n(r), m = (n, r, o) => {
3
- const e = r && Array.isArray(r) && typeof r[0] == "string";
4
- if (o) {
5
- const t = e && r[n] !== void 0 ? r[n] : n;
6
- return String(o(t));
1
+ import { isCategoricalScale as g, isNumericScale as i } from "../scales/scales.js";
2
+ const f = 5, d = (r, n, e) => n && n.length > 0 ? n : e && e.length > 0 ? typeof e[0] == "number" ? e : e.map((o, t) => t) : g(r) ? r.domain() : i(r) ? r.ticks(f) : [], b = (r, n) => g(r) ? (r(n) ?? 0) + r.bandwidth() / 2 : r(n), l = (r, n, e) => {
3
+ const o = n && Array.isArray(n) && typeof n[0] == "string";
4
+ if (e) {
5
+ const t = o && n[r] !== void 0 ? n[r] : r;
6
+ return String(e(t));
7
7
  }
8
- return e && r[n] !== void 0 ? String(r[n]) : String(n);
9
- }, b = (n, r, o, e) => {
10
- const t = r?.data;
11
- return f(n, o, t).map((i) => ({
12
- position: d(n, i),
13
- value: i,
14
- label: m(i, t, e)
8
+ return o && n[r] !== void 0 ? String(n[r]) : String(r);
9
+ }, p = (r, n, e, o) => {
10
+ const t = n?.data;
11
+ return d(r, e, t).map((u) => ({
12
+ position: b(r, u),
13
+ value: u,
14
+ label: l(u, t, o)
15
15
  }));
16
- }, h = (n, r) => n.position !== r.x, l = (n, r) => n.position !== r.y + r.height;
16
+ };
17
17
  export {
18
- s as APPROXIMATE_TICK_COUNT,
19
- b as buildTicksData,
20
- m as getTickLabel,
21
- d as getTickPosition,
22
- f as getTickValues,
23
- h as isTickOnXAxisDomainEdge,
24
- l as isTickOnYAxisDomainEdge
18
+ f as APPROXIMATE_TICK_COUNT,
19
+ p as buildTicksData,
20
+ l as getTickLabel,
21
+ b as getTickPosition,
22
+ d as getTickValues
25
23
  };
@@ -15,6 +15,18 @@ export type DrawingArea = {
15
15
  width: number;
16
16
  height: number;
17
17
  };
18
+ /**
19
+ * Interpolation used to draw a line (and its area) between data points.
20
+ * Each value maps to a [d3-shape](https://d3js.org/d3-shape/curve) curve:
21
+ * - `'bump'` — smooth cubic curve with horizontal tangents (`curveBumpX`).
22
+ * - `'natural'` — natural cubic spline through every point (`curveNatural`).
23
+ * - `'monotone'` — smooth curve that preserves monotonicity (`curveMonotoneX`).
24
+ * - `'linear'` — straight segments between points (`curveLinear`).
25
+ * - `'step'` — stepped, piecewise-constant line (`curveStep`).
26
+ * - `'stepAfter'` — stepped line where changes occur after the x-coordinate (`curveStepAfter`).
27
+ * - `'stepBefore'` — stepped line where changes occur before the x-coordinate (`curveStepBefore`).
28
+ */
29
+ export type CurveType = 'bump' | 'natural' | 'monotone' | 'linear' | 'step' | 'stepAfter' | 'stepBefore';
18
30
  export type Series = {
19
31
  /**
20
32
  * Unique identifier for the series.
@@ -30,8 +42,21 @@ export type Series = {
30
42
  label?: string;
31
43
  /**
32
44
  * CSS color applied to the series line/mark.
45
+ * @default border-muted
46
+ */
47
+ stroke?: string;
48
+ /**
49
+ * Interpolation used to draw the line between data points.
50
+ * @default 'bump'
51
+ */
52
+ curve?: CurveType;
53
+ /**
54
+ * When true, skips null values and draws a continuous line across gaps.
55
+ * When false (default), null values create gaps in the line.
56
+ * Overridden by the chart-level `connectNulls` prop when that is set.
57
+ * @default false
33
58
  */
34
- stroke: string;
59
+ connectNulls?: boolean;
35
60
  };
36
61
  export type NumericScale = ScaleLinear<number, number> | ScaleLogarithmic<number, number>;
37
62
  export type CategoricalScale = ScaleBand<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErC,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAEjE,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,SAAS,GACT,UAAU,GACV,QAAQ,GACR,MAAM,GACN,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErC,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAEjE,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}