react-native-livechart 3.3.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 +5 -1
- package/dist/components/LiveChart.d.ts.map +1 -1
- package/dist/components/LiveChartSeries.d.ts.map +1 -1
- package/dist/components/ReferenceLineOverlay.d.ts +10 -3
- package/dist/components/ReferenceLineOverlay.d.ts.map +1 -1
- package/dist/components/ScrubActionOverlay.d.ts +32 -0
- package/dist/components/ScrubActionOverlay.d.ts.map +1 -0
- package/dist/components/ThresholdLineOverlay.d.ts +34 -0
- package/dist/components/ThresholdLineOverlay.d.ts.map +1 -0
- package/dist/components/XAxisOverlay.d.ts.map +1 -1
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/core/resolveConfig.d.ts +55 -1
- package/dist/core/resolveConfig.d.ts.map +1 -1
- package/dist/hooks/crosshairShared.d.ts +110 -0
- package/dist/hooks/crosshairShared.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/useCrosshair.d.ts +14 -2
- package/dist/hooks/useCrosshair.d.ts.map +1 -1
- package/dist/hooks/useMarkers.d.ts +2 -0
- package/dist/hooks/useMarkers.d.ts.map +1 -1
- package/dist/hooks/useReferenceLine.d.ts +36 -3
- package/dist/hooks/useReferenceLine.d.ts.map +1 -1
- package/dist/hooks/useReferenceLinePress.d.ts +23 -0
- package/dist/hooks/useReferenceLinePress.d.ts.map +1 -0
- 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/referenceLines.d.ts +23 -0
- package/dist/math/referenceLines.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 +190 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/LiveChart.tsx +362 -61
- package/src/components/LiveChartSeries.tsx +39 -2
- package/src/components/ReferenceLineOverlay.tsx +121 -94
- package/src/components/ScrubActionOverlay.tsx +187 -0
- package/src/components/ThresholdLineOverlay.tsx +172 -0
- package/src/components/XAxisOverlay.tsx +2 -1
- package/src/constants.ts +5 -0
- package/src/core/resolveConfig.ts +102 -0
- package/src/hooks/crosshairShared.ts +293 -0
- package/src/hooks/useChartPaths.ts +25 -1
- package/src/hooks/useCrosshair.ts +340 -6
- package/src/hooks/useMarkers.ts +18 -2
- package/src/hooks/useReferenceLine.ts +259 -14
- package/src/hooks/useReferenceLinePress.ts +92 -0
- package/src/hooks/useThreshold.ts +63 -0
- package/src/index.ts +5 -0
- package/src/math/referenceLines.ts +55 -0
- package/src/math/threshold.ts +59 -0
- package/src/types.ts +195 -6
package/README.md
CHANGED
|
@@ -28,9 +28,11 @@ High-performance **live** line and candlestick charts for React Native, built on
|
|
|
28
28
|
- ๐ **Line & candlestick** modes (with line/candle morph) in a single component
|
|
29
29
|
- ๐งฌ **Multi-series** charts with a toggleable legend and per-series live dots
|
|
30
30
|
- ๐ **Scrubbing** with a crosshair and worklet-friendly `onScrub` payloads
|
|
31
|
+
- ๐ฏ **Order ticket** (`scrubAction`) โ tap to drop a price reticle, drag to fine-tune a level, press the action badge to fire `onScrubAction` (e.g. open a limit-order sheet)
|
|
31
32
|
- โก **Momentum** detection and **degen** effects (particle bursts + shake on big swings)
|
|
32
33
|
- ๐ท๏ธ **Trade markers** driven by a `SharedValue` trade stream
|
|
33
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
|
|
34
36
|
- ๐จ **Theming** with light/dark modes, an accent-driven `palette`, and `metrics` sizing/motion tokens
|
|
35
37
|
- โณ **Loading** (breathing-line shell) and **paused** states out of the box
|
|
36
38
|
- ๐งต **SharedValue-driven** rendering โ history and live values stay on the UI thread
|
|
@@ -148,10 +150,12 @@ The tables below are a **highlight** โ the **canonical, full reference is the
|
|
|
148
150
|
| `segments` | `ChartSegment[]` โ labeled time ranges (sessions, after-hours) with scrub-focus dimming |
|
|
149
151
|
| `degen` | Particle burst + shake on momentum swings |
|
|
150
152
|
| `scrub` | Crosshair scrubbing |
|
|
153
|
+
| `scrubAction` | `true` / `ScrubActionConfig` โ "order ticket": tap to drop a price reticle, drag to adjust, press the action badge |
|
|
151
154
|
| `momentum` | `true` / `false` / `"up"`, `"down"`, or `"flat"` / `MomentumConfig` |
|
|
152
155
|
| `dot` | `true` / `false` (hide) / `DotConfig` โ `radius`, `ring` (halo), `color` |
|
|
153
156
|
| `metrics` | Sizing & motion tokens โ geometry/feel analogue of `palette` |
|
|
154
157
|
| `onScrub` | Callback: `ScrubPoint` or `null` |
|
|
158
|
+
| `onScrubAction` | Callback: `ScrubActionPoint` โ the chosen price level on badge press |
|
|
155
159
|
|
|
156
160
|
### `LiveChartSeries` (multi-series)
|
|
157
161
|
|
|
@@ -164,7 +168,7 @@ The tables below are a **highlight** โ the **canonical, full reference is the
|
|
|
164
168
|
| `onSeriesToggle` | Chip tap |
|
|
165
169
|
| `onScrub` | Worklet-friendly multi-series scrub payload |
|
|
166
170
|
|
|
167
|
-
These tables are a **highlight, not the full surface** (`LiveChart` alone has ~48 props). Other shared props include `font`, `insets`, `smoothing`, `xAxis`, `yAxis`, `referenceLines`, `gridStyle`, `palette`, `metrics`, `markers`, `leftEdgeFade`, `line`, `formatValue`, `formatTime`, and `emptyText`; single-series adds `gradient`, `badge`, `pulse`, `valueLine`, `segments`, and `showValue`. Every overlay toggle follows the same **`boolean | Config`** convention (`badge`, `gradient`, `pulse`, `valueLine`, `scrub`, `yAxis`, `xAxis`, `leftEdgeFade`, `legend`, and `dot`) โ pass `true`/omit for defaults, `false` to disable, or an object to customize. Both charts share the same `dot` styling (a `DotConfig` base โ `radius`, `ring`, `color`); multi-series extends it with `pulse`, `valueLine`, and `valueLabel`. Beyond `palette` (color), `metrics` exposes sizing & motion tokens (badge/candle geometry, grid/motion speeds) with the same per-key override model. See the TypeScript types and JSDoc for the complete, canonical reference.
|
|
171
|
+
These tables are a **highlight, not the full surface** (`LiveChart` alone has ~48 props). Other shared props include `font`, `insets`, `smoothing`, `xAxis`, `yAxis`, `referenceLines`, `gridStyle`, `palette`, `metrics`, `markers`, `leftEdgeFade`, `line`, `formatValue`, `formatTime`, and `emptyText`; single-series adds `gradient`, `badge`, `pulse`, `valueLine`, `segments`, `scrubAction`, and `showValue`. Every overlay toggle follows the same **`boolean | Config`** convention (`badge`, `gradient`, `pulse`, `valueLine`, `scrub`, `yAxis`, `xAxis`, `leftEdgeFade`, `legend`, and `dot`) โ pass `true`/omit for defaults, `false` to disable, or an object to customize. Both charts share the same `dot` styling (a `DotConfig` base โ `radius`, `ring`, `color`); multi-series extends it with `pulse`, `valueLine`, and `valueLabel`. Beyond `palette` (color), `metrics` exposes sizing & motion tokens (badge/candle geometry, grid/motion speeds) with the same per-key override model. See the TypeScript types and JSDoc for the complete, canonical reference.
|
|
168
172
|
|
|
169
173
|
## Migrating to v2
|
|
170
174
|
|
|
@@ -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveChartSeries.d.ts","sourceRoot":"","sources":["../../src/components/LiveChartSeries.tsx"],"names":[],"mappings":"AA+DA,OAAO,KAAK,EAAE,oBAAoB,EAAwB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"LiveChartSeries.d.ts","sourceRoot":"","sources":["../../src/components/LiveChartSeries.tsx"],"names":[],"mappings":"AA+DA,OAAO,KAAK,EAAE,oBAAoB,EAAwB,MAAM,UAAU,CAAC;AAkjB3E,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAqH1D"}
|
|
@@ -5,15 +5,22 @@ import type { LiveChartPalette, ReferenceLine } from "../types";
|
|
|
5
5
|
/**
|
|
6
6
|
* Renders one reference line or band into the chart canvas. Handles all three
|
|
7
7
|
* `ReferenceLine` forms (horizontal line, horizontal value band, vertical time
|
|
8
|
-
* band) plus the
|
|
9
|
-
* so callers can `.map()` over a variable-length
|
|
8
|
+
* band) plus the Form-A pill badge (in-range tag + off-screen chevron pin).
|
|
9
|
+
* Self-contained so callers can `.map()` over a variable-length array.
|
|
10
10
|
*/
|
|
11
|
-
export declare function ReferenceLineOverlay({ engine, padding, line, palette, formatValue, font, }: {
|
|
11
|
+
export declare function ReferenceLineOverlay({ engine, padding, line, palette, formatValue, font, badgeLayer, }: {
|
|
12
12
|
engine: ChartEngineLayout;
|
|
13
13
|
padding: ChartPadding;
|
|
14
14
|
line: ReferenceLine;
|
|
15
15
|
palette: LiveChartPalette;
|
|
16
16
|
formatValue: (v: number) => string;
|
|
17
17
|
font: SkFont;
|
|
18
|
+
/**
|
|
19
|
+
* Render only the badge + label (`true`) or only the lines / bands (`false`,
|
|
20
|
+
* default). The caller draws the base pass behind the chart content and the
|
|
21
|
+
* badge pass **above** the left-edge fade, so badges/labels stay crisp instead
|
|
22
|
+
* of being erased by the fade's `dstOut` blend.
|
|
23
|
+
*/
|
|
24
|
+
badgeLayer?: boolean;
|
|
18
25
|
}): import("react/jsx-runtime").JSX.Element;
|
|
19
26
|
//# sourceMappingURL=ReferenceLineOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferenceLineOverlay.d.ts","sourceRoot":"","sources":["../../src/components/ReferenceLineOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,MAAM,EACZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ReferenceLineOverlay.d.ts","sourceRoot":"","sources":["../../src/components/ReferenceLineOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,MAAM,EACZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAShE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,OAAO,EACP,IAAI,EACJ,OAAO,EACP,WAAW,EACX,IAAI,EACJ,UAAkB,GACnB,EAAE;IACD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,2CAyPA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type SkFont } 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
|
+
import type { ActionBadgeLayout, TimeBadgeLayout } from "../hooks/crosshairShared";
|
|
6
|
+
import type { LiveChartPalette } from "../types";
|
|
7
|
+
/**
|
|
8
|
+
* Scrub-action ("order ticket") overlay: the locked reticle (a horizontal price
|
|
9
|
+
* level line + a faint vertical line crossing at the reticle) and the right-gutter
|
|
10
|
+
* action badge โ a circular icon button + a separate price pill. All keyed off the
|
|
11
|
+
* lock SharedValues, so it tracks the reticle on the UI thread without re-renders.
|
|
12
|
+
*
|
|
13
|
+
* Mounted by `LiveChart` **outside** the degen-shake group so the rendered badge
|
|
14
|
+
* stays aligned with the (untransformed) tap hit-test in {@link useCrosshair}.
|
|
15
|
+
* Visibility rides on a 0/1 opacity driven by `lockActive` (no React remount).
|
|
16
|
+
*/
|
|
17
|
+
export declare function ScrubActionOverlay({ lockActive, lockX, lockY, actionBadge, timeBadge, engine, padding, palette, font, icon, lineColor, background, iconColor, }: {
|
|
18
|
+
lockActive: SharedValue<boolean>;
|
|
19
|
+
lockX: SharedValue<number>;
|
|
20
|
+
lockY: SharedValue<number>;
|
|
21
|
+
actionBadge: SharedValue<ActionBadgeLayout>;
|
|
22
|
+
timeBadge?: SharedValue<TimeBadgeLayout>;
|
|
23
|
+
engine: ChartEngineLayout;
|
|
24
|
+
padding: ChartPadding;
|
|
25
|
+
palette: LiveChartPalette;
|
|
26
|
+
font: SkFont;
|
|
27
|
+
icon: string;
|
|
28
|
+
lineColor?: string;
|
|
29
|
+
background?: string;
|
|
30
|
+
iconColor?: string;
|
|
31
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=ScrubActionOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrubActionOverlay.d.ts","sourceRoot":"","sources":["../../src/components/ScrubActionOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,MAAM,EACZ,MAAM,4BAA4B,CAAC;AACpC,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;AACjD,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,KAAK,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,UAAU,EACV,SAAS,GACV,EAAE;IACD,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IACzC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAiIA"}
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XAxisOverlay.d.ts","sourceRoot":"","sources":["../../src/components/XAxisOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"XAxisOverlay.d.ts","sourceRoot":"","sources":["../../src/components/XAxisOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACtE,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;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAOjD,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,GACL,EAAE;IACD,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,2CA8DA"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -21,6 +21,10 @@ export declare const BADGE_TAIL_LEN: number;
|
|
|
21
21
|
export declare const BADGE_MARGIN_RIGHT: number;
|
|
22
22
|
/** Gap between the live dot and the badge tail tip. */
|
|
23
23
|
export declare const BADGE_DOT_GAP: number;
|
|
24
|
+
/** Baseline offset (px) below the plot bottom where x-axis time labels sit.
|
|
25
|
+
* Shared so overlays that align to the time-axis row (e.g. the scrub-action
|
|
26
|
+
* time badge) match the {@link XAxisOverlay} labels. */
|
|
27
|
+
export declare const X_AXIS_LABEL_OFFSET_Y = 19;
|
|
24
28
|
/** Maximum simultaneous series rendered (paths/dots slots). */
|
|
25
29
|
export declare const MAX_MULTI_SERIES = 12;
|
|
26
30
|
/** Default width (px) of the left-edge fade band */
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAOxC,yCAAyC;AACzC,eAAO,MAAM,sBAAsB,EAAE,YAOpC,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,EAAE,aAIrC,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,qBAAqB,EAAE,WAGnC,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,EAAE,aAGrC,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,4BAA4B,EAAE,iBAI1C,CAAC;AAGF,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAC5D,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAC5D,mEAAmE;AACnE,eAAO,MAAM,cAAc,QAAoC,CAAC;AAChE,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,QAAoC,CAAC;AACpE,uDAAuD;AACvD,eAAO,MAAM,aAAa,QAAgC,CAAC;AAE3D,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,oDAAoD;AACpD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAOxC,yCAAyC;AACzC,eAAO,MAAM,sBAAsB,EAAE,YAOpC,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,EAAE,aAIrC,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,qBAAqB,EAAE,WAGnC,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,EAAE,aAGrC,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,4BAA4B,EAAE,iBAI1C,CAAC;AAGF,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAC5D,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAC5D,mEAAmE;AACnE,eAAO,MAAM,cAAc,QAAoC,CAAC;AAChE,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,QAAoC,CAAC;AACpE,uDAAuD;AACvD,eAAO,MAAM,aAAa,QAAgC,CAAC;AAE3D;;yDAEyD;AACzD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,oDAAoD;AACpD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAC"}
|
|
@@ -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, 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 {
|
|
@@ -45,6 +45,23 @@ export interface ResolvedScrubConfig {
|
|
|
45
45
|
/** Press-and-hold delay (ms) before scrubbing activates. 0 = immediate. */
|
|
46
46
|
panGestureDelay: number;
|
|
47
47
|
}
|
|
48
|
+
export interface ResolvedScrubActionConfig {
|
|
49
|
+
/** Glyph drawn in the action badge. */
|
|
50
|
+
icon: string;
|
|
51
|
+
/** undefined โ palette.badgeBg */
|
|
52
|
+
background: string | undefined;
|
|
53
|
+
/** undefined โ palette.badgeText */
|
|
54
|
+
iconColor: string | undefined;
|
|
55
|
+
/** undefined โ palette.crosshairLine */
|
|
56
|
+
lineColor: string | undefined;
|
|
57
|
+
/** Show the price readout pill; false โ icon-only badge. */
|
|
58
|
+
text: boolean;
|
|
59
|
+
/** Show the date/time pill where the vertical line meets the x-axis. */
|
|
60
|
+
timeBadge: boolean;
|
|
61
|
+
/** undefined โ no rounding */
|
|
62
|
+
snap: number | undefined;
|
|
63
|
+
dismissOnTapOutside: boolean;
|
|
64
|
+
}
|
|
48
65
|
export interface ResolvedGradientConfig {
|
|
49
66
|
/** undefined โ use palette.fillTop (theme-aware) at render time */
|
|
50
67
|
topOpacity: number | undefined;
|
|
@@ -117,6 +134,38 @@ export interface ResolvedLeftEdgeFadeConfig {
|
|
|
117
134
|
* `true` โ defaults, object โ merged with defaults, falsy โ null.
|
|
118
135
|
*/
|
|
119
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;
|
|
120
169
|
/**
|
|
121
170
|
* Resolves `badge` prop to a fully-typed config or null (disabled).
|
|
122
171
|
* `true` โ defaults, object โ merged with defaults, falsy โ null.
|
|
@@ -143,6 +192,11 @@ export declare function resolveXAxis(prop: boolean | XAxisConfig | undefined): R
|
|
|
143
192
|
* `true` โ defaults, object โ merged with defaults, falsy โ null.
|
|
144
193
|
*/
|
|
145
194
|
export declare function resolveScrub(prop: boolean | ScrubConfig | undefined): ResolvedScrubConfig | null;
|
|
195
|
+
/**
|
|
196
|
+
* Resolves `scrubAction` prop to a fully-typed config or null (disabled).
|
|
197
|
+
* Opt-in: `false`/`undefined` โ null; `true` โ defaults; object โ merged.
|
|
198
|
+
*/
|
|
199
|
+
export declare function resolveScrubAction(prop: boolean | ScrubActionConfig | undefined): ResolvedScrubActionConfig | null;
|
|
146
200
|
/**
|
|
147
201
|
* Resolves `gradient` prop to a fully-typed config or null (disabled).
|
|
148
202
|
* `true` โ defaults (use palette colors), 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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"}
|
|
@@ -33,6 +33,20 @@ export interface CrosshairState {
|
|
|
33
33
|
* (inactive / no value / degenerate range). See {@link computeScrubDotY}. */
|
|
34
34
|
scrubDotY: SharedValue<number>;
|
|
35
35
|
gesture: ReturnType<typeof Gesture.Pan>;
|
|
36
|
+
/** Whether a reticle is currently placed/locked. */
|
|
37
|
+
lockActive?: SharedValue<boolean>;
|
|
38
|
+
/** Locked reticle X in canvas px (-1 when none). */
|
|
39
|
+
lockX?: SharedValue<number>;
|
|
40
|
+
/** Locked reticle Y in canvas px (-1 when none). */
|
|
41
|
+
lockY?: SharedValue<number>;
|
|
42
|
+
/** Chosen price = value at the reticle Y (optionally snapped); null when none. */
|
|
43
|
+
lockPrice?: SharedValue<number | null>;
|
|
44
|
+
/** Right-gutter action-badge layout (also the tap hit rect). */
|
|
45
|
+
actionBadge?: SharedValue<ActionBadgeLayout>;
|
|
46
|
+
/** X-axis time-badge layout at the reticle (opt-in; hidden when off). */
|
|
47
|
+
timeBadge?: SharedValue<TimeBadgeLayout>;
|
|
48
|
+
/** Tap gesture that places/moves the reticle, presses the badge, or dismisses. */
|
|
49
|
+
tapGesture?: ReturnType<typeof Gesture.Tap>;
|
|
36
50
|
}
|
|
37
51
|
/**
|
|
38
52
|
* Maps a scrub value to its Y pixel at the crosshair intersection โ the same
|
|
@@ -41,6 +55,17 @@ export interface CrosshairState {
|
|
|
41
55
|
* the dot to the vertical center of the plot.
|
|
42
56
|
*/
|
|
43
57
|
export declare function computeScrubDotY(value: number | null, displayMin: number, displayMax: number, canvasHeight: number, padTop: number, padBottom: number): number;
|
|
58
|
+
/**
|
|
59
|
+
* Inverse of {@link computeScrubDotY}: maps a canvas Y pixel back to a value (a
|
|
60
|
+
* free price *level*, used by scrub-action mode where the reticle Y is the chosen
|
|
61
|
+
* price, not the line value at the reticle X). Returns null when the canvas isn't
|
|
62
|
+
* laid out. A degenerate (zero) range collapses to the single value; a Y dragged
|
|
63
|
+
* past the plot edges clamps to `displayMin` / `displayMax` rather than
|
|
64
|
+
* extrapolating to a nonsensical price.
|
|
65
|
+
*/
|
|
66
|
+
export declare function computeValueAtY(y: number, displayMin: number, displayMax: number, canvasHeight: number, padTop: number, padBottom: number): number | null;
|
|
67
|
+
/** Rounds `price` to the nearest `increment` (no-op when increment is falsy/โค0). */
|
|
68
|
+
export declare function snapPrice(price: number, increment?: number): number;
|
|
44
69
|
/**
|
|
45
70
|
* Maps a scrub X position to a window timestamp.
|
|
46
71
|
* Returns -1 when inactive or when the canvas is not yet laid out.
|
|
@@ -85,6 +110,91 @@ export declare function deriveScrubValueSingle(scrubActive: boolean, scrubTime:
|
|
|
85
110
|
time: number;
|
|
86
111
|
value: number;
|
|
87
112
|
}[]): number | null;
|
|
113
|
+
/**
|
|
114
|
+
* Right-gutter action-badge layout for scrub-action mode โ two pills, vertically
|
|
115
|
+
* centered on the locked reticle Y and anchored to the canvas right edge:
|
|
116
|
+
*
|
|
117
|
+
* - a **circular** icon button (the action), and
|
|
118
|
+
* - a capsule **price pill** showing the formatted value,
|
|
119
|
+
*
|
|
120
|
+
* separated by {@link ACTION_BADGE_GAP}px (`[icon] [price]`). The price pill is
|
|
121
|
+
* right-anchored in the gutter with its text horizontally centered; a lone icon
|
|
122
|
+
* (icon-only) anchors to the plot's right edge, attached to the level line.
|
|
123
|
+
* Either element is omitted when its content is empty (icon-only, or no price).
|
|
124
|
+
* The union rect (`x/y/w/h`) is the single source of truth for the tap hit-test
|
|
125
|
+
* (see {@link pointInRect}). When not locked / not laid out / both empty, returns
|
|
126
|
+
* {@link HIDDEN_ACTION_BADGE}.
|
|
127
|
+
*
|
|
128
|
+
* The price text is sized to its actual visual bounds via `font.measureText`
|
|
129
|
+
* (run only while a reticle is shown) so the readout stays exactly centered โ
|
|
130
|
+
* see the inline note on `priceTextX` below.
|
|
131
|
+
*/
|
|
132
|
+
export interface ActionBadgeLayout {
|
|
133
|
+
/** Union hit rect (icon button + price pill). */
|
|
134
|
+
x: number;
|
|
135
|
+
y: number;
|
|
136
|
+
w: number;
|
|
137
|
+
h: number;
|
|
138
|
+
/** Whether the circular icon button is shown. */
|
|
139
|
+
hasIcon: boolean;
|
|
140
|
+
/** Icon button circle center + radius (the glyph is centered on this by the overlay). */
|
|
141
|
+
iconCx: number;
|
|
142
|
+
iconCy: number;
|
|
143
|
+
iconR: number;
|
|
144
|
+
/** Whether the price pill is shown. */
|
|
145
|
+
hasPrice: boolean;
|
|
146
|
+
/** Price pill rect. */
|
|
147
|
+
priceX: number;
|
|
148
|
+
priceY: number;
|
|
149
|
+
priceW: number;
|
|
150
|
+
priceH: number;
|
|
151
|
+
/** Price text left x. */
|
|
152
|
+
priceTextX: number;
|
|
153
|
+
/** Shared baseline y for the icon glyph + price text. */
|
|
154
|
+
textY: number;
|
|
155
|
+
/** Formatted price string drawn in the price pill. */
|
|
156
|
+
priceText: string;
|
|
157
|
+
/** Whether the badge is shown (locked + laid out + has content). */
|
|
158
|
+
visible: boolean;
|
|
159
|
+
}
|
|
160
|
+
export declare const HIDDEN_ACTION_BADGE: ActionBadgeLayout;
|
|
161
|
+
export declare function computeActionBadgeLayout(locked: boolean, lockY: number, priceText: string, icon: string, canvasWidth: number,
|
|
162
|
+
/** Plot's right edge (= canvasWidth - padding.right) โ where the level line ends. */
|
|
163
|
+
plotRight: number, font: SkFont, marginEdge: number, padX: number, padY: number): ActionBadgeLayout;
|
|
164
|
+
/**
|
|
165
|
+
* X-axis time-badge layout for scrub-action mode โ a small capsule pinned where
|
|
166
|
+
* the reticle's vertical line meets the time axis (the bottom gutter), centered
|
|
167
|
+
* on the reticle X and clamped to stay within the canvas. Display-only (no
|
|
168
|
+
* hit-test): an opt-in readout of the date/time under the reticle, formatted by
|
|
169
|
+
* the chart's `formatTime`. Hidden when not locked / not laid out / empty text.
|
|
170
|
+
*/
|
|
171
|
+
export interface TimeBadgeLayout {
|
|
172
|
+
/** Pill rect. */
|
|
173
|
+
x: number;
|
|
174
|
+
y: number;
|
|
175
|
+
w: number;
|
|
176
|
+
h: number;
|
|
177
|
+
/** Time text left x (visual-bounds centered) + shared baseline y. */
|
|
178
|
+
textX: number;
|
|
179
|
+
textY: number;
|
|
180
|
+
/** Formatted time string drawn in the pill. */
|
|
181
|
+
timeText: string;
|
|
182
|
+
/** Whether the badge is shown (locked + laid out + has text). */
|
|
183
|
+
visible: boolean;
|
|
184
|
+
}
|
|
185
|
+
export declare const HIDDEN_TIME_BADGE: TimeBadgeLayout;
|
|
186
|
+
export declare function computeTimeBadgeLayout(locked: boolean, lockX: number, timeText: string, canvasWidth: number,
|
|
187
|
+
/** Baseline y where the x-axis time labels sit (= canvasHeight - padding.bottom
|
|
188
|
+
* + X_AXIS_LABEL_OFFSET_Y). The pill is vertically centered on this row so it
|
|
189
|
+
* aligns with the axis values it overlays. */
|
|
190
|
+
labelBaselineY: number, font: SkFont, padX: number, padY: number, marginEdge: number): TimeBadgeLayout;
|
|
191
|
+
/** Axis-aligned point-in-rect test with an optional touch-target inflation. */
|
|
192
|
+
export declare function pointInRect(px: number, py: number, rect: {
|
|
193
|
+
x: number;
|
|
194
|
+
y: number;
|
|
195
|
+
w: number;
|
|
196
|
+
h: number;
|
|
197
|
+
}, slop?: number): boolean;
|
|
88
198
|
/** Single-series crosshair tooltip โ extracted for tests. */
|
|
89
199
|
export declare function deriveCrosshairTooltipSingle(scrubActive: boolean, scrubX: number, scrubTime: number, scrubValue: number | null, padding: ChartPadding, canvasWidth: number, formatValue: (v: number) => string, formatTime: (t: number) => string, font: SkFont, monoCharWidth?: number): TooltipLayout;
|
|
90
200
|
//# sourceMappingURL=crosshairShared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crosshairShared.d.ts","sourceRoot":"","sources":["../../src/hooks/crosshairShared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAWjD,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,OAAO,CAAC;KACd,EAAE,CAAC;CACL;AAED,eAAO,MAAM,cAAc,EAAE,aAY5B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvC,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IAC1C;kFAC8E;IAC9E,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"crosshairShared.d.ts","sourceRoot":"","sources":["../../src/hooks/crosshairShared.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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type SkFont } from "@shopify/react-native-skia";
|
|
2
2
|
import { type SharedValue } from "react-native-reanimated";
|
|
3
|
+
import type { ResolvedScrubActionConfig } from "../core/resolveConfig";
|
|
3
4
|
import type { SingleEngineState } from "../core/useLiveChartEngine";
|
|
4
5
|
import { type ChartPadding } from "../draw/line";
|
|
5
|
-
import type { CandlePoint, LiveChartPalette, ScrubPoint } from "../types";
|
|
6
|
+
import type { BadgeMetrics, CandlePoint, LiveChartPalette, ScrubActionPoint, ScrubPoint } from "../types";
|
|
6
7
|
import { type CrosshairState } from "./crosshairShared";
|
|
7
8
|
export type { CrosshairState, TooltipLayout } from "./crosshairShared";
|
|
8
9
|
export type { ScrubPoint };
|
|
@@ -18,5 +19,16 @@ export interface CrosshairCandleOpts {
|
|
|
18
19
|
*/
|
|
19
20
|
export declare function useCrosshair(engine: SingleEngineState, padding: ChartPadding, _palette: LiveChartPalette, formatValue: (v: number) => string, formatTime: (t: number) => string, font: SkFont, enabled: boolean, onScrub?: (point: ScrubPoint | null) => void, candleOpts?: CrosshairCandleOpts,
|
|
20
21
|
/** Press-and-hold delay (ms) before scrubbing activates. 0 = immediate. */
|
|
21
|
-
panGestureDelay?: number, onGestureStart?: () => void, onGestureEnd?: () => void
|
|
22
|
+
panGestureDelay?: number, onGestureStart?: () => void, onGestureEnd?: () => void,
|
|
23
|
+
/** Scrub-action ("order ticket") config; `null`/omitted disables lock mode. */
|
|
24
|
+
scrubAction?: ResolvedScrubActionConfig | null, onScrubAction?: (point: ScrubActionPoint) => void,
|
|
25
|
+
/** Badge geometry (gutter margins / pad) for the action pill. */
|
|
26
|
+
badgeMetrics?: BadgeMetrics,
|
|
27
|
+
/**
|
|
28
|
+
* Worklet predicate: true when a tap at (x, y) lands on another interactive
|
|
29
|
+
* overlay (a marker, or a pressable reference-line badge). The scrub-action tap
|
|
30
|
+
* defers to it (no reticle placed) so that overlay's tap handler can act.
|
|
31
|
+
* Omitted when nothing coexists.
|
|
32
|
+
*/
|
|
33
|
+
deferTapHit?: (x: number, y: number) => boolean): CrosshairState;
|
|
22
34
|
//# sourceMappingURL=useCrosshair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCrosshair.d.ts","sourceRoot":"","sources":["../../src/hooks/useCrosshair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"useCrosshair.d.ts","sourceRoot":"","sources":["../../src/hooks/useCrosshair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAaL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AA4C3B,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,CAAC;AAEzB,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE7B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAClC,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,EAC5C,UAAU,CAAC,EAAE,mBAAmB;AAChC,2EAA2E;AAC3E,eAAe,SAAI,EACnB,cAAc,CAAC,EAAE,MAAM,IAAI,EAC3B,YAAY,CAAC,EAAE,MAAM,IAAI;AACzB,+EAA+E;AAC/E,WAAW,CAAC,EAAE,yBAAyB,GAAG,IAAI,EAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI;AACjD,iEAAiE;AACjE,YAAY,GAAE,YAAqC;AACnD;;;;;GAKG;AACH,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,GAC9C,cAAc,CAwfhB"}
|
|
@@ -13,5 +13,7 @@ export declare function useMarkers(engine: ChartEngineLayout, padding: ChartPadd
|
|
|
13
13
|
autostart?: boolean): {
|
|
14
14
|
projected: SharedValue<ProjectedMarker[]>;
|
|
15
15
|
tapGesture: ReturnType<typeof Gesture.Tap>;
|
|
16
|
+
/** Worklet hit-test: true when (x, y) lands on a projected marker. */
|
|
17
|
+
hitTest: (x: number, y: number) => boolean;
|
|
16
18
|
};
|
|
17
19
|
//# sourceMappingURL=useMarkers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMarkers.d.ts","sourceRoot":"","sources":["../../src/hooks/useMarkers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EACV,cAAc,EACd,MAAM,EACN,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAC9B,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,EACxD,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,EACtC,QAAQ,CAAC,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;AACxC,6EAA6E;AAC7E,SAAS,UAAO,GACf;
|
|
1
|
+
{"version":3,"file":"useMarkers.d.ts","sourceRoot":"","sources":["../../src/hooks/useMarkers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EACV,cAAc,EACd,MAAM,EACN,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAC9B,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,EACxD,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,EACtC,QAAQ,CAAC,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;AACxC,6EAA6E;AAC7E,SAAS,UAAO,GACf;IACD,SAAS,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1C,UAAU,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,sEAAsE;IACtE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C,CA0EA"}
|
|
@@ -14,19 +14,52 @@ export interface ReferenceLineLayout {
|
|
|
14
14
|
x1: number;
|
|
15
15
|
/** Right x extent. */
|
|
16
16
|
x2: number;
|
|
17
|
-
/** Resolved label text (with appended value when `showValue`). */
|
|
17
|
+
/** Resolved label text (with appended value when `showValue`); "" when hidden. */
|
|
18
18
|
label: string;
|
|
19
19
|
labelX: number;
|
|
20
20
|
labelY: number;
|
|
21
|
-
/** True when a Form-A
|
|
21
|
+
/** True when a Form-A value is off-screen (badge pinned to the edge + chevron). */
|
|
22
22
|
offAxis: boolean;
|
|
23
23
|
/** Off-axis chevron points up (target above range) vs down (below). */
|
|
24
24
|
chevronUp: boolean;
|
|
25
|
+
/** True when the value renders as a pill badge (icon / text / chevron tag). */
|
|
26
|
+
badge: boolean;
|
|
27
|
+
/** Badge pill rect left x. */
|
|
28
|
+
pillX: number;
|
|
29
|
+
/** Badge pill rect width. */
|
|
30
|
+
pillW: number;
|
|
31
|
+
/** Badge icon glyph x (-1 when no icon). */
|
|
32
|
+
iconX: number;
|
|
33
|
+
/** Badge icon glyph (""/none). */
|
|
34
|
+
icon: string;
|
|
35
|
+
/** Off-axis chevron center x (-1 when no chevron). */
|
|
36
|
+
chevronCx: number;
|
|
37
|
+
/** Connector dashed-line start x (-1 when no connector). */
|
|
38
|
+
connStart: number;
|
|
39
|
+
/** Connector dashed-line end x. */
|
|
40
|
+
connEnd: number;
|
|
25
41
|
}
|
|
42
|
+
/** Axis-aligned screen rect of a reference-line badge pill (the press hit-target). */
|
|
43
|
+
export interface ReferenceBadgeRect {
|
|
44
|
+
x: number;
|
|
45
|
+
y: number;
|
|
46
|
+
w: number;
|
|
47
|
+
h: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Screen-space pill rect for a Form-A reference line's **badge**, or `null` when
|
|
51
|
+
* the line has no pressable badge (no `badge`/`offAxisBadge`, not a value line, a
|
|
52
|
+
* legacy off-axis badge while in range, or the canvas isn't laid out / range is
|
|
53
|
+
* degenerate). Shares `badgeGeometry` + the edge classification with
|
|
54
|
+
* {@link useReferenceLine}, so the hit-target tracks the rendered pill exactly.
|
|
55
|
+
* Pure worklet โ used by {@link useReferenceLinePress} for tap hit-testing.
|
|
56
|
+
*/
|
|
57
|
+
export declare function computeReferenceBadgeRect(line: ReferenceLine, canvasWidth: number, canvasHeight: number, padding: ChartPadding, dMin: number, dMax: number, font: SkFont, formatValue: (value: number) => string): ReferenceBadgeRect | null;
|
|
26
58
|
/**
|
|
27
59
|
* Derives screen-space layout for a single reference line or band. Supports all
|
|
28
60
|
* three `ReferenceLine` forms (horizontal line, horizontal value band, vertical
|
|
29
|
-
* time band) plus the
|
|
61
|
+
* time band) plus the pill badge for a Form-A value (in-range tag + off-screen
|
|
62
|
+
* chevron pin).
|
|
30
63
|
*/
|
|
31
64
|
export declare function useReferenceLine(engine: ChartEngineLayout, padding: ChartPadding, line: ReferenceLine | undefined, formatValue: (v: number) => string, font: SkFont): SharedValue<ReferenceLineLayout>;
|
|
32
65
|
//# sourceMappingURL=useReferenceLine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReferenceLine.d.ts","sourceRoot":"","sources":["../../src/hooks/useReferenceLine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"useReferenceLine.d.ts","sourceRoot":"","sources":["../../src/hooks/useReferenceLine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAOjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,OAAO,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,KAAK,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AA8ID,sFAAsF;AACtF,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACrC,kBAAkB,GAAG,IAAI,CAwC3B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,aAAa,GAAG,SAAS,EAC/B,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAClC,IAAI,EAAE,MAAM,GACX,WAAW,CAAC,mBAAmB,CAAC,CA2LlC"}
|