react-virtual
Advanced tools
Comparing version 2.1.2 to 2.1.3
@@ -334,4 +334,6 @@ (function (global, factory) { | ||
align = 'end'; | ||
} else if (measurement.start <= scrollOffset) { | ||
align = 'start'; | ||
} else { | ||
align = 'start'; | ||
return; | ||
} | ||
@@ -342,3 +344,3 @@ } | ||
return offset; | ||
}, [measurements, scrollOffsetPlusOuterSize]); | ||
}, [measurements, scrollOffset, scrollOffsetPlusOuterSize]); | ||
var scrollToIndex = React.useCallback(function (index, options) { | ||
@@ -345,0 +347,0 @@ var offset = getIndexOffset(index, options); |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e=e||self).ReactVirtual={},e.React)}(this,(function(e,t){"use strict";function n(){return(n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}t=t&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t;var r,o=["bottom","height","left","right","top","width"],u=new Map,a=function e(){var t=[];u.forEach((function(e,n){var r,u,a=n.getBoundingClientRect();r=a,u=e.rect,void 0===r&&(r={}),void 0===u&&(u={}),o.some((function(e){return r[e]!==u[e]}))&&(e.rect=a,t.push(e))})),t.forEach((function(e){e.callbacks.forEach((function(t){return t(e.rect)}))})),r=window.requestAnimationFrame(e)};var i="undefined"!=typeof window?t.useLayoutEffect:t.useEffect;function c(e,n,o){void 0===n&&(n=!0);var c=t.useState()[1],s=t.useState(null),f=s[0],l=s[1],d=t.useRef(!1),v=t.useRef(null);v.current=o;var p=e.current;return i((function(){var e,t,n;return p||requestAnimationFrame((function(){c({})})),p&&(t=p,n=function(e){v.current&&v.current(e),l(e)},e={observe:function(){var e=0===u.size;u.has(t)?u.get(t).callbacks.push(n):u.set(t,{rect:void 0,hasRectChanged:!1,callbacks:[n]}),e&&a()},unobserve:function(){var e=u.get(t);if(e){var o=e.callbacks.indexOf(n);o>=0&&e.callbacks.splice(o,1),e.callbacks.length||u.delete(t),u.size||cancelAnimationFrame(r)}}}),p&&!d.current&&(d.current=!0,l(p.getBoundingClientRect())),e&&e.observe(),function(){e&&e.unobserve()}}),[p,n,o]),f}e.useVirtual=function(e){var r,o,u=e.size,a=void 0===u?0:u,s=e.estimateSize,f=e.overscan,l=void 0===f?0:f,d=e.parentRef,v=e.horizontal,p=e.scrollToFn,h=v?"width":"height",m=v?"scrollLeft":"scrollTop",b=t.useCallback((function(e){d.current[m]=e}),[d,m]);p=p||b;var g,z,O,R=(c(d)||((r={})[h]=0,r))[h],S=t.useState(0),x=S[0],y=S[1];g=d,z=function(e){var t=e[m];y(t)},(O=t.useRef()).current=z,t.useEffect((function(){var e=g.current,t=function(e){O.current({scrollLeft:e.target.scrollLeft,scrollTop:e.target.scrollTop})};if(e)return e.addEventListener("scroll",t,{capture:!1,passive:!0}),function(){e.removeEventListener("scroll",t)}}),[g]);var k=x+R,M=t.useState({}),w=M[0],C=M[1],E=t.useRef();i((function(){E.current&&(s||a)&&C({}),E.current=!0}),[s,a]);var L=t.useMemo((function(){for(var e=[],t=0;t<a;t++){var n,r=(null==(n=e[t-1])?void 0:n.end)||0,o=w[t]||s(t),u=r+o;e[t]={index:t,start:r,size:o,end:u}}return e}),[s,w,a]),T=(null==(o=L[a-1])?void 0:o.end)||0,j=t.useMemo((function(){return L.find((function(e){return e.end>=x}))}),[L,x]),P=t.useMemo((function(){return[].concat(L).reverse().find((function(e){return e.start<=k}))}),[L,k]),F=j?j.index:0,q=P?P.index:0;F=Math.max(F-1-l,0),q=Math.min(q+1+l,a-1);var A=t.useMemo((function(){for(var e=[],t=function(t){var r=n(n({},L[t]),{},{measureRef:function(e){if(e){var o=e.getBoundingClientRect()[h];o!==r.size&&C((function(e){var r;return n(n({},e),{},((r={})[t]=o,r))}))}}});e.push(r)},r=F;r<=q;r++)t(r);return e}),[F,q,L,h]),B=t.useRef();B.current={outerSize:R,scrollOffset:x,scrollOffsetPlusOuterSize:k,totalSize:T};var I=t.useCallback((function(e,t){var n=(void 0===t?{}:t).align,r=void 0===n?"start":n,o=B.current,u=o.outerSize,a=o.scrollOffset,i=o.scrollOffsetPlusOuterSize,c=o.totalSize;e=Math.max(0,Math.min(e,c-u)),"auto"===r&&(r=e<=a?"start":e>=i?"end":"start"),"start"===r?p(e):"end"===r?p(e-u):"center"===r&&p(e-u/2)}),[p]),V=t.useCallback((function(e,t){var n=(void 0===t?{}:t).align,r=void 0===n?"start":n,o=L[e];if(o)return"auto"===r&&(r=o.end>=k?"end":"start"),"center"===r?o.start+o.size/2:"end"===r?o.end:o.start}),[L,k]),_=t.useCallback((function(e,t){var n=V(e,t);void 0!==n&&I(n,t)}),[V,I]);return{virtualItems:A,totalSize:T,getIndexOffset:V,scrollToOffset:I,scrollToIndex:_}},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e=e||self).ReactVirtual={},e.React)}(this,(function(e,t){"use strict";function n(){return(n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}t=t&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t;var r,o=["bottom","height","left","right","top","width"],u=new Map,a=function e(){var t=[];u.forEach((function(e,n){var r,u,a=n.getBoundingClientRect();r=a,u=e.rect,void 0===r&&(r={}),void 0===u&&(u={}),o.some((function(e){return r[e]!==u[e]}))&&(e.rect=a,t.push(e))})),t.forEach((function(e){e.callbacks.forEach((function(t){return t(e.rect)}))})),r=window.requestAnimationFrame(e)};var i="undefined"!=typeof window?t.useLayoutEffect:t.useEffect;function c(e,n,o){void 0===n&&(n=!0);var c=t.useState()[1],s=t.useState(null),f=s[0],l=s[1],d=t.useRef(!1),v=t.useRef(null);v.current=o;var p=e.current;return i((function(){var e,t,n;return p||requestAnimationFrame((function(){c({})})),p&&(t=p,n=function(e){v.current&&v.current(e),l(e)},e={observe:function(){var e=0===u.size;u.has(t)?u.get(t).callbacks.push(n):u.set(t,{rect:void 0,hasRectChanged:!1,callbacks:[n]}),e&&a()},unobserve:function(){var e=u.get(t);if(e){var o=e.callbacks.indexOf(n);o>=0&&e.callbacks.splice(o,1),e.callbacks.length||u.delete(t),u.size||cancelAnimationFrame(r)}}}),p&&!d.current&&(d.current=!0,l(p.getBoundingClientRect())),e&&e.observe(),function(){e&&e.unobserve()}}),[p,n,o]),f}e.useVirtual=function(e){var r,o,u=e.size,a=void 0===u?0:u,s=e.estimateSize,f=e.overscan,l=void 0===f?0:f,d=e.parentRef,v=e.horizontal,p=e.scrollToFn,h=v?"width":"height",m=v?"scrollLeft":"scrollTop",b=t.useCallback((function(e){d.current[m]=e}),[d,m]);p=p||b;var g,z,O,R=(c(d)||((r={})[h]=0,r))[h],S=t.useState(0),x=S[0],y=S[1];g=d,z=function(e){var t=e[m];y(t)},(O=t.useRef()).current=z,t.useEffect((function(){var e=g.current,t=function(e){O.current({scrollLeft:e.target.scrollLeft,scrollTop:e.target.scrollTop})};if(e)return e.addEventListener("scroll",t,{capture:!1,passive:!0}),function(){e.removeEventListener("scroll",t)}}),[g]);var k=x+R,M=t.useState({}),w=M[0],C=M[1],E=t.useRef();i((function(){E.current&&(s||a)&&C({}),E.current=!0}),[s,a]);var L=t.useMemo((function(){for(var e=[],t=0;t<a;t++){var n,r=(null==(n=e[t-1])?void 0:n.end)||0,o=w[t]||s(t),u=r+o;e[t]={index:t,start:r,size:o,end:u}}return e}),[s,w,a]),T=(null==(o=L[a-1])?void 0:o.end)||0,j=t.useMemo((function(){return L.find((function(e){return e.end>=x}))}),[L,x]),P=t.useMemo((function(){return[].concat(L).reverse().find((function(e){return e.start<=k}))}),[L,k]),F=j?j.index:0,q=P?P.index:0;F=Math.max(F-1-l,0),q=Math.min(q+1+l,a-1);var A=t.useMemo((function(){for(var e=[],t=function(t){var r=n(n({},L[t]),{},{measureRef:function(e){if(e){var o=e.getBoundingClientRect()[h];o!==r.size&&C((function(e){var r;return n(n({},e),{},((r={})[t]=o,r))}))}}});e.push(r)},r=F;r<=q;r++)t(r);return e}),[F,q,L,h]),B=t.useRef();B.current={outerSize:R,scrollOffset:x,scrollOffsetPlusOuterSize:k,totalSize:T};var I=t.useCallback((function(e,t){var n=(void 0===t?{}:t).align,r=void 0===n?"start":n,o=B.current,u=o.outerSize,a=o.scrollOffset,i=o.scrollOffsetPlusOuterSize,c=o.totalSize;e=Math.max(0,Math.min(e,c-u)),"auto"===r&&(r=e<=a?"start":e>=i?"end":"start"),"start"===r?p(e):"end"===r?p(e-u):"center"===r&&p(e-u/2)}),[p]),V=t.useCallback((function(e,t){var n=(void 0===t?{}:t).align,r=void 0===n?"start":n,o=L[e];if(o){if("auto"===r)if(o.end>=k)r="end";else{if(!(o.start<=x))return;r="start"}return"center"===r?o.start+o.size/2:"end"===r?o.end:o.start}}),[L,x,k]),_=t.useCallback((function(e,t){var n=V(e,t);void 0!==n&&I(n,t)}),[V,I]);return{virtualItems:A,totalSize:T,getIndexOffset:V,scrollToOffset:I,scrollToIndex:_}},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=react-virtual.production.min.js.map |
{ | ||
"name": "react-virtual", | ||
"version": "2.1.2", | ||
"version": "2.1.3", | ||
"description": "Hooks for virtualizing scrollable elements in React", | ||
@@ -5,0 +5,0 @@ "author": "tannerlinsley", |
@@ -344,3 +344,3 @@  | ||
- `auto` brings the offset into the visible scroll area either at the start or end, depending on which is closer. If the offset is already in view, it is placed at the `top/left` of the visible scroll area. | ||
- `getIndexOffset: Function(index: Integer, { align: String }) => void 0` | ||
- `getIndexOffset: Function(index: Integer, { align: String }) => Integer | undefined` | ||
- Call this function to return the offset of the item located at the passed index. | ||
@@ -353,2 +353,3 @@ - `align: 'start' | 'center' | 'end' | 'auto'` | ||
- `auto` return's the item's start or end offset, depending on which is closer. If the item is already in view, the `top/left` offset will be returned | ||
- If `align: 'auto'` is passed and no scrolling is necessary to bring the item into view, `undefined` is returned. | ||
@@ -355,0 +356,0 @@ # Contributors ✨ |
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
Sorry, the diff of this file is not supported yet
128477
936
375