MCPcopy Create free account
hub / github.com/continuedev/continue / ModeSelect

Function ModeSelect

gui/src/components/ModeSelect/ModeSelect.tsx:19–174  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

17import { ModeIcon } from "./ModeIcon";
18
19export function ModeSelect() {
20 const dispatch = useAppDispatch();
21 const mode = useAppSelector((store) => store.session.mode);
22 const selectedModel = useAppSelector(selectSelectedChatModel);
23
24 const isGoodAtAgentMode = useMemo(() => {
25 if (!selectedModel) {
26 return undefined;
27 }
28 return isRecommendedAgentModel(selectedModel.model);
29 }, [selectedModel]);
30
31 const { mainEditor } = useMainEditor();
32 const metaKeyLabel = useMemo(() => {
33 return getMetaKeyLabel();
34 }, []);
35
36 const cycleMode = useCallback(() => {
37 if (mode === "chat") {
38 dispatch(setMode("plan"));
39 } else if (mode === "plan") {
40 dispatch(setMode("agent"));
41 } else {
42 dispatch(setMode("chat"));
43 }
44 // Only focus main editor if another one doesn't already have focus
45 if (!document.activeElement?.classList?.contains("ProseMirror")) {
46 mainEditor?.commands.focus();
47 }
48 }, [mode, mainEditor]);
49
50 const selectMode = useCallback(
51 (newMode: MessageModes) => {
52 if (newMode === mode) {
53 return;
54 }
55
56 dispatch(setMode(newMode));
57
58 mainEditor?.commands.focus();
59 },
60 [mode, mainEditor],
61 );
62
63 useEffect(() => {
64 const handleKeyDown = (e: KeyboardEvent) => {
65 if (e.key === "." && (e.metaKey || e.ctrlKey)) {
66 e.preventDefault();
67 void cycleMode();
68 }
69 };
70
71 document.addEventListener("keydown", handleKeyDown);
72 return () => document.removeEventListener("keydown", handleKeyDown);
73 }, [cycleMode]);
74
75 const notGreatAtAgent = (mode: string) => (
76 <>

Callers

nothing calls this directly

Calls 5

isRecommendedAgentModelFunction · 0.90
useMainEditorFunction · 0.90
getMetaKeyLabelFunction · 0.90
getFontSizeFunction · 0.90
notGreatAtAgentFunction · 0.85

Tested by

no test coverage detected