import React from 'react'; import { ContextProps, SettingsProps, WidgetLayout } from './common'; import { StringParams, ConfigItem, ItemState, ItemStateAndParams, PluginBase } from '../shared'; import { RegisterManagerGridLayout } from '../utils/register-manager'; export interface PluginWidgetProps { id: string; editMode: boolean; params: StringParams; state: ItemState; onStateAndParamsChange: (stateAndParams: ItemStateAndParams) => void; width: number; height: number; data: ConfigItem['data']; defaults: ConfigItem['defaults']; namespace: ConfigItem['namespace']; settings: SettingsProps; context: ContextProps; layout: WidgetLayout[]; gridLayout: RegisterManagerGridLayout; adjustWidgetLayout: (data: { widgetId: string; needSetDefault?: boolean; adjustedWidgetLayout?: WidgetLayout; }) => void; } export interface PluginDefaultLayout { w?: number; h?: number; x?: number; y?: number; minW?: number; maxW?: number; minH?: number; maxH?: number; } export interface Plugin

extends PluginBase { defaultLayout?: PluginDefaultLayout; renderer: (props: P, forwardedRef: React.RefObject) => React.ReactNode; }