import type { ComponentType } from 'react'; import type { IToolbarItemConfigTiptap, PluginToolbarIds, ToolbarButtonProps, ToolbarType } from '.'; import type { InsertPluginButtons } from './insertPluginButtons'; export interface PlatformSettings { desktop?: T; mobile?: { ios?: T; android?: T; }; } export interface TextButtonMapping { component?: ComponentType; isMobile?: boolean; position?: { mobile?: number; desktop?: number; }; externalizedButtonProps?: ToolbarButtonProps; } export type ToolbarSettingsFunctions = ToolbarSettingsFunctionsGeneric | ToolbarSettingsFunctionsDesktop; export interface ToolbarSettingsFunctionsGeneric { name: Exclude; shouldCreate?: () => PlatformSettings; getButtons?: () => PlatformSettings; getTextPluginButtons?: () => PlatformSettings<{ [key: string]: ComponentType | TextButtonMapping; }>; addPluginMenuConfig?: AddPluginMenuConfig; onClick?: () => void; getIcons?: () => Record JSX.Element>; getInstance?: (config: any) => any; buttonsOverrides?: () => PlatformSettings; getToolbarDecorationFn?: () => PlatformSettings; getDisplayOptions?: () => PlatformSettings; getPositionOffset?: () => PlatformSettings<{ x: number; y: number; }>; } type ToolbarSettingsFunctionsDesktop = { name: ToolbarType.FOOTER; shouldCreate?: () => PlatformSettings; footerToolbarConfig?: FooterToolbarConfig; } | { name: ToolbarType.SIDE; shouldCreate?: () => PlatformSettings; onClick?: () => void; addPluginMenuConfig?: AddPluginMenuConfig; } | { name: ToolbarType.STATIC; shouldCreate?: () => PlatformSettings; getButtons?: () => PlatformSettings; getTextPluginButtons?: () => PlatformSettings<{ [key: string]: ComponentType | TextButtonMapping; }>; getPositionOffset?: ToolbarSettingsFunctionsGeneric['getPositionOffset']; getDisplayOptions?: ToolbarSettingsFunctionsGeneric['getDisplayOptions']; getToolbarDecorationFn?: ToolbarSettingsFunctionsGeneric['getToolbarDecorationFn']; } | { name: ToolbarType.INLINE; shouldCreate?: () => PlatformSettings; getButtons?: () => PlatformSettings; getTextPluginButtons?: () => PlatformSettings<{ [key: string]: ComponentType | TextButtonMapping; }>; getPositionOffset?: () => PlatformSettings<{ x: number; y: number; }>; getDisplayOptions?: ToolbarSettingsFunctionsGeneric['getDisplayOptions']; getToolbarDecorationFn?: ToolbarSettingsFunctionsGeneric['getToolbarDecorationFn']; } | { name: ToolbarType.PLUGIN; shouldCreate?: () => PlatformSettings; filterItems?: (item: IToolbarItemConfigTiptap, nodeType: PluginToolbarIds) => boolean; } | { name: ToolbarType.LINK; shouldCreate?: () => PlatformSettings; }; export interface AddPluginMenuConfig { showSearch?: boolean; splitToSections?: boolean; tablePluginMenu?: boolean; horizontalMenuLayout?: boolean; } export interface FooterToolbarConfig { morePluginsMenu?: { splitToSections?: boolean; showSearch?: boolean; }; pluginsToDisplayInToolbar?: InsertPluginButtons[keyof InsertPluginButtons][]; } export type TextGroupButtons = { name: string; buttons: string[]; }; export type DesktopTextButtons = (string | TextGroupButtons)[]; export type TextButtons = { desktop: DesktopTextButtons; mobile: string[]; }; export type PluginButton = { buttonSettings: ToolbarButtonProps; component: ComponentType; blockType: string; }; export type GetToolbarSettings = ({ textButtons, pluginButtons, pluginButtonNames, pluginButtonProps, tablePluginMenu, }: { textButtons?: TextButtons; pluginButtons?: PluginButton[]; pluginButtonNames?: string[]; pluginButtonProps?: ToolbarButtonProps[]; tablePluginMenu?: boolean; }) => ToolbarSettingsFunctions[]; export {}; //# sourceMappingURL=toolbarSettingsTypes.d.ts.map