react-move
Version:
Beautiful, data-driven animations for React.
68 lines (54 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
function mergeKeys(currNodeKeys, currKeyIndex, nextNodeKeys, nextKeyIndex) {
var allKeys = [];
for (var i = 0; i < nextNodeKeys.length; i++) {
allKeys[i] = nextNodeKeys[i];
}
for (var _i = 0; _i < currNodeKeys.length; _i++) {
if (nextKeyIndex[currNodeKeys[_i]] === undefined) {
allKeys.push(currNodeKeys[_i]);
}
}
return allKeys.sort(function (a, b) {
var nextOrderA = nextKeyIndex[a];
var nextOrderB = nextKeyIndex[b];
var currOrderA = currKeyIndex[a];
var currOrderB = currKeyIndex[b];
if (nextOrderA != null && nextOrderB != null) {
return nextKeyIndex[a] - nextKeyIndex[b];
} else if (currOrderA != null && currOrderB != null) {
return currKeyIndex[a] - currKeyIndex[b];
} else if (nextOrderA != null) {
for (var _i2 = 0; _i2 < nextNodeKeys.length; _i2++) {
var pivot = nextNodeKeys[_i2];
if (!currKeyIndex[pivot]) {
continue;
}
if (nextOrderA < nextKeyIndex[pivot] && currOrderB > currKeyIndex[pivot]) {
return -1;
} else if (nextOrderA > nextKeyIndex[pivot] && currOrderB < currKeyIndex[pivot]) {
return 1;
}
}
return 1;
}
for (var _i3 = 0; _i3 < nextNodeKeys.length; _i3++) {
var _pivot = nextNodeKeys[_i3];
if (!currKeyIndex[_pivot]) {
continue;
}
if (nextOrderB < nextKeyIndex[_pivot] && currOrderA > currKeyIndex[_pivot]) {
return 1;
} else if (nextOrderB > nextKeyIndex[_pivot] && currOrderA < currKeyIndex[_pivot]) {
return -1;
}
}
return -1;
});
}
var _default = mergeKeys;
exports["default"] = _default;