UNPKG

@atlaskit/editor-plugin-synced-block

Version:

SyncedBlock plugin for @atlaskit/editor-core

51 lines (50 loc) 2.64 kB
import type { EventDispatcher } from '@atlaskit/editor-common/event-dispatcher'; import type { PortalProviderAPI } from '@atlaskit/editor-common/portal'; import ReactNodeView, { type ReactComponentProps, type getPosHandler } from '@atlaskit/editor-common/react-node-view'; import type { ExtractInjectionAPI, getPosHandlerNode, PMPluginFactoryParams } 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 { SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider'; import type { SyncedBlockPlugin, SyncedBlockPluginOptions } from '../syncedBlockPluginType'; export interface BodiedSyncBlockNodeViewProps extends ReactComponentProps { api?: ExtractInjectionAPI<SyncedBlockPlugin>; eventDispatcher: EventDispatcher; getPos: getPosHandler; node: PMNode; pluginOptions: SyncedBlockPluginOptions | undefined; portalProviderAPI: PortalProviderAPI; syncBlockStore?: SyncBlockStoreManager; view: EditorView; } export interface BodiedSyncBlockNodeViewProperties { api?: ExtractInjectionAPI<SyncedBlockPlugin>; pluginOptions: SyncedBlockPluginOptions | undefined; pmPluginFactoryParams: PMPluginFactoryParams; syncBlockStore?: SyncBlockStoreManager; } export declare const bodiedSyncBlockNodeViewOld: (props: BodiedSyncBlockNodeViewProperties) => (node: PMNode, view: EditorView, getPos: getPosHandler) => ReactNodeView<BodiedSyncBlockNodeViewProps>; export declare class BodiedSyncBlock implements NodeView { dom: HTMLElement; contentDOM: HTMLElement; node: PMNode; view: EditorView; getPos: getPosHandlerNode; nodeViewPortalProviderAPI: PortalProviderAPI; private api?; private syncBlockStore?; private cleanupConnectivityModeListener?; private cleanupViewModeListener?; private labelKey; constructor(node: PMNode, view: EditorView, getPos: getPosHandlerNode, api: ExtractInjectionAPI<SyncedBlockPlugin> | undefined, nodeViewPortalProviderAPI: PortalProviderAPI, syncBlockStore?: SyncBlockStoreManager); private updateContentEditable; private handleConnectivityModeChange; private handleViewModeChange; private get syncedBlockStore(); update(node: PMNode): boolean; ignoreMutation(mutation: MutationRecord | { target: Node; type: 'selection'; }): boolean; destroy(): void; } export declare const bodiedSyncBlockNodeView: (props: BodiedSyncBlockNodeViewProperties) => ((node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView);