echarts
Version:
Apache ECharts is a powerful, interactive charting and data visualization library for browser
85 lines (84 loc) • 3.07 kB
TypeScript
import { ComponentFullType, ComponentTypeInfo, ComponentMainType, ComponentSubType } from './types.js';
declare const IS_EXTENDED_CLASS: "___EC__EXTENDED_CLASS___";
/**
* Notice, parseClassType('') should returns {main: '', sub: ''}
* @public
*/
export declare function parseClassType(componentType: ComponentFullType): ComponentTypeInfo;
export declare function isExtendedClass(clz: any): boolean;
export interface ExtendableConstructor {
new (...args: any): any;
$constructor?: new (...args: any) => any;
extend: (proto: {
[name: string]: any;
}) => ExtendableConstructor;
superCall: (context: any, methodName: string, ...args: any) => any;
superApply: (context: any, methodName: string, args: []) => any;
superClass?: ExtendableConstructor;
[IS_EXTENDED_CLASS]?: boolean;
}
/**
* Implements `ExtendableConstructor` for `rootClz`.
*
* @usage
* ```ts
* class Xxx {}
* type XxxConstructor = typeof Xxx & ExtendableConstructor
* enableClassExtend(Xxx as XxxConstructor);
* ```
*/
export declare function enableClassExtend(rootClz: ExtendableConstructor, mandatoryMethods?: string[]): void;
/**
* A work around to both support ts extend and this extend mechanism.
* on sub-class.
* @usage
* ```ts
* class Component { ... }
* classUtil.enableClassExtend(Component);
* classUtil.enableClassManagement(Component, {registerWhenExtend: true});
*
* class Series extends Component { ... }
* // Without calling `markExtend`, `registerWhenExtend` will not work.
* Component.markExtend(Series);
* ```
*/
export declare function mountExtend(SubClz: any, SupperClz: any): void;
export interface CheckableConstructor {
new (...args: any): any;
isInstance: (ins: any) => boolean;
}
/**
* Implements `CheckableConstructor` for `target`.
* Can not use instanceof, consider different scope by
* cross domain or es module import in ec extensions.
* Mount a method "isInstance()" to Clz.
*
* @usage
* ```ts
* class Xxx {}
* type XxxConstructor = typeof Xxx & CheckableConstructor;
* enableClassCheck(Xxx as XxxConstructor)
* ```
*/
export declare function enableClassCheck(target: CheckableConstructor): void;
export declare type Constructor = new (...args: any) => any;
export 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;
}
/**
* Implements `ClassManager` for `target`
*
* @usage
* ```ts
* class Xxx {}
* type XxxConstructor = typeof Xxx & ClassManager
* enableClassManagement(Xxx as XxxConstructor);
* ```
*/
export declare function enableClassManagement(target: ClassManager): void;
export {};