@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
45 lines (44 loc) • 1.42 kB
JavaScript
"use client";
import { useCallback, useContext, useEffect, useRef } from 'react';
import { extendDeep } from "../../../../../shared/component-helper.js";
import DataContext from "../../../DataContext/Context.js";
import SectionContext from "../SectionContext.js";
import SectionContainerContext from "../containers/SectionContainerContext.js";
import useDataValue from "../../../hooks/useDataValue.js";
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?.(data);
}
}, [dataFromContext, moveValueToPath, path, setData]);
return {
restoreOriginalData
};
}
//# sourceMappingURL=useContainerDataStore.js.map