@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
51 lines (50 loc) • 1.86 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useContainerDataStore;
var _react = require("react");
var _componentHelper = require("../../../../../shared/component-helper.js");
var _Context = _interopRequireDefault(require("../../../DataContext/Context.js"));
var _SectionContext = _interopRequireDefault(require("../SectionContext.js"));
var _SectionContainerContext = _interopRequireDefault(require("../containers/SectionContainerContext.js"));
var _useDataValue = _interopRequireDefault(require("../../../hooks/useDataValue.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function useContainerDataStore() {
const valueBackupRef = (0, _react.useRef)();
const {
getData,
moveValueToPath
} = (0, _useDataValue.default)();
const {
data: dataFromContext,
setData
} = (0, _react.useContext)(_Context.default);
const {
path
} = (0, _react.useContext)(_SectionContext.default) || {};
const {
containerMode
} = (0, _react.useContext)(_SectionContainerContext.default) || {};
(0, _react.useEffect)(() => {
if (containerMode === 'edit' && !valueBackupRef.current) {
valueBackupRef.current = getData('/', {
includeCurrentPath: true
});
}
if (containerMode === 'view') {
valueBackupRef.current = null;
}
}, [containerMode, getData]);
const restoreOriginalData = (0, _react.useCallback)(() => {
if (valueBackupRef.current) {
const data = (0, _componentHelper.extendDeep)({}, dataFromContext, moveValueToPath(path, valueBackupRef.current));
setData === null || setData === void 0 || setData(data);
}
}, [dataFromContext, moveValueToPath, path, setData]);
return {
restoreOriginalData
};
}
//# sourceMappingURL=useContainerDataStore.js.map