@atlaskit/editor-plugin-loom
Version:
Loom plugin for @atlaskit/editor-core
51 lines (50 loc) • 2.38 kB
TypeScript
import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
import type { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
import type { EditorCommand, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types';
import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
import type { ConnectivityPlugin } from '@atlaskit/editor-plugin-connectivity';
import type { EditorViewModePlugin } from '@atlaskit/editor-plugin-editor-viewmode';
import type { HyperlinkPlugin } from '@atlaskit/editor-plugin-hyperlink';
import type { PrimaryToolbarPlugin } from '@atlaskit/editor-plugin-primary-toolbar';
import type { QuickInsertPlugin } from '@atlaskit/editor-plugin-quick-insert';
import type { ToolbarPlugin } from '@atlaskit/editor-plugin-toolbar';
import type { WidthPlugin } from '@atlaskit/editor-plugin-width';
import type { LoomPluginState } from './pm-plugins/main';
import type { LoomPluginOptions, LoomProviderOptions, PositionType, VideoMeta } from './types';
export type LoomPlugin = NextEditorPlugin<'loom', {
actions: {
/**
* Given loom provider, initialise loom SDK
* @returns error message if initialisation failed
*/
initLoom: ({ loomProvider, }: {
loomProvider: LoomProviderOptions;
}) => Promise<{
error?: string;
}>;
/**
* Insert loom into the document.
*
* @param video Video metadata (`sharedUrl` and `title`)
* @param positionType {'start' | 'end' | 'current'} Where you want to insert the loom
* @returns {boolean} If the loom was successfully inserted
*/
insertLoom: (video: VideoMeta, positionType: PositionType) => boolean;
recordVideo: ({ inputMethod, editorAnalyticsAPI, }: {
editorAnalyticsAPI: EditorAnalyticsAPI | undefined;
inputMethod: INPUT_METHOD;
}) => EditorCommand;
};
dependencies: [
OptionalPlugin<AnalyticsPlugin>,
WidthPlugin,
HyperlinkPlugin,
OptionalPlugin<PrimaryToolbarPlugin>,
OptionalPlugin<QuickInsertPlugin>,
OptionalPlugin<ConnectivityPlugin>,
OptionalPlugin<ToolbarPlugin>,
OptionalPlugin<EditorViewModePlugin>
];
pluginConfiguration: LoomPluginOptions;
sharedState: LoomPluginState | undefined;
}>;