UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

45 lines (44 loc) 1.45 kB
"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