diff --git a/panel/src/components/Forms/Writer/Nodes/HardBreak.js b/panel/src/components/Forms/Writer/Nodes/HardBreak.js index dab4d5e5f5..9b146c06d3 100644 --- a/panel/src/components/Forms/Writer/Nodes/HardBreak.js +++ b/panel/src/components/Forms/Writer/Nodes/HardBreak.js @@ -6,10 +6,7 @@ export default class HardBreak extends Node { } createHardBreak(utils, type) { - return utils.chainCommands(utils.exitCode, (state, dispatch) => { - dispatch(state.tr.replaceSelectionWith(type.create()).scrollIntoView()); - return true; - }); + return utils.chainCommands(utils.exitCode, utils.insertNode(type)); } get defaults() { diff --git a/panel/src/components/Forms/Writer/Nodes/HorizontalRule.js b/panel/src/components/Forms/Writer/Nodes/HorizontalRule.js index 298e0940d7..13a594a1d4 100644 --- a/panel/src/components/Forms/Writer/Nodes/HorizontalRule.js +++ b/panel/src/components/Forms/Writer/Nodes/HorizontalRule.js @@ -1,9 +1,8 @@ import Node from "../Node"; export default class HorizontalRule extends Node { - commands({ type }) { - return () => (state, dispatch) => - dispatch(state.tr.replaceSelectionWith(type.create())); + commands({ type, utils }) { + return () => utils.insertNode(type); } inputRules({ type, utils }) { diff --git a/panel/src/components/Forms/Writer/Utils/index.js b/panel/src/components/Forms/Writer/Utils/index.js index e3c7f2bb77..e4f09ea93a 100644 --- a/panel/src/components/Forms/Writer/Utils/index.js +++ b/panel/src/components/Forms/Writer/Utils/index.js @@ -25,6 +25,7 @@ import { // custom import getMarkAttrs from "./getMarkAttrs"; import getNodeAttrs from "./getNodeAttrs"; +import insertNode from "./insertNode"; import markInputRule from "./markInputRule"; import markIsActive from "./markIsActive"; import markPasteRule from "./markPasteRule"; @@ -61,6 +62,7 @@ export default { // custom getMarkAttrs, getNodeAttrs, + insertNode, markInputRule, markIsActive, markPasteRule, diff --git a/panel/src/components/Forms/Writer/Utils/insertNode.js b/panel/src/components/Forms/Writer/Utils/insertNode.js new file mode 100644 index 0000000000..01eeb53a66 --- /dev/null +++ b/panel/src/components/Forms/Writer/Utils/insertNode.js @@ -0,0 +1,9 @@ +export default function insertNode(type, attrs, content, marks) { + return (state, dispatch) => { + dispatch( + state.tr + .replaceSelectionWith(type.create(attrs, content, marks)) + .scrollIntoView() + ); + }; +}