You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
8.6 KiB
205 lines
8.6 KiB
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; |
|
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;
|
|
|