parent
1a8de05083
commit
4256a790fc
|
@ -91,7 +91,20 @@
|
||||||
this.observe('text', text => {
|
this.observe('text', text => {
|
||||||
const { rawText } = this.get()
|
const { rawText } = this.get()
|
||||||
if (rawText !== text) {
|
if (rawText !== text) {
|
||||||
|
let newSelectionStart
|
||||||
|
if (!firstTime) {
|
||||||
|
const { selectionStart, selectionEnd } = textarea
|
||||||
|
if (selectionStart > 0 && selectionStart === selectionEnd) {
|
||||||
|
// Preserve cursor position when doing an autosuggest.
|
||||||
|
// Note that we don't need to do anything special to measure length here, because
|
||||||
|
// the selectionStart value is not emoji-aware.
|
||||||
|
newSelectionStart = (text.length - rawText.length) + selectionStart
|
||||||
|
}
|
||||||
|
}
|
||||||
this.set({ rawText: text })
|
this.set({ rawText: text })
|
||||||
|
if (typeof newSelectionStart === 'number' && newSelectionStart > 0) {
|
||||||
|
textarea.selectionStart = textarea.selectionEnd = newSelectionStart
|
||||||
|
}
|
||||||
// this next autosize is required to resize after
|
// this next autosize is required to resize after
|
||||||
// the user clicks the "toot" button
|
// the user clicks the "toot" button
|
||||||
mark('autosize.update()')
|
mark('autosize.update()')
|
||||||
|
|
Loading…
Reference in a new issue