| 1234567891011121314151617181920212223242526272829303132333435363738 |
- import { NodeType, Schema } from 'prosemirror-model'
- import {
- inputRules,
- wrappingInputRule,
- textblockTypeInputRule,
- smartQuotes,
- emDash,
- ellipsis,
- } from 'prosemirror-inputrules'
- const blockQuoteRule = (nodeType: NodeType) => wrappingInputRule(/^\s*>\s$/, nodeType)
- const orderedListRule = (nodeType: NodeType) => (
- wrappingInputRule(
- /^(\d+)\.\s$/,
- nodeType,
- match => ({order: +match[1]}),
- (match, node) => node.childCount + node.attrs.order == +match[1],
- )
- )
- const bulletListRule = (nodeType: NodeType) => wrappingInputRule(/^\s*([-+*])\s$/, nodeType)
- const codeBlockRule = (nodeType: NodeType) => textblockTypeInputRule(/^```$/, nodeType)
- export const buildInputRules = (schema: Schema) => {
- const rules = [
- ...smartQuotes,
- ellipsis,
- emDash,
- ]
- rules.push(blockQuoteRule(schema.nodes.blockquote))
- rules.push(orderedListRule(schema.nodes.ordered_list))
- rules.push(bulletListRule(schema.nodes.bullet_list))
- rules.push(codeBlockRule(schema.nodes.code_block))
- return inputRules({ rules })
- }
|