@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,105 @@
|
|
|
1
|
+
/** Common discriminant - every SoA buffer carries its visible length so
|
|
2
|
+
* the draw loop knows how many slots are populated. Capacity may
|
|
3
|
+
* exceed length when buffers are pre-sized + grown by doubling. */
|
|
4
|
+
export interface SoaBuffer {
|
|
5
|
+
readonly length: number;
|
|
6
|
+
}
|
|
7
|
+
/** LineChart per-mark layout. Drawn from a single contiguous Float64
|
|
8
|
+
* pair (xs, ys) - the simplest SoA shape. */
|
|
9
|
+
export interface LineMarkBuffer extends SoaBuffer {
|
|
10
|
+
readonly xs: Float64Array;
|
|
11
|
+
readonly ys: Float64Array;
|
|
12
|
+
/** Optional per-mark color index into a ColorStringTable. `null` =
|
|
13
|
+
* mono-color, caller draws with a single strokeStyle. */
|
|
14
|
+
readonly colorIndices: Uint8Array | null;
|
|
15
|
+
}
|
|
16
|
+
/** CandleChart per-bar layout. Six parallel `Float64Array` pulled from
|
|
17
|
+
* the engine's typed-array views (no copy). The body / wick are
|
|
18
|
+
* derived per-bar from `opens/closes/highs/lows` at draw time; this
|
|
19
|
+
* buffer matches the engine's SoA exactly. */
|
|
20
|
+
export interface CandleMarkBuffer extends SoaBuffer {
|
|
21
|
+
readonly times: Float64Array;
|
|
22
|
+
readonly opens: Float64Array;
|
|
23
|
+
readonly highs: Float64Array;
|
|
24
|
+
readonly lows: Float64Array;
|
|
25
|
+
readonly closes: Float64Array;
|
|
26
|
+
readonly volumes: Float64Array | null;
|
|
27
|
+
}
|
|
28
|
+
/** BarChart per-bar layout. Bars are drawn from category + value pairs;
|
|
29
|
+
* the orientation (vertical / horizontal) is a chart-level setting,
|
|
30
|
+
* not a per-bar field. */
|
|
31
|
+
export interface BarMarkBuffer extends SoaBuffer {
|
|
32
|
+
readonly categories: Float64Array;
|
|
33
|
+
readonly values: Float64Array;
|
|
34
|
+
readonly colorIndices: Uint8Array | null;
|
|
35
|
+
}
|
|
36
|
+
/** ScatterChart per-point layout. `sizes` may be null when every point
|
|
37
|
+
* shares the same size (chart-level setting). */
|
|
38
|
+
export interface ScatterMarkBuffer extends SoaBuffer {
|
|
39
|
+
readonly xs: Float64Array;
|
|
40
|
+
readonly ys: Float64Array;
|
|
41
|
+
readonly sizes: Float64Array | null;
|
|
42
|
+
readonly colorIndices: Uint8Array | null;
|
|
43
|
+
}
|
|
44
|
+
/** HistogramChart per-bin layout. */
|
|
45
|
+
export interface HistogramBinBuffer extends SoaBuffer {
|
|
46
|
+
/** `length + 1` entries - N bins have N+1 boundary edges. */
|
|
47
|
+
readonly edges: Float64Array;
|
|
48
|
+
readonly counts: Uint32Array;
|
|
49
|
+
/** The y-axis value for each bin (count, frequency, or density -
|
|
50
|
+
* depending on `yAxisMode`). */
|
|
51
|
+
readonly yValues: Float64Array;
|
|
52
|
+
}
|
|
53
|
+
/** HeatmapChart cell layout. Stored as a flat row-major Float64
|
|
54
|
+
* matrix; (row, col) → values[row * cols + col]. */
|
|
55
|
+
export interface HeatmapMatrixBuffer extends SoaBuffer {
|
|
56
|
+
readonly rows: number;
|
|
57
|
+
readonly cols: number;
|
|
58
|
+
/** Flat `rows * cols` cells in row-major order. */
|
|
59
|
+
readonly values: Float64Array;
|
|
60
|
+
/** Optional null-mask: `1` = present, `0` = null/missing. */
|
|
61
|
+
readonly mask: Uint8Array | null;
|
|
62
|
+
}
|
|
63
|
+
/** Renko brick layout. Each brick has a direction (+1 / -1), price
|
|
64
|
+
* range (bottom→top), and a source-bar index for hover lookup. */
|
|
65
|
+
export interface RenkoBricksBuffer extends SoaBuffer {
|
|
66
|
+
readonly bottomPrices: Float64Array;
|
|
67
|
+
readonly topPrices: Float64Array;
|
|
68
|
+
readonly directions: Int8Array;
|
|
69
|
+
readonly sourceIdx: Int32Array;
|
|
70
|
+
readonly brickSize: number;
|
|
71
|
+
}
|
|
72
|
+
/** Kagi leg layout. Legs alternate direction; `thick` is a per-leg
|
|
73
|
+
* bit flag (yang vs yin) per the shoulder-waist rule. */
|
|
74
|
+
export interface KagiLegsBuffer extends SoaBuffer {
|
|
75
|
+
readonly startPrices: Float64Array;
|
|
76
|
+
readonly endPrices: Float64Array;
|
|
77
|
+
readonly directions: Int8Array;
|
|
78
|
+
readonly thick: Uint8Array;
|
|
79
|
+
readonly sourceIdx: Int32Array;
|
|
80
|
+
}
|
|
81
|
+
/** Point & Figure column layout - each column is a stack of X's or O's
|
|
82
|
+
* (depending on direction) covering boxes `bottomBoxes..topBoxes`. */
|
|
83
|
+
export interface PnFColumnsBuffer extends SoaBuffer {
|
|
84
|
+
readonly bottomBoxes: Float64Array;
|
|
85
|
+
readonly topBoxes: Float64Array;
|
|
86
|
+
readonly directions: Int8Array;
|
|
87
|
+
readonly sourceIdx: Int32Array;
|
|
88
|
+
readonly boxSize: number;
|
|
89
|
+
}
|
|
90
|
+
/** Depth (orderbook) chart layout - bids and asks as parallel arrays. */
|
|
91
|
+
export interface DepthBuffer extends SoaBuffer {
|
|
92
|
+
readonly bidPrices: Float64Array;
|
|
93
|
+
readonly bidSizes: Float64Array;
|
|
94
|
+
readonly bidCumulative: Float64Array;
|
|
95
|
+
readonly askPrices: Float64Array;
|
|
96
|
+
readonly askSizes: Float64Array;
|
|
97
|
+
readonly askCumulative: Float64Array;
|
|
98
|
+
}
|
|
99
|
+
/** Hit-test result SoA - used by spatial-index queries. Sortable by
|
|
100
|
+
* distance via parallel-array sort (no per-result object). */
|
|
101
|
+
export interface HitTestResultBuffer extends SoaBuffer {
|
|
102
|
+
readonly ids: Uint32Array;
|
|
103
|
+
readonly types: Uint8Array;
|
|
104
|
+
readonly distances: Float64Array;
|
|
105
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, VisualStyle, Theme, LabelPlacement, ResolvedLabelContent, SortOrder, ChartFormatter } from '../personalization';
|
|
2
|
+
import { HoverState, PieChartBaseProps, PieChartTooltipProps } from './pie-chart-helpers';
|
|
3
|
+
import { PieSeries } from './pie-slice-compute';
|
|
4
|
+
export interface PieChartProviderSnapshot {
|
|
5
|
+
theme: ThemeInput;
|
|
6
|
+
palette: string;
|
|
7
|
+
locale: string;
|
|
8
|
+
timeZone: string | undefined;
|
|
9
|
+
visualStyle: VisualStyle;
|
|
10
|
+
outlineFillColor: "auto" | string;
|
|
11
|
+
outlineFillOpacity: number;
|
|
12
|
+
cornerRadius: number;
|
|
13
|
+
borderWidth: number;
|
|
14
|
+
accents: boolean;
|
|
15
|
+
osTheme: Theme;
|
|
16
|
+
appTheme: Theme;
|
|
17
|
+
}
|
|
18
|
+
export interface PieChartRenderContext {
|
|
19
|
+
personalization: Personalization;
|
|
20
|
+
formatter: ChartFormatter;
|
|
21
|
+
resolvedLocaleBase: string;
|
|
22
|
+
resolvedTimeZone: string | undefined;
|
|
23
|
+
resolvedSeries: PieSeries;
|
|
24
|
+
resolvedLabelPlacement: LabelPlacement;
|
|
25
|
+
resolvedLabelContent: ResolvedLabelContent;
|
|
26
|
+
resolvedSortOrder: SortOrder;
|
|
27
|
+
innerRadiusFraction: number;
|
|
28
|
+
/** Total value (post-combine) - useful for centerLabel. */
|
|
29
|
+
totalValue: number;
|
|
30
|
+
ariaLabel: string;
|
|
31
|
+
cssWidth: number;
|
|
32
|
+
cssHeight: number;
|
|
33
|
+
}
|
|
34
|
+
export interface PieChartControllerCallbacks {
|
|
35
|
+
onContextChange(ctx: PieChartRenderContext): void;
|
|
36
|
+
onHoverChange(hover: HoverState | null): void;
|
|
37
|
+
}
|
|
38
|
+
export interface PieChartControllerProps extends PieChartBaseProps {
|
|
39
|
+
tooltip?: undefined | false | ((p: PieChartTooltipProps) => unknown);
|
|
40
|
+
}
|
|
41
|
+
export interface PieChartControllerMountOptions extends PieChartControllerCallbacks {
|
|
42
|
+
container?: HTMLElement | null;
|
|
43
|
+
staticCanvas: HTMLCanvasElement;
|
|
44
|
+
dynamicCanvas: HTMLCanvasElement | null;
|
|
45
|
+
initialProps: PieChartControllerProps;
|
|
46
|
+
initialProvider: PieChartProviderSnapshot;
|
|
47
|
+
/** Default innerRadius when the host doesn't pass one. 0 = Pie, 0.5 = Donut. */
|
|
48
|
+
innerRadiusDefault: number;
|
|
49
|
+
}
|
|
50
|
+
export declare class PieChartController {
|
|
51
|
+
private staticCanvas;
|
|
52
|
+
private dynamicCanvas;
|
|
53
|
+
private callbacks;
|
|
54
|
+
private props;
|
|
55
|
+
private providerCtx;
|
|
56
|
+
private innerRadiusDefault;
|
|
57
|
+
private handle;
|
|
58
|
+
private hoverState;
|
|
59
|
+
private dynCfg;
|
|
60
|
+
private resolvedSeries;
|
|
61
|
+
private startAngles;
|
|
62
|
+
private endAngles;
|
|
63
|
+
private sliceColors;
|
|
64
|
+
private personalization;
|
|
65
|
+
private resolvedLocale;
|
|
66
|
+
private formatter;
|
|
67
|
+
private resolvedLabelPlacement;
|
|
68
|
+
private resolvedLabelContent;
|
|
69
|
+
private resolvedSortOrder;
|
|
70
|
+
private innerRadiusFraction;
|
|
71
|
+
private staticDrawAbort;
|
|
72
|
+
private disposed;
|
|
73
|
+
private visGate;
|
|
74
|
+
constructor(opts: PieChartControllerMountOptions);
|
|
75
|
+
update(props: PieChartControllerProps, providerCtx: PieChartProviderSnapshot): void;
|
|
76
|
+
handlePointerMove(e: PointerEvent): void;
|
|
77
|
+
handlePointerLeave(): void;
|
|
78
|
+
dispose(): void;
|
|
79
|
+
private setHover;
|
|
80
|
+
private resolveDerived;
|
|
81
|
+
private applyDynamicCfgFromProps;
|
|
82
|
+
private runStaticDraw;
|
|
83
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, DigitGrouping, NumberAbbreviation, DecimalPlaces, CurrencyDisplay, PercentPrecision, DateFormat, TimeFormat, LegendPosition, LegendVisibility, LabelPlacement, LabelContentInput, ResolvedLabelContent, SortOrder, SmallSliceThresholdInput, ChartFormatter } from '../personalization';
|
|
2
|
+
import { Viewport } from '../viewport/viewport-sizer';
|
|
3
|
+
import { CrosshairMarker } from '../rendering/draw/crosshair';
|
|
4
|
+
import { GridStyle } from '../rendering/draw/grid';
|
|
5
|
+
import { PieSeries, PieSeriesInput } from './pie-slice-compute';
|
|
6
|
+
export type { PieSeries, PieSeriesInput, PieSlice } from './pie-slice-compute';
|
|
7
|
+
export interface PieChartTooltipProps {
|
|
8
|
+
/** Slice index in the post-sort/combine order. */
|
|
9
|
+
readonly idx: number;
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly value: number;
|
|
12
|
+
/** 0–1 fraction of the total. */
|
|
13
|
+
readonly percent: number;
|
|
14
|
+
readonly color: string;
|
|
15
|
+
readonly pointerX: number;
|
|
16
|
+
readonly pointerY: number;
|
|
17
|
+
readonly containerWidth: number;
|
|
18
|
+
readonly containerHeight: number;
|
|
19
|
+
readonly theme: import('../personalization').Theme;
|
|
20
|
+
readonly palette: import('../personalization').Palette;
|
|
21
|
+
readonly locale: string;
|
|
22
|
+
readonly timeZone: string | undefined;
|
|
23
|
+
readonly formatter: ChartFormatter;
|
|
24
|
+
}
|
|
25
|
+
export interface PieChartBaseProps {
|
|
26
|
+
/** Slice data - array of `{ name, value, color? }`. Each value
|
|
27
|
+
* becomes a slice proportional to its share of the total. */
|
|
28
|
+
data?: PieSeriesInput;
|
|
29
|
+
/** Default -90° (12 o'clock). Degrees. */
|
|
30
|
+
startAngle?: number;
|
|
31
|
+
/** Default 270° (full circle). Degrees. */
|
|
32
|
+
endAngle?: number;
|
|
33
|
+
/** Default 3°. Gap between slices, in degrees. */
|
|
34
|
+
padAngle?: number;
|
|
35
|
+
/** Default 0 (Pie) / 0.5 (Donut). */
|
|
36
|
+
innerRadius?: number;
|
|
37
|
+
/** Default 'auto'. */
|
|
38
|
+
labelPlacement?: LabelPlacement;
|
|
39
|
+
/** Default 'name + percent'. */
|
|
40
|
+
labelContent?: LabelContentInput;
|
|
41
|
+
/** Default 'value-desc'. */
|
|
42
|
+
sortOrder?: SortOrder;
|
|
43
|
+
/** Default false. */
|
|
44
|
+
smallSliceThreshold?: SmallSliceThresholdInput;
|
|
45
|
+
legend?: LegendVisibility;
|
|
46
|
+
legendPosition?: LegendPosition;
|
|
47
|
+
crosshairVisible?: boolean;
|
|
48
|
+
crosshairLineStyle?: GridStyle;
|
|
49
|
+
crosshairMarker?: CrosshairMarker;
|
|
50
|
+
width?: number;
|
|
51
|
+
height?: number;
|
|
52
|
+
theme?: ThemeInput;
|
|
53
|
+
palette?: string;
|
|
54
|
+
visualStyle?: "Fill" | "Outline";
|
|
55
|
+
outlineFillColor?: "auto" | string;
|
|
56
|
+
outlineFillOpacity?: number;
|
|
57
|
+
pixelDensityCap?: number;
|
|
58
|
+
fastMode?: boolean;
|
|
59
|
+
/** Glow + glow-color axes. */
|
|
60
|
+
glow?: import('../personalization/axes/glow').GlowInput;
|
|
61
|
+
glowColor?: import('../personalization/axes/glow').GlowColorInput;
|
|
62
|
+
/** Pattern fills. */
|
|
63
|
+
pattern?: import('../personalization/axes/pattern').PatternInput;
|
|
64
|
+
patternScale?: number;
|
|
65
|
+
patternColor?: import('../personalization/axes/pattern').PatternColorInput;
|
|
66
|
+
ariaLabel?: string;
|
|
67
|
+
accents?: boolean;
|
|
68
|
+
locale?: string;
|
|
69
|
+
timeZone?: string;
|
|
70
|
+
cornerRadius?: number;
|
|
71
|
+
borderWidth?: number;
|
|
72
|
+
digitGrouping?: DigitGrouping;
|
|
73
|
+
numberAbbreviation?: NumberAbbreviation;
|
|
74
|
+
decimalPlaces?: DecimalPlaces;
|
|
75
|
+
currency?: string;
|
|
76
|
+
currencyDisplay?: CurrencyDisplay;
|
|
77
|
+
percentPrecision?: PercentPrecision;
|
|
78
|
+
dateFormat?: DateFormat;
|
|
79
|
+
timeFormat?: TimeFormat;
|
|
80
|
+
}
|
|
81
|
+
export declare const DEFAULT_FONT = "12px system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif";
|
|
82
|
+
export declare const DEFAULT_LABEL_FONT_SIZE = 11;
|
|
83
|
+
/** Slices smaller than this auto-hide their inside label. */
|
|
84
|
+
export declare const INSIDE_LABEL_MIN_DEG = 18;
|
|
85
|
+
export declare const DEFAULT_PAD_ANGLE_DEG = 3;
|
|
86
|
+
export declare const DEFAULT_START_ANGLE_DEG = -90;
|
|
87
|
+
export declare const DEFAULT_END_ANGLE_DEG = 270;
|
|
88
|
+
export interface HoverState {
|
|
89
|
+
readonly pointerX: number;
|
|
90
|
+
readonly pointerY: number;
|
|
91
|
+
readonly snapX: number;
|
|
92
|
+
readonly snapY: number;
|
|
93
|
+
readonly idx: number;
|
|
94
|
+
readonly name: string;
|
|
95
|
+
readonly value: number;
|
|
96
|
+
readonly percent: number;
|
|
97
|
+
readonly color: string;
|
|
98
|
+
}
|
|
99
|
+
export interface DynamicCfg {
|
|
100
|
+
readonly crosshairVisible: boolean;
|
|
101
|
+
readonly crosshairLineStyle: GridStyle;
|
|
102
|
+
readonly crosshairMarker: CrosshairMarker;
|
|
103
|
+
}
|
|
104
|
+
export interface ChartLayout {
|
|
105
|
+
innerLeft: number;
|
|
106
|
+
innerRight: number;
|
|
107
|
+
innerTop: number;
|
|
108
|
+
innerBottom: number;
|
|
109
|
+
/** Center of the pie in CSS pixels. */
|
|
110
|
+
cx: number;
|
|
111
|
+
cy: number;
|
|
112
|
+
/** Outer radius in CSS pixels. */
|
|
113
|
+
outerR: number;
|
|
114
|
+
/** Inner radius in CSS pixels (donut hole; 0 for pie). */
|
|
115
|
+
innerR: number;
|
|
116
|
+
viewport: Viewport;
|
|
117
|
+
}
|
|
118
|
+
export interface ChartHandle {
|
|
119
|
+
readonly dynamicCtx: CanvasRenderingContext2D | null;
|
|
120
|
+
readonly layout: ChartLayout;
|
|
121
|
+
readonly crosshairLineColor: string;
|
|
122
|
+
readonly crosshairMarkerStroke: string;
|
|
123
|
+
/** Per-slice resolved CSS colors (length = sliceCount). */
|
|
124
|
+
readonly sliceColors: readonly string[];
|
|
125
|
+
}
|
|
126
|
+
export declare function computeLayout(opts: {
|
|
127
|
+
viewport: Viewport;
|
|
128
|
+
innerRadiusFraction: number;
|
|
129
|
+
/** Reserve room for outside labels when label placement extends beyond
|
|
130
|
+
* the rim. We pass a single `padding` here at compute time. */
|
|
131
|
+
outerPadding: number;
|
|
132
|
+
}): ChartLayout;
|
|
133
|
+
export declare function defaultAriaLabel(series: PieSeries): string;
|
|
134
|
+
export interface DrawFullPieArgs {
|
|
135
|
+
ctx: CanvasRenderingContext2D;
|
|
136
|
+
series: PieSeries;
|
|
137
|
+
/** Per-slice angles in radians (post-sort/combine). */
|
|
138
|
+
startAngles: Float64Array;
|
|
139
|
+
endAngles: Float64Array;
|
|
140
|
+
sliceColors: readonly string[];
|
|
141
|
+
personalization: Personalization;
|
|
142
|
+
layout: ChartLayout;
|
|
143
|
+
cornerRadius: number;
|
|
144
|
+
borderWidth: number;
|
|
145
|
+
/** Inter-slice gap (radians), rendered as a constant pixel width. */
|
|
146
|
+
padAngle: number;
|
|
147
|
+
labelPlacement: LabelPlacement;
|
|
148
|
+
resolvedLabelContent: ResolvedLabelContent;
|
|
149
|
+
formatter: ChartFormatter;
|
|
150
|
+
/** Total value for percent computation (post-combine). */
|
|
151
|
+
totalValue: number;
|
|
152
|
+
}
|
|
153
|
+
export declare function drawFullPieChart(args: DrawFullPieArgs): void;
|
|
154
|
+
export declare function drawPieDynamicLayer(handle: ChartHandle, hover: HoverState | null, cfg: DynamicCfg): void;
|
|
155
|
+
export declare function findSliceAt(layout: ChartLayout, startAngles: Float64Array, endAngles: Float64Array, sliceCount: number, px: number, py: number): number;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { SortOrder } from '../personalization/axes/sort-order';
|
|
2
|
+
import { ResolvedSmallSliceThreshold } from '../personalization/axes/small-slice-threshold';
|
|
3
|
+
export declare const TAU: number;
|
|
4
|
+
export declare function degToRad(deg: number): number;
|
|
5
|
+
export declare function radToDeg(rad: number): number;
|
|
6
|
+
export interface PieSlice {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly value: number;
|
|
9
|
+
/** Optional CSS color override. When omitted, palette.categorical[i] cycles. */
|
|
10
|
+
readonly color?: string;
|
|
11
|
+
}
|
|
12
|
+
export type PieSeriesInput = {
|
|
13
|
+
readonly slices: readonly PieSlice[];
|
|
14
|
+
} | {
|
|
15
|
+
readonly values: Float64Array | readonly number[];
|
|
16
|
+
readonly names: readonly string[];
|
|
17
|
+
readonly colors?: ReadonlyArray<string | undefined>;
|
|
18
|
+
};
|
|
19
|
+
export interface PieSeries {
|
|
20
|
+
readonly values: Float64Array;
|
|
21
|
+
readonly names: readonly string[];
|
|
22
|
+
/** `colorOverrides[i]` is null when the host didn't pass a color (auto-cycle). */
|
|
23
|
+
readonly colorOverrides: readonly (string | null)[];
|
|
24
|
+
readonly length: number;
|
|
25
|
+
readonly totalValue: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function ingestPieSeries(input: PieSeriesInput): PieSeries;
|
|
28
|
+
export declare function applySortOrder(series: PieSeries, order: SortOrder): PieSeries;
|
|
29
|
+
export declare function combineSmallSlices(series: PieSeries, threshold: ResolvedSmallSliceThreshold | null): PieSeries;
|
|
30
|
+
export interface SliceLayoutOptions {
|
|
31
|
+
/** Where the first slice begins (radians). Default: -90° = -π/2. */
|
|
32
|
+
readonly startAngle: number;
|
|
33
|
+
/** Where the last slice ends (radians). Default: 270° = 3π/2. */
|
|
34
|
+
readonly endAngle: number;
|
|
35
|
+
/** Gap between slices (radians). Default: 3° = π/60. */
|
|
36
|
+
readonly padAngle: number;
|
|
37
|
+
}
|
|
38
|
+
export interface SliceLayout {
|
|
39
|
+
/** Per-slice start angles in radians, indexed by post-sort/combine position. */
|
|
40
|
+
readonly startAngles: Float64Array;
|
|
41
|
+
readonly endAngles: Float64Array;
|
|
42
|
+
readonly length: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function computeSliceLayout(series: PieSeries, opts: SliceLayoutOptions): SliceLayout;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, VisualStyle, Theme, BoxSizingInput, TimeOffSource, PnFSymbolStyle, 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 { PnFColumns } from './time-off-algorithms';
|
|
7
|
+
export interface PnFChartTooltipProps {
|
|
8
|
+
readonly idx: number;
|
|
9
|
+
readonly direction: 1 | -1;
|
|
10
|
+
readonly bottomBox: number;
|
|
11
|
+
readonly topBox: number;
|
|
12
|
+
readonly pointerX: number;
|
|
13
|
+
readonly pointerY: number;
|
|
14
|
+
readonly containerWidth: number;
|
|
15
|
+
readonly containerHeight: number;
|
|
16
|
+
readonly theme: import('../personalization').Theme;
|
|
17
|
+
readonly palette: import('../personalization').Palette;
|
|
18
|
+
readonly locale: string;
|
|
19
|
+
readonly timeZone: string | undefined;
|
|
20
|
+
readonly formatter: ChartFormatter;
|
|
21
|
+
}
|
|
22
|
+
export interface PnFChartBaseProps {
|
|
23
|
+
/** Required OHLC bars - the chart filters out time and renders X / O
|
|
24
|
+
* symbols based on price-reversal logic. */
|
|
25
|
+
data?: CandleSeriesInput;
|
|
26
|
+
/** Box-size strategy - `"auto"` (ATR-derived) or explicit value. */
|
|
27
|
+
boxSize?: BoxSizingInput;
|
|
28
|
+
/** Number of boxes against the trend required to flip direction.
|
|
29
|
+
* Standard is 3. */
|
|
30
|
+
reversalCount?: number;
|
|
31
|
+
/** Source field for price: `"close"` (default) or `"high-low"`. */
|
|
32
|
+
source?: TimeOffSource;
|
|
33
|
+
/** Symbol style for X / O columns. */
|
|
34
|
+
symbolStyle?: PnFSymbolStyle;
|
|
35
|
+
/** Padding between symbols within a column. */
|
|
36
|
+
symbolPadding?: number;
|
|
37
|
+
/** Toggle crosshair on hover. */
|
|
38
|
+
crosshairVisible?: boolean;
|
|
39
|
+
/** Crosshair line style. */
|
|
40
|
+
crosshairLineStyle?: GridStyle;
|
|
41
|
+
/** Snap-marker shape. */
|
|
42
|
+
crosshairMarker?: CrosshairMarker;
|
|
43
|
+
width?: number;
|
|
44
|
+
height?: number;
|
|
45
|
+
theme?: ThemeInput;
|
|
46
|
+
palette?: string;
|
|
47
|
+
visualStyle?: "Fill" | "Outline";
|
|
48
|
+
outlineFillColor?: "auto" | string;
|
|
49
|
+
outlineFillOpacity?: number;
|
|
50
|
+
pixelDensityCap?: number;
|
|
51
|
+
fastMode?: boolean;
|
|
52
|
+
/** Glow + glow-color axes. */
|
|
53
|
+
glow?: import('../personalization/axes/glow').GlowInput;
|
|
54
|
+
glowColor?: import('../personalization/axes/glow').GlowColorInput;
|
|
55
|
+
/** Pattern fills. */
|
|
56
|
+
pattern?: import('../personalization/axes/pattern').PatternInput;
|
|
57
|
+
patternScale?: number;
|
|
58
|
+
patternColor?: import('../personalization/axes/pattern').PatternColorInput;
|
|
59
|
+
ariaLabel?: string;
|
|
60
|
+
axisVisible?: boolean;
|
|
61
|
+
yAxisPosition?: YAxisPosition;
|
|
62
|
+
xAxisPosition?: XAxisPosition;
|
|
63
|
+
yAxisPadding?: number;
|
|
64
|
+
gridVisible?: boolean;
|
|
65
|
+
gridStyle?: GridStyle;
|
|
66
|
+
gridDensity?: "sparse" | "normal" | "dense";
|
|
67
|
+
accents?: boolean;
|
|
68
|
+
locale?: string;
|
|
69
|
+
timeZone?: string;
|
|
70
|
+
cornerRadius?: number;
|
|
71
|
+
borderWidth?: number;
|
|
72
|
+
digitGrouping?: DigitGrouping;
|
|
73
|
+
numberAbbreviation?: NumberAbbreviation;
|
|
74
|
+
decimalPlaces?: DecimalPlaces;
|
|
75
|
+
currency?: string;
|
|
76
|
+
currencyDisplay?: CurrencyDisplay;
|
|
77
|
+
percentPrecision?: PercentPrecision;
|
|
78
|
+
dateFormat?: DateFormat;
|
|
79
|
+
timeFormat?: TimeFormat;
|
|
80
|
+
}
|
|
81
|
+
export interface PnFChartProviderSnapshot {
|
|
82
|
+
theme: ThemeInput;
|
|
83
|
+
palette: string;
|
|
84
|
+
locale: string;
|
|
85
|
+
timeZone: string | undefined;
|
|
86
|
+
visualStyle: VisualStyle;
|
|
87
|
+
outlineFillColor: "auto" | string;
|
|
88
|
+
outlineFillOpacity: number;
|
|
89
|
+
cornerRadius: number;
|
|
90
|
+
borderWidth: number;
|
|
91
|
+
accents: boolean;
|
|
92
|
+
osTheme: Theme;
|
|
93
|
+
appTheme: Theme;
|
|
94
|
+
}
|
|
95
|
+
export interface PnFChartRenderContext {
|
|
96
|
+
personalization: Personalization;
|
|
97
|
+
formatter: ChartFormatter;
|
|
98
|
+
resolvedLocaleBase: string;
|
|
99
|
+
resolvedTimeZone: string | undefined;
|
|
100
|
+
columns: PnFColumns;
|
|
101
|
+
ariaLabel: string;
|
|
102
|
+
cssWidth: number;
|
|
103
|
+
cssHeight: number;
|
|
104
|
+
}
|
|
105
|
+
export interface HoverState {
|
|
106
|
+
readonly pointerX: number;
|
|
107
|
+
readonly pointerY: number;
|
|
108
|
+
readonly idx: number;
|
|
109
|
+
readonly direction: 1 | -1;
|
|
110
|
+
readonly bottomBox: number;
|
|
111
|
+
readonly topBox: number;
|
|
112
|
+
}
|
|
113
|
+
export interface PnFChartControllerProps extends PnFChartBaseProps {
|
|
114
|
+
tooltip?: undefined | false | ((p: PnFChartTooltipProps) => unknown);
|
|
115
|
+
}
|
|
116
|
+
export interface PnFChartControllerCallbacks {
|
|
117
|
+
onContextChange(ctx: PnFChartRenderContext): void;
|
|
118
|
+
onHoverChange(hover: HoverState | null): void;
|
|
119
|
+
}
|
|
120
|
+
export interface PnFChartControllerMountOptions extends PnFChartControllerCallbacks {
|
|
121
|
+
container?: HTMLElement | null;
|
|
122
|
+
staticCanvas: HTMLCanvasElement;
|
|
123
|
+
dynamicCanvas: HTMLCanvasElement | null;
|
|
124
|
+
initialProps: PnFChartControllerProps;
|
|
125
|
+
initialProvider: PnFChartProviderSnapshot;
|
|
126
|
+
}
|
|
127
|
+
export declare class PnFChartController {
|
|
128
|
+
private staticCanvas;
|
|
129
|
+
private dynamicCanvas;
|
|
130
|
+
private callbacks;
|
|
131
|
+
private props;
|
|
132
|
+
private providerCtx;
|
|
133
|
+
private handle;
|
|
134
|
+
private dynCfg;
|
|
135
|
+
private columns;
|
|
136
|
+
private personalization;
|
|
137
|
+
private resolvedLocale;
|
|
138
|
+
private formatter;
|
|
139
|
+
private symbolStyle;
|
|
140
|
+
private symbolPadding;
|
|
141
|
+
private staticDrawAbort;
|
|
142
|
+
private disposed;
|
|
143
|
+
private visGate;
|
|
144
|
+
constructor(opts: PnFChartControllerMountOptions);
|
|
145
|
+
update(props: PnFChartControllerProps, providerCtx: PnFChartProviderSnapshot): void;
|
|
146
|
+
handlePointerMove(e: PointerEvent): void;
|
|
147
|
+
handlePointerLeave(): void;
|
|
148
|
+
dispose(): void;
|
|
149
|
+
private setHover;
|
|
150
|
+
private resolveDerived;
|
|
151
|
+
private applyDynamicCfgFromProps;
|
|
152
|
+
private runStaticDraw;
|
|
153
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, VisualStyle, Theme, BoxSizingInput, TimeOffSource, 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 { RenkoBricks } from './time-off-algorithms';
|
|
7
|
+
export interface RenkoChartTooltipProps {
|
|
8
|
+
readonly idx: number;
|
|
9
|
+
readonly direction: 1 | -1;
|
|
10
|
+
readonly bottomPrice: number;
|
|
11
|
+
readonly topPrice: number;
|
|
12
|
+
readonly sourceTime: 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 RenkoChartBaseProps {
|
|
24
|
+
/** Required OHLC bars - Renko filters out time and renders fixed-
|
|
25
|
+
* size price-movement bricks. */
|
|
26
|
+
data?: CandleSeriesInput;
|
|
27
|
+
/** Default 'atr-14'. */
|
|
28
|
+
brickSize?: BoxSizingInput;
|
|
29
|
+
/** Default 2. */
|
|
30
|
+
reversalThreshold?: number;
|
|
31
|
+
/** Default 'close'. */
|
|
32
|
+
source?: TimeOffSource;
|
|
33
|
+
/** Default 0 (touching bricks). */
|
|
34
|
+
brickGap?: number;
|
|
35
|
+
crosshairVisible?: boolean;
|
|
36
|
+
crosshairLineStyle?: GridStyle;
|
|
37
|
+
crosshairMarker?: CrosshairMarker;
|
|
38
|
+
width?: number;
|
|
39
|
+
height?: number;
|
|
40
|
+
theme?: ThemeInput;
|
|
41
|
+
palette?: string;
|
|
42
|
+
visualStyle?: "Fill" | "Outline";
|
|
43
|
+
outlineFillColor?: "auto" | string;
|
|
44
|
+
outlineFillOpacity?: number;
|
|
45
|
+
pixelDensityCap?: number;
|
|
46
|
+
fastMode?: boolean;
|
|
47
|
+
/** Glow + glow-color axes. */
|
|
48
|
+
glow?: import('../personalization/axes/glow').GlowInput;
|
|
49
|
+
glowColor?: import('../personalization/axes/glow').GlowColorInput;
|
|
50
|
+
/** Pattern fills. */
|
|
51
|
+
pattern?: import('../personalization/axes/pattern').PatternInput;
|
|
52
|
+
patternScale?: number;
|
|
53
|
+
patternColor?: import('../personalization/axes/pattern').PatternColorInput;
|
|
54
|
+
ariaLabel?: string;
|
|
55
|
+
axisVisible?: boolean;
|
|
56
|
+
yAxisPosition?: YAxisPosition;
|
|
57
|
+
xAxisPosition?: XAxisPosition;
|
|
58
|
+
yAxisPadding?: number;
|
|
59
|
+
gridVisible?: boolean;
|
|
60
|
+
gridStyle?: GridStyle;
|
|
61
|
+
gridDensity?: "sparse" | "normal" | "dense";
|
|
62
|
+
accents?: boolean;
|
|
63
|
+
locale?: string;
|
|
64
|
+
timeZone?: string;
|
|
65
|
+
cornerRadius?: number;
|
|
66
|
+
borderWidth?: number;
|
|
67
|
+
digitGrouping?: DigitGrouping;
|
|
68
|
+
numberAbbreviation?: NumberAbbreviation;
|
|
69
|
+
decimalPlaces?: DecimalPlaces;
|
|
70
|
+
currency?: string;
|
|
71
|
+
currencyDisplay?: CurrencyDisplay;
|
|
72
|
+
percentPrecision?: PercentPrecision;
|
|
73
|
+
dateFormat?: DateFormat;
|
|
74
|
+
timeFormat?: TimeFormat;
|
|
75
|
+
}
|
|
76
|
+
export interface RenkoChartProviderSnapshot {
|
|
77
|
+
theme: ThemeInput;
|
|
78
|
+
palette: string;
|
|
79
|
+
locale: string;
|
|
80
|
+
timeZone: string | undefined;
|
|
81
|
+
visualStyle: VisualStyle;
|
|
82
|
+
outlineFillColor: "auto" | string;
|
|
83
|
+
outlineFillOpacity: number;
|
|
84
|
+
cornerRadius: number;
|
|
85
|
+
borderWidth: number;
|
|
86
|
+
accents: boolean;
|
|
87
|
+
osTheme: Theme;
|
|
88
|
+
appTheme: Theme;
|
|
89
|
+
}
|
|
90
|
+
export interface RenkoChartRenderContext {
|
|
91
|
+
personalization: Personalization;
|
|
92
|
+
formatter: ChartFormatter;
|
|
93
|
+
resolvedLocaleBase: string;
|
|
94
|
+
resolvedTimeZone: string | undefined;
|
|
95
|
+
bricks: RenkoBricks;
|
|
96
|
+
ariaLabel: string;
|
|
97
|
+
cssWidth: number;
|
|
98
|
+
cssHeight: number;
|
|
99
|
+
}
|
|
100
|
+
export interface HoverState {
|
|
101
|
+
readonly pointerX: number;
|
|
102
|
+
readonly pointerY: number;
|
|
103
|
+
readonly snapX: number;
|
|
104
|
+
readonly snapY: number;
|
|
105
|
+
readonly idx: number;
|
|
106
|
+
readonly direction: 1 | -1;
|
|
107
|
+
readonly bottomPrice: number;
|
|
108
|
+
readonly topPrice: number;
|
|
109
|
+
readonly sourceTime: number;
|
|
110
|
+
}
|
|
111
|
+
export interface RenkoChartControllerProps extends RenkoChartBaseProps {
|
|
112
|
+
tooltip?: undefined | false | ((p: RenkoChartTooltipProps) => unknown);
|
|
113
|
+
}
|
|
114
|
+
export interface RenkoChartControllerCallbacks {
|
|
115
|
+
onContextChange(ctx: RenkoChartRenderContext): void;
|
|
116
|
+
onHoverChange(hover: HoverState | null): void;
|
|
117
|
+
}
|
|
118
|
+
export interface RenkoChartControllerMountOptions extends RenkoChartControllerCallbacks {
|
|
119
|
+
container?: HTMLElement | null;
|
|
120
|
+
staticCanvas: HTMLCanvasElement;
|
|
121
|
+
dynamicCanvas: HTMLCanvasElement | null;
|
|
122
|
+
initialProps: RenkoChartControllerProps;
|
|
123
|
+
initialProvider: RenkoChartProviderSnapshot;
|
|
124
|
+
}
|
|
125
|
+
export declare class RenkoChartController {
|
|
126
|
+
private staticCanvas;
|
|
127
|
+
private dynamicCanvas;
|
|
128
|
+
private callbacks;
|
|
129
|
+
private props;
|
|
130
|
+
private providerCtx;
|
|
131
|
+
private handle;
|
|
132
|
+
private dynCfg;
|
|
133
|
+
private bricks;
|
|
134
|
+
private candleTimes;
|
|
135
|
+
private personalization;
|
|
136
|
+
private resolvedLocale;
|
|
137
|
+
private formatter;
|
|
138
|
+
private brickGap;
|
|
139
|
+
private staticDrawAbort;
|
|
140
|
+
private disposed;
|
|
141
|
+
private visGate;
|
|
142
|
+
constructor(opts: RenkoChartControllerMountOptions);
|
|
143
|
+
update(props: RenkoChartControllerProps, providerCtx: RenkoChartProviderSnapshot): void;
|
|
144
|
+
handlePointerMove(e: PointerEvent): void;
|
|
145
|
+
handlePointerLeave(): void;
|
|
146
|
+
dispose(): void;
|
|
147
|
+
private setHover;
|
|
148
|
+
private resolveDerived;
|
|
149
|
+
private applyDynamicCfgFromProps;
|
|
150
|
+
private runStaticDraw;
|
|
151
|
+
}
|