fixes #31
This commit is contained in:
parent
2d48975e97
commit
79270c3423
1 changed files with 12 additions and 11 deletions
|
|
@ -219,11 +219,11 @@ proc updateDom(newNode, oldNode: VNode) =
|
||||||
updateDom(newNode[i], oldNode[i])
|
updateDom(newNode[i], oldNode[i])
|
||||||
|
|
||||||
proc updateElement(parent, current: Node, newNode, oldNode: VNode;
|
proc updateElement(parent, current: Node, newNode, oldNode: VNode;
|
||||||
kxi: KaraxInstance): bool =
|
kxi: KaraxInstance): EqResult =
|
||||||
let res = eq(newNode, oldNode, deep=false)
|
result = eq(newNode, oldNode, deep=false)
|
||||||
if res <= different:
|
if result <= different:
|
||||||
var n: Node
|
var n: Node
|
||||||
if res == changed:
|
if result == changed:
|
||||||
assert oldNode.kind == VNodeKind.component
|
assert oldNode.kind == VNodeKind.component
|
||||||
let x = VComponent(oldNode)
|
let x = VComponent(oldNode)
|
||||||
let oldExpanded = x.expanded
|
let oldExpanded = x.expanded
|
||||||
|
|
@ -232,13 +232,13 @@ proc updateElement(parent, current: Node, newNode, oldNode: VNode;
|
||||||
if oldExpanded == nil:
|
if oldExpanded == nil:
|
||||||
n = vnodeToDom(x.expanded, kxi)
|
n = vnodeToDom(x.expanded, kxi)
|
||||||
else:
|
else:
|
||||||
if updateElement(parent, current, x.expanded, oldExpanded, kxi):
|
if updateElement(parent, current, x.expanded, oldExpanded, kxi) >= similar:
|
||||||
n = x.expanded.dom
|
x.expanded = oldExpanded
|
||||||
doAssert n != nil, "expanded.dom is nil"
|
|
||||||
else:
|
|
||||||
n = oldExpanded.dom
|
n = oldExpanded.dom
|
||||||
doAssert n != nil, "old expanded.dom is nil"
|
doAssert n != nil, "old expanded.dom is nil"
|
||||||
result = true
|
else:
|
||||||
|
n = x.expanded.dom
|
||||||
|
doAssert n != nil, "expanded.dom is nil"
|
||||||
else:
|
else:
|
||||||
detach(oldNode)
|
detach(oldNode)
|
||||||
n = vnodeToDom(newNode, kxi)
|
n = vnodeToDom(newNode, kxi)
|
||||||
|
|
@ -246,7 +246,7 @@ proc updateElement(parent, current: Node, newNode, oldNode: VNode;
|
||||||
replaceById(kxi.rootId, n)
|
replaceById(kxi.rootId, n)
|
||||||
else:
|
else:
|
||||||
parent.replaceChild(n, current)
|
parent.replaceChild(n, current)
|
||||||
elif res == similar:
|
elif result == similar:
|
||||||
updateStyles(newNode, oldNode, false)
|
updateStyles(newNode, oldNode, false)
|
||||||
else:
|
else:
|
||||||
newNode.dom = oldNode.dom
|
newNode.dom = oldNode.dom
|
||||||
|
|
@ -295,7 +295,8 @@ proc updateElement(parent, current: Node, newNode, oldNode: VNode;
|
||||||
|
|
||||||
var pos = min(oldPos, newPos) + 1
|
var pos = min(oldPos, newPos) + 1
|
||||||
for i in commonPrefix..pos-1:
|
for i in commonPrefix..pos-1:
|
||||||
if updateElement(current, current.childNodes[i], newNode[i], oldNode[i], kxi):
|
if updateElement(current, current.childNodes[i],
|
||||||
|
newNode[i], oldNode[i], kxi) >= similar:
|
||||||
newNode[i] = oldNode[i]
|
newNode[i] = oldNode[i]
|
||||||
|
|
||||||
var nextChildPos = oldPos + 1
|
var nextChildPos = oldPos + 1
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue