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 }