⬆️ refactor: Improve Text Commands (#3152)

* refactor(useMentions): separate usage of `useSelectMention`

* refactor: separate handleKeyUp logic from useTextarea

* fix(Mention): cleanup blur timer

* refactor(handleKeyUp): improve command handling, prevent unintended re-trigger

* chore: remove console log

* chore: temporarily comment plus command
This commit is contained in:
Danny Avila 2024-06-21 12:34:28 -04:00 committed by GitHub
parent b2b469bd3d
commit 24467dd626
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 121 additions and 38 deletions

View file

@ -2,6 +2,7 @@ import { useState, useRef, useEffect } from 'react';
import { EModelEndpoint } from 'librechat-data-provider';
import type { SetterOrUpdater } from 'recoil';
import type { MentionOption } from '~/common';
import useSelectMention from '~/hooks/Input/useSelectMention';
import { useAssistantsMapContext } from '~/Providers';
import useMentions from '~/hooks/Input/useMentions';
import { useLocalize, useCombobox } from '~/hooks';
@ -17,8 +18,13 @@ export default function Mention({
}) {
const localize = useLocalize();
const assistantMap = useAssistantsMapContext();
const { options, modelsConfig, assistantListMap, onSelectMention } = useMentions({
const { options, presets, modelSpecs, modelsConfig, endpointsConfig, assistantListMap } =
useMentions({ assistantMap });
const { onSelectMention } = useSelectMention({
presets,
modelSpecs,
assistantMap,
endpointsConfig,
});
const [activeIndex, setActiveIndex] = useState(0);
@ -80,6 +86,14 @@ export default function Mention({
}
}, [open, options]);
useEffect(() => {
return () => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
};
}, []);
useEffect(() => {
const currentActiveItem = document.getElementById(`mention-item-${activeIndex}`);
currentActiveItem?.scrollIntoView({ behavior: 'instant', block: 'nearest' });