Reputation: 368
The available command setHTML
replaces the existing content. Is there any way to insert HTML content at specific position as insertText
.
Upvotes: 2
Views: 1954
Reputation: 4188
Alternatively,
import { DOMParser as ProseDOMParser } from "prosemirror-model";
public insertHTML(htmlString: string) {
const view = this.editor.view;
const state = view.state;
const parser = new DOMParser();
const tmpNode = parser.parseFromString(htmlString, 'text/html');
const domParser = ProseDOMParser.fromSchema(schema);
const newNodes = domParser.parse(tmpNode);
view.dispatch(state.tr.insert(state.selection.head, newNodes));
}
The workaround by Telerik did not work for my custom schema properly, this one does.
Upvotes: 1
Reputation: 368
After long research I found that currently there is no built-in way to get this done. However there is a workaround provided at Telerik forums.
Forum link: insert-html-content-to-editor
public insertHTML(editor: EditorComponent) {
editor.exec('insertText', { text: '#CURSOR#' });
// Replace cursor placeholder with new HTML and set the new editor value.
editor.value = editor.value.replace(/#CURSOR#/, this.strResult);
}
Upvotes: 1