Testing dom diffing

This commit is contained in:
2017-09-11 13:44:39 +02:00
parent 34dcd6fc75
commit 6a69ce85cb
2 changed files with 17 additions and 4 deletions

View File

@@ -11,10 +11,16 @@ import org.w3c.dom.get
object DomDiffer {
fun replaceDiff(newElement: HTMLElement, oldElement: HTMLElement) {
fun replaceDiff(newElement: HTMLElement, oldElement: HTMLElement): HTMLElement {
println("CHECK $newElement -> $oldElement")
if (!match(newElement, oldElement)) {
println("no match, replace")
replaceNode(newElement, oldElement)
return newElement
} else {
println("check children")
// think of the children!
for (index in 0 until newElement.childElementCount) {
val newChild = newElement.children[index]
@@ -24,6 +30,8 @@ object DomDiffer {
replaceDiff(newChild, oldChild)
}
}
return oldElement
}
}

View File

@@ -110,11 +110,16 @@ abstract class Komponent {
fun refresh(element: HTMLElement?) {
if (element != null) {
elements[element]?.let {
val parent = element.parentElement
//val parent = element.parentElement
val newElement = it.create()
parent?.replaceChild(newElement, element)
//DomDiffer.replaceDiff(newElement, element)
//parent?.replaceChild(newElement, element)
val replacedElement = DomDiffer.replaceDiff(newElement, element)
it.element = replacedElement
elements.remove(replacedElement)
elements[replacedElement] = it
}
}
}