UNPKG

react-emergence

Version:

React wrapper for detecting element visibility in the browser

130 lines (91 loc) 3.96 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _emergence = require('emergence.js'); var _emergence2 = _interopRequireDefault(_emergence); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var EmergeContainer = function (_Component) { (0, _inherits3.default)(EmergeContainer, _Component); function EmergeContainer(props) { (0, _classCallCheck3.default)(this, EmergeContainer); var _this = (0, _possibleConstructorReturn3.default)(this, (EmergeContainer.__proto__ || (0, _getPrototypeOf2.default)(EmergeContainer)).call(this, props)); _this.state = { containerRef: void 0 }; if (props.useWindowAsContainer) { _emergence2.default.init(props.args); } _this.setContainerRef = _this.setContainerRef.bind(_this); return _this; } (0, _createClass3.default)(EmergeContainer, [{ key: 'setContainerRef', value: function setContainerRef(el) { if (el && !this.state.containerRef) { var args = this.props.args; this.setState({ containerRef: el }); _emergence2.default.init((0, _extends3.default)({}, args, { container: el, callback: function callback(el, state) { return console.log(el, state); } })); } } }, { key: 'render', value: function render() { var _props = this.props, useWindowAsContainer = _props.useWindowAsContainer, children = _props.children, className = _props.className; if (useWindowAsContainer) { return children; } return _react2.default.createElement( 'div', { className: (0, _classnames2.default)('emerge-container', className), ref: this.setContainerRef }, children ); } }]); return EmergeContainer; }(_react.Component); exports.default = EmergeContainer; EmergeContainer.propTypes = { className: _propTypes2.default.string, children: _propTypes2.default.node.isRequired, useWindowAsContainer: _propTypes2.default.bool, args: _propTypes2.default.shape({ reset: _propTypes2.default.bool, handheld: _propTypes2.default.bool, throttle: _propTypes2.default.number, elemCushion: _propTypes2.default.number, offsetTop: _propTypes2.default.number, offsetRight: _propTypes2.default.number, offsetBottom: _propTypes2.default.number, offsetLeft: _propTypes2.default.number, callback: _propTypes2.default.func }) }; EmergeContainer.defaultProps = { args: {}, useWindowAsContainer: false, className: void 0 };