UNPKG

apeman-react-photo

Version:
129 lines (102 loc) 7.57 kB
/** * 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=