mirror of
https://github.com/wu736139669/ASHEBShop-h5.git
synced 2026-10-08 19:36:33 +00:00
82 lines
2.6 KiB
JavaScript
82 lines
2.6 KiB
JavaScript
import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';
|
|
import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
|
|
import _createClass from 'babel-runtime/helpers/createClass';
|
|
import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
|
|
import _inherits from 'babel-runtime/helpers/inherits';
|
|
import PropTypes from 'prop-types';
|
|
import { PureComponent } from 'react';
|
|
|
|
/**
|
|
* HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.
|
|
*/
|
|
|
|
var ScrollSync = function (_PureComponent) {
|
|
_inherits(ScrollSync, _PureComponent);
|
|
|
|
function ScrollSync(props, context) {
|
|
_classCallCheck(this, ScrollSync);
|
|
|
|
var _this = _possibleConstructorReturn(this, (ScrollSync.__proto__ || _Object$getPrototypeOf(ScrollSync)).call(this, props, context));
|
|
|
|
_this.state = {
|
|
clientHeight: 0,
|
|
clientWidth: 0,
|
|
scrollHeight: 0,
|
|
scrollLeft: 0,
|
|
scrollTop: 0,
|
|
scrollWidth: 0
|
|
};
|
|
|
|
_this._onScroll = _this._onScroll.bind(_this);
|
|
return _this;
|
|
}
|
|
|
|
_createClass(ScrollSync, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var children = this.props.children;
|
|
var _state = this.state,
|
|
clientHeight = _state.clientHeight,
|
|
clientWidth = _state.clientWidth,
|
|
scrollHeight = _state.scrollHeight,
|
|
scrollLeft = _state.scrollLeft,
|
|
scrollTop = _state.scrollTop,
|
|
scrollWidth = _state.scrollWidth;
|
|
|
|
|
|
return children({
|
|
clientHeight: clientHeight,
|
|
clientWidth: clientWidth,
|
|
onScroll: this._onScroll,
|
|
scrollHeight: scrollHeight,
|
|
scrollLeft: scrollLeft,
|
|
scrollTop: scrollTop,
|
|
scrollWidth: scrollWidth
|
|
});
|
|
}
|
|
}, {
|
|
key: '_onScroll',
|
|
value: function _onScroll(_ref) {
|
|
var clientHeight = _ref.clientHeight,
|
|
clientWidth = _ref.clientWidth,
|
|
scrollHeight = _ref.scrollHeight,
|
|
scrollLeft = _ref.scrollLeft,
|
|
scrollTop = _ref.scrollTop,
|
|
scrollWidth = _ref.scrollWidth;
|
|
|
|
this.setState({ clientHeight: clientHeight, clientWidth: clientWidth, scrollHeight: scrollHeight, scrollLeft: scrollLeft, scrollTop: scrollTop, scrollWidth: scrollWidth });
|
|
}
|
|
}]);
|
|
|
|
return ScrollSync;
|
|
}(PureComponent);
|
|
|
|
export default ScrollSync;
|
|
process.env.NODE_ENV !== "production" ? ScrollSync.propTypes = {
|
|
/**
|
|
* Function responsible for rendering 2 or more virtualized components.
|
|
* This function should implement the following signature:
|
|
* ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element
|
|
*/
|
|
children: PropTypes.func.isRequired
|
|
} : void 0; |