UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

30 lines (29 loc) 1.16 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useDataContext; var _react = require("react"); var _useSharedState = require("../../../shared/helpers/useSharedState.js"); var _Context = _interopRequireDefault(require("../DataContext/Context.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function useDataContext(id = undefined) { const sharedDataContext = id ? (0, _useSharedState.createSharedState)((0, _useSharedState.createReferenceKey)(id, 'data-context')) : null; 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 sharedDataContext === null || sharedDataContext === void 0 ? void 0 : sharedDataContext.get(); }, [dataContext, id, sharedDataContext]); return { getContext, dataContext }; } //# sourceMappingURL=useDataContext.js.map