UNPKG

react-move

Version:

Beautiful, data-driven animations for React.

60 lines (48 loc) 1.64 kB
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; }); } export default mergeKeys;