diff --git a/packages/extension-link/src/helpers/autolink.ts b/packages/extension-link/src/helpers/autolink.ts index 4421c7b6..bd72b1ce 100644 --- a/packages/extension-link/src/helpers/autolink.ts +++ b/packages/extension-link/src/helpers/autolink.ts @@ -18,8 +18,9 @@ export function autolink(options: AutolinkOptions): Plugin { appendTransaction: (transactions, oldState, newState) => { const docChanges = transactions.some(transaction => transaction.docChanged) && !oldState.doc.eq(newState.doc) + const preventAutolink = transactions.some(transaction => transaction.getMeta('preventAutolink')) - if (!docChanges) { + if (!docChanges || preventAutolink) { return } diff --git a/packages/extension-link/src/link.ts b/packages/extension-link/src/link.ts index 51c3e2e5..99939cbe 100644 --- a/packages/extension-link/src/link.ts +++ b/packages/extension-link/src/link.ts @@ -92,16 +92,25 @@ export const Link = Mark.create({ addCommands() { return { - setLink: attributes => ({ commands }) => { - return commands.setMark(this.name, attributes) + setLink: attributes => ({ chain }) => { + return chain() + .setMark(this.name, attributes) + .setMeta('preventAutolink', true) + .run() }, - toggleLink: attributes => ({ commands }) => { - return commands.toggleMark(this.name, attributes, { extendEmptyMarkRange: true }) + toggleLink: attributes => ({ chain }) => { + return chain() + .toggleMark(this.name, attributes, { extendEmptyMarkRange: true }) + .setMeta('preventAutolink', true) + .run() }, - unsetLink: () => ({ commands }) => { - return commands.unsetMark(this.name, { extendEmptyMarkRange: true }) + unsetLink: () => ({ chain }) => { + return chain() + .unsetMark(this.name, { extendEmptyMarkRange: true }) + .setMeta('preventAutolink', true) + .run() }, } },