UNPKG

ag-charts-community

Version:

Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue

102 lines (101 loc) 3.86 kB
import { FocusIndicator } from '../../dom/focusIndicator'; import { BBox } from '../../scene/bbox'; import type { TranslatableGroup } from '../../scene/group'; import { BaseManager } from '../../util/baseManager'; import type { TypedEvent } from '../../util/observable'; import type { ChartContext } from '../chartContext'; import type { ChartHighlight } from '../chartHighlight'; import type { ChartMode } from '../chartMode'; import { ChartUpdateType } from '../chartUpdateType'; import type { ChartType } from '../factory/chartTypes'; import type { ChartOverlays } from '../overlay/chartOverlays'; import { Tooltip, type TooltipContent } from '../tooltip/tooltip'; import { type Series } from './series'; import type { SeriesProperties } from './seriesProperties'; import type { SeriesNodeDatum } from './seriesTypes'; export interface SeriesAreaChartDependencies { fireEvent<TEvent extends TypedEvent>(event: TEvent): void; getUpdateType(): ChartUpdateType; getTooltipContent: <DatumIndex = unknown>(series: Series<DatumIndex, any, any>, datumIndex: DatumIndex, removeThisDatum: unknown) => TooltipContent[]; chartType: ChartType; seriesRoot: TranslatableGroup; ctx: ChartContext; tooltip: Tooltip; highlight: ChartHighlight; overlays: ChartOverlays; mode: ChartMode; } export declare class SeriesAreaManager extends BaseManager { private readonly chart; readonly id: string; private series; private seriesRect?; private hoverRect?; readonly focusIndicator?: FocusIndicator; private readonly swapChain; get bbox(): BBox; private readonly highlight; private readonly tooltip; /** * A11y Requirements for Tooltip/Highlight (see AG-13051 for details): * * - When the series-area is blurred, always the mouse to update the tooltip/highlight. * * - When the series-area receives a `focus` event, use `:focus-visible` to guess the input device. * (this is decided by the browser). * * - For keyboard users, `focus` and `keydown` events always updates & shows the tooltip/highlight on * the currently (or newly) focused datum. * * - For keyboard users, `mousemove` events update the tooltip/highlight iff `pickNode` finds a match * for the mouse event offsets. */ private hoverDevice; /** * This is the "second last" input event. It can be useful for keydown * events that for which don't to set the isFocusVisible state * (e.g. Backspace/Delete key on FC annotations, see AG-13041). * * Use with caution! The focus indicator must ALWAYS be visible for * keyboard-only users. */ private previousInputDevice; private readonly focus; constructor(chart: SeriesAreaChartDependencies); private isState; private isIgnoredTouch; dataChanged(): void; private preSceneRender; private updateComplete; private update; seriesChanged(series: Series<unknown, SeriesNodeDatum<unknown>, SeriesProperties<object>>[]): void; private layoutComplete; private onContextMenu; private onLeave; private onWheel; private onDragMove; private onHover; private onHoverLikeEvent; private onClick; private onFocus; private onBlur; private onKeyDown; private onArrow; private onSubmit; private checkSeriesNodeClick; private handleFocus; private handleSeriesFocus; private handleSoloSeriesFocus; private updatePickedFocus; private getDatumAriaText; private clearHighlight; private clearTooltip; private clearAll; private readonly hoverScheduler; private handleHoverHighlight; private readonly tooltipCandidates; private handleHoverTooltip; private showTooltip; private changeHighlightDatum; private pickNodes; }