UNPKG

arkit

Version:

Visualises JavaScript, TypeScript and Flow codebases as meaningful and committable architecture diagrams

82 lines (73 loc) 2.19 kB
/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import checkPropTypes from 'prop-types/checkPropTypes'; import ReactSharedInternals from 'shared/ReactSharedInternals'; let ReactDebugCurrentFrame = null; const ReactControlledValuePropTypes = { checkPropTypes: null, }; if (__DEV__) { ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; const hasReadOnlyValue = { button: true, checkbox: true, image: true, hidden: true, radio: true, reset: true, submit: true, }; const propTypes = { value: function(props, propName, componentName) { if ( hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled || props[propName] == null ) { return null; } return new Error( 'You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.', ); }, checked: function(props, propName, componentName) { if ( props.onChange || props.readOnly || props.disabled || props[propName] == null ) { return null; } return new Error( 'You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.', ); }, }; /** * Provide a linked `value` attribute for controlled forms. You should not use * this outside of the ReactDOM controlled form components. */ ReactControlledValuePropTypes.checkPropTypes = function(tagName, props) { checkPropTypes( propTypes, props, 'prop', tagName, ReactDebugCurrentFrame.getStackAddendum, ); }; } export default ReactControlledValuePropTypes;