{"version":3,"file":"index.js","names":[],"sources":["../src/hard-break.ts","../src/index.ts"],"sourcesContent":["import { mergeAttributes, Node } from '@tiptap/core'\n\nexport interface HardBreakOptions {\n /**\n * Controls if marks should be kept after being split by a hard break.\n * @default true\n * @example false\n */\n keepMarks: boolean\n\n /**\n * HTML attributes to add to the hard break element.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record\n}\n\ndeclare module '@tiptap/core' {\n interface Commands {\n hardBreak: {\n /**\n * Add a hard break\n * @example editor.commands.setHardBreak()\n */\n setHardBreak: () => ReturnType\n }\n }\n}\n\n/**\n * This extension allows you to insert hard breaks.\n * @see https://www.tiptap.dev/api/nodes/hard-break\n */\nexport const HardBreak = Node.create({\n name: 'hardBreak',\n\n markdownTokenName: 'br',\n\n addOptions() {\n return {\n keepMarks: true,\n HTMLAttributes: {},\n }\n },\n\n inline: true,\n\n group: 'inline',\n\n selectable: false,\n\n linebreakReplacement: true,\n\n parseHTML() {\n return [{ tag: 'br' }]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['br', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)]\n },\n\n renderText() {\n return '\\n'\n },\n\n renderMarkdown: () => ` \\n`,\n\n parseMarkdown: () => {\n return {\n type: 'hardBreak',\n }\n },\n\n addCommands() {\n return {\n setHardBreak:\n () =>\n ({ commands, chain, state, editor }) => {\n return commands.first([\n () => commands.exitCode(),\n () =>\n commands.command(() => {\n const { selection, storedMarks } = state\n\n if (selection.$from.parent.type.spec.isolating) {\n return false\n }\n\n const { keepMarks } = this.options\n const { splittableMarks } = editor.extensionManager\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks())\n\n return chain()\n .insertContent({ type: this.name })\n .command(({ tr, dispatch }) => {\n if (dispatch && marks && keepMarks) {\n const filteredMarks = marks.filter(mark =>\n splittableMarks.includes(mark.type.name),\n )\n\n tr.ensureMarks(filteredMarks)\n }\n\n return true\n })\n .scrollIntoView()\n .run()\n }),\n ])\n },\n }\n },\n\n addKeyboardShortcuts() {\n return {\n 'Mod-Enter': () => this.editor.commands.setHardBreak(),\n 'Shift-Enter': () => this.editor.commands.setHardBreak(),\n }\n },\n})\n","import { HardBreak } from './hard-break.js'\n\nexport * from './hard-break.js'\n\nexport default HardBreak\n"],"mappings":";;;;;;AAkCA,MAAa,YAAY,KAAK,OAAyB;CACrD,MAAM;CAEN,mBAAmB;CAEnB,aAAa;EACX,OAAO;GACL,WAAW;GACX,gBAAgB,CAAC;EACnB;CACF;CAEA,QAAQ;CAER,OAAO;CAEP,YAAY;CAEZ,sBAAsB;CAEtB,YAAY;EACV,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC;CACvB;CAEA,WAAW,EAAE,kBAAkB;EAC7B,OAAO,CAAC,MAAM,gBAAgB,KAAK,QAAQ,gBAAgB,cAAc,CAAC;CAC5E;CAEA,aAAa;EACX,OAAO;CACT;CAEA,sBAAsB;CAEtB,qBAAqB;EACnB,OAAO,EACL,MAAM,YACR;CACF;CAEA,cAAc;EACZ,OAAO,EACL,qBAEG,EAAE,UAAU,OAAO,OAAO,aAAa;GACtC,OAAO,SAAS,MAAM,OACd,SAAS,SAAS,SAEtB,SAAS,cAAc;IACrB,MAAM,EAAE,WAAW,gBAAgB;IAEnC,IAAI,UAAU,MAAM,OAAO,KAAK,KAAK,WACnC,OAAO;IAGT,MAAM,EAAE,cAAc,KAAK;IAC3B,MAAM,EAAE,oBAAoB,OAAO;IACnC,MAAM,QAAQ,eAAgB,UAAU,IAAI,gBAAgB,UAAU,MAAM,MAAM;IAElF,OAAO,MAAM,CAAC,CACX,cAAc,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAClC,SAAS,EAAE,IAAI,eAAe;KAC7B,IAAI,YAAY,SAAS,WAAW;MAClC,MAAM,gBAAgB,MAAM,QAAO,SACjC,gBAAgB,SAAS,KAAK,KAAK,IAAI,CACzC;MAEA,GAAG,YAAY,aAAa;KAC9B;KAEA,OAAO;IACT,CAAC,CAAC,CACD,eAAe,CAAC,CAChB,IAAI;GACT,CAAC,CACL,CAAC;EACH,EACJ;CACF;CAEA,uBAAuB;EACrB,OAAO;GACL,mBAAmB,KAAK,OAAO,SAAS,aAAa;GACrD,qBAAqB,KAAK,OAAO,SAAS,aAAa;EACzD;CACF;AACF,CAAC;;;ACpHD,IAAA,cAAe"}