From f1793b8bbe3ff037ca01ff1dcc9599cf91502660 Mon Sep 17 00:00:00 2001 From: Siarhei Klimovich Date: Fri, 13 Sep 2024 15:09:59 +0200 Subject: [PATCH] mark inserted tags --- js/htmldiff.js | 10 +++++++++- test/edge_cases.spec.js | 12 ++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/js/htmldiff.js b/js/htmldiff.js index 94c6a9c..6acce60 100644 --- a/js/htmldiff.js +++ b/js/htmldiff.js @@ -910,7 +910,15 @@ var val = tokens.map(function(token){ return token.string; }); - return wrap('ins', val, opIndex, dataPrefix, className); + + const res = wrap('ins', val, opIndex, dataPrefix, className); + + // handling inserted tags, see https://matrixreq.atlassian.net/browse/MATRIX-7876 + if (/^<[^.\/]+?>$/.exec(res)) { + return `${res.slice(0, res.length - 1)} data-inserted="true">`; + } + + return res; }, 'delete': function(op, beforeTokens, afterTokens, opIndex, dataPrefix, className){ var tokens = beforeTokens.slice(op.startInBefore, op.endInBefore + 1); diff --git a/test/edge_cases.spec.js b/test/edge_cases.spec.js index 54eb011..91e5c9a 100644 --- a/test/edge_cases.spec.js +++ b/test/edge_cases.spec.js @@ -29,5 +29,13 @@ BNXOISAN'FOSER3154 5SSDC`; expect(diff(before, after)).to.eql(res); - }) -}); \ No newline at end of file + }); + + it('adds data-inserted="true" to inserted tags', () => { + const before = `
some content
`; + const after = `
some content
`; + const res = `
some content
`; + + expect(diff(before, after)).to.eql(res); + }); +});