import React, { ComponentType, ReactElement } from 'react'; import { EditorPlugin } from '@draft-js-plugins/editor'; import DefaultDivider, { DefaultDividerProps, } from './components/DefaultDivider'; import DefaultButton, { DividerButtonProps, DividerButtonPubProps, } from './components/DividerButton'; import addDivider from './modifiers/addDivider'; import { defaultTheme, DividerPluginTheme } from './theme'; interface DividerPluginConfig { theme?: DividerPluginTheme; entityType?: string; dividerComponent?: ComponentType; buttonComponent?: ComponentType; decorator?: unknown; } const createDividerPlugin = ({ entityType = 'divider', dividerComponent = DefaultDivider, buttonComponent = DefaultButton as ComponentType, theme = defaultTheme, decorator, }: DividerPluginConfig = {}): EditorPlugin & { DividerButton: ComponentType; addDivider: ReturnType; } => { let Divider = dividerComponent; if (typeof decorator === 'function') { Divider = decorator(Divider); } const ThemedDivider = (props: DefaultDividerProps): ReactElement => ( ); const Button = buttonComponent; const DividerButton = (props: DividerButtonPubProps): ReactElement => (