@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
38 lines (37 loc) • 1.14 kB
JavaScript
"use client";
import { useContext, useMemo } from 'react';
import pointer from '../../utils/json-pointer';
import DataContext from '../../DataContext/Context';
import useDataContextSnapshot from './useDataContextSnapshot';
export default function useHasContentChanged({
enabled = false
} = {}) {
const {
internalDataRef
} = useContext(DataContext);
const {
snapshotRef
} = useDataContextSnapshot({
enabled
});
const data = internalDataRef === null || internalDataRef === void 0 ? void 0 : internalDataRef.current;
const snapshot = snapshotRef === null || snapshotRef === void 0 ? void 0 : snapshotRef.current;
const hasContentChanged = useMemo(() => {
if (!data || !snapshot) {
return undefined;
}
let hasChanged = false;
pointer.walk(data, (value, path) => {
const exists = pointer.has(snapshot, path);
if (!exists || exists && pointer.get(snapshot, path) !== value) {
hasChanged = true;
return false;
}
});
return hasChanged;
}, [data, snapshot]);
return {
hasContentChanged
};
}
//# sourceMappingURL=useHasContentChanged.js.map