position-indicator
Version:
position indicator library
8 lines (7 loc) • 1.72 kB
JavaScript
/*!
* position-indicator v0.0.12
* (c) kunukn
* Released under the MIT License.
*/
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).positionIndicator={})}(this,(function(e){"use strict";var n=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},o=function(){return window.innerHeight},i=function(e,i){var t,r,s,d=n(),l=o(),u=window.pageYOffset,c=(t=u/(d-l||1),r=0,s=1,Math.min(Math.max(t,r),s)),a=i.prevPosition;return i.prevPosition=c,{position:c,prevPosition:a,hasUpdated:c!==a,eventType:e,hasScroll:n()>o(),eventDate:Date.now()}};e.createPositionIndicator=function(e){var n={onScroll:null,onResize:null,onHeightChange:null,resizeObserver:null},o={};return{init:function(){return function(e,n,o){var t=e.onInit,r=e.onUpdate,s=e.useResizeListener,d=void 0===s||s,l=e.useResizeObserver,u=void 0===l||l;n.onScroll=function(){r&&r(i("scroll",o))},d&&(n.onResize=function(){r&&r(i("resize",o))}),u&&(n.onHeightChange=function(){r&&r(i("heightChange",o))},"undefined"!=typeof ResizeObserver&&(n.resizeObserver=new ResizeObserver(n.onHeightChange),n.resizeObserver.observe(document.body))),window.addEventListener("scroll",n.onScroll),window.addEventListener("resize",n.onResize),t&&t(i("init",o))}(e,n,o)},destroy:function(){!function(e){e.onScroll&&window.removeEventListener("scroll",e.onScroll),e.onResize&&window.removeEventListener("resize",e.onResize),e.resizeObserver&&e.resizeObserver.unobserve(document.body)}(n),n={},o={}}}},Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=index.umd.min.js.map