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>; icon?: string | Partial>; iconStyle?: IconStyle; emphasis?: { iconStyle?: IconStyle; }; iconStatus?: Partial>; onclick?: () => void; } export interface ToolboxFeatureModel extends Model { /** * Collection of icon paths. * Will be injected during rendering in the view. */ iconPaths: Partial>; setIconStatus(iconName: string, status: DisplayState): void; } interface ToolboxFeature { getIcons?(): Dictionary; 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 { uid: string; model: ToolboxFeatureModel; 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;