diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index 71eb2341..630da673 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -132,13 +132,20 @@ export class Editor extends EventEmitter { * @param options A list of options */ public setOptions(options: Partial = {}): void { - this.options = { ...this.options, ...options } - - // Update editorProps directly on the view and store reference to configured props - if (this.view) { - if (options.editorProps) this.view.setProps(options.editorProps) - this.options.editorProps = this.view.props + this.options = { + ...this.options, + ...options, } + + if (!this.view || !this.state || this.isDestroyed) { + return + } + + if (this.options.editorProps) { + this.view.setProps(this.options.editorProps) + } + + this.view.updateState(this.state) } /** @@ -146,10 +153,6 @@ export class Editor extends EventEmitter { */ public setEditable(editable: boolean): void { this.setOptions({ editable }) - - if (this.view && this.state && !this.isDestroyed) { - this.view.updateState(this.state) - } } /** @@ -257,9 +260,6 @@ export class Editor extends EventEmitter { // So we’ll have access to it for tests. const dom = this.view.dom as HTMLElement dom.editor = this - - // Reference the resulting view props in our options - this.options.editorProps = this.view.props } /** diff --git a/tests/cypress/integration/core/editorProps.spec.ts b/tests/cypress/integration/core/editorProps.spec.ts index 0053d886..82ddf303 100644 --- a/tests/cypress/integration/core/editorProps.spec.ts +++ b/tests/cypress/integration/core/editorProps.spec.ts @@ -16,9 +16,7 @@ describe('editorProps', () => { editorProps: { transformPastedHTML }, }) - expect(transformPastedHTML) - .to.eq(editor.options.editorProps.transformPastedHTML) - .and.to.eq(editor.options.editorProps.transformPastedHTML) + expect(transformPastedHTML).to.eq(editor.view.props.transformPastedHTML) }) it('editorProps can be set through setOptions', () => { @@ -32,24 +30,6 @@ describe('editorProps', () => { editor.setOptions({ editorProps: { transformPastedHTML } }) - expect(transformPastedHTML) - .to.eq(editor.options.editorProps.transformPastedHTML) - .and.to.eq(editor.options.editorProps.transformPastedHTML) - }) - - it('editorProps can be set directly through options', () => { - function transformPastedHTML(html: string) { - return html - } - - const editor = new Editor({ - extensions: [Document, Paragraph, Text], - }) - - editor.options.editorProps.transformPastedHTML = transformPastedHTML - - expect(transformPastedHTML) - .to.eq(editor.options.editorProps.transformPastedHTML) - .and.to.eq(editor.options.editorProps.transformPastedHTML) + expect(transformPastedHTML).to.eq(editor.view.props.transformPastedHTML) }) })