import { Dictionary, DisplayState, ZRElementEvent, ItemStyleOption, LabelOption } from '../../util/types.js';
|
import Model from '../../model/Model.js';
|
import GlobalModel from '../../model/Global.js';
|
import ExtensionAPI from '../../core/ExtensionAPI.js';
|
import Displayable from 'zrender/lib/graphic/Displayable.js';
|
declare type IconStyle = ItemStyleOption & {
|
textFill?: LabelOption['color'];
|
textBackgroundColor?: LabelOption['backgroundColor'];
|
textPosition?: LabelOption['position'];
|
textAlign?: LabelOption['align'];
|
textBorderRadius?: LabelOption['borderRadius'];
|
textPadding?: LabelOption['padding'];
|
};
|
export interface ToolboxFeatureOption {
|
show?: boolean;
|
title?: string | Partial<Dictionary<string>>;
|
icon?: string | Partial<Dictionary<string>>;
|
iconStyle?: IconStyle;
|
emphasis?: {
|
iconStyle?: IconStyle;
|
};
|
iconStatus?: Partial<Dictionary<DisplayState>>;
|
onclick?: () => void;
|
}
|
export interface ToolboxFeatureModel<Opts extends ToolboxFeatureOption = ToolboxFeatureOption> extends Model<Opts> {
|
/**
|
* Collection of icon paths.
|
* Will be injected during rendering in the view.
|
*/
|
iconPaths: Partial<Dictionary<Displayable>>;
|
setIconStatus(iconName: string, status: DisplayState): void;
|
}
|
interface ToolboxFeature<Opts extends ToolboxFeatureOption = ToolboxFeatureOption> {
|
getIcons?(): Dictionary<string>;
|
onclick(ecModel: GlobalModel, api: ExtensionAPI, type: string, event: ZRElementEvent): void;
|
dispose?(ecModel: GlobalModel, api: ExtensionAPI): void;
|
remove?(ecModel: GlobalModel, api: ExtensionAPI): void;
|
render(featureModel: ToolboxFeatureModel, model: GlobalModel, api: ExtensionAPI, payload: unknown): void;
|
updateView?(featureModel: ToolboxFeatureModel, model: GlobalModel, api: ExtensionAPI, payload: unknown): void;
|
}
|
declare abstract class ToolboxFeature<Opts extends ToolboxFeatureOption = ToolboxFeatureOption> {
|
uid: string;
|
model: ToolboxFeatureModel<Opts>;
|
ecModel: GlobalModel;
|
api: ExtensionAPI;
|
/**
|
* If toolbox feature can't be used on some platform.
|
*/
|
unusable?: boolean;
|
}
|
export { ToolboxFeature };
|
export interface UserDefinedToolboxFeature {
|
uid: string;
|
model: ToolboxFeatureModel;
|
ecModel: GlobalModel;
|
api: ExtensionAPI;
|
featureName?: string;
|
onclick(): void;
|
}
|
declare type ToolboxFeatureCtor = {
|
new (): ToolboxFeature;
|
/**
|
* Static defaultOption property
|
*/
|
defaultOption?: ToolboxFeatureOption;
|
getDefaultOption?: (ecModel: GlobalModel) => ToolboxFeatureOption;
|
};
|
export declare function registerFeature(name: string, ctor: ToolboxFeatureCtor): void;
|
export declare function getFeature(name: string): ToolboxFeatureCtor;
|