react-responsive-grid
Version:
Power tools for responsive layouts with React
87 lines (82 loc) • 2.27 kB
JavaScript
// Generated by CoffeeScript 1.10.0
var React, objectAssign, spanCalculate;
React = require('react');
objectAssign = require('object-assign');
spanCalculate = require('../utils/SpanCalculate');
module.exports = React.createClass({
displayName: "Span",
propTypes: {
context: React.PropTypes.object,
columns: React.PropTypes.number,
at: React.PropTypes.number,
pre: React.PropTypes.number,
post: React.PropTypes.number,
squish: React.PropTypes.number,
last: React.PropTypes.bool,
"break": React.PropTypes.bool
},
getDefaultProps: function() {
return {
at: 0,
pre: 0,
post: 0,
squish: 0,
last: false,
first: false,
"break": false
};
},
renderChildren: function() {
return React.Children.map(this.props.children, (function(_this) {
return function(child) {
var ref;
if ((child != null ? (ref = child.type) != null ? ref.displayName : void 0 : void 0) === "Span") {
return React.cloneElement(child, {
context: {
columns: _this.props.columns,
gutterRatio: _this.props.context.gutterRatio
}
});
} else {
return child;
}
};
})(this));
},
render: function() {
var props, style;
style = spanCalculate({
contextColumns: this.props.context.columns,
gutterRatio: this.props.context.gutterRatio,
columns: this.props.columns,
at: this.props.at,
pre: this.props.pre,
post: this.props.post,
squish: this.props.squish,
last: this.props.last,
"break": this.props["break"]
});
style = objectAssign(style, this.props.style);
props = objectAssign({}, this.props, {
"style": style
});
delete props.at;
delete props["break"];
delete props.columns;
delete props.context;
delete props.first;
delete props.last;
delete props.post;
delete props.pre;
delete props.squish;
delete props.style;
return React.createElement("div", Object.assign({}, props, {
"style": style
}), this.renderChildren(), React.createElement("span", {
"style": {
display: 'block',
clear: 'both'
}
}, ' '));
}
});