Socket
Book a DemoInstallSign in
Socket

react-scroll-to-bottom

Package Overview
Dependencies
Maintainers
1
Versions
83
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-scroll-to-bottom - npm Package Compare versions

Comparing version

to
0.0.1-master.2f36401

30

lib/BasicScrollToBottom.js

@@ -25,6 +25,2 @@ 'use strict';

var _Context = require('./ScrollToBottom/Context');
var _Context2 = _interopRequireDefault(_Context);
var _Panel = require('./ScrollToBottom/Panel');

@@ -43,21 +39,15 @@

_Composer2.default,
null,
{ mode: props.mode === 'top' ? 'top' : 'bottom' },
_react2.default.createElement(
_Context2.default,
null,
function (context) {
return _react2.default.createElement(
'div',
{ className: (0, _classnames2.default)(ROOT_CSS + '', props.className) },
_react2.default.createElement(
_Panel2.default,
null,
props.children
),
_react2.default.createElement(_AutoHideFollowButton2.default, { className: props.followButtonClassName })
);
}
'div',
{ className: (0, _classnames2.default)(ROOT_CSS + '', props.className) },
_react2.default.createElement(
_Panel2.default,
null,
props.children
),
_react2.default.createElement(_AutoHideFollowButton2.default, { className: props.followButtonClassName })
)
);
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNpY1Njcm9sbFRvQm90dG9tLmpzIl0sIm5hbWVzIjpbIlJPT1RfQ1NTIiwicG9zaXRpb24iLCJwcm9wcyIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiZm9sbG93QnV0dG9uQ2xhc3NOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFdBQVcsaUJBQUk7QUFDbkJDLFlBQVU7QUFEUyxDQUFKLENBQWpCOztrQkFJZTtBQUFBLFNBQ2I7QUFBQyxzQkFBRDtBQUFBO0FBQ0U7QUFBQyx1QkFBRDtBQUFBO0FBQ0k7QUFBQSxlQUNBO0FBQUE7QUFBQSxZQUFLLFdBQVksMEJBQVdELFdBQVcsRUFBdEIsRUFBMEJFLE1BQU1DLFNBQWhDLENBQWpCO0FBQ0U7QUFBQywyQkFBRDtBQUFBO0FBQ0lELGtCQUFNRTtBQURWLFdBREY7QUFJRSx3Q0FBQyw4QkFBRCxJQUFzQixXQUFZRixNQUFNRyxxQkFBeEM7QUFKRixTQURBO0FBQUE7QUFESjtBQURGLEdBRGE7QUFBQSxDIiwiZmlsZSI6IkJhc2ljU2Nyb2xsVG9Cb3R0b20uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdnbGFtb3InO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQXV0b0hpZGVGb2xsb3dCdXR0b24gZnJvbSAnLi9TY3JvbGxUb0JvdHRvbS9BdXRvSGlkZUZvbGxvd0J1dHRvbic7XG5pbXBvcnQgQ29tcG9zZXIgZnJvbSAnLi9TY3JvbGxUb0JvdHRvbS9Db21wb3Nlcic7XG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL1Njcm9sbFRvQm90dG9tL0NvbnRleHQnO1xuaW1wb3J0IFBhbmVsIGZyb20gJy4vU2Nyb2xsVG9Cb3R0b20vUGFuZWwnO1xuXG5jb25zdCBST09UX0NTUyA9IGNzcyh7XG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgcHJvcHMgPT5cbiAgPENvbXBvc2VyPlxuICAgIDxDb250ZXh0PlxuICAgICAgeyBjb250ZXh0ID0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NOYW1lcyhST09UX0NTUyArICcnLCBwcm9wcy5jbGFzc05hbWUpIH0+XG4gICAgICAgICAgPFBhbmVsPlxuICAgICAgICAgICAgeyBwcm9wcy5jaGlsZHJlbiB9XG4gICAgICAgICAgPC9QYW5lbD5cbiAgICAgICAgICA8QXV0b0hpZGVGb2xsb3dCdXR0b24gY2xhc3NOYW1lPXsgcHJvcHMuZm9sbG93QnV0dG9uQ2xhc3NOYW1lIH0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9Db250ZXh0PlxuICA8L0NvbXBvc2VyPlxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNpY1Njcm9sbFRvQm90dG9tLmpzIl0sIm5hbWVzIjpbIlJPT1RfQ1NTIiwicG9zaXRpb24iLCJwcm9wcyIsIm1vZGUiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsImZvbGxvd0J1dHRvbkNsYXNzTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7Ozs7QUFDQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxpQkFBSTtBQUNuQkMsWUFBVTtBQURTLENBQUosQ0FBakI7O2tCQUllO0FBQUEsU0FDYjtBQUFDLHNCQUFEO0FBQUEsTUFBVSxNQUFPQyxNQUFNQyxJQUFOLEtBQWUsS0FBZixHQUF1QixLQUF2QixHQUErQixRQUFoRDtBQUNFO0FBQUE7QUFBQSxRQUFLLFdBQVksMEJBQVdILFdBQVcsRUFBdEIsRUFBMEJFLE1BQU1FLFNBQWhDLENBQWpCO0FBQ0U7QUFBQyx1QkFBRDtBQUFBO0FBQ0lGLGNBQU1HO0FBRFYsT0FERjtBQUlFLG9DQUFDLDhCQUFELElBQXNCLFdBQVlILE1BQU1JLHFCQUF4QztBQUpGO0FBREYsR0FEYTtBQUFBLEMiLCJmaWxlIjoiQmFzaWNTY3JvbGxUb0JvdHRvbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ2dsYW1vcic7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBBdXRvSGlkZUZvbGxvd0J1dHRvbiBmcm9tICcuL1Njcm9sbFRvQm90dG9tL0F1dG9IaWRlRm9sbG93QnV0dG9uJztcbmltcG9ydCBDb21wb3NlciBmcm9tICcuL1Njcm9sbFRvQm90dG9tL0NvbXBvc2VyJztcbmltcG9ydCBQYW5lbCBmcm9tICcuL1Njcm9sbFRvQm90dG9tL1BhbmVsJztcblxuY29uc3QgUk9PVF9DU1MgPSBjc3Moe1xuICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHByb3BzID0+XG4gIDxDb21wb3NlciBtb2RlPXsgcHJvcHMubW9kZSA9PT0gJ3RvcCcgPyAndG9wJyA6ICdib3R0b20nfT5cbiAgICA8ZGl2IGNsYXNzTmFtZT17IGNsYXNzTmFtZXMoUk9PVF9DU1MgKyAnJywgcHJvcHMuY2xhc3NOYW1lKSB9PlxuICAgICAgPFBhbmVsPlxuICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgIDwvUGFuZWw+XG4gICAgICA8QXV0b0hpZGVGb2xsb3dCdXR0b24gY2xhc3NOYW1lPXsgcHJvcHMuZm9sbG93QnV0dG9uQ2xhc3NOYW1lIH0gLz5cbiAgICA8L2Rpdj5cbiAgPC9Db21wb3Nlcj5cbiJdfQ==

@@ -45,5 +45,5 @@ 'use strict';

function (context) {
return !context.bottom && _react2.default.createElement('button', {
return !context.atEnd && _react2.default.createElement('button', {
className: ROOT_CSS + '',
onClick: context.scrollToBottom
onClick: context.scrollToEnd
});

@@ -53,2 +53,2 @@ }

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9BdXRvSGlkZUZvbGxvd0J1dHRvbi5qcyJdLCJuYW1lcyI6WyJST09UX0NTUyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlcldpZHRoIiwiYm90dG9tIiwiY3Vyc29yIiwiaGVpZ2h0Iiwib3V0bGluZSIsInBvc2l0aW9uIiwicmlnaHQiLCJ3aWR0aCIsImNvbnRleHQiLCJzY3JvbGxUb0JvdHRvbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7Ozs7QUFFQTs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxpQkFBSTtBQUNuQkMsbUJBQWlCLG1CQURFO0FBRW5CQyxnQkFBYyxFQUZLO0FBR25CQyxlQUFhLENBSE07QUFJbkJDLFVBQVEsQ0FKVztBQUtuQkMsVUFBUSxTQUxXO0FBTW5CQyxVQUFRLEVBTlc7QUFPbkJDLFdBQVMsQ0FQVTtBQVFuQkMsWUFBVSxVQVJTO0FBU25CQyxTQUFPLEVBVFk7QUFVbkJDLFNBQU8sRUFWWTs7QUFZbkIsYUFBVztBQUNUVCxxQkFBaUI7QUFEUixHQVpROztBQWdCbkIsY0FBWTtBQUNWQSxxQkFBaUI7QUFEUDtBQWhCTyxDQUFKLENBQWpCOztrQkFxQmU7QUFBQSxTQUNiO0FBQUMscUJBQUQsQ0FBUyxRQUFUO0FBQUE7QUFDSTtBQUFBLGFBQVcsQ0FBQ1UsUUFBUVAsTUFBVCxJQUNUO0FBQ0UsbUJBQVlKLFdBQVcsRUFEekI7QUFFRSxpQkFBVVcsUUFBUUM7QUFGcEIsUUFERjtBQUFBO0FBREosR0FEYTtBQUFBLEMiLCJmaWxlIjoiQXV0b0hpZGVGb2xsb3dCdXR0b24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdnbGFtb3InO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9Db250ZXh0JztcblxuY29uc3QgUk9PVF9DU1MgPSBjc3Moe1xuICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIC4yKScsXG4gIGJvcmRlclJhZGl1czogMTAsXG4gIGJvcmRlcldpZHRoOiAwLFxuICBib3R0b206IDUsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICBoZWlnaHQ6IDIwLFxuICBvdXRsaW5lOiAwLFxuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgcmlnaHQ6IDIwLFxuICB3aWR0aDogMjAsXG5cbiAgJyY6aG92ZXInOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAuNCknXG4gIH0sXG5cbiAgJyY6YWN0aXZlJzoge1xuICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgLjYpJ1xuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgcHJvcHMgPT5cbiAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgeyBjb250ZXh0ID0+ICFjb250ZXh0LmJvdHRvbSAmJlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPXsgUk9PVF9DU1MgKyAnJyB9XG4gICAgICAgICAgb25DbGljaz17IGNvbnRleHQuc2Nyb2xsVG9Cb3R0b20gfVxuICAgICAgICAvPlxuICAgIH1cbiAgPC9Db250ZXh0LkNvbnN1bWVyPlxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9BdXRvSGlkZUZvbGxvd0J1dHRvbi5qcyJdLCJuYW1lcyI6WyJST09UX0NTUyIsImJhY2tncm91bmRDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlcldpZHRoIiwiYm90dG9tIiwiY3Vyc29yIiwiaGVpZ2h0Iiwib3V0bGluZSIsInBvc2l0aW9uIiwicmlnaHQiLCJ3aWR0aCIsImNvbnRleHQiLCJhdEVuZCIsInNjcm9sbFRvRW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7OztBQUVBOzs7Ozs7QUFFQSxJQUFNQSxXQUFXLGlCQUFJO0FBQ25CQyxtQkFBaUIsbUJBREU7QUFFbkJDLGdCQUFjLEVBRks7QUFHbkJDLGVBQWEsQ0FITTtBQUluQkMsVUFBUSxDQUpXO0FBS25CQyxVQUFRLFNBTFc7QUFNbkJDLFVBQVEsRUFOVztBQU9uQkMsV0FBUyxDQVBVO0FBUW5CQyxZQUFVLFVBUlM7QUFTbkJDLFNBQU8sRUFUWTtBQVVuQkMsU0FBTyxFQVZZOztBQVluQixhQUFXO0FBQ1RULHFCQUFpQjtBQURSLEdBWlE7O0FBZ0JuQixjQUFZO0FBQ1ZBLHFCQUFpQjtBQURQO0FBaEJPLENBQUosQ0FBakI7O2tCQXFCZTtBQUFBLFNBQ2I7QUFBQyxxQkFBRCxDQUFTLFFBQVQ7QUFBQTtBQUNJO0FBQUEsYUFBVyxDQUFDVSxRQUFRQyxLQUFULElBQ1Q7QUFDRSxtQkFBWVosV0FBVyxFQUR6QjtBQUVFLGlCQUFVVyxRQUFRRTtBQUZwQixRQURGO0FBQUE7QUFESixHQURhO0FBQUEsQyIsImZpbGUiOiJBdXRvSGlkZUZvbGxvd0J1dHRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ2dsYW1vcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuXG5jb25zdCBST09UX0NTUyA9IGNzcyh7XG4gIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgLjIpJyxcbiAgYm9yZGVyUmFkaXVzOiAxMCxcbiAgYm9yZGVyV2lkdGg6IDAsXG4gIGJvdHRvbTogNSxcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGhlaWdodDogMjAsXG4gIG91dGxpbmU6IDAsXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICByaWdodDogMjAsXG4gIHdpZHRoOiAyMCxcblxuICAnJjpob3Zlcic6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIC40KSdcbiAgfSxcblxuICAnJjphY3RpdmUnOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAuNiknXG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBwcm9wcyA9PlxuICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICB7IGNvbnRleHQgPT4gIWNvbnRleHQuYXRFbmQgJiZcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17IFJPT1RfQ1NTICsgJycgfVxuICAgICAgICAgIG9uQ2xpY2s9eyBjb250ZXh0LnNjcm9sbFRvRW5kIH1cbiAgICAgICAgLz5cbiAgICB9XG4gIDwvQ29udGV4dC5Db25zdW1lcj5cbiJdfQ==

@@ -37,9 +37,9 @@ 'use strict';

var ScrollToBottomComposer = function (_React$Component) {
_inherits(ScrollToBottomComposer, _React$Component);
var Composer = function (_React$Component) {
_inherits(Composer, _React$Component);
function ScrollToBottomComposer(props) {
_classCallCheck(this, ScrollToBottomComposer);
function Composer(props) {
_classCallCheck(this, Composer);
var _this = _possibleConstructorReturn(this, (ScrollToBottomComposer.__proto__ || Object.getPrototypeOf(ScrollToBottomComposer)).call(this, props));
var _this = _possibleConstructorReturn(this, (Composer.__proto__ || Object.getPrototypeOf(Composer)).call(this, props));

@@ -50,13 +50,23 @@ _this.handleScroll = _this.handleScroll.bind(_this);

_this.state = {
bottom: true,
atBottom: true,
atEnd: true,
atTop: true,
mode: props.mode,
handleUpdate: function handleUpdate() {
return _this.state.bottom && _this.state.scrollToBottom();
return _this.state.atEnd && _this.state.scrollToEnd();
},
scrollToBottom: function scrollToBottom() {
return _this.setState(function (state) {
return {
scrollTop: state.target && state.target && state.target.scrollHeight - state.target.offsetHeight
};
scrollTo: function scrollTo(scrollTop) {
return _this.setState(function () {
return { scrollTop: scrollTop };
});
},
scrollToBottom: function scrollToBottom() {
return _this.state.scrollTo(_this.state.target && _this.state.target.scrollHeight - _this.state.target.offsetHeight);
},
scrollToEnd: function scrollToEnd() {
return _this.state.mode === 'top' ? _this.state.scrollToTop() : _this.state.scrollToBottom();
},
scrollToTop: function scrollToTop() {
return _this.state.scrollTo(0);
},
scrollTop: null,

@@ -68,3 +78,4 @@ setTarget: function setTarget(target) {

},
target: null
target: null,
threshold: 10
};

@@ -74,11 +85,20 @@ return _this;

_createClass(ScrollToBottomComposer, [{
_createClass(Composer, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
this.setState(function () {
return {
mode: nextProps.mode === 'top' ? 'top' : 'bottom',
threshold: nextProps.threshold
};
});
}
}, {
key: 'handleScroll',
value: function handleScroll() {
var _this2 = this;
this.setState(function (_ref) {
var mode = _ref.mode,
target = _ref.target,
threshold = _ref.threshold;
this.setState(function () {
var target = _this2.state.target;
if (target) {

@@ -89,5 +109,10 @@ var offsetHeight = target.offsetHeight,

var bottom = scrollHeight - scrollTop - offsetHeight <= _this2.props.threshold;
var atBottom = scrollHeight - scrollTop - offsetHeight <= threshold;
var atTop = scrollTop <= threshold;
return { bottom: bottom };
return {
atBottom: atBottom,
atEnd: mode === 'top' ? atTop : atBottom,
atTop: atTop
};
}

@@ -130,15 +155,15 @@ });

return ScrollToBottomComposer;
return Composer;
}(_react2.default.Component);
exports.default = ScrollToBottomComposer;
exports.default = Composer;
ScrollToBottomComposer.defaultProps = {
Composer.defaultProps = {
threshold: 10
};
ScrollToBottomComposer.propTypes = {
Composer.propTypes = {
threshold: _propTypes2.default.number
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9Db21wb3Nlci5qcyJdLCJuYW1lcyI6WyJTY3JvbGxUb0JvdHRvbUNvbXBvc2VyIiwicHJvcHMiLCJoYW5kbGVTY3JvbGwiLCJiaW5kIiwiaGFuZGxlU2Nyb2xsRW5kIiwic3RhdGUiLCJib3R0b20iLCJoYW5kbGVVcGRhdGUiLCJzY3JvbGxUb0JvdHRvbSIsInNldFN0YXRlIiwic2Nyb2xsVG9wIiwidGFyZ2V0Iiwic2Nyb2xsSGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0Iiwic2V0VGFyZ2V0IiwidGhyZXNob2xkIiwiY2hpbGRyZW4iLCJSZWFjdCIsIkNvbXBvbmVudCIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7SUFFcUJBLHNCOzs7QUFDbkIsa0NBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQSxnSkFDWEEsS0FEVzs7QUFHakIsVUFBS0MsWUFBTCxHQUFvQixNQUFLQSxZQUFMLENBQWtCQyxJQUFsQixPQUFwQjtBQUNBLFVBQUtDLGVBQUwsR0FBdUIsTUFBS0EsZUFBTCxDQUFxQkQsSUFBckIsT0FBdkI7O0FBRUEsVUFBS0UsS0FBTCxHQUFhO0FBQ1hDLGNBQVEsSUFERztBQUVYQyxvQkFBYztBQUFBLGVBQU0sTUFBS0YsS0FBTCxDQUFXQyxNQUFYLElBQXFCLE1BQUtELEtBQUwsQ0FBV0csY0FBWCxFQUEzQjtBQUFBLE9BRkg7QUFHWEEsc0JBQWdCO0FBQUEsZUFBTSxNQUFLQyxRQUFMLENBQWM7QUFBQSxpQkFBVTtBQUM1Q0MsdUJBQVdMLE1BQU1NLE1BQU4sSUFBZ0JOLE1BQU1NLE1BQXRCLElBQWlDTixNQUFNTSxNQUFOLENBQWFDLFlBQWIsR0FBNEJQLE1BQU1NLE1BQU4sQ0FBYUU7QUFEekMsV0FBVjtBQUFBLFNBQWQsQ0FBTjtBQUFBLE9BSEw7QUFNWEgsaUJBQVcsSUFOQTtBQU9YSSxpQkFBVztBQUFBLGVBQVUsTUFBS0wsUUFBTCxDQUFjO0FBQUEsaUJBQU8sRUFBRUUsY0FBRixFQUFQO0FBQUEsU0FBZCxDQUFWO0FBQUEsT0FQQTtBQVFYQSxjQUFRO0FBUkcsS0FBYjtBQU5pQjtBQWdCbEI7Ozs7bUNBRWM7QUFBQTs7QUFDYixXQUFLRixRQUFMLENBQWMsWUFBTTtBQUFBLFlBQ1ZFLE1BRFUsR0FDQyxPQUFLTixLQUROLENBQ1ZNLE1BRFU7OztBQUdsQixZQUFJQSxNQUFKLEVBQVk7QUFBQSxjQUNGRSxZQURFLEdBQ3dDRixNQUR4QyxDQUNGRSxZQURFO0FBQUEsY0FDWUQsWUFEWixHQUN3Q0QsTUFEeEMsQ0FDWUMsWUFEWjtBQUFBLGNBQzBCRixTQUQxQixHQUN3Q0MsTUFEeEMsQ0FDMEJELFNBRDFCOztBQUVWLGNBQU1KLFNBQVNNLGVBQWVGLFNBQWYsR0FBMkJHLFlBQTNCLElBQTJDLE9BQUtaLEtBQUwsQ0FBV2MsU0FBckU7O0FBRUEsaUJBQU8sRUFBRVQsY0FBRixFQUFQO0FBQ0Q7QUFDRixPQVREO0FBVUQ7OztzQ0FFaUI7QUFDaEIsV0FBS0csUUFBTCxDQUFjO0FBQUEsZUFBTyxFQUFFQyxXQUFXLElBQWIsRUFBUDtBQUFBLE9BQWQ7QUFDRDs7OzZCQUVRO0FBQUEsbUJBQ3VCLEtBQUtMLEtBRDVCO0FBQUEsVUFDQ0ssU0FERCxVQUNDQSxTQUREO0FBQUEsVUFDWUMsTUFEWixVQUNZQSxNQURaOzs7QUFHUCxhQUNFO0FBQUMseUJBQUQsQ0FBUyxRQUFUO0FBQUEsVUFBa0IsT0FBUSxLQUFLTixLQUEvQjtBQUNJLGFBQUtKLEtBQUwsQ0FBV2UsUUFEZjtBQUdJTCxrQkFDRSw4QkFBQyxrQkFBRDtBQUNFLGdCQUFLLFFBRFA7QUFFRSxtQkFBVSxLQUFLVCxZQUZqQjtBQUdFLGtCQUFTUztBQUhYLFVBSk47QUFXSUEsa0JBQVUsT0FBT0QsU0FBUCxLQUFxQixRQUEvQixJQUNFLDhCQUFDLGlCQUFEO0FBQ0UsZ0JBQUssV0FEUDtBQUVFLGlCQUFRLEtBQUtOLGVBRmY7QUFHRSxrQkFBU08sTUFIWDtBQUlFLGlCQUFRRDtBQUpWO0FBWk4sT0FERjtBQXNCRDs7OztFQTdEaURPLGdCQUFNQyxTOztrQkFBckNsQixzQjs7O0FBZ0VyQkEsdUJBQXVCbUIsWUFBdkIsR0FBc0M7QUFDcENKLGFBQVc7QUFEeUIsQ0FBdEM7O0FBSUFmLHVCQUF1Qm9CLFNBQXZCLEdBQW1DO0FBQ2pDTCxhQUFXTSxvQkFBVUM7QUFEWSxDQUFuQyIsImZpbGUiOiJDb21wb3Nlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuaW1wb3J0IEV2ZW50U3B5IGZyb20gJy4uL0V2ZW50U3B5JztcbmltcG9ydCBTcGluZVRvIGZyb20gJy4uL1NwaW5lVG8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY3JvbGxUb0JvdHRvbUNvbXBvc2VyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLmhhbmRsZVNjcm9sbCA9IHRoaXMuaGFuZGxlU2Nyb2xsLmJpbmQodGhpcyk7XG4gICAgdGhpcy5oYW5kbGVTY3JvbGxFbmQgPSB0aGlzLmhhbmRsZVNjcm9sbEVuZC5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGJvdHRvbTogdHJ1ZSxcbiAgICAgIGhhbmRsZVVwZGF0ZTogKCkgPT4gdGhpcy5zdGF0ZS5ib3R0b20gJiYgdGhpcy5zdGF0ZS5zY3JvbGxUb0JvdHRvbSgpLFxuICAgICAgc2Nyb2xsVG9Cb3R0b206ICgpID0+IHRoaXMuc2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgc2Nyb2xsVG9wOiBzdGF0ZS50YXJnZXQgJiYgc3RhdGUudGFyZ2V0ICYmIChzdGF0ZS50YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gc3RhdGUudGFyZ2V0Lm9mZnNldEhlaWdodClcbiAgICAgIH0pKSxcbiAgICAgIHNjcm9sbFRvcDogbnVsbCxcbiAgICAgIHNldFRhcmdldDogdGFyZ2V0ID0+IHRoaXMuc2V0U3RhdGUoKCkgPT4gKHsgdGFyZ2V0IH0pKSxcbiAgICAgIHRhcmdldDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgaGFuZGxlU2Nyb2xsKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoKCkgPT4ge1xuICAgICAgY29uc3QgeyB0YXJnZXQgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgY29uc3QgeyBvZmZzZXRIZWlnaHQsIHNjcm9sbEhlaWdodCwgc2Nyb2xsVG9wIH0gPSB0YXJnZXQ7XG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIG9mZnNldEhlaWdodCA8PSB0aGlzLnByb3BzLnRocmVzaG9sZDtcblxuICAgICAgICByZXR1cm4geyBib3R0b20gfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVNjcm9sbEVuZCgpIHtcbiAgICB0aGlzLnNldFN0YXRlKCgpID0+ICh7IHNjcm9sbFRvcDogbnVsbCB9KSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHRhcmdldCB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17IHRoaXMuc3RhdGUgfT5cbiAgICAgICAgeyB0aGlzLnByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAge1xuICAgICAgICAgIHRhcmdldCAmJlxuICAgICAgICAgICAgPEV2ZW50U3B5XG4gICAgICAgICAgICAgIG5hbWU9XCJzY3JvbGxcIlxuICAgICAgICAgICAgICBvbkV2ZW50PXsgdGhpcy5oYW5kbGVTY3JvbGwgfVxuICAgICAgICAgICAgICB0YXJnZXQ9eyB0YXJnZXQgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICB7XG4gICAgICAgICAgdGFyZ2V0ICYmIHR5cGVvZiBzY3JvbGxUb3AgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICA8U3BpbmVUb1xuICAgICAgICAgICAgICBuYW1lPVwic2Nyb2xsVG9wXCJcbiAgICAgICAgICAgICAgb25FbmQ9eyB0aGlzLmhhbmRsZVNjcm9sbEVuZCB9XG4gICAgICAgICAgICAgIHRhcmdldD17IHRhcmdldCB9XG4gICAgICAgICAgICAgIHZhbHVlPXsgc2Nyb2xsVG9wIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgICApO1xuICB9XG59XG5cblNjcm9sbFRvQm90dG9tQ29tcG9zZXIuZGVmYXVsdFByb3BzID0ge1xuICB0aHJlc2hvbGQ6IDEwXG59O1xuXG5TY3JvbGxUb0JvdHRvbUNvbXBvc2VyLnByb3BUeXBlcyA9IHtcbiAgdGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9Db21wb3Nlci5qcyJdLCJuYW1lcyI6WyJDb21wb3NlciIsInByb3BzIiwiaGFuZGxlU2Nyb2xsIiwiYmluZCIsImhhbmRsZVNjcm9sbEVuZCIsInN0YXRlIiwiYXRCb3R0b20iLCJhdEVuZCIsImF0VG9wIiwibW9kZSIsImhhbmRsZVVwZGF0ZSIsInNjcm9sbFRvRW5kIiwic2Nyb2xsVG8iLCJzZXRTdGF0ZSIsInNjcm9sbFRvcCIsInNjcm9sbFRvQm90dG9tIiwidGFyZ2V0Iiwic2Nyb2xsSGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0Iiwic2Nyb2xsVG9Ub3AiLCJzZXRUYXJnZXQiLCJ0aHJlc2hvbGQiLCJuZXh0UHJvcHMiLCJjaGlsZHJlbiIsIlJlYWN0IiwiQ29tcG9uZW50IiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibnVtYmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztJQUVxQkEsUTs7O0FBQ25CLG9CQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUEsb0hBQ1hBLEtBRFc7O0FBR2pCLFVBQUtDLFlBQUwsR0FBb0IsTUFBS0EsWUFBTCxDQUFrQkMsSUFBbEIsT0FBcEI7QUFDQSxVQUFLQyxlQUFMLEdBQXVCLE1BQUtBLGVBQUwsQ0FBcUJELElBQXJCLE9BQXZCOztBQUVBLFVBQUtFLEtBQUwsR0FBYTtBQUNYQyxnQkFBVSxJQURDO0FBRVhDLGFBQU8sSUFGSTtBQUdYQyxhQUFPLElBSEk7QUFJWEMsWUFBTVIsTUFBTVEsSUFKRDtBQUtYQyxvQkFBYztBQUFBLGVBQU0sTUFBS0wsS0FBTCxDQUFXRSxLQUFYLElBQW9CLE1BQUtGLEtBQUwsQ0FBV00sV0FBWCxFQUExQjtBQUFBLE9BTEg7QUFNWEMsZ0JBQVU7QUFBQSxlQUFhLE1BQUtDLFFBQUwsQ0FBYztBQUFBLGlCQUFPLEVBQUVDLG9CQUFGLEVB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ckIiLCJmaWxlIjoiQ29tcG9zZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9Db250ZXh0JztcbmltcG9ydCBFdmVudFNweSBmcm9tICcuLi9FdmVudFNweSc7XG5pbXBvcnQgU3BpbmVUbyBmcm9tICcuLi9TcGluZVRvJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcG9zZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuaGFuZGxlU2Nyb2xsID0gdGhpcy5oYW5kbGVTY3JvbGwuYmluZCh0aGlzKTtcbiAgICB0aGlzLmhhbmRsZVNjcm9sbEVuZCA9IHRoaXMuaGFuZGxlU2Nyb2xsRW5kLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgYXRCb3R0b206IHRydWUsXG4gICAgICBhdEVuZDogdHJ1ZSxcbiAgICAgIGF0VG9wOiB0cnVlLFxuICAgICAgbW9kZTogcHJvcHMubW9kZSxcbiAgICAgIGhhbmRsZVVwZGF0ZTogKCkgPT4gdGhpcy5zdGF0ZS5hdEVuZCAmJiB0aGlzLnN0YXRlLnNjcm9sbFRvRW5kKCksXG4gICAgICBzY3JvbGxUbzogc2Nyb2xsVG9wID0+IHRoaXMuc2V0U3RhdGUoKCkgPT4gKHsgc2Nyb2xsVG9wIH0pKSxcbiAgICAgIHNjcm9sbFRvQm90dG9tOiAoKSA9PiB0aGlzLnN0YXRlLnNjcm9sbFRvKHRoaXMuc3RhdGUudGFyZ2V0ICYmICh0aGlzLnN0YXRlLnRhcmdldC5zY3JvbGxIZWlnaHQgLSB0aGlzLnN0YXRlLnRhcmdldC5vZmZzZXRIZWlnaHQpKSxcbiAgICAgIHNjcm9sbFRvRW5kOiAoKSA9PiB0aGlzLnN0YXRlLm1vZGUgPT09ICd0b3AnID8gdGhpcy5zdGF0ZS5zY3JvbGxUb1RvcCgpIDogdGhpcy5zdGF0ZS5zY3JvbGxUb0JvdHRvbSgpLFxuICAgICAgc2Nyb2xsVG9Ub3A6ICgpID0+IHRoaXMuc3RhdGUuc2Nyb2xsVG8oMCksXG4gICAgICBzY3JvbGxUb3A6IG51bGwsXG4gICAgICBzZXRUYXJnZXQ6IHRhcmdldCA9PiB0aGlzLnNldFN0YXRlKCgpID0+ICh7IHRhcmdldCB9KSksXG4gICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICB0aHJlc2hvbGQ6IDEwXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSgoKSA9PiAoe1xuICAgICAgbW9kZTogbmV4dFByb3BzLm1vZGUgPT09ICd0b3AnID8gJ3RvcCcgOiAnYm90dG9tJyxcbiAgICAgIHRocmVzaG9sZDogbmV4dFByb3BzLnRocmVzaG9sZFxuICAgIH0pKTtcbiAgfVxuXG4gIGhhbmRsZVNjcm9sbCgpIHtcbiAgICB0aGlzLnNldFN0YXRlKCh7IG1vZGUsIHRhcmdldCwgdGhyZXNob2xkIH0pID0+IHtcbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgY29uc3QgeyBvZmZzZXRIZWlnaHQsIHNjcm9sbEhlaWdodCwgc2Nyb2xsVG9wIH0gPSB0YXJnZXQ7XG4gICAgICAgIGNvbnN0IGF0Qm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gb2Zmc2V0SGVpZ2h0IDw9IHRocmVzaG9sZDtcbiAgICAgICAgY29uc3QgYXRUb3AgPSBzY3JvbGxUb3AgPD0gdGhyZXNob2xkO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYXRCb3R0b20sXG4gICAgICAgICAgYXRFbmQ6IG1vZGUgPT09ICd0b3AnID8gYXRUb3AgOiBhdEJvdHRvbSxcbiAgICAgICAgICBhdFRvcFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2Nyb2xsRW5kKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoKCkgPT4gKHsgc2Nyb2xsVG9wOiBudWxsIH0pKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHNjcm9sbFRvcCwgdGFyZ2V0IH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsgdGhpcy5zdGF0ZSB9PlxuICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICB7XG4gICAgICAgICAgdGFyZ2V0ICYmXG4gICAgICAgICAgICA8RXZlbnRTcHlcbiAgICAgICAgICAgICAgbmFtZT1cInNjcm9sbFwiXG4gICAgICAgICAgICAgIG9uRXZlbnQ9eyB0aGlzLmhhbmRsZVNjcm9sbCB9XG4gICAgICAgICAgICAgIHRhcmdldD17IHRhcmdldCB9XG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIHtcbiAgICAgICAgICB0YXJnZXQgJiYgdHlwZW9mIHNjcm9sbFRvcCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgIDxTcGluZVRvXG4gICAgICAgICAgICAgIG5hbWU9XCJzY3JvbGxUb3BcIlxuICAgICAgICAgICAgICBvbkVuZD17IHRoaXMuaGFuZGxlU2Nyb2xsRW5kIH1cbiAgICAgICAgICAgICAgdGFyZ2V0PXsgdGFyZ2V0IH1cbiAgICAgICAgICAgICAgdmFsdWU9eyBzY3JvbGxUb3AgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuQ29tcG9zZXIuZGVmYXVsdFByb3BzID0ge1xuICB0aHJlc2hvbGQ6IDEwXG59O1xuXG5Db21wb3Nlci5wcm9wVHlwZXMgPSB7XG4gIHRocmVzaG9sZDogUHJvcFR5cGVzLm51bWJlclxufTtcbiJdfQ==

@@ -14,9 +14,21 @@ 'use strict';

exports.default = _react2.default.createContext({
bottom: true,
atBottom: true,
atEnd: true,
atTop: true,
mode: 'bottom',
handleUpdate: function handleUpdate() {
return 0;
},
scrollTo: function scrollTo() {
return 0;
},
scrollToBottom: function scrollToBottom() {
return 0;
},
scrollToEnd: function scrollToEnd() {
return 0;
},
scrollToTop: function scrollToTop() {
return 0;
},
scrollTop: null,

@@ -26,4 +38,5 @@ setTarget: function setTarget() {

},
target: null
target: null,
threshold: 10
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9Db250ZXh0LmpzIl0sIm5hbWVzIjpbIlJlYWN0IiwiY3JlYXRlQ29udGV4dCIsImJvdHRvbSIsImhhbmRsZVVwZGF0ZSIsInNjcm9sbFRvQm90dG9tIiwic2Nyb2xsVG9wIiwic2V0VGFyZ2V0IiwidGFyZ2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7Ozs7O2tCQUVlQSxnQkFBTUMsYUFBTixDQUFvQjtBQUNqQ0MsVUFBUSxJQUR5QjtBQUVqQ0MsZ0JBQWM7QUFBQSxXQUFNLENBQU47QUFBQSxHQUZtQjtBQUdqQ0Msa0JBQWdCO0FBQUEsV0FBTSxDQUFOO0FBQUEsR0FIaUI7QUFJakNDLGFBQVcsSUFKc0I7QUFLakNDLGFBQVc7QUFBQSxXQUFNLENBQU47QUFBQSxHQUxzQjtBQU1qQ0MsVUFBUTtBQU55QixDQUFwQixDIiwiZmlsZSI6IkNvbnRleHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgYm90dG9tOiB0cnVlLFxuICBoYW5kbGVVcGRhdGU6ICgpID0+IDAsXG4gIHNjcm9sbFRvQm90dG9tOiAoKSA9PiAwLFxuICBzY3JvbGxUb3A6IG51bGwsXG4gIHNldFRhcmdldDogKCkgPT4gMCxcbiAgdGFyZ2V0OiBudWxsXG59KTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9Db250ZXh0LmpzIl0sIm5hbWVzIjpbIlJlYWN0IiwiY3JlYXRlQ29udGV4dCIsImF0Qm90dG9tIiwiYXRFbmQiLCJhdFRvcCIsIm1vZGUiLCJoYW5kbGVVcGRhdGUiLCJzY3JvbGxUbyIsInNjcm9sbFRvQm90dG9tIiwic2Nyb2xsVG9FbmQiLCJzY3JvbGxUb1RvcCIsInNjcm9sbFRvcCIsInNldFRhcmdldCIsInRhcmdldCIsInRocmVzaG9sZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7OztrQkFFZUEsZ0JBQU1DLGFBQU4sQ0FBb0I7QUFDakNDLFlBQVUsSUFEdUI7QUFFakNDLFNBQU8sSUFGMEI7QUFHakNDLFNBQU8sSUFIMEI7QUFJakNDLFFBQU0sUUFKMkI7QUFLakNDLGdCQUFjO0FBQUEsV0FBTSxDQUFOO0FBQUEsR0FMbUI7QUFNakNDLFlBQVU7QUFBQSxXQUFNLENBQU47QUFBQSxHQU51QjtBQU9qQ0Msa0JBQWdCO0FBQUEsV0FBTSxDQUFOO0FBQUEsR0FQaUI7QUFRakNDLGVBQWE7QUFBQSxXQUFNLENBQU47QUFBQSxHQVJvQjtBQVNqQ0MsZUFBYTtBQUFBLFdBQU0sQ0FBTjtBQUFBLEdBVG9CO0FBVWpDQyxhQUFXLElBVnNCO0FBV2pDQyxhQUFXO0FBQUEsV0FBTSxDQUFOO0FBQUEsR0FYc0I7QUFZakNDLFVBQVEsSUFaeUI7QUFhakNDLGFBQVc7QUFic0IsQ0FBcEIsQyIsImZpbGUiOiJDb250ZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gIGF0Qm90dG9tOiB0cnVlLFxuICBhdEVuZDogdHJ1ZSxcbiAgYXRUb3A6IHRydWUsXG4gIG1vZGU6ICdib3R0b20nLFxuICBoYW5kbGVVcGRhdGU6ICgpID0+IDAsXG4gIHNjcm9sbFRvOiAoKSA9PiAwLFxuICBzY3JvbGxUb0JvdHRvbTogKCkgPT4gMCxcbiAgc2Nyb2xsVG9FbmQ6ICgpID0+IDAsXG4gIHNjcm9sbFRvVG9wOiAoKSA9PiAwLFxuICBzY3JvbGxUb3A6IG51bGwsXG4gIHNldFRhcmdldDogKCkgPT4gMCxcbiAgdGFyZ2V0OiBudWxsLFxuICB0aHJlc2hvbGQ6IDEwXG59KTtcbiJdfQ==

@@ -37,12 +37,12 @@ 'use strict';

var ScrollToBottomPanel = function (_React$PureComponent) {
_inherits(ScrollToBottomPanel, _React$PureComponent);
var Panel = function (_React$PureComponent) {
_inherits(Panel, _React$PureComponent);
function ScrollToBottomPanel() {
_classCallCheck(this, ScrollToBottomPanel);
function Panel() {
_classCallCheck(this, Panel);
return _possibleConstructorReturn(this, (ScrollToBottomPanel.__proto__ || Object.getPrototypeOf(ScrollToBottomPanel)).apply(this, arguments));
return _possibleConstructorReturn(this, (Panel.__proto__ || Object.getPrototypeOf(Panel)).apply(this, arguments));
}
_createClass(ScrollToBottomPanel, [{
_createClass(Panel, [{
key: 'componentDidUpdate',

@@ -79,6 +79,6 @@ value: function componentDidUpdate() {

return ScrollToBottomPanel;
return Panel;
}(_react2.default.PureComponent);
exports.default = ScrollToBottomPanel;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9QYW5lbC5qcyJdLCJuYW1lcyI6WyJST09UX0NTUyIsImhlaWdodCIsIm92ZXJmbG93WSIsIndpZHRoIiwiU2Nyb2xsVG9Cb3R0b21QYW5lbCIsImNvbnRleHQiLCJoYW5kbGVVcGRhdGUiLCJwcm9wcyIsImNsYXNzTmFtZSIsInNldFRhcmdldCIsImNoaWxkcmVuIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxpQkFBSTtBQUNuQkMsVUFBUSxNQURXO0FBRW5CQyxhQUFXLE1BRlE7QUFHbkJDLFNBQU87QUFIWSxDQUFKLENBQWpCOztJQU1xQkMsbUI7Ozs7Ozs7Ozs7O3lDQUNFO0FBQ25CLFdBQUtDLE9BQUwsSUFBZ0IsS0FBS0EsT0FBTCxDQUFhQyxZQUFiLEVBQWhCO0FBQ0Q7Ozs2QkFFUTtBQUFBOztBQUFBLFVBQ0NDLEtBREQsR0FDVyxJQURYLENBQ0NBLEtBREQ7OztBQUdQLGFBQ0U7QUFBQyx5QkFBRCxDQUFTLFFBQVQ7QUFBQTtBQUNJLDJCQUFXO0FBQ1gsaUJBQUtGLE9BQUwsR0FBZUEsT0FBZjs7QUFFQSxpQkFDRTtBQUFBO0FBQUE7QUFDRSx5QkFBWSwwQkFBV0wsV0FBVyxFQUF0QixFQUEwQk8sTUFBTUMsU0FBaEMsQ0FEZDtBQUVFLG1CQUFNSCxRQUFRSTtBQUZoQjtBQUlJRixrQkFBTUc7QUFKVixXQURGO0FBUUQ7QUFaSCxPQURGO0FBZ0JEOzs7O0VBeEI4Q0MsZ0JBQU1DLGE7O2tCQUFsQ1IsbUIiLCJmaWxlIjoiUGFuZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdnbGFtb3InO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuXG5jb25zdCBST09UX0NTUyA9IGNzcyh7XG4gIGhlaWdodDogJzEwMCUnLFxuICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgd2lkdGg6ICcxMDAlJ1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjcm9sbFRvQm90dG9tUGFuZWwgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIHRoaXMuY29udGV4dCAmJiB0aGlzLmNvbnRleHQuaGFuZGxlVXBkYXRlKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBwcm9wcyB9ID0gdGhpcztcblxuICAgIHJldHVybiAoXG4gICAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyBjb250ZXh0ID0+IHtcbiAgICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NOYW1lcyhST09UX0NTUyArICcnLCBwcm9wcy5jbGFzc05hbWUpIH1cbiAgICAgICAgICAgICAgcmVmPXsgY29udGV4dC5zZXRUYXJnZXQgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICk7XG4gICAgICAgIH0gfVxuICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
exports.default = Panel;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY3JvbGxUb0JvdHRvbS9QYW5lbC5qcyJdLCJuYW1lcyI6WyJST09UX0NTUyIsImhlaWdodCIsIm92ZXJmbG93WSIsIndpZHRoIiwiUGFuZWwiLCJjb250ZXh0IiwiaGFuZGxlVXBkYXRlIiwicHJvcHMiLCJjbGFzc05hbWUiLCJzZXRUYXJnZXQiLCJjaGlsZHJlbiIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFdBQVcsaUJBQUk7QUFDbkJDLFVBQVEsTUFEVztBQUVuQkMsYUFBVyxNQUZRO0FBR25CQyxTQUFPO0FBSFksQ0FBSixDQUFqQjs7SUFNcUJDLEs7Ozs7Ozs7Ozs7O3lDQUNFO0FBQ25CLFdBQUtDLE9BQUwsSUFBZ0IsS0FBS0EsT0FBTCxDQUFhQyxZQUFiLEVBQWhCO0FBQ0Q7Ozs2QkFFUTtBQUFBOztBQUFBLFVBQ0NDLEtBREQsR0FDVyxJQURYLENBQ0NBLEtBREQ7OztBQUdQLGFBQ0U7QUFBQyx5QkFBRCxDQUFTLFFBQVQ7QUFBQTtBQUNJLDJCQUFXO0FBQ1gsaUJBQUtGLE9BQUwsR0FBZUEsT0FBZjs7QUFFQSxpQkFDRTtBQUFBO0FBQUE7QUFDRSx5QkFBWSwwQkFBV0wsV0FBVyxFQUF0QixFQUEwQk8sTUFBTUMsU0FBaEMsQ0FEZDtBQUVFLG1CQUFNSCxRQUFRSTtBQUZoQjtBQUlJRixrQkFBTUc7QUFKVixXQURGO0FBUUQ7QUFaSCxPQURGO0FBZ0JEOzs7O0VBeEJnQ0MsZ0JBQU1DLGE7O2tCQUFwQlIsSyIsImZpbGUiOiJQYW5lbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ2dsYW1vcic7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gJy4vQ29udGV4dCc7XG5cbmNvbnN0IFJPT1RfQ1NTID0gY3NzKHtcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIG92ZXJmbG93WTogJ2F1dG8nLFxuICB3aWR0aDogJzEwMCUnXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFuZWwgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIHRoaXMuY29udGV4dCAmJiB0aGlzLmNvbnRleHQuaGFuZGxlVXBkYXRlKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBwcm9wcyB9ID0gdGhpcztcblxuICAgIHJldHVybiAoXG4gICAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyBjb250ZXh0ID0+IHtcbiAgICAgICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NOYW1lcyhST09UX0NTUyArICcnLCBwcm9wcy5jbGFzc05hbWUpIH1cbiAgICAgICAgICAgICAgcmVmPXsgY29udGV4dC5zZXRUYXJnZXQgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICk7XG4gICAgICAgIH0gfVxuICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
{
"name": "react-scroll-to-bottom",
"version": "0.0.1-master.1f1e648",
"version": "0.0.1-master.2f36401",
"description": "React container that will auto scroll to bottom",

@@ -8,7 +8,11 @@ "keywords": [

"follow",
"jump",
"jump to bottom",
"jump to top",
"scroll",
"scroll to bottom",
"scroll to top",
"tail"
],
"main": "index.js",
"main": "lib/index.js",
"files": [

@@ -40,4 +44,12 @@ "lib/**/*"

"lerna": "^2.11.0",
"react": "^16.4.1",
"rimraf": "^2.6.2"
},
"dependencies": {
"classnames": "^2.2.6",
"glamor": "^2.20.40"
},
"peerDependencies": {
"react": "^16.4.1"
}
}

@@ -5,4 +5,51 @@ # react-scroll-to-bottom

React container that will auto scroll to bottom.
React container that will auto scroll to bottom or top if new content is added and viewport is at the bottom, similar to `tail -f`. Otherwise, a "jump to bottom" button will be shown to allow user to quickly jump to bottom.
This project scaffolding is from [react-component-template](https://github.com/compulim/react-component-template).
# Demo
Try out the demo at [https://compulim.github.io/react-scroll-to-bottom/](https://compulim.github.io/react-scroll-to-bottom/).
# Sample code
```jsx
import { css } from 'glamor';
import ScrollToBottom from 'react-scroll-to-bottom';
const ROOT_CSS = css({
height: 600,
width: 400
});
export default props =>
<ScrollToBottom className={ ROOT_CSS }>
<p>Nostrud nisi duis veniam ex esse laboris consectetur officia et. Velit cillum est veniam culpa magna sit exercitation excepteur consectetur ea proident. Minim pariatur nisi dolore Lorem ipsum adipisicing do. Ea cupidatat Lorem sunt fugiat. Irure est sunt nostrud commodo sint.</p>
<p>Duis consectetur ad in fugiat et aliquip esse adipisicing occaecat et sunt ea occaecat ad. Tempor anim consequat commodo veniam nostrud sunt deserunt adipisicing Lorem Lorem magna irure. Eu ut ipsum magna nulla sunt duis Lorem officia pariatur. Nostrud nisi anim nostrud ea est do nostrud cupidatat occaecat dolor labore do anim. Laborum quis veniam ipsum ullamco voluptate sit ea qui adipisicing aliqua sunt dolor nulla. Nulla consequat sunt qui amet. Pariatur esse pariatur veniam non fugiat laboris eu nulla incididunt.</p>
<p>Laboris duis do consectetur aliquip non aliquip ad ad quis minim. Aute magna tempor occaecat magna fugiat culpa. Commodo id eiusmod ea pariatur consequat fugiat minim est anim. Ipsum amet ipsum eu nisi. Exercitation minim amet incididunt tempor do ut id in officia eu sit est. Dolor qui laboris laboris tempor sunt velit eiusmod non ipsum exercitation ut sint ipsum officia.</p>
</ScrollToBottom>
```
> We use [`glamor`](https://github.com/threepointone/glamor/) for component styles. It is not required, but we don't support `style` props for performance reason.
## Props
| Name | Default | Description |
| - | - | - |
| `mode` | `"bottom"` | Set it to `"bottom"` for scroll-to-bottom, `"top"` for scroll-to-top. |
## Context
| Name | Type | Description |
| - | - | - |
| `atBottom` | `boolean` | `true` if the panel is currently near bottom (see `threshold`) |
| `atEnd` | `boolean` | `true` if the panel is currently near the end (see `mode` and `threshold` |
| `atTop` | `boolean` | `true` if the panel is currently near top (see `threshold`) |
| `mode` | `string` | `"bottom"` for scroll-to-bottom, `"top"` for scroll-to-top |
| `scrollTo` | `(scrollTop: number) => void` | Scroll panel to specified position |
| `scrollToBottom` | `() => void` | Scroll panel to bottom |
| `scrollToEnd` | `() => void` | Scroll panel to end |
| `scrollToTop` | `() => void` | Scroll panel to top |
| `threshold` | `number` | Threshold in pixels to consider the panel is near top/bottom, read-only and only set thru `props` |
# Contributions

@@ -9,0 +56,0 @@

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.