@edtr-io/plugin-text
Version:
38 lines • 1.91 kB
TypeScript
import * as React from 'react';
import { StateDescriptor, StateDescriptorReturnType, StateDescriptorSerializedType, StateDescriptorValueType } from './plugin-state';
export declare type Plugin<S extends StateDescriptor = StateDescriptor, Props extends Record<string, unknown> = any> = StatelessPlugin<Props> | StatefulPlugin<S, Props>;
export interface StatelessPlugin<Props extends Record<string, unknown> = {}> {
Component: React.ComponentType<StatelessPluginEditorProps<Props>>;
onPaste?: (data: DataTransfer) => void | {
state?: undefined;
};
title?: string;
icon?: React.ComponentType;
description?: string;
}
export declare type StatelessPluginEditorProps<Props extends Record<string, unknown> = {}> = {
name: string;
editable?: boolean;
focused?: boolean;
} & Props;
export interface StatefulPlugin<S extends StateDescriptor, Props extends Record<string, unknown> = {}> {
Component: React.ComponentType<StatefulPluginEditorProps<S, Props>>;
state: S;
onPaste?: (data: DataTransfer) => void | {
state?: StateDescriptorSerializedType<S>;
};
title?: string;
icon?: React.ComponentType;
description?: string;
isEmpty?: (state: StateDescriptorValueType<S>) => boolean;
onKeyDown?: (e: KeyboardEvent) => boolean;
getFocusableChildren?: (state: StateDescriptorReturnType<S>) => {
id: string;
}[];
}
export declare type StatefulPluginEditorProps<S extends StateDescriptor = StateDescriptor, Props extends Record<string, unknown> = {}> = StatelessPluginEditorProps<Props> & {
state: StateDescriptorReturnType<S>;
};
export declare function isStatefulPlugin<S extends StateDescriptor>(plugin: Plugin<S>): plugin is StatefulPlugin<S, any>;
export declare function isStatelessPlugin(plugin: Plugin): plugin is StatelessPlugin<any>;
//# sourceMappingURL=plugin.d.ts.map