import { keymap } from 'prosemirror-keymap'; import type { Schema } from 'prosemirror-model'; import { history } from 'prosemirror-history'; import { baseKeymap } from 'prosemirror-commands'; import { dropCursor } from 'prosemirror-dropcursor'; import { gapCursor } from 'prosemirror-gapcursor'; import { buildKeymap } from './keymap'; import { buildInputRules } from './inputrules'; import { placeholderPlugin } from './placeholder'; export interface PluginOptions { placeholder?: string; } export const buildPlugins = (schema: Schema, options?: PluginOptions) => { const placeholder = options?.placeholder; const plugins = [ buildInputRules(schema), keymap(buildKeymap(schema)), keymap(baseKeymap), dropCursor(), gapCursor(), history(), ]; if (placeholder) plugins.push(placeholderPlugin(placeholder)); return plugins; };