1 line
6.1 KiB
Plaintext
1 line
6.1 KiB
Plaintext
{"version":3,"file":"index.cjs","sources":["../src/horizontal-rule.ts"],"sourcesContent":["import {\n canInsertNode, isNodeSelection, mergeAttributes, Node, nodeInputRule,\n} from '@tiptap/core'\nimport { NodeSelection, TextSelection } from '@tiptap/pm/state'\n\nexport interface HorizontalRuleOptions {\n /**\n * The HTML attributes for a horizontal rule node.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record<string, any>\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n horizontalRule: {\n /**\n * Add a horizontal rule\n * @example editor.commands.setHorizontalRule()\n */\n setHorizontalRule: () => ReturnType\n }\n }\n}\n\n/**\n * This extension allows you to insert horizontal rules.\n * @see https://www.tiptap.dev/api/nodes/horizontal-rule\n */\nexport const HorizontalRule = Node.create<HorizontalRuleOptions>({\n name: 'horizontalRule',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n }\n },\n\n group: 'block',\n\n parseHTML() {\n return [{ tag: 'hr' }]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['hr', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)]\n },\n\n addCommands() {\n return {\n setHorizontalRule:\n () => ({ chain, state }) => {\n // Check if we can insert the node at the current selection\n if (!canInsertNode(state, state.schema.nodes[this.name])) {\n return false\n }\n\n const { selection } = state\n const { $from: $originFrom, $to: $originTo } = selection\n\n const currentChain = chain()\n\n if ($originFrom.parentOffset === 0) {\n currentChain.insertContentAt(\n {\n from: Math.max($originFrom.pos - 1, 0),\n to: $originTo.pos,\n },\n {\n type: this.name,\n },\n )\n } else if (isNodeSelection(selection)) {\n currentChain.insertContentAt($originTo.pos, {\n type: this.name,\n })\n } else {\n currentChain.insertContent({ type: this.name })\n }\n\n return (\n currentChain\n // set cursor after horizontal rule\n .command(({ tr, dispatch }) => {\n if (dispatch) {\n const { $to } = tr.selection\n const posAfter = $to.end()\n\n if ($to.nodeAfter) {\n if ($to.nodeAfter.isTextblock) {\n tr.setSelection(TextSelection.create(tr.doc, $to.pos + 1))\n } else if ($to.nodeAfter.isBlock) {\n tr.setSelection(NodeSelection.create(tr.doc, $to.pos))\n } else {\n tr.setSelection(TextSelection.create(tr.doc, $to.pos))\n }\n } else {\n // add node after horizontal rule if it’s the end of the document\n const node = $to.parent.type.contentMatch.defaultType?.create()\n\n if (node) {\n tr.insert(posAfter, node)\n tr.setSelection(TextSelection.create(tr.doc, posAfter + 1))\n }\n }\n\n tr.scrollIntoView()\n }\n\n return true\n })\n .run()\n )\n },\n }\n },\n\n addInputRules() {\n return [\n nodeInputRule({\n find: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/,\n type: this.type,\n }),\n ]\n },\n})\n"],"names":["Node","mergeAttributes","state","canInsertNode","isNodeSelection","TextSelection","NodeSelection","nodeInputRule"],"mappings":"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"} |