mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-12 02:03:59 +02:00
InsertTextAtRange normalize (#1875)
* fix normalization condition on insertTextAtRange * normalize if marks exists * add comments * add test for expanded insertion with mark
This commit is contained in:
committed by
Ian Storm Taylor
parent
178fc78f1a
commit
dd3e9effff
@@ -863,8 +863,8 @@ Changes.insertTextAtRange = (change, range, text, marks, options = {}) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// PERF: Unless specified, don't normalize if only inserting text.
|
// PERF: Unless specified, don't normalize if only inserting text.
|
||||||
if (normalize !== undefined) {
|
if (normalize === undefined) {
|
||||||
normalize = range.isExpanded
|
normalize = range.isExpanded && marks.size !== 0
|
||||||
}
|
}
|
||||||
change.insertTextByKey(key, offset, text, marks, { normalize: false })
|
change.insertTextByKey(key, offset, text, marks, { normalize: false })
|
||||||
|
|
||||||
@@ -877,7 +877,10 @@ Changes.insertTextAtRange = (change, range, text, marks, options = {}) => {
|
|||||||
const normalizeAncestor = ancestors.findLast(n =>
|
const normalizeAncestor = ancestors.findLast(n =>
|
||||||
change.value.document.getDescendant(n.key)
|
change.value.document.getDescendant(n.key)
|
||||||
)
|
)
|
||||||
change.normalizeNodeByKey(normalizeAncestor.key)
|
// it is possible that normalizeAncestor doesn't return any node
|
||||||
|
// on that case fallback to startKey to be normalized
|
||||||
|
const normalizeKey = normalizeAncestor ? normalizeAncestor.key : startKey
|
||||||
|
change.normalizeNodeByKey(normalizeKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,40 @@
|
|||||||
|
/** @jsx h */
|
||||||
|
|
||||||
|
import h from '../../../helpers/h'
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This test makes sure a normalization happens on insertText on expandedRange
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default function(change) {
|
||||||
|
change.insertText('a')
|
||||||
|
change.insertText('b')
|
||||||
|
}
|
||||||
|
|
||||||
|
export const input = (
|
||||||
|
<value>
|
||||||
|
<document>
|
||||||
|
<paragraph>
|
||||||
|
<b>
|
||||||
|
<anchor />lorem
|
||||||
|
</b>
|
||||||
|
ipsum
|
||||||
|
</paragraph>
|
||||||
|
<paragraph>
|
||||||
|
ipsum<focus />
|
||||||
|
</paragraph>
|
||||||
|
</document>
|
||||||
|
</value>
|
||||||
|
)
|
||||||
|
|
||||||
|
export const output = (
|
||||||
|
<value>
|
||||||
|
<document>
|
||||||
|
<paragraph>
|
||||||
|
<b>
|
||||||
|
ab<cursor />
|
||||||
|
</b>
|
||||||
|
</paragraph>
|
||||||
|
</document>
|
||||||
|
</value>
|
||||||
|
)
|
Reference in New Issue
Block a user