1 | /**
|
2 | * Photo component.
|
3 | * @class ApPhoto
|
4 | */
|
5 |
|
6 | ;
|
7 |
|
8 | Object.defineProperty(exports, "__esModule", {
|
9 | value: true
|
10 | });
|
11 |
|
12 | var _react = require('react');
|
13 |
|
14 | var _react2 = _interopRequireDefault(_react);
|
15 |
|
16 | var _classnames = require('classnames');
|
17 |
|
18 | var _classnames2 = _interopRequireDefault(_classnames);
|
19 |
|
20 | var _apemanReactImage = require('apeman-react-image');
|
21 |
|
22 | var _apemanReactTouchable = require('apeman-react-touchable');
|
23 |
|
24 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
25 |
|
26 | /** @lends ApPhoto */
|
27 | var 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 |
|
128 | exports.default = ApPhoto;
|
129 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3Bob3RvLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7O0FBR0EsSUFBTSxVQUFVLGdCQUFNLFdBQU4sQ0FBa0I7QUFBQTs7Ozs7OztBQU1oQyxhQUFXOztBQUVULFlBQVEsaUJBQU0sTUFBTixDQUFhLFVBRlo7O0FBSVQsY0FBVSxpQkFBTSxNQUpQOztBQU1ULGVBQVcsaUJBQU0sTUFOUjs7QUFRVCxjQUFVLGlCQUFNLE1BUlA7O0FBVVQsV0FBTyxpQkFBTTtBQVZKLEdBTnFCOztBQW1CaEMsVUFBUSxFQW5Cd0I7O0FBcUJoQyxXQUFTLEVBckJ1Qjs7QUF1QmhDLGlCQXZCZ0MsNkJBdUJiO0FBQ2pCLFdBQU8sRUFBUDtBQUNELEdBekIrQjtBQTJCaEMsaUJBM0JnQyw2QkEyQmI7QUFDakIsV0FBTztBQUNMLGNBQVEsSUFESDtBQUVMLGdCQUFVLEdBRkw7QUFHTCxpQkFBVyxHQUhOO0FBSUwsZ0JBQVUsS0FKTDtBQUtMLGFBQU87QUFMRixLQUFQO0FBT0QsR0FuQytCO0FBcUNoQyxRQXJDZ0Msb0JBcUN0QjtBQUNSLFFBQU0sSUFBSSxJQUFWO0FBRFEsUUFFRixLQUZFLEdBRVEsQ0FGUixDQUVGLEtBRkU7QUFBQSxRQUlGLFFBSkUsR0FJc0IsS0FKdEIsQ0FJRixRQUpFO0FBQUEsUUFJUSxTQUpSLEdBSXNCLEtBSnRCLENBSVEsU0FKUjs7O0FBTVIsUUFBSSxZQUFZLDBCQUFXLFVBQVgsRUFBdUI7QUFDckMsMkJBQXFCLEVBQUUsVUFBRjtBQURnQixLQUF2QixFQUViLE1BQU0sU0FGTyxDQUFoQjtBQUdBLFdBQ0U7QUFBQTtNQUFBLEVBQUssV0FBWSxTQUFqQjtBQUNLLGVBQVEsT0FBTyxNQUFQLENBQWMsRUFBZCxFQUFrQixNQUFNLEtBQXhCLENBRGI7TUFFRTtBQUFBO1FBQUEsRUFBYSxPQUFRLEVBQUUsU0FBdkI7UUFDRTtBQUFBO1VBQUE7VUFDRSwyREFBUyxLQUFNLE1BQU0sTUFBckI7QUFDUyxtQkFBUSxRQURqQjtBQUVTLG9CQUFTLFNBRmxCO0FBR1MsbUJBQVEsTUFBTTtBQUh2QixZQURGO1VBTUksTUFBTTtBQU5WO0FBREY7QUFGRixLQURGO0FBZUQsR0E3RCtCOzs7Ozs7Ozs7OztBQXVFaEMsV0F2RWdDLHFCQXVFckIsQ0F2RXFCLEVBdUVsQjtBQUNaLFFBQU0sSUFBSSxJQUFWO0FBRFksUUFFTixLQUZNLEdBRUksQ0FGSixDQUVOLEtBRk07O0FBR1osUUFBSSxDQUFDLEVBQUUsVUFBRixFQUFMLEVBQXFCO0FBQ25CO0FBQ0Q7QUFDRCxRQUFJLE1BQU0sS0FBVixFQUFpQjtBQUNmLFlBQU0sS0FBTixDQUFZLENBQVo7QUFDRDtBQUNGLEdBaEYrQjtBQWtGaEMsWUFsRmdDLHdCQWtGbEI7QUFDWixRQUFNLElBQUksSUFBVjtBQURZLFFBRU4sS0FGTSxHQUVJLENBRkosQ0FFTixLQUZNOztBQUdaLFdBQU8sQ0FBQyxDQUFDLE1BQU0sS0FBZjtBQUNEOzs7Ozs7QUF0RitCLENBQWxCLENBQWhCOztrQkE2RmUsTyIsImZpbGUiOiJhcF9waG90by5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LXBob3RvL2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGhvdG8gY29tcG9uZW50LlxuICogQGNsYXNzIEFwUGhvdG9cbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzIGFzIHR5cGVzfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQge0FwSW1hZ2V9IGZyb20gJ2FwZW1hbi1yZWFjdC1pbWFnZSdcbmltcG9ydCB7QXBUb3VjaGFibGV9IGZyb20gJ2FwZW1hbi1yZWFjdC10b3VjaGFibGUnXG5cbi8qKiBAbGVuZHMgQXBQaG90byAqL1xuY29uc3QgQXBQaG90byA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3BUeXBlczoge1xuICAgIC8qKiBJbWFnZSBzb3VyY2UgVVJMICovXG4gICAgaW1nU3JjOiB0eXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogSW1hZ2Ugd2lkdGggKi9cbiAgICBpbWdXaWR0aDogdHlwZXMubnVtYmVyLFxuICAgIC8qKiBJbWFnZSBoZWlnaHQgKi9cbiAgICBpbWdIZWlnaHQ6IHR5cGVzLm51bWJlcixcbiAgICAvKiogSW1hZ2Ugc2NhbGUgcG9saWN5ICovXG4gICAgaW1nU2NhbGU6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogSGFuZGxlciBmb3IgdGFwIGV2ZW50ICovXG4gICAgb25UYXA6IHR5cGVzLmZ1bmNcbiAgfSxcblxuICBtaXhpbnM6IFtdLFxuXG4gIHN0YXRpY3M6IHt9LFxuXG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH0sXG5cbiAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1nU3JjOiBudWxsLFxuICAgICAgaW1nV2lkdGg6IDI1NixcbiAgICAgIGltZ0hlaWdodDogMTI4LFxuICAgICAgaW1nU2NhbGU6ICdmaXQnLFxuICAgICAgb25UYXA6IG51bGxcbiAgICB9XG4gIH0sXG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG5cbiAgICBsZXQgeyBpbWdXaWR0aCwgaW1nSGVpZ2h0IH0gPSBwcm9wc1xuXG4gICAgbGV0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoJ2FwLXBob3RvJywge1xuICAgICAgJ2FwLXBob3RvLXRhcHBhYmxlJzogcy5pc1RhcHBhYmxlKClcbiAgICB9LCBwcm9wcy5jbGFzc05hbWUpXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NOYW1lIH1cbiAgICAgICAgICAgc3R5bGU9eyBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5zdHlsZSkgfT5cbiAgICAgICAgPEFwVG91Y2hhYmxlIG9uVGFwPXsgcy5oYW5kbGVUYXAgfT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPEFwSW1hZ2Ugc3JjPXsgcHJvcHMuaW1nU3JjIH1cbiAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsgaW1nV2lkdGggfVxuICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsgaW1nSGVpZ2h0IH1cbiAgICAgICAgICAgICAgICAgICAgIHNjYWxlPXsgcHJvcHMuaW1nU2NhbGUgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHsgcHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0FwVG91Y2hhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIExpZmVjeWNsZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaGFuZGxlVGFwIChlKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGlmICghcy5pc1RhcHBhYmxlKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocHJvcHMub25UYXApIHtcbiAgICAgIHByb3BzLm9uVGFwKGUpXG4gICAgfVxuICB9LFxuXG4gIGlzVGFwcGFibGUgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICByZXR1cm4gISFwcm9wcy5vblRhcFxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG59KVxuXG5leHBvcnQgZGVmYXVsdCBBcFBob3RvXG4iXX0= |
\ | No newline at end of file |