@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
25 lines (24 loc) • 902 B
JavaScript
"use client";
import { useCallback, useContext } from 'react';
import { createReferenceKey, useSharedState } from '../../../shared/helpers/useSharedState';
import DataContext from '../DataContext/Context';
export default function useDataContext() {
let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
const sharedDataContext = useSharedState(createReferenceKey(id, 'data-context'));
const dataContext = useContext(DataContext);
const getContext = useCallback(() => {
if (!id) {
if (!dataContext.hasContext) {
throw new Error('useDataContext needs to run inside DataContext (Form.Handler) or have a valid id');
} else {
return dataContext;
}
}
return sharedDataContext.get();
}, [dataContext, id, sharedDataContext]);
return {
getContext,
dataContext
};
}
//# sourceMappingURL=useDataContext.js.map