react-native-livechart 1.1.0 → 2.0.0

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 (67) hide show
  1. package/README.md +15 -4
  2. package/dist/components/CrosshairLine.d.ts.map +1 -1
  3. package/dist/components/CrosshairOverlay.d.ts.map +1 -1
  4. package/dist/components/LiveChart.d.ts.map +1 -1
  5. package/dist/components/LiveChartSeries.d.ts.map +1 -1
  6. package/dist/components/LoadingOverlay.d.ts +6 -2
  7. package/dist/components/LoadingOverlay.d.ts.map +1 -1
  8. package/dist/components/MarkerOverlay.d.ts +8 -4
  9. package/dist/components/MarkerOverlay.d.ts.map +1 -1
  10. package/dist/components/YAxisOverlay.d.ts +4 -2
  11. package/dist/components/YAxisOverlay.d.ts.map +1 -1
  12. package/dist/constants.d.ts +16 -13
  13. package/dist/constants.d.ts.map +1 -1
  14. package/dist/core/liveChartEngineTick.d.ts +2 -0
  15. package/dist/core/liveChartEngineTick.d.ts.map +1 -1
  16. package/dist/core/liveChartSeriesEngineTick.d.ts +2 -0
  17. package/dist/core/liveChartSeriesEngineTick.d.ts.map +1 -1
  18. package/dist/core/resolveConfig.d.ts +18 -4
  19. package/dist/core/resolveConfig.d.ts.map +1 -1
  20. package/dist/core/useLiveChartEngine.d.ts +3 -0
  21. package/dist/core/useLiveChartEngine.d.ts.map +1 -1
  22. package/dist/core/useLiveChartSeriesEngine.d.ts +3 -0
  23. package/dist/core/useLiveChartSeriesEngine.d.ts.map +1 -1
  24. package/dist/draw/candle.d.ts +2 -2
  25. package/dist/draw/candle.d.ts.map +1 -1
  26. package/dist/draw/grid.d.ts +2 -1
  27. package/dist/draw/grid.d.ts.map +1 -1
  28. package/dist/draw/line.d.ts +8 -8
  29. package/dist/draw/line.d.ts.map +1 -1
  30. package/dist/draw/markerAtlas.d.ts +44 -0
  31. package/dist/draw/markerAtlas.d.ts.map +1 -0
  32. package/dist/hooks/resolveChartLayout.d.ts +3 -1
  33. package/dist/hooks/resolveChartLayout.d.ts.map +1 -1
  34. package/dist/hooks/useBadge.d.ts +2 -2
  35. package/dist/hooks/useBadge.d.ts.map +1 -1
  36. package/dist/hooks/useCandlePaths.d.ts +2 -2
  37. package/dist/hooks/useCandlePaths.d.ts.map +1 -1
  38. package/dist/hooks/useYAxis.d.ts +2 -1
  39. package/dist/hooks/useYAxis.d.ts.map +1 -1
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/types.d.ts +100 -5
  43. package/dist/types.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/components/CrosshairLine.tsx +23 -9
  46. package/src/components/CrosshairOverlay.tsx +23 -9
  47. package/src/components/LiveChart.tsx +14 -0
  48. package/src/components/LiveChartSeries.tsx +10 -1
  49. package/src/components/LoadingOverlay.tsx +20 -11
  50. package/src/components/MarkerOverlay.tsx +119 -164
  51. package/src/components/YAxisOverlay.tsx +8 -4
  52. package/src/constants.ts +54 -14
  53. package/src/core/liveChartEngineTick.ts +7 -2
  54. package/src/core/liveChartSeriesEngineTick.ts +8 -2
  55. package/src/core/resolveConfig.ts +88 -32
  56. package/src/core/useLiveChartEngine.ts +6 -0
  57. package/src/core/useLiveChartSeriesEngine.ts +6 -0
  58. package/src/draw/candle.ts +11 -6
  59. package/src/draw/grid.ts +5 -5
  60. package/src/draw/line.ts +106 -25
  61. package/src/draw/markerAtlas.ts +304 -0
  62. package/src/hooks/resolveChartLayout.ts +11 -2
  63. package/src/hooks/useBadge.ts +38 -24
  64. package/src/hooks/useCandlePaths.ts +4 -2
  65. package/src/hooks/useYAxis.ts +4 -1
  66. package/src/index.ts +7 -0
  67. package/src/types.ts +109 -5
package/src/types.ts CHANGED
@@ -424,7 +424,12 @@ export interface DotConfig {
424
424
  * `DotRingConfig`. Default `true`.
425
425
  */
426
426
  ring?: boolean | DotRingConfig;
427
- /** Show the dot. `false` hides it (line, badge, and labels still render). Default `true`. */
427
+ /**
428
+ * Show the dot. `false` hides it (line, badge, and labels still render). Default `true`.
429
+ *
430
+ * @deprecated Pass `dot={false}` to hide the dot — the uniform `boolean | Config`
431
+ * convention. `show` still works and is equivalent to `dot={{ show: false }}`.
432
+ */
428
433
  show?: boolean;
429
434
  /** Dot fill color. Defaults to the chart line color (per series for multi-series). */
430
435
  color?: string;
@@ -549,6 +554,92 @@ export interface CandlePoint {
549
554
  close: number;
550
555
  }
551
556
 
557
+ // ── Metrics (sizing & motion tokens) ─────────────────────────────────────────
558
+
559
+ /**
560
+ * Spatial sizing & motion tokens — the geometry/timing analogue of
561
+ * {@link LiveChartPalette}. Where `palette` controls *color*, `metrics` controls
562
+ * *shape* (badge geometry, candle bounds) and *feel* (fade/lerp speeds). Override
563
+ * via the `metrics` prop; only the namespaces/keys you set are replaced.
564
+ */
565
+ export interface LiveChartMetrics {
566
+ /** Value-badge pill geometry. */
567
+ badge: BadgeMetrics;
568
+ /** Candlestick body/wick geometry. */
569
+ candle: CandleMetrics;
570
+ /** Grid + axis-label fade animation. */
571
+ grid: GridMetrics;
572
+ /** Per-frame lerp speeds for value/color transitions. */
573
+ motion: MotionMetrics;
574
+ /** Empty-state (no-data) layout. */
575
+ emptyState: EmptyStateMetrics;
576
+ }
577
+
578
+ /** Value-badge pill geometry (the "metrics" analogue of badge colors). */
579
+ export interface BadgeMetrics {
580
+ /** Horizontal padding inside the pill, each side of the label. Default `10`. */
581
+ padX: number;
582
+ /** Vertical padding above and below the label. Default `3`. */
583
+ padY: number;
584
+ /** Length of the pointed tail toward the live dot. Default `5`. */
585
+ tailLength: number;
586
+ /** Gap between the pill's outer edge and the canvas edge. Default `4`. */
587
+ marginEdge: number;
588
+ /** Gap between the live dot and the badge tail tip. Default `12`. */
589
+ dotGap: number;
590
+ /** Vertical spread of the tail curve's control points. Default `2.5`. */
591
+ tailSpread: number;
592
+ }
593
+
594
+ /** Candlestick body/wick geometry. */
595
+ export interface CandleMetrics {
596
+ /** Minimum candle body height in pixels (so dojis stay visible). Default `1`. */
597
+ minBodyPx: number;
598
+ /** Maximum candle body width in pixels. Default `40`. */
599
+ maxBodyPx: number;
600
+ /** Body width as a fraction of the per-candle slot width (0–1). Default `0.8`. */
601
+ bodyWidthRatio: number;
602
+ }
603
+
604
+ /** Grid-line and axis-label fade animation speeds. */
605
+ export interface GridMetrics {
606
+ /** Per-frame alpha lerp speed when a grid line / label fades in. Default `0.18`. */
607
+ fadeInSpeed: number;
608
+ /** Per-frame alpha lerp speed when a grid line / label fades out. Default `0.12`. */
609
+ fadeOutSpeed: number;
610
+ }
611
+
612
+ /** Per-frame lerp speeds for value/color transitions. */
613
+ export interface MotionMetrics {
614
+ /** Per-frame lerp speed for the badge background color transition. Default `0.08`. */
615
+ badgeColorSpeed: number;
616
+ /** Extra catch-up speed added to `smoothing` when the live value lags its target. Default `0.12`. */
617
+ adaptiveSpeedBoost: number;
618
+ }
619
+
620
+ /** Empty-state (no-data) layout. */
621
+ export interface EmptyStateMetrics {
622
+ /** Opacity of the empty-state label. Default `0.35`. */
623
+ labelOpacity: number;
624
+ /** Half-padding (px) around the empty text for the squiggle "gap" erase band. Default `20`. */
625
+ gapPad: number;
626
+ /** Horizontal fade width (px) on each side of the empty-text gap. Default `30`. */
627
+ gapFadeWidth: number;
628
+ }
629
+
630
+ /**
631
+ * Caller-supplied `metrics` override — every namespace and field is optional, and
632
+ * only the keys you set replace the resolved default (per-namespace shallow merge,
633
+ * same model as `palette`).
634
+ */
635
+ export interface LiveChartMetricsOverride {
636
+ badge?: Partial<BadgeMetrics>;
637
+ candle?: Partial<CandleMetrics>;
638
+ grid?: Partial<GridMetrics>;
639
+ motion?: Partial<MotionMetrics>;
640
+ emptyState?: Partial<EmptyStateMetrics>;
641
+ }
642
+
552
643
  // ── Component Props ──────────────────────────────────────────────────────────
553
644
 
554
645
  /** Props shared between `LiveChart` and `LiveChartSeries`. */
@@ -622,6 +713,12 @@ export interface LiveChartCoreProps {
622
713
  * `accentColor` + `theme`. Only the keys you set are replaced.
623
714
  */
624
715
  palette?: Partial<LiveChartPalette>;
716
+ /**
717
+ * Override sizing & motion tokens — the geometry/feel analogue of `palette`.
718
+ * Namespaced (`badge`, `candle`, `grid`, `motion`, `emptyState`); only the keys
719
+ * you set are replaced. See {@link LiveChartMetrics}.
720
+ */
721
+ metrics?: LiveChartMetricsOverride;
625
722
  /**
626
723
  * Right-edge buffer as a fraction of `timeWindow`. Pushes the live edge past the
627
724
  * current time so the latest point has breathing room; pass `0` to land the latest
@@ -665,8 +762,11 @@ export interface LiveChartProps extends LiveChartCoreProps {
665
762
  momentum?: boolean | Momentum | MomentumConfig;
666
763
  /** Pulsing ring animation on the live dot. `true` = defaults, or pass `PulseConfig`. Default `true`. */
667
764
  pulse?: boolean | PulseConfig;
668
- /** Live dot styling: `radius`, `ring` (halo), `show`, `color`. See {@link DotConfig}. */
669
- dot?: DotConfig;
765
+ /**
766
+ * Live dot styling. `true`/omitted = shown defaults, `false` = hidden, or pass
767
+ * `DotConfig` (`radius`, `ring` halo, `color`). See {@link DotConfig}. Default `true`.
768
+ */
769
+ dot?: boolean | DotConfig;
670
770
  /** Horizontal dashed line at the current live value. `true` = defaults, or pass `ValueLineConfig`. */
671
771
  valueLine?: boolean | ValueLineConfig;
672
772
  /** Render the live value as a large text overlay in the top-left. Default `false`. */
@@ -711,8 +811,12 @@ export interface LiveChartSeriesProps extends LiveChartCoreProps {
711
811
  series: SharedValue<SeriesConfig[]>;
712
812
  /** Called when a series toggle chip is tapped. */
713
813
  onSeriesToggle?: (id: string, visible: boolean) => void;
714
- /** Live dot configuration (radius, pulse, value line, inline labels). */
715
- dot?: MultiSeriesDotConfig;
814
+ /**
815
+ * Per-series live dot configuration. `true`/omitted = shown defaults, `false` =
816
+ * hidden, or pass `MultiSeriesDotConfig` (radius, pulse, value line, inline
817
+ * labels). Default `true`.
818
+ */
819
+ dot?: boolean | MultiSeriesDotConfig;
716
820
  /** Legend (toggle chips) configuration. `true` = defaults, `false` = hidden, or pass `LegendConfig`. Default `true`. */
717
821
  legend?: boolean | LegendConfig;
718
822
  /**