UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

84 lines (83 loc) 3.6 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useValueProps; var _react = require("react"); var _useExternalValue2 = _interopRequireDefault(require("./useExternalValue.js")); var _usePath = _interopRequireDefault(require("./usePath.js")); var _Context = _interopRequireDefault(require("../DataContext/Context.js")); var _ValueProviderContext = _interopRequireDefault(require("../Value/Provider/ValueProviderContext.js")); var _SummaryListContext = _interopRequireDefault(require("../Value/SummaryList/SummaryListContext.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function useValueProps(localProps) { var _useExternalValue, _props$label, _fieldInternalsRef$cu; const [, forceUpdate] = (0, _react.useReducer)(() => ({}), {}); const { extend } = (0, _react.useContext)(_ValueProviderContext.default); const props = extend(localProps); const { verifyChild } = (0, _react.useContext)(_SummaryListContext.default) || {}; verifyChild === null || verifyChild === void 0 || verifyChild(); const { path: pathProp, value: valueProp, itemPath, defaultValue, inheritVisibility, inheritLabel, transformIn = external => external, toInput = internal => internal, fromExternal = external => external } = props; const transformers = (0, _react.useRef)({ transformIn, toInput, fromExternal }); const { path } = (0, _usePath.default)({ path: pathProp, itemPath }); const externalValue = (_useExternalValue = (0, _useExternalValue2.default)({ path, itemPath, value: valueProp, transformers })) !== null && _useExternalValue !== void 0 ? _useExternalValue : defaultValue; const { fieldInternalsRef, mountedFieldsRef, setValueInternals, setFieldEventListener } = (0, _react.useContext)(_Context.default) || {}; setValueInternals === null || setValueInternals === void 0 || setValueInternals(path, props); (0, _react.useEffect)(() => { if (inheritLabel || inheritVisibility) { setFieldEventListener === null || setFieldEventListener === void 0 || setFieldEventListener(path, 'onMount', () => { requestAnimationFrame(forceUpdate); }); } }, [setFieldEventListener, path, inheritVisibility, inheritLabel]); const shouldBeVisible = (0, _react.useCallback)(path => { var _mountedFieldsRef$cur; const item = mountedFieldsRef === null || mountedFieldsRef === void 0 || (_mountedFieldsRef$cur = mountedFieldsRef.current) === null || _mountedFieldsRef$cur === void 0 ? void 0 : _mountedFieldsRef$cur.get(path); if (!item || !inheritVisibility) { return true; } return item.isVisible !== false && (item.isPreMounted !== false || item.wasStepChange === true); }, [inheritVisibility, mountedFieldsRef]); const value = shouldBeVisible(path) ? transformIn(toInput(externalValue)) : undefined; const label = (_props$label = props.label) !== null && _props$label !== void 0 ? _props$label : inheritLabel ? fieldInternalsRef === null || fieldInternalsRef === void 0 || (_fieldInternalsRef$cu = fieldInternalsRef.current) === null || _fieldInternalsRef$cu === void 0 || (_fieldInternalsRef$cu = _fieldInternalsRef$cu[path]) === null || _fieldInternalsRef$cu === void 0 || (_fieldInternalsRef$cu = _fieldInternalsRef$cu.props) === null || _fieldInternalsRef$cu === void 0 ? void 0 : _fieldInternalsRef$cu.label : undefined; return { ...props, label, value }; } //# sourceMappingURL=useValueProps.js.map