UNPKG

rc-scroll-into-view

Version:

Solving the issue of scrollIntoView failing during asynchronous scrolling in JavaScript.

2 lines (1 loc) 1.09 kB
"use strict";var e=require("/Users/yuchen/project/rc-scroll-into-view/node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),t=require("ahooks"),n=require("react");module.exports=function(c){var l=c.children,i=c.selector,o=c.scrollOptions,s=void 0===o?{}:o,u=c.isScrollable,f=void 0===u||u,d=c.scrollRef,v=c.target,a=e.__rest(c,["children","selector","scrollOptions","isScrollable","scrollRef","target"]),m=function(e,r){return e?"current"in e?e.current:e:r}(v,document),E=n.useRef(null),b=t.useSize(E),h=n.useState(f),q=h[0],S=h[1],_=function(){S(!1)};return n.useEffect((function(){void 0!==f&&S(f)}),[f]),t.useDebounceEffect((function(){q&&function(){var e;if(i){var r=document.querySelector(i);null==r||r.scrollIntoView(s)}else d&&(null==d?void 0:d.current)&&(null===(e=d.current)||void 0===e||e.scrollIntoView(s))}()}),[b,q],{wait:300}),n.useEffect((function(){return q&&m&&(m.addEventListener("scroll",_),m.addEventListener("click",_)),function(){m&&(m.removeEventListener("scroll",_),m.removeEventListener("click",_))}}),[]),r.jsx("div",e.__assign({ref:E},a,{children:l}))};