@atlaskit/editor-plugin-synced-block
Version:
SyncedBlock plugin for @atlaskit/editor-core
51 lines (50 loc) • 2.64 kB
TypeScript
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);