mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2025-02-08 15:40:44 +03:00
30 lines
906 B
JavaScript
30 lines
906 B
JavaScript
|
import { DiffPatcher } from 'jsondiffpatch/src/diffpatcher';
|
||
|
|
||
|
const defaultObjectHash = (o, idx) =>
|
||
|
o === null && '$$null' ||
|
||
|
o && (o.id || o.id === 0) && `$$id:${JSON.stringify(o.id)}` ||
|
||
|
o && (o._id ||o._id === 0) && `$$_id:${JSON.stringify(o._id)}` ||
|
||
|
'$$index:' + idx;
|
||
|
|
||
|
const defaultPropertyFilter = (name, context) =>
|
||
|
typeof context.left[name] !== 'function' &&
|
||
|
typeof context.right[name] !== 'function';
|
||
|
|
||
|
const defaultDiffPatcher = new DiffPatcher({
|
||
|
arrays: { detectMove: false },
|
||
|
objectHash: defaultObjectHash,
|
||
|
propertyFilter: defaultPropertyFilter
|
||
|
});
|
||
|
|
||
|
export default function createDiffPatcher(objectHash, propertyFilter) {
|
||
|
if (!objectHash && !propertyFilter) {
|
||
|
return defaultDiffPatcher;
|
||
|
}
|
||
|
|
||
|
return new DiffPatcher({
|
||
|
arrays: { detectMove: false },
|
||
|
objectHash: objectHash || defaultObjectHash,
|
||
|
propertyFilter: propertyFilter || defaultPropertyFilter
|
||
|
});
|
||
|
}
|