fix: link command on multi cell selections

Closes #827
This commit is contained in:
Chrissi2812
2020-09-11 10:49:34 +02:00
parent 0c569cb198
commit ddaad8b19c

View File

@@ -2,25 +2,36 @@ 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)) {
tr.removeMark(from, to, type)
}
from = range.from tr.addMark(from, to, type.create(attrs))
to = range.to } 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) return dispatch(tr)
} }
} }