dispatch event for setContent instead of creating a new state

This commit is contained in:
Philipp Kühn 2019-07-11 23:45:22 +02:00
parent 8c5926e7c7
commit 305ebc490f

View File

@ -328,7 +328,7 @@ export default class Editor extends Emitter {
transaction, transaction,
}) })
if (!transaction.docChanged) { if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {
return return
} }
@ -395,17 +395,15 @@ export default class Editor extends Emitter {
} }
setContent(content = {}, emitUpdate = false, parseOptions) { setContent(content = {}, emitUpdate = false, parseOptions) {
const newState = EditorState.create({ const { doc, tr } = this.state
schema: this.state.schema, const document = this.createDocument(content, parseOptions)
doc: this.createDocument(content, parseOptions), const selection = TextSelection.create(doc, 0, doc.content.size)
plugins: this.state.plugins, const transaction = tr
}) .setSelection(selection)
.replaceSelectionWith(document, false)
.setMeta('preventUpdate', !emitUpdate)
this.view.updateState(newState) this.view.dispatch(transaction)
if (emitUpdate) {
this.emitUpdate()
}
} }
clearContent(emitUpdate = false) { clearContent(emitUpdate = false) {