@tanstack/virtual-core
Advanced tools
Comparing version 3.0.0-beta.34 to 3.0.0-beta.35
@@ -45,7 +45,17 @@ /** | ||
var observer = new ResizeObserver(function (entries) { | ||
var _entries$, _entries$2; | ||
cb({ | ||
width: (_entries$ = entries[0]) == null ? void 0 : _entries$.contentRect.width, | ||
height: (_entries$2 = entries[0]) == null ? void 0 : _entries$2.contentRect.height | ||
}); | ||
var entry = entries[0]; | ||
if (entry) { | ||
var _entry$contentRect = entry.contentRect, | ||
width = _entry$contentRect.width, | ||
height = _entry$contentRect.height; | ||
cb({ | ||
width: Math.round(width), | ||
height: Math.round(height) | ||
}); | ||
} else { | ||
cb({ | ||
width: 0, | ||
height: 0 | ||
}); | ||
} | ||
}); | ||
@@ -461,3 +471,3 @@ if (!instance.scrollElement) { | ||
var toOffset = getOffsetForIndexAndAlignment(measurement); | ||
if (Math.round(toOffset) === Math.round(offset)) { | ||
if (toOffset === offset) { | ||
return; | ||
@@ -464,0 +474,0 @@ } |
@@ -48,7 +48,17 @@ /** | ||
var observer = new ResizeObserver(function (entries) { | ||
var _entries$, _entries$2; | ||
cb({ | ||
width: (_entries$ = entries[0]) == null ? void 0 : _entries$.contentRect.width, | ||
height: (_entries$2 = entries[0]) == null ? void 0 : _entries$2.contentRect.height | ||
}); | ||
var entry = entries[0]; | ||
if (entry) { | ||
var _entry$contentRect = entry.contentRect, | ||
width = _entry$contentRect.width, | ||
height = _entry$contentRect.height; | ||
cb({ | ||
width: Math.round(width), | ||
height: Math.round(height) | ||
}); | ||
} else { | ||
cb({ | ||
width: 0, | ||
height: 0 | ||
}); | ||
} | ||
}); | ||
@@ -464,3 +474,3 @@ if (!instance.scrollElement) { | ||
var toOffset = getOffsetForIndexAndAlignment(measurement); | ||
if (Math.round(toOffset) === Math.round(offset)) { | ||
if (toOffset === offset) { | ||
return; | ||
@@ -467,0 +477,0 @@ } |
@@ -97,7 +97,17 @@ /** | ||
var observer = new ResizeObserver(function (entries) { | ||
var _entries$, _entries$2; | ||
cb({ | ||
width: (_entries$ = entries[0]) == null ? void 0 : _entries$.contentRect.width, | ||
height: (_entries$2 = entries[0]) == null ? void 0 : _entries$2.contentRect.height | ||
}); | ||
var entry = entries[0]; | ||
if (entry) { | ||
var _entry$contentRect = entry.contentRect, | ||
width = _entry$contentRect.width, | ||
height = _entry$contentRect.height; | ||
cb({ | ||
width: Math.round(width), | ||
height: Math.round(height) | ||
}); | ||
} else { | ||
cb({ | ||
width: 0, | ||
height: 0 | ||
}); | ||
} | ||
}); | ||
@@ -513,3 +523,3 @@ if (!instance.scrollElement) { | ||
var toOffset = getOffsetForIndexAndAlignment(measurement); | ||
if (Math.round(toOffset) === Math.round(offset)) { | ||
if (toOffset === offset) { | ||
return; | ||
@@ -516,0 +526,0 @@ } |
@@ -11,3 +11,3 @@ /** | ||
*/ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).VirtualCore={})}(this,(function(e){"use strict";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},n.apply(this,arguments)}function t(e,n,t){var o,r=[];return function(){var i;t.key&&null!=t.debug&&t.debug()&&(i=Date.now());var l,s=e();if(!(s.length!==r.length||s.some((function(e,n){return r[n]!==e}))))return o;if(r=s,t.key&&null!=t.debug&&t.debug()&&(l=Date.now()),o=n.apply(void 0,s),null==t||null==t.onChange||t.onChange(o),t.key&&null!=t.debug&&t.debug()){var a=Math.round(100*(Date.now()-i))/100,u=Math.round(100*(Date.now()-l))/100,c=u/16,d=function(e,n){for(e=String(e);e.length<n;)e=" "+e;return e};console.info("%c⏱ "+d(u,5)+" /"+d(a,5)+" ms","\n font-size: .6rem;\n font-weight: bold;\n color: hsl("+Math.max(0,Math.min(120-120*c,120))+"deg 100% 31%);",null==t?void 0:t.key)}return o}}var o=function(e){return e},r=function(e){for(var n=Math.max(e.startIndex-e.overscan,0),t=Math.min(e.endIndex+e.overscan,e.count-1),o=[],r=n;r<=t;r++)o.push(r);return o},i={element:["scrollLeft","scrollTop"],window:["scrollX","scrollY"]},l=function(e){return function(n,t){if(n.scrollElement){var o=i[e][0],r=i[e][1],l=n.scrollElement[o],s=n.scrollElement[r],a=function(){var e=n.scrollElement[n.options.horizontal?o:r];t(e)};a();var u=function(e){var t=e.currentTarget,i=t[o],u=t[r];(n.options.horizontal?l-i:s-u)&&a(),l=i,s=u};return n.scrollElement.addEventListener("scroll",u,{capture:!1,passive:!0}),function(){n.scrollElement.removeEventListener("scroll",u)}}}},s=l("element"),a=l("window"),u=function(e,n){return Math.round(e.getBoundingClientRect()[n.options.horizontal?"width":"height"])};e.Virtualizer=function(e){var i,l=this;this.unsubs=[],this.scrollElement=null,this.isScrolling=!1,this.isScrollingTimeoutId=null,this.measurementsCache=[],this.itemSizeCache={},this.pendingMeasuredCacheIndexes=[],this.scrollDirection=null,this.scrollAdjustments=0,this.measureElementCache={},this.pendingScrollToIndexCallback=null,this.getResizeObserver=(i=null,function(){return i||("undefined"!=typeof ResizeObserver?i=new ResizeObserver((function(e){e.forEach((function(e){l._measureElement(e.target,!1)}))})):null)}),this.range={startIndex:0,endIndex:0},this.setOptions=function(e){Object.entries(e).forEach((function(n){var t=n[0];void 0===n[1]&&delete e[t]})),l.options=n({debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:o,rangeExtractor:r,onChange:function(){},measureElement:u,initialRect:{width:0,height:0},scrollMargin:0,scrollingDelay:150,indexAttribute:"data-index",initialMeasurementsCache:[]},e)},this.notify=function(){null==l.options.onChange||l.options.onChange(l)},this.cleanup=function(){l.unsubs.filter(Boolean).forEach((function(e){return e()})),l.unsubs=[],l.scrollElement=null},this._didMount=function(){var e=l.getResizeObserver();return Object.values(l.measureElementCache).forEach((function(n){return null==e?void 0:e.observe(n)})),function(){null==e||e.disconnect(),l.cleanup()}},this._willUpdate=function(){null==l.pendingScrollToIndexCallback||l.pendingScrollToIndexCallback();var e=l.options.getScrollElement();l.scrollElement!==e?(l.cleanup(),l.scrollElement=e,l._scrollToOffset(l.scrollOffset,{adjustments:void 0,behavior:void 0}),l.unsubs.push(l.options.observeElementRect(l,(function(e){l.scrollRect=e,l.calculateRange()}))),l.unsubs.push(l.options.observeElementOffset(l,(function(e){if(l.scrollAdjustments=0,l.scrollOffset!==e){null!==l.isScrollingTimeoutId&&(clearTimeout(l.isScrollingTimeoutId),l.isScrollingTimeoutId=null);var n=function(e){l.isScrolling!==e&&(l.isScrolling=e,l.notify())};l.scrollDirection=l.scrollOffset<e?"forward":"backward",l.scrollOffset=e,l.calculateRange(),n(!0),l.isScrollingTimeoutId=setTimeout((function(){l.isScrollingTimeoutId=null,l.scrollDirection=null,n(!1)}),l.options.scrollingDelay)}})))):l.isScrolling||l.calculateRange()},this.getSize=function(){return l.scrollRect[l.options.horizontal?"width":"height"]},this.getMeasurements=t((function(){return[l.options.count,l.options.paddingStart,l.options.scrollMargin,l.options.getItemKey,l.itemSizeCache]}),(function(e,n,t,o,r){var i=l.pendingMeasuredCacheIndexes.length>0?Math.min.apply(Math,l.pendingMeasuredCacheIndexes):0;l.pendingMeasuredCacheIndexes=[];for(var s=l.measurementsCache.slice(0,i),a=i;a<e;a++){var u=o(a),c=r[u],d=s[a-1]?s[a-1].end:n+t,f="number"==typeof c?c:l.options.estimateSize(a),h=d+f;s[a]={index:a,start:d,size:f,end:h,key:u}}return l.measurementsCache=s,s}),{key:!1,debug:function(){return l.options.debug}}),this.calculateRange=t((function(){return[l.getMeasurements(),l.getSize(),l.scrollOffset]}),(function(e,n,t){var o=function(e){var n=e.measurements,t=e.outerSize,o=e.scrollOffset,r=n.length-1,i=function(e,n,t,o){for(;e<=n;){var r=(e+n)/2|0,i=t(r);if(i<o)e=r+1;else{if(!(i>o))return r;n=r-1}}return e>0?e-1:0}(0,r,(function(e){return n[e].start}),o),l=i;for(;l<r&&n[l].end<o+t;)l++;return{startIndex:i,endIndex:l}}({measurements:e,outerSize:n,scrollOffset:t});return o.startIndex===l.range.startIndex&&o.endIndex===l.range.endIndex||(l.range=o,l.notify()),l.range}),{key:!1,debug:function(){return l.options.debug}}),this.getIndexes=t((function(){return[l.options.rangeExtractor,l.range,l.options.overscan,l.options.count]}),(function(e,t,o,r){return e(n({},t,{overscan:o,count:r}))}),{key:!1,debug:function(){return l.options.debug}}),this.indexFromElement=function(e){var n=l.options.indexAttribute,t=e.getAttribute(n);return t?parseInt(t,10):(console.warn("Missing attribute name '"+n+"={index}' on measured element."),-1)},this._measureElement=function(e,t){var o,r=l.indexFromElement(e),i=l.measurementsCache[r];if(i){var s=l.measureElementCache[i.key],a=l.getResizeObserver();if(e.isConnected){s&&s===e||(s&&(null==a||a.unobserve(s)),l.measureElementCache[i.key]=e,null==a||a.observe(e));var u,c=l.options.measureElement(e,l),d=c-(null!=(o=l.itemSizeCache[i.key])?o:i.size);if(0!==d)i.start<l.scrollOffset&&l.isScrolling&&"backward"===l.scrollDirection&&l._scrollToOffset(l.scrollOffset,{adjustments:l.scrollAdjustments+=d,behavior:void 0}),l.pendingMeasuredCacheIndexes.push(r),l.itemSizeCache=n({},l.itemSizeCache,((u={})[i.key]=c,u)),l.notify()}else s&&(null==a||a.unobserve(s),delete l.measureElementCache[i.key])}},this.measureElement=function(e){e&&l._measureElement(e,!0)},this.getVirtualItems=t((function(){return[l.getIndexes(),l.getMeasurements()]}),(function(e,n){for(var t=[],o=0,r=e.length;o<r;o++){var i=n[e[o]];t.push(i)}return t}),{key:!1,debug:function(){return l.options.debug}}),this.getOffsetForAlignment=function(e,n){var t=l.scrollOffset,o=l.getSize();return"auto"===n&&(n=e<=t?"start":e>=t+o?"end":"start"),"start"===n?e:"end"===n?e-o:"center"===n?e-o/2:e},this.scrollToOffset=function(e,n){var t=void 0===n?{}:n,o=t.align,r=void 0===o?"start":o,i={adjustments:void 0,behavior:t.behavior,sync:!1};l._scrollToOffset(l.getOffsetForAlignment(e,r),i)},this.scrollToIndex=function(e,n){var t=void 0===n?{}:n,o=t.align,r=void 0===o?"auto":o,i=t.behavior;l.pendingScrollToIndexCallback=null;var s=l.scrollOffset,a=l.getSize(),u=l.options.count,c=l.getMeasurements()[Math.max(0,Math.min(e,u-1))];if(!c)throw new Error("VirtualItem not found for index = "+e);if("auto"===r)if(c.end>=s+a-l.options.scrollPaddingEnd)r="end";else{if(!(c.start<=s+l.options.scrollPaddingStart))return;r="start"}var d=function(e){var n="end"===r?e.end+l.options.scrollPaddingEnd:e.start-l.options.scrollPaddingStart;return l.getOffsetForAlignment(n,r)}(c);if(Math.round(d)!==Math.round(s)){var f={adjustments:void 0,behavior:i};l._scrollToOffset(d,f),Object.keys(l.measureElementCache).length>0&&(l.pendingScrollToIndexCallback=function(){l.scrollToIndex(e,{align:r,behavior:i})})}},this.scrollBy=function(e,n){l._scrollToOffset(l.scrollOffset,{adjustments:e,behavior:null==n?void 0:n.behavior})},this.getTotalSize=function(){var e;return((null==(e=l.getMeasurements()[l.options.count-1])?void 0:e.end)||l.options.paddingStart)-l.options.scrollMargin+l.options.paddingEnd},this._scrollToOffset=function(e,n){var t=n.adjustments,o=n.behavior;l.options.scrollToFn(e,{behavior:o,adjustments:t},l)},this.measure=function(){l.itemSizeCache={},l.notify()},this.setOptions(e),this.scrollRect=this.options.initialRect,this.scrollOffset=this.options.initialOffset,this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach((function(e){l.itemSizeCache[e.key]=e.size})),this.calculateRange()},e.defaultKeyExtractor=o,e.defaultRangeExtractor=r,e.elementScroll=function(e,n,t){var o,r,i=n.adjustments,l=void 0===i?0:i,s=n.behavior,a=e+l;null==(o=t.scrollElement)||null==o.scrollTo||o.scrollTo(((r={})[t.options.horizontal?"left":"top"]=a,r.behavior=s,r))},e.measureElement=u,e.memo=t,e.observeElementOffset=s,e.observeElementRect=function(e,n){var t=new ResizeObserver((function(e){var t,o;n({width:null==(t=e[0])?void 0:t.contentRect.width,height:null==(o=e[0])?void 0:o.contentRect.height})}));if(e.scrollElement)return n(e.scrollElement.getBoundingClientRect()),t.observe(e.scrollElement),function(){t.unobserve(e.scrollElement)}},e.observeWindowOffset=a,e.observeWindowRect=function(e,n){var t=function(e,n){var t={height:-1,width:-1};return function(o){(e.options.horizontal?o.width!==t.width:o.height!==t.height)&&n(o),t=o}}(e,n),o=function(){return t({width:e.scrollElement.innerWidth,height:e.scrollElement.innerHeight})};if(e.scrollElement)return o(),e.scrollElement.addEventListener("resize",o,{capture:!1,passive:!0}),function(){e.scrollElement.removeEventListener("resize",o)}},e.windowScroll=function(e,n,t){var o,r,i=n.adjustments,l=void 0===i?0:i,s=n.behavior,a=e+l;null==(o=t.scrollElement)||null==o.scrollTo||o.scrollTo(((r={})[t.options.horizontal?"left":"top"]=a,r.behavior=s,r))},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).VirtualCore={})}(this,(function(e){"use strict";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},n.apply(this,arguments)}function t(e,n,t){var o,r=[];return function(){var i;t.key&&null!=t.debug&&t.debug()&&(i=Date.now());var s,l=e();if(!(l.length!==r.length||l.some((function(e,n){return r[n]!==e}))))return o;if(r=l,t.key&&null!=t.debug&&t.debug()&&(s=Date.now()),o=n.apply(void 0,l),null==t||null==t.onChange||t.onChange(o),t.key&&null!=t.debug&&t.debug()){var a=Math.round(100*(Date.now()-i))/100,u=Math.round(100*(Date.now()-s))/100,c=u/16,d=function(e,n){for(e=String(e);e.length<n;)e=" "+e;return e};console.info("%c⏱ "+d(u,5)+" /"+d(a,5)+" ms","\n font-size: .6rem;\n font-weight: bold;\n color: hsl("+Math.max(0,Math.min(120-120*c,120))+"deg 100% 31%);",null==t?void 0:t.key)}return o}}var o=function(e){return e},r=function(e){for(var n=Math.max(e.startIndex-e.overscan,0),t=Math.min(e.endIndex+e.overscan,e.count-1),o=[],r=n;r<=t;r++)o.push(r);return o},i={element:["scrollLeft","scrollTop"],window:["scrollX","scrollY"]},s=function(e){return function(n,t){if(n.scrollElement){var o=i[e][0],r=i[e][1],s=n.scrollElement[o],l=n.scrollElement[r],a=function(){var e=n.scrollElement[n.options.horizontal?o:r];t(e)};a();var u=function(e){var t=e.currentTarget,i=t[o],u=t[r];(n.options.horizontal?s-i:l-u)&&a(),s=i,l=u};return n.scrollElement.addEventListener("scroll",u,{capture:!1,passive:!0}),function(){n.scrollElement.removeEventListener("scroll",u)}}}},l=s("element"),a=s("window"),u=function(e,n){return Math.round(e.getBoundingClientRect()[n.options.horizontal?"width":"height"])};e.Virtualizer=function(e){var i,s=this;this.unsubs=[],this.scrollElement=null,this.isScrolling=!1,this.isScrollingTimeoutId=null,this.measurementsCache=[],this.itemSizeCache={},this.pendingMeasuredCacheIndexes=[],this.scrollDirection=null,this.scrollAdjustments=0,this.measureElementCache={},this.pendingScrollToIndexCallback=null,this.getResizeObserver=(i=null,function(){return i||("undefined"!=typeof ResizeObserver?i=new ResizeObserver((function(e){e.forEach((function(e){s._measureElement(e.target,!1)}))})):null)}),this.range={startIndex:0,endIndex:0},this.setOptions=function(e){Object.entries(e).forEach((function(n){var t=n[0];void 0===n[1]&&delete e[t]})),s.options=n({debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:o,rangeExtractor:r,onChange:function(){},measureElement:u,initialRect:{width:0,height:0},scrollMargin:0,scrollingDelay:150,indexAttribute:"data-index",initialMeasurementsCache:[]},e)},this.notify=function(){null==s.options.onChange||s.options.onChange(s)},this.cleanup=function(){s.unsubs.filter(Boolean).forEach((function(e){return e()})),s.unsubs=[],s.scrollElement=null},this._didMount=function(){var e=s.getResizeObserver();return Object.values(s.measureElementCache).forEach((function(n){return null==e?void 0:e.observe(n)})),function(){null==e||e.disconnect(),s.cleanup()}},this._willUpdate=function(){null==s.pendingScrollToIndexCallback||s.pendingScrollToIndexCallback();var e=s.options.getScrollElement();s.scrollElement!==e?(s.cleanup(),s.scrollElement=e,s._scrollToOffset(s.scrollOffset,{adjustments:void 0,behavior:void 0}),s.unsubs.push(s.options.observeElementRect(s,(function(e){s.scrollRect=e,s.calculateRange()}))),s.unsubs.push(s.options.observeElementOffset(s,(function(e){if(s.scrollAdjustments=0,s.scrollOffset!==e){null!==s.isScrollingTimeoutId&&(clearTimeout(s.isScrollingTimeoutId),s.isScrollingTimeoutId=null);var n=function(e){s.isScrolling!==e&&(s.isScrolling=e,s.notify())};s.scrollDirection=s.scrollOffset<e?"forward":"backward",s.scrollOffset=e,s.calculateRange(),n(!0),s.isScrollingTimeoutId=setTimeout((function(){s.isScrollingTimeoutId=null,s.scrollDirection=null,n(!1)}),s.options.scrollingDelay)}})))):s.isScrolling||s.calculateRange()},this.getSize=function(){return s.scrollRect[s.options.horizontal?"width":"height"]},this.getMeasurements=t((function(){return[s.options.count,s.options.paddingStart,s.options.scrollMargin,s.options.getItemKey,s.itemSizeCache]}),(function(e,n,t,o,r){var i=s.pendingMeasuredCacheIndexes.length>0?Math.min.apply(Math,s.pendingMeasuredCacheIndexes):0;s.pendingMeasuredCacheIndexes=[];for(var l=s.measurementsCache.slice(0,i),a=i;a<e;a++){var u=o(a),c=r[u],d=l[a-1]?l[a-1].end:n+t,f="number"==typeof c?c:s.options.estimateSize(a),h=d+f;l[a]={index:a,start:d,size:f,end:h,key:u}}return s.measurementsCache=l,l}),{key:!1,debug:function(){return s.options.debug}}),this.calculateRange=t((function(){return[s.getMeasurements(),s.getSize(),s.scrollOffset]}),(function(e,n,t){var o=function(e){var n=e.measurements,t=e.outerSize,o=e.scrollOffset,r=n.length-1,i=function(e,n,t,o){for(;e<=n;){var r=(e+n)/2|0,i=t(r);if(i<o)e=r+1;else{if(!(i>o))return r;n=r-1}}return e>0?e-1:0}(0,r,(function(e){return n[e].start}),o),s=i;for(;s<r&&n[s].end<o+t;)s++;return{startIndex:i,endIndex:s}}({measurements:e,outerSize:n,scrollOffset:t});return o.startIndex===s.range.startIndex&&o.endIndex===s.range.endIndex||(s.range=o,s.notify()),s.range}),{key:!1,debug:function(){return s.options.debug}}),this.getIndexes=t((function(){return[s.options.rangeExtractor,s.range,s.options.overscan,s.options.count]}),(function(e,t,o,r){return e(n({},t,{overscan:o,count:r}))}),{key:!1,debug:function(){return s.options.debug}}),this.indexFromElement=function(e){var n=s.options.indexAttribute,t=e.getAttribute(n);return t?parseInt(t,10):(console.warn("Missing attribute name '"+n+"={index}' on measured element."),-1)},this._measureElement=function(e,t){var o,r=s.indexFromElement(e),i=s.measurementsCache[r];if(i){var l=s.measureElementCache[i.key],a=s.getResizeObserver();if(e.isConnected){l&&l===e||(l&&(null==a||a.unobserve(l)),s.measureElementCache[i.key]=e,null==a||a.observe(e));var u,c=s.options.measureElement(e,s),d=c-(null!=(o=s.itemSizeCache[i.key])?o:i.size);if(0!==d)i.start<s.scrollOffset&&s.isScrolling&&"backward"===s.scrollDirection&&s._scrollToOffset(s.scrollOffset,{adjustments:s.scrollAdjustments+=d,behavior:void 0}),s.pendingMeasuredCacheIndexes.push(r),s.itemSizeCache=n({},s.itemSizeCache,((u={})[i.key]=c,u)),s.notify()}else l&&(null==a||a.unobserve(l),delete s.measureElementCache[i.key])}},this.measureElement=function(e){e&&s._measureElement(e,!0)},this.getVirtualItems=t((function(){return[s.getIndexes(),s.getMeasurements()]}),(function(e,n){for(var t=[],o=0,r=e.length;o<r;o++){var i=n[e[o]];t.push(i)}return t}),{key:!1,debug:function(){return s.options.debug}}),this.getOffsetForAlignment=function(e,n){var t=s.scrollOffset,o=s.getSize();return"auto"===n&&(n=e<=t?"start":e>=t+o?"end":"start"),"start"===n?e:"end"===n?e-o:"center"===n?e-o/2:e},this.scrollToOffset=function(e,n){var t=void 0===n?{}:n,o=t.align,r=void 0===o?"start":o,i={adjustments:void 0,behavior:t.behavior,sync:!1};s._scrollToOffset(s.getOffsetForAlignment(e,r),i)},this.scrollToIndex=function(e,n){var t=void 0===n?{}:n,o=t.align,r=void 0===o?"auto":o,i=t.behavior;s.pendingScrollToIndexCallback=null;var l=s.scrollOffset,a=s.getSize(),u=s.options.count,c=s.getMeasurements()[Math.max(0,Math.min(e,u-1))];if(!c)throw new Error("VirtualItem not found for index = "+e);if("auto"===r)if(c.end>=l+a-s.options.scrollPaddingEnd)r="end";else{if(!(c.start<=l+s.options.scrollPaddingStart))return;r="start"}var d=function(e){var n="end"===r?e.end+s.options.scrollPaddingEnd:e.start-s.options.scrollPaddingStart;return s.getOffsetForAlignment(n,r)}(c);if(d!==l){var f={adjustments:void 0,behavior:i};s._scrollToOffset(d,f),Object.keys(s.measureElementCache).length>0&&(s.pendingScrollToIndexCallback=function(){s.scrollToIndex(e,{align:r,behavior:i})})}},this.scrollBy=function(e,n){s._scrollToOffset(s.scrollOffset,{adjustments:e,behavior:null==n?void 0:n.behavior})},this.getTotalSize=function(){var e;return((null==(e=s.getMeasurements()[s.options.count-1])?void 0:e.end)||s.options.paddingStart)-s.options.scrollMargin+s.options.paddingEnd},this._scrollToOffset=function(e,n){var t=n.adjustments,o=n.behavior;s.options.scrollToFn(e,{behavior:o,adjustments:t},s)},this.measure=function(){s.itemSizeCache={},s.notify()},this.setOptions(e),this.scrollRect=this.options.initialRect,this.scrollOffset=this.options.initialOffset,this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach((function(e){s.itemSizeCache[e.key]=e.size})),this.calculateRange()},e.defaultKeyExtractor=o,e.defaultRangeExtractor=r,e.elementScroll=function(e,n,t){var o,r,i=n.adjustments,s=void 0===i?0:i,l=n.behavior,a=e+s;null==(o=t.scrollElement)||null==o.scrollTo||o.scrollTo(((r={})[t.options.horizontal?"left":"top"]=a,r.behavior=l,r))},e.measureElement=u,e.memo=t,e.observeElementOffset=l,e.observeElementRect=function(e,n){var t=new ResizeObserver((function(e){var t=e[0];if(t){var o=t.contentRect,r=o.width,i=o.height;n({width:Math.round(r),height:Math.round(i)})}else n({width:0,height:0})}));if(e.scrollElement)return n(e.scrollElement.getBoundingClientRect()),t.observe(e.scrollElement),function(){t.unobserve(e.scrollElement)}},e.observeWindowOffset=a,e.observeWindowRect=function(e,n){var t=function(e,n){var t={height:-1,width:-1};return function(o){(e.options.horizontal?o.width!==t.width:o.height!==t.height)&&n(o),t=o}}(e,n),o=function(){return t({width:e.scrollElement.innerWidth,height:e.scrollElement.innerHeight})};if(e.scrollElement)return o(),e.scrollElement.addEventListener("resize",o,{capture:!1,passive:!0}),function(){e.scrollElement.removeEventListener("resize",o)}},e.windowScroll=function(e,n,t){var o,r,i=n.adjustments,s=void 0===i?0:i,l=n.behavior,a=e+s;null==(o=t.scrollElement)||null==o.scrollTo||o.scrollTo(((r={})[t.options.horizontal?"left":"top"]=a,r.behavior=l,r))},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=index.production.js.map |
{ | ||
"name": "@tanstack/virtual-core", | ||
"author": "Tanner Linsley", | ||
"version": "3.0.0-beta.34", | ||
"version": "3.0.0-beta.35", | ||
"description": "Headless UI for virtualizing scrollable elements in TS/JS + Frameworks", | ||
@@ -6,0 +6,0 @@ "license": "MIT", |
@@ -85,6 +85,12 @@ import { memo } from './utils' | ||
const observer = new ResizeObserver((entries) => { | ||
cb({ | ||
width: entries[0]?.contentRect.width as number, | ||
height: entries[0]?.contentRect.height as number, | ||
}) | ||
const entry = entries[0] | ||
if (entry) { | ||
const { width, height } = entry.contentRect | ||
cb({ | ||
width: Math.round(width), | ||
height: Math.round(height), | ||
}) | ||
} else { | ||
cb({ width: 0, height: 0 }) | ||
} | ||
}) | ||
@@ -706,3 +712,3 @@ | ||
if (Math.round(toOffset) === Math.round(offset)) { | ||
if (toOffset === offset) { | ||
return | ||
@@ -709,0 +715,0 @@ } |
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
359403
3419