Files
outline/shared/editor/commands/deleteEmptyFirstParagraph.ts
2023-05-24 19:24:05 -07:00

32 lines
794 B
TypeScript

import { Command } from "prosemirror-state";
import isNodeActive from "../queries/isNodeActive";
/**
* Deletes the first paragraph node if it is empty and the cursor is at the
* beginning of the document.
*/
const deleteEmptyFirstParagraph: Command = (state, dispatch) => {
if (!isNodeActive(state.schema.nodes.paragraph)(state)) {
return false;
}
if (state.selection.from !== 1 || state.selection.to !== 1) {
return false;
}
const parent = state.selection.$from.parent;
if (parent.textContent !== "" || parent.childCount > 0) {
return false;
}
// delete the empty paragraph node
dispatch?.(
state.tr
.delete(state.selection.from - 1, state.selection.from)
.scrollIntoView()
);
return true;
};
export default deleteEmptyFirstParagraph;