@@ -604,53 +604,41 @@ const Tabs = React.forwardRef(function Tabs(inProps, ref) {
604
604
* Using IntersectionObserver on first and last Tabs.
605
605
*/
606
606
React . useEffect ( ( ) => {
607
- let firstObserver ;
608
- let lastObserver ;
609
607
const tabListChildren = Array . from ( tabListRef . current . children ) ;
610
608
const length = tabListChildren . length ;
611
- const firstTab = tabListChildren [ 0 ] ;
612
- const lastTab = tabListChildren [ length - 1 ] ;
613
- const threshold = 0.99 ;
614
- const observerOptions = {
615
- root : tabsRef . current ,
616
- threshold,
617
- } ;
618
-
619
- const handleScrollButtonStart = ( entries ) => {
620
- let display = false ;
621
- entries . forEach ( ( { isIntersecting } ) => {
622
- display = ! isIntersecting ;
623
- } ) ;
624
- setDisplayStartScroll ( display ) ;
625
- } ;
626
-
627
- const handleScrollButtonEnd = ( entries ) => {
628
- let display = false ;
629
- entries . forEach ( ( { isIntersecting } ) => {
630
- display = ! isIntersecting ;
631
- } ) ;
632
- setDisplayEndScroll ( display ) ;
633
- } ;
634
609
635
610
if (
636
611
typeof IntersectionObserver !== 'undefined' &&
637
612
length > 0 &&
638
613
scrollable &&
639
614
scrollButtons !== false
640
615
) {
641
- firstObserver = new IntersectionObserver ( handleScrollButtonStart , observerOptions ) ;
616
+ const firstTab = tabListChildren [ 0 ] ;
617
+ const lastTab = tabListChildren [ length - 1 ] ;
618
+ const observerOptions = {
619
+ root : tabsRef . current ,
620
+ threshold : 0.99 ,
621
+ } ;
622
+
623
+ const handleScrollButtonStart = ( entries ) => {
624
+ setDisplayStartScroll ( ! entries [ 0 ] . isIntersecting ) ;
625
+ } ;
626
+ const firstObserver = new IntersectionObserver ( handleScrollButtonStart , observerOptions ) ;
642
627
firstObserver . observe ( firstTab ) ;
643
628
644
- if ( length > 1 ) {
645
- lastObserver = new IntersectionObserver ( handleScrollButtonEnd , observerOptions ) ;
646
- lastObserver . observe ( lastTab ) ;
647
- }
629
+ const handleScrollButtonEnd = ( entries ) => {
630
+ setDisplayEndScroll ( ! entries [ 0 ] . isIntersecting ) ;
631
+ } ;
632
+ const lastObserver = new IntersectionObserver ( handleScrollButtonEnd , observerOptions ) ;
633
+ lastObserver . observe ( lastTab ) ;
634
+
635
+ return ( ) => {
636
+ firstObserver . disconnect ( ) ;
637
+ lastObserver . disconnect ( ) ;
638
+ } ;
648
639
}
649
640
650
- return ( ) => {
651
- firstObserver ?. disconnect ( ) ;
652
- lastObserver ?. disconnect ( ) ;
653
- } ;
641
+ return undefined ;
654
642
} , [ scrollable , scrollButtons , updateScrollObserver , childrenProp ?. length ] ) ;
655
643
656
644
React . useEffect ( ( ) => {
0 commit comments