1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-12 10:14:02 +02:00

Fix marks of undefined on char.marks (#1643)

* fix typo on getMarksAtCollapsedRangeAsArray

* making sure that char is defined on char.marks
This commit is contained in:
Irwan Fario Subastian
2018-02-22 07:40:02 +11:00
committed by Ian Storm Taylor
parent 07788eb2d9
commit 1269be7ba8

View File

@@ -1087,10 +1087,12 @@ class Node {
getMarksAtRangeAsArray(range) { getMarksAtRangeAsArray(range) {
range = range.normalize(this) range = range.normalize(this)
if (range.isUnset) return [] if (range.isUnset) return []
if (range.isCollapsed) return this.getMarksAtCollaspsedRangeAsArray(range) if (range.isCollapsed) return this.getMarksAtCollapsedRangeAsArray(range)
return this.getCharactersAtRange(range).reduce((memo, char) => { return this.getCharactersAtRange(range).reduce((memo, char) => {
char.marks.toArray().forEach(c => memo.push(c)) if (char) {
char.marks.toArray().forEach(c => memo.push(c))
}
return memo return memo
}, []) }, [])
} }
@@ -1105,13 +1107,12 @@ class Node {
getInsertMarksAtRangeAsArray(range) { getInsertMarksAtRangeAsArray(range) {
range = range.normalize(this) range = range.normalize(this)
if (range.isUnset) return [] if (range.isUnset) return []
if (range.isCollapsed) return this.getMarksAtCollaspsedRangeAsArray(range) if (range.isCollapsed) return this.getMarksAtCollapsedRangeAsArray(range)
const text = this.getDescendant(range.startKey) const text = this.getDescendant(range.startKey)
const char = text.characters.get(range.startOffset) const char = text.characters.get(range.startOffset)
if (!char) { if (!char) return []
return []
}
return char.marks.toArray() return char.marks.toArray()
} }
@@ -1122,7 +1123,7 @@ class Node {
* @return {Array} * @return {Array}
*/ */
getMarksAtCollaspsedRangeAsArray(range) { getMarksAtCollapsedRangeAsArray(range) {
if (range.isUnset) return [] if (range.isUnset) return []
const { startKey, startOffset } = range const { startKey, startOffset } = range
@@ -1136,11 +1137,15 @@ class Node {
return [] return []
} }
const char = previous.characters.get(previous.text.length - 1) const char = previous.characters.get(previous.text.length - 1)
if (!char) return []
return char.marks.toArray() return char.marks.toArray()
} }
const text = this.getDescendant(startKey) const text = this.getDescendant(startKey)
const char = text.characters.get(startOffset - 1) const char = text.characters.get(startOffset - 1)
if (!char) return []
return char.marks.toArray() return char.marks.toArray()
} }
@@ -1154,7 +1159,7 @@ class Node {
getActiveMarksAtRangeAsArray(range) { getActiveMarksAtRangeAsArray(range) {
range = range.normalize(this) range = range.normalize(this)
if (range.isUnset) return [] if (range.isUnset) return []
if (range.isCollapsed) return this.getMarksAtCollaspsedRangeAsArray(range) if (range.isCollapsed) return this.getMarksAtCollapsedRangeAsArray(range)
// 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)
@@ -1164,7 +1169,8 @@ class Node {
let memo = first.marks let memo = first.marks
chars.slice(1).forEach(char => { chars.slice(1).forEach(char => {
memo = memo.intersect(char.marks) const marks = char ? char.marks : []
memo = memo.intersect(marks)
return memo.size != 0 return memo.size != 0
}) })