import type { 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;
