uplot-plus 0.5.10 → 0.5.24

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 (106) hide show
  1. package/README.md +38 -4
  2. package/dist/axes/layout.d.ts +3 -2
  3. package/dist/axes/layout.d.ts.map +1 -1
  4. package/dist/axes/ticks.d.ts +5 -3
  5. package/dist/axes/ticks.d.ts.map +1 -1
  6. package/dist/components/Band.d.ts.map +1 -1
  7. package/dist/components/BoxWhisker.d.ts +6 -1
  8. package/dist/components/BoxWhisker.d.ts.map +1 -1
  9. package/dist/components/Candlestick.d.ts +4 -1
  10. package/dist/components/Candlestick.d.ts.map +1 -1
  11. package/dist/components/Chart.d.ts +1 -1
  12. package/dist/components/Chart.d.ts.map +1 -1
  13. package/dist/components/FloatingLegend.d.ts +4 -8
  14. package/dist/components/FloatingLegend.d.ts.map +1 -1
  15. package/dist/components/Heatmap.d.ts.map +1 -1
  16. package/dist/components/HoverLabel.d.ts.map +1 -1
  17. package/dist/components/Legend.d.ts.map +1 -1
  18. package/dist/components/Series.d.ts +1 -0
  19. package/dist/components/Series.d.ts.map +1 -1
  20. package/dist/components/Sparkline.d.ts +2 -1
  21. package/dist/components/Sparkline.d.ts.map +1 -1
  22. package/dist/components/ThemeProvider.d.ts +20 -0
  23. package/dist/components/ThemeProvider.d.ts.map +1 -0
  24. package/dist/components/Tooltip.d.ts +6 -3
  25. package/dist/components/Tooltip.d.ts.map +1 -1
  26. package/dist/components/Vector.d.ts +1 -1
  27. package/dist/components/Vector.d.ts.map +1 -1
  28. package/dist/components/ZoomRanger.d.ts +23 -0
  29. package/dist/components/ZoomRanger.d.ts.map +1 -1
  30. package/dist/components/annotations/AnnotationLabel.d.ts.map +1 -1
  31. package/dist/components/annotations/HLine.d.ts.map +1 -1
  32. package/dist/components/annotations/Region.d.ts.map +1 -1
  33. package/dist/components/annotations/VLine.d.ts.map +1 -1
  34. package/dist/components/overlay/SeriesPanel.d.ts +7 -1
  35. package/dist/components/overlay/SeriesPanel.d.ts.map +1 -1
  36. package/dist/components/overlay/tokens.d.ts +17 -0
  37. package/dist/components/overlay/tokens.d.ts.map +1 -0
  38. package/dist/core/DataStore.d.ts.map +1 -1
  39. package/dist/core/RenderScheduler.d.ts +2 -0
  40. package/dist/core/RenderScheduler.d.ts.map +1 -1
  41. package/dist/core/ScaleManager.d.ts.map +1 -1
  42. package/dist/core/normalizeData.d.ts.map +1 -1
  43. package/dist/formatters.d.ts +3 -0
  44. package/dist/formatters.d.ts.map +1 -1
  45. package/dist/hooks/useChartStore.d.ts +14 -7
  46. package/dist/hooks/useChartStore.d.ts.map +1 -1
  47. package/dist/hooks/useDraggableOverlay.d.ts +84 -0
  48. package/dist/hooks/useDraggableOverlay.d.ts.map +1 -0
  49. package/dist/hooks/useInteraction.d.ts.map +1 -1
  50. package/dist/index.cjs +1 -1
  51. package/dist/index.d.ts +6 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +3058 -2355
  54. package/dist/math/lttb.d.ts.map +1 -1
  55. package/dist/math/stack.d.ts +3 -2
  56. package/dist/math/stack.d.ts.map +1 -1
  57. package/dist/math/utils.d.ts +1 -1
  58. package/dist/math/utils.d.ts.map +1 -1
  59. package/dist/paths/bars.d.ts +6 -3
  60. package/dist/paths/bars.d.ts.map +1 -1
  61. package/dist/paths/linear.d.ts.map +1 -1
  62. package/dist/paths/lttbLinear.d.ts.map +1 -1
  63. package/dist/paths/points.d.ts.map +1 -1
  64. package/dist/paths/spline.d.ts.map +1 -1
  65. package/dist/paths/stepped.d.ts.map +1 -1
  66. package/dist/paths/types.d.ts +2 -0
  67. package/dist/paths/types.d.ts.map +1 -1
  68. package/dist/paths/utils.d.ts.map +1 -1
  69. package/dist/rendering/CanvasRenderer.d.ts +3 -3
  70. package/dist/rendering/CanvasRenderer.d.ts.map +1 -1
  71. package/dist/rendering/drawAxes.d.ts +2 -1
  72. package/dist/rendering/drawAxes.d.ts.map +1 -1
  73. package/dist/rendering/drawBands.d.ts +5 -2
  74. package/dist/rendering/drawBands.d.ts.map +1 -1
  75. package/dist/rendering/drawCursor.d.ts +2 -1
  76. package/dist/rendering/drawCursor.d.ts.map +1 -1
  77. package/dist/rendering/drawSelect.d.ts +2 -1
  78. package/dist/rendering/drawSelect.d.ts.map +1 -1
  79. package/dist/rendering/theme.d.ts +54 -0
  80. package/dist/rendering/theme.d.ts.map +1 -0
  81. package/dist/time/fmtDate.d.ts +8 -8
  82. package/dist/time/fmtDate.d.ts.map +1 -1
  83. package/dist/time/timeVals.d.ts +1 -1
  84. package/dist/time/timeVals.d.ts.map +1 -1
  85. package/dist/types/chart.d.ts +7 -0
  86. package/dist/types/chart.d.ts.map +1 -1
  87. package/dist/types/common.d.ts +12 -0
  88. package/dist/types/common.d.ts.map +1 -1
  89. package/dist/types/index.d.ts +5 -3
  90. package/dist/types/index.d.ts.map +1 -1
  91. package/dist/types/interaction.d.ts +6 -2
  92. package/dist/types/interaction.d.ts.map +1 -1
  93. package/dist/types/series.d.ts +11 -1
  94. package/dist/types/series.d.ts.map +1 -1
  95. package/dist/types/theme.d.ts +65 -0
  96. package/dist/types/theme.d.ts.map +1 -0
  97. package/dist/types/tooltip.d.ts +8 -4
  98. package/dist/types/tooltip.d.ts.map +1 -1
  99. package/dist/utils/at.d.ts +9 -0
  100. package/dist/utils/at.d.ts.map +1 -0
  101. package/dist/utils/estimatePanelSize.d.ts +13 -0
  102. package/dist/utils/estimatePanelSize.d.ts.map +1 -0
  103. package/dist/utils/shallowEqual.d.ts.map +1 -1
  104. package/dist/utils/textMeasure.d.ts +2 -0
  105. package/dist/utils/textMeasure.d.ts.map +1 -0
  106. package/package.json +15 -4
@@ -1,4 +1,4 @@
1
- import type { ScaleConfig, SeriesConfig, BBox, ChartData } from '../types';
1
+ import type { ScaleConfig, ResolvedSeriesConfig, BBox, ChartData } from '../types';
2
2
  import type { ActionKey, ReactionValue } from '../types/interaction';
3
3
  import type { AxisConfig, AxisState } from '../types/axes';
4
4
  import type { SelectState } from '../types/cursor';
@@ -7,6 +7,7 @@ import { DataStore } from '../core/DataStore';
7
7
  import { CursorManager } from '../core/CursorManager';
8
8
  import { RenderScheduler } from '../core/RenderScheduler';
9
9
  import { CanvasRenderer } from '../rendering/CanvasRenderer';
10
+ import type { ResolvedTheme } from '../rendering/theme';
10
11
  import type { BandConfig } from '../types/bands';
11
12
  import { Side } from '../types/common';
12
13
  import type { DrawCallback, CursorDrawCallback } from '../types/hooks';
@@ -43,7 +44,7 @@ export interface ChartStore {
43
44
  cursorManager: CursorManager;
44
45
  selectState: SelectState;
45
46
  scaleConfigs: ScaleConfig[];
46
- seriesConfigs: SeriesConfig[];
47
+ seriesConfigs: ResolvedSeriesConfig[];
47
48
  axisConfigs: AxisConfig[];
48
49
  bandConfigs: BandConfig[];
49
50
  axisStates: AxisState[];
@@ -70,17 +71,23 @@ export interface ChartStore {
70
71
  xlabel: string | undefined;
71
72
  /** Y-axis label for default axis */
72
73
  ylabel: string | undefined;
74
+ /** BCP 47 locale for number/date formatting */
75
+ locale: string | undefined;
76
+ /** IANA timezone for time axis labels */
77
+ timezone: string | undefined;
73
78
  snapshot: ChartSnapshot;
74
79
  revision: number;
75
80
  eventCallbacks: EventCallbacks;
81
+ theme: ResolvedTheme;
76
82
  _prevScaleRanges: Map<string, {
77
83
  min: number;
78
84
  max: number;
79
85
  }>;
80
86
  _prevPlotBox: BBox | null;
87
+ _prevThemeKey: string;
81
88
  registerScale: (cfg: ScaleConfig) => void;
82
89
  unregisterScale: (id: string) => void;
83
- registerSeries: (cfg: SeriesConfig) => void;
90
+ registerSeries: (cfg: ResolvedSeriesConfig) => void;
84
91
  unregisterSeries: (group: number, index: number) => void;
85
92
  toggleSeries: (group: number, index: number) => void;
86
93
  setFocus: (seriesIdx: number | null) => void;
@@ -90,7 +97,7 @@ export interface ChartStore {
90
97
  subscribe: (fn: () => void) => () => void;
91
98
  subscribeCursor: (fn: () => void) => () => void;
92
99
  /** Pre-built lookup map for series config by "group:index" key */
93
- seriesConfigMap: Map<string, SeriesConfig>;
100
+ seriesConfigMap: Map<string, ResolvedSeriesConfig>;
94
101
  redraw: () => void;
95
102
  /** Stable snapshot getter for useSyncExternalStore (no useCallback needed) */
96
103
  getSnapshot: () => ChartSnapshot;
@@ -99,7 +106,7 @@ export interface ChartStore {
99
106
  /** Update a scale config in-place (replaces scaleConfigs entry + syncs manager + clears cache) */
100
107
  updateScale: (cfg: ScaleConfig) => void;
101
108
  /** Update a series config in-place (replaces seriesConfigs entry + rebuilds map + invalidates render) */
102
- updateSeries: (cfg: SeriesConfig) => void;
109
+ updateSeries: (cfg: ResolvedSeriesConfig) => void;
103
110
  /** Register an axis config (deduplicates by scale+side) */
104
111
  registerAxis: (cfg: AxisConfig) => void;
105
112
  /** Unregister an axis config by scale+side */
@@ -114,8 +121,8 @@ export interface ChartStore {
114
121
  setData: (data: ChartData) => void;
115
122
  /** Set the canvas element */
116
123
  setCanvas: (node: HTMLCanvasElement | null) => void;
117
- /** Set title and axis labels */
118
- setLabels: (title?: string, xlabel?: string, ylabel?: string) => void;
124
+ /** Set title, axis labels, locale, and timezone */
125
+ setLabels: (title?: string, xlabel?: string, ylabel?: string, locale?: string, timezone?: string) => void;
119
126
  }
120
127
  /**
121
128
  * Creates a mutable ChartStore. Called once per Chart component instance.
@@ -1 +1 @@
1
- {"version":3,"file":"useChartStore.d.ts","sourceRoot":"","sources":["../../src/hooks/useChartStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useChartStore.d.ts","sourceRoot":"","sources":["../../src/hooks/useChartStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type React from 'react';
2
+ import type { CornerPosition, OverlayPosition, OverlayOffset } from '../types/common';
3
+ export type { CornerPosition };
4
+ export interface UseDraggableOverlayOptions {
5
+ mode: 'cursor' | 'draggable';
6
+ show: boolean;
7
+ position: OverlayPosition;
8
+ offset: OverlayOffset;
9
+ idleOpacity: number;
10
+ estimatedSize: {
11
+ w: number;
12
+ h: number;
13
+ };
14
+ }
15
+ export interface DraggableOverlayResult {
16
+ panelRef: React.RefObject<HTMLDivElement>;
17
+ /** Computed position to render at. null = not ready or hidden. */
18
+ renderPos: {
19
+ x: number;
20
+ y: number;
21
+ } | null;
22
+ isDragging: boolean;
23
+ hovered: boolean;
24
+ /** Mutable ref — true if a drag occurred since last mousedown. Use to suppress click actions. */
25
+ didDrag: React.MutableRefObject<boolean>;
26
+ /** Mode-appropriate CSS for the Panel container. */
27
+ panelStyle: React.CSSProperties;
28
+ /** Handlers to spread onto the Panel. No-ops in cursor mode. */
29
+ panelHandlers: {
30
+ onMouseDown?: React.MouseEventHandler;
31
+ onMouseEnter?: React.MouseEventHandler;
32
+ onMouseLeave?: React.MouseEventHandler;
33
+ };
34
+ }
35
+ /** Padding from plot edges for corner-anchored positions */
36
+ export declare const CORNER_PAD = 8;
37
+ /**
38
+ * Resolve initial position for draggable mode.
39
+ * When panelW/panelH are available (after first render), positions are exact.
40
+ * On first render (panelW/panelH = 0), top-left is always correct;
41
+ * other corners get corrected by the layout effect.
42
+ */
43
+ export declare function resolveInitialPos(position: {
44
+ x: number;
45
+ y: number;
46
+ } | CornerPosition | undefined, plotBox: {
47
+ left: number;
48
+ top: number;
49
+ width: number;
50
+ height: number;
51
+ }, panelW: number, panelH: number): {
52
+ x: number;
53
+ y: number;
54
+ };
55
+ /**
56
+ * Compute cursor-mode position: cursor coords + offset, clamped to plot bounds.
57
+ * Returns null when cursor is off-chart.
58
+ */
59
+ export declare function computeCursorPos(cursorLeft: number, cursorTop: number, plotLeft: number, plotTop: number, plotWidth: number, plotHeight: number, offsetX: number, offsetY: number, panelW: number, panelH: number): {
60
+ x: number;
61
+ y: number;
62
+ } | null;
63
+ /**
64
+ * Clamp a position to stay within plot bounds given panel dimensions.
65
+ * Returns the original position if already in bounds.
66
+ */
67
+ export declare function clampToBounds(pos: {
68
+ x: number;
69
+ y: number;
70
+ }, plotLeft: number, plotTop: number, plotWidth: number, plotHeight: number, panelW: number, panelH: number): {
71
+ x: number;
72
+ y: number;
73
+ };
74
+ /**
75
+ * Shared overlay positioning hook for cursor-follow and draggable modes.
76
+ *
77
+ * Owns: position state, drag event handlers, bounds-sync effects,
78
+ * cursor-mode measurement, initialization, idle opacity styling.
79
+ *
80
+ * Callers provide content-dependent `estimatedSize` (via estimatePanelSize)
81
+ * and handle their own content rendering.
82
+ */
83
+ export declare function useDraggableOverlay({ mode, show, position, offset, idleOpacity, estimatedSize, }: UseDraggableOverlayOptions): DraggableOverlayResult;
84
+ //# sourceMappingURL=useDraggableOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraggableOverlay.d.ts","sourceRoot":"","sources":["../../src/hooks/useDraggableOverlay.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useInteraction.d.ts","sourceRoot":"","sources":["../../src/hooks/useInteraction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA2ZlD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,cAAc,GAAG,IAAI,GACjC,IAAI,CAKN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,GAAG,MAAM,IAAI,CAugB/E"}
1
+ {"version":3,"file":"useInteraction.d.ts","sourceRoot":"","sources":["../../src/hooks/useInteraction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA+ZlD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,cAAc,GAAG,IAAI,GACjC,IAAI,CAKN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,GAAG,MAAM,IAAI,CAghB/E"}