|
|
@ -400,29 +400,11 @@ BI.Layout = BI.inherit(BI.Widget, { |
|
|
|
oldEndVnode = oldCh[--oldEndIdx]; |
|
|
|
oldEndVnode = oldCh[--oldEndIdx]; |
|
|
|
newStartVnode = newCh[++newStartIdx]; |
|
|
|
newStartVnode = newCh[++newStartIdx]; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if (oldKeyToIdx === undefined) { |
|
|
|
|
|
|
|
oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
idxInOld = oldKeyToIdx[newStartVnode.key]; |
|
|
|
|
|
|
|
if (BI.isNull(idxInOld)) { |
|
|
|
|
|
|
|
var node = addNode(newStartVnode); |
|
|
|
|
|
|
|
insertBefore(node, oldStartVnode); |
|
|
|
|
|
|
|
newStartVnode = newCh[++newStartIdx]; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
elmToMove = oldCh[idxInOld]; |
|
|
|
|
|
|
|
var node = addNode(newStartVnode); |
|
|
|
var node = addNode(newStartVnode); |
|
|
|
insertBefore(node, oldStartVnode); |
|
|
|
insertBefore(node, oldStartVnode); |
|
|
|
// if (elmToMove.sel !== newStartVnode.sel) {
|
|
|
|
|
|
|
|
// api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// updated = this.patchItem(elmToMove, newStartVnode, idxInOld) || updated;
|
|
|
|
|
|
|
|
// oldCh[idxInOld] = undefined;
|
|
|
|
|
|
|
|
// api.insertBefore(parentElm, (elmToMove.elm), oldStartVnode.elm);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
newStartVnode = newCh[++newStartIdx]; |
|
|
|
newStartVnode = newCh[++newStartIdx]; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (oldStartIdx > oldEndIdx) { |
|
|
|
if (oldStartIdx > oldEndIdx) { |
|
|
|
before = BI.isNull(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm; |
|
|
|
before = BI.isNull(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm; |
|
|
|
addVnodes(before, newCh, newStartIdx, newEndIdx); |
|
|
|
addVnodes(before, newCh, newStartIdx, newEndIdx); |
|
|
@ -493,15 +475,6 @@ BI.Layout = BI.inherit(BI.Widget, { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function createKeyToOldIdx(children, beginIdx, endIdx) { |
|
|
|
|
|
|
|
var i, map = {}, key; |
|
|
|
|
|
|
|
for (i = beginIdx; i <= endIdx; ++i) { |
|
|
|
|
|
|
|
key = children[i].key; |
|
|
|
|
|
|
|
if (key !== undefined) map[key] = i; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return map; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return updated; |
|
|
|
return updated; |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|