1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-16 04:04:06 +02:00

Prevent crash when handling composition of 2+ keypresses when selection is not collapsed (#2218)

https://github.com/ianstormtaylor/slate/issues/1879
When composition starts and the current selection is not collapsed, the
second composition key-down would drop the text wrapping <spans> which
resulted on crash in content.updateSelection after composition ends
(because it cannot find <span> nodes in DOM). This is a workaround that
erases selection as soon as composition starts and preventing <spans>
to be dropped.
This commit is contained in:
Kaspars Dancis
2018-10-25 10:47:29 -06:00
committed by Ian Storm Taylor
parent abc75bb45e
commit d5834bb5b0

View File

@@ -167,6 +167,20 @@ function BeforePlugin() {
editor.setState({ isComposing: true })
}
const { value } = change
const { selection } = value
if (!selection.isCollapsed) {
// https://github.com/ianstormtaylor/slate/issues/1879
// When composition starts and the current selection is not collapsed, the
// second composition key-down would drop the text wrapping <spans> which
// resulted on crash in content.updateSelection after composition ends
// (because it cannot find <span> nodes in DOM). This is a workaround that
// erases selection as soon as composition starts and preventing <spans>
// to be dropped.
change.delete()
}
debug('onCompositionStart', { event })
next()
}