UNPKG

informed

Version:

A lightweight framework and utility for building powerful forms in React applications

92 lines (79 loc) 2.82 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var Context = require('../Context.js'); var useFormController = require('../hooks/useFormController.js'); var useRelevance = require('../hooks/useRelevance.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var Relevant = function Relevant(_ref) { var when = _ref.when, relevanceWhen = _ref.relevanceWhen, relevanceDeps = _ref.relevanceDeps, children = _ref.children; var formController = useFormController.useFormController(); var scope = React.useContext(Context.ScopeContext); // If we live in `Relevant` var parentRelevantContext = React.useContext(Context.RelevanceContext); var isRelevant = useRelevance.useRelevance({ relevant: when, relevanceWhen: relevanceWhen, relevanceDeps: relevanceDeps }); var relevantContext = React.useMemo(function () { return { isRelevant: isRelevant, relevant: function relevant() { // We might have parent if (parentRelevantContext && !parentRelevantContext.relevant()) { return false; } return when({ formState: formController.getFormState(), formApi: formController.getFormApi(), scope: scope, relevanceDeps: relevanceDeps }); } }; }, [isRelevant, scope, relevanceDeps]); return /*#__PURE__*/React__default["default"].createElement(Context.RelevanceContext.Provider, { value: relevantContext }, isRelevant ? children : null); }; // import React, { useMemo, useContext } from 'react'; // import { useFormState } from '../hooks/useFormState'; // import { useFormApi } from '../hooks/useFormApi'; // import { RelevanceContext, ScopeContext } from '../Context'; // import { useFormController } from '../hooks/useFormController'; // export const Relevant = ({ when, children }) => { // const formState = useFormState(); // const formApi = useFormApi(); // const formController = useFormController(); // const scope = useContext(ScopeContext); // const isRelevant = when({ // formState, // formApi, // scope // }); // const relevantContext = useMemo( // () => { // return { // isRelevant, // relevant: () => // when({ // formState: formController.getFormState(), // formApi: formController.getFormApi(), // scope // }) // }; // }, // [isRelevant] // ); // return ( // <RelevanceContext.Provider value={relevantContext}> // {isRelevant ? children : null} // </RelevanceContext.Provider> // ); // }; exports.Relevant = Relevant;