UNPKG

7.57 kBJavaScriptView Raw
1/**
2 * Photo component.
3 * @class ApPhoto
4 */
5
6'use strict';
7
8Object.defineProperty(exports, "__esModule", {
9 value: true
10});
11
12var _react = require('react');
13
14var _react2 = _interopRequireDefault(_react);
15
16var _classnames = require('classnames');
17
18var _classnames2 = _interopRequireDefault(_classnames);
19
20var _apemanReactImage = require('apeman-react-image');
21
22var _apemanReactTouchable = require('apeman-react-touchable');
23
24function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
26/** @lends ApPhoto */
27var ApPhoto = _react2.default.createClass({
28 displayName: 'ApPhoto',
29
30
31 // --------------------
32 // Specs
33 // --------------------
34
35 propTypes: {
36 /** Image source URL */
37 imgSrc: _react.PropTypes.string.isRequired,
38 /** Image width */
39 imgWidth: _react.PropTypes.number,
40 /** Image height */
41 imgHeight: _react.PropTypes.number,
42 /** Image scale policy */
43 imgScale: _react.PropTypes.string,
44 /** Handler for tap event */
45 onTap: _react.PropTypes.func
46 },
47
48 mixins: [],
49
50 statics: {},
51
52 getInitialState: function getInitialState() {
53 return {};
54 },
55 getDefaultProps: function getDefaultProps() {
56 return {
57 imgSrc: null,
58 imgWidth: 256,
59 imgHeight: 128,
60 imgScale: 'fit',
61 onTap: null
62 };
63 },
64 render: function render() {
65 var s = this;
66 var props = s.props;
67 var imgWidth = props.imgWidth;
68 var imgHeight = props.imgHeight;
69
70
71 var className = (0, _classnames2.default)('ap-photo', {
72 'ap-photo-tappable': s.isTappable()
73 }, props.className);
74 return _react2.default.createElement(
75 'div',
76 { className: className,
77 style: Object.assign({}, props.style) },
78 _react2.default.createElement(
79 _apemanReactTouchable.ApTouchable,
80 { onTap: s.handleTap },
81 _react2.default.createElement(
82 'div',
83 null,
84 _react2.default.createElement(_apemanReactImage.ApImage, { src: props.imgSrc,
85 width: imgWidth,
86 height: imgHeight,
87 scale: props.imgScale
88 }),
89 props.children
90 )
91 )
92 );
93 },
94
95
96 // --------------------
97 // Lifecycle
98 // --------------------
99
100 // ------------------
101 // Helper
102 // ------------------
103
104 handleTap: function handleTap(e) {
105 var s = this;
106 var props = s.props;
107
108 if (!s.isTappable()) {
109 return;
110 }
111 if (props.onTap) {
112 props.onTap(e);
113 }
114 },
115 isTappable: function isTappable() {
116 var s = this;
117 var props = s.props;
118
119 return !!props.onTap;
120 }
121
122 // ------------------
123 // Private
124 // ------------------
125
126});
127
128exports.default = ApPhoto;
129//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3Bob3RvLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7O0FBR0EsSUFBTSxVQUFVLGdCQUFNLFdBQU4sQ0FBa0I7QUFBQTs7Ozs7OztBQU1oQyxhQUFXOztBQUVULFlBQVEsaUJBQU0sTUFBTixDQUFhLFVBRlo7O0FBSVQsY0FBVSxpQkFBTSxNQUpQOztBQU1ULGVBQVcsaUJBQU0sTUFOUjs7QUFRVCxjQUFVLGlCQUFNLE1BUlA7O0FBVVQsV0FBTyxpQkFBTTtBQVZKLEdBTnFCOztBQW1CaEMsVUFBUSxFQW5Cd0I7O0FBcUJoQyxXQUFTLEVBckJ1Qjs7QUF1QmhDLGlCQXZCZ0MsNkJBdUJiO0FBQ2pCLFdBQU8sRUFBUDtBQUNELEdBekIrQjtBQTJCaEMsaUJBM0JnQyw2QkEyQmI7QUFDakIsV0FBTztBQUNMLGNBQVEsSUFESDtBQUVMLGdCQUFVLEdBRkw7QUFHTCxpQkFBVyxHQUhOO0FBSUwsZ0JBQVUsS0FKTDtBQUtMLGFBQU87QUFMRixLQUFQO0FBT0QsR0FuQytCO0FBcUNoQyxRQXJDZ0Msb0JBcUN0QjtBQUNSLFFBQU0sSUFBSSxJQUFWO0FBRFEsUUFFRixLQUZFLEdBRVEsQ0FGUixDQUVGLEtBRkU7QUFBQSxRQUlGLFFBSkUsR0FJc0IsS0FKdEIsQ0FJRixRQUpFO0FBQUEsUUFJUSxTQUpSLEdBSXNCLEtBSnRCLENBSVEsU0FKUjs7O0FBTVIsUUFBSSxZQUFZLDBCQUFXLFVBQVgsRUFBdUI7QUFDckMsMkJBQXFCLEVBQUUsVUFBRjtBQURnQixLQUF2QixFQUViLE1BQU0sU0FGTyxDQUFoQjtBQUdBLFdBQ0U7QUFBQTtNQUFBLEVBQUssV0FBWSxTQUFqQjtBQUNLLGVBQVEsT0FBTyxNQUFQLENBQWMsRUFBZCxFQUFrQixNQUFNLEtBQXhCLENBRGI7TUFFRTtBQUFBO1FBQUEsRUFBYSxPQUFRLEVBQUUsU0FBdkI7UUFDRTtBQUFBO1VBQUE7VUFDRSwyREFBUyxLQUFNLE1BQU0sTUFBckI7QUFDUyxtQkFBUSxRQURqQjtBQUVTLG9CQUFTLFNBRmxCO0FBR1MsbUJBQVEsTUFBTTtBQUh2QixZQURGO1VBTUksTUFBTTtBQU5WO0FBREY7QUFGRixLQURGO0FBZUQsR0E3RCtCOzs7Ozs7Ozs7OztBQXVFaEMsV0F2RWdDLHFCQXVFckIsQ0F2RXFCLEVBdUVsQjtBQUNaLFFBQU0sSUFBSSxJQUFWO0FBRFksUUFFTixLQUZNLEdBRUksQ0FGSixDQUVOLEtBRk07O0FBR1osUUFBSSxDQUFDLEVBQUUsVUFBRixFQUFMLEVBQXFCO0FBQ25CO0FBQ0Q7QUFDRCxRQUFJLE1BQU0sS0FBVixFQUFpQjtBQUNmLFlBQU0sS0FBTixDQUFZLENBQVo7QUFDRDtBQUNGLEdBaEYrQjtBQWtGaEMsWUFsRmdDLHdCQWtGbEI7QUFDWixRQUFNLElBQUksSUFBVjtBQURZLFFBRU4sS0FGTSxHQUVJLENBRkosQ0FFTixLQUZNOztBQUdaLFdBQU8sQ0FBQyxDQUFDLE1BQU0sS0FBZjtBQUNEOzs7Ozs7QUF0RitCLENBQWxCLENBQWhCOztrQkE2RmUsTyIsImZpbGUiOiJhcF9waG90by5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LXBob3RvL2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGhvdG8gY29tcG9uZW50LlxuICogQGNsYXNzIEFwUGhvdG9cbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzIGFzIHR5cGVzfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQge0FwSW1hZ2V9IGZyb20gJ2FwZW1hbi1yZWFjdC1pbWFnZSdcbmltcG9ydCB7QXBUb3VjaGFibGV9IGZyb20gJ2FwZW1hbi1yZWFjdC10b3VjaGFibGUnXG5cbi8qKiBAbGVuZHMgQXBQaG90byAqL1xuY29uc3QgQXBQaG90byA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3BUeXBlczoge1xuICAgIC8qKiBJbWFnZSBzb3VyY2UgVVJMICovXG4gICAgaW1nU3JjOiB0eXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogSW1hZ2Ugd2lkdGggKi9cbiAgICBpbWdXaWR0aDogdHlwZXMubnVtYmVyLFxuICAgIC8qKiBJbWFnZSBoZWlnaHQgKi9cbiAgICBpbWdIZWlnaHQ6IHR5cGVzLm51bWJlcixcbiAgICAvKiogSW1hZ2Ugc2NhbGUgcG9saWN5ICovXG4gICAgaW1nU2NhbGU6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogSGFuZGxlciBmb3IgdGFwIGV2ZW50ICovXG4gICAgb25UYXA6IHR5cGVzLmZ1bmNcbiAgfSxcblxuICBtaXhpbnM6IFtdLFxuXG4gIHN0YXRpY3M6IHt9LFxuXG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH0sXG5cbiAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1nU3JjOiBudWxsLFxuICAgICAgaW1nV2lkdGg6IDI1NixcbiAgICAgIGltZ0hlaWdodDogMTI4LFxuICAgICAgaW1nU2NhbGU6ICdmaXQnLFxuICAgICAgb25UYXA6IG51bGxcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG5cbiAgICBsZXQgeyBpbWdXaWR0aCwgaW1nSGVpZ2h0IH0gPSBwcm9wc1xuXG4gICAgbGV0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoJ2FwLXBob3RvJywge1xuICAgICAgJ2FwLXBob3RvLXRhcHBhYmxlJzogcy5pc1RhcHBhYmxlKClcbiAgICB9LCBwcm9wcy5jbGFzc05hbWUpXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NOYW1lIH1cbiAgICAgICAgICAgc3R5bGU9eyBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5zdHlsZSkgfT5cbiAgICAgICAgPEFwVG91Y2hhYmxlIG9uVGFwPXsgcy5oYW5kbGVUYXAgfT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPEFwSW1hZ2Ugc3JjPXsgcHJvcHMuaW1nU3JjIH1cbiAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsgaW1nV2lkdGggfVxuICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsgaW1nSGVpZ2h0IH1cbiAgICAgICAgICAgICAgICAgICAgIHNjYWxlPXsgcHJvcHMuaW1nU2NhbGUgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHsgcHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0FwVG91Y2hhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIExpZmVjeWNsZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaGFuZGxlVGFwIChlKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGlmICghcy5pc1RhcHBhYmxlKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocHJvcHMub25UYXApIHtcbiAgICAgIHByb3BzLm9uVGFwKGUpXG4gICAgfVxuICB9LFxuXG4gIGlzVGFwcGFibGUgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICByZXR1cm4gISFwcm9wcy5vblRhcFxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG59KVxuXG5leHBvcnQgZGVmYXVsdCBBcFBob3RvXG4iXX0=
\No newline at end of file