UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

83 lines (79 loc) 2.96 kB
import _slicedToArray from '@babel/runtime/helpers/slicedToArray'; import React__default from 'react'; import '../../utils/isValidAllowedChildren/index.js'; import '../../utils/logger/index.js'; import { useIsomorphicLayoutEffect } from '../../utils/useIsomorphicLayoutEffect.js'; import { getComponentId } from '../../utils/isValidAllowedChildren/isValidAllowedChildren.js'; import { throwBladeError, logger } from '../../utils/logger/logger.js'; var iconSizeMap = { medium: 'medium', large: 'large' }; var badgeSizeMap = { medium: 'small', large: 'medium' }; var counterSizeMap = { medium: 'small', large: 'small' }; var propRestrictionMap = { Badge: { medium: { size: badgeSizeMap.medium }, large: { size: badgeSizeMap.large } }, Counter: { medium: { size: counterSizeMap.medium }, large: { size: counterSizeMap.large } } }; var useTabsItemPropRestriction = function useTabsItemPropRestriction(trailing, tabItemSize) { var _React$useState = React__default.useState(null), _React$useState2 = _slicedToArray(_React$useState, 2), validatedTrailingComponent = _React$useState2[0], setValidatedTrailingComponent = _React$useState2[1]; // validate and restrict sub component props in trailing prop useIsomorphicLayoutEffect(function () { if ( /*#__PURE__*/React__default.isValidElement(trailing)) { var _propRestrictionMap$t; var trailingComponentType = getComponentId(trailing); var restrictedProps = (_propRestrictionMap$t = propRestrictionMap[trailingComponentType]) === null || _propRestrictionMap$t === void 0 ? void 0 : _propRestrictionMap$t[tabItemSize]; if (false) { if (!restrictedProps) { throwBladeError({ message: "Only Badge or Counter component is accepted as trailing", moduleName: 'TabsItem' }); } var restrictedPropKeys = Object.keys(restrictedProps); for (var _i = 0, _restrictedPropKeys = restrictedPropKeys; _i < _restrictedPropKeys.length; _i++) { var _trailing$props; var prop = _restrictedPropKeys[_i]; if (trailing !== null && trailing !== void 0 && (_trailing$props = trailing.props) !== null && _trailing$props !== void 0 && _trailing$props.hasOwnProperty(prop)) { logger({ message: "Do not pass \"".concat(prop, "\" to \"").concat(trailingComponentType, "\" while inside TabsItem trailing, because we override it."), moduleName: 'TabsItem', type: 'warn' }); } } } setValidatedTrailingComponent( /*#__PURE__*/React__default.cloneElement(trailing, restrictedProps)); } }, [tabItemSize, trailing]); return validatedTrailingComponent; }; var componentIds = { TabList: 'TabList', TabPanel: 'TabPanel' }; export { componentIds, iconSizeMap, useTabsItemPropRestriction }; //# sourceMappingURL=utils.js.map