207 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
import Transformable, { TransformProp } from './core/Transformable';
 | 
						|
import { AnimationEasing } from './animation/easing';
 | 
						|
import Animator from './animation/Animator';
 | 
						|
import { ZRenderType } from './zrender';
 | 
						|
import { Dictionary, ElementEventName, ZRRawEvent, BuiltinTextPosition, MapToType } from './core/types';
 | 
						|
import Path from './graphic/Path';
 | 
						|
import BoundingRect, { RectLike } from './core/BoundingRect';
 | 
						|
import Eventful from './core/Eventful';
 | 
						|
import ZRText from './graphic/Text';
 | 
						|
import { TextPositionCalculationResult } from './contain/text';
 | 
						|
import Polyline from './graphic/shape/Polyline';
 | 
						|
import Group from './graphic/Group';
 | 
						|
import Point from './core/Point';
 | 
						|
export interface ElementAnimateConfig {
 | 
						|
    duration?: number;
 | 
						|
    delay?: number;
 | 
						|
    easing?: AnimationEasing;
 | 
						|
    during?: (percent: number) => void;
 | 
						|
    done?: Function;
 | 
						|
    aborted?: Function;
 | 
						|
    scope?: string;
 | 
						|
    force?: boolean;
 | 
						|
    additive?: boolean;
 | 
						|
    setToFinal?: boolean;
 | 
						|
}
 | 
						|
export interface ElementTextConfig {
 | 
						|
    position?: BuiltinTextPosition | (number | string)[];
 | 
						|
    rotation?: number;
 | 
						|
    layoutRect?: RectLike;
 | 
						|
    offset?: number[];
 | 
						|
    origin?: (number | string)[] | 'center';
 | 
						|
    distance?: number;
 | 
						|
    local?: boolean;
 | 
						|
    insideFill?: string;
 | 
						|
    insideStroke?: string;
 | 
						|
    outsideFill?: string;
 | 
						|
    outsideStroke?: string;
 | 
						|
    inside?: boolean;
 | 
						|
}
 | 
						|
export interface ElementTextGuideLineConfig {
 | 
						|
    anchor?: Point;
 | 
						|
    showAbove?: boolean;
 | 
						|
    candidates?: ('left' | 'top' | 'right' | 'bottom')[];
 | 
						|
}
 | 
						|
export interface ElementEvent {
 | 
						|
    type: ElementEventName;
 | 
						|
    event: ZRRawEvent;
 | 
						|
    target: Element;
 | 
						|
    topTarget: Element;
 | 
						|
    cancelBubble: boolean;
 | 
						|
    offsetX: number;
 | 
						|
    offsetY: number;
 | 
						|
    gestureEvent: string;
 | 
						|
    pinchX: number;
 | 
						|
    pinchY: number;
 | 
						|
    pinchScale: number;
 | 
						|
    wheelDelta: number;
 | 
						|
    zrByTouch: boolean;
 | 
						|
    which: number;
 | 
						|
    stop: (this: ElementEvent) => void;
 | 
						|
}
 | 
						|
export declare type ElementEventCallback<Ctx, Impl> = (this: CbThis<Ctx, Impl>, e: ElementEvent) => boolean | void;
 | 
						|
declare type CbThis<Ctx, Impl> = unknown extends Ctx ? Impl : Ctx;
 | 
						|
interface ElementEventHandlerProps {
 | 
						|
    onclick: ElementEventCallback<unknown, unknown>;
 | 
						|
    ondblclick: ElementEventCallback<unknown, unknown>;
 | 
						|
    onmouseover: ElementEventCallback<unknown, unknown>;
 | 
						|
    onmouseout: ElementEventCallback<unknown, unknown>;
 | 
						|
    onmousemove: ElementEventCallback<unknown, unknown>;
 | 
						|
    onmousewheel: ElementEventCallback<unknown, unknown>;
 | 
						|
    onmousedown: ElementEventCallback<unknown, unknown>;
 | 
						|
    onmouseup: ElementEventCallback<unknown, unknown>;
 | 
						|
    oncontextmenu: ElementEventCallback<unknown, unknown>;
 | 
						|
    ondrag: ElementEventCallback<unknown, unknown>;
 | 
						|
    ondragstart: ElementEventCallback<unknown, unknown>;
 | 
						|
    ondragend: ElementEventCallback<unknown, unknown>;
 | 
						|
    ondragenter: ElementEventCallback<unknown, unknown>;
 | 
						|
    ondragleave: ElementEventCallback<unknown, unknown>;
 | 
						|
    ondragover: ElementEventCallback<unknown, unknown>;
 | 
						|
    ondrop: ElementEventCallback<unknown, unknown>;
 | 
						|
}
 | 
						|
export interface ElementProps extends Partial<ElementEventHandlerProps>, Partial<Pick<Transformable, TransformProp>> {
 | 
						|
    name?: string;
 | 
						|
    ignore?: boolean;
 | 
						|
    isGroup?: boolean;
 | 
						|
    draggable?: boolean | 'horizontal' | 'vertical';
 | 
						|
    silent?: boolean;
 | 
						|
    ignoreClip?: boolean;
 | 
						|
    globalScaleRatio?: number;
 | 
						|
    textConfig?: ElementTextConfig;
 | 
						|
    textContent?: ZRText;
 | 
						|
    clipPath?: Path;
 | 
						|
    drift?: Element['drift'];
 | 
						|
    extra?: Dictionary<unknown>;
 | 
						|
    anid?: string;
 | 
						|
}
 | 
						|
export declare const PRESERVED_NORMAL_STATE = "__zr_normal__";
 | 
						|
declare const PRIMARY_STATES_KEYS: ["x" | "y" | "originX" | "originY" | "anchorX" | "anchorY" | "rotation" | "scaleX" | "scaleY" | "skewX" | "skewY", "ignore"];
 | 
						|
export declare type ElementStatePropNames = (typeof PRIMARY_STATES_KEYS)[number] | 'textConfig';
 | 
						|
export declare type ElementState = Pick<ElementProps, ElementStatePropNames> & ElementCommonState;
 | 
						|
export declare type ElementCommonState = {
 | 
						|
    hoverLayer?: boolean;
 | 
						|
};
 | 
						|
export declare type ElementCalculateTextPosition = (out: TextPositionCalculationResult, style: ElementTextConfig, rect: RectLike) => TextPositionCalculationResult;
 | 
						|
interface Element<Props extends ElementProps = ElementProps> extends Transformable, Eventful<{
 | 
						|
    [key in ElementEventName]: (e: ElementEvent) => void | boolean;
 | 
						|
} & {
 | 
						|
    [key in string]: (...args: any) => void | boolean;
 | 
						|
}>, ElementEventHandlerProps {
 | 
						|
}
 | 
						|
declare class Element<Props extends ElementProps = ElementProps> {
 | 
						|
    id: number;
 | 
						|
    type: string;
 | 
						|
    name: string;
 | 
						|
    ignore: boolean;
 | 
						|
    silent: boolean;
 | 
						|
    isGroup: boolean;
 | 
						|
    draggable: boolean | 'horizontal' | 'vertical';
 | 
						|
    dragging: boolean;
 | 
						|
    parent: Group;
 | 
						|
    animators: Animator<any>[];
 | 
						|
    ignoreClip: boolean;
 | 
						|
    __hostTarget: Element;
 | 
						|
    __zr: ZRenderType;
 | 
						|
    __dirty: number;
 | 
						|
    __isRendered: boolean;
 | 
						|
    __inHover: boolean;
 | 
						|
    private _clipPath?;
 | 
						|
    private _textContent?;
 | 
						|
    private _textGuide?;
 | 
						|
    textConfig?: ElementTextConfig;
 | 
						|
    textGuideLineConfig?: ElementTextGuideLineConfig;
 | 
						|
    anid: string;
 | 
						|
    extra: Dictionary<unknown>;
 | 
						|
    currentStates?: string[];
 | 
						|
    prevStates?: string[];
 | 
						|
    states: Dictionary<ElementState>;
 | 
						|
    stateTransition: ElementAnimateConfig;
 | 
						|
    stateProxy?: (stateName: string, targetStates?: string[]) => ElementState;
 | 
						|
    protected _normalState: ElementState;
 | 
						|
    private _innerTextDefaultStyle;
 | 
						|
    constructor(props?: Props);
 | 
						|
    protected _init(props?: Props): void;
 | 
						|
    drift(dx: number, dy: number, e?: ElementEvent): void;
 | 
						|
    beforeUpdate(): void;
 | 
						|
    afterUpdate(): void;
 | 
						|
    update(): void;
 | 
						|
    updateInnerText(forceUpdate?: boolean): void;
 | 
						|
    protected canBeInsideText(): boolean;
 | 
						|
    protected getInsideTextFill(): string | undefined;
 | 
						|
    protected getInsideTextStroke(textFill: string): string | undefined;
 | 
						|
    protected getOutsideFill(): string | undefined;
 | 
						|
    protected getOutsideStroke(textFill: string): string;
 | 
						|
    traverse<Context>(cb: (this: Context, el: Element<Props>) => void, context?: Context): void;
 | 
						|
    protected attrKV(key: string, value: unknown): void;
 | 
						|
    hide(): void;
 | 
						|
    show(): void;
 | 
						|
    attr(keyOrObj: Props): this;
 | 
						|
    attr<T extends keyof Props>(keyOrObj: T, value: Props[T]): this;
 | 
						|
    saveCurrentToNormalState(toState: ElementState): void;
 | 
						|
    protected _innerSaveToNormal(toState: ElementState): void;
 | 
						|
    protected _savePrimaryToNormal(toState: Dictionary<any>, normalState: Dictionary<any>, primaryKeys: readonly string[]): void;
 | 
						|
    hasState(): boolean;
 | 
						|
    getState(name: string): ElementState;
 | 
						|
    ensureState(name: string): ElementState;
 | 
						|
    clearStates(noAnimation?: boolean): void;
 | 
						|
    useState(stateName: string, keepCurrentStates?: boolean, noAnimation?: boolean, forceUseHoverLayer?: boolean): ElementState;
 | 
						|
    useStates(states: string[], noAnimation?: boolean, forceUseHoverLayer?: boolean): void;
 | 
						|
    isSilent(): boolean;
 | 
						|
    private _updateAnimationTargets;
 | 
						|
    removeState(state: string): void;
 | 
						|
    replaceState(oldState: string, newState: string, forceAdd: boolean): void;
 | 
						|
    toggleState(state: string, enable: boolean): void;
 | 
						|
    protected _mergeStates(states: ElementState[]): ElementState;
 | 
						|
    protected _applyStateObj(stateName: string, state: ElementState, normalState: ElementState, keepCurrentStates: boolean, transition: boolean, animationCfg: ElementAnimateConfig): void;
 | 
						|
    private _attachComponent;
 | 
						|
    private _detachComponent;
 | 
						|
    getClipPath(): Path<import("./graphic/Path").PathProps>;
 | 
						|
    setClipPath(clipPath: Path): void;
 | 
						|
    removeClipPath(): void;
 | 
						|
    getTextContent(): ZRText;
 | 
						|
    setTextContent(textEl: ZRText): void;
 | 
						|
    setTextConfig(cfg: ElementTextConfig): void;
 | 
						|
    removeTextConfig(): void;
 | 
						|
    removeTextContent(): void;
 | 
						|
    getTextGuideLine(): Polyline;
 | 
						|
    setTextGuideLine(guideLine: Polyline): void;
 | 
						|
    removeTextGuideLine(): void;
 | 
						|
    markRedraw(): void;
 | 
						|
    dirty(): void;
 | 
						|
    private _toggleHoverLayerFlag;
 | 
						|
    addSelfToZr(zr: ZRenderType): void;
 | 
						|
    removeSelfFromZr(zr: ZRenderType): void;
 | 
						|
    animate(key?: string, loop?: boolean, allowDiscreteAnimation?: boolean): Animator<any>;
 | 
						|
    addAnimator(animator: Animator<any>, key: string): void;
 | 
						|
    updateDuringAnimation(key: string): void;
 | 
						|
    stopAnimation(scope?: string, forwardToLast?: boolean): this;
 | 
						|
    animateTo(target: Props, cfg?: ElementAnimateConfig, animationProps?: MapToType<Props, boolean>): void;
 | 
						|
    animateFrom(target: Props, cfg: ElementAnimateConfig, animationProps?: MapToType<Props, boolean>): void;
 | 
						|
    protected _transitionState(stateName: string, target: Props, cfg?: ElementAnimateConfig, animationProps?: MapToType<Props, boolean>): void;
 | 
						|
    getBoundingRect(): BoundingRect;
 | 
						|
    getPaintRect(): BoundingRect;
 | 
						|
    calculateTextPosition: ElementCalculateTextPosition;
 | 
						|
    protected static initDefaultProps: void;
 | 
						|
}
 | 
						|
export default Element;
 |