viewability
Version:
Returns how viewable an element is
2 lines (1 loc) • 2.57 kB
JavaScript
!(function (e) { var t = {}; function n (r) { if (t[r]) return t[r].exports; var u = t[r] = { i: r, l: !1, exports: {} }; return e[r].call(u.exports, u, u.exports, n), u.l = !0, u.exports }n.m = e, n.c = t, n.d = function (e, t, r) { n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: r }) }, n.r = function (e) { typeof Symbol !== 'undefined' && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: 'Module' }), Object.defineProperty(e, '__esModule', { value: !0 }) }, n.t = function (e, t) { if (1 & t && (e = n(e)), 8 & t) return e; if (4 & t && typeof e === 'object' && e && e.__esModule) return e; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, 'default', { enumerable: !0, value: e }), 2 & t && typeof e !== 'string') for (var u in e)n.d(r, u, function (t) { return e[t] }.bind(null, u)); return r }, n.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e }; return n.d(t, 'a', t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = '', n(n.s = 2) }([function (e, t) { e.exports = function (e) { var t = window.innerHeight; var n = e.getBoundingClientRect().top; var r = e.getBoundingClientRect().bottom; var u = r - n; return n > t ? { value: 0, state: 'EL_IS_BELOW_VIEW' } : r <= 0 ? { value: 0, state: 'EL_IS_ABOVE_VIEW' } : n >= 0 && r <= t ? { value: 1, state: 'EL_IS_WITHIN_VERTICAL_VIEW' } : n < 0 && r > t ? { value: t / u, state: 'EL_BOTTOM_AND_TOP_TRUNCATED' } : n < 0 && r <= t ? { value: r / u, state: 'EL_TOP_TRUNCATED' } : n >= 0 && r > t ? { value: (t - n) / u, state: 'EL_BOTTOM_TRUNCATED' } : { value: 0, state: 'EL_IS_NOT_WITHIN_VIEW' } } }, function (e, t) { e.exports = function (e) { var t = window.innerWidth; var n = e.getBoundingClientRect().left; var r = e.getBoundingClientRect().right; var u = r - n; return n > t ? { value: 0, state: 'EL_IS_TOO_RIGHT' } : r <= 0 ? { value: 0, state: 'EL_IS_TOO_LEFT' } : n >= 0 && r <= t ? { value: 1, state: 'EL_IS_WITHIN_HORIZONTAL_VIEW' } : n < 0 && r > t ? { value: t / u, state: 'EL_LEFT_AND_RIGHT_TRUNCATED' } : n < 0 && r <= t ? { value: r / u, state: 'EL_LEFT_TRUNCATED' } : n >= 0 && r > t ? { value: (t - n) / u, state: 'EL_RIGHT_TRUNCATED' } : { value: 0, state: 'EL_IS_NOT_WITHIN_VIEW' } } }, function (e, t, n) { e.exports = { vertical: n(0), horizontal: n(1), isElementOnScreen: n(3) } }, function (e, t, n) { var r = n(1); var u = n(0); e.exports = function (e, t) { return t ? u(e).value * r(e).value == 1 : u(e).value * r(e).value > 0 } }]))