fix some auto complete issues

This commit is contained in:
Chenyu Huang
2025-07-24 15:58:24 -07:00
parent fc2fae42bd
commit ead6862fc6
3 changed files with 8 additions and 5 deletions
@@ -32,6 +32,7 @@ describe('getMentionAt', () => {
['@alice hello', 7, undefined],
['alice@alice', 0, undefined],
['alice@alice', 6, undefined],
['hello @alice-com goodbye', 8, 'alice-com'],
]
it.each(cases)(
@@ -72,6 +73,7 @@ describe('insertMentionAt', () => {
['@alice hello', 7, '@alice hello'],
['alice@alice', 0, 'alice@alice'],
['alice@alice', 6, 'alice@alice'],
['hello @alice-com goodbye', 10, 'hello @alice.com goodbye'],
]
it.each(cases)(
+1 -1
View File
@@ -7,7 +7,7 @@ export function getMentionAt(
text: string,
cursorPos: number,
): FoundMention | undefined {
let re = /(^|\s)@([a-z0-9.]*)/gi
let re = /(^|\s)@([a-z0-9.-]*)/gi
let match
while ((match = re.exec(text))) {
const spaceOffset = match[1].length
@@ -96,10 +96,11 @@ export const TextInput = forwardRef(function TextInputImpl(
newRt.detectFacetsWithoutResolution()
setRichText(newRt)
const prefix = getMentionAt(
newText,
textInputSelection.current?.start || 0,
)
// NOTE: BinaryFiddler
// onChangeText happens before onSelectionChange, cursorPos is out of bound if the user deletes characters,
const cursorPos = textInputSelection.current?.start ?? 0
const prefix = getMentionAt(newText, Math.min(cursorPos, newText.length))
if (prefix) {
setAutocompletePrefix(prefix.value)
} else if (autocompletePrefix) {