import type { D3InterpolateName } from '../../colors'; import type { DenseInternalPoint } from './adaptive-density'; import type ColorBar from '../core/components/ColorBar.svelte'; import type { ColorScaleConfig, LabelPlacementConfig, ScatterHandlerProps, SizeScaleConfig } from '../core/types'; import type { ComponentProps, Snippet } from 'svelte'; export type BinnedColorScaleConfig = ColorScaleConfig | D3InterpolateName; export type BinnedSizeScaleConfig = SizeScaleConfig & { pick_radius?: number | `auto`; }; export type BinnedDensityConfig = { bin_px?: number; color_scale?: BinnedColorScaleConfig; color_bar?: ComponentProps | null; auto_point_mode?: false | { max_points?: number; max_points_per_px?: number; }; bin_click?: `zoom` | `point` | `none`; }; export type BinnedRefLine = { x1: number; y1: number; x2: number; y2: number; color?: string; dash?: string; width?: number; }; export type BinnedOverlaysConfig = { ref_lines?: BinnedRefLine[]; }; export type BinnedPointBasePayload = Record> = ScatterHandlerProps & { point: DenseInternalPoint; color?: string; }; export type BinnedPointDataFn = Record, PointData extends Record = Record> = (payload: BinnedPointBasePayload) => PointData | null | undefined; export type BinnedPointPayload = Record, PointData extends Record = Record> = BinnedPointBasePayload & { point_data?: PointData; }; export type BinnedPointTooltipPayload = Record, PointData extends Record = Record> = BinnedPointPayload; export type BinnedPointLabelPlacementConfig = Partial; export type BinnedPointLabelsConfig = Record, PointData extends Record = Record> = { render?: Snippet<[BinnedPointPayload]>; measure_text?: (payload: BinnedPointPayload) => string; font_size?: string; max_count?: number; gap_px?: number; placement?: BinnedPointLabelPlacementConfig; leaders?: { min_length_px?: number; }; };