@tanstack/virtual-core 3.0.4 → 3.1.1
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/dist/cjs/index.cjs +649 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +126 -0
- package/dist/cjs/utils.cjs +59 -0
- package/dist/cjs/utils.cjs.map +1 -0
- package/{build/lib → dist/esm}/index.d.ts +1 -1
- package/dist/esm/index.js +649 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/utils.d.ts +10 -0
- package/dist/esm/utils.js +59 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +33 -23
- package/src/index.ts +22 -21
- package/build/lib/_virtual/_rollupPluginBabelHelpers.esm.js +0 -27
- package/build/lib/_virtual/_rollupPluginBabelHelpers.esm.js.map +0 -1
- package/build/lib/_virtual/_rollupPluginBabelHelpers.js +0 -31
- package/build/lib/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/lib/_virtual/_rollupPluginBabelHelpers.mjs +0 -27
- package/build/lib/_virtual/_rollupPluginBabelHelpers.mjs.map +0 -1
- package/build/lib/index.esm.js +0 -653
- package/build/lib/index.esm.js.map +0 -1
- package/build/lib/index.js +0 -668
- package/build/lib/index.js.map +0 -1
- package/build/lib/index.mjs +0 -653
- package/build/lib/index.mjs.map +0 -1
- package/build/lib/utils.esm.js +0 -58
- package/build/lib/utils.esm.js.map +0 -1
- package/build/lib/utils.js +0 -64
- package/build/lib/utils.js.map +0 -1
- package/build/lib/utils.mjs +0 -58
- package/build/lib/utils.mjs.map +0 -1
- package/build/umd/index.development.js +0 -732
- package/build/umd/index.development.js.map +0 -1
- package/build/umd/index.production.js +0 -12
- package/build/umd/index.production.js.map +0 -1
- /package/{build/lib/utils.d.ts → dist/cjs/utils.d.cts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.development.js","sources":["../../src/utils.ts","../../src/index.ts"],"sourcesContent":["export type NoInfer<A extends any> = [A][A extends any ? 0 : never]\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: false | string\n debug?: () => any\n onChange?: (result: TResult) => void\n initialDeps?: TDeps\n },\n) {\n let deps = opts.initialDeps ?? []\n let result: TResult | undefined\n\n return (): TResult => {\n let depTime: number\n if (opts.key && opts.debug?.()) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug?.()) resultTime = Date.now()\n\n result = fn(...newDeps)\n\n if (opts.key && opts.debug?.()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120),\n )}deg 100% 31%);`,\n opts?.key,\n )\n }\n\n opts?.onChange?.(result)\n\n return result!\n }\n}\n\nexport function notUndefined<T>(value: T | undefined, msg?: string): T {\n if (value === undefined) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : ''}`)\n } else {\n return value\n }\n}\n\nexport const approxEqual = (a: number, b: number) => Math.abs(a - b) < 1\n","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 const measurements = this.getMeasurements();\n\n let end: number;\n // If there are no measurements, set the end to paddingStart\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else {\n // If lanes is 1, use the last measurement's end, otherwise find the maximum end value among all measurements\n end = this.options.lanes === 1 \n ? (measurements[measurements.length - 1]?.end ?? 0)\n : Math.max(...measurements.slice(-this.options.lanes).map((m) => m.end));\n }\n\n return end -\n this.options.scrollMargin +\n this.options.paddingEnd\n }\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":["memo","getDeps","fn","opts","_opts$initialDeps","deps","initialDeps","result","depTime","key","debug","Date","now","newDeps","depsChanged","length","some","dep","index","resultTime","apply","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","onChange","notUndefined","value","msg","undefined","Error","approxEqual","a","b","abs","defaultKeyExtractor","defaultRangeExtractor","range","start","startIndex","overscan","end","endIndex","count","arr","i","push","observeElementRect","instance","cb","element","scrollElement","handler","rect","width","height","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","_this","unsubs","isScrolling","isScrollingTimeoutId","scrollToIndexTimeoutId","measurementsCache","itemSizeCache","Map","pendingMeasuredCacheIndexes","scrollDirection","scrollAdjustments","measureElementCache","_ro","get","forEach","_measureElement","target","disconnect","_get","_get2","_get3","setOptions","Object","_ref3","_extends","initialOffset","paddingStart","paddingEnd","scrollPaddingStart","scrollPaddingEnd","getItemKey","rangeExtractor","initialRect","scrollMargin","scrollingDelay","indexAttribute","initialMeasurementsCache","lanes","notify","sync","maybeNotify","calculateRange","cleanup","filter","Boolean","d","_didMount","_willUpdate","getScrollElement","_scrollToOffset","scrollOffset","scrollRect","clearTimeout","setTimeout","getSize","memoOptions","getFurthestMeasurement","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","has","lane","previousFurthestMeasurement","set","Array","from","values","sort","getMeasurements","_ref4","slice","furthestMeasurement","measuredSize","estimateSize","outerSize","getIndexes","indexFromElement","node","attributeName","indexStr","getAttribute","warn","parseInt","item","isConnected","cached","prevNode","measuredItemSize","resizeItem","_this$itemSizeCache$g","itemSize","delta","getVirtualItems","indexes","virtualItems","k","len","getVirtualItemForOffset","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","scrollBy","_temp3","_ref7","getTotalSize","_measurements$end","_measurements","map","_ref8","scrollToFn","measure","low","high","getCurrentValue","middle","currentValue","_ref9","getOffset"],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* virtual-core
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) TanStack
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
!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,i,r=null!=(o=t.initialDeps)?o:[];return function(){var o;t.key&&null!=t.debug&&t.debug()&&(o=Date.now());var s,l=e();if(!(l.length!==r.length||l.some((function(e,n){return r[n]!==e}))))return i;if(r=l,t.key&&null!=t.debug&&t.debug()&&(s=Date.now()),i=n.apply(void 0,l),t.key&&null!=t.debug&&t.debug()){var a=Math.round(100*(Date.now()-o))/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 null==t||null==t.onChange||t.onChange(i),i}}function o(e,n){if(void 0===e)throw new Error("Unexpected undefined"+(n?": "+n:""));return e}var i=function(e,n){return Math.abs(e-n)<1},r=function(e){return e},s=function(e){for(var n=Math.max(e.startIndex-e.overscan,0),t=Math.min(e.endIndex+e.overscan,e.count-1),o=[],i=n;i<=t;i++)o.push(i);return o},l=function(e,n,t){if(null!=n&&n.borderBoxSize){var o=n.borderBoxSize[0];if(o)return Math.round(o[t.options.horizontal?"inlineSize":"blockSize"])}return Math.round(e.getBoundingClientRect()[t.options.horizontal?"width":"height"])},a=function(e,n,t,o){for(;e<=n;){var i=(e+n)/2|0,r=t(i);if(r<o)e=i+1;else{if(!(r>o))return i;n=i-1}}return e>0?e-1:0};e.Virtualizer=function(e){var u,c,d=this;this.unsubs=[],this.scrollElement=null,this.isScrolling=!1,this.isScrollingTimeoutId=null,this.scrollToIndexTimeoutId=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollDirection=null,this.scrollAdjustments=0,this.measureElementCache=new Map,this.observer=(u=null,c=function(){return u||("undefined"!=typeof ResizeObserver?u=new ResizeObserver((function(e){e.forEach((function(e){d._measureElement(e.target,e)}))})):null)},{disconnect:function(){var e;return null==(e=c())?void 0:e.disconnect()},observe:function(e){var n;return null==(n=c())?void 0:n.observe(e,{box:"border-box"})},unobserve:function(e){var n;return null==(n=c())?void 0:n.unobserve(e)}}),this.range=null,this.setOptions=function(e){Object.entries(e).forEach((function(n){var t=n[0];void 0===n[1]&&delete e[t]})),d.options=n({debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:r,rangeExtractor:s,onChange:function(){},measureElement:l,initialRect:{width:0,height:0},scrollMargin:0,scrollingDelay:150,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1},e)},this.notify=function(e){null==d.options.onChange||d.options.onChange(d,e)},this.maybeNotify=t((function(){return d.calculateRange(),[d.isScrolling,d.range?d.range.startIndex:null,d.range?d.range.endIndex:null]}),(function(e){d.notify(e)}),{key:!1,debug:function(){return d.options.debug},initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=function(){d.unsubs.filter(Boolean).forEach((function(e){return e()})),d.unsubs=[],d.scrollElement=null},this._didMount=function(){return d.measureElementCache.forEach(d.observer.observe),function(){d.observer.disconnect(),d.cleanup()}},this._willUpdate=function(){var e=d.options.getScrollElement();d.scrollElement!==e&&(d.cleanup(),d.scrollElement=e,d._scrollToOffset(d.scrollOffset,{adjustments:void 0,behavior:void 0}),d.unsubs.push(d.options.observeElementRect(d,(function(e){d.scrollRect=e,d.maybeNotify()}))),d.unsubs.push(d.options.observeElementOffset(d,(function(e){d.scrollAdjustments=0,d.scrollOffset!==e&&(null!==d.isScrollingTimeoutId&&(clearTimeout(d.isScrollingTimeoutId),d.isScrollingTimeoutId=null),d.isScrolling=!0,d.scrollDirection=d.scrollOffset<e?"forward":"backward",d.scrollOffset=e,d.maybeNotify(),d.isScrollingTimeoutId=setTimeout((function(){d.isScrollingTimeoutId=null,d.isScrolling=!1,d.scrollDirection=null,d.maybeNotify()}),d.options.scrollingDelay))}))))},this.getSize=function(){return d.scrollRect[d.options.horizontal?"width":"height"]},this.memoOptions=t((function(){return[d.options.count,d.options.paddingStart,d.options.scrollMargin,d.options.getItemKey]}),(function(e,n,t,o){return d.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:n,scrollMargin:t,getItemKey:o}}),{key:!1}),this.getFurthestMeasurement=function(e,n){for(var t=new Map,o=new Map,i=n-1;i>=0;i--){var r=e[i];if(!t.has(r.lane)){var s=o.get(r.lane);if(null==s||r.end>s.end?o.set(r.lane,r):r.end<s.end&&t.set(r.lane,!0),t.size===d.options.lanes)break}}return o.size===d.options.lanes?Array.from(o.values()).sort((function(e,n){return e.end===n.end?e.index-n.index:e.end-n.end}))[0]:void 0},this.getMeasurements=t((function(){return[d.memoOptions(),d.itemSizeCache]}),(function(e,n){var t=e.count,o=e.paddingStart,i=e.scrollMargin,r=e.getItemKey,s=d.pendingMeasuredCacheIndexes.length>0?Math.min.apply(Math,d.pendingMeasuredCacheIndexes):0;d.pendingMeasuredCacheIndexes=[];for(var l=d.measurementsCache.slice(0,s),a=s;a<t;a++){var u=r(a),c=1===d.options.lanes?l[a-1]:d.getFurthestMeasurement(l,a),f=c?c.end:o+i,h=n.get(u),m="number"==typeof h?h:d.options.estimateSize(a),g=f+m,v=c?c.lane:a%d.options.lanes;l[a]={index:a,start:f,size:m,end:g,key:u,lane:v}}return d.measurementsCache=l,l}),{key:!1,debug:function(){return d.options.debug}}),this.calculateRange=t((function(){return[d.getMeasurements(),d.getSize(),d.scrollOffset]}),(function(e,n,t){return d.range=e.length>0&&n>0?function(e){var n=e.measurements,t=e.outerSize,o=e.scrollOffset,i=n.length-1,r=function(e){return n[e].start},s=a(0,i,r,o),l=s;for(;l<i&&n[l].end<o+t;)l++;return{startIndex:s,endIndex:l}}({measurements:e,outerSize:n,scrollOffset:t}):null}),{key:!1,debug:function(){return d.options.debug}}),this.getIndexes=t((function(){return[d.options.rangeExtractor,d.calculateRange(),d.options.overscan,d.options.count]}),(function(e,t,o,i){return null===t?[]:e(n({},t,{overscan:o,count:i}))}),{key:!1,debug:function(){return d.options.debug}}),this.indexFromElement=function(e){var n=d.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,n){var t=d.measurementsCache[d.indexFromElement(e)];if(t&&e.isConnected){var o=d.measureElementCache.get(t.key);o!==e&&(o&&d.observer.unobserve(o),d.observer.observe(e),d.measureElementCache.set(t.key,e));var i=d.options.measureElement(e,n,d);d.resizeItem(t,i)}else d.measureElementCache.forEach((function(n,t){n===e&&(d.observer.unobserve(e),d.measureElementCache.delete(t))}))},this.resizeItem=function(e,n){var t,o=n-(null!=(t=d.itemSizeCache.get(e.key))?t:e.size);0!==o&&(e.start<d.scrollOffset+d.scrollAdjustments&&d._scrollToOffset(d.scrollOffset,{adjustments:d.scrollAdjustments+=o,behavior:void 0}),d.pendingMeasuredCacheIndexes.push(e.index),d.itemSizeCache=new Map(d.itemSizeCache.set(e.key,n)),d.notify(!1))},this.measureElement=function(e){e&&d._measureElement(e,void 0)},this.getVirtualItems=t((function(){return[d.getIndexes(),d.getMeasurements()]}),(function(e,n){for(var t=[],o=0,i=e.length;o<i;o++){var r=n[e[o]];t.push(r)}return t}),{key:!1,debug:function(){return d.options.debug}}),this.getVirtualItemForOffset=function(e){var n=d.getMeasurements();return o(n[a(0,n.length-1,(function(e){return o(n[e]).start}),e)])},this.getOffsetForAlignment=function(e,n){var t=d.getSize();"auto"===n&&(n=e<=d.scrollOffset?"start":e>=d.scrollOffset+t?"end":"start"),"start"===n||("end"===n?e-=t:"center"===n&&(e-=t/2));var o=d.options.horizontal?"scrollWidth":"scrollHeight",i=(d.scrollElement?"document"in d.scrollElement?d.scrollElement.document.documentElement[o]:d.scrollElement[o]:0)-d.getSize();return Math.max(Math.min(i,e),0)},this.getOffsetForIndex=function(e,n){void 0===n&&(n="auto"),e=Math.max(0,Math.min(e,d.options.count-1));var t=o(d.getMeasurements()[e]);if("auto"===n)if(t.end>=d.scrollOffset+d.getSize()-d.options.scrollPaddingEnd)n="end";else{if(!(t.start<=d.scrollOffset+d.options.scrollPaddingStart))return[d.scrollOffset,n];n="start"}var i="end"===n?t.end+d.options.scrollPaddingEnd:t.start-d.options.scrollPaddingStart;return[d.getOffsetForAlignment(i,n),n]},this.isDynamicMode=function(){return d.measureElementCache.size>0},this.cancelScrollToIndex=function(){null!==d.scrollToIndexTimeoutId&&(clearTimeout(d.scrollToIndexTimeoutId),d.scrollToIndexTimeoutId=null)},this.scrollToOffset=function(e,n){var t=void 0===n?{}:n,o=t.align,i=void 0===o?"start":o,r=t.behavior;d.cancelScrollToIndex(),"smooth"===r&&d.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),d._scrollToOffset(d.getOffsetForAlignment(e,i),{adjustments:void 0,behavior:r})},this.scrollToIndex=function(e,n){var t=void 0===n?{}:n,o=t.align,r=void 0===o?"auto":o,s=t.behavior;e=Math.max(0,Math.min(e,d.options.count-1)),d.cancelScrollToIndex(),"smooth"===s&&d.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size.");var l=d.getOffsetForIndex(e,r),a=l[0],u=l[1];d._scrollToOffset(a,{adjustments:void 0,behavior:s}),"smooth"!==s&&d.isDynamicMode()&&(d.scrollToIndexTimeoutId=setTimeout((function(){if(d.scrollToIndexTimeoutId=null,d.measureElementCache.has(d.options.getItemKey(e))){var n=d.getOffsetForIndex(e,u)[0];i(n,d.scrollOffset)||d.scrollToIndex(e,{align:u,behavior:s})}else d.scrollToIndex(e,{align:u,behavior:s})})))},this.scrollBy=function(e,n){var t=(void 0===n?{}:n).behavior;d.cancelScrollToIndex(),"smooth"===t&&d.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),d._scrollToOffset(d.scrollOffset+e,{adjustments:void 0,behavior:t})},this.getTotalSize=function(){var e,n,t,o=d.getMeasurements();0===o.length?e=d.options.paddingStart:e=1===d.options.lanes?null!=(n=null==(t=o[o.length-1])?void 0:t.end)?n:0:Math.max.apply(Math,o.slice(-d.options.lanes).map((function(e){return e.end})));return e-d.options.scrollMargin+d.options.paddingEnd},this._scrollToOffset=function(e,n){var t=n.adjustments,o=n.behavior;d.options.scrollToFn(e,{behavior:o,adjustments:t},d)},this.measure=function(){d.itemSizeCache=new Map,d.notify(!1)},this.setOptions(e),this.scrollRect=this.options.initialRect,this.scrollOffset=this.options.initialOffset,this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach((function(e){d.itemSizeCache.set(e.key,e.size)})),this.maybeNotify()},e.approxEqual=i,e.defaultKeyExtractor=r,e.defaultRangeExtractor=s,e.elementScroll=function(e,n,t){var o,i,r=n.adjustments,s=void 0===r?0:r,l=n.behavior,a=e+s;null==(o=t.scrollElement)||null==o.scrollTo||o.scrollTo(((i={})[t.options.horizontal?"left":"top"]=a,i.behavior=l,i))},e.measureElement=l,e.memo=t,e.notUndefined=o,e.observeElementOffset=function(e,n){var t=e.scrollElement;if(t){var o=function(){n(t[e.options.horizontal?"scrollLeft":"scrollTop"])};return o(),t.addEventListener("scroll",o,{passive:!0}),function(){t.removeEventListener("scroll",o)}}},e.observeElementRect=function(e,n){var t=e.scrollElement;if(t){var o=function(e){var t=e.width,o=e.height;n({width:Math.round(t),height:Math.round(o)})};o(t.getBoundingClientRect());var i=new ResizeObserver((function(e){var n=e[0];if(null!=n&&n.borderBoxSize){var i=n.borderBoxSize[0];if(i)return void o({width:i.inlineSize,height:i.blockSize})}o(t.getBoundingClientRect())}));return i.observe(t,{box:"border-box"}),function(){i.unobserve(t)}}},e.observeWindowOffset=function(e,n){var t=e.scrollElement;if(t){var o=function(){n(t[e.options.horizontal?"scrollX":"scrollY"])};return o(),t.addEventListener("scroll",o,{passive:!0}),function(){t.removeEventListener("scroll",o)}}},e.observeWindowRect=function(e,n){var t=e.scrollElement;if(t){var o=function(){n({width:t.innerWidth,height:t.innerHeight})};return o(),t.addEventListener("resize",o,{passive:!0}),function(){t.removeEventListener("resize",o)}}},e.windowScroll=function(e,n,t){var o,i,r=n.adjustments,s=void 0===r?0:r,l=n.behavior,a=e+s;null==(o=t.scrollElement)||null==o.scrollTo||o.scrollTo(((i={})[t.options.horizontal?"left":"top"]=a,i.behavior=l,i))},Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
12
|
-
//# sourceMappingURL=index.production.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.production.js","sources":["../../src/utils.ts","../../src/index.ts"],"sourcesContent":["export type NoInfer<A extends any> = [A][A extends any ? 0 : never]\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: false | string\n debug?: () => any\n onChange?: (result: TResult) => void\n initialDeps?: TDeps\n },\n) {\n let deps = opts.initialDeps ?? []\n let result: TResult | undefined\n\n return (): TResult => {\n let depTime: number\n if (opts.key && opts.debug?.()) depTime = Date.now()\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug?.()) resultTime = Date.now()\n\n result = fn(...newDeps)\n\n if (opts.key && opts.debug?.()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120),\n )}deg 100% 31%);`,\n opts?.key,\n )\n }\n\n opts?.onChange?.(result)\n\n return result!\n }\n}\n\nexport function notUndefined<T>(value: T | undefined, msg?: string): T {\n if (value === undefined) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : ''}`)\n } else {\n return value\n }\n}\n\nexport const approxEqual = (a: number, b: number) => Math.abs(a - b) < 1\n","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 const measurements = this.getMeasurements();\n\n let end: number;\n // If there are no measurements, set the end to paddingStart\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else {\n // If lanes is 1, use the last measurement's end, otherwise find the maximum end value among all measurements\n end = this.options.lanes === 1 \n ? (measurements[measurements.length - 1]?.end ?? 0)\n : Math.max(...measurements.slice(-this.options.lanes).map((m) => m.end));\n }\n\n return end -\n this.options.scrollMargin +\n this.options.paddingEnd\n }\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":["memo","getDeps","fn","opts","_opts$initialDeps","result","deps","initialDeps","depTime","key","debug","Date","now","resultTime","newDeps","length","some","dep","index","apply","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","onChange","notUndefined","value","msg","undefined","Error","approxEqual","a","b","abs","defaultKeyExtractor","defaultRangeExtractor","range","start","startIndex","overscan","end","endIndex","count","arr","i","push","measureElement","element","entry","instance","borderBoxSize","box","options","horizontal","getBoundingClientRect","findNearestBinarySearch","low","high","getCurrentValue","middle","currentValue","_ro","get","_this","this","unsubs","scrollElement","isScrolling","isScrollingTimeoutId","scrollToIndexTimeoutId","measurementsCache","itemSizeCache","Map","pendingMeasuredCacheIndexes","scrollDirection","scrollAdjustments","measureElementCache","observer","ResizeObserver","entries","forEach","_measureElement","target","disconnect","_get","observe","_get2","unobserve","_get3","setOptions","Object","_ref3","_extends","initialOffset","paddingStart","paddingEnd","scrollPaddingStart","scrollPaddingEnd","getItemKey","rangeExtractor","initialRect","width","height","scrollMargin","scrollingDelay","indexAttribute","initialMeasurementsCache","lanes","notify","sync","maybeNotify","calculateRange","process","cleanup","filter","Boolean","d","_didMount","_willUpdate","getScrollElement","_scrollToOffset","scrollOffset","adjustments","behavior","observeElementRect","rect","scrollRect","observeElementOffset","offset","clearTimeout","setTimeout","getSize","memoOptions","getFurthestMeasurement","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","has","lane","previousFurthestMeasurement","set","size","Array","from","values","sort","getMeasurements","_ref4","slice","furthestMeasurement","measuredSize","estimateSize","outerSize","_ref9","getOffset","getIndexes","indexFromElement","node","attributeName","indexStr","getAttribute","parseInt","warn","item","isConnected","prevNode","measuredItemSize","resizeItem","cached","_this$itemSizeCache$g","delta","getVirtualItems","indexes","virtualItems","k","len","getVirtualItemForOffset","getOffsetForAlignment","toOffset","align","scrollSizeProp","maxOffset","document","documentElement","getOffsetForIndex","isDynamicMode","cancelScrollToIndex","scrollToOffset","_temp","_ref5","_ref5$align","scrollToIndex","_temp2","_ref6","_ref6$align","initialAlign","_this$getOffsetForInd","scrollBy","_temp3","getTotalSize","_measurements$end","_measurements","map","_ref8","scrollToFn","measure","_ref2","_instance$scrollEleme3","_instance$scrollEleme4","_ref2$adjustments","scrollTo","cb","handler","addEventListener","passive","removeEventListener","inlineSize","blockSize","innerWidth","innerHeight","_ref","_instance$scrollEleme","_instance$scrollEleme2","_ref$adjustments"],"mappings":"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"}
|
|
File without changes
|