diff --git a/packages/core/src/extensions/try.ts b/packages/core/src/extensions/try.ts index c7fa428b8..805e56d38 100644 --- a/packages/core/src/extensions/try.ts +++ b/packages/core/src/extensions/try.ts @@ -4,11 +4,13 @@ import { createExtension } from '../Extension' export const Try = createExtension({ addCommands() { return { - try: (fn: (props: Parameters[0]) => Command[]): Command => props => { - const commands = fn(props) + try: (commands: Command[] | ((props: Parameters[0]) => Command[])): Command => props => { + const items = typeof commands === 'function' + ? commands(props) + : commands - for (let i = 0; i < commands.length; i += 1) { - if (commands[i](props)) { + for (let i = 0; i < items.length; i += 1) { + if (items[i](props)) { return true } } diff --git a/packages/extension-hard-break/index.ts b/packages/extension-hard-break/index.ts index f8e062b16..6d804df12 100644 --- a/packages/extension-hard-break/index.ts +++ b/packages/extension-hard-break/index.ts @@ -1,5 +1,5 @@ import { Command, createNode } from '@tiptap/core' -import { chainCommands, exitCode } from 'prosemirror-commands' +import { exitCode } from 'prosemirror-commands' const HardBreak = createNode({ name: 'hardBreak', @@ -22,19 +22,17 @@ const HardBreak = createNode({ addCommands() { return { - hardBreak: (): Command => ({ state, dispatch, view }) => { - return chainCommands( - exitCode, - (_, d) => { - if (typeof d !== 'function') { - return false + hardBreak: (): Command => ({ commands, state, dispatch }) => { + return commands.try([ + () => exitCode(state, dispatch), + () => { + if (dispatch) { + state.tr.replaceSelectionWith(this.type.create()).scrollIntoView() } - d(state.tr.replaceSelectionWith(this.type.create()).scrollIntoView()) - return true }, - )(state, dispatch, view) + ]) }, } },