sourcebot/packages/web/src/hooks/useKeymapExtension.ts
2025-01-07 10:27:42 -08:00

26 lines
No EOL
759 B
TypeScript

'use client';
import { EditorView, keymap } from "@uiw/react-codemirror";
import { useExtensionWithDependency } from "./useExtensionWithDependency";
import { useKeymapType } from "./useKeymapType";
import { defaultKeymap } from "@codemirror/commands";
import { vim } from "@replit/codemirror-vim";
export const useKeymapExtension = (view: EditorView | undefined) => {
const [keymapType] = useKeymapType();
const extension = useExtensionWithDependency(
view ?? null,
() => {
switch (keymapType) {
case "default":
return keymap.of(defaultKeymap);
case "vim":
return vim();
}
},
[keymapType]
);
return extension;
}