@hello-pangea/dnd
Version:
Beautiful and accessible drag and drop for lists with React
37 lines (32 loc) • 874 B
text/typescript
/**
* Original author: Alex Reardon
* License: MIT
* Repo: https://github.com/alexreardon/memoize-one
*/
function isEqual(first: unknown, second: unknown): boolean {
if (first === second) {
return true;
}
// Special case for NaN (NaN !== NaN)
if (Number.isNaN(first) && Number.isNaN(second)) {
return true;
}
return false;
}
export default function areInputsEqual(
newInputs: readonly unknown[],
lastInputs: readonly unknown[],
): boolean {
// no checks needed if the inputs length has changed
if (newInputs.length !== lastInputs.length) {
return false;
}
// Using for loop for speed. It generally performs better than array.every
// https://github.com/alexreardon/memoize-one/pull/59
for (let i = 0; i < newInputs.length; i++) {
if (!isEqual(newInputs[i], lastInputs[i])) {
return false;
}
}
return true;
}