UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

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