@tanstack/solid-virtual 3.0.0-beta.19 → 3.0.0-beta.20

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.production.js","sources":["../../../virtual-core/build/esm/index.js","../../src/index.tsx"],"sourcesContent":["/**\n * virtual-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return () => {\n let depTime;\n if (opts.key && opts.debug != null && opts.debug()) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n\n if (!depsChanged) {\n return result;\n }\n\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug != null && opts.debug()) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result);\n\n if (opts.key && opts.debug != null && 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, num) => {\n str = String(str);\n\n while (str.length < num) {\n str = ' ' + str;\n }\n\n return str;\n };\n\n console.info(\"%c\\u23F1 \" + pad(resultEndTime, 5) + \" /\" + pad(depEndTime, 5) + \" ms\", \"\\n font-size: .6rem;\\n font-weight: bold;\\n color: hsl(\" + Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120)) + \"deg 100% 31%);\", opts == null ? void 0 : opts.key);\n }\n\n return result;\n };\n}\n\n//\nconst defaultKeyExtractor = index => index;\nconst defaultRangeExtractor = range => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n\n return arr;\n};\n\nconst memoRectCallback = (instance, cb) => {\n let prev = {\n height: -1,\n width: -1\n };\n return rect => {\n if (instance.options.horizontal ? rect.width !== prev.width : rect.height !== prev.height) {\n cb(rect);\n }\n\n prev = rect;\n };\n};\n\nconst observeElementRect = (instance, cb) => {\n const observer = new ResizeObserver(entries => {\n var _entries$, _entries$2;\n\n cb({\n width: (_entries$ = entries[0]) == null ? void 0 : _entries$.contentRect.width,\n height: (_entries$2 = entries[0]) == null ? void 0 : _entries$2.contentRect.height\n });\n });\n\n if (!instance.scrollElement) {\n return;\n }\n\n cb(instance.scrollElement.getBoundingClientRect());\n observer.observe(instance.scrollElement);\n return () => {\n observer.unobserve(instance.scrollElement);\n };\n};\nconst observeWindowRect = (instance, cb) => {\n const memoizedCallback = memoRectCallback(instance, cb);\n\n const onResize = () => memoizedCallback({\n width: instance.scrollElement.innerWidth,\n height: instance.scrollElement.innerHeight\n });\n\n if (!instance.scrollElement) {\n return;\n }\n\n onResize();\n instance.scrollElement.addEventListener('resize', onResize, {\n capture: false,\n passive: true\n });\n return () => {\n instance.scrollElement.removeEventListener('resize', onResize);\n };\n};\nconst scrollProps = {\n element: ['scrollLeft', 'scrollTop'],\n window: ['scrollX', 'scrollY']\n};\n\nconst createOffsetObserver = mode => {\n return (instance, cb) => {\n if (!instance.scrollElement) {\n return;\n }\n\n const propX = scrollProps[mode][0];\n const propY = scrollProps[mode][1];\n let prevX = instance.scrollElement[propX];\n let prevY = instance.scrollElement[propY];\n\n const scroll = () => {\n const offset = instance.scrollElement[instance.options.horizontal ? propX : propY];\n cb(Math.max(0, offset - instance.options.scrollMargin));\n };\n\n scroll();\n\n const onScroll = e => {\n const target = e.currentTarget;\n const scrollX = target[propX];\n const scrollY = target[propY];\n\n if (instance.options.horizontal ? prevX - scrollX : prevY - scrollY) {\n scroll();\n }\n\n prevX = scrollX;\n prevY = scrollY;\n };\n\n instance.scrollElement.addEventListener('scroll', onScroll, {\n capture: false,\n passive: true\n });\n return () => {\n instance.scrollElement.removeEventListener('scroll', onScroll);\n };\n };\n};\n\nconst observeElementOffset = createOffsetObserver('element');\nconst observeWindowOffset = createOffsetObserver('window');\nconst measureElement = (element, instance) => {\n return element.getBoundingClientRect()[instance.options.horizontal ? 'width' : 'height'];\n};\nconst windowScroll = (offset, _ref, instance) => {\n var _instance$scrollEleme;\n\n let {\n canSmooth,\n sync\n } = _ref;\n const toOffset = sync ? offset : offset + instance.options.scrollMargin;\n (_instance$scrollEleme = instance.scrollElement) == null ? void 0 : _instance$scrollEleme.scrollTo == null ? void 0 : _instance$scrollEleme.scrollTo({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior: canSmooth ? 'smooth' : undefined\n });\n};\nconst elementScroll = (offset, _ref2, instance) => {\n var _instance$scrollEleme2;\n\n let {\n canSmooth,\n sync\n } = _ref2;\n const toOffset = sync ? offset : offset + instance.options.scrollMargin;\n (_instance$scrollEleme2 = instance.scrollElement) == null ? void 0 : _instance$scrollEleme2.scrollTo == null ? void 0 : _instance$scrollEleme2.scrollTo({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior: canSmooth ? 'smooth' : undefined\n });\n};\nclass Virtualizer {\n constructor(_opts) {\n var _this = this;\n\n this.unsubs = [];\n this.scrollElement = null;\n this.isScrolling = false;\n this.isScrollingTimeoutId = null;\n this.measurementsCache = [];\n this.itemMeasurementsCache = {};\n this.pendingMeasuredCacheIndexes = [];\n this.measureElementCache = {};\n this.range = {\n startIndex: 0,\n endIndex: 0\n };\n\n this.setOptions = opts => {\n Object.entries(opts).forEach(_ref3 => {\n let [key, value] = _ref3;\n if (typeof value === 'undefined') delete opts[key];\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 enableSmoothScroll: true,\n onChange: () => {},\n measureElement,\n initialRect: {\n width: 0,\n height: 0\n },\n scrollMargin: 0,\n scrollingDelay: 150,\n ...opts\n };\n };\n\n this.notify = () => {\n var _this$options$onChang, _this$options;\n\n (_this$options$onChang = (_this$options = this.options).onChange) == null ? void 0 : _this$options$onChang.call(_this$options, this);\n };\n\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach(d => d());\n this.unsubs = [];\n this.scrollElement = null;\n };\n\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n\n this._willUpdate = () => {\n const scrollElement = this.options.getScrollElement();\n\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n this.scrollElement = scrollElement;\n\n this._scrollToOffset(this.scrollOffset, {\n canSmooth: false,\n sync: true\n });\n\n this.unsubs.push(this.options.observeElementRect(this, rect => {\n this.scrollRect = rect;\n this.calculateRange();\n }));\n this.unsubs.push(this.options.observeElementOffset(this, offset => {\n if (this.isScrollingTimeoutId !== null) {\n clearTimeout(this.isScrollingTimeoutId);\n this.isScrollingTimeoutId = null;\n }\n\n if (this.scrollOffset !== offset) {\n this.isScrolling = true;\n this.scrollOffset = offset;\n this.isScrollingTimeoutId = setTimeout(() => {\n this.isScrollingTimeoutId = null;\n this.isScrolling = false;\n this.notify();\n }, this.options.scrollingDelay);\n } else {\n this.isScrolling = false;\n }\n\n this.calculateRange();\n }));\n } else if (!this.isScrolling) {\n this.calculateRange();\n }\n };\n\n this.getSize = () => {\n return this.scrollRect[this.options.horizontal ? 'width' : 'height'];\n };\n\n this.getMeasurements = memo(() => [this.options.count, this.options.paddingStart, this.options.getItemKey, this.itemMeasurementsCache], (count, paddingStart, getItemKey, measurementsCache) => {\n const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n const measurements = this.measurementsCache.slice(0, min);\n\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const measuredSize = measurementsCache[key];\n const start = measurements[i - 1] ? measurements[i - 1].end : paddingStart;\n const size = typeof measuredSize === 'number' ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key\n };\n }\n\n this.measurementsCache = measurements;\n return measurements;\n }, {\n key: process.env.NODE_ENV !== 'production' && 'getMeasurements',\n debug: () => this.options.debug\n });\n this.calculateRange = memo(() => [this.getMeasurements(), this.getSize(), this.scrollOffset], (measurements, outerSize, scrollOffset) => {\n const range = calculateRange({\n measurements,\n outerSize,\n scrollOffset\n });\n\n if (range.startIndex !== this.range.startIndex || range.endIndex !== this.range.endIndex) {\n this.range = range;\n this.notify();\n }\n\n return this.range;\n }, {\n key: process.env.NODE_ENV !== 'production' && 'calculateRange',\n debug: () => this.options.debug\n });\n this.getIndexes = memo(() => [this.options.rangeExtractor, this.range, this.options.overscan, this.options.count], (rangeExtractor, range, overscan, count) => {\n return rangeExtractor({ ...range,\n overscan,\n count: count\n });\n }, {\n key: process.env.NODE_ENV !== 'production' && 'getIndexes',\n debug: () => this.options.debug\n });\n this.getVirtualItems = memo(() => [this.getIndexes(), this.getMeasurements(), this.options.measureElement], (indexes, measurements, measureElement) => {\n const makeMeasureElement = index => measurableItem => {\n var _this$itemMeasurement;\n\n const item = this.measurementsCache[index];\n\n if (!measurableItem) {\n return;\n }\n\n const measuredItemSize = measureElement(measurableItem, this);\n const itemSize = (_this$itemMeasurement = this.itemMeasurementsCache[item.key]) != null ? _this$itemMeasurement : item.size;\n\n if (measuredItemSize !== itemSize) {\n if (item.start < this.scrollOffset) {\n if (process.env.NODE_ENV !== 'production' && this.options.debug) {\n console.info('correction', measuredItemSize - itemSize);\n }\n\n if (!this.destinationOffset) {\n this._scrollToOffset(this.scrollOffset + (measuredItemSize - itemSize), {\n canSmooth: false,\n sync: false\n });\n }\n }\n\n this.pendingMeasuredCacheIndexes.push(index);\n this.itemMeasurementsCache = { ...this.itemMeasurementsCache,\n [item.key]: measuredItemSize\n };\n this.notify();\n }\n };\n\n const virtualItems = [];\n const currentMeasureElements = {};\n\n for (let k = 0, len = indexes.length; k < len; k++) {\n var _this$measureElementC;\n\n const i = indexes[k];\n const measurement = measurements[i];\n const item = { ...measurement,\n measureElement: currentMeasureElements[i] = (_this$measureElementC = this.measureElementCache[i]) != null ? _this$measureElementC : makeMeasureElement(i)\n };\n virtualItems.push(item);\n }\n\n this.measureElementCache = currentMeasureElements;\n return virtualItems;\n }, {\n key: process.env.NODE_ENV !== 'production' && 'getIndexes',\n debug: () => this.options.debug\n });\n\n this.scrollToOffset = function (toOffset, _temp) {\n let {\n align = 'start',\n smoothScroll = _this.options.enableSmoothScroll\n } = _temp === void 0 ? {} : _temp;\n const offset = _this.scrollOffset;\n\n const size = _this.getSize();\n\n if (align === 'auto') {\n if (toOffset <= offset) {\n align = 'start';\n } else if (toOffset >= offset + size) {\n align = 'end';\n } else {\n align = 'start';\n }\n }\n\n const options = {\n canSmooth: smoothScroll,\n sync: false\n };\n\n if (align === 'start') {\n _this._scrollToOffset(toOffset, options);\n } else if (align === 'end') {\n _this._scrollToOffset(toOffset - size, options);\n } else if (align === 'center') {\n _this._scrollToOffset(toOffset - size / 2, options);\n }\n };\n\n this.scrollToIndex = function (index, _temp2) {\n let {\n align = 'auto',\n ...rest\n } = _temp2 === void 0 ? {} : _temp2;\n\n const measurements = _this.getMeasurements();\n\n const offset = _this.scrollOffset;\n\n const size = _this.getSize();\n\n const {\n count\n } = _this.options;\n const measurement = measurements[Math.max(0, Math.min(index, count - 1))];\n\n if (!measurement) {\n return;\n }\n\n if (align === 'auto') {\n if (measurement.end >= offset + size - _this.options.scrollPaddingEnd) {\n align = 'end';\n } else if (measurement.start <= offset + _this.options.scrollPaddingStart) {\n align = 'start';\n } else {\n return;\n }\n }\n\n const toOffset = align === 'end' ? measurement.end + _this.options.scrollPaddingEnd : measurement.start - _this.options.scrollPaddingStart;\n\n _this.scrollToOffset(toOffset, {\n align,\n ...rest\n });\n };\n\n this.getTotalSize = () => {\n var _this$getMeasurements;\n\n return (((_this$getMeasurements = this.getMeasurements()[this.options.count - 1]) == null ? void 0 : _this$getMeasurements.end) || this.options.paddingStart) + this.options.paddingEnd;\n };\n\n this._scrollToOffset = (offset, options) => {\n clearTimeout(this.scrollCheckFrame);\n this.destinationOffset = offset;\n this.options.scrollToFn(offset, options, this);\n let scrollCheckFrame;\n\n const check = () => {\n let lastOffset = this.scrollOffset;\n this.scrollCheckFrame = scrollCheckFrame = setTimeout(() => {\n if (this.scrollCheckFrame !== scrollCheckFrame) {\n return;\n }\n\n if (this.scrollOffset === lastOffset) {\n this.destinationOffset = undefined;\n return;\n }\n\n lastOffset = this.scrollOffset;\n check();\n }, 100);\n };\n\n check();\n };\n\n this.measure = () => {\n this.itemMeasurementsCache = {};\n this.notify();\n };\n\n this.setOptions(_opts);\n this.scrollRect = this.options.initialRect;\n this.scrollOffset = this.options.initialOffset;\n this.calculateRange();\n }\n\n}\n\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\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(_ref4) {\n let {\n measurements,\n outerSize,\n scrollOffset\n } = _ref4;\n const count = measurements.length - 1;\n\n const getOffset = index => measurements[index].start;\n\n const startIndex = findNearestBinarySearch(0, count, getOffset, scrollOffset);\n let endIndex = startIndex;\n\n while (endIndex < count && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n\n return {\n startIndex,\n endIndex\n };\n}\n\nexport { Virtualizer, defaultKeyExtractor, defaultRangeExtractor, elementScroll, measureElement, memo, observeElementOffset, observeElementRect, observeWindowOffset, observeWindowRect, windowScroll };\n//# sourceMappingURL=index.js.map\n","import {\n elementScroll,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n PartialKeys,\n Virtualizer,\n VirtualizerOptions,\n windowScroll,\n} from '@tanstack/virtual-core';\nexport * from '@tanstack/virtual-core';\n\nimport { createSignal, onMount, onCleanup, createComputed, mergeProps } from 'solid-js';\nimport { createStore, reconcile } from 'solid-js/store';\n\nfunction createVirtualizerBase<TScrollElement, TItemElement = unknown>(\n options: VirtualizerOptions<TScrollElement, TItemElement>\n): Virtualizer<TScrollElement, TItemElement> {\n const resolvedOptions: VirtualizerOptions<TScrollElement, TItemElement> = mergeProps(options);\n\n const instance = new Virtualizer<TScrollElement, TItemElement>(\n resolvedOptions\n );\n\n const [virtualItems, setVirtualItems] = createStore(\n instance.getVirtualItems()\n );\n const [totalSize, setTotalSize] = createSignal(instance.getTotalSize());\n\n const handler = {\n get(\n target: Virtualizer<TScrollElement, TItemElement>,\n prop: keyof Virtualizer<TScrollElement, TItemElement>\n ) {\n switch (prop) {\n case 'getVirtualItems':\n return () => virtualItems;\n case 'getTotalSize':\n return () => totalSize();\n default:\n return Reflect.get(target, prop);\n }\n },\n };\n\n const virtualizer = new Proxy(instance, handler);\n virtualizer.setOptions(resolvedOptions);\n\n onMount(() => {\n const cleanup = virtualizer._didMount();\n virtualizer._willUpdate();\n onCleanup(cleanup);\n });\n\n createComputed(() => {\n virtualizer.setOptions(mergeProps(resolvedOptions, options, {\n onChange: (instance: Virtualizer<TScrollElement, TItemElement> ) => {\n instance._willUpdate();\n setVirtualItems(\n reconcile(instance.getVirtualItems(), {\n key: 'index',\n })\n );\n setTotalSize(instance.getTotalSize());\n options.onChange?.(instance);\n }}))\n virtualizer.measure()\n })\n\n return virtualizer;\n}\n\nexport function createVirtualizer<TScrollElement, TItemElement = unknown>(\n options: PartialKeys<\n VirtualizerOptions<TScrollElement, TItemElement>,\n 'observeElementRect' | 'observeElementOffset' | 'scrollToFn'\n >\n): Virtualizer<TScrollElement, TItemElement> {\n \n return createVirtualizerBase<TScrollElement, TItemElement>(mergeProps({\n observeElementRect: observeElementRect,\n observeElementOffset: observeElementOffset,\n scrollToFn: elementScroll\n }, options));\n}\n\nexport function createWindowVirtualizer<TItemElement = unknown>(\n options: PartialKeys<\n VirtualizerOptions<Window, TItemElement>,\n | 'getScrollElement'\n | 'observeElementRect'\n | 'observeElementOffset'\n | 'scrollToFn'\n >\n): Virtualizer<Window, TItemElement> {\n return createVirtualizerBase<Window, TItemElement>(mergeProps({\n getScrollElement: () => (typeof window !== 'undefined' ? window : null!),\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n },options,\n ));\n}\n"],"names":["memo","getDeps","fn","opts","result","deps","depTime","key","debug","Date","now","newDeps","length","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","defaultKeyExtractor","defaultRangeExtractor","range","start","startIndex","overscan","end","endIndex","count","arr","i","push","observeElementRect","instance","cb","observer","ResizeObserver","entries","_entries$","_entries$2","width","contentRect","height","scrollElement","getBoundingClientRect","observe","unobserve","observeWindowRect","memoizedCallback","prev","rect","options","horizontal","memoRectCallback","onResize","innerWidth","innerHeight","addEventListener","capture","passive","removeEventListener","scrollProps","element","window","createOffsetObserver","mode","propX","propY","prevX","prevY","scroll","offset","scrollMargin","onScroll","e","target","currentTarget","scrollX","scrollY","observeElementOffset","observeWindowOffset","measureElement","windowScroll","_ref","_instance$scrollEleme","canSmooth","sync","toOffset","scrollTo","behavior","undefined","elementScroll","_ref2","_instance$scrollEleme2","Virtualizer","constructor","_opts","_this","this","unsubs","isScrolling","isScrollingTimeoutId","measurementsCache","itemMeasurementsCache","pendingMeasuredCacheIndexes","measureElementCache","setOptions","Object","forEach","_ref3","value","initialOffset","paddingStart","paddingEnd","scrollPaddingStart","scrollPaddingEnd","getItemKey","rangeExtractor","enableSmoothScroll","initialRect","scrollingDelay","notify","_this$options$onChang","_this$options","call","cleanup","filter","Boolean","d","_didMount","_willUpdate","getScrollElement","_scrollToOffset","scrollOffset","scrollRect","calculateRange","clearTimeout","setTimeout","getSize","getMeasurements","measurements","slice","measuredSize","size","estimateSize","outerSize","_ref4","low","high","getCurrentValue","middle","currentValue","findNearestBinarySearch","getIndexes","getVirtualItems","indexes","makeMeasureElement","measurableItem","_this$itemMeasurement","item","measuredItemSize","itemSize","destinationOffset","virtualItems","currentMeasureElements","k","len","_this$measureElementC","scrollToOffset","_temp","align","smoothScroll","scrollToIndex","_temp2","rest","measurement","getTotalSize","_this$getMeasurements","scrollCheckFrame","scrollToFn","check","lastOffset","measure","createVirtualizerBase","resolvedOptions","mergeProps","setVirtualItems","createStore","totalSize","setTotalSize","createSignal","virtualizer","Proxy","get","prop","Reflect","onMount","onCleanup","createComputed","reconcile"],"mappings":"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"}
1
+ {"version":3,"file":"index.production.js","sources":["../../../virtual-core/build/esm/index.js","../../src/index.tsx"],"sourcesContent":["/**\n * virtual-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return () => {\n let depTime;\n if (opts.key && opts.debug != null && opts.debug()) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n\n if (!depsChanged) {\n return result;\n }\n\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug != null && opts.debug()) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result);\n\n if (opts.key && opts.debug != null && 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, num) => {\n str = String(str);\n\n while (str.length < num) {\n str = ' ' + str;\n }\n\n return str;\n };\n\n console.info(\"%c\\u23F1 \" + pad(resultEndTime, 5) + \" /\" + pad(depEndTime, 5) + \" ms\", \"\\n font-size: .6rem;\\n font-weight: bold;\\n color: hsl(\" + Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120)) + \"deg 100% 31%);\", opts == null ? void 0 : opts.key);\n }\n\n return result;\n };\n}\n\n//\nconst defaultKeyExtractor = index => index;\nconst defaultRangeExtractor = range => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n\n return arr;\n};\n\nconst memoRectCallback = (instance, cb) => {\n let prev = {\n height: -1,\n width: -1\n };\n return rect => {\n if (instance.options.horizontal ? rect.width !== prev.width : rect.height !== prev.height) {\n cb(rect);\n }\n\n prev = rect;\n };\n};\n\nconst observeElementRect = (instance, cb) => {\n const observer = new ResizeObserver(entries => {\n var _entries$, _entries$2;\n\n cb({\n width: (_entries$ = entries[0]) == null ? void 0 : _entries$.contentRect.width,\n height: (_entries$2 = entries[0]) == null ? void 0 : _entries$2.contentRect.height\n });\n });\n\n if (!instance.scrollElement) {\n return;\n }\n\n cb(instance.scrollElement.getBoundingClientRect());\n observer.observe(instance.scrollElement);\n return () => {\n observer.unobserve(instance.scrollElement);\n };\n};\nconst observeWindowRect = (instance, cb) => {\n const memoizedCallback = memoRectCallback(instance, cb);\n\n const onResize = () => memoizedCallback({\n width: instance.scrollElement.innerWidth,\n height: instance.scrollElement.innerHeight\n });\n\n if (!instance.scrollElement) {\n return;\n }\n\n onResize();\n instance.scrollElement.addEventListener('resize', onResize, {\n capture: false,\n passive: true\n });\n return () => {\n instance.scrollElement.removeEventListener('resize', onResize);\n };\n};\nconst scrollProps = {\n element: ['scrollLeft', 'scrollTop'],\n window: ['scrollX', 'scrollY']\n};\n\nconst createOffsetObserver = mode => {\n return (instance, cb) => {\n if (!instance.scrollElement) {\n return;\n }\n\n const propX = scrollProps[mode][0];\n const propY = scrollProps[mode][1];\n let prevX = instance.scrollElement[propX];\n let prevY = instance.scrollElement[propY];\n\n const scroll = () => {\n const offset = instance.scrollElement[instance.options.horizontal ? propX : propY];\n cb(Math.max(0, offset - instance.options.scrollMargin));\n };\n\n scroll();\n\n const onScroll = e => {\n const target = e.currentTarget;\n const scrollX = target[propX];\n const scrollY = target[propY];\n\n if (instance.options.horizontal ? prevX - scrollX : prevY - scrollY) {\n scroll();\n }\n\n prevX = scrollX;\n prevY = scrollY;\n };\n\n instance.scrollElement.addEventListener('scroll', onScroll, {\n capture: false,\n passive: true\n });\n return () => {\n instance.scrollElement.removeEventListener('scroll', onScroll);\n };\n };\n};\n\nconst observeElementOffset = createOffsetObserver('element');\nconst observeWindowOffset = createOffsetObserver('window');\nconst measureElement = (element, instance) => {\n return element.getBoundingClientRect()[instance.options.horizontal ? 'width' : 'height'];\n};\nconst windowScroll = (offset, _ref, instance) => {\n var _instance$scrollEleme;\n\n let {\n canSmooth,\n sync\n } = _ref;\n const toOffset = sync ? offset : offset + instance.options.scrollMargin;\n (_instance$scrollEleme = instance.scrollElement) == null ? void 0 : _instance$scrollEleme.scrollTo == null ? void 0 : _instance$scrollEleme.scrollTo({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior: canSmooth ? 'smooth' : undefined\n });\n};\nconst elementScroll = (offset, _ref2, instance) => {\n var _instance$scrollEleme2;\n\n let {\n canSmooth,\n sync\n } = _ref2;\n const toOffset = sync ? offset : offset + instance.options.scrollMargin;\n (_instance$scrollEleme2 = instance.scrollElement) == null ? void 0 : _instance$scrollEleme2.scrollTo == null ? void 0 : _instance$scrollEleme2.scrollTo({\n [instance.options.horizontal ? 'left' : 'top']: toOffset,\n behavior: canSmooth ? 'smooth' : undefined\n });\n};\nclass Virtualizer {\n constructor(_opts) {\n var _this = this;\n\n this.unsubs = [];\n this.scrollElement = null;\n this.isScrolling = false;\n this.isScrollingTimeoutId = null;\n this.measurementsCache = [];\n this.itemMeasurementsCache = {};\n this.pendingMeasuredCacheIndexes = [];\n this.scrollDelta = 0;\n this.measureElementCache = {};\n this.range = {\n startIndex: 0,\n endIndex: 0\n };\n\n this.setOptions = opts => {\n Object.entries(opts).forEach(_ref3 => {\n let [key, value] = _ref3;\n if (typeof value === 'undefined') delete opts[key];\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 enableSmoothScroll: true,\n onChange: () => {},\n measureElement,\n initialRect: {\n width: 0,\n height: 0\n },\n scrollMargin: 0,\n scrollingDelay: 150,\n ...opts\n };\n };\n\n this.notify = () => {\n var _this$options$onChang, _this$options;\n\n (_this$options$onChang = (_this$options = this.options).onChange) == null ? void 0 : _this$options$onChang.call(_this$options, this);\n };\n\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach(d => d());\n this.unsubs = [];\n this.scrollElement = null;\n };\n\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n\n this._willUpdate = () => {\n const scrollElement = this.options.getScrollElement();\n\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n this.scrollElement = scrollElement;\n\n this._scrollToOffset(this.scrollOffset, {\n canSmooth: false,\n sync: true,\n requested: false\n });\n\n this.unsubs.push(this.options.observeElementRect(this, rect => {\n this.scrollRect = rect;\n this.calculateRange();\n }));\n this.unsubs.push(this.options.observeElementOffset(this, offset => {\n if (this.isScrollingTimeoutId !== null) {\n clearTimeout(this.isScrollingTimeoutId);\n this.isScrollingTimeoutId = null;\n }\n\n if (this.scrollOffset !== offset) {\n this.scrollOffset = offset;\n this.isScrolling = true;\n this.scrollDelta = 0;\n this.isScrollingTimeoutId = setTimeout(() => {\n this.isScrollingTimeoutId = null;\n this.isScrolling = false;\n this.notify();\n }, this.options.scrollingDelay);\n } else {\n this.isScrolling = false;\n this.scrollDelta = 0;\n }\n\n this.calculateRange();\n }));\n } else if (!this.isScrolling) {\n this.calculateRange();\n }\n };\n\n this.getSize = () => {\n return this.scrollRect[this.options.horizontal ? 'width' : 'height'];\n };\n\n this.getMeasurements = memo(() => [this.options.count, this.options.paddingStart, this.options.getItemKey, this.itemMeasurementsCache], (count, paddingStart, getItemKey, measurementsCache) => {\n const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n const measurements = this.measurementsCache.slice(0, min);\n\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const measuredSize = measurementsCache[key];\n const start = measurements[i - 1] ? measurements[i - 1].end : paddingStart;\n const size = typeof measuredSize === 'number' ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key\n };\n }\n\n this.measurementsCache = measurements;\n return measurements;\n }, {\n key: process.env.NODE_ENV !== 'production' && 'getMeasurements',\n debug: () => this.options.debug\n });\n this.calculateRange = memo(() => [this.getMeasurements(), this.getSize(), this.scrollOffset], (measurements, outerSize, scrollOffset) => {\n const range = calculateRange({\n measurements,\n outerSize,\n scrollOffset\n });\n\n if (range.startIndex !== this.range.startIndex || range.endIndex !== this.range.endIndex) {\n this.range = range;\n this.notify();\n }\n\n return this.range;\n }, {\n key: process.env.NODE_ENV !== 'production' && 'calculateRange',\n debug: () => this.options.debug\n });\n this.getIndexes = memo(() => [this.options.rangeExtractor, this.range, this.options.overscan, this.options.count], (rangeExtractor, range, overscan, count) => {\n return rangeExtractor({ ...range,\n overscan,\n count: count\n });\n }, {\n key: process.env.NODE_ENV !== 'production' && 'getIndexes',\n debug: () => this.options.debug\n });\n this.getVirtualItems = memo(() => [this.getIndexes(), this.getMeasurements(), this.options.measureElement], (indexes, measurements, measureElement) => {\n const makeMeasureElement = index => measurableItem => {\n var _this$itemMeasurement;\n\n const item = this.measurementsCache[index];\n\n if (!measurableItem) {\n return;\n }\n\n const measuredItemSize = measureElement(measurableItem, this);\n const itemSize = (_this$itemMeasurement = this.itemMeasurementsCache[item.key]) != null ? _this$itemMeasurement : item.size;\n\n if (measuredItemSize !== itemSize) {\n if (item.start < this.scrollOffset) {\n if (process.env.NODE_ENV !== 'production' && this.options.debug) {\n console.info('correction', measuredItemSize - itemSize);\n }\n\n if (this.destinationOffset === undefined) {\n this.scrollDelta += measuredItemSize - itemSize;\n\n this._scrollToOffset(this.scrollOffset + this.scrollDelta, {\n canSmooth: false,\n sync: false,\n requested: false\n });\n }\n }\n\n this.pendingMeasuredCacheIndexes.push(index);\n this.itemMeasurementsCache = { ...this.itemMeasurementsCache,\n [item.key]: measuredItemSize\n };\n this.notify();\n }\n };\n\n const virtualItems = [];\n const currentMeasureElements = {};\n\n for (let k = 0, len = indexes.length; k < len; k++) {\n var _this$measureElementC;\n\n const i = indexes[k];\n const measurement = measurements[i];\n const item = { ...measurement,\n measureElement: currentMeasureElements[i] = (_this$measureElementC = this.measureElementCache[i]) != null ? _this$measureElementC : makeMeasureElement(i)\n };\n virtualItems.push(item);\n }\n\n this.measureElementCache = currentMeasureElements;\n return virtualItems;\n }, {\n key: process.env.NODE_ENV !== 'production' && 'getIndexes',\n debug: () => this.options.debug\n });\n\n this.scrollToOffset = function (toOffset, _temp) {\n let {\n align = 'start',\n smoothScroll = _this.options.enableSmoothScroll\n } = _temp === void 0 ? {} : _temp;\n const offset = _this.scrollOffset;\n\n const size = _this.getSize();\n\n if (align === 'auto') {\n if (toOffset <= offset) {\n align = 'start';\n } else if (toOffset >= offset + size) {\n align = 'end';\n } else {\n align = 'start';\n }\n }\n\n const options = {\n canSmooth: smoothScroll,\n sync: false,\n requested: true\n };\n\n if (align === 'start') {\n _this._scrollToOffset(toOffset, options);\n } else if (align === 'end') {\n _this._scrollToOffset(toOffset - size, options);\n } else if (align === 'center') {\n _this._scrollToOffset(toOffset - size / 2, options);\n }\n };\n\n this.scrollToIndex = function (index, _temp2) {\n let {\n align = 'auto',\n smoothScroll = _this.options.enableSmoothScroll,\n ...rest\n } = _temp2 === void 0 ? {} : _temp2;\n\n const measurements = _this.getMeasurements();\n\n const offset = _this.scrollOffset;\n\n const size = _this.getSize();\n\n const {\n count\n } = _this.options;\n const measurement = measurements[Math.max(0, Math.min(index, count - 1))];\n\n if (!measurement) {\n return;\n }\n\n if (align === 'auto') {\n if (measurement.end >= offset + size - _this.options.scrollPaddingEnd) {\n align = 'end';\n } else if (measurement.start <= offset + _this.options.scrollPaddingStart) {\n align = 'start';\n } else {\n return;\n }\n }\n\n const toOffset = align === 'end' ? measurement.end + _this.options.scrollPaddingEnd : measurement.start - _this.options.scrollPaddingStart;\n\n _this.scrollToOffset(toOffset, {\n align,\n smoothScroll,\n ...rest\n });\n };\n\n this.getTotalSize = () => {\n var _this$getMeasurements;\n\n return (((_this$getMeasurements = this.getMeasurements()[this.options.count - 1]) == null ? void 0 : _this$getMeasurements.end) || this.options.paddingStart) + this.options.paddingEnd;\n };\n\n this._scrollToOffset = (offset, _ref4) => {\n let {\n requested,\n canSmooth,\n sync\n } = _ref4;\n clearTimeout(this.scrollCheckFrame);\n\n if (requested) {\n this.destinationOffset = offset;\n }\n\n this.options.scrollToFn(offset, {\n canSmooth,\n sync\n }, this);\n let scrollCheckFrame;\n\n const check = () => {\n let lastOffset = this.scrollOffset;\n this.scrollCheckFrame = scrollCheckFrame = setTimeout(() => {\n if (this.scrollCheckFrame !== scrollCheckFrame) {\n return;\n }\n\n if (this.scrollOffset === lastOffset) {\n this.destinationOffset = undefined;\n return;\n }\n\n lastOffset = this.scrollOffset;\n check();\n }, 100);\n };\n\n check();\n };\n\n this.measure = () => {\n this.itemMeasurementsCache = {};\n this.notify();\n };\n\n this.setOptions(_opts);\n this.scrollRect = this.options.initialRect;\n this.scrollOffset = this.options.initialOffset;\n this.calculateRange();\n }\n\n}\n\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\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(_ref5) {\n let {\n measurements,\n outerSize,\n scrollOffset\n } = _ref5;\n const count = measurements.length - 1;\n\n const getOffset = index => measurements[index].start;\n\n const startIndex = findNearestBinarySearch(0, count, getOffset, scrollOffset);\n let endIndex = startIndex;\n\n while (endIndex < count && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n\n return {\n startIndex,\n endIndex\n };\n}\n\nexport { Virtualizer, defaultKeyExtractor, defaultRangeExtractor, elementScroll, measureElement, memo, observeElementOffset, observeElementRect, observeWindowOffset, observeWindowRect, windowScroll };\n//# sourceMappingURL=index.js.map\n","import {\n elementScroll,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n PartialKeys,\n Virtualizer,\n VirtualizerOptions,\n windowScroll,\n} from '@tanstack/virtual-core';\nexport * from '@tanstack/virtual-core';\n\nimport { createSignal, onMount, onCleanup, createComputed, mergeProps } from 'solid-js';\nimport { createStore, reconcile } from 'solid-js/store';\n\nfunction createVirtualizerBase<TScrollElement, TItemElement = unknown>(\n options: VirtualizerOptions<TScrollElement, TItemElement>\n): Virtualizer<TScrollElement, TItemElement> {\n const resolvedOptions: VirtualizerOptions<TScrollElement, TItemElement> = mergeProps(options);\n\n const instance = new Virtualizer<TScrollElement, TItemElement>(\n resolvedOptions\n );\n\n const [virtualItems, setVirtualItems] = createStore(\n instance.getVirtualItems()\n );\n const [totalSize, setTotalSize] = createSignal(instance.getTotalSize());\n\n const handler = {\n get(\n target: Virtualizer<TScrollElement, TItemElement>,\n prop: keyof Virtualizer<TScrollElement, TItemElement>\n ) {\n switch (prop) {\n case 'getVirtualItems':\n return () => virtualItems;\n case 'getTotalSize':\n return () => totalSize();\n default:\n return Reflect.get(target, prop);\n }\n },\n };\n\n const virtualizer = new Proxy(instance, handler);\n virtualizer.setOptions(resolvedOptions);\n\n onMount(() => {\n const cleanup = virtualizer._didMount();\n virtualizer._willUpdate();\n onCleanup(cleanup);\n });\n\n createComputed(() => {\n virtualizer.setOptions(mergeProps(resolvedOptions, options, {\n onChange: (instance: Virtualizer<TScrollElement, TItemElement> ) => {\n instance._willUpdate();\n setVirtualItems(\n reconcile(instance.getVirtualItems(), {\n key: 'index',\n })\n );\n setTotalSize(instance.getTotalSize());\n options.onChange?.(instance);\n }}))\n virtualizer.measure()\n })\n\n return virtualizer;\n}\n\nexport function createVirtualizer<TScrollElement, TItemElement = unknown>(\n options: PartialKeys<\n VirtualizerOptions<TScrollElement, TItemElement>,\n 'observeElementRect' | 'observeElementOffset' | 'scrollToFn'\n >\n): Virtualizer<TScrollElement, TItemElement> {\n \n return createVirtualizerBase<TScrollElement, TItemElement>(mergeProps({\n observeElementRect: observeElementRect,\n observeElementOffset: observeElementOffset,\n scrollToFn: elementScroll\n }, options));\n}\n\nexport function createWindowVirtualizer<TItemElement = unknown>(\n options: PartialKeys<\n VirtualizerOptions<Window, TItemElement>,\n | 'getScrollElement'\n | 'observeElementRect'\n | 'observeElementOffset'\n | 'scrollToFn'\n >\n): Virtualizer<Window, TItemElement> {\n return createVirtualizerBase<Window, TItemElement>(mergeProps({\n getScrollElement: () => (typeof window !== 'undefined' ? window : null!),\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n },options,\n ));\n}\n"],"names":["memo","getDeps","fn","opts","result","deps","depTime","key","debug","Date","now","newDeps","length","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min","defaultKeyExtractor","defaultRangeExtractor","range","start","startIndex","overscan","end","endIndex","count","arr","i","push","observeElementRect","instance","cb","observer","ResizeObserver","entries","_entries$","_entries$2","width","contentRect","height","scrollElement","getBoundingClientRect","observe","unobserve","observeWindowRect","memoizedCallback","prev","rect","options","horizontal","memoRectCallback","onResize","innerWidth","innerHeight","addEventListener","capture","passive","removeEventListener","scrollProps","element","window","createOffsetObserver","mode","propX","propY","prevX","prevY","scroll","offset","scrollMargin","onScroll","e","target","currentTarget","scrollX","scrollY","observeElementOffset","observeWindowOffset","measureElement","windowScroll","_ref","_instance$scrollEleme","canSmooth","sync","toOffset","scrollTo","behavior","undefined","elementScroll","_ref2","_instance$scrollEleme2","Virtualizer","constructor","_opts","_this","this","unsubs","isScrolling","isScrollingTimeoutId","measurementsCache","itemMeasurementsCache","pendingMeasuredCacheIndexes","scrollDelta","measureElementCache","setOptions","Object","forEach","_ref3","value","initialOffset","paddingStart","paddingEnd","scrollPaddingStart","scrollPaddingEnd","getItemKey","rangeExtractor","enableSmoothScroll","initialRect","scrollingDelay","notify","_this$options$onChang","_this$options","call","cleanup","filter","Boolean","d","_didMount","_willUpdate","getScrollElement","_scrollToOffset","scrollOffset","requested","scrollRect","calculateRange","clearTimeout","setTimeout","getSize","getMeasurements","measurements","slice","measuredSize","size","estimateSize","outerSize","_ref5","low","high","getCurrentValue","middle","currentValue","findNearestBinarySearch","getIndexes","getVirtualItems","indexes","makeMeasureElement","measurableItem","_this$itemMeasurement","item","measuredItemSize","itemSize","destinationOffset","virtualItems","currentMeasureElements","k","len","_this$measureElementC","scrollToOffset","_temp","align","smoothScroll","scrollToIndex","_temp2","rest","measurement","getTotalSize","_this$getMeasurements","_ref4","scrollCheckFrame","scrollToFn","check","lastOffset","measure","createVirtualizerBase","resolvedOptions","mergeProps","setVirtualItems","createStore","totalSize","setTotalSize","createSignal","virtualizer","Proxy","get","prop","Reflect","onMount","onCleanup","createComputed","reconcile"],"mappings":";;;;;;;;;;;;;;;;;;;;KAUA,SAASA,EAAKC,EAASC,EAAIC,GACzB,IACIC,EADAC,EAAO,GAEX,MAAO,KACL,IAAIC,EACAH,EAAKI,KAAqB,MAAdJ,EAAKK,OAAiBL,EAAKK,UAASF,EAAUG,KAAKC,OACnE,MAAMC,EAAUV,IAGhB,KAFoBU,EAAQC,SAAWP,EAAKO,QAAUD,EAAQE,MAAK,CAACC,EAAKC,IAAUV,EAAKU,KAAWD,KAGjG,OAAOV,EAIT,IAAIY,EAKJ,GANAX,EAAOM,EAEHR,EAAKI,KAAqB,MAAdJ,EAAKK,OAAiBL,EAAKK,UAASQ,EAAaP,KAAKC,OACtEN,EAASF,KAAMS,GACP,MAARR,GAAyC,MAAjBA,EAAKc,UAA4Bd,EAAKc,SAASb,GAEnED,EAAKI,KAAqB,MAAdJ,EAAKK,OAAiBL,EAAKK,QAAS,CAClD,MAAMU,EAAaC,KAAKC,MAA+B,KAAxBX,KAAKC,MAAQJ,IAAkB,IACxDe,EAAgBF,KAAKC,MAAkC,KAA3BX,KAAKC,MAAQM,IAAqB,IAC9DM,EAAsBD,EAAgB,GAEtCE,EAAM,CAACC,EAAKC,KAGhB,IAFAD,EAAME,OAAOF,GAENA,EAAIZ,OAASa,GAClBD,EAAM,IAAMA,EAGd,OAAOA,CAAG,EAGZG,QAAQC,KAAK,OAAcL,EAAIF,EAAe,GAAK,KAAOE,EAAIL,EAAY,GAAK,MAAO,2FAA6FC,KAAKU,IAAI,EAAGV,KAAKW,IAAI,IAAM,IAAMR,EAAqB,MAAQ,iBAA0B,MAARnB,OAAe,EAASA,EAAKI,IACjS,CAED,OAAOH,CAAM,CAEjB,CAGK,MAAC2B,EAAsBhB,GAASA,EAC/BiB,EAAwBC,IAC5B,MAAMC,EAAQf,KAAKU,IAAII,EAAME,WAAaF,EAAMG,SAAU,GACpDC,EAAMlB,KAAKW,IAAIG,EAAMK,SAAWL,EAAMG,SAAUH,EAAMM,MAAQ,GAC9DC,EAAM,GAEZ,IAAK,IAAIC,EAAIP,EAAOO,GAAKJ,EAAKI,IAC5BD,EAAIE,KAAKD,GAGX,OAAOD,CAAG,EAiBNG,EAAqB,CAACC,EAAUC,KACpC,MAAMC,EAAW,IAAIC,gBAAeC,IAClC,IAAIC,EAAWC,EAEfL,EAAG,CACDM,MAAmC,OAA3BF,EAAYD,EAAQ,SAAc,EAASC,EAAUG,YAAYD,MACzEE,OAAqC,OAA5BH,EAAaF,EAAQ,SAAc,EAASE,EAAWE,YAAYC,QAC5E,IAGJ,GAAKT,EAASU,cAMd,OAFAT,EAAGD,EAASU,cAAcC,yBAC1BT,EAASU,QAAQZ,EAASU,eACnB,KACLR,EAASW,UAAUb,EAASU,cAAc,CAC3C,EAEGI,EAAoB,CAACd,EAAUC,KACnC,MAAMc,EAnCiB,EAACf,EAAUC,KAClC,IAAIe,EAAO,CACTP,QAAS,EACTF,OAAQ,GAEV,OAAOU,KACDjB,EAASkB,QAAQC,WAAaF,EAAKV,QAAUS,EAAKT,MAAQU,EAAKR,SAAWO,EAAKP,SACjFR,EAAGgB,GAGLD,EAAOC,CAAI,CACZ,EAwBwBG,CAAiBpB,EAAUC,GAE9CoB,EAAW,IAAMN,EAAiB,CACtCR,MAAOP,EAASU,cAAcY,WAC9Bb,OAAQT,EAASU,cAAca,cAGjC,GAAKvB,EAASU,cASd,OALAW,IACArB,EAASU,cAAcc,iBAAiB,SAAUH,EAAU,CAC1DI,SAAS,EACTC,SAAS,IAEJ,KACL1B,EAASU,cAAciB,oBAAoB,SAAUN,EAAS,CAC/D,EAEGO,EAAc,CAClBC,QAAS,CAAC,aAAc,aACxBC,OAAQ,CAAC,UAAW,YAGhBC,EAAuBC,GACpB,CAAChC,EAAUC,KAChB,IAAKD,EAASU,cACZ,OAGF,MAAMuB,EAAQL,EAAYI,GAAM,GAC1BE,EAAQN,EAAYI,GAAM,GAChC,IAAIG,EAAQnC,EAASU,cAAcuB,GAC/BG,EAAQpC,EAASU,cAAcwB,GAEnC,MAAMG,EAAS,KACb,MAAMC,EAAStC,EAASU,cAAcV,EAASkB,QAAQC,WAAac,EAAQC,GAC5EjC,EAAG1B,KAAKU,IAAI,EAAGqD,EAAStC,EAASkB,QAAQqB,cAAc,EAGzDF,IAEA,MAAMG,EAAWC,IACf,MAAMC,EAASD,EAAEE,cACXC,EAAUF,EAAOT,GACjBY,EAAUH,EAAOR,IAEnBlC,EAASkB,QAAQC,WAAagB,EAAQS,EAAUR,EAAQS,IAC1DR,IAGFF,EAAQS,EACRR,EAAQS,CAAO,EAOjB,OAJA7C,EAASU,cAAcc,iBAAiB,SAAUgB,EAAU,CAC1Df,SAAS,EACTC,SAAS,IAEJ,KACL1B,EAASU,cAAciB,oBAAoB,SAAUa,EAAS,CAC/D,EAICM,EAAuBf,EAAqB,WAC5CgB,EAAsBhB,EAAqB,UAC3CiB,EAAiB,CAACnB,EAAS7B,IACxB6B,EAAQlB,wBAAwBX,EAASkB,QAAQC,WAAa,QAAU,UAE3E8B,EAAe,CAACX,EAAQY,EAAMlD,KAClC,IAAImD,EAEJ,IAAIC,UACFA,EAASC,KACTA,GACEH,EACJ,MAAMI,EAAWD,EAAOf,EAASA,EAAStC,EAASkB,QAAQqB,aACP,OAAnDY,EAAwBnD,EAASU,gBAAoE,MAAlCyC,EAAsBI,UAA4BJ,EAAsBI,SAAS,CACnJ,CAACvD,EAASkB,QAAQC,WAAa,OAAS,OAAQmC,EAChDE,SAAUJ,EAAY,cAAWK,GACjC,EAEEC,EAAgB,CAACpB,EAAQqB,EAAO3D,KACpC,IAAI4D,EAEJ,IAAIR,UACFA,EAASC,KACTA,GACEM,EACJ,MAAML,EAAWD,EAAOf,EAASA,EAAStC,EAASkB,QAAQqB,aACN,OAApDqB,EAAyB5D,EAASU,gBAAqE,MAAnCkD,EAAuBL,UAA4BK,EAAuBL,SAAS,CACtJ,CAACvD,EAASkB,QAAQC,WAAa,OAAS,OAAQmC,EAChDE,SAAUJ,EAAY,cAAWK,GACjC,EAEJ,MAAMI,EACJC,YAAYC,GACV,IAAIC,EAAQC,KAEZA,KAAKC,OAAS,GACdD,KAAKvD,cAAgB,KACrBuD,KAAKE,aAAc,EACnBF,KAAKG,qBAAuB,KAC5BH,KAAKI,kBAAoB,GACzBJ,KAAKK,sBAAwB,GAC7BL,KAAKM,4BAA8B,GACnCN,KAAKO,YAAc,EACnBP,KAAKQ,oBAAsB,GAC3BR,KAAK5E,MAAQ,CACXE,WAAY,EACZG,SAAU,GAGZuE,KAAKS,WAAanH,IAChBoH,OAAOvE,QAAQ7C,GAAMqH,SAAQC,IAC3B,IAAKlH,EAAKmH,GAASD,OACE,IAAVC,UAA8BvH,EAAKI,EAAI,IAEpDsG,KAAK/C,QAAU,CACbtD,OAAO,EACPmH,cAAe,EACfvF,SAAU,EACVwF,aAAc,EACdC,WAAY,EACZC,mBAAoB,EACpBC,iBAAkB,EAClBhE,YAAY,EACZiE,WAAYjG,EACZkG,eAAgBjG,EAChBkG,oBAAoB,EACpBjH,SAAU,OACV2E,iBACAuC,YAAa,CACXhF,MAAO,EACPE,OAAQ,GAEV8B,aAAc,EACdiD,eAAgB,OACbjI,EACJ,EAGH0G,KAAKwB,OAAS,KACZ,IAAIC,EAAuBC,EAE0C,OAApED,GAAyBC,EAAgB1B,KAAK/C,SAAS7C,WAA6BqH,EAAsBE,KAAKD,EAAe1B,KAAK,EAGtIA,KAAK4B,QAAU,KACb5B,KAAKC,OAAO4B,OAAOC,SAASnB,SAAQoB,GAAKA,MACzC/B,KAAKC,OAAS,GACdD,KAAKvD,cAAgB,IAAI,EAG3BuD,KAAKgC,UAAY,IACR,KACLhC,KAAK4B,SAAS,EAIlB5B,KAAKiC,YAAc,KACjB,MAAMxF,EAAgBuD,KAAK/C,QAAQiF,mBAE/BlC,KAAKvD,gBAAkBA,GACzBuD,KAAK4B,UACL5B,KAAKvD,cAAgBA,EAErBuD,KAAKmC,gBAAgBnC,KAAKoC,aAAc,CACtCjD,WAAW,EACXC,MAAM,EACNiD,WAAW,IAGbrC,KAAKC,OAAOpE,KAAKmE,KAAK/C,QAAQnB,mBAAmBkE,MAAMhD,IACrDgD,KAAKsC,WAAatF,EAClBgD,KAAKuC,gBAAgB,KAEvBvC,KAAKC,OAAOpE,KAAKmE,KAAK/C,QAAQ4B,qBAAqBmB,MAAM3B,IACrB,OAA9B2B,KAAKG,uBACPqC,aAAaxC,KAAKG,sBAClBH,KAAKG,qBAAuB,MAG1BH,KAAKoC,eAAiB/D,GACxB2B,KAAKoC,aAAe/D,EACpB2B,KAAKE,aAAc,EACnBF,KAAKO,YAAc,EACnBP,KAAKG,qBAAuBsC,YAAW,KACrCzC,KAAKG,qBAAuB,KAC5BH,KAAKE,aAAc,EACnBF,KAAKwB,QAAQ,GACZxB,KAAK/C,QAAQsE,kBAEhBvB,KAAKE,aAAc,EACnBF,KAAKO,YAAc,GAGrBP,KAAKuC,gBAAgB,MAEbvC,KAAKE,aACfF,KAAKuC,gBACN,EAGHvC,KAAK0C,QAAU,IACN1C,KAAKsC,WAAWtC,KAAK/C,QAAQC,WAAa,QAAU,UAG7D8C,KAAK2C,gBAAkBxJ,GAAK,IAAM,CAAC6G,KAAK/C,QAAQvB,MAAOsE,KAAK/C,QAAQ8D,aAAcf,KAAK/C,QAAQkE,WAAYnB,KAAKK,yBAAwB,CAAC3E,EAAOqF,EAAcI,EAAYf,KACxK,MAAMnF,EAAM+E,KAAKM,4BAA4BvG,OAAS,EAAIO,KAAKW,OAAO+E,KAAKM,6BAA+B,EAC1GN,KAAKM,4BAA8B,GACnC,MAAMsC,EAAe5C,KAAKI,kBAAkByC,MAAM,EAAG5H,GAErD,IAAK,IAAIW,EAAIX,EAAKW,EAAIF,EAAOE,IAAK,CAChC,MAAMlC,EAAMyH,EAAWvF,GACjBkH,EAAe1C,EAAkB1G,GACjC2B,EAAQuH,EAAahH,EAAI,GAAKgH,EAAahH,EAAI,GAAGJ,IAAMuF,EACxDgC,EAA+B,iBAAjBD,EAA4BA,EAAe9C,KAAK/C,QAAQ+F,aAAapH,GACnFJ,EAAMH,EAAQ0H,EACpBH,EAAahH,GAAK,CAChB1B,MAAO0B,EACPP,QACA0H,OACAvH,MACA9B,MAEH,CAGD,OADAsG,KAAKI,kBAAoBwC,EAClBA,CAAY,GAClB,CACDlJ,KAAK,EACLC,MAAO,IAAMqG,KAAK/C,QAAQtD,QAE5BqG,KAAKuC,eAAiBpJ,GAAK,IAAM,CAAC6G,KAAK2C,kBAAmB3C,KAAK0C,UAAW1C,KAAKoC,gBAAe,CAACQ,EAAcK,EAAWb,KACtH,MAAMhH,EA6OZ,SAAwB8H,GACtB,IAAIN,aACFA,EAAYK,UACZA,EAASb,aACTA,GACEc,EACJ,MAAMxH,EAAQkH,EAAa7I,OAAS,EAI9BuB,EA/BwB,EAAC6H,EAAKC,EAAMC,EAAiBxC,KAC3D,KAAOsC,GAAOC,GAAM,CAClB,MAAME,GAAUH,EAAMC,GAAQ,EAAI,EAC5BG,EAAeF,EAAgBC,GAErC,GAAIC,EAAe1C,EACjBsC,EAAMG,EAAS,MACV,MAAIC,EAAe1C,GAGxB,OAAOyC,EAFPF,EAAOE,EAAS,CAGjB,CACF,CAED,OAAIH,EAAM,EACDA,EAAM,EAEN,CACR,EAakBK,CAAwB,EAAG9H,GAF5BxB,GAAS0I,EAAa1I,GAAOmB,OAEiB+G,GAChE,IAAI3G,EAAWH,EAEf,KAAOG,EAAWC,GAASkH,EAAanH,GAAUD,IAAM4G,EAAea,GACrExH,IAGF,MAAO,CACLH,aACAG,WAEJ,CAlQoB8G,CAAe,CAC3BK,eACAK,YACAb,iBAQF,OALIhH,EAAME,aAAe0E,KAAK5E,MAAME,YAAcF,EAAMK,WAAauE,KAAK5E,MAAMK,WAC9EuE,KAAK5E,MAAQA,EACb4E,KAAKwB,UAGAxB,KAAK5E,KAAK,GAChB,CACD1B,KAAK,EACLC,MAAO,IAAMqG,KAAK/C,QAAQtD,QAE5BqG,KAAKyD,WAAatK,GAAK,IAAM,CAAC6G,KAAK/C,QAAQmE,eAAgBpB,KAAK5E,MAAO4E,KAAK/C,QAAQ1B,SAAUyE,KAAK/C,QAAQvB,SAAQ,CAAC0F,EAAgBhG,EAAOG,EAAUG,IAC5I0F,EAAe,IAAKhG,EACzBG,WACAG,MAAOA,KAER,CACDhC,KAAK,EACLC,MAAO,IAAMqG,KAAK/C,QAAQtD,QAE5BqG,KAAK0D,gBAAkBvK,GAAK,IAAM,CAAC6G,KAAKyD,aAAczD,KAAK2C,kBAAmB3C,KAAK/C,QAAQ8B,kBAAiB,CAAC4E,EAASf,EAAc7D,KAClI,MAAM6E,EAAqB1J,GAAS2J,IAClC,IAAIC,EAEJ,MAAMC,EAAO/D,KAAKI,kBAAkBlG,GAEpC,IAAK2J,EACH,OAGF,MAAMG,EAAmBjF,EAAe8E,EAAgB7D,MAClDiE,EAA6E,OAAjEH,EAAwB9D,KAAKK,sBAAsB0D,EAAKrK,MAAgBoK,EAAwBC,EAAKhB,KAEnHiB,IAAqBC,IACnBF,EAAK1I,MAAQ2E,KAAKoC,mBAKW5C,IAA3BQ,KAAKkE,oBACPlE,KAAKO,aAAeyD,EAAmBC,EAEvCjE,KAAKmC,gBAAgBnC,KAAKoC,aAAepC,KAAKO,YAAa,CACzDpB,WAAW,EACXC,MAAM,EACNiD,WAAW,KAKjBrC,KAAKM,4BAA4BzE,KAAK3B,GACtC8F,KAAKK,sBAAwB,IAAKL,KAAKK,sBACrC,CAAC0D,EAAKrK,KAAMsK,GAEdhE,KAAKwB,SACN,EAGG2C,EAAe,GACfC,EAAyB,CAAA,EAE/B,IAAK,IAAIC,EAAI,EAAGC,EAAMX,EAAQ5J,OAAQsK,EAAIC,EAAKD,IAAK,CAClD,IAAIE,EAEJ,MAAM3I,EAAI+H,EAAQU,GAEZN,EAAO,IADOnB,EAAahH,GAE/BmD,eAAgBqF,EAAuBxI,GAA8D,OAAxD2I,EAAwBvE,KAAKQ,oBAAoB5E,IAAc2I,EAAwBX,EAAmBhI,IAEzJuI,EAAatI,KAAKkI,EACnB,CAGD,OADA/D,KAAKQ,oBAAsB4D,EACpBD,CAAY,GAClB,CACDzK,KAAK,EACLC,MAAO,IAAMqG,KAAK/C,QAAQtD,QAG5BqG,KAAKwE,eAAiB,SAAUnF,EAAUoF,GACxC,IAAIC,MACFA,EAAQ,QAAOC,aACfA,EAAe5E,EAAM9C,QAAQoE,yBACjB,IAAVoD,EAAmB,CAAA,EAAKA,EAC5B,MAAMpG,EAAS0B,EAAMqC,aAEfW,EAAOhD,EAAM2C,UAEL,SAAVgC,IAEAA,EADErF,GAAYhB,EACN,QACCgB,GAAYhB,EAAS0E,EACtB,MAEA,SAIZ,MAAM9F,EAAU,CACdkC,UAAWwF,EACXvF,MAAM,EACNiD,WAAW,GAGC,UAAVqC,EACF3E,EAAMoC,gBAAgB9C,EAAUpC,GACb,QAAVyH,EACT3E,EAAMoC,gBAAgB9C,EAAW0D,EAAM9F,GACpB,WAAVyH,GACT3E,EAAMoC,gBAAgB9C,EAAW0D,EAAO,EAAG9F,EAEnD,EAEI+C,KAAK4E,cAAgB,SAAU1K,EAAO2K,GACpC,IAAIH,MACFA,EAAQ,OAAMC,aACdA,EAAe5E,EAAM9C,QAAQoE,sBAC1ByD,QACU,IAAXD,EAAoB,CAAA,EAAKA,EAE7B,MAAMjC,EAAe7C,EAAM4C,kBAErBtE,EAAS0B,EAAMqC,aAEfW,EAAOhD,EAAM2C,WAEbhH,MACJA,GACEqE,EAAM9C,QACJ8H,EAAcnC,EAAatI,KAAKU,IAAI,EAAGV,KAAKW,IAAIf,EAAOwB,EAAQ,KAErE,IAAKqJ,EACH,OAGF,GAAc,SAAVL,EACF,GAAIK,EAAYvJ,KAAO6C,EAAS0E,EAAOhD,EAAM9C,QAAQiE,iBACnDwD,EAAQ,UACH,MAAIK,EAAY1J,OAASgD,EAAS0B,EAAM9C,QAAQgE,oBAGrD,OAFAyD,EAAQ,OAGT,CAGH,MAAMrF,EAAqB,QAAVqF,EAAkBK,EAAYvJ,IAAMuE,EAAM9C,QAAQiE,iBAAmB6D,EAAY1J,MAAQ0E,EAAM9C,QAAQgE,mBAExHlB,EAAMyE,eAAenF,EAAU,CAC7BqF,QACAC,kBACGG,GAEX,EAEI9E,KAAKgF,aAAe,KAClB,IAAIC,EAEJ,QAAqF,OAA3EA,EAAwBjF,KAAK2C,kBAAkB3C,KAAK/C,QAAQvB,MAAQ,SAAc,EAASuJ,EAAsBzJ,MAAQwE,KAAK/C,QAAQ8D,cAAgBf,KAAK/C,QAAQ+D,UAAU,EAGzLhB,KAAKmC,gBAAkB,CAAC9D,EAAQ6G,KAC9B,IAeIC,GAfA9C,UACFA,EAASlD,UACTA,EAASC,KACTA,GACE8F,EACJ1C,aAAaxC,KAAKmF,kBAEd9C,IACFrC,KAAKkE,kBAAoB7F,GAG3B2B,KAAK/C,QAAQmI,WAAW/G,EAAQ,CAC9Bc,YACAC,QACCY,MAGH,MAAMqF,EAAQ,KACZ,IAAIC,EAAatF,KAAKoC,aACtBpC,KAAKmF,iBAAmBA,EAAmB1C,YAAW,KAChDzC,KAAKmF,mBAAqBA,IAI1BnF,KAAKoC,eAAiBkD,GAK1BA,EAAatF,KAAKoC,aAClBiD,KALErF,KAAKkE,uBAAoB1E,EAKpB,GACN,IAAI,EAGT6F,GAAO,EAGTrF,KAAKuF,QAAU,KACbvF,KAAKK,sBAAwB,GAC7BL,KAAKwB,QAAQ,EAGfxB,KAAKS,WAAWX,GAChBE,KAAKsC,WAAatC,KAAK/C,QAAQqE,YAC/BtB,KAAKoC,aAAepC,KAAK/C,QAAQ6D,cACjCd,KAAKuC,gBACN,ECrhBH,SAASiD,EACPvI,GAEA,MAAMwI,EAAoEC,aAAWzI,GAE/ElB,EAAW,IAAI6D,EACnB6F,IAGKtB,EAAcwB,GAAmBC,EAAWA,YACjD7J,EAAS2H,oBAEJmC,EAAWC,GAAgBC,EAAYA,aAAChK,EAASiJ,gBAkBlDgB,EAAc,IAAIC,MAAMlK,EAhBd,CACdmK,IACEzH,EACA0H,GAEA,OAAQA,GACN,IAAK,kBACH,MAAO,IAAMhC,EACf,IAAK,eACH,MAAO,IAAM0B,IACf,QACE,OAAOO,QAAQF,IAAIzH,EAAQ0H,GAEhC,IA2BH,OAvBAH,EAAYvF,WAAWgF,GAEvBY,EAAAA,SAAQ,KACN,MAAMzE,EAAUoE,EAAYhE,YAC5BgE,EAAY/D,cACZqE,EAASA,UAAC1E,EAAV,IAGF2E,EAAAA,gBAAe,KACbP,EAAYvF,WAAWiF,aAAWD,EAAiBxI,EAAS,CAC1D7C,SAAW2B,IACXA,EAASkG,cACT0D,EACEa,EAASA,UAACzK,EAAS2H,kBAAmB,CACpChK,IAAK,WAGToM,EAAa/J,EAASiJ,gBACtB,MAAA/H,EAAQ7C,UAAR6C,EAAQ7C,SAAW2B,EAAnB,KAEFiK,EAAYT,SAAZ,IAGKS,CACR,qCAEM,SACL/I,GAMA,OAAOuI,EAAoDE,EAAAA,WAAW,CACpE5J,mBAAoBA,EACpB+C,qBAAsBA,EACtBuG,WAAY3F,GACXxC,GACJ,4BAEM,SACLA,GAQA,OAAOuI,EAA4CE,EAAAA,WAAW,CAC5DxD,iBAAkB,IAAyB,oBAAXrE,OAAyBA,OAAS,KAClE/B,mBAAoBe,EACpBgC,qBAAsBC,EACtBsG,WAAYpG,GACZ/B,GAEH"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tanstack/solid-virtual",
3
3
  "author": "Tanner Linsley",
4
- "version": "3.0.0-beta.19",
4
+ "version": "3.0.0-beta.20",
5
5
  "description": "Headless UI for virtualizing scrollable elements in Solid",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/tanstack/virtual#readme",
@@ -37,6 +37,6 @@
37
37
  "src"
38
38
  ],
39
39
  "dependencies": {
40
- "@tanstack/virtual-core": "3.0.0-beta.19"
40
+ "@tanstack/virtual-core": "3.0.0-beta.20"
41
41
  }
42
42
  }