Engine Internals
Paste Transformer
Class reference for PasteTransformer.
The PasteTransformer converts complex HTML and Markdown payloads originating from standard OS ClipboardEvent buffers into strictly valid ProseMirror Transaction boundaries.
Constructor
new PasteTransformer(
schema: Schema,
extraMarkdownRules: MarkdownBlockRule[] = [],
markdownParserTokens: Record<string, MarkdownParserTokenSpec> = {}
)schema: The compiled Prosemirror schema used to construct valid block nodes.extraMarkdownRules: Regex pattern rules injected by Custom Extensions to scrape plain text strings into rich layouts (e.g. matching---to a Horizontal Rule).markdownParserTokens: CommonMark schema translations.
Methods
transform()
transform(clipboardData: DataTransfer, state: EditorState): Transaction | nullThe central invocation function. Parses the DataTransfer using a prioritized fallback list:
text/htmlutilizing a sterilized DOM Parser.text/plainutilizingprosemirror-markdownCommonMark.text/plainutilizing legacy line-by-line fallback regex processing.- Normal
insertText()string concatenation as an absolute last resort.
Utility Functions
cleanPastedHtml()
export function cleanPastedHtml(root: HTMLElement): voidAn aggressive DOM sterilizer triggered prior to processing payload nodes.
- Discards
style, meta, linkgarbage blocks. - Unwraps Google Docs' proprietary
<b id="docs-internal-guid...">containers. - Burns redundant empty
<p>elements surrounding<hr>layouts. - Trims non-schema CSS properties out of nested span
[style]objects.