From c33d1bf38fc9081866580fa60b7e494a8a705747 Mon Sep 17 00:00:00 2001 From: Chrissi2812 Date: Mon, 3 Jun 2019 17:24:15 +0200 Subject: [PATCH] fix wrong offset calculation --- .../tiptap-extensions/src/extensions/Search.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/tiptap-extensions/src/extensions/Search.js b/packages/tiptap-extensions/src/extensions/Search.js index 57d48bd4..dd63d60a 100644 --- a/packages/tiptap-extensions/src/extensions/Search.js +++ b/packages/tiptap-extensions/src/extensions/Search.js @@ -115,26 +115,29 @@ export default class Search extends Extension { } } - rebaseNextResult(replace, index) { + rebaseNextResult(replace, index, lastOffset = 0) { const nextIndex = index + 1 - if (!this.results[nextIndex]) return + if (!this.results[nextIndex]) return null - const nextStep = this.results[nextIndex] - const { from, to } = nextStep - const offset = (to - from - replace.length) * nextIndex + const { from: currentFrom, to: currentTo } = this.results[index] + const offset = (currentTo - currentFrom - replace.length) + lastOffset + const { from, to } = this.results[nextIndex] this.results[nextIndex] = { to: to - offset, from: from - offset, } + + return offset } replaceAll(replace) { return ({ tr }, dispatch) => { + let offset this.results.forEach(({ from, to }, index) => { tr.insertText(replace, from, to) - this.rebaseNextResult(replace, index) + offset = this.rebaseNextResult(replace, index, offset) }) dispatch(tr)