UNPKG

swan-ui

Version:
84 lines (73 loc) 2.69 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.warning = warning; exports.getClientHeight = getClientHeight; exports.getClientWidth = getClientWidth; exports.getWindowScrollTop = getWindowScrollTop; exports.getWindowScrollLeft = getWindowScrollLeft; exports.getOffsetTop = getOffsetTop; exports.getOffset = getOffset; exports.isElemOutViewport = isElemOutViewport; function warning(format) { var _len = arguments.length; var args = Array(_len > 1 ? _len - 1 : 0); for (var _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } if (format === undefined) { throw new Error('`warning(format, ...args)` requires a warning ' + 'message argument'); } var argIndex = 0; var message = 'Warning: ' + format.replace(/%s/g, function () { return args[argIndex++]; }); if (typeof console !== 'undefined') { console.warn(message); } } function getClientHeight() { return window.innerHeight ? window.innerHeight : document.compatMode === 'BackCompat' ? document.body.clientHeight : document.documentElement.clientHeight; } function getClientWidth() { return window.innerWidth ? window.innerWidth : document.compatMode === 'BackCompat' ? document.body.clientWidth : document.documentElement.clientWidth; } function getWindowScrollTop() { return window.pageYOffset ? window.pageYOffset : document.compatMode === 'BackCompat' ? document.body.scrollTop : document.documentElement.scrollTop; } function getWindowScrollLeft() { return window.pageXOffset ? window.pageXOffset : document.compatMode === 'BackCompat' ? document.body.scrollLeft : document.documentElement.scrollLeft; } function getOffsetTop(elem) { var offsetTop = 0; if (elem.offsetParent) { do { offsetTop += elem.offsetTop; elem = elem.offsetParent; } while (elem); } return offsetTop >= 0 ? offsetTop : 0; } function getOffset(elem) { var offsetTop = 0; var offsetLeft = 0; if (elem.offsetParent) { do { offsetTop += elem.offsetTop; offsetLeft += elem.offsetLeft; elem = elem.offsetParent; } while (elem); } return { offsetTop: offsetTop >= 0 ? offsetTop : 0, offsetLeft: offsetLeft >= 0 ? offsetLeft : 0 }; } function isElemOutViewport(elem) { var bodyScrollTop = getWindowScrollTop(); var elemOffsetTop = getOffsetTop(elem); var elemHeight = elem.offsetHeight; var clientHeight = getClientHeight(); return elemOffsetTop <= bodyScrollTop + elemHeight || clientHeight + bodyScrollTop <= elemOffsetTop + elemHeight; }