@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
45 lines (44 loc) • 1.45 kB
JavaScript
"use client";
import { useCallback, useContext, useEffect, useRef } from 'react';
import { extendDeep } from '../../../../../shared/component-helper';
import DataContext from '../../../DataContext/Context';
import SectionContext from '../SectionContext';
import SectionContainerContext from '../containers/SectionContainerContext';
import useDataValue from '../../../hooks/useDataValue';
export default function useContainerDataStore() {
const valueBackupRef = useRef();
const {
getData,
moveValueToPath
} = useDataValue();
const {
data: dataFromContext,
setData
} = useContext(DataContext);
const {
path
} = useContext(SectionContext) || {};
const {
containerMode
} = useContext(SectionContainerContext) || {};
useEffect(() => {
if (containerMode === 'edit' && !valueBackupRef.current) {
valueBackupRef.current = getData('/', {
includeCurrentPath: true
});
}
if (containerMode === 'view') {
valueBackupRef.current = null;
}
}, [containerMode, getData]);
const restoreOriginalData = useCallback(() => {
if (valueBackupRef.current) {
const data = extendDeep({}, dataFromContext, moveValueToPath(path, valueBackupRef.current));
setData === null || setData === void 0 ? void 0 : setData(data);
}
}, [dataFromContext, moveValueToPath, path, setData]);
return {
restoreOriginalData
};
}
//# sourceMappingURL=useContainerDataStore.js.map