fix: Add ability to convert between checklist and other types of list

This commit is contained in:
Tom Moor
2022-03-23 00:27:22 -07:00
parent 7f15eb287d
commit 8aa25fd7d6
21 changed files with 147 additions and 100 deletions

View File

@@ -1,22 +1,16 @@
import { PluginSimple } from "markdown-it";
import { InputRule } from "prosemirror-inputrules";
import { NodeType, MarkType, Schema } from "prosemirror-model";
import { EditorState, Plugin, Transaction } from "prosemirror-state";
import { EditorState, Plugin } from "prosemirror-state";
import { EditorView } from "prosemirror-view";
import { Editor } from "../../../app/editor";
import { Dispatch } from "../types";
export type Command = (
state: EditorState,
dispatch: (tr: Transaction) => void
) => boolean;
export type Command = (state: EditorState, dispatch: Dispatch) => boolean;
export type CommandFactory = (
attrs?: Record<string, any>
) => (
state: EditorState,
dispatch: (tr: Transaction) => void,
view: EditorView
) => boolean;
) => (state: EditorState, dispatch: Dispatch, view: EditorView) => boolean;
export default class Extension {
options: any;

View File

@@ -0,0 +1,18 @@
import { EditorState, Transaction } from "prosemirror-state";
import { Dispatch } from "../types";
export default function chainTransactions(
...commands: ((state: EditorState, dispatch?: Dispatch) => boolean)[]
) {
return (state: EditorState, dispatch?: Dispatch): boolean => {
const dispatcher = (tr: Transaction): void => {
state = state.apply(tr);
dispatch?.(tr);
};
const last = commands.pop();
const reduced = commands.reduce((result, command) => {
return result || command(state, dispatcher);
}, false);
return reduced && last !== undefined && last(state, dispatch);
};
}