@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,84 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, VisualStyle, Theme, ResolvedMidLine, ResolvedLevelHighlight, SpreadDisplayMode, DepthFillType, PriceRangeWindow, ChartFormatter } from '../personalization';
|
|
2
|
+
import { DepthSeries } from './depth-series';
|
|
3
|
+
import { HoverState, DepthChartBaseProps, DepthChartTooltipProps } from './depth-chart-helpers';
|
|
4
|
+
export interface DepthChartProviderSnapshot {
|
|
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 DepthChartRenderContext {
|
|
19
|
+
personalization: Personalization;
|
|
20
|
+
formatter: ChartFormatter;
|
|
21
|
+
resolvedLocaleBase: string;
|
|
22
|
+
resolvedTimeZone: string | undefined;
|
|
23
|
+
series: DepthSeries;
|
|
24
|
+
resolvedPriceWindow: {
|
|
25
|
+
min: number;
|
|
26
|
+
max: number;
|
|
27
|
+
};
|
|
28
|
+
resolvedPriceRange: PriceRangeWindow;
|
|
29
|
+
resolvedMidLine: ResolvedMidLine | null;
|
|
30
|
+
resolvedSpreadDisplay: SpreadDisplayMode;
|
|
31
|
+
resolvedFillType: DepthFillType;
|
|
32
|
+
resolvedLevelHighlight: ResolvedLevelHighlight | null;
|
|
33
|
+
cumulative: boolean;
|
|
34
|
+
ariaLabel: string;
|
|
35
|
+
cssWidth: number;
|
|
36
|
+
cssHeight: number;
|
|
37
|
+
}
|
|
38
|
+
export interface DepthChartControllerCallbacks {
|
|
39
|
+
onContextChange(ctx: DepthChartRenderContext): void;
|
|
40
|
+
onHoverChange(hover: HoverState | null): void;
|
|
41
|
+
}
|
|
42
|
+
export interface DepthChartControllerProps extends DepthChartBaseProps {
|
|
43
|
+
tooltip?: undefined | false | ((p: DepthChartTooltipProps) => unknown);
|
|
44
|
+
}
|
|
45
|
+
export interface DepthChartControllerMountOptions extends DepthChartControllerCallbacks {
|
|
46
|
+
container?: HTMLElement | null;
|
|
47
|
+
staticCanvas: HTMLCanvasElement;
|
|
48
|
+
dynamicCanvas: HTMLCanvasElement | null;
|
|
49
|
+
initialProps: DepthChartControllerProps;
|
|
50
|
+
initialProvider: DepthChartProviderSnapshot;
|
|
51
|
+
}
|
|
52
|
+
export declare class DepthChartController {
|
|
53
|
+
private staticCanvas;
|
|
54
|
+
private dynamicCanvas;
|
|
55
|
+
private callbacks;
|
|
56
|
+
private props;
|
|
57
|
+
private providerCtx;
|
|
58
|
+
private handle;
|
|
59
|
+
private hoverState;
|
|
60
|
+
private dynCfg;
|
|
61
|
+
private series;
|
|
62
|
+
private personalization;
|
|
63
|
+
private resolvedLocale;
|
|
64
|
+
private formatter;
|
|
65
|
+
private resolvedPriceRange;
|
|
66
|
+
private resolvedPriceWindow;
|
|
67
|
+
private resolvedMidLine;
|
|
68
|
+
private resolvedSpreadDisplay;
|
|
69
|
+
private resolvedFillType;
|
|
70
|
+
private resolvedLevelHighlight;
|
|
71
|
+
private cumulative;
|
|
72
|
+
private staticDrawAbort;
|
|
73
|
+
private disposed;
|
|
74
|
+
private visGate;
|
|
75
|
+
constructor(opts: DepthChartControllerMountOptions);
|
|
76
|
+
update(props: DepthChartControllerProps, providerCtx: DepthChartProviderSnapshot): void;
|
|
77
|
+
handlePointerMove(e: PointerEvent): void;
|
|
78
|
+
handlePointerLeave(): void;
|
|
79
|
+
dispose(): void;
|
|
80
|
+
private setHover;
|
|
81
|
+
private resolveDerived;
|
|
82
|
+
private applyDynamicCfgFromProps;
|
|
83
|
+
private runStaticDraw;
|
|
84
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, DigitGrouping, NumberAbbreviation, DecimalPlaces, CurrencyDisplay, PercentPrecision, DateFormat, TimeFormat, LegendPosition, LegendVisibility, PriceRangeInput, MidLineInput, SpreadDisplayInput, DepthFillType, LevelHighlightInput, ResolvedMidLine, ResolvedLevelHighlight, 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
|
+
import { DepthSeries } from './depth-series';
|
|
9
|
+
export type { DepthLevel, DepthSeriesInput, } from './depth-series';
|
|
10
|
+
export interface DepthChartTooltipProps {
|
|
11
|
+
/** Which side the cursor is over. */
|
|
12
|
+
readonly side: "bid" | "ask";
|
|
13
|
+
/** Price at the cursor's x. */
|
|
14
|
+
readonly price: number;
|
|
15
|
+
/** Cumulative volume at that price (the chart's y value). */
|
|
16
|
+
readonly cumulativeVolume: number;
|
|
17
|
+
/** Distance from the mid price as a fraction (e.g. -0.025 = 2.5% below mid). */
|
|
18
|
+
readonly pctFromMid: number;
|
|
19
|
+
readonly pointerX: number;
|
|
20
|
+
readonly pointerY: number;
|
|
21
|
+
readonly containerWidth: number;
|
|
22
|
+
readonly containerHeight: number;
|
|
23
|
+
readonly theme: import('../personalization').Theme;
|
|
24
|
+
readonly palette: import('../personalization').Palette;
|
|
25
|
+
readonly locale: string;
|
|
26
|
+
readonly timeZone: string | undefined;
|
|
27
|
+
readonly formatter: ChartFormatter;
|
|
28
|
+
}
|
|
29
|
+
export interface DepthChartBaseProps {
|
|
30
|
+
/** Orderbook data - bids + asks parallel typed arrays. */
|
|
31
|
+
data?: import('./depth-series').DepthSeriesInput;
|
|
32
|
+
/** Default 'auto' (±5%). */
|
|
33
|
+
priceRange?: PriceRangeInput;
|
|
34
|
+
/** Default true (solid neutral line). */
|
|
35
|
+
midLine?: MidLineInput;
|
|
36
|
+
/** Default 'pill'. */
|
|
37
|
+
spreadDisplay?: SpreadDisplayInput;
|
|
38
|
+
/** Default true. */
|
|
39
|
+
cumulative?: boolean;
|
|
40
|
+
/** Default 'gradient'. */
|
|
41
|
+
fillType?: DepthFillType;
|
|
42
|
+
/** Default false. */
|
|
43
|
+
levelHighlight?: LevelHighlightInput;
|
|
44
|
+
/** Per-level data for `levelHighlight` - host-supplied. */
|
|
45
|
+
highlightLevels?: ReadonlyArray<{
|
|
46
|
+
readonly price: number;
|
|
47
|
+
readonly label?: string;
|
|
48
|
+
}>;
|
|
49
|
+
legend?: LegendVisibility;
|
|
50
|
+
legendPosition?: LegendPosition;
|
|
51
|
+
crosshairVisible?: boolean;
|
|
52
|
+
crosshairLineStyle?: GridStyle;
|
|
53
|
+
crosshairMarker?: CrosshairMarker;
|
|
54
|
+
width?: number;
|
|
55
|
+
height?: number;
|
|
56
|
+
theme?: ThemeInput;
|
|
57
|
+
palette?: string;
|
|
58
|
+
visualStyle?: "Fill" | "Outline";
|
|
59
|
+
outlineFillColor?: "auto" | string;
|
|
60
|
+
outlineFillOpacity?: number;
|
|
61
|
+
pixelDensityCap?: number;
|
|
62
|
+
fastMode?: boolean;
|
|
63
|
+
/** Glow + glow-color axes. */
|
|
64
|
+
glow?: import('../personalization/axes/glow').GlowInput;
|
|
65
|
+
glowColor?: import('../personalization/axes/glow').GlowColorInput;
|
|
66
|
+
/** Pattern fills. */
|
|
67
|
+
pattern?: import('../personalization/axes/pattern').PatternInput;
|
|
68
|
+
patternScale?: number;
|
|
69
|
+
patternColor?: import('../personalization/axes/pattern').PatternColorInput;
|
|
70
|
+
ariaLabel?: string;
|
|
71
|
+
axisVisible?: boolean;
|
|
72
|
+
yAxisPosition?: YAxisPosition;
|
|
73
|
+
xAxisPosition?: XAxisPosition;
|
|
74
|
+
yAxisPadding?: number;
|
|
75
|
+
gridVisible?: boolean;
|
|
76
|
+
gridStyle?: GridStyle;
|
|
77
|
+
gridDensity?: "sparse" | "normal" | "dense";
|
|
78
|
+
accents?: boolean;
|
|
79
|
+
locale?: string;
|
|
80
|
+
timeZone?: string;
|
|
81
|
+
digitGrouping?: DigitGrouping;
|
|
82
|
+
numberAbbreviation?: NumberAbbreviation;
|
|
83
|
+
decimalPlaces?: DecimalPlaces;
|
|
84
|
+
currency?: string;
|
|
85
|
+
currencyDisplay?: CurrencyDisplay;
|
|
86
|
+
percentPrecision?: PercentPrecision;
|
|
87
|
+
dateFormat?: DateFormat;
|
|
88
|
+
timeFormat?: TimeFormat;
|
|
89
|
+
}
|
|
90
|
+
export declare const DEFAULT_FONT = "12px system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif";
|
|
91
|
+
export declare const DEFAULT_AXIS_FONT_SIZE = 11;
|
|
92
|
+
export declare const LABEL_GAP_PX = 6;
|
|
93
|
+
export declare const TICK_LENGTH_PX = 4;
|
|
94
|
+
export declare const Y_AXIS_RESERVE_PX = 80;
|
|
95
|
+
export declare const X_AXIS_RESERVE_PX = 28;
|
|
96
|
+
export declare const GRID_TARGET: {
|
|
97
|
+
readonly sparse: 4;
|
|
98
|
+
readonly normal: 8;
|
|
99
|
+
readonly dense: 12;
|
|
100
|
+
};
|
|
101
|
+
export interface HoverState {
|
|
102
|
+
readonly pointerX: number;
|
|
103
|
+
readonly pointerY: number;
|
|
104
|
+
readonly snapX: number;
|
|
105
|
+
readonly snapY: number;
|
|
106
|
+
readonly side: "bid" | "ask";
|
|
107
|
+
readonly price: number;
|
|
108
|
+
readonly cumulativeVolume: number;
|
|
109
|
+
readonly pctFromMid: number;
|
|
110
|
+
}
|
|
111
|
+
export interface DynamicCfg {
|
|
112
|
+
readonly crosshairVisible: boolean;
|
|
113
|
+
readonly crosshairLineStyle: GridStyle;
|
|
114
|
+
readonly crosshairMarker: CrosshairMarker;
|
|
115
|
+
}
|
|
116
|
+
export interface ChartLayout {
|
|
117
|
+
innerLeft: number;
|
|
118
|
+
innerRight: number;
|
|
119
|
+
innerTop: number;
|
|
120
|
+
innerBottom: number;
|
|
121
|
+
/** Maps a price to an x-pixel. */
|
|
122
|
+
xScale: LinearScale;
|
|
123
|
+
/** Maps a cumulative volume to a y-pixel. */
|
|
124
|
+
yScale: LinearScale;
|
|
125
|
+
xTicks: readonly NiceTick[];
|
|
126
|
+
yTicks: readonly NiceTick[];
|
|
127
|
+
/** Visible price window. */
|
|
128
|
+
priceMin: number;
|
|
129
|
+
priceMax: number;
|
|
130
|
+
/** Mid price (NaN if data is empty). */
|
|
131
|
+
midPrice: number;
|
|
132
|
+
viewport: Viewport;
|
|
133
|
+
}
|
|
134
|
+
export interface ChartHandle {
|
|
135
|
+
readonly dynamicCtx: CanvasRenderingContext2D | null;
|
|
136
|
+
readonly layout: ChartLayout;
|
|
137
|
+
readonly crosshairLineColor: string;
|
|
138
|
+
readonly crosshairMarkerFill: string;
|
|
139
|
+
readonly crosshairMarkerStroke: string;
|
|
140
|
+
readonly bidColor: string;
|
|
141
|
+
readonly askColor: string;
|
|
142
|
+
}
|
|
143
|
+
export declare function computeLayout(opts: {
|
|
144
|
+
series: DepthSeries;
|
|
145
|
+
priceWindow: {
|
|
146
|
+
min: number;
|
|
147
|
+
max: number;
|
|
148
|
+
};
|
|
149
|
+
viewport: Viewport;
|
|
150
|
+
yAxisPosition: YAxisPosition;
|
|
151
|
+
xAxisPosition: XAxisPosition;
|
|
152
|
+
yAxisPadding: number;
|
|
153
|
+
gridDensity: "sparse" | "normal" | "dense";
|
|
154
|
+
axisVisible: boolean;
|
|
155
|
+
formatter: ChartFormatter;
|
|
156
|
+
}): ChartLayout;
|
|
157
|
+
export declare function defaultAriaLabel(series: DepthSeries): string;
|
|
158
|
+
export interface DrawFullDepthArgs {
|
|
159
|
+
ctx: CanvasRenderingContext2D;
|
|
160
|
+
series: DepthSeries;
|
|
161
|
+
personalization: Personalization;
|
|
162
|
+
accents: boolean;
|
|
163
|
+
layout: ChartLayout;
|
|
164
|
+
axisVisible: boolean;
|
|
165
|
+
gridVisible: boolean;
|
|
166
|
+
gridStyle: GridStyle;
|
|
167
|
+
yAxisPosition: YAxisPosition;
|
|
168
|
+
xAxisPosition: XAxisPosition;
|
|
169
|
+
cumulative: boolean;
|
|
170
|
+
fillType: DepthFillType;
|
|
171
|
+
midLine: ResolvedMidLine | null;
|
|
172
|
+
spreadDisplay: "off" | "pill" | "inline";
|
|
173
|
+
levelHighlight: ResolvedLevelHighlight | null;
|
|
174
|
+
highlightLevels: ReadonlyArray<{
|
|
175
|
+
price: number;
|
|
176
|
+
label?: string;
|
|
177
|
+
}>;
|
|
178
|
+
formatter: ChartFormatter;
|
|
179
|
+
}
|
|
180
|
+
export declare function drawFullDepthChart(args: DrawFullDepthArgs): void;
|
|
181
|
+
export declare function drawDepthDynamicLayer(handle: ChartHandle, hover: HoverState | null, cfg: DynamicCfg): void;
|
|
182
|
+
export declare function findCumulativeAtPrice(prices: Float64Array, cumulative: Float64Array, n: number, price: number, side: "bid" | "ask"): {
|
|
183
|
+
idx: number;
|
|
184
|
+
cumulative: number;
|
|
185
|
+
} | null;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface DepthLevel {
|
|
2
|
+
readonly price: number;
|
|
3
|
+
readonly size: number;
|
|
4
|
+
}
|
|
5
|
+
export interface DepthSeriesInput {
|
|
6
|
+
readonly bids: readonly DepthLevel[] | {
|
|
7
|
+
readonly prices: Float64Array;
|
|
8
|
+
readonly sizes: Float64Array;
|
|
9
|
+
};
|
|
10
|
+
readonly asks: readonly DepthLevel[] | {
|
|
11
|
+
readonly prices: Float64Array;
|
|
12
|
+
readonly sizes: Float64Array;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare class DepthSeries {
|
|
16
|
+
#private;
|
|
17
|
+
readonly bidPrices: Float64Array;
|
|
18
|
+
readonly bidSizes: Float64Array;
|
|
19
|
+
readonly bidCumulative: Float64Array;
|
|
20
|
+
readonly askPrices: Float64Array;
|
|
21
|
+
readonly askSizes: Float64Array;
|
|
22
|
+
readonly askCumulative: Float64Array;
|
|
23
|
+
readonly bestBid: number;
|
|
24
|
+
readonly bestAsk: number;
|
|
25
|
+
readonly midPrice: number;
|
|
26
|
+
readonly spread: number;
|
|
27
|
+
constructor(bidPrices: Float64Array, bidSizes: Float64Array, bidCumulative: Float64Array, askPrices: Float64Array, askSizes: Float64Array, askCumulative: Float64Array);
|
|
28
|
+
get revisionId(): number;
|
|
29
|
+
bumpRevision(): number;
|
|
30
|
+
}
|
|
31
|
+
export declare function ingestDepthSeries(input: DepthSeriesInput): DepthSeries;
|
|
32
|
+
/** In-order running sum: `out[i] = Σ sizes[0..i]`. Caller-owned buffer. */
|
|
33
|
+
export declare function computeCumulative(sizes: Float64Array, n: number, out: Float64Array): void;
|
|
34
|
+
/** Compute the visible price window from a mid price + percentage range. */
|
|
35
|
+
export declare function visiblePriceWindow(midPrice: number, range: {
|
|
36
|
+
readonly minPct: number;
|
|
37
|
+
readonly maxPct: number;
|
|
38
|
+
}): {
|
|
39
|
+
min: number;
|
|
40
|
+
max: number;
|
|
41
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, VisualStyle, Theme, ResolvedHeatmapColorScale, CellShape, NullBehavior, AxisLabelsMode, ChartFormatter } from '../personalization';
|
|
2
|
+
import { HoverState, HeatmapChartBaseProps, HeatmapChartTooltipProps, HeatmapMatrix } from './heatmap-chart-helpers';
|
|
3
|
+
import { ResolvedHeatmapDomain } from './heatmap-color-compute';
|
|
4
|
+
export interface HeatmapChartProviderSnapshot {
|
|
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 HeatmapChartRenderContext {
|
|
19
|
+
personalization: Personalization;
|
|
20
|
+
formatter: ChartFormatter;
|
|
21
|
+
resolvedLocaleBase: string;
|
|
22
|
+
resolvedTimeZone: string | undefined;
|
|
23
|
+
matrix: HeatmapMatrix;
|
|
24
|
+
resolvedColorScale: ResolvedHeatmapColorScale;
|
|
25
|
+
resolvedDomain: ResolvedHeatmapDomain;
|
|
26
|
+
cellShape: CellShape;
|
|
27
|
+
nullBehavior: NullBehavior;
|
|
28
|
+
axisLabels: AxisLabelsMode;
|
|
29
|
+
ariaLabel: string;
|
|
30
|
+
cssWidth: number;
|
|
31
|
+
cssHeight: number;
|
|
32
|
+
}
|
|
33
|
+
export interface HeatmapChartControllerCallbacks {
|
|
34
|
+
onContextChange(ctx: HeatmapChartRenderContext): void;
|
|
35
|
+
onHoverChange(hover: HoverState | null): void;
|
|
36
|
+
}
|
|
37
|
+
export interface HeatmapChartControllerProps extends HeatmapChartBaseProps {
|
|
38
|
+
tooltip?: undefined | false | ((p: HeatmapChartTooltipProps) => unknown);
|
|
39
|
+
}
|
|
40
|
+
export interface HeatmapChartControllerMountOptions extends HeatmapChartControllerCallbacks {
|
|
41
|
+
container?: HTMLElement | null;
|
|
42
|
+
staticCanvas: HTMLCanvasElement;
|
|
43
|
+
dynamicCanvas: HTMLCanvasElement | null;
|
|
44
|
+
initialProps: HeatmapChartControllerProps;
|
|
45
|
+
initialProvider: HeatmapChartProviderSnapshot;
|
|
46
|
+
}
|
|
47
|
+
export declare class HeatmapChartController {
|
|
48
|
+
private staticCanvas;
|
|
49
|
+
private dynamicCanvas;
|
|
50
|
+
private callbacks;
|
|
51
|
+
private props;
|
|
52
|
+
private providerCtx;
|
|
53
|
+
private handle;
|
|
54
|
+
private hoverState;
|
|
55
|
+
private dynCfg;
|
|
56
|
+
private matrix;
|
|
57
|
+
private personalization;
|
|
58
|
+
private resolvedLocale;
|
|
59
|
+
private formatter;
|
|
60
|
+
private resolvedColorScale;
|
|
61
|
+
private resolvedDomain;
|
|
62
|
+
private cellShape;
|
|
63
|
+
private nullBehavior;
|
|
64
|
+
private axisLabels;
|
|
65
|
+
private cellColors;
|
|
66
|
+
private staticDrawAbort;
|
|
67
|
+
private disposed;
|
|
68
|
+
private visGate;
|
|
69
|
+
constructor(opts: HeatmapChartControllerMountOptions);
|
|
70
|
+
update(props: HeatmapChartControllerProps, providerCtx: HeatmapChartProviderSnapshot): void;
|
|
71
|
+
handlePointerMove(e: PointerEvent): void;
|
|
72
|
+
handlePointerLeave(): void;
|
|
73
|
+
dispose(): void;
|
|
74
|
+
private setHover;
|
|
75
|
+
private resolveDerived;
|
|
76
|
+
private applyDynamicCfgFromProps;
|
|
77
|
+
private runStaticDraw;
|
|
78
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { Personalization, ThemeInput, DigitGrouping, NumberAbbreviation, DecimalPlaces, CurrencyDisplay, PercentPrecision, DateFormat, TimeFormat, LegendPosition, LegendVisibility, HeatmapColorScaleInput, CellShape, NullBehavior, AxisLabelsMode, ChartFormatter } from '../personalization';
|
|
2
|
+
import { Viewport } from '../viewport/viewport-sizer';
|
|
3
|
+
import { GridStyle } from '../rendering/draw/grid';
|
|
4
|
+
import { CrosshairMarker } from '../rendering/draw/crosshair';
|
|
5
|
+
import { ResolvedHeatmapDomain } from './heatmap-color-compute';
|
|
6
|
+
export interface HeatmapMatrixInput {
|
|
7
|
+
/** Number of rows (y-axis cells). */
|
|
8
|
+
readonly rows: number;
|
|
9
|
+
/** Number of columns (x-axis cells). */
|
|
10
|
+
readonly cols: number;
|
|
11
|
+
/** Cell values, row-major (`values[r * cols + c]`). Length = rows × cols. */
|
|
12
|
+
readonly values: Float64Array | readonly number[];
|
|
13
|
+
/** Optional per-row labels (length = rows). When omitted, row indices. */
|
|
14
|
+
readonly rowLabels?: readonly string[];
|
|
15
|
+
/** Optional per-column labels (length = cols). When omitted, column indices. */
|
|
16
|
+
readonly colLabels?: readonly string[];
|
|
17
|
+
/** Optional null mask, row-major (`1` = null cell, `0` = value). */
|
|
18
|
+
readonly nullMask?: Uint8Array | readonly number[];
|
|
19
|
+
}
|
|
20
|
+
export declare class HeatmapMatrix {
|
|
21
|
+
#private;
|
|
22
|
+
readonly rows: number;
|
|
23
|
+
readonly cols: number;
|
|
24
|
+
readonly values: Float64Array;
|
|
25
|
+
readonly rowLabels: readonly string[] | null;
|
|
26
|
+
readonly colLabels: readonly string[] | null;
|
|
27
|
+
readonly nullMask: Uint8Array | null;
|
|
28
|
+
readonly length: number;
|
|
29
|
+
constructor(rows: number, cols: number, values: Float64Array, rowLabels: readonly string[] | null, colLabels: readonly string[] | null, nullMask: Uint8Array | null);
|
|
30
|
+
get revisionId(): number;
|
|
31
|
+
bumpRevision(): number;
|
|
32
|
+
}
|
|
33
|
+
export declare function ingestHeatmapMatrix(input: HeatmapMatrixInput): HeatmapMatrix;
|
|
34
|
+
export interface HeatmapChartTooltipProps {
|
|
35
|
+
readonly row: number;
|
|
36
|
+
readonly col: number;
|
|
37
|
+
readonly value: number | null;
|
|
38
|
+
readonly rowLabel: string;
|
|
39
|
+
readonly colLabel: string;
|
|
40
|
+
readonly pointerX: number;
|
|
41
|
+
readonly pointerY: number;
|
|
42
|
+
readonly containerWidth: number;
|
|
43
|
+
readonly containerHeight: number;
|
|
44
|
+
readonly theme: import('../personalization').Theme;
|
|
45
|
+
readonly palette: import('../personalization').Palette;
|
|
46
|
+
readonly locale: string;
|
|
47
|
+
readonly timeZone: string | undefined;
|
|
48
|
+
readonly formatter: ChartFormatter;
|
|
49
|
+
}
|
|
50
|
+
export interface HeatmapChartBaseProps {
|
|
51
|
+
/** Row-major matrix of values to color. See `HeatmapMatrixInput`
|
|
52
|
+
* for the row labels / col labels / values shape. */
|
|
53
|
+
data?: HeatmapMatrixInput;
|
|
54
|
+
/** Default 'diverging'. */
|
|
55
|
+
colorScale?: HeatmapColorScaleInput;
|
|
56
|
+
/** Default 2 px (gapUnit). */
|
|
57
|
+
cellPadding?: number;
|
|
58
|
+
/** Default 'rect'. */
|
|
59
|
+
cellShape?: CellShape;
|
|
60
|
+
/** Default false. true = auto-contrast text per cell. */
|
|
61
|
+
valueDisplay?: boolean;
|
|
62
|
+
/** Default 'both'. */
|
|
63
|
+
axisLabels?: AxisLabelsMode;
|
|
64
|
+
/** Default 'cross-hatch'. */
|
|
65
|
+
nullBehavior?: NullBehavior;
|
|
66
|
+
legend?: LegendVisibility;
|
|
67
|
+
legendPosition?: LegendPosition;
|
|
68
|
+
crosshairVisible?: boolean;
|
|
69
|
+
crosshairLineStyle?: GridStyle;
|
|
70
|
+
crosshairMarker?: CrosshairMarker;
|
|
71
|
+
width?: number;
|
|
72
|
+
height?: number;
|
|
73
|
+
theme?: ThemeInput;
|
|
74
|
+
palette?: string;
|
|
75
|
+
visualStyle?: "Fill" | "Outline";
|
|
76
|
+
outlineFillColor?: "auto" | string;
|
|
77
|
+
outlineFillOpacity?: number;
|
|
78
|
+
pixelDensityCap?: number;
|
|
79
|
+
fastMode?: boolean;
|
|
80
|
+
/** Glow + glow-color axes. */
|
|
81
|
+
glow?: import('../personalization/axes/glow').GlowInput;
|
|
82
|
+
glowColor?: import('../personalization/axes/glow').GlowColorInput;
|
|
83
|
+
/** Pattern fills. */
|
|
84
|
+
pattern?: import('../personalization/axes/pattern').PatternInput;
|
|
85
|
+
patternScale?: number;
|
|
86
|
+
patternColor?: import('../personalization/axes/pattern').PatternColorInput;
|
|
87
|
+
ariaLabel?: string;
|
|
88
|
+
accents?: boolean;
|
|
89
|
+
locale?: string;
|
|
90
|
+
timeZone?: string;
|
|
91
|
+
cornerRadius?: number;
|
|
92
|
+
borderWidth?: number;
|
|
93
|
+
digitGrouping?: DigitGrouping;
|
|
94
|
+
numberAbbreviation?: NumberAbbreviation;
|
|
95
|
+
decimalPlaces?: DecimalPlaces;
|
|
96
|
+
currency?: string;
|
|
97
|
+
currencyDisplay?: CurrencyDisplay;
|
|
98
|
+
percentPrecision?: PercentPrecision;
|
|
99
|
+
dateFormat?: DateFormat;
|
|
100
|
+
timeFormat?: TimeFormat;
|
|
101
|
+
}
|
|
102
|
+
export declare const DEFAULT_FONT = "12px system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif";
|
|
103
|
+
export declare const DEFAULT_AXIS_FONT_SIZE = 11;
|
|
104
|
+
export declare const DEFAULT_CELL_PADDING_PX = 2;
|
|
105
|
+
export declare const DEFAULT_VALUE_FONT_SIZE = 10;
|
|
106
|
+
export declare const ROW_LABEL_RESERVE_PX = 64;
|
|
107
|
+
export declare const COL_LABEL_RESERVE_PX = 24;
|
|
108
|
+
export declare const VALUE_LABEL_MIN_CELL_PX = 28;
|
|
109
|
+
export interface HoverState {
|
|
110
|
+
readonly pointerX: number;
|
|
111
|
+
readonly pointerY: number;
|
|
112
|
+
readonly snapX: number;
|
|
113
|
+
readonly snapY: number;
|
|
114
|
+
readonly row: number;
|
|
115
|
+
readonly col: number;
|
|
116
|
+
readonly value: number | null;
|
|
117
|
+
readonly rowLabel: string;
|
|
118
|
+
readonly colLabel: string;
|
|
119
|
+
}
|
|
120
|
+
export interface DynamicCfg {
|
|
121
|
+
readonly crosshairVisible: boolean;
|
|
122
|
+
readonly crosshairLineStyle: GridStyle;
|
|
123
|
+
readonly crosshairMarker: CrosshairMarker;
|
|
124
|
+
}
|
|
125
|
+
export interface ChartLayout {
|
|
126
|
+
innerLeft: number;
|
|
127
|
+
innerRight: number;
|
|
128
|
+
innerTop: number;
|
|
129
|
+
innerBottom: number;
|
|
130
|
+
cellWidthPx: number;
|
|
131
|
+
cellHeightPx: number;
|
|
132
|
+
rows: number;
|
|
133
|
+
cols: number;
|
|
134
|
+
viewport: Viewport;
|
|
135
|
+
}
|
|
136
|
+
export interface ChartHandle {
|
|
137
|
+
readonly dynamicCtx: CanvasRenderingContext2D | null;
|
|
138
|
+
readonly layout: ChartLayout;
|
|
139
|
+
readonly crosshairLineColor: string;
|
|
140
|
+
readonly crosshairMarkerFill: string;
|
|
141
|
+
readonly crosshairMarkerStroke: string;
|
|
142
|
+
}
|
|
143
|
+
export declare function computeLayout(opts: {
|
|
144
|
+
matrix: HeatmapMatrix;
|
|
145
|
+
viewport: Viewport;
|
|
146
|
+
axisLabels: AxisLabelsMode;
|
|
147
|
+
}): ChartLayout;
|
|
148
|
+
export declare function defaultAriaLabel(matrix: HeatmapMatrix): string;
|
|
149
|
+
export interface DrawFullHeatmapArgs {
|
|
150
|
+
ctx: CanvasRenderingContext2D;
|
|
151
|
+
matrix: HeatmapMatrix;
|
|
152
|
+
/** Pre-computed CSS color per cell (length = rows × cols). Empty string =
|
|
153
|
+
* null sentinel, drawn per `nullBehavior`. */
|
|
154
|
+
cellColors: readonly string[];
|
|
155
|
+
personalization: Personalization;
|
|
156
|
+
layout: ChartLayout;
|
|
157
|
+
cellShape: CellShape;
|
|
158
|
+
cellPadding: number;
|
|
159
|
+
cornerRadius: number;
|
|
160
|
+
borderWidth: number;
|
|
161
|
+
axisLabels: AxisLabelsMode;
|
|
162
|
+
valueDisplay: boolean;
|
|
163
|
+
nullBehavior: NullBehavior;
|
|
164
|
+
/** Resolved domain - for value-label numeric formatting. */
|
|
165
|
+
domain: ResolvedHeatmapDomain;
|
|
166
|
+
formatter: ChartFormatter;
|
|
167
|
+
accents: boolean;
|
|
168
|
+
}
|
|
169
|
+
export declare function drawFullHeatmapChart(args: DrawFullHeatmapArgs): void;
|
|
170
|
+
export declare function drawHeatmapDynamicLayer(handle: ChartHandle, hover: HoverState | null, cfg: DynamicCfg): void;
|
|
171
|
+
export declare function findCellAt(layout: ChartLayout, px: number, py: number): {
|
|
172
|
+
row: number;
|
|
173
|
+
col: number;
|
|
174
|
+
} | null;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PaletteVariant } from '../personalization/palette/types';
|
|
2
|
+
import { ResolvedHeatmapColorScale } from '../personalization/axes/heatmap-color-scale';
|
|
3
|
+
export interface ResolvedHeatmapDomain {
|
|
4
|
+
readonly min: number;
|
|
5
|
+
readonly max: number;
|
|
6
|
+
readonly midpoint: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function computeHeatmapDomain(values: Float64Array, n: number, nullMask: Uint8Array | null, scale: ResolvedHeatmapColorScale): ResolvedHeatmapDomain;
|
|
9
|
+
/** Build per-cell CSS color strings into the caller-owned `out` array.
|
|
10
|
+
* `out.length` must equal `n`. */
|
|
11
|
+
export declare function buildHeatmapColors(values: Float64Array, n: number, nullMask: Uint8Array | null, scale: ResolvedHeatmapColorScale, domain: ResolvedHeatmapDomain, variant: PaletteVariant, out: string[]): void;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface HierarchyNode {
|
|
2
|
+
readonly name: string;
|
|
3
|
+
/** Optional explicit value. Internal-node values are always overridden
|
|
4
|
+
* by the sum of leaf-descendant values (treemap layout invariant). */
|
|
5
|
+
readonly value?: number;
|
|
6
|
+
/** Optional CSS color override; auto-cycle through palette.categorical. */
|
|
7
|
+
readonly color?: string;
|
|
8
|
+
/** Optional signed percent change (e.g. `-2.2`,
|
|
9
|
+
* `1.7`). When supplied, drives the `'directional'` color scale + the
|
|
10
|
+
* `'ticker'` label preset (▲/▼ glyph + magnitude). Internal-node deltas
|
|
11
|
+
* are computed at ingest time as the value-weighted average of leaf
|
|
12
|
+
* descendants. */
|
|
13
|
+
readonly delta?: number;
|
|
14
|
+
/** Optional secondary line rendered below the name in 'ticker' label
|
|
15
|
+
* layout (e.g. company name beneath the symbol). */
|
|
16
|
+
readonly sublabel?: string;
|
|
17
|
+
readonly children?: readonly HierarchyNode[];
|
|
18
|
+
}
|
|
19
|
+
export interface Hierarchy {
|
|
20
|
+
readonly names: readonly string[];
|
|
21
|
+
/** Per-node aggregate value. Internal nodes carry the sum of leaf descendants. */
|
|
22
|
+
readonly values: Float64Array;
|
|
23
|
+
/** Per-node signed delta percent. NaN sentinel = no delta available. */
|
|
24
|
+
readonly deltas: Float64Array;
|
|
25
|
+
/** Optional secondary line per node ('' when absent). */
|
|
26
|
+
readonly sublabels: readonly string[];
|
|
27
|
+
/** Tree depth (root = 0). */
|
|
28
|
+
readonly depths: Int32Array;
|
|
29
|
+
/** Parent node id (-1 for root). */
|
|
30
|
+
readonly parents: Int32Array;
|
|
31
|
+
/** First child id (-1 if leaf). */
|
|
32
|
+
readonly firstChildIdx: Int32Array;
|
|
33
|
+
/** Number of immediate children. */
|
|
34
|
+
readonly childCount: Int32Array;
|
|
35
|
+
/** Subtree size (1 = leaf, 1 + sum of children's subtreeSize for internal). */
|
|
36
|
+
readonly subtreeSize: Int32Array;
|
|
37
|
+
/** Per-node color overrides; null = auto-cycle palette.categorical. */
|
|
38
|
+
readonly colorOverrides: readonly (string | null)[];
|
|
39
|
+
readonly length: number;
|
|
40
|
+
}
|
|
41
|
+
export declare function ingestHierarchy(root: HierarchyNode): Hierarchy;
|
|
42
|
+
export declare function totalDescendantValue(h: Hierarchy, idx: number): number;
|
|
43
|
+
/** Resolve a path of names to its node index. `[]` returns the root.
|
|
44
|
+
* Returns -1 if any segment doesn't exist. */
|
|
45
|
+
export declare function descendantsOfPath(h: Hierarchy, path: readonly string[]): number;
|
|
46
|
+
/** Iterate immediate children of `parentIdx`. Calls `visitor(childIdx)` for each. */
|
|
47
|
+
export declare function forEachChild(h: Hierarchy, parentIdx: number, visitor: (childIdx: number) => void): void;
|
|
48
|
+
/** Iterate every descendant of `rootIdx` (inclusive), in DFS pre-order. */
|
|
49
|
+
export declare function forEachDescendant(h: Hierarchy, rootIdx: number, visitor: (idx: number, relativeDepth: number) => void): void;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BinAlgorithm } from '../personalization/axes/bin-algorithm';
|
|
2
|
+
import { YAxisMode } from '../personalization/axes/y-axis-mode';
|
|
3
|
+
export interface BinRange {
|
|
4
|
+
readonly min: number;
|
|
5
|
+
readonly max: number;
|
|
6
|
+
}
|
|
7
|
+
export interface NormalFit {
|
|
8
|
+
readonly mean: number;
|
|
9
|
+
readonly std: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function computeRange(values: Float64Array, n: number): BinRange;
|
|
12
|
+
/** Choose a bin count via the locked algorithm. Caller picks `binStart`/
|
|
13
|
+
* `binEnd` separately; this only decides `count`. */
|
|
14
|
+
export declare function chooseBinCount(values: Float64Array, n: number, algo: BinAlgorithm, fixedCount?: number): number;
|
|
15
|
+
/** Bin `values[0..n-1]` into `binCount` equal-width bins spanning
|
|
16
|
+
* `[binStart, binEnd]`. Writes:
|
|
17
|
+
* - `outEdges[binCount + 1]`: edge values (start, intermediate, end)
|
|
18
|
+
* - `outCounts[binCount]`: per-bin count
|
|
19
|
+
* Points outside the range are skipped; points exactly at `binEnd` clamp
|
|
20
|
+
* into the last bin. */
|
|
21
|
+
export declare function computeBins(values: Float64Array, n: number, binStart: number, binEnd: number, binCount: number, outEdges: Float64Array, outCounts: Uint32Array): void;
|
|
22
|
+
/** Map raw counts to the y-axis mode the host requested.
|
|
23
|
+
* - 'frequency' → `out[i] = counts[i]`
|
|
24
|
+
* - 'density' → `out[i] = counts[i] / (n × binWidth)` so area sums to 1
|
|
25
|
+
* - 'cumulative' → `out[i] = Σ counts[0..i]` */
|
|
26
|
+
export declare function applyYAxisMode(counts: Uint32Array, mode: YAxisMode, binWidth: number, totalCount: number, out: Float64Array): void;
|
|
27
|
+
/** Fit a normal distribution `N(μ, σ)` for the 'normal' overlay.
|
|
28
|
+
* Two-pass mean + variance (numerically stable enough for our scale -
|
|
29
|
+
* histograms are summary visuals, not financial-grade math; engine owns
|
|
30
|
+
* Welford-precision compute paths). */
|
|
31
|
+
export declare function fitNormalOverlay(values: Float64Array, n: number): NormalFit;
|
|
32
|
+
/** Evaluate `N(mean, std)` PDF at `x`. Returns 0 when std === 0. */
|
|
33
|
+
export declare function normalPdf(x: number, mean: number, std: number): number;
|