import type { Extension } from "@codemirror/state"; import type { Client } from "../client.ts"; import { blockquotePlugin } from "./block_quote.ts"; import { admonitionPlugin } from "./admonition.ts"; import { hideHeaderMarkPlugin, hideMarksPlugin } from "./hide_mark.ts"; import { cleanBlockPlugin } from "./block.ts"; import { linkPlugin } from "./link.ts"; import { listBulletPlugin } from "./list.ts"; import { tablePlugin } from "./table.ts"; import { taskListPlugin } from "./task.ts"; import { cleanWikiLinkPlugin } from "./wiki_link.ts"; import { fencedCodePlugin } from "./fenced_code.ts"; import { frontmatterPlugin } from "./frontmatter.ts"; import { cleanEscapePlugin } from "./escapes.ts"; import { luaDirectivePlugin } from "./lua_directive.ts"; import { hashtagPlugin } from "./hashtag.ts"; import type { ClickEvent } from "@silverbulletmd/silverbullet/type/client"; import { attributePlugin } from "./attribute.ts"; import { customSyntaxPlugin } from "./custom_syntax_widget.ts"; import { footnotePlugin } from "./footnote.ts"; export function cleanModePlugins(client: Client) { const pluginsNeededEvenWhenRenderingSyntax = [ luaDirectivePlugin(client), cleanWikiLinkPlugin(client), hashtagPlugin(), attributePlugin(), frontmatterPlugin(client), customSyntaxPlugin(client), ]; if (client.ui.viewState.uiOptions.markdownSyntaxRendering) { return pluginsNeededEvenWhenRenderingSyntax; } return [ ...pluginsNeededEvenWhenRenderingSyntax, linkPlugin(client), blockquotePlugin(), admonitionPlugin(), hideMarksPlugin(), hideHeaderMarkPlugin(), cleanBlockPlugin(), fencedCodePlugin(client), taskListPlugin({ // TODO: Move this logic elsewhere? onCheckboxClick: (pos) => { const clickEvent: ClickEvent = { page: client.currentName(), altKey: false, ctrlKey: false, metaKey: false, pos: pos, }; // Propagate click event from checkbox void client.dispatchClickEvent(clickEvent); }, getView: () => client.editorView, }), listBulletPlugin(), tablePlugin(client), cleanEscapePlugin(), ...footnotePlugin(() => client.editorView), ] as Extension[]; }