@eccenca/gui-elements
Version:
GUI elements based on other libraries, usable in React application, written in Typescript.
27 lines (22 loc) • 754 B
text/typescript
import { Diagnostic } from "@codemirror/lint";
import { EditorView } from "@codemirror/view";
import { debounce } from "lodash";
import { Linter } from "./types";
const DEBOUNCE_TIME = 500;
export const debouncedLinter = (lintFunction: Linter, time = DEBOUNCE_TIME) => {
const debouncedFn = debounce(
(
view: EditorView,
resolve: (diagnostics: ReadonlyArray<Diagnostic> | Promise<ReadonlyArray<Diagnostic>>) => void
) => {
const diagnostics = lintFunction(view);
resolve(diagnostics);
},
time
);
return (view: EditorView) => {
return new Promise<ReadonlyArray<Diagnostic>>((resolve) => {
debouncedFn(view, resolve);
});
};
};