Merge pull request #830 from Chrissi2812/issue-827

fix: link command on multi cell selections
This commit is contained in:
Hans Pagel 2020-09-16 10:16:37 +02:00 committed by GitHub
commit 6714faf8e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,25 +2,36 @@ import { getMarkRange } from 'tiptap-utils'
export default function (type, attrs) {
return (state, dispatch) => {
const { tr, selection, doc } = state
let { from, to } = selection
const { $from, empty } = selection
const {
tr,
selection,
doc,
} = state
const {
ranges,
empty,
} = selection
if (empty) {
const range = getMarkRange($from, type)
const { from, to } = getMarkRange(selection.$from, type)
if (doc.rangeHasMark(from, to, type)) {
tr.removeMark(from, to, type)
}
from = range.from
to = range.to
tr.addMark(from, to, type.create(attrs))
} else {
ranges.forEach(ref$1 => {
const { $to, $from } = ref$1
if (doc.rangeHasMark($from.pos, $to.pos, type)) {
tr.removeMark($from.pos, $to.pos, type)
}
tr.addMark($from.pos, $to.pos, type.create(attrs))
})
}
const hasMark = doc.rangeHasMark(from, to, type)
if (hasMark) {
tr.removeMark(from, to, type)
}
tr.addMark(from, to, type.create(attrs))
return dispatch(tr)
}
}