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 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":"AAyEA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,UAAU,CAAC;AAo/BnE,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAqE9C"}
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;;;EAqF7B"}
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
@@ -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`. */
@@ -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":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,OAAO,EACR,MAAM,4BAA4B,CAAC;AAEpC,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,yFAAyF;AACzF,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,4GAA4G;IAC5G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;AAEV,+EAA+E;AAC/E,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAAC;IAC3C;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4FAA4F;IAC5F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;+CAG2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;0FACsF;IACtF,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,gGAAgG;IAChG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;gCAE4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,+BAA+B;AAC/B,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;CACtC;AAED,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;gFAC4E;IAC5E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,iEAAiE;IACjE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;CACpC;AAED,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,mGAAmG;IACnG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,CAAC,EAAE,MAAM,CAAC;IACV,0CAA0C;IAC1C,CAAC,EAAE,MAAM,CAAC;IACV,sFAAsF;IACtF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvB,0DAA0D;IAC1D,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvB,mCAAmC;IACnC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,qDAAqD;IACrD,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC9C;AAED,kGAAkG;AAClG,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8CAA8C;AAC9C,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,kEAAkE;AAClE,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAChC;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,uBAAuB;IACvB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+DAA+D;AAC/D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElF;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC;AAED,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;CAC1B;AAED;;eAEe;AACf,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IAC/B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,6FAA6F;AAC7F,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,2GAA2G;IAC3G,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,wHAAwH;IACxH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACtC,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,8FAA8F;IAC9F,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yFAAyF;AACzF,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,CAAC,EAAE,MAAM,CAAC;IACV,qDAAqD;IACrD,CAAC,EAAE,MAAM,CAAC;CACX;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,uEAAuE;IACvE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,sDAAsD;AACtD,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,qEAAqE;IACrE,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,sCAAsC;IACtC,MAAM,EAAE,aAAa,CAAC;IACtB,wCAAwC;IACxC,IAAI,EAAE,WAAW,CAAC;IAClB,yDAAyD;IACzD,MAAM,EAAE,aAAa,CAAC;IACtB,oCAAoC;IACpC,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,eAAe,EAAE,MAAM,CAAC;IACxB,qGAAqG;IACrG,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,oCAAoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC;AAID,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,oEAAoE;IACpE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,8GAA8G;IAC9G,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,sGAAsG;IACtG,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACrC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACxC,8FAA8F;IAC9F,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,iGAAiG;IACjG,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpC;;;;OAIG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAChE,uHAAuH;IACvH,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;IAC5C,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;IAC5C,+BAA+B;IAC/B,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,sGAAsG;IACtG,QAAQ,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IACpC,mGAAmG;IACnG,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC/C,wGAAwG;IACxG,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,sGAAsG;IACtG,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAG7B,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,wFAAwF;IACxF,OAAO,CAAC,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;IACrC,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,UAAU,CAAC,EAAE,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7C;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IACxC,mGAAmG;IACnG,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAG/B,+EAA+E;IAC/E,IAAI,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;IACpC,uEAAuE;IACvE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B;;oFAEgF;IAChF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC1C;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACrD;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,8EAA8E;IAC9E,MAAM,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;IACpC,kDAAkD;IAClD,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACrC,wHAAwH;IACxH,MAAM,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC/B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;CACnD;AAID;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IAEnB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IAEjB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IAEjB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IAEtB,yDAAyD;IACzD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB"}
package/package.json CHANGED
@@ -68,5 +68,5 @@
68
68
  },
69
69
  "sideEffects": false,
70
70
  "types": "./dist/index.d.ts",
71
- "version": "3.4.0"
71
+ "version": "3.5.0"
72
72
  }
@@ -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 { LiveChartProps, Marker, TradeEvent } from "../types";
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
- const { linePath, fillPath } = useChartPaths(
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
- /** Main shaken chart stack: grid, fill, line/candles, axes, badge, dot, degen,
633
- * markers, and the loading/empty art. The live value text is a separate layer
634
- * (ChartValueOverlay) so it sits above the left-edge fade. */
635
- function ChartStack({ model }: { model: LiveChartModel }) {
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
- valueLineCfg,
654
- dotY,
655
- allRefLines,
656
- resolvedSegments,
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
- {hasRecolorSegments ? (
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
- {/* Loading / empty state β€” before left-edge fade so the squiggle/empty art fades like the chart */}
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
- {/* Shaken chart stack β€” left-edge fade is a sibling below so dstOut runs in canvas space */}
1115
- <ChartStack model={model} />
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
- return { linePath, fillPath } as const;
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
@@ -77,6 +77,8 @@ export type {
77
77
  SelectionDotRingConfig,
78
78
  SeriesConfig,
79
79
  ThemeMode,
80
+ ThresholdConfig,
81
+ ThresholdLineConfig,
80
82
  TradeEvent,
81
83
  ValueLineConfig,
82
84
  XAxisConfig,
@@ -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`. */