47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = inViewport;
|
|
|
|
var _getElementPosition = require('./getElementPosition');
|
|
|
|
var _getElementPosition2 = _interopRequireDefault(_getElementPosition);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
var isHidden = function isHidden(element) {
|
|
return element.offsetParent === null;
|
|
};
|
|
|
|
function inViewport(element, container, customOffset) {
|
|
if (isHidden(element)) {
|
|
return false;
|
|
}
|
|
|
|
var top = void 0;
|
|
var bottom = void 0;
|
|
var left = void 0;
|
|
var right = void 0;
|
|
|
|
if (typeof container === 'undefined' || container === window) {
|
|
top = window.pageYOffset;
|
|
left = window.pageXOffset;
|
|
bottom = top + window.innerHeight;
|
|
right = left + window.innerWidth;
|
|
} else {
|
|
if (!inViewport(container, window, customOffset)) return false;
|
|
|
|
var containerPosition = (0, _getElementPosition2.default)(container);
|
|
|
|
top = containerPosition.top;
|
|
left = containerPosition.left;
|
|
bottom = top + container.offsetHeight;
|
|
right = left + container.offsetWidth;
|
|
}
|
|
|
|
var elementPosition = (0, _getElementPosition2.default)(element);
|
|
|
|
return top <= elementPosition.top + element.offsetHeight + customOffset.top && bottom >= elementPosition.top - customOffset.bottom && left <= elementPosition.left + element.offsetWidth + customOffset.left && right >= elementPosition.left - customOffset.right;
|
|
} |