// src/horizontal-rule.ts import { canInsertNode, isNodeSelection, mergeAttributes, Node, nodeInputRule } from "@tiptap/core"; import { NodeSelection, TextSelection } from "@tiptap/pm/state"; var HorizontalRule = Node.create({ name: "horizontalRule", addOptions() { return { HTMLAttributes: {}, nextNodeType: "paragraph" }; }, group: "block", parseHTML() { return [{ tag: "hr" }]; }, renderHTML({ HTMLAttributes }) { return ["hr", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)]; }, markdownTokenName: "hr", parseMarkdown: (token, helpers) => { return helpers.createNode("horizontalRule"); }, renderMarkdown: () => { return "---"; }, addCommands() { return { setHorizontalRule: () => ({ chain, state }) => { if (!canInsertNode(state, state.schema.nodes[this.name])) { return false; } const { selection } = state; const { $to: $originTo } = selection; const currentChain = chain(); if (isNodeSelection(selection)) { currentChain.insertContentAt($originTo.pos, { type: this.name }); } else { currentChain.insertContent({ type: this.name }); } return currentChain.command(({ state: chainState, tr, dispatch }) => { if (dispatch) { const { $to } = tr.selection; const posAfter = $to.end(); if ($to.nodeAfter) { if ($to.nodeAfter.isTextblock) { tr.setSelection(TextSelection.create(tr.doc, $to.pos + 1)); } else if ($to.nodeAfter.isBlock) { tr.setSelection(NodeSelection.create(tr.doc, $to.pos)); } else { tr.setSelection(TextSelection.create(tr.doc, $to.pos)); } } else { const nodeType = chainState.schema.nodes[this.options.nextNodeType] || $to.parent.type.contentMatch.defaultType; const node = nodeType == null ? void 0 : nodeType.create(); if (node) { tr.insert(posAfter, node); tr.setSelection(TextSelection.create(tr.doc, posAfter + 1)); } } tr.scrollIntoView(); } return true; }).run(); } }; }, addInputRules() { return [ nodeInputRule({ find: /^(?:---|—-|___\s|\*\*\*\s)$/, type: this.type }) ]; } }); // src/index.ts var index_default = HorizontalRule; export { HorizontalRule, index_default as default }; //# sourceMappingURL=index.js.map