UNPKG

@atlaskit/editor-plugin-floating-toolbar

Version:

Floating toolbar plugin for @atlaskit/editor-core

64 lines (63 loc) 2.91 kB
import type { INPUT_METHOD } from '@atlaskit/editor-common/analytics'; import type { FloatingToolbarConfig, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types'; import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics'; import type { ContextPanelPlugin } from '@atlaskit/editor-plugin-context-panel'; import type { CopyButtonPlugin } from '@atlaskit/editor-plugin-copy-button'; import type { DecorationsPlugin } from '@atlaskit/editor-plugin-decorations'; import type { EditorDisabledPlugin } from '@atlaskit/editor-plugin-editor-disabled'; import type { EditorViewModePlugin } from '@atlaskit/editor-plugin-editor-viewmode'; import type { EmojiPlugin } from '@atlaskit/editor-plugin-emoji'; import type { ExtensionPlugin } from '@atlaskit/editor-plugin-extension'; import type { FeatureFlagsPlugin } from '@atlaskit/editor-plugin-feature-flags'; import type { InteractionPlugin } from '@atlaskit/editor-plugin-interaction'; import type { ToolbarPlugin } from '@atlaskit/editor-plugin-toolbar'; import type { UserIntentPlugin } from '@atlaskit/editor-plugin-user-intent'; import type { Node, NodeType } from '@atlaskit/editor-prosemirror/model'; import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state'; export type ConfigWithNodeInfo = { config: FloatingToolbarConfig | undefined; node: Node; pos: number; }; export type FloatingToolbarPluginState = { getConfigWithNodeInfo: (state: EditorState) => ConfigWithNodeInfo | null | undefined; suppressedToolbar?: boolean; }; export type FloatingToolbarPluginData = { confirmDialogForItem?: number; confirmDialogForItemOption?: number; }; export type ForceFocusSelector = (selector: string | null) => (tr: Transaction) => Transaction; /** * Floating toolbar plugin to be added to an `EditorPresetBuilder` and used with `ComposableEditor` * from `@atlaskit/editor-core`. */ export type FloatingToolbarPluginDependencies = [ DecorationsPlugin, OptionalPlugin<ContextPanelPlugin>, OptionalPlugin<ExtensionPlugin>, CopyButtonPlugin, EditorDisabledPlugin, OptionalPlugin<EditorViewModePlugin>, OptionalPlugin<FeatureFlagsPlugin>, OptionalPlugin<EmojiPlugin>, OptionalPlugin<UserIntentPlugin>, OptionalPlugin<InteractionPlugin>, OptionalPlugin<AnalyticsPlugin>, OptionalPlugin<ToolbarPlugin> ]; export type FloatingToolbarPlugin = NextEditorPlugin<'floatingToolbar', { actions: { forceFocusSelector: ForceFocusSelector; }; commands: { copyNode: (nodeType: NodeType | NodeType[], inputMethod?: INPUT_METHOD) => ({ tr }: { tr: Transaction; }) => Transaction; }; dependencies: FloatingToolbarPluginDependencies; sharedState: { configWithNodeInfo: ConfigWithNodeInfo | undefined; floatingToolbarData: FloatingToolbarPluginData | undefined; } | undefined; }>;