mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-25 02:00:10 +02:00
[visual] Avoid pasting formatted content into a math container (#14475)
GitOrigin-RevId: e563e27bf80092df7b296878536ca2d4549c4d2a
This commit is contained in:
@@ -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 () {
|
||||
|
||||
Reference in New Issue
Block a user