interface GradientObject { id?: number; type: string; colorStops: GradientColorStop[]; global?: boolean; } interface GradientColorStop { offset: number; color: string; } declare class Gradient { id?: number; type: string; colorStops: GradientColorStop[]; global: boolean; constructor(colorStops: GradientColorStop[]); addColorStop(offset: number, color: string): void; } interface RadialGradientObject extends GradientObject { type: 'radial'; x: number; y: number; r: number; } declare class RadialGradient extends Gradient { type: 'radial'; x: number; y: number; r: number; constructor(x: number, y: number, r: number, colorStops?: GradientColorStop[], globalCoord?: boolean); } interface LinearGradientObject extends GradientObject { type: 'linear'; x: number; y: number; x2: number; y2: number; } declare class LinearGradient extends Gradient { type: 'linear'; x: number; y: number; x2: number; y2: number; constructor(x: number, y: number, x2: number, y2: number, colorStops?: GradientColorStop[], globalCoord?: boolean); } declare type Dictionary = { [key: string]: T; }; declare type ArrayLike$1 = { [key: number]: T; length: number; }; declare type NullUndefined = null | undefined; declare type ImageLike = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement; declare type TextVerticalAlign = 'top' | 'middle' | 'bottom'; declare type TextAlign = 'left' | 'center' | 'right'; declare type FontWeight = 'normal' | 'bold' | 'bolder' | 'lighter' | number; declare type FontStyle = 'normal' | 'italic' | 'oblique'; declare type BuiltinTextPosition = 'left' | 'right' | 'top' | 'bottom' | 'inside' | 'insideLeft' | 'insideRight' | 'insideTop' | 'insideBottom' | 'insideTopLeft' | 'insideTopRight' | 'insideBottomLeft' | 'insideBottomRight'; declare type ZREventProperties = { zrX: number; zrY: number; zrDelta: number; zrEventControl: 'no_globalout' | 'only_globalout'; zrByTouch: boolean; }; declare type ZRRawMouseEvent = MouseEvent & ZREventProperties; declare type ZRRawTouchEvent = TouchEvent & ZREventProperties; declare type ZRRawPointerEvent = TouchEvent & ZREventProperties; declare type ZRRawEvent = ZRRawMouseEvent | ZRRawTouchEvent | ZRRawPointerEvent; declare type ElementEventName = 'click' | 'dblclick' | 'mousewheel' | 'mouseout' | 'mouseover' | 'mouseup' | 'mousedown' | 'mousemove' | 'contextmenu' | 'drag' | 'dragstart' | 'dragend' | 'dragenter' | 'dragleave' | 'dragover' | 'drop' | 'globalout'; declare type ElementEventNameWithOn = 'onclick' | 'ondblclick' | 'onmousewheel' | 'onmouseout' | 'onmouseup' | 'onmousedown' | 'onmousemove' | 'oncontextmenu' | 'ondrag' | 'ondragstart' | 'ondragend' | 'ondragenter' | 'ondragleave' | 'ondragover' | 'ondrop'; declare type PropType = TObj[TProp]; declare type FunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? K : never; }[keyof T]; declare type MapToType, S> = { [P in keyof T]: T[P] extends Dictionary ? MapToType : S; }; declare type KeyOfDistributive = T extends unknown ? keyof T : never; declare type WithThisType any, This> = (this: This, ...args: Parameters) => ReturnType; declare type IncrementalIdCompat = number | boolean; declare type SVGVNodeAttrs = Record; interface SVGVNode { tag: string; attrs: SVGVNodeAttrs; children?: SVGVNode[]; text?: string; elm?: Node; key: string; } declare type ImagePatternRepeat = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat'; interface PatternObjectBase { id?: number; type?: 'pattern'; x?: number; y?: number; rotation?: number; scaleX?: number; scaleY?: number; } interface ImagePatternObject extends PatternObjectBase { image: ImageLike | string; repeat?: ImagePatternRepeat; imageWidth?: number; imageHeight?: number; } interface SVGPatternObject extends PatternObjectBase { svgElement?: SVGVNode; svgWidth?: number; svgHeight?: number; } declare type PatternObject = ImagePatternObject | SVGPatternObject; declare const nativeSlice: (start?: number, end?: number) => any[]; declare function guid(): number; declare function logError(...args: any[]): void; declare function clone(source: T): T; declare function merge, S extends Dictionary>(target: T, source: S, overwrite?: boolean): T & S; declare function merge(target: T, source: S, overwrite?: boolean): T | S; declare function mergeAll(targetAndSources: any[], overwrite?: boolean): any; declare function extend, S extends Dictionary>(target: T, source: S): T & S; declare function assignProps, TCommonKey extends keyof TSrc>(tar: NullUndefined, src: TSrc, props: readonly TCommonKey[]): Pick; declare function assignProps, TSrc extends Dictionary, TCommonKey extends keyof TSrc & keyof TTar>(tar: TTar, src: TSrc & { [P in TCommonKey]: TTar[P]; }, props: readonly TCommonKey[]): TTar; declare function defaults, S extends Dictionary>(target: T, source: S, overlay?: boolean): T & S; declare const createCanvas: () => HTMLCanvasElement; declare function indexOf(array: T[] | readonly T[] | ArrayLike$1, value: T): number; declare function inherits(clazz: Function, baseClazz: Function): void; declare function mixin(target: T | Function, source: S | Function, override?: boolean): void; declare function isArrayLike(data: any): data is ArrayLike$1; declare function each | any[] | readonly any[] | ArrayLike$1, Context>(arr: I, cb: (this: Context, value: I extends (infer T)[] | readonly (infer T)[] | ArrayLike$1 ? T : I extends Dictionary ? I extends Record ? T : unknown : unknown, index?: I extends any[] | readonly any[] | ArrayLike$1 ? number : keyof I & string, arr?: I) => void, context?: Context): void; declare function map(arr: readonly T[], cb: (this: Context, val: T, index?: number, arr?: readonly T[]) => R, context?: Context): R[]; declare function reduce(arr: readonly T[], cb: (this: Context, previousValue: S, currentValue: T, currentIndex?: number, arr?: readonly T[]) => S, memo?: S, context?: Context): S; declare function filter(arr: readonly T[], cb: (this: Context, value: T, index: number, arr: readonly T[]) => boolean, context?: Context): T[]; declare function find(arr: readonly T[], cb: (this: Context, value: T, index?: number, arr?: readonly T[]) => boolean, context?: Context): T; declare function keys(obj: T): (KeyOfDistributive & string)[]; declare type Bind1 = F extends (this: Ctx, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type Bind2 = F extends (this: Ctx, a: T1, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type Bind3 = F extends (this: Ctx, a: T1, b: T2, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type Bind4 = F extends (this: Ctx, a: T1, b: T2, c: T3, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type Bind5 = F extends (this: Ctx, a: T1, b: T2, c: T3, d: T4, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type BindFunc = (this: Ctx, ...arg: any[]) => any; interface FunctionBind { , Ctx>(func: F, ctx: Ctx): Bind1; , Ctx, T1 extends Parameters[0]>(func: F, ctx: Ctx, a: T1): Bind2; , Ctx, T1 extends Parameters[0], T2 extends Parameters[1]>(func: F, ctx: Ctx, a: T1, b: T2): Bind3; , Ctx, T1 extends Parameters[0], T2 extends Parameters[1], T3 extends Parameters[2]>(func: F, ctx: Ctx, a: T1, b: T2, c: T3): Bind4; , Ctx, T1 extends Parameters[0], T2 extends Parameters[1], T3 extends Parameters[2], T4 extends Parameters[3]>(func: F, ctx: Ctx, a: T1, b: T2, c: T3, d: T4): Bind5; } declare const bind: FunctionBind; declare type Curry1 = F extends (a: T1, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type Curry2 = F extends (a: T1, b: T2, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type Curry3 = F extends (a: T1, b: T2, c: T3, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type Curry4 = F extends (a: T1, b: T2, c: T3, d: T4, ...args: infer A) => infer R ? (...args: A) => R : unknown; declare type CurryFunc = (...arg: any[]) => any; declare function curry[0]>(func: F, a: T1): Curry1; declare function curry[0], T2 extends Parameters[1]>(func: F, a: T1, b: T2): Curry2; declare function curry[0], T2 extends Parameters[1], T3 extends Parameters[2]>(func: F, a: T1, b: T2, c: T3): Curry3; declare function curry[0], T2 extends Parameters[1], T3 extends Parameters[2], T4 extends Parameters[3]>(func: F, a: T1, b: T2, c: T3, d: T4): Curry4; declare function isArray(value: any): value is any[]; declare function isFunction(value: any): value is Function; declare function isString(value: any): value is string; declare function isStringSafe(value: any): value is string; declare function isNumber(value: any): value is number; declare function isObject(value: T): value is (object & T); declare function isBuiltInObject(value: any): boolean; declare function isTypedArray(value: any): boolean; declare function isDom(value: any): value is HTMLElement; declare function isGradientObject(value: any): value is GradientObject; declare function isImagePatternObject(value: any): value is ImagePatternObject; declare function isRegExp(value: unknown): value is RegExp; declare function eqNaN(value: any): boolean; declare function retrieve(...args: T[]): T; declare function retrieve2(value0: T, value1: R): T | R; declare function retrieve3(value0: T, value1: R, value2: W): T | R | W; declare type SliceParams = Parameters; declare function slice(arr: ArrayLike$1, ...args: SliceParams): T[]; declare function normalizeCssArray(val: number | number[]): number[]; declare function assert(condition: any, message?: string): void; declare function trim(str: string): string; declare function setAsPrimitive(obj: any): void; declare function isPrimitive(obj: any): boolean; interface MapInterface { delete(key: KEY): boolean; has(key: KEY): boolean; get(key: KEY): T | undefined; set(key: KEY, value: T): this; keys(): KEY[]; forEach(callback: (value: T, key: KEY) => void): void; } declare class HashMap { data: MapInterface; constructor(obj?: HashMap | { [key in KEY]?: T; } | KEY[]); hasKey(key: KEY): boolean; get(key: KEY): T; set(key: KEY, value: T): T; each(cb: (this: Context, value?: T, key?: KEY) => void, context?: Context): void; keys(): KEY[]; removeKey(key: KEY): void; } declare function createHashMap(obj?: HashMap | { [key in KEY]?: T; } | KEY[]): HashMap; declare function concatArray(a: ArrayLike$1, b: ArrayLike$1): ArrayLike$1; declare function createObject(proto?: object, properties?: T): T; declare function disableUserSelect(dom: HTMLElement): void; declare function hasOwn(own: object, prop: string): boolean; declare function noop(): void; declare const RADIAN_TO_DEGREE: number; declare const EPSILON: number; declare const util_d_curry: typeof curry; declare const util_d_guid: typeof guid; declare const util_d_logError: typeof logError; declare const util_d_clone: typeof clone; declare const util_d_merge: typeof merge; declare const util_d_mergeAll: typeof mergeAll; declare const util_d_extend: typeof extend; declare const util_d_assignProps: typeof assignProps; declare const util_d_defaults: typeof defaults; declare const util_d_createCanvas: typeof createCanvas; declare const util_d_indexOf: typeof indexOf; declare const util_d_inherits: typeof inherits; declare const util_d_mixin: typeof mixin; declare const util_d_isArrayLike: typeof isArrayLike; declare const util_d_each: typeof each; declare const util_d_map: typeof map; declare const util_d_reduce: typeof reduce; declare const util_d_filter: typeof filter; declare const util_d_find: typeof find; declare const util_d_keys: typeof keys; type util_d_Bind1 = Bind1; type util_d_Bind2 = Bind2; type util_d_Bind3 = Bind3; type util_d_Bind4 = Bind4; type util_d_Bind5 = Bind5; declare const util_d_bind: typeof bind; type util_d_Curry1 = Curry1; type util_d_Curry2 = Curry2; type util_d_Curry3 = Curry3; type util_d_Curry4 = Curry4; declare const util_d_isArray: typeof isArray; declare const util_d_isFunction: typeof isFunction; declare const util_d_isString: typeof isString; declare const util_d_isStringSafe: typeof isStringSafe; declare const util_d_isNumber: typeof isNumber; declare const util_d_isObject: typeof isObject; declare const util_d_isBuiltInObject: typeof isBuiltInObject; declare const util_d_isTypedArray: typeof isTypedArray; declare const util_d_isDom: typeof isDom; declare const util_d_isGradientObject: typeof isGradientObject; declare const util_d_isImagePatternObject: typeof isImagePatternObject; declare const util_d_isRegExp: typeof isRegExp; declare const util_d_eqNaN: typeof eqNaN; declare const util_d_retrieve: typeof retrieve; declare const util_d_retrieve2: typeof retrieve2; declare const util_d_retrieve3: typeof retrieve3; declare const util_d_slice: typeof slice; declare const util_d_normalizeCssArray: typeof normalizeCssArray; declare const util_d_assert: typeof assert; declare const util_d_trim: typeof trim; declare const util_d_setAsPrimitive: typeof setAsPrimitive; declare const util_d_isPrimitive: typeof isPrimitive; type util_d_HashMap = HashMap; declare const util_d_HashMap: typeof HashMap; declare const util_d_createHashMap: typeof createHashMap; declare const util_d_concatArray: typeof concatArray; declare const util_d_createObject: typeof createObject; declare const util_d_disableUserSelect: typeof disableUserSelect; declare const util_d_hasOwn: typeof hasOwn; declare const util_d_noop: typeof noop; declare const util_d_RADIAN_TO_DEGREE: typeof RADIAN_TO_DEGREE; declare const util_d_EPSILON: typeof EPSILON; declare namespace util_d { export { util_d_curry as curry, util_d_guid as guid, util_d_logError as logError, util_d_clone as clone, util_d_merge as merge, util_d_mergeAll as mergeAll, util_d_extend as extend, util_d_assignProps as assignProps, util_d_defaults as defaults, util_d_createCanvas as createCanvas, util_d_indexOf as indexOf, util_d_inherits as inherits, util_d_mixin as mixin, util_d_isArrayLike as isArrayLike, util_d_each as each, util_d_map as map, util_d_reduce as reduce, util_d_filter as filter, util_d_find as find, util_d_keys as keys, util_d_Bind1 as Bind1, util_d_Bind2 as Bind2, util_d_Bind3 as Bind3, util_d_Bind4 as Bind4, util_d_Bind5 as Bind5, util_d_bind as bind, util_d_Curry1 as Curry1, util_d_Curry2 as Curry2, util_d_Curry3 as Curry3, util_d_Curry4 as Curry4, util_d_isArray as isArray, util_d_isFunction as isFunction, util_d_isString as isString, util_d_isStringSafe as isStringSafe, util_d_isNumber as isNumber, util_d_isObject as isObject, util_d_isBuiltInObject as isBuiltInObject, util_d_isTypedArray as isTypedArray, util_d_isDom as isDom, util_d_isGradientObject as isGradientObject, util_d_isImagePatternObject as isImagePatternObject, util_d_isRegExp as isRegExp, util_d_eqNaN as eqNaN, util_d_retrieve as retrieve, util_d_retrieve2 as retrieve2, util_d_retrieve3 as retrieve3, util_d_slice as slice, util_d_normalizeCssArray as normalizeCssArray, util_d_assert as assert, util_d_trim as trim, util_d_setAsPrimitive as setAsPrimitive, util_d_isPrimitive as isPrimitive, util_d_HashMap as HashMap, util_d_createHashMap as createHashMap, util_d_concatArray as concatArray, util_d_createObject as createObject, util_d_disableUserSelect as disableUserSelect, util_d_hasOwn as hasOwn, util_d_noop as noop, util_d_RADIAN_TO_DEGREE as RADIAN_TO_DEGREE, util_d_EPSILON as EPSILON, }; } declare type EventCallbackSingleParam = EvtParam extends any ? (params: EvtParam) => boolean | void : never; declare type EventCallback = EvtParams extends any[] ? (...args: EvtParams) => boolean | void : never; declare type EventQuery = string | Object; declare type CbThis = unknown extends Ctx ? Impl : Ctx; declare type DefaultEventDefinition = Dictionary>; interface EventProcessor { normalizeQuery?: (query: EventQuery) => EventQuery; filter?: (eventType: keyof EvtDef, query: EventQuery) => boolean; afterTrigger?: (eventType: keyof EvtDef) => void; } declare class Eventful { private _$handlers; protected _$eventProcessor: EventProcessor; constructor(eventProcessors?: EventProcessor); on(event: EvtNm, handler: WithThisType>, context?: Ctx): this; on(event: EvtNm, query: EventQuery, handler: WithThisType>, context?: Ctx): this; isSilent(eventName: keyof EvtDef): boolean; off(eventType?: keyof EvtDef, handler?: Function): this; trigger(eventType: EvtNm, ...args: Parameters): this; triggerWithContext(type: keyof EvtDef, ...args: any[]): this; } declare type VectorArray = number[]; declare function create(x?: number, y?: number): VectorArray; declare function copy(out: T, v: VectorArray): T; declare function clone$1(v: VectorArray): VectorArray; declare function set(out: T, a: number, b: number): T; declare function add(out: T, v1: VectorArray, v2: VectorArray): T; declare function scaleAndAdd(out: T, v1: VectorArray, v2: VectorArray, a: number): T; declare function sub(out: T, v1: VectorArray, v2: VectorArray): T; declare function len(v: VectorArray): number; declare const length: typeof len; declare function lenSquare(v: VectorArray): number; declare const lengthSquare: typeof lenSquare; declare function mul(out: T, v1: VectorArray, v2: VectorArray): T; declare function div(out: T, v1: VectorArray, v2: VectorArray): T; declare function dot(v1: VectorArray, v2: VectorArray): number; declare function scale(out: T, v: VectorArray, s: number): T; declare function normalize(out: T, v: VectorArray): T; declare function distance(v1: VectorArray, v2: VectorArray): number; declare const dist: typeof distance; declare function distanceSquare(v1: VectorArray, v2: VectorArray): number; declare const distSquare: typeof distanceSquare; declare function negate(out: T, v: VectorArray): T; declare function lerp(out: T, v1: VectorArray, v2: VectorArray, t: number): T; declare function applyTransform(out: T, v: VectorArray, m: MatrixArray): T; declare function min(out: T, v1: VectorArray, v2: VectorArray): T; declare function max(out: T, v1: VectorArray, v2: VectorArray): T; type vector_d_VectorArray = VectorArray; declare const vector_d_create: typeof create; declare const vector_d_copy: typeof copy; declare const vector_d_set: typeof set; declare const vector_d_add: typeof add; declare const vector_d_scaleAndAdd: typeof scaleAndAdd; declare const vector_d_sub: typeof sub; declare const vector_d_len: typeof len; declare const vector_d_length: typeof length; declare const vector_d_lenSquare: typeof lenSquare; declare const vector_d_lengthSquare: typeof lengthSquare; declare const vector_d_mul: typeof mul; declare const vector_d_div: typeof div; declare const vector_d_dot: typeof dot; declare const vector_d_scale: typeof scale; declare const vector_d_normalize: typeof normalize; declare const vector_d_distance: typeof distance; declare const vector_d_dist: typeof dist; declare const vector_d_distanceSquare: typeof distanceSquare; declare const vector_d_distSquare: typeof distSquare; declare const vector_d_negate: typeof negate; declare const vector_d_lerp: typeof lerp; declare const vector_d_applyTransform: typeof applyTransform; declare const vector_d_min: typeof min; declare const vector_d_max: typeof max; declare namespace vector_d { export { vector_d_VectorArray as VectorArray, vector_d_create as create, vector_d_copy as copy, clone$1 as clone, vector_d_set as set, vector_d_add as add, vector_d_scaleAndAdd as scaleAndAdd, vector_d_sub as sub, vector_d_len as len, vector_d_length as length, vector_d_lenSquare as lenSquare, vector_d_lengthSquare as lengthSquare, vector_d_mul as mul, vector_d_div as div, vector_d_dot as dot, vector_d_scale as scale, vector_d_normalize as normalize, vector_d_distance as distance, vector_d_dist as dist, vector_d_distanceSquare as distanceSquare, vector_d_distSquare as distSquare, vector_d_negate as negate, vector_d_lerp as lerp, vector_d_applyTransform as applyTransform, vector_d_min as min, vector_d_max as max, }; } declare type MatrixArray = number[]; declare function create$1(): MatrixArray; declare function identity(out: MatrixArray): MatrixArray; declare function copy$1(out: MatrixArray, m: MatrixArray): MatrixArray; declare function mul$1(out: MatrixArray, m1: MatrixArray, m2: MatrixArray): MatrixArray; declare function translate(out: MatrixArray, a: MatrixArray, v: VectorArray): MatrixArray; declare function rotate(out: MatrixArray, a: MatrixArray, rad: number, pivot?: VectorArray): MatrixArray; declare function scale$1(out: MatrixArray, a: MatrixArray, v: VectorArray): MatrixArray; declare function invert(out: MatrixArray, a: MatrixArray): MatrixArray | null; declare function clone$2(a: MatrixArray): MatrixArray; type matrix_d_MatrixArray = MatrixArray; declare const matrix_d_identity: typeof identity; declare const matrix_d_translate: typeof translate; declare const matrix_d_rotate: typeof rotate; declare const matrix_d_invert: typeof invert; declare namespace matrix_d { export { matrix_d_MatrixArray as MatrixArray, create$1 as create, matrix_d_identity as identity, copy$1 as copy, mul$1 as mul, matrix_d_translate as translate, matrix_d_rotate as rotate, scale$1 as scale, matrix_d_invert as invert, clone$2 as clone, }; } interface PointLike { x: number; y: number; } declare class Point { x: number; y: number; constructor(x?: number, y?: number); copy(other: PointLike): this; clone(): Point; set(x: number, y: number): this; equal(other: PointLike): boolean; add(other: PointLike): this; scale(scalar: number): void; scaleAndAdd(other: PointLike, scalar: number): void; sub(other: PointLike): this; dot(other: PointLike): number; len(): number; lenSquare(): number; normalize(): this; distance(other: PointLike): number; distanceSquare(other: Point): number; negate(): this; transform(m: MatrixArray): this; toArray(out: number[]): number[]; fromArray(input: number[]): void; static set(p: PointLike, x: number, y: number): void; static copy(p: PointLike, p2: PointLike): void; static len(p: PointLike): number; static lenSquare(p: PointLike): number; static dot(p0: PointLike, p1: PointLike): number; static add(out: PointLike, p0: PointLike, p1: PointLike): void; static sub(out: PointLike, p0: PointLike, p1: PointLike): void; static scale(out: PointLike, p0: PointLike, scalar: number): void; static scaleAndAdd(out: PointLike, p0: PointLike, p1: PointLike, scalar: number): void; static lerp(out: PointLike, p0: PointLike, p1: PointLike, t: number): void; } declare class BoundingRect { x: number; y: number; width: number; height: number; constructor(x: number, y: number, width: number, height: number); static set(target: TTarget, x: number, y: number, width: number, height: number): TTarget; union(other: BoundingRect): void; applyTransform(m: MatrixArray): void; calculateTransform(b: RectLike): MatrixArray; intersect(b: RectLike, mtv?: PointLike, opt?: BoundingRectIntersectOpt): boolean; static intersect(a: RectLike, b: RectLike, mtv?: PointLike, opt?: BoundingRectIntersectOpt): boolean; static contain(rect: RectLike, x: number, y: number): boolean; contain(x: number, y: number): boolean; clone(): BoundingRect; copy(other: RectLike): void; plain(): RectLike; isFinite(): boolean; isZero(): boolean; static create(rect?: RectLike | NullUndefined): BoundingRect; static copy(target: TTarget, source: RectLike): TTarget; static applyTransform(target: RectLike, source: RectLike, m: MatrixArray): void; static calculateTransform(out: MatrixArray | NullUndefined, a: RectLike, b: RectLike): MatrixArray; } declare type RectLike = { x: number; y: number; width: number; height: number; }; interface BoundingRectIntersectOpt { direction?: number; bidirectional?: boolean; touchThreshold?: number; outIntersectRect?: RectLike; clamp?: boolean; } interface ExtendedCanvasRenderingContext2D extends CanvasRenderingContext2D { dpr?: number; } declare class PathProxy { dpr: number; data: number[] | Float32Array; private _version; private _saveData; private _pendingPtX; private _pendingPtY; private _pendingPtDist; private _ctx; private _xi; private _yi; private _x0; private _y0; private _len; private _pathSegLen; private _pathLen; private _ux; private _uy; static CMD: { M: number; L: number; C: number; Q: number; A: number; Z: number; R: number; }; constructor(notSaveData?: boolean); increaseVersion(): void; getVersion(): number; setScale(sx: number, sy: number, segmentIgnoreThreshold?: number): void; setDPR(dpr: number): void; setContext(ctx: ExtendedCanvasRenderingContext2D): void; getContext(): ExtendedCanvasRenderingContext2D; beginPath(): this; reset(): void; moveTo(x: number, y: number): this; lineTo(x: number, y: number): this; bezierCurveTo(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): this; quadraticCurveTo(x1: number, y1: number, x2: number, y2: number): this; arc(cx: number, cy: number, r: number, startAngle: number, endAngle: number, anticlockwise?: boolean): this; arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this; rect(x: number, y: number, w: number, h: number): this; closePath(): this; fill(ctx: CanvasRenderingContext2D): void; stroke(ctx: CanvasRenderingContext2D): void; len(): number; setData(data: Float32Array | number[]): void; appendPath(path: PathProxy | PathProxy[]): void; addData(cmd: number, a?: number, b?: number, c?: number, d?: number, e?: number, f?: number, g?: number, h?: number): void; private _drawPendingPt; private _expandData; toStatic(): void; getBoundingRect(): BoundingRect; private _calculateLength; rebuildPath(ctx: PathRebuilder, percent: number): void; clone(): PathProxy; canSave(): boolean; private static initDefaultProps; } interface PathRebuilder { moveTo(x: number, y: number): void; lineTo(x: number, y: number): void; bezierCurveTo(x: number, y: number, x2: number, y2: number, x3: number, y3: number): void; quadraticCurveTo(x: number, y: number, x2: number, y2: number): void; arc(cx: number, cy: number, r: number, startAngle: number, endAngle: number, anticlockwise: boolean): void; ellipse(cx: number, cy: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise: boolean): void; rect(x: number, y: number, width: number, height: number): void; closePath(): void; } declare type easingFunc = (percent: number) => number; declare type AnimationEasing = keyof typeof easingFuncs | easingFunc; declare const easingFuncs: { linear(k: number): number; quadraticIn(k: number): number; quadraticOut(k: number): number; quadraticInOut(k: number): number; cubicIn(k: number): number; cubicOut(k: number): number; cubicInOut(k: number): number; quarticIn(k: number): number; quarticOut(k: number): number; quarticInOut(k: number): number; quinticIn(k: number): number; quinticOut(k: number): number; quinticInOut(k: number): number; sinusoidalIn(k: number): number; sinusoidalOut(k: number): number; sinusoidalInOut(k: number): number; exponentialIn(k: number): number; exponentialOut(k: number): number; exponentialInOut(k: number): number; circularIn(k: number): number; circularOut(k: number): number; circularInOut(k: number): number; elasticIn(k: number): number; elasticOut(k: number): number; elasticInOut(k: number): number; backIn(k: number): number; backOut(k: number): number; backInOut(k: number): number; bounceIn(k: number): number; bounceOut(k: number): number; bounceInOut(k: number): number; }; interface Stage { update?: () => void; } interface AnimationOption { stage?: Stage; } declare class Animation extends Eventful { stage: Stage; private _head; private _tail; private _running; private _time; private _pausedTime; private _pauseStart; private _paused; constructor(opts?: AnimationOption); addClip(clip: Clip): void; addAnimator(animator: Animator): void; removeClip(clip: Clip): void; removeAnimator(animator: Animator): void; update(notTriggerFrameAndStageUpdate?: boolean): void; _startLoop(): void; start(): void; stop(): void; pause(): void; resume(): void; clear(): void; isFinished(): boolean; animate(target: T, options: { loop?: boolean; }): Animator; } declare type OnframeCallback = (percent: number) => void; declare type ondestroyCallback = () => void; declare type onrestartCallback = () => void; interface ClipProps { life?: number; delay?: number; loop?: boolean; easing?: AnimationEasing; onframe?: OnframeCallback; ondestroy?: ondestroyCallback; onrestart?: onrestartCallback; } declare class Clip { private _life; private _delay; private _inited; private _startTime; private _pausedTime; private _paused; animation: Animation; loop: boolean; easing: AnimationEasing; easingFunc: (p: number) => number; next: Clip; prev: Clip; onframe: OnframeCallback; ondestroy: ondestroyCallback; onrestart: onrestartCallback; constructor(opts: ClipProps); step(globalTime: number, deltaTime: number): boolean; pause(): void; resume(): void; setEasing(easing: AnimationEasing): void; } declare type ValueType = 0 | 1 | 2 | 3 | 4 | 5 | 6; declare type Keyframe = { time: number; value: unknown; percent: number; rawValue: unknown; easing?: AnimationEasing; easingFunc?: (percent: number) => number; additiveValue?: unknown; }; declare class Track { keyframes: Keyframe[]; propName: string; valType: ValueType; discrete: boolean; _invalid: boolean; private _finished; private _needsSort; private _additiveTrack; private _additiveValue; private _lastFr; private _lastFrP; constructor(propName: string); isFinished(): boolean; setFinished(): void; needsAnimate(): boolean; getAdditiveTrack(): Track; addKeyframe(time: number, rawValue: unknown, easing?: AnimationEasing): Keyframe; prepare(maxTime: number, additiveTrack?: Track): void; step(target: any, percent: number): void; private _addToTarget; } declare type DoneCallback = () => void; declare type AbortCallback = () => void; declare type OnframeCallback$1 = (target: T, percent: number) => void; declare class Animator { animation?: Animation; targetName?: string; scope?: string; __fromStateTransition?: string; private _tracks; private _trackKeys; private _target; private _loop; private _delay; private _maxTime; private _force; private _paused; private _started; private _allowDiscrete; private _additiveAnimators; private _doneCbs; private _onframeCbs; private _abortedCbs; private _clip; constructor(target: T, loop: boolean, allowDiscreteAnimation?: boolean, additiveTo?: Animator[]); getMaxTime(): number; getDelay(): number; getLoop(): boolean; getTarget(): T; changeTarget(target: T): void; when(time: number, props: Dictionary, easing?: AnimationEasing): this; whenWithKeys(time: number, props: Dictionary, propNames: string[], easing?: AnimationEasing): this; pause(): void; resume(): void; isPaused(): boolean; duration(duration: number): this; private _doneCallback; private _abortedCallback; private _setTracksFinished; private _getAdditiveTrack; start(easing?: AnimationEasing): this; stop(forwardToLast?: boolean): void; delay(time: number): this; during(cb: OnframeCallback$1): this; done(cb: DoneCallback): this; aborted(cb: AbortCallback): this; getClip(): Clip; getTrack(propName: string): Track; getTracks(): Track[]; stopTracks(propNames: string[], forwardToLast?: boolean): boolean; saveTo(target: T, trackKeys?: readonly string[], firstOrLast?: boolean): void; __changeFinalValue(finalProps: Dictionary, trackKeys?: readonly string[]): void; } interface PathStyleProps extends CommonStyleProps { fill?: string | PatternObject | LinearGradientObject | RadialGradientObject; stroke?: string | PatternObject | LinearGradientObject | RadialGradientObject; decal?: PatternObject; strokePercent?: number; strokeNoScale?: boolean; fillOpacity?: number; strokeOpacity?: number; lineDash?: false | number[] | 'solid' | 'dashed' | 'dotted'; lineDashOffset?: number; lineWidth?: number; lineCap?: CanvasLineCap; lineJoin?: CanvasLineJoin; miterLimit?: number; strokeFirst?: boolean; } interface PathProps extends DisplayableProps { strokeContainThreshold?: number; segmentIgnoreThreshold?: number; subPixelOptimize?: boolean; style?: PathStyleProps; shape?: Dictionary; autoBatch?: boolean; __value?: (string | number)[] | (string | number); buildPath?: (ctx: PathProxy | CanvasRenderingContext2D, shapeCfg: Dictionary, inBatch?: boolean) => void; } declare type PathKey = keyof PathProps; declare type PathPropertyType = PropType; declare type PathStatePropNames = DisplayableStatePropNames | 'shape'; declare type PathState = Pick & { hoverLayer?: ElementCommonState['hoverLayer']; }; interface Path { animate(key?: '', loop?: boolean): Animator; animate(key: 'style', loop?: boolean): Animator; animate(key: 'shape', loop?: boolean): Animator; getState(stateName: string): PathState; ensureState(stateName: string): PathState; states: Dictionary; stateProxy: (stateName: string) => PathState; } declare class Path extends Displayable { path: PathProxy; strokeContainThreshold: number; segmentIgnoreThreshold: number; subPixelOptimize: boolean; style: PathStyleProps; autoBatch: boolean; private _rectStroke; protected _normalState: PathState; protected _decalEl: Path; shape: Dictionary; constructor(opts?: Props); update(): void; getDecalElement(): Path; protected _init(props?: Props): void; protected getDefaultStyle(): Props['style']; protected getDefaultShape(): {}; protected canBeInsideText(): boolean; protected getInsideTextFill(): "#333" | "#ccc" | "#eee"; protected getInsideTextStroke(textFill?: string): string; buildPath(ctx: PathProxy | CanvasRenderingContext2D, shapeCfg: Dictionary, inBatch?: boolean): void; pathUpdated(): void; getUpdatedPathProxy(inBatch?: boolean): PathProxy; createPathProxy(): void; hasStroke(): boolean; hasFill(): boolean; getBoundingRect(): BoundingRect; contain(x: number, y: number): boolean; dirtyShape(): void; dirty(): void; animateShape(loop: boolean): Animator; updateDuringAnimation(targetKey: string): void; attrKV(key: PathKey, value: PathPropertyType): void; setShape(obj: Props['shape']): this; setShape(obj: T, value: Props['shape'][T]): this; shapeChanged(): boolean; createStyle(obj?: Props['style']): Props["style"]; protected _innerSaveToNormal(toState: PathState): void; protected _applyStateObj(stateName: string, state: PathState, normalState: PathState, keepCurrentStates: boolean, transition: boolean, animationCfg: ElementAnimateConfig): void; protected _mergeStates(states: PathState[]): PathState; getAnimationStyleProps(): MapToType; isZeroArea(): boolean; static extend>(defaultProps: { type?: string; shape?: Shape; style?: PathStyleProps; beforeBrush?: Displayable['beforeBrush']; afterBrush?: Displayable['afterBrush']; getBoundingRect?: Displayable['getBoundingRect']; calculateTextPosition?: Element['calculateTextPosition']; buildPath(this: Path, ctx: CanvasRenderingContext2D | PathProxy, shape: Shape, inBatch?: boolean): void; init?(this: Path, opts: PathProps): void; }): { new (opts?: PathProps & { shape: Shape; }): Path; }; protected static initDefaultProps: void; } declare class Transformable { parent: Transformable; x: number; y: number; scaleX: number; scaleY: number; skewX: number; skewY: number; rotation: number; anchorX: number; anchorY: number; originX: number; originY: number; globalScaleRatio: number; transform: MatrixArray; invTransform: MatrixArray; getLocalTransform(m?: MatrixArray): MatrixArray; setPosition(arr: number[]): void; setScale(arr: number[]): void; setSkew(arr: number[]): void; setOrigin(arr: number[]): void; needLocalTransform(): boolean; updateTransform(): void; private _resolveGlobalScaleRatio; getComputedTransform(): MatrixArray; setLocalTransform(m: VectorArray): void; decomposeTransform(): void; getGlobalScale(out?: VectorArray): VectorArray; transformCoordToLocal(x: number, y: number): number[]; transformCoordToGlobal(x: number, y: number): number[]; getLineScale(): number; copyTransform(source: Transformable): void; static getLocalTransform(target: Transformable, m?: MatrixArray): MatrixArray; private static initDefaultProps; } declare const TRANSFORMABLE_PROPS: readonly ["x", "y", "originX", "originY", "anchorX", "anchorY", "rotation", "scaleX", "scaleY", "skewX", "skewY"]; declare type TransformProp = (typeof TRANSFORMABLE_PROPS)[number]; interface TSpanStyleProps extends PathStyleProps { x?: number; y?: number; text?: string; font?: string; fontSize?: number; fontWeight?: FontWeight; fontStyle?: FontStyle; fontFamily?: string; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; } interface TSpanProps extends DisplayableProps { style?: TSpanStyleProps; } declare class TSpan extends Displayable { style: TSpanStyleProps; hasStroke(): boolean; hasFill(): boolean; createStyle(obj?: TSpanStyleProps): TSpanStyleProps; setBoundingRect(rect: BoundingRect): void; getBoundingRect(): BoundingRect; protected static initDefaultProps: void; } interface ImageStyleProps extends CommonStyleProps { image?: string | ImageLike; x?: number; y?: number; width?: number; height?: number; sx?: number; sy?: number; sWidth?: number; sHeight?: number; } interface ImageProps extends DisplayableProps { style?: ImageStyleProps; onload?: (image: ImageLike) => void; } declare class ZRImage extends Displayable { style: ImageStyleProps; __image: ImageLike; __imageSrc: string; onload: (image: ImageLike) => void; createStyle(obj?: ImageStyleProps): ImageStyleProps; private _getSize; getWidth(): number; getHeight(): number; getAnimationStyleProps(): MapToType; getBoundingRect(): BoundingRect; } declare class RectShape { r?: number | number[]; x: number; y: number; width: number; height: number; } interface RectProps extends PathProps { shape?: Partial; } declare class Rect extends Path { shape: RectShape; constructor(opts?: RectProps); getDefaultShape(): RectShape; buildPath(ctx: CanvasRenderingContext2D, shape: RectShape): void; isZeroArea(): boolean; } interface GroupProps extends ElementProps { } declare class Group extends Element { readonly isGroup = true; private _children; constructor(opts?: GroupProps); childrenRef(): Element[]; children(): Element[]; childAt(idx: number): Element; childOfName(name: string): Element; childCount(): number; add(child: Element): Group; addBefore(child: Element, nextSibling: Element): this; replace(oldChild: Element, newChild: Element): this; replaceAt(child: Element, index: number): this; _doAdd(child: Element): void; remove(child: Element): this; removeAll(): this; eachChild(cb: (this: Context, el: Element, index?: number) => void, context?: Context): this; traverse(cb: (this: T, el: Element) => boolean | void, context?: T): this; addSelfToZr(zr: ZRenderType): void; removeSelfFromZr(zr: ZRenderType): void; getBoundingRect(includeChildren?: Element[]): BoundingRect; } interface GroupLike extends Element { childrenRef(): Element[]; } interface TextStylePropsPart { text?: string; fill?: string; stroke?: string; strokeNoScale?: boolean; opacity?: number; fillOpacity?: number; strokeOpacity?: number; lineWidth?: number; lineDash?: false | number[]; lineDashOffset?: number; borderDash?: false | number[]; borderDashOffset?: number; font?: string; textFont?: string; fontStyle?: FontStyle; fontWeight?: FontWeight; fontFamily?: string; fontSize?: number | string; align?: TextAlign; verticalAlign?: TextVerticalAlign; lineHeight?: number; width?: number | string; height?: number; tag?: string; textShadowColor?: string; textShadowBlur?: number; textShadowOffsetX?: number; textShadowOffsetY?: number; backgroundColor?: string | { image: ImageLike | string; }; padding?: number | number[]; margin?: number | number[]; borderColor?: string; borderWidth?: number; borderRadius?: number | number[]; shadowColor?: string; shadowBlur?: number; shadowOffsetX?: number; shadowOffsetY?: number; } interface TextStyleProps extends TextStylePropsPart { text?: string; x?: number; y?: number; width?: number; rich?: Dictionary; overflow?: 'break' | 'breakAll' | 'truncate' | 'none'; lineOverflow?: 'truncate'; ellipsis?: string; placeholder?: string; truncateMinChar?: number; } interface TextProps extends DisplayableProps { style?: TextStyleProps; zlevel?: number; z?: number; z2?: number; culling?: boolean; cursor?: string; } declare type TextState = Pick & ElementCommonState; declare type DefaultTextStyle = Pick & { autoStroke?: boolean; overflowRect?: BoundingRect | NullUndefined; }; interface ZRText { animate(key?: '', loop?: boolean): Animator; animate(key: 'style', loop?: boolean): Animator; getState(stateName: string): TextState; ensureState(stateName: string): TextState; states: Dictionary; stateProxy: (stateName: string) => TextState; } declare class ZRText extends Displayable implements GroupLike { type: string; style: TextStyleProps; overlap: 'hidden' | 'show' | 'blur'; innerTransformable: Transformable; isTruncated: boolean; private _children; private _childCursor; private _defaultStyle; constructor(opts?: TextProps); childrenRef(): (ZRImage | Rect | TSpan)[]; update(): void; updateTransform(): void; getLocalTransform(m?: MatrixArray): MatrixArray; getComputedTransform(): MatrixArray; private _updateSubTexts; addSelfToZr(zr: ZRenderType): void; removeSelfFromZr(zr: ZRenderType): void; getBoundingRect(): BoundingRect; setDefaultTextStyle(defaultTextStyle: DefaultTextStyle): void; setTextContent(textContent: never): void; protected _mergeStyle(targetStyle: TextStyleProps, sourceStyle: TextStyleProps): TextStyleProps; private _mergeRich; getAnimationStyleProps(): MapToType; private _getOrCreateChild; private _updatePlainTexts; private _updateRichTexts; private _placeToken; private _renderBackground; static makeFont(style: TextStylePropsPart): string; } interface TextPositionCalculationResult { x: number; y: number; align: TextAlign; verticalAlign: TextVerticalAlign; } declare class PolylineShape { points: VectorArray[]; percent?: number; smooth?: number; smoothConstraint?: VectorArray[]; } interface PolylineProps extends PathProps { shape?: Partial; } declare class Polyline extends Path { shape: PolylineShape; constructor(opts?: PolylineProps); getDefaultStyle(): { stroke: string; fill: string; }; getDefaultShape(): PolylineShape; buildPath(ctx: CanvasRenderingContext2D, shape: PolylineShape): void; } interface ElementAnimateConfig { duration?: number; delay?: number; easing?: AnimationEasing; during?: (percent: number) => void; done?: Function; aborted?: Function; scope?: string; force?: boolean; additive?: boolean; setToFinal?: boolean; } 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; autoOverflowArea?: boolean; } interface ElementTextGuideLineConfig { anchor?: Point; showAbove?: boolean; candidates?: ('left' | 'top' | 'right' | 'bottom')[]; } 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; } declare type ElementEventCallback = (this: CbThis$1, e: ElementEvent) => boolean | void; declare type CbThis$1 = unknown extends Ctx ? Impl : Ctx; interface ElementEventHandlerProps { onclick: ElementEventCallback; ondblclick: ElementEventCallback; onmouseover: ElementEventCallback; onmouseout: ElementEventCallback; onmousemove: ElementEventCallback; onmousewheel: ElementEventCallback; onmousedown: ElementEventCallback; onmouseup: ElementEventCallback; oncontextmenu: ElementEventCallback; ondrag: ElementEventCallback; ondragstart: ElementEventCallback; ondragend: ElementEventCallback; ondragenter: ElementEventCallback; ondragleave: ElementEventCallback; ondragover: ElementEventCallback; ondrop: ElementEventCallback; } interface ElementProps extends Partial, Partial> { name?: string; ignore?: boolean; isGroup?: boolean; draggable?: boolean | 'horizontal' | 'vertical'; silent?: boolean; ignoreHostSilent?: boolean; ignoreClip?: boolean; globalScaleRatio?: number; textConfig?: ElementTextConfig; textContent?: ZRText; clipPath?: Path; drift?: Element['drift']; extra?: Dictionary; anid?: string; } declare const PRIMARY_STATES_KEYS: ["x" | "y" | "originX" | "originY" | "anchorX" | "anchorY" | "rotation" | "scaleX" | "scaleY" | "skewX" | "skewY", "ignore"]; declare type ElementStatePropNames = (typeof PRIMARY_STATES_KEYS)[number] | 'textConfig'; declare type ElementState = Pick & ElementCommonState; declare type ElementCommonState = { hoverLayer?: boolean | number; }; declare type ElementCalculateTextPosition = (out: TextPositionCalculationResult, style: ElementTextConfig, rect: RectLike) => TextPositionCalculationResult; declare type InHoverLayerKind = typeof IN_HOVER_LAYER_KIND_NO | typeof IN_HOVER_LAYER_KIND_ONLY_STYLE_CHANGE; declare const IN_HOVER_LAYER_KIND_NO = 0; declare const IN_HOVER_LAYER_KIND_ONLY_STYLE_CHANGE = 1; interface Element extends Transformable, Eventful<{ [key in ElementEventName]: (e: ElementEvent) => void | boolean; } & { [key in string]: (...args: any) => void | boolean; }>, ElementEventHandlerProps { } declare class Element { id: number; type: string; name: string; ignore: boolean; silent: boolean; ignoreHostSilent: boolean; isGroup: boolean; draggable: boolean | 'horizontal' | 'vertical'; dragging: boolean; parent: Group; animators: Animator[]; ignoreClip: boolean; __hostTarget: Element; __zr: ZRenderType; __dirty: number; __isRendered: boolean; __inHover: InHoverLayerKind; __clipPaths?: Path[]; private _clipPath?; private _textContent?; private _textGuide?; textConfig?: ElementTextConfig; textGuideLineConfig?: ElementTextGuideLineConfig; anid: string; extra: Dictionary; currentStates?: string[]; prevStates?: string[]; states: Dictionary; 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(cb: (this: Context, el: Element) => void, context?: Context): void; protected attrKV(key: string, value: unknown): void; hide(): void; show(): void; attr(keyOrObj: Props): this; attr(keyOrObj: T, value: Props[T]): this; saveCurrentToNormalState(toState: ElementState): void; protected _innerSaveToNormal(toState: ElementState): void; protected _savePrimaryToNormal(toState: Dictionary, normalState: Dictionary, 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; 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; addSelfToZr(zr: ZRenderType): void; removeSelfFromZr(zr: ZRenderType): void; animate(key?: string, loop?: boolean, allowDiscreteAnimation?: boolean): Animator; addAnimator(animator: Animator, key: string): void; updateDuringAnimation(key: string): void; stopAnimation(scope?: string, forwardToLast?: boolean): this; animateTo(target: Props, cfg?: ElementAnimateConfig, animationProps?: MapToType): void; animateFrom(target: Props, cfg: ElementAnimateConfig, animationProps?: MapToType): void; protected _transitionState(stateName: string, target: Props, cfg?: ElementAnimateConfig, animationProps?: MapToType): void; getBoundingRect(): BoundingRect; getPaintRect(): BoundingRect; calculateTextPosition: ElementCalculateTextPosition; protected static initDefaultProps: void; } interface CommonStyleProps { shadowBlur?: number; shadowOffsetX?: number; shadowOffsetY?: number; shadowColor?: string; opacity?: number; blend?: string; } interface DisplayableProps extends ElementProps { style?: Dictionary; zlevel?: number; z?: number; z2?: number; culling?: boolean; cursor?: string; rectHover?: boolean; progressive?: boolean; incremental?: Displayable['incremental']; ignoreCoarsePointer?: boolean; batch?: boolean; invisible?: boolean; } declare type DisplayableKey = keyof DisplayableProps; declare type DisplayablePropertyType = PropType; declare type DisplayableStatePropNames = ElementStatePropNames | 'style' | 'z' | 'z2' | 'invisible'; declare type DisplayableState = Pick & ElementCommonState; interface BeforeBrushParam { contentRetained?: boolean; } interface Displayable { animate(key?: '', loop?: boolean): Animator; animate(key: 'style', loop?: boolean): Animator; getState(stateName: string): DisplayableState; ensureState(stateName: string): DisplayableState; states: Dictionary; stateProxy: (stateName: string) => DisplayableState; } declare class Displayable extends Element { invisible: boolean; z: number; z2: number; zlevel: number; culling: boolean; cursor: string; rectHover: boolean; incremental: IncrementalIdCompat; notClear?: boolean; __layerCleared?: boolean; ignoreCoarsePointer?: boolean; style: Dictionary; protected _normalState: DisplayableState; protected _rect: BoundingRect; protected _paintRect: BoundingRect; protected _prevPaintRect: BoundingRect; dirtyRectTolerance: number; useHoverLayer?: boolean; __hoverStyle?: CommonStyleProps; __clipPaths?: Path[]; __canvasFillGradient: CanvasGradient; __canvasStrokeGradient: CanvasGradient; __canvasFillPattern: CanvasPattern; __canvasStrokePattern: CanvasPattern; __svgEl: SVGElement; constructor(props?: Props); protected _init(props?: Props): void; beforeBrush(param: BeforeBrushParam): void; afterBrush(): void; innerBeforeBrush(): void; innerAfterBrush(): void; shouldBePainted(viewWidth: number, viewHeight: number, considerClipPath: boolean, considerAncestors: boolean): boolean; contain(x: number, y: number): boolean; traverse(cb: (this: Context, el: this) => void, context?: Context): void; rectContain(x: number, y: number): boolean; getPaintRect(): BoundingRect; setPrevPaintRect(paintRect: BoundingRect): void; getPrevPaintRect(): BoundingRect; animateStyle(loop: boolean): Animator; updateDuringAnimation(targetKey: string): void; attrKV(key: DisplayableKey, value: DisplayablePropertyType): void; setStyle(obj: Props['style']): this; setStyle(obj: T, value: Props['style'][T]): this; dirtyStyle(notRedraw?: boolean): void; dirty(): void; styleChanged(): boolean; styleUpdated(): void; createStyle(obj?: Props['style']): Props["style"]; useStyle(obj: Props['style']): void; protected _useHoverStyle(obj: Props['style']): void; isStyleObject(obj: Props['style']): any; protected _innerSaveToNormal(toState: DisplayableState): void; protected _applyStateObj(stateName: string, state: DisplayableState, normalState: DisplayableState, keepCurrentStates: boolean, transition: boolean, animationCfg: ElementAnimateConfig): void; protected _mergeStates(states: DisplayableState[]): DisplayableState; protected _mergeStyle(targetStyle: CommonStyleProps, sourceStyle: CommonStyleProps): CommonStyleProps; getAnimationStyleProps(): MapToType; protected static initDefaultProps: void; } interface LayerConfig { clearColor?: string | GradientObject | ImagePatternObject; motionBlur?: boolean; lastFrameAlpha?: number; } declare function shapeCompareFunc(a: Displayable, b: Displayable): number; declare class Storage { private _roots; private _displayList; private _displayListLen; traverse(cb: (this: T, el: Element) => void, context?: T): void; getDisplayList(update?: boolean, includeIgnore?: boolean): Displayable[]; updateDisplayList(includeIgnore?: boolean): void; private _updateAndAddDisplayable; addRoot(el: Element): void; delRoot(el: Element | Element[]): void; delAllRoots(): void; getRoots(): Element[]; dispose(): void; displayableSortFunc: typeof shapeCompareFunc; } declare type CanvasPainterRefreshOpt = { paintAll?: boolean; refresh?: boolean; refreshHover?: boolean; }; interface PainterBase { type: string; root?: HTMLElement; ssrOnly?: boolean; resize(width?: number | string, height?: number | string): void; refresh(opt?: CanvasPainterRefreshOpt | NullUndefined): void; clear(): void; renderToString?(): string; getType: () => string; getWidth(): number; getHeight(): number; dispose(): void; getViewportRoot: () => HTMLElement; getViewportRootOffset: () => { offsetLeft: number; offsetTop: number; }; configLayer(zlevel: number, config: Dictionary): void; setBackgroundColor(backgroundColor: string | GradientObject | PatternObject): void; } interface HandlerProxyInterface extends Eventful { handler: Handler; dispose: () => void; setCursor: (cursorStyle?: string) => void; } declare class HoveredResult { x: number; y: number; target: Displayable; topTarget: Displayable; constructor(x?: number, y?: number); } declare type HandlerName = 'click' | 'dblclick' | 'mousewheel' | 'mouseout' | 'mouseup' | 'mousedown' | 'mousemove' | 'contextmenu'; declare class Handler extends Eventful { storage: Storage; painter: PainterBase; painterRoot: HTMLElement; proxy: HandlerProxyInterface; private _hovered; private _gestureMgr; private _draggingMgr; private _pointerSize; _downEl: Element; _upEl: Element; _downPoint: [number, number]; constructor(storage: Storage, painter: PainterBase, proxy: HandlerProxyInterface, painterRoot: HTMLElement, pointerSize: number); setHandlerProxy(proxy: HandlerProxyInterface): void; mousemove(event: ZRRawEvent): void; mouseout(event: ZRRawEvent): void; resize(): void; dispatch(eventName: HandlerName, eventArgs?: any): void; dispose(): void; setCursorStyle(cursorStyle: string): void; dispatchToElement(targetInfo: { target?: Element; topTarget?: Element; }, eventName: ElementEventName, event: ZRRawEvent): void; findHover(x: number, y: number, exclude?: Displayable): HoveredResult; processGesture(event: ZRRawEvent, stage?: 'start' | 'end' | 'change'): void; click: (event: ZRRawEvent) => void; mousedown: (event: ZRRawEvent) => void; mouseup: (event: ZRRawEvent) => void; mousewheel: (event: ZRRawEvent) => void; dblclick: (event: ZRRawEvent) => void; contextmenu: (event: ZRRawEvent) => void; } /*! * ZRender, a high performance 2d drawing library. * * Copyright (c) 2013, Baidu Inc. * All rights reserved. * * LICENSE * https://github.com/ecomfe/zrender/blob/master/LICENSE */ declare type PainterBaseCtor = { new (dom: HTMLElement, storage: Storage, ...args: any[]): PainterBase; }; declare class ZRender { dom?: HTMLElement; id: number; storage: Storage; painter: PainterBase; handler: Handler; animation: Animation; private _sleepAfterStill; private _stillFrameAccum; private _needsRefresh; private _needsRefreshHover; private _disposed; private _darkMode; private _backgroundColor; constructor(id: number, dom?: HTMLElement, opts?: ZRenderInitOpt); add(el: Element): void; remove(el: Element): void; configLayer(zLevel: number, config: LayerConfig): void; setBackgroundColor(backgroundColor: string | GradientObject | PatternObject): void; getBackgroundColor(): string | GradientObject | PatternObject; setDarkMode(darkMode: boolean): void; isDarkMode(): boolean; refreshImmediately(noAnimationUpdate?: boolean): void; private _refresh; refresh(): void; flush(): void; private _flush; setSleepAfterStill(stillFramesCount: number): void; wakeUp(): void; refreshHover(): void; refreshHoverImmediately(): void; resize(opts?: { width?: number | string; height?: number | string; }): void; clearAnimation(): void; getWidth(): number | undefined; getHeight(): number | undefined; setCursorStyle(cursorStyle: string): void; findHover(x: number, y: number): { target: Displayable; topTarget: Displayable; } | undefined; on(eventName: ElementEventName, eventHandler: ElementEventCallback, context?: Ctx): this; on(eventName: string, eventHandler: WithThisType, unknown extends Ctx ? ZRenderType : Ctx>, context?: Ctx): this; off(eventName?: string, eventHandler?: EventCallback): void; trigger(eventName: string, event?: unknown): void; clear(): void; dispose(): void; } interface ZRenderInitOpt { renderer?: string; devicePixelRatio?: number; width?: number | string; height?: number | string; useDirtyRect?: boolean; useCoarsePointer?: 'auto' | boolean; pointerSize?: number; ssr?: boolean; } declare function init(dom?: HTMLElement | null, opts?: ZRenderInitOpt): ZRender; declare function dispose(zr: ZRender): void; declare function disposeAll(): void; declare function getInstance(id: number): ZRender; declare function registerPainter(name: string, Ctor: PainterBaseCtor): void; declare type ElementSSRData = HashMap; declare type ElementSSRDataGetter = (el: Element) => HashMap; declare function getElementSSRData(el: Element): ElementSSRData; declare function registerSSRDataGetter(getter: ElementSSRDataGetter): void; declare const version = "6.1.0"; interface ZRenderType extends ZRender { } type zrender_d_ZRenderInitOpt = ZRenderInitOpt; declare const zrender_d_init: typeof init; declare const zrender_d_dispose: typeof dispose; declare const zrender_d_disposeAll: typeof disposeAll; declare const zrender_d_getInstance: typeof getInstance; declare const zrender_d_registerPainter: typeof registerPainter; type zrender_d_ElementSSRData = ElementSSRData; type zrender_d_ElementSSRDataGetter = ElementSSRDataGetter; declare const zrender_d_getElementSSRData: typeof getElementSSRData; declare const zrender_d_registerSSRDataGetter: typeof registerSSRDataGetter; declare const zrender_d_version: typeof version; type zrender_d_ZRenderType = ZRenderType; declare namespace zrender_d { export { zrender_d_ZRenderInitOpt as ZRenderInitOpt, zrender_d_init as init, zrender_d_dispose as dispose, zrender_d_disposeAll as disposeAll, zrender_d_getInstance as getInstance, zrender_d_registerPainter as registerPainter, zrender_d_ElementSSRData as ElementSSRData, zrender_d_ElementSSRDataGetter as ElementSSRDataGetter, zrender_d_getElementSSRData as getElementSSRData, zrender_d_registerSSRDataGetter as registerSSRDataGetter, zrender_d_version as version, zrender_d_ZRenderType as ZRenderType, }; } declare function encodeHTML(source: string): string; interface InnerTruncateOption { maxIteration?: number; minChar?: number; placeholder?: string; maxIterations?: number; } declare function truncateText(text: string, containerWidth: number, font: string, ellipsis?: string, options?: InnerTruncateOption): string; declare type SVGPathOption = Omit; declare class SVGPath extends Path { applyTransform(m: MatrixArray): void; } declare function extendFromString(str: string, defaultOpts?: SVGPathOption): typeof SVGPath; declare function mergePath(pathEls: Path[], opts: PathProps): Path; declare class CircleShape { cx: number; cy: number; r: number; } interface CircleProps extends PathProps { shape?: Partial; } declare class Circle extends Path { shape: CircleShape; constructor(opts?: CircleProps); getDefaultShape(): CircleShape; buildPath(ctx: CanvasRenderingContext2D, shape: CircleShape): void; } declare class EllipseShape { cx: number; cy: number; rx: number; ry: number; } interface EllipseProps extends PathProps { shape?: Partial; } declare class Ellipse extends Path { shape: EllipseShape; constructor(opts?: EllipseProps); getDefaultShape(): EllipseShape; buildPath(ctx: CanvasRenderingContext2D, shape: EllipseShape): void; } declare class SectorShape { cx: number; cy: number; r0: number; r: number; startAngle: number; endAngle: number; clockwise: boolean; cornerRadius: number | number[]; } interface SectorProps extends PathProps { shape?: Partial; } declare class Sector extends Path { shape: SectorShape; constructor(opts?: SectorProps); getDefaultShape(): SectorShape; buildPath(ctx: CanvasRenderingContext2D, shape: SectorShape): void; isZeroArea(): boolean; } declare class RingShape { cx: number; cy: number; r: number; r0: number; } interface RingProps extends PathProps { shape?: Partial; } declare class Ring extends Path { shape: RingShape; constructor(opts?: RingProps); getDefaultShape(): RingShape; buildPath(ctx: CanvasRenderingContext2D, shape: RingShape): void; } declare class PolygonShape { points: VectorArray[]; smooth?: number; smoothConstraint?: VectorArray[]; } interface PolygonProps extends PathProps { shape?: Partial; } declare class Polygon extends Path { shape: PolygonShape; constructor(opts?: PolygonProps); getDefaultShape(): PolygonShape; buildPath(ctx: CanvasRenderingContext2D, shape: PolygonShape): void; } declare class LineShape { x1: number; y1: number; x2: number; y2: number; percent: number; } interface LineProps extends PathProps { shape?: Partial; } declare class Line extends Path { shape: LineShape; constructor(opts?: LineProps); getDefaultStyle(): { stroke: string; fill: string; }; getDefaultShape(): LineShape; buildPath(ctx: CanvasRenderingContext2D, shape: LineShape): void; pointAt(p: number): VectorArray; } declare class BezierCurveShape { x1: number; y1: number; x2: number; y2: number; cpx1: number; cpy1: number; cpx2?: number; cpy2?: number; percent: number; } interface BezierCurveProps extends PathProps { shape?: Partial; } declare class BezierCurve extends Path { shape: BezierCurveShape; constructor(opts?: BezierCurveProps); getDefaultStyle(): { stroke: string; fill: string; }; getDefaultShape(): BezierCurveShape; buildPath(ctx: CanvasRenderingContext2D, shape: BezierCurveShape): void; pointAt(t: number): number[]; tangentAt(t: number): number[]; } declare class ArcShape { cx: number; cy: number; r: number; startAngle: number; endAngle: number; clockwise?: boolean; } interface ArcProps extends PathProps { shape?: Partial; } declare class Arc extends Path { shape: ArcShape; constructor(opts?: ArcProps); getDefaultStyle(): { stroke: string; fill: string; }; getDefaultShape(): ArcShape; buildPath(ctx: CanvasRenderingContext2D, shape: ArcShape): void; } interface CompoundPathShape { paths: Path[]; } declare class CompoundPath extends Path { type: string; shape: CompoundPathShape; private _updatePathDirty; beforeBrush(): void; buildPath(ctx: PathProxy | CanvasRenderingContext2D, shape: CompoundPathShape): void; afterBrush(): void; getBoundingRect(): BoundingRect; } declare class IncrementalDisplayable extends Displayable { notClear: boolean; incremental: number; private _displayables; private _temporaryDisplayables; private _cursor; traverse(cb: (this: T, el: this) => void, context: T): void; useStyle(): void; protected _useHoverStyle(): void; getCursor(): number; innerAfterBrush(): void; clearDisplaybles(): void; clearTemporalDisplayables(): void; addDisplayable(displayable: Displayable, notPersistent?: boolean): void; addDisplayables(displayables: Displayable[], notPersistent?: boolean): void; getDisplayables(): Displayable[]; getTemporalDisplayables(): Displayable[]; eachPendingDisplayable(cb: (displayable: Displayable) => void): void; update(): void; getBoundingRect(): BoundingRect; contain(x: number, y: number): boolean; } declare type Constructor = new (...args: any) => any; interface ClassManager { registerClass: (clz: Constructor) => Constructor; getClass: (componentMainType: ComponentMainType, subType?: ComponentSubType, throwWhenNotFound?: boolean) => Constructor; getClassesByMainType: (componentType: ComponentMainType) => Constructor[]; hasClass: (componentType: ComponentFullType) => boolean; getAllClassMainTypes: () => ComponentMainType[]; hasSubTypes: (componentType: ComponentFullType) => boolean; } interface SubTypeDefaulter { (option: ComponentOption): ComponentSubType; } interface SubTypeDefaulterManager { registerSubTypeDefaulter: (componentType: string, defaulter: SubTypeDefaulter) => void; determineSubType: (componentType: string, option: ComponentOption) => string; } declare type DiffKeyGetter = (this: DataDiffer, value: unknown, index: number) => string; declare type DiffCallbackAdd = (newIndex: number) => void; declare type DiffCallbackUpdate = (newIndex: number, oldIndex: number) => void; declare type DiffCallbackRemove = (oldIndex: number) => void; declare type DiffCallbackUpdateManyToOne = (newIndex: number, oldIndex: number[]) => void; declare type DiffCallbackUpdateOneToMany = (newIndex: number[], oldIndex: number) => void; declare type DiffCallbackUpdateManyToMany = (newIndex: number[], oldIndex: number[]) => void; declare type DataDiffMode = 'oneToOne' | 'multiple'; declare class DataDiffer { private _old; private _new; private _oldKeyGetter; private _newKeyGetter; private _add; private _update; private _updateManyToOne; private _updateOneToMany; private _updateManyToMany; private _remove; private _diffModeMultiple; readonly context: CTX; /** * @param context Can be visited by this.context in callback. */ constructor(oldArr: ArrayLike$1, newArr: ArrayLike$1, oldKeyGetter?: DiffKeyGetter, newKeyGetter?: DiffKeyGetter, context?: CTX, diffMode?: DataDiffMode); /** * Callback function when add a data */ add(func: DiffCallbackAdd): this; /** * Callback function when update a data */ update(func: DiffCallbackUpdate): this; /** * Callback function when update a data and only work in `cbMode: 'byKey'`. */ updateManyToOne(func: DiffCallbackUpdateManyToOne): this; /** * Callback function when update a data and only work in `cbMode: 'byKey'`. */ updateOneToMany(func: DiffCallbackUpdateOneToMany): this; /** * Callback function when update a data and only work in `cbMode: 'byKey'`. */ updateManyToMany(func: DiffCallbackUpdateManyToMany): this; /** * Callback function when remove a data */ remove(func: DiffCallbackRemove): this; execute(): void; private _executeOneToOne; /** * For example, consider the case: * oldData: [o0, o1, o2, o3, o4, o5, o6, o7], * newData: [n0, n1, n2, n3, n4, n5, n6, n7, n8], * Where: * o0, o1, n0 has key 'a' (many to one) * o5, n4, n5, n6 has key 'b' (one to many) * o2, n1 has key 'c' (one to one) * n2, n3 has key 'd' (add) * o3, o4 has key 'e' (remove) * o6, o7, n7, n8 has key 'f' (many to many, treated as add and remove) * Then: * (The order of the following directives are not ensured.) * this._updateManyToOne(n0, [o0, o1]); * this._updateOneToMany([n4, n5, n6], o5); * this._update(n1, o2); * this._remove(o3); * this._remove(o4); * this._remove(o6); * this._remove(o7); * this._add(n2); * this._add(n3); * this._add(n7); * this._add(n8); */ private _executeMultiple; private _performRestAdd; private _initIndexMap; } declare type PipedDataTransformOption = DataTransformOption[]; declare type DataTransformType = string; declare type DataTransformConfig = unknown; interface DataTransformOption { type: DataTransformType; config?: DataTransformConfig; print?: boolean; } interface ExternalDataTransform { type: string; __isBuiltIn?: boolean; transform: (param: ExternalDataTransformParam) => ExternalDataTransformResultItem | ExternalDataTransformResultItem[]; } interface ExternalDataTransformParam { upstream: ExternalSource; upstreamList: ExternalSource[]; config: TO['config']; } interface ExternalDataTransformResultItem { /** * If `data` is null/undefined, inherit upstream data. */ data: OptionSourceDataArrayRows | OptionSourceDataObjectRows; /** * A `transform` can optionally return a dimensions definition. * The rule: * If this `transform result` have different dimensions from the upstream, it should return * a new dimension definition. For example, this transform inherit the upstream data totally * but add a extra dimension. * Otherwise, do not need to return that dimension definition. echarts will inherit dimension * definition from the upstream. */ dimensions?: DimensionDefinitionLoose[]; } declare type DataTransformDataItem = ExternalDataTransformResultItem['data'][number]; interface ExternalDimensionDefinition extends Partial { index: DimensionIndex; } /** * TODO: disable writable. * This structure will be exposed to users. */ declare class ExternalSource { /** * [Caveat] * This instance is to be exposed to users. * (1) DO NOT mount private members on this instance directly. * If we have to use private members, we can make them in closure or use `makeInner`. * (2) "source header count" is not provided to transform, because it's complicated to manage * header and dimensions definition in each transform. Source headers are all normalized to * dimensions definitions in transforms and their downstreams. */ sourceFormat: SourceFormat; getRawData(): Source['data']; getRawDataItem(dataIndex: number): DataTransformDataItem; cloneRawData(): Source['data']; /** * @return If dimension not found, return null/undefined. */ getDimensionInfo(dim: DimensionLoose): ExternalDimensionDefinition; /** * dimensions defined if and only if either: * (a) dataset.dimensions are declared. * (b) dataset data include dimensions definitions in data (detected or via specified `sourceHeader`). * If dimensions are defined, `dimensionInfoAll` is corresponding to * the defined dimensions. * Otherwise, `dimensionInfoAll` is determined by data columns. * @return Always return an array (even empty array). */ cloneAllDimensionInfo(): ExternalDimensionDefinition[]; count(): number; /** * Only support by dimension index. * No need to support by dimension name in transform function, * because transform function is not case-specific, no need to use name literally. */ retrieveValue(dataIndex: number, dimIndex: DimensionIndex): OptionDataValue; retrieveValueFromItem(dataItem: DataTransformDataItem, dimIndex: DimensionIndex): OptionDataValue; convertValue(rawVal: unknown, dimInfo: ExternalDimensionDefinition): ParsedValue; } declare function registerExternalTransform(externalTransform: ExternalDataTransform): void; interface PaletteMixin extends Pick, 'get'> { } declare class PaletteMixin { getColorFromPalette(this: PaletteMixin, name: string, scope?: object, requestNum?: number): ZRColor; clearColorPalette(this: PaletteMixin): void; } interface ComponentView { /** * Implement it if needed. */ updateTransform?(model: ComponentModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void | { update: true; }; /** * Pass only when return `true`. * Implement it if needed. */ filterForExposedEvent(eventType: string, query: EventQueryItem, targetEl: Element, packedEvent: ECActionEvent | ECElementEvent): boolean; /** * Find dispatchers for highlight/downplay by name. * If this methods provided, hover link (within the same name) is enabled in component. * That is, in component, a name can correspond to multiple dispatchers. * Those dispatchers can have no common ancestor. * The highlight/downplay state change will be applied on the * dispatchers and their descendents. * * @return Must return an array but not null/undefined. */ findHighDownDispatchers?(name: string): Element[]; focusBlurEnabled?: boolean; } declare class ComponentView { readonly group: ViewRootGroup; readonly uid: string; __model: ComponentModel; __alive: boolean; __id: string; constructor(); init(ecModel: GlobalModel, api: ExtensionAPI): void; render(model: ComponentModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; dispose(ecModel: GlobalModel, api: ExtensionAPI): void; updateView(model: ComponentModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; updateLayout(model: ComponentModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; updateVisual(model: ComponentModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; /** * Hook for toggle blur target series. * Can be used in marker for blur or leave blur the markers */ toggleBlurSeries(seriesModels: SeriesModel[], isBlur: boolean, ecModel: GlobalModel): void; /** * Traverse the new rendered elements. * * It will traverse the new added element in progressive rendering. * And traverse all in normal rendering. */ eachRendered(cb: (el: Element) => boolean | void): void; static registerClass: ClassManager['registerClass']; } interface TaskContext { outputData?: SeriesData; data?: SeriesData; payload?: Payload; model?: SeriesModel; } declare type TaskResetCallback = (this: Task, context: Ctx) => TaskResetCallbackReturn; declare type TaskResetCallbackReturn = void | (TaskProgressCallback | TaskProgressCallback[]) | { forceFirstProgress?: boolean; progress: TaskProgressCallback | TaskProgressCallback[]; }; declare type TaskProgressCallback = (this: Task, params: TaskProgressParams, context: Ctx) => void; declare type TaskProgressParams = { start: number; end: number; count: number; next?: TaskDataIteratorNext; }; declare type TaskPlanCallback = (this: Task, context: Ctx) => TaskPlanCallbackReturn; declare type TaskPlanCallbackReturn = 'reset' | false | null | undefined; declare type TaskCountCallback = (this: Task, context: Ctx) => number; declare type TaskOnDirtyCallback = (this: Task, context: Ctx) => void; declare type TaskDataIteratorNext = () => number; declare type TaskDefineParam = { reset?: TaskResetCallback; plan?: TaskPlanCallback; count?: TaskCountCallback; onDirty?: TaskOnDirtyCallback; }; declare type PerformArgs = { step?: number; skip?: boolean; modBy?: number; modDataCount?: number; }; declare class Task { private _reset; private _plan; private _count; private _onDirty; private _progress; private _callingProgress; private _dirty; private _modBy; private _modDataCount; private _upstream; private _downstream; private _dueEnd; private _outputDueEnd; private _settedOutputEnd; private _dueIndex; private _disposed; __pipeline: Pipeline; __idxInPipeline: number; __block: boolean; context: Ctx; constructor(define: TaskDefineParam); /** * @param step Specified step. * @param skip Skip customer perform call. * @param modBy Sampling window size. * @param modDataCount Sampling count. * @return whether unfinished. */ perform(performArgs?: PerformArgs): boolean; /** * @tutorial [EC_TASK_DIRTY] * Task `dirty()` calls typically originate from a trigger of EC_FULL_UPDATE_CYCLE and * EC_PARTIAL_UPDATE_CYCLE) (See comments in EC_CYCLE. Generally, task dirty propagates * to downstream tasks. * Task dirty leads to the `StageHandler['reset']` or `StageHandler['overallReset']` call, * which discards the previous result and starts over the processing. */ dirty(): void; private _doProgress; private _doReset; unfinished(): boolean; /** * @param downTask The downstream task. * @return The downstream task. */ pipe(downTask: Task): void; dispose(): void; getUpstream(): Task; getDownstream(): Task; setOutputEnd(end: number): void; } declare type GeneralTask = Task; declare type SeriesTask = Task; declare type Pipeline = { id: string; head: GeneralTask; tail: GeneralTask; threshold: number; progressiveEnabled: boolean; blockIndex: number; step: number; count: number; currentTask?: GeneralTask; context?: PipelineContext; }; declare type PipelineContext = { progressiveRender: boolean; modDataCount: number; large: boolean; }; declare type PerformStageTaskOpt = { block?: boolean; setDirty?: boolean; visualType?: StageHandlerInternal['visualType']; dirtyMap?: HashMap; }; interface SeriesTaskContext extends TaskContext { model?: SeriesModel; data?: SeriesData; view?: ChartView; ecModel?: GlobalModel; api?: ExtensionAPI; useClearVisual?: boolean; plan?: StageHandlerPlan; reset?: StageHandlerReset; scheduler?: Scheduler; payload?: Payload; resetDefines?: StageHandlerProgressExecutor[]; } interface OverallTaskContext extends TaskContext { ecModel: GlobalModel; api: ExtensionAPI; overallReset: StageHandlerOverallReset; scheduler: Scheduler; payload?: Payload; } declare class Scheduler { readonly ecInstance: EChartsType; readonly api: ExtensionAPI; unfinished: boolean; private _dataProcessorHandlers; private _visualHandlers; private _allHandlers; private _stageTaskMap; private _pipelineMap; constructor(ecInstance: EChartsType, api: ExtensionAPI, dataProcessorHandlers: StageHandlerInternal[], visualHandlers: StageHandlerInternal[]); restoreData(ecModel: GlobalModel, payload: Payload): void; getPerformArgs(task: GeneralTask, isBlock?: boolean): { step: number; modBy: number; modDataCount: number; }; getPipeline(pipelineId: string): Pipeline; /** * Current, progressive rendering starts from visual and layout. * Always detect render mode in the same stage, avoiding that incorrect * detection caused by data filtering. * Caution: * `updateStreamModes` use `seriesModel.getData()`. */ updateStreamModes(seriesModel: SeriesModel, view: ChartView): void; restorePipelines(zr: ZRenderType, ecModel: GlobalModel): void; prepareStageTasks(): void; prepareView(view: ChartView, model: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI): void; performDataProcessorTasks(ecModel: GlobalModel, payload?: Payload): void; performVisualTasks(ecModel: GlobalModel, payload?: Payload, opt?: PerformStageTaskOpt): void; private _performStageTasks; performSeriesTasks(ecModel: GlobalModel): void; plan(): void; updatePayload(task: Task, payload: Payload | 'remain'): void; private _createSeriesStageTask; private _createOverallStageTask; private _pipe; static wrapStageHandler(stageHandler: StageHandler | StageHandlerOverallReset, visualType: StageHandlerInternal['visualType']): StageHandlerInternal; } interface ChartView { /** * Rendering preparation in progressive mode. * Implement it if needed. */ incrementalPrepareRender(seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; /** * Render in progressive mode. * Implement it if needed. * @param params See taskParams in `stream/task.js` */ incrementalRender(params: StageHandlerProgressParams, seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; /** * Update transform directly. * Implement it if needed. */ updateTransform(seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void | { update: true; }; /** * The view contains the given point. * Implement it if needed. */ containPoint(point: number[], seriesModel: SeriesModel): boolean; /** * Pass only when return `true`. * Implement it if needed. */ filterForExposedEvent(eventType: string, query: EventQueryItem, targetEl: Element, packedEvent: ECActionEvent | ECElementEvent): boolean; } declare class ChartView { type: string; readonly group: ViewRootGroup; readonly uid: string; readonly renderTask: SeriesTask; /** * Ignore label line update in global stage. Will handle it in chart itself. * Used in pie / funnel */ ignoreLabelLineUpdate: boolean; __alive: boolean; __model: SeriesModel; __id: string; static protoInitialize: void; constructor(); init(ecModel: GlobalModel, api: ExtensionAPI): void; render(seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; /** * Highlight series or specified data item. */ highlight(seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; /** * Downplay series or specified data item. */ downplay(seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; /** * `remove` only occurs when series is filtered out, typically by legend. * And theirafter the view can only be rendered again via * `ChartView['render']` or `ChartView['incrementalPrepareRender']`. */ remove(ecModel: GlobalModel, api: ExtensionAPI): void; /** * Dispose self. */ dispose(ecModel: GlobalModel, api: ExtensionAPI): void; updateView(seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; updateVisual(seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload: Payload): void; /** * Traverse the new rendered elements. * * It will traverse the new added element in progressive rendering. * And traverse all in normal rendering. */ eachRendered(cb: (el: Element) => boolean | void): void; static markUpdateMethod(payload: Payload, methodName: keyof ChartView): void; static registerClass: ClassManager['registerClass']; } declare const availableMethods: (keyof EChartsType)[]; interface ExtensionAPI extends Pick { } declare abstract class ExtensionAPI { constructor(ecInstance: EChartsType); abstract getCoordinateSystems(): CoordinateSystemMaster[]; abstract getComponentByElement(el: Element): ComponentModel; abstract enterEmphasis(el: Element, highlightDigit?: number): void; abstract leaveEmphasis(el: Element, highlightDigit?: number): void; abstract enterSelect(el: Element): void; abstract leaveSelect(el: Element): void; abstract enterBlur(el: Element): void; abstract leaveBlur(el: Element): void; abstract getViewOfComponentModel(componentModel: ComponentModel): ComponentView; abstract getViewOfSeriesModel(seriesModel: SeriesModel): ChartView; abstract getModel(): GlobalModel; abstract getECUpdateCycleVersion(): number; /** * PENDING: a temporary method - may be refactored. * Whether a "threshold hoverLayer" is used. * `true` means using hover layer due to over `hoverLayerThreshold`. * Otherwise, if `false`, hover layer may be still used due to progressive (incremental), * but this method does not need to cover this case. */ abstract usingTHL(): boolean; } declare const _default: { time: { month: string[]; monthAbbr: string[]; dayOfWeek: string[]; dayOfWeekAbbr: string[]; }; legend: { selector: { all: string; inverse: string; }; }; toolbox: { brush: { title: { rect: string; polygon: string; lineX: string; lineY: string; keep: string; clear: string; }; }; dataView: { title: string; lang: string[]; }; dataZoom: { title: { zoom: string; back: string; }; }; magicType: { title: { line: string; bar: string; stack: string; tiled: string; }; }; restore: { title: string; }; saveAsImage: { title: string; lang: string[]; }; }; series: { typeNames: { pie: string; bar: string; line: string; scatter: string; effectScatter: string; radar: string; tree: string; treemap: string; boxplot: string; candlestick: string; k: string; heatmap: string; map: string; parallel: string; lines: string; graph: string; sankey: string; funnel: string; gauge: string; pictorialBar: string; themeRiver: string; sunburst: string; custom: string; chart: string; }; }; aria: { general: { withTitle: string; withoutTitle: string; }; series: { single: { prefix: string; withName: string; withoutName: string; }; multiple: { prefix: string; withName: string; withoutName: string; separator: { middle: string; end: string; }; }; }; data: { allData: string; partialData: string; withName: string; withoutName: string; separator: { middle: string; end: string; }; }; }; }; declare type LocaleOption = typeof _default; declare function registerLocale(locale: string, localeObj: LocaleOption): void; declare type PrimaryTimeUnit = (typeof primaryTimeUnits)[number]; declare const primaryTimeUnits: readonly ["year", "month", "day", "hour", "minute", "second", "millisecond"]; declare function format(time: unknown, template: string, isUTC: boolean, lang?: string | Model): string; /** * e.g., * If timeUnit is 'year', return the Jan 1st 00:00:00 000 of that year. * If timeUnit is 'day', return the 00:00:00 000 of that day. * * @return The input date. */ declare function roundTime(date: Date, timeUnit: PrimaryTimeUnit, isUTC: boolean): Date; declare const AXIS_TYPES: { readonly value: 1; readonly category: 1; readonly time: 1; readonly log: 1; }; declare type OptionAxisType = keyof typeof AXIS_TYPES; declare type AxisScaleType = 'ordinal' | 'interval' | 'log' | 'time'; interface AxisBaseOptionCommon extends ComponentOption, AnimationOptionMixin { type?: OptionAxisType; show?: boolean; inverse?: boolean; name?: string; /** * - 'start': place name based on axis.extent[0]. * - 'end': place name based on axis.extent[1]. * - 'middle': place name based on the center of the axis. * - 'center': ='middle'. */ nameLocation?: 'start' | 'middle' | 'center' | 'end'; nameRotate?: number; nameTruncate?: { maxWidth?: number; ellipsis?: string; placeholder?: string; }; nameTextStyle?: AxisNameTextStyleOption; /** * This is the offset of axis name from: * - If `nameMoveOverlap: false`: offset from axisLine. * - If `nameMoveOverlap: true`: offset from axisLine+axisLabels. * * PENDING: should it named as "nameOffset" or support `[offsetX, offsetY]`? */ nameGap?: number; /** * Whether to auto move axis name to avoid overlap with axis labels. * The procedure of axis name layout: * 1. Firstly apply `nameRotate`, `nameTruncate`, `nameLocation`, `nameGap`. * Note that if `nameGap` is applied after the overlap handling, it may still * cause overlap and confuse users. * 2. If `nameMoveOverlap: true`, move the name util it does not overlap with * axis lables. `nameTextStyle.textMargin` can be used to adjust its gap from * others in this case. * - If 'auto'/null/undefined, use `nameMoveOverlap`, except when `grid.containLabel` is * true. This is for backward compat - users have tuned the position based on no name moved. */ nameMoveOverlap?: boolean | 'auto' | NullUndefined$1; silent?: boolean; triggerEvent?: boolean; tooltip?: { show?: boolean; }; axisLabel?: AxisLabelBaseOption; axisPointer?: CommonAxisPointerOption; axisLine?: AxisLineOption; axisTick?: AxisTickOption; minorTick?: MinorTickOption; splitLine?: SplitLineOption; minorSplitLine?: MinorSplitLineOption; splitArea?: SplitAreaOption; /** * Min value of the axis. can be: * + ScaleDataValue * + 'dataMin': use the min value in data. * + null/undefined: auto decide min value (consider pretty look and boundaryGap). */ min?: ScaleDataValue | 'dataMin' | ((extent: { min: number; max: number; }) => ScaleDataValue | NullUndefined$1); /** * Max value of the axis. can be: * + ScaleDataValue * + 'dataMax': use the max value in data. * + null/undefined: auto decide max value (consider pretty look and boundaryGap). */ max?: ScaleDataValue | 'dataMax' | ((extent: { min: number; max: number; }) => ScaleDataValue | NullUndefined$1); /** * This is the start value of shape, such as bar. 0 by default. * `startValue` will be included in axis scale extent union. * * PENDING: * - Currently, LineSeries with areaStyle does not use this `startValue`. * They can be supported if required. * - The current behavior is problematic in "stack" case. (See `test/bar-startValue.html`). * But no need to support it until concrete requirements arise. */ startValue?: number; jitter?: number; jitterOverlap?: boolean; jitterMargin?: number; breaks?: AxisBreakOption[]; breakArea?: { show?: boolean; itemStyle?: ItemStyleOption; zigzagAmplitude?: number; zigzagMinSpan?: number; zigzagMaxSpan?: number; zigzagZ?: number; expandOnClick?: boolean; }; breakLabelLayout?: { moveOverlap?: 'auto' | boolean; }; containShape?: boolean; } /** * The gap at both ends of the axis. `[GAP, GAP]`. */ declare type NumericAxisBoundaryGapOption = [NumericAxisBoundaryGapOptionItemValue, NumericAxisBoundaryGapOptionItemValue]; declare type NumericAxisBoundaryGapOptionItemValue = number | string | NullUndefined$1; interface NumericAxisBaseOptionCommon extends AxisBaseOptionCommon { boundaryGap?: NumericAxisBoundaryGapOption; /** * AxisTick and axisLabel and splitLine are calculated based on splitNumber. */ splitNumber?: number; /** * Interval specifies the span of the ticks is mandatorily. */ interval?: number; /** * Specify min interval when auto calculate tick interval. */ minInterval?: number; /** * Specify max interval when auto calculate tick interval. */ maxInterval?: number; /** * If align ticks to the first axis that is not use alignTicks * If all axes has alignTicks: true. The first one will be applied. * * Will be ignored if interval is set. */ alignTicks?: boolean; /** * Data min value to be included in axis extent calculation. * The final min value will be the minimum of this value and the data min. */ dataMin?: ScaleDataValue; /** * Data max value to be included in axis extent calculation. * The final max value will be the maximum of this value and the data max. */ dataMax?: ScaleDataValue; } interface CategoryAxisBaseOption extends AxisBaseOptionCommon { type?: 'category'; boundaryGap?: boolean; axisLabel?: AxisLabelOption<'category'>; data?: (OrdinalRawValue | { value: OrdinalRawValue; textStyle?: TextCommonOption; })[]; deduplication?: boolean; axisTick?: AxisBaseOptionCommon['axisTick'] & { alignWithLabel?: boolean; interval?: CategoryTickLabelSplitIntervalOption; }; } interface ValueAxisBaseOption extends NumericAxisBaseOptionCommon { type?: 'value'; axisLabel?: AxisLabelOption<'value'>; /** * Optional value can be: * + `false`: always include value 0 if not conflict with `axis.min/max` setting. * + `true`: the axis may not contain zero position. */ scale?: boolean; } interface LogAxisBaseOption extends NumericAxisBaseOptionCommon { type?: 'log'; axisLabel?: AxisLabelOption<'log'>; logBase?: number; } interface TimeAxisBaseOption extends NumericAxisBaseOptionCommon { type?: 'time'; axisLabel?: AxisLabelOption<'time'>; } declare type AxisTickOptionUnion = AxisBaseOptionCommon['axisTick'] | CategoryAxisBaseOption['axisTick']; interface AxisNameTextStyleOption extends LabelCommonOption { rich?: RichTextOption; } interface AxisLineOption { show?: boolean | 'auto'; onZero?: boolean | 'auto'; onZeroAxisIndex?: number; symbol?: string | [string, string]; symbolSize?: number[]; symbolOffset?: string | number | (string | number)[]; lineStyle?: LineStyleOption; breakLine?: boolean; } interface AxisTickOption { show?: boolean | 'auto'; inside?: boolean; length?: number; lineStyle?: LineStyleOption; customValues?: AxisTickLabelCustomValuesOption; } declare type AxisLabelValueFormatter = (value: number, index: number, extra: AxisLabelFormatterExtraParams | NullUndefined$1) => string; declare type AxisLabelCategoryFormatter = (value: string, index: number, extra: NullUndefined$1) => string; declare type AxisLabelTimeFormatter = (value: number, index: number, extra: TimeAxisLabelFormatterExtraParams) => string; declare type AxisLabelFormatterExtraParams = {} & AxisLabelFormatterExtraBreakPart; declare type TimeAxisLabelFormatterExtraParams = { time: TimeScaleTick['time']; /** * @deprecated Refactored to `time.level`, and keep it for backward compat, * although `level` is never published in doc since it is introduced. */ level: number; } & AxisLabelFormatterExtraParams; declare type TimeAxisLabelLeveledFormatterOption = string[] | string; declare type TimeAxisLabelFormatterUpperDictionaryOption = { [key in PrimaryTimeUnit]?: TimeAxisLabelLeveledFormatterOption; }; /** * @see {parseTimeAxisLabelFormatterDictionary} */ declare type TimeAxisLabelFormatterDictionaryOption = { [key in PrimaryTimeUnit]?: TimeAxisLabelLeveledFormatterOption | TimeAxisLabelFormatterUpperDictionaryOption; }; declare type TimeAxisLabelFormatterOption = string | AxisLabelTimeFormatter | TimeAxisLabelFormatterDictionaryOption; declare type LabelFormatters = { value: AxisLabelValueFormatter | string; log: AxisLabelValueFormatter | string; category: AxisLabelCategoryFormatter | string; time: TimeAxisLabelFormatterOption; }; declare type AxisLabelBaseOptionNuance = { color?: ColorString | ((value?: string | number, index?: number) => ColorString); }; interface AxisLabelBaseOption extends LabelCommonOption { show?: boolean; inside?: boolean; rotate?: number; showMinLabel?: AxisShowMinMaxLabelOption; showMaxLabel?: AxisShowMinMaxLabelOption; alignMinLabel?: TextAlign; alignMaxLabel?: TextAlign; verticalAlignMinLabel?: TextVerticalAlign; verticalAlignMaxLabel?: TextVerticalAlign; margin?: number; /** * If hide overlapping labels. */ hideOverlap?: boolean; customValues?: AxisTickLabelCustomValuesOption; } declare type AxisShowMinMaxLabelOption = boolean | NullUndefined$1; declare type AxisTickLabelCustomValuesOption = (number | string | Date)[]; interface AxisLabelOption extends AxisLabelBaseOption { formatter?: LabelFormatters[TType]; interval?: CategoryTickLabelSplitIntervalOption; } interface MinorTickOption { show?: boolean; splitNumber?: number; length?: number; lineStyle?: LineStyleOption; } interface SplitLineOption { show?: boolean; interval?: CategoryTickLabelSplitIntervalOption; showMinLine?: boolean; showMaxLine?: boolean; lineStyle?: LineStyleOption; } interface MinorSplitLineOption { show?: boolean; lineStyle?: LineStyleOption; } interface SplitAreaOption { show?: boolean; interval?: CategoryTickLabelSplitIntervalOption; areaStyle?: AreaStyleOption; } /** * `0` means show all; `1` means show one every other one; `2` means show one out of * every three; and so one. */ declare type CategoryTickLabelSplitIntervalOption = 'auto' | number | CategoryTickLabelSplitIntervalCb | NullUndefined$1; declare type CategoryTickLabelSplitIntervalCb = (linearTickValue: number, // tick value before sorted. "sort" means `OrdinalScale['setSortInfo']`. rawLabel: string) => boolean; declare type CategoryTickLabelSplitBuildingOption = { show?: boolean; interval?: CategoryTickLabelSplitIntervalOption; }; declare type AxisBaseOption = ValueAxisBaseOption | LogAxisBaseOption | CategoryAxisBaseOption | TimeAxisBaseOption; interface AxisModelCommonMixin extends Pick, 'option'> { axis: Axis; } declare class AxisModelCommonMixin { needIncludeZero(): boolean; /** * Should be implemented by each axis model if necessary. * @return coordinate system model */ getCoordSysModel(): CoordinateSystemHostModel; } declare class OrdinalMeta { readonly categories: OrdinalRawValue[]; private _needCollect; private _deduplication; private _map; private _onCollect; readonly uid: number; /** * PENDING - Regarding forcibly converting to string: * In the early days, the underlying hash map impl used JS plain object and converted the key to * string; later in https://github.com/ecomfe/zrender/pull/966 it was changed to a JS Map (in supported * platforms), which does not require string keys. But consider any input that `scale/Ordinal['parse']` * is involved, a number input represents an `OrdinalNumber` (i.e., an index), and affect the query * behavior: * - If forcbily converting to string: * pros: users can use numeric string (such as, '123') to query the raw data (123), tho it's probably * still confusing. * cons: NaN/null/undefined in data will be equals to 'NaN'/'null'/'undefined', if simply using * `val + ''` to convert them, like currently `getName` does. * - Otherwise: * pros: see NaN/null/undefined case above. * cons: users cannot query the raw data (123) any more. * There are two inconsistent behaviors in the current impl: * - Force conversion is applied on the case `xAxis{data: ['aaa', 'bbb', ...]}`, * but no conversion applied to the case `xAxis{data: [{value: 'aaa'}, ...]}` and * the case `dataset: {source: [['aaa', 123], ['bbb', 234], ...]}`. * - behaves differently according to whether JS Map is supported (the polyfill is simply using JS * plain object) (tho it seems rare platform that do not support it). * Since there's no sufficient good solution to offset cost of the breaking change, we preserve the * current behavior, until real issues is reported. */ constructor(opt: { categories?: OrdinalRawValue[]; needCollect?: boolean; deduplication?: boolean; onCollect?: OrdinalMeta['_onCollect']; }); static createByAxisModel(axisModel: Model): OrdinalMeta; getOrdinal(category: OrdinalRawValue): OrdinalNumber; /** * @return The ordinal. If not found, return NaN. */ parseAndCollect(category: OrdinalRawValue | OrdinalNumber): OrdinalNumber; private _getOrCreateMap; } declare function registerImpl(name: string, impl: any): void; /** * @see {getLayoutRect} */ interface LayoutRect extends BoundingRect { margin: number[]; } declare type GetLayoutRectInputContainerRect = { x?: number; y?: number; width: number; height: number; }; /** * Parse position info. */ declare function getLayoutRect(positionInfo: BoxLayoutOptionMixin & { aspect?: number; }, containerRect: GetLayoutRectInputContainerRect, margin?: number | number[]): LayoutRect; interface GridOption extends ComponentOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, ShadowOptionMixin { mainType?: 'grid'; show?: boolean; /** * @deprecated Use `grid.outerBounds` instead. * Whether grid size contains axis labels. This approach estimates the size by sample labels. * It works for most case but it does not strictly contain all labels in some cases. */ containLabel?: boolean; /** * Define a constrains rect. * Axis lines is firstly laid out based on the rect defined by `grid.left/right/top/bottom/width/height`. * (for axis line alignment requirements between multiple grids) * But if axisLabel and/or axisName overflow the outerBounds, shrink the layout to avoid that overflow. * * Options: * - 'none': outerBounds is infinity. * - 'same': outerBounds is the same as the layout rect defined by `grid.left/right/top/bottom/width/height`. * - 'auto'/null/undefined: Default. Use `outerBounds`, or 'same' if `containLabel:true`. * * Note: * `grid.containLabel` is equivalent to `{outerBoundsMode: 'same', outerBoundsContain: 'axisLabel'}`. */ outerBoundsMode?: 'auto' | NullUndefined$1 | 'same' | 'none'; /** * {left, right, top, bottom, width, height}: Define a outerBounds rect, based on: * - the canvas by default. * - or the `dataToLayout` result if a `boxCoordinateSystem` is specified. */ outerBounds?: BoxLayoutOptionMixin; /** * - 'all': Default. Contains the cartesian rect and axis labels and axis name. * - 'axisLabel': Contains the cartesian rect and axis labels. This effect differs slightly from the * previous option `containLabel` but more precise. * - 'auto'/null/undefined: Default. be 'axisLabel' if `containLabel:true`, otherwise 'all'. */ outerBoundsContain?: 'all' | 'axisLabel' | 'auto' | NullUndefined$1; /** * Available only when `outerBoundsMode` is not 'none'. * Offer a constraint to not to shrink the grid rect causing smaller that width/height. * A string means percent, like '30%', based on the original rect size * determined by `grid.top/right/bottom/left/width/height`. */ outerBoundsClampWidth?: number | string; outerBoundsClampHeight?: number | string; backgroundColor?: ZRColor; borderWidth?: number; borderColor?: ZRColor; tooltip?: any; } declare type CartesianAxisPosition = 'top' | 'bottom' | 'left' | 'right'; declare type CartesianAxisOption = AxisBaseOption & { gridIndex?: number; gridId?: string; position?: CartesianAxisPosition; offset?: number; categorySortInfo?: OrdinalSortInfo; }; declare type XAXisOption = CartesianAxisOption & { mainType?: 'xAxis'; }; declare type YAXisOption = CartesianAxisOption & { mainType?: 'yAxis'; }; declare type AxisBandWidthResult = { w: number; w2: number; }; interface BarGridLayoutAxisInfo { seriesInfo: BarGridLayoutAxisSeriesInfo[]; bandWidthResult: AxisBandWidthResult; } interface BarGridLayoutAxisSeriesInfo { barWidth: number; barMaxWidth: number; barMinWidth: number; barGap: number | string; defaultBarGap?: number | string; barCategoryGap: number | string; stackId: StackId; } declare type StackId = string & { _: 'barGridStackId'; }; interface BarGridLayoutOptionForCustomSeries { count: number; barWidth?: number | string; barMaxWidth?: number | string; barMinWidth?: number | string; barGap?: number | string; barCategoryGap?: number | string; } declare type BarGridLayoutResultItemInternal = { bandWidth: BarGridLayoutAxisInfo['bandWidthResult']['w']; offset: number; width: number; }; declare type BarGridLayoutResultItem = BarGridLayoutResultItemInternal & { offsetCenter: number; }; declare type BarGridLayoutResultForCustomSeries = BarGridLayoutResultItem[] | NullUndefined$1; interface TransitionOptionMixin> { transition?: (keyof T & string) | ((keyof T & string)[]) | 'all'; enterFrom?: T; leaveTo?: T; enterAnimation?: AnimationOption$1; updateAnimation?: AnimationOption$1; leaveAnimation?: AnimationOption$1; } interface TransitionBaseDuringAPI { setTransform(key: TransformProp, val: number): this; getTransform(key: TransformProp): number; setExtra(key: string, val: unknown): this; getExtra(key: string): unknown; } interface TransitionDuringAPI extends TransitionBaseDuringAPI { setShape(key: T, val: ShapeOpt[T]): this; getShape(key: T): ShapeOpt[T]; setStyle(key: T, val: StyleOpt[T]): this; getStyle(key: T): StyleOpt[T]; } declare type AnimationKeyframe> = T & { easing?: AnimationEasing; percent?: number; }; interface ElementKeyframeAnimationOption> extends AnimationOption$1 { loop?: boolean; keyframes?: AnimationKeyframe[]; } declare type CustomExtraElementInfo = Dictionary; declare const STYLE_VISUAL_TYPE: { readonly color: "fill"; readonly borderColor: "stroke"; }; declare type StyleVisualProps = keyof typeof STYLE_VISUAL_TYPE; declare const NON_STYLE_VISUAL_PROPS: { readonly symbol: 1; readonly symbolSize: 1; readonly symbolKeepAspect: 1; readonly legendIcon: 1; readonly visualMeta: 1; readonly liftZ: 1; readonly decal: 1; }; declare type NonStyleVisualProps = keyof typeof NON_STYLE_VISUAL_PROPS; declare type ShapeMorphingOption = { /** * If do shape morphing animation when type is changed. * Only available on path. */ morph?: boolean; }; interface CustomBaseElementOption extends Partial> { type: string; id?: string; name?: string; info?: CustomExtraElementInfo; textContent?: CustomTextOption | false; clipPath?: CustomBaseZRPathOption | false; tooltipDisabled?: boolean; extra?: Dictionary & TransitionOptionMixin; during?(params: TransitionBaseDuringAPI): void; enterAnimation?: AnimationOption$1; updateAnimation?: AnimationOption$1; leaveAnimation?: AnimationOption$1; } interface CustomDisplayableOption extends CustomBaseElementOption, Partial> { style?: ZRStyleProps; during?(params: TransitionDuringAPI): void; /** * @deprecated */ styleEmphasis?: ZRStyleProps | false; emphasis?: CustomDisplayableOptionOnState; blur?: CustomDisplayableOptionOnState; select?: CustomDisplayableOptionOnState; } interface CustomDisplayableOptionOnState extends Partial> { style?: ZRStyleProps | false; } interface CustomGroupOption extends CustomBaseElementOption, TransitionOptionMixin { type: 'group'; width?: number; height?: number; diffChildrenByName?: boolean; children: CustomElementOption[]; $mergeChildren?: false | 'byName' | 'byIndex'; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } interface CustomBaseZRPathOption extends CustomDisplayableOption, ShapeMorphingOption, TransitionOptionMixin { autoBatch?: boolean; shape?: T & TransitionOptionMixin; style?: PathProps['style'] & TransitionOptionMixin; during?(params: TransitionDuringAPI): void; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } interface BuiltinShapes { circle: Partial; rect: Partial; sector: Partial; polygon: Partial; polyline: Partial; line: Partial; arc: Partial; bezierCurve: Partial; ring: Partial; ellipse: Partial; compoundPath: Partial; } interface CustomSVGPathShapeOption { pathData?: string; d?: string; layout?: 'center' | 'cover'; x?: number; y?: number; width?: number; height?: number; } interface CustomSVGPathOption extends CustomBaseZRPathOption { type: 'path'; } interface CustomBuitinPathOption extends CustomBaseZRPathOption { type: T; } declare type CreateCustomBuitinPathOption = T extends any ? CustomBuitinPathOption : never; declare type CustomPathOption = CreateCustomBuitinPathOption | CustomSVGPathOption; interface CustomImageOptionOnState extends CustomDisplayableOptionOnState { style?: ImageStyleProps; } interface CustomImageOption extends CustomDisplayableOption, TransitionOptionMixin { type: 'image'; style?: ImageStyleProps & TransitionOptionMixin; emphasis?: CustomImageOptionOnState; blur?: CustomImageOptionOnState; select?: CustomImageOptionOnState; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } interface CustomTextOptionOnState extends CustomDisplayableOptionOnState { style?: TextStyleProps; } interface CustomTextOption extends CustomDisplayableOption, TransitionOptionMixin { type: 'text'; style?: TextStyleProps & TransitionOptionMixin; emphasis?: CustomTextOptionOnState; blur?: CustomTextOptionOnState; select?: CustomTextOptionOnState; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } interface CustomompoundPathOptionOnState extends CustomDisplayableOptionOnState { style?: PathStyleProps; } interface CustomCompoundPathOption extends CustomDisplayableOption, TransitionOptionMixin { type: 'compoundPath'; shape?: PathProps['shape']; style?: PathStyleProps & TransitionOptionMixin; emphasis?: CustomompoundPathOptionOnState; blur?: CustomompoundPathOptionOnState; select?: CustomompoundPathOptionOnState; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } declare type CustomElementOption = CustomPathOption | CustomImageOption | CustomTextOption | CustomCompoundPathOption | CustomGroupOption; declare type CustomRootElementOption = CustomElementOption & { focus?: 'none' | 'self' | 'series' | ArrayLike; blurScope?: BlurScope; emphasisDisabled?: boolean; }; interface CustomSeriesRenderItemAPI extends CustomSeriesRenderItemCoordinateSystemAPI { getWidth(): number; getHeight(): number; getZr(): ZRenderType; getDevicePixelRatio(): number; value(dim: DimensionLoose, dataIndexInside?: number): ParsedValue; ordinalRawValue(dim: DimensionLoose, dataIndexInside?: number): ParsedValue | OrdinalRawValue; /** * @deprecated */ style(userProps?: ZRStyleProps, dataIndexInside?: number): ZRStyleProps; /** * @deprecated */ styleEmphasis(userProps?: ZRStyleProps, dataIndexInside?: number): ZRStyleProps; visual(visualType: VT, dataIndexInside?: number): VT extends NonStyleVisualProps ? DefaultDataVisual[VT] : VT extends StyleVisualProps ? PathStyleProps[typeof STYLE_VISUAL_TYPE[VT]] : void; barLayout(opt: BarGridLayoutOptionForCustomSeries): BarGridLayoutResultForCustomSeries; currentSeriesIndices(): number[]; font(opt: Pick): string; } interface CustomSeriesRenderItemParamsCoordSys { type: string; } interface CustomSeriesRenderItemCoordinateSystemAPI { coord(data: (OptionDataValue | NullUndefined$1) | (OptionDataValue | NullUndefined$1)[] | (OptionDataValue | OptionDataValue[] | NullUndefined$1)[], opt?: unknown): number[]; size?(dataSize: OptionDataValue | OptionDataValue[], dataItem?: OptionDataValue | OptionDataValue[]): number | number[]; layout?(data: (OptionDataValue | NullUndefined$1) | (OptionDataValue | NullUndefined$1)[] | (OptionDataValue | OptionDataValue[] | NullUndefined$1)[], opt?: unknown): CoordinateSystemDataLayout; } declare type WrapEncodeDefRet = Dictionary; interface CustomSeriesRenderItemParams { context: Dictionary; dataIndex: number; seriesId: string; seriesName: string; seriesIndex: number; coordSys: CustomSeriesRenderItemParamsCoordSys; encode: WrapEncodeDefRet; dataIndexInside: number; dataInsideLength: number; itemPayload: Dictionary; actionType?: string; } declare type CustomSeriesRenderItemReturn = CustomRootElementOption | undefined | null; declare type CustomSeriesRenderItem = (params: CustomSeriesRenderItemParams, api: CustomSeriesRenderItemAPI) => CustomSeriesRenderItemReturn; interface CustomSeriesOption extends SeriesOption, // don't support StateOption in custom series. SeriesEncodeOptionMixin, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnSingleOptionMixin, SeriesOnGeoOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin { type?: 'custom'; coordinateSystem?: string | 'none'; renderItem?: CustomSeriesRenderItem; itemPayload?: Dictionary; /** * @deprecated */ itemStyle?: ItemStyleOption; /** * @deprecated */ label?: LabelOption; /** * @deprecated */ emphasis?: { /** * @deprecated */ itemStyle?: ItemStyleOption; /** * @deprecated */ label?: LabelOption; }; clip?: boolean; } declare type PrepareCustomInfo = (coordSys: CoordinateSystem) => { coordSys: CustomSeriesRenderItemParamsCoordSys; api: CustomSeriesRenderItemCoordinateSystemAPI; }; declare const extensionRegisters: { registerPreprocessor: typeof registerPreprocessor; registerProcessor: typeof registerProcessor; registerPostInit: typeof registerPostInit; registerPostUpdate: typeof registerPostUpdate; registerUpdateLifecycle: typeof registerUpdateLifecycle; registerAction: typeof registerAction; registerCoordinateSystem: typeof registerCoordinateSystem; registerLayout: typeof registerLayout; registerVisual: typeof registerVisual; registerTransform: typeof registerExternalTransform; registerLoading: typeof registerLoading; registerMap: typeof registerMap; registerImpl: typeof registerImpl; PRIORITY: { PROCESSOR: { SERIES_FILTER: number; AXIS_STATISTICS: number; FILTER: number; STATISTIC: number; STATISTICS: number; }; VISUAL: { LAYOUT: number; PROGRESSIVE_LAYOUT: number; GLOBAL: number; CHART: number; POST_CHART_LAYOUT: number; COMPONENT: number; BRUSH: number; CHART_ITEM: number; ARIA: number; DECAL: number; }; }; ComponentModel: typeof ComponentModel; ComponentView: typeof ComponentView; SeriesModel: typeof SeriesModel; ChartView: typeof ChartView; registerComponentModel(ComponentModelClass: Constructor): void; registerComponentView(ComponentViewClass: typeof ComponentView): void; registerSeriesModel(SeriesModelClass: Constructor): void; registerChartView(ChartViewClass: typeof ChartView): void; registerCustomSeries(seriesType: string, renderItem: CustomSeriesRenderItem): void; registerSubTypeDefaulter(componentType: string, defaulter: SubTypeDefaulter): void; registerPainter(painterType: string, PainterCtor: Parameters[1]): void; }; declare type EChartsExtensionInstallRegisters = typeof extensionRegisters; declare type EChartsExtensionInstaller = (ec: EChartsExtensionInstallRegisters) => void; interface EChartsExtension { install: EChartsExtensionInstaller; } declare function use(ext: EChartsExtensionInstaller | EChartsExtension | (EChartsExtensionInstaller | EChartsExtension)[]): void; interface BaseAxisBreakPayload extends Payload { xAxisIndex?: ModelFinderIndexQuery; xAxisId?: ModelFinderIdQuery; xAxisName?: ModelFinderNameQuery; yAxisIndex?: ModelFinderIndexQuery; yAxisId?: ModelFinderIdQuery; yAxisName?: ModelFinderNameQuery; singleAxisIndex?: ModelFinderIndexQuery; singleAxisId?: ModelFinderIdQuery; singleAxisName?: ModelFinderNameQuery; breaks: AxisBreakOptionIdentifierInAxis[]; } interface ExpandAxisBreakPayload extends BaseAxisBreakPayload { type: typeof AXIS_BREAK_EXPAND_ACTION_TYPE; } interface CollapseAxisBreakPayload extends BaseAxisBreakPayload { type: typeof AXIS_BREAK_COLLAPSE_ACTION_TYPE; } interface ToggleAxisBreakPayload extends BaseAxisBreakPayload { type: typeof AXIS_BREAK_TOGGLE_ACTION_TYPE; } declare type AxisBreakChangedEventBreak = AxisBreakOptionIdentifierInAxis & { xAxisIndex?: ModelFinderIndexQuery; yAxisIndex?: ModelFinderIndexQuery; singleAxisIndex?: ModelFinderIndexQuery; isExpanded: boolean; old: { isExpanded: boolean; }; }; interface AxisBreakChangedEvent extends ECActionRefinedEvent { type: typeof AXIS_BREAK_CHANGED_EVENT_TYPE; fromAction: typeof AXIS_BREAK_EXPAND_ACTION_TYPE | typeof AXIS_BREAK_COLLAPSE_ACTION_TYPE | typeof AXIS_BREAK_TOGGLE_ACTION_TYPE; fromActionPayload: ExpandAxisBreakPayload | CollapseAxisBreakPayload | ToggleAxisBreakPayload; breaks: AxisBreakChangedEventBreak[]; } declare const AXIS_BREAK_EXPAND_ACTION_TYPE: "expandAxisBreak"; declare const AXIS_BREAK_COLLAPSE_ACTION_TYPE: "collapseAxisBreak"; declare const AXIS_BREAK_TOGGLE_ACTION_TYPE: "toggleAxisBreak"; declare const AXIS_BREAK_CHANGED_EVENT_TYPE: "axisbreakchanged"; declare type SingleAxisPosition = 'top' | 'bottom' | 'left' | 'right'; declare type SingleAxisOption = AxisBaseOption & BoxLayoutOptionMixin & { mainType?: 'singleAxis'; position?: SingleAxisPosition; orient?: LayoutOrient; } & ComponentOnCalendarOptionMixin & ComponentOnMatrixOptionMixin; declare type AxisBreakUpdateResult = { breaks: (AxisBreakOptionIdentifierInAxis & { isExpanded: boolean; old: { isExpanded: boolean; }; })[]; }; interface AxisModelExtendedInCreator { getCategories(rawData?: boolean): OrdinalRawValue[] | CategoryAxisBaseOption['data']; getOrdinalMeta(): OrdinalMeta; updateAxisBreaks(payload: BaseAxisBreakPayload): AxisBreakUpdateResult; } /** * Base Axis Model for xAxis, yAxis, angleAxis, radiusAxis. singleAxis */ interface AxisBaseModel extends ComponentModel, AxisModelCommonMixin, AxisModelExtendedInCreator { axis: Axis; } declare const AXIS_EXTENT_INFO_BUILD_FROM_COORD_SYS_UPDATE = 1; declare const AXIS_EXTENT_INFO_BUILD_FROM_DATA_ZOOM = 2; declare const AXIS_EXTENT_INFO_BUILD_FROM_EMPTY = 3; declare type AxisExtentInfoBuildFrom = typeof AXIS_EXTENT_INFO_BUILD_FROM_COORD_SYS_UPDATE | typeof AXIS_EXTENT_INFO_BUILD_FROM_DATA_ZOOM | typeof AXIS_EXTENT_INFO_BUILD_FROM_EMPTY; /** * It is originally created as `ScaleRawExtentResultFinal['fixMinMax']` and may be * modified in the subsequent process. * It suggests axes to use `scaleRawExtentResult.min/max` directly as their bounds, * instead of expanding the extent by some "nice strategy". But axes may refuse to * comply with it in some special cases, for example, when their scale extents are * invalid, or when they need to be expanded to visually contain series bars. * * In `ScaleRawExtentResultFinal['fixMinMax']`, it is `true` iff: * - ec option `xxxAxis.min/max` are specified, or * - `scaleRawExtentResult.zoomFixMinMax[]` are `true`. * - `min` `max` are expanded by `AxisContainShapeHandler`. * * In the subsequent process, it may be modified to `true` for customization. */ declare type ScaleExtentFixMinMax = boolean[]; /** * Return the min max before `dataZoom` applied. * This is `noZoomEffMM`, corresponding to `SCALE_EXTENT_KIND_EFFECTIVE`. */ declare type ScaleRawExtentResultForZoom = number[]; declare type ScaleRawExtentResultFinal = Pick & { effMM: number[]; }; declare type ScaleRawExtentResultOthers = Pick; /** * CAVEAT: MUST NOT be modified outside! */ interface ScaleRawExtentInternal { scale: Scale; noZoomEffMM: number[]; dataMM: number[]; zoomMM: (number | NullUndefined$1)[]; fixMM: ScaleExtentFixMinMax; zoomFixMM: ScaleExtentFixMinMax; startValue: number | NullUndefined$1; isBlank: boolean; incl0: boolean; tggAxInv: boolean; ctnShp: boolean; } declare class ScaleRawExtentInfo { private _i; readonly from: AxisExtentInfoBuildFrom; constructor(scale: Scale, model: AxisBaseModel, dataExtent: number[], requireStartValue: boolean, requireContainShape: boolean); makeNoZoom(): ScaleRawExtentResultForZoom; makeFinal(): ScaleRawExtentResultFinal; makeRenderInfo(): ScaleRawExtentResultOthers; /** * NOTICE: * - Do not set them if the percent are 0% or 100%. (See `AxisProxy['reset']`.) * - The caller must ensure `start <= end` and the range is equal or less then `noZoomEffMM`. * (See `AxisProxy['calculateDataWindow']`.) * - The outcome `_zoomMM` may have both `NullUndefined` and a finite value, like `[undefined, 123]`. */ setZoomMM(idxMinMax: 0 | 1, val: number | NullUndefined$1): void; } declare type DataSanitizationFilter = { g?: number; ge?: number; l?: number; le?: number; }; /** * Illustration: * SCALE_EXTENT_KIND_EFFECTIVE: |------------| (always exist) * SCALE_EXTENT_KIND_MAPPING: |---|------------|--| (present only when it is specified by `setExtent2`) * * - [SCALE_EXTENT_KIND_EFFECTIVE]: * It is a portion of a scale extent that is functional on most features, including: * - All tick/label-related calculation. * - `dataZoom` controlled ends. * - Cartesian2D `clampData`. * - line series start. * - heatmap series range. * - markerArea range. * - etc. * `SCALE_EXTENT_KIND_EFFECTIVE` always exists. * * - [SCALE_EXTENT_KIND_MAPPING]: * It is an expanded extent from ends of `SCALE_EXTENT_KIND_EFFECTIVE` to accommodate shapes at edges to * avoid overflow. They can be typically used by bar/candlestick series on category axis with * `boundaryGap: false`, or on other numeric axes. ec option `xxxAxis.containShape` is the switch. * In this case, we need to: * - Do not render ticks and labels in the portion "SCALE_EXTENT_KIND_MAPPING - SCALE_EXTENT_KIND_EFFECTIVE", * since they are considered meaningless there. * - Prevent "nice strategy" from triggering unexpectedly by the "contain shape expansion". * Otherwise, for example, the original extent is `[0, 1000]`, then the expanded * extent, say `[-5, 1000]`, can cause a considerable negative expansion by "nice", * like `[-200, 10000]`, which is commonly unexpected. And it is exacerbated in LogScale. * - Prevent the min/max tick label from displaying, since they are commonly meaningless * and probably misleading. * Therefore, `SCALE_EXTENT_KIND_MAPPING` is only used for: * - mapping between data and pixel, such as, * - `scaleMapper.normalize/scale`; * - Cartesian2D `calcAffineTransform` (a quick path of `scaleMapper.normalize/scale`). * - `grid` boundary related calculation in view rendering, such as, `barGrid` calculates * `barWidth` for numeric scales based on the data extent. * - Axis line position determination (such as `canOnZeroToAxis`); * - `axisPointer` triggering (otherwise users may be confused if using `SCALE_EXTENT_KIND_EFFECTIVE`). * `SCALE_EXTENT_KIND_MAPPING` can be absent, which can be used to determine whether it is used. * * @see SCALE_EXTENT_CONSTRUCTION for the full processing flow. */ declare type ScaleExtentKind = typeof SCALE_EXTENT_KIND_EFFECTIVE | typeof SCALE_EXTENT_KIND_MAPPING; declare const SCALE_EXTENT_KIND_EFFECTIVE = 0; declare const SCALE_EXTENT_KIND_MAPPING = 1; /** * - [SCALE_MAPPER_DEPTH_OUT_OF_BREAK]: * In `transformIn`, it transforms a value from the outermost space to the space before break being applied. * In `transformOut`, it transforms a value from the space before break being applied to the outermost space. * Typically nice axis ticks are picked in that space due to the current design of nice ticks * algorithm, while size related features may use `SCALE_MAPPER_DEPTH_INNERMOST`. * - [SCALE_MAPPER_DEPTH_INNERMOST]: * Currently only linear space is used as the innermost space. */ declare type ScaleMapperDepthOpt = { depth?: NullUndefined$1 | typeof SCALE_MAPPER_DEPTH_OUT_OF_BREAK | typeof SCALE_MAPPER_DEPTH_INNERMOST; }; declare const SCALE_MAPPER_DEPTH_OUT_OF_BREAK = 2; declare const SCALE_MAPPER_DEPTH_INNERMOST = 3; declare type ScaleMapperTransformOutOpt = (ScaleMapperDepthOpt & ValueTransformLookupOpt); declare type ScaleMapperTransformInOpt = ScaleMapperDepthOpt; /** * @tutorial [SCALE_COMPOSITION_AND_TRANSFORMATION]: * `ScaleMapper` is designed for multiple steps of numeric transformations from a certain space to a linear space, * or vice versa. Each steps is implemented as a `ScaleMapper`, and composed like a decorator pattern. And some * steps, such as "axis breaks transfromation", can be skipped when no breaks for performance consideration. * Currently we support: * - step#0: extent based linear scaling. * This is implemented in `LinearScaleMapper`. * It is mixed into `IntervalScale`, `TimeScale`; * and it is also composited into `BreakScaleMapper`, `OrdinalScale`, `LogScale`. * - step#1: axis breaks. * This is implemented in `BreakScaleMapper`. * This step may be absent if no breaks. * - step#2: logarithmic (implemented in `LogScale`), or * ordinal-related handling, or * others to be supported, such as asinh ... * Illustration of some currently supported cases: * - linear_space(in an IntervalScale) * - break_space(in an IntervalScale method bound by a BreakScaleMapper) * └─break_transform─► linear_space(in a LinearScaleMapper owned by a BreakScaleMapper) * - log_space(in a LogScale) * └─log_transform─► linear_space(in an IntervalScale) * - log_space(in a LogScale) * └─log_transform─► break_space(in an IntervalScale method bound by a BreakScaleMapper) * └─break_transform─► linear_space(in a LinearScaleMapper owned by a BreakScaleMapper) * - linear_space(in a TimeScale) * - break_space(in a TimeScale method bound by a BreakScaleMapper) * └─break_transform─► linear_space(in a LinearScaleMapper owned by a BreakScaleMapper) * - category_values(in a OrdinalScale) * └─category_to_numeric─► linear_space(in a LinearScaleMapper owned by a BreakScaleMapper) * * * @tutorial [SCALE_EXTENT_CONSTRUCTION]: * The full construction processing of the scale extent in EC_FULL_UPDATE_CYCLE: * - step#1. At `CoordinateSystem#create` stage, requirements of collecting series data extents are * committed to `associateSeriesWithAxis`, and `Scale` instances are created. * - step#2. Call `scaleRawExtentInfoCreate` to really collect series data extent and create * `ScaleRawExtentInfo` instances to manage extent related configurations * - at "data processing" stage for dataZoom controlled axes, if any, or * - at "CoordinateSystem#update" stage for all other axes. * - step#3. Perform "nice" (see `scaleCalcNice`) or "align" (see `scaleCalcAlign`) strategies to * modify the original extent from `ScaleRawExtentInfo` instance, if needed, at * "CoordinateSystem#update" stage. * - step#4. `calcContainShape` is performed. Set `SCALE_EXTENT_KIND_MAPPING` if needed. * See AXIS_CONTAIN_SHAPE_PROCESSING_ORDER for more details. * */ interface ScaleMapper extends ScaleMapperGeneric { } interface ScaleMapperGeneric { /** * Enable a fast path in large data traversal - the call of `transformIn`/`transformOut` * can be omitted, and this is the most case. */ needTransform(this: This): boolean; /** * Normalize a value to linear [0, 1], return 0.5 if extent span is 0. * The typical logic is: * `transformIn_self` -> `transformIn_inner` -> ... to the innermost space, * then do linear normalization based on innermost extent. */ normalize: (this: This, val: number) => number; /** * Scale a normalized value to extent. It's the inverse of `normalize`. */ scale: (this: This, val: number) => number; /** * [NOTICE]: * - This method must be available since the instance is constructed. * - This method has nothing to do with extent - transforming out of extent is supported. * * This method transforms a value forward into a inner space. * The typical logic is: * `transformIn_self` -> `transformIn_inner` -> ... to the innermost space. * In most cases axis ticks are laid out in linear space, and some features * (such as LogScale, axis breaks) transform values from their own spaces into linear space. */ transformIn: (this: This, val: number, opt: ScaleMapperTransformInOpt | NullUndefined$1) => number; /** * [NOTICE]: * - This method must be available since the instance is constructed. * - This method has nothing to do with extent - transforming out of extent is supported. * * The inverse method of `transformIn`. */ transformOut: (this: This, val: number, opt: ScaleMapperTransformOutOpt | NullUndefined$1) => number; /** * Whether the extent contains the given value. */ contain: (this: This, val: number) => boolean; /** * [NOTICE]: * In EC_FULL_UPDATE_CYCLE, scale extent is finally determined at `coordSys#update` stage. * * Get a clone of the scale extent. * An extent is always in an increase order. * It always returns an array - never be a null/undefined. * * @see SCALE_EXTENT_CONSTRUCTION for the full processing flow. */ getExtent(this: This): number[]; /** * [NOTICE]: * Callers must NOT modify the return. * * @see SCALE_EXTENT_CONSTRUCTION for the full processing flow. */ getExtentUnsafe(this: This, kind: ScaleExtentKind, depth: ScaleMapperDepthOpt['depth'] | NullUndefined$1): number[] | NullUndefined$1; /** * [NOTICE]: * The caller must ensure `start <= end` and both are finite number! * * `setExtent` is identical to `setExtent2(SCALE_EXTENT_KIND_EFFECTIVE)`. * * @see SCALE_EXTENT_CONSTRUCTION for the full processing flow. */ setExtent(this: This, start: number, end: number): void; setExtent2(this: This, kind: ScaleExtentKind, start: number, end: number): void; /** * Filter for sanitization. */ getFilter?: () => DataSanitizationFilter; /** * NOTICE: * - Should not sanitize invalid values (e.g., NaN, Infinity, null, undefined), * since it probably has special meaning, and always properly handled in every Scale. * - Should not depend on the current `extent`, since it can be used before `extent` determined. * * Sanitize a value if possible. For example, for LogScale, the negative part will be clampped. * This provides some permissiveness to ec option like `xxxAxis.min/max`. */ sanitize?: ((this: This, value: number | NullUndefined$1, dataExtent: number[]) => number | NullUndefined$1) | NullUndefined$1; /** * If not provided, use `0`. */ getDefaultStartValue?: (() => number) | NullUndefined$1; /** * Restrict the modification behavior of a scale for robustness. e.g., avoid subsequently * modifying `SCALE_EXTENT_KIND_EFFECTIVE` but no sync to `SCALE_EXTENT_KIND_MAPPING`. */ freeze(this: This): void; } /** * Lookup table to avoid rounding error - if the value before transformed is in `lookup.from[i]`, * return `lookup.to[i]` directly without transform. * Rounding errors typically arise in logarithm transform, which can cause the tick to be displayed * like `5.999999999999999` when it is expected to be `6`. */ declare type ValueTransformLookupOpt = { lookup?: { from: number[]; to: number[]; } | NullUndefined$1; }; /** * @file The facade of scale break. * Separate the impl to reduce code size. * * @caution * Must not import `scale/breakImpl.ts` directly or indirectly. * Must not implement anything in this file. */ interface BreakScaleMapper extends ScaleMapper { readonly breaks: ParsedAxisBreakList; hasBreaks(): boolean; calcNiceTickMultiple(tickVal: number, estimateNiceMultiple: (tickVal: number, brkEnd: number) => number): number; } /** * Whether to remove any normal ticks that are too close to axis breaks. * - 'auto': Default. Remove any normal ticks that are too close to axis breaks. * - 'no': Do nothing pruning. * - 'exclude_scale_bound': Prune but keep scale extent boundary. * For example: * - For splitLine, if remove the tick on extent, split line on the boundary of cartesian * will not be displayed, causing weird effect. * - For labels, scale extent boundary should be pruned if in break, otherwise duplicated * labels will displayed. */ declare type ParamPruneByBreak = 'auto' | 'no' | 'preserve_extent_bound' | NullUndefined$1; declare type ScaleGetTicksOpt = { expandToNicedExtent?: boolean; pruneByBreak?: ParamPruneByBreak; breakTicks?: 'only_break' | 'none' | NullUndefined$1; }; /** * @see ScaleMapper for the hierarchy structure. */ interface Scale extends ScaleMapperGeneric { } declare abstract class Scale { type: AxisScaleType; /** * CAUTION: Do not visit it directly - use helper methods in `scale/break.ts` instead. */ readonly brk: BreakScaleMapper | NullUndefined$1; private _isBlank; readonly rawExtentInfo: ScaleRawExtentInfo | NullUndefined$1; /** * Parse input `val` (typicall from ec option or API) to its corresponding * numeric representation. * * NOTICE: * - The implementation must have no side-effect. * - Must be available in constructor. * - Must ensure the return is a number. * `null`/`undefined` is not allowed. * `NaN` represents invalid data. * - Regarding `extent`: * - In `OrdinalScale`, the extent and `ordinalMeta` has been finally determined * before the constructor being called, and parse can reply on them * - In other scales, the extent is not finally determined, and `parse` must not * rely on them, otherwise, the result would be wrong if it is used earlier * (like in `dataZoom`). */ parse: (val: ScaleDataValue) => ParsedValueNumeric; /** * When axis extent depends on data and no data exists, * axis ticks should not be drawn, which is named 'blank'. * * @final NEVER override! */ isBlank(): boolean; /** * When axis extent depends on data and no data exists, * axis ticks should not be drawn, which is named 'blank'. * * @final NEVER override! */ setBlank(isBlank: boolean): void; /** * @return label of the tick. */ abstract getLabel(tick: ScaleTick): string; /** * Create ticks. The result can be modified by the caller. */ abstract getTicks(opt?: ScaleGetTicksOpt): ScaleTick[]; /** * Create minor ticks. The result can be modified by the caller. */ abstract getMinorTicks(splitNumber: number): number[][]; static registerClass: ClassManager['registerClass']; static getClass: ClassManager['getClass']; } declare type AxisLabelInfoDetermined = { formattedLabel: string; rawLabel: string; tick: ScaleTick; }; declare const AxisTickLabelComputingKind: { readonly estimate: 1; readonly determine: 2; }; declare type AxisTickLabelComputingKind = (typeof AxisTickLabelComputingKind)[keyof typeof AxisTickLabelComputingKind]; interface AxisLabelsComputingContext { out: { noPxChangeTryDetermine: (() => boolean)[]; }; kind: AxisTickLabelComputingKind; } interface AxisTickCoord { coord: number; tickValue: ScaleTick['value']; onBand?: boolean; } /** * Base class of Axis. * * Lifetime: recreate for each main process. * [NOTICE]: Some caches is stored on the axis instance (e.g., `axisTickLabelBuilder.ts`, `scaleRawExtentInfo.ts`), * which is based on this lifetime. */ declare class Axis { /** * Axis type * - 'category' * - 'value' * - 'time' * - 'log' */ type: OptionAxisType; readonly dim: DimensionName; scale: Scale; private _extent; model: AxisBaseModel; onBand: CategoryAxisBaseOption['boundaryGap']; inverse: AxisBaseOption['inverse']; __alignTo: Axis | NullUndefined$1; constructor(dim: DimensionName, scale: Scale, extent: [number, number]); /** * If axis extent contain given coord */ contain(coord: number): boolean; /** * If axis extent contain given data */ containData(data: ScaleDataValue): boolean; /** * Get coord extent. */ getExtent(): [number, number]; /** * Set coord extent */ setExtent(start: number, end: number): void; /** * Convert data to coord. Data is the rank if it has an ordinal scale */ dataToCoord(data: ScaleDataValue, clamp?: boolean): number; /** * Convert coord to data. Data is the rank if it has an ordinal scale */ coordToData(coord: number, clamp?: boolean): number; /** * Convert pixel point to data in axis */ pointToData(point: number[], clamp?: boolean): number; /** * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`, * `axis.getTicksCoords` considers `onBand`, which is used by * `boundaryGap:true` of category axis and splitLine and splitArea. * @param opt.tickModel default: axis.model.getModel('axisTick') */ getTicksCoords(opt?: { tickModel?: Model; breakTicks?: ScaleGetTicksOpt['breakTicks']; pruneByBreak?: ScaleGetTicksOpt['pruneByBreak']; }): AxisTickCoord[]; getMinorTicksCoords(): AxisTickCoord[][]; getViewLabels(ctx?: AxisLabelsComputingContext): AxisLabelInfoDetermined[]; getLabelModel(): Model; /** * Notice here we only get the default tick model. For splitLine * or splitArea, we should pass the splitLineModel or splitAreaModel * manually when calling `getTicksCoords`. * In GL, this method may be overridden to: * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));` */ getTickModel(): Model; /** * @deprecated Use `calcBandWidth` instead. */ getBandWidth(): number; /** * Get axis rotate, by degree. */ getRotate: () => number; /** * Only be called in category axis. * Can be overridden, consider other axes like in 3D. * @return Auto interval for category axis tick and label */ calculateCategoryInterval(ctx?: AxisLabelsComputingContext): number; } interface CoordinateSystemCreator { create: (ecModel: GlobalModel, api: ExtensionAPI) => CoordinateSystemMaster[]; dimensions?: DimensionName[]; getDimensionsInfo?: () => DimensionDefinitionLoose[]; } /** * The instance get from `CoordinateSystemManger` is `CoordinateSystemMaster`. * Consider a typical case: `grid` is a `CoordinateSystemMaster`, and it contains * one or multiple `cartesian2d`s, which are `CoordinateSystem`s. */ interface CoordinateSystemMaster { dimensions: DimensionName[]; model?: ComponentModel; boxCoordinateSystem?: CoordinateSystem; update?: (ecModel: GlobalModel, api: ExtensionAPI) => void; convertToPixel?(ecModel: GlobalModel, finder: ParsedModelFinder, value: Parameters[0], opt?: unknown): ReturnType | number | NullUndefined$1; convertToLayout?(ecModel: GlobalModel, finder: ParsedModelFinder, value: Parameters>[0], opt?: unknown): ReturnType> | NullUndefined$1; convertFromPixel?(ecModel: GlobalModel, finder: ParsedModelFinder, pixelValue: Parameters>[0], opt?: unknown): ReturnType> | NullUndefined$1; containPoint(point: number[]): boolean; getAxes?: () => Axis[]; axisPointerEnabled?: boolean; getTooltipAxes?: (dim: DimensionName | 'auto') => { baseAxes: Axis[]; otherAxes: Axis[]; }; /** * Get layout rect or coordinate system */ getRect?: () => RectLike; } /** * For example: cartesian is CoordinateSystem. * series.coordinateSystem is CoordinateSystem. */ interface CoordinateSystem { type: string; /** * Master of coordinate system. For example: * Grid is master of cartesian. */ master?: CoordinateSystemMaster; dimensions: DimensionName[]; model?: ComponentModel; /** * @param data * @param reserved Defined by the coordinate system itself * @param out Fill it if passing, and return. For performance optimization. * @return Point in global pixel coordinate system. * An invalid returned point should be represented by `[NaN, NaN]`, * rather than `null/undefined`. */ dataToPoint(data: CoordinateSystemDataCoord, opt?: unknown, out?: number[]): number[]; /** * @param data See the meaning in `dataToPoint`. * @param reserved Defined by the coordinate system itself * @param out Fill it if passing, and return. For performance optimization. Vary by different coord sys. * @return Layout in global pixel coordinate system. * An invalid returned rect should be represented by `{x: NaN, y: NaN, width: NaN, height: NaN}`, * Never return `null/undefined`. */ dataToLayout?(data: CoordinateSystemDataCoord, opt?: unknown, out?: CoordinateSystemDataLayout): CoordinateSystemDataLayout; /** * Some coord sys (like Parallel) might do not have `pointToData`, * or the meaning of this kind of features is not clear yet. * @param point point Point in global pixel coordinate system. * @param out Fill it if passing, and return. For performance optimization. * @return data * An invalid returned data should be represented by `[NaN, NaN]` or `NaN`, * rather than `null/undefined`, which represents not-applicable in `convertFromPixel`. * Return `OrdinalNumber` in ordianal (category axis) case. * Return timestamp in time axis. */ pointToData?(point: number[], opt?: unknown, out?: number | number[]): number | number[]; containPoint(point: number[]): boolean; getAxes?: () => Axis[]; getAxis?: (dim?: DimensionName) => Axis; /** * FIXME: Remove this method? See details in `Cartesian2D['getBaseAxis']` */ getBaseAxis?: () => Axis; getOtherAxis?: (baseAxis: Axis) => Axis; clampData?: (data: ScaleDataValue[], out?: number[]) => number[]; getArea?: (tolerance?: number) => CoordinateSystemClipArea; shouldClip?: () => boolean; /** * Optional; e.g. only for `GeoLikeCoordSys`. * External geo like extensions are required to implements it. * This is a rect in data space. * For historicall reason, the name is `getBoundingRect` - preserve it for backward compatibility. * @see VIEW_COORD_SYS_TRANS_RAW */ getBoundingRect?: () => BoundingRect; /** * Optional; e.g. only for `GeoLikeCoordSys`. * External geo like extensions are required to implements it. * @see VIEW_COORD_SYS_TRANS_RAW */ getViewRect?: () => BoundingRect; /** * Optional; e.g. only for `GeoLikeCoordSys`. * External geo like extensions are required to implements it. */ getRoamTransform?: () => MatrixArray; getAxesByScale?: (scaleType: string) => Axis[]; prepareCustoms?: PrepareCustomInfo; } /** * Like GridModel, PolarModel, ... */ interface CoordinateSystemHostModel extends ComponentModel { coordinateSystem?: CoordinateSystemMaster; } /** * Clip area will be returned by getArea of CoordinateSystem. * It is used to clip the graphic elements with the contain methods. */ interface CoordinateSystemClipArea { x: number; y: number; width: number; height: number; contain(x: number, y: number): boolean; } /** * LegendVisualProvider is an bridge that pick encoded color from data and * provide to the legend component. */ declare class LegendVisualProvider { private _getDataWithEncodedVisual; private _getRawData; constructor(getDataWithEncodedVisual: () => SeriesData, getRawData: () => SeriesData); getAllNames(): string[]; containName(name: string): boolean; indexOfName(name: string): number; getItemVisual(dataIndex: number, key: string): any; } /** * BrushController is not only used in "brush component", * but is also used in "tooltip DataZoom", and other possible * further brush behavior related scenarios. * So `BrushController` should not depend on "brush component model". */ declare type BrushType = 'polygon' | 'rect' | 'lineX' | 'lineY'; /** * Only for drawing (after enabledBrush). * 'line', 'rect', 'polygon' or false * If passing false/null/undefined, disable brush. * If passing 'auto', determined by panel.defaultBrushType */ declare type BrushTypeUncertain = BrushType | false | 'auto'; declare type BrushMode = 'single' | 'multiple'; declare type BrushDimensionMinMax = number[]; declare type BrushAreaRange = BrushDimensionMinMax | BrushDimensionMinMax[]; interface BrushCoverConfig { brushType: BrushType; id?: string; range?: BrushAreaRange; panelId?: string; brushMode?: BrushMode; brushStyle?: Pick; transformable?: boolean; removeOnClick?: boolean; z?: number; } declare type BrushStyleKey = 'fill' | 'stroke' | 'lineWidth' | 'opacity' | 'shadowBlur' | 'shadowOffsetX' | 'shadowOffsetY' | 'shadowColor'; declare type GeoSVGSourceInput = string | Document | SVGElement; declare type GeoJSONSourceInput = string | GeoJSON | GeoJSONCompressed; interface NameMap { [regionName: string]: string; } interface GeoSpecialAreas { [areaName: string]: { left: number; top: number; width?: number; height?: number; }; } interface GeoJSON extends GeoJSONFeatureCollection { } interface GeoJSONCompressed extends GeoJSONFeatureCollection { UTF8Encoding?: boolean; UTF8Scale?: number; } interface GeoJSONFeatureCollection { type: 'FeatureCollection'; features: GeoJSONFeature[]; } interface GeoJSONFeature { type: 'Feature'; id?: string | number; properties: { name?: string; cp?: number[]; [key: string]: any; }; geometry: G; } declare type GeoJSONGeometry = GeoJSONGeometryPoint | GeoJSONGeometryMultiPoint | GeoJSONGeometryLineString | GeoJSONGeometryMultiLineString | GeoJSONGeometryPolygon | GeoJSONGeometryMultiPolygon; declare type GeoJSONGeometryCompressed = GeoJSONGeometryPolygonCompressed | GeoJSONGeometryMultiPolygonCompressed | GeoJSONGeometryLineStringCompressed | GeoJSONGeometryMultiLineStringCompressed; interface GeoJSONGeometryPoint { type: 'Point'; coordinates: number[]; } interface GeoJSONGeometryMultiPoint { type: 'MultiPoint'; coordinates: number[][]; } interface GeoJSONGeometryLineString { type: 'LineString'; coordinates: number[][]; } interface GeoJSONGeometryLineStringCompressed { type: 'LineString'; coordinates: string; encodeOffsets: number[]; } interface GeoJSONGeometryMultiLineString { type: 'MultiLineString'; coordinates: number[][][]; } interface GeoJSONGeometryMultiLineStringCompressed { type: 'MultiLineString'; coordinates: string[]; encodeOffsets: number[][]; } interface GeoJSONGeometryPolygon { type: 'Polygon'; coordinates: number[][][]; } interface GeoJSONGeometryPolygonCompressed { type: 'Polygon'; coordinates: string[]; encodeOffsets: number[][]; } interface GeoJSONGeometryMultiPolygon { type: 'MultiPolygon'; coordinates: number[][][][]; } interface GeoJSONGeometryMultiPolygonCompressed { type: 'MultiPolygon'; coordinates: string[][]; encodeOffsets: number[][][]; } interface GeoResource { readonly type: 'geoJSON' | 'geoSVG'; load(nameMap: NameMap, nameProperty: string): { boundingRect: BoundingRect; regions: Region[]; regionsMap: HashMap; }; } /** * Geo stream interface compatitable with d3-geo * See the API detail in https://github.com/d3/d3-geo#streams */ interface ProjectionStream { point(x: number, y: number): void; lineStart(): void; lineEnd(): void; polygonStart(): void; polygonEnd(): void; /** * Not supported yet. */ sphere(): void; } interface GeoProjection { project(point: number[]): number[]; unproject(point: number[]): number[]; /** * Projection stream compatitable to d3-geo projection stream. * * When rotate projection is used. It may have antimeridian artifacts. * So we need to introduce the fule projection stream to do antimeridian clipping. * * project will be ignored if projectStream is given. */ stream?(outStream: ProjectionStream): ProjectionStream; } declare abstract class Region { readonly name: string; readonly type: 'geoJSON' | 'geoSVG'; protected _center: number[]; protected _rect: BoundingRect; constructor(name: string); setCenter(center: number[]): void; /** * Get center point in data unit. That is, * for GeoJSONRegion, the unit is lat/lng, * for GeoSVGRegion, the unit is SVG local coord. */ getCenter(): number[]; abstract calcCenter(): number[]; } declare class GeoJSONPolygonGeometry { readonly type = "polygon"; exterior: number[][]; interiors?: number[][][]; constructor(exterior: number[][], interiors: number[][][]); } declare class GeoJSONLineStringGeometry { readonly type = "linestring"; points: number[][][]; constructor(points: number[][][]); } declare class GeoJSONRegion extends Region { readonly type = "geoJSON"; readonly geometries: (GeoJSONPolygonGeometry | GeoJSONLineStringGeometry)[]; properties: GeoJSON['features'][0]['properties'] & { echartsStyle?: Omit; }; constructor(name: string, geometries: GeoJSONRegion['geometries'], cp: GeoJSON['features'][0]['properties']['cp']); calcCenter(): number[]; getBoundingRect(projection?: GeoProjection): BoundingRect; contain(coord: number[]): boolean; /** * Transform the raw coords to target bounding. * @param x * @param y * @param width * @param height */ transformTo(x: number, y: number, width: number, height: number): void; cloneShallow(name: string): GeoJSONRegion; } declare type ECSymbol = Path & { __isEmptyBrush?: boolean; setColor: (color: ZRColor, innerColor?: ZRColor) => void; getColor: () => ZRColor; }; /** * Create a symbol element with given symbol configuration: shape, x, y, width, height, color */ declare function createSymbol(symbolType: string, x: number, y: number, w: number, h: number, color?: ZRColor, keepAspect?: boolean): ECSymbol; declare type ItemStyleKeys = 'fill' | 'stroke' | 'decal' | 'lineWidth' | 'opacity' | 'shadowBlur' | 'shadowOffsetX' | 'shadowOffsetY' | 'shadowColor' | 'lineDash' | 'lineDashOffset' | 'lineCap' | 'lineJoin' | 'miterLimit'; declare type ItemStyleProps = Pick; declare class ItemStyleMixin { getItemStyle(this: Model, excludes?: readonly (keyof ItemStyleOption)[], includes?: readonly (keyof ItemStyleOption)[]): ItemStyleProps; } declare type LineStyleKeys = 'lineWidth' | 'stroke' | 'opacity' | 'shadowBlur' | 'shadowOffsetX' | 'shadowOffsetY' | 'shadowColor' | 'lineDash' | 'lineDashOffset' | 'lineCap' | 'lineJoin' | 'miterLimit'; declare type LineStyleProps = Pick; declare class LineStyleMixin { getLineStyle(this: Model, excludes?: readonly (keyof LineStyleOption)[]): LineStyleProps; } declare type SelectorType = 'all' | 'inverse'; interface LegendSelectorButtonOption { type?: SelectorType; title?: string; } /** * T: the type to be extended * ET: extended type for keys of T * ST: special type for T to be extended */ declare type ExtendPropertyType = { [key in keyof T]: key extends keyof ST ? T[key] | ET | ST[key] : T[key] | ET; }; interface LegendItemStyleOption extends ExtendPropertyType { } interface LegendLineStyleOption extends ExtendPropertyType { inactiveColor?: ColorString; inactiveWidth?: number; } interface LegendStyleOption { /** * Icon of the legend items. * @default 'roundRect' */ icon?: string; /** * Color when legend item is not selected */ inactiveColor?: ColorString; /** * Border color when legend item is not selected */ inactiveBorderColor?: ColorString; /** * Border color when legend item is not selected */ inactiveBorderWidth?: number | 'auto'; /** * Legend label formatter */ formatter?: string | ((name: string) => string); itemStyle?: LegendItemStyleOption; lineStyle?: LegendLineStyleOption; textStyle?: LabelOption; symbolRotate?: number | 'inherit'; /** * @deprecated */ symbolKeepAspect?: boolean; } interface DataItem extends LegendStyleOption { name?: string; icon?: string; textStyle?: LabelOption; tooltip?: unknown; } interface LegendTooltipFormatterParams { componentType: 'legend'; legendIndex: number; name: string; $vars: ['name']; } interface LegendIconParams { itemWidth: number; itemHeight: number; /** * symbolType is from legend.icon, legend.data.icon, or series visual */ icon: string; iconRotate: number | 'inherit'; symbolKeepAspect: boolean; itemStyle: PathStyleProps; lineStyle: LineStyleProps; } interface LegendOption extends ComponentOption, LegendStyleOption, BoxLayoutOptionMixin, BorderOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin { mainType?: 'legend'; show?: boolean; orient?: LayoutOrient; align?: 'auto' | 'left' | 'right'; backgroundColor?: ColorString; /** * Border radius of background rect * @default 0 */ borderRadius?: number | number[]; /** * Padding between legend item and border. * Support to be a single number or an array. * @default 5 */ padding?: number | number[]; /** * Gap between each legend item. * @default 10 */ itemGap?: number; /** * Width of legend symbol */ itemWidth?: number; /** * Height of legend symbol */ itemHeight?: number; selectedMode?: boolean | 'single' | 'multiple'; /** * selected map of each item. Default to be selected if item is not in the map */ selected?: Dictionary; /** * Buttons for all select or inverse select. * @example * selector: [{type: 'all or inverse', title: xxx}] * selector: true * selector: ['all', 'inverse'] */ selector?: (LegendSelectorButtonOption | SelectorType)[] | boolean; selectorLabel?: LabelOption; emphasis?: { selectorLabel?: LabelOption; }; /** * Position of selector buttons. */ selectorPosition?: 'auto' | 'start' | 'end'; /** * Gap between each selector button */ selectorItemGap?: number; /** * Gap between selector buttons group and legend main items. */ selectorButtonGap?: number; data?: (string | DataItem)[]; /** * Tooltip option */ tooltip?: CommonTooltipOption; triggerEvent?: boolean; } interface MapStateOption { itemStyle?: GeoItemStyleOption; label?: SeriesLabelOption; } interface MapDataItemOption extends MapStateOption, StatesOptionMixin, OptionDataItemObject { cursor?: string; silent?: boolean; } declare type MapValueCalculationType = 'sum' | 'average' | 'min' | 'max'; interface MapSeriesOption extends SeriesOption, StatesMixinBase>, MapStateOption, GeoCommonOptionMixin, SeriesOnGeoOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, SeriesEncodeOptionMixin { type?: 'map'; coordinateSystem?: string; silent?: boolean; markLine?: any; markPoint?: any; markArea?: any; mapValueCalculation?: MapValueCalculationType; showLegendSymbol?: boolean; geoCoord?: Dictionary; data?: (OptionDataValueNumeric | OptionDataValueNumeric[] | MapDataItemOption)[]; nameProperty?: string; } interface GeoItemStyleOption extends ItemStyleOption { areaColor?: ZRColor; } interface GeoLabelOption extends LabelOption { formatter?: string | ((params: GeoLabelFormatterDataParams) => string); } interface GeoStateOption { itemStyle?: GeoItemStyleOption; label?: GeoLabelOption; } interface GeoLabelFormatterDataParams { name: string; status: DisplayState; } interface RegionOption extends GeoStateOption, StatesOptionMixin { name?: string; selected?: boolean; tooltip?: CommonTooltipOption; silent?: boolean; } interface GeoTooltipFormatterParams { componentType: 'geo'; geoIndex: number; name: string; $vars: ['name']; } interface GeoCommonOptionMixin extends RoamOptionMixin, PreserveAspectMixin { map?: string; aspectScale?: number; layoutCenter?: (number | string)[]; layoutSize?: number | string; clip?: boolean; boundingCoords?: number[][]; nameMap?: NameMap; nameProperty?: string; /** * Use raw projection by default * Only available for GeoJSON source. * * NOTE: `center` needs to be the projected coord if projection is used. */ projection?: GeoProjection; } interface GeoOption extends ComponentOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, AnimationOptionMixin, GeoCommonOptionMixin, StatesOptionMixin, GeoStateOption { mainType?: 'geo'; show?: boolean; silent?: boolean; regions?: RegionOption[]; stateAnimation?: AnimationOptionMixin; selectedMode?: 'single' | 'multiple' | boolean; selectedMap?: Dictionary; tooltip?: CommonTooltipOption; /** * @private */ defaultItemStyleColor?: ZRColor; } /** * The input to define brush areas. * (1) Can be created by user when calling dispatchAction. * (2) Can be created by `BrushController` * for brush behavior. area params are picked from `cover.__brushOptoin`. * In `BrushController`, "covers" are create or updated for each "area". */ interface BrushAreaParam extends ModelFinderObject { brushType: BrushCoverConfig['brushType']; id?: BrushCoverConfig['id']; range?: BrushCoverConfig['range']; panelId?: BrushCoverConfig['panelId']; coordRange?: BrushAreaRange; coordRanges?: BrushAreaRange[]; __rangeOffset?: { offset: BrushDimensionMinMax[] | BrushDimensionMinMax; xyMinMax: BrushDimensionMinMax[]; }; } /** * Generated by `brushModel.setAreas`, which merges * `area: BrushAreaParam` and `brushModel.option: BrushOption`. * See `generateBrushOption`. */ interface BrushAreaParamInternal extends BrushAreaParam { brushMode: BrushMode; brushStyle: BrushCoverConfig['brushStyle']; transformable: BrushCoverConfig['transformable']; removeOnClick: BrushCoverConfig['removeOnClick']; z: BrushCoverConfig['z']; __rangeOffset?: { offset: BrushDimensionMinMax | BrushDimensionMinMax[]; xyMinMax: BrushDimensionMinMax[]; }; } declare type BrushToolboxIconType = BrushType | 'keep' | 'clear'; interface BrushOption extends ComponentOption, ModelFinderObject { mainType?: 'brush'; toolbox?: BrushToolboxIconType[]; brushLink?: number[] | 'all' | 'none'; throttleType?: 'fixRate' | 'debounce'; throttleDelay?: number; inBrush?: VisualOptionFixed; outOfBrush?: VisualOptionFixed; brushType?: BrushTypeUncertain; brushStyle?: { borderWidth?: number; color?: ZRColor; borderColor?: ZRColor; }; transformable?: boolean; brushMode?: BrushMode; removeOnClick?: boolean; /** * @private */ defaultOutOfBrushColor?: ColorString; } interface BrushSelectableArea extends BrushAreaParamInternal { boundingRect: BoundingRect; selectors: BrushCommonSelectorsForSeries; } /** * This methods are corresponding to `BrushSelectorOnBrushType`, * but `area: BrushSelectableArea` is binded to each method. */ interface BrushCommonSelectorsForSeries { point(itemLayout: number[]): boolean; rect(itemLayout: RectLike): boolean; } declare function makeStyleMapper(properties: readonly string[][], ignoreParent?: boolean): (model: Model, excludes?: readonly string[], includes?: readonly string[]) => PathStyleProps; declare type MarkerStatisticType = 'average' | 'min' | 'max' | 'median'; /** * Option to specify where to put the marker. */ interface MarkerPositionOption { x?: number | string; y?: number | string; relativeTo?: 'container' | 'coordinate'; /** * Coord on any coordinate system */ coord?: (ScaleDataValue | MarkerStatisticType)[]; xAxis?: ScaleDataValue; yAxis?: ScaleDataValue; radiusAxis?: ScaleDataValue; angleAxis?: ScaleDataValue; type?: MarkerStatisticType; /** * When using statistic method with type. * valueIndex and valueDim can be specify which dim the statistic is used on. */ valueIndex?: number; valueDim?: string; /** * Value to be displayed as label. Totally optional */ value?: string | number; } interface MarkerOption extends ComponentOption, AnimationOptionMixin { silent?: boolean; data?: unknown[]; tooltip?: CommonTooltipOption & { trigger?: 'item' | 'axis' | boolean | 'none'; }; } interface MarkAreaStateOption { itemStyle?: ItemStyleOption; label?: SeriesLabelOption; z2?: number; } interface MarkAreaDataItemOptionBase extends MarkAreaStateOption, StatesOptionMixin { name?: string; } interface MarkArea1DDataItemOption extends MarkAreaDataItemOptionBase { xAxis?: number; yAxis?: number; type?: MarkerStatisticType; valueIndex?: number; valueDim?: string; } interface MarkArea2DDataItemDimOption extends MarkAreaDataItemOptionBase, MarkerPositionOption { } declare type MarkArea2DDataItemOption = [ MarkArea2DDataItemDimOption, MarkArea2DDataItemDimOption ]; interface MarkAreaOption extends MarkerOption, MarkAreaStateOption, StatesOptionMixin { mainType?: 'markArea'; precision?: number; data?: (MarkArea1DDataItemOption | MarkArea2DDataItemOption)[]; } declare const dimPermutations: readonly [readonly ["x0", "y0"], readonly ["x1", "y0"], readonly ["x1", "y1"], readonly ["x0", "y1"]]; declare const SERIES_UNIVERSAL_TRANSITION_PROP = "__universalTransitionEnabled"; /** * NOTICE: * - prefix `__` can be used to avoid conflicts with possible outside subclasses. * - All of these methods are optional - null-check is needed. */ interface SeriesModel { preventIncremental(): boolean; __preparePipelineContext(view: ChartView, pipeline: Pick): PipelineContext; /** * If `true`, a default `startValue` (`0`) is used if not specified in ec option, * and axis extent will union it. * Otherwise, `startValue` will be included in the union of axis extent only if * it is explicitly specified in ec option. * * @see {AxisBaseOptionCommon['startValue']} for more info. */ __requireStartValue(axis: Axis): boolean; /** * See tooltip. * Implement it if needed. * @return Point of tooltip. null/undefined can be returned. */ getTooltipPosition(dataIndex: number): number[]; /** * Get data indices for show tooltip content. See tooltip. * Implement it if needed. */ getAxisTooltipData(dim: DimensionName[], value: ScaleDataValue, baseAxis: Axis): { dataIndices: number[]; nestestValue: any; }; /** * Get position for marker */ getMarkerPosition(value: ScaleDataValue[], dims?: typeof dimPermutations[number], startingAtTick?: boolean): number[]; /** * Get legend icon symbol according to each series type */ getLegendIcon(opt: LegendIconParams): ECSymbol | Group; /** * See `component/brush/selector.js` * Defined the brush selector for this series. */ brushSelector(dataIndex: number, data: SeriesData, selectors: BrushCommonSelectorsForSeries, area: BrushSelectableArea): boolean; enableAriaDecal(): void; } declare class SeriesModel extends ComponentModel { type: string; defaultOption: SeriesOption; seriesIndex: number; coordinateSystem: CoordinateSystem; dataTask: SeriesTask; pipelineContext: PipelineContext; legendVisualProvider: LegendVisualProvider; visualStyleAccessPath: string; visualDrawType: 'fill' | 'stroke'; visualStyleMapper: ReturnType; ignoreStyleOnData: boolean; hasSymbolVisual: boolean; defaultSymbol: string; legendIcon: string; [SERIES_UNIVERSAL_TRANSITION_PROP]: boolean; private _selectedDataIndicesMap; readonly preventUsingHoverLayer: boolean; static protoInitialize: void; init(option: Opt, parentModel: Model, ecModel: GlobalModel): void; /** * Util for merge default and theme to option */ mergeDefaultAndTheme(option: Opt, ecModel: GlobalModel): void; mergeOption(newSeriesOption: Opt, ecModel: GlobalModel): void; fillDataTextStyle(data: ArrayLike): void; /** * Init a data structure from data related option in series * Must be overridden. */ getInitialData(option: Opt, ecModel: GlobalModel): SeriesData; /** * Append data to list */ appendData(params: { data: ArrayLike; }): void; /** * Consider some method like `filter`, `map` need make new data, * We should make sure that `seriesModel.getData()` get correct * data in the stream procedure. So we fetch data from upstream * each time `task.perform` called. */ getData(dataType?: SeriesDataType): SeriesData; getAllData(): ({ data: SeriesData; type?: SeriesDataType; })[]; setData(data: SeriesData): void; getEncode(): HashMap; getSourceManager(): SourceManager; getSource(): Source; /** * Get data before processed */ getRawData(): SeriesData; getColorBy(): ColorBy; isColorBySeries(): boolean; /** * Get base axis if has coordinate system and has axis. * By default use coordSys.getBaseAxis(); * Can be overridden for some chart. * @return {type} description */ getBaseAxis(): Axis; /** * Retrieve the index of nearest value in the view coordinate. * Data position is compared with each axis's dataToCoord. * * @param axisDim axis dimension * @param dim data dimension * @param value * @param [maxDistance=Infinity] The maximum distance in view coordinate space * @return If and only if multiple indices has * the same value, they are put to the result. */ indicesOfNearest(axisDim: DimensionName, dim: DimensionLoose, value: number, maxDistance?: number): number[]; /** * Default tooltip formatter * * @param dataIndex * @param multipleSeries * @param dataType * @param renderMode valid values: 'html'(by default) and 'richText'. * 'html' is used for rendering tooltip in extra DOM form, and the result * string is used as DOM HTML content. * 'richText' is used for rendering tooltip in rich text form, for those where * DOM operation is not supported. * @return formatted tooltip with `html` and `markers` * Notice: The override method can also return string */ formatTooltip(dataIndex: number, multipleSeries?: boolean, dataType?: SeriesDataType): ReturnType; isAnimationEnabled(): boolean; restoreData(): void; getColorFromPalette(name: string, scope: any, requestColorNum?: number): ZRColor; /** * Use `data.mapDimensionsAll(coordDim)` instead. * @deprecated */ coordDimToDataDim(coordDim: DimensionName): DimensionName[]; /** * Get progressive rendering count each step */ getProgressive(): number | false; /** * Get progressive rendering count each step */ getProgressiveThreshold(): number; select(innerDataIndices: number[], dataType?: SeriesDataType): void; unselect(innerDataIndices: number[], dataType?: SeriesDataType): void; toggleSelect(innerDataIndices: number[], dataType?: SeriesDataType): void; getSelectedDataIndices(): number[]; isSelected(dataIndex: number, dataType?: SeriesDataType): boolean; isUniversalTransitionEnabled(): boolean; private _innerSelect; private _initSelectedMapFromData; static registerClass(clz: Constructor): Constructor; } interface SeriesModel extends DataFormatMixin, PaletteMixin, DataHost { /** * Get dimension to render shadow in dataZoom component */ getShadowDim?(): string; } /** * Multi dimensional data store */ declare const dataCtors: { readonly float: ArrayConstructor | Float64ArrayConstructor; readonly int: ArrayConstructor | Int32ArrayConstructor; readonly ordinal: ArrayConstructor; readonly number: ArrayConstructor; readonly time: ArrayConstructor | Float64ArrayConstructor; }; declare type DataStoreDimensionType = keyof typeof dataCtors; declare type EachCb = (...args: any) => void; declare type FilterCb = (...args: any) => boolean; declare type MapCb = (...args: any) => ParsedValue | ParsedValue[]; declare type DimValueGetter = (this: DataStore, dataItem: any, property: string, dataIndex: number, dimIndex: DimensionIndex) => ParsedValue; interface DataStoreDimensionDefine { /** * Default to be float. */ type?: DataStoreDimensionType; /** * Only used in SOURCE_FORMAT_OBJECT_ROWS and SOURCE_FORMAT_KEYED_COLUMNS to retrieve value * by "object property". * For example, in `[{bb: 124, aa: 543}, ...]`, "aa" and "bb" is "object property". * * Deliberately name it as "property" rather than "name" to prevent it from been used in * SOURCE_FORMAT_ARRAY_ROWS, because if it comes from series, it probably * can not be shared by different series. */ property?: string; /** * When using category axis. * Category strings will be collected and stored in ordinalMeta.categories. * And store will store the index of categories. */ ordinalMeta?: OrdinalMeta; /** * Offset for ordinal parsing and collect */ ordinalOffset?: number; } /** * Basically, DataStore API keep immutable. */ declare class DataStore { private _chunks; private _provider; private _rawExtent; private _extent; private _indices; private _count; private _rawCount; private _dimensions; private _dimValueGetter; private _calcDimNameToIdx; defaultDimValueGetter: DimValueGetter; /** * Initialize from data */ initData(provider: DataProvider, inputDimensions: DataStoreDimensionDefine[], dimValueGetter?: DimValueGetter): void; getProvider(): DataProvider; /** * Caution: even when a `source` instance owned by a series, the created data store * may still be shared by different sereis (the source hash does not use all `source` * props, see `sourceManager`). In this case, the `source` props that are not used in * hash (like `source.dimensionDefine`) probably only belongs to a certain series and * thus should not be fetch here. */ getSource(): Source; /** * @caution Only used in dataStack. */ ensureCalculationDimension(dimName: DimensionName, type: DataStoreDimensionType): DimensionIndex; collectOrdinalMeta(dimIdx: number, ordinalMeta: OrdinalMeta): void; getOrdinalMeta(dimIdx: number): OrdinalMeta; getDimensionProperty(dimIndex: DimensionIndex): DataStoreDimensionDefine['property']; /** * Caution: Can be only called on raw data (before `this._indices` created). */ appendData(data: ArrayLike): number[]; appendValues(values: any[][], minFillLen?: number): { start: number; end: number; }; private _initDataFromProvider; count(): number; /** * Get value. Return NaN if idx is out of range. */ get(dim: DimensionIndex, idx: number): ParsedValue; getValues(idx: number): ParsedValue[]; getValues(dimensions: readonly DimensionIndex[], idx?: number): ParsedValue[]; /** * @param dim concrete dim */ getByRawIndex(dim: DimensionIndex, rawIdx: number): ParsedValue; /** * Get sum of data in one dimension */ getSum(dim: DimensionIndex): number; /** * Get median of data in one dimension */ getMedian(dim: DimensionIndex): number; /** * Retrieve the index with given raw data index. */ indexOfRawIndex(rawIndex: number): number; getIndices(): ArrayLike; /** * [NOTICE]: Performance-sensitive for large data. */ filter(dims: DimensionIndex[], cb: FilterCb): DataStore; /** * Select data in range. (For optimization of filter) * (Manually inline code, support 5 million data filtering in data zoom.) */ selectRange(range: { [dimIdx: number]: [number, number]; }): DataStore; /** * Data mapping to a new List with given dimensions */ map(dims: DimensionIndex[], cb: MapCb): DataStore; /** * @caution Danger!! Only used in dataStack. */ modify(dims: DimensionIndex[], cb: MapCb): void; private _updateDims; /** * Large data down sampling using largest-triangle-three-buckets * @param {string} valueDimension * @param {number} targetCount */ lttbDownSample(valueDimension: DimensionIndex, rate: number): DataStore; /** * Large data down sampling using min-max * @param {string} valueDimension * @param {number} rate */ minmaxDownSample(valueDimension: DimensionIndex, rate: number): DataStore; /** * Large data down sampling on given dimension * @param sampleIndex Sample index for name and id */ downSample(dimension: DimensionIndex, rate: number, sampleValue: (frameValues: ArrayLike) => ParsedValueNumeric, sampleIndex: (frameValues: ArrayLike, value: ParsedValueNumeric) => number): DataStore; /** * Data iteration * @param ctx default this * @example * list.each(0, function (x, idx) {}); * list.each([0, 1], function (x, y, idx) {}); * list.each(function (idx) {}) */ each(dims: DimensionIndex[], cb: EachCb): void; getDataExtent(dim: DimensionIndex, filter: DataSanitizationFilter | NullUndefined$1): [number, number]; /** * Get raw data index. * Do not initialize. * Default `getRawIndex`. And it can be changed. */ getRawIndex: (idx: number) => number; /** * Get raw data item */ getRawDataItem(idx: number): OptionDataItem; /** * Clone shallow. * * @param clonedDims Determine which dims to clone. Will share the data if not specified. */ clone(clonedDims?: DimensionIndex[], ignoreIndices?: boolean): DataStore; private _copyCommonProps; private _cloneIndices; private _getRawIdxIdentity; private _getRawIdx; private _updateGetRawIdx; private static internalField; } declare class SeriesDimensionDefine { /** * Dimension type. The enumerable values are the key of * Optional. */ type?: DimensionType; /** * Dimension name. * Mandatory. */ name: string; /** * The origin name in dimsDef, see source helper. * If displayName given, the tooltip will displayed vertically. * Optional. */ displayName?: string; tooltip?: boolean; /** * This dimension maps to the the dimension in dataStore by `storeDimIndex`. * Notice the facts: * 1. When there are too many dimensions in data store, seriesData only save the * used store dimensions. * 2. We use dimensionIndex but not name to reference store dimension * because the dataset dimension definition might has no name specified by users, * or names in series dimension definition might be different from dataset. */ storeDimIndex?: number; /** * Which coordSys dimension this dimension mapped to. * A `coordDim` can be a "coordSysDim" that the coordSys required * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`), * or an generated "extra coord name" if does not mapped to any "coordSysDim" * (That is determined by whether `isExtraCoord` is `true`). * Mandatory. */ coordDim?: string; /** * The index of this dimension in `series.encode[coordDim]`. * Mandatory. * * For example, * Suppose * - encode option: * ```js * encode: { * x: [1, 3, 5], * y: [0, 2], * } * ``` * - This `seriesDimensionDefine` corresponds to series dimension index `3`, * - `coordDim` is `x` * Then * coordDimIndex should be `1`, where `encode[coordDim][coordDimIndex] === 3` */ coordDimIndex?: number; /** * The term "other" means "other than coord". * The format of `otherDims` is: * ```js * { * tooltip?: number * label?: number * itemName?: number * seriesName?: number * } * ``` * * A `series.encode` can specified these fields: * ```js * encode: { * // "3, 1, 5" is the index of data dimension. * tooltip: [3, 1, 5], * label: [0, 3], * ... * } * ``` * `otherDims` is the parse result of the `series.encode` above, like: * ```js * // Suppose the index of this data dimension is `3`. * this.otherDims = { * // `3` is at the index `0` of the `encode.tooltip` * tooltip: 0, * // `3` is at the index `1` of the `encode.label` * label: 1 * }; * ``` * * This prop should never be `null`/`undefined` after initialized. */ otherDims?: DataVisualDimensions; /** * Be `true` if this dimension is not mapped to any "coordSysDim" that the * "coordSys" required. * Mandatory. */ isExtraCoord?: boolean; /** * If this dimension if for calculated value like stacking */ isCalculationCoord?: boolean; defaultTooltip?: boolean; ordinalMeta?: OrdinalMeta; /** * Whether to create inverted indices. */ createInvertedIndices?: boolean; /** * @param opt All of the fields will be shallow copied. */ constructor(opt?: object | SeriesDimensionDefine); } /** * Represents the dimension requirement of a series. * * NOTICE: * When there are too many dimensions in dataset and many series, only the used dimensions * (i.e., used by coord sys and declared in `series.encode`) are add to `dimensionDefineList`. * But users may query data by other unused dimension names. * In this case, users can only query data if and only if they have defined dimension names * via ec option, so we provide `getDimensionIndexFromSource`, which only query them from * `source` dimensions. */ declare class SeriesDataSchema { /** * When there are too many dimensions, `dimensionDefineList` might only contain * used dimensions. * * CAUTION: * Should have been sorted by `storeDimIndex` asc. * * PENDING: * The item can still be modified outsite. * But MUST NOT add/remove item of this array. */ readonly dimensions: SeriesDimensionDefine[]; readonly source: Source; private _fullDimCount; private _dimNameMap; private _dimOmitted; constructor(opt: { source: Source; dimensions: SeriesDimensionDefine[]; fullDimensionCount: number; dimensionOmitted: boolean; }); isDimensionOmitted(): boolean; private _updateDimOmitted; /** * @caution Can only be used when `dimensionOmitted: true`. * * Get index by user defined dimension name (i.e., not internal generate name). * That is, get index from `dimensionsDefine`. * If no `dimensionsDefine`, or no name get, return -1. */ getSourceDimensionIndex(dimName: DimensionName): DimensionIndex; /** * @caution Can only be used when `dimensionOmitted: true`. * * Notice: may return `null`/`undefined` if user not specify dimension names. */ getSourceDimension(dimIndex: DimensionIndex): DimensionDefinition; makeStoreSchema(): { dimensions: DataStoreDimensionDefine[]; hash: string; }; makeOutputDimensionNames(): DimensionName[]; appendCalculationDimension(dimDef: SeriesDimensionDefine): void; } /** * [REQUIREMENT_MEMO]: * (0) `metaRawOption` means `dimensions`/`sourceHeader`/`seriesLayoutBy` in raw option. * (1) Keep support the feature: `metaRawOption` can be specified both on `series` and * `root-dataset`. Them on `series` has higher priority. * (2) Do not support to set `metaRawOption` on a `non-root-dataset`, because it might * confuse users: whether those props indicate how to visit the upstream source or visit * the transform result source, and some transforms has nothing to do with these props, * and some transforms might have multiple upstream. * (3) Transforms should specify `metaRawOption` in each output, just like they can be * declared in `root-dataset`. * (4) At present only support visit source in `SERIES_LAYOUT_BY_COLUMN` in transforms. * That is for reducing complexity in transforms. * PENDING: Whether to provide transposition transform? * * [IMPLEMENTAION_MEMO]: * "sourceVisitConfig" are calculated from `metaRawOption` and `data`. * They will not be calculated until `source` is about to be visited (to prevent from * duplicate calcuation). `source` is visited only in series and input to transforms. * * [DIMENSION_INHERIT_RULE]: * By default the dimensions are inherited from ancestors, unless a transform return * a new dimensions definition. * Consider the case: * ```js * dataset: [{ * source: [ ['Product', 'Sales', 'Prise'], ['Cookies', 321, 44.21], ...] * }, { * transform: { type: 'filter', ... } * }] * dataset: [{ * dimension: ['Product', 'Sales', 'Prise'], * source: [ ['Cookies', 321, 44.21], ...] * }, { * transform: { type: 'filter', ... } * }] * ``` * The two types of option should have the same behavior after transform. * * * [SCENARIO]: * (1) Provide source data directly: * ```js * series: { * encode: {...}, * dimensions: [...] * seriesLayoutBy: 'row', * data: [[...]] * } * ``` * (2) Series refer to dataset. * ```js * series: [{ * encode: {...} * // Ignore datasetIndex means `datasetIndex: 0` * // and the dimensions defination in dataset is used * }, { * encode: {...}, * seriesLayoutBy: 'column', * datasetIndex: 1 * }] * ``` * (3) dataset transform * ```js * dataset: [{ * source: [...] * }, { * source: [...] * }, { * // By default from 0. * transform: { type: 'filter', config: {...} } * }, { * // Piped. * transform: [ * { type: 'filter', config: {...} }, * { type: 'sort', config: {...} } * ] * }, { * id: 'regressionData', * fromDatasetIndex: 1, * // Third-party transform * transform: { type: 'ecStat:regression', config: {...} } * }, { * // retrieve the extra result. * id: 'regressionFormula', * fromDatasetId: 'regressionData', * fromTransformResult: 1 * }] * ``` */ declare class SourceManager { private _sourceHost; private _sourceList; private _storeList; private _upstreamSignList; private _versionSignBase; private _dirty; constructor(sourceHost: DatasetModel | SeriesModel); /** * Mark dirty. */ dirty(): void; private _setLocalSource; /** * For detecting whether the upstream source is dirty, so that * the local cached source (in `_sourceList`) should be discarded. */ private _getVersionSign; /** * Always return a source instance. Otherwise throw error. */ prepareSource(): void; private _createSource; private _applyTransform; private _isDirty; /** * @param sourceIndex By default 0, means "main source". * In most cases there is only one source. */ getSource(sourceIndex?: number): Source; /** * * Get a data store which can be shared across series. * Only available for series. * * @param seriesDimRequest Dimensions that are generated in series. * Should have been sorted by `storeDimIndex` asc. */ getSharedDataStore(seriesDimRequest: SeriesDataSchema): DataStore; private _innerGetDataStore; /** * PENDING: Is it fast enough? * If no upstream, return empty array. */ private _getUpstreamSourceManagers; private _getSourceMetaRawOption; } /** * This module is imported by echarts directly. * * Notice: * Always keep this file exists for backward compatibility. * Because before 4.1.0, dataset is an optional component, * some users may import this module manually. */ interface DatasetOption extends Pick, Pick { mainType?: 'dataset'; seriesLayoutBy?: SeriesLayoutBy; sourceHeader?: OptionSourceHeader; source?: OptionSourceData; fromDatasetIndex?: number; fromDatasetId?: string; transform?: DataTransformOption | PipedDataTransformOption; fromTransformResult?: number; } declare class DatasetModel extends ComponentModel { type: string; static type: string; static defaultOption: DatasetOption; private _sourceManager; init(option: Opts, parentModel: Model, ecModel: GlobalModel): void; mergeOption(newOption: Opts, ecModel: GlobalModel): void; optionUpdated(): void; getSourceManager(): SourceManager; } declare function install(registers: EChartsExtensionInstallRegisters): void; /** * [sourceFormat] * * + "original": * This format is only used in series.data, where * itemStyle can be specified in data item. * * + "arrayRows": * [ * ['product', 'score', 'amount'], * ['Matcha Latte', 89.3, 95.8], * ['Milk Tea', 92.1, 89.4], * ['Cheese Cocoa', 94.4, 91.2], * ['Walnut Brownie', 85.4, 76.9] * ] * * + "objectRows": * [ * {product: 'Matcha Latte', score: 89.3, amount: 95.8}, * {product: 'Milk Tea', score: 92.1, amount: 89.4}, * {product: 'Cheese Cocoa', score: 94.4, amount: 91.2}, * {product: 'Walnut Brownie', score: 85.4, amount: 76.9} * ] * * + "keyedColumns": * { * 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'], * 'count': [823, 235, 1042, 988], * 'score': [95.8, 81.4, 91.2, 76.9] * } * * + "typedArray" * * + "unknown" */ interface SourceMetaRawOption { seriesLayoutBy: SeriesLayoutBy; sourceHeader: OptionSourceHeader; dimensions: DimensionDefinitionLoose[]; } interface Source extends SourceImpl { } declare class SourceImpl { /** * Not null/undefined. */ readonly data: OptionSourceData; /** * See also "detectSourceFormat". * Not null/undefined. */ readonly sourceFormat: SourceFormat; /** * 'row' or 'column' * Not null/undefined. */ readonly seriesLayoutBy: SeriesLayoutBy; /** * dimensions definition from: * (1) standalone defined in option prop `dimensions: [...]` * (2) detected from option data. See `determineSourceDimensions`. * If can not be detected (e.g., there is only pure data `[[11, 33], ...]` * `dimensionsDefine` will be null/undefined. */ readonly dimensionsDefine: DimensionDefinition[]; /** * Only make sense in `SOURCE_FORMAT_ARRAY_ROWS`. * That is the same as `sourceHeader: number`, * which means from which line the real data start. * Not null/undefined, uint. */ readonly startIndex: number; /** * Dimension count detected from data. Only works when `dimensionDefine` * does not exists. * Can be null/undefined (when unknown), uint. */ readonly dimensionsDetectedCount: number; /** * Raw props from user option. */ readonly metaRawOption: SourceMetaRawOption; constructor(fields: { data: OptionSourceData; sourceFormat: SourceFormat; seriesLayoutBy?: SeriesLayoutBy; dimensionsDefine?: DimensionDefinition[]; startIndex?: number; dimensionsDetectedCount?: number; metaRawOption?: SourceMetaRawOption; encodeDefine?: HashMap; }); } interface DataProvider { /** * true: all of the value are in primitive type (in type `OptionDataValue`). * false: Not sure whether any of them is non primitive type (in type `OptionDataItemObject`). * Like `data: [ { value: xx, itemStyle: {...} }, ...]` * At present it only happen in `SOURCE_FORMAT_ORIGINAL`. */ pure?: boolean; /** * If data is persistent and will not be released after use. */ persistent?: boolean; getSource(): Source; count(): number; getItem(idx: number, out?: OptionDataItem): OptionDataItem; fillStorage?(start: number, end: number, out: ArrayLike$1[], extent: number[][]): void; appendData?(newData: ArrayLike$1): void; clean?(): void; } declare type DimensionSummaryEncode = { defaultedLabel: DimensionName[]; defaultedTooltip: DimensionName[]; [coordOrVisualDimName: string]: DimensionName[]; }; declare type DimensionSummary = { encode: DimensionSummaryEncode; userOutput: DimensionUserOuput; dataDimsOnCoord: DimensionName[]; dataDimIndicesOnCoord: DimensionIndex[]; encodeFirstDimNotExtra: { [coordDim: string]: DimensionName; }; }; declare type DimensionUserOuputEncode = { [coordOrVisualDimName: string]: DimensionIndex[]; }; declare class DimensionUserOuput { private _encode; private _cachedDimNames; private _schema?; constructor(encode: DimensionUserOuputEncode, dimRequest?: SeriesDataSchema); get(): { fullDimensions: DimensionName[]; encode: DimensionUserOuputEncode; }; /** * Get all data store dimension names. * Theoretically a series data store is defined both by series and used dataset (if any). * If some dimensions are omitted for performance reason in `this.dimensions`, * the dimension name may not be auto-generated if user does not specify a dimension name. * In this case, the dimension name is `null`/`undefined`. */ private _getFullDimensionNames; } declare class Graph { type: 'graph'; readonly nodes: GraphNode[]; readonly edges: GraphEdge[]; data: SeriesData; edgeData: SeriesData; /** * Whether directed graph. */ private _directed; private _nodesMap; /** * @type {Object.} * @private */ private _edgesMap; constructor(directed?: boolean); /** * If is directed graph */ isDirected(): boolean; /** * Add a new node */ addNode(id: string | number, dataIndex?: number): GraphNode; /** * Get node by data index */ getNodeByIndex(dataIndex: number): GraphNode; /** * Get node by id */ getNodeById(id: string): GraphNode; /** * Add a new edge */ addEdge(n1: GraphNode | number | string, n2: GraphNode | number | string, dataIndex?: number): GraphEdge; /** * Get edge by data index */ getEdgeByIndex(dataIndex: number): GraphEdge; /** * Get edge by two linked nodes */ getEdge(n1: string | GraphNode, n2: string | GraphNode): GraphEdge; /** * Iterate all nodes */ eachNode(cb: (this: Ctx, node: GraphNode, idx: number) => void, context?: Ctx): void; /** * Iterate all edges */ eachEdge(cb: (this: Ctx, edge: GraphEdge, idx: number) => void, context?: Ctx): void; /** * Breadth first traverse * Return true to stop traversing */ breadthFirstTraverse(cb: (this: Ctx, node: GraphNode, fromNode: GraphNode) => boolean | void, startNode: GraphNode | string, direction: 'none' | 'in' | 'out', context?: Ctx): void; update(): void; /** * @return {module:echarts/data/Graph} */ clone(): Graph; } interface GraphDataProxyMixin { getValue(dimension?: DimensionLoose): ParsedValue; setVisual(key: string | Dictionary, value?: any): void; getVisual(key: string): any; setLayout(layout: any, merge?: boolean): void; getLayout(): any; getGraphicEl(): Element; getRawIndex(): number; } declare class GraphEdge { /** * The first node. If directed graph, it represents the source node. */ node1: GraphNode; /** * The second node. If directed graph, it represents the target node. */ node2: GraphNode; dataIndex: number; hostGraph: Graph; constructor(n1: GraphNode, n2: GraphNode, dataIndex?: number); getModel(): Model; getModel(path: S): Model; getAdjacentDataIndices(): { node: number[]; edge: number[]; }; getTrajectoryDataIndices(): { node: number[]; edge: number[]; }; } interface GraphEdge extends GraphDataProxyMixin { } declare class GraphNode { id: string; inEdges: GraphEdge[]; outEdges: GraphEdge[]; edges: GraphEdge[]; hostGraph: Graph; dataIndex: number; __visited: boolean; constructor(id?: string, dataIndex?: number); /** * @return {number} */ degree(): number; /** * @return {number} */ inDegree(): number; /** * @return {number} */ outDegree(): number; getModel(): Model; getModel(path: S): Model; getAdjacentDataIndices(): { node: number[]; edge: number[]; }; getTrajectoryDataIndices(): { node: number[]; edge: number[]; }; } interface GraphNode extends GraphDataProxyMixin { } declare type TreeTraverseOrder = 'preorder' | 'postorder'; declare type TreeTraverseCallback = (this: Ctx, node: TreeNode) => boolean | void; declare type TreeTraverseOption = { order?: TreeTraverseOrder; attr?: 'children' | 'viewChildren'; }; interface TreeNodeOption extends Pick, 'name' | 'value'> { children?: TreeNodeOption[]; } declare class TreeNode { name: string; depth: number; height: number; parentNode: TreeNode; /** * Reference to list item. * Do not persistent dataIndex outside, * besause it may be changed by list. * If dataIndex -1, * this node is logical deleted (filtered) in list. */ dataIndex: number; children: TreeNode[]; viewChildren: TreeNode[]; isExpand: boolean; readonly hostTree: Tree; constructor(name: string, hostTree: Tree); /** * The node is removed. */ isRemoved(): boolean; /** * Travel this subtree (include this node). * Usage: * node.eachNode(function () { ... }); // preorder * node.eachNode('preorder', function () { ... }); // preorder * node.eachNode('postorder', function () { ... }); // postorder * node.eachNode( * {order: 'postorder', attr: 'viewChildren'}, * function () { ... } * ); // postorder * * @param options If string, means order. * @param options.order 'preorder' or 'postorder' * @param options.attr 'children' or 'viewChildren' * @param cb If in preorder and return false, * its subtree will not be visited. */ eachNode(options: TreeTraverseOrder, cb: TreeTraverseCallback, context?: Ctx): void; eachNode(options: TreeTraverseOption, cb: TreeTraverseCallback, context?: Ctx): void; eachNode(cb: TreeTraverseCallback, context?: Ctx): void; /** * Update depth and height of this subtree. */ updateDepthAndHeight(depth: number): void; getNodeById(id: string): TreeNode; contains(node: TreeNode): boolean; /** * @param includeSelf Default false. * @return order: [root, child, grandchild, ...] */ getAncestors(includeSelf?: boolean): TreeNode[]; getAncestorsIndices(): number[]; getDescendantIndices(): number[]; getValue(dimension?: DimensionLoose): ParsedValue; setLayout(layout: any, merge?: boolean): void; /** * @return {Object} layout */ getLayout(): any; getModel(): Model; getLevelModel(): Model; /** * @example * setItemVisual('color', color); * setItemVisual({ * 'color': color * }); */ setVisual(key: string, value: any): void; setVisual(obj: Dictionary): void; /** * Get item visual * FIXME: make return type better */ getVisual(key: string): unknown; getRawIndex(): number; getId(): string; /** * index in parent's children */ getChildIndex(): number; /** * if this is an ancestor of another node * * @param node another node * @return if is ancestor */ isAncestorOf(node: TreeNode): boolean; /** * if this is an descendant of another node * * @param node another node * @return if is descendant */ isDescendantOf(node: TreeNode): boolean; } declare class Tree { type: 'tree'; root: TreeNode; data: SeriesData; hostModel: HostModel; levelModels: Model[]; private _nodes; constructor(hostModel: HostModel); /** * Travel this subtree (include this node). * Usage: * node.eachNode(function () { ... }); // preorder * node.eachNode('preorder', function () { ... }); // preorder * node.eachNode('postorder', function () { ... }); // postorder * node.eachNode( * {order: 'postorder', attr: 'viewChildren'}, * function () { ... } * ); // postorder * * @param options If string, means order. * @param options.order 'preorder' or 'postorder' * @param options.attr 'children' or 'viewChildren' * @param cb * @param context */ eachNode(options: TreeTraverseOrder, cb: TreeTraverseCallback, context?: Ctx): void; eachNode(options: TreeTraverseOption, cb: TreeTraverseCallback, context?: Ctx): void; eachNode(cb: TreeTraverseCallback, context?: Ctx): void; getNodeByDataIndex(dataIndex: number): TreeNode; getNodeById(name: string): TreeNode; /** * Update item available by list, * when list has been performed options like 'filterSelf' or 'map'. */ update(): void; /** * Clear all layouts */ clearLayouts(): void; /** * data node format: * { * name: ... * value: ... * children: [ * { * name: ... * value: ... * children: ... * }, * ... * ] * } */ static createTree(dataRoot: T, hostModel: HostModel, beforeLink?: (data: SeriesData) => void): Tree; } declare type VisualOptionBase = { [key in BuiltinVisualProperty]?: any; }; declare type LabelFormatter = (min: OptionDataValue, max?: OptionDataValue) => string; interface VisualMapOption extends ComponentOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, BorderOptionMixin { mainType?: 'visualMap'; show?: boolean; align?: string; realtime?: boolean; /** * 'all' or null/undefined: all series. * A number or an array of number: the specified series. */ seriesIndex?: ModelFinderIndexQuery; seriesId?: ModelFinderIdQuery; /** * set min: 0, max: 200, only for campatible with ec2. * In fact min max should not have default value. * min value, must specified if pieces is not specified. */ min?: number; /** * max value, must specified if pieces is not specified. */ max?: number; /** * Dimension to be encoded */ dimension?: number; /** * Series targets with specific dimensions * When provided, seriesIndex, seriesId, and dimension are ignored */ seriesTargets?: { seriesIndex?: number; seriesId?: OptionId; dimension: number; }[]; /** * Visual configuration for the data in selection */ inRange?: T; /** * Visual configuration for the out of selection */ outOfRange?: T; controller?: { inRange?: T; outOfRange?: T; }; target?: { inRange?: T; outOfRange?: T; }; /** * Width of the display item */ itemWidth?: number; /** * Height of the display item */ itemHeight?: number; inverse?: boolean; orient?: 'horizontal' | 'vertical'; backgroundColor?: ZRColor; contentColor?: ZRColor; inactiveColor?: ZRColor; /** * Padding of the component. Can be an array similar to CSS */ padding?: number[] | number; /** * Gap between text and item */ textGap?: number; precision?: number; /** * @deprecated * Option from version 2 */ color?: ColorString[]; formatter?: string | LabelFormatter; /** * Text on the both end. Such as ['High', 'Low'] */ text?: string[]; textStyle?: LabelOption; categories?: unknown; } interface VisualMeta { stops: { value: number; color: ColorString; }[]; outerColors: ColorString[]; dimension?: DimensionIndex; } declare type ItrParamDims = DimensionLoose | Array; declare type CtxOrList = unknown extends Ctx ? SeriesData : Ctx; declare type EachCb0 = (this: CtxOrList, idx: number) => void; declare type EachCb1 = (this: CtxOrList, x: ParsedValue, idx: number) => void; declare type EachCb2 = (this: CtxOrList, x: ParsedValue, y: ParsedValue, idx: number) => void; declare type EachCb$1 = (this: CtxOrList, ...args: any) => void; declare type FilterCb0 = (this: CtxOrList, idx: number) => boolean; declare type FilterCb1 = (this: CtxOrList, x: ParsedValue, idx: number) => boolean; declare type FilterCb2 = (this: CtxOrList, x: ParsedValue, y: ParsedValue, idx: number) => boolean; declare type FilterCb$1 = (this: CtxOrList, ...args: any) => boolean; declare type MapArrayCb0 = (this: CtxOrList, idx: number) => any; declare type MapArrayCb1 = (this: CtxOrList, x: ParsedValue, idx: number) => any; declare type MapArrayCb2 = (this: CtxOrList, x: ParsedValue, y: ParsedValue, idx: number) => any; declare type MapArrayCb = (this: CtxOrList, ...args: any) => any; declare type MapCb1 = (this: CtxOrList, x: ParsedValue, idx: number) => ParsedValue | ParsedValue[]; declare type MapCb2 = (this: CtxOrList, x: ParsedValue, y: ParsedValue, idx: number) => ParsedValue | ParsedValue[]; declare type SeriesDimensionDefineLoose = string | object | SeriesDimensionDefine; declare type SeriesDimensionLoose = DimensionLoose; declare type SeriesDimensionName = DimensionName; interface DefaultDataVisual { style: PathStyleProps; drawType: 'fill' | 'stroke'; symbol?: string; symbolSize?: number | number[]; symbolRotate?: number; symbolKeepAspect?: boolean; symbolOffset?: string | number | (string | number)[]; z2: number; liftZ?: number; legendIcon?: string; legendLineStyle?: LineStyleProps; visualMeta?: VisualMeta[]; colorFromPalette?: boolean; decal?: DecalObject; } interface DataCalculationInfo { stackedDimension: DimensionName; stackedByDimension: DimensionName; isStackedByIndex: boolean; stackedOverDimension: DimensionName; stackResultDimension: DimensionName; stackedOnSeries?: SERIES_MODEL; } declare class SeriesData { readonly type = "list"; /** * Name of dimensions list of SeriesData. * * @caution Carefully use the index of this array. * Because when DataStore is an extra high dimension(>30) dataset. We will only pick * the used dimensions from DataStore to avoid performance issue. */ readonly dimensions: SeriesDimensionName[]; private _dimInfos; private _dimOmitted; private _schema?; /** * @pending * Actually we do not really need to convert dimensionIndex to dimensionName * and do not need `_dimIdxToName` if we do everything internally based on dimension * index rather than dimension name. */ private _dimIdxToName?; readonly hostModel: HostModel; /** * @readonly */ dataType: SeriesDataType; /** * @readonly * Host graph if List is used to store graph nodes / edges. */ graph?: Graph; /** * @readonly * Host tree if List is used to store tree nodes. */ tree?: Tree; private _store; private _nameList; private _idList; private _visual; private _layout; private _itemVisuals; private _itemLayouts; private _graphicEls; private _approximateExtent; private _dimSummary; private _invertedIndicesMap; private _calculationInfo; userOutput: DimensionSummary['userOutput']; hasItemOption: boolean; private _nameRepeatCount; private _nameDimIdx; private _idDimIdx; private __wrappedMethods; TRANSFERABLE_METHODS: readonly ["cloneShallow", "downSample", "minmaxDownSample", "lttbDownSample", "map"]; CHANGABLE_METHODS: readonly ["filterSelf", "selectRange"]; DOWNSAMPLE_METHODS: readonly ["downSample", "minmaxDownSample", "lttbDownSample"]; /** * @param dimensionsInput.dimensions * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...]. * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius */ constructor(dimensionsInput: SeriesDataSchema | SeriesDimensionDefineLoose[], hostModel: HostModel); /** * * Get concrete dimension name by dimension name or dimension index. * If input a dimension name, do not validate whether the dimension name exits. * * @caution * @param dim Must make sure the dimension is `SeriesDimensionLoose`. * Because only those dimensions will have auto-generated dimension names if not * have a user-specified name, and other dimensions will get a return of null/undefined. * * @notice Because of this reason, should better use `getDimensionIndex` instead, for examples: * ```js * const val = data.getStore().get(data.getDimensionIndex(dim), dataIdx); * ``` * * @return Concrete dim name. */ getDimension(dim: SeriesDimensionLoose): DimensionName; /** * Get dimension index in data store. Return -1 if not found. * Can be used to index value from getRawValue. */ getDimensionIndex(dim: DimensionLoose): DimensionIndex; /** * The meanings of the input parameter `dim`: * * + If dim is a number (e.g., `1`), it means the index of the dimension. * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'. * + If dim is a number-like string (e.g., `"1"`): * + If there is the same concrete dim name defined in `series.dimensions` or `dataset.dimensions`, * it means that concrete name. * + If not, it will be converted to a number, which means the index of the dimension. * (why? because of the backward compatibility. We have been tolerating number-like string in * dimension setting, although now it seems that it is not a good idea.) * For example, `visualMap[i].dimension: "1"` is the same meaning as `visualMap[i].dimension: 1`, * if no dimension name is defined as `"1"`. * + If dim is a not-number-like string, it means the concrete dim name. * For example, it can be be default name `"x"`, `"y"`, `"z"`, `"lng"`, `"lat"`, `"angle"`, `"radius"`, * or customized in `dimensions` property of option like `"age"`. * * @return recognized `DimensionIndex`. Otherwise return null/undefined (means that dim is `DimensionName`). */ private _recognizeDimIndex; private _getStoreDimIndex; /** * Get type and calculation info of particular dimension * @param dim * Dimension can be concrete names like x, y, z, lng, lat, angle, radius * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius' */ getDimensionInfo(dim: SeriesDimensionLoose): SeriesDimensionDefine; /** * If `dimName` if from outside of `SeriesData`, * use this method other than visit `this._dimInfos` directly. */ private _getDimInfo; private _initGetDimensionInfo; /** * concrete dimension name list on coord. */ getDimensionsOnCoord(): SeriesDimensionName[]; /** * @param coordDim * @param idx A coordDim may map to more than one data dim. * If not specified, return the first dim not extra. * @return concrete data dim. If not found, return null/undefined */ mapDimension(coordDim: SeriesDimensionName): SeriesDimensionName; mapDimension(coordDim: SeriesDimensionName, idx: number): SeriesDimensionName; mapDimensionsAll(coordDim: SeriesDimensionName): SeriesDimensionName[]; getStore(): DataStore; /** * Initialize from data * @param data source or data or data store. * @param nameList The name of a datum is used on data diff and * default label/tooltip. * A name can be specified in encode.itemName, * or dataItem.name (only for series option data), * or provided in nameList from outside. */ initData(data: Source | OptionSourceData | DataStore | DataProvider, nameList?: string[], dimValueGetter?: DimValueGetter): void; /** * Caution: Can be only called on raw data (before `this._indices` created). */ appendData(data: ArrayLike$1): void; /** * Caution: Can be only called on raw data (before `this._indices` created). * This method does not modify `rawData` (`dataProvider`), but only * add values to store. * * The final count will be increased by `Math.max(values.length, names.length)`. * * @param values That is the SourceType: 'arrayRows', like * [ * [12, 33, 44], * [NaN, 43, 1], * ['-', 'asdf', 0] * ] * Each item is exactly corresponding to a dimension. */ appendValues(values: any[][], names?: string[]): void; private _updateOrdinalMeta; private _shouldMakeIdFromName; private _doInit; /** * Optimize for the scenario that data is filtered by a given extent. * Consider that if data amount is more than hundreds of thousand, * extent calculation will cost more than 10ms and the cache will * be erased because of the filtering. */ getApproximateExtent(dim: SeriesDimensionLoose, filter: DataSanitizationFilter | NullUndefined): [number, number]; /** * NOTICE: `_approximateExtent` does not support filter. Callers must ensure the input extent * to be handled by `scale.sanitizeExtent`. * * Calculate extent on a filtered data might be time consuming. * Approximate extent is only used for: calculate extent of filtered data outside. */ setApproximateExtent(extent: [number, number], dim: SeriesDimensionLoose): void; getCalculationInfo>(key: CALC_INFO_KEY): DataCalculationInfo[CALC_INFO_KEY]; /** * @param key or k-v object */ setCalculationInfo(key: DataCalculationInfo): void; setCalculationInfo>(key: CALC_INFO_KEY, value: DataCalculationInfo[CALC_INFO_KEY]): void; /** * @return Never be null/undefined. `number` will be converted to string. Because: * In most cases, name is used in display, where returning a string is more convenient. * In other cases, name is used in query (see `indexOfName`), where we can keep the * rule that name `2` equals to name `'2'`. */ getName(idx: number): string; private _getCategory; /** * @return Never null/undefined. `number` will be converted to string. Because: * In all cases having encountered at present, id is used in making diff comparison, which * are usually based on hash map. We can keep the rule that the internal id are always string * (treat `2` is the same as `'2'`) to make the related logic simple. */ getId(idx: number): string; count(): number; /** * Get value. Return NaN if idx is out of range. * * @notice Should better to use `data.getStore().get(dimIndex, dataIdx)` instead. */ get(dim: SeriesDimensionName, idx: number): ParsedValue; /** * @notice Should better to use `data.getStore().getByRawIndex(dimIndex, dataIdx)` instead. */ getByRawIndex(dim: SeriesDimensionName, rawIdx: number): ParsedValue; getIndices(): globalThis.ArrayLike; getDataExtent(dim: DimensionLoose): [number, number]; getSum(dim: DimensionLoose): number; getMedian(dim: DimensionLoose): number; /** * Get value for multi dimensions. * @param dimensions If ignored, using all dimensions. */ getValues(idx: number): ParsedValue[]; getValues(dimensions: readonly DimensionName[], idx: number): ParsedValue[]; /** * If value is NaN. Including '-' * Only check the coord dimensions. */ hasValue(idx: number): boolean; /** * Retrieve the index with given name */ indexOfName(name: string): number; getRawIndex(idx: number): number; indexOfRawIndex(rawIndex: number): number; /** * Only support the dimension which inverted index created. * Do not support other cases until required. * @param dim concrete dim * @param value ordinal index * @return rawIndex */ rawIndexOf(dim: SeriesDimensionName, value: OrdinalNumber): number; /** * Data iteration * @param ctx default this * @example * list.each('x', function (x, idx) {}); * list.each(['x', 'y'], function (x, y, idx) {}); * list.each(0, function (x, idx) {}); * list.each([0, 1], function (x, y, idx) {}); * list.each(function (idx) {}) */ each(cb: EachCb0, ctx?: Ctx, ctxCompat?: Ctx): void; each(dims: DimensionLoose, cb: EachCb1, ctx?: Ctx): void; each(dims: [DimensionLoose], cb: EachCb1, ctx?: Ctx): void; each(dims: [DimensionLoose, DimensionLoose], cb: EachCb2, ctx?: Ctx): void; each(dims: ItrParamDims, cb: EachCb$1, ctx?: Ctx): void; /** * Data filter */ filterSelf(cb: FilterCb0, ctx?: Ctx, ctxCompat?: Ctx): this; filterSelf(dims: DimensionLoose, cb: FilterCb1, ctx?: Ctx): this; filterSelf(dims: [DimensionLoose], cb: FilterCb1, ctx?: Ctx): this; filterSelf(dims: [DimensionLoose, DimensionLoose], cb: FilterCb2, ctx?: Ctx): this; filterSelf(dims: ItrParamDims, cb: FilterCb$1, ctx?: Ctx): this; /** * Select data in range. (For optimization of filter) * (Manually inline code, support 5 million data filtering in data zoom.) */ selectRange(range: Record): SeriesData; /** * Data mapping to a plain array */ mapArray>(cb: Cb, ctx?: Ctx, ctxCompat?: Ctx): ReturnType[]; mapArray>(dims: DimensionLoose, cb: Cb, ctx?: Ctx, ctxCompat?: Ctx): ReturnType[]; mapArray>(dims: [DimensionLoose], cb: Cb, ctx?: Ctx, ctxCompat?: Ctx): ReturnType[]; mapArray>(dims: [DimensionLoose, DimensionLoose], cb: Cb, ctx?: Ctx, ctxCompat?: Ctx): ReturnType[]; mapArray>(dims: ItrParamDims, cb: Cb, ctx?: Ctx, ctxCompat?: Ctx): ReturnType[]; /** * Data mapping to a new List with given dimensions */ map(dims: DimensionLoose, cb: MapCb1, ctx?: Ctx, ctxCompat?: Ctx): SeriesData; map(dims: [DimensionLoose], cb: MapCb1, ctx?: Ctx, ctxCompat?: Ctx): SeriesData; map(dims: [DimensionLoose, DimensionLoose], cb: MapCb2, ctx?: Ctx, ctxCompat?: Ctx): SeriesData; /** * !!Danger: used on stack dimension only. */ modify(dims: DimensionLoose, cb: MapCb1, ctx?: Ctx, ctxCompat?: Ctx): void; modify(dims: [DimensionLoose], cb: MapCb1, ctx?: Ctx, ctxCompat?: Ctx): void; modify(dims: [DimensionLoose, DimensionLoose], cb: MapCb2, ctx?: Ctx, ctxCompat?: Ctx): void; /** * Large data down sampling on given dimension * @param sampleIndex Sample index for name and id */ downSample(dimension: DimensionLoose, rate: number, sampleValue: (frameValues: ArrayLike$1) => ParsedValueNumeric, sampleIndex: (frameValues: ArrayLike$1, value: ParsedValueNumeric) => number): SeriesData; /** * Large data down sampling using min-max * @param {string} valueDimension * @param {number} rate */ minmaxDownSample(valueDimension: DimensionLoose, rate: number): SeriesData; /** * Large data down sampling using largest-triangle-three-buckets * @param {string} valueDimension * @param {number} targetCount */ lttbDownSample(valueDimension: DimensionLoose, rate: number): SeriesData; getRawDataItem(idx: number): OptionDataItem; /** * Get model of one data item. */ getItemModel(idx: number): Model; /** * Create a data differ */ diff(otherList: SeriesData): DataDiffer; /** * Get visual property. */ getVisual(key: K): Visual[K]; /** * Set visual property * * @example * setVisual('color', color); * setVisual({ * 'color': color * }); */ setVisual(key: K, val: Visual[K]): void; setVisual(kvObj: Partial): void; /** * Get visual property of single data item */ getItemVisual(idx: number, key: K): Visual[K]; /** * If exists visual property of single data item */ hasItemVisual(): boolean; /** * Make sure itemVisual property is unique */ ensureUniqueItemVisual(idx: number, key: K): Visual[K]; /** * Set visual property of single data item * * @param {number} idx * @param {string|Object} key * @param {*} [value] * * @example * setItemVisual(0, 'color', color); * setItemVisual(0, { * 'color': color * }); */ setItemVisual(idx: number, key: K, value: Visual[K]): void; setItemVisual(idx: number, kvObject: Partial): void; /** * Clear itemVisuals and list visual. */ clearAllVisual(): void; /** * Set layout property. */ setLayout(key: string, val: any): void; setLayout(kvObj: Dictionary): void; /** * Get layout property. */ getLayout(key: string): any; /** * Get layout of single data item */ getItemLayout(idx: number): any; /** * Set layout of single data item */ setItemLayout(idx: number, layout: (M extends true ? Dictionary : any), merge?: M): void; /** * Clear all layout of single data item */ clearItemLayouts(): void; /** * Set graphic element relative to data. It can be set as null */ setItemGraphicEl(idx: number, el: Element): void; getItemGraphicEl(idx: number): Element; eachItemGraphicEl(cb: (this: Ctx, el: Element, idx: number) => void, context?: Ctx): void; /** * Shallow clone a new list except visual and layout properties, and graph elements. * New list only change the indices. */ cloneShallow(list?: SeriesData): SeriesData; /** * Wrap some method to add more feature */ wrapMethod(methodName: FunctionPropertyNames, injectFunction: (...args: any) => any): void; private static internalField; } interface SeriesData { getLinkedData(dataType?: SeriesDataType): SeriesData; getLinkedDataAll(): { data: SeriesData; type?: SeriesDataType; }[]; } /** * If string, e.g., 'geo', means {geoIndex: 0}. * If Object, could contain some of these properties below: * { * seriesIndex, seriesId, seriesName, * geoIndex, geoId, geoName, * bmapIndex, bmapId, bmapName, * xAxisIndex, xAxisId, xAxisName, * yAxisIndex, yAxisId, yAxisName, * gridIndex, gridId, gridName, * ... (can be extended) * } * Each properties can be number|string|Array.|Array. * For example, a finder could be * { * seriesIndex: 3, * geoId: ['aa', 'cc'], * gridName: ['xx', 'rr'] * } * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify) * If nothing or null/undefined specified, return nothing. * If both `abcIndex`, `abcId`, `abcName` specified, only one work. * The priority is: index > id > name, the same with `ecModel.queryComponents`. */ declare type ModelFinderIndexQuery = number | number[] | 'all' | 'none' | false | NullUndefined$1; declare type ModelFinderIdQuery = OptionId | OptionId[] | NullUndefined$1; declare type ModelFinderNameQuery = OptionId | OptionId[] | NullUndefined$1; declare type ModelFinder = string | ModelFinderObject; declare type ModelFinderObject = { seriesIndex?: ModelFinderIndexQuery; seriesId?: ModelFinderIdQuery; seriesName?: ModelFinderNameQuery; geoIndex?: ModelFinderIndexQuery; geoId?: ModelFinderIdQuery; geoName?: ModelFinderNameQuery; bmapIndex?: ModelFinderIndexQuery; bmapId?: ModelFinderIdQuery; bmapName?: ModelFinderNameQuery; xAxisIndex?: ModelFinderIndexQuery; xAxisId?: ModelFinderIdQuery; xAxisName?: ModelFinderNameQuery; yAxisIndex?: ModelFinderIndexQuery; yAxisId?: ModelFinderIdQuery; yAxisName?: ModelFinderNameQuery; gridIndex?: ModelFinderIndexQuery; gridId?: ModelFinderIdQuery; gridName?: ModelFinderNameQuery; matrixIndex?: ModelFinderIndexQuery; matrixId?: ModelFinderIdQuery; matrixName?: ModelFinderNameQuery; dataIndex?: number; dataIndexInside?: number; }; /** * { * seriesModels: [seriesModel1, seriesModel2], * seriesModel: seriesModel1, // The first model * geoModels: [geoModel1, geoModel2], * geoModel: geoModel1, // The first model * ... * } */ declare type ParsedModelFinder = { [key: string]: ComponentModel | ComponentModel[] | undefined; }; declare type QueryReferringOpt = { useDefault?: boolean; enableAll?: boolean; enableNone?: boolean; }; /** * Use an iterator to avoid exposing the internal list or duplicating it * for the outside traveller, and no extra heap allocation. * @usage * for (const it = resetIterator(); it.next();) { * const item = it.item; * const key = it.key; * const itIdx = it.itIdx; * // ... * } * @usage * const it = resetIterator(); * while (it.next()) { ... } * @usage * for (resetIterator(it); it.next();) { ... } */ declare class ListIterator { private _idx; private _end; private _list; private _step; item: TItem | NullUndefined$1; key: number; /** * The loop condition is `idx < end` if `step > 0`; * The loop condition is `idx >= end` if `step < 0`. * * @param end By default `list.length` if `step > 0`; `0` if `step < 0`. * @param step By default `1`. */ reset(list: TItem[], start: number, end?: number, step?: number): ListIterator; next(): boolean; } declare class ComponentModel extends Model { /** * @readonly */ type: ComponentFullType; /** * @readonly */ id: string; /** * Because simplified concept is probably better, series.name (or component.name) * has been having too many responsibilities: * (1) Generating id (which requires name in option should not be modified). * (2) As an index to mapping series when merging option or calling API (a name * can refer to more than one component, which is convenient is some cases). * (3) Display. * @readOnly But injected */ name: string; /** * @readOnly */ mainType: ComponentMainType; /** * @readOnly */ subType: ComponentSubType; /** * @readOnly */ componentIndex: number; /** * @readOnly */ protected defaultOption: ComponentOption; /** * @readOnly */ ecModel: GlobalModel; /** * @readOnly */ static dependencies: string[]; readonly uid: string; boxCoordinateSystem?: CoordinateSystem | NullUndefined$1; /** * Support merge layout params. * Only support 'box' now (left/right/top/bottom/width/height). */ static layoutMode: ComponentLayoutMode | ComponentLayoutMode['type']; /** * Prevent from auto set z, zlevel, z2 by the framework. */ preventAutoZ: boolean; __viewId: string; __requireNewView: boolean; static protoInitialize: void; constructor(option: Opt, parentModel: Model, ecModel: GlobalModel); init(option: Opt, parentModel: Model, ecModel: GlobalModel): void; mergeDefaultAndTheme(option: Opt, ecModel: GlobalModel): void; mergeOption(option: Opt, ecModel: GlobalModel): void; /** * Called immediately after `init` or `mergeOption` of this instance called. */ optionUpdated(newCptOption: Opt, isInit: boolean): void; /** * [How to declare defaultOption]: * * (A) If using class declaration in typescript (since echarts 5): * ```ts * import {ComponentOption} from '../model/option.js'; * export interface XxxOption extends ComponentOption { * aaa: number * } * export class XxxModel extends Component { * static type = 'xxx'; * static defaultOption: XxxOption = { * aaa: 123 * } * } * Component.registerClass(XxxModel); * ``` * ```ts * import {inheritDefaultOption} from '../util/component.js'; * import {XxxModel, XxxOption} from './XxxModel.js'; * export interface XxxSubOption extends XxxOption { * bbb: number * } * class XxxSubModel extends XxxModel { * static defaultOption: XxxSubOption = inheritDefaultOption(XxxModel.defaultOption, { * bbb: 456 * }) * fn() { * let opt = this.getDefaultOption(); * // opt is {aaa: 123, bbb: 456} * } * } * ``` * * (B) If using class extend (previous approach in echarts 3 & 4): * ```js * let XxxComponent = Component.extend({ * defaultOption: { * xx: 123 * } * }) * ``` * ```js * let XxxSubComponent = XxxComponent.extend({ * defaultOption: { * yy: 456 * }, * fn: function () { * let opt = this.getDefaultOption(); * // opt is {xx: 123, yy: 456} * } * }) * ``` */ getDefaultOption(): Opt; /** * Notice: always force to input param `useDefault` in case that forget to consider it. * The same behavior as `modelUtil.parseFinder`. * * @param useDefault In many cases like series refer axis and axis refer grid, * If axis index / axis id not specified, use the first target as default. * In other cases like dataZoom refer axis, if not specified, measn no refer. */ getReferringComponents(mainType: ComponentMainType, opt: QueryReferringOpt): { models: ComponentModel[]; specified: boolean; }; getBoxLayoutParams(): { left: PositionSizeOption; top: PositionSizeOption; right: PositionSizeOption; bottom: PositionSizeOption; width: PositionSizeOption; height: PositionSizeOption; }; /** * If developers don't configure zlevel. We will assign zlevel to series based on the key, if provided. * For example, lines with trail effect is expected to be in an individual zlevel. * * @tutorial [GET_ZLEVEL_KEY_FOR_PROGRESSIVE] * Regarding "progressive rendering", zrender can automatically assign a dedicated "incremental layer" * for `el.incremental` per zlevel. But there is a trade-off: * - If we do not provide different zlevelKey for different series here, all incremental elements from * different series will be assigned to one incremental layer, which causes them to cover each other * in an order depending on progressive steps. * i.e., seriesA_el1 -covered_by-> seriesB_el1 -covered_by-> seriesC_el1 -> seriesA_el2 -> seriesB_el2 ... * This order may causes an unexpected visual result: series with small data are likely to be completely * covered by series with large data. (like in test/scatter-weibo.html) * - If we assign a different zlevelKey to each series, the "covering issue" above can be resolved, * but having one HTML Canvas per series may be excessively memory-consuming. * Therefore, we only automatically assign zlevelKey on `ScatterSeries` and `LinesSeries` for backward * compatibility, and not to other series. Users can explicitly assign zlevel if they encouter above * "covering issue". */ getZLevelKey(): string; setZLevel(zlevel: number): void; static registerClass: ClassManager['registerClass']; static hasClass: ClassManager['hasClass']; static registerSubTypeDefaulter: SubTypeDefaulterManager['registerSubTypeDefaulter']; } declare type AnimateOrSetPropsOption = { dataIndex?: number; cb?: () => void; during?: (percent: number) => void; removeOpt?: AnimationOption$1; isFrom?: boolean; }; /** * Update graphic element properties with or without animation according to the * configuration in series. * * Caution: this method will stop previous animation. * So do not use this method to one element twice before * animation starts, unless you know what you are doing. * @example * graphic.updateProps(el, { * position: [100, 100] * }, seriesModel, dataIndex, function () { console.log('Animation done!'); }); * // Or * graphic.updateProps(el, { * position: [100, 100] * }, seriesModel, function () { console.log('Animation done!'); }); */ declare function updateProps(el: Element, props: Props, animatableModel?: Model, dataIndex?: AnimateOrSetPropsOption['dataIndex'] | AnimateOrSetPropsOption['cb'] | AnimateOrSetPropsOption, cb?: AnimateOrSetPropsOption['cb'] | AnimateOrSetPropsOption['during'], during?: AnimateOrSetPropsOption['during']): void; /** * Init graphic element properties with or without animation according to the * configuration in series. * * Caution: this method will stop previous animation. * So do not use this method to one element twice before * animation starts, unless you know what you are doing. */ declare function initProps(el: Element, props: Props, animatableModel?: Model, dataIndex?: AnimateOrSetPropsOption['dataIndex'] | AnimateOrSetPropsOption['cb'] | AnimateOrSetPropsOption, cb?: AnimateOrSetPropsOption['cb'] | AnimateOrSetPropsOption['during'], during?: AnimateOrSetPropsOption['during']): void; declare type ExtendShapeOpt = Parameters[0]; declare type ExtendShapeReturn = ReturnType; /** * Extend shape with parameters */ declare function extendShape(opts: ExtendShapeOpt): ExtendShapeReturn; declare const extendPathFromString: typeof extendFromString; declare type SVGPathOption$1 = Parameters[1]; declare type SVGPathCtor = ReturnType; declare type SVGPath$1 = InstanceType; /** * Extend path */ declare function extendPath(pathData: string, opts: SVGPathOption$1): SVGPathCtor; /** * Register a user defined shape. * The shape class can be fetched by `getShapeClass` * This method will overwrite the registered shapes, including * the registered built-in shapes, if using the same `name`. * The shape can be used in `custom series` and * `graphic component` by declaring `{type: name}`. * * @param name * @param ShapeClass Can be generated by `extendShape`. */ declare function registerShape(name: string, ShapeClass: { new (): Path; }): void; /** * Find shape class registered by `registerShape`. Usually used in * fetching user defined shape. * * [Caution]: * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared * to use user registered shapes. * Because the built-in shape (see `getBuiltInShape`) will be registered by * `registerShape` by default. That enables users to get both built-in * shapes as well as the shapes belonging to themsleves. But users can overwrite * the built-in shapes by using names like 'circle', 'rect' via calling * `registerShape`. So the echarts inner featrues should not fetch shapes from here * in case that it is overwritten by users, except that some features, like * `custom series`, `graphic component`, do it deliberately. * * (2) In the features like `custom series`, `graphic component`, the user input * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names * are reserved names, that is, if some user registers a shape named `'image'`, * the shape will not be used. If we intending to add some more reserved names * in feature, that might bring break changes (disable some existing user shape * names). But that case probably rarely happens. So we don't make more mechanism * to resolve this issue here. * * @param name * @return The shape class. If not found, return nothing. */ declare function getShapeClass(name: string): { new (): Path; }; /** * Create a path element from path data string * @param pathData * @param opts * @param rect * @param layout 'center' or 'cover' default to be cover */ declare function makePath(pathData: string, opts: SVGPathOption$1, rect: ZRRectLike, layout?: 'center' | 'cover'): SVGPath$1; /** * Create a image element from image url * @param imageUrl image url * @param opts options * @param rect constrain rect * @param layout 'center' or 'cover'. Default to be 'cover' */ declare function makeImage(imageUrl: string, rect: ZRRectLike, layout?: 'center' | 'cover'): ZRImage; declare const mergePath$1: typeof mergePath; /** * Resize a path to fit the rect * @param path * @param rect */ declare function resizePath(path: SVGPath$1, rect: ZRRectLike): void; /** * Get transform matrix of target (param target), * in coordinate of its ancestor (param ancestor) * * @param target * @param [ancestor] */ declare function getTransform(target: Transformable, ancestor?: Transformable): MatrixArray; declare function clipPointsByRect(points: VectorArray[], rect: ZRRectLike): number[][]; /** * Return a new clipped rect. If rect size are negative, return undefined. */ declare function clipRectByRect(targetRect: ZRRectLike, rect: ZRRectLike): ZRRectLike | undefined; declare function createIcon(iconStr: string, // Support 'image://' or 'path://' or direct svg path. opt?: Omit, rect?: ZRRectLike): SVGPath$1 | ZRImage; declare type TextStyleProps$1 = ZRText['style']; declare function getTextRect(text: TextStyleProps$1['text'], font?: TextStyleProps$1['font'], align?: TextStyleProps$1['align'], verticalAlign?: TextStyleProps$1['verticalAlign'], padding?: TextStyleProps$1['padding'], rich?: TextStyleProps$1['rich'], truncate?: boolean, lineHeight?: number): BoundingRect; /** * Add a comma each three digit. */ declare function addCommas(x: string | number): string; declare function toCamelCase(str: string, upperCaseFirst?: boolean): string; declare const normalizeCssArray$1: typeof normalizeCssArray; interface TplFormatterParam extends Dictionary { $vars: string[]; } /** * Template formatter * @param {Array.|Object} paramsList */ declare function formatTpl(tpl: string, paramsList: TplFormatterParam | TplFormatterParam[], encode?: boolean): string; interface RichTextTooltipMarker { renderMode: TooltipRenderMode; content: string; style: Dictionary; } declare type TooltipMarker = string | RichTextTooltipMarker; declare type TooltipMarkerType = 'item' | 'subItem'; interface GetTooltipMarkerOpt { color?: ColorString; extraCssText?: string; type?: TooltipMarkerType; renderMode?: TooltipRenderMode; markerId?: string; } declare function getTooltipMarker(color: ColorString, extraCssText?: string): TooltipMarker; declare function getTooltipMarker(opt: GetTooltipMarkerOpt): TooltipMarker; /** * @deprecated Use `time/format` instead. * ISO Date format * @param {string} tpl * @param {number} value * @param {boolean} [isUTC=false] Default in local time. * see `module:echarts/scale/Time` * and `module:echarts/util/number#parseDate`. * @inner */ declare function formatTime(tpl: string, value: unknown, isUTC?: boolean): string; /** * Capital first * @param {string} str * @return {string} */ declare function capitalFirst(str: string): string; interface MapperParamAxisInfo { axisIndex: number; axisName: string; axisId: string; axisDim: string; } interface AxisPointerLink { xAxisIndex?: number[] | 'all'; yAxisIndex?: number[] | 'all'; xAxisId?: string[]; yAxisId?: string[]; xAxisName?: string[] | string; yAxisName?: string[] | string; radiusAxisIndex?: number[] | 'all'; angleAxisIndex?: number[] | 'all'; radiusAxisId?: string[]; angleAxisId?: string[]; radiusAxisName?: string[] | string; angleAxisName?: string[] | string; singleAxisIndex?: number[] | 'all'; singleAxisId?: string[]; singleAxisName?: string[] | string; mapper?(sourceVal: ScaleDataValue, sourceAxisInfo: MapperParamAxisInfo, targetAxisInfo: MapperParamAxisInfo): CommonAxisPointerOption['value']; } interface AxisPointerOption extends ComponentOption, Omit { mainType?: 'axisPointer'; type?: 'line' | 'shadow' | 'cross' | 'none'; link?: AxisPointerLink[]; } declare type TopLevelFormatterParams = CallbackDataParams | CallbackDataParams[]; interface TooltipOption extends CommonTooltipOption, ComponentOption { mainType?: 'tooltip'; axisPointer?: AxisPointerOption & { axis?: 'auto' | 'x' | 'y' | 'angle' | 'radius'; crossStyle?: LineStyleOption & { textStyle?: LabelOption; }; }; /** * If show popup content */ showContent?: boolean; /** * Trigger only works on coordinate system. */ trigger?: 'item' | 'axis' | 'none'; /** * 'auto': use html by default, and use non-html if `document` is not defined * 'html': use html for tooltip * 'richText': use canvas, svg, and etc. for tooltip */ renderMode?: 'auto' | TooltipRenderMode; /** * @deprecated * use appendTo: 'body' instead */ appendToBody?: boolean; /** * If append the tooltip element to another DOM element. * Only available when renderMode is html */ appendTo?: ((chartContainer: HTMLElement) => HTMLElement | undefined | null) | string | HTMLElement; /** * Specify the class name of tooltip element * Only available when renderMode is html */ className?: string; /** * Default border color to use when there are multiple series */ defaultBorderColor?: string; order?: TooltipOrderMode; } /** * This is an abstract layer to insulate the upper usage of tooltip content * from the different backends according to different `renderMode` ('html' or 'richText'). * With the help of the abstract layer, it does not need to consider how to create and * assemble html or richText snippets when making tooltip content. * * @usage * * ```ts * class XxxSeriesModel { * formatTooltip( * dataIndex: number, * multipleSeries: boolean, * dataType: string * ) { * ... * return createTooltipMarkup('section', { * header: header, * blocks: [ * createTooltipMarkup('nameValue', { * name: name, * value: value, * noValue: value == null * }) * ] * }); * } * } * ``` */ declare type TooltipMarkupBlockFragment = TooltipMarkupSection | TooltipMarkupNameValueBlock; interface TooltipMarkupBlock { sortParam?: unknown; } interface TooltipMarkupSection extends TooltipMarkupBlock { type: 'section'; header?: unknown; noHeader?: boolean; blocks?: TooltipMarkupBlockFragment[]; sortBlocks?: boolean; valueFormatter?: CommonTooltipOption['valueFormatter']; } interface TooltipMarkupNameValueBlock extends TooltipMarkupBlock { type: 'nameValue'; markerType?: TooltipMarkerType; markerColor?: ColorString; name?: string; value?: unknown | unknown[]; valueType?: DimensionType | DimensionType[]; noName?: boolean; noValue?: boolean; rawDataIndex?: number; valueFormatter?: CommonTooltipOption['valueFormatter']; } interface DataFormatMixin extends DataHost { ecModel: GlobalModel; mainType: ComponentMainType; subType: ComponentSubType; componentIndex: number; id: string; name: string; animatedValue: OptionDataValue[]; } declare class DataFormatMixin { /** * Get params for formatter */ getDataParams(dataIndex: number, dataType?: SeriesDataType): CallbackDataParams; /** * Format label * @param dataIndex * @param status 'normal' by default * @param dataType * @param labelDimIndex Only used in some chart that * use formatter in different dimensions, like radar. * @param formatter Formatter given outside. * @return return null/undefined if no formatter */ getFormattedLabel(dataIndex: number, status?: DisplayState, dataType?: SeriesDataType, labelDimIndex?: number, formatter?: string | ((params: object) => string), extendParams?: { interpolatedValue: InterpolatableValue; }): string; /** * Get raw value in option */ getRawValue(idx: number, dataType?: SeriesDataType): unknown; /** * Should be implemented. * @param {number} dataIndex * @param {boolean} [multipleSeries=false] * @param {string} [dataType] */ formatTooltip(dataIndex: number, multipleSeries?: boolean, dataType?: string): TooltipFormatResult; } declare type TooltipFormatResult = string | TooltipMarkupBlockFragment; /** * [Notice]: * Consider custom bundle on demand, chart specified * or component specified types and constants should * not put here. Only common types and constants can * be put in this file. */ declare type RendererType = 'canvas' | 'svg'; /** * NOTICE: For historical reason, echarts and zrender have not enabled TS config * `strictNullChecks` yet. Therefore, a explicitly declared `NullUndefined` can * indicate a variable can be `null` or `undefined` without more investigation, * but a variable without `NullUndefined` may also be `null` or `undefined`, * which has to be determined by the implementation. */ declare type NullUndefined$1 = null | undefined; declare type LayoutOrient = 'vertical' | 'horizontal'; declare type HorizontalAlign = 'left' | 'center' | 'right'; declare type VerticalAlign = 'top' | 'middle' | 'bottom'; declare type ColorString = string; declare type ZRColor = ColorString | LinearGradientObject | RadialGradientObject | PatternObject; declare type ZRLineType = 'solid' | 'dotted' | 'dashed' | number | number[]; declare type ZRFontStyle = 'normal' | 'italic' | 'oblique'; declare type ZRFontWeight = 'normal' | 'bold' | 'bolder' | 'lighter' | number; declare type ZREasing = AnimationEasing; declare type ZRTextAlign = TextAlign; declare type ZRTextVerticalAlign = TextVerticalAlign; declare type ZRRectLike = RectLike; declare type ZRStyleProps = PathStyleProps | ImageStyleProps | TSpanStyleProps | TextStyleProps; declare type ZRElementEventName = ElementEventName | 'globalout'; declare type ComponentFullType = string; declare type ComponentMainType = keyof ECUnitOption & string; declare type ComponentSubType = Exclude; interface DataHost { getData(dataType?: SeriesDataType): SeriesData; } interface DataModel extends Model, DataHost, DataFormatMixin { getDataParams(dataIndex: number, dataType?: SeriesDataType, el?: Element): CallbackDataParams; } interface PayloadItem { excludeSeriesId?: OptionId | OptionId[]; animation?: PayloadAnimationPart; [other: string]: any; } interface Payload extends PayloadItem { type: string; escapeConnect?: boolean; batch?: PayloadItem[]; } interface HighlightPayload extends Payload { type: 'highlight'; notBlur?: boolean; } interface DownplayPayload extends Payload { type: 'downplay'; notBlur?: boolean; } interface PayloadAnimationPart { duration?: number; easing?: AnimationEasing; delay?: number; } interface SelectChangedEvent extends ECActionRefinedEvent { type: 'selectchanged'; isFromClick: boolean; fromAction: 'select' | 'unselect' | 'toggleSelected'; fromActionPayload: Payload; selected: { seriesIndex: number; dataType?: SeriesDataType; dataIndex: number[]; }[]; } /** * @deprecated Backward compat. */ interface SelectChangedPayload extends Payload { type: 'selectchanged'; isFromClick: boolean; fromAction: 'select' | 'unselect' | 'toggleSelected'; fromActionPayload: Payload; selected: { seriesIndex: number; dataType?: SeriesDataType; dataIndex: number[]; }[]; } interface ViewRootGroup extends Group { __ecComponentInfo?: { mainType: string; index: number; }; } interface ECElementEvent extends ECEventData, CallbackDataParams { type: ZRElementEventName; event?: ElementEvent; } /** * The echarts event type to user. * Also known as packedEvent. */ interface ECActionEvent extends ECEventData { type: string; componentType?: string; componentIndex?: number; seriesIndex?: number; escapeConnect?: boolean; batch?: ECEventData[]; } /** * TODO: not applicable in `ECEventProcessor` yet. */ interface ECActionRefinedEvent extends ECActionEvent { type: string; fromAction: string; fromActionPayload: Payload; } declare type ECActionRefinedEventContent = Omit; interface ECEventData { [key: string]: any; } interface EventQueryItem { [key: string]: any; } /** * The rule of creating "public event" and "event for connect": * - If `refineEvent` provided, * `refineEvent` creates the "public event", * and "event for connect" is created internally by replicating the payload. * This is because `makeActionFromEvent` requires the content of event to be * the same as the original payload, while `refineEvent` creates a user-friend * event that differs from the original payload. * - Else if `ActionHandler` returns an object, * it is both the "public event" and the "event for connect". * (@deprecated, but keep this mechanism for backward compatibility). * - Else, * replicate the payload as both the "public event" and "event for connect". */ interface ActionInfo { type: string; event?: string; update?: string; action?: ActionHandler; refineEvent?: ActionRefineEvent; publishNonRefinedEvent?: boolean; componentQuery?: boolean; } interface ActionHandler { (payload: Payload, ecModel: GlobalModel, api: ExtensionAPI): void | ECEventData; } interface ActionRefineEvent { (actionResultBatch: ECEventData[], payload: Payload, ecModel: GlobalModel, api: ExtensionAPI): { eventContent: ECActionRefinedEventContent; }; } interface OptionPreprocessor { (option: ECUnitOption, isTheme: boolean): void; } interface PostUpdater { (ecModel: GlobalModel, api: ExtensionAPI): void; } interface StageHandlerReset { (seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload?: Payload): StageHandlerProgressExecutor | StageHandlerProgressExecutor[] | void; } interface StageHandlerOverallReset { (ecModel: GlobalModel, api: ExtensionAPI, payload?: Payload): void; } interface StageHandler { /** * Indicate that the "series stage task" will be piped for all series * (filtered series is included iff `performRawSeries: true`). * * OVERALL_STAGE_TASK (See `overallReset`) can not set `createOnAllSeries: true`. */ createOnAllSeries?: boolean; /** * Indicate that the task will only be piped in the pipeline of this type of series. * (filtered series is included iff `performRawSeries: true`). * It is available for both `reset` and `overallReset`. */ seriesType?: string; /** * Indicate that the task will only be piped in the pipeline of the returned series. * It is called in EC_PREPARE, before `CoordinateSystem['create']`. * It is available for both `reset` and `overallReset`. */ getTargetSeries?: (ecModel: GlobalModel, api: ExtensionAPI) => HashMap; /** * If `true`, filtered series will also be "performed". */ performRawSeries?: boolean; /** * Called only when this task in a pipeline. */ plan?: StageHandlerPlan; /** * If `overallReset` is specified, an OVERALL_STAGE_TASK will be created. * * @tutorial [OVERALL_STAGE_TASK] * An OVERALL_STAGE_TASK resides across multiple pipelines, and is associated with * pipelines by "stub"s, which deliver messages like "dirty" and "output end". * OVERALL_STAGE_TASK does not support `progess` method. * * The `overallReset` method is called iff this task is "dirty" (See `Task['dirty']`). * See EC_TASK_DIRTY for a summary of possible `dirty()` calls. * * @see dirtyOnOverallProgress If a OVERALL_STAGE_TASK need to handle series data. */ overallReset?: StageHandlerOverallReset; /** * If `reset` is specified, a SERIES_STAGE_TASK will be created. * * @tutorial [SERIES_STAGE_TASK] * A SERIES_STAGE_TASK is owned by a pipeline and is specific to a single series. * * The `reset` method is called iff this task is "dirty" (See `Task['dirty']`). * See EC_TASK_DIRTY for a summary of possible `dirty()` calls. * * NOTICE: `dirtyOnOverallProgress: true` cause that the corresponding `overallReset` * and `reset` of downsteams tasks may also be called in EC_PROGRESSIVE_CYCLE. * But in this case, `CoordinateSystem#create` and `CoordinateSystem#update` are not called. * Only lifecycle like `coordsys:aftercreate` can be ensured to be only called in EC_FULL_UPDATE * of EC_FULL_UPDATE_CYCLE and EC_PARTIAL_UPDATE_CYCLE, but not in EC_PROGRESSIVE_CYCLE and * EC_APPEND_DATA_CYCLE. */ reset?: StageHandlerReset; /** * This is a temporary mechanism primarily for a dataZoom case in `appendData`. * * Ordinarily, `overallReset` is NOT called in progress in the subsequent frames, which is suitable * for most OVERALL_STAGE_TASK, where no series data related operations is performed (e.g., color * palette task). * But some certain OVERALL_STAGE_TASK need to handle series data, where `dirtyOnOverallProgress: true` * is required. It allows all pipelines to be blocked until this stage, thereby no `overallReset` call * being omitted. (See PerformStageTaskOpt['block'] for its meaning.) (e.g., dataZoom task) * * NOTE_IMPL: It will set this OVERALL_STAGE_TASK dirty when the pipeline progress. * Moreover, to avoid calling the OVERALL_STAGE_TASK each frame (too frequent), * it block the pipeline until this stage (via `task.__block`). */ dirtyOnOverallProgress?: boolean; } interface StageHandlerInternal extends StageHandler { uid: string; visualType?: 'layout' | 'visual'; __prio: number; __raw: StageHandler | StageHandlerOverallReset; isVisual?: boolean; isLayout?: boolean; } declare type StageHandlerProgressParams = TaskProgressParams; interface StageHandlerProgressExecutor { dataEach?: (data: SeriesData, idx: number) => void; progress?: (params: StageHandlerProgressParams, data: SeriesData) => void; } declare type StageHandlerPlanReturn = TaskPlanCallbackReturn; interface StageHandlerPlan { (seriesModel: SeriesModel, ecModel: GlobalModel, api: ExtensionAPI, payload?: Payload): StageHandlerPlanReturn; } interface LoadingEffectCreator { (api: ExtensionAPI, cfg: object): LoadingEffect; } interface LoadingEffect extends Element { resize: () => void; } /** * 'html' is used for rendering tooltip in extra DOM form, and the result * string is used as DOM HTML content. * 'richText' is used for rendering tooltip in rich text form, for those where * DOM operation is not supported. */ declare type TooltipRenderMode = 'html' | 'richText'; declare type TooltipOrderMode = 'valueAsc' | 'valueDesc' | 'seriesAsc' | 'seriesDesc'; declare type OrdinalRawValue = string | number; declare type OrdinalNumber = number; /** * @usage * For example, * ```js * { ordinalNumbers: [2, 5, 3, 4] } * ``` * means that "ordinal number" 2 should be displayed on `tick.value` 0, * "ordinal number" 5 should be displayed on `tick.value` 1, ... * NOTICE: * - The index/key of `ordinalNumbers` is "tick.value" rather than the index of * `scale.getTicks()`. They are differnet when `axis.min` is set to be not zero, * or `axisTick/axisLabel.interval > 0`. * - The value of `ordinalNumbers` must be a valid `OrdinalNumber`; * null/undefined is not supported. * - `OrdinalNumber` is always from `0` to `ordinalMeta.categories.length - 1`. */ declare type OrdinalSortInfo = { ordinalNumbers: OrdinalNumber[]; }; /** * `OptionDataValue` is the primitive value in `series.data` or `dataset.source`. * `OptionDataValue` are parsed (see `src/data/helper/dataValueHelper.parseDataValue`) * into `ParsedValue` and stored into `data/SeriesData` storage. * Note: * (1) The term "parse" does not mean `src/scale/Scale['parse']`(@see `ScaleDataValue`). * (2) If a category dimension is not mapped to any axis, its raw value will NOT be * parsed to `OrdinalNumber` but keep the original `OrdinalRawValue` in `src/data/SeriesData` storage. */ declare type ParsedValue = ParsedValueNumeric | OrdinalRawValue; declare type ParsedValueNumeric = number | OrdinalNumber; /** * `ScaleDataValue` represents the user input axis value in echarts API. * (For example, used `axis.min`/`axis.max` in echarts option, `convertToPixel`). * NOTICE: * `ScaleDataValue` is slightly different from `OptionDataValue` for historical reason. * `ScaleDataValue` should be parsed by `src/scale/Scale['parse']`. * `OptionDataValue` should be parsed by `src/data/helper/dataValueHelper.parseDataValue`. * FIXME: * Make `ScaleDataValue` `OptionDataValue` consistent? Since numeric string (like `'123'`) is accepted * in `series.data` and is effectively accepted in some axis relevant option (e.g., `axis.min/max`), * `type ScaleDataValue` should also include it for consistency. But it might bring some breaking in * TS interface (user callback) and need comprehensive checks for all of the parsing of `ScaleDataValue`. */ declare type ScaleDataValue = ParsedValueNumeric | OrdinalRawValue | Date; /** * - `ScaleDataValue`: * e.g. geo accept that primitive input, like `convertToPixel('some_place')`; * Some coord sys, such as 'cartesian2d', also supports that for only query only a single axis. * - `ScaleDataValue[]`: * This is the most common case, each array item represent each data in * every dimension required by the coord sys. e.g., `[12, 98]` represents `[xData, yData]`. * - `(ScaleDataValue[])[]`: * represents `[data_range_x, data_range_y]`. e.g., `dataToPoint([[5, 600], [8889, 9000]])`, * represents data range `[5, 600]` in x, and `[8889, 9000]` in y. * Can be also `[5, [8999, 9000]]`. */ declare type CoordinateSystemDataCoord = (ScaleDataValue | NullUndefined$1) | (ScaleDataValue | NullUndefined$1)[] | (ScaleDataValue | ScaleDataValue[] | NullUndefined$1)[]; declare type AxisBreakOption = { start: ScaleDataValue; end: ScaleDataValue; gap?: number | string; isExpanded?: boolean; }; declare type AxisBreakOptionIdentifierInAxis = Pick; declare type ParsedAxisBreakList = ParsedAxisBreak[]; declare type ParsedAxisBreak = { breakOption: AxisBreakOption; vmin: number; vmax: number; gapParsed: { type: 'tpAbs' | 'tpPrct'; val: number; }; gapReal: number | NullUndefined$1; }; declare type VisualAxisBreak = { type: 'vmin' | 'vmax'; parsedBreak: ParsedAxisBreak; }; declare type AxisLabelFormatterExtraBreakPart = { break?: { type: 'start' | 'end'; start: ParsedAxisBreak['vmin']; end: ParsedAxisBreak['vmax']; }; }; interface ScaleTick { /** * This is a number corresponding to the the original business value, * that is, a value in the "outmost" space, the result of `Scale['parse']`. * * NOTICE: * - In `LogScale`, this the value in the pow space (the original space). * - In `TimeScale`, this is a timestamp. * - In `OrdinalScale`, this is NOT an `OrdinalNumber`, since `OrdinalSortInfo` exists. * This `value` is effectively an `OrdinalNumber` before being sorted. * Should use the conversion `const tickValue = getTickValueOutermost(scale, tick)` * accordingly, e.g., as the input of user callbacks, `dataToCoord` and `scale.normalize`. * PENDING: * And this case is not properly covered by `scaleMapping` polymorphism as `LogScale` * does - the manual call of `getTickValueOutermost` is still required everywhere. * Note use cases below: * - `axis.min/max` should be specified in "unsorted" space. * - Futher position calculation requires values in "unsorted" space, such as * `splitLine`, `splitArea`, minor ticks, etc. * - `anid` (animation id) requires a value in "unsorted" space, since the animation * typically represents the location (in `axisTick`, `splitLine` and `splitArea`, * especially when `boundaryGap: true`). * - Axis label requires a value in "sorted" space. * - User interactions (tooltip, axis pointer, etc.) gets values in "sorted" space. */ value: number; break?: VisualAxisBreak; time?: TimeScaleTick['time']; notNice?: boolean | NullUndefined$1; offInterval?: boolean | NullUndefined$1; } interface TimeScaleTick extends ScaleTick { time: { /** * Level information is used for label formatting. * `level` is 0 or undefined by default, with higher value indicating greater significant. * For example, a time axis may contain labels like: Jan, 8th, 16th, 23th, Feb, and etc. * In this case, month labels like Jan and Feb should be displayed in a more significant * way than days. The tick labels are: * labels: `Jan 8th 16th 23th Feb` * levels: `1 0 0 0 1 ` * The label formatter can be configured as `{[timeUnit]: string | string[]}`, where the * timeUnit is determined by the tick value itself by `time.ts#getUnitFromValue`, while * the `level` is the index under that time unit. (i.e., `formatter[timeUnit][level]`). */ level: number; /** * An upper and lower time unit that is suggested to be displayed. * Terms upper/lower means, such as 'year' is "upper" and 'month' is "lower". * This is just suggestion. Time units that are out of this range can also be displayed. */ upperTimeUnit: PrimaryTimeUnit; lowerTimeUnit: PrimaryTimeUnit; }; } /** * Return type of API `CoordinateSystem['dataToLayout']`, expose to users. */ interface CoordinateSystemDataLayout { rect?: RectLike; contentRect?: RectLike; matrixXYLocatorRange?: number[][]; } declare type DimensionIndex = number; declare type DimensionIndexLoose = DimensionIndex | string; declare type DimensionName = string; declare type DimensionLoose = DimensionName | DimensionIndexLoose; declare type DimensionType = DataStoreDimensionType; interface DataVisualDimensions { tooltip?: DimensionIndex | false; label?: DimensionIndex; itemName?: DimensionIndex; itemId?: DimensionIndex; itemGroupId?: DimensionIndex; itemChildGroupId?: DimensionIndex; seriesName?: DimensionIndex; } declare type DimensionDefinition = { type?: DataStoreDimensionType; name?: DimensionName; displayName?: string; }; declare type DimensionDefinitionLoose = DimensionDefinition['name'] | DimensionDefinition; declare const SOURCE_FORMAT_ORIGINAL: "original"; declare const SOURCE_FORMAT_ARRAY_ROWS: "arrayRows"; declare const SOURCE_FORMAT_OBJECT_ROWS: "objectRows"; declare const SOURCE_FORMAT_KEYED_COLUMNS: "keyedColumns"; declare const SOURCE_FORMAT_TYPED_ARRAY: "typedArray"; declare const SOURCE_FORMAT_UNKNOWN: "unknown"; declare type SourceFormat = typeof SOURCE_FORMAT_ORIGINAL | typeof SOURCE_FORMAT_ARRAY_ROWS | typeof SOURCE_FORMAT_OBJECT_ROWS | typeof SOURCE_FORMAT_KEYED_COLUMNS | typeof SOURCE_FORMAT_TYPED_ARRAY | typeof SOURCE_FORMAT_UNKNOWN; declare const SERIES_LAYOUT_BY_COLUMN: "column"; declare const SERIES_LAYOUT_BY_ROW: "row"; declare type SeriesLayoutBy = typeof SERIES_LAYOUT_BY_COLUMN | typeof SERIES_LAYOUT_BY_ROW; declare type OptionSourceHeader = boolean | 'auto' | number; declare type SeriesDataType = 'main' | 'node' | 'edge'; /** * [ECUnitOption]: * An object that contains definitions of components * and other properties. For example: * * ```ts * let option: ECUnitOption = { * * // Single `title` component: * title: {...}, * * // Two `visualMap` components: * visualMap: [{...}, {...}], * * // Two `series.bar` components * // and one `series.pie` component: * series: [ * {type: 'bar', data: [...]}, * {type: 'bar', data: [...]}, * {type: 'pie', data: [...]} * ], * * // A property: * backgroundColor: '#421ae4' * * // A property object: * textStyle: { * color: 'red', * fontSize: 20 * } * }; * ``` */ declare type ECUnitOption = { baseOption?: unknown; options?: unknown; media?: unknown; timeline?: ComponentOption | ComponentOption[]; backgroundColor?: ZRColor; darkMode?: boolean | 'auto'; textStyle?: GlobalTextStyleOption; useUTC?: boolean; hoverLayerThreshold?: number; legacyViewCoordSysCenterBase?: boolean; legacyMinMaxDontInverseAxis?: boolean; [key: string]: ComponentOption | ComponentOption[] | Dictionary | unknown; stateAnimation?: AnimationOption$1; } & AnimationOptionMixin & ColorPaletteOptionMixin; /** * [ECOption]: * An object input to echarts.setOption(option). * May be an 'option: ECUnitOption', * or may be an object contains multi-options. For example: * * ```ts * let option: ECOption = { * baseOption: { * title: {...}, * legend: {...}, * series: [ * {data: [...]}, * {data: [...]}, * ... * ] * }, * timeline: {...}, * options: [ * {title: {...}, series: {data: [...]}}, * {title: {...}, series: {data: [...]}}, * ... * ], * media: [ * { * query: {maxWidth: 320}, * option: {series: {x: 20}, visualMap: {show: false}} * }, * { * query: {minWidth: 320, maxWidth: 720}, * option: {series: {x: 500}, visualMap: {show: true}} * }, * { * option: {series: {x: 1200}, visualMap: {show: true}} * } * ] * }; * ``` */ interface ECBasicOption extends ECUnitOption { baseOption?: ECUnitOption; timeline?: ComponentOption | ComponentOption[]; options?: ECUnitOption[]; media?: MediaUnit[]; } declare type OptionSourceData = OptionDataItemOriginal> = OptionSourceDataOriginal | OptionSourceDataObjectRows | OptionSourceDataArrayRows | OptionSourceDataKeyedColumns | OptionSourceDataTypedArray; declare type OptionDataItemOriginal = VAL | VAL[] | OptionDataItemObject; declare type OptionSourceDataOriginal = OptionDataItemOriginal> = ArrayLike; declare type OptionSourceDataObjectRows = Array>; declare type OptionSourceDataArrayRows = Array>; declare type OptionSourceDataKeyedColumns = Dictionary>; declare type OptionSourceDataTypedArray = ArrayLike; declare type OptionDataItem = OptionDataValue | Dictionary | OptionDataValue[] | OptionDataItemObject; declare type OptionDataItemObject = { id?: OptionId; name?: OptionName; groupId?: OptionId; childGroupId?: OptionId; value?: T[] | T; selected?: boolean; }; declare type OptionId = string | number; declare type OptionName = string | number; interface GraphEdgeItemObject extends OptionDataItemObject { /** * Name or index of source node. */ source?: string | number; /** * Name or index of target node. */ target?: string | number; } declare type OptionDataValue = string | number | Date | null | undefined; declare type OptionDataValueNumeric = number | '-'; declare type OptionDataValueDate = Date | string | number; declare type ModelOption = any; declare type ThemeOption = Dictionary; declare type DisplayState = 'normal' | 'emphasis' | 'blur' | 'select'; interface OptionEncodeVisualDimensions { tooltip?: OptionEncodeValue; label?: OptionEncodeValue; itemName?: OptionEncodeValue; itemId?: OptionEncodeValue; seriesName?: OptionEncodeValue; itemGroupId?: OptionEncodeValue; childGroupdId?: OptionEncodeValue; } interface OptionEncode extends OptionEncodeVisualDimensions { [coordDim: string]: OptionEncodeValue | undefined; } declare type OptionEncodeValue = DimensionLoose | DimensionLoose[]; declare type EncodeDefaulter = (source: Source, dimCount: number) => OptionEncode; interface CallbackDataParams { componentType: string; componentSubType: string; componentIndex: number; seriesType?: string; seriesIndex?: number; seriesId?: string; seriesName?: string; name: string; dataIndex: number; data: OptionDataItem; dataType?: SeriesDataType; value: OptionDataItem | OptionDataValue; color?: ZRColor; borderColor?: string; dimensionNames?: DimensionName[]; encode?: DimensionUserOuputEncode; marker?: TooltipMarker; status?: DisplayState; dimensionIndex?: number; percent?: number; $vars: string[]; } declare type InterpolatableValue = ParsedValue | ParsedValue[]; declare type DecalDashArrayX = number | (number | number[])[]; declare type DecalDashArrayY = number | number[]; interface DecalObject { symbol?: string | string[]; symbolSize?: number; symbolKeepAspect?: boolean; color?: string; backgroundColor?: string; dashArrayX?: DecalDashArrayX; dashArrayY?: DecalDashArrayY; rotation?: number; maxTileWidth?: number; maxTileHeight?: number; } interface MediaQuery { minWidth?: number; maxWidth?: number; minHeight?: number; maxHeight?: number; minAspectRatio?: number; maxAspectRatio?: number; } declare type MediaUnit = { query?: MediaQuery; option: ECUnitOption; }; declare type ComponentLayoutMode = { type?: 'box'; ignoreSize?: boolean | boolean[]; }; declare type PaletteOptionMixin = ColorPaletteOptionMixin; interface ColorPaletteOptionMixin { color?: ZRColor | ZRColor[]; colorLayer?: ZRColor[][]; } /** * Mixin of option set to control the box layout of each component. */ interface BoxLayoutOptionMixin { width?: PositionSizeOption; height?: PositionSizeOption; top?: PositionSizeOption; right?: PositionSizeOption; bottom?: PositionSizeOption; left?: PositionSizeOption; } /** * Need to be parsed by `parsePositionOption` or `parsePositionSizeOption`. * Accept number, or numeric string (`'123'`), or percentage ('100%'), as x/y/width/height pixel number. * If null/undefined or invalid, return NaN. */ declare type PositionSizeOption = number | string; interface CircleLayoutOptionMixin { center?: (number | string)[] | TNuance['centerExtra']; radius?: (number | string)[] | number | string; } interface ShadowOptionMixin { shadowBlur?: number; shadowColor?: ColorString; shadowOffsetX?: number; shadowOffsetY?: number; } interface BorderOptionMixin { borderColor?: ZRColor; borderWidth?: number; borderType?: ZRLineType; borderCap?: CanvasLineCap; borderJoin?: CanvasLineJoin; borderDashOffset?: number; borderMiterLimit?: number; } declare type ColorBy = 'series' | 'data'; interface SunburstColorByMixin { colorBy?: ColorBy; } declare type AnimationDelayCallbackParam = { count: number; index: number; }; declare type AnimationDurationCallback = (idx: number) => number; declare type AnimationDelayCallback = (idx: number, params?: AnimationDelayCallbackParam) => number; interface AnimationOption$1 { duration?: number; easing?: AnimationEasing; delay?: number; } /** * Mixin of option set to control the animation of series. */ interface AnimationOptionMixin { /** * If enable animation */ animation?: boolean; /** * Disable animation when the number of elements exceeds the threshold */ animationThreshold?: number; /** * Duration of initialize animation. * Can be a callback to specify duration of each element */ animationDuration?: number | AnimationDurationCallback; /** * Easing of initialize animation */ animationEasing?: AnimationEasing; /** * Delay of initialize animation * Can be a callback to specify duration of each element */ animationDelay?: number | AnimationDelayCallback; /** * Delay of data update animation. * Can be a callback to specify duration of each element */ animationDurationUpdate?: number | AnimationDurationCallback; /** * Easing of data update animation. */ animationEasingUpdate?: AnimationEasing; /** * Delay of data update animation. * Can be a callback to specify duration of each element */ animationDelayUpdate?: number | AnimationDelayCallback; } interface RoamOptionMixin { /** * If enable roam. can be specified 'scale' or 'move' */ roam?: boolean | 'pan' | 'move' | 'zoom' | 'scale'; /** * Hover over an area where roaming is triggered. * - if `null`/`undefined`, the trigger area is * the intersection of "self bounding rect" and "clipping rect (if any)". * - if 'global', the trigger area is * the intersection of "the entire canvas" and "clipping rect (if any)". * NOTE: * The clipping rect, which can be enabled by `clip: true`, is typically the layout rect. * The layout rect is typically determined by option `left`/`right`/`top`/`bottom`/`width`/`height`, some * components/series, such as `geo` and `series.map` can also be determined by `layoutCenter`/`layoutSize`, * and may modified by `preserveAspect`. * * PENDING: do we need to support to only trigger roaming on the shapes themselves, * rather than the bounding rect? * PENDING: do we need to support to check by the laytout rect? But in this case, * `roamTrigger: 'global', clip: true` is more reasonable. */ roamTrigger?: 'global' | 'selfRect' | NullUndefined$1; /** * @see VIEW_COORD_SYS_CENTER_ZOOM_DEFINITION */ center?: (number | string)[]; /** * Current transformation scale. Default is 1. * @see VIEW_COORD_SYS_CENTER_ZOOM_DEFINITION */ zoom?: number; /** * Limit of `zoom`. The name is inconsistent for historical reason. */ scaleLimit?: { min?: number; max?: number; }; /** * Symbol size scale ratio on roaming. */ nodeScaleRatio?: number; } interface PreserveAspectMixin { preserveAspect?: boolean | 'contain' | 'cover'; preserveAspectAlign?: 'left' | 'right' | 'center'; preserveAspectVerticalAlign?: 'top' | 'bottom' | 'middle'; } declare type SymbolSizeCallback = (rawValue: any, params: T) => number | number[]; declare type SymbolCallback = (rawValue: any, params: T) => string; declare type SymbolRotateCallback = (rawValue: any, params: T) => number; declare type SymbolOffsetCallback = (rawValue: any, params: T) => string | number | (string | number)[]; /** * Mixin of option set to control the element symbol. * Include type of symbol, and size of symbol. */ interface SymbolOptionMixin { /** * type of symbol, like `cirlce`, `rect`, or custom path and image. */ symbol?: string | (T extends never ? never : SymbolCallback); /** * Size of symbol. */ symbolSize?: number | number[] | (T extends never ? never : SymbolSizeCallback); symbolRotate?: number | (T extends never ? never : SymbolRotateCallback); symbolKeepAspect?: boolean; symbolOffset?: string | number | (string | number)[] | (T extends never ? never : SymbolOffsetCallback); } /** * ItemStyleOption is a most common used set to config element styles. * It includes both fill and stroke style. */ interface ItemStyleOption extends ShadowOptionMixin, BorderOptionMixin { color?: ZRColor | (TCbParams extends never ? never : ((params: TCbParams) => ZRColor)); opacity?: number; decal?: DecalObject | 'none'; borderRadius?: (number | string)[] | number | string; } /** * ItemStyleOption is a option set to control styles on lines. * Used in the components or series like `line`, `axis` * It includes stroke style. */ interface LineStyleOption extends ShadowOptionMixin { width?: number; color?: Clr; opacity?: number; type?: ZRLineType; cap?: CanvasLineCap; join?: CanvasLineJoin; dashOffset?: number; miterLimit?: number; } /** * ItemStyleOption is a option set to control styles on an area, like polygon, rectangle. * It only include fill style. */ interface AreaStyleOption extends ShadowOptionMixin { color?: Clr; opacity?: number; } interface VisualOptionUnit { symbol?: string; symbolSize?: number; color?: ColorString; colorAlpha?: number; opacity?: number; colorLightness?: number; colorSaturation?: number; colorHue?: number; decal?: DecalObject; liftZ?: number; } declare type VisualOptionFixed = VisualOptionUnit; /** * Option about visual properties used in piecewise mapping * Used in each piece. */ declare type VisualOptionPiecewise = VisualOptionUnit; /** * All visual properties can be encoded. */ declare type BuiltinVisualProperty = keyof VisualOptionUnit; declare type TextCommonOptionNuanceBase = Record; declare type TextCommonOptionNuanceDefault = {}; declare type LabelStyleColorString = ColorString | 'inherit' | 'auto'; interface TextCommonOption extends ShadowOptionMixin { color?: 'color' extends keyof TNuance ? (TNuance['color'] | LabelStyleColorString) : LabelStyleColorString; fontStyle?: ZRFontStyle; fontWeight?: ZRFontWeight; fontFamily?: string; fontSize?: number | string; align?: HorizontalAlign; verticalAlign?: VerticalAlign; baseline?: VerticalAlign; opacity?: number; lineHeight?: number; backgroundColor?: ColorString | { image: ImageLike | string; }; borderColor?: string; borderWidth?: number; borderType?: ZRLineType; borderDashOffset?: number; borderRadius?: number | number[]; padding?: number | number[]; /** * Currently margin related options are not declared here. They are not supported in rich text. * @see {LabelCommonOption} */ width?: number | string; height?: number; textBorderColor?: string; textBorderWidth?: number; textBorderType?: ZRLineType; textBorderDashOffset?: number; textShadowBlur?: number; textShadowColor?: string; textShadowOffsetX?: number; textShadowOffsetY?: number; tag?: string; } declare type GlobalTextStyleOption = Pick; interface RichTextOption extends Dictionary { } interface LabelFormatterCallback { (params: T): string; } /** * LabelOption is an option set to control the style of labels. * Include color, background, shadow, truncate, rotation, distance, etc.. */ interface LabelOption extends LabelCommonOption { /** * If show label */ show?: boolean; position?: ElementTextConfig['position'] | TNuance['positionExtra']; distance?: number; rotate?: number; offset?: number[]; silent?: boolean; precision?: number | 'auto'; valueAnimation?: boolean; } /** * Common options for both `axis.axisLabel`, `axis.nameTextStyle and other `label`s. * Historically, they have had some nuances in options. */ interface LabelCommonOption extends TextCommonOption { /** * Min margin between labels. Used when label has layout. * PENDING: @see {LabelMarginType} * It's `minMargin` instead of `margin` is for not breaking the previous code using `margin`. * See the summary in `textMargin`. * * [CAUTION]: do not set `minMargin` in `defaultOption`, otherwise users have to explicitly * clear the `minMargin` to use `textMargin`. */ minMargin?: number; /** * The space around the label to escape from overlapping. * Applied on the label local rect (rather than rotated enlarged rect) * Follow the format defined by `format.ts#normalizeCssArray`. * * Introduce the name `textMargin` rather than reuse the existing names to avoid breaking change: * - `margin` historically have been used to indicate the distance from `label.x/.y` to something: * - `axisLabel.margin` & `axisPointer.label.margin`: to the axis line. * - `calendar.dayLabel/monthLabel/yearLabel.margin`: * - `series-pie.label.margin`: to pie body (deprecated, replaced by `edgeDistance`) * - `series-themeRiver.label.margin`: to the shape edge * - `minMargin` conveys the same meaning as this `textMargin` but has a different nuance, * it works like CSS margin collapse (gap = label1.minMargin/2 + label2.minMargin/2), * and `minMargin` applied on the global bounding rect (parallel to screen x and y) rather * than the original local bounding rect (can be rotated, smaller and more presice). * PENDING: @see {LabelMarginType} */ textMargin?: number | number[]; overflow?: TextStyleProps['overflow']; lineOverflow?: TextStyleProps['lineOverflow']; ellipsis?: TextStyleProps['ellipsis']; rich?: RichTextOption; } interface SeriesLabelOption extends LabelOption { formatter?: string | LabelFormatterCallback; } /** * Option for labels on line, like markLine, lines */ interface LineLabelOption extends Omit { position?: 'start' | 'middle' | 'end' | 'insideStart' | 'insideStartTop' | 'insideStartBottom' | 'insideMiddle' | 'insideMiddleTop' | 'insideMiddleBottom' | 'insideEnd' | 'insideEndTop' | 'insideEndBottom' | 'insideMiddleBottom'; /** * Distance can be an array. * Which will specify horizontal and vertical distance respectively */ distance?: number | number[]; } interface LabelLineOption { show?: boolean; /** * If displayed above other elements */ showAbove?: boolean; length?: number; length2?: number; smooth?: boolean | number; minTurnAngle?: number; lineStyle?: LineStyleOption; } interface SeriesLineLabelOption extends LineLabelOption { formatter?: string | LabelFormatterCallback; } interface LabelLayoutOptionCallbackParams { /** * Index of data which the label represents. * It can be null if label doesn't represent any data. */ dataIndex?: number; /** * Type of data which the label represents. * It can be null if label doesn't represent any data. */ dataType?: SeriesDataType; seriesIndex: number; text: string; align: ZRTextAlign; verticalAlign: ZRTextVerticalAlign; rect: RectLike; labelRect: RectLike; labelLinePoints?: number[][]; } interface LabelLayoutOption { /** * If move the overlapped label. If label is still overlapped after moved. * It will determine if to hide this label with `hideOverlap` policy. * * shiftX/Y will keep the order on x/y * shuffleX/y will move the label around the original position randomly. */ moveOverlap?: 'shiftX' | 'shiftY' | 'shuffleX' | 'shuffleY'; /** * If hide the overlapped label. It will be handled after move. * @default 'none' */ hideOverlap?: boolean; /** * If label is draggable. */ draggable?: boolean; /** * Can be absolute px number or percent string. */ x?: number | string; y?: number | string; /** * offset on x based on the original position. */ dx?: number; /** * offset on y based on the original position. */ dy?: number; rotate?: number; align?: ZRTextAlign; verticalAlign?: ZRTextVerticalAlign; width?: number; height?: number; fontSize?: number; labelLinePoints?: number[][]; } declare type LabelLayoutOptionCallback = (params: LabelLayoutOptionCallbackParams) => LabelLayoutOption; interface TooltipFormatterCallback { /** * For sync callback * params will be an array on axis trigger. */ (params: T, asyncTicket: string): string | HTMLElement | HTMLElement[]; /** * For async callback. * Returned html string will be a placeholder when callback is not invoked. */ (params: T, asyncTicket: string, callback: (cbTicket: string, htmlOrDomNodes: string | HTMLElement | HTMLElement[]) => void): string | HTMLElement | HTMLElement[]; } declare type TooltipBuiltinPosition = 'inside' | 'top' | 'left' | 'right' | 'bottom'; declare type TooltipBoxLayoutOption = Pick; declare type TooltipPositionCallbackParams = CallbackDataParams | CallbackDataParams[]; /** * Position relative to the hoverred element. Only available when trigger is item. */ interface TooltipPositionCallback { (point: [number, number], /** * params will be an array on axis trigger. */ params: TooltipPositionCallbackParams, /** * Will be HTMLDivElement when renderMode is html * Otherwise it's graphic.Text */ el: HTMLDivElement | ZRText | null, /** * Rect of hover elements. Will be null if not hovered */ rect: RectLike | null, size: { /** * Size of popup content */ contentSize: [number, number]; /** * Size of the chart view */ viewSize: [number, number]; }): Array | TooltipBuiltinPosition | TooltipBoxLayoutOption; } /** * Common tooltip option * Can be configured on series, graphic elements */ interface CommonTooltipOption { show?: boolean; /** * When to trigger * NOTE: mousewheel may modify view by dataZoom. */ triggerOn?: 'mousemove' | 'click' | 'none' | 'mousewheel' | 'mousemove|click|mousewheel'; /** * Whether to not hide popup content automatically */ alwaysShowContent?: boolean; formatter?: string | TooltipFormatterCallback; /** * Formatter of value. * * Will be ignored if tooltip.formatter is specified. */ valueFormatter?: (value: OptionDataValue | OptionDataValue[], dataIndex: number) => string; /** * Absolution pixel [x, y] array. Or relative percent string [x, y] array. * If trigger is 'item'. position can be set to 'inside' / 'top' / 'left' / 'right' / 'bottom', * which is relative to the hovered element. * * Support to be a callback */ position?: (number | string)[] | TooltipBuiltinPosition | TooltipPositionCallback | TooltipBoxLayoutOption; confine?: boolean; /** * Consider triggered from axisPointer handle, verticalAlign should be 'middle' */ align?: HorizontalAlign; verticalAlign?: VerticalAlign; /** * Delay of show. milesecond. */ showDelay?: number; /** * Delay of hide. milesecond. */ hideDelay?: number; transitionDuration?: number; /** * Whether mouse is allowed to enter the floating layer of tooltip * If you need to interact in the tooltip like with links or buttons, it can be set as true. */ enterable?: boolean; /** * Whether enable display transition when show/hide tooltip. * Defaults to `true` for backward compatibility. * If set to `false`, the tooltip 'display' will be set to 'none' when hidden. * @default true * @since v6.0.0 */ displayTransition?: boolean; backgroundColor?: ColorString; borderColor?: ColorString; borderRadius?: number; borderWidth?: number; shadowBlur?: number; shadowColor?: string; shadowOffsetX?: number; shadowOffsetY?: number; /** * Padding between tooltip content and tooltip border. */ padding?: number | number[]; /** * Available when renderMode is 'html' */ extraCssText?: string; textStyle?: Pick & { decoration?: string; }; } declare type ComponentItemTooltipOption = CommonTooltipOption & { content?: string; /** * Whether to encode HTML content according to `tooltip.renderMode`. * * e.g. renderMode 'html' needs to encode but 'richText' does not. */ encodeHTMLContent?: boolean; formatterParams?: ComponentItemTooltipLabelFormatterParams; }; declare type ComponentItemTooltipLabelFormatterParams = { componentType: string; name: string; $vars: string[]; } & { [key in string]: unknown; }; /** * Tooltip option configured on each series */ declare type SeriesTooltipOption = CommonTooltipOption & { trigger?: 'item' | 'axis' | boolean | 'none'; }; declare type LabelFormatterParams = { value: ScaleDataValue; axisDimension: string; axisIndex: number; seriesData: CallbackDataParams[]; }; /** * Common axis option. can be configured on each axis */ interface CommonAxisPointerOption { show?: boolean | 'auto'; z?: number; zlevel?: number; triggerOn?: 'click' | 'mousemove' | 'none' | 'mousemove|click'; type?: 'line' | 'shadow' | 'none'; snap?: boolean; triggerTooltip?: boolean; triggerEmphasis?: boolean; /** * current value. When using axisPointer.handle, value can be set to define the initial position of axisPointer. */ value?: ScaleDataValue; status?: 'show' | 'hide'; label?: LabelOption & { precision?: 'auto' | number; margin?: number; /** * String template include variable {value} or callback function */ formatter?: string | ((params: LabelFormatterParams) => string); }; animation?: boolean | 'auto'; animationDurationUpdate?: number; animationEasingUpdate?: ZREasing; /** * Available when type is 'line' */ lineStyle?: LineStyleOption; /** * Available when type is 'shadow' */ shadowStyle?: AreaStyleOption; handle?: { show?: boolean; icon?: string; /** * The size of the handle */ size?: number | number[]; /** * Distance from handle center to axis. */ margin?: number; color?: ColorString; /** * Throttle for mobile performance */ throttle?: number; } & ShadowOptionMixin; seriesDataIndices?: { seriesIndex: number; dataIndex: number; dataIndexInside: number; }[]; } interface ComponentOption { mainType?: string; type?: string; id?: OptionId; name?: OptionName; z?: number; zlevel?: number; coordinateSystem?: string; coordinateSystemUsage?: CoordinateSystemUsageOption; coord?: CoordinateSystemDataCoord; } /** * - "data": Each data item is laid out based on a coord sys. * See `COORD_SYS_USAGE_KIND_DATA`. * - "box": The overall bounding rect or anchor point is calculated based on a coord sys. * See `COORD_SYS_USAGE_KIND_BOX`. * e.g., * grid rect (cartesian rect) is calculate based on matrix/calendar coord sys; * pie center is calculated based on calendar/cartesian; * * The default value (if not declared in option `coordinateSystemUsage`): * For series, be "data", since this is the most case and backward compatible. * For non-series components, be "box", since "data" is not applicable. */ declare type CoordinateSystemUsageOption = 'data' | 'box'; declare type BlurScope = 'coordinateSystem' | 'series' | 'global'; /** * can be array of data indices. * Or may be an dictionary if have different types of data like in graph. */ declare type InnerFocus = DefaultEmphasisFocus | ArrayLike | Dictionary>; interface DefaultStatesMixin { emphasis?: any; select?: any; blur?: any; } declare type DefaultEmphasisFocus = 'none' | 'self' | 'series'; interface DefaultStatesMixinEmphasis { /** * self: Focus self and blur all others. * series: Focus series and blur all other series. */ focus?: DefaultEmphasisFocus; } interface StatesMixinBase { emphasis?: unknown; select?: unknown; blur?: unknown; } interface StatesOptionMixin { /** * Emphasis states */ emphasis?: StateOption & StatesMixin['emphasis'] & { /** * Scope of blurred element when focus. * * coordinateSystem: blur others in the same coordinateSystem * series: blur others in the same series * global: blur all others * * Default to be coordinate system. */ blurScope?: BlurScope; /** * If emphasis state is disabled. */ disabled?: boolean; }; /** * Select states */ select?: StateOption & StatesMixin['select'] & { disabled?: boolean; }; /** * Blur states. */ blur?: StateOption & StatesMixin['blur']; } interface UniversalTransitionOption { enabled?: boolean; /** * Animation delay of each divided element */ delay?: (index: number, count: number) => number; /** * How to divide the shape in combine and split animation. */ divideShape?: 'clone' | 'split'; /** * Series will have transition between if they have same seriesKey. * Usually it is a string. It can also be an array, * which means it can be transition from or to multiple series with each key in this array item. * * Note: * If two series have both array seriesKey. They will be compared after concated to a string(which is order independent) * Transition between string key has higher priority. * * Default to use series id. */ seriesKey?: string | string[]; } interface SeriesOption extends ComponentOption, AnimationOptionMixin, ColorPaletteOptionMixin, StatesOptionMixin { mainType?: 'series'; silent?: boolean; blendMode?: string; /** * Cursor when mouse on the elements */ cursor?: string; /** * groupId of data. can be used for doing drilldown / up animation * It will be ignored if: * - groupId is specified in each data * - encode.itemGroupId is given. */ dataGroupId?: OptionId; data?: unknown; colorBy?: ColorBy; legendHoverLink?: boolean; /** * Configurations about progressive rendering */ progressive?: number | false; progressiveThreshold?: number; progressiveChunkMode?: 'mod'; hoverLayerThreshold?: number; /** * When dataset is used, seriesLayoutBy specifies whether the column or the row of dataset is mapped to the series * namely, the series is "layout" on columns or rows * @default 'column' */ seriesLayoutBy?: 'column' | 'row'; labelLine?: LabelLineOption; /** * Overall label layout option in label layout stage. */ labelLayout?: LabelLayoutOption | LabelLayoutOptionCallback; /** * Animation config for state transition. */ stateAnimation?: AnimationOption$1; /** * If enabled universal transition cross series. * @example * universalTransition: true * universalTransition: { enabled: true } */ universalTransition?: boolean | UniversalTransitionOption; /** * Map of selected data * key is name or index of data. */ selectedMap?: Dictionary | 'all'; selectedMode?: 'single' | 'multiple' | 'series' | boolean; } interface SeriesOnCartesianOptionMixin { xAxisIndex?: number; yAxisIndex?: number; xAxisId?: OptionId; yAxisId?: OptionId; } interface SeriesOnPolarOptionMixin { polarIndex?: number; polarId?: OptionId; } interface SeriesOnSingleOptionMixin { singleAxisIndex?: number; singleAxisId?: OptionId; } interface SeriesOnGeoOptionMixin { geoIndex?: number; geoId?: OptionId; } interface SeriesOnRadarOptionMixin { radarIndex?: number; radarId?: OptionId; } interface ComponentOnCalendarOptionMixin { calendarIndex?: number; calendarId?: OptionId; } interface ComponentOnMatrixOptionMixin { matrixIndex?: number; matrixId?: OptionId; } interface SeriesLargeOptionMixin { large?: boolean; largeThreshold?: number; } interface SeriesStackOptionMixin { stack?: string; stackStrategy?: 'samesign' | 'all' | 'positive' | 'negative'; stackOrder?: 'seriesAsc' | 'seriesDesc'; } declare type SamplingFunc = (frame: ArrayLike) => number; interface SeriesSamplingOptionMixin { sampling?: 'none' | 'average' | 'min' | 'max' | 'minmax' | 'sum' | 'lttb' | SamplingFunc; } interface SeriesEncodeOptionMixin { datasetIndex?: number; datasetId?: string | number; seriesLayoutBy?: SeriesLayoutBy; sourceHeader?: OptionSourceHeader; dimensions?: DimensionDefinitionLoose[]; encode?: OptionEncode; } interface AriaLabelOption { enabled?: boolean; description?: string; general?: { withTitle?: string; withoutTitle?: string; }; series?: { maxCount?: number; single?: { prefix?: string; withName?: string; withoutName?: string; }; multiple?: { prefix?: string; withName?: string; withoutName?: string; separator?: { middle?: string; end?: string; }; }; }; data?: { maxCount?: number; allData?: string; partialData?: string; withName?: string; withoutName?: string; separator?: { middle?: string; end?: string; }; excludeDimensionId?: number[]; }; } interface AriaOption extends AriaLabelOption { mainType?: 'aria'; enabled?: boolean; label?: AriaLabelOption; decal?: { show?: boolean; decals?: DecalObject | DecalObject[]; }; } declare type AreaStyleProps = Pick; declare class AreaStyleMixin { getAreaStyle(this: Model, excludes?: readonly (keyof AreaStyleOption)[], includes?: readonly (keyof AreaStyleOption)[]): AreaStyleProps; } declare type LabelFontOption = Pick; declare type LabelRectRelatedOption = Pick & LabelFontOption; declare class TextStyleMixin { /** * Get color property or get color from option.textStyle.color */ getTextColor(this: Model, isEmphasis?: boolean): ColorString; /** * Create font string from fontStyle, fontWeight, fontSize, fontFamily * @return {string} */ getFont(this: Model): string; getTextRect(this: Model & TextStyleMixin, text: string): BoundingRect; } interface Model extends LineStyleMixin, ItemStyleMixin, TextStyleMixin, AreaStyleMixin { } declare class Model { parentModel: Model; ecModel: GlobalModel; option: Opt; constructor(option?: Opt, parentModel?: Model, ecModel?: GlobalModel); init(option: Opt, parentModel?: Model, ecModel?: GlobalModel, ...rest: any): void; /** * Merge the input option to me. */ mergeOption(option: Opt, ecModel?: GlobalModel): void; get(path: R, ignoreParent?: boolean): Opt[R]; get(path: readonly [R], ignoreParent?: boolean): Opt[R]; get(path: readonly [R, S], ignoreParent?: boolean): Opt[R][S]; get(path: readonly [R, S, T], ignoreParent?: boolean): Opt[R][S][T]; getShallow(key: R, ignoreParent?: boolean): Opt[R]; getModel(path: R, parentModel?: Model): Model; getModel(path: readonly [R], parentModel?: Model): Model; getModel(path: readonly [R, S], parentModel?: Model): Model; getModel(path: readonly [Ra] | readonly [Rb, S], parentModel?: Model): Model | Model; getModel(path: readonly [R, S, T], parentModel?: Model): Model; /** * If model has option */ isEmpty(): boolean; restoreData(): void; clone(): Model; parsePath(path: string | readonly string[]): readonly string[]; resolveParentPath(path: readonly string[]): string[]; isAnimationEnabled(): boolean; private _doGet; } /** * TERM EXPLANATIONS: * See `ECOption` and `ECUnitOption` in `src/util/types.ts`. */ declare class OptionManager { private _api; private _timelineOptions; private _mediaList; private _mediaDefault; /** * -1, means default. * empty means no media. */ private _currentMediaIndices; private _optionBackup; private _newBaseOption; constructor(api: ExtensionAPI); setOption(rawOption: ECBasicOption, optionPreprocessorFuncs: OptionPreprocessor[], opt: InnerSetOptionOpts): void; mountOption(isRecreate: boolean): ECUnitOption; getTimelineOption(ecModel: GlobalModel): ECUnitOption; getMediaOption(ecModel: GlobalModel): ECUnitOption[]; } /** * Caution: If the mechanism should be changed some day, these cases * should be considered: * * (1) In `merge option` mode, if using the same option to call `setOption` * many times, the result should be the same (try our best to ensure that). * (2) In `merge option` mode, if a component has no id/name specified, it * will be merged by index, and the result sequence of the components is * consistent to the original sequence. * (3) In `replaceMerge` mode, keep the result sequence of the components is * consistent to the original sequence, even though there might result in "hole". * (4) `reset` feature (in toolbox). Find detailed info in comments about * `mergeOption` in module:echarts/model/OptionManager. */ interface GlobalModelSetOptionOpts { replaceMerge: ComponentMainType | ComponentMainType[]; } interface InnerSetOptionOpts { replaceMergeMainTypeMap: HashMap; } /** * Either `mainType` or `query` should be provided. * A valid `query` (containing either xxxId, xxxName or xxxIndex) takes precedence * if `query` and `mainType` are both provided. * `query` is like `{xxxIndex, xxxId, xxxName}`, * where xxx is mainType. * If query attribute is null/undefined or has no index/id/name, * do not filtering by query conditions, which is convenient for * no-payload situations or when target of action is global. * `subType` and `filter` provide further filtering to the above result. * `subType` is determined by `hasOwnProperty`. * * @see {makeQueryConditionKindA} */ interface QueryConditionKindA { query?: { [k: string]: number | number[] | string | string[]; }; mainType?: ComponentMainType; subType?: ComponentSubType; filter?: (cmpt: ComponentModel) => boolean; } /** * If none of index and id and name used, return all components with mainType. * @param condition.mainType * @param condition.subType If ignore, only query by mainType * @param condition.index Either input index or id or name. * @param condition.id Either input index or id or name. * @param condition.name Either input index or id or name. */ interface QueryConditionKindB { mainType: ComponentMainType; subType?: ComponentSubType; index?: number | number[]; id?: OptionId | OptionId[]; name?: OptionName | OptionName[]; } interface EachComponentAllCallback { (mainType: string, model: ComponentModel, componentIndex: number): void; } interface EachComponentInMainTypeCallback { (model: ComponentModel, componentIndex: number): void; } declare class GlobalModel extends Model { option: ECUnitOption; private _theme; private _locale; private _optionManager; private _componentsMap; /** * `_componentsMap` might have "hole" because of remove. * So save components count for a certain mainType here. */ private _componentsCount; /** * Mapping between filtered series list and raw series list. * key: filtered series indices, value: raw series indices. * Items of `_seriesIndices` never be null/empty/-1. * If series has been removed by `replaceMerge`, those series * also won't be in `_seriesIndices`, just like be filtered. */ private _seriesIndices; /** * Key: seriesIndex. * Keep consistent with `_seriesIndices`. */ private _seriesIndicesMap; /** * Model for store update payload */ private _payload; scheduler: Scheduler; ssr: boolean; init(option: ECBasicOption, parentModel: Model, ecModel: GlobalModel, theme: object, locale: object, optionManager: OptionManager): void; setOption(option: ECBasicOption, opts: GlobalModelSetOptionOpts, optionPreprocessorFuncs: OptionPreprocessor[]): void; /** * @param type null/undefined: reset all. * 'recreate': force recreate all. * 'timeline': only reset timeline option * 'media': only reset media query option * @return Whether option changed. */ resetOption(type: 'recreate' | 'timeline' | 'media', opt?: Pick): boolean; private _resetOption; mergeOption(option: ECUnitOption): void; private _mergeOption; /** * Get option for output (cloned option and inner info removed) */ getOption(): ECUnitOption; setTheme(theme: object): void; getTheme(): Model; getLocaleModel(): Model; setUpdatePayload(payload: Payload): void; getUpdatePayload(): Payload; /** * @param idx If not specified, return the first one. */ getComponent(mainType: ComponentMainType, idx?: number): ComponentModel; /** * @return Never be null/undefined. */ queryComponents(condition: QueryConditionKindB): ComponentModel[]; /** * The interface is different from queryComponents, * which is convenient for inner usage. * * @usage * let result = findComponents( * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}} * ); * let result = findComponents( * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}} * ); * let result = findComponents( * {mainType: 'series', * filter: function (model, index) {...}} * ); * // result like [component0, component1, ...] */ findComponents(condition: QueryConditionKindA): ComponentModel[]; /** * Travel components (before filtered). * * @usage * eachComponent('legend', function (legendModel, index) { * ... * }); * eachComponent(function (componentType, model, index) { * // componentType does not include subType * // (componentType is 'a' but not 'a.b') * }); * eachComponent( * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}, * function (model, index) {...} * ); * eachComponent( * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}, * function (model, index) {...} * ); */ eachComponent(cb: EachComponentAllCallback, context?: T): void; eachComponent(mainType: string, cb: EachComponentInMainTypeCallback, context?: T): void; eachComponent(mainType: QueryConditionKindA, cb: EachComponentInMainTypeCallback, context?: T): void; /** * Get series list before filtered by name. */ getSeriesByName(name: OptionName): SeriesModel[]; /** * Get series list before filtered by index. */ getSeriesByIndex(seriesIndex: number): SeriesModel; /** * Get series list before filtered by type. * FIXME: rename to getRawSeriesByType? */ getSeriesByType(subType: ComponentSubType): SeriesModel[]; /** * Get all series before filtered. */ getSeries(): SeriesModel[]; /** * Count series before filtered. */ getSeriesCount(): number; /** * After filtering, series may be different * from raw series. */ eachSeries(cb: (this: T, series: SeriesModel, rawSeriesIndex: number) => void, context?: T): void; /** * Iterate raw series before filtered. */ eachRawSeries(cb: (this: T, series: SeriesModel, rawSeriesIndex: number) => void, context?: T): void; /** * After filtering, series may be different. * from raw series. */ eachSeriesByType(subType: ComponentSubType, cb: (this: T, series: SeriesModel, rawSeriesIndex: number) => void, context?: T): void; /** * Iterate raw series before filtered of given type. */ eachRawSeriesByType(subType: ComponentSubType, cb: (this: T, series: SeriesModel, rawSeriesIndex: number) => void, context?: T): void; /** * It means "filtered out". */ isSeriesFiltered(seriesModel: SeriesModel): boolean; getCurrentSeriesIndices(): number[]; filterSeries(cb: (this: T, series: SeriesModel, rawSeriesIndex: number) => boolean, context?: T): void; restoreData(payload?: Payload): void; private static internalField; } interface GlobalModel extends PaletteMixin { } interface UpdateLifecycleTransitionSeriesFinder { seriesIndex?: ModelFinderIndexQuery; seriesId?: ModelFinderIdQuery; dimension: DimensionLoose; } interface UpdateLifecycleTransitionItem { from?: UpdateLifecycleTransitionSeriesFinder | UpdateLifecycleTransitionSeriesFinder[]; to: UpdateLifecycleTransitionSeriesFinder | UpdateLifecycleTransitionSeriesFinder[]; } declare type UpdateLifecycleTransitionOpt = UpdateLifecycleTransitionItem | UpdateLifecycleTransitionItem[]; interface UpdateLifecycleParams { updatedSeries?: SeriesModel[]; /** * If this update is from setOption and option is changed. */ optionChanged?: boolean; seriesTransition?: UpdateLifecycleTransitionOpt; } interface LifecycleEvents { 'afterinit': [EChartsType]; 'coordsys:aftercreate': [GlobalModel, ExtensionAPI]; 'series:beforeupdate': [GlobalModel, ExtensionAPI, UpdateLifecycleParams]; 'series:layoutlabels': [GlobalModel, ExtensionAPI, UpdateLifecycleParams]; 'series:transition': [GlobalModel, ExtensionAPI, UpdateLifecycleParams]; 'series:afterupdate': [GlobalModel, ExtensionAPI, UpdateLifecycleParams]; 'afterupdate': [GlobalModel, ExtensionAPI]; } declare class GeoJSONResource implements GeoResource { readonly type = "geoJSON"; private _geoJSON; private _specialAreas; private _mapName; private _parsedMap; constructor(mapName: string, geoJSON: GeoJSONSourceInput, specialAreas: GeoSpecialAreas); /** * @param nameMap can be null/undefined * @param nameProperty can be null/undefined */ load(nameMap: NameMap, nameProperty: string): { regions: GeoJSONRegion[]; boundingRect: BoundingRect; regionsMap: HashMap; }; private _parseToRegions; /** * Only for exporting to users. * **MUST NOT** used internally. */ getMapForUser(): { geoJson: GeoJSON | GeoJSONCompressed; geoJSON: GeoJSON | GeoJSONCompressed; specialAreas: GeoSpecialAreas; }; } declare type MapInput = GeoJSONMapInput | SVGMapInput; interface GeoJSONMapInput { geoJSON: GeoJSONSourceInput; specialAreas: GeoSpecialAreas; } interface SVGMapInput { svg: GeoSVGSourceInput; } declare const _default$1: { /** * Compatible with previous `echarts.registerMap`. * * @usage * ```js * * echarts.registerMap('USA', geoJson, specialAreas); * * echarts.registerMap('USA', { * geoJson: geoJson, * specialAreas: {...} * }); * echarts.registerMap('USA', { * geoJSON: geoJson, * specialAreas: {...} * }); * * echarts.registerMap('airport', { * svg: svg * } * ``` * * Note: * Do not support that register multiple geoJSON or SVG * one map name. Because different geoJSON and SVG have * different unit. It's not easy to make sure how those * units are mapping/normalize. * If intending to use multiple geoJSON or SVG, we can * use multiple geo coordinate system. */ registerMap: (mapName: string, rawDef: MapInput | GeoJSONSourceInput, rawSpecialAreas?: GeoSpecialAreas) => void; getGeoResource(mapName: string): GeoResource; /** * Only for exporting to users. * **MUST NOT** used internally. */ getMapForUser: (mapName: string) => ReturnType; load: (mapName: string, nameMap: NameMap, nameProperty: string) => ReturnType; }; declare type ModelFinder$1 = ModelFinder; declare const version$1 = "6.1.0"; declare const dependencies: { zrender: string; }; declare const PRIORITY: { PROCESSOR: { SERIES_FILTER: number; AXIS_STATISTICS: number; FILTER: number; STATISTIC: number; STATISTICS: number; }; VISUAL: { LAYOUT: number; PROGRESSIVE_LAYOUT: number; GLOBAL: number; CHART: number; POST_CHART_LAYOUT: number; COMPONENT: number; BRUSH: number; CHART_ITEM: number; ARIA: number; DECAL: number; }; }; /** * @tutorial [EC_CYCLE] (ec updating/rendering cycles): * * - Common Rules: * - Nested entry is not allowed. If triggering a new run of EC_CYCLE during a * unfinished run, the new run will be delayed until the current run finishes * (if triggered by `dispatchAction`), or throw error (if triggered by other API calls). * - All user-visible ec events are triggered outside EC_CYCLE. * (i.e. be triggered after `this[IN_EC_CYCLE_KEY]` becoming `false`). * * - [EC_FULL_UPDATE_CYCLE]: * - It designates a run of a series of processing/updating/rendering. * - It is triggered by: * - `setOption` * - `dispatchAction` * (It is typically internally triggered by user inputs; but can also an explicit API call.) * - `resize` * - The next "animation frame" if in `lazyMode: true`. * - A run of EC_FULL_UPDATE_CYCLE comprises: * - EC_PREPARE (may be absent) * - EC_FULL_UPDATE: * - CoordinateSystem['create'] * - Data processing (may be absent) (see `registerProcessor`) * - CoordinateSystem['update'] (may be absent) * - Visual encoding (may be absent) (see `registerVisual`) * - Layout (may be absent) (see `registerLayout`) * - Rendering (`ComponentView` or `SeriesView`) * * - [EC_PARTIAL_UPDATE_CYCLE]s: * - They are shortcuts for performance. * - They are triggered by: * - `dispatchAction` * - These steps are typically omitted: * - No EC_PREPARE * - No CoordinateSystem['create'] and CoordinateSystem['update'] * - They require careful implementation, otherwise inconsistency may be introduced. * * - [EC_PROGRESSIVE_CYCLE]: * - It also carries out a series of processing/updating/rendering. * - It is performed in each subsequent "animation frame" until finished. * - It can be triggered by EC_FULL_UPDATE_CYCLE, EC_PARTIAL_UPDATE_CYCLE or EC_APPEND_DATA_CYCLE. * - A run of EC_PROGRESSIVE_CYCLE comprises: * - Data processing (may be absent) (see `registerProcessor`) * - Visual encoding (may be absent) (see `registerVisual`) * - Layout (may be absent) (see `registerLayout`) * - Rendering (`ComponentView` or `SeriesView`) * - PENDING: currently all data processing tasks (via `registerProcessor`) run in "block" mode. * (see `performDataProcessorTasks`). * * - [EC_APPEND_DATA_CYCLE]: * - See `appendData`. It is only supported for some special cases. * * - [SERIES_SPECIFIC_CYCLE]s: * - Series may have specific update/render cycles. For example, graph force layout performs * layout and rendering in each "animation frame". * * - Model updating: * - Model can only be modified at the beginning of ec cycles, including only: * - EC_PREPARE (see method `prepare()`) in `setOption` call. * - EC action handlers in `dispatchAction` call. * - `appendData` (a special case, where only data can be modified). * * - The lifetime of CoordinateSystem/Axis/Scale instances: * - They are only re-created per run of EC_FULL_UPDATE_CYCLE. * * - Global caches: see `cycleCache.ts` */ declare const IN_EC_CYCLE_KEY: "__flagInMainProcess"; declare const EC_UPDATE_CYCLE_VERSION_KEY: "__mainProcessVersion"; declare const PENDING_UPDATE: "__pendingUpdate"; declare const STATUS_NEEDS_UPDATE_KEY: "__needsUpdateStatus"; declare const CONNECT_STATUS_KEY: "__connectUpdateStatus"; declare type SetOptionTransitionOpt = UpdateLifecycleTransitionOpt; declare type SetOptionTransitionOptItem = UpdateLifecycleTransitionItem; interface SetOptionOpts { notMerge?: boolean; lazyUpdate?: boolean; silent?: boolean; replaceMerge?: GlobalModelSetOptionOpts['replaceMerge']; transition?: SetOptionTransitionOpt; } interface ResizeOpts { width?: number | 'auto'; height?: number | 'auto'; animation?: AnimationOption$1; silent?: boolean; } interface SetThemeOpts { silent?: boolean; } interface PostIniter { (chart: EChartsType): void; } declare type UpdateMethod = (this: ECharts, payload?: Payload, renderParams?: UpdateLifecycleParams) => void; declare let updateMethods: { prepareAndUpdate: UpdateMethod; update: UpdateMethod; updateTransform: UpdateMethod; updateView: UpdateMethod; updateVisual: UpdateMethod; updateLayout: UpdateMethod; }; declare type ECUpdateMethodName = (keyof typeof updateMethods) | 'none'; declare type RenderedEventParam = { elapsedTime: number; }; declare type ECEventDefinition = { [key in ZRElementEventName]: EventCallbackSingleParam; } & { rendered: EventCallbackSingleParam; finished: () => void | boolean; } & { [key: string]: (...args: unknown[]) => void | boolean; }; declare type EChartsInitOpts = { locale?: string | LocaleOption; renderer?: RendererType; devicePixelRatio?: number; useDirtyRect?: boolean; useCoarsePointer?: boolean; pointerSize?: number; ssr?: boolean; width?: number | string; height?: number | string; }; declare class ECharts extends Eventful { /** * @readonly */ id: string; /** * Group id * @readonly */ group: string; private _ssr; private _zr; private _dom; private _model; private _throttledZrFlush; private _theme; private _locale; private _chartsViews; private _chartsMap; private _componentsViews; private _componentsMap; private _coordSysMgr; private _api; private _scheduler; private _messageCenter; private _pendingActions; protected _$eventProcessor: never; private _disposed; private _loadingFX; private _usingTHL; private [PENDING_UPDATE]; private [IN_EC_CYCLE_KEY]; private [EC_UPDATE_CYCLE_VERSION_KEY]; private [CONNECT_STATUS_KEY]; private [STATUS_NEEDS_UPDATE_KEY]; constructor(dom: HTMLElement, theme?: string | ThemeOption, opts?: EChartsInitOpts); private _onframe; getDom(): HTMLElement; getId(): string; getZr(): ZRenderType; isSSR(): boolean; /** * Usage: * chart.setOption(option, notMerge, lazyUpdate); * chart.setOption(option, { * notMerge: ..., * lazyUpdate: ..., * silent: ... * }); * * @param opts opts or notMerge. * @param opts.notMerge Default `false`. * @param opts.lazyUpdate Default `false`. Useful when setOption frequently. * @param opts.silent Default `false`. * @param opts.replaceMerge Default undefined. */ setOption(option: Opt, notMerge?: boolean, lazyUpdate?: boolean): void; setOption(option: Opt, opts?: SetOptionOpts): void; /** * Update theme with name or theme option and repaint the chart. * @param theme Theme name or theme option. * @param opts Optional settings */ setTheme(theme: string | ThemeOption, opts?: SetThemeOpts): void; private _updateTheme; private getModel; getOption(): ECBasicOption; getWidth(): number; getHeight(): number; getDevicePixelRatio(): number; /** * Get canvas which has all thing rendered * @deprecated Use renderToCanvas instead. */ getRenderedCanvas(opts?: any): HTMLCanvasElement; renderToCanvas(opts?: { backgroundColor?: ZRColor; pixelRatio?: number; }): HTMLCanvasElement; renderToSVGString(opts?: { useViewBox?: boolean; }): string; /** * Get svg data url */ getSvgDataURL(): string; getDataURL(opts?: { type?: 'png' | 'jpeg' | 'svg'; pixelRatio?: number; backgroundColor?: ZRColor; excludeComponents?: ComponentMainType[]; }): string; getConnectedDataURL(opts?: { type?: 'png' | 'jpeg' | 'svg'; pixelRatio?: number; backgroundColor?: ZRColor; connectedBackgroundColor?: ZRColor; excludeComponents?: string[]; }): string; /** * Convert from logical coordinate system to pixel coordinate system. * See CoordinateSystem#convertToPixel. * * TODO / PENDING: * currently `convertToPixel` `convertFromPixel` `convertToLayout` may not be suitable * for some extremely performance-sensitive scenarios (such as, handling massive amounts of data), * since it performce "find component" every time. * And it is not friendly to the nuances between different coordinate systems. * @see https://github.com/apache/echarts/issues/20985 for details * * @see CoordinateSystem['dataToPoint'] for parameters and return. * @see CoordinateSystemDataCoord */ convertToPixel(finder: ModelFinder$1, value: ScaleDataValue): number; convertToPixel(finder: ModelFinder$1, value: ScaleDataValue[]): number[]; convertToPixel(finder: ModelFinder$1, value: ScaleDataValue | ScaleDataValue[]): number | number[]; convertToPixel(finder: ModelFinder$1, value: (ScaleDataValue | ScaleDataValue[] | NullUndefined$1)[]): number | number[]; /** * Convert from logical coordinate system to pixel coordinate system. * See CoordinateSystem#convertToPixel. * * @see CoordinateSystem['dataToLayout'] for parameters and return. * @see CoordinateSystemDataCoord */ convertToLayout(finder: ModelFinder$1, value: (ScaleDataValue | NullUndefined$1) | (ScaleDataValue | ScaleDataValue[] | NullUndefined$1)[], opt?: unknown): CoordinateSystemDataLayout; /** * Convert from pixel coordinate system to logical coordinate system. * See CoordinateSystem#convertFromPixel. * * @see CoordinateSystem['pointToData'] for parameters and return. */ convertFromPixel(finder: ModelFinder$1, value: number): number; convertFromPixel(finder: ModelFinder$1, value: number[]): number[]; convertFromPixel(finder: ModelFinder$1, value: number | number[]): number | number[]; /** * Is the specified coordinate systems or components contain the given pixel point. * @param {Array|number} value * @return {boolean} result */ containPixel(finder: ModelFinder$1, value: number[]): boolean; /** * Get visual from series or data. * @param finder * If string, e.g., 'series', means {seriesIndex: 0}. * If Object, could contain some of these properties below: * { * seriesIndex / seriesId / seriesName, * dataIndex / dataIndexInside * } * If dataIndex is not specified, series visual will be fetched, * but not data item visual. * If all of seriesIndex, seriesId, seriesName are not specified, * visual will be fetched from first series. * @param visualType 'color', 'symbol', 'symbolSize' */ getVisual(finder: ModelFinder$1, visualType: string): string | number | number[] | PatternObject | LinearGradientObject | RadialGradientObject; /** * Get view of corresponding component model */ private getViewOfComponentModel; /** * Get view of corresponding series model */ private getViewOfSeriesModel; private _initEvents; isDisposed(): boolean; clear(): void; dispose(): void; /** * Resize the chart */ resize(opts?: ResizeOpts): void; /** * Show loading effect * @param name 'default' by default * @param cfg cfg of registered loading effect */ showLoading(cfg?: object): void; showLoading(name?: string, cfg?: object): void; /** * Hide loading effect */ hideLoading(): void; makeActionFromEvent(eventObj: ECActionEvent): Payload; /** * @param opt If pass boolean, means opt.silent * @param opt.silent Default `false`. Whether trigger events. * @param opt.flush Default `undefined`. * true: Flush immediately, and then pixel in canvas can be fetched * immediately. Caution: it might affect performance. * false: Not flush. * undefined: Auto decide whether perform flush. */ dispatchAction(payload: Payload, opt?: boolean | { silent?: boolean; flush?: boolean | undefined; }): void; updateLabelLayout(): void; appendData(params: { seriesIndex: number; data: any; }): void; private static internalField; } /** * @param opts.devicePixelRatio Use window.devicePixelRatio by default * @param opts.renderer Can choose 'canvas' or 'svg' to render the chart. * @param opts.width Use clientWidth of the input `dom` by default. * Can be 'auto' (the same as null/undefined) * @param opts.height Use clientHeight of the input `dom` by default. * Can be 'auto' (the same as null/undefined) * @param opts.locale Specify the locale. * @param opts.useDirtyRect Enable dirty rectangle rendering or not. */ declare function init$1(dom?: HTMLElement | null, theme?: string | object | null, opts?: EChartsInitOpts): EChartsType; /** * @usage * (A) * ```js * let chart1 = echarts.init(dom1); * let chart2 = echarts.init(dom2); * chart1.group = 'xxx'; * chart2.group = 'xxx'; * echarts.connect('xxx'); * ``` * (B) * ```js * let chart1 = echarts.init(dom1); * let chart2 = echarts.init(dom2); * echarts.connect('xxx', [chart1, chart2]); * ``` */ declare function connect(groupId: string | EChartsType[]): string; declare function disconnect(groupId: string): void; /** * Alias and backward compatibility * @deprecated */ declare const disConnect: typeof disconnect; /** * Dispose a chart instance */ declare function dispose$1(chart: EChartsType | HTMLElement | string): void; declare function getInstanceByDom(dom: HTMLElement): EChartsType | undefined; declare function getInstanceById(key: string): EChartsType | undefined; /** * Register theme */ declare function registerTheme(name: string, theme: ThemeOption): void; /** * Register option preprocessor */ declare function registerPreprocessor(preprocessorFunc: OptionPreprocessor): void; /** * NOTICE: Alway run in block way (no progessive is allowed). */ declare function registerProcessor(priority: number | StageHandler | StageHandlerOverallReset, processor?: StageHandler | StageHandlerOverallReset): void; /** * Register postIniter * @param {Function} postInitFunc */ declare function registerPostInit(postInitFunc: PostIniter): void; /** * Register postUpdater * @param {Function} postUpdateFunc */ declare function registerPostUpdate(postUpdateFunc: PostUpdater): void; declare function registerUpdateLifecycle(name: T, cb: (...args: LifecycleEvents[T]) => void): void; /** * @usage * registerAction('someAction', 'someEvent', function () { ... }); * registerAction('someAction', function () { ... }); * registerAction( * {type: 'someAction', event: 'someEvent', update: 'updateView'}, * function () { ... } * ); * registerAction({ * type: 'someAction', * event: 'someEvent', * update: 'updateView' * action: function () { ... } * refineEvent: function () { ... } * }); * @see {ActionInfo} for more details. */ declare function registerAction(type: string, eventType: string, action: ActionHandler): void; declare function registerAction(type: string, action: ActionHandler): void; declare function registerAction(actionInfo: ActionInfo, action?: ActionHandler): void; declare function registerCoordinateSystem(type: string, coordSysCreator: CoordinateSystemCreator): void; /** * Get dimensions of specified coordinate system. * @param {string} type * @return {Array.} */ declare function getCoordinateSystemDimensions(type: string): DimensionDefinitionLoose[]; declare function registerCustomSeries(seriesType: string, renderItem: CustomSeriesRenderItem): void; /** * Layout is a special stage of visual encoding * Most visual encoding like color are common for different chart * But each chart has it's own layout algorithm */ declare function registerLayout(priority: number, layoutTask: StageHandler | StageHandlerOverallReset): void; declare function registerLayout(layoutTask: StageHandler | StageHandlerOverallReset): void; declare function registerVisual(priority: number, layoutTask: StageHandler | StageHandlerOverallReset): void; declare function registerVisual(layoutTask: StageHandler | StageHandlerOverallReset): void; declare function registerLoading(name: string, loadingFx: LoadingEffectCreator): void; /** * ZRender need a canvas context to do measureText. * But in node environment canvas may be created by node-canvas. * So we need to specify how to create a canvas instead of using document.createElement('canvas') * * * @deprecated use setPlatformAPI({ createCanvas }) instead. * * @example * let Canvas = require('canvas'); * let echarts = require('echarts'); * echarts.setCanvasCreator(function () { * // Small size is enough. * return new Canvas(32, 32); * }); */ declare function setCanvasCreator(creator: () => HTMLCanvasElement): void; declare type RegisterMapParams = Parameters; /** * The parameters and usage: see `geoSourceManager.registerMap`. * Compatible with previous `echarts.registerMap`. */ declare function registerMap(mapName: RegisterMapParams[0], geoJson: RegisterMapParams[1], specialAreas?: RegisterMapParams[2]): void; declare function getMap(mapName: string): any; declare const registerTransform: typeof registerExternalTransform; declare const dataTool: {}; interface EChartsType extends ECharts { } declare function parseCssInt(val: string | number): number; declare function parseCssFloat(val: string | number): number; declare function parse(colorStr: string, rgbaArr?: number[]): number[]; declare function lift(color: string, level: number): string; declare function toHex(color: string): string; declare function fastLerp(normalizedValue: number, colors: number[][], out?: number[]): number[]; declare const fastMapToColor: typeof fastLerp; declare type LerpFullOutput = { color: string; leftIndex: number; rightIndex: number; value: number; }; declare function lerp$1(normalizedValue: number, colors: string[], fullOutput: boolean): LerpFullOutput; declare function lerp$1(normalizedValue: number, colors: string[]): string; declare const mapToColor: typeof lerp$1; declare function modifyHSL(color: string, h?: number | ((h: number) => number), s?: number | string | ((s: number) => number), l?: number | string | ((l: number) => number)): string; declare function modifyAlpha(color: string, alpha?: number): string; declare function stringify(arrColor: number[], type: string): string; declare function lum(color: string, backgroundLum: number): number; declare function random(): string; declare function liftColor(color: GradientObject): GradientObject; declare function liftColor(color: string): string; declare const color_d_parseCssInt: typeof parseCssInt; declare const color_d_parseCssFloat: typeof parseCssFloat; declare const color_d_parse: typeof parse; declare const color_d_lift: typeof lift; declare const color_d_toHex: typeof toHex; declare const color_d_fastLerp: typeof fastLerp; declare const color_d_fastMapToColor: typeof fastMapToColor; declare const color_d_mapToColor: typeof mapToColor; declare const color_d_modifyHSL: typeof modifyHSL; declare const color_d_modifyAlpha: typeof modifyAlpha; declare const color_d_stringify: typeof stringify; declare const color_d_lum: typeof lum; declare const color_d_random: typeof random; declare const color_d_liftColor: typeof liftColor; declare namespace color_d { export { color_d_parseCssInt as parseCssInt, color_d_parseCssFloat as parseCssFloat, color_d_parse as parse, color_d_lift as lift, color_d_toHex as toHex, color_d_fastLerp as fastLerp, color_d_fastMapToColor as fastMapToColor, lerp$1 as lerp, color_d_mapToColor as mapToColor, color_d_modifyHSL as modifyHSL, color_d_modifyAlpha as modifyAlpha, color_d_stringify as stringify, color_d_lum as lum, color_d_random as random, color_d_liftColor as liftColor, }; } declare type ThrottleFunction = (this: unknown, ...args: unknown[]) => void; interface ThrottleController { clear(): void; debounceNextCall(debounceDelay: number): void; } /** * @public * @param {(Function)} fn * @param {number} [delay=0] Unit: ms. * @param {boolean} [debounce=false] * true: If call interval less than `delay`, only the last call works. * false: If call interval less than `delay, call works on fixed rate. * @return {(Function)} throttled fn. */ declare function throttle(fn: T, delay?: number, debounce?: boolean): T & ThrottleController; declare type EnableDataStackDimensionsInput = { schema: SeriesDataSchema; store?: DataStore; }; declare type EnableDataStackDimensionsInputLegacy = (SeriesDimensionDefine | string)[]; /** * Note that it is too complicated to support 3d stack by value * (have to create two-dimension inverted index), so in 3d case * we just support that stacked by index. * * Stack is calculated in `src/processor/dataStack.ts`. * * @param seriesModel * @param dimensionsInput The same as the input of . * The input will be modified. * @param opt * @param opt.stackedCoordDimension Specify a coord dimension if needed. * @param opt.byIndex=false * @return calculationInfo * { * stackedDimension: string * stackedByDimension: string * isStackedByIndex: boolean * stackedOverDimension: string * stackResultDimension: string * } */ declare function enableDataStack(seriesModel: SeriesModel, dimensionsInput: EnableDataStackDimensionsInput | EnableDataStackDimensionsInputLegacy, opt?: { stackedCoordDimension?: string; byIndex?: boolean; }): Pick, 'stackedDimension' | 'stackedByDimension' | 'isStackedByIndex' | 'stackedOverDimension' | 'stackResultDimension'>; declare function isDimensionStacked(data: SeriesData, stackedDim: string): boolean; declare function getStackedDimension(data: SeriesData, targetDim: string): DimensionName; declare type SSRItemType = 'chart' | 'legend'; /** * ECData stored on graphic element */ interface ECData { dataIndex?: number; dataModel?: DataModel; eventData?: ECEventData; seriesIndex?: number; dataType?: SeriesDataType; focus?: InnerFocus; blurScope?: BlurScope; ssrType?: SSRItemType; componentMainType?: ComponentMainType; componentIndex?: number; componentHighDownName?: string; tooltipConfig?: { name: string; option: ComponentItemTooltipOption; }; } declare const getECData: (hostObj: Element) => ECData; interface CoordDimensionDefinition extends DimensionDefinition { dimsDef?: (DimensionName | { name: DimensionName; defaultTooltip?: boolean; })[]; otherDims?: DataVisualDimensions; ordinalMeta?: OrdinalMeta; coordDim?: DimensionName; coordDimIndex?: DimensionIndex; } declare type CoordDimensionDefinitionLoose = CoordDimensionDefinition['name'] | CoordDimensionDefinition; declare type PrepareSeriesDataSchemaParams = { coordDimensions?: CoordDimensionDefinitionLoose[]; /** * Will use `source.dimensionsDefine` if not given. */ dimensionsDefine?: DimensionDefinitionLoose[]; /** * Will use `source.encodeDefine` if not given. */ encodeDefine?: HashMap | OptionEncode; dimensionsCount?: number; /** * Make default encode if user not specified. */ encodeDefaulter?: EncodeDefaulter; generateCoord?: string; generateCoordCount?: number; /** * If be able to omit unused dimension * Used to improve the performance on high dimension data. */ canOmitUnusedDimensions?: boolean; }; /** * For outside usage compat (like echarts-gl are using it). */ declare function createDimensions(source: Source | OptionSourceData, opt?: PrepareSeriesDataSchemaParams): SeriesDimensionDefine[]; /** * Enable the function that mouseover will trigger the emphasis state. * * NOTE: * This function should be used on the element with dataIndex, seriesIndex. * */ declare function enableHoverEmphasis(el: Element, focus?: InnerFocus, blurScope?: BlurScope): void; /** * Create a multi dimension List structure from seriesModel. */ declare function createList(seriesModel: SeriesModel): SeriesData, DefaultDataVisual>; declare const dataStack: { isDimensionStacked: typeof isDimensionStacked; enableDataStack: typeof enableDataStack; getStackedDimension: typeof getStackedDimension; }; /** * Externally used by echarts-gl. * Create scale * @param dataExtent * @param option If `option.type` * is specified, it can only be `'value'` currently. */ declare function createScale(dataExtent: number[], option: object | AxisBaseModel): Scale; /** * Mixin common methods to axis model */ declare function mixinAxisModelCommonMethods(Model: Model): void; declare function createTextStyle(textStyleModel: Model, opts?: { state?: DisplayState; }): TextStyleProps; declare const helper_d_getLayoutRect: typeof getLayoutRect; declare const helper_d_getECData: typeof getECData; declare const helper_d_createList: typeof createList; declare const helper_d_dataStack: typeof dataStack; declare const helper_d_createScale: typeof createScale; declare const helper_d_mixinAxisModelCommonMethods: typeof mixinAxisModelCommonMethods; declare const helper_d_createTextStyle: typeof createTextStyle; declare const helper_d_createDimensions: typeof createDimensions; declare const helper_d_createSymbol: typeof createSymbol; declare const helper_d_enableHoverEmphasis: typeof enableHoverEmphasis; declare namespace helper_d { export { helper_d_getLayoutRect as getLayoutRect, helper_d_getECData as getECData, helper_d_createList as createList, helper_d_dataStack as dataStack, helper_d_createScale as createScale, helper_d_mixinAxisModelCommonMethods as mixinAxisModelCommonMethods, helper_d_createTextStyle as createTextStyle, helper_d_createDimensions as createDimensions, helper_d_createSymbol as createSymbol, helper_d_enableHoverEmphasis as enableHoverEmphasis, }; } interface Platform { createCanvas(): HTMLCanvasElement; measureText(text: string, font?: string): { width: number; }; loadImage(src: string, onload: () => void | HTMLImageElement['onload'], onerror: () => void | HTMLImageElement['onerror']): HTMLImageElement; getTime(): number; } declare function setPlatformAPI(newPlatformApis: Partial): void; declare function parseGeoJSON(geoJson: GeoJSON | GeoJSONCompressed, nameProperty: string): GeoJSONRegion[]; /** * Linear mapping a value from domain to range * @param val * @param domain Domain extent domain[0] can be bigger than domain[1] * @param range Range extent range[0] can be bigger than range[1] * @param clamp Default to be false */ declare function linearMap(val: number, domain: number[], range: number[], clamp?: boolean): number; /** * Preserve the name `parsePercent` for backward compatibility, * and it's effectively published as `echarts.number.parsePercent`. */ declare const parsePercent: typeof parsePositionOption; /** * @see {parsePositionSizeOption} and also accept a string preset. * @see {PositionSizeOption} */ declare function parsePositionOption(option: unknown, percentBase: number, percentOffset?: number): number; declare function roundLegacy(x: number | string, precision?: number): number; declare function roundLegacy(x: number | string, precision: number, returnStr: false): number; declare function roundLegacy(x: number | string, precision: number, returnStr: true): string; /** * Inplacd asc sort arr. * The input arr will be modified. */ declare function asc(arr: T): T; /** * Get precision. * e.g. `getPrecisionSafe(100.123)` return `3`. * e.g. `getPrecisionSafe(100)` return `0`. */ declare function getPrecision(val: string | number): number; /** * Get precision with slow but safe method * e.g. `getPrecisionSafe(100.123)` return `3`. * e.g. `getPrecisionSafe(100)` return `0`. */ declare function getPrecisionSafe(val: string | number): number; /** * @deprecated Use `getAcceptableTickPrecision` instead. See bad case in `test/ut/spec/util/number.test.ts` * NOTE: originally introduced in commit `ff93e3e7f9ff24902e10d4469fd3187393b05feb` * * Minimal discernible data precision according to a single pixel. */ declare function getPixelPrecision(dataExtent: [number, number], pixelExtent: [number, number]): number; /** * Get a data of given precision, assuring the sum of percentages * in valueList is 1. * The largest remainder method is used. * https://en.wikipedia.org/wiki/Largest_remainder_method * * @param valueList a list of all data * @param idx index of the data to be processed in valueList * @param precision integer number showing digits of precision * @return percent ranging from 0 to 100 */ declare function getPercentWithPrecision(valueList: number[], idx: number, precision: number): number; declare const MAX_SAFE_INTEGER: number; /** * To 0 - 2 * PI, considering negative radian. */ declare function remRadian(radian: number): number; /** * @param {type} radian * @return {boolean} */ declare function isRadianAroundZero(val: number): boolean; /** * @param value valid type: number | string | Date, otherwise return `new Date(NaN)` * These values can be accepted: * + An instance of Date, represent a time in its own time zone. * + Or string in a subset of ISO 8601, only including: * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06', * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123', * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00', * all of which will be treated as local time if time zone is not specified * (see ). * + Or other string format, including (all of which will be treated as local time): * '2012', '2012-3-1', '2012/3/1', '2012/03/01', * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123' * + a timestamp, which represent a time in UTC. * @return date Never be null/undefined. If invalid, return `new Date(NaN)`. */ declare function parseDate(value: unknown): Date; /** * Quantity of a number. e.g. 0.1, 1, 10, 100 * * @param val * @return */ declare function quantity(val: number): number; /** * Exponent of the quantity of a number * e.g., 9876 equals to 9.876*10^3, so quantityExponent(9876) is 3 * e.g., 0.09876 equals to 9.876*10^-2, so quantityExponent(0.09876) is -2 * * @param val non-negative value * @return */ declare function quantityExponent(val: number): number; declare const NICE_MODE_ROUND: 1; declare const NICE_MODE_MIN: 2; /** * find a “nice” number approximately equal to x. Round the number if 'round', * take ceiling if 'round'. The primary observation is that the “nicest” * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers. * * See "Nice Numbers for Graph Labels" of Graphic Gems. * * @param val Non-negative value. * @return Niced number */ declare function nice(val: number, mode?: boolean | typeof NICE_MODE_ROUND | typeof NICE_MODE_MIN): number; /** * This code was copied from "d3.js" * . * See the license statement at the head of this file. * @param ascArr */ declare function quantile(ascArr: number[], p: number): number; declare type IntervalItem = { interval: [number, number]; close: [0 | 1, 0 | 1]; }; /** * Order intervals asc, and split them when overlap. * expect(numberUtil.reformIntervals([ * {interval: [18, 62], close: [1, 1]}, * {interval: [-Infinity, -70], close: [0, 0]}, * {interval: [-70, -26], close: [1, 1]}, * {interval: [-26, 18], close: [1, 1]}, * {interval: [62, 150], close: [1, 1]}, * {interval: [106, 150], close: [1, 1]}, * {interval: [150, Infinity], close: [0, 0]} * ])).toEqual([ * {interval: [-Infinity, -70], close: [0, 0]}, * {interval: [-70, -26], close: [1, 1]}, * {interval: [-26, 18], close: [0, 1]}, * {interval: [18, 62], close: [0, 1]}, * {interval: [62, 150], close: [0, 1]}, * {interval: [150, Infinity], close: [0, 0]} * ]); * @param list, where `close` mean open or close * of the interval, and Infinity can be used. * @return The origin list, which has been reformed. */ declare function reformIntervals(list: IntervalItem[]): IntervalItem[]; /** * [Numeric is defined as]: * `parseFloat(val) == val` * For example: * numeric: * typeof number except NaN, '-123', '123', '2e3', '-2e3', '011', 'Infinity', Infinity, * and they rounded by white-spaces or line-terminal like ' -123 \n ' (see es spec) * not-numeric: * null, undefined, [], {}, true, false, 'NaN', NaN, '123ab', * empty string, string with only white-spaces or line-terminal (see es spec), * 0x12, '0x12', '-0x12', 012, '012', '-012', * non-string, ... * * @test See full test cases in `test/ut/spec/util/number.js`. * @return Must be a typeof number. If not numeric, return NaN. */ declare function numericToNumber(val: unknown): number; /** * Definition of "numeric": see `numericToNumber`. */ declare function isNumeric(val: unknown): val is number; declare const number_d_linearMap: typeof linearMap; declare const number_d_asc: typeof asc; declare const number_d_getPrecision: typeof getPrecision; declare const number_d_getPrecisionSafe: typeof getPrecisionSafe; declare const number_d_getPixelPrecision: typeof getPixelPrecision; declare const number_d_getPercentWithPrecision: typeof getPercentWithPrecision; declare const number_d_parsePercent: typeof parsePercent; declare const number_d_MAX_SAFE_INTEGER: typeof MAX_SAFE_INTEGER; declare const number_d_remRadian: typeof remRadian; declare const number_d_isRadianAroundZero: typeof isRadianAroundZero; declare const number_d_parseDate: typeof parseDate; declare const number_d_quantity: typeof quantity; declare const number_d_quantityExponent: typeof quantityExponent; declare const number_d_nice: typeof nice; declare const number_d_quantile: typeof quantile; declare const number_d_reformIntervals: typeof reformIntervals; declare const number_d_isNumeric: typeof isNumeric; declare const number_d_numericToNumber: typeof numericToNumber; declare namespace number_d { export { number_d_linearMap as linearMap, roundLegacy as round, number_d_asc as asc, number_d_getPrecision as getPrecision, number_d_getPrecisionSafe as getPrecisionSafe, number_d_getPixelPrecision as getPixelPrecision, number_d_getPercentWithPrecision as getPercentWithPrecision, number_d_parsePercent as parsePercent, number_d_MAX_SAFE_INTEGER as MAX_SAFE_INTEGER, number_d_remRadian as remRadian, number_d_isRadianAroundZero as isRadianAroundZero, number_d_parseDate as parseDate, number_d_quantity as quantity, number_d_quantityExponent as quantityExponent, number_d_nice as nice, number_d_quantile as quantile, number_d_reformIntervals as reformIntervals, number_d_isNumeric as isNumeric, number_d_numericToNumber as numericToNumber, }; } declare const time_d_format: typeof format; declare const time_d_roundTime: typeof roundTime; declare namespace time_d { export { parseDate as parse, time_d_format as format, time_d_roundTime as roundTime, }; } declare const graphic_d_extendShape: typeof extendShape; declare const graphic_d_extendPath: typeof extendPath; declare const graphic_d_makePath: typeof makePath; declare const graphic_d_makeImage: typeof makeImage; declare const graphic_d_resizePath: typeof resizePath; declare const graphic_d_createIcon: typeof createIcon; declare const graphic_d_updateProps: typeof updateProps; declare const graphic_d_initProps: typeof initProps; declare const graphic_d_getTransform: typeof getTransform; declare const graphic_d_clipPointsByRect: typeof clipPointsByRect; declare const graphic_d_clipRectByRect: typeof clipRectByRect; declare const graphic_d_registerShape: typeof registerShape; declare const graphic_d_getShapeClass: typeof getShapeClass; type graphic_d_Group = Group; declare const graphic_d_Group: typeof Group; type graphic_d_Circle = Circle; declare const graphic_d_Circle: typeof Circle; type graphic_d_Ellipse = Ellipse; declare const graphic_d_Ellipse: typeof Ellipse; type graphic_d_Sector = Sector; declare const graphic_d_Sector: typeof Sector; type graphic_d_Ring = Ring; declare const graphic_d_Ring: typeof Ring; type graphic_d_Polygon = Polygon; declare const graphic_d_Polygon: typeof Polygon; type graphic_d_Polyline = Polyline; declare const graphic_d_Polyline: typeof Polyline; type graphic_d_Rect = Rect; declare const graphic_d_Rect: typeof Rect; type graphic_d_Line = Line; declare const graphic_d_Line: typeof Line; type graphic_d_BezierCurve = BezierCurve; declare const graphic_d_BezierCurve: typeof BezierCurve; type graphic_d_Arc = Arc; declare const graphic_d_Arc: typeof Arc; type graphic_d_IncrementalDisplayable = IncrementalDisplayable; declare const graphic_d_IncrementalDisplayable: typeof IncrementalDisplayable; type graphic_d_CompoundPath = CompoundPath; declare const graphic_d_CompoundPath: typeof CompoundPath; type graphic_d_LinearGradient = LinearGradient; declare const graphic_d_LinearGradient: typeof LinearGradient; type graphic_d_RadialGradient = RadialGradient; declare const graphic_d_RadialGradient: typeof RadialGradient; type graphic_d_BoundingRect = BoundingRect; declare const graphic_d_BoundingRect: typeof BoundingRect; declare namespace graphic_d { export { graphic_d_extendShape as extendShape, graphic_d_extendPath as extendPath, graphic_d_makePath as makePath, graphic_d_makeImage as makeImage, mergePath$1 as mergePath, graphic_d_resizePath as resizePath, graphic_d_createIcon as createIcon, graphic_d_updateProps as updateProps, graphic_d_initProps as initProps, graphic_d_getTransform as getTransform, graphic_d_clipPointsByRect as clipPointsByRect, graphic_d_clipRectByRect as clipRectByRect, graphic_d_registerShape as registerShape, graphic_d_getShapeClass as getShapeClass, graphic_d_Group as Group, ZRImage as Image, ZRText as Text, graphic_d_Circle as Circle, graphic_d_Ellipse as Ellipse, graphic_d_Sector as Sector, graphic_d_Ring as Ring, graphic_d_Polygon as Polygon, graphic_d_Polyline as Polyline, graphic_d_Rect as Rect, graphic_d_Line as Line, graphic_d_BezierCurve as BezierCurve, graphic_d_Arc as Arc, graphic_d_IncrementalDisplayable as IncrementalDisplayable, graphic_d_CompoundPath as CompoundPath, graphic_d_LinearGradient as LinearGradient, graphic_d_RadialGradient as RadialGradient, graphic_d_BoundingRect as BoundingRect, }; } declare const format_d_addCommas: typeof addCommas; declare const format_d_toCamelCase: typeof toCamelCase; declare const format_d_encodeHTML: typeof encodeHTML; declare const format_d_formatTpl: typeof formatTpl; declare const format_d_getTooltipMarker: typeof getTooltipMarker; declare const format_d_formatTime: typeof formatTime; declare const format_d_capitalFirst: typeof capitalFirst; declare const format_d_truncateText: typeof truncateText; declare const format_d_getTextRect: typeof getTextRect; declare namespace format_d { export { format_d_addCommas as addCommas, format_d_toCamelCase as toCamelCase, normalizeCssArray$1 as normalizeCssArray, format_d_encodeHTML as encodeHTML, format_d_formatTpl as formatTpl, format_d_getTooltipMarker as getTooltipMarker, format_d_formatTime as formatTime, format_d_capitalFirst as capitalFirst, format_d_truncateText as truncateText, format_d_getTextRect as getTextRect, }; } declare const util_d$1_map: typeof map; declare const util_d$1_each: typeof each; declare const util_d$1_indexOf: typeof indexOf; declare const util_d$1_inherits: typeof inherits; declare const util_d$1_reduce: typeof reduce; declare const util_d$1_filter: typeof filter; declare const util_d$1_bind: typeof bind; declare const util_d$1_curry: typeof curry; declare const util_d$1_isArray: typeof isArray; declare const util_d$1_isString: typeof isString; declare const util_d$1_isObject: typeof isObject; declare const util_d$1_isFunction: typeof isFunction; declare const util_d$1_extend: typeof extend; declare const util_d$1_defaults: typeof defaults; declare const util_d$1_clone: typeof clone; declare const util_d$1_merge: typeof merge; declare namespace util_d$1 { export { util_d$1_map as map, util_d$1_each as each, util_d$1_indexOf as indexOf, util_d$1_inherits as inherits, util_d$1_reduce as reduce, util_d$1_filter as filter, util_d$1_bind as bind, util_d$1_curry as curry, util_d$1_isArray as isArray, util_d$1_isString as isString, util_d$1_isObject as isObject, util_d$1_isFunction as isFunction, util_d$1_extend as extend, util_d$1_defaults as defaults, util_d$1_clone as clone, util_d$1_merge as merge, }; } declare class Browser { firefox: boolean; ie: boolean; edge: boolean; newEdge: boolean; weChat: boolean; version: string | number; } declare class Env { browser: Browser; node: boolean; wxa: boolean; worker: boolean; svgSupported: boolean; touchEventsSupported: boolean; pointerEventsSupported: boolean; domSupported: boolean; transformSupported: boolean; transform3dSupported: boolean; hasGlobalWindow: boolean; } declare const env: Env; declare function brushSingle(ctx: CanvasRenderingContext2D, el: Displayable): void; declare function extendComponentModel(proto: object): ComponentModel; declare function extendComponentView(proto: object): ChartView; declare function extendSeriesModel(proto: object): SeriesModel; declare function extendChartView(proto: object): ChartView; interface PolarOption extends ComponentOption, CircleLayoutOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin { mainType?: 'polar'; } declare type AngleAxisOption = AxisBaseOption & { mainType?: 'angleAxis'; /** * Index of host polar component */ polarIndex?: number; /** * Id of host polar component */ polarId?: string; startAngle?: number; endAngle?: number; clockwise?: boolean; axisLabel?: AxisBaseOption['axisLabel']; }; declare type RadiusAxisOption = AxisBaseOption & { mainType?: 'radiusAxis'; /** * Index of host polar component */ polarIndex?: number; /** * Id of host polar component */ polarId?: string; }; declare type ParallelLayoutDirection = 'horizontal' | 'vertical'; interface ParallelCoordinateSystemOption extends ComponentOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin { mainType?: 'parallel'; layout?: ParallelLayoutDirection; axisExpandable?: boolean; axisExpandCenter?: number; axisExpandCount?: number; axisExpandWidth?: number; axisExpandTriggerOn?: 'click' | 'mousemove'; axisExpandRate?: number; axisExpandDebounce?: number; axisExpandSlideTriggerArea?: [number, number, number]; axisExpandWindow?: number[]; parallelAxisDefault?: ParallelAxisOption; } declare type ParallelAxisOption = AxisBaseOption & { /** * 0, 1, 2, ... */ dim?: number | number[]; parallelIndex?: number; areaSelectStyle?: { width?: number; borderWidth?: number; borderColor?: ZRColor; color?: ZRColor; opacity?: number; }; realtime?: boolean; }; declare type Dependencies = { grid: XAXisOption | YAXisOption | AxisPointerOption; polar: AngleAxisOption | RadiusAxisOption; parallel: ParallelAxisOption; }; declare type DependenciesKeys = keyof Dependencies & string; declare type Arrayable = T | T[]; declare type GetMainType = Exclude; declare type ExtractComponentOption = OptionUnion extends { mainType?: ExtractMainType; } ? OptionUnion : never; declare type GetDependency = { [key in GetMainType]?: Arrayable>; }; declare type GetDependencies = GetDependency]>; declare type ComposeUnitOption = CheckMainType> & Omit & { [key in GetMainType]?: Arrayable>; } & GetDependencies>; declare type CheckMainType = string extends OptionUnionMainType ? never : {}; declare type ComposeOption = ComposeUnitOption & { baseOption?: ComposeUnitOption; options?: ComposeUnitOption[]; }; interface RadarIndicatorOption { name?: string; /** * @deprecated Use `name` instead. */ text?: string; min?: number; max?: number; color?: ColorString; axisType?: 'value' | 'log'; } interface RadarOption extends ComponentOption, CircleLayoutOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin { mainType?: 'radar'; startAngle?: number; clockwise?: boolean; shape?: 'polygon' | 'circle'; axisLine?: AxisBaseOption['axisLine']; axisTick?: AxisBaseOption['axisTick']; axisLabel?: AxisBaseOption['axisLabel']; splitLine?: AxisBaseOption['splitLine']; splitArea?: AxisBaseOption['splitArea']; axisName?: { show?: boolean; formatter?: string | ((name?: string, indicatorOpt?: InnerIndicatorAxisOption) => string); } & LabelOption; axisNameGap?: number; triggerEvent?: boolean; scale?: boolean; splitNumber?: number; boundaryGap?: CategoryAxisBaseOption['boundaryGap'] | ValueAxisBaseOption['boundaryGap']; indicator?: RadarIndicatorOption[]; } declare type InnerIndicatorAxisOption = AxisBaseOption & { showName?: boolean; }; interface CalendarMonthLabelFormatterCallbackParams { nameMap: string; yyyy: string; yy: string; /** * Month string. With 0 prefix. */ MM: string; /** * Month number */ M: number; } interface CalendarYearLabelFormatterCallbackParams { nameMap: string; /** * Start year */ start: string; /** * End year */ end: string; } interface CalendarOption extends ComponentOption, BoxLayoutOptionMixin { mainType?: 'calendar'; cellSize?: number | 'auto' | (number | 'auto')[]; orient?: LayoutOrient; splitLine?: { show?: boolean; lineStyle?: LineStyleOption; }; itemStyle?: ItemStyleOption; /** * // one year * range: 2017 * // one month * range: '2017-02' * // a range * range: ['2017-01-02', '2017-02-23'] * // note: they will be identified as ['2017-01-01', '2017-02-01'] * range: ['2017-01', '2017-02'] */ range?: OptionDataValueDate | (OptionDataValueDate)[]; dayLabel?: Omit & { /** * First day of week. */ firstDay?: number; /** * Margin between day label and axis line. * Can be percent string of cell size. */ margin?: number | string; /** * Position of week, at the beginning or end of the range. */ position?: 'start' | 'end'; /** * Week text content * * defaults to auto-detected locale by the browser or the specified locale by `echarts.init` function. * It supports any registered locale name (case-sensitive) or customized array. * index 0 always means Sunday. */ nameMap?: string | string[]; }; monthLabel?: Omit & { /** * Margin between month label and axis line. */ margin?: number; /** * Position of month label, at the beginning or end of the range. */ position?: 'start' | 'end'; /** * Month text content * * defaults to auto-detected locale by the browser or the specified locale by `echarts.init` function. * It supports any registered locale name (case-sensitive) or customized array. * index 0 always means Jan. */ nameMap?: string | string[]; formatter?: string | ((params: CalendarMonthLabelFormatterCallbackParams) => string); }; yearLabel?: Omit & { /** * Margin between year label and axis line. */ margin?: number; /** * Position of year label, at the beginning or end of the range. */ position?: 'top' | 'bottom' | 'left' | 'right'; formatter?: string | ((params: CalendarYearLabelFormatterCallbackParams) => string); }; } declare const MatrixCellLayoutInfoType: { readonly level: 1; readonly leaf: 2; readonly nonLeaf: 3; }; declare type MatrixCellLayoutInfoType = (typeof MatrixCellLayoutInfoType)[keyof typeof MatrixCellLayoutInfoType]; interface MatrixCellLayoutInfo { type: MatrixCellLayoutInfoType; id: Point; xy: number; wh: number; dim: MatrixDim; } declare type MatrixXYLocator = MatrixCellLayoutInfo['id']['x'] | MatrixCellLayoutInfo['id']['y']; interface MatrixDimensionCell extends MatrixCellLayoutInfo { span: Point; level: number; firstLeafLocator: MatrixXYLocator; ordinal: OrdinalNumber; option: MatrixDimensionCellOption; rect: RectLike; } /** * Computed properties of a certain tree level. * In most cases this is used to describe level size or locate corner cells. */ interface MatrixDimensionLevelInfo extends MatrixCellLayoutInfo { option: MatrixDimensionLevelOption | NullUndefined$1; } /** * Lifetime: the same with `MatrixModel`, but different from `coord/Matrix`. */ declare class MatrixDim { readonly dim: 'x' | 'y'; readonly dimIdx: number; private _cells; private _levels; private _leavesCount; private _model; private _ordinalMeta; private _scale; private _uniqueValueGen; constructor(dim: 'x' | 'y', dimModel: MatrixDimensionModel); private _initByDimModelData; private _initBySeriesData; private _setCellId; private _initCellsId; private _initLevelIdOptions; shouldShow(): boolean; /** * Iterate leaves (they are layout units) if dimIdx === this.dimIdx. * Iterate levels if dimIdx !== this.dimIdx. */ resetLayoutIterator(it: ListIterator | NullUndefined$1, dimIdx: number, startLocator?: MatrixXYLocator | NullUndefined$1, count?: number | NullUndefined$1): ListIterator; resetCellIterator(it?: ListIterator): ListIterator; resetLevelIterator(it?: ListIterator): ListIterator; getLayout(outRect: RectLike, dimIdx: number, locator: MatrixXYLocator): void; /** * Get leaf cell or get level info. * Should be able to return null/undefined if not found on x or y, thus input `dimIdx` is needed. */ getUnitLayoutInfo(dimIdx: number, locator: MatrixXYLocator): MatrixCellLayoutInfo | NullUndefined$1; /** * Get dimension cell by data, including leaves and non-leaves. */ getCell(value: MatrixCoordValueOption): MatrixDimensionCell | NullUndefined$1; /** * Get leaf count or get level count. */ getLocatorCount(dimIdx: number): number; getOrdinalMeta(): OrdinalMeta; } interface MatrixOption extends ComponentOption, BoxLayoutOptionMixin { mainType?: 'matrix'; x?: MatrixDimensionOption; y?: MatrixDimensionOption; body?: MatrixBodyOption; corner?: MatrixCornerOption; backgroundStyle?: ItemStyleOption; borderZ2?: number; tooltip?: CommonTooltipOption; triggerEvent?: boolean; } interface MatrixBodyCornerBaseOption extends MatrixCellStyleOption { /** * Only specify some special cell definitions. * It can represent both body cells and top-left corner cells. * * [body/corner cell locating]: * The rule is uniformly applied, such as, in `matrix.dataToPoint` * and `matrix.dataToLayout` and `xxxComponent.coord`. * Suppose the matrix.x/y dimensions (header) are defined as: * matrix: { * x: [{ value: 'Xa0', children: ['Xb0', 'Xb1'] }, 'Xa1'], * y: [{ value: 'Ya0', children: ['Yb0', 'Yb1'] }], * } * ----------------------------------------- * | | | Xa0 | | * |-------+-------+---------------| Xa1 | * |cornerQ|cornerP| Xb0 | Xb1 | | * |-------+-------+-------+-------+-------- * | | Yb0 | bodyR | bodyS | | * | Ya0 |-------+-------+---------------| * | | Yb1 | | bodyT | * |---------------|------------------------ * "Locator number" (`MatrixXYLocator`): * The term `locator` refers to a integer number to locate cells on x or y direction. * Use the top-left cell of the body as the origin point (0, 0), * the non-negative locator indicates the right/bottom of the origin point; * the negative locator indicates the left/top of the origin point. * "Ordinal number" (`OrdinalNumber`): * This term follows the same meaning as that in category axis of cartesian. They are * non-negative integer, designating each string `matrix.x.data[i].value`/`matrix.y.data[i].value`. * 'Xb0', 'Xb2', 'Xa1', 'Xa0' are assigned with the ordinal numbers 0, 1, 2, 3. * For every leaf dimension cell, `OrdinalNumber` and `MatrixXYLocator` is the same. * * A cell or pixel point or rect can be determined/located by a pair of `MatrixCoordValueOption`. * See also `MatrixBodyCornerCellOption['coord']`. * * - The body cell `bodyS` above can be located by: * - `coord: [1, 0]` (`MatrixXYLocator` or `OrdinalNumber`, which is a non-negative integer) * - `coord: ['Xb1', 'Yb0']` * - `coord: ['Xb1', 0]` (mix them) * - The corner cell `cornerQ` above can be located by: * - `coord: [-2, -1]` (negative `MatrixXYLocator`) * - But it is NOT supported to use `coord: ['Y1_0', 'X1_0']` (XY transposed form) here. * It's mathematically sound, but may introduce confusion and unnecessary * complexity (consider the 'Xa1' case), and corner locating is not frequently used. * - `mergeCells`: Body cells or corner cells can be merged, such as "bodyT" above, an input * - The merging can be defined by: * `matrix.data[i]: {coord: [['Xb1', 'Xa1'], 'Yb0'], mergeCells: true}`. * - Input `['Xa1', 'Yb1']` to `dataToPoint` will get a point in the center of "bodyT". * - Input `['Xa1', 'Yb1']` to `dataToLayout` will get a rect of the "bodyT". * - If inputing a non-leaf dimension cell to locate, such as `['Xa0', 'Yb0']`, * - it returns only according to the center of the dimension cells, regardless of the body span. * (therefore, the result can be on the boundary of two body cells.) * And the oridinal number assigned to 'Xa0' is 3, thus input `[3, 'Yb0']` get the some result. * - The dimension (header) cell can be located by negative `MatrixXYLocator`. For example: * - The center of the node 'Ya0' can be located by `[-2, 'Ya0']`. */ data?: MatrixBodyCornerCellOption[]; } interface MatrixBodyOption extends MatrixBodyCornerBaseOption { } interface MatrixCornerOption extends MatrixBodyCornerBaseOption { } /** * Commonly used as `MatrixCoordRangeOption[]` * Can locate a cell or a rect range of cells. * `[2, 8]` indicates a cell. * `[2, null/undefined/NaN]` means y is not relevant. * `[null/undefined/NaN, 8]` means x is not relevant. * `[[2, 5], 8]` indicates a rect of cells in x range of `2~5` and y `8`. * `[[2, 5], null/undefined/NaN]` indicates a x range of `2~5` and y is not relevant. * `[[2, 5], [7, 8]]` indicates a rect of cells in x range of `2~5` and y range of `7~8`. * `['aNonLeaf', 8]` indicates a rect of cells in x range of `aNonLeaf` and y `8`. * @see {parseCoordRangeOption} * @see {MatrixBodyCornerBaseOption['data']} */ declare type MatrixCoordRangeOption = (MatrixCoordValueOption | MatrixCoordValueOption[] | NullUndefined$1); /** * `OrdinalRawValue` is originally provided by `matrix.x/y.data[i].value` or `series.data`. */ declare type MatrixCoordValueOption = OrdinalRawValue | OrdinalNumber | MatrixXYLocator; interface MatrixBaseCellOption extends MatrixCellStyleOption { } interface MatrixBodyCornerCellOption extends MatrixBaseCellOption { value?: string; coord?: MatrixCoordRangeOption[]; coordClamp?: boolean; mergeCells?: boolean; } interface MatrixDimensionOption extends MatrixCellStyleOption, MatrixDimensionLevelOption { type?: 'category'; show?: boolean; data?: MatrixDimensionCellLooseOption[]; length?: number; levels?: (MatrixDimensionLevelOption | NullUndefined$1)[]; dividerLineStyle?: LineStyleOption; } interface MatrixDimensionCellOption extends MatrixBaseCellOption { value?: string | NullUndefined$1; size?: PositionSizeOption; children?: MatrixDimensionCellOption[]; } declare type MatrixDimensionCellLooseOption = MatrixDimensionCellOption | MatrixDimensionCellOption['value']; interface MatrixDimensionLevelOption { levelSize?: PositionSizeOption; } interface MatrixLabelOption extends LabelOption { formatter?: string | ((params: MatrixLabelFormatterParams) => string); } interface MatrixLabelFormatterParams { componentType: 'matrix'; componentIndex: number; name: string; value: unknown; coord: MatrixXYLocator[]; $vars: readonly ['name', 'value', 'coord']; } /** * Two levels of cascade inheritance: * - priority-high: style options defined in `matrix.x/y/coner/body.data[i]` (in cell) * - priority-low: style options defined in `matrix.x/y/coner/body` */ interface MatrixCellStyleOption { label?: MatrixLabelOption; itemStyle?: ItemStyleOption; cursor?: string; silent?: boolean | NullUndefined$1; z2?: number; } interface MatrixTooltipFormatterParams { componentType: 'matrix'; matrixIndex: number; name: string; $vars: ['name', 'xyLocator']; } interface MatrixDimensionModel extends Model { } declare class MatrixDimensionModel extends Model { dim: MatrixDim; getOrdinalMeta(): OrdinalMeta; } declare type IconStyle = ItemStyleOption & { textFill?: LabelOption['color']; textBackgroundColor?: LabelOption['backgroundColor']; textPosition?: LabelOption['position']; textAlign?: LabelOption['align']; textBorderRadius?: LabelOption['borderRadius']; textPadding?: LabelOption['padding']; textFontFamily?: LabelOption['fontFamily']; textFontSize?: LabelOption['fontSize']; textFontWeight?: LabelOption['fontWeight']; textFontStyle?: LabelOption['fontStyle']; }; interface ToolboxFeatureOption { show?: boolean; title?: string | Partial>; icon?: string | Partial>; iconStyle?: IconStyle; emphasis?: { iconStyle?: IconStyle; }; iconStatus?: Partial>; onclick?: () => void; } interface ToolboxTooltipFormatterParams { componentType: 'toolbox'; name: string; title: string; $vars: ['name', 'title']; } interface ToolboxOption extends ComponentOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, BorderOptionMixin { mainType?: 'toolbox'; show?: boolean; orient?: LayoutOrient; backgroundColor?: ZRColor; borderRadius?: number | number[]; padding?: number | number[]; itemSize?: number; itemGap?: number; showTitle?: boolean; iconStyle?: ItemStyleOption; emphasis?: { iconStyle?: ItemStyleOption; }; textStyle?: LabelOption; tooltip?: CommonTooltipOption; /** * Write all supported features in the final export option. */ feature?: Partial>; } interface TitleTextStyleOption extends LabelOption { width?: number; } interface TitleOption extends ComponentOption, BoxLayoutOptionMixin, BorderOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin { mainType?: 'title'; show?: boolean; text?: string; /** * Link to url */ link?: string; target?: 'self' | 'blank'; subtext?: string; sublink?: string; subtarget?: 'self' | 'blank'; textAlign?: ZRTextAlign; textVerticalAlign?: ZRTextVerticalAlign; /** * @deprecated Use textVerticalAlign instead */ textBaseline?: ZRTextVerticalAlign; backgroundColor?: ZRColor; /** * Padding between text and border. * Support to be a single number or an array. */ padding?: number | number[]; /** * Gap between text and subtext */ itemGap?: number; textStyle?: TitleTextStyleOption; subtextStyle?: TitleTextStyleOption; /** * If trigger mouse or touch event */ triggerEvent?: boolean; /** * Radius of background border. */ borderRadius?: number | number[]; } declare function install$1(registers: EChartsExtensionInstallRegisters): void; /** * [NOTE]: thumbnail is implemented as a component, rather than internal data strucutrue, * due to the possibility of serveing geo and related series with a single thumbnail, * and enable to apply some common layout feature, such as matrix coord sys. */ interface ThumbnailOption extends ComponentOption, BoxLayoutOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin { mainType?: 'thumbnail'; show?: boolean; itemStyle?: ItemStyleOption; windowStyle?: ItemStyleOption; seriesIndex?: number | number[]; seriesId?: string | string[]; } interface TimelineControlStyle extends ItemStyleOption { show?: boolean; showPlayBtn?: boolean; showPrevBtn?: boolean; showNextBtn?: boolean; itemSize?: number; itemGap?: number; position?: 'left' | 'right' | 'top' | 'bottom'; playIcon?: string; stopIcon?: string; prevIcon?: string; nextIcon?: string; playBtnSize?: number | string; stopBtnSize?: number | string; nextBtnSize?: number | string; prevBtnSize?: number | string; } interface TimelineCheckpointStyle extends ItemStyleOption, SymbolOptionMixin { animation?: boolean; animationDuration?: number; animationEasing?: ZREasing; } interface TimelineLineStyleOption extends LineStyleOption { show?: boolean; } interface TimelineLabelOption extends Omit { show?: boolean; position?: 'auto' | 'left' | 'right' | 'top' | 'bottom' | number; interval?: 'auto' | number; formatter?: string | ((value: string | number, index: number) => string); } interface TimelineDataItemOption extends SymbolOptionMixin { value?: OptionDataValue; itemStyle?: ItemStyleOption; label?: TimelineLabelOption; checkpointStyle?: TimelineCheckpointStyle; emphasis?: { itemStyle?: ItemStyleOption; label?: TimelineLabelOption; checkpointStyle?: TimelineCheckpointStyle; }; progress?: { lineStyle?: TimelineLineStyleOption; itemStyle?: ItemStyleOption; label?: TimelineLabelOption; }; tooltip?: boolean; } interface TimelineOption extends ComponentOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, SymbolOptionMixin { mainType?: 'timeline'; backgroundColor?: ZRColor; borderColor?: ColorString; borderWidth?: number; tooltip?: CommonTooltipOption & { trigger?: 'item'; }; show?: boolean; axisType?: 'category' | 'time' | 'value'; currentIndex?: number; autoPlay?: boolean; rewind?: boolean; loop?: boolean; playInterval?: number; realtime?: boolean; controlPosition?: 'left' | 'right' | 'top' | 'bottom'; padding?: number | number[]; orient?: LayoutOrient; inverse?: boolean; replaceMerge?: GlobalModelSetOptionOpts['replaceMerge']; lineStyle?: TimelineLineStyleOption; itemStyle?: ItemStyleOption; checkpointStyle?: TimelineCheckpointStyle; controlStyle?: TimelineControlStyle; label?: TimelineLabelOption; emphasis?: { lineStyle?: TimelineLineStyleOption; itemStyle?: ItemStyleOption; checkpointStyle?: TimelineCheckpointStyle; controlStyle?: TimelineControlStyle; label?: TimelineLabelOption; }; progress?: { lineStyle?: TimelineLineStyleOption; itemStyle?: ItemStyleOption; label?: TimelineLabelOption; }; data?: (OptionDataValue | TimelineDataItemOption)[]; } interface SliderTimelineOption extends TimelineOption { } interface ScrollableLegendOption extends LegendOption { scrollDataIndex?: number; /** * Gap between each page button */ pageButtonItemGap?: number; /** * Gap between page buttons group and legend items. */ pageButtonGap?: number; pageButtonPosition?: 'start' | 'end'; pageFormatter?: string | ((param: { current: number; total: number; }) => string); pageIcons?: { horizontal?: string[]; vertical?: string[]; }; pageIconColor?: ZRColor; pageIconInactiveColor?: ZRColor; pageIconSize?: number; pageTextStyle?: LabelOption; animationDurationUpdate?: number; } interface DataZoomOption extends ComponentOption { mainType?: 'dataZoom'; /** * Default auto by axisIndex */ orient?: LayoutOrient; /** * Default the first horizontal category axis. */ xAxisIndex?: ModelFinderIndexQuery; xAxisId?: ModelFinderIdQuery; /** * Default the first vertical category axis. */ yAxisIndex?: ModelFinderIndexQuery; yAxisId?: ModelFinderIdQuery; radiusAxisIndex?: ModelFinderIndexQuery; radiusAxisId?: ModelFinderIdQuery; angleAxisIndex?: ModelFinderIndexQuery; angleAxisId?: ModelFinderIdQuery; singleAxisIndex?: ModelFinderIndexQuery; singleAxisId?: ModelFinderIdQuery; /** * Possible values: 'filter' or 'empty' or 'weakFilter'. * 'filter': data items which are out of window will be removed. This option is * applicable when filtering outliers. For each data item, it will be * filtered if one of the relevant dimensions is out of the window. * 'weakFilter': data items which are out of window will be removed. This option * is applicable when filtering outliers. For each data item, it will be * filtered only if all of the relevant dimensions are out of the same * side of the window. * 'empty': data items which are out of window will be set to empty. * This option is applicable when user should not neglect * that there are some data items out of window. * 'none': Do not filter. * Taking line chart as an example, line will be broken in * the filtered points when filterModel is set to 'empty', but * be connected when set to 'filter'. */ filterMode?: 'filter' | 'weakFilter' | 'empty' | 'none'; /** * Dispatch action by the fixed rate, avoid frequency. * default 100. Do not throttle when use null/undefined. * If animation === true and animationDurationUpdate > 0, * default value is 100, otherwise 20. */ throttle?: number | null | undefined; /** * Start percent. 0 ~ 100 */ start?: number; /** * End percent. 0 ~ 100 */ end?: number; /** * Start value. If startValue specified, start is ignored */ startValue?: number | string | Date; /** * End value. If endValue specified, end is ignored. */ endValue?: number | string | Date; /** * Min span percent, 0 - 100 * The range of dataZoom can not be smaller than that. */ minSpan?: number; /** * Max span percent, 0 - 100 * The range of dataZoom can not be larger than that. */ maxSpan?: number; minValueSpan?: number; maxValueSpan?: number; rangeMode?: ['value' | 'percent', 'value' | 'percent']; realtime?: boolean; textStyle?: LabelOption; } interface SliderHandleLabelOption { show?: boolean; } interface SliderDataZoomOption extends DataZoomOption, BoxLayoutOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin { show?: boolean; /** * Slider dataZoom don't support textStyle */ /** * Background of slider zoom component */ backgroundColor?: ZRColor; /** * @deprecated Use borderColor instead */ /** * border color of the box. For compatibility, * if dataBackgroundColor is set, borderColor * is ignored. */ borderColor?: ZRColor; /** * Border radius of the box. */ borderRadius?: number | number[]; dataBackground?: { lineStyle?: LineStyleOption; areaStyle?: AreaStyleOption; }; selectedDataBackground?: { lineStyle?: LineStyleOption; areaStyle?: AreaStyleOption; }; /** * Color of selected area. */ fillerColor?: ZRColor; /** * @deprecated Use handleStyle instead */ handleIcon?: string; handleLabel?: SliderHandleLabelOption; /** * number: height of icon. width will be calculated according to the aspect of icon. * string: percent of the slider height. width will be calculated according to the aspect of icon. */ handleSize?: string | number; handleStyle?: ItemStyleOption; /** * Icon to indicate it is a draggable panel. */ moveHandleIcon?: string; moveHandleStyle?: ItemStyleOption; /** * Height of handle rect. Can be a percent string relative to the slider height. */ moveHandleSize?: number; /** * The precision only used on displayed labels. * NOTICE: Specifying the "value precision" or "roaming step" is not allowed. * `getAcceptableTickPrecision` is used for that. See `AxisProxy` for reasons. */ labelPrecision?: number | 'auto'; labelFormatter?: string | ((value: number, valueStr: string) => string); showDetail?: boolean; showDataShadow?: 'auto' | boolean; zoomLock?: boolean; textStyle?: LabelOption; /** * If eable select by brushing */ brushSelect?: boolean; brushStyle?: ItemStyleOption; emphasis?: { handleLabel?: SliderHandleLabelOption; handleStyle?: ItemStyleOption; moveHandleStyle?: ItemStyleOption; }; /** * @private * Distance between the slider and the edge of the chart. */ defaultLocationEdgeGap?: number; } interface InsideDataZoomOption extends DataZoomOption { /** * Whether disable this inside zoom. */ disabled?: boolean; /** * Whether disable zoom but only pan. */ zoomLock?: boolean; zoomOnMouseWheel?: boolean | 'shift' | 'ctrl' | 'alt'; moveOnMouseMove?: boolean | 'shift' | 'ctrl' | 'alt'; moveOnMouseWheel?: boolean | 'shift' | 'ctrl' | 'alt'; preventDefaultMouseMove?: boolean; /** * Mouse cursor styles on states "can grab" and "grabbing". */ cursorGrab?: string; cursorGrabbing?: string; /** * Inside dataZoom don't support textStyle */ textStyle?: never; } interface ContinuousVisualMapOption extends VisualMapOption { align?: 'auto' | 'left' | 'right' | 'top' | 'bottom'; /** * This prop effect default component type determine * @see echarts/component/visualMap/typeDefaulter. */ calculable?: boolean; /** * selected range. In default case `range` is `[min, max]` * and can auto change along with user interaction or action "selectDataRange", * until user specified a range. * @see unboundedRange for the special case when `range[0]` or `range[1]` touch `min` or `max`. */ range?: number[]; /** * Whether to treat the range as unbounded when `range` touches `min` or `max`. * - `true`: * when `range[0]` <= `min`, the actual range becomes `[-Infinity, range[1]]`; * when `range[1]` >= `max`, the actual range becomes `[range[0], Infinity]`. * NOTE: * - This provides a way to ensure all data can be considered in-range when `min`/`max` * are not precisely known. * - Default is `true` for backward compatibility. * - Piecewise VisualMap does not need it, since it can define unbounded range in each piece, * such as "< 12", ">= 300". * - `false`: * Disable the unbounded range behavior. * Use case: `min`/`max` reflect the normal data range, and some outlier data should always be * treated as out of range. */ unboundedRange?: boolean; /** * Whether to enable hover highlight. */ hoverLink?: boolean; /** * The extent of hovered data. */ hoverLinkDataSize?: number; /** * Whether trigger hoverLink when hover handle. * If not specified, follow the value of `realtime`. */ hoverLinkOnHandle?: boolean; handleIcon?: string; handleSize?: string | number; handleStyle?: ItemStyleOption; indicatorIcon?: string; indicatorSize?: string | number; indicatorStyle?: ItemStyleOption; emphasis?: { handleStyle?: ItemStyleOption; }; } interface VisualPiece extends VisualOptionPiecewise { min?: number; max?: number; lt?: number; gt?: number; lte?: number; gte?: number; value?: number; label?: string; } /** * Order Rule: * * option.categories / option.pieces / option.text / option.selected: * If !option.inverse, * Order when vertical: ['top', ..., 'bottom']. * Order when horizontal: ['left', ..., 'right']. * If option.inverse, the meaning of * the order should be reversed. * * this._pieceList: * The order is always [low, ..., high]. * * Mapping from location to low-high: * If !option.inverse * When vertical, top is high. * When horizontal, right is high. * If option.inverse, reverse. */ interface PiecewiseVisualMapOption extends VisualMapOption { align?: 'auto' | 'left' | 'right'; minOpen?: boolean; maxOpen?: boolean; /** * When put the controller vertically, it is the length of * horizontal side of each item. Otherwise, vertical side. * When put the controller vertically, it is the length of * vertical side of each item. Otherwise, horizontal side. */ itemWidth?: number; itemHeight?: number; itemSymbol?: string; pieces?: VisualPiece[]; /** * category names, like: ['some1', 'some2', 'some3']. * Attr min/max are ignored when categories set. See "Order Rule" */ categories?: string[]; /** * If set to 5, auto split five pieces equally. * If set to 0 and component type not set, component type will be * determined as "continuous". (It is less reasonable but for ec2 * compatibility, see echarts/component/visualMap/typeDefaulter) */ splitNumber?: number; /** * Object. If not specified, means selected. When pieces and splitNumber: {'0': true, '5': true} * When categories: {'cate1': false, 'cate3': true} When selected === false, means all unselected. */ selected?: Dictionary; selectedMode?: 'multiple' | 'single' | boolean; /** * By default, when text is used, label will hide (the logic * is remained for compatibility reason) */ showLabel?: boolean; itemGap?: number; hoverLink?: boolean; } interface MarkLineStateOption { lineStyle?: LineStyleOption; /** * itemStyle for symbol */ itemStyle?: ItemStyleOption; label?: SeriesLineLabelOption; z2?: number; } interface MarkLineDataItemOptionBase extends MarkLineStateOption, StatesOptionMixin { name?: string; } interface MarkLine1DDataItemOption extends MarkLineDataItemOptionBase { xAxis?: number | string; yAxis?: number | string; type?: MarkerStatisticType; /** * When using statistic method with type. * valueIndex and valueDim can be specify which dim the statistic is used on. */ valueIndex?: number; valueDim?: string; /** * Symbol for both two ends */ symbol?: string[] | string; symbolSize?: number[] | number; symbolRotate?: number[] | number; symbolOffset?: number | string | (number | string)[]; } interface MarkLine2DDataItemDimOption extends MarkLineDataItemOptionBase, SymbolOptionMixin, MarkerPositionOption { } declare type MarkLine2DDataItemOption = [ MarkLine2DDataItemDimOption, MarkLine2DDataItemDimOption ]; interface MarkLineOption extends MarkerOption, MarkLineStateOption, StatesOptionMixin { mainType?: 'markLine'; symbol?: string[] | string; symbolSize?: number[] | number; symbolRotate?: number[] | number; symbolOffset?: number | string | (number | string)[] | (number | string)[][]; /** * Precision used on statistic method */ precision?: number; data?: (MarkLine1DDataItemOption | MarkLine2DDataItemOption)[]; } interface MarkPointStateOption { itemStyle?: ItemStyleOption; label?: SeriesLabelOption; z2?: number; } interface MarkPointDataItemOption extends MarkPointStateOption, StatesOptionMixin, SymbolOptionMixin, MarkerPositionOption { name: string; } interface MarkPointOption extends MarkerOption, SymbolOptionMixin, StatesOptionMixin, MarkPointStateOption { mainType?: 'markPoint'; precision?: number; data?: MarkPointDataItemOption[]; } declare type LineDataValue = OptionDataValue | OptionDataValue[]; interface LineStateOptionMixin { emphasis?: { focus?: DefaultEmphasisFocus; scale?: boolean | number; }; } interface LineStateOption { itemStyle?: ItemStyleOption; label?: SeriesLabelOption; endLabel?: LineEndLabelOption; } interface LineDataItemOption extends SymbolOptionMixin, LineStateOption, StatesOptionMixin { name?: string; value?: LineDataValue; } interface LineEndLabelOption extends SeriesLabelOption { valueAnimation?: boolean; } interface LineSeriesOption extends SeriesOption, LineStateOptionMixin & { emphasis?: { lineStyle?: Omit & { width?: LineStyleOption['width'] | 'bolder'; }; areaStyle?: AreaStyleOption; }; blur?: { lineStyle?: LineStyleOption; areaStyle?: AreaStyleOption; }; }>, LineStateOption, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesStackOptionMixin, SeriesSamplingOptionMixin, SymbolOptionMixin, SeriesEncodeOptionMixin { type?: 'line'; coordinateSystem?: 'cartesian2d' | 'polar'; clip?: boolean; label?: SeriesLabelOption; endLabel?: LineEndLabelOption; lineStyle?: LineStyleOption; areaStyle?: AreaStyleOption & { origin?: 'auto' | 'start' | 'end' | number; }; step?: false | 'start' | 'end' | 'middle'; smooth?: boolean | number; smoothMonotone?: 'x' | 'y' | 'none'; connectNulls?: boolean; showSymbol?: boolean; showAllSymbol?: 'auto' | boolean; data?: (LineDataValue | LineDataItemOption)[]; /** * @deprecated * This option has been deprecated since v6.0.1. * Use `triggerEvent: 'line'` for only line event or `triggerEvent: true` for both line and area event. */ triggerLineEvent?: boolean; /** * Whether to trigger event when hovering on the line or the area * @since v6.0.1 */ triggerEvent?: boolean | 'line' | 'area'; } interface BaseBarSeriesOption extends SeriesOption, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin { /** * Min height of bar */ barMinHeight?: number; /** * Min angle of bar. Available on polar coordinate system. */ barMinAngle?: number; /** * Max width of bar. Defaults to 1 on cartesian coordinate system. Otherwise it's null. */ barMaxWidth?: number | string; barMinWidth?: number | string; /** * Bar width. Will be calculated automatically. * Can be pixel width or percent string. */ barWidth?: number | string; /** * Gap between each bar inside category. Default to be 30%. Can be an aboslute pixel value */ barGap?: string | number; /** * @private */ defaultBarGap?: string | number; /** * Gap between each category. Default to be 20%. can be an absolute pixel value. */ barCategoryGap?: string | number; large?: boolean; largeThreshold?: number; } declare type PolarBarLabelPositionExtra = 'start' | 'insideStart' | 'middle' | 'end' | 'insideEnd'; declare type BarSeriesLabelOption = SeriesLabelOption; interface BarStateOption { itemStyle?: BarItemStyleOption; label?: BarSeriesLabelOption; } interface BarStatesMixin { emphasis?: DefaultStatesMixinEmphasis; } interface BarItemStyleOption extends ItemStyleOption { borderRadius?: (number | string)[] | number | string; } interface BarDataItemOption extends BarStateOption, StatesOptionMixin, OptionDataItemObject { cursor?: string; } interface BarSeriesOption extends BaseBarSeriesOption, BarStatesMixin>, BarStateOption, SeriesStackOptionMixin, SeriesSamplingOptionMixin, SeriesEncodeOptionMixin { type?: 'bar'; coordinateSystem?: 'cartesian2d' | 'polar'; clip?: boolean; /** * If use caps on two sides of bars * Only available on tangential polar bar */ roundCap?: boolean; showBackground?: boolean; backgroundStyle?: ItemStyleOption & { borderRadius?: number | number[]; }; data?: (BarDataItemOption | OptionDataValue | OptionDataValue[])[]; realtimeSort?: boolean; } interface ScatterStateOption { itemStyle?: ItemStyleOption; label?: SeriesLabelOption; } interface ScatterStatesOptionMixin { emphasis?: { focus?: DefaultEmphasisFocus; scale?: boolean | number; }; } interface ScatterDataItemOption extends SymbolOptionMixin, ScatterStateOption, StatesOptionMixin, OptionDataItemObject { } interface ScatterSeriesOption extends SeriesOption, ScatterStatesOptionMixin>, ScatterStateOption, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SeriesLargeOptionMixin, SeriesStackOptionMixin, SymbolOptionMixin, SeriesEncodeOptionMixin { type?: 'scatter'; coordinateSystem?: string; cursor?: string; clip?: boolean; data?: (ScatterDataItemOption | OptionDataValue | OptionDataValue[])[] | ArrayLike; } interface PieItemStyleOption extends ItemStyleOption { borderRadius?: (number | string)[] | number | string; } interface PieCallbackDataParams extends CallbackDataParams { percent: number; } interface PieStateOption { itemStyle?: PieItemStyleOption; label?: PieLabelOption; labelLine?: PieLabelLineOption; } interface PieLabelOption extends Omit { rotate?: number | boolean | 'radial' | 'tangential' | 'tangential-noflip'; alignTo?: 'none' | 'labelLine' | 'edge'; edgeDistance?: string | number; /** * @deprecated Use `edgeDistance` instead */ margin?: string | number; bleedMargin?: number; distanceToLabelLine?: number; position?: SeriesLabelOption['position'] | 'outer' | 'inner' | 'center' | 'outside'; } interface PieLabelLineOption extends LabelLineOption { /** * Max angle between labelLine and surface normal. * 0 - 180 */ maxSurfaceAngle?: number; } interface ExtraStateOption { emphasis?: { focus?: DefaultEmphasisFocus; scale?: boolean; scaleSize?: number; }; } interface PieDataItemOption extends OptionDataItemObject, PieStateOption, StatesOptionMixin { cursor?: string; } interface PieSeriesOption extends Omit, ExtraStateOption>, 'labelLine'>, PieStateOption, CircleLayoutOptionMixin<{ centerExtra: string | number; }>, SeriesOnGeoOptionMixin, SeriesOnCartesianOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, SeriesEncodeOptionMixin { type?: 'pie'; roseType?: 'radius' | 'area'; clockwise?: boolean; startAngle?: number; endAngle?: number | 'auto'; padAngle?: number; minAngle?: number; minShowLabelAngle?: number; selectedOffset?: number; avoidLabelOverlap?: boolean; percentPrecision?: number; stillShowZeroSum?: boolean; animationType?: 'expansion' | 'scale'; animationTypeUpdate?: 'transition' | 'expansion'; showEmptyCircle?: boolean; emptyCircleStyle?: PieItemStyleOption; data?: (OptionDataValueNumeric | OptionDataValueNumeric[] | PieDataItemOption)[]; } declare type RadarSeriesDataValue = OptionDataValue[]; interface RadarStatesMixin { emphasis?: DefaultStatesMixinEmphasis; } interface RadarSeriesStateOption { lineStyle?: LineStyleOption; areaStyle?: AreaStyleOption; label?: SeriesLabelOption; itemStyle?: ItemStyleOption; } interface RadarSeriesDataItemOption extends SymbolOptionMixin, RadarSeriesStateOption, StatesOptionMixin, RadarStatesMixin>, OptionDataItemObject { } interface RadarSeriesOption extends SeriesOption, RadarSeriesStateOption, SeriesOnRadarOptionMixin, SymbolOptionMixin, SeriesEncodeOptionMixin { type?: 'radar'; coordinateSystem?: 'radar'; data?: (RadarSeriesDataItemOption | RadarSeriesDataValue)[]; } interface CurveLineStyleOption extends LineStyleOption { curveness?: number; } interface TreeSeriesStateOption { itemStyle?: ItemStyleOption; /** * Line style of the edge between node and it's parent. */ lineStyle?: CurveLineStyleOption; label?: SeriesLabelOption; } interface TreeStatesMixin { emphasis?: { focus?: DefaultEmphasisFocus | 'ancestor' | 'descendant' | 'relative'; scale?: boolean; }; } interface TreeSeriesNodeItemOption extends SymbolOptionMixin, TreeSeriesStateOption, StatesOptionMixin, TreeStatesMixin>, OptionDataItemObject { children?: TreeSeriesNodeItemOption[]; collapsed?: boolean; link?: string; target?: string; } /** * Configuration of leaves nodes. */ interface TreeSeriesLeavesOption extends TreeSeriesStateOption, StatesOptionMixin { } interface TreeSeriesOption extends SeriesOption, TreeSeriesStateOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, SymbolOptionMixin, BoxLayoutOptionMixin, RoamOptionMixin { type?: 'tree'; layout?: 'orthogonal' | 'radial'; edgeShape?: 'polyline' | 'curve'; /** * Available when edgeShape is polyline */ edgeForkPosition?: string | number; /** * The orient of orthoginal layout, can be setted to 'LR', 'TB', 'RL', 'BT'. * and the backward compatibility configuration 'horizontal = LR', 'vertical = TB'. */ orient?: 'LR' | 'TB' | 'RL' | 'BT' | 'horizontal' | 'vertical'; expandAndCollapse?: boolean; /** * The initial expanded depth of tree */ initialTreeDepth?: number; leaves?: TreeSeriesLeavesOption; data?: TreeSeriesNodeItemOption[]; } declare type TreemapSeriesDataValue = number | number[]; interface BreadcrumbItemStyleOption extends ItemStyleOption { textStyle?: LabelOption; } interface TreemapSeriesLabelOption extends SeriesLabelOption { formatter?: string | ((params: CallbackDataParams) => string); } interface TreemapSeriesItemStyleOption extends ItemStyleOption { borderRadius?: number | number[]; colorAlpha?: number; colorSaturation?: number; borderColorSaturation?: number; gapWidth?: number; } interface TreePathInfo { name: string; dataIndex: number; value: TreemapSeriesDataValue; } interface TreemapSeriesCallbackDataParams extends CallbackDataParams { /** * @deprecated */ treePathInfo?: TreePathInfo[]; treeAncestors?: TreePathInfo[]; } interface ExtraStateOption$1 { emphasis?: { focus?: DefaultEmphasisFocus | 'descendant' | 'ancestor'; }; } interface TreemapStateOption { itemStyle?: TreemapSeriesItemStyleOption; label?: TreemapSeriesLabelOption; upperLabel?: TreemapSeriesLabelOption; } interface TreemapSeriesVisualOption { /** * Which dimension will be applied with the visual properties. */ visualDimension?: number | string; /** * @deprecated Use colorBy instead */ colorMappingBy?: 'value' | 'index' | 'id'; visualMin?: number; visualMax?: number; colorAlpha?: number[] | 'none'; colorSaturation?: number[] | 'none'; /** * A node will not be shown when its area size is smaller than this value (unit: px square). */ visibleMin?: number; /** * Children will not be shown when area size of a node is smaller than this value (unit: px square). */ childrenVisibleMin?: number; } interface TreemapSeriesLevelOption extends TreemapSeriesVisualOption, TreemapStateOption, StatesOptionMixin { color?: ColorString[] | 'none'; decal?: DecalObject[] | 'none'; } interface TreemapSeriesNodeItemOption extends TreemapSeriesVisualOption, TreemapStateOption, StatesOptionMixin { id?: OptionId; name?: OptionName; value?: TreemapSeriesDataValue; children?: TreemapSeriesNodeItemOption[]; color?: ColorString[] | 'none'; decal?: DecalObject[] | 'none'; cursor?: string; } interface TreemapSeriesOption extends SeriesOption, ExtraStateOption$1>, TreemapStateOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, RoamOptionMixin, TreemapSeriesVisualOption { type?: 'treemap'; /** * If sort in desc order. * Default to be desc. asc has strange effect */ sort?: boolean | 'asc' | 'desc'; /** * Size of clipped window when zooming. 'origin' or 'fullscreen' */ clipWindow?: 'origin' | 'fullscreen'; squareRatio?: number; /** * Nodes on depth from root are regarded as leaves. * Count from zero (zero represents only view root). */ leafDepth?: number; drillDownIcon?: string; /** * Be effective when using zoomToNode. Specify the proportion of the * target node area in the view area. */ zoomToNodeRatio?: number; /** * Leaf node click behaviour: 'zoomToNode', 'link', false. * If leafDepth is set and clicking a node which has children but * be on left depth, the behaviour would be changing root. Otherwise * use behaviour defined above. */ nodeClick?: 'zoomToNode' | 'link' | false; breadcrumb?: BoxLayoutOptionMixin & { show?: boolean; height?: number; emptyItemWidth?: number; itemStyle?: BreadcrumbItemStyleOption; emphasis?: { disabled?: boolean; focus?: DefaultEmphasisFocus; blurScope?: BlurScope; itemStyle?: BreadcrumbItemStyleOption; }; }; levels?: TreemapSeriesLevelOption[]; data?: TreemapSeriesNodeItemOption[]; } declare type GraphDataValue = OptionDataValue | OptionDataValue[]; interface GraphEdgeLineStyleOption extends LineStyleOption { curveness?: number; } interface GraphNodeStateOption { itemStyle?: ItemStyleOption; label?: SeriesLabelOption; } interface ExtraEmphasisState { focus?: DefaultEmphasisFocus | 'adjacency'; } interface GraphNodeStatesMixin { emphasis?: ExtraEmphasisState; } interface GraphEdgeStatesMixin { emphasis?: ExtraEmphasisState; } interface GraphNodeItemOption extends SymbolOptionMixin, GraphNodeStateOption, StatesOptionMixin { id?: string; name?: string; value?: GraphDataValue; /** * Fixed x position */ x?: number; /** * Fixed y position */ y?: number; /** * If this node is fixed during force layout. */ fixed?: boolean; /** * Index or name of category */ category?: number | string; draggable?: boolean; cursor?: string; } interface GraphEdgeStateOption { lineStyle?: GraphEdgeLineStyleOption; label?: SeriesLineLabelOption; } interface GraphEdgeItemOption extends GraphEdgeStateOption, StatesOptionMixin, GraphEdgeItemObject { value?: number; /** * Symbol of both line ends */ symbol?: string | string[]; symbolSize?: number | number[]; ignoreForceLayout?: boolean; } interface GraphCategoryItemOption extends SymbolOptionMixin, GraphNodeStateOption, StatesOptionMixin { name?: string; value?: OptionDataValue; } interface GraphSeriesOption extends SeriesOption, GraphNodeStatesMixin>, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SymbolOptionMixin, RoamOptionMixin, BoxLayoutOptionMixin, PreserveAspectMixin { type?: 'graph'; coordinateSystem?: string; legendHoverLink?: boolean; layout?: 'none' | 'force' | 'circular'; data?: (GraphNodeItemOption | GraphDataValue)[]; nodes?: (GraphNodeItemOption | GraphDataValue)[]; edges?: GraphEdgeItemOption[]; links?: GraphEdgeItemOption[]; categories?: GraphCategoryItemOption[]; /** * @deprecated */ focusNodeAdjacency?: boolean; draggable?: boolean; edgeSymbol?: string | string[]; edgeSymbolSize?: number | number[]; edgeLabel?: SeriesLineLabelOption; label?: SeriesLabelOption; itemStyle?: ItemStyleOption; lineStyle?: GraphEdgeLineStyleOption; emphasis?: { focus?: Exclude['focus']; scale?: boolean | number; label?: SeriesLabelOption; edgeLabel?: SeriesLabelOption; itemStyle?: ItemStyleOption; lineStyle?: LineStyleOption; }; blur?: { label?: SeriesLabelOption; edgeLabel?: SeriesLabelOption; itemStyle?: ItemStyleOption; lineStyle?: LineStyleOption; }; select?: { label?: SeriesLabelOption; edgeLabel?: SeriesLabelOption; itemStyle?: ItemStyleOption; lineStyle?: LineStyleOption; }; circular?: { rotateLabel?: boolean; }; force?: { initLayout?: 'circular' | 'none'; repulsion?: number | number[]; gravity?: number; friction?: number; edgeLength?: number | number[]; layoutAnimation?: boolean; }; /** * auto curveness for multiple edge, invalid when `lineStyle.curveness` is set */ autoCurveness?: boolean | number | number[]; } interface ExtraEmphasisState$1 { /** * For focus on nodes: * - self: Focus self node, and all edges connected to it. * - adjacency: Focus self nodes and two edges (source and target) * connected to the focused node. * * For focus on edges: * - self: Focus self edge, and all nodes connected to it. * - adjacency: Focus self edge and all edges connected to it and all * nodes connected to these edges. */ focus?: DefaultEmphasisFocus | 'adjacency'; } interface ChordStatesMixin { emphasis?: ExtraEmphasisState$1; } interface ChordEdgeStatesMixin { emphasis?: ExtraEmphasisState$1; } declare type ChordDataValue = OptionDataValue | OptionDataValue[]; interface ChordItemStyleOption extends ItemStyleOption { borderRadius?: (number | string)[] | number | string; } interface ChordNodeStateOption { itemStyle?: ChordItemStyleOption; label?: ChordNodeLabelOption; } interface ChordNodeItemOption extends ChordNodeStateOption, StatesOptionMixin { id?: string; name?: string; value?: ChordDataValue; } interface ChordEdgeLineStyleOption extends LineStyleOption { curveness?: number; } interface ChordNodeLabelOption extends Omit, 'position'> { silent?: boolean; position?: SeriesLabelOption['position'] | 'outside'; } interface ChordEdgeStateOption { lineStyle?: ChordEdgeLineStyleOption; label?: SeriesLineLabelOption; } interface ChordEdgeItemOption extends ChordEdgeStateOption, StatesOptionMixin, GraphEdgeItemObject { value?: number; } interface ChordSeriesOption extends SeriesOption, ChordStatesMixin>, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SymbolOptionMixin, RoamOptionMixin, BoxLayoutOptionMixin, CircleLayoutOptionMixin { type?: 'chord'; coordinateSystem?: 'none'; legendHoverLink?: boolean; clockwise?: boolean; startAngle?: number; endAngle?: number | 'auto'; padAngle?: number; minAngle?: number; data?: (ChordNodeItemOption | ChordDataValue)[]; nodes?: (ChordNodeItemOption | ChordDataValue)[]; edges?: ChordEdgeItemOption[]; links?: ChordEdgeItemOption[]; edgeLabel?: SeriesLineLabelOption; label?: ChordNodeLabelOption; itemStyle?: ChordItemStyleOption; lineStyle?: ChordEdgeLineStyleOption; emphasis?: { focus?: Exclude['focus']; scale?: boolean | number; label?: SeriesLabelOption; edgeLabel?: SeriesLabelOption; itemStyle?: ItemStyleOption; lineStyle?: LineStyleOption; }; blur?: { label?: SeriesLabelOption; edgeLabel?: SeriesLabelOption; itemStyle?: ItemStyleOption; lineStyle?: LineStyleOption; }; select?: { label?: SeriesLabelOption; edgeLabel?: SeriesLabelOption; itemStyle?: ItemStyleOption; lineStyle?: LineStyleOption; }; } declare type GaugeColorStop = [number, ColorString]; interface LabelFormatter$1 { (value: number): string; } interface PointerOption { icon?: string; show?: boolean; /** * If pointer shows above title and detail */ showAbove?: boolean; keepAspect?: boolean; itemStyle?: ItemStyleOption; /** * Can be percent */ offsetCenter?: (number | string)[]; length?: number | string; width?: number; } interface AnchorOption { show?: boolean; showAbove?: boolean; size?: number; icon?: string; offsetCenter?: (number | string)[]; keepAspect?: boolean; itemStyle?: ItemStyleOption; } interface ProgressOption { show?: boolean; overlap?: boolean; width?: number; roundCap?: boolean; clip?: boolean; itemStyle?: ItemStyleOption; } interface TitleOption$1 extends LabelOption { /** * [x, y] offset */ offsetCenter?: (number | string)[]; formatter?: LabelFormatter$1 | string; /** * If do value animtion. */ valueAnimation?: boolean; } interface DetailOption extends LabelOption { /** * [x, y] offset */ offsetCenter?: (number | string)[]; formatter?: LabelFormatter$1 | string; /** * If do value animtion. */ valueAnimation?: boolean; } interface GaugeStatesMixin { emphasis?: DefaultStatesMixinEmphasis; } interface GaugeStateOption { itemStyle?: ItemStyleOption; } interface GaugeDataItemOption extends GaugeStateOption, StatesOptionMixin, GaugeStatesMixin> { name?: string; value?: OptionDataValueNumeric; pointer?: PointerOption; progress?: ProgressOption; title?: TitleOption$1; detail?: DetailOption; } interface GaugeSeriesOption extends SeriesOption, GaugeStateOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, CircleLayoutOptionMixin, SeriesEncodeOptionMixin { type?: 'gauge'; radius?: number | string; startAngle?: number; endAngle?: number; clockwise?: boolean; min?: number; max?: number; splitNumber?: number; itemStyle?: ItemStyleOption; axisLine?: { show?: boolean; roundCap?: boolean; lineStyle?: Omit & { color?: GaugeColorStop[]; }; }; progress?: ProgressOption; splitLine?: { show?: boolean; /** * Can be percent */ length?: number; distance?: number; lineStyle?: LineStyleOption; }; axisTick?: { show?: boolean; splitNumber?: number; /** * Can be percent */ length?: number | string; distance?: number; lineStyle?: LineStyleOption; }; axisLabel?: Omit & { formatter?: LabelFormatter$1 | string; rotate?: 'tangential' | 'radial' | number; }; pointer?: PointerOption; anchor?: AnchorOption; title?: TitleOption$1; detail?: DetailOption; data?: (OptionDataValueNumeric | GaugeDataItemOption)[]; } declare type FunnelLabelOption = Omit & { position?: LabelOption['position'] | 'outer' | 'inner' | 'center' | 'rightTop' | 'rightBottom' | 'leftTop' | 'leftBottom'; }; interface FunnelStatesMixin { emphasis?: DefaultStatesMixinEmphasis; } interface FunnelCallbackDataParams extends CallbackDataParams { percent: number; } interface FunnelStateOption { itemStyle?: ItemStyleOption; label?: FunnelLabelOption; labelLine?: LabelLineOption; } interface FunnelDataItemOption extends FunnelStateOption, StatesOptionMixin, OptionDataItemObject { itemStyle?: ItemStyleOption & { width?: number | string; height?: number | string; }; } interface FunnelSeriesOption extends SeriesOption, FunnelStatesMixin>, FunnelStateOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, BoxLayoutOptionMixin, SeriesEncodeOptionMixin { type?: 'funnel'; min?: number; max?: number; /** * Absolute number or percent string */ minSize?: number | string; maxSize?: number | string; sort?: 'ascending' | 'descending' | 'none'; orient?: LayoutOrient; gap?: number; funnelAlign?: HorizontalAlign | VerticalAlign; data?: (OptionDataValueNumeric | OptionDataValueNumeric[] | FunnelDataItemOption)[]; } declare type ParallelSeriesDataValue = OptionDataValue[]; interface ParallelStatesMixin { emphasis?: DefaultStatesMixinEmphasis; } interface ParallelStateOption { lineStyle?: LineStyleOption<(TCbParams extends never ? never : (params: TCbParams) => ZRColor) | ZRColor>; label?: SeriesLabelOption; } interface ParallelSeriesDataItemOption extends ParallelStateOption, StatesOptionMixin { value?: ParallelSeriesDataValue; } interface ParallelSeriesOption extends SeriesOption, ParallelStatesMixin>, ParallelStateOption, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, SeriesEncodeOptionMixin { type?: 'parallel'; coordinateSystem?: string; parallelIndex?: number; parallelId?: string; inactiveOpacity?: number; activeOpacity?: number; smooth?: boolean | number; realtime?: boolean; tooltip?: SeriesTooltipOption; parallelAxisDefault?: ParallelAxisOption; data?: (ParallelSeriesDataValue | ParallelSeriesDataItemOption)[]; } declare type FocusNodeAdjacency = boolean | 'inEdges' | 'outEdges' | 'allEdges'; interface SankeyNodeStateOption { label?: SeriesLabelOption; itemStyle?: ItemStyleOption; } interface SankeyEdgeStateOption { lineStyle?: SankeyEdgeStyleOption; } interface SankeyBothStateOption extends SankeyNodeStateOption, SankeyEdgeStateOption { } interface SankeyEdgeStyleOption extends LineStyleOption { curveness?: number; } interface ExtraStateOption$2 { emphasis?: { focus?: DefaultEmphasisFocus | 'adjacency' | 'trajectory'; }; } interface SankeyNodeItemOption extends SankeyNodeStateOption, StatesOptionMixin, OptionDataItemObject { id?: string; localX?: number; localY?: number; depth?: number; draggable?: boolean; focusNodeAdjacency?: FocusNodeAdjacency; } interface SankeyEdgeItemOption extends SankeyEdgeStateOption, StatesOptionMixin, GraphEdgeItemObject { focusNodeAdjacency?: FocusNodeAdjacency; edgeLabel?: SeriesLabelOption; } interface SankeyLevelOption extends SankeyNodeStateOption, SankeyEdgeStateOption { depth: number; } interface SankeySeriesOption extends SeriesOption, ExtraStateOption$2>, SankeyBothStateOption, BoxLayoutOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, RoamOptionMixin { type?: 'sankey'; /** * color will be linear mapped. */ color?: ColorString[]; coordinateSystem?: 'view'; orient?: LayoutOrient; /** * The width of the node */ nodeWidth?: number; /** * The vertical distance between two nodes */ nodeGap?: number; /** * Control if the node can move or not */ draggable?: boolean; /** * Will be allEdges if true. * @deprecated */ focusNodeAdjacency?: FocusNodeAdjacency; /** * The number of iterations to change the position of the node */ layoutIterations?: number; nodeAlign?: 'justify' | 'left' | 'right'; data?: SankeyNodeItemOption[]; nodes?: SankeyNodeItemOption[]; edges?: SankeyEdgeItemOption[]; links?: SankeyEdgeItemOption[]; levels?: SankeyLevelOption[]; edgeLabel?: SeriesLabelOption & { position?: 'inside'; }; } declare type BoxplotDataValue = OptionDataValueNumeric[]; interface BoxplotStateOption { itemStyle?: ItemStyleOption; label?: SeriesLabelOption; } interface BoxplotDataItemOption extends BoxplotStateOption, StatesOptionMixin { value: BoxplotDataValue; } interface ExtraStateOption$3 { emphasis?: { focus?: DefaultEmphasisFocus; scale?: boolean; }; } interface BoxplotSeriesOption extends SeriesOption, ExtraStateOption$3>, BoxplotStateOption, SeriesOnCartesianOptionMixin, SeriesEncodeOptionMixin { type?: 'boxplot'; coordinateSystem?: 'cartesian2d'; layout?: LayoutOrient; clip?: boolean; /** * [min, max] can be percent of band width. */ boxWidth?: (string | number)[]; data?: (BoxplotDataValue | BoxplotDataItemOption)[]; } declare type CandlestickDataValue = OptionDataValue[]; interface CandlestickItemStyleOption extends ItemStyleOption { color0?: ZRColor; borderColor0?: ColorString; borderColorDoji?: ZRColor; } interface CandlestickStateOption { itemStyle?: CandlestickItemStyleOption; label?: SeriesLabelOption; } interface CandlestickDataItemOption extends CandlestickStateOption, StatesOptionMixin { cursor?: string; value: CandlestickDataValue; } interface ExtraStateOption$4 { emphasis?: { focus?: DefaultEmphasisFocus; scale?: boolean; }; } interface CandlestickSeriesOption extends SeriesOption, CandlestickStateOption, SeriesOnCartesianOptionMixin, SeriesLargeOptionMixin, SeriesEncodeOptionMixin { type?: 'candlestick'; coordinateSystem?: 'cartesian2d'; layout?: LayoutOrient; clip?: boolean; barMaxWidth?: number | string; barMinWidth?: number | string; barWidth?: number | string; data?: (CandlestickDataValue | CandlestickDataItemOption)[]; } interface SymbolDrawStateOption { itemStyle?: ItemStyleOption; label?: LabelOption; } interface SymbolDrawItemModelOption extends SymbolOptionMixin, StatesOptionMixin, SymbolDrawStateOption { cursor?: string; rippleEffect?: RippleEffectOption; } interface RippleEffectOption { period?: number; /** * Scale of ripple */ scale?: number; brushType?: 'fill' | 'stroke'; color?: ZRColor; /** * ripple number */ number?: number; } interface LineDrawStateOption { lineStyle?: LineStyleOption; label?: LineLabelOption; } interface LineDrawModelOption extends LineDrawStateOption, StatesOptionMixin { effect?: { show?: boolean; period?: number; delay?: number | ((idx: number) => number); /** * If move with constant speed px/sec * period will be ignored if this property is > 0, */ constantSpeed?: number; symbol?: string; symbolSize?: number | number[]; loop?: boolean; roundTrip?: boolean; /** * Length of trail, 0 - 1 */ trailLength?: number; /** * Default to be same with lineStyle.color */ color?: ColorString; }; } declare type ScatterDataValue = OptionDataValue | OptionDataValue[]; interface EffectScatterStatesOptionMixin { emphasis?: { focus?: DefaultEmphasisFocus; scale?: boolean | number; }; } interface EffectScatterStateOption { itemStyle?: ItemStyleOption; label?: SeriesLabelOption; } interface EffectScatterDataItemOption extends SymbolOptionMixin, EffectScatterStateOption, StatesOptionMixin { name?: string; value?: ScatterDataValue; rippleEffect?: SymbolDrawItemModelOption['rippleEffect']; } interface EffectScatterSeriesOption extends SeriesOption, EffectScatterStatesOptionMixin>, EffectScatterStateOption, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SymbolOptionMixin, SeriesEncodeOptionMixin { type?: 'effectScatter'; coordinateSystem?: string; effectType?: 'ripple'; /** * When to show the effect */ showEffectOn?: 'render' | 'emphasis'; clip?: boolean; /** * Ripple effect config */ rippleEffect?: SymbolDrawItemModelOption['rippleEffect']; data?: (EffectScatterDataItemOption | ScatterDataValue)[]; } declare type LinesCoords = number[][]; declare type LinesValue = OptionDataValue | OptionDataValue[]; interface LinesLineStyleOption extends LineStyleOption { curveness?: number; } interface LinesStatesMixin { emphasis?: DefaultStatesMixinEmphasis; } interface LinesStateOption { lineStyle?: LinesLineStyleOption<(TCbParams extends never ? never : (params: TCbParams) => ZRColor) | ZRColor>; label?: SeriesLineLabelOption; } interface LinesDataItemOption extends LinesStateOption, StatesOptionMixin { name?: string; fromName?: string; toName?: string; symbol?: string[] | string; symbolSize?: number[] | number; coords?: LinesCoords; value?: LinesValue; effect?: LineDrawModelOption['effect']; } interface LinesSeriesOption extends SeriesOption, LinesStateOption, SeriesOnCartesianOptionMixin, SeriesOnGeoOptionMixin, SeriesOnPolarOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, SeriesLargeOptionMixin { type?: 'lines'; coordinateSystem?: string; symbol?: string[] | string; symbolSize?: number[] | number; effect?: LineDrawModelOption['effect']; /** * If lines are polyline * polyline not support curveness, label, animation */ polyline?: boolean; /** * If clip the overflow. * Available when coordinateSystem is cartesian or polar. */ clip?: boolean; data?: LinesDataItemOption[] | ArrayLike; dimensions?: DimensionDefinitionLoose | DimensionDefinitionLoose[]; } declare type HeatmapDataValue = OptionDataValue[]; interface HeatmapStateOption { itemStyle?: ItemStyleOption & { borderRadius?: number | number[]; }; label?: SeriesLabelOption; } interface HeatmapStatesMixin { emphasis?: DefaultStatesMixinEmphasis; } interface HeatmapDataItemOption extends HeatmapStateOption, StatesOptionMixin { value: HeatmapDataValue; } interface HeatmapSeriesOption extends SeriesOption, HeatmapStatesMixin>, HeatmapStateOption, SeriesOnCartesianOptionMixin, SeriesOnGeoOptionMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, SeriesEncodeOptionMixin { type?: 'heatmap'; coordinateSystem?: 'cartesian2d' | 'geo' | 'calendar' | 'matrix'; blurSize?: number; pointSize?: number; maxOpacity?: number; minOpacity?: number; data?: (HeatmapDataItemOption | HeatmapDataValue)[]; } interface PictorialBarStateOption { itemStyle?: ItemStyleOption; label?: SeriesLabelOption; } interface PictorialBarSeriesSymbolOption { /** * Customized bar shape */ symbol?: string; /** * Can be ['100%', '100%'], null means auto. * The percent will be relative to category width. If no repeat. * Will be relative to symbolBoundingData. */ symbolSize?: (number | string)[] | number | string; symbolRotate?: number; /** * Default to be auto */ symbolPosition?: 'start' | 'end' | 'center'; /** * Can be percent offset relative to the symbolSize */ symbolOffset?: (number | string)[] | number | string; /** * start margin and end margin. Can be a number or a percent string relative to symbolSize. * Auto margin by default. */ symbolMargin?: (number | string)[] | number | string; /** * true: means auto calculate repeat times and cut by data. * a number: specifies repeat times, and do not cut by data. * 'fixed': means auto calculate repeat times but do not cut by data. * * Otherwise means no repeat */ symbolRepeat?: boolean | number | 'fixed'; /** * From start to end or end to start. */ symbolRepeatDirection?: 'start' | 'end'; symbolClip?: boolean; /** * It will define the size of graphic elements. */ symbolBoundingData?: number | number[]; symbolPatternSize?: number; } interface ExtraStateOption$5 { emphasis?: { focus?: DefaultEmphasisFocus; scale?: boolean; }; } interface PictorialBarDataItemOption extends PictorialBarSeriesSymbolOption, AnimationOptionMixin, PictorialBarStateOption, StatesOptionMixin, OptionDataItemObject { z?: number; cursor?: string; } interface PictorialBarSeriesOption extends BaseBarSeriesOption, PictorialBarStateOption, PictorialBarSeriesSymbolOption, SeriesStackOptionMixin, SeriesEncodeOptionMixin { type?: 'pictorialBar'; coordinateSystem?: 'cartesian2d'; data?: (PictorialBarDataItemOption | OptionDataValue | OptionDataValue[])[]; clip?: boolean; } interface ThemeRiverSeriesLabelOption extends SeriesLabelOption { margin?: number; } declare type ThemerRiverDataItem = [OptionDataValueDate, OptionDataValueNumeric, string]; interface ThemeRiverStatesMixin { emphasis?: DefaultStatesMixinEmphasis; } interface ThemeRiverStateOption { label?: ThemeRiverSeriesLabelOption; itemStyle?: ItemStyleOption; } interface ThemeRiverSeriesOption extends SeriesOption, ThemeRiverStatesMixin>, ThemeRiverStateOption, SeriesOnSingleOptionMixin, BoxLayoutOptionMixin { type?: 'themeRiver'; color?: ZRColor[]; coordinateSystem?: 'singleAxis'; /** * gap in axis's orthogonal orientation */ boundaryGap?: (string | number)[]; /** * [date, value, name] */ data?: ThemerRiverDataItem[]; } interface SunburstItemStyleOption extends ItemStyleOption { borderRadius?: (number | string)[] | number | string; } interface SunburstLabelOption extends Omit, 'rotate' | 'position'> { rotate?: 'radial' | 'tangential' | number; minAngle?: number; silent?: boolean; position?: SeriesLabelOption['position'] | 'outside'; } interface SunburstDataParams extends CallbackDataParams { treePathInfo: { name: string; dataIndex: number; value: SunburstSeriesNodeItemOption['value']; }[]; } interface SunburstStatesMixin { emphasis?: { focus?: DefaultEmphasisFocus | 'descendant' | 'ancestor' | 'relative'; }; } interface SunburstStateOption { itemStyle?: SunburstItemStyleOption; label?: SunburstLabelOption; } interface SunburstSeriesNodeItemOption extends SunburstStateOption, StatesOptionMixin, SunburstStatesMixin>, OptionDataItemObject { nodeClick?: 'rootToNode' | 'link' | false; link?: string; target?: string; children?: SunburstSeriesNodeItemOption[]; collapsed?: boolean; cursor?: string; } interface SunburstSeriesLevelOption extends SunburstStateOption, StatesOptionMixin, SunburstStatesMixin> { radius?: (number | string)[]; /** * @deprecated use radius instead */ r?: number | string; /** * @deprecated use radius instead */ r0?: number | string; highlight?: { itemStyle?: SunburstItemStyleOption; label?: SunburstLabelOption; }; } interface SortParam { dataIndex: number; depth: number; height: number; getValue(): number; } interface SunburstSeriesOption extends SeriesOption, SunburstStatesMixin>, SunburstStateOption, SunburstColorByMixin, ComponentOnCalendarOptionMixin, ComponentOnMatrixOptionMixin, CircleLayoutOptionMixin { type?: 'sunburst'; clockwise?: boolean; startAngle?: number; minAngle?: number; /** * If still show when all data zero. */ stillShowZeroSum?: boolean; /** * Policy of highlighting pieces when hover on one * Valid values: 'none' (for not downplay others), 'descendant', * 'ancestor', 'self' */ nodeClick?: 'rootToNode' | 'link' | false; renderLabelForZeroData?: boolean; data?: SunburstSeriesNodeItemOption[]; levels?: SunburstSeriesLevelOption[]; animationType?: 'expansion' | 'scale'; sort?: 'desc' | 'asc' | ((a: SortParam, b: SortParam) => number); } interface GraphicComponentBaseElementOption extends Partial>, /** * left/right/top/bottom: (like 12, '22%', 'center', default undefined) * If left/right is set, shape.x/shape.cx/position will not be used. * If top/bottom is set, shape.y/shape.cy/position will not be used. * This mechanism is useful when you want to position a group/element * against the right side or the center of this container. */ Partial> { /** * element type, mandatory. * Only can be omit if call setOption not at the first time and perform merge. */ type?: string; id?: OptionId; name?: string; parentId?: OptionId; parentOption?: GraphicComponentElementOption; children?: GraphicComponentElementOption[]; hv?: [boolean, boolean]; /** * bounding: (enum: 'all' (default) | 'raw') * Specify how to calculate boundingRect when locating. * 'all': Get uioned and transformed boundingRect * from both itself and its descendants. * This mode simplies confining a group of elements in the bounding * of their ancester container (e.g., using 'right: 0'). * 'raw': Only use the boundingRect of itself and before transformed. * This mode is similar to css behavior, which is useful when you * want an element to be able to overflow its container. (Consider * a rotated circle needs to be located in a corner.) */ bounding?: 'raw' | 'all'; /** * info: custom info. enables user to mount some info on elements and use them * in event handlers. Update them only when user specified, otherwise, remain. */ info?: GraphicExtraElementInfo; clipPath?: Omit | false; textContent?: Omit; textConfig?: ElementTextConfig; $action?: 'merge' | 'replace' | 'remove'; tooltip?: CommonTooltipOption; enterAnimation?: AnimationOption$1; updateAnimation?: AnimationOption$1; leaveAnimation?: AnimationOption$1; } interface GraphicComponentDisplayableOption extends GraphicComponentBaseElementOption, Partial> { style?: ZRStyleProps; z2?: number; } interface GraphicComponentGroupOption extends GraphicComponentBaseElementOption, TransitionOptionMixin { type?: 'group'; /** * width/height: (can only be pixel value, default 0) * Is only used to specify container (group) size, if needed. And * cannot be a percentage value (like '33%'). See the reason in the * layout algorithm below. */ width?: number; height?: number; children: GraphicComponentElementOption[]; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } interface GraphicComponentZRPathOption extends GraphicComponentDisplayableOption, TransitionOptionMixin { shape?: PathProps['shape'] & TransitionOptionMixin; style?: PathStyleProps & TransitionOptionMixin; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } interface GraphicComponentImageOption extends GraphicComponentDisplayableOption, TransitionOptionMixin { type?: 'image'; style?: ImageStyleProps & TransitionOptionMixin; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } interface GraphicComponentTextOption extends Omit, TransitionOptionMixin { type?: 'text'; style?: TextStyleProps & TransitionOptionMixin; keyframeAnimation?: ElementKeyframeAnimationOption | ElementKeyframeAnimationOption[]; } declare type GraphicComponentElementOption = GraphicComponentGroupOption | GraphicComponentZRPathOption | GraphicComponentImageOption | GraphicComponentTextOption; declare type GraphicExtraElementInfo = Dictionary; declare type GraphicComponentLooseOption = (GraphicComponentOption | GraphicComponentElementOption) & { mainType?: 'graphic'; }; interface GraphicComponentOption extends ComponentOption, AnimationOptionMixin { elements?: GraphicComponentElementOption[]; } declare const ICON_TYPES: readonly ["rect", "polygon", "lineX", "lineY", "keep", "clear"]; declare type IconType = typeof ICON_TYPES[number]; interface ToolboxBrushFeatureOption extends ToolboxFeatureOption { type?: IconType[]; icon?: { [key in IconType]?: string; }; title?: { [key in IconType]?: string; }; } interface ToolboxDataViewFeatureOption extends ToolboxFeatureOption { readOnly?: boolean; optionToContent?: (option: ECUnitOption) => string | HTMLElement; contentToOption?: (viewMain: HTMLDivElement, oldOption: ECUnitOption) => ECUnitOption; icon?: string; title?: string; lang?: string[]; backgroundColor?: ColorString; textColor?: ColorString; textareaColor?: ColorString; textareaBorderColor?: ColorString; buttonColor?: ColorString; buttonTextColor?: ColorString; } declare const ICON_TYPES$1: readonly ["zoom", "back"]; declare type IconType$1 = typeof ICON_TYPES$1[number]; interface ToolboxDataZoomFeatureOption extends ToolboxFeatureOption { type?: IconType$1[]; icon?: { [key in IconType$1]?: string; }; title?: { [key in IconType$1]?: string; }; filterMode?: 'filter' | 'weakFilter' | 'empty' | 'none'; xAxisIndex?: ModelFinderIndexQuery; yAxisIndex?: ModelFinderIndexQuery; xAxisId?: ModelFinderIdQuery; yAxisId?: ModelFinderIdQuery; brushStyle?: ItemStyleOption; } declare const ICON_TYPES$2: readonly ["line", "bar", "stack"]; declare const TITLE_TYPES: readonly ["line", "bar", "stack", "tiled"]; declare type IconType$2 = typeof ICON_TYPES$2[number]; declare type TitleType = typeof TITLE_TYPES[number]; interface ToolboxMagicTypeFeatureOption extends ToolboxFeatureOption { type?: IconType$2[]; /** * Icon group */ icon?: { [key in IconType$2]?: string; }; title?: { [key in TitleType]?: string; }; option?: { [key in IconType$2]?: SeriesOption; }; /** * Map of seriesType: seriesIndex */ seriesIndex?: { line?: number; bar?: number; }; } interface ToolboxRestoreFeatureOption extends ToolboxFeatureOption { icon?: string; title?: string; } interface ToolboxSaveAsImageFeatureOption extends ToolboxFeatureOption { icon?: string; title?: string; type?: 'png' | 'jpeg'; backgroundColor?: ZRColor; connectedBackgroundColor?: ZRColor; name?: string; excludeComponents?: string[]; pixelRatio?: number; lang?: string[]; } interface ToolboxComponentOption extends ToolboxOption { feature?: { brush?: ToolboxBrushFeatureOption; dataView?: ToolboxDataViewFeatureOption; dataZoom?: ToolboxDataZoomFeatureOption; magicType?: ToolboxMagicTypeFeatureOption; restore?: ToolboxRestoreFeatureOption; saveAsImage?: ToolboxSaveAsImageFeatureOption; [key: string]: ToolboxFeatureOption | { [key: string]: any; } | undefined; }; } declare type DataZoomComponentOption = SliderDataZoomOption | InsideDataZoomOption; /** * @deprecated Use `ContinuousVisualMapComponentOption` instead. */ declare type ContinousVisualMapComponentOption = ContinuousVisualMapOption; declare type VisualMapComponentOption = ContinuousVisualMapOption | PiecewiseVisualMapOption; declare type LegendComponentOption = LegendOption | ScrollableLegendOption; declare type SeriesInjectedOption = { markArea?: MarkAreaOption; markLine?: MarkLineOption; markPoint?: MarkPointOption; tooltip?: SeriesTooltipOption; }; declare type LineSeriesOption$1 = LineSeriesOption & SeriesInjectedOption; declare type BarSeriesOption$1 = BarSeriesOption & SeriesInjectedOption; declare type ScatterSeriesOption$1 = ScatterSeriesOption & SeriesInjectedOption; declare type PieSeriesOption$1 = PieSeriesOption & SeriesInjectedOption; declare type RadarSeriesOption$1 = RadarSeriesOption & SeriesInjectedOption; declare type MapSeriesOption$1 = MapSeriesOption & SeriesInjectedOption; declare type TreeSeriesOption$1 = TreeSeriesOption & SeriesInjectedOption; declare type TreemapSeriesOption$1 = TreemapSeriesOption & SeriesInjectedOption; declare type GraphSeriesOption$1 = GraphSeriesOption & SeriesInjectedOption; declare type ChordSeriesOption$1 = ChordSeriesOption & SeriesInjectedOption; declare type GaugeSeriesOption$1 = GaugeSeriesOption & SeriesInjectedOption; declare type FunnelSeriesOption$1 = FunnelSeriesOption & SeriesInjectedOption; declare type ParallelSeriesOption$1 = ParallelSeriesOption & SeriesInjectedOption; declare type SankeySeriesOption$1 = SankeySeriesOption & SeriesInjectedOption; declare type BoxplotSeriesOption$1 = BoxplotSeriesOption & SeriesInjectedOption; declare type CandlestickSeriesOption$1 = CandlestickSeriesOption & SeriesInjectedOption; declare type EffectScatterSeriesOption$1 = EffectScatterSeriesOption & SeriesInjectedOption; declare type LinesSeriesOption$1 = LinesSeriesOption & SeriesInjectedOption; declare type HeatmapSeriesOption$1 = HeatmapSeriesOption & SeriesInjectedOption; declare type PictorialBarSeriesOption$1 = PictorialBarSeriesOption & SeriesInjectedOption; declare type ThemeRiverSeriesOption$1 = ThemeRiverSeriesOption & SeriesInjectedOption; declare type SunburstSeriesOption$1 = SunburstSeriesOption & SeriesInjectedOption; declare type CustomSeriesOption$1 = CustomSeriesOption & SeriesInjectedOption; /** * A map from series 'type' to series option * It's used for declaration merging in echarts extensions. * For example: * ```ts * import echarts from 'echarts'; * declare module 'echarts/types/dist/echarts' { * interface RegisteredSeriesOption { * wordCloud: WordCloudSeriesOption * } * } * ``` */ interface RegisteredSeriesOption { line: LineSeriesOption$1; bar: BarSeriesOption$1; scatter: ScatterSeriesOption$1; pie: PieSeriesOption$1; radar: RadarSeriesOption$1; map: MapSeriesOption$1; tree: TreeSeriesOption$1; treemap: TreemapSeriesOption$1; graph: GraphSeriesOption$1; chord: ChordSeriesOption$1; gauge: GaugeSeriesOption$1; funnel: FunnelSeriesOption$1; parallel: ParallelSeriesOption$1; sankey: SankeySeriesOption$1; boxplot: BoxplotSeriesOption$1; candlestick: CandlestickSeriesOption$1; effectScatter: EffectScatterSeriesOption$1; lines: LinesSeriesOption$1; heatmap: HeatmapSeriesOption$1; pictorialBar: PictorialBarSeriesOption$1; themeRiver: ThemeRiverSeriesOption$1; sunburst: SunburstSeriesOption$1; custom: CustomSeriesOption$1; } declare type Values = T[keyof T]; declare type SeriesOption$1 = Values; interface EChartsOption extends ECBasicOption { dataset?: DatasetOption | DatasetOption[]; aria?: AriaOption; title?: TitleOption | TitleOption[]; grid?: GridOption | GridOption[]; radar?: RadarOption | RadarOption[]; polar?: PolarOption | PolarOption[]; geo?: GeoOption | GeoOption[]; angleAxis?: AngleAxisOption | AngleAxisOption[]; radiusAxis?: RadiusAxisOption | RadiusAxisOption[]; xAxis?: XAXisOption | XAXisOption[]; yAxis?: YAXisOption | YAXisOption[]; singleAxis?: SingleAxisOption | SingleAxisOption[]; parallel?: ParallelCoordinateSystemOption | ParallelCoordinateSystemOption[]; parallelAxis?: ParallelAxisOption | ParallelAxisOption[]; calendar?: CalendarOption | CalendarOption[]; matrix?: MatrixOption | MatrixOption[]; toolbox?: ToolboxComponentOption | ToolboxComponentOption[]; tooltip?: TooltipOption | TooltipOption[]; axisPointer?: AxisPointerOption | AxisPointerOption[]; brush?: BrushOption | BrushOption[]; timeline?: TimelineOption | SliderTimelineOption; legend?: LegendComponentOption | (LegendComponentOption)[]; dataZoom?: DataZoomComponentOption | (DataZoomComponentOption)[]; visualMap?: VisualMapComponentOption | (VisualMapComponentOption)[]; thumbnail?: ThumbnailOption | (ThumbnailOption)[]; graphic?: GraphicComponentLooseOption | GraphicComponentLooseOption[]; series?: SeriesOption$1 | SeriesOption$1[]; options?: EChartsOption[]; baseOption?: EChartsOption; } declare function install$2(registers: EChartsExtensionInstallRegisters): void; declare function install$3(registers: EChartsExtensionInstallRegisters): void; declare function install$4(registers: EChartsExtensionInstallRegisters): void; declare function install$5(registers: EChartsExtensionInstallRegisters): void; declare function installScatterJitter(registers: EChartsExtensionInstallRegisters): void; declare function install$6(registers: EChartsExtensionInstallRegisters): void; declare function install$7(registers: EChartsExtensionInstallRegisters): void; declare function install$8(registers: EChartsExtensionInstallRegisters): void; declare function install$9(registers: EChartsExtensionInstallRegisters): void; declare function install$a(registers: EChartsExtensionInstallRegisters): void; declare function install$b(registers: EChartsExtensionInstallRegisters): void; declare function install$c(registers: EChartsExtensionInstallRegisters): void; declare function install$d(registers: EChartsExtensionInstallRegisters): void; declare function install$e(registers: EChartsExtensionInstallRegisters): void; declare function install$f(registers: EChartsExtensionInstallRegisters): void; declare function install$g(registers: EChartsExtensionInstallRegisters): void; declare function install$h(registers: EChartsExtensionInstallRegisters): void; declare function install$i(registers: EChartsExtensionInstallRegisters): void; declare function install$j(registers: EChartsExtensionInstallRegisters): void; declare function install$k(registers: EChartsExtensionInstallRegisters): void; declare function install$l(registers: EChartsExtensionInstallRegisters): void; declare function install$m(registers: EChartsExtensionInstallRegisters): void; declare function install$n(registers: EChartsExtensionInstallRegisters): void; declare function install$o(registers: EChartsExtensionInstallRegisters): void; declare function install$p(registers: EChartsExtensionInstallRegisters): void; declare function install$q(registers: EChartsExtensionInstallRegisters): void; declare function install$r(registers: EChartsExtensionInstallRegisters): void; declare function install$s(registers: EChartsExtensionInstallRegisters): void; declare function install$t(registers: EChartsExtensionInstallRegisters): void; declare function install$u(registers: EChartsExtensionInstallRegisters): void; declare function install$v(registers: EChartsExtensionInstallRegisters): void; declare function install$w(registers: EChartsExtensionInstallRegisters): void; declare function install$x(registers: EChartsExtensionInstallRegisters): void; declare function install$y(registers: EChartsExtensionInstallRegisters): void; declare function install$z(registers: EChartsExtensionInstallRegisters): void; declare function install$A(registers: EChartsExtensionInstallRegisters): void; declare function install$B(registers: EChartsExtensionInstallRegisters): void; declare function install$C(registers: EChartsExtensionInstallRegisters): void; declare function install$D(registers: EChartsExtensionInstallRegisters): void; declare function install$E(registers: EChartsExtensionInstallRegisters): void; declare function install$F(registers: EChartsExtensionInstallRegisters): void; declare function install$G(registers: EChartsExtensionInstallRegisters): void; declare function install$H(registers: EChartsExtensionInstallRegisters): void; declare function install$I(registers: EChartsExtensionInstallRegisters): void; declare function install$J(registers: EChartsExtensionInstallRegisters): void; declare function install$K(registers: EChartsExtensionInstallRegisters): void; declare function install$L(registers: EChartsExtensionInstallRegisters): void; declare function install$M(registers: EChartsExtensionInstallRegisters): void; declare function install$N(registers: EChartsExtensionInstallRegisters): void; declare function install$O(registers: EChartsExtensionInstallRegisters): void; declare function install$P(registers: EChartsExtensionInstallRegisters): void; declare function install$Q(registers: EChartsExtensionInstallRegisters): void; declare function install$R(registers: EChartsExtensionInstallRegisters): void; declare function install$S(registers: EChartsExtensionInstallRegisters): void; declare function install$T(registers: EChartsExtensionInstallRegisters): void; declare function install$U(registers: EChartsExtensionInstallRegisters): void; declare function installUniversalTransition(registers: EChartsExtensionInstallRegisters): void; declare function installLabelLayout(registers: EChartsExtensionInstallRegisters): void; declare function installAxisBreak(registers: EChartsExtensionInstallRegisters): void; /** * [CAUTION] Never export methods other than `installLegacyGridContainLabel`. */ declare function installLegacyGridContainLabel(): void; export { AngleAxisOption, AnimationDelayCallback, AnimationDelayCallbackParam, AnimationDurationCallback, AriaOption, Axis, AxisBreakChangedEvent, AxisPointerOption, BarSeriesOption$1 as BarSeriesOption, BoxplotSeriesOption$1 as BoxplotSeriesOption, BrushOption, CalendarOption, CallbackDataParams, CandlestickSeriesOption$1 as CandlestickSeriesOption, ChartView, ChordSeriesOption$1 as ChordSeriesOption, CollapseAxisBreakPayload, ComponentModel, ComponentView, ComposeOption, ContinousVisualMapComponentOption, ContinuousVisualMapOption, CustomSeriesOption$1 as CustomSeriesOption, CustomSeriesRenderItem, CustomSeriesRenderItemAPI, CustomSeriesRenderItemParams, CustomSeriesRenderItemReturn, DataZoomComponentOption, DatasetOption, DownplayPayload, ECBasicOption, ECElementEvent, ECUpdateMethodName, EChartsInitOpts, EChartsOption, EChartsType, EffectScatterSeriesOption$1 as EffectScatterSeriesOption, ElementEvent, ExpandAxisBreakPayload, FunnelSeriesOption$1 as FunnelSeriesOption, GaugeSeriesOption$1 as GaugeSeriesOption, GeoOption, GraphSeriesOption$1 as GraphSeriesOption, GraphicComponentLooseOption, GridOption, HeatmapSeriesOption$1 as HeatmapSeriesOption, HighlightPayload, ImagePatternObject, InsideDataZoomOption, LabelFormatterCallback, LabelLayoutOptionCallback, LabelLayoutOptionCallbackParams, LegendComponentOption, LegendOption, LineSeriesOption$1 as LineSeriesOption, LinearGradientObject, LinesSeriesOption$1 as LinesSeriesOption, MapSeriesOption$1 as MapSeriesOption, MarkAreaOption, MarkLineOption, MarkPointOption, MatrixOption, Model, PRIORITY, ParallelCoordinateSystemOption, ParallelSeriesOption$1 as ParallelSeriesOption, PatternObject, Payload, PictorialBarSeriesOption$1 as PictorialBarSeriesOption, PieSeriesOption$1 as PieSeriesOption, PiecewiseVisualMapOption, PolarOption, RadarOption, RadarSeriesOption$1 as RadarSeriesOption, RadialGradientObject, RadiusAxisOption, RegisteredSeriesOption, ResizeOpts, SVGPatternObject, SankeySeriesOption$1 as SankeySeriesOption, ScatterSeriesOption$1 as ScatterSeriesOption, ScrollableLegendOption, SelectChangedEvent, SelectChangedPayload, SeriesData, SeriesModel, SeriesOption$1 as SeriesOption, SetOptionOpts, SetOptionTransitionOpt, SetOptionTransitionOptItem, SetThemeOpts, SingleAxisOption, SliderDataZoomOption, SunburstSeriesOption$1 as SunburstSeriesOption, ThemeRiverSeriesOption$1 as ThemeRiverSeriesOption, ThumbnailOption, TimelineOption, TitleOption, ToggleAxisBreakPayload, ToolboxComponentOption, TooltipFormatterCallback, TooltipOption, TooltipPositionCallback, TooltipPositionCallbackParams, TopLevelFormatterParams, TreeSeriesOption$1 as TreeSeriesOption, TreemapSeriesOption$1 as TreemapSeriesOption, VisualMapComponentOption, XAXisOption, YAXisOption, ZRColor, brushSingle, color_d, connect, dataTool, dependencies, disConnect, disconnect, dispose$1 as dispose, env, extendChartView, extendComponentModel, extendComponentView, extendSeriesModel, format_d, getCoordinateSystemDimensions, getInstanceByDom, getInstanceById, getMap, graphic_d, helper_d, init$1 as init, install$2 as install, install$3 as install$1, install$c as install$10, install$d as install$11, install$e as install$12, install$f as install$13, install$g as install$14, install$h as install$15, install$i as install$16, install$j as install$17, install$k as install$18, install$l as install$19, install$4 as install$2, install$m as install$20, install$n as install$21, install$o as install$22, install$p as install$23, install$q as install$24, install$r as install$25, install$s as install$26, install$t as install$27, install$u as install$28, install$v as install$29, install$5 as install$3, install$w as install$30, install$x as install$31, install$y as install$32, install$z as install$33, install$A as install$34, install$B as install$35, install$C as install$36, install$1 as install$37, install$D as install$38, install$E as install$39, install$6 as install$4, install$F as install$40, install$G as install$41, install$H as install$42, install$I as install$43, install$J as install$44, install$K as install$45, install$L as install$46, install$M as install$47, install$N as install$48, install$O as install$49, install$7 as install$5, install$P as install$50, install$Q as install$51, install$R as install$52, install$S as install$53, install as install$54, install$T as install$55, install$U as install$56, install$8 as install$6, install$9 as install$7, install$a as install$8, install$b as install$9, installAxisBreak, installLabelLayout, installLegacyGridContainLabel, installScatterJitter, installUniversalTransition, matrix_d, number_d, parseGeoJSON, registerAction, registerCoordinateSystem, registerCustomSeries, registerLayout, registerLoading, registerLocale, registerMap, registerPostInit, registerPostUpdate, registerPreprocessor, registerProcessor, registerTheme, registerTransform, registerUpdateLifecycle, registerVisual, setCanvasCreator, setPlatformAPI, throttle, time_d, use, util_d, util_d$1, vector_d, version$1 as version, zrender_d };