1import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{a as n}from"./react-intl-DlKP8ATg.js";import{t as r}from"./jsx-runtime-BdxMnOeJ.js";import{It as i,Jt as a}from"./store-BKpYtGn4.js";import{c as o}from"./react-router-BkmJBoOP.js";import{t as s}from"./defineProperty-BbfpZ9Tg.js";import{l as c}from"./typed_functions-Whap35TF.js";import{l,t as u}from"./immutable.es-tL0E-S7u.js";import{t as d}from"./throttle-DJD3CaHb.js";import"./loading_indicator-eceYQNAM.js";import{i as f,n as p,t as m}from"./fullscreen-C9DTf02V.js";import{t as h}from"./scroll_container-DTFJ2dtn.js";import{t as g}from"./schedule_idle_task-BaJPtWS1.js";import{n as _,r as v,t as y}from"./components-BM4_xVIg.js";import{t as b}from"./load_more-DuHxQhfP.js";var x=e(t());l();var S=e(d()),C;function w(e){if(typeof C!=`boolean`){let t=e.target.getBoundingClientRect(),n=e.boundingClientRect;C=t.height!==n.height||t.top!==n.top||t.width!==n.width||t.bottom!==n.bottom||t.left!==n.left||t.right!==n.right}return C?e.target.getBoundingClientRect():e.boundingClientRect}var T=r(),E=[`id`,`index`,`listLength`,`cachedHeight`],D=class extends x.Component{constructor(...e){super(...e),s(this,`state`,{isHidden:!1}),s(this,`handleIntersection`,e=>{this.entry=e,g(this.calculateHeight),this.setState(this.updateStateAfterIntersection)}),s(this,`updateStateAfterIntersection`,e=>(e.isIntersecting!==!1&&!this.entry.isIntersecting&&g(this.hideIfNotIntersecting),{isIntersecting:this.entry.isIntersecting,isHidden:!1})),s(this,`calculateHeight`,()=>{let{onHeightChange:e,saveHeightKey:t,id:n}=this.props;this.height=w(this.entry).height,e&&t&&e(t,n,this.height)}),s(this,`hideIfNotIntersecting`,()=>{this.componentMounted&&this.setState(e=>({isHidden:!e.isIntersecting}))}),s(this,`handleRef`,e=>{this.node=e})}shouldComponentUpdate(e,t){let n=!this.state.isIntersecting&&(this.state.isHidden||this.props.cachedHeight),r=!t.isIntersecting&&(t.isHidden||e.cachedHeight);return!!n!=!!r||!n||!E.every(t=>e[t]===this.props[t])}componentDidMount(){let{intersectionObserverWrapper:e,id:t}=this.props;e.observe(t,this.node,this.handleIntersection),this.componentMounted=!0}componentWillUnmount(){let{intersectionObserverWrapper:e,id:t}=this.props;e.unobserve(t,this.node),this.componentMounted=!1}render(){let{children:e,id:t,index:n,listLength:r,cachedHeight:i}=this.props,{isIntersecting:a,isHidden:o}=this.state;return!a&&(o||i)?(0,T.jsx)(y,{ref:this.handleRef,"aria-posinset":n+1,"aria-setsize":r,style:{height:`${this.height||i}px`,opacity:0,overflow:`hidden`},"data-id":t,children:e&&(0,x.cloneElement)(e,{hidden:!0})}):(0,T.jsx)(y,{ref:this.handleRef,"aria-posinset":n+1,"aria-setsize":r,"data-id":t,children:e&&(0,x.cloneElement)(e,{hidden:!1})})}},O=c((e,t)=>({cachedHeight:e.getIn([`height_cache`,t.saveHeightKey,t.id])}),e=>({onHeightChange(t,n,r){e(a(t,n,r))}}))(D),k=class{constructor(){s(this,`callbacks`,{}),s(this,`observerBacklog`,[]),s(this,`observer`,null)}connect(e){let t=e=>{e.forEach(e=>{let t=e.target.getAttribute(`data-id`);this.callbacks[t]&&this.callbacks[t](e)})};this.observer=new IntersectionObserver(t,e),this.observerBacklog.forEach(([e,t,n])=>{this.observe(e,t,n)}),this.observerBacklog=[]}observe(e,t,n){this.observer?(this.callbacks[e]=n,this.observer.observe(t)):this.observerBacklog.push([e,t,n])}unobserve(e,t){this.observer&&(delete this.callbacks[e],this.observer.unobserve(t))}disconnect(){this.observer&&=(this.callbacks={},this.observer.disconnect(),null)}},A=({onClick:e,count:t})=>(0,T.jsx)(`button`,{className:`load-more load-gap`,onClick:e,type:`button`,children:(0,T.jsx)(n,{id:`load_pending`,defaultMessage:`{count, plural, one {# new item} other {# new items}}`,values:{count:t}})}),j=300,M=i?{passive:!0}:!1,N=(e,{scrollKey:t})=>({preventScroll:t===e.dropdownMenu.scrollKey}),P=({id:e,index:t,listLength:n,intersectionObserverWrapper:r,trackScroll:i,scrollKey:a,children:s})=>{let c=o();return(0,T.jsx)(O,{id:e,index:t,listLength:n,intersectionObserverWrapper:r,saveHeightKey:i?`${c.key}:${a}`:null,children:s})},F=class extends x.PureComponent{constructor(...e){super(...e),s(this,`state`,{fullscreen:null,cachedMediaWidth:250}),s(this,`intersectionObserverWrapper`,new k),s(this,`handleScroll`,(0,S.default)(()=>
1{if(this.node){let e=this.getScrollTop(),t=this.getScrollHeight(),n=this.getClientHeight(),r=t-e-n;e>0&&r<400&&this.props.onLoadMore&&this.props.hasMore&&!this.props.isLoading&&this.props.onLoadMore(),e<100&&this.props.onScrollToTop?this.props.onScrollToTop():this.props.onScroll&&this.props.onScroll(),this.lastScrollWasSynthetic||(this.scrollToTopOnMouseIdle=!1),this.lastScrollWasSynthetic=!1}},150,{trailing:!0})),s(this,`mouseIdleTimer`,null),s(this,`mouseMovedRecently`,!1),s(this,`lastScrollWasSynthetic`,!1),s(this,`scrollToTopOnMouseIdle`,!1),s(this,`_getScrollingElement`,()=>this.props.bindToDocument?document.scrollingElement||document.body:this.node),s(this,`setScrollTop`,e=>{this.getScrollTop()!==e&&(this.lastScrollWasSynthetic=!0,this._getScrollingElement().scrollTop=e)}),s(this,`clearMouseIdleTimer`,()=>{this.mouseIdleTimer!==null&&(clearTimeout(this.mouseIdleTimer),this.mouseIdleTimer=null)}),s(this,`handleMouseMove`,(0,S.default)(()=>{this.clearMouseIdleTimer(),this.mouseIdleTimer=setTimeout(this.handleMouseIdle,j),!this.mouseMovedRecently&&this.getScrollTop()===0&&(this.scrollToTopOnMouseIdle=!0),this.mouseMovedRecently=!0},j/2)),s(this,`handleWheel`,(0,S.default)(()=>{this.scrollToTopOnMouseIdle=!1},150,{trailing:!0})),s(this,`handleMouseIdle`,()=>{this.scrollToTopOnMouseIdle&&!this.props.preventScroll&&this.setScrollTop(0),this.mouseMovedRecently=!1,this.scrollToTopOnMouseIdle=!1}),s(this,`getScrollPosition`,()=>this.node&&(this.getScrollTop()>0||this.mouseMovedRecently)?{height:this.getScrollHeight(),top:this.getScrollTop()}:null),s(this,`getScrollTop`,()=>this._getScrollingElement().scrollTop),s(this,`getScrollHeight`,()=>this._getScrollingElement().scrollHeight),s(this,`getClientHeight`,()=>this._getScrollingElement().clientHeight),s(this,`updateScrollBottom`,e=>{let t=this.getScrollHeight()-e;this.setScrollTop(t)}),s(this,`cacheMediaWidth`,e=>{e&&this.state.cachedMediaWidth!==e&&this.setState({cachedMediaWidth:e})}),s(this,`onFullScreenChange`,()=>{this.setState({fullscreen:f()})}),s(this,`setRef`,e=>{this.node=e}),s(this,`handleLoadMore`,e=>{e.preventDefault(),this.props.onLoadMore()}),s(this,`handleLoadPending`,e=>{e.preventDefault(),this.props.onLoadPending(),this.scrollToTopOnMouseIdle=!1,this.lastScrollWasSynthetic=!1,this.clearMouseIdleTimer(),this.mouseIdleTimer=setTimeout(this.handleMouseIdle,j),this.mouseMovedRecently=!0})}componentDidMount(){this.attachScrollListener(),this.attachIntersectionObserver(),m(this.onFullScreenChange),this.handleScroll()}getSnapshotBeforeUpdate(e){let t=x.Children.count(e.children)>0&&x.Children.count(e.children)<x.Children.count(this.props.children)&&this.getFirstChildKey(e)!==this.getFirstChildKey(this.props);return e.numPending>0!=this.props.numPending>0||t&&(this.getScrollTop()>0||this.mouseMovedRecently||this.props.preventScroll)?this.getScrollHeight()-this.getScrollTop():null}componentDidUpdate(e,t,n){n!==null&&this.setScrollTop(this.getScrollHeight()-n)}componentWillUnmount(){this.clearMouseIdleTimer(),this.detachScrollListener(),this.detachIntersectionObserver(),p(this.onFullScreenChange)}attachIntersectionObserver(){let e={root:this.node,rootMargin:`300% 0px`};this.intersectionObserverWrapper.connect(this.props.bindToDocument?{}:e)}detachIntersectionObserver(){this.intersectionObserverWrapper.disconnect()}attachScrollListener(){this.props.bindToDocument?(document.addEventListener(`scroll`,this.handleScroll),document.addEventListener(`wheel`,this.handleWheel,M)):(this.node.addEventListener(`scroll`,this.handleScroll),this.node.addEventListener(`wheel`,this.handleWheel,M))}detachScrollListener(){this.props.bindToDocument?(document.removeEventListener(`scroll`,this.handleScroll),document.removeEventListener(`wheel`,this.handleWheel,M)):this.node&&(this.node.removeEventListener(`scroll`,this.handleScroll),this.node.removeEventListener(`wheel`,this.handleWheel,M))}getFirstChildKey(e){let{children:t}=e,n=t;return t instanceof u?n=t.get(0):Array.isArray(t)&&(n=t[0]),n&&n.key}render(){let{children:e,scrollKey:t,className:n,trackScroll:r,showLoading:i,isLoading:a,hasMore:o,numPending:s,prepend:c,alwaysPrepend:l,append:u,footer:d,emptyMessage:f,onLoadMore:p}=this.props,{fullscreen:m}=this.state,g=x.Children.count(e),y=o&&p?(0,T.jsx)(b,{visible:!a,onClick:this.handleLoadMore}):null,S=s>0?(0,T.jsx)(A,{count:s,onClick:this.handleLoadPending}):null,C=null;return C=i?(0,T.jsxs)(v,{ref:this.setRef,children:[c,(0,T.jsx)(_,{isLoading:!0}),d]}):a||g>0||s>0||o||!f?(0,T.jsxs)(v,{fullscreen:m,ref:this.setRef,onMouseMove:this.handleMouseMove,children:[c,(0,T.jsxs)(_,{className:n,children:[S,x.Children.map(this.props.children,(e,n)=>(0,T.jsx)(P,{id:e.key,index:n,listLength:g,intersectionObserverWrapper:this.intersectionObserverWrapper,trackScroll:r,scrollKey:t,children:(0,x.cloneElement)(e,{getScrollPosition:this.getScrollPosition,updateScrollBottom:this.updateScrollBottom,cachedMediaWidth:this.state.cachedMediaWidth,cacheMediaWidth:this.cacheMediaWidth})},e.key)),y,!o&&u]}),d]}):(0,T.jsxs)(v,{fullscreen:m,ref:this.setRef,children:[l&&c,(0,T.jsx)(`div`,{className:`empty-column-indicator`,children:(0,T.jsx)(`span`,{children:f})}),d]}),r?(0,T.jsx)(h,{scrollKey:t,childRef:this.setRef,children:C}):C}};s(F,`defaultProps`,{trackScroll:!0});var I=c(N,null,null,{forwardRef:!0})(F);export{I as t}; 2//# sourceMappingURL=scrollable_list-BTtBBEMv.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.