mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
[visual] Avoid pasting formatted content into a math container (#14475)
GitOrigin-RevId: e563e27bf80092df7b296878536ca2d4549c4d2a
This commit is contained in:
parent
cf319b61b4
commit
1e286c263c
2 changed files with 15 additions and 1 deletions
|
@ -1,5 +1,6 @@
|
|||
import { EditorView } from '@codemirror/view'
|
||||
import { EditorSelection, Prec } from '@codemirror/state'
|
||||
import { ancestorNodeOfType } from '../../utils/tree-query'
|
||||
|
||||
export const pasteHtml = Prec.highest(
|
||||
EditorView.domEventHandlers({
|
||||
|
@ -29,6 +30,7 @@ export const pasteHtml = Prec.highest(
|
|||
}
|
||||
|
||||
const html = clipboardData.getData('text/html').trim()
|
||||
const text = clipboardData.getData('text/plain').trim()
|
||||
|
||||
if (html.length === 0) {
|
||||
return false
|
||||
|
@ -48,6 +50,16 @@ export const pasteHtml = Prec.highest(
|
|||
|
||||
view.dispatch(
|
||||
view.state.changeByRange(range => {
|
||||
// avoid pasting formatted content into a math container
|
||||
if (
|
||||
ancestorNodeOfType(view.state, range.anchor, '$MathContainer')
|
||||
) {
|
||||
return {
|
||||
range: EditorSelection.cursor(range.from + text.length),
|
||||
changes: { from: range.from, to: range.to, insert: text },
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
range: EditorSelection.cursor(range.from + latex.length),
|
||||
changes: { from: range.from, to: range.to, insert: latex },
|
||||
|
|
|
@ -45,7 +45,9 @@ describe('<CodeMirrorEditor/> paste HTML in Visual mode', function () {
|
|||
cy.get('@content').trigger('paste', { clipboardData })
|
||||
|
||||
cy.get('@content').should('have.text', 'foo')
|
||||
cy.get('@get-data').should('have.been.calledOnceWithExactly', 'text/html')
|
||||
cy.get('@get-data').should('have.been.calledTwice')
|
||||
cy.get('@get-data').should('have.been.calledWithExactly', 'text/html')
|
||||
cy.get('@get-data').should('have.been.calledWithExactly', 'text/plain')
|
||||
})
|
||||
|
||||
it('handles a pasted bullet list', function () {
|
||||
|
|
Loading…
Reference in a new issue