UNPKG

jss-react-material

Version:

Google Material Components for React

69 lines (56 loc) 2.61 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _validUrl = require('valid-url'); var _validUrl2 = _interopRequireDefault(_validUrl); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ANONYMOUS = '<<anonymous>>'; // Equivalent of `typeof` but with special handling for array and regexp. function getPropType(propValue) { var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue); if (Array.isArray(propValue)) { return 'array'; } if (propValue instanceof RegExp) { return 'object'; } return propType; } function createChainableTypeChecker(validate) { function checkType(isRequired, props, propName, componentName, location, propFullName) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (props[propName] === null) { if (isRequired) { return new Error('Required ' + location + ' `' + propFullName + '` was not specified in ' + ('`' + componentName + '`.')); } return null; } else { return validate(props, propName, componentName, location, propFullName); } } var chainedCheckType = checkType.bind(null, false); chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } function createUrlTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); var uri = propValue.substr(0, 2) === '//' ? 'http:' + propValue : propValue; if (propType !== 'string') { return new Error('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `uri_string`.')); } if (!_validUrl2.default.isUri(uri)) { return new Error('Invalid ' + location + ' `' + propFullName + '` `' + propValue + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `valid url`.')); } return null; } return createChainableTypeChecker(validate); } var PropTypes = { url: createUrlTypeChecker() }; exports.default = PropTypes;