UNPKG

ag-charts-community

Version:

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

150 lines (149 loc) 5.46 kB
import { BBox } from './bbox'; import type { ImageLoader } from './image/imageLoader'; import type { LayersManager } from './layersManager'; import { type ZIndex } from './zIndex'; export { SceneChangeDetection } from 'ag-charts-core'; export declare enum PointerEvents { All = 0, None = 1 } export type RenderContext = { ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D; direction: CanvasDirection; width: number; height: number; devicePixelRatio: number; clipBBox?: BBox; stats?: { opsPerformed: number; opsSkipped: number; nodesRendered: number; nodesSkipped: number; layersRendered: number; layersSkipped: number; }; debugNodeSearch?: (string | RegExp)[]; debugNodes: Record<string, Node>; }; export interface NodeOptions { name?: string; tag?: number; zIndex?: ZIndex; debugDirty?: boolean; scene?: IScene; } export type NodeWithOpacity<D> = Node<D> & { opacity: number; }; export type ChildNodeCounts = { groups: number; nonGroups: number; thisComplexity: number; complexity: number; }; export interface IScene { layersManager: LayersManager; imageLoader: ImageLoader; isRtl: boolean; } /** * Abstract scene graph node. * Each node can have zero or one parent and belong to zero or one scene. */ export declare abstract class Node<TDatum = unknown> { static readonly className: string; private static _nextSerialNumber; static _debugEnabled: boolean; static toSVG(node: Node, width: number, height: number): string | undefined; static extractBBoxes(nodes: Iterable<Node>, skipInvisible?: boolean): Generator<BBox, void, unknown>; /** Unique number to allow creation order to be easily determined. */ readonly serialNumber: number; readonly childNodeCounts: ChildNodeCounts; /** Unique node ID in the form `ClassName-NaturalNumber`. */ readonly id: string; readonly name: string | undefined; /** * Some number to identify this node, typically within a `Group` node. * Usually this will be some enum value used as a selector. */ tag: number; transitionOut: boolean | undefined; pointerEvents: PointerEvents; protected _datum: TDatum | undefined; protected _previousDatum: TDatum | undefined; protected scene: IScene | undefined; private readonly _debugDirtyProperties; parentNode: Node | undefined; private cachedBBox; /** * To simplify the type system (especially in Selections) we don't have the `Parent` node * (one that has children). Instead, we mimic HTML DOM, where any node can have children. * But we still need to distinguish regular leaf nodes from container leafs somehow. */ protected isContainerNode: boolean; visible: boolean; __visible: boolean; zIndex: ZIndex; __zIndex: ZIndex; protected batchLevel: number; private batchDirty; constructor(options?: NodeOptions); /** * Some arbitrary data bound to the node. */ get datum(): TDatum | undefined; set datum(datum: TDatum | undefined); get previousDatum(): TDatum | undefined; /** @deprecated do not use unsafe non-null assertion (`datum!`), used typed `datum` */ get unsafeNonNullDatum(): TDatum; /** @deprecated do not use `any`, used typed `datum` */ get unsafeDatum(): any; /** @deprecated do not use `any`, used typed `datum` */ set unsafeDatum(datum: any); /** @deprecated do not use `any`, used typed `previousDatum` */ get unsafePreviousDatum(): any; get layerManager(): LayersManager | undefined; protected get imageLoader(): ImageLoader | undefined; closestDatum(): unknown; /** @deprecated do not use `any` */ unsafeClosestDatum(): any; /** Perform any pre-rendering initialization. */ preRender(_renderCtx: RenderContext, thisComplexity?: number): ChildNodeCounts; /** Guaranteed isolated render - if there is any failure, the Canvas2D context is returned to its prior state. */ isolatedRender(renderCtx: RenderContext): void; render(renderCtx: RenderContext): void; setScene(scene?: IScene): void; traverseUp(includeSelf?: boolean): Generator<Node, void, unknown>; /** * Checks if the node is the root (has no parent). */ isRoot(): boolean; removeChild(node: Node): void; remove(): void; destroy(): void; batchedUpdate(fn: () => void): void; setProperties<T extends Node>(this: T, styles: { [K in keyof T]?: T[K]; }): T; setPropertiesWithKeys<T extends Node>(this: T, styles: { [K in keyof T]?: T[K]; }, keys: readonly string[]): T; containsPoint(_x: number, _y: number): boolean; pickNode(x: number, y: number): Node | undefined; pickNodes(x: number, y: number, into?: Node<any>[]): Node<any>[]; getBBox(): BBox; protected computeBBox(): BBox | undefined; onChangeDetection(property: string): void; markDirtyChildrenOrder(): void; markDirty(property?: string): void; private markDebugProperties; private debugDirtyProperties; private static handleNodeZIndexChange; protected onZIndexChange(): void; /** Override in subclasses that carry a font (Text) or contain font-bearing children (Group). */ resolveFont(): string | undefined; toSVG(): { elements: SVGElement[]; defs?: SVGElement[]; } | undefined; }