project/node_modules/zrender/lib/Element.d.ts

207 lines
8.6 KiB
TypeScript
Raw Normal View History

2024-07-14 15:48:34 +08:00
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;