ag-charts-community
Version:
Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue
71 lines (70 loc) • 2.1 kB
TypeScript
import { type EventListener } from 'ag-charts-core';
import type { LayoutContext as ILayoutContext } from '../../module/baseModule';
import type { Scale } from '../../scale/scale';
import { BBox } from '../../scene/bbox';
import type { TimeInterval } from '../../util/time';
import type { ChartAxisDirection } from '../chartAxisDirection';
export interface AxisLayout {
id: string;
rect: BBox;
gridPadding: number;
seriesAreaPadding: number;
tickSize: number;
label: {
fractionDigits: number;
spacing: number;
format?: string;
};
direction: ChartAxisDirection;
domain: any[];
scale: Scale<any, any, number | TimeInterval>;
}
export type LayoutCompleteEvent = {
readonly type: 'layout:complete';
readonly chart: Readonly<{
width: number;
height: number;
}>;
readonly series: Readonly<{
rect: BBox;
paddedRect: BBox;
visible: boolean;
}>;
readonly clipSeries: boolean;
readonly axes?: Readonly<AxisLayout>[];
};
export interface LayoutState {
axes?: AxisLayout[];
clipSeries?: boolean;
series: {
rect: BBox;
paddedRect: BBox;
visible: boolean;
};
}
interface EventMap {
'layout:complete': LayoutCompleteEvent;
}
export declare enum LayoutElement {
Caption = 0,
Legend = 1,
ToolbarLeft = 2,
ToolbarBottom = 3,
Navigator = 4,
Overlay = 5
}
export declare class LayoutManager {
private readonly events;
private readonly elements;
addListener<K extends keyof EventMap>(eventName: K, listener: EventListener<EventMap[K]>): () => void;
registerElement(element: LayoutElement, listener: EventListener<LayoutContext>): () => boolean | undefined;
createContext(width: number, height: number): LayoutContext;
emitLayoutComplete(context: LayoutContext, options: LayoutState): void;
}
declare class LayoutContext implements ILayoutContext {
readonly width: number;
readonly height: number;
readonly layoutBox: BBox;
constructor(width: number, height: number);
}
export {};