vcc-ui
Version:
A React library for building user interfaces at Volvo Cars
26 lines (25 loc) • 1.6 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createResponsivePropType = createResponsivePropType;
exports.responsiveStringProp = exports.responsiveNumberProp = exports.responsiveNumberOrStringProp = exports.oneOf = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
/**
We need to create our own version of this, as it's
not possible to combine out-of-the-box PropTypes
with custom function validators.
*/
const oneOf = validTypes => (props, propName, componentName) => {
if (validTypes.indexOf(props[propName]) === -1) {
return new Error(`Invalid prop supplied to '${componentName}'. Must be one of ['${validTypes.join("', '")}'].`);
}
};
exports.oneOf = oneOf;
const responsiveNumberOrStringProp = exports.responsiveNumberOrStringProp = createResponsivePropType([_propTypes.default.number, _propTypes.default.string]);
const responsiveNumberProp = exports.responsiveNumberProp = createResponsivePropType(_propTypes.default.number);
const responsiveStringProp = exports.responsiveStringProp = createResponsivePropType(_propTypes.default.string);
function createResponsivePropType(propTypes) {
return Array.isArray(propTypes) ? _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType(propTypes)), _propTypes.default.objectOf(_propTypes.default.oneOfType(propTypes)), ...propTypes]) : _propTypes.default.oneOfType([_propTypes.default.arrayOf(propTypes), _propTypes.default.objectOf(propTypes), propTypes]);
}
;