UNPKG

2.48 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.useViewportScanner = undefined;
7
8var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
9
10var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
11
12var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
13
14var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
15
16var _react = require('react');
17
18var _react2 = _interopRequireDefault(_react);
19
20var _propTypes = require('prop-types');
21
22var _propTypes2 = _interopRequireDefault(_propTypes);
23
24function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
26var useViewportScanner = function useViewportScanner(_ref) {
27 var containerSelector = _ref.containerSelector,
28 _ref$defaultBottomIsV = _ref.defaultBottomIsVisible,
29 defaultBottomIsVisible = _ref$defaultBottomIsV === undefined ? true : _ref$defaultBottomIsV,
30 isLocked = _ref.isLocked,
31 children = _ref.children;
32
33 var _useState = (0, _react.useState)(defaultBottomIsVisible),
34 _useState2 = (0, _slicedToArray3.default)(_useState, 2),
35 bottomIsVisible = _useState2[0],
36 setBottomIsVisibleTo = _useState2[1];
37
38 var _useState3 = (0, _react.useState)(null),
39 _useState4 = (0, _slicedToArray3.default)(_useState3, 2),
40 containerElement = _useState4[0],
41 setContainerElementTo = _useState4[1];
42
43 var handleScroll = function handleScroll() {
44 if (containerElement === null) {
45 setContainerElementTo(document.querySelector(containerSelector));
46 }
47 if (!isLocked && containerElement !== null) {
48 if (containerElement.getBoundingClientRect().bottom > 0) {
49 setBottomIsVisibleTo(true);
50 } else {
51 setBottomIsVisibleTo(false);
52 }
53 }
54 };
55
56 (0, _react.useEffect)(function () {
57 if (typeof window !== 'undefined') {
58 //console.log(`mount`)
59 window.addEventListener('scroll', handleScroll);
60 }
61 return function () {
62 //console.log(`unmount`)
63
64 window.removeEventListener('scroll', handleScroll);
65 };
66 });
67
68 return {
69 bottomIsVisible: bottomIsVisible
70 };
71};
72
73var ViewportScanner = function ViewportScanner(_ref2) {
74 var children = _ref2.children,
75 props = (0, _objectWithoutProperties3.default)(_ref2, ['children']);
76 return children(useViewportScanner(props));
77};
78
79exports.useViewportScanner = useViewportScanner;
80exports.default = ViewportScanner;
\No newline at end of file