UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

39 lines (38 loc) 1.22 kB
"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() { let { enabled = false } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 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