@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
33 lines (32 loc) • 1.11 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useDataContext;
var _react = require("react");
var _useSharedState = require("../../../shared/helpers/useSharedState");
var _Context = _interopRequireDefault(require("../DataContext/Context"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function useDataContext() {
let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
const {
get
} = (0, _useSharedState.useSharedState)((0, _useSharedState.createReferenceKey)(id, 'data-context'));
const dataContext = (0, _react.useContext)(_Context.default);
const getContext = (0, _react.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 get();
}, [dataContext, id, get]);
return {
getContext,
dataContext
};
}
//# sourceMappingURL=useDataContext.js.map