@tanstack/virtual-core 3.0.1 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/index.esm.js +4 -1
- package/build/lib/index.esm.js.map +1 -1
- package/build/lib/index.js +4 -1
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +4 -1
- package/build/lib/index.mjs.map +1 -1
- package/build/umd/index.development.js +4 -1
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +10 -2
package/build/lib/index.mjs
CHANGED
|
@@ -315,6 +315,9 @@ var Virtualizer = function Virtualizer(_opts) {
|
|
|
315
315
|
}
|
|
316
316
|
}
|
|
317
317
|
return furthestMeasurements.size === _this.options.lanes ? Array.from(furthestMeasurements.values()).sort(function (a, b) {
|
|
318
|
+
if (a.end === b.end) {
|
|
319
|
+
return a.index - b.index;
|
|
320
|
+
}
|
|
318
321
|
return a.end - b.end;
|
|
319
322
|
})[0] : undefined;
|
|
320
323
|
};
|
|
@@ -416,7 +419,7 @@ var Virtualizer = function Virtualizer(_opts) {
|
|
|
416
419
|
var itemSize = (_this$itemSizeCache$g = _this.itemSizeCache.get(item.key)) != null ? _this$itemSizeCache$g : item.size;
|
|
417
420
|
var delta = size - itemSize;
|
|
418
421
|
if (delta !== 0) {
|
|
419
|
-
if (item.start < _this.scrollOffset) {
|
|
422
|
+
if (item.start < _this.scrollOffset + _this.scrollAdjustments) {
|
|
420
423
|
if (process.env.NODE_ENV !== 'production' && _this.options.debug) {
|
|
421
424
|
console.info('correction', delta);
|
|
422
425
|
}
|
package/build/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import { approxEqual, memo, notUndefined } from './utils'\n\nexport * from './utils'\n\n//\n\ntype ScrollDirection = 'forward' | 'backward'\n\ntype ScrollAlignment = 'start' | 'center' | 'end' | 'auto'\n\ntype ScrollBehavior = 'auto' | 'smooth'\n\nexport interface ScrollToOptions {\n align?: ScrollAlignment\n behavior?: ScrollBehavior\n}\n\ntype ScrollToOffsetOptions = ScrollToOptions\n\ntype ScrollToIndexOptions = ScrollToOptions\n\nexport interface Range {\n startIndex: number\n endIndex: number\n overscan: number\n count: number\n}\n\ntype Key = number | string\n\nexport interface VirtualItem {\n key: Key\n index: number\n start: number\n end: number\n size: number\n lane: number\n}\n\ninterface Rect {\n width: number\n height: number\n}\n\n//\n\nexport const defaultKeyExtractor = (index: number) => index\n\nexport const defaultRangeExtractor = (range: Range) => {\n const start = Math.max(range.startIndex - range.overscan, 0)\n const end = Math.min(range.endIndex + range.overscan, range.count - 1)\n\n const arr = []\n\n for (let i = start; i <= end; i++) {\n arr.push(i)\n }\n\n return arr\n}\n\nexport const observeElementRect = <T extends Element>(\n instance: Virtualizer<T, any>,\n cb: (rect: Rect) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = (rect: Rect) => {\n const { width, height } = rect\n cb({ width: Math.round(width), height: Math.round(height) })\n }\n\n handler(element.getBoundingClientRect())\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (entry?.borderBoxSize) {\n const box = entry.borderBoxSize[0]\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize })\n return\n }\n }\n handler(element.getBoundingClientRect())\n })\n\n observer.observe(element, { box: 'border-box' })\n\n return () => {\n observer.unobserve(element)\n }\n}\n\nexport const observeWindowRect = (\n instance: Virtualizer<Window, any>,\n cb: (rect: Rect) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight })\n }\n handler()\n\n element.addEventListener('resize', handler, {\n passive: true,\n })\n\n return () => {\n element.removeEventListener('resize', handler)\n }\n}\n\nexport const observeElementOffset = <T extends Element>(\n instance: Virtualizer<T, any>,\n cb: (offset: number) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = () => {\n cb(element[instance.options.horizontal ? 'scrollLeft' : 'scrollTop'])\n }\n handler()\n\n element.addEventListener('scroll', handler, {\n passive: true,\n })\n\n return () => {\n element.removeEventListener('scroll', handler)\n }\n}\n\nexport const observeWindowOffset = (\n instance: Virtualizer<Window, any>,\n cb: (offset: number) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = () => {\n cb(element[instance.options.horizontal ? 'scrollX' : 'scrollY'])\n }\n handler()\n\n element.addEventListener('scroll', handler, {\n passive: true,\n })\n\n return () => {\n element.removeEventListener('scroll', handler)\n }\n}\n\nexport const measureElement = <TItemElement extends Element>(\n element: TItemElement,\n entry: ResizeObserverEntry | undefined,\n instance: Virtualizer<any, TItemElement>,\n) => {\n if (entry?.borderBoxSize) {\n const box = entry.borderBoxSize[0]\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? 'inlineSize' : 'blockSize'],\n )\n return size\n }\n }\n return Math.round(\n element.getBoundingClientRect()[\n instance.options.horizontal ? 'width' : 'height'\n ],\n )\n}\n\nexport const windowScroll = <T extends Window>(\n offset: number,\n {\n adjustments = 0,\n behavior,\n }: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<T, any>,\n) => {\n const toOffset = offset + adjustments\n\n instance.scrollElement?.scrollTo?.({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior,\n })\n}\n\nexport const elementScroll = <T extends Element>(\n offset: number,\n {\n adjustments = 0,\n behavior,\n }: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<T, any>,\n) => {\n const toOffset = offset + adjustments\n\n instance.scrollElement?.scrollTo?.({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior,\n })\n}\n\nexport interface VirtualizerOptions<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n> {\n // Required from the user\n count: number\n getScrollElement: () => TScrollElement | null\n estimateSize: (index: number) => number\n\n // Required from the framework adapter (but can be overridden)\n scrollToFn: (\n offset: number,\n options: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<TScrollElement, TItemElement>,\n ) => void\n observeElementRect: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n cb: (rect: Rect) => void,\n ) => void | (() => void)\n observeElementOffset: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n cb: (offset: number) => void,\n ) => void | (() => void)\n\n // Optional\n debug?: any\n initialRect?: Rect\n onChange?: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n sync: boolean,\n ) => void\n measureElement?: (\n element: TItemElement,\n entry: ResizeObserverEntry | undefined,\n instance: Virtualizer<TScrollElement, TItemElement>,\n ) => number\n overscan?: number\n horizontal?: boolean\n paddingStart?: number\n paddingEnd?: number\n scrollPaddingStart?: number\n scrollPaddingEnd?: number\n initialOffset?: number\n getItemKey?: (index: number) => Key\n rangeExtractor?: (range: Range) => number[]\n scrollMargin?: number\n scrollingDelay?: number\n indexAttribute?: string\n initialMeasurementsCache?: VirtualItem[]\n lanes?: number\n}\n\nexport class Virtualizer<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n> {\n private unsubs: (void | (() => void))[] = []\n options!: Required<VirtualizerOptions<TScrollElement, TItemElement>>\n scrollElement: TScrollElement | null = null\n isScrolling: boolean = false\n private isScrollingTimeoutId: ReturnType<typeof setTimeout> | null = null\n private scrollToIndexTimeoutId: ReturnType<typeof setTimeout> | null = null\n measurementsCache: VirtualItem[] = []\n private itemSizeCache = new Map<Key, number>()\n private pendingMeasuredCacheIndexes: number[] = []\n scrollRect: Rect\n scrollOffset: number\n scrollDirection: ScrollDirection | null = null\n private scrollAdjustments: number = 0\n measureElementCache = new Map<Key, TItemElement>()\n private observer = (() => {\n let _ro: ResizeObserver | null = null\n\n const get = () => {\n if (_ro) {\n return _ro\n } else if (typeof ResizeObserver !== 'undefined') {\n return (_ro = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n this._measureElement(entry.target as TItemElement, entry)\n })\n }))\n } else {\n return null\n }\n }\n\n return {\n disconnect: () => get()?.disconnect(),\n observe: (target: Element) =>\n get()?.observe(target, { box: 'border-box' }),\n unobserve: (target: Element) => get()?.unobserve(target),\n }\n })()\n range: { startIndex: number; endIndex: number } | null = null\n\n constructor(opts: VirtualizerOptions<TScrollElement, TItemElement>) {\n this.setOptions(opts)\n this.scrollRect = this.options.initialRect\n this.scrollOffset = this.options.initialOffset\n this.measurementsCache = this.options.initialMeasurementsCache\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size)\n })\n\n this.maybeNotify()\n }\n\n setOptions = (opts: VirtualizerOptions<TScrollElement, TItemElement>) => {\n Object.entries(opts).forEach(([key, value]) => {\n if (typeof value === 'undefined') delete (opts as any)[key]\n })\n\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {},\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n scrollingDelay: 150,\n indexAttribute: 'data-index',\n initialMeasurementsCache: [],\n lanes: 1,\n ...opts,\n }\n }\n\n private notify = (sync: boolean) => {\n this.options.onChange?.(this, sync)\n }\n\n private maybeNotify = memo(\n () => {\n this.calculateRange()\n\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null,\n ]\n },\n (isScrolling) => {\n this.notify(isScrolling)\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'maybeNotify',\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null,\n ] as [boolean, number | null, number | null],\n },\n )\n\n private cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d!())\n this.unsubs = []\n this.scrollElement = null\n }\n\n _didMount = () => {\n this.measureElementCache.forEach(this.observer.observe)\n return () => {\n this.observer.disconnect()\n this.cleanup()\n }\n }\n\n _willUpdate = () => {\n const scrollElement = this.options.getScrollElement()\n\n if (this.scrollElement !== scrollElement) {\n this.cleanup()\n\n this.scrollElement = scrollElement\n\n this._scrollToOffset(this.scrollOffset, {\n adjustments: undefined,\n behavior: undefined,\n })\n\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect\n this.maybeNotify()\n }),\n )\n\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset) => {\n this.scrollAdjustments = 0\n\n if (this.scrollOffset === offset) {\n return\n }\n\n if (this.isScrollingTimeoutId !== null) {\n clearTimeout(this.isScrollingTimeoutId)\n this.isScrollingTimeoutId = null\n }\n\n this.isScrolling = true\n this.scrollDirection =\n this.scrollOffset < offset ? 'forward' : 'backward'\n this.scrollOffset = offset\n\n this.maybeNotify()\n\n this.isScrollingTimeoutId = setTimeout(() => {\n this.isScrollingTimeoutId = null\n this.isScrolling = false\n this.scrollDirection = null\n\n this.maybeNotify()\n }, this.options.scrollingDelay)\n }),\n )\n }\n }\n\n private getSize = () => {\n return this.scrollRect[this.options.horizontal ? 'width' : 'height']\n }\n\n private memoOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n ],\n (count, paddingStart, scrollMargin, getItemKey) => {\n this.pendingMeasuredCacheIndexes = []\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n }\n },\n {\n key: false,\n },\n )\n\n private getFurthestMeasurement = (\n measurements: VirtualItem[],\n index: number,\n ) => {\n const furthestMeasurementsFound = new Map<number, true>()\n const furthestMeasurements = new Map<number, VirtualItem>()\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m]!\n\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue\n }\n\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane,\n )\n if (\n previousFurthestMeasurement == null ||\n measurement.end > previousFurthestMeasurement.end\n ) {\n furthestMeasurements.set(measurement.lane, measurement)\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true)\n }\n\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break\n }\n }\n\n return furthestMeasurements.size === this.options.lanes\n ? Array.from(furthestMeasurements.values()).sort(\n (a, b) => a.end - b.end,\n )[0]\n : undefined\n }\n\n private getMeasurements = memo(\n () => [this.memoOptions(), this.itemSizeCache],\n ({ count, paddingStart, scrollMargin, getItemKey }, itemSizeCache) => {\n const min =\n this.pendingMeasuredCacheIndexes.length > 0\n ? Math.min(...this.pendingMeasuredCacheIndexes)\n : 0\n this.pendingMeasuredCacheIndexes = []\n\n const measurements = this.measurementsCache.slice(0, min)\n\n for (let i = min; i < count; i++) {\n const key = getItemKey(i)\n\n const furthestMeasurement =\n this.options.lanes === 1\n ? measurements[i - 1]\n : this.getFurthestMeasurement(measurements, i)\n\n const start = furthestMeasurement\n ? furthestMeasurement.end\n : paddingStart + scrollMargin\n\n const measuredSize = itemSizeCache.get(key)\n const size =\n typeof measuredSize === 'number'\n ? measuredSize\n : this.options.estimateSize(i)\n\n const end = start + size\n\n const lane = furthestMeasurement\n ? furthestMeasurement.lane\n : i % this.options.lanes\n\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane,\n }\n }\n\n this.measurementsCache = measurements\n\n return measurements\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getMeasurements',\n debug: () => this.options.debug,\n },\n )\n\n calculateRange = memo(\n () => [this.getMeasurements(), this.getSize(), this.scrollOffset],\n (measurements, outerSize, scrollOffset) => {\n return (this.range =\n measurements.length > 0 && outerSize > 0\n ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n })\n : null)\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'calculateRange',\n debug: () => this.options.debug,\n },\n )\n\n private getIndexes = memo(\n () => [\n this.options.rangeExtractor,\n this.calculateRange(),\n this.options.overscan,\n this.options.count,\n ],\n (rangeExtractor, range, overscan, count) => {\n return range === null\n ? []\n : rangeExtractor({\n ...range,\n overscan,\n count,\n })\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getIndexes',\n debug: () => this.options.debug,\n },\n )\n\n indexFromElement = (node: TItemElement) => {\n const attributeName = this.options.indexAttribute\n const indexStr = node.getAttribute(attributeName)\n\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`,\n )\n return -1\n }\n\n return parseInt(indexStr, 10)\n }\n\n private _measureElement = (\n node: TItemElement,\n entry: ResizeObserverEntry | undefined,\n ) => {\n const item = this.measurementsCache[this.indexFromElement(node)]\n\n if (!item || !node.isConnected) {\n this.measureElementCache.forEach((cached, key) => {\n if (cached === node) {\n this.observer.unobserve(node)\n this.measureElementCache.delete(key)\n }\n })\n return\n }\n\n const prevNode = this.measureElementCache.get(item.key)\n\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode)\n }\n this.observer.observe(node)\n this.measureElementCache.set(item.key, node)\n }\n\n const measuredItemSize = this.options.measureElement(node, entry, this)\n\n this.resizeItem(item, measuredItemSize)\n }\n\n resizeItem = (item: VirtualItem, size: number) => {\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size\n const delta = size - itemSize\n\n if (delta !== 0) {\n if (item.start < this.scrollOffset) {\n if (process.env.NODE_ENV !== 'production' && this.options.debug) {\n console.info('correction', delta)\n }\n\n this._scrollToOffset(this.scrollOffset, {\n adjustments: (this.scrollAdjustments += delta),\n behavior: undefined,\n })\n }\n\n this.pendingMeasuredCacheIndexes.push(item.index)\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size))\n\n this.notify(false)\n }\n }\n\n measureElement = (node: TItemElement | null) => {\n if (!node) {\n return\n }\n\n this._measureElement(node, undefined)\n }\n\n getVirtualItems = memo(\n () => [this.getIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems: VirtualItem[] = []\n\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k]!\n const measurement = measurements[i]!\n\n virtualItems.push(measurement)\n }\n\n return virtualItems\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getIndexes',\n debug: () => this.options.debug,\n },\n )\n\n getVirtualItemForOffset = (offset: number) => {\n const measurements = this.getMeasurements()\n\n return notUndefined(\n measurements[\n findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index: number) => notUndefined(measurements[index]).start,\n offset,\n )\n ],\n )\n }\n\n getOffsetForAlignment = (toOffset: number, align: ScrollAlignment) => {\n const size = this.getSize()\n\n if (align === 'auto') {\n if (toOffset <= this.scrollOffset) {\n align = 'start'\n } else if (toOffset >= this.scrollOffset + size) {\n align = 'end'\n } else {\n align = 'start'\n }\n }\n\n if (align === 'start') {\n toOffset = toOffset\n } else if (align === 'end') {\n toOffset = toOffset - size\n } else if (align === 'center') {\n toOffset = toOffset - size / 2\n }\n\n const scrollSizeProp = this.options.horizontal\n ? 'scrollWidth'\n : 'scrollHeight'\n const scrollSize = this.scrollElement\n ? 'document' in this.scrollElement\n ? this.scrollElement.document.documentElement[scrollSizeProp]\n : this.scrollElement[scrollSizeProp]\n : 0\n\n const maxOffset = scrollSize - this.getSize()\n\n return Math.max(Math.min(maxOffset, toOffset), 0)\n }\n\n getOffsetForIndex = (index: number, align: ScrollAlignment = 'auto') => {\n index = Math.max(0, Math.min(index, this.options.count - 1))\n\n const measurement = notUndefined(this.getMeasurements()[index])\n\n if (align === 'auto') {\n if (\n measurement.end >=\n this.scrollOffset + this.getSize() - this.options.scrollPaddingEnd\n ) {\n align = 'end'\n } else if (\n measurement.start <=\n this.scrollOffset + this.options.scrollPaddingStart\n ) {\n align = 'start'\n } else {\n return [this.scrollOffset, align] as const\n }\n }\n\n const toOffset =\n align === 'end'\n ? measurement.end + this.options.scrollPaddingEnd\n : measurement.start - this.options.scrollPaddingStart\n\n return [this.getOffsetForAlignment(toOffset, align), align] as const\n }\n\n private isDynamicMode = () => this.measureElementCache.size > 0\n\n private cancelScrollToIndex = () => {\n if (this.scrollToIndexTimeoutId !== null) {\n clearTimeout(this.scrollToIndexTimeoutId)\n this.scrollToIndexTimeoutId = null\n }\n }\n\n scrollToOffset = (\n toOffset: number,\n { align = 'start', behavior }: ScrollToOffsetOptions = {},\n ) => {\n this.cancelScrollToIndex()\n\n if (behavior === 'smooth' && this.isDynamicMode()) {\n console.warn(\n 'The `smooth` scroll behavior is not fully supported with dynamic size.',\n )\n }\n\n this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {\n adjustments: undefined,\n behavior,\n })\n }\n\n scrollToIndex = (\n index: number,\n { align: initialAlign = 'auto', behavior }: ScrollToIndexOptions = {},\n ) => {\n index = Math.max(0, Math.min(index, this.options.count - 1))\n\n this.cancelScrollToIndex()\n\n if (behavior === 'smooth' && this.isDynamicMode()) {\n console.warn(\n 'The `smooth` scroll behavior is not fully supported with dynamic size.',\n )\n }\n\n const [toOffset, align] = this.getOffsetForIndex(index, initialAlign)\n\n this._scrollToOffset(toOffset, { adjustments: undefined, behavior })\n\n if (behavior !== 'smooth' && this.isDynamicMode()) {\n this.scrollToIndexTimeoutId = setTimeout(() => {\n this.scrollToIndexTimeoutId = null\n\n const elementInDOM = this.measureElementCache.has(\n this.options.getItemKey(index),\n )\n\n if (elementInDOM) {\n const [toOffset] = this.getOffsetForIndex(index, align)\n\n if (!approxEqual(toOffset, this.scrollOffset)) {\n this.scrollToIndex(index, { align, behavior })\n }\n } else {\n this.scrollToIndex(index, { align, behavior })\n }\n })\n }\n }\n\n scrollBy = (delta: number, { behavior }: ScrollToOffsetOptions = {}) => {\n this.cancelScrollToIndex()\n\n if (behavior === 'smooth' && this.isDynamicMode()) {\n console.warn(\n 'The `smooth` scroll behavior is not fully supported with dynamic size.',\n )\n }\n\n this._scrollToOffset(this.scrollOffset + delta, {\n adjustments: undefined,\n behavior,\n })\n }\n\n getTotalSize = () =>\n (this.getMeasurements()[this.options.count - 1]?.end ||\n this.options.paddingStart) -\n this.options.scrollMargin +\n this.options.paddingEnd\n\n private _scrollToOffset = (\n offset: number,\n {\n adjustments,\n behavior,\n }: {\n adjustments: number | undefined\n behavior: ScrollBehavior | undefined\n },\n ) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this)\n }\n\n measure = () => {\n this.itemSizeCache = new Map()\n this.notify(false)\n }\n}\n\nconst findNearestBinarySearch = (\n low: number,\n high: number,\n getCurrentValue: (i: number) => number,\n value: number,\n) => {\n while (low <= high) {\n const middle = ((low + high) / 2) | 0\n const currentValue = getCurrentValue(middle)\n\n if (currentValue < value) {\n low = middle + 1\n } else if (currentValue > value) {\n high = middle - 1\n } else {\n return middle\n }\n }\n\n if (low > 0) {\n return low - 1\n } else {\n return 0\n }\n}\n\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n}: {\n measurements: VirtualItem[]\n outerSize: number\n scrollOffset: number\n}) {\n const count = measurements.length - 1\n const getOffset = (index: number) => measurements[index]!.start\n\n const startIndex = findNearestBinarySearch(0, count, getOffset, scrollOffset)\n let endIndex = startIndex\n\n while (\n endIndex < count &&\n measurements[endIndex]!.end < scrollOffset + outerSize\n ) {\n endIndex++\n }\n\n return { startIndex, endIndex }\n}\n"],"names":["defaultKeyExtractor","index","defaultRangeExtractor","range","start","Math","max","startIndex","overscan","end","min","endIndex","count","arr","i","push","observeElementRect","instance","cb","element","scrollElement","handler","rect","width","height","round","getBoundingClientRect","observer","ResizeObserver","entries","entry","borderBoxSize","box","inlineSize","blockSize","observe","unobserve","observeWindowRect","innerWidth","innerHeight","addEventListener","passive","removeEventListener","observeElementOffset","options","horizontal","observeWindowOffset","measureElement","size","windowScroll","offset","_ref","_instance$scrollEleme","_instance$scrollEleme2","_ref$adjustments","adjustments","behavior","toOffset","scrollTo","elementScroll","_ref2","_instance$scrollEleme3","_instance$scrollEleme4","_ref2$adjustments","Virtualizer","opts","_this","unsubs","isScrolling","isScrollingTimeoutId","scrollToIndexTimeoutId","measurementsCache","itemSizeCache","Map","pendingMeasuredCacheIndexes","scrollDirection","scrollAdjustments","measureElementCache","_ro","get","forEach","_measureElement","target","disconnect","_get","_get2","_get3","setOptions","Object","_ref3","key","value","_extends","debug","initialOffset","paddingStart","paddingEnd","scrollPaddingStart","scrollPaddingEnd","getItemKey","rangeExtractor","onChange","initialRect","scrollMargin","scrollingDelay","indexAttribute","initialMeasurementsCache","lanes","notify","sync","maybeNotify","memo","calculateRange","process","env","NODE_ENV","initialDeps","cleanup","filter","Boolean","d","_didMount","_willUpdate","getScrollElement","_scrollToOffset","scrollOffset","undefined","scrollRect","clearTimeout","setTimeout","getSize","memoOptions","getFurthestMeasurement","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","has","lane","previousFurthestMeasurement","set","Array","from","values","sort","a","b","getMeasurements","_ref4","length","apply","slice","furthestMeasurement","measuredSize","estimateSize","outerSize","getIndexes","indexFromElement","node","attributeName","indexStr","getAttribute","console","warn","parseInt","item","isConnected","cached","prevNode","measuredItemSize","resizeItem","_this$itemSizeCache$g","itemSize","delta","info","getVirtualItems","indexes","virtualItems","k","len","getVirtualItemForOffset","notUndefined","findNearestBinarySearch","getOffsetForAlignment","align","scrollSizeProp","scrollSize","document","documentElement","maxOffset","getOffsetForIndex","isDynamicMode","cancelScrollToIndex","scrollToOffset","_temp","_ref5","_ref5$align","scrollToIndex","_temp2","_ref6","_ref6$align","initialAlign","_this$getOffsetForInd","elementInDOM","_this$getOffsetForInd2","approxEqual","scrollBy","_temp3","_ref7","getTotalSize","_this$getMeasurements","_ref8","scrollToFn","measure","low","high","getCurrentValue","middle","currentValue","_ref9","getOffset"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import { approxEqual, memo, notUndefined } from './utils'\n\nexport * from './utils'\n\n//\n\ntype ScrollDirection = 'forward' | 'backward'\n\ntype ScrollAlignment = 'start' | 'center' | 'end' | 'auto'\n\ntype ScrollBehavior = 'auto' | 'smooth'\n\nexport interface ScrollToOptions {\n align?: ScrollAlignment\n behavior?: ScrollBehavior\n}\n\ntype ScrollToOffsetOptions = ScrollToOptions\n\ntype ScrollToIndexOptions = ScrollToOptions\n\nexport interface Range {\n startIndex: number\n endIndex: number\n overscan: number\n count: number\n}\n\ntype Key = number | string\n\nexport interface VirtualItem {\n key: Key\n index: number\n start: number\n end: number\n size: number\n lane: number\n}\n\ninterface Rect {\n width: number\n height: number\n}\n\n//\n\nexport const defaultKeyExtractor = (index: number) => index\n\nexport const defaultRangeExtractor = (range: Range) => {\n const start = Math.max(range.startIndex - range.overscan, 0)\n const end = Math.min(range.endIndex + range.overscan, range.count - 1)\n\n const arr = []\n\n for (let i = start; i <= end; i++) {\n arr.push(i)\n }\n\n return arr\n}\n\nexport const observeElementRect = <T extends Element>(\n instance: Virtualizer<T, any>,\n cb: (rect: Rect) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = (rect: Rect) => {\n const { width, height } = rect\n cb({ width: Math.round(width), height: Math.round(height) })\n }\n\n handler(element.getBoundingClientRect())\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (entry?.borderBoxSize) {\n const box = entry.borderBoxSize[0]\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize })\n return\n }\n }\n handler(element.getBoundingClientRect())\n })\n\n observer.observe(element, { box: 'border-box' })\n\n return () => {\n observer.unobserve(element)\n }\n}\n\nexport const observeWindowRect = (\n instance: Virtualizer<Window, any>,\n cb: (rect: Rect) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight })\n }\n handler()\n\n element.addEventListener('resize', handler, {\n passive: true,\n })\n\n return () => {\n element.removeEventListener('resize', handler)\n }\n}\n\nexport const observeElementOffset = <T extends Element>(\n instance: Virtualizer<T, any>,\n cb: (offset: number) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = () => {\n cb(element[instance.options.horizontal ? 'scrollLeft' : 'scrollTop'])\n }\n handler()\n\n element.addEventListener('scroll', handler, {\n passive: true,\n })\n\n return () => {\n element.removeEventListener('scroll', handler)\n }\n}\n\nexport const observeWindowOffset = (\n instance: Virtualizer<Window, any>,\n cb: (offset: number) => void,\n) => {\n const element = instance.scrollElement\n if (!element) {\n return\n }\n\n const handler = () => {\n cb(element[instance.options.horizontal ? 'scrollX' : 'scrollY'])\n }\n handler()\n\n element.addEventListener('scroll', handler, {\n passive: true,\n })\n\n return () => {\n element.removeEventListener('scroll', handler)\n }\n}\n\nexport const measureElement = <TItemElement extends Element>(\n element: TItemElement,\n entry: ResizeObserverEntry | undefined,\n instance: Virtualizer<any, TItemElement>,\n) => {\n if (entry?.borderBoxSize) {\n const box = entry.borderBoxSize[0]\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? 'inlineSize' : 'blockSize'],\n )\n return size\n }\n }\n return Math.round(\n element.getBoundingClientRect()[\n instance.options.horizontal ? 'width' : 'height'\n ],\n )\n}\n\nexport const windowScroll = <T extends Window>(\n offset: number,\n {\n adjustments = 0,\n behavior,\n }: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<T, any>,\n) => {\n const toOffset = offset + adjustments\n\n instance.scrollElement?.scrollTo?.({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior,\n })\n}\n\nexport const elementScroll = <T extends Element>(\n offset: number,\n {\n adjustments = 0,\n behavior,\n }: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<T, any>,\n) => {\n const toOffset = offset + adjustments\n\n instance.scrollElement?.scrollTo?.({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior,\n })\n}\n\nexport interface VirtualizerOptions<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n> {\n // Required from the user\n count: number\n getScrollElement: () => TScrollElement | null\n estimateSize: (index: number) => number\n\n // Required from the framework adapter (but can be overridden)\n scrollToFn: (\n offset: number,\n options: { adjustments?: number; behavior?: ScrollBehavior },\n instance: Virtualizer<TScrollElement, TItemElement>,\n ) => void\n observeElementRect: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n cb: (rect: Rect) => void,\n ) => void | (() => void)\n observeElementOffset: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n cb: (offset: number) => void,\n ) => void | (() => void)\n\n // Optional\n debug?: any\n initialRect?: Rect\n onChange?: (\n instance: Virtualizer<TScrollElement, TItemElement>,\n sync: boolean,\n ) => void\n measureElement?: (\n element: TItemElement,\n entry: ResizeObserverEntry | undefined,\n instance: Virtualizer<TScrollElement, TItemElement>,\n ) => number\n overscan?: number\n horizontal?: boolean\n paddingStart?: number\n paddingEnd?: number\n scrollPaddingStart?: number\n scrollPaddingEnd?: number\n initialOffset?: number\n getItemKey?: (index: number) => Key\n rangeExtractor?: (range: Range) => number[]\n scrollMargin?: number\n scrollingDelay?: number\n indexAttribute?: string\n initialMeasurementsCache?: VirtualItem[]\n lanes?: number\n}\n\nexport class Virtualizer<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n> {\n private unsubs: (void | (() => void))[] = []\n options!: Required<VirtualizerOptions<TScrollElement, TItemElement>>\n scrollElement: TScrollElement | null = null\n isScrolling: boolean = false\n private isScrollingTimeoutId: ReturnType<typeof setTimeout> | null = null\n private scrollToIndexTimeoutId: ReturnType<typeof setTimeout> | null = null\n measurementsCache: VirtualItem[] = []\n private itemSizeCache = new Map<Key, number>()\n private pendingMeasuredCacheIndexes: number[] = []\n scrollRect: Rect\n scrollOffset: number\n scrollDirection: ScrollDirection | null = null\n private scrollAdjustments: number = 0\n measureElementCache = new Map<Key, TItemElement>()\n private observer = (() => {\n let _ro: ResizeObserver | null = null\n\n const get = () => {\n if (_ro) {\n return _ro\n } else if (typeof ResizeObserver !== 'undefined') {\n return (_ro = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n this._measureElement(entry.target as TItemElement, entry)\n })\n }))\n } else {\n return null\n }\n }\n\n return {\n disconnect: () => get()?.disconnect(),\n observe: (target: Element) =>\n get()?.observe(target, { box: 'border-box' }),\n unobserve: (target: Element) => get()?.unobserve(target),\n }\n })()\n range: { startIndex: number; endIndex: number } | null = null\n\n constructor(opts: VirtualizerOptions<TScrollElement, TItemElement>) {\n this.setOptions(opts)\n this.scrollRect = this.options.initialRect\n this.scrollOffset = this.options.initialOffset\n this.measurementsCache = this.options.initialMeasurementsCache\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size)\n })\n\n this.maybeNotify()\n }\n\n setOptions = (opts: VirtualizerOptions<TScrollElement, TItemElement>) => {\n Object.entries(opts).forEach(([key, value]) => {\n if (typeof value === 'undefined') delete (opts as any)[key]\n })\n\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {},\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n scrollingDelay: 150,\n indexAttribute: 'data-index',\n initialMeasurementsCache: [],\n lanes: 1,\n ...opts,\n }\n }\n\n private notify = (sync: boolean) => {\n this.options.onChange?.(this, sync)\n }\n\n private maybeNotify = memo(\n () => {\n this.calculateRange()\n\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null,\n ]\n },\n (isScrolling) => {\n this.notify(isScrolling)\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'maybeNotify',\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null,\n ] as [boolean, number | null, number | null],\n },\n )\n\n private cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d!())\n this.unsubs = []\n this.scrollElement = null\n }\n\n _didMount = () => {\n this.measureElementCache.forEach(this.observer.observe)\n return () => {\n this.observer.disconnect()\n this.cleanup()\n }\n }\n\n _willUpdate = () => {\n const scrollElement = this.options.getScrollElement()\n\n if (this.scrollElement !== scrollElement) {\n this.cleanup()\n\n this.scrollElement = scrollElement\n\n this._scrollToOffset(this.scrollOffset, {\n adjustments: undefined,\n behavior: undefined,\n })\n\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect\n this.maybeNotify()\n }),\n )\n\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset) => {\n this.scrollAdjustments = 0\n\n if (this.scrollOffset === offset) {\n return\n }\n\n if (this.isScrollingTimeoutId !== null) {\n clearTimeout(this.isScrollingTimeoutId)\n this.isScrollingTimeoutId = null\n }\n\n this.isScrolling = true\n this.scrollDirection =\n this.scrollOffset < offset ? 'forward' : 'backward'\n this.scrollOffset = offset\n\n this.maybeNotify()\n\n this.isScrollingTimeoutId = setTimeout(() => {\n this.isScrollingTimeoutId = null\n this.isScrolling = false\n this.scrollDirection = null\n\n this.maybeNotify()\n }, this.options.scrollingDelay)\n }),\n )\n }\n }\n\n private getSize = () => {\n return this.scrollRect[this.options.horizontal ? 'width' : 'height']\n }\n\n private memoOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n ],\n (count, paddingStart, scrollMargin, getItemKey) => {\n this.pendingMeasuredCacheIndexes = []\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n }\n },\n {\n key: false,\n },\n )\n\n private getFurthestMeasurement = (\n measurements: VirtualItem[],\n index: number,\n ) => {\n const furthestMeasurementsFound = new Map<number, true>()\n const furthestMeasurements = new Map<number, VirtualItem>()\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m]!\n\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue\n }\n\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane,\n )\n if (\n previousFurthestMeasurement == null ||\n measurement.end > previousFurthestMeasurement.end\n ) {\n furthestMeasurements.set(measurement.lane, measurement)\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true)\n }\n\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break\n }\n }\n\n return furthestMeasurements.size === this.options.lanes\n ? Array.from(furthestMeasurements.values()).sort(\n (a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n \n return a.end - b.end;\n },\n )[0]\n : undefined\n }\n\n private getMeasurements = memo(\n () => [this.memoOptions(), this.itemSizeCache],\n ({ count, paddingStart, scrollMargin, getItemKey }, itemSizeCache) => {\n const min =\n this.pendingMeasuredCacheIndexes.length > 0\n ? Math.min(...this.pendingMeasuredCacheIndexes)\n : 0\n this.pendingMeasuredCacheIndexes = []\n\n const measurements = this.measurementsCache.slice(0, min)\n\n for (let i = min; i < count; i++) {\n const key = getItemKey(i)\n\n const furthestMeasurement =\n this.options.lanes === 1\n ? measurements[i - 1]\n : this.getFurthestMeasurement(measurements, i)\n\n const start = furthestMeasurement\n ? furthestMeasurement.end\n : paddingStart + scrollMargin\n\n const measuredSize = itemSizeCache.get(key)\n const size =\n typeof measuredSize === 'number'\n ? measuredSize\n : this.options.estimateSize(i)\n\n const end = start + size\n\n const lane = furthestMeasurement\n ? furthestMeasurement.lane\n : i % this.options.lanes\n\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane,\n }\n }\n\n this.measurementsCache = measurements\n\n return measurements\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getMeasurements',\n debug: () => this.options.debug,\n },\n )\n\n calculateRange = memo(\n () => [this.getMeasurements(), this.getSize(), this.scrollOffset],\n (measurements, outerSize, scrollOffset) => {\n return (this.range =\n measurements.length > 0 && outerSize > 0\n ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n })\n : null)\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'calculateRange',\n debug: () => this.options.debug,\n },\n )\n\n private getIndexes = memo(\n () => [\n this.options.rangeExtractor,\n this.calculateRange(),\n this.options.overscan,\n this.options.count,\n ],\n (rangeExtractor, range, overscan, count) => {\n return range === null\n ? []\n : rangeExtractor({\n ...range,\n overscan,\n count,\n })\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getIndexes',\n debug: () => this.options.debug,\n },\n )\n\n indexFromElement = (node: TItemElement) => {\n const attributeName = this.options.indexAttribute\n const indexStr = node.getAttribute(attributeName)\n\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`,\n )\n return -1\n }\n\n return parseInt(indexStr, 10)\n }\n\n private _measureElement = (\n node: TItemElement,\n entry: ResizeObserverEntry | undefined,\n ) => {\n const item = this.measurementsCache[this.indexFromElement(node)]\n\n if (!item || !node.isConnected) {\n this.measureElementCache.forEach((cached, key) => {\n if (cached === node) {\n this.observer.unobserve(node)\n this.measureElementCache.delete(key)\n }\n })\n return\n }\n\n const prevNode = this.measureElementCache.get(item.key)\n\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode)\n }\n this.observer.observe(node)\n this.measureElementCache.set(item.key, node)\n }\n\n const measuredItemSize = this.options.measureElement(node, entry, this)\n\n this.resizeItem(item, measuredItemSize)\n }\n\n resizeItem = (item: VirtualItem, size: number) => {\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size\n const delta = size - itemSize\n\n if (delta !== 0) {\n if (\n item.start < this.scrollOffset + this.scrollAdjustments\n ) {\n if (process.env.NODE_ENV !== 'production' && this.options.debug) {\n console.info('correction', delta)\n }\n\n this._scrollToOffset(this.scrollOffset, {\n adjustments: (this.scrollAdjustments += delta),\n behavior: undefined,\n })\n }\n\n this.pendingMeasuredCacheIndexes.push(item.index)\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size))\n\n this.notify(false)\n }\n }\n\n measureElement = (node: TItemElement | null) => {\n if (!node) {\n return\n }\n\n this._measureElement(node, undefined)\n }\n\n getVirtualItems = memo(\n () => [this.getIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems: VirtualItem[] = []\n\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k]!\n const measurement = measurements[i]!\n\n virtualItems.push(measurement)\n }\n\n return virtualItems\n },\n {\n key: process.env.NODE_ENV !== 'production' && 'getIndexes',\n debug: () => this.options.debug,\n },\n )\n\n getVirtualItemForOffset = (offset: number) => {\n const measurements = this.getMeasurements()\n\n return notUndefined(\n measurements[\n findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index: number) => notUndefined(measurements[index]).start,\n offset,\n )\n ],\n )\n }\n\n getOffsetForAlignment = (toOffset: number, align: ScrollAlignment) => {\n const size = this.getSize()\n\n if (align === 'auto') {\n if (toOffset <= this.scrollOffset) {\n align = 'start'\n } else if (toOffset >= this.scrollOffset + size) {\n align = 'end'\n } else {\n align = 'start'\n }\n }\n\n if (align === 'start') {\n toOffset = toOffset\n } else if (align === 'end') {\n toOffset = toOffset - size\n } else if (align === 'center') {\n toOffset = toOffset - size / 2\n }\n\n const scrollSizeProp = this.options.horizontal\n ? 'scrollWidth'\n : 'scrollHeight'\n const scrollSize = this.scrollElement\n ? 'document' in this.scrollElement\n ? this.scrollElement.document.documentElement[scrollSizeProp]\n : this.scrollElement[scrollSizeProp]\n : 0\n\n const maxOffset = scrollSize - this.getSize()\n\n return Math.max(Math.min(maxOffset, toOffset), 0)\n }\n\n getOffsetForIndex = (index: number, align: ScrollAlignment = 'auto') => {\n index = Math.max(0, Math.min(index, this.options.count - 1))\n\n const measurement = notUndefined(this.getMeasurements()[index])\n\n if (align === 'auto') {\n if (\n measurement.end >=\n this.scrollOffset + this.getSize() - this.options.scrollPaddingEnd\n ) {\n align = 'end'\n } else if (\n measurement.start <=\n this.scrollOffset + this.options.scrollPaddingStart\n ) {\n align = 'start'\n } else {\n return [this.scrollOffset, align] as const\n }\n }\n\n const toOffset =\n align === 'end'\n ? measurement.end + this.options.scrollPaddingEnd\n : measurement.start - this.options.scrollPaddingStart\n\n return [this.getOffsetForAlignment(toOffset, align), align] as const\n }\n\n private isDynamicMode = () => this.measureElementCache.size > 0\n\n private cancelScrollToIndex = () => {\n if (this.scrollToIndexTimeoutId !== null) {\n clearTimeout(this.scrollToIndexTimeoutId)\n this.scrollToIndexTimeoutId = null\n }\n }\n\n scrollToOffset = (\n toOffset: number,\n { align = 'start', behavior }: ScrollToOffsetOptions = {},\n ) => {\n this.cancelScrollToIndex()\n\n if (behavior === 'smooth' && this.isDynamicMode()) {\n console.warn(\n 'The `smooth` scroll behavior is not fully supported with dynamic size.',\n )\n }\n\n this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {\n adjustments: undefined,\n behavior,\n })\n }\n\n scrollToIndex = (\n index: number,\n { align: initialAlign = 'auto', behavior }: ScrollToIndexOptions = {},\n ) => {\n index = Math.max(0, Math.min(index, this.options.count - 1))\n\n this.cancelScrollToIndex()\n\n if (behavior === 'smooth' && this.isDynamicMode()) {\n console.warn(\n 'The `smooth` scroll behavior is not fully supported with dynamic size.',\n )\n }\n\n const [toOffset, align] = this.getOffsetForIndex(index, initialAlign)\n\n this._scrollToOffset(toOffset, { adjustments: undefined, behavior })\n\n if (behavior !== 'smooth' && this.isDynamicMode()) {\n this.scrollToIndexTimeoutId = setTimeout(() => {\n this.scrollToIndexTimeoutId = null\n\n const elementInDOM = this.measureElementCache.has(\n this.options.getItemKey(index),\n )\n\n if (elementInDOM) {\n const [toOffset] = this.getOffsetForIndex(index, align)\n\n if (!approxEqual(toOffset, this.scrollOffset)) {\n this.scrollToIndex(index, { align, behavior })\n }\n } else {\n this.scrollToIndex(index, { align, behavior })\n }\n })\n }\n }\n\n scrollBy = (delta: number, { behavior }: ScrollToOffsetOptions = {}) => {\n this.cancelScrollToIndex()\n\n if (behavior === 'smooth' && this.isDynamicMode()) {\n console.warn(\n 'The `smooth` scroll behavior is not fully supported with dynamic size.',\n )\n }\n\n this._scrollToOffset(this.scrollOffset + delta, {\n adjustments: undefined,\n behavior,\n })\n }\n\n getTotalSize = () =>\n (this.getMeasurements()[this.options.count - 1]?.end ||\n this.options.paddingStart) -\n this.options.scrollMargin +\n this.options.paddingEnd\n\n private _scrollToOffset = (\n offset: number,\n {\n adjustments,\n behavior,\n }: {\n adjustments: number | undefined\n behavior: ScrollBehavior | undefined\n },\n ) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this)\n }\n\n measure = () => {\n this.itemSizeCache = new Map()\n this.notify(false)\n }\n}\n\nconst findNearestBinarySearch = (\n low: number,\n high: number,\n getCurrentValue: (i: number) => number,\n value: number,\n) => {\n while (low <= high) {\n const middle = ((low + high) / 2) | 0\n const currentValue = getCurrentValue(middle)\n\n if (currentValue < value) {\n low = middle + 1\n } else if (currentValue > value) {\n high = middle - 1\n } else {\n return middle\n }\n }\n\n if (low > 0) {\n return low - 1\n } else {\n return 0\n }\n}\n\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n}: {\n measurements: VirtualItem[]\n outerSize: number\n scrollOffset: number\n}) {\n const count = measurements.length - 1\n const getOffset = (index: number) => measurements[index]!.start\n\n const startIndex = findNearestBinarySearch(0, count, getOffset, scrollOffset)\n let endIndex = startIndex\n\n while (\n endIndex < count &&\n measurements[endIndex]!.end < scrollOffset + outerSize\n ) {\n endIndex++\n }\n\n return { startIndex, endIndex }\n}\n"],"names":["defaultKeyExtractor","index","defaultRangeExtractor","range","start","Math","max","startIndex","overscan","end","min","endIndex","count","arr","i","push","observeElementRect","instance","cb","element","scrollElement","handler","rect","width","height","round","getBoundingClientRect","observer","ResizeObserver","entries","entry","borderBoxSize","box","inlineSize","blockSize","observe","unobserve","observeWindowRect","innerWidth","innerHeight","addEventListener","passive","removeEventListener","observeElementOffset","options","horizontal","observeWindowOffset","measureElement","size","windowScroll","offset","_ref","_instance$scrollEleme","_instance$scrollEleme2","_ref$adjustments","adjustments","behavior","toOffset","scrollTo","elementScroll","_ref2","_instance$scrollEleme3","_instance$scrollEleme4","_ref2$adjustments","Virtualizer","opts","_this","unsubs","isScrolling","isScrollingTimeoutId","scrollToIndexTimeoutId","measurementsCache","itemSizeCache","Map","pendingMeasuredCacheIndexes","scrollDirection","scrollAdjustments","measureElementCache","_ro","get","forEach","_measureElement","target","disconnect","_get","_get2","_get3","setOptions","Object","_ref3","key","value","_extends","debug","initialOffset","paddingStart","paddingEnd","scrollPaddingStart","scrollPaddingEnd","getItemKey","rangeExtractor","onChange","initialRect","scrollMargin","scrollingDelay","indexAttribute","initialMeasurementsCache","lanes","notify","sync","maybeNotify","memo","calculateRange","process","env","NODE_ENV","initialDeps","cleanup","filter","Boolean","d","_didMount","_willUpdate","getScrollElement","_scrollToOffset","scrollOffset","undefined","scrollRect","clearTimeout","setTimeout","getSize","memoOptions","getFurthestMeasurement","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","has","lane","previousFurthestMeasurement","set","Array","from","values","sort","a","b","getMeasurements","_ref4","length","apply","slice","furthestMeasurement","measuredSize","estimateSize","outerSize","getIndexes","indexFromElement","node","attributeName","indexStr","getAttribute","console","warn","parseInt","item","isConnected","cached","prevNode","measuredItemSize","resizeItem","_this$itemSizeCache$g","itemSize","delta","info","getVirtualItems","indexes","virtualItems","k","len","getVirtualItemForOffset","notUndefined","findNearestBinarySearch","getOffsetForAlignment","align","scrollSizeProp","scrollSize","document","documentElement","maxOffset","getOffsetForIndex","isDynamicMode","cancelScrollToIndex","scrollToOffset","_temp","_ref5","_ref5$align","scrollToIndex","_temp2","_ref6","_ref6$align","initialAlign","_this$getOffsetForInd","elementInDOM","_this$getOffsetForInd2","approxEqual","scrollBy","_temp3","_ref7","getTotalSize","_this$getMeasurements","_ref8","scrollToFn","measure","low","high","getCurrentValue","middle","currentValue","_ref9","getOffset"],"mappings":"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"}
|
|
@@ -378,6 +378,9 @@
|
|
|
378
378
|
}
|
|
379
379
|
}
|
|
380
380
|
return furthestMeasurements.size === _this.options.lanes ? Array.from(furthestMeasurements.values()).sort(function (a, b) {
|
|
381
|
+
if (a.end === b.end) {
|
|
382
|
+
return a.index - b.index;
|
|
383
|
+
}
|
|
381
384
|
return a.end - b.end;
|
|
382
385
|
})[0] : undefined;
|
|
383
386
|
};
|
|
@@ -479,7 +482,7 @@
|
|
|
479
482
|
var itemSize = (_this$itemSizeCache$g = _this.itemSizeCache.get(item.key)) != null ? _this$itemSizeCache$g : item.size;
|
|
480
483
|
var delta = size - itemSize;
|
|
481
484
|
if (delta !== 0) {
|
|
482
|
-
if (item.start < _this.scrollOffset) {
|
|
485
|
+
if (item.start < _this.scrollOffset + _this.scrollAdjustments) {
|
|
483
486
|
if (_this.options.debug) {
|
|
484
487
|
console.info('correction', delta);
|
|
485
488
|
}
|