Enhance word diff rendering by splitting segments on <br> tags and appending appropriate span elements for added, removed, and unchanged text.
This commit is contained in:
parent
abfd8268cb
commit
d4d1653ac7
1 changed files with 23 additions and 16 deletions
|
|
@ -315,23 +315,30 @@ function addCustomDiv(prompt_action,tabId,mailMessageId) {
|
|||
const response = getSelectedHtml();
|
||||
const wordDiff = Diff.diffWords(mztaOriginalText, response.replace(/<\\/?[^>]+(>|$)/g, ''));
|
||||
wordDiff.forEach(part => {
|
||||
const diffElement = document.createElement('span');
|
||||
|
||||
// Apply a different class depending on whether the word is added, removed, or unchanged
|
||||
if (part.added) {
|
||||
diffElement.className = 'added';
|
||||
diffElement.textContent = part.value;
|
||||
} else if (part.removed) {
|
||||
diffElement.className = 'removed';
|
||||
diffElement.textContent = part.value;
|
||||
} else {
|
||||
diffElement.textContent = part.value;
|
||||
// Split part.value by <br> (handling <br>, <br/>, <br />)
|
||||
const brRegex = /(<br\s*\\/?>)/gi;
|
||||
const segments = part.value.split(brRegex);
|
||||
|
||||
segments.forEach(segment => {
|
||||
if (segment.match(brRegex)) {
|
||||
// It's a <br>, add a real <br> element
|
||||
diffContent.appendChild(document.createElement("br"));
|
||||
} else if (segment.length > 0) {
|
||||
const diffElement = document.createElement("span");
|
||||
if (part.added) {
|
||||
diffElement.className = "added";
|
||||
diffElement.textContent = segment;
|
||||
} else if (part.removed) {
|
||||
diffElement.className = "removed";
|
||||
diffElement.textContent = segment;
|
||||
} else {
|
||||
diffElement.textContent = segment;
|
||||
}
|
||||
diffContent.appendChild(diffElement);
|
||||
}
|
||||
|
||||
// Add the element to the container
|
||||
diffContent.appendChild(diffElement);
|
||||
diffOverlay.style.display = 'block';
|
||||
});
|
||||
});
|
||||
});
|
||||
diffOverlay.style.display = 'block';
|
||||
};
|
||||
fixedDiv.appendChild(btn_diff);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue