@abdullahjaswal/tickyr-charts-solid 0.1.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/LICENSE +14 -0
- package/README.md +43 -0
- package/dist/animation/animator.d.ts +52 -0
- package/dist/animation/bar-entry.d.ts +44 -0
- package/dist/animation/bar-update.d.ts +38 -0
- package/dist/animation/easings.d.ts +22 -0
- package/dist/animation/index.d.ts +4 -0
- package/dist/charts/bar-chart-controller.d.ts +98 -0
- package/dist/charts/bar-chart-helpers.d.ts +334 -0
- package/dist/charts/candle-chart-controller.d.ts +353 -0
- package/dist/charts/candle-chart-helpers.d.ts +781 -0
- package/dist/charts/depth-chart-controller.d.ts +84 -0
- package/dist/charts/depth-chart-helpers.d.ts +185 -0
- package/dist/charts/depth-series.d.ts +41 -0
- package/dist/charts/heatmap-chart-controller.d.ts +78 -0
- package/dist/charts/heatmap-chart-helpers.d.ts +174 -0
- package/dist/charts/heatmap-color-compute.d.ts +11 -0
- package/dist/charts/hierarchy.d.ts +49 -0
- package/dist/charts/histogram-binning.d.ts +33 -0
- package/dist/charts/histogram-chart-controller.d.ts +82 -0
- package/dist/charts/histogram-chart-helpers.d.ts +199 -0
- package/dist/charts/kagi-chart-controller.d.ts +154 -0
- package/dist/charts/line-chart-controller.d.ts +209 -0
- package/dist/charts/line-chart-helpers.d.ts +606 -0
- package/dist/charts/mark-buffers.d.ts +105 -0
- package/dist/charts/pie-chart-controller.d.ts +83 -0
- package/dist/charts/pie-chart-helpers.d.ts +155 -0
- package/dist/charts/pie-slice-compute.d.ts +44 -0
- package/dist/charts/pnf-chart-controller.d.ts +153 -0
- package/dist/charts/renko-chart-controller.d.ts +151 -0
- package/dist/charts/sankey-chart-controller.d.ts +176 -0
- package/dist/charts/sankey-layout.d.ts +64 -0
- package/dist/charts/scatter-chart-controller.d.ts +90 -0
- package/dist/charts/scatter-chart-helpers.d.ts +257 -0
- package/dist/charts/scatter-density.d.ts +5 -0
- package/dist/charts/scatter-regression.d.ts +27 -0
- package/dist/charts/sunburst-chart-controller.d.ts +107 -0
- package/dist/charts/sunburst-chart-helpers.d.ts +143 -0
- package/dist/charts/sunburst-layout.d.ts +40 -0
- package/dist/charts/time-off-algorithms.d.ts +53 -0
- package/dist/charts/treemap-chart-controller.d.ts +103 -0
- package/dist/charts/treemap-chart-helpers.d.ts +163 -0
- package/dist/charts/treemap-layout.d.ts +29 -0
- package/dist/charts/types.d.ts +38 -0
- package/dist/clock/clock.d.ts +10 -0
- package/dist/composition/chart-group-state.d.ts +46 -0
- package/dist/composition/index.d.ts +1 -0
- package/dist/composition/pane.d.ts +33 -0
- package/dist/domain/concat.d.ts +18 -0
- package/dist/domain/drawings.d.ts +44 -0
- package/dist/domain/heikin-ashi.d.ts +9 -0
- package/dist/domain/index.d.ts +7 -0
- package/dist/domain/ingestion.d.ts +7 -0
- package/dist/domain/live-state.d.ts +12 -0
- package/dist/domain/markers.d.ts +38 -0
- package/dist/domain/series.d.ts +22 -0
- package/dist/domain/values.d.ts +32 -0
- package/dist/engine/aggregation.d.ts +15 -0
- package/dist/engine/downsampling.d.ts +3 -0
- package/dist/engine/events.d.ts +14 -0
- package/dist/engine/index.d.ts +13 -0
- package/dist/engine/indicators.d.ts +37 -0
- package/dist/engine/markets.d.ts +8 -0
- package/dist/engine/module.d.ts +8 -0
- package/dist/engine/quadtree.d.ts +18 -0
- package/dist/engine/session.d.ts +11 -0
- package/dist/engine/signals.d.ts +52 -0
- package/dist/engine/streaming.d.ts +20 -0
- package/dist/engine/time-axis.d.ts +16 -0
- package/dist/engine/version.d.ts +16 -0
- package/dist/engine/views.d.ts +3 -0
- package/dist/index.js +17026 -0
- package/dist/interaction/keyboard.d.ts +16 -0
- package/dist/interaction/touch.d.ts +27 -0
- package/dist/perf/adaptive-complexity.d.ts +45 -0
- package/dist/perf/memory-pressure.d.ts +16 -0
- package/dist/perf/offscreen-canvas-host.d.ts +32 -0
- package/dist/perf/offscreen-canvas.d.ts +50 -0
- package/dist/perf/offscreen-canvas.worker.d.ts +1 -0
- package/dist/perf/shared-array-buffer.d.ts +10 -0
- package/dist/perf/visibility.d.ts +39 -0
- package/dist/perf/webgl-renderer.d.ts +24 -0
- package/dist/perf/wire-memory-pressure.d.ts +2 -0
- package/dist/personalization/accessibility.d.ts +16 -0
- package/dist/personalization/axes/animation.d.ts +33 -0
- package/dist/personalization/axes/area-baseline.d.ts +8 -0
- package/dist/personalization/axes/axis-labels.d.ts +3 -0
- package/dist/personalization/axes/bin-algorithm.d.ts +3 -0
- package/dist/personalization/axes/box-sizing.d.ts +22 -0
- package/dist/personalization/axes/cell-shape.d.ts +3 -0
- package/dist/personalization/axes/curve-type.d.ts +11 -0
- package/dist/personalization/axes/density.d.ts +4 -0
- package/dist/personalization/axes/depth-fill-type.d.ts +3 -0
- package/dist/personalization/axes/depth-limit.d.ts +2 -0
- package/dist/personalization/axes/glow.d.ts +21 -0
- package/dist/personalization/axes/heatmap-color-scale.d.ts +31 -0
- package/dist/personalization/axes/histogram-overlay.d.ts +18 -0
- package/dist/personalization/axes/indicator-pane-spec.d.ts +85 -0
- package/dist/personalization/axes/label-behavior.d.ts +3 -0
- package/dist/personalization/axes/label-content.d.ts +17 -0
- package/dist/personalization/axes/label-placement.d.ts +3 -0
- package/dist/personalization/axes/label-rotation.d.ts +3 -0
- package/dist/personalization/axes/level-highlight.d.ts +14 -0
- package/dist/personalization/axes/line-dash.d.ts +2 -0
- package/dist/personalization/axes/mid-line.d.ts +14 -0
- package/dist/personalization/axes/node-alignment.d.ts +3 -0
- package/dist/personalization/axes/null-behavior.d.ts +3 -0
- package/dist/personalization/axes/number-format.d.ts +18 -0
- package/dist/personalization/axes/pan-zoom.d.ts +42 -0
- package/dist/personalization/axes/pattern.d.ts +26 -0
- package/dist/personalization/axes/point-markers.d.ts +55 -0
- package/dist/personalization/axes/point-opacity.d.ts +6 -0
- package/dist/personalization/axes/point-size.d.ts +23 -0
- package/dist/personalization/axes/price-range.d.ts +9 -0
- package/dist/personalization/axes/radius-proportion.d.ts +3 -0
- package/dist/personalization/axes/regression-line.d.ts +36 -0
- package/dist/personalization/axes/sankey-link-color.d.ts +10 -0
- package/dist/personalization/axes/sankey-value-display.d.ts +4 -0
- package/dist/personalization/axes/small-slice-threshold.d.ts +15 -0
- package/dist/personalization/axes/sort-order.d.ts +3 -0
- package/dist/personalization/axes/spread-display.d.ts +4 -0
- package/dist/personalization/axes/stacking.d.ts +17 -0
- package/dist/personalization/axes/tile-layout.d.ts +3 -0
- package/dist/personalization/axes/time-off-axes.d.ts +19 -0
- package/dist/personalization/axes/treemap-color-scale.d.ts +3 -0
- package/dist/personalization/axes/value-labels.d.ts +21 -0
- package/dist/personalization/axes/view-mode.d.ts +3 -0
- package/dist/personalization/axes/volume-coloring.d.ts +24 -0
- package/dist/personalization/axes/y-axis-mode.d.ts +3 -0
- package/dist/personalization/index.d.ts +38 -0
- package/dist/personalization/locale/formatter.d.ts +45 -0
- package/dist/personalization/locale/resolver.d.ts +22 -0
- package/dist/personalization/palette/built-ins.d.ts +10 -0
- package/dist/personalization/palette/derive.d.ts +35 -0
- package/dist/personalization/palette/index.d.ts +6 -0
- package/dist/personalization/palette/oklch.d.ts +19 -0
- package/dist/personalization/palette/registry.d.ts +7 -0
- package/dist/personalization/palette/tonal-symmetry.d.ts +32 -0
- package/dist/personalization/palette/types.d.ts +63 -0
- package/dist/personalization/personalization.d.ts +137 -0
- package/dist/personalization/tooltip-props.d.ts +40 -0
- package/dist/rendering/canvas.d.ts +6 -0
- package/dist/rendering/color-tables.d.ts +52 -0
- package/dist/rendering/dirty-rect-tracker.d.ts +49 -0
- package/dist/rendering/dirty-rect.d.ts +17 -0
- package/dist/rendering/draw/area-fill-threshold.d.ts +19 -0
- package/dist/rendering/draw/area-fill.d.ts +47 -0
- package/dist/rendering/draw/area-gradient.d.ts +35 -0
- package/dist/rendering/draw/axis.d.ts +65 -0
- package/dist/rendering/draw/bar.d.ts +31 -0
- package/dist/rendering/draw/candle-live-treatment.d.ts +43 -0
- package/dist/rendering/draw/candle.d.ts +101 -0
- package/dist/rendering/draw/connection-indicator.d.ts +30 -0
- package/dist/rendering/draw/crosshair.d.ts +27 -0
- package/dist/rendering/draw/drawings.d.ts +64 -0
- package/dist/rendering/draw/grid.d.ts +20 -0
- package/dist/rendering/draw/indicator-band.d.ts +17 -0
- package/dist/rendering/draw/indicator-line.d.ts +15 -0
- package/dist/rendering/draw/last-price.d.ts +36 -0
- package/dist/rendering/draw/line.d.ts +16 -0
- package/dist/rendering/draw/live-bar.d.ts +31 -0
- package/dist/rendering/draw/markers.d.ts +53 -0
- package/dist/rendering/draw/pane-divider.d.ts +22 -0
- package/dist/rendering/draw/point-markers.d.ts +23 -0
- package/dist/rendering/glow/glow.d.ts +40 -0
- package/dist/rendering/index.d.ts +9 -0
- package/dist/rendering/layers/should-split.d.ts +12 -0
- package/dist/rendering/patterns/cross-hatch.d.ts +4 -0
- package/dist/rendering/patterns/pattern-tiles.d.ts +25 -0
- package/dist/rendering/pipeline.d.ts +21 -0
- package/dist/rendering/stacked-layout.d.ts +23 -0
- package/dist/rendering/standardization-tokens.d.ts +26 -0
- package/dist/rendering/static-layer-cache.d.ts +34 -0
- package/dist/rendering/threshold-split.d.ts +14 -0
- package/dist/shared/binary-search.d.ts +2 -0
- package/dist/shared/typed.d.ts +8 -0
- package/dist/solid/chart-group.d.ts +16 -0
- package/dist/solid/charts-provider.d.ts +38 -0
- package/dist/solid/components/area-chart.d.ts +21 -0
- package/dist/solid/components/bar-chart.d.ts +84 -0
- package/dist/solid/components/candle-chart.d.ts +142 -0
- package/dist/solid/components/chart-group-brush.d.ts +13 -0
- package/dist/solid/components/chart-group-navigator.d.ts +12 -0
- package/dist/solid/components/depth-chart.d.ts +8 -0
- package/dist/solid/components/heatmap-chart.d.ts +8 -0
- package/dist/solid/components/histogram-chart.d.ts +8 -0
- package/dist/solid/components/kagi-chart.d.ts +8 -0
- package/dist/solid/components/line-chart.d.ts +110 -0
- package/dist/solid/components/pie-chart.d.ts +20 -0
- package/dist/solid/components/point-figure-chart.d.ts +8 -0
- package/dist/solid/components/renko-chart.d.ts +8 -0
- package/dist/solid/components/sankey-chart.d.ts +8 -0
- package/dist/solid/components/scatter-chart.d.ts +8 -0
- package/dist/solid/components/sunburst-chart.d.ts +8 -0
- package/dist/solid/components/treemap-chart.d.ts +8 -0
- package/dist/solid/hooks/use-chart-theme.d.ts +2 -0
- package/dist/solid/hooks/use-streaming-candles.d.ts +33 -0
- package/dist/solid/index.d.ts +73 -0
- package/dist/solid/tooltips/default-candle-tooltip.d.ts +4 -0
- package/dist/solid/tooltips/default-extreme-tooltip.d.ts +6 -0
- package/dist/solid/tooltips/default-tooltip.d.ts +4 -0
- package/dist/solid/tooltips/default-volume-bar-tooltip.d.ts +4 -0
- package/dist/solid/tooltips/index.d.ts +4 -0
- package/dist/tickyr_charts_wasm-C-sFYtmv.js +828 -0
- package/dist/viewport/category-axis.d.ts +32 -0
- package/dist/viewport/clip-ticks.d.ts +8 -0
- package/dist/viewport/index.d.ts +6 -0
- package/dist/viewport/nice-ticks.d.ts +9 -0
- package/dist/viewport/nice-time-ticks.d.ts +7 -0
- package/dist/viewport/orientation.d.ts +56 -0
- package/dist/viewport/padded-domain.d.ts +16 -0
- package/dist/viewport/scales/linear.d.ts +9 -0
- package/dist/viewport/scales/log.d.ts +9 -0
- package/dist/viewport/scales/time.d.ts +7 -0
- package/dist/viewport/viewport-sizer.d.ts +15 -0
- package/dist/viewport/visible-window.d.ts +5 -0
- package/package.json +41 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, VisualStyle, Theme, BinAlgorithm, YAxisMode, ResolvedHistogramOverlay, ChartFormatter } from '../personalization';
|
|
2
|
+
import { HoverState, HistogramChartBaseProps, HistogramChartTooltipProps, HistogramSeries } from './histogram-chart-helpers';
|
|
3
|
+
export interface HistogramChartProviderSnapshot {
|
|
4
|
+
theme: ThemeInput;
|
|
5
|
+
palette: string;
|
|
6
|
+
locale: string;
|
|
7
|
+
timeZone: string | undefined;
|
|
8
|
+
visualStyle: VisualStyle;
|
|
9
|
+
outlineFillColor: "auto" | string;
|
|
10
|
+
outlineFillOpacity: number;
|
|
11
|
+
cornerRadius: number;
|
|
12
|
+
borderWidth: number;
|
|
13
|
+
accents: boolean;
|
|
14
|
+
osTheme: Theme;
|
|
15
|
+
appTheme: Theme;
|
|
16
|
+
}
|
|
17
|
+
export interface HistogramChartRenderContext {
|
|
18
|
+
personalization: Personalization;
|
|
19
|
+
formatter: ChartFormatter;
|
|
20
|
+
resolvedLocaleBase: string;
|
|
21
|
+
resolvedTimeZone: string | undefined;
|
|
22
|
+
series: HistogramSeries;
|
|
23
|
+
binCount: number;
|
|
24
|
+
yAxisMode: YAxisMode;
|
|
25
|
+
binAlgorithm: BinAlgorithm;
|
|
26
|
+
resolvedOverlay: ResolvedHistogramOverlay | null;
|
|
27
|
+
ariaLabel: string;
|
|
28
|
+
isSparkline: boolean;
|
|
29
|
+
cssWidth: number;
|
|
30
|
+
cssHeight: number;
|
|
31
|
+
}
|
|
32
|
+
export interface HistogramChartControllerCallbacks {
|
|
33
|
+
onContextChange(ctx: HistogramChartRenderContext): void;
|
|
34
|
+
onHoverChange(hover: HoverState | null): void;
|
|
35
|
+
}
|
|
36
|
+
export interface HistogramChartControllerProps extends HistogramChartBaseProps {
|
|
37
|
+
tooltip?: undefined | false | ((p: HistogramChartTooltipProps) => unknown);
|
|
38
|
+
}
|
|
39
|
+
export interface HistogramChartControllerMountOptions extends HistogramChartControllerCallbacks {
|
|
40
|
+
container?: HTMLElement | null;
|
|
41
|
+
staticCanvas: HTMLCanvasElement;
|
|
42
|
+
dynamicCanvas: HTMLCanvasElement | null;
|
|
43
|
+
initialProps: HistogramChartControllerProps;
|
|
44
|
+
initialProvider: HistogramChartProviderSnapshot;
|
|
45
|
+
}
|
|
46
|
+
export declare class HistogramChartController {
|
|
47
|
+
private staticCanvas;
|
|
48
|
+
private dynamicCanvas;
|
|
49
|
+
private callbacks;
|
|
50
|
+
private props;
|
|
51
|
+
private providerCtx;
|
|
52
|
+
private handle;
|
|
53
|
+
private hoverState;
|
|
54
|
+
private dynCfg;
|
|
55
|
+
private series;
|
|
56
|
+
private personalization;
|
|
57
|
+
private resolvedLocale;
|
|
58
|
+
private formatter;
|
|
59
|
+
private binAlgorithm;
|
|
60
|
+
private yAxisMode;
|
|
61
|
+
private resolvedOverlay;
|
|
62
|
+
private isSparkline;
|
|
63
|
+
private edges;
|
|
64
|
+
private counts;
|
|
65
|
+
private yValues;
|
|
66
|
+
private binCount;
|
|
67
|
+
private totalCount;
|
|
68
|
+
private normalMean;
|
|
69
|
+
private normalStd;
|
|
70
|
+
private staticDrawAbort;
|
|
71
|
+
private disposed;
|
|
72
|
+
private visGate;
|
|
73
|
+
constructor(opts: HistogramChartControllerMountOptions);
|
|
74
|
+
update(props: HistogramChartControllerProps, providerCtx: HistogramChartProviderSnapshot): void;
|
|
75
|
+
handlePointerMove(e: PointerEvent): void;
|
|
76
|
+
handlePointerLeave(): void;
|
|
77
|
+
dispose(): void;
|
|
78
|
+
private setHover;
|
|
79
|
+
private resolveDerived;
|
|
80
|
+
private applyDynamicCfgFromProps;
|
|
81
|
+
private runStaticDraw;
|
|
82
|
+
}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, DigitGrouping, NumberAbbreviation, DecimalPlaces, CurrencyDisplay, PercentPrecision, DateFormat, TimeFormat, LegendPosition, LegendVisibility, BinAlgorithm, YAxisMode, HistogramOverlayInput, ResolvedHistogramOverlay, ChartFormatter } from '../personalization';
|
|
2
|
+
import { Viewport } from '../viewport/viewport-sizer';
|
|
3
|
+
import { LinearScale } from '../viewport/scales/linear';
|
|
4
|
+
import { NiceTick } from '../viewport/nice-ticks';
|
|
5
|
+
import { YAxisPosition, XAxisPosition } from '../rendering/draw/axis';
|
|
6
|
+
import { GridStyle } from '../rendering/draw/grid';
|
|
7
|
+
import { CrosshairMarker } from '../rendering/draw/crosshair';
|
|
8
|
+
export type HistogramSeriesInput = {
|
|
9
|
+
readonly values: Float64Array;
|
|
10
|
+
} | {
|
|
11
|
+
readonly values: readonly number[];
|
|
12
|
+
};
|
|
13
|
+
export declare class HistogramSeries {
|
|
14
|
+
#private;
|
|
15
|
+
readonly values: Float64Array;
|
|
16
|
+
readonly length: number;
|
|
17
|
+
constructor(values: Float64Array);
|
|
18
|
+
get revisionId(): number;
|
|
19
|
+
bumpRevision(): number;
|
|
20
|
+
}
|
|
21
|
+
export declare function ingestHistogramSeries(input: HistogramSeriesInput): HistogramSeries;
|
|
22
|
+
export interface HistogramChartTooltipProps {
|
|
23
|
+
/** Bin index (0-based). */
|
|
24
|
+
readonly binIdx: number;
|
|
25
|
+
/** Lower edge of the bin (data value). */
|
|
26
|
+
readonly binStart: number;
|
|
27
|
+
/** Upper edge of the bin (data value). */
|
|
28
|
+
readonly binEnd: number;
|
|
29
|
+
/** Raw count in this bin. */
|
|
30
|
+
readonly count: number;
|
|
31
|
+
/** Y-value rendered (frequency / density / cumulative). */
|
|
32
|
+
readonly value: number;
|
|
33
|
+
readonly pointerX: number;
|
|
34
|
+
readonly pointerY: number;
|
|
35
|
+
readonly containerWidth: number;
|
|
36
|
+
readonly containerHeight: number;
|
|
37
|
+
readonly theme: import('../personalization').Theme;
|
|
38
|
+
readonly palette: import('../personalization').Palette;
|
|
39
|
+
readonly locale: string;
|
|
40
|
+
readonly timeZone: string | undefined;
|
|
41
|
+
readonly formatter: ChartFormatter;
|
|
42
|
+
}
|
|
43
|
+
export interface HistogramChartBaseProps {
|
|
44
|
+
/** Distribution data - raw values that will be binned by the
|
|
45
|
+
* configured algorithm. See `HistogramSeriesInput`. */
|
|
46
|
+
data?: HistogramSeriesInput;
|
|
47
|
+
/** Default 'freedman-diaconis'. */
|
|
48
|
+
binAlgorithm?: BinAlgorithm;
|
|
49
|
+
/** Used when `binAlgorithm: 'fixed'`. */
|
|
50
|
+
binCount?: number;
|
|
51
|
+
/** `'auto'` → data min. */
|
|
52
|
+
binStart?: number | "auto";
|
|
53
|
+
/** `'auto'` → data max. */
|
|
54
|
+
binEnd?: number | "auto";
|
|
55
|
+
/** Default 'frequency'. */
|
|
56
|
+
yAxis?: YAxisMode;
|
|
57
|
+
/** Default 1.0 (touching bars). */
|
|
58
|
+
barWidthRatio?: number;
|
|
59
|
+
/** Default false. */
|
|
60
|
+
overlay?: HistogramOverlayInput;
|
|
61
|
+
legend?: LegendVisibility;
|
|
62
|
+
legendPosition?: LegendPosition;
|
|
63
|
+
crosshairVisible?: boolean;
|
|
64
|
+
crosshairLineStyle?: GridStyle;
|
|
65
|
+
crosshairMarker?: CrosshairMarker;
|
|
66
|
+
width?: number;
|
|
67
|
+
height?: number;
|
|
68
|
+
theme?: ThemeInput;
|
|
69
|
+
palette?: string;
|
|
70
|
+
visualStyle?: "Fill" | "Outline";
|
|
71
|
+
outlineFillColor?: "auto" | string;
|
|
72
|
+
outlineFillOpacity?: number;
|
|
73
|
+
pixelDensityCap?: number;
|
|
74
|
+
fastMode?: boolean;
|
|
75
|
+
/** Glow + glow-color axes. */
|
|
76
|
+
glow?: import('../personalization/axes/glow').GlowInput;
|
|
77
|
+
glowColor?: import('../personalization/axes/glow').GlowColorInput;
|
|
78
|
+
/** Pattern fills. */
|
|
79
|
+
pattern?: import('../personalization/axes/pattern').PatternInput;
|
|
80
|
+
patternScale?: number;
|
|
81
|
+
patternColor?: import('../personalization/axes/pattern').PatternColorInput;
|
|
82
|
+
sparkline?: boolean;
|
|
83
|
+
ariaLabel?: string;
|
|
84
|
+
axisVisible?: boolean;
|
|
85
|
+
yAxisPosition?: YAxisPosition;
|
|
86
|
+
xAxisPosition?: XAxisPosition;
|
|
87
|
+
yAxisPadding?: number;
|
|
88
|
+
gridVisible?: boolean;
|
|
89
|
+
gridStyle?: GridStyle;
|
|
90
|
+
gridDensity?: "sparse" | "normal" | "dense";
|
|
91
|
+
accents?: boolean;
|
|
92
|
+
locale?: string;
|
|
93
|
+
timeZone?: string;
|
|
94
|
+
cornerRadius?: number;
|
|
95
|
+
borderWidth?: number;
|
|
96
|
+
digitGrouping?: DigitGrouping;
|
|
97
|
+
numberAbbreviation?: NumberAbbreviation;
|
|
98
|
+
decimalPlaces?: DecimalPlaces;
|
|
99
|
+
currency?: string;
|
|
100
|
+
currencyDisplay?: CurrencyDisplay;
|
|
101
|
+
percentPrecision?: PercentPrecision;
|
|
102
|
+
dateFormat?: DateFormat;
|
|
103
|
+
timeFormat?: TimeFormat;
|
|
104
|
+
}
|
|
105
|
+
export declare const DEFAULT_FONT = "12px system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif";
|
|
106
|
+
export declare const DEFAULT_AXIS_FONT_SIZE = 11;
|
|
107
|
+
export declare const LABEL_GAP_PX = 6;
|
|
108
|
+
export declare const TICK_LENGTH_PX = 4;
|
|
109
|
+
export declare const Y_AXIS_RESERVE_PX = 80;
|
|
110
|
+
export declare const X_AXIS_RESERVE_PX = 28;
|
|
111
|
+
export declare const GRID_TARGET: {
|
|
112
|
+
readonly sparse: 4;
|
|
113
|
+
readonly normal: 8;
|
|
114
|
+
readonly dense: 12;
|
|
115
|
+
};
|
|
116
|
+
export declare const SPARKLINE_THRESHOLD_PX = 150;
|
|
117
|
+
export declare const DEFAULT_BAR_WIDTH_RATIO = 1;
|
|
118
|
+
export interface HoverState {
|
|
119
|
+
readonly pointerX: number;
|
|
120
|
+
readonly pointerY: number;
|
|
121
|
+
readonly snapX: number;
|
|
122
|
+
readonly snapY: number;
|
|
123
|
+
readonly binIdx: number;
|
|
124
|
+
readonly binStart: number;
|
|
125
|
+
readonly binEnd: number;
|
|
126
|
+
readonly count: number;
|
|
127
|
+
readonly value: number;
|
|
128
|
+
}
|
|
129
|
+
export interface DynamicCfg {
|
|
130
|
+
readonly crosshairVisible: boolean;
|
|
131
|
+
readonly crosshairLineStyle: GridStyle;
|
|
132
|
+
readonly crosshairMarker: CrosshairMarker;
|
|
133
|
+
}
|
|
134
|
+
export interface ChartLayout {
|
|
135
|
+
innerLeft: number;
|
|
136
|
+
innerRight: number;
|
|
137
|
+
innerTop: number;
|
|
138
|
+
innerBottom: number;
|
|
139
|
+
/** Maps a data value (numeric) to an x-pixel. */
|
|
140
|
+
xScale: LinearScale;
|
|
141
|
+
/** Maps a y-value (frequency/density/cumulative) to a y-pixel. */
|
|
142
|
+
yScale: LinearScale;
|
|
143
|
+
/** Bin edges in data-space - `length === binCount + 1`. */
|
|
144
|
+
edges: Float64Array;
|
|
145
|
+
/** Per-bin y-values (frequency/density/cumulative). */
|
|
146
|
+
yValues: Float64Array;
|
|
147
|
+
/** Raw counts (for tooltip display). */
|
|
148
|
+
counts: Uint32Array;
|
|
149
|
+
/** Numeric ticks for the y-axis. */
|
|
150
|
+
yTicks: readonly NiceTick[];
|
|
151
|
+
/** Numeric ticks for the x-axis. */
|
|
152
|
+
xTicks: readonly NiceTick[];
|
|
153
|
+
viewport: Viewport;
|
|
154
|
+
}
|
|
155
|
+
export interface ChartHandle {
|
|
156
|
+
readonly dynamicCtx: CanvasRenderingContext2D | null;
|
|
157
|
+
readonly layout: ChartLayout;
|
|
158
|
+
readonly crosshairLineColor: string;
|
|
159
|
+
readonly crosshairMarkerFill: string;
|
|
160
|
+
readonly crosshairMarkerStroke: string;
|
|
161
|
+
readonly fillColor: string;
|
|
162
|
+
}
|
|
163
|
+
export declare function computeLayout(opts: {
|
|
164
|
+
edges: Float64Array;
|
|
165
|
+
yValues: Float64Array;
|
|
166
|
+
counts: Uint32Array;
|
|
167
|
+
viewport: Viewport;
|
|
168
|
+
yAxisPosition: YAxisPosition;
|
|
169
|
+
xAxisPosition: XAxisPosition;
|
|
170
|
+
yAxisPadding: number;
|
|
171
|
+
gridDensity: "sparse" | "normal" | "dense";
|
|
172
|
+
axisVisible: boolean;
|
|
173
|
+
formatter: ChartFormatter;
|
|
174
|
+
}): ChartLayout;
|
|
175
|
+
export declare function defaultAriaLabel(series: HistogramSeries, binCount: number): string;
|
|
176
|
+
export interface DrawFullHistogramArgs {
|
|
177
|
+
ctx: CanvasRenderingContext2D;
|
|
178
|
+
personalization: Personalization;
|
|
179
|
+
accents: boolean;
|
|
180
|
+
layout: ChartLayout;
|
|
181
|
+
axisVisible: boolean;
|
|
182
|
+
gridVisible: boolean;
|
|
183
|
+
gridStyle: GridStyle;
|
|
184
|
+
yAxisPosition: YAxisPosition;
|
|
185
|
+
xAxisPosition: XAxisPosition;
|
|
186
|
+
cornerRadius: number;
|
|
187
|
+
borderWidth: number;
|
|
188
|
+
barWidthRatio: number;
|
|
189
|
+
overlay: ResolvedHistogramOverlay | null;
|
|
190
|
+
/** When overlay is 'normal' - pre-fitted distribution. */
|
|
191
|
+
normalMean: number;
|
|
192
|
+
normalStd: number;
|
|
193
|
+
/** Total count across all bins (for normal overlay scaling). */
|
|
194
|
+
totalCount: number;
|
|
195
|
+
yAxisMode: YAxisMode;
|
|
196
|
+
}
|
|
197
|
+
export declare function drawFullHistogramChart(args: DrawFullHistogramArgs): void;
|
|
198
|
+
export declare function drawHistogramDynamicLayer(handle: ChartHandle, hover: HoverState | null, cfg: DynamicCfg): void;
|
|
199
|
+
export declare function findBinAtX(edges: Float64Array, binCount: number, dataX: number): number;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, VisualStyle, Theme, BoxSizingInput, TimeOffSource, KagiThicknessRule, ChartFormatter, DigitGrouping, NumberAbbreviation, DecimalPlaces, CurrencyDisplay, PercentPrecision, DateFormat, TimeFormat } from '../personalization';
|
|
2
|
+
import { YAxisPosition, XAxisPosition } from '../rendering/draw/axis';
|
|
3
|
+
import { GridStyle } from '../rendering/draw/grid';
|
|
4
|
+
import { CrosshairMarker } from '../rendering/draw/crosshair';
|
|
5
|
+
import { CandleSeriesInput } from '../domain';
|
|
6
|
+
import { KagiLegs } from './time-off-algorithms';
|
|
7
|
+
export interface KagiChartTooltipProps {
|
|
8
|
+
readonly idx: number;
|
|
9
|
+
readonly direction: 1 | -1;
|
|
10
|
+
readonly thick: boolean;
|
|
11
|
+
readonly startPrice: number;
|
|
12
|
+
readonly endPrice: number;
|
|
13
|
+
readonly pointerX: number;
|
|
14
|
+
readonly pointerY: number;
|
|
15
|
+
readonly containerWidth: number;
|
|
16
|
+
readonly containerHeight: number;
|
|
17
|
+
readonly theme: import('../personalization').Theme;
|
|
18
|
+
readonly palette: import('../personalization').Palette;
|
|
19
|
+
readonly locale: string;
|
|
20
|
+
readonly timeZone: string | undefined;
|
|
21
|
+
readonly formatter: ChartFormatter;
|
|
22
|
+
}
|
|
23
|
+
export interface KagiChartBaseProps {
|
|
24
|
+
/** Required OHLC bars - Kagi filters out time and tracks direction
|
|
25
|
+
* flips by reversal threshold. */
|
|
26
|
+
data?: CandleSeriesInput;
|
|
27
|
+
/** Price-distance required to reverse direction. `"auto"` =
|
|
28
|
+
* ATR-derived; or a fixed value. */
|
|
29
|
+
reversalThreshold?: BoxSizingInput;
|
|
30
|
+
/** Rule for thick/thin line transitions (yang vs yin). */
|
|
31
|
+
thicknessRule?: KagiThicknessRule;
|
|
32
|
+
/** Stroke width for thick (uptrend) lines. */
|
|
33
|
+
thickLineWidth?: number;
|
|
34
|
+
/** Stroke width for thin (downtrend) lines. */
|
|
35
|
+
thinLineWidth?: number;
|
|
36
|
+
/** Source field for price comparisons. */
|
|
37
|
+
source?: TimeOffSource;
|
|
38
|
+
/** Toggle crosshair on hover. */
|
|
39
|
+
crosshairVisible?: boolean;
|
|
40
|
+
/** Crosshair line style. */
|
|
41
|
+
crosshairLineStyle?: GridStyle;
|
|
42
|
+
/** Snap-marker shape. */
|
|
43
|
+
crosshairMarker?: CrosshairMarker;
|
|
44
|
+
width?: number;
|
|
45
|
+
height?: number;
|
|
46
|
+
theme?: ThemeInput;
|
|
47
|
+
palette?: string;
|
|
48
|
+
visualStyle?: "Fill" | "Outline";
|
|
49
|
+
outlineFillColor?: "auto" | string;
|
|
50
|
+
outlineFillOpacity?: number;
|
|
51
|
+
pixelDensityCap?: number;
|
|
52
|
+
fastMode?: boolean;
|
|
53
|
+
/** Glow + glow-color axes. */
|
|
54
|
+
glow?: import('../personalization/axes/glow').GlowInput;
|
|
55
|
+
glowColor?: import('../personalization/axes/glow').GlowColorInput;
|
|
56
|
+
/** Pattern fills. */
|
|
57
|
+
pattern?: import('../personalization/axes/pattern').PatternInput;
|
|
58
|
+
patternScale?: number;
|
|
59
|
+
patternColor?: import('../personalization/axes/pattern').PatternColorInput;
|
|
60
|
+
ariaLabel?: string;
|
|
61
|
+
axisVisible?: boolean;
|
|
62
|
+
yAxisPosition?: YAxisPosition;
|
|
63
|
+
xAxisPosition?: XAxisPosition;
|
|
64
|
+
yAxisPadding?: number;
|
|
65
|
+
gridVisible?: boolean;
|
|
66
|
+
gridStyle?: GridStyle;
|
|
67
|
+
gridDensity?: "sparse" | "normal" | "dense";
|
|
68
|
+
accents?: boolean;
|
|
69
|
+
locale?: string;
|
|
70
|
+
timeZone?: string;
|
|
71
|
+
digitGrouping?: DigitGrouping;
|
|
72
|
+
numberAbbreviation?: NumberAbbreviation;
|
|
73
|
+
decimalPlaces?: DecimalPlaces;
|
|
74
|
+
currency?: string;
|
|
75
|
+
currencyDisplay?: CurrencyDisplay;
|
|
76
|
+
percentPrecision?: PercentPrecision;
|
|
77
|
+
dateFormat?: DateFormat;
|
|
78
|
+
timeFormat?: TimeFormat;
|
|
79
|
+
}
|
|
80
|
+
export interface KagiChartProviderSnapshot {
|
|
81
|
+
theme: ThemeInput;
|
|
82
|
+
palette: string;
|
|
83
|
+
locale: string;
|
|
84
|
+
timeZone: string | undefined;
|
|
85
|
+
visualStyle: VisualStyle;
|
|
86
|
+
outlineFillColor: "auto" | string;
|
|
87
|
+
outlineFillOpacity: number;
|
|
88
|
+
cornerRadius: number;
|
|
89
|
+
borderWidth: number;
|
|
90
|
+
accents: boolean;
|
|
91
|
+
osTheme: Theme;
|
|
92
|
+
appTheme: Theme;
|
|
93
|
+
}
|
|
94
|
+
export interface KagiChartRenderContext {
|
|
95
|
+
personalization: Personalization;
|
|
96
|
+
formatter: ChartFormatter;
|
|
97
|
+
resolvedLocaleBase: string;
|
|
98
|
+
resolvedTimeZone: string | undefined;
|
|
99
|
+
legs: KagiLegs;
|
|
100
|
+
ariaLabel: string;
|
|
101
|
+
cssWidth: number;
|
|
102
|
+
cssHeight: number;
|
|
103
|
+
}
|
|
104
|
+
export interface HoverState {
|
|
105
|
+
readonly pointerX: number;
|
|
106
|
+
readonly pointerY: number;
|
|
107
|
+
readonly idx: number;
|
|
108
|
+
readonly direction: 1 | -1;
|
|
109
|
+
readonly thick: boolean;
|
|
110
|
+
readonly startPrice: number;
|
|
111
|
+
readonly endPrice: number;
|
|
112
|
+
}
|
|
113
|
+
export interface KagiChartControllerProps extends KagiChartBaseProps {
|
|
114
|
+
tooltip?: undefined | false | ((p: KagiChartTooltipProps) => unknown);
|
|
115
|
+
}
|
|
116
|
+
export interface KagiChartControllerCallbacks {
|
|
117
|
+
onContextChange(ctx: KagiChartRenderContext): void;
|
|
118
|
+
onHoverChange(hover: HoverState | null): void;
|
|
119
|
+
}
|
|
120
|
+
export interface KagiChartControllerMountOptions extends KagiChartControllerCallbacks {
|
|
121
|
+
container?: HTMLElement | null;
|
|
122
|
+
staticCanvas: HTMLCanvasElement;
|
|
123
|
+
dynamicCanvas: HTMLCanvasElement | null;
|
|
124
|
+
initialProps: KagiChartControllerProps;
|
|
125
|
+
initialProvider: KagiChartProviderSnapshot;
|
|
126
|
+
}
|
|
127
|
+
export declare class KagiChartController {
|
|
128
|
+
private staticCanvas;
|
|
129
|
+
private dynamicCanvas;
|
|
130
|
+
private callbacks;
|
|
131
|
+
private props;
|
|
132
|
+
private providerCtx;
|
|
133
|
+
private handle;
|
|
134
|
+
private dynCfg;
|
|
135
|
+
private legs;
|
|
136
|
+
private personalization;
|
|
137
|
+
private resolvedLocale;
|
|
138
|
+
private formatter;
|
|
139
|
+
private thicknessRule;
|
|
140
|
+
private thickLineWidth;
|
|
141
|
+
private thinLineWidth;
|
|
142
|
+
private staticDrawAbort;
|
|
143
|
+
private disposed;
|
|
144
|
+
private visGate;
|
|
145
|
+
constructor(opts: KagiChartControllerMountOptions);
|
|
146
|
+
update(props: KagiChartControllerProps, providerCtx: KagiChartProviderSnapshot): void;
|
|
147
|
+
handlePointerMove(e: PointerEvent): void;
|
|
148
|
+
handlePointerLeave(): void;
|
|
149
|
+
dispose(): void;
|
|
150
|
+
private setHover;
|
|
151
|
+
private resolveDerived;
|
|
152
|
+
private applyDynamicCfgFromProps;
|
|
153
|
+
private runStaticDraw;
|
|
154
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { LineSeries, LiveState } from '../domain';
|
|
2
|
+
import { Personalization, ChartFormatter, ConnectionIndicator } from '../personalization';
|
|
3
|
+
import { StackingLayout } from '../rendering/stacked-layout';
|
|
4
|
+
import { ExtremeHoverState, HoverState, LineChartBaseProps, ResolvedIndicator, SecondarySeriesDraw, ConnectionIndicatorRenderProps, StaleBannerRenderProps, LineChartTooltipProps, ExtremeTooltipProps } from './line-chart-helpers';
|
|
5
|
+
/** Controller-specific prop type. Extends the framework-agnostic
|
|
6
|
+
* `LineChartBaseProps` (in `line-chart-helpers.ts`) with the four
|
|
7
|
+
* render-prop fields whose return type is widened to `unknown` so both
|
|
8
|
+
* the React adapter (returns `React.ReactNode`) and the Solid adapter
|
|
9
|
+
* (returns `JSX.Element`) pass type-check via covariance. */
|
|
10
|
+
export interface LineChartControllerProps extends LineChartBaseProps {
|
|
11
|
+
tooltip?: boolean | ((p: LineChartTooltipProps) => unknown);
|
|
12
|
+
extremeTooltip?: boolean | ((p: ExtremeTooltipProps) => unknown);
|
|
13
|
+
staleBanner?: boolean | ((p: StaleBannerRenderProps) => unknown);
|
|
14
|
+
connectionIndicator?: ConnectionIndicator | ((p: ConnectionIndicatorRenderProps) => unknown);
|
|
15
|
+
}
|
|
16
|
+
/** Provider snapshot the controller consumes. Mirrors `ChartsProviderValue`
|
|
17
|
+
* (declared in src/react/charts-provider.tsx and src/solid/charts-provider.tsx)
|
|
18
|
+
* but kept as a structural type so this file stays framework-agnostic. */
|
|
19
|
+
export interface LineChartProviderSnapshot {
|
|
20
|
+
theme: import('../personalization').ThemeInput;
|
|
21
|
+
palette: string;
|
|
22
|
+
locale: string;
|
|
23
|
+
timeZone: string | undefined;
|
|
24
|
+
visualStyle: import('../personalization').VisualStyle;
|
|
25
|
+
outlineFillColor: "auto" | string;
|
|
26
|
+
outlineFillOpacity: number;
|
|
27
|
+
cornerRadius: number;
|
|
28
|
+
borderWidth: number;
|
|
29
|
+
accents: boolean;
|
|
30
|
+
osTheme: import('../personalization').Theme;
|
|
31
|
+
appTheme: import('../personalization').Theme;
|
|
32
|
+
}
|
|
33
|
+
/** Snapshot of derived state the adapter exposes to JSX.
|
|
34
|
+
* Recomputed inside `update()` and pushed via `onContextChange`. */
|
|
35
|
+
export interface LineChartRenderContext {
|
|
36
|
+
personalization: Personalization;
|
|
37
|
+
formatter: ChartFormatter;
|
|
38
|
+
resolvedLocaleBase: string;
|
|
39
|
+
resolvedTimeZone: string | undefined;
|
|
40
|
+
series: LineSeries;
|
|
41
|
+
secondarySeriesList: readonly SecondarySeriesDraw[];
|
|
42
|
+
stackedLayout: StackingLayout | null;
|
|
43
|
+
primaryColorOverride: string | undefined;
|
|
44
|
+
ariaLabel: string;
|
|
45
|
+
isSparkline: boolean;
|
|
46
|
+
cssWidth: number;
|
|
47
|
+
cssHeight: number;
|
|
48
|
+
}
|
|
49
|
+
export interface LineChartControllerCallbacks {
|
|
50
|
+
onContextChange(ctx: LineChartRenderContext): void;
|
|
51
|
+
onHoverChange(hover: HoverState | null): void;
|
|
52
|
+
onExtremeHoverChange(eh: ExtremeHoverState | null): void;
|
|
53
|
+
onLiveStateChange(s: LiveState): void;
|
|
54
|
+
onReducedMotionChange(v: boolean): void;
|
|
55
|
+
onResolvedIndicatorsChange(inds: readonly ResolvedIndicator[]): void;
|
|
56
|
+
}
|
|
57
|
+
export interface LineChartControllerMountOptions extends LineChartControllerCallbacks {
|
|
58
|
+
/** The chart's outer container DOM node. `null` in sparkline mode (only
|
|
59
|
+
* the static canvas is mounted). */
|
|
60
|
+
container: HTMLDivElement | null;
|
|
61
|
+
staticCanvas: HTMLCanvasElement;
|
|
62
|
+
/** Dynamic-layer canvas. `null` in sparkline mode. */
|
|
63
|
+
dynamicCanvas: HTMLCanvasElement | null;
|
|
64
|
+
initialProps: LineChartControllerProps;
|
|
65
|
+
initialProvider: LineChartProviderSnapshot;
|
|
66
|
+
}
|
|
67
|
+
export declare class LineChartController {
|
|
68
|
+
private staticCanvas;
|
|
69
|
+
private dynamicCanvas;
|
|
70
|
+
private callbacks;
|
|
71
|
+
private props;
|
|
72
|
+
private providerCtx;
|
|
73
|
+
private handle;
|
|
74
|
+
private hoverState;
|
|
75
|
+
/** Latest extreme-pill hover; mirrored to the adapter via
|
|
76
|
+
* `onExtremeHoverChange` for tooltip JSX. The controller keeps the
|
|
77
|
+
* reference so future extreme-pill timing logic (e.g. auto-dismiss
|
|
78
|
+
* on data update) has somewhere to read from. */
|
|
79
|
+
private extremeHoverState;
|
|
80
|
+
private dynCfg;
|
|
81
|
+
private liveStateInputs;
|
|
82
|
+
private reducedMotion;
|
|
83
|
+
private liveState;
|
|
84
|
+
private resolvedIndicators;
|
|
85
|
+
private series;
|
|
86
|
+
private historySeries;
|
|
87
|
+
private combinedSeries;
|
|
88
|
+
private liveTickTimes;
|
|
89
|
+
private liveTickValues;
|
|
90
|
+
private liveTickLength;
|
|
91
|
+
private liveTickCapacity;
|
|
92
|
+
/** Source-data identity tracked at last resolveDerived. When it
|
|
93
|
+
* changes the live-tick ring is reset (host has provided a new
|
|
94
|
+
* baseline; in-flight ticks predate it). */
|
|
95
|
+
private liveTickSourceId;
|
|
96
|
+
/** Coalesces back-to-back onTick calls in one rAF - only one static
|
|
97
|
+
* draw per frame even if 30 ticks arrive in 16ms. */
|
|
98
|
+
private onTickRafId;
|
|
99
|
+
private personalization;
|
|
100
|
+
private resolvedLocale;
|
|
101
|
+
private formatter;
|
|
102
|
+
private secondarySeriesList;
|
|
103
|
+
private stackedLayout;
|
|
104
|
+
private primaryColorOverride;
|
|
105
|
+
private isSparkline;
|
|
106
|
+
/** Dirty-rect tracking for partial dynamic-layer repaints.
|
|
107
|
+
* Crosshair / hover overlays disturb only thin
|
|
108
|
+
* strips (V + H + small marker) - clipping to those gives a real
|
|
109
|
+
* GPU-fill saving. Auto-disabled below `shouldUseDirtyRects`
|
|
110
|
+
* threshold; force-disabled via `partialRepaints: false` prop. */
|
|
111
|
+
private dirtyRing;
|
|
112
|
+
/** Reused multi-rect scratch - `flushAll` populates this in-place. */
|
|
113
|
+
private dirtyScratch;
|
|
114
|
+
private useDirtyRects;
|
|
115
|
+
/** Previous hover snapshot - used to compute the "old crosshair" rect
|
|
116
|
+
* on hover transitions so the leaving crosshair gets cleared too. */
|
|
117
|
+
private prevHoverSnapX;
|
|
118
|
+
private prevHoverSnapY;
|
|
119
|
+
private prevHoverActive;
|
|
120
|
+
/** Sparkline bitmap cache. For <150px containers,
|
|
121
|
+
* rendering the curve costs more than blitting a cached bitmap. Cache
|
|
122
|
+
* is keyed on every input that affects pixels - palette, theme, line
|
|
123
|
+
* width / dash, curve type, viewport size, data revision. */
|
|
124
|
+
private sparklineCache;
|
|
125
|
+
private mqCleanup;
|
|
126
|
+
private staleTimeoutId;
|
|
127
|
+
private indicatorAbort;
|
|
128
|
+
/** 50ms trailing debounce for kickIndicatorCompute - rapid param
|
|
129
|
+
* changes (e.g. dragging an indicator slider) coalesce into a single
|
|
130
|
+
* recompute. */
|
|
131
|
+
private indicatorComputeDebounceId;
|
|
132
|
+
private rafId;
|
|
133
|
+
/** Visibility source - pauses the rAF loop when the chart is in a
|
|
134
|
+
* hidden tab OR scrolled off-screen. */
|
|
135
|
+
private visibility;
|
|
136
|
+
private visibilityUnsubscribe;
|
|
137
|
+
/** Cancellation flag for the in-flight static-draw async work. Bumped
|
|
138
|
+
* on every redraw + on dispose so any pending TimeAxis awaits short-
|
|
139
|
+
* circuit before they touch a freed handle. */
|
|
140
|
+
private staticDrawAbort;
|
|
141
|
+
private taHandle;
|
|
142
|
+
/** True after `dispose()`. Subsequent calls become no-ops. */
|
|
143
|
+
private disposed;
|
|
144
|
+
constructor(opts: LineChartControllerMountOptions);
|
|
145
|
+
/** Adapter must call this whenever its props or its provider snapshot
|
|
146
|
+
* changes. Idempotent for unchanged inputs. */
|
|
147
|
+
update(props: LineChartControllerProps, providerCtx: LineChartProviderSnapshot): void;
|
|
148
|
+
handlePointerMove(e: PointerEvent): void;
|
|
149
|
+
handlePointerLeave(): void;
|
|
150
|
+
/** Apply an externally-driven crosshair time (e.g. coming from a sibling
|
|
151
|
+
* chart inside `<ChartGroup>` with `syncCrosshair: true`). Suppressed
|
|
152
|
+
* when this chart already has a local hover (the user is hovering this
|
|
153
|
+
* chart - its own hover is the source of truth). When `time` is null,
|
|
154
|
+
* the synced crosshair is cleared. */
|
|
155
|
+
applyExternalCrosshair(time: number | null): void;
|
|
156
|
+
/** Imperative live-tick API. Primitive args
|
|
157
|
+
* (no object literals, no per-call allocation in steady state once
|
|
158
|
+
* the ring buffer has settled). Multiple ticks within one rAF
|
|
159
|
+
* coalesce into a single static draw.
|
|
160
|
+
*
|
|
161
|
+
* `_size` is accepted for API parity with CandleChart/streaming
|
|
162
|
+
* consumers but is unused for line charts (line is value-over-time;
|
|
163
|
+
* size doesn't affect the rendered geometry). */
|
|
164
|
+
onTick(time: number, price: number, _size?: number): void;
|
|
165
|
+
/** Internal: build a `LineSeries` that concatenates the host's
|
|
166
|
+
* base data with the in-flight live ticks. Allocates one pair of
|
|
167
|
+
* typed arrays per static draw - bounded by total tick count. */
|
|
168
|
+
private materializeWithLiveTicks;
|
|
169
|
+
dispose(): void;
|
|
170
|
+
private setHover;
|
|
171
|
+
private setExtremeHover;
|
|
172
|
+
/** Recompute series + personalization + formatter + secondary list +
|
|
173
|
+
* stackedLayout + primaryColorOverride. Pushes a fresh
|
|
174
|
+
* `LineChartRenderContext` to the adapter for JSX rendering. */
|
|
175
|
+
private resolveDerived;
|
|
176
|
+
private applyDynamicCfgFromProps;
|
|
177
|
+
private applyLiveStateInputsFromProps;
|
|
178
|
+
private setupReducedMotionWatcher;
|
|
179
|
+
private tearDownReducedMotionWatcher;
|
|
180
|
+
private kickStaleTimeout;
|
|
181
|
+
/** Debounced wrapper around `kickIndicatorCompute` - coalesces rapid
|
|
182
|
+
* prop changes (e.g. an indicator slider being dragged) into a single
|
|
183
|
+
* engine recompute after 50ms of quiet (coalesced compute on
|
|
184
|
+
* rapid param changes). */
|
|
185
|
+
private kickIndicatorComputeDebounced;
|
|
186
|
+
private kickIndicatorCompute;
|
|
187
|
+
private kickRafLoop;
|
|
188
|
+
private tearDownRafLoop;
|
|
189
|
+
/** Push crosshair-overlay disturbance rects into the dirty ring for
|
|
190
|
+
* this and the previous hover position. The rects must cover every
|
|
191
|
+
* pixel that will be drawn (or was drawn last
|
|
192
|
+
* frame) - V-strip (vertical line + marker), H-strip (horizontal
|
|
193
|
+
* line), live-bar indicator region.
|
|
194
|
+
*
|
|
195
|
+
* No-op when partial repaints are off - caller falls through to a
|
|
196
|
+
* full-canvas clear in that case. */
|
|
197
|
+
private pushDynamicDirtyRects;
|
|
198
|
+
/** Wrap `drawDynamicLayer` with dirty-rect flushing when partial
|
|
199
|
+
* repaints are active. Returns the call to make this a single line
|
|
200
|
+
* at every existing call site. */
|
|
201
|
+
private repaintDynamicWith;
|
|
202
|
+
/** The static-draw orchestration. Mounts the static canvas, awaits the
|
|
203
|
+
* engine TimeAxis, computes layout + colors, calls `drawFullLineChart`,
|
|
204
|
+
* saves the resulting `ChartHandle`, paints the dynamic layer once. */
|
|
205
|
+
private runStaticDraw;
|
|
206
|
+
}
|
|
207
|
+
/** Re-export the underlying types so adapters can reference them
|
|
208
|
+
* without dipping into `src/charts/line-chart-helpers`. */
|
|
209
|
+
export type { HoverState, ExtremeHoverState, ResolvedIndicator, SecondarySeriesDraw, ChartHandle, ChartLayout, DynamicCfg, LiveStateInputs, LineChartBaseProps, } from './line-chart-helpers';
|