UNPKG

@zohodesk/docs-builder

Version:

docs-builder is used to build your own docs

72 lines (61 loc) 2.1 kB
import PropTypes from 'prop-types'; PropTypes.array.hookType = 'array'; PropTypes.bool.hookType = 'bool'; PropTypes.func.hookType = 'func'; PropTypes.number.hookType = 'number'; PropTypes.object.hookType = 'object'; PropTypes.string.hookType = 'string'; PropTypes.symbol.hookType = 'symbol'; PropTypes.element.hookType = 'element'; PropTypes.any.hookType = 'any'; PropTypes.elementType.hookType = 'elementType'; PropTypes.node.hookType = 'node'; PropTypes.array.isRequired.hookType = 'array'; PropTypes.bool.isRequired.hookType = 'bool'; PropTypes.func.isRequired.hookType = 'func'; PropTypes.number.isRequired.hookType = 'number'; PropTypes.object.isRequired.hookType = 'object'; PropTypes.string.isRequired.hookType = 'string'; PropTypes.symbol.isRequired.hookType = 'symbol'; PropTypes.element.isRequired.hookType = 'element'; PropTypes.elementType.isRequired.hookType = 'elementType'; PropTypes.node.isRequired.hookType = 'node'; PropTypes.any.isRequired.hookType = 'any'; function proxy(fn, type) { let oneOf = fn; return (...args) => { let a = oneOf(...args); let type1 = Array.isArray(args) && Array.isArray(args[0]) ? `${type }[${ args[0].map(data => typeof data === 'function' ? data.hookType //arrayOf shape complex type not mention : JSON.stringify(data)) }]` : type; a.hookType = type1; if (a.isRequired) { a.isRequired.hookType = type1; } return a; }; } function newProxy(fn, type) { return (...args) => { let a = fn(...args); a.hookType = type; if (a.isRequired) { a.isRequired.hookType = type; } return a; }; } PropTypes.oneOf = proxy(PropTypes.oneOf, 'enum'); PropTypes.oneOfType = proxy(PropTypes.oneOfType, 'union'); PropTypes.arrayOf = proxy(PropTypes.arrayOf, 'arrayOf'); PropTypes.shape = proxy(PropTypes.shape, 'shape'); PropTypes.exact = proxy(PropTypes.exact, 'exact'); PropTypes.objectOf = proxy(PropTypes.objectOf, 'objectOf'); PropTypes.instanceOf = newProxy(PropTypes.instanceOf, 'instanceOf'); // export default PropTypes;