UNPKG

@antv/g2plot

Version:

G2 Plot, a market of plots built with the Grammar of Graphics'

114 lines (113 loc) 2.82 kB
import EventEmitter from '@antv/event-emitter'; import * as G from '@antv/g'; import { Point } from '../interface/config'; export interface LayerConfig { id?: string; /** the top-left-x of layer, local position relative to the parent layer */ x?: number; /** the top-left-y of layer, local position relative to the parent layer */ y?: number; /** layer width */ width?: number; /** layer height */ height?: number; /** the parent node of layer */ parent?: any; canvas?: G.Canvas; name?: string; } export interface Region { /** the top-left corner of layer-range, range from 0 to 1, relative to parent layer's range */ readonly start: Point; /** the bottom-right corner of layer-range, range from 0 to 1, relative to parent layer's range */ readonly end: Point; } export interface Range { x?: number; y?: number; width?: number; height?: number; } export default class Layer<T extends LayerConfig = LayerConfig> extends EventEmitter { id: string; x: number; y: number; width: number; height: number; parent: Layer; canvas: G.Canvas; layerBBox: G.BBox; layers: Layer[]; container: G.Group; destroyed: boolean; protected visibility: boolean; protected layerRegion: Region; private rendered; private eventHandlers; options: T; /** * layer base for g2plot */ constructor(props: T); processOptions(options: any): void; updateConfig(cfg: Partial<T>): void; beforeInit(): void; /** * init life cycle */ init(): void; afterInit(): void; /** * render layer recursively */ render(): void; /** * clear layer content */ clear(): void; /** * destroy layer recursively, remove the container of layer */ destroy(): void; /** * display layer */ show(): void; /** * hide layer */ hide(): void; /** * add children layer * @param layer */ addLayer(layer: Layer<any>): void; /** * remove children layer * @param layer */ removeLayer(layer: Layer<any>): void; /** * update layer's display range * @param props * @param recursive whether update children layers or not */ updateBBox(props: Range, recursive?: boolean): void; /** * update display range according to parent layer's range */ updateBBoxByParent(): void; /** * get global position of layer */ getGlobalPosition(): { x: number; y: number; }; getGlobalBBox(): G.BBox; getOptions(props: T): T; eachLayer(cb: (layer: Layer<any>) => void): void; protected parseEvents(eventParser?: any): void; private getLayerBBox; private getLayerRegion; }