From 2b7119502c6926993645179251a7729ea58fcb79 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Fri, 1 Sep 2023 12:05:42 +0100 Subject: [PATCH] Merge pull request #14588 from overleaf/ae-paste-blockquote [visual] Handle pasted blockquote GitOrigin-RevId: 5acc257a464886c1f90daf9192c87cccf158927e --- .../extensions/visual/paste-html.ts | 5 +++++ ...demirror-editor-visual-paste-html.spec.tsx | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts b/services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts index ffaea6e8b4..702a36e9cd 100644 --- a/services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts +++ b/services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts @@ -543,4 +543,9 @@ const selectors = [ element.nextElementSibling?.nodeName === 'P' && hasContent(element), end: () => '\n\n', }), + createSelector({ + selector: 'blockquote', + start: () => `\n\n\\begin{quote}\n`, + end: () => `\n\\end{quote}\n\n`, + }), ] diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-paste-html.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-paste-html.spec.tsx index 5cbfdcc3f5..32ebc48313 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-paste-html.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-paste-html.spec.tsx @@ -251,6 +251,25 @@ describe(' paste HTML in Visual mode', function () { ) }) + it('handles a pasted blockquote', function () { + mountEditor() + + const data = 'test
foo
test' + + const clipboardData = new DataTransfer() + clipboardData.setData('text/html', data) + cy.get('@content').trigger('paste', { clipboardData }) + + cy.get('@content').should('have.text', 'test foo test') + cy.get('.ol-cm-environment-quote').should('have.length', 5) + + cy.get('.cm-line').eq(2).click() + cy.get('@content').should( + 'have.text', + 'test \\begin{quote}foo\\end{quote} test' + ) + }) + it('handles pasted inline code', function () { mountEditor()