@razorpay/blade
Version:
The Design System that powers Razorpay
83 lines (79 loc) • 2.96 kB
JavaScript
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 (true) {
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