123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { ComponentType } from 'react';
- import { RegistryItem } from '@grafana/data';
- import { PanelOptionsSupplier } from '@grafana/data/src/panel/PanelPlugin';
- import { DimensionContext } from '../dimensions/context';
- import { BackgroundConfig, Constraint, LineConfig, Placement } from './types';
- /**
- * This gets saved in panel json
- *
- * depending on the type, it may have additional config
- *
- * @alpha
- */
- export interface CanvasElementOptions<TConfig = any> {
- name: string; // configured unique display name
- type: string;
- // Custom options depending on the type
- config?: TConfig;
- // Standard options available for all elements
- constraint?: Constraint; // defaults vertical - top, horizontal - left
- placement?: Placement;
- background?: BackgroundConfig;
- border?: LineConfig;
- }
- export interface CanvasElementProps<TConfig = any, TData = any> {
- // Saved config
- config: TConfig;
- // Raw data
- data?: TData;
- }
- /**
- * Canvas item builder
- *
- * @alpha
- */
- export interface CanvasElementItem<TConfig = any, TData = any> extends RegistryItem {
- /** The default width/height to use when adding */
- defaultSize?: Placement;
- prepareData?: (ctx: DimensionContext, cfg: TConfig) => TData;
- /** Component used to draw */
- display: ComponentType<CanvasElementProps<TConfig, TData>>;
- getNewOptions: (options?: CanvasElementOptions) => Omit<CanvasElementOptions<TConfig>, 'type' | 'name'>;
- /** Build the configuration UI */
- registerOptionsUI?: PanelOptionsSupplier<CanvasElementOptions<TConfig>>;
- }
|