mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-18 03:18:19 -07:00
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
define(['dom'], function (dom) {
|
|
'use strict';
|
|
|
|
/**
|
|
* Copyright 2012, Digital Fusion
|
|
* Licensed under the MIT license.
|
|
* http://teamdf.com/jquery-plugins/license/
|
|
*
|
|
* @author Sam Sehnert
|
|
* @desc A small plugin that checks whether elements are within
|
|
* the user visible viewport of a web browser.
|
|
* only accounts for vertical position, not horizontal.
|
|
*/
|
|
function visibleInViewport(elem, partial, thresholdX, thresholdY) {
|
|
|
|
thresholdX = thresholdX || 0;
|
|
thresholdY = thresholdY || 0;
|
|
|
|
if (!elem.getBoundingClientRect) {
|
|
return true;
|
|
}
|
|
|
|
var windowSize = dom.getWindowSize();
|
|
|
|
var vpWidth = windowSize.innerWidth,
|
|
vpHeight = windowSize.innerHeight;
|
|
|
|
// Use this native browser method, if available.
|
|
var rec = elem.getBoundingClientRect(),
|
|
tViz = rec.top >= 0 && rec.top < vpHeight + thresholdY,
|
|
bViz = rec.bottom > 0 && rec.bottom <= vpHeight + thresholdY,
|
|
lViz = rec.left >= 0 && rec.left < vpWidth + thresholdX,
|
|
rViz = rec.right > 0 && rec.right <= vpWidth + thresholdX,
|
|
vVisible = partial ? tViz || bViz : tViz && bViz,
|
|
hVisible = partial ? lViz || rViz : lViz && rViz;
|
|
|
|
return vVisible && hVisible;
|
|
}
|
|
|
|
return visibleInViewport;
|
|
}); |