UNPKG

@atlaskit/editor-plugin-emoji

Version:

Emoji plugin for @atlaskit/editor-core

75 lines (74 loc) 3.3 kB
import type { INPUT_METHOD } from '@atlaskit/editor-common/analytics'; import type { Command, EditorCommand, NextEditorPlugin, OptionalPlugin, TypeAheadHandler } from '@atlaskit/editor-common/types'; import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics'; import type { InlineCommentInputMethod, InlineCommentMap } from '@atlaskit/editor-plugin-annotation'; import type { BasePlugin } from '@atlaskit/editor-plugin-base'; import type { ConnectivityPlugin } from '@atlaskit/editor-plugin-connectivity'; import type { EditorViewModePluginState } from '@atlaskit/editor-plugin-editor-viewmode'; import type { MetricsPlugin } from '@atlaskit/editor-plugin-metrics'; import type { TypeAheadInputMethod, TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead'; import type { SelectionBookmark } from '@atlaskit/editor-prosemirror/state'; import type { EmojiDescription, EmojiId, EmojiProvider, EmojiResourceConfig } from '@atlaskit/emoji'; import type { EmojiNodeDataProvider } from './pm-plugins/providers/EmojiNodeDataProvider'; type SetInlineCommentDraftState = (drafting: boolean, inputMethod: InlineCommentInputMethod) => Command; type AnnotationPluginType = NextEditorPlugin<'annotation', { actions: { setInlineCommentDraftState: SetInlineCommentDraftState; }; sharedState: { annotations: InlineCommentMap; bookmark?: SelectionBookmark; isVisible: boolean; mouseData: { isSelecting: boolean; }; }; }>; type EditorViewModePluginType = NextEditorPlugin<'editorViewMode', { sharedState: EditorViewModePluginState; }>; export interface EmojiPluginOptions { disableAutoformat?: boolean; emojiNodeDataProvider?: EmojiNodeDataProvider; emojiProvider?: Promise<EmojiProvider>; headless?: boolean; } export type EmojiPluginState = { asciiMap?: Map<string, EmojiDescription>; emojiProvider?: EmojiProvider; /** * Occassionally it may be more convenient to deal with the * promise version of the emoji provider. This is available * immediately if used for the initial configuration */ emojiProviderPromise?: Promise<EmojiProvider>; emojiResourceConfig?: EmojiResourceConfig; inlineEmojiPopupOpen?: boolean; }; export type EmojiPluginSharedState = EmojiPluginState & { typeAheadHandler: TypeAheadHandler; }; export type EmojiPluginCommands = { insertEmoji: (emojiId: EmojiId, inputMethod?: INPUT_METHOD.PICKER | INPUT_METHOD.ASCII | INPUT_METHOD.TYPEAHEAD) => EditorCommand; }; export type EmojiPluginActions = { openTypeAhead: (inputMethod: TypeAheadInputMethod) => boolean; setProvider: (provider: Promise<EmojiProvider>) => Promise<boolean>; }; export type EmojiPluginDependencies = [ OptionalPlugin<AnalyticsPlugin>, TypeAheadPlugin, OptionalPlugin<AnnotationPluginType>, OptionalPlugin<EditorViewModePluginType>, OptionalPlugin<BasePlugin>, OptionalPlugin<MetricsPlugin>, OptionalPlugin<ConnectivityPlugin> ]; export type EmojiPlugin = NextEditorPlugin<'emoji', { actions: EmojiPluginActions; commands: EmojiPluginCommands; dependencies: EmojiPluginDependencies; pluginConfiguration: EmojiPluginOptions | undefined; sharedState: EmojiPluginSharedState | undefined; }>; export {};