@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.
@@ -220,6 +220,7 @@ class Virtualizer {
220
220
  this.measurementsCache = [];
221
221
  this.itemMeasurementsCache = {};
222
222
  this.pendingMeasuredCacheIndexes = [];
223
+ this.scrollDelta = 0;
223
224
  this.measureElementCache = {};
224
225
  this.range = {
225
226
  startIndex: 0,
@@ -282,7 +283,8 @@ class Virtualizer {
282
283
 
283
284
  this._scrollToOffset(this.scrollOffset, {
284
285
  canSmooth: false,
285
- sync: true
286
+ sync: true,
287
+ requested: false
286
288
  });
287
289
 
288
290
  this.unsubs.push(this.options.observeElementRect(this, rect => {
@@ -296,8 +298,9 @@ class Virtualizer {
296
298
  }
297
299
 
298
300
  if (this.scrollOffset !== offset) {
299
- this.isScrolling = true;
300
301
  this.scrollOffset = offset;
302
+ this.isScrolling = true;
303
+ this.scrollDelta = 0;
301
304
  this.isScrollingTimeoutId = setTimeout(() => {
302
305
  this.isScrollingTimeoutId = null;
303
306
  this.isScrolling = false;
@@ -305,6 +308,7 @@ class Virtualizer {
305
308
  }, this.options.scrollingDelay);
306
309
  } else {
307
310
  this.isScrolling = false;
311
+ this.scrollDelta = 0;
308
312
  }
309
313
 
310
314
  this.calculateRange();
@@ -389,10 +393,13 @@ class Virtualizer {
389
393
  console.info('correction', measuredItemSize - itemSize);
390
394
  }
391
395
 
392
- if (!this.destinationOffset) {
393
- this._scrollToOffset(this.scrollOffset + (measuredItemSize - itemSize), {
396
+ if (this.destinationOffset === undefined) {
397
+ this.scrollDelta += measuredItemSize - itemSize;
398
+
399
+ this._scrollToOffset(this.scrollOffset + this.scrollDelta, {
394
400
  canSmooth: false,
395
- sync: false
401
+ sync: false,
402
+ requested: false
396
403
  });
397
404
  }
398
405
  }
@@ -447,7 +454,8 @@ class Virtualizer {
447
454
 
448
455
  const options = {
449
456
  canSmooth: smoothScroll,
450
- sync: false
457
+ sync: false,
458
+ requested: true
451
459
  };
452
460
 
453
461
  if (align === 'start') {
@@ -462,6 +470,7 @@ class Virtualizer {
462
470
  this.scrollToIndex = function (index, _temp2) {
463
471
  let {
464
472
  align = 'auto',
473
+ smoothScroll = _this.options.enableSmoothScroll,
465
474
  ...rest
466
475
  } = _temp2 === void 0 ? {} : _temp2;
467
476
 
@@ -494,6 +503,7 @@ class Virtualizer {
494
503
 
495
504
  _this.scrollToOffset(toOffset, {
496
505
  align,
506
+ smoothScroll,
497
507
  ...rest
498
508
  });
499
509
  };
@@ -504,10 +514,22 @@ class Virtualizer {
504
514
  return (((_this$getMeasurements = this.getMeasurements()[this.options.count - 1]) == null ? void 0 : _this$getMeasurements.end) || this.options.paddingStart) + this.options.paddingEnd;
505
515
  };
506
516
 
507
- this._scrollToOffset = (offset, options) => {
517
+ this._scrollToOffset = (offset, _ref4) => {
518
+ let {
519
+ requested,
520
+ canSmooth,
521
+ sync
522
+ } = _ref4;
508
523
  clearTimeout(this.scrollCheckFrame);
509
- this.destinationOffset = offset;
510
- this.options.scrollToFn(offset, options, this);
524
+
525
+ if (requested) {
526
+ this.destinationOffset = offset;
527
+ }
528
+
529
+ this.options.scrollToFn(offset, {
530
+ canSmooth,
531
+ sync
532
+ }, this);
511
533
  let scrollCheckFrame;
512
534
 
513
535
  const check = () => {
@@ -564,12 +586,12 @@ const findNearestBinarySearch = (low, high, getCurrentValue, value) => {
564
586
  }
565
587
  };
566
588
 
567
- function calculateRange(_ref4) {
589
+ function calculateRange(_ref5) {
568
590
  let {
569
591
  measurements,
570
592
  outerSize,
571
593
  scrollOffset
572
- } = _ref4;
594
+ } = _ref5;
573
595
  const count = measurements.length - 1;
574
596
 
575
597
  const getOffset = index => measurements[index].start;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../virtual-core/build/esm/index.js"],"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"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../virtual-core/build/esm/index.js"],"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"],"names":[],"mappings":"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"}
@@ -219,6 +219,7 @@ class Virtualizer {
219
219
  this.measurementsCache = [];
220
220
  this.itemMeasurementsCache = {};
221
221
  this.pendingMeasuredCacheIndexes = [];
222
+ this.scrollDelta = 0;
222
223
  this.measureElementCache = {};
223
224
  this.range = {
224
225
  startIndex: 0,
@@ -281,7 +282,8 @@ class Virtualizer {
281
282
 
282
283
  this._scrollToOffset(this.scrollOffset, {
283
284
  canSmooth: false,
284
- sync: true
285
+ sync: true,
286
+ requested: false
285
287
  });
286
288
 
287
289
  this.unsubs.push(this.options.observeElementRect(this, rect => {
@@ -295,8 +297,9 @@ class Virtualizer {
295
297
  }
296
298
 
297
299
  if (this.scrollOffset !== offset) {
298
- this.isScrolling = true;
299
300
  this.scrollOffset = offset;
301
+ this.isScrolling = true;
302
+ this.scrollDelta = 0;
300
303
  this.isScrollingTimeoutId = setTimeout(() => {
301
304
  this.isScrollingTimeoutId = null;
302
305
  this.isScrolling = false;
@@ -304,6 +307,7 @@ class Virtualizer {
304
307
  }, this.options.scrollingDelay);
305
308
  } else {
306
309
  this.isScrolling = false;
310
+ this.scrollDelta = 0;
307
311
  }
308
312
 
309
313
  this.calculateRange();
@@ -388,10 +392,13 @@ class Virtualizer {
388
392
  console.info('correction', measuredItemSize - itemSize);
389
393
  }
390
394
 
391
- if (!this.destinationOffset) {
392
- this._scrollToOffset(this.scrollOffset + (measuredItemSize - itemSize), {
395
+ if (this.destinationOffset === undefined) {
396
+ this.scrollDelta += measuredItemSize - itemSize;
397
+
398
+ this._scrollToOffset(this.scrollOffset + this.scrollDelta, {
393
399
  canSmooth: false,
394
- sync: false
400
+ sync: false,
401
+ requested: false
395
402
  });
396
403
  }
397
404
  }
@@ -446,7 +453,8 @@ class Virtualizer {
446
453
 
447
454
  const options = {
448
455
  canSmooth: smoothScroll,
449
- sync: false
456
+ sync: false,
457
+ requested: true
450
458
  };
451
459
 
452
460
  if (align === 'start') {
@@ -461,6 +469,7 @@ class Virtualizer {
461
469
  this.scrollToIndex = function (index, _temp2) {
462
470
  let {
463
471
  align = 'auto',
472
+ smoothScroll = _this.options.enableSmoothScroll,
464
473
  ...rest
465
474
  } = _temp2 === void 0 ? {} : _temp2;
466
475
 
@@ -493,6 +502,7 @@ class Virtualizer {
493
502
 
494
503
  _this.scrollToOffset(toOffset, {
495
504
  align,
505
+ smoothScroll,
496
506
  ...rest
497
507
  });
498
508
  };
@@ -503,10 +513,22 @@ class Virtualizer {
503
513
  return (((_this$getMeasurements = this.getMeasurements()[this.options.count - 1]) == null ? void 0 : _this$getMeasurements.end) || this.options.paddingStart) + this.options.paddingEnd;
504
514
  };
505
515
 
506
- this._scrollToOffset = (offset, options) => {
516
+ this._scrollToOffset = (offset, _ref4) => {
517
+ let {
518
+ requested,
519
+ canSmooth,
520
+ sync
521
+ } = _ref4;
507
522
  clearTimeout(this.scrollCheckFrame);
508
- this.destinationOffset = offset;
509
- this.options.scrollToFn(offset, options, this);
523
+
524
+ if (requested) {
525
+ this.destinationOffset = offset;
526
+ }
527
+
528
+ this.options.scrollToFn(offset, {
529
+ canSmooth,
530
+ sync
531
+ }, this);
510
532
  let scrollCheckFrame;
511
533
 
512
534
  const check = () => {
@@ -563,12 +585,12 @@ const findNearestBinarySearch = (low, high, getCurrentValue, value) => {
563
585
  }
564
586
  };
565
587
 
566
- function calculateRange(_ref4) {
588
+ function calculateRange(_ref5) {
567
589
  let {
568
590
  measurements,
569
591
  outerSize,
570
592
  scrollOffset
571
- } = _ref4;
593
+ } = _ref5;
572
594
  const count = measurements.length - 1;
573
595
 
574
596
  const getOffset = index => measurements[index].start;
@@ -1 +1 @@
1
- {"version":3,"file":"index.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":["createVirtualizerBase","options","resolvedOptions","mergeProps","instance","Virtualizer","virtualItems","setVirtualItems","createStore","getVirtualItems","totalSize","setTotalSize","createSignal","getTotalSize","handler","get","target","prop","Reflect","virtualizer","Proxy","setOptions","onMount","cleanup","_didMount","_willUpdate","onCleanup","createComputed","onChange","reconcile","key","measure","createVirtualizer","observeElementRect","observeElementOffset","scrollToFn","elementScroll","createWindowVirtualizer","getScrollElement","window","observeWindowRect","observeWindowOffset","windowScroll"],"mappings":"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"}
1
+ {"version":3,"file":"index.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":["createVirtualizerBase","options","resolvedOptions","mergeProps","instance","Virtualizer","virtualItems","setVirtualItems","createStore","getVirtualItems","totalSize","setTotalSize","createSignal","getTotalSize","handler","get","target","prop","Reflect","virtualizer","Proxy","setOptions","onMount","cleanup","_didMount","_willUpdate","onCleanup","createComputed","onChange","reconcile","key","measure","createVirtualizer","observeElementRect","observeElementOffset","scrollToFn","elementScroll","createWindowVirtualizer","getScrollElement","window","observeWindowRect","observeWindowOffset","windowScroll"],"mappings":"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"}