mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 15:03:34 +00:00
The .height() and .width() functions are actually pretty expensive for the number of times we call them. The viewport height and width don't change often, though, so we can just cache them and recalculate them on window resize. (imported from commit 129fb8c058144125e2974f6b7967cd9f1a5c9ead)
45 lines
972 B
JavaScript
45 lines
972 B
JavaScript
var viewport = (function () {
|
|
var exports = {};
|
|
|
|
var jwindow;
|
|
var height;
|
|
var width;
|
|
|
|
exports.scrollTop = function viewport_scrollTop () {
|
|
return jwindow.scrollTop.apply(jwindow, arguments);
|
|
};
|
|
|
|
exports.height = function viewport_height() {
|
|
if (arguments.length !== 0) {
|
|
height = undefined;
|
|
return jwindow.height.apply(jwindow, arguments);
|
|
}
|
|
if (height === undefined) {
|
|
height = $(window).height();
|
|
}
|
|
return height;
|
|
};
|
|
|
|
exports.width = function viewport_width() {
|
|
if (arguments.length !== 0) {
|
|
width = undefined;
|
|
return jwindow.width.apply(jwindow, arguments);
|
|
}
|
|
if (width === undefined) {
|
|
width = jwindow.width();
|
|
}
|
|
return width;
|
|
};
|
|
|
|
$(function () {
|
|
jwindow = $(window);
|
|
// This handler must be placed before all resize handlers in our application
|
|
jwindow.resize(function () {
|
|
height = undefined;
|
|
width = undefined;
|
|
});
|
|
});
|
|
|
|
return exports;
|
|
}());
|