UNPKG

koval-ui

Version:

React components collection with minimalistic design. Supports theming, layout, and input validation.

3 lines (2 loc) 1.19 kB
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("react"),g=require("classnames"),j=require("@tanstack/react-virtual"),p=require("css-vars-hook"),z=require("../../internal/hooks/useLinkRefs.cjs"),i=require("./VirtualList.module.css.cjs"),f=t.forwardRef(({children:a,className:x,averageItemHeight:L,height:o,width:n,variableItemSize:V=!1,...h},q)=>{const l=t.useMemo(()=>t.Children.toArray(a),[a]),{ref:c,LocalRoot:v}=p.useLocalTheme();z.useLinkRefs(q,c);const s=j.useVirtualizer({count:l.length,getScrollElement:()=>c?.current,estimateSize:()=>L,overscan:6}),u=s.getVirtualItems(),d=s.getTotalSize(),m=u[0]?.start??0,S=t.useMemo(()=>({width:n,height:o,"total-size":d,"first-item-start-position":m}),[m,o,d,n]);return e.jsx(v,{...h,className:g(i.default.virtualList,x),theme:S,children:e.jsx("div",{className:i.default.heightContainer,children:e.jsx("div",{className:i.default.viewport,children:u.map(r=>e.jsx("div",{ref:V?s.measureElement:void 0,"data-index":r.index,children:l[r.index]},r.index))})})})});f.displayName="VirtualList";exports.VirtualList=f; //# sourceMappingURL=VirtualList.cjs.map