{"version":3,"file":"index.cjs","names":["Node","mergeAttributes"],"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<string, any>\n}\n\ndeclare module '@tiptap/core' {\n  interface Commands<ReturnType> {\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<HardBreakOptions>({\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,YAAYA,aAAAA,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,OAAA,GAAMC,aAAAA,gBAAAA,CAAgB,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"}