使用 Slatejs (v0.47) 如何扩展当前选择(从折叠开始)以包含当前单词?
所以(假设[]
表示当前部分)
如果我开始
this is some te[]xt
如何以编程方式将选择扩展到
this is some [text]
?
最终得到了这个工作。
export const word_selection = (editor) => {
const {value} = editor
const {selection, startText} = value
const {start, isExpanded} = selection
if (isExpanded) {
return value.fragment.text
}
const {text} = startText
const {offset} = start
let left = text.slice(0, offset).search(/\S+$/)
if (left === -1) {
// character before the cursor is a space, selection starts at the cursor
left = offset
}
let right = text.slice(offset).search(/\s/)
if (right < 0) {
// character after teh cursor is a space, selection ends at the cursor
right = text.length
} else {
right = right + offset
}
if (left === right) {
// nothing to select
return ''
}
editor.moveAnchorBackward(offset - left).moveFocusForward(right - offset)
return value.fragment.text
}