in src/Clients/Web/winjs/js/winjs.js [50451:50541]
inserted: function (element, prev, next, animateInsertion) {
this._writeProfilerMark("WinJS.UI.FlipView:inserted,info");
var curr = this._prevMarker,
passedCurrent = false,
elementSuccessfullyPlaced = false;
if (animateInsertion) {
this._createAnimationRecord(uniqueID(element), null);
this._getAnimationRecord(element).inserted = true;
}
if (!prev) {
if (!next) {
this._currentPage.setElement(element);
} else {
while (curr.next !== this._prevMarker && curr.elementUniqueID !== uniqueID(next)) {
if (curr === this._currentPage) {
passedCurrent = true;
}
curr = curr.next;
}
if (curr.elementUniqueID === uniqueID(next) && curr !== this._prevMarker) {
curr.prev.setElement(element);
elementSuccessfullyPlaced = true;
} else {
this._releaseElementIfNotAnimated(element);
}
}
} else {
do {
if (curr === this._currentPage) {
passedCurrent = true;
}
if (curr.elementUniqueID === uniqueID(prev)) {
elementSuccessfullyPlaced = true;
var pageShifted = curr,
lastElementMoved = element,
lastElementMovedUniqueID = uniqueID(element),
temp;
if (passedCurrent) {
while (pageShifted.next !== this._prevMarker) {
temp = pageShifted.next.element;
lastElementMovedUniqueID = pageShifted.next.elementUniqueID;
pageShifted.next.setElement(lastElementMoved, true);
if (!lastElementMoved && lastElementMovedUniqueID) {
// Shift the uniqueID of the page manually since its element is being animated.
// This page will not contain the element until the animation completes.
pageShifted.next.elementUniqueID = lastElementMovedUniqueID;
}
lastElementMoved = temp;
pageShifted = pageShifted.next;
}
} else {
if (curr.elementUniqueID === curr.next.elementUniqueID && curr.elementUniqueID) {
pageShifted = curr.next;
}
while (pageShifted.next !== this._prevMarker) {
temp = pageShifted.element;
lastElementMovedUniqueID = pageShifted.elementUniqueID;
pageShifted.setElement(lastElementMoved, true);
if (!lastElementMoved && lastElementMovedUniqueID) {
// Shift the uniqueID of the page manually since its element is being animated.
// This page will not contain the element until the animation completes.
pageShifted.elementUniqueID = lastElementMovedUniqueID;
}
lastElementMoved = temp;
pageShifted = pageShifted.prev;
}
}
if (lastElementMoved) {
var reused = false;
this._forEachPage(function (curr) {
if (uniqueID(lastElementMoved) === curr.elementUniqueID) {
reused = true;
return true;
}
});
if (!reused) {
this._releaseElementIfNotAnimated(lastElementMoved);
}
}
break;
}
curr = curr.next;
} while (curr !== this._prevMarker);
}
this._getAnimationRecord(element).successfullyMoved = elementSuccessfullyPlaced;
this._setButtonStates();
},