@tamagui/react-native-web-lite
Version:
React Native for Web
47 lines (46 loc) • 1.09 kB
JavaScript
const deepDiffer = function (one, two, maxDepth = -1) {
if (maxDepth === 0) {
return true;
}
if (one === two) {
return false;
}
if (typeof one === "function" && typeof two === "function") {
return false;
}
if (typeof one !== "object" || one === null) {
return one !== two;
}
if (typeof two !== "object" || two === null) {
return true;
}
if (one.constructor !== two.constructor) {
return true;
}
if (Array.isArray(one)) {
const len = one.length;
if (two.length !== len) {
return true;
}
for (let ii = 0; ii < len; ii++) {
if (deepDiffer(one[ii], two[ii], maxDepth - 1)) {
return true;
}
}
} else {
for (const key in one) {
if (deepDiffer(one[key], two[key], maxDepth - 1)) {
return true;
}
}
for (const twoKey in two) {
if (one[twoKey] === void 0 && two[twoKey] !== void 0) {
return true;
}
}
}
return false;
};
var deepDiffer_default = deepDiffer;
export { deepDiffer, deepDiffer_default as default };
//# sourceMappingURL=index.mjs.map