UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

11 lines (8 loc) 2.08 kB
import _slicedToArray from '@babel/runtime/helpers/slicedToArray'; import React__default from 'react'; import { getComponentId } from '../../utils/isValidAllowedChildren/isValidAllowedChildren.js'; import { throwBladeError, logger } from '../../utils/logger/logger.js'; import { useIsomorphicLayoutEffect } from '../../utils/useIsomorphicLayoutEffect.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];useIsomorphicLayoutEffect(function(){if(React__default.isValidElement(trailing)){var _propRestrictionMap$t;var trailingComponentType=getComponentId(trailing);var restrictedProps=(_propRestrictionMap$t=propRestrictionMap[trailingComponentType])==null?void 0:_propRestrictionMap$t[tabItemSize];if(__DEV__){if(!restrictedProps){throwBladeError({message:`Only Badge or Counter component is accepted as trailing`,moduleName:'TabsItem'});}var restrictedPropKeys=Object.keys(restrictedProps);for(var prop of restrictedPropKeys){var _trailing$props;if(trailing!=null&&(_trailing$props=trailing.props)!=null&&_trailing$props.hasOwnProperty(prop)){logger({message:`Do not pass "${prop}" to "${trailingComponentType}" while inside TabsItem trailing, because we override it.`,moduleName:'TabsItem',type:'warn'});}}}setValidatedTrailingComponent(React__default.cloneElement(trailing,restrictedProps));}},[tabItemSize,trailing]);return validatedTrailingComponent;};var componentIds={TabList:'TabList',TabPanel:'TabPanel'}; export { componentIds, iconSizeMap, useTabsItemPropRestriction }; //# sourceMappingURL=utils.js.map