Skip to content

Commit 73d7931

Browse files
committed
Add lib and compiled dist
1 parent 27e70be commit 73d7931

File tree

8 files changed

+978
-0
lines changed

8 files changed

+978
-0
lines changed

dist/browser.js

Lines changed: 816 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/browser.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/browser_exposer.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
'use strict';
2+
3+
var _typeof2 = require('babel-runtime/helpers/typeof');
4+
5+
var _typeof3 = _interopRequireDefault(_typeof2);
6+
7+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8+
9+
if ((typeof window === 'undefined' ? 'undefined' : (0, _typeof3.default)(window)) !== undefined) {
10+
window.ReactImg = require('./index');
11+
}

dist/index.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
7+
var _react = require('react');
8+
9+
var _react2 = _interopRequireDefault(_react);
10+
11+
var _reactDom = require('react-dom');
12+
13+
var _reactDom2 = _interopRequireDefault(_reactDom);
14+
15+
var _classnames = require('classnames');
16+
17+
var _classnames2 = _interopRequireDefault(_classnames);
18+
19+
var _styles = require('./styles.css');
20+
21+
var _styles2 = _interopRequireDefault(_styles);
22+
23+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24+
25+
var Img = _react2.default.createClass({
26+
displayName: 'Img',
27+
28+
propTypes: {
29+
src: _react.PropTypes.string.isRequired,
30+
imgClasses: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.array]),
31+
holderClasses: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.array])
32+
},
33+
34+
componentDidMount: function componentDidMount() {
35+
var holder = _reactDom2.default.findDOMNode(this);
36+
37+
holder.querySelector('.' + _styles2.default['intended']).addEventListener('load', function () {
38+
holder.querySelector('.' + _styles2.default['placeholder']).classList.add(_styles2.default['deactivated']);
39+
});
40+
},
41+
render: function render() {
42+
return _react2.default.createElement(
43+
'div',
44+
{
45+
className: (0, _classnames2.default)(_styles2.default['image-holder'], this.props.holderClasses)
46+
},
47+
_react2.default.createElement('img', {
48+
className: (0, _classnames2.default)(_styles2.default['intended'], this.props.imgClasses),
49+
src: this.props.src
50+
}),
51+
_react2.default.createElement('img', {
52+
className: (0, _classnames2.default)(_styles2.default['placeholder'], this.props.imgClasses),
53+
src: '/images/placeholder.png'
54+
})
55+
);
56+
}
57+
});
58+
59+
exports.default = Img;

dist/styles.css

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
._styles__image-holder {
2+
position: relative;
3+
width: 100%;
4+
height: 0;
5+
padding-bottom: 100%;
6+
}
7+
._styles__intended,
8+
._styles__placeholder {
9+
position: absolute;
10+
top: 0;
11+
left: 0;
12+
width: 100%;
13+
}
14+
._styles__intended {
15+
z-index: 0;
16+
}
17+
._styles__placeholder {
18+
z-index: 1;
19+
opacity: 1;
20+
transition: opacity 0.6s ease-in;
21+
}
22+
._styles__placeholder._styles__deactivated {
23+
opacity: 0;
24+
}

lib/browser_exposer.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
if(typeof window !== undefined){
2+
window.ReactImg = require('./index');
3+
}

lib/index.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import React, {PropTypes} from 'react';
2+
import ReactDOM from 'react-dom';
3+
import classNames from 'classnames';
4+
5+
import styles from './styles.css';
6+
7+
const Img = React.createClass({
8+
propTypes: {
9+
src: PropTypes.string.isRequired,
10+
imgClasses: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
11+
holderClasses: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
12+
},
13+
14+
componentDidMount(){
15+
const holder = ReactDOM.findDOMNode(this);
16+
17+
holder.querySelector(`.${styles['intended']}`)
18+
.addEventListener('load', () => {
19+
holder.querySelector(`.${styles['placeholder']}`)
20+
.classList.add(styles['deactivated']);
21+
});
22+
},
23+
24+
render(){
25+
return (
26+
<div
27+
className={classNames(styles['image-holder'], this.props.holderClasses)}
28+
>
29+
<img
30+
className={classNames(styles['intended'], this.props.imgClasses)}
31+
src={this.props.src}
32+
/>
33+
<img
34+
className={classNames(styles['placeholder'], this.props.imgClasses)}
35+
src="/images/placeholder.png"
36+
/>
37+
</div>
38+
);
39+
}
40+
});
41+
42+
export default Img;

lib/styles.styl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
.image-holder
2+
position relative
3+
width 100%
4+
height 0
5+
padding-bottom 100%
6+
7+
.intended, .placeholder
8+
position absolute
9+
top 0
10+
left 0
11+
width 100%
12+
13+
.intended
14+
z-index 0
15+
16+
.placeholder
17+
z-index 1
18+
opacity 1
19+
transition opacity .6s ease-in
20+
21+
.placeholder.deactivated
22+
opacity 0

0 commit comments

Comments
 (0)