apeman-react-photo
Version:
apeman react package for photo components.
129 lines (102 loc) • 7.68 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3Bob3RvLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFLQTs7Ozs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBRUE7QUFDQSxJQUFNLFVBQVUsZ0JBQU0sV0FBTixDQUFrQjtBQUFBOzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBLGFBQVc7QUFDVDtBQUNBLFlBQVEsaUJBQU0sTUFBTixDQUFhLFVBRlo7QUFHVDtBQUNBLGNBQVUsaUJBQU0sTUFKUDtBQUtUO0FBQ0EsZUFBVyxpQkFBTSxNQU5SO0FBT1Q7QUFDQSxjQUFVLGlCQUFNLE1BUlA7QUFTVDtBQUNBLFdBQU8saUJBQU07QUFWSixHQU5xQjs7QUFtQmhDLFVBQVEsRUFuQndCOztBQXFCaEMsV0FBUyxFQXJCdUI7O0FBdUJoQyxpQkF2QmdDLDZCQXVCYjtBQUNqQixXQUFPLEVBQVA7QUFDRCxHQXpCK0I7QUEyQmhDLGlCQTNCZ0MsNkJBMkJiO0FBQ2pCLFdBQU87QUFDTCxjQUFRLElBREg7QUFFTCxnQkFBVSxHQUZMO0FBR0wsaUJBQVcsR0FITjtBQUlMLGdCQUFVLEtBSkw7QUFLTCxhQUFPO0FBTEYsS0FBUDtBQU9ELEdBbkMrQjtBQXFDaEMsUUFyQ2dDLG9CQXFDdEI7QUFDUixRQUFNLElBQUksSUFBVjtBQURRLFFBRUYsS0FGRSxHQUVRLENBRlIsQ0FFRixLQUZFO0FBQUEsUUFJRixRQUpFLEdBSXNCLEtBSnRCLENBSUYsUUFKRTtBQUFBLFFBSVEsU0FKUixHQUlzQixLQUp0QixDQUlRLFNBSlI7OztBQU1SLFFBQUksWUFBWSwwQkFBVyxVQUFYLEVBQXVCO0FBQ3JDLDJCQUFxQixFQUFFLFVBQUY7QUFEZ0IsS0FBdkIsRUFFYixNQUFNLFNBRk8sQ0FBaEI7QUFHQSxXQUNFO0FBQUE7QUFBQSxRQUFLLFdBQVksU0FBakI7QUFDSyxlQUFRLE9BQU8sTUFBUCxDQUFjLEVBQWQsRUFBa0IsTUFBTSxLQUF4QixDQURiO0FBRUU7QUFBQTtBQUFBLFVBQWEsT0FBUSxFQUFFLFNBQXZCO0FBQ0U7QUFBQTtBQUFBO0FBQ0UscUVBQVMsS0FBTSxNQUFNLE1BQXJCO0FBQ1MsbUJBQVEsUUFEakI7QUFFUyxvQkFBUyxTQUZsQjtBQUdTLG1CQUFRLE1BQU07QUFIdkIsWUFERjtBQU1JLGdCQUFNO0FBTlY7QUFERjtBQUZGLEtBREY7QUFlRCxHQTdEK0I7OztBQStEaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxXQXZFZ0MscUJBdUVyQixDQXZFcUIsRUF1RWxCO0FBQ1osUUFBTSxJQUFJLElBQVY7QUFEWSxRQUVOLEtBRk0sR0FFSSxDQUZKLENBRU4sS0FGTTs7QUFHWixRQUFJLENBQUMsRUFBRSxVQUFGLEVBQUwsRUFBcUI7QUFDbkI7QUFDRDtBQUNELFFBQUksTUFBTSxLQUFWLEVBQWlCO0FBQ2YsWUFBTSxLQUFOLENBQVksQ0FBWjtBQUNEO0FBQ0YsR0FoRitCO0FBa0ZoQyxZQWxGZ0Msd0JBa0ZsQjtBQUNaLFFBQU0sSUFBSSxJQUFWO0FBRFksUUFFTixLQUZNLEdBRUksQ0FGSixDQUVOLEtBRk07O0FBR1osV0FBTyxDQUFDLENBQUMsTUFBTSxLQUFmO0FBQ0Q7O0FBRUQ7QUFDQTtBQUNBOztBQTFGZ0MsQ0FBbEIsQ0FBaEI7O2tCQTZGZSxPIiwiZmlsZSI6ImFwX3Bob3RvLmpzeCIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LXBob3RvL2NpLy4uL2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGhvdG8gY29tcG9uZW50LlxuICogQGNsYXNzIEFwUGhvdG9cbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzIGFzIHR5cGVzfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQge0FwSW1hZ2V9IGZyb20gJ2FwZW1hbi1yZWFjdC1pbWFnZSdcbmltcG9ydCB7QXBUb3VjaGFibGV9IGZyb20gJ2FwZW1hbi1yZWFjdC10b3VjaGFibGUnXG5cbi8qKiBAbGVuZHMgQXBQaG90byAqL1xuY29uc3QgQXBQaG90byA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3BUeXBlczoge1xuICAgIC8qKiBJbWFnZSBzb3VyY2UgVVJMICovXG4gICAgaW1nU3JjOiB0eXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogSW1hZ2Ugd2lkdGggKi9cbiAgICBpbWdXaWR0aDogdHlwZXMubnVtYmVyLFxuICAgIC8qKiBJbWFnZSBoZWlnaHQgKi9cbiAgICBpbWdIZWlnaHQ6IHR5cGVzLm51bWJlcixcbiAgICAvKiogSW1hZ2Ugc2NhbGUgcG9saWN5ICovXG4gICAgaW1nU2NhbGU6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogSGFuZGxlciBmb3IgdGFwIGV2ZW50ICovXG4gICAgb25UYXA6IHR5cGVzLmZ1bmNcbiAgfSxcblxuICBtaXhpbnM6IFtdLFxuXG4gIHN0YXRpY3M6IHt9LFxuXG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH0sXG5cbiAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1nU3JjOiBudWxsLFxuICAgICAgaW1nV2lkdGg6IDI1NixcbiAgICAgIGltZ0hlaWdodDogMTI4LFxuICAgICAgaW1nU2NhbGU6ICdmaXQnLFxuICAgICAgb25UYXA6IG51bGxcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG5cbiAgICBsZXQgeyBpbWdXaWR0aCwgaW1nSGVpZ2h0IH0gPSBwcm9wc1xuXG4gICAgbGV0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoJ2FwLXBob3RvJywge1xuICAgICAgJ2FwLXBob3RvLXRhcHBhYmxlJzogcy5pc1RhcHBhYmxlKClcbiAgICB9LCBwcm9wcy5jbGFzc05hbWUpXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NOYW1lIH1cbiAgICAgICAgICAgc3R5bGU9eyBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5zdHlsZSkgfT5cbiAgICAgICAgPEFwVG91Y2hhYmxlIG9uVGFwPXsgcy5oYW5kbGVUYXAgfT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPEFwSW1hZ2Ugc3JjPXsgcHJvcHMuaW1nU3JjIH1cbiAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsgaW1nV2lkdGggfVxuICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsgaW1nSGVpZ2h0IH1cbiAgICAgICAgICAgICAgICAgICAgIHNjYWxlPXsgcHJvcHMuaW1nU2NhbGUgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHsgcHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0FwVG91Y2hhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIExpZmVjeWNsZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaGFuZGxlVGFwIChlKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGlmICghcy5pc1RhcHBhYmxlKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocHJvcHMub25UYXApIHtcbiAgICAgIHByb3BzLm9uVGFwKGUpXG4gICAgfVxuICB9LFxuXG4gIGlzVGFwcGFibGUgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICByZXR1cm4gISFwcm9wcy5vblRhcFxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG59KVxuXG5leHBvcnQgZGVmYXVsdCBBcFBob3RvXG4iXX0=