@atlaskit/editor-plugin-floating-toolbar
Version:
Floating toolbar plugin for @atlaskit/editor-core
64 lines (63 loc) • 2.91 kB
TypeScript
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;
}>;