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,24 +2,35 @@ import { getMarkRange } from 'tiptap-utils'
export default function (type, attrs) { export default function (type, attrs) {
return (state, dispatch) => { return (state, dispatch) => {
const { tr, selection, doc } = state const {
let { from, to } = selection tr,
const { $from, empty } = selection selection,
doc,
} = state
const {
ranges,
empty,
} = selection
if (empty) { if (empty) {
const range = getMarkRange($from, type) const { from, to } = getMarkRange(selection.$from, type)
if (doc.rangeHasMark(from, to, type)) {
from = range.from
to = range.to
}
const hasMark = doc.rangeHasMark(from, to, type)
if (hasMark) {
tr.removeMark(from, to, type) tr.removeMark(from, to, type)
} }
tr.addMark(from, to, type.create(attrs)) 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))
})
}
return dispatch(tr) return dispatch(tr)
} }