Remove cam.reactUtil.quacksLike because React 0.10.0 has this built-in.

Change-Id: Id76bfe32b52fcc3896eb57cd03c1967c6b8fbfac
This commit is contained in:
Aaron Boodman 2014-04-17 22:35:53 -07:00
parent df38df2275
commit f03f0568cc
4 changed files with 6 additions and 31 deletions

View File

@ -26,7 +26,6 @@ goog.require('goog.math.Size');
goog.require('goog.style');
goog.require('cam.BlobItemReact');
goog.require('cam.reactUtil');
goog.require('cam.SearchSession');
cam.BlobItemContainerReact = React.createClass({
@ -44,9 +43,9 @@ cam.BlobItemContainerReact = React.createClass({
propTypes: {
detailURL: React.PropTypes.func.isRequired, // string->string (blobref->complete detail URL)
handlers: React.PropTypes.array.isRequired,
history: cam.reactUtil.quacksLike({replaceState:React.PropTypes.func.isRequired}).isRequired,
history: React.PropTypes.shape({replaceState:React.PropTypes.func.isRequired}).isRequired,
onSelectionChange: React.PropTypes.func,
searchSession: cam.reactUtil.quacksLike({getCurrentResults:React.PropTypes.func.isRequired, addEventListener:React.PropTypes.func.isRequired, loadMoreResults:React.PropTypes.func.isRequired}),
searchSession: React.PropTypes.shape({getCurrentResults:React.PropTypes.func.isRequired, addEventListener:React.PropTypes.func.isRequired, loadMoreResults:React.PropTypes.func.isRequired}),
selection: React.PropTypes.object.isRequired,
style: React.PropTypes.object,
thumbnailSize: React.PropTypes.number.isRequired,

View File

@ -55,9 +55,9 @@ cam.IndexPage = React.createClass({
availWidth: React.PropTypes.number.isRequired,
availHeight: React.PropTypes.number.isRequired,
config: React.PropTypes.object.isRequired,
eventTarget: cam.reactUtil.quacksLike({addEventListener:React.PropTypes.func.isRequired}).isRequired,
history: cam.reactUtil.quacksLike({pushState:React.PropTypes.func.isRequired, replaceState:React.PropTypes.func.isRequired, go:React.PropTypes.func.isRequired, state:React.PropTypes.object}).isRequired,
location: cam.reactUtil.quacksLike({href:React.PropTypes.string.isRequired, reload:React.PropTypes.func.isRequired}).isRequired,
eventTarget: React.PropTypes.shape({addEventListener:React.PropTypes.func.isRequired}).isRequired,
history: React.PropTypes.shape({pushState:React.PropTypes.func.isRequired, replaceState:React.PropTypes.func.isRequired, go:React.PropTypes.func.isRequired, state:React.PropTypes.object}).isRequired,
location: React.PropTypes.shape({href:React.PropTypes.string.isRequired, reload:React.PropTypes.func.isRequired}).isRequired,
serverConnection: React.PropTypes.instanceOf(cam.ServerConnection).isRequired,
timer: cam.NavReact.originalSpec.propTypes.timer,
},

View File

@ -32,7 +32,7 @@ cam.NavReact = React.createClass({
onOpen: React.PropTypes.func.isRequired,
onClose: React.PropTypes.func.isRequired,
open: React.PropTypes.bool.isRequired,
timer: cam.reactUtil.quacksLike({setTimeout: React.PropTypes.func.isRequired, clearTimeout: React.PropTypes.func.isRequired,}).isRequired,
timer: React.PropTypes.shape({setTimeout: React.PropTypes.func.isRequired, clearTimeout: React.PropTypes.func.isRequired,}).isRequired,
},
componentWillMount: function() {

View File

@ -36,30 +36,6 @@ cam.reactUtil.mapOf = function(validator) {
return validator;
};
// A React prop validator that enforces a property has the specified duck type.
// @param Object iface An object that describes the required interface. Each property should itself be a React prop validator describing the corresponding required member.
// TODO(aa): Delete now that React has this built in.
cam.reactUtil.quacksLike = function(iface) {
var validator = function(props, propName, componentName) {
componentName += '.' + propName;
if (propName in props) {
var thing = props[propName];
for (var p in iface) {
iface[p](thing, p, componentName);
}
}
};
validator.isRequired = function(props, propName, componentName) {
if (!(propName in props)) {
throw new Error(goog.string.subs('Required prop %s is not present', propName));
}
validator(props, propName, componentName);
};
return validator;
};
// Returns the appropriate vendor prefixed style property name. This is figured out by testing the presence of various property names on an actual DOM style object.
// The returned property is of the form 'fooBar' (if no prefix is needed), or 'WebkitFooBar' if a prefix is needed, which is the form React expects.
// @param {string} prop The property name to find.