UNPKG

monday-ui-react-core

Version:

Official monday.com UI resources for application development in React.js

3 lines (2 loc) 2.21 kB
import{defineProperty as e}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as t}from"../../../../_virtual/_tslib.js";import r,{forwardRef as n,useCallback as o,useEffect as i,useMemo as l}from"react";import s from"../TableBody/TableBody.js";import a from"./TableVirtualizedBody.module.scss.js";import{FixedSizeList as c}from"react-window";import{useTable as u}from"../context/TableContext/TableContext.js";import m from"classnames";import{getTestId as d}from"../../../tests/testIds.js";import{ComponentDefaultTestId as f}from"../../../tests/constants.js";import{RowHeights as v}from"../Table/TableConsts.js";import p from"react-virtualized-auto-sizer";import{useTableRowMenu as b}from"../context/TableRowMenuContext/TableRowMenuContext.js";var h=n((function(h,T){var g=h.items,j=h.rowRenderer,w=h.onScroll,y=h.columns,E=h.headerRenderer,R=h.id,x=h.className,z=h["data-testid"],B=u(),C=B.size,L=B.virtualizedListRef,_=B.onVirtualizedListScroll,O=B.markTableAsVirtualized,S=b().resetHoveredRow,V=!!y&&!!E,A=o((function(e){var t=e.target;S(),_({target:t,currentTarget:t})}),[S,_]);i((function(){var e=L.current;if(e)return e.addEventListener("scroll",A),function(){e.removeEventListener("scroll",A)}}),[A,L]);var D=o((function(e){V||null==w||w(e.scrollDirection,e.scrollOffset,e.scrollUpdateWasRequested)}),[w,V]),H=o((function(e){var n,o=e.index,i=e.style,l=t(i,["width"]);if(V&&0===o)return null;var s=j(g[V?o-1:o]);return r.cloneElement(s,{style:Object.assign(Object.assign({},l),null===(n=s.props)||void 0===n?void 0:n.style),key:o})}),[g,j,V]);i((function(){V||O()}),[O,V]);var I=l((function(){return V?n((function(e,n){var o=e.children,i=t(e,["children"]);return r.createElement("div",Object.assign({ref:n},i),E(y),o)})):void 0}),[V,E,y]);return r.createElement(s,{className:m(a.tableBody,e({},a.withHeader,V),x),id:R,"data-testid":z||d(f.TABLE_VIRTUALIZED_BODY,R),ref:T},(null==g?void 0:g.length)&&r.createElement(p,null,(function(e){return r.createElement(c,{itemSize:v[C],height:e.height,itemCount:V?g.length+1:g.length,width:e.width,onScroll:D,outerRef:function(e){L.current=e},innerElementType:I},H)})))}));export{h as default}; //# sourceMappingURL=TableVirtualizedBody.js.map