60b000f6dc26a75bf6f29193bac51c0c701b65a286b8877a628fe736c73ebf500735cab01322a830a96d6d747cd84a0ecc5fd90949c0a397b254da1aa6a2b0 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { Dictionary, DisplayState, ZRElementEvent, ItemStyleOption, LabelOption } from '../../util/types.js';
  2. import Model from '../../model/Model.js';
  3. import GlobalModel from '../../model/Global.js';
  4. import ExtensionAPI from '../../core/ExtensionAPI.js';
  5. import Displayable from 'zrender/lib/graphic/Displayable.js';
  6. declare type IconStyle = ItemStyleOption & {
  7. textFill?: LabelOption['color'];
  8. textBackgroundColor?: LabelOption['backgroundColor'];
  9. textPosition?: LabelOption['position'];
  10. textAlign?: LabelOption['align'];
  11. textBorderRadius?: LabelOption['borderRadius'];
  12. textPadding?: LabelOption['padding'];
  13. };
  14. export interface ToolboxFeatureOption {
  15. show?: boolean;
  16. title?: string | Partial<Dictionary<string>>;
  17. icon?: string | Partial<Dictionary<string>>;
  18. iconStyle?: IconStyle;
  19. emphasis?: {
  20. iconStyle?: IconStyle;
  21. };
  22. iconStatus?: Partial<Dictionary<DisplayState>>;
  23. onclick?: () => void;
  24. }
  25. export interface ToolboxFeatureModel<Opts extends ToolboxFeatureOption = ToolboxFeatureOption> extends Model<Opts> {
  26. /**
  27. * Collection of icon paths.
  28. * Will be injected during rendering in the view.
  29. */
  30. iconPaths: Partial<Dictionary<Displayable>>;
  31. setIconStatus(iconName: string, status: DisplayState): void;
  32. }
  33. interface ToolboxFeature<Opts extends ToolboxFeatureOption = ToolboxFeatureOption> {
  34. getIcons?(): Dictionary<string>;
  35. onclick(ecModel: GlobalModel, api: ExtensionAPI, type: string, event: ZRElementEvent): void;
  36. dispose?(ecModel: GlobalModel, api: ExtensionAPI): void;
  37. remove?(ecModel: GlobalModel, api: ExtensionAPI): void;
  38. render(featureModel: ToolboxFeatureModel, model: GlobalModel, api: ExtensionAPI, payload: unknown): void;
  39. updateView?(featureModel: ToolboxFeatureModel, model: GlobalModel, api: ExtensionAPI, payload: unknown): void;
  40. }
  41. declare abstract class ToolboxFeature<Opts extends ToolboxFeatureOption = ToolboxFeatureOption> {
  42. uid: string;
  43. model: ToolboxFeatureModel<Opts>;
  44. ecModel: GlobalModel;
  45. api: ExtensionAPI;
  46. /**
  47. * If toolbox feature can't be used on some platform.
  48. */
  49. unusable?: boolean;
  50. }
  51. export { ToolboxFeature };
  52. export interface UserDefinedToolboxFeature {
  53. uid: string;
  54. model: ToolboxFeatureModel;
  55. ecModel: GlobalModel;
  56. api: ExtensionAPI;
  57. featureName?: string;
  58. onclick(): void;
  59. }
  60. declare type ToolboxFeatureCtor = {
  61. new (): ToolboxFeature;
  62. /**
  63. * Static defaultOption property
  64. */
  65. defaultOption?: ToolboxFeatureOption;
  66. getDefaultOption?: (ecModel: GlobalModel) => ToolboxFeatureOption;
  67. };
  68. export declare function registerFeature(name: string, ctor: ToolboxFeatureCtor): void;
  69. export declare function getFeature(name: string): ToolboxFeatureCtor;