From 1d3d069766ede0e28e05fd23948f69d69ee057a0 Mon Sep 17 00:00:00 2001
From: Eduard Urbach <e.urbach@gmail.com>
Date: Wed, 19 Jul 2017 04:04:19 +0200
Subject: [PATCH] Fixed diffs

---
 scripts/Diff.ts | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/scripts/Diff.ts b/scripts/Diff.ts
index 05518167..93c162aa 100644
--- a/scripts/Diff.ts
+++ b/scripts/Diff.ts
@@ -21,6 +21,7 @@ export class Diff {
 		for(let i = 0; i < numNodes; i++) {
 			let a = aChild[i]
 
+			// Remove nodes at the end of a that do not exist in b
 			if(i >= bChild.length) {
 				aRoot.removeChild(a)
 				continue
@@ -28,34 +29,31 @@ export class Diff {
 
 			let b = bChild[i]
 
+			// If a doesn't have that many nodes, simply append at the end of a
 			if(i >= aChild.length) {
 				aRoot.appendChild(b)
 				continue
 			}
 
+			// If it's a completely different HTML tag or node type, replace it
 			if(a.nodeName !== b.nodeName || a.nodeType !== b.nodeType) {
 				aRoot.replaceChild(b, a)
 				continue
 			}
 
+			// Text node:
+			// We don't need to check for b to be a text node as well because
+			// we eliminated different node types in the previous condition.
 			if(a.nodeType === Node.TEXT_NODE) {
 				a.textContent = b.textContent
 				continue
 			}
 
+			// HTML element:
 			if(a.nodeType === Node.ELEMENT_NODE) {
 				let elemA = a as HTMLElement
 				let elemB = b as HTMLElement
 
-				// Ignore lazy images if they have the same source
-				if(elemA.classList.contains("lazy") && elemB.classList.contains("lazy")) {
-					if(elemA.dataset.src !== elemB.dataset.src) {
-						elemA.dataset.src = elemB.dataset.src
-						elemA.title = elemB.title
-					}
-					continue
-				}
-
 				// Skip iframes
 				// This part needs to be executed AFTER lazy images check
 				// to allow lazily loaded iframes to update their data src.
@@ -84,7 +82,7 @@ export class Diff {
 
 					if(attrib.specified) {
 						// Skip mountables
-						if(attrib.name == "class" && elemA.classList.contains("mounted")) {
+						if(attrib.name == "class" && (elemA.classList.contains("mounted") || elemA.classList.contains("image-found"))) {
 							continue
 						}