@visactor/vrender-components
Version:
components library for dp visualization
68 lines (67 loc) • 3.37 kB
TypeScript
import type { IGroup, ITextGraphicAttribute, TextAlignType, TextBaselineType, IGraphic, IText } from '@visactor/vrender-core';
import type { Dict, IBounds } from '@visactor/vutils';
import type { Point } from '../core/type';
import type { TagAttributes } from '../tag';
import type { AxisBaseAttributes, AxisItem, TransformedAxisItem, TickLineItem } from './type';
import { AnimateComponent } from '../animation/animate-component';
import type { IBaseScale } from '@visactor/vscale';
export declare abstract class AxisBase<T extends AxisBaseAttributes> extends AnimateComponent<Required<T>> {
name: string;
lastScale: IBaseScale;
protected _innerView: IGroup;
getInnerView(): IGroup;
protected _prevInnerView: {
[key: string]: IGraphic;
};
getPrevInnerView(): {
[key: string]: IGraphic<Partial<import("@visactor/vrender-core").IGraphicAttribute>>;
};
protected data: TransformedAxisItem[];
protected tickLineItems: TickLineItem[];
protected subTickLineItems: TickLineItem[];
protected axisLabelLayerSize: Dict<{
width: number;
height: number;
textAlign: string;
textBaseline: string;
labelPos: number;
}>;
protected axisLabelsContainer: IGroup | null;
protected axisContainer: IGroup;
private _lastHover;
private _lastSelect;
protected _newElementAttrMap: Dict<any>;
protected abstract renderLine(container: IGroup): void;
abstract isInValidValue(value: number): boolean;
abstract getTickCoord(value: number): Point;
abstract getVerticalVector(offset: number, inside: boolean, point: Point): [number, number];
abstract getRelativeVector(point?: Point): [number, number];
protected abstract getTitleAttribute(): TagAttributes;
protected abstract beforeLabelsOverlap(labelShapes: IText[], labelData: AxisItem[], labelContainer: IGroup, layer: number, layerCount: number): void;
protected abstract handleLabelsOverlap(labelShapes: IText[], labelData: AxisItem[], labelContainer: IGroup, layer: number, layerCount: number): void;
protected abstract afterLabelsOverlap(labelShapes: IText[], labelData: AxisItem[], labelContainer: IGroup, layer: number, layerCount: number): void;
protected abstract getLabelAlign(vector: [number, number], inside?: boolean, angle?: number): {
textAlign: TextAlignType;
textBaseline: TextBaselineType;
};
getBoundsWithoutRender(attributes: Partial<T>): IBounds;
protected render(): void;
protected _prepare(): void;
private _bindEvent;
private _onHover;
private _onUnHover;
private _onClick;
protected _renderInner(container: IGroup): void;
protected renderTicks(container: IGroup): void;
protected renderLabels(container: IGroup, items: AxisItem[], layer: number): IGroup;
protected renderTitle(container: IGroup): void;
protected getVerticalCoord(point: Point, offset: number, inside: boolean): Point;
protected getTickLineItems(): TickLineItem[];
protected getSubTickLineItems(): TickLineItem[];
private _getTickLineAttribute;
private _getLabelAttribute;
protected getLabelPosition(point: Point, vector: [number, number], text: string | number, style: Partial<ITextGraphicAttribute>): Point;
private _transformItems;
protected runAnimation(): void;
release(): void;
}