UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

46 lines (45 loc) 1.59 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.countChildren = void 0; exports.useVerifyChildren = useVerifyChildren; var _includes = _interopRequireDefault(require("core-js-pure/stable/instance/includes.js")); var _react = require("react"); var _helpers = require("../../../../shared/helpers.js"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function useVerifyChildren({ children, message, messageInfo, ignoreTypes }) { const verifyCount = (0, _react.useRef)(0); verifyCount.current = 0; const verifyChild = (0, _react.useCallback)(() => { verifyCount.current += 1; }, []); (0, _react.useEffect)(() => { if (process.env.NODE_ENV !== 'production') { const count = countChildren(children, ignoreTypes); if (count > 0 && count > verifyCount.current) { (0, _helpers.warn)(message, messageInfo); } } }, [children, message]); return { verifyChild }; } const countChildren = (children, ignoreTypes, count = 0) => { return _react.Children.toArray(children).reduce((count, child) => { var _context; if (child?.['type'] === _react.Fragment) { return countChildren(child['props']?.children, ignoreTypes, count); } return count + ((0, _react.isValidElement)(child) && !((_context = ignoreTypes) == null ? void 0 : Function.call.bind((0, _includes.default)(_context), _context))?.(child?.type?.['name']) ? 1 : 0); }, count); }; exports.countChildren = countChildren; //# sourceMappingURL=useVerifyChildren.js.map