@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
45 lines (44 loc) • 1.56 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useHasContentChanged;
var _react = require("react");
var _jsonPointer = _interopRequireDefault(require("../../utils/json-pointer"));
var _Context = _interopRequireDefault(require("../../DataContext/Context"));
var _useDataContextSnapshot = _interopRequireDefault(require("./useDataContextSnapshot"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function useHasContentChanged() {
let {
enabled = false
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
const {
internalDataRef
} = (0, _react.useContext)(_Context.default);
const {
snapshotRef
} = (0, _useDataContextSnapshot.default)({
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 = (0, _react.useMemo)(() => {
if (!data || !snapshot) {
return undefined;
}
let hasChanged = false;
_jsonPointer.default.walk(data, (value, path) => {
const exists = _jsonPointer.default.has(snapshot, path);
if (!exists || exists && _jsonPointer.default.get(snapshot, path) !== value) {
hasChanged = true;
return false;
}
});
return hasChanged;
}, [data, snapshot]);
return {
hasContentChanged
};
}
//# sourceMappingURL=useHasContentChanged.js.map