react-native-livechart 3.4.0 β 3.5.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.
- package/README.md +1 -0
- package/dist/components/LiveChart.d.ts.map +1 -1
- package/dist/components/ThresholdLineOverlay.d.ts +34 -0
- package/dist/components/ThresholdLineOverlay.d.ts.map +1 -0
- package/dist/core/resolveConfig.d.ts +33 -1
- package/dist/core/resolveConfig.d.ts.map +1 -1
- package/dist/hooks/useChartPaths.d.ts +5 -1
- package/dist/hooks/useChartPaths.d.ts.map +1 -1
- package/dist/hooks/useThreshold.d.ts +22 -0
- package/dist/hooks/useThreshold.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/math/threshold.d.ts +25 -0
- package/dist/math/threshold.d.ts.map +1 -0
- package/dist/types.d.ts +59 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/LiveChart.tsx +197 -40
- package/src/components/ThresholdLineOverlay.tsx +172 -0
- package/src/core/resolveConfig.ts +62 -0
- package/src/hooks/useChartPaths.ts +25 -1
- package/src/hooks/useThreshold.ts +63 -0
- package/src/index.ts +2 -0
- package/src/math/threshold.ts +59 -0
- package/src/types.ts +61 -0
package/README.md
CHANGED
|
@@ -32,6 +32,7 @@ High-performance **live** line and candlestick charts for React Native, built on
|
|
|
32
32
|
- β‘ **Momentum** detection and **degen** effects (particle bursts + shake on big swings)
|
|
33
33
|
- π·οΈ **Trade markers** driven by a `SharedValue` trade stream
|
|
34
34
|
- π **Segments** β label time ranges (after-hours, overnight, sessions) with scrub-focus: one color at rest, and scrubbing a segment keeps it full while the others de-emphasize
|
|
35
|
+
- βοΈ **Threshold split** β color the line green above / red below a live break-even, VWAP, or peg (always a `SharedValue`), with an optional profit/loss fill band and labelled marker line
|
|
35
36
|
- π¨ **Theming** with light/dark modes, an accent-driven `palette`, and `metrics` sizing/motion tokens
|
|
36
37
|
- β³ **Loading** (breathing-line shell) and **paused** states out of the box
|
|
37
38
|
- π§΅ **SharedValue-driven** rendering β history and live values stay on the UI thread
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveChart.d.ts","sourceRoot":"","sources":["../../src/components/LiveChart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LiveChart.d.ts","sourceRoot":"","sources":["../../src/components/LiveChart.tsx"],"names":[],"mappings":"AA6EA,OAAO,KAAK,EAEV,cAAc,EAGf,MAAM,UAAU,CAAC;AAmoClB,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CA0E9C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type SkFont } from "@shopify/react-native-skia";
|
|
2
|
+
import { type SharedValue } from "react-native-reanimated";
|
|
3
|
+
import type { ResolvedThresholdLineConfig } from "../core/resolveConfig";
|
|
4
|
+
import type { ChartEngineLayout } from "../core/useLiveChartEngine";
|
|
5
|
+
import type { ChartPadding } from "../draw/line";
|
|
6
|
+
import type { LiveChartPalette } from "../types";
|
|
7
|
+
interface ThresholdMarkerProps {
|
|
8
|
+
engine: ChartEngineLayout;
|
|
9
|
+
padding: ChartPadding;
|
|
10
|
+
lineY: SharedValue<number>;
|
|
11
|
+
visible: SharedValue<boolean>;
|
|
12
|
+
value: SharedValue<number>;
|
|
13
|
+
cfg: ResolvedThresholdLineConfig;
|
|
14
|
+
palette: LiveChartPalette;
|
|
15
|
+
font: SkFont;
|
|
16
|
+
formatValue: (v: number) => string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The dashed horizontal marker line at a live threshold value, tracking a
|
|
20
|
+
* `SharedValue` pixel-Y on the UI thread. Drawn **behind** the chart line so the
|
|
21
|
+
* data line stays the focus; the label badge ({@link ThresholdBadgeOverlay}) is
|
|
22
|
+
* a separate layer drawn on top. Hidden when the threshold is off-screen.
|
|
23
|
+
*/
|
|
24
|
+
export declare function ThresholdLineOverlay({ engine, padding, lineY, visible, cfg, palette, }: ThresholdMarkerProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
/**
|
|
26
|
+
* The threshold's label as an opaque badge pill (rounded background + colored
|
|
27
|
+
* border, like `ReferenceLineOverlay`'s off-axis badge). Drawn **on top** of the
|
|
28
|
+
* chart line so the label is never painted over, and anchored hard to the plot's
|
|
29
|
+
* left edge by default (clear of the y-axis labels + live badge) or the right
|
|
30
|
+
* gutter. Renders nothing when there is no label and no `showValue`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function ThresholdBadgeOverlay({ engine, padding, lineY, visible, value, cfg, palette, font, formatValue, }: ThresholdMarkerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=ThresholdLineOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThresholdLineOverlay.d.ts","sourceRoot":"","sources":["../../src/components/ThresholdLineOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,MAAM,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AASjD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,GAAG,EAAE,2BAA2B,CAAC;IACjC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,EACP,GAAG,EACH,OAAO,GACR,EAAE,oBAAoB,2CA8BtB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,EACP,KAAK,EACL,GAAG,EACH,OAAO,EACP,IAAI,EACJ,WAAW,GACZ,EAAE,oBAAoB,kDAyEtB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AxisLabelConfig, BadgeConfig, BadgeVariant, DegenOptions, FontConfig, FontWeight, GradientConfig, GridStyleConfig, LeftEdgeFadeConfig, LegendConfig, LegendStyle, LiveChartMetrics, LiveChartMetricsOverride, DotConfig, DotRingConfig, MultiSeriesDotConfig, PulseConfig, ReferenceLine, ScrubActionConfig, ScrubConfig, SelectionDotConfig, SelectionDotProps, SelectionDotRingConfig, TradeEvent, ValueLineConfig, XAxisConfig, YAxisConfig } from "../types";
|
|
1
|
+
import type { AxisLabelConfig, BadgeConfig, BadgeVariant, DegenOptions, FontConfig, FontWeight, GradientConfig, GridStyleConfig, LeftEdgeFadeConfig, LegendConfig, LegendStyle, LiveChartMetrics, LiveChartMetricsOverride, DotConfig, DotRingConfig, MultiSeriesDotConfig, PulseConfig, ReferenceLine, ScrubActionConfig, ScrubConfig, SelectionDotConfig, SelectionDotProps, SelectionDotRingConfig, ThresholdConfig, ThresholdLineConfig, TradeEvent, ValueLineConfig, XAxisConfig, YAxisConfig } from "../types";
|
|
2
2
|
import type { ComponentType, ReactElement } from "react";
|
|
3
3
|
import type { SharedValue } from "react-native-reanimated";
|
|
4
4
|
export interface ResolvedValueLineConfig {
|
|
@@ -134,6 +134,38 @@ export interface ResolvedLeftEdgeFadeConfig {
|
|
|
134
134
|
* `true` β defaults, object β merged with defaults, falsy β null.
|
|
135
135
|
*/
|
|
136
136
|
export declare function resolveValueLine(prop: boolean | ValueLineConfig | undefined): ResolvedValueLineConfig | null;
|
|
137
|
+
export interface ResolvedThresholdLineConfig {
|
|
138
|
+
/** undefined β no label. */
|
|
139
|
+
label: string | undefined;
|
|
140
|
+
/** Label side; `"left"` sits inside the plot (clear of the y-axis gutter). */
|
|
141
|
+
labelPosition: "left" | "right";
|
|
142
|
+
/** undefined β use palette.refLine (line) / palette.refLabel (label) at render time. */
|
|
143
|
+
color: string | undefined;
|
|
144
|
+
intervals: [number, number];
|
|
145
|
+
strokeWidth: number;
|
|
146
|
+
showValue: boolean;
|
|
147
|
+
}
|
|
148
|
+
export interface ResolvedThresholdConfig {
|
|
149
|
+
/** The live split value (Y-axis units). Read on the UI thread each frame. */
|
|
150
|
+
value: SharedValue<number>;
|
|
151
|
+
/** undefined β use palette.candleUp (up-green) at render time. */
|
|
152
|
+
aboveColor: string | undefined;
|
|
153
|
+
/** undefined β use palette.candleDown (down-red) at render time. */
|
|
154
|
+
belowColor: string | undefined;
|
|
155
|
+
fill: boolean;
|
|
156
|
+
line: ResolvedThresholdLineConfig | null;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Resolves the `threshold.line` sub-prop to a config or null (no marker line).
|
|
160
|
+
* `true` β dashed defaults, object β merged, falsy/undefined β null.
|
|
161
|
+
*/
|
|
162
|
+
export declare function resolveThresholdLine(prop: boolean | ThresholdLineConfig | undefined): ResolvedThresholdLineConfig | null;
|
|
163
|
+
/**
|
|
164
|
+
* Resolves the `threshold` prop to a fully-typed config or null (disabled).
|
|
165
|
+
* Presence-gated (like `referenceLines`/`markers`): the required `value`
|
|
166
|
+
* SharedValue means there is no boolean form β a config object enables it.
|
|
167
|
+
*/
|
|
168
|
+
export declare function resolveThreshold(prop: ThresholdConfig | undefined): ResolvedThresholdConfig | null;
|
|
137
169
|
/**
|
|
138
170
|
* Resolves `badge` prop to a fully-typed config or null (disabled).
|
|
139
171
|
* `true` β defaults, object β merged with defaults, falsy β null.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveConfig.d.ts","sourceRoot":"","sources":["../../src/core/resolveConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolveConfig.d.ts","sourceRoot":"","sources":["../../src/core/resolveConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,12 @@ import { type ChartPadding } from "../draw/line";
|
|
|
13
13
|
* `flatPts` derived value changes reference each frame and re-runs linePath /
|
|
14
14
|
* fillPath.
|
|
15
15
|
*/
|
|
16
|
-
export declare function useChartPaths(engine: SingleEngineState, padding: ChartPadding, morphT?: SharedValue<number
|
|
16
|
+
export declare function useChartPaths(engine: SingleEngineState, padding: ChartPadding, morphT?: SharedValue<number>,
|
|
17
|
+
/** When set, also build `thresholdFillPath` β the band between the line and this
|
|
18
|
+
* pixel-Y, closed at the threshold instead of the chart baseline. */
|
|
19
|
+
thresholdY?: SharedValue<number>): {
|
|
17
20
|
readonly linePath: import("react-native-reanimated").DerivedValue<SkPath>;
|
|
18
21
|
readonly fillPath: import("react-native-reanimated").DerivedValue<SkPath>;
|
|
22
|
+
readonly thresholdFillPath: import("react-native-reanimated").DerivedValue<SkPath>;
|
|
19
23
|
};
|
|
20
24
|
//# sourceMappingURL=useChartPaths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChartPaths.d.ts","sourceRoot":"","sources":["../../src/hooks/useChartPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAKlE;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"useChartPaths.d.ts","sourceRoot":"","sources":["../../src/hooks/useChartPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAKlE;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;AAC5B;sEACsE;AACtE,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;;;;EA0GjC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { vec } from "@shopify/react-native-skia";
|
|
2
|
+
import { type SharedValue } from "react-native-reanimated";
|
|
3
|
+
import type { ChartEngineLayout } from "../core/useLiveChartEngine";
|
|
4
|
+
import type { ChartPadding } from "../draw/line";
|
|
5
|
+
export interface ThresholdGeometry {
|
|
6
|
+
/** Threshold pixel-Y within the canvas, or NaN before layout / degenerate range. */
|
|
7
|
+
lineY: SharedValue<number>;
|
|
8
|
+
/** Whether the threshold sits within the plot area (drives marker-line opacity). */
|
|
9
|
+
visible: SharedValue<boolean>;
|
|
10
|
+
/** Vertical gradient end vector, `vec(0, canvasHeight)` β shared by stroke + fill. */
|
|
11
|
+
gradientEnd: SharedValue<ReturnType<typeof vec>>;
|
|
12
|
+
/** `[0, t, t, 1]` stop positions for the hard-split gradient β shared by stroke + fill. */
|
|
13
|
+
splitPositions: SharedValue<number[]>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Per-frame screen geometry for the threshold split, shared by the stroke
|
|
17
|
+
* gradient, the profit/loss fill band, and the dashed marker line. Reads the live
|
|
18
|
+
* threshold value + engine Y-range on the UI thread; the math lives in
|
|
19
|
+
* `math/threshold` so it stays unit-testable without Reanimated.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useThreshold(engine: ChartEngineLayout, padding: ChartPadding, value: SharedValue<number>): ThresholdGeometry;
|
|
22
|
+
//# sourceMappingURL=useThreshold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useThreshold.d.ts","sourceRoot":"","sources":["../../src/hooks/useThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAOjD,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,oFAAoF;IACpF,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,sFAAsF;IACtF,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACjD,2FAA2F;IAC3F,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;CACvC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzB,iBAAiB,CA8BnB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,5 +14,5 @@ export { formatTime, formatValue } from "./lib/format";
|
|
|
14
14
|
export { MONO_FONT_FAMILY } from "./lib/monoFontFamily";
|
|
15
15
|
export { useDegen } from "./hooks/useDegen";
|
|
16
16
|
export { useTradeStream } from "./hooks/useTradeStream";
|
|
17
|
-
export type { AxisLabelConfig, BadgeConfig, BadgeMetrics, BadgeVariant, CandleMetrics, CandlePoint, ChartInsets, ChartSegment, DegenOptions, DegenShakePayload, EmptyStateMetrics, FontConfig, FontWeight, GradientConfig, GridMetrics, GridStyleConfig, LeftEdgeFadeConfig, LegendConfig, LegendStyle, LineConfig, LiveChartCoreProps, LiveChartMetrics, LiveChartMetricsOverride, LiveChartPalette, LiveChartPoint, LiveChartProps, LiveChartSeriesProps, Marker, MarkerHoverEvent, MarkerKind, Momentum, MomentumConfig, MotionMetrics, MultiSeriesDotConfig, PulseConfig, ReferenceLine, ReferenceLineBadgeConfig, ScrubActionConfig, ScrubActionPoint, ScrubConfig, ScrubPoint, ScrubPointCore, ScrubPointMulti, ScrubSeriesValue, SelectionDotConfig, SelectionDotProps, SelectionDotRingConfig, SeriesConfig, ThemeMode, TradeEvent, ValueLineConfig, XAxisConfig, YAxisConfig, } from "./types";
|
|
17
|
+
export type { AxisLabelConfig, BadgeConfig, BadgeMetrics, BadgeVariant, CandleMetrics, CandlePoint, ChartInsets, ChartSegment, DegenOptions, DegenShakePayload, EmptyStateMetrics, FontConfig, FontWeight, GradientConfig, GridMetrics, GridStyleConfig, LeftEdgeFadeConfig, LegendConfig, LegendStyle, LineConfig, LiveChartCoreProps, LiveChartMetrics, LiveChartMetricsOverride, LiveChartPalette, LiveChartPoint, LiveChartProps, LiveChartSeriesProps, Marker, MarkerHoverEvent, MarkerKind, Momentum, MomentumConfig, MotionMetrics, MultiSeriesDotConfig, PulseConfig, ReferenceLine, ReferenceLineBadgeConfig, ScrubActionConfig, ScrubActionPoint, ScrubConfig, ScrubPoint, ScrubPointCore, ScrubPointMulti, ScrubSeriesValue, SelectionDotConfig, SelectionDotProps, SelectionDotRingConfig, SeriesConfig, ThemeMode, ThresholdConfig, ThresholdLineConfig, TradeEvent, ValueLineConfig, XAxisConfig, YAxisConfig, } from "./types";
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,YAAY,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,YAAY,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, worklet-safe geometry for the threshold split ({@link ThresholdConfig}).
|
|
3
|
+
* No SharedValues and no hooks β these are unit-tested directly; `useThreshold`
|
|
4
|
+
* wires the live SharedValues into them.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Pixel Y of a threshold value within the plot. Mirrors the line path's valueβY
|
|
8
|
+
* mapping in `buildLinePoints` (`top + (max - v) / range * chartH`). Returns NaN
|
|
9
|
+
* when the canvas hasn't laid out yet or the value range is degenerate, so the
|
|
10
|
+
* line/fill/marker callers can cull instead of drawing at a bogus position.
|
|
11
|
+
*/
|
|
12
|
+
export declare function thresholdLineY(value: number, displayMin: number, displayMax: number, canvasHeight: number, paddingTop: number, paddingBottom: number): number;
|
|
13
|
+
/** True when the threshold's Y sits within the plot area (i.e. on-screen). */
|
|
14
|
+
export declare function thresholdVisible(lineY: number, canvasHeight: number, paddingTop: number, paddingBottom: number): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Stop positions for the vertical hard-split gradient, paired with the 4-stop
|
|
17
|
+
* color array `[above, above, below, below]`: `[0, t, t, 1]`, where `t` is the
|
|
18
|
+
* threshold's fraction down the full canvas (the gradient vector spans
|
|
19
|
+
* `0 β canvasHeight`), clamped to `[0, 1]`.
|
|
20
|
+
*
|
|
21
|
+
* - `t β€ 0` (threshold above everything) β `[0, 0, 0, 1]` β solid below-color.
|
|
22
|
+
* - `t β₯ 1` (threshold below everything) β `[0, 1, 1, 1]` β solid above-color.
|
|
23
|
+
*/
|
|
24
|
+
export declare function thresholdSplitPositions(lineY: number, canvasHeight: number): number[];
|
|
25
|
+
//# sourceMappingURL=threshold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/math/threshold.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAMR;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAIT;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,CAOV"}
|
package/dist/types.d.ts
CHANGED
|
@@ -208,6 +208,59 @@ export interface LineConfig {
|
|
|
208
208
|
*/
|
|
209
209
|
colors?: string[];
|
|
210
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* Color the line above vs. below a live threshold value β green above, red below
|
|
213
|
+
* by default. The threshold is **always** a `SharedValue` so it can track a live
|
|
214
|
+
* benchmark (break-even / average cost, VWAP, previous close, a peg) on the UI
|
|
215
|
+
* thread without re-rendering. Drives a hard-split line stroke and, optionally, a
|
|
216
|
+
* tinted profit/loss fill band and a dashed marker line at the threshold.
|
|
217
|
+
*
|
|
218
|
+
* The split stroke supersedes `LineConfig.color`/`colors` and segment recoloring
|
|
219
|
+
* for the main line while a threshold is set.
|
|
220
|
+
*/
|
|
221
|
+
export interface ThresholdConfig {
|
|
222
|
+
/**
|
|
223
|
+
* The split value, in Y-axis (price) units. A `SharedValue` β update it with
|
|
224
|
+
* `.set()` and the split tracks live on the UI thread (break-even, VWAP, the
|
|
225
|
+
* previous close, a peg, β¦).
|
|
226
|
+
*/
|
|
227
|
+
value: SharedValue<number>;
|
|
228
|
+
/** Stroke color where the line is at/above `value`. Default: palette up-green (`candleUp`). */
|
|
229
|
+
aboveColor?: string;
|
|
230
|
+
/** Stroke color where the line is below `value`. Default: palette down-red (`candleDown`). */
|
|
231
|
+
belowColor?: string;
|
|
232
|
+
/**
|
|
233
|
+
* Tint the area between the line and `value` (the profit/loss band) toward the
|
|
234
|
+
* above/below colors. Independent of the baseline `gradient` fill β set
|
|
235
|
+
* `gradient={false}` for the threshold band alone. Default `false`.
|
|
236
|
+
*/
|
|
237
|
+
fill?: boolean;
|
|
238
|
+
/**
|
|
239
|
+
* Dashed marker line + optional gutter label at the threshold. `true` β a dashed
|
|
240
|
+
* line in the palette reference color; object β styled; omit/`false` β none.
|
|
241
|
+
* Default off.
|
|
242
|
+
*/
|
|
243
|
+
line?: boolean | ThresholdLineConfig;
|
|
244
|
+
}
|
|
245
|
+
/** Dashed marker line drawn at a {@link ThresholdConfig} value. */
|
|
246
|
+
export interface ThresholdLineConfig {
|
|
247
|
+
/** Label text, e.g. `"Break-even"`. */
|
|
248
|
+
label?: string;
|
|
249
|
+
/**
|
|
250
|
+
* Label side. `"left"` sits just inside the plot at the line's left edge β
|
|
251
|
+
* clear of the y-axis labels and the live badge; `"right"` uses the right
|
|
252
|
+
* gutter like a legacy reference line (may overlap y-axis labels). Default `"left"`.
|
|
253
|
+
*/
|
|
254
|
+
labelPosition?: "left" | "right";
|
|
255
|
+
/** Line + label color. Defaults to palette `refLine` / `refLabel`. */
|
|
256
|
+
color?: string;
|
|
257
|
+
/** Dash pattern `[dashLength, gapLength]` in pixels. Default `[4, 4]`. */
|
|
258
|
+
intervals?: [number, number];
|
|
259
|
+
/** Line thickness in pixels. Default `1`. */
|
|
260
|
+
strokeWidth?: number;
|
|
261
|
+
/** Append the formatted threshold value to the label. Default `false`. */
|
|
262
|
+
showValue?: boolean;
|
|
263
|
+
}
|
|
211
264
|
/** Area fill gradient beneath the chart line. */
|
|
212
265
|
export interface GradientConfig {
|
|
213
266
|
/** Opacity at the top of the gradient (near the line). Default `0.35`. */
|
|
@@ -960,6 +1013,12 @@ export interface LiveChartProps extends LiveChartCoreProps {
|
|
|
960
1013
|
* `mutedColors`). Optional dashed `divider` + `label` mark a segment's edge.
|
|
961
1014
|
*/
|
|
962
1015
|
segments?: ChartSegment[];
|
|
1016
|
+
/**
|
|
1017
|
+
* Color the line above vs. below a live threshold value (break-even / average
|
|
1018
|
+
* cost, VWAP, previous close, a peg). Always a `SharedValue` so the split tracks
|
|
1019
|
+
* live on the UI thread. See {@link ThresholdConfig}.
|
|
1020
|
+
*/
|
|
1021
|
+
threshold?: ThresholdConfig;
|
|
963
1022
|
/** Render the live value as a large text overlay in the top-left. Default `false`. */
|
|
964
1023
|
showValue?: boolean;
|
|
965
1024
|
/** Tint the `showValue` text by momentum (green up / red down). Default `false`. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -31,11 +31,13 @@ import {
|
|
|
31
31
|
resolveScrub,
|
|
32
32
|
resolveScrubAction,
|
|
33
33
|
resolveSelectionDot,
|
|
34
|
+
resolveThreshold,
|
|
34
35
|
resolveTradeStream,
|
|
35
36
|
resolveValueLine,
|
|
36
37
|
resolveXAxis,
|
|
37
38
|
resolveYAxis,
|
|
38
39
|
} from "../core/resolveConfig";
|
|
40
|
+
import type { ResolvedThresholdConfig } from "../core/resolveConfig";
|
|
39
41
|
import { resolveSegment } from "../core/resolveSegment";
|
|
40
42
|
import { useLiveChartEngine } from "../core/useLiveChartEngine";
|
|
41
43
|
import { pulseRadialOutset } from "../draw/line";
|
|
@@ -57,6 +59,7 @@ import { useModeBlend } from "../hooks/useModeBlend";
|
|
|
57
59
|
import { useMomentum } from "../hooks/useMomentum";
|
|
58
60
|
import { useSegmentLineGradient } from "../hooks/useSegmentLineGradient";
|
|
59
61
|
import { useSingleChartReverseMorphInputs } from "../hooks/useReverseMorphEngineInputs";
|
|
62
|
+
import { useThreshold } from "../hooks/useThreshold";
|
|
60
63
|
import { useTradeStream } from "../hooks/useTradeStream";
|
|
61
64
|
import { useXAxis } from "../hooks/useXAxis";
|
|
62
65
|
import { useYAxis } from "../hooks/useYAxis";
|
|
@@ -69,9 +72,19 @@ import { collectReferenceValues } from "../math/referenceLines";
|
|
|
69
72
|
import {
|
|
70
73
|
applyPaletteOverride,
|
|
71
74
|
leftEdgeFadeColorsFromBgRgb,
|
|
75
|
+
parseColorRgb,
|
|
72
76
|
resolveTheme,
|
|
73
77
|
} from "../theme";
|
|
74
|
-
import type {
|
|
78
|
+
import type {
|
|
79
|
+
LiveChartPalette,
|
|
80
|
+
LiveChartProps,
|
|
81
|
+
Marker,
|
|
82
|
+
TradeEvent,
|
|
83
|
+
} from "../types";
|
|
84
|
+
import {
|
|
85
|
+
ThresholdBadgeOverlay,
|
|
86
|
+
ThresholdLineOverlay,
|
|
87
|
+
} from "./ThresholdLineOverlay";
|
|
75
88
|
import { AxisLabelOverlay } from "./AxisLabelOverlay";
|
|
76
89
|
import { BadgeOverlay } from "./BadgeOverlay";
|
|
77
90
|
import { CrosshairOverlay } from "./CrosshairOverlay";
|
|
@@ -90,6 +103,32 @@ import { ValueLineOverlay } from "./ValueLineOverlay";
|
|
|
90
103
|
import { XAxisOverlay } from "./XAxisOverlay";
|
|
91
104
|
import { YAxisOverlay } from "./YAxisOverlay";
|
|
92
105
|
|
|
106
|
+
/** Translucent fill alpha for the threshold profit/loss band. */
|
|
107
|
+
const THRESHOLD_FILL_OPACITY = 0.16;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Color stops for the threshold's hard-split vertical gradient. Both arrays pair
|
|
111
|
+
* with the `[0, t, t, 1]` split positions: index 0β1 paint above the split,
|
|
112
|
+
* 2β3 below. `stroke` is full-strength; `fill` is the same hues at
|
|
113
|
+
* {@link THRESHOLD_FILL_OPACITY} for the band. Defaults to the palette's semantic
|
|
114
|
+
* up-green / down-red when colors are omitted.
|
|
115
|
+
*/
|
|
116
|
+
function thresholdStops(
|
|
117
|
+
cfg: ResolvedThresholdConfig,
|
|
118
|
+
palette: LiveChartPalette,
|
|
119
|
+
): { stroke: string[]; fill: string[] } {
|
|
120
|
+
const above = cfg.aboveColor ?? palette.candleUp;
|
|
121
|
+
const below = cfg.belowColor ?? palette.candleDown;
|
|
122
|
+
const [ar, ag, ab] = parseColorRgb(above);
|
|
123
|
+
const [br, bg, bb] = parseColorRgb(below);
|
|
124
|
+
const aboveFill = `rgba(${ar}, ${ag}, ${ab}, ${THRESHOLD_FILL_OPACITY})`;
|
|
125
|
+
const belowFill = `rgba(${br}, ${bg}, ${bb}, ${THRESHOLD_FILL_OPACITY})`;
|
|
126
|
+
return {
|
|
127
|
+
stroke: [above, above, below, below],
|
|
128
|
+
fill: [aboveFill, aboveFill, belowFill, belowFill],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
93
132
|
/**
|
|
94
133
|
* Resolves props β configs β theme/layout β engine β per-frame derived values and
|
|
95
134
|
* overlay hooks, returning a single render model. All the chart's wiring lives
|
|
@@ -148,6 +187,7 @@ function useLiveChartController({
|
|
|
148
187
|
valueMomentumColor = false,
|
|
149
188
|
referenceLines,
|
|
150
189
|
segments,
|
|
190
|
+
threshold,
|
|
151
191
|
gridStyle,
|
|
152
192
|
palette: paletteOverride,
|
|
153
193
|
metrics,
|
|
@@ -173,6 +213,9 @@ function useLiveChartController({
|
|
|
173
213
|
const tradeStreamSV = tradeStream ?? emptyTradeStream;
|
|
174
214
|
const emptyMarkers = useSharedValue<Marker[]>([]);
|
|
175
215
|
const markersSV = markers ?? emptyMarkers;
|
|
216
|
+
// Stand-in threshold value so `useThreshold` can be called unconditionally
|
|
217
|
+
// (hooks can't be); the geometry is ignored when no threshold is configured.
|
|
218
|
+
const emptyThresholdValue = useSharedValue(0);
|
|
176
219
|
const isCandle = mode === "candle";
|
|
177
220
|
|
|
178
221
|
// ββ Resolve feature configs ββββββββββββββββββββββββββββββββββββββββββββ
|
|
@@ -185,6 +228,9 @@ function useLiveChartController({
|
|
|
185
228
|
// Static charts run no gestures, so scrub-action (tap/drag to lock a price) is off.
|
|
186
229
|
const scrubActionCfg = isStatic ? null : resolveScrubAction(scrubAction);
|
|
187
230
|
const gradientCfg = isCandle ? null : resolveGradient(gradient);
|
|
231
|
+
// Threshold split is a line-mode feature (candle bodies carry their own up/down
|
|
232
|
+
// colors), so it's inert in candle mode β same as the area gradient.
|
|
233
|
+
const thresholdCfg = isCandle ? null : resolveThreshold(threshold);
|
|
188
234
|
const valueLineCfg = resolveValueLine(valueLine);
|
|
189
235
|
// Static charts run zero loops: force the pulse off so its `withRepeat`-driven
|
|
190
236
|
// ring never starts (the DotOverlay reads `pulseCfg`, so null = no pulse).
|
|
@@ -335,10 +381,23 @@ function useLiveChartController({
|
|
|
335
381
|
// ββ Per-frame derived values βββββββββββββββββββββββββββββββββββββββββββ
|
|
336
382
|
const { layoutWidth, layoutHeight, onLayout } = useCanvasLayout(engine);
|
|
337
383
|
|
|
338
|
-
|
|
384
|
+
// Threshold split geometry (shared by stroke gradient, fill band, marker line).
|
|
385
|
+
// Called unconditionally with a stand-in value when no threshold is set.
|
|
386
|
+
const thresholdGeom = useThreshold(
|
|
387
|
+
engine,
|
|
388
|
+
effectivePadding,
|
|
389
|
+
thresholdCfg?.value ?? emptyThresholdValue,
|
|
390
|
+
);
|
|
391
|
+
const thresholdStopColors = thresholdCfg
|
|
392
|
+
? thresholdStops(thresholdCfg, palette)
|
|
393
|
+
: null;
|
|
394
|
+
|
|
395
|
+
const { linePath, fillPath, thresholdFillPath } = useChartPaths(
|
|
339
396
|
engine,
|
|
340
397
|
effectivePadding,
|
|
341
398
|
reveal.morphT,
|
|
399
|
+
// Only build the band path when the fill is actually on.
|
|
400
|
+
thresholdCfg?.fill ? thresholdGeom.lineY : undefined,
|
|
342
401
|
);
|
|
343
402
|
const { upBodiesPath, downBodiesPath, upWicksPath, downWicksPath } =
|
|
344
403
|
useCandlePaths(
|
|
@@ -576,6 +635,10 @@ function useLiveChartController({
|
|
|
576
635
|
resolvedSegments,
|
|
577
636
|
hasRecolorSegments,
|
|
578
637
|
segmentGradient,
|
|
638
|
+
thresholdCfg,
|
|
639
|
+
thresholdGeom,
|
|
640
|
+
thresholdStrokeColors: thresholdStopColors?.stroke ?? null,
|
|
641
|
+
thresholdFillColors: thresholdStopColors?.fill ?? null,
|
|
579
642
|
badgeUsesRightGutter,
|
|
580
643
|
// theme / layout / fonts
|
|
581
644
|
palette,
|
|
@@ -599,6 +662,7 @@ function useLiveChartController({
|
|
|
599
662
|
onLayout,
|
|
600
663
|
linePath,
|
|
601
664
|
fillPath,
|
|
665
|
+
thresholdFillPath,
|
|
602
666
|
upBodiesPath,
|
|
603
667
|
downBodiesPath,
|
|
604
668
|
upWicksPath,
|
|
@@ -629,10 +693,13 @@ function useLiveChartController({
|
|
|
629
693
|
|
|
630
694
|
type LiveChartModel = ReturnType<typeof useLiveChartController>;
|
|
631
695
|
|
|
632
|
-
/**
|
|
633
|
-
*
|
|
634
|
-
*
|
|
635
|
-
|
|
696
|
+
/**
|
|
697
|
+
* Background fills drawn BENEATH the left-edge fade: the y-axis grid, the area
|
|
698
|
+
* gradient, and the threshold profit/loss band. Split out from `ChartStack` so
|
|
699
|
+
* the fade's `dstOut` only softens the fills β the line and everything above it
|
|
700
|
+
* (drawn in `ChartStack`, after the fade) stay crisp at the left edge.
|
|
701
|
+
*/
|
|
702
|
+
function ChartFillLayer({ model }: { model: LiveChartModel }) {
|
|
636
703
|
const {
|
|
637
704
|
degenShakeTransform,
|
|
638
705
|
yAxisCfg,
|
|
@@ -645,41 +712,16 @@ function ChartStack({ model }: { model: LiveChartModel }) {
|
|
|
645
712
|
badgeUsesRightGutter,
|
|
646
713
|
badgeCfg,
|
|
647
714
|
gridStyleCfg,
|
|
715
|
+
metricsCfg,
|
|
648
716
|
gradientCfg,
|
|
649
717
|
fillPath,
|
|
650
718
|
gradientEnd,
|
|
651
719
|
gradientColors,
|
|
652
720
|
gradientPositions,
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
hasRecolorSegments,
|
|
658
|
-
segmentGradient,
|
|
659
|
-
formatValue,
|
|
660
|
-
lineGroupOpacity,
|
|
661
|
-
linePath,
|
|
662
|
-
strokeWidth,
|
|
663
|
-
lineProp,
|
|
664
|
-
candleGroupOpacity,
|
|
665
|
-
upWicksPath,
|
|
666
|
-
downWicksPath,
|
|
667
|
-
upBodiesPath,
|
|
668
|
-
downBodiesPath,
|
|
669
|
-
xAxisCfg,
|
|
670
|
-
xAxisEntries,
|
|
671
|
-
dotX,
|
|
672
|
-
liveDotOpacity,
|
|
673
|
-
pulseCfg,
|
|
674
|
-
dotCfg,
|
|
675
|
-
degenCfg,
|
|
676
|
-
degenPack,
|
|
677
|
-
degenPackRevision,
|
|
678
|
-
markersActive,
|
|
679
|
-
markersSV,
|
|
680
|
-
emptyText,
|
|
681
|
-
metricsCfg,
|
|
682
|
-
layoutWidth,
|
|
721
|
+
thresholdCfg,
|
|
722
|
+
thresholdGeom,
|
|
723
|
+
thresholdFillPath,
|
|
724
|
+
thresholdFillColors,
|
|
683
725
|
} = model;
|
|
684
726
|
|
|
685
727
|
return (
|
|
@@ -715,6 +757,75 @@ function ChartStack({ model }: { model: LiveChartModel }) {
|
|
|
715
757
|
</Group>
|
|
716
758
|
)}
|
|
717
759
|
|
|
760
|
+
{/* Threshold profit/loss band β the area between the line and the threshold,
|
|
761
|
+
hard-split at the threshold Y into the above/below colors. Independent of
|
|
762
|
+
the baseline area fill above (set `gradient={false}` for the band alone). */}
|
|
763
|
+
{thresholdCfg?.fill && thresholdFillColors && (
|
|
764
|
+
<Group opacity={reveal.fillOpacity}>
|
|
765
|
+
<Path path={thresholdFillPath} style="fill">
|
|
766
|
+
<LinearGradient
|
|
767
|
+
start={vec(0, 0)}
|
|
768
|
+
end={thresholdGeom.gradientEnd}
|
|
769
|
+
colors={thresholdFillColors}
|
|
770
|
+
positions={thresholdGeom.splitPositions}
|
|
771
|
+
/>
|
|
772
|
+
</Path>
|
|
773
|
+
</Group>
|
|
774
|
+
)}
|
|
775
|
+
</Group>
|
|
776
|
+
);
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/** Main shaken chart stack drawn ABOVE the left-edge fade so the line stays crisp:
|
|
780
|
+
* segment dividers, value/reference lines, the line/candles, axes, dot, degen,
|
|
781
|
+
* markers, and the loading/empty art. Background fills are in `ChartFillLayer`
|
|
782
|
+
* (below the fade); the live value text is `ChartValueOverlay` (above the fade). */
|
|
783
|
+
function ChartStack({ model }: { model: LiveChartModel }) {
|
|
784
|
+
const {
|
|
785
|
+
degenShakeTransform,
|
|
786
|
+
reveal,
|
|
787
|
+
engine,
|
|
788
|
+
effectivePadding,
|
|
789
|
+
palette,
|
|
790
|
+
skiaFont,
|
|
791
|
+
badgeCfg,
|
|
792
|
+
valueLineCfg,
|
|
793
|
+
dotY,
|
|
794
|
+
allRefLines,
|
|
795
|
+
resolvedSegments,
|
|
796
|
+
hasRecolorSegments,
|
|
797
|
+
segmentGradient,
|
|
798
|
+
thresholdCfg,
|
|
799
|
+
thresholdGeom,
|
|
800
|
+
thresholdStrokeColors,
|
|
801
|
+
formatValue,
|
|
802
|
+
lineGroupOpacity,
|
|
803
|
+
linePath,
|
|
804
|
+
strokeWidth,
|
|
805
|
+
lineProp,
|
|
806
|
+
candleGroupOpacity,
|
|
807
|
+
upWicksPath,
|
|
808
|
+
downWicksPath,
|
|
809
|
+
upBodiesPath,
|
|
810
|
+
downBodiesPath,
|
|
811
|
+
xAxisCfg,
|
|
812
|
+
xAxisEntries,
|
|
813
|
+
dotX,
|
|
814
|
+
liveDotOpacity,
|
|
815
|
+
pulseCfg,
|
|
816
|
+
dotCfg,
|
|
817
|
+
degenCfg,
|
|
818
|
+
degenPack,
|
|
819
|
+
degenPackRevision,
|
|
820
|
+
markersActive,
|
|
821
|
+
markersSV,
|
|
822
|
+
emptyText,
|
|
823
|
+
metricsCfg,
|
|
824
|
+
layoutWidth,
|
|
825
|
+
} = model;
|
|
826
|
+
|
|
827
|
+
return (
|
|
828
|
+
<Group transform={degenShakeTransform}>
|
|
718
829
|
{/* Segment dividers + labels (behind the line). The scrub-focus emphasis is
|
|
719
830
|
painted on the line stroke itself, below β this overlay draws no fill. */}
|
|
720
831
|
{resolvedSegments.map((seg, i) => (
|
|
@@ -756,6 +867,21 @@ function ChartStack({ model }: { model: LiveChartModel }) {
|
|
|
756
867
|
/>
|
|
757
868
|
))}
|
|
758
869
|
|
|
870
|
+
{/* Threshold marker line + label (behind the chart line). */}
|
|
871
|
+
{thresholdCfg?.line && (
|
|
872
|
+
<ThresholdLineOverlay
|
|
873
|
+
engine={engine}
|
|
874
|
+
padding={effectivePadding}
|
|
875
|
+
lineY={thresholdGeom.lineY}
|
|
876
|
+
visible={thresholdGeom.visible}
|
|
877
|
+
value={thresholdCfg.value}
|
|
878
|
+
cfg={thresholdCfg.line}
|
|
879
|
+
palette={palette}
|
|
880
|
+
font={skiaFont}
|
|
881
|
+
formatValue={formatValue}
|
|
882
|
+
/>
|
|
883
|
+
)}
|
|
884
|
+
|
|
759
885
|
{/* Chart line (fades out in candle mode). When segments recolor the line, a
|
|
760
886
|
full-width gradient paints the base color outside segments and each
|
|
761
887
|
segment's color within β so the line itself is recolored/faded (alpha in
|
|
@@ -769,7 +895,16 @@ function ChartStack({ model }: { model: LiveChartModel }) {
|
|
|
769
895
|
strokeJoin="round"
|
|
770
896
|
color={lineProp?.color ?? palette.line}
|
|
771
897
|
>
|
|
772
|
-
{
|
|
898
|
+
{thresholdCfg && thresholdStrokeColors ? (
|
|
899
|
+
// Vertical hard split at the threshold Y β supersedes line.colors and
|
|
900
|
+
// segment recoloring for the stroke while a threshold is set.
|
|
901
|
+
<LinearGradient
|
|
902
|
+
start={vec(0, 0)}
|
|
903
|
+
end={thresholdGeom.gradientEnd}
|
|
904
|
+
colors={thresholdStrokeColors}
|
|
905
|
+
positions={thresholdGeom.splitPositions}
|
|
906
|
+
/>
|
|
907
|
+
) : hasRecolorSegments ? (
|
|
773
908
|
<LinearGradient
|
|
774
909
|
start={vec(0, 0)}
|
|
775
910
|
end={segmentGradient.gradientEnd}
|
|
@@ -865,7 +1000,24 @@ function ChartStack({ model }: { model: LiveChartModel }) {
|
|
|
865
1000
|
</Group>
|
|
866
1001
|
)}
|
|
867
1002
|
|
|
868
|
-
{/*
|
|
1003
|
+
{/* Threshold label badge β on top of the line/dot/markers so it's never
|
|
1004
|
+
painted over (the dashed marker line itself stays behind the line, above). */}
|
|
1005
|
+
{thresholdCfg?.line && (
|
|
1006
|
+
<ThresholdBadgeOverlay
|
|
1007
|
+
engine={engine}
|
|
1008
|
+
padding={effectivePadding}
|
|
1009
|
+
lineY={thresholdGeom.lineY}
|
|
1010
|
+
visible={thresholdGeom.visible}
|
|
1011
|
+
value={thresholdCfg.value}
|
|
1012
|
+
cfg={thresholdCfg.line}
|
|
1013
|
+
palette={palette}
|
|
1014
|
+
font={skiaFont}
|
|
1015
|
+
formatValue={formatValue}
|
|
1016
|
+
/>
|
|
1017
|
+
)}
|
|
1018
|
+
|
|
1019
|
+
{/* Loading / empty state β drawn with the line stack (above the fade) so the
|
|
1020
|
+
squiggle/empty art stays crisp, consistent with the line. */}
|
|
869
1021
|
<LoadingOverlay
|
|
870
1022
|
engine={engine}
|
|
871
1023
|
padding={effectivePadding}
|
|
@@ -1111,8 +1263,10 @@ export function LiveChart(props: LiveChartProps) {
|
|
|
1111
1263
|
accessibilityRole={accessibilityRole}
|
|
1112
1264
|
>
|
|
1113
1265
|
<Canvas style={{ flex: 1 }}>
|
|
1114
|
-
{/*
|
|
1115
|
-
|
|
1266
|
+
{/* Background fills first, then the left-edge fade (a canvas-space sibling
|
|
1267
|
+
so dstOut blends correctly), then the line stack on top β so the fade
|
|
1268
|
+
softens only the fills and the line stays crisp at the left edge. */}
|
|
1269
|
+
<ChartFillLayer model={model} />
|
|
1116
1270
|
|
|
1117
1271
|
{leftEdgeFadeCfg && (
|
|
1118
1272
|
<LeftEdgeFade
|
|
@@ -1124,6 +1278,9 @@ export function LiveChart(props: LiveChartProps) {
|
|
|
1124
1278
|
/>
|
|
1125
1279
|
)}
|
|
1126
1280
|
|
|
1281
|
+
{/* Line stack above the fade so the line stays crisp at the left edge. */}
|
|
1282
|
+
<ChartStack model={model} />
|
|
1283
|
+
|
|
1127
1284
|
{/* Reference-line badges + labels above the fade so they stay crisp. */}
|
|
1128
1285
|
<ChartRefBadgeLayer model={model} />
|
|
1129
1286
|
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DashPathEffect,
|
|
3
|
+
Group,
|
|
4
|
+
Path,
|
|
5
|
+
RoundedRect,
|
|
6
|
+
Text as SkiaText,
|
|
7
|
+
type SkFont,
|
|
8
|
+
} from "@shopify/react-native-skia";
|
|
9
|
+
import { useDerivedValue, type SharedValue } from "react-native-reanimated";
|
|
10
|
+
|
|
11
|
+
import type { ResolvedThresholdLineConfig } from "../core/resolveConfig";
|
|
12
|
+
import type { ChartEngineLayout } from "../core/useLiveChartEngine";
|
|
13
|
+
import type { ChartPadding } from "../draw/line";
|
|
14
|
+
import { usePathBuilder } from "../hooks/usePathBuilder";
|
|
15
|
+
import { measureFontTextWidth } from "../lib/measureFontTextWidth";
|
|
16
|
+
import type { LiveChartPalette } from "../types";
|
|
17
|
+
|
|
18
|
+
/** Padding inside the marker badge pill, in px (mirrors `ReferenceLineOverlay`). */
|
|
19
|
+
const BADGE_PAD_X = 6;
|
|
20
|
+
const BADGE_PAD_Y = 3;
|
|
21
|
+
const BADGE_RADIUS = 5;
|
|
22
|
+
/** Inset from the canvas edge β small so the badge sits as flush to the edge as possible. */
|
|
23
|
+
const BADGE_EDGE_INSET = 2;
|
|
24
|
+
|
|
25
|
+
interface ThresholdMarkerProps {
|
|
26
|
+
engine: ChartEngineLayout;
|
|
27
|
+
padding: ChartPadding;
|
|
28
|
+
lineY: SharedValue<number>;
|
|
29
|
+
visible: SharedValue<boolean>;
|
|
30
|
+
value: SharedValue<number>;
|
|
31
|
+
cfg: ResolvedThresholdLineConfig;
|
|
32
|
+
palette: LiveChartPalette;
|
|
33
|
+
font: SkFont;
|
|
34
|
+
formatValue: (v: number) => string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The dashed horizontal marker line at a live threshold value, tracking a
|
|
39
|
+
* `SharedValue` pixel-Y on the UI thread. Drawn **behind** the chart line so the
|
|
40
|
+
* data line stays the focus; the label badge ({@link ThresholdBadgeOverlay}) is
|
|
41
|
+
* a separate layer drawn on top. Hidden when the threshold is off-screen.
|
|
42
|
+
*/
|
|
43
|
+
export function ThresholdLineOverlay({
|
|
44
|
+
engine,
|
|
45
|
+
padding,
|
|
46
|
+
lineY,
|
|
47
|
+
visible,
|
|
48
|
+
cfg,
|
|
49
|
+
palette,
|
|
50
|
+
}: ThresholdMarkerProps) {
|
|
51
|
+
const lineColor = cfg.color ?? palette.refLine;
|
|
52
|
+
const { strokeWidth, intervals } = cfg;
|
|
53
|
+
|
|
54
|
+
const builder = usePathBuilder();
|
|
55
|
+
|
|
56
|
+
const linePath = useDerivedValue(() => {
|
|
57
|
+
const b = builder.value;
|
|
58
|
+
if (visible.get()) {
|
|
59
|
+
const y = lineY.get();
|
|
60
|
+
b.moveTo(padding.left, y);
|
|
61
|
+
b.lineTo(engine.canvasWidth.get() - padding.right, y);
|
|
62
|
+
}
|
|
63
|
+
return b.detach();
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
const opacity = useDerivedValue(() => (visible.get() ? 1 : 0));
|
|
67
|
+
|
|
68
|
+
return (
|
|
69
|
+
<Group opacity={opacity}>
|
|
70
|
+
<Path
|
|
71
|
+
path={linePath}
|
|
72
|
+
style="stroke"
|
|
73
|
+
strokeWidth={strokeWidth}
|
|
74
|
+
color={lineColor}
|
|
75
|
+
>
|
|
76
|
+
<DashPathEffect intervals={intervals} />
|
|
77
|
+
</Path>
|
|
78
|
+
</Group>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The threshold's label as an opaque badge pill (rounded background + colored
|
|
84
|
+
* border, like `ReferenceLineOverlay`'s off-axis badge). Drawn **on top** of the
|
|
85
|
+
* chart line so the label is never painted over, and anchored hard to the plot's
|
|
86
|
+
* left edge by default (clear of the y-axis labels + live badge) or the right
|
|
87
|
+
* gutter. Renders nothing when there is no label and no `showValue`.
|
|
88
|
+
*/
|
|
89
|
+
export function ThresholdBadgeOverlay({
|
|
90
|
+
engine,
|
|
91
|
+
padding,
|
|
92
|
+
lineY,
|
|
93
|
+
visible,
|
|
94
|
+
value,
|
|
95
|
+
cfg,
|
|
96
|
+
palette,
|
|
97
|
+
font,
|
|
98
|
+
formatValue,
|
|
99
|
+
}: ThresholdMarkerProps) {
|
|
100
|
+
const { label, labelPosition, showValue } = cfg;
|
|
101
|
+
const badgeBackground = palette.tooltipBg;
|
|
102
|
+
const badgeBorderColor = cfg.color ?? palette.refLine;
|
|
103
|
+
const labelColor = cfg.color ?? palette.refLabel;
|
|
104
|
+
|
|
105
|
+
// Font metrics are stable β read once (getMetrics allocates + crosses JSI).
|
|
106
|
+
const { fontAscent, baselineOffset, pillH } = (() => {
|
|
107
|
+
const fm = font.getMetrics();
|
|
108
|
+
return {
|
|
109
|
+
fontAscent: fm.ascent,
|
|
110
|
+
baselineOffset: (fm.ascent + fm.descent) / 2,
|
|
111
|
+
pillH: fm.descent - fm.ascent + BADGE_PAD_Y * 2,
|
|
112
|
+
};
|
|
113
|
+
})();
|
|
114
|
+
|
|
115
|
+
const opacity = useDerivedValue(() => (visible.get() ? 1 : 0));
|
|
116
|
+
|
|
117
|
+
const labelText = useDerivedValue(() => {
|
|
118
|
+
if (showValue) {
|
|
119
|
+
const v = formatValue(value.get());
|
|
120
|
+
return label ? `${label} ${v}` : v;
|
|
121
|
+
}
|
|
122
|
+
return label ?? "";
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const pillW = useDerivedValue(
|
|
126
|
+
() => measureFontTextWidth(font, labelText.get()) + BADGE_PAD_X * 2,
|
|
127
|
+
);
|
|
128
|
+
// Left: flush to the canvas edge. Right: flush to the right plot edge.
|
|
129
|
+
const pillX = useDerivedValue(() =>
|
|
130
|
+
labelPosition === "right"
|
|
131
|
+
? engine.canvasWidth.get() - padding.right - BADGE_EDGE_INSET - pillW.get()
|
|
132
|
+
: BADGE_EDGE_INSET,
|
|
133
|
+
);
|
|
134
|
+
const pillY = useDerivedValue(
|
|
135
|
+
() => lineY.get() - baselineOffset + fontAscent - BADGE_PAD_Y,
|
|
136
|
+
);
|
|
137
|
+
const labelX = useDerivedValue(() => pillX.get() + BADGE_PAD_X);
|
|
138
|
+
const labelY = useDerivedValue(() => lineY.get() - baselineOffset);
|
|
139
|
+
|
|
140
|
+
// No label and no value β nothing to draw (hooks above still run, in order).
|
|
141
|
+
if (label === undefined && !showValue) return null;
|
|
142
|
+
|
|
143
|
+
return (
|
|
144
|
+
<Group opacity={opacity}>
|
|
145
|
+
<RoundedRect
|
|
146
|
+
x={pillX}
|
|
147
|
+
y={pillY}
|
|
148
|
+
width={pillW}
|
|
149
|
+
height={pillH}
|
|
150
|
+
r={BADGE_RADIUS}
|
|
151
|
+
color={badgeBackground}
|
|
152
|
+
/>
|
|
153
|
+
<RoundedRect
|
|
154
|
+
x={pillX}
|
|
155
|
+
y={pillY}
|
|
156
|
+
width={pillW}
|
|
157
|
+
height={pillH}
|
|
158
|
+
r={BADGE_RADIUS}
|
|
159
|
+
color={badgeBorderColor}
|
|
160
|
+
style="stroke"
|
|
161
|
+
strokeWidth={1}
|
|
162
|
+
/>
|
|
163
|
+
<SkiaText
|
|
164
|
+
x={labelX}
|
|
165
|
+
y={labelY}
|
|
166
|
+
text={labelText}
|
|
167
|
+
font={font}
|
|
168
|
+
color={labelColor}
|
|
169
|
+
/>
|
|
170
|
+
</Group>
|
|
171
|
+
);
|
|
172
|
+
}
|
|
@@ -22,6 +22,8 @@ import type {
|
|
|
22
22
|
SelectionDotConfig,
|
|
23
23
|
SelectionDotProps,
|
|
24
24
|
SelectionDotRingConfig,
|
|
25
|
+
ThresholdConfig,
|
|
26
|
+
ThresholdLineConfig,
|
|
25
27
|
TradeEvent,
|
|
26
28
|
ValueLineConfig,
|
|
27
29
|
XAxisConfig,
|
|
@@ -224,6 +226,66 @@ export function resolveValueLine(
|
|
|
224
226
|
return resolveToggle(prop, VALUE_LINE_DEFAULTS, false);
|
|
225
227
|
}
|
|
226
228
|
|
|
229
|
+
export interface ResolvedThresholdLineConfig {
|
|
230
|
+
/** undefined β no label. */
|
|
231
|
+
label: string | undefined;
|
|
232
|
+
/** Label side; `"left"` sits inside the plot (clear of the y-axis gutter). */
|
|
233
|
+
labelPosition: "left" | "right";
|
|
234
|
+
/** undefined β use palette.refLine (line) / palette.refLabel (label) at render time. */
|
|
235
|
+
color: string | undefined;
|
|
236
|
+
intervals: [number, number];
|
|
237
|
+
strokeWidth: number;
|
|
238
|
+
showValue: boolean;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export interface ResolvedThresholdConfig {
|
|
242
|
+
/** The live split value (Y-axis units). Read on the UI thread each frame. */
|
|
243
|
+
value: SharedValue<number>;
|
|
244
|
+
/** undefined β use palette.candleUp (up-green) at render time. */
|
|
245
|
+
aboveColor: string | undefined;
|
|
246
|
+
/** undefined β use palette.candleDown (down-red) at render time. */
|
|
247
|
+
belowColor: string | undefined;
|
|
248
|
+
fill: boolean;
|
|
249
|
+
line: ResolvedThresholdLineConfig | null;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const THRESHOLD_LINE_DEFAULTS: ResolvedThresholdLineConfig = {
|
|
253
|
+
label: undefined,
|
|
254
|
+
labelPosition: "left",
|
|
255
|
+
color: undefined,
|
|
256
|
+
intervals: [4, 4],
|
|
257
|
+
strokeWidth: 1,
|
|
258
|
+
showValue: false,
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Resolves the `threshold.line` sub-prop to a config or null (no marker line).
|
|
263
|
+
* `true` β dashed defaults, object β merged, falsy/undefined β null.
|
|
264
|
+
*/
|
|
265
|
+
export function resolveThresholdLine(
|
|
266
|
+
prop: boolean | ThresholdLineConfig | undefined,
|
|
267
|
+
): ResolvedThresholdLineConfig | null {
|
|
268
|
+
return resolveToggle(prop, THRESHOLD_LINE_DEFAULTS, false);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Resolves the `threshold` prop to a fully-typed config or null (disabled).
|
|
273
|
+
* Presence-gated (like `referenceLines`/`markers`): the required `value`
|
|
274
|
+
* SharedValue means there is no boolean form β a config object enables it.
|
|
275
|
+
*/
|
|
276
|
+
export function resolveThreshold(
|
|
277
|
+
prop: ThresholdConfig | undefined,
|
|
278
|
+
): ResolvedThresholdConfig | null {
|
|
279
|
+
if (!prop) return null;
|
|
280
|
+
return {
|
|
281
|
+
value: prop.value,
|
|
282
|
+
aboveColor: prop.aboveColor,
|
|
283
|
+
belowColor: prop.belowColor,
|
|
284
|
+
fill: prop.fill ?? false,
|
|
285
|
+
line: resolveThresholdLine(prop.line),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
|
|
227
289
|
const BADGE_DEFAULTS: ResolvedBadgeConfig = {
|
|
228
290
|
variant: "default",
|
|
229
291
|
tail: true,
|
|
@@ -22,9 +22,13 @@ export function useChartPaths(
|
|
|
22
22
|
engine: SingleEngineState,
|
|
23
23
|
padding: ChartPadding,
|
|
24
24
|
morphT?: SharedValue<number>,
|
|
25
|
+
/** When set, also build `thresholdFillPath` β the band between the line and this
|
|
26
|
+
* pixel-Y, closed at the threshold instead of the chart baseline. */
|
|
27
|
+
thresholdY?: SharedValue<number>,
|
|
25
28
|
) {
|
|
26
29
|
const lineBuilder = usePathBuilder();
|
|
27
30
|
const fillBuilder = usePathBuilder();
|
|
31
|
+
const thresholdFillBuilder = usePathBuilder();
|
|
28
32
|
|
|
29
33
|
const cacheRef = useRef<{
|
|
30
34
|
emptyPath: SkPath;
|
|
@@ -105,5 +109,25 @@ export function useChartPaths(
|
|
|
105
109
|
return b.detach();
|
|
106
110
|
});
|
|
107
111
|
|
|
108
|
-
|
|
112
|
+
// Threshold-anchored fill: the same spline, closed at `thresholdY` instead of the
|
|
113
|
+
// baseline, so the band lies between the line and the threshold (the profit/loss
|
|
114
|
+
// area). Painted with the hard-split vertical gradient, the part above the split
|
|
115
|
+
// shows the above-color and the part below shows the below-color.
|
|
116
|
+
const thresholdFillPath = useDerivedValue(() => {
|
|
117
|
+
const cache = cacheRef.current!;
|
|
118
|
+
if (!thresholdY) return cache.emptyPath;
|
|
119
|
+
const yT = thresholdY.get();
|
|
120
|
+
const pts = flatPts.get();
|
|
121
|
+
const n = pts.length >> 1;
|
|
122
|
+
if (n < 2 || !Number.isFinite(yT)) return cache.emptyPath;
|
|
123
|
+
const b = thresholdFillBuilder.value;
|
|
124
|
+
b.moveTo(pts[0], pts[1]);
|
|
125
|
+
drawSpline(b, pts, cache.scratch);
|
|
126
|
+
b.lineTo(pts[(n - 1) * 2], yT);
|
|
127
|
+
b.lineTo(pts[0], yT);
|
|
128
|
+
b.close();
|
|
129
|
+
return b.detach();
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
return { linePath, fillPath, thresholdFillPath } as const;
|
|
109
133
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { vec } from "@shopify/react-native-skia";
|
|
2
|
+
import { useDerivedValue, type SharedValue } from "react-native-reanimated";
|
|
3
|
+
|
|
4
|
+
import type { ChartEngineLayout } from "../core/useLiveChartEngine";
|
|
5
|
+
import type { ChartPadding } from "../draw/line";
|
|
6
|
+
import {
|
|
7
|
+
thresholdLineY,
|
|
8
|
+
thresholdSplitPositions,
|
|
9
|
+
thresholdVisible,
|
|
10
|
+
} from "../math/threshold";
|
|
11
|
+
|
|
12
|
+
export interface ThresholdGeometry {
|
|
13
|
+
/** Threshold pixel-Y within the canvas, or NaN before layout / degenerate range. */
|
|
14
|
+
lineY: SharedValue<number>;
|
|
15
|
+
/** Whether the threshold sits within the plot area (drives marker-line opacity). */
|
|
16
|
+
visible: SharedValue<boolean>;
|
|
17
|
+
/** Vertical gradient end vector, `vec(0, canvasHeight)` β shared by stroke + fill. */
|
|
18
|
+
gradientEnd: SharedValue<ReturnType<typeof vec>>;
|
|
19
|
+
/** `[0, t, t, 1]` stop positions for the hard-split gradient β shared by stroke + fill. */
|
|
20
|
+
splitPositions: SharedValue<number[]>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Per-frame screen geometry for the threshold split, shared by the stroke
|
|
25
|
+
* gradient, the profit/loss fill band, and the dashed marker line. Reads the live
|
|
26
|
+
* threshold value + engine Y-range on the UI thread; the math lives in
|
|
27
|
+
* `math/threshold` so it stays unit-testable without Reanimated.
|
|
28
|
+
*/
|
|
29
|
+
export function useThreshold(
|
|
30
|
+
engine: ChartEngineLayout,
|
|
31
|
+
padding: ChartPadding,
|
|
32
|
+
value: SharedValue<number>,
|
|
33
|
+
): ThresholdGeometry {
|
|
34
|
+
const lineY = useDerivedValue(() =>
|
|
35
|
+
thresholdLineY(
|
|
36
|
+
value.get(),
|
|
37
|
+
engine.displayMin.get(),
|
|
38
|
+
engine.displayMax.get(),
|
|
39
|
+
engine.canvasHeight.get(),
|
|
40
|
+
padding.top,
|
|
41
|
+
padding.bottom,
|
|
42
|
+
),
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const visible = useDerivedValue(() =>
|
|
46
|
+
thresholdVisible(
|
|
47
|
+
lineY.get(),
|
|
48
|
+
engine.canvasHeight.get(),
|
|
49
|
+
padding.top,
|
|
50
|
+
padding.bottom,
|
|
51
|
+
),
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const splitPositions = useDerivedValue(() =>
|
|
55
|
+
thresholdSplitPositions(lineY.get(), engine.canvasHeight.get()),
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const gradientEnd = useDerivedValue(() =>
|
|
59
|
+
vec(0, Math.max(1, engine.canvasHeight.get())),
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
return { lineY, visible, gradientEnd, splitPositions };
|
|
63
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, worklet-safe geometry for the threshold split ({@link ThresholdConfig}).
|
|
3
|
+
* No SharedValues and no hooks β these are unit-tested directly; `useThreshold`
|
|
4
|
+
* wires the live SharedValues into them.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Pixel Y of a threshold value within the plot. Mirrors the line path's valueβY
|
|
9
|
+
* mapping in `buildLinePoints` (`top + (max - v) / range * chartH`). Returns NaN
|
|
10
|
+
* when the canvas hasn't laid out yet or the value range is degenerate, so the
|
|
11
|
+
* line/fill/marker callers can cull instead of drawing at a bogus position.
|
|
12
|
+
*/
|
|
13
|
+
export function thresholdLineY(
|
|
14
|
+
value: number,
|
|
15
|
+
displayMin: number,
|
|
16
|
+
displayMax: number,
|
|
17
|
+
canvasHeight: number,
|
|
18
|
+
paddingTop: number,
|
|
19
|
+
paddingBottom: number,
|
|
20
|
+
): number {
|
|
21
|
+
"worklet";
|
|
22
|
+
const range = displayMax - displayMin;
|
|
23
|
+
const chartH = canvasHeight - paddingTop - paddingBottom;
|
|
24
|
+
if (canvasHeight <= 0 || range <= 0 || chartH <= 0) return NaN;
|
|
25
|
+
return paddingTop + ((displayMax - value) / range) * chartH;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** True when the threshold's Y sits within the plot area (i.e. on-screen). */
|
|
29
|
+
export function thresholdVisible(
|
|
30
|
+
lineY: number,
|
|
31
|
+
canvasHeight: number,
|
|
32
|
+
paddingTop: number,
|
|
33
|
+
paddingBottom: number,
|
|
34
|
+
): boolean {
|
|
35
|
+
"worklet";
|
|
36
|
+
if (!Number.isFinite(lineY) || canvasHeight <= 0) return false;
|
|
37
|
+
return lineY >= paddingTop && lineY <= canvasHeight - paddingBottom;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Stop positions for the vertical hard-split gradient, paired with the 4-stop
|
|
42
|
+
* color array `[above, above, below, below]`: `[0, t, t, 1]`, where `t` is the
|
|
43
|
+
* threshold's fraction down the full canvas (the gradient vector spans
|
|
44
|
+
* `0 β canvasHeight`), clamped to `[0, 1]`.
|
|
45
|
+
*
|
|
46
|
+
* - `t β€ 0` (threshold above everything) β `[0, 0, 0, 1]` β solid below-color.
|
|
47
|
+
* - `t β₯ 1` (threshold below everything) β `[0, 1, 1, 1]` β solid above-color.
|
|
48
|
+
*/
|
|
49
|
+
export function thresholdSplitPositions(
|
|
50
|
+
lineY: number,
|
|
51
|
+
canvasHeight: number,
|
|
52
|
+
): number[] {
|
|
53
|
+
"worklet";
|
|
54
|
+
if (canvasHeight <= 0 || !Number.isFinite(lineY)) return [0, 1, 1, 1];
|
|
55
|
+
let t = lineY / canvasHeight;
|
|
56
|
+
if (t < 0) t = 0;
|
|
57
|
+
else if (t > 1) t = 1;
|
|
58
|
+
return [0, t, t, 1];
|
|
59
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -241,6 +241,61 @@ export interface LineConfig {
|
|
|
241
241
|
colors?: string[];
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Color the line above vs. below a live threshold value β green above, red below
|
|
246
|
+
* by default. The threshold is **always** a `SharedValue` so it can track a live
|
|
247
|
+
* benchmark (break-even / average cost, VWAP, previous close, a peg) on the UI
|
|
248
|
+
* thread without re-rendering. Drives a hard-split line stroke and, optionally, a
|
|
249
|
+
* tinted profit/loss fill band and a dashed marker line at the threshold.
|
|
250
|
+
*
|
|
251
|
+
* The split stroke supersedes `LineConfig.color`/`colors` and segment recoloring
|
|
252
|
+
* for the main line while a threshold is set.
|
|
253
|
+
*/
|
|
254
|
+
export interface ThresholdConfig {
|
|
255
|
+
/**
|
|
256
|
+
* The split value, in Y-axis (price) units. A `SharedValue` β update it with
|
|
257
|
+
* `.set()` and the split tracks live on the UI thread (break-even, VWAP, the
|
|
258
|
+
* previous close, a peg, β¦).
|
|
259
|
+
*/
|
|
260
|
+
value: SharedValue<number>;
|
|
261
|
+
/** Stroke color where the line is at/above `value`. Default: palette up-green (`candleUp`). */
|
|
262
|
+
aboveColor?: string;
|
|
263
|
+
/** Stroke color where the line is below `value`. Default: palette down-red (`candleDown`). */
|
|
264
|
+
belowColor?: string;
|
|
265
|
+
/**
|
|
266
|
+
* Tint the area between the line and `value` (the profit/loss band) toward the
|
|
267
|
+
* above/below colors. Independent of the baseline `gradient` fill β set
|
|
268
|
+
* `gradient={false}` for the threshold band alone. Default `false`.
|
|
269
|
+
*/
|
|
270
|
+
fill?: boolean;
|
|
271
|
+
/**
|
|
272
|
+
* Dashed marker line + optional gutter label at the threshold. `true` β a dashed
|
|
273
|
+
* line in the palette reference color; object β styled; omit/`false` β none.
|
|
274
|
+
* Default off.
|
|
275
|
+
*/
|
|
276
|
+
line?: boolean | ThresholdLineConfig;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/** Dashed marker line drawn at a {@link ThresholdConfig} value. */
|
|
280
|
+
export interface ThresholdLineConfig {
|
|
281
|
+
/** Label text, e.g. `"Break-even"`. */
|
|
282
|
+
label?: string;
|
|
283
|
+
/**
|
|
284
|
+
* Label side. `"left"` sits just inside the plot at the line's left edge β
|
|
285
|
+
* clear of the y-axis labels and the live badge; `"right"` uses the right
|
|
286
|
+
* gutter like a legacy reference line (may overlap y-axis labels). Default `"left"`.
|
|
287
|
+
*/
|
|
288
|
+
labelPosition?: "left" | "right";
|
|
289
|
+
/** Line + label color. Defaults to palette `refLine` / `refLabel`. */
|
|
290
|
+
color?: string;
|
|
291
|
+
/** Dash pattern `[dashLength, gapLength]` in pixels. Default `[4, 4]`. */
|
|
292
|
+
intervals?: [number, number];
|
|
293
|
+
/** Line thickness in pixels. Default `1`. */
|
|
294
|
+
strokeWidth?: number;
|
|
295
|
+
/** Append the formatted threshold value to the label. Default `false`. */
|
|
296
|
+
showValue?: boolean;
|
|
297
|
+
}
|
|
298
|
+
|
|
244
299
|
/** Area fill gradient beneath the chart line. */
|
|
245
300
|
export interface GradientConfig {
|
|
246
301
|
/** Opacity at the top of the gradient (near the line). Default `0.35`. */
|
|
@@ -1034,6 +1089,12 @@ export interface LiveChartProps extends LiveChartCoreProps {
|
|
|
1034
1089
|
* `mutedColors`). Optional dashed `divider` + `label` mark a segment's edge.
|
|
1035
1090
|
*/
|
|
1036
1091
|
segments?: ChartSegment[];
|
|
1092
|
+
/**
|
|
1093
|
+
* Color the line above vs. below a live threshold value (break-even / average
|
|
1094
|
+
* cost, VWAP, previous close, a peg). Always a `SharedValue` so the split tracks
|
|
1095
|
+
* live on the UI thread. See {@link ThresholdConfig}.
|
|
1096
|
+
*/
|
|
1097
|
+
threshold?: ThresholdConfig;
|
|
1037
1098
|
/** Render the live value as a large text overlay in the top-left. Default `false`. */
|
|
1038
1099
|
showValue?: boolean;
|
|
1039
1100
|
/** Tint the `showValue` text by momentum (green up / red down). Default `false`. */
|