UNPKG

next-scroll

Version:

Scroll postion gives you ability the manipulate scroll

3 lines (2 loc) 1.83 kB
import n,{useState as e,useEffect as o}from"react";var t=function(e){var o=e.children,t=e.to,i=void 0===t?"":t,r=e.offset,f=void 0===r?0:r,d=e.duration,u=void 0===d?500:d,l=e.className,c=void 0===l?"":l;return"undefined"!=typeof window&&(window.onbeforeunload=function(){window.scrollTo(0,0)}),n.createElement("div",{onClick:function(){i&&function(){var n=document.getElementById(i);if(n){var e=n.offsetTop-f,o=window.pageYOffset,t=e-o,r=null;requestAnimationFrame((function n(e){null===r&&(r=e);var i=e-r,f=t*i/u+o;window.scroll(0,f),i<u&&requestAnimationFrame(n)}))}}()},className:c},o)},i=function(){var n=e(0),t=n[0],i=n[1],r=e(0),f=r[0],d=r[1];return o((function(){return"undefined"!=typeof window&&window.addEventListener("scroll",(function(){i(window.scrollX),d(window.scrollY)})),function(){return window.removeEventListener("scroll",(function(){}))}}),[]),{scrollX:t,scrollY:f}},r=function(n){var t=n.id,i=n.offset,r=void 0===i?0:i,f=e(null),d=f[0],u=f[1];return o((function(){var n=!1;if(!n){if("undefined"!=typeof window){var e=document.getElementById(t);if(!e)return;var o=e.offsetHeight-r,i=e.getBoundingClientRect().y;u(o>i&&i>-o),window.addEventListener("scroll",(function(){var n=e.offsetHeight-r,o=e.getBoundingClientRect().y;u(n>o&&o>-n)}))}return function(){n=!0,window.removeEventListener("scroll",(function(){}))}}}),[]),d},f=function(n){var e=n.target,o=n.duration,t=void 0===o?500:o;if("undefined"!=typeof window){var i;if("top"===e)i=document.body.offsetTop;else if("bottom"===e)i=document.body.offsetHeight;else{if(!e)return;i=e}var r=window.pageYOffset,f=i-r,d=null;requestAnimationFrame((function n(e){null===d&&(d=e);var o=e-d,i=f*o/t+r;window.scroll(0,i),o<t&&requestAnimationFrame(n)}))}};export{t as Link,r as componentInView,i as scrollPosition,f as scrollTo}; //# sourceMappingURL=index.js.map