UNPKG

@atlaskit/editor-plugin-media

Version:

Media plugin for @atlaskit/editor-core

51 lines (50 loc) 2.82 kB
import React from 'react'; import type { DispatchAnalyticsEvent } from '@atlaskit/editor-common/analytics'; import type { EventDispatcher } from '@atlaskit/editor-common/event-dispatcher'; import type { PortalProviderAPI } from '@atlaskit/editor-common/portal-provider'; import type { ContextIdentifierProvider, MediaProvider, ProviderFactory } from '@atlaskit/editor-common/provider-factory'; import { SelectionBasedNodeView } from '@atlaskit/editor-common/selection-based-node-view'; import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types'; import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model'; import type { EditorView, NodeView } from '@atlaskit/editor-prosemirror/view'; import type { FileIdentifier } from '@atlaskit/media-client'; import type { MediaNextEditorPluginType } from '../next-plugin-type'; import type { MediaPluginState } from '../pm-plugins/types'; import type { getPosHandler, getPosHandler as ProsemirrorGetPosHandler } from '../types'; import { MediaNodeUpdater } from './mediaNodeUpdater'; export interface MediaInlineProps { mediaProvider: Promise<MediaProvider>; identifier: FileIdentifier; node: PMNode; isSelected: boolean; view: EditorView; getPos: ProsemirrorGetPosHandler; dispatchAnalyticsEvent?: DispatchAnalyticsEvent; contextIdentifierProvider?: Promise<ContextIdentifierProvider>; mediaPluginState: MediaPluginState; } export declare const createMediaNodeUpdater: (props: MediaInlineProps) => MediaNodeUpdater; /** * Handles updating the media inline node attributes * but also handling copy-paste for cross-editor of the same instance * using the contextid * */ export declare const updateMediaNodeAttributes: (props: MediaInlineProps, mediaNodeUpdater: MediaNodeUpdater) => Promise<void>; export declare const handleNewNode: (props: MediaInlineProps) => void; export declare const MediaInline: React.FC<MediaInlineProps>; export interface MediaInlineNodeViewProps { providerFactory: ProviderFactory; api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined; dispatchAnalyticsEvent?: DispatchAnalyticsEvent; } export declare class MediaInlineNodeView extends SelectionBasedNodeView<MediaInlineNodeViewProps> { createDomRef(): HTMLSpanElement; getContentDOM(): { dom: HTMLSpanElement; }; ignoreMutation(): boolean; viewShouldUpdate(nextNode: PMNode): boolean; render(props: MediaInlineNodeViewProps): JSX.Element; } export declare const ReactMediaInlineNode: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent) => (node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView;