mirror of
https://github.com/ueberdosis/tiptap.git
synced 2025-01-18 14:13:21 +08:00
store editor in dom element
This commit is contained in:
parent
e0993a135a
commit
808b806db8
@ -4,8 +4,7 @@ context('/examples/export-html-or-json', () => {
|
||||
})
|
||||
|
||||
it('should return json', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
const json = editor.json()
|
||||
|
||||
expect(json).to.deep.equal({
|
||||
@ -52,8 +51,7 @@ context('/examples/export-html-or-json', () => {
|
||||
})
|
||||
|
||||
it('should return html', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
const html = editor.html()
|
||||
|
||||
expect(html).to.equal('<p>You are able to export your data as <code>HTML</code> or <code>JSON</code>.</p>')
|
||||
|
@ -4,8 +4,7 @@ context('/examples/focus', () => {
|
||||
})
|
||||
|
||||
it('should have class', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.focus('start')
|
||||
|
||||
cy.get('.ProseMirror p:first').should('have.class', 'has-focus')
|
||||
|
@ -4,8 +4,7 @@ context('/examples/history', () => {
|
||||
})
|
||||
|
||||
it('should not have a mistake', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
const html = editor.html()
|
||||
|
||||
cy.get('.ProseMirror h2:first').should('not.contain', 'Mistake')
|
||||
@ -13,8 +12,7 @@ context('/examples/history', () => {
|
||||
})
|
||||
|
||||
it('should have a mistake', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
const html = editor.html()
|
||||
|
||||
editor.insertText('Mistake')
|
||||
@ -23,8 +21,7 @@ context('/examples/history', () => {
|
||||
})
|
||||
|
||||
it('the mistake should be removed again', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
const html = editor.html()
|
||||
|
||||
editor.undo()
|
||||
|
@ -4,8 +4,7 @@ context('/examples/markdown-shortcuts', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.clearContent()
|
||||
done()
|
||||
})
|
||||
|
@ -4,10 +4,9 @@ context('/examples/read-only', () => {
|
||||
})
|
||||
|
||||
it.skip('should be read-only', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
cy.get('#editable').uncheck()
|
||||
|
||||
const { editor } = window
|
||||
editor.insertText('Edited: ')
|
||||
|
||||
cy.get('.ProseMirror p:first').should('not.contain', 'Edited: ')
|
||||
@ -15,10 +14,9 @@ context('/examples/read-only', () => {
|
||||
})
|
||||
|
||||
it.skip('should be editable', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
cy.get('#editable').check()
|
||||
|
||||
const { editor } = window
|
||||
editor.insertText('Edited: ')
|
||||
|
||||
cy.get('.ProseMirror p:first').should('contain', 'Edited: ')
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/blockquote', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
editor.selectAll()
|
||||
done()
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/bold', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
editor.selectAll()
|
||||
done()
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/code', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
editor.selectAll()
|
||||
done()
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/code-block', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
editor.selectAll()
|
||||
done()
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/hard-break', () => {
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
})
|
||||
})
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/heading', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
editor.selectAll()
|
||||
done()
|
||||
|
@ -4,19 +4,16 @@ context('/api/extensions/history', () => {
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Mistake</p>')
|
||||
})
|
||||
})
|
||||
|
||||
it('should make the last change undone', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
cy.get('.ProseMirror').should('contain', 'Mistake')
|
||||
cy.get('.ProseMirror').should('contain', 'Mistake')
|
||||
|
||||
cy.get('.demo__preview button:first').click({ force: true })
|
||||
cy.get('.ProseMirror').should('not.contain', 'Mistake')
|
||||
})
|
||||
cy.get('.demo__preview button:first').click({ force: true })
|
||||
cy.get('.ProseMirror').should('not.contain', 'Mistake')
|
||||
})
|
||||
|
||||
it('the keyboard shortcut should make the last change undone', () => {
|
||||
@ -25,14 +22,12 @@ context('/api/extensions/history', () => {
|
||||
})
|
||||
|
||||
it('should apply the last undone change again', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
cy.get('.ProseMirror').should('contain', 'Mistake')
|
||||
cy.get('.ProseMirror').should('contain', 'Mistake')
|
||||
|
||||
cy.get('.demo__preview button:first').click({ force: true })
|
||||
cy.get('.ProseMirror').should('not.contain', 'Mistake')
|
||||
cy.get('.demo__preview button:nth-child(2)').click({ force: true })
|
||||
cy.get('.ProseMirror').should('contain', 'Mistake')
|
||||
})
|
||||
cy.get('.demo__preview button:first').click({ force: true })
|
||||
cy.get('.ProseMirror').should('not.contain', 'Mistake')
|
||||
cy.get('.demo__preview button:nth-child(2)').click({ force: true })
|
||||
cy.get('.ProseMirror').should('contain', 'Mistake')
|
||||
})
|
||||
|
||||
it.skip('the keyboard shortcut should apply the last undone change again', () => {
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/horizontal-rule', () => {
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
})
|
||||
})
|
||||
@ -17,8 +16,7 @@ context('/api/extensions/horizontal-rule', () => {
|
||||
})
|
||||
|
||||
it('the default markdown shortcut should add a horizontal rule', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.clearContent()
|
||||
|
||||
cy.get('.ProseMirror hr').should('not.exist')
|
||||
@ -28,8 +26,7 @@ context('/api/extensions/horizontal-rule', () => {
|
||||
})
|
||||
|
||||
it('the alternative markdown shortcut should add a horizontal rule', () => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.clearContent()
|
||||
|
||||
cy.get('.ProseMirror hr').should('not.exist')
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/italic', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
editor.selectAll()
|
||||
done()
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/paragraph', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.clearContent()
|
||||
done()
|
||||
})
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/strike', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
editor.selectAll()
|
||||
done()
|
||||
|
@ -4,8 +4,7 @@ context('/api/extensions/underline', () => {
|
||||
})
|
||||
|
||||
beforeEach((done) => {
|
||||
cy.get('.ProseMirror').window().then(window => {
|
||||
const { editor } = window
|
||||
cy.get('.ProseMirror').then(([{ editor }]) => {
|
||||
editor.setContent('<p>Example Text</p>')
|
||||
editor.selectAll()
|
||||
done()
|
||||
|
@ -28,6 +28,16 @@ export interface CommandSpec {
|
||||
|
||||
type EditorContent = string | JSON | null
|
||||
|
||||
// interface Element {
|
||||
// editor?: Editor
|
||||
// }
|
||||
|
||||
interface HTMLElement {
|
||||
editor?: Editor
|
||||
}
|
||||
|
||||
// Element.prototype.editor = Editor
|
||||
|
||||
interface EditorOptions {
|
||||
element: Element,
|
||||
content: EditorContent,
|
||||
@ -241,6 +251,10 @@ export class Editor extends EventEmitter {
|
||||
dispatchTransaction: this.dispatchTransaction.bind(this),
|
||||
nodeViews: this.extensionManager.nodeViews,
|
||||
})
|
||||
|
||||
// store editor in dom element for better testing
|
||||
const dom = this.view.dom as HTMLElement
|
||||
dom.editor = this.proxy
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user