@atlaskit/adf-schema
Version:
Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs
34 lines (33 loc) • 1.6 kB
TypeScript
import { DOMOutputSpec, Node as PMNode, NodeSpec, Mark, MarkSpec } from '@atlaskit/editor-prosemirror/model';
export type NodeSpecOptions<N extends PMNode> = {
toDOM?: (node: N) => DOMOutputSpec;
parseDOM?: NodeSpec['parseDOM'];
toDebugString?: () => string;
};
export type NodeSpecFactory = typeof createPMNodeSpecFactory;
export type MarkSpecOptions<M extends Mark> = {
toDOM?: (mark: M, inline: boolean) => DOMOutputSpec;
parseDOM?: MarkSpec['parseDOM'];
toDebugString?: () => string;
};
export type MarkSpecFactory = typeof createPMMarkSpecFactory;
/**
* Factory method to attach custom parseDOM and/or toDOM for nodeSpec
*
* @example
* createPMNodeSpecFactory<SomeNode>(node)({parseDOM: {}, toDOM: (node) => {} });
*
* @param nodeSpec - NodeSpec without toDom and parseDom
* @returns A function for a node which allows the consumer to define toDom and parseDom
*/
export declare const createPMNodeSpecFactory: <N extends Omit<PMNode, "toDOM" | "parseDOM">>(nodeSpec: NodeSpec) => ({ parseDOM, toDOM, toDebugString }: NodeSpecOptions<N>) => NodeSpec;
/**
* Factory method to attach custom parseDOM and/or toDOM for markSpec
*
* @example
* createPMMarkSpecFactory<SomeMark>(mark)({parseDOM: {}, toDOM: (mark, inline) => {} });
*
* @param markSpec - Markspec without toDom and parseDom
* @returns A function for a mark which allows the consumer to define toDom and parseDom
*/
export declare const createPMMarkSpecFactory: <M extends Omit<Mark, "toDOM" | "parseDOM">>(markSpec: MarkSpec) => ({ parseDOM, toDOM, toDebugString }: MarkSpecOptions<M>) => MarkSpec;