Socket
Socket
Sign inDemoInstall

react-cool-virtual

Package Overview
Dependencies
5
Maintainers
1
Versions
56
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.5.0 to 0.5.1

12

CHANGELOG.md
# react-cool-virtual
## 0.5.1
### Patch Changes
- [#245](https://github.com/wellyshen/react-cool-virtual/pull/245) [`f31007e`](https://github.com/wellyshen/react-cool-virtual/commit/f31007e71f0228f3c82ec35ea7de9a60d0a51850) Thanks [@wellyshen](https://github.com/wellyshen)! - fix: app crash due to filtering (from more to less)
## 0.5.0
### Patch Changes
- [#231](https://github.com/wellyshen/react-cool-virtual/pull/231) [`b705ab3`](https://github.com/wellyshen/react-cool-virtual/commit/b705ab30a11cecebe9ed7bd8f2579d12f6fd9381) Thanks [@nikitapilgrim](https://github.com/nikitapilgrim)! - fix: `stickyIndices` can be dynamic
## 0.4.6

@@ -4,0 +16,0 @@

2

dist/index.cjs.development.js

@@ -240,3 +240,3 @@ 'use strict';

if (hasDynamicSizeRef.current) {
while (vStart < msData.length && msData[vStart].start + msData[vStart].size < scrollOffset) {
while (vStart < msData.length - 1 && msData[vStart].start + msData[vStart].size < scrollOffset) {
vStart += 1;

@@ -243,0 +243,0 @@ }

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r,e,n=require("react");(e=r||(r={})).auto="auto",e.start="start",e.center="center",e.end="end";var t=function(r,e,n,t){for(;r<=e;){var u=(r+e)/2|0,c=t(u);if(n<c)e=u-1;else{if(!(n>c))return u;r=u+1}}return 0<r?r-1:0},u=function(r){return"number"==typeof r&&!Number.isNaN(r)},c=function(){return"performance"in window?performance.now():Date.now()},i=function(r){var e=n.useRef(r);return e.current=r,e},o="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;exports.default=function(e){var a=e.itemCount,s=e.ssrItemCount,l=e.itemSize,f=void 0===l?50:l;l=e.horizontal;var d=e.resetScroll,v=e.overscanCount,h=void 0===v?1:v;v=e.useIsScrolling;var m=e.stickyIndices,g=e.scrollDuration;g=void 0===g?function(r){return Math.min(Math.max(.075*r,100),500)}:g;var R=e.scrollEasingFunction;R=void 0===R?function(r){return-(Math.cos(Math.PI*r)-1)/2}:R;var S=e.loadMoreCount,b=void 0===S?15:S;S=e.isItemLoaded;var p=e.loadMore,x=e.onScroll,w=e.onResize,M=n.useState((function(){return function(r,e){if(!e)return[];var n=u(e)?[0,e-1]:e;e=n[1];var t=[];for(n=n[0];n<=e;n+=1)t[n]={index:n,start:0,width:0,size:u(r)?r:r(n,0),measureRef:function(){return null}};return t}(f,s)}));e=M[0];var z=M[1],C=n.useRef(!1),I=n.useRef(!0),k=n.useRef(!1),y=n.useRef(!1),A=n.useRef(new Map),F=n.useRef(0),O=n.useRef(-1),E=n.useRef(-1),L=n.useRef(null),T=n.useRef(null),q=n.useRef({width:0,height:0}),j=n.useRef([]),N=n.useRef(!0),D=n.useRef(),P=i(m),_=i(g),B=i(R),G=n.useRef(S),H=i(p),J=i(f),K=i(v),Q=i(x),U=i(w),V=l?"width":"height",W=l?"marginLeft":"marginTop",X=l?"scrollLeft":"scrollTop",Y=n.useCallback((function(r){var e=J.current;return u(e)?e:e(r,q.current.width)}),[J]),Z=n.useCallback((function(r,e){var n,t,u=null!=(n=null==(t=j.current[r-1])?void 0:t.end)?n:0;return{idx:r,start:u,end:u+e,size:e}}),[]),$=n.useCallback((function(r){void 0===r&&(r=!0),j.current.length=a;for(var e=0;e<a;e+=1)j.current[e]=Z(e,r&&j.current[e]?j.current[e].size:Y(e))}),[Y,Z,a]),rr=n.useCallback((function(r){var e=j.current,n=0;if(y.current)for(;n<e.length&&e[n].start+e[n].size<r;)n+=1;else n=t(0,e.length-1,r,(function(r){return e[r].start}));for(var u=n,c=e[u].start;u<e.length&&c<r+q.current[V];)c+=e[u].size,u+=1;r=Math.max(n-h,0),c=Math.min(u+h,e.length)-1;var i=e[r].start;return{oStart:r,oStop:c,vStart:n,vStop:u-1,innerMargin:i,innerSize:Math[c<e.length-1?"max":"min"](e[c].end+e[c].size,e[e.length-1].end)-i}}),[h,V]),er=n.useCallback((function(r,e){void 0===e&&(e=!0),L.current&&(I.current=e,L.current[X]=r)}),[X]),nr=n.useCallback((function(r,e){var n=(r=u(r)?{offset:r}:r).offset;if(r=r.smooth,u(n))if(N.current=!1,r){var t=F.current,i=c();D.current=requestAnimationFrame((function r(){var o=_.current;o=u(o)?o:o(Math.abs(n-t)),o=Math.min((c()-i)/o,1);var a=B.current(o);er(a*(n-t)+t),1>o?D.current=requestAnimationFrame(r):e&&e()}))}else er(n),e&&e()}),[_,B,er]),tr=n.useCallback((function(e,n){var t=u(e)?{index:e}:e,c=t.index,i=t.align;if(i=void 0===i?r.auto:i,t=t.smooth,u(c)){k.current=!0,y.current&&$();var o=j.current,a=o[Math.max(0,Math.min(c,o.length-1))];if(a){c=a.start;var s=a.end;a=a.size,o=o[o.length-1].end;var l=q.current[V],f=F.current;o<=l?n&&n():(i===r.start||i===r.auto&&f+l>s&&f>c?f=o-c<=l?o-l:c:i===r.end||i===r.auto&&f+l<s&&f<c?f=c+a<=l?0:c-l+a:i===r.center&&c+a/2>l/2&&(f=o-(i=c-l/2+a/2)<=l?o-l:i),y.current&&1>=Math.abs(f-F.current)?n&&n():nr({offset:f,smooth:t},(function(){y.current?setTimeout((function(){return tr(e,n)})):n&&n()})))}}}),[$,nr,V]),ur=(l=function(r,e){var t=n.useRef(),u=i(r),o=n.useCallback((function(){t.current&&(cancelAnimationFrame(t.current),t.current=void 0)}),[]),a=n.useCallback((function(r){c()-r>=e?u.current():t.current=requestAnimationFrame((function(){return a(r)}))}),[u,e]);return[n.useCallback((function(){o(),a(c())}),[o,a]),o]}((function(){return ir(F.current)}),150))[0],cr=l[1],ir=n.useCallback((function(r,e,n){if(T.current)if(!H.current||C.current||G.current&&G.current(0)||H.current({startIndex:0,stopIndex:b-1,loadIndex:0,scrollOffset:r,userScroll:!1}),a){var u=rr(r),c=u.oStart,i=u.oStop,o=u.vStart,s=u.vStop,l=u.innerMargin,f=u.innerSize,d=[],v=Array.isArray(P.current)?P.current:[];u=function(t){var u=j.current,c=u[t],i=c.start,o=c.size;d.push({index:t,start:i-l,size:o,width:q.current.width,isScrolling:n||void 0,isSticky:v.includes(t)||void 0,measureRef:function(c){c&&new ResizeObserver((function(c,a){var s,l,f,d=(c=c[0].target).getBoundingClientRect()[V];if(d){var v=null!=(s=null==(l=u[t-1])?void 0:l.end)?s:0;d===o&&i===v||(t<O.current&&i<r&&er(r+d-o,!1),j.current[t]=Z(t,d),k.current||ir(r,e,n),y.current=!0),O.current=t,null==(f=A.current.get(c))||f.disconnect(),A.current.set(c,a)}else a.disconnect(),A.current.delete(c)})).observe(c)}})};for(var h=c;h<=i;h+=1)u(h);v.length&&(c>(u=v[t(0,v.length-1,o,(function(r){return v[r]}))])&&(h=j.current[u].size,d.unshift({index:u,start:0,size:h,width:q.current.width,isScrolling:n||void 0,isSticky:!0,measureRef:function(){return null}}),l-=h,f+=h)),z((function(r){return function(r,e,n){if(r.length!==e.length)return!0;for(var t=function(t){if(Object.keys(r[t]).some((function(u){return!n[u]&&r[t][u]!==e[t][u]})))return{v:!0}},u=0;u<r.length;u+=1){var c=t(u);if("object"==typeof c)return c.v}return!1}(r,d,{measureRef:!0})?(T.current.style[W]=l+"px",T.current.style[V]=f+"px",d):r})),e&&(Q.current&&Q.current({overscanStartIndex:c,overscanStopIndex:i,visibleStartIndex:o,visibleStopIndex:s,scrollOffset:r,scrollForward:r>F.current,userScroll:N.current}),i=(c=Math.floor((s+1)/b))*b,!H.current||s===E.current||G.current&&G.current(c)||H.current({startIndex:i,stopIndex:i+b-1,loadIndex:c,scrollOffset:r,userScroll:N.current}),n&&ur(),E.current=s)}else z([])}),[P,rr,Z,a,b,H,W,Q,ur,er,V]);return function(r,e,n){var t=i(e);o((function(){if(null==r||!r.current)return function(){return null};var e=new ResizeObserver((function(r){r=r[0].contentRect,t.current({width:r.width,height:r.height})}));return e.observe(r.current),function(){return e.disconnect()}}),[t,r].concat(n))}(L,(function(r){var e,n=q.current,t=n.height;t=(n=n.width===r.width)&&t===r.height;var u=j.current.length,c=null==(e=j.current[u-1])?void 0:e.end;if(q.current=r,$(y.current),ir(F.current),d&&a!==u&&er(0,!1),C.current){var i;if(!y.current&&!n)e=null==(i=j.current[j.current.length-1])?void 0:i.end,er(F.current*(e/c||1),!1);!t&&U.current&&U.current(r)}else C.current=!0}),[a,d,ir,$,U,er]),o((function(){var r=L.current;if(!r)return function(){return null};var e=function(r){if((r=r.target[X])!==F.current){var e=K.current;e="function"==typeof e?e(Math.abs(r-F.current)):e,ir(r,I.current,e),N.current=!0,I.current=!0,k.current=!1,F.current=r}};r.addEventListener("scroll",e,{passive:!0});var n=A.current;return function(){cr(),D.current&&(cancelAnimationFrame(D.current),D.current=void 0),r.removeEventListener("scroll",e),n.forEach((function(r){return r.disconnect()})),n.clear()}}),[cr,ir,X,K]),{outerRef:L,innerRef:T,items:e,scrollTo:nr,scrollToItem:tr}};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r,e,n=require("react");(e=r||(r={})).auto="auto",e.start="start",e.center="center",e.end="end";var t=function(r,e,n,t){for(;r<=e;){var u=(r+e)/2|0,c=t(u);if(n<c)e=u-1;else{if(!(n>c))return u;r=u+1}}return 0<r?r-1:0},u=function(r){return"number"==typeof r&&!Number.isNaN(r)},c=function(){return"performance"in window?performance.now():Date.now()},i=function(r){var e=n.useRef(r);return e.current=r,e},o="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;exports.default=function(e){var a=e.itemCount,s=e.ssrItemCount,l=e.itemSize,f=void 0===l?50:l;l=e.horizontal;var d=e.resetScroll,v=e.overscanCount,h=void 0===v?1:v;v=e.useIsScrolling;var m=e.stickyIndices,g=e.scrollDuration;g=void 0===g?function(r){return Math.min(Math.max(.075*r,100),500)}:g;var R=e.scrollEasingFunction;R=void 0===R?function(r){return-(Math.cos(Math.PI*r)-1)/2}:R;var S=e.loadMoreCount,b=void 0===S?15:S;S=e.isItemLoaded;var p=e.loadMore,x=e.onScroll,w=e.onResize,M=n.useState((function(){return function(r,e){if(!e)return[];var n=u(e)?[0,e-1]:e;e=n[1];var t=[];for(n=n[0];n<=e;n+=1)t[n]={index:n,start:0,width:0,size:u(r)?r:r(n,0),measureRef:function(){return null}};return t}(f,s)}));e=M[0];var z=M[1],C=n.useRef(!1),I=n.useRef(!0),k=n.useRef(!1),y=n.useRef(!1),A=n.useRef(new Map),F=n.useRef(0),O=n.useRef(-1),E=n.useRef(-1),L=n.useRef(null),T=n.useRef(null),q=n.useRef({width:0,height:0}),j=n.useRef([]),N=n.useRef(!0),D=n.useRef(),P=i(m),_=i(g),B=i(R),G=n.useRef(S),H=i(p),J=i(f),K=i(v),Q=i(x),U=i(w),V=l?"width":"height",W=l?"marginLeft":"marginTop",X=l?"scrollLeft":"scrollTop",Y=n.useCallback((function(r){var e=J.current;return u(e)?e:e(r,q.current.width)}),[J]),Z=n.useCallback((function(r,e){var n,t,u=null!=(n=null==(t=j.current[r-1])?void 0:t.end)?n:0;return{idx:r,start:u,end:u+e,size:e}}),[]),$=n.useCallback((function(r){void 0===r&&(r=!0),j.current.length=a;for(var e=0;e<a;e+=1)j.current[e]=Z(e,r&&j.current[e]?j.current[e].size:Y(e))}),[Y,Z,a]),rr=n.useCallback((function(r){var e=j.current,n=0;if(y.current)for(;n<e.length-1&&e[n].start+e[n].size<r;)n+=1;else n=t(0,e.length-1,r,(function(r){return e[r].start}));for(var u=n,c=e[u].start;u<e.length&&c<r+q.current[V];)c+=e[u].size,u+=1;r=Math.max(n-h,0),c=Math.min(u+h,e.length)-1;var i=e[r].start;return{oStart:r,oStop:c,vStart:n,vStop:u-1,innerMargin:i,innerSize:Math[c<e.length-1?"max":"min"](e[c].end+e[c].size,e[e.length-1].end)-i}}),[h,V]),er=n.useCallback((function(r,e){void 0===e&&(e=!0),L.current&&(I.current=e,L.current[X]=r)}),[X]),nr=n.useCallback((function(r,e){var n=(r=u(r)?{offset:r}:r).offset;if(r=r.smooth,u(n))if(N.current=!1,r){var t=F.current,i=c();D.current=requestAnimationFrame((function r(){var o=_.current;o=u(o)?o:o(Math.abs(n-t)),o=Math.min((c()-i)/o,1);var a=B.current(o);er(a*(n-t)+t),1>o?D.current=requestAnimationFrame(r):e&&e()}))}else er(n),e&&e()}),[_,B,er]),tr=n.useCallback((function(e,n){var t=u(e)?{index:e}:e,c=t.index,i=t.align;if(i=void 0===i?r.auto:i,t=t.smooth,u(c)){k.current=!0,y.current&&$();var o=j.current,a=o[Math.max(0,Math.min(c,o.length-1))];if(a){c=a.start;var s=a.end;a=a.size,o=o[o.length-1].end;var l=q.current[V],f=F.current;o<=l?n&&n():(i===r.start||i===r.auto&&f+l>s&&f>c?f=o-c<=l?o-l:c:i===r.end||i===r.auto&&f+l<s&&f<c?f=c+a<=l?0:c-l+a:i===r.center&&c+a/2>l/2&&(f=o-(i=c-l/2+a/2)<=l?o-l:i),y.current&&1>=Math.abs(f-F.current)?n&&n():nr({offset:f,smooth:t},(function(){y.current?setTimeout((function(){return tr(e,n)})):n&&n()})))}}}),[$,nr,V]),ur=(l=function(r,e){var t=n.useRef(),u=i(r),o=n.useCallback((function(){t.current&&(cancelAnimationFrame(t.current),t.current=void 0)}),[]),a=n.useCallback((function(r){c()-r>=e?u.current():t.current=requestAnimationFrame((function(){return a(r)}))}),[u,e]);return[n.useCallback((function(){o(),a(c())}),[o,a]),o]}((function(){return ir(F.current)}),150))[0],cr=l[1],ir=n.useCallback((function(r,e,n){if(T.current)if(!H.current||C.current||G.current&&G.current(0)||H.current({startIndex:0,stopIndex:b-1,loadIndex:0,scrollOffset:r,userScroll:!1}),a){var u=rr(r),c=u.oStart,i=u.oStop,o=u.vStart,s=u.vStop,l=u.innerMargin,f=u.innerSize,d=[],v=Array.isArray(P.current)?P.current:[];u=function(t){var u=j.current,c=u[t],i=c.start,o=c.size;d.push({index:t,start:i-l,size:o,width:q.current.width,isScrolling:n||void 0,isSticky:v.includes(t)||void 0,measureRef:function(c){c&&new ResizeObserver((function(c,a){var s,l,f,d=(c=c[0].target).getBoundingClientRect()[V];if(d){var v=null!=(s=null==(l=u[t-1])?void 0:l.end)?s:0;d===o&&i===v||(t<O.current&&i<r&&er(r+d-o,!1),j.current[t]=Z(t,d),k.current||ir(r,e,n),y.current=!0),O.current=t,null==(f=A.current.get(c))||f.disconnect(),A.current.set(c,a)}else a.disconnect(),A.current.delete(c)})).observe(c)}})};for(var h=c;h<=i;h+=1)u(h);v.length&&(c>(u=v[t(0,v.length-1,o,(function(r){return v[r]}))])&&(h=j.current[u].size,d.unshift({index:u,start:0,size:h,width:q.current.width,isScrolling:n||void 0,isSticky:!0,measureRef:function(){return null}}),l-=h,f+=h)),z((function(r){return function(r,e,n){if(r.length!==e.length)return!0;for(var t=function(t){if(Object.keys(r[t]).some((function(u){return!n[u]&&r[t][u]!==e[t][u]})))return{v:!0}},u=0;u<r.length;u+=1){var c=t(u);if("object"==typeof c)return c.v}return!1}(r,d,{measureRef:!0})?(T.current.style[W]=l+"px",T.current.style[V]=f+"px",d):r})),e&&(Q.current&&Q.current({overscanStartIndex:c,overscanStopIndex:i,visibleStartIndex:o,visibleStopIndex:s,scrollOffset:r,scrollForward:r>F.current,userScroll:N.current}),i=(c=Math.floor((s+1)/b))*b,!H.current||s===E.current||G.current&&G.current(c)||H.current({startIndex:i,stopIndex:i+b-1,loadIndex:c,scrollOffset:r,userScroll:N.current}),n&&ur(),E.current=s)}else z([])}),[P,rr,Z,a,b,H,W,Q,ur,er,V]);return function(r,e,n){var t=i(e);o((function(){if(null==r||!r.current)return function(){return null};var e=new ResizeObserver((function(r){r=r[0].contentRect,t.current({width:r.width,height:r.height})}));return e.observe(r.current),function(){return e.disconnect()}}),[t,r].concat(n))}(L,(function(r){var e,n=q.current,t=n.height;t=(n=n.width===r.width)&&t===r.height;var u=j.current.length,c=null==(e=j.current[u-1])?void 0:e.end;if(q.current=r,$(y.current),ir(F.current),d&&a!==u&&er(0,!1),C.current){var i;if(!y.current&&!n)e=null==(i=j.current[j.current.length-1])?void 0:i.end,er(F.current*(e/c||1),!1);!t&&U.current&&U.current(r)}else C.current=!0}),[a,d,ir,$,U,er]),o((function(){var r=L.current;if(!r)return function(){return null};var e=function(r){if((r=r.target[X])!==F.current){var e=K.current;e="function"==typeof e?e(Math.abs(r-F.current)):e,ir(r,I.current,e),N.current=!0,I.current=!0,k.current=!1,F.current=r}};r.addEventListener("scroll",e,{passive:!0});var n=A.current;return function(){cr(),D.current&&(cancelAnimationFrame(D.current),D.current=void 0),r.removeEventListener("scroll",e),n.forEach((function(r){return r.disconnect()})),n.clear()}}),[cr,ir,X,K]),{outerRef:L,innerRef:T,items:e,scrollTo:nr,scrollToItem:tr}};
//# sourceMappingURL=index.cjs.production.min.js.map

@@ -236,3 +236,3 @@ import { useRef, useCallback, useLayoutEffect, useEffect, useState } from 'react';

if (hasDynamicSizeRef.current) {
while (vStart < msData.length && msData[vStart].start + msData[vStart].size < scrollOffset) {
while (vStart < msData.length - 1 && msData[vStart].start + msData[vStart].size < scrollOffset) {
vStart += 1;

@@ -239,0 +239,0 @@ }

@@ -240,3 +240,3 @@ (function (global, factory) {

if (hasDynamicSizeRef.current) {
while (vStart < msData.length && msData[vStart].start + msData[vStart].size < scrollOffset) {
while (vStart < msData.length - 1 && msData[vStart].start + msData[vStart].size < scrollOffset) {
vStart += 1;

@@ -243,0 +243,0 @@ }

@@ -1,2 +0,2 @@

"use strict";!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).ReactCoolVirtual={},r.React)}(this,(function(r,e){var n,t;(t=n||(n={})).auto="auto",t.start="start",t.center="center",t.end="end";var u=function(r,e,n,t){for(;r<=e;){var u=(r+e)/2|0,c=t(u);if(n<c)e=u-1;else{if(!(n>c))return u;r=u+1}}return 0<r?r-1:0},c=function(r){return"number"==typeof r&&!Number.isNaN(r)},i=function(){return"performance"in window?performance.now():Date.now()},o=function(r){var n=e.useRef(r);return n.current=r,n},a="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;r.useVirtual=function(r){var t=r.itemCount,s=r.ssrItemCount,f=r.itemSize,l=void 0===f?50:f;f=r.horizontal;var d=r.resetScroll,v=r.overscanCount,h=void 0===v?1:v;v=r.useIsScrolling;var m=r.stickyIndices,g=r.scrollDuration;g=void 0===g?function(r){return Math.min(Math.max(.075*r,100),500)}:g;var R=r.scrollEasingFunction;R=void 0===R?function(r){return-(Math.cos(Math.PI*r)-1)/2}:R;var p=r.loadMoreCount,b=void 0===p?15:p;p=r.isItemLoaded;var S=r.loadMore,x=r.onScroll,w=r.onResize,M=e.useState((function(){return function(r,e){if(!e)return[];var n=c(e)?[0,e-1]:e;e=n[1];var t=[];for(n=n[0];n<=e;n+=1)t[n]={index:n,start:0,width:0,size:c(r)?r:r(n,0),measureRef:function(){return null}};return t}(l,s)}));r=M[0];var y=M[1],z=e.useRef(!1),C=e.useRef(!0),I=e.useRef(!1),k=e.useRef(!1),A=e.useRef(new Map),F=e.useRef(0),O=e.useRef(-1),T=e.useRef(-1),E=e.useRef(null),L=e.useRef(null),j=e.useRef({width:0,height:0}),q=e.useRef([]),N=e.useRef(!0),D=e.useRef(),P=o(m),V=o(g),_=o(R),B=e.useRef(p),G=o(S),H=o(l),J=o(v),K=o(x),Q=o(w),U=f?"width":"height",W=f?"marginLeft":"marginTop",X=f?"scrollLeft":"scrollTop",Y=e.useCallback((function(r){var e=H.current;return c(e)?e:e(r,j.current.width)}),[H]),Z=e.useCallback((function(r,e){var n,t,u=null!=(n=null==(t=q.current[r-1])?void 0:t.end)?n:0;return{idx:r,start:u,end:u+e,size:e}}),[]),$=e.useCallback((function(r){void 0===r&&(r=!0),q.current.length=t;for(var e=0;e<t;e+=1)q.current[e]=Z(e,r&&q.current[e]?q.current[e].size:Y(e))}),[Y,Z,t]),rr=e.useCallback((function(r){var e=q.current,n=0;if(k.current)for(;n<e.length&&e[n].start+e[n].size<r;)n+=1;else n=u(0,e.length-1,r,(function(r){return e[r].start}));for(var t=n,c=e[t].start;t<e.length&&c<r+j.current[U];)c+=e[t].size,t+=1;r=Math.max(n-h,0),c=Math.min(t+h,e.length)-1;var i=e[r].start;return{oStart:r,oStop:c,vStart:n,vStop:t-1,innerMargin:i,innerSize:Math[c<e.length-1?"max":"min"](e[c].end+e[c].size,e[e.length-1].end)-i}}),[h,U]),er=e.useCallback((function(r,e){void 0===e&&(e=!0),E.current&&(C.current=e,E.current[X]=r)}),[X]),nr=e.useCallback((function(r,e){var n=(r=c(r)?{offset:r}:r).offset;if(r=r.smooth,c(n))if(N.current=!1,r){var t=F.current,u=i();D.current=requestAnimationFrame((function r(){var o=V.current;o=c(o)?o:o(Math.abs(n-t)),o=Math.min((i()-u)/o,1);var a=_.current(o);er(a*(n-t)+t),1>o?D.current=requestAnimationFrame(r):e&&e()}))}else er(n),e&&e()}),[V,_,er]),tr=e.useCallback((function(r,e){var t=c(r)?{index:r}:r,u=t.index,i=t.align;if(i=void 0===i?n.auto:i,t=t.smooth,c(u)){I.current=!0,k.current&&$();var o=q.current,a=o[Math.max(0,Math.min(u,o.length-1))];if(a){u=a.start;var s=a.end;a=a.size,o=o[o.length-1].end;var f=j.current[U],l=F.current;o<=f?e&&e():(i===n.start||i===n.auto&&l+f>s&&l>u?l=o-u<=f?o-f:u:i===n.end||i===n.auto&&l+f<s&&l<u?l=u+a<=f?0:u-f+a:i===n.center&&u+a/2>f/2&&(l=o-(i=u-f/2+a/2)<=f?o-f:i),k.current&&1>=Math.abs(l-F.current)?e&&e():nr({offset:l,smooth:t},(function(){k.current?setTimeout((function(){return tr(r,e)})):e&&e()})))}}}),[$,nr,U]),ur=(f=function(r,n){var t=e.useRef(),u=o(r),c=e.useCallback((function(){t.current&&(cancelAnimationFrame(t.current),t.current=void 0)}),[]),a=e.useCallback((function(r){i()-r>=n?u.current():t.current=requestAnimationFrame((function(){return a(r)}))}),[u,n]);return[e.useCallback((function(){c(),a(i())}),[c,a]),c]}((function(){return ir(F.current)}),150))[0],cr=f[1],ir=e.useCallback((function(r,e,n){if(L.current)if(!G.current||z.current||B.current&&B.current(0)||G.current({startIndex:0,stopIndex:b-1,loadIndex:0,scrollOffset:r,userScroll:!1}),t){var c=rr(r),i=c.oStart,o=c.oStop,a=c.vStart,s=c.vStop,f=c.innerMargin,l=c.innerSize,d=[],v=Array.isArray(P.current)?P.current:[];c=function(t){var u=q.current,c=u[t],i=c.start,o=c.size;d.push({index:t,start:i-f,size:o,width:j.current.width,isScrolling:n||void 0,isSticky:v.includes(t)||void 0,measureRef:function(c){c&&new ResizeObserver((function(c,a){var s,f,l,d=(c=c[0].target).getBoundingClientRect()[U];if(d){var v=null!=(s=null==(f=u[t-1])?void 0:f.end)?s:0;d===o&&i===v||(t<O.current&&i<r&&er(r+d-o,!1),q.current[t]=Z(t,d),I.current||ir(r,e,n),k.current=!0),O.current=t,null==(l=A.current.get(c))||l.disconnect(),A.current.set(c,a)}else a.disconnect(),A.current.delete(c)})).observe(c)}})};for(var h=i;h<=o;h+=1)c(h);v.length&&(i>(c=v[u(0,v.length-1,a,(function(r){return v[r]}))])&&(h=q.current[c].size,d.unshift({index:c,start:0,size:h,width:j.current.width,isScrolling:n||void 0,isSticky:!0,measureRef:function(){return null}}),f-=h,l+=h)),y((function(r){return function(r,e,n){if(r.length!==e.length)return!0;for(var t=function(t){if(Object.keys(r[t]).some((function(u){return!n[u]&&r[t][u]!==e[t][u]})))return{v:!0}},u=0;u<r.length;u+=1){var c=t(u);if("object"==typeof c)return c.v}return!1}(r,d,{measureRef:!0})?(L.current.style[W]=f+"px",L.current.style[U]=l+"px",d):r})),e&&(K.current&&K.current({overscanStartIndex:i,overscanStopIndex:o,visibleStartIndex:a,visibleStopIndex:s,scrollOffset:r,scrollForward:r>F.current,userScroll:N.current}),o=(i=Math.floor((s+1)/b))*b,!G.current||s===T.current||B.current&&B.current(i)||G.current({startIndex:o,stopIndex:o+b-1,loadIndex:i,scrollOffset:r,userScroll:N.current}),n&&ur(),T.current=s)}else y([])}),[P,rr,Z,t,b,G,W,K,ur,er,U]);return function(r,e,n){var t=o(e);a((function(){if(null==r||!r.current)return function(){return null};var e=new ResizeObserver((function(r){r=r[0].contentRect,t.current({width:r.width,height:r.height})}));return e.observe(r.current),function(){return e.disconnect()}}),[t,r].concat(n))}(E,(function(r){var e,n=j.current,u=n.height;u=(n=n.width===r.width)&&u===r.height;var c=q.current.length,i=null==(e=q.current[c-1])?void 0:e.end;if(j.current=r,$(k.current),ir(F.current),d&&t!==c&&er(0,!1),z.current){var o;if(!k.current&&!n)e=null==(o=q.current[q.current.length-1])?void 0:o.end,er(F.current*(e/i||1),!1);!u&&Q.current&&Q.current(r)}else z.current=!0}),[t,d,ir,$,Q,er]),a((function(){var r=E.current;if(!r)return function(){return null};var e=function(r){if((r=r.target[X])!==F.current){var e=J.current;e="function"==typeof e?e(Math.abs(r-F.current)):e,ir(r,C.current,e),N.current=!0,C.current=!0,I.current=!1,F.current=r}};r.addEventListener("scroll",e,{passive:!0});var n=A.current;return function(){cr(),D.current&&(cancelAnimationFrame(D.current),D.current=void 0),r.removeEventListener("scroll",e),n.forEach((function(r){return r.disconnect()})),n.clear()}}),[cr,ir,X,J]),{outerRef:E,innerRef:L,items:r,scrollTo:nr,scrollToItem:tr}},Object.defineProperty(r,"__esModule",{value:!0})}));
"use strict";!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).ReactCoolVirtual={},r.React)}(this,(function(r,e){var n,t;(t=n||(n={})).auto="auto",t.start="start",t.center="center",t.end="end";var u=function(r,e,n,t){for(;r<=e;){var u=(r+e)/2|0,c=t(u);if(n<c)e=u-1;else{if(!(n>c))return u;r=u+1}}return 0<r?r-1:0},c=function(r){return"number"==typeof r&&!Number.isNaN(r)},i=function(){return"performance"in window?performance.now():Date.now()},o=function(r){var n=e.useRef(r);return n.current=r,n},a="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;r.useVirtual=function(r){var t=r.itemCount,s=r.ssrItemCount,f=r.itemSize,l=void 0===f?50:f;f=r.horizontal;var d=r.resetScroll,v=r.overscanCount,h=void 0===v?1:v;v=r.useIsScrolling;var m=r.stickyIndices,g=r.scrollDuration;g=void 0===g?function(r){return Math.min(Math.max(.075*r,100),500)}:g;var R=r.scrollEasingFunction;R=void 0===R?function(r){return-(Math.cos(Math.PI*r)-1)/2}:R;var p=r.loadMoreCount,b=void 0===p?15:p;p=r.isItemLoaded;var S=r.loadMore,x=r.onScroll,w=r.onResize,M=e.useState((function(){return function(r,e){if(!e)return[];var n=c(e)?[0,e-1]:e;e=n[1];var t=[];for(n=n[0];n<=e;n+=1)t[n]={index:n,start:0,width:0,size:c(r)?r:r(n,0),measureRef:function(){return null}};return t}(l,s)}));r=M[0];var y=M[1],z=e.useRef(!1),C=e.useRef(!0),I=e.useRef(!1),k=e.useRef(!1),A=e.useRef(new Map),F=e.useRef(0),O=e.useRef(-1),T=e.useRef(-1),E=e.useRef(null),L=e.useRef(null),j=e.useRef({width:0,height:0}),q=e.useRef([]),N=e.useRef(!0),D=e.useRef(),P=o(m),V=o(g),_=o(R),B=e.useRef(p),G=o(S),H=o(l),J=o(v),K=o(x),Q=o(w),U=f?"width":"height",W=f?"marginLeft":"marginTop",X=f?"scrollLeft":"scrollTop",Y=e.useCallback((function(r){var e=H.current;return c(e)?e:e(r,j.current.width)}),[H]),Z=e.useCallback((function(r,e){var n,t,u=null!=(n=null==(t=q.current[r-1])?void 0:t.end)?n:0;return{idx:r,start:u,end:u+e,size:e}}),[]),$=e.useCallback((function(r){void 0===r&&(r=!0),q.current.length=t;for(var e=0;e<t;e+=1)q.current[e]=Z(e,r&&q.current[e]?q.current[e].size:Y(e))}),[Y,Z,t]),rr=e.useCallback((function(r){var e=q.current,n=0;if(k.current)for(;n<e.length-1&&e[n].start+e[n].size<r;)n+=1;else n=u(0,e.length-1,r,(function(r){return e[r].start}));for(var t=n,c=e[t].start;t<e.length&&c<r+j.current[U];)c+=e[t].size,t+=1;r=Math.max(n-h,0),c=Math.min(t+h,e.length)-1;var i=e[r].start;return{oStart:r,oStop:c,vStart:n,vStop:t-1,innerMargin:i,innerSize:Math[c<e.length-1?"max":"min"](e[c].end+e[c].size,e[e.length-1].end)-i}}),[h,U]),er=e.useCallback((function(r,e){void 0===e&&(e=!0),E.current&&(C.current=e,E.current[X]=r)}),[X]),nr=e.useCallback((function(r,e){var n=(r=c(r)?{offset:r}:r).offset;if(r=r.smooth,c(n))if(N.current=!1,r){var t=F.current,u=i();D.current=requestAnimationFrame((function r(){var o=V.current;o=c(o)?o:o(Math.abs(n-t)),o=Math.min((i()-u)/o,1);var a=_.current(o);er(a*(n-t)+t),1>o?D.current=requestAnimationFrame(r):e&&e()}))}else er(n),e&&e()}),[V,_,er]),tr=e.useCallback((function(r,e){var t=c(r)?{index:r}:r,u=t.index,i=t.align;if(i=void 0===i?n.auto:i,t=t.smooth,c(u)){I.current=!0,k.current&&$();var o=q.current,a=o[Math.max(0,Math.min(u,o.length-1))];if(a){u=a.start;var s=a.end;a=a.size,o=o[o.length-1].end;var f=j.current[U],l=F.current;o<=f?e&&e():(i===n.start||i===n.auto&&l+f>s&&l>u?l=o-u<=f?o-f:u:i===n.end||i===n.auto&&l+f<s&&l<u?l=u+a<=f?0:u-f+a:i===n.center&&u+a/2>f/2&&(l=o-(i=u-f/2+a/2)<=f?o-f:i),k.current&&1>=Math.abs(l-F.current)?e&&e():nr({offset:l,smooth:t},(function(){k.current?setTimeout((function(){return tr(r,e)})):e&&e()})))}}}),[$,nr,U]),ur=(f=function(r,n){var t=e.useRef(),u=o(r),c=e.useCallback((function(){t.current&&(cancelAnimationFrame(t.current),t.current=void 0)}),[]),a=e.useCallback((function(r){i()-r>=n?u.current():t.current=requestAnimationFrame((function(){return a(r)}))}),[u,n]);return[e.useCallback((function(){c(),a(i())}),[c,a]),c]}((function(){return ir(F.current)}),150))[0],cr=f[1],ir=e.useCallback((function(r,e,n){if(L.current)if(!G.current||z.current||B.current&&B.current(0)||G.current({startIndex:0,stopIndex:b-1,loadIndex:0,scrollOffset:r,userScroll:!1}),t){var c=rr(r),i=c.oStart,o=c.oStop,a=c.vStart,s=c.vStop,f=c.innerMargin,l=c.innerSize,d=[],v=Array.isArray(P.current)?P.current:[];c=function(t){var u=q.current,c=u[t],i=c.start,o=c.size;d.push({index:t,start:i-f,size:o,width:j.current.width,isScrolling:n||void 0,isSticky:v.includes(t)||void 0,measureRef:function(c){c&&new ResizeObserver((function(c,a){var s,f,l,d=(c=c[0].target).getBoundingClientRect()[U];if(d){var v=null!=(s=null==(f=u[t-1])?void 0:f.end)?s:0;d===o&&i===v||(t<O.current&&i<r&&er(r+d-o,!1),q.current[t]=Z(t,d),I.current||ir(r,e,n),k.current=!0),O.current=t,null==(l=A.current.get(c))||l.disconnect(),A.current.set(c,a)}else a.disconnect(),A.current.delete(c)})).observe(c)}})};for(var h=i;h<=o;h+=1)c(h);v.length&&(i>(c=v[u(0,v.length-1,a,(function(r){return v[r]}))])&&(h=q.current[c].size,d.unshift({index:c,start:0,size:h,width:j.current.width,isScrolling:n||void 0,isSticky:!0,measureRef:function(){return null}}),f-=h,l+=h)),y((function(r){return function(r,e,n){if(r.length!==e.length)return!0;for(var t=function(t){if(Object.keys(r[t]).some((function(u){return!n[u]&&r[t][u]!==e[t][u]})))return{v:!0}},u=0;u<r.length;u+=1){var c=t(u);if("object"==typeof c)return c.v}return!1}(r,d,{measureRef:!0})?(L.current.style[W]=f+"px",L.current.style[U]=l+"px",d):r})),e&&(K.current&&K.current({overscanStartIndex:i,overscanStopIndex:o,visibleStartIndex:a,visibleStopIndex:s,scrollOffset:r,scrollForward:r>F.current,userScroll:N.current}),o=(i=Math.floor((s+1)/b))*b,!G.current||s===T.current||B.current&&B.current(i)||G.current({startIndex:o,stopIndex:o+b-1,loadIndex:i,scrollOffset:r,userScroll:N.current}),n&&ur(),T.current=s)}else y([])}),[P,rr,Z,t,b,G,W,K,ur,er,U]);return function(r,e,n){var t=o(e);a((function(){if(null==r||!r.current)return function(){return null};var e=new ResizeObserver((function(r){r=r[0].contentRect,t.current({width:r.width,height:r.height})}));return e.observe(r.current),function(){return e.disconnect()}}),[t,r].concat(n))}(E,(function(r){var e,n=j.current,u=n.height;u=(n=n.width===r.width)&&u===r.height;var c=q.current.length,i=null==(e=q.current[c-1])?void 0:e.end;if(j.current=r,$(k.current),ir(F.current),d&&t!==c&&er(0,!1),z.current){var o;if(!k.current&&!n)e=null==(o=q.current[q.current.length-1])?void 0:o.end,er(F.current*(e/i||1),!1);!u&&Q.current&&Q.current(r)}else z.current=!0}),[t,d,ir,$,Q,er]),a((function(){var r=E.current;if(!r)return function(){return null};var e=function(r){if((r=r.target[X])!==F.current){var e=J.current;e="function"==typeof e?e(Math.abs(r-F.current)):e,ir(r,C.current,e),N.current=!0,C.current=!0,I.current=!1,F.current=r}};r.addEventListener("scroll",e,{passive:!0});var n=A.current;return function(){cr(),D.current&&(cancelAnimationFrame(D.current),D.current=void 0),r.removeEventListener("scroll",e),n.forEach((function(r){return r.disconnect()})),n.clear()}}),[cr,ir,X,J]),{outerRef:E,innerRef:L,items:r,scrollTo:nr,scrollToItem:tr}},Object.defineProperty(r,"__esModule",{value:!0})}));
//# sourceMappingURL=index.umd.production.min.js.map
{
"name": "react-cool-virtual",
"version": "0.5.0",
"version": "0.5.1",
"description": "A tiny React hook for rendering large datasets like a breeze.",

@@ -94,3 +94,3 @@ "license": "MIT",

"@ampproject/rollup-plugin-closure-compiler": "^0.27.0",
"@babel/core": "^7.15.4",
"@babel/core": "^7.15.5",
"@babel/plugin-transform-runtime": "^7.15.0",

@@ -111,3 +111,3 @@ "@babel/preset-env": "^7.15.4",

"@types/jest": "^27.0.1",
"@types/react": "^17.0.19",
"@types/react": "^17.0.20",
"bundlesize2": "^0.0.30",

@@ -114,0 +114,0 @@ "cpy-cli": "^3.1.1",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc