1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-28 09:29:49 +02:00

fix empty selections active marks logic (#1083)

This commit is contained in:
Ian Storm Taylor
2017-09-07 12:09:49 -07:00
committed by GitHub
parent cf0745a178
commit d69f879fe1

View File

@@ -1029,7 +1029,7 @@ class Node {
} }
/** /**
* Get a set of the marks in a `range`. * Get a set of the marks in a `range`, by unioning.
* *
* @param {Selection} range * @param {Selection} range
* @return {Array} * @return {Array}
@@ -1065,6 +1065,13 @@ class Node {
}, []) }, [])
} }
/**
* Get a set of marks in a `range`, by intersecting.
*
* @param {Selection} range
* @return {Array}
*/
getActiveMarksAtRangeAsArray(range) { getActiveMarksAtRangeAsArray(range) {
range = range.normalize(this) range = range.normalize(this)
if (range.isUnset) return [] if (range.isUnset) return []
@@ -1089,11 +1096,15 @@ class Node {
// Otherwise, get a set of the marks for each character in the range. // Otherwise, get a set of the marks for each character in the range.
const chars = this.getCharactersAtRange(range) const chars = this.getCharactersAtRange(range)
const first = chars.first() const first = chars.first()
if (!first) return []
let memo = first.marks let memo = first.marks
chars.slice(1).forEach((char) => { chars.slice(1).forEach((char) => {
memo = memo.intersect(char.marks) memo = memo.intersect(char.marks)
return memo.size != 0 return memo.size != 0
}) })
return memo.toArray() return memo.toArray()
} }