import { keymap, dropCursor, EditorView } from "@codemirror/view"; import { type Extension } from "@codemirror/state"; import { indentOnInput, bracketMatching, foldGutter, foldKeymap } from "@codemirror/language"; import { defaultKeymap, history, historyKeymap, indentWithTab } from "@codemirror/commands"; import { searchKeymap } from "@codemirror/search"; import { autocompletion, completionKeymap, closeBrackets, closeBracketsKeymap, } from "@codemirror/autocomplete"; import { lintKeymap } from "@codemirror/lint"; import { defaultHideExtensions } from "./hide"; import { defaultFoldableSyntaxExtensions } from "./fold"; import { clickLinkExtension, defaultClickLinkHandler } from "./clickLink"; import { codeBlockDecorationsExtension, codeFenceTheme } from "./codeFenceExtension"; import { baseSyntaxHighlights, baseTheme, generalSyntaxHighlights, lightTheme, } from "./syntaxHighlighting"; import { fixedTabWidthExtension } from "./tabWidthExtension"; import { listExtension } from "./list"; import { revealBlockOnArrowExtension } from "./revealBlockOnArrow"; import { prosemarkMarkdownFormattingKeymap } from "./markdownFormattingKeymap"; export { prosemarkMarkdownSyntaxExtensions } from "./markdown"; export const prosemarkBasicSetup = (): Extension => [ // ProseMark Setup defaultHideExtensions, defaultFoldableSyntaxExtensions, revealBlockOnArrowExtension, clickLinkExtension, defaultClickLinkHandler, listExtension, fixedTabWidthExtension, codeBlockDecorationsExtension, // Basic CodeMirror Setup history(), dropCursor(), indentOnInput(), bracketMatching(), closeBrackets(), autocompletion(), keymap.of([ ...prosemarkMarkdownFormattingKeymap, ...closeBracketsKeymap, ...defaultKeymap, ...searchKeymap, ...historyKeymap, ...foldKeymap, ...completionKeymap, ...lintKeymap, indentWithTab, ]), foldGutter(), EditorView.lineWrapping, ]; export const prosemarkBaseThemeSetup = (): Extension => [ baseSyntaxHighlights, generalSyntaxHighlights, baseTheme, codeFenceTheme, ]; export const prosemarkLightThemeSetup = (): Extension => [prosemarkBaseThemeSetup(), lightTheme];