apeman-react-photo
Version:
apeman react package for photo components.
129 lines (102 loc) • 7.57 kB
JavaScript
/**
* Photo component.
* @class ApPhoto
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _apemanReactImage = require('apeman-react-image');
var _apemanReactTouchable = require('apeman-react-touchable');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @lends ApPhoto */
var ApPhoto = _react2.default.createClass({
displayName: 'ApPhoto',
// --------------------
// Specs
// --------------------
propTypes: {
/** Image source URL */
imgSrc: _react.PropTypes.string.isRequired,
/** Image width */
imgWidth: _react.PropTypes.number,
/** Image height */
imgHeight: _react.PropTypes.number,
/** Image scale policy */
imgScale: _react.PropTypes.string,
/** Handler for tap event */
onTap: _react.PropTypes.func
},
mixins: [],
statics: {},
getInitialState: function getInitialState() {
return {};
},
getDefaultProps: function getDefaultProps() {
return {
imgSrc: null,
imgWidth: 256,
imgHeight: 128,
imgScale: 'fit',
onTap: null
};
},
render: function render() {
var s = this;
var props = s.props;
var imgWidth = props.imgWidth;
var imgHeight = props.imgHeight;
var className = (0, _classnames2.default)('ap-photo', {
'ap-photo-tappable': s.isTappable()
}, props.className);
return _react2.default.createElement(
'div',
{ className: className,
style: Object.assign({}, props.style) },
_react2.default.createElement(
_apemanReactTouchable.ApTouchable,
{ onTap: s.handleTap },
_react2.default.createElement(
'div',
null,
_react2.default.createElement(_apemanReactImage.ApImage, { src: props.imgSrc,
width: imgWidth,
height: imgHeight,
scale: props.imgScale
}),
props.children
)
)
);
},
// --------------------
// Lifecycle
// --------------------
// ------------------
// Helper
// ------------------
handleTap: function handleTap(e) {
var s = this;
var props = s.props;
if (!s.isTappable()) {
return;
}
if (props.onTap) {
props.onTap(e);
}
},
isTappable: function isTappable() {
var s = this;
var props = s.props;
return !!props.onTap;
}
// ------------------
// Private
// ------------------
});
exports.default = ApPhoto;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3Bob3RvLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7O0FBR0EsSUFBTSxVQUFVLGdCQUFNLFdBQU4sQ0FBa0I7QUFBQTs7Ozs7OztBQU1oQyxhQUFXOztBQUVULFlBQVEsaUJBQU0sTUFBTixDQUFhLFVBRlo7O0FBSVQsY0FBVSxpQkFBTSxNQUpQOztBQU1ULGVBQVcsaUJBQU0sTUFOUjs7QUFRVCxjQUFVLGlCQUFNLE1BUlA7O0FBVVQsV0FBTyxpQkFBTTtBQVZKLEdBTnFCOztBQW1CaEMsVUFBUSxFQW5Cd0I7O0FBcUJoQyxXQUFTLEVBckJ1Qjs7QUF1QmhDLGlCQXZCZ0MsNkJBdUJiO0FBQ2pCLFdBQU8sRUFBUDtBQUNELEdBekIrQjtBQTJCaEMsaUJBM0JnQyw2QkEyQmI7QUFDakIsV0FBTztBQUNMLGNBQVEsSUFESDtBQUVMLGdCQUFVLEdBRkw7QUFHTCxpQkFBVyxHQUhOO0FBSUwsZ0JBQVUsS0FKTDtBQUtMLGFBQU87QUFMRixLQUFQO0FBT0QsR0FuQytCO0FBcUNoQyxRQXJDZ0Msb0JBcUN0QjtBQUNSLFFBQU0sSUFBSSxJQUFWO0FBRFEsUUFFRixLQUZFLEdBRVEsQ0FGUixDQUVGLEtBRkU7QUFBQSxRQUlGLFFBSkUsR0FJc0IsS0FKdEIsQ0FJRixRQUpFO0FBQUEsUUFJUSxTQUpSLEdBSXNCLEtBSnRCLENBSVEsU0FKUjs7O0FBTVIsUUFBSSxZQUFZLDBCQUFXLFVBQVgsRUFBdUI7QUFDckMsMkJBQXFCLEVBQUUsVUFBRjtBQURnQixLQUF2QixFQUViLE1BQU0sU0FGTyxDQUFoQjtBQUdBLFdBQ0U7QUFBQTtNQUFBLEVBQUssV0FBWSxTQUFqQjtBQUNLLGVBQVEsT0FBTyxNQUFQLENBQWMsRUFBZCxFQUFrQixNQUFNLEtBQXhCLENBRGI7TUFFRTtBQUFBO1FBQUEsRUFBYSxPQUFRLEVBQUUsU0FBdkI7UUFDRTtBQUFBO1VBQUE7VUFDRSwyREFBUyxLQUFNLE1BQU0sTUFBckI7QUFDUyxtQkFBUSxRQURqQjtBQUVTLG9CQUFTLFNBRmxCO0FBR1MsbUJBQVEsTUFBTTtBQUh2QixZQURGO1VBTUksTUFBTTtBQU5WO0FBREY7QUFGRixLQURGO0FBZUQsR0E3RCtCOzs7Ozs7Ozs7OztBQXVFaEMsV0F2RWdDLHFCQXVFckIsQ0F2RXFCLEVBdUVsQjtBQUNaLFFBQU0sSUFBSSxJQUFWO0FBRFksUUFFTixLQUZNLEdBRUksQ0FGSixDQUVOLEtBRk07O0FBR1osUUFBSSxDQUFDLEVBQUUsVUFBRixFQUFMLEVBQXFCO0FBQ25CO0FBQ0Q7QUFDRCxRQUFJLE1BQU0sS0FBVixFQUFpQjtBQUNmLFlBQU0sS0FBTixDQUFZLENBQVo7QUFDRDtBQUNGLEdBaEYrQjtBQWtGaEMsWUFsRmdDLHdCQWtGbEI7QUFDWixRQUFNLElBQUksSUFBVjtBQURZLFFBRU4sS0FGTSxHQUVJLENBRkosQ0FFTixLQUZNOztBQUdaLFdBQU8sQ0FBQyxDQUFDLE1BQU0sS0FBZjtBQUNEOzs7Ozs7QUF0RitCLENBQWxCLENBQWhCOztrQkE2RmUsTyIsImZpbGUiOiJhcF9waG90by5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LXBob3RvL2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGhvdG8gY29tcG9uZW50LlxuICogQGNsYXNzIEFwUGhvdG9cbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzIGFzIHR5cGVzfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQge0FwSW1hZ2V9IGZyb20gJ2FwZW1hbi1yZWFjdC1pbWFnZSdcbmltcG9ydCB7QXBUb3VjaGFibGV9IGZyb20gJ2FwZW1hbi1yZWFjdC10b3VjaGFibGUnXG5cbi8qKiBAbGVuZHMgQXBQaG90byAqL1xuY29uc3QgQXBQaG90byA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3BUeXBlczoge1xuICAgIC8qKiBJbWFnZSBzb3VyY2UgVVJMICovXG4gICAgaW1nU3JjOiB0eXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogSW1hZ2Ugd2lkdGggKi9cbiAgICBpbWdXaWR0aDogdHlwZXMubnVtYmVyLFxuICAgIC8qKiBJbWFnZSBoZWlnaHQgKi9cbiAgICBpbWdIZWlnaHQ6IHR5cGVzLm51bWJlcixcbiAgICAvKiogSW1hZ2Ugc2NhbGUgcG9saWN5ICovXG4gICAgaW1nU2NhbGU6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogSGFuZGxlciBmb3IgdGFwIGV2ZW50ICovXG4gICAgb25UYXA6IHR5cGVzLmZ1bmNcbiAgfSxcblxuICBtaXhpbnM6IFtdLFxuXG4gIHN0YXRpY3M6IHt9LFxuXG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH0sXG5cbiAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1nU3JjOiBudWxsLFxuICAgICAgaW1nV2lkdGg6IDI1NixcbiAgICAgIGltZ0hlaWdodDogMTI4LFxuICAgICAgaW1nU2NhbGU6ICdmaXQnLFxuICAgICAgb25UYXA6IG51bGxcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG5cbiAgICBsZXQgeyBpbWdXaWR0aCwgaW1nSGVpZ2h0IH0gPSBwcm9wc1xuXG4gICAgbGV0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoJ2FwLXBob3RvJywge1xuICAgICAgJ2FwLXBob3RvLXRhcHBhYmxlJzogcy5pc1RhcHBhYmxlKClcbiAgICB9LCBwcm9wcy5jbGFzc05hbWUpXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NOYW1lIH1cbiAgICAgICAgICAgc3R5bGU9eyBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5zdHlsZSkgfT5cbiAgICAgICAgPEFwVG91Y2hhYmxlIG9uVGFwPXsgcy5oYW5kbGVUYXAgfT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPEFwSW1hZ2Ugc3JjPXsgcHJvcHMuaW1nU3JjIH1cbiAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsgaW1nV2lkdGggfVxuICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsgaW1nSGVpZ2h0IH1cbiAgICAgICAgICAgICAgICAgICAgIHNjYWxlPXsgcHJvcHMuaW1nU2NhbGUgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHsgcHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0FwVG91Y2hhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIExpZmVjeWNsZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaGFuZGxlVGFwIChlKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGlmICghcy5pc1RhcHBhYmxlKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocHJvcHMub25UYXApIHtcbiAgICAgIHByb3BzLm9uVGFwKGUpXG4gICAgfVxuICB9LFxuXG4gIGlzVGFwcGFibGUgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICByZXR1cm4gISFwcm9wcy5vblRhcFxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG59KVxuXG5leHBvcnQgZGVmYXVsdCBBcFBob3RvXG4iXX0=