virtua-restoration
Version:
<img src="./virtua-restoration.png" alt="Virtua Restoration" style="max-width: 1000px; width: 100%; display: block; margin: 0 auto 20px auto;">
2 lines (1 loc) • 2.51 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _react = require('react');var _virtua = require('virtua');function d(o,c="sessionStorage",t){if(c==="custom"&&t)return t;let i=c==="localStorage"?window.localStorage:window.sessionStorage;return{get:()=>{let e=i.getItem(o);if(e)try{return JSON.parse(e)}catch(r){console.error("Error parsing storage cache:",r);return}},set:e=>{i.setItem(o,JSON.stringify(e))}}}var _jsxruntime = require('react/jsx-runtime');var C=({cacheKey:o,children:c,cacheSourceType:t="sessionStorage",customProvider:i,className:e,style:r})=>{let a=_react.useRef.call(void 0, null),n=_react.useMemo.call(void 0, ()=>d(o,t,i),[o,t,i]),[l,f]=_react.useMemo.call(void 0, ()=>_nullishCoalesce(_optionalChain([n, 'optionalAccess', _ => _.get, 'call', _2 => _2()]), () => ([])),[n]);return _react.useLayoutEffect.call(void 0, ()=>{if(!a.current)return;let s=a.current;return l&&s.scrollTo(l),()=>{n&&n.set([s.scrollOffset,s.cache])}},[l,n]),_jsxruntime.jsx.call(void 0, _virtua.VList,{ref:a,cache:f,className:e,style:_nullishCoalesce(r, () => ({height:"100vh",overflow:"auto"})),children:c})};var L=({cacheKey:o,children:c,cacheSourceType:t="sessionStorage",customProvider:i})=>{let e=_react.useRef.call(void 0, null),r=_react.useMemo.call(void 0, ()=>d(o,t,i),[o,t,i]),[a,n]=_react.useMemo.call(void 0, ()=>_nullishCoalesce(_optionalChain([r, 'optionalAccess', _3 => _3.get, 'call', _4 => _4()]), () => ([])),[r]);return _react.useLayoutEffect.call(void 0, ()=>{if(!e.current)return;let l=e.current;window.scrollTo(0,_nullishCoalesce(a, () => (0)));let f=0,s=()=>{f=window.scrollY};return window.addEventListener("scroll",s),s(),()=>{window.removeEventListener("scroll",s),r&&r.set([f,l.cache])}},[a,r]),_jsxruntime.jsx.call(void 0, _virtua.WindowVirtualizer,{ref:e,cache:n,children:c})};exports.VirtualizedList = C; exports.WindowVirtualizedList = L;