UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

55 lines (54 loc) 2.48 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _useSharedState = require("../../../../shared/helpers/useSharedState.js"); var _Context = _interopRequireDefault(require("../../DataContext/Context.js")); var _DataContextRefContext = _interopRequireDefault(require("../../DataContext/DataContextRefContext.js")); var _withComponentMarkers = _interopRequireDefault(require("../../../../shared/helpers/withComponentMarkers.js")); var _index = _interopRequireDefault(require("../Element/index.js")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const invalidOutletErrorMessage = 'Form.Outlet needs a valid formHandlerId that points to a mounted Form.Handler'; function Outlet(props) { const { formHandlerId, children } = props; const outerContext = (0, _react.useContext)(_Context.default); const isInsideLinkedHandler = outerContext?.hasContext && outerContext?.id === formHandlerId; const { data: linkedAttachments } = (0, _useSharedState.useSharedState)((0, _useSharedState.createReferenceKey)(formHandlerId, 'attachments')); const linkedValidationVersion = linkedAttachments?.validationVersion; const linkedShowAllErrors = linkedAttachments?.showAllErrors; const dataContextStore = (0, _react.useMemo)(() => (0, _useSharedState.createSharedState)((0, _useSharedState.createReferenceKey)(formHandlerId, 'data-context')), [formHandlerId]); const dataContextRef = (0, _react.useRef)(undefined); const dataContext = (0, _react.useMemo)(() => { void linkedValidationVersion; void linkedShowAllErrors; const context = dataContextStore.get(); if (!context?.hasContext) { throw new Error(invalidOutletErrorMessage); } return context; }, [dataContextStore, linkedValidationVersion, linkedShowAllErrors]); dataContextRef.current = dataContext; return (0, _jsxRuntime.jsx)(_Context.default.Provider, { value: dataContext, children: (0, _jsxRuntime.jsx)(_DataContextRefContext.default, { value: dataContextRef, children: isInsideLinkedHandler ? children : (0, _jsxRuntime.jsx)(_index.default, { children: children }) }) }); } (0, _withComponentMarkers.default)(Outlet, { _supportsSpacingProps: 'children' }); var _default = exports.default = Outlet; //# sourceMappingURL=Outlet.js.map