virtua 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/core/utils.ts","../src/core/cache.ts","../src/core/store.ts","../src/react/useIsomorphicLayoutEffect.ts","../src/react/utils.ts","../src/react/useLatestRef.ts","../src/react/useSelector.ts","../src/core/environment.ts","../src/core/scroller.ts","../src/react/useStatic.ts","../src/core/resizer.ts","../src/react/Viewport.tsx","../src/react/ListItem.tsx","../src/react/VList.tsx","../src/react/VGrid.tsx","../src/react/WVList.tsx"],"sourcesContent":["export const min = Math.min;\nexport const max = Math.max;\nexport const abs = Math.abs;\nexport const now = Date.now;\nexport const values = Object.values;\nexport const isArray = Array.isArray;\nexport const timeout = setTimeout;\nexport const clamp = (value, minValue, maxValue) => min(maxValue, max(minValue, value));\nexport const exists = (v) => v != null;\nexport const median = (arr) => {\n const s = [...arr].sort((a, b) => a - b);\n const mid = (arr.length / 2) | 0;\n return s.length % 2 === 0 ? (s[mid - 1] + s[mid]) / 2 : s[mid];\n};\nexport const debounce = (fn, ms) => {\n let id;\n const cancel = () => {\n if (exists(id)) {\n clearTimeout(id);\n }\n };\n const debouncedFn = () => {\n cancel();\n id = timeout(() => {\n id = null;\n fn();\n }, ms);\n };\n debouncedFn._cancel = cancel;\n return debouncedFn;\n};\nexport const throttle = (fn, ms) => {\n let time = now() - ms;\n return (...args) => {\n const n = now();\n if (time + ms < n) {\n time = n;\n fn(...args);\n }\n };\n};\nexport const once = (fn) => {\n let called;\n let cache;\n return ((...args) => {\n if (!called) {\n called = true;\n cache = fn(...args);\n }\n return cache;\n });\n};\n// wrap for SSR\nexport const computeStyle = (e) => getComputedStyle(e);\nexport const getStyleNumber = (v) => {\n if (v) {\n return parseFloat(v);\n }\n else {\n return 0;\n }\n};\n//# sourceMappingURL=utils.js.map","import { clamp, median, min } from \"./utils\";\nexport const UNCACHED = -1;\nexport const getItemSize = (cache, index) => {\n const size = cache._sizes[index];\n return size === UNCACHED ? cache._defaultItemSize : size;\n};\nexport const setItemSize = (cache, index, size) => {\n const isInitialMeasurement = cache._sizes[index] === UNCACHED;\n cache._sizes[index] = size;\n // mark as dirty\n cache._measuredOffsetIndex = min(index, cache._measuredOffsetIndex);\n return isInitialMeasurement;\n};\nexport const computeOffset = (cache, index) => {\n if (!cache._length)\n return 0;\n if (cache._measuredOffsetIndex >= index) {\n return cache._offsets[index];\n }\n let i = cache._measuredOffsetIndex;\n let top = cache._offsets[i];\n while (i < index) {\n top += getItemSize(cache, i);\n cache._offsets[++i] = top;\n }\n // mark as measured\n cache._measuredOffsetIndex = index;\n return top;\n};\nexport const computeTotalSize = (cache) => {\n if (!cache._length)\n return 0;\n return (computeOffset(cache, cache._length - 1) +\n getItemSize(cache, cache._length - 1));\n};\nexport const findIndex = (cache, i, distance) => {\n let sum = 0;\n if (distance >= 0) {\n // search forward\n while (i < cache._length - 1) {\n const h = getItemSize(cache, i++);\n if ((sum += h) >= distance) {\n if (sum - h / 2 >= distance) {\n i--;\n }\n break;\n }\n }\n }\n else {\n // search backward\n while (i > 0) {\n const h = getItemSize(cache, --i);\n if ((sum -= h) <= distance) {\n if (sum + h / 2 < distance) {\n i++;\n }\n break;\n }\n }\n }\n return clamp(i, 0, cache._length - 1);\n};\nexport const findStartIndexWithOffset = (cache, offset, initialIndex) => {\n return findIndex(cache, initialIndex, offset - computeOffset(cache, initialIndex));\n};\nexport const hasUnmeasuredItemsInRange = (cache, startIndex, endIndex) => {\n return cache._sizes.slice(startIndex, endIndex + 1).includes(UNCACHED);\n};\nexport const estimateDefaultItemSize = (cache) => {\n const measuredSizes = cache._sizes.filter((s) => s !== UNCACHED);\n // This function will be called after measurement so measured size array must be longer than 0\n const startItemSize = measuredSizes[0];\n cache._defaultItemSize = measuredSizes.every((s) => s === startItemSize)\n ? // Maybe a fixed size array\n startItemSize\n : // Maybe a variable size array\n median(measuredSizes);\n};\nconst appendCache = (cache, length, prepend) => {\n const key = prepend ? \"unshift\" : \"push\";\n for (let i = cache._length; i < length; i++) {\n cache._sizes[key](UNCACHED);\n // first offset must be 0\n cache._offsets.push(i === 0 ? 0 : UNCACHED);\n }\n cache._length = length;\n};\nexport const initCache = (length, itemSize) => {\n const cache = {\n _defaultItemSize: itemSize,\n _length: 0,\n _measuredOffsetIndex: 0,\n _sizes: [],\n _offsets: [],\n };\n appendCache(cache, length);\n return cache;\n};\nexport const updateCacheLength = (cache, length, isShift) => {\n const diff = length - cache._length;\n const isRemove = diff < 0;\n let shift;\n if (isRemove) {\n // Removed\n shift = (isShift ? cache._sizes.splice(0, -diff) : cache._sizes.splice(diff)).reduce((acc, removed) => acc + (removed === UNCACHED ? cache._defaultItemSize : removed), 0);\n cache._offsets.splice(diff);\n }\n else {\n // Added\n shift = cache._defaultItemSize * diff;\n appendCache(cache, cache._length + diff, isShift);\n }\n cache._measuredOffsetIndex = isShift\n ? // Discard cache for now\n 0\n : // measuredOffsetIndex shouldn't be less than 0 because it makes scrollSize NaN and cause infinite rerender.\n // https://github.com/inokawa/virtua/pull/160\n clamp(length - 1, 0, cache._measuredOffsetIndex);\n cache._length = length;\n return [shift, isRemove];\n};\n//# sourceMappingURL=cache.js.map","import { findStartIndexWithOffset, initCache, getItemSize, computeTotalSize, findIndex as findEndIndex, computeOffset as computeStartOffset, UNCACHED, setItemSize, hasUnmeasuredItemsInRange, estimateDefaultItemSize, updateCacheLength, } from \"./cache\";\nimport { abs, clamp, max, min } from \"./utils\";\nconst calculateJump = (cache, items, keepEnd) => {\n return items.reduce((acc, [index, size]) => {\n const diff = size - getItemSize(cache, index);\n if (!keepEnd || diff > 0) {\n acc += diff;\n }\n return acc;\n }, 0);\n};\n// Scroll offset and sizes can have sub-pixel value if window.devicePixelRatio has decimal value\nconst SUBPIXEL_THRESHOLD = 1.5; // 0.5 * 3\nexport const SCROLL_IDLE = 0;\nexport const SCROLL_DOWN = 1;\nexport const SCROLL_UP = 2;\nexport const ACTION_ITEM_RESIZE = 1;\nexport const ACTION_VIEWPORT_RESIZE = 2;\nexport const ACTION_ITEMS_LENGTH_CHANGE = 3;\nexport const ACTION_SCROLL = 4;\nexport const ACTION_BEFORE_MANUAL_SCROLL = 5;\nexport const ACTION_SCROLL_END = 6;\nexport const ACTION_MANUAL_SCROLL = 7;\nexport const UPDATE_SCROLL = 0b00001;\nexport const UPDATE_SIZE = 0b00010;\nexport const UPDATE_JUMP = 0b00100;\nexport const UPDATE_IS_SCROLLING = 0b01000;\nexport const UPDATE_SCROLL_WITH_EVENT = 0b10000;\nexport const createVirtualStore = (flushSync, elementsCount, itemSize = 40, initialItemCount = 0, cache = initCache(elementsCount, itemSize), isReverse, shouldAutoEstimateItemSize) => {\n let viewportSize = itemSize * max(initialItemCount - 1, 0);\n let scrollOffset = 0;\n let jumpCount = 0;\n let jump = 0;\n let _scrollDirection = SCROLL_IDLE;\n let _isShifting = false;\n let _isManualScrolling = false;\n let _resized = false;\n let _prevRange = [0, initialItemCount];\n const subscribers = new Set();\n const getScrollSize = () => computeTotalSize(cache);\n const getScrollOffsetMax = () => getScrollSize() - viewportSize;\n const clampScrollOffset = (value) => {\n // Scroll offset may exceed min or max especially in Safari's elastic scrolling.\n return clamp(value, 0, getScrollOffsetMax());\n };\n const updateScrollDirection = (dir) => {\n const prev = _scrollDirection;\n _scrollDirection = dir;\n // Return true if scrolling is just started or stopped\n return (_scrollDirection !== prev &&\n (_scrollDirection === SCROLL_IDLE || prev === SCROLL_IDLE));\n };\n return {\n _getCache() {\n return JSON.parse(JSON.stringify(cache));\n },\n _getRange() {\n const [prevStartIndex, prevEndIndex] = _prevRange;\n const start = findStartIndexWithOffset(cache, scrollOffset, \n // Clamp because prevStartIndex may exceed the limit when children decreased a lot after scrolling\n min(prevStartIndex, cache._length - 1));\n const end = findEndIndex(cache, start, viewportSize);\n if (prevStartIndex === start && prevEndIndex === end) {\n return _prevRange;\n }\n return (_prevRange = [start, end]);\n },\n _isUnmeasuredItem(index) {\n return cache._sizes[index] === UNCACHED;\n },\n _hasUnmeasuredItemsInTargetViewport(offset) {\n const startIndex = findStartIndexWithOffset(cache, offset, _prevRange[0] // TODO binary search may be better here\n );\n return hasUnmeasuredItemsInRange(cache, max(0, startIndex - 1), min(cache._length - 1, findEndIndex(cache, startIndex, viewportSize) + 1));\n },\n _getItemOffset(index) {\n const offset = computeStartOffset(cache, index);\n if (isReverse) {\n return offset + max(0, viewportSize - getScrollSize());\n }\n return offset;\n },\n _getItemSize(index) {\n return getItemSize(cache, index);\n },\n _getItemsLength() {\n return cache._length;\n },\n _getScrollOffset() {\n return scrollOffset;\n },\n _getScrollOffsetMax: getScrollOffsetMax,\n _getIsScrolling() {\n return _scrollDirection !== SCROLL_IDLE;\n },\n _getViewportSize() {\n return viewportSize;\n },\n _getCorrectedScrollSize() {\n return max(getScrollSize(), viewportSize);\n },\n _getJumpCount() {\n return jumpCount;\n },\n _flushJump() {\n const prevJump = jump;\n jump = 0;\n return prevJump;\n },\n _subscribe(target, cb) {\n const sub = [target, cb];\n subscribers.add(sub);\n return () => {\n subscribers.delete(sub);\n };\n },\n _update(type, payload) {\n let shouldSync;\n let mutated = 0;\n switch (type) {\n case ACTION_ITEM_RESIZE: {\n const updated = payload.filter(([index, size]) => cache._sizes[index] !== size);\n // Skip if all items are cached and not updated\n if (!updated.length) {\n break;\n }\n // Calculate jump\n let diff = 0;\n if (_isShifting || _isManualScrolling) {\n // Should maintain visible position under specific situations\n const [startIndex] = _prevRange;\n if (scrollOffset === 0) {\n // Do nothing to stick to the start\n }\n else if (scrollOffset >\n getScrollOffsetMax() - SUBPIXEL_THRESHOLD) {\n // Keep end to stick to the end\n diff = calculateJump(cache, updated, true);\n }\n else {\n // Keep start at mid\n diff = calculateJump(cache, updated.filter(([index]) => index < startIndex));\n }\n }\n else if (_scrollDirection === SCROLL_UP) {\n // We can assume jumps occurred on the upper outside during reverse scrolling\n diff = calculateJump(cache, updated);\n }\n else {\n // Do nothing\n }\n if (diff) {\n jump = diff;\n jumpCount++;\n mutated += UPDATE_JUMP;\n }\n // Update item sizes\n let isNewItemMeasured = false;\n updated.forEach(([index, size]) => {\n if (setItemSize(cache, index, size)) {\n isNewItemMeasured = true;\n }\n });\n // Estimate initial item size from measured sizes\n if (shouldAutoEstimateItemSize &&\n isNewItemMeasured &&\n // TODO support reverse scroll also\n !scrollOffset) {\n estimateDefaultItemSize(cache);\n }\n mutated += UPDATE_SIZE;\n _resized = shouldSync = true;\n break;\n }\n case ACTION_VIEWPORT_RESIZE: {\n if (viewportSize !== payload) {\n viewportSize = payload;\n mutated = UPDATE_SIZE;\n }\n break;\n }\n case ACTION_ITEMS_LENGTH_CHANGE: {\n if (payload[1]) {\n // Calc distance before updating cache\n const distanceToEnd = getScrollOffsetMax() - scrollOffset;\n const [shift, isRemove] = updateCacheLength(cache, payload[0], true);\n const diff = isRemove ? -min(shift, distanceToEnd) : shift;\n jump += diff;\n scrollOffset = clampScrollOffset(scrollOffset + diff);\n jumpCount++;\n mutated = UPDATE_SCROLL + UPDATE_JUMP;\n _isShifting = true;\n }\n else {\n updateCacheLength(cache, payload[0]);\n }\n break;\n }\n case ACTION_SCROLL:\n case ACTION_BEFORE_MANUAL_SCROLL: {\n // Skip if offset is not changed\n if (scrollOffset === payload) {\n break;\n }\n if (type === ACTION_SCROLL) {\n const delta = payload - scrollOffset;\n // Scrolling after resizing will be caused by jump compensation\n const isJustResized = _resized;\n _resized = false;\n // Skip scroll direction detection just after resizing because it may result in the opposite direction.\n // Scroll events are dispatched enough so it's ok to skip some of them.\n if ((_scrollDirection === SCROLL_IDLE || !isJustResized) &&\n // Ignore until manual scrolling\n !_isManualScrolling) {\n if (updateScrollDirection(delta < 0 ? SCROLL_UP : SCROLL_DOWN)) {\n mutated += UPDATE_IS_SCROLLING;\n }\n }\n // Ignore manual scroll because it may be called in useEffect/useLayoutEffect and cause the warn below.\n // Warning: flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.\n //\n // Update synchronously if scrolled a lot\n shouldSync = abs(delta) > viewportSize;\n mutated += UPDATE_SCROLL_WITH_EVENT;\n if (!isJustResized) {\n _isShifting = false;\n }\n }\n scrollOffset = clampScrollOffset(payload);\n mutated += UPDATE_SCROLL;\n break;\n }\n case ACTION_SCROLL_END: {\n if (updateScrollDirection(SCROLL_IDLE)) {\n mutated = UPDATE_IS_SCROLLING;\n }\n _isShifting = _isManualScrolling = false;\n break;\n }\n case ACTION_MANUAL_SCROLL: {\n _isManualScrolling = true;\n break;\n }\n }\n if (mutated) {\n const update = () => {\n subscribers.forEach(([target, cb]) => {\n // Early return to skip React's computation\n if (!(mutated & target)) {\n return;\n }\n cb();\n });\n };\n if (shouldSync) {\n // https://github.com/facebook/react/issues/25191\n // https://github.com/facebook/react/blob/a5fc797db14c6e05d4d5c4dbb22a0dd70d41f5d5/packages/react-reconciler/src/ReactFiberWorkLoop.js#L1443-L1447\n flushSync(update);\n }\n else {\n update();\n }\n }\n },\n };\n};\n//# sourceMappingURL=store.js.map","import { useEffect, useLayoutEffect } from \"react\";\n// https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nexport const useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import { exists, isArray } from \"../core/utils\";\nexport const refKey = \"current\";\nexport const emptyComponents = {};\nconst forEach = (children, elements) => {\n if (isArray(children)) {\n for (const c of children) {\n forEach(c, elements);\n }\n }\n else if (!exists(children) || typeof children === \"boolean\") {\n // filter out, that is the same as React.Children.toArray\n }\n else {\n elements.push(children);\n }\n};\n// Replace React.Children.forEach with our tiny implementation.\n// In our usage, just flatten children array keeping element instances and their keys, React.Children is redundant and slow.\n//\n// - React.Children.toArray is slow because it clones element instance.\n// - React.Children.map is slow because it clones element instance.\n// - React.Children.forEach is slow because it escapes and modifies keys even if they are unused.\n//\n// And React.Children seems to be in maintenance mode so it's unlikely it would be improved and ported to older versions.\n// https://github.com/reactjs/rfcs/pull/61#issuecomment-584402735\nexport const flattenChildren = (children) => {\n const elements = [];\n forEach(children, elements);\n return elements;\n};\n//# sourceMappingURL=utils.js.map","import { useRef } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { refKey } from \"./utils\";\nexport const useLatestRef = (value) => {\n const ref = useRef(value);\n useIsomorphicLayoutEffect(() => {\n ref[refKey] = value;\n }, [value]);\n return ref;\n};\n//# sourceMappingURL=useLatestRef.js.map","import { useState } from \"react\";\nimport { useLatestRef } from \"./useLatestRef\";\nimport { refKey } from \"./utils\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nexport const useSelector = (store, getSnapShot, target, shouldGetLatest) => {\n const [state, setState] = useState(getSnapShot);\n const getter = useLatestRef(getSnapShot);\n useIsomorphicLayoutEffect(() => {\n return store._subscribe(target, () => {\n setState(() => getter[refKey]());\n });\n }, []);\n // especially for sort of items\n if (shouldGetLatest) {\n const snap = getSnapShot();\n if (state !== snap) {\n setState(snap);\n }\n }\n return state;\n};\n//# sourceMappingURL=useSelector.js.map","import { once } from \"./utils\";\n// The scroll position may be negative value in rtl direction.\n//\n// left right result\n// -100 0 true spec compliant\n// 0 100 false probably Chrome earlier than v85\n// https://github.com/othree/jquery.rtl-scroll-type\nexport const hasNegativeOffsetInRtl = /*#__PURE__*/ once((scrollable) => {\n const key = \"scrollLeft\";\n const prev = scrollable[key];\n scrollable[key] = 1;\n // scrollLeft can be positive under some specific situations even if negative mode, so we use `<` for now.\n const isNegative = scrollable[key] < 1;\n scrollable[key] = prev;\n return isNegative;\n});\n//# sourceMappingURL=environment.js.map","import { hasNegativeOffsetInRtl } from \"./environment\";\nimport { ACTION_SCROLL, ACTION_BEFORE_MANUAL_SCROLL, ACTION_SCROLL_END, UPDATE_SIZE, ACTION_MANUAL_SCROLL, } from \"./store\";\nimport { debounce, throttle, timeout, clamp } from \"./utils\";\n// Infer scroll state also from wheel events\n// Sometimes scroll events do not fire when frame dropped even if the visual have been already scrolled\nconst createOnWheel = (store, isHorizontal, onScrollStopped) => {\n return throttle((e) => {\n if (!store._getIsScrolling()) {\n // Scroll start should be detected with scroll event\n return;\n }\n if (e.ctrlKey) {\n // Probably a pinch-to-zoom gesture\n return;\n }\n // Get delta before checking deltaMode for firefox behavior\n // https://github.com/w3c/uievents/issues/181#issuecomment-392648065\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1392460#c34\n if (isHorizontal ? e.deltaX : e.deltaY) {\n const offset = store._getScrollOffset();\n if (offset > 0 && offset < store._getScrollOffsetMax()) {\n onScrollStopped();\n }\n }\n }, 50);\n};\nexport const createScroller = (store, isHorizontal, isRtl) => {\n let rootElement;\n let scrollToQueue;\n const scrollToKey = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n const normalizeOffset = (offset, diff) => {\n if (isHorizontal && isRtl) {\n if (hasNegativeOffsetInRtl(rootElement)) {\n return -offset;\n }\n else {\n return diff ? -offset : store._getScrollOffsetMax() - offset;\n }\n }\n return offset;\n };\n const scrollManually = async (getOffset) => {\n if (!rootElement)\n return;\n const getTargetOffset = () => {\n // Adjust if the offset is over the end, to get correct startIndex.\n return clamp(getOffset(), 0, store._getScrollOffsetMax());\n };\n while (true) {\n // Sync viewport to scroll destination\n // In order to scroll to the correct position, mount the items and measure their sizes before scrolling.\n const targetOffset = getTargetOffset();\n store._update(ACTION_BEFORE_MANUAL_SCROLL, targetOffset);\n if (!store._hasUnmeasuredItemsInTargetViewport(targetOffset)) {\n break;\n }\n if (scrollToQueue) {\n // Cancel waiting scrollTo\n scrollToQueue[1]();\n }\n // Wait for the scroll destination items to be measured.\n const unsubscribe = store._subscribe(UPDATE_SIZE, () => {\n scrollToQueue && scrollToQueue[0]();\n });\n try {\n // The measurement will be done asynchronously and the timing is not predictable so we use promise.\n // For example, ResizeObserver may not fire when window is not visible.\n await new Promise((resolve, reject) => {\n let resolved = false;\n const resolveQueue = () => {\n if (resolved)\n return;\n resolved = true;\n resolve();\n scrollToQueue = undefined;\n };\n scrollToQueue = [resolveQueue, reject];\n // In some specific situation with VGrid, the promise never resolved so we resolve it if timed out.\n timeout(resolveQueue, 250);\n });\n }\n catch (e) {\n // canceled\n return;\n }\n finally {\n unsubscribe();\n }\n }\n // Scroll with the updated value\n rootElement[scrollToKey] = normalizeOffset(getTargetOffset());\n store._update(ACTION_MANUAL_SCROLL);\n };\n return {\n _initRoot(root) {\n rootElement = root;\n const syncViewportToScrollPosition = () => {\n store._update(ACTION_SCROLL, normalizeOffset(root[scrollToKey]));\n };\n const onScrollStopped = debounce(() => {\n // Check scroll position once just after scrolling stopped\n syncViewportToScrollPosition();\n store._update(ACTION_SCROLL_END);\n }, 150);\n const onScroll = () => {\n syncViewportToScrollPosition();\n onScrollStopped();\n };\n const onWheel = createOnWheel(store, isHorizontal, onScrollStopped);\n root.addEventListener(\"scroll\", onScroll);\n root.addEventListener(\"wheel\", onWheel, { passive: true });\n return () => {\n root.removeEventListener(\"scroll\", onScroll);\n root.removeEventListener(\"wheel\", onWheel);\n onScrollStopped._cancel();\n };\n },\n _scrollTo(offset) {\n scrollManually(() => offset);\n },\n _scrollBy(offset) {\n offset += store._getScrollOffset();\n scrollManually(() => offset);\n },\n _scrollToIndex(index, align) {\n index = clamp(index, 0, store._getItemsLength() - 1);\n scrollManually(align === \"end\"\n ? () => store._getItemOffset(index) +\n store._getItemSize(index) -\n store._getViewportSize()\n : () => store._getItemOffset(index));\n },\n _fixScrollJump: (jump) => {\n if (!rootElement)\n return;\n rootElement[scrollToKey] += normalizeOffset(jump, true);\n },\n };\n};\nexport const createWindowScroller = (store, isHorizontal) => {\n const scrollToKey = isHorizontal ? \"scrollX\" : \"scrollY\";\n const offsetKey = isHorizontal ? \"offsetLeft\" : \"offsetTop\";\n return {\n _initRoot(rootElement) {\n let visible = false;\n const getOffsetToWindow = (node, offset) => {\n const nodeOffset = offset + node[offsetKey];\n const parent = node.offsetParent;\n if (node === document.body || !parent) {\n return nodeOffset;\n }\n return getOffsetToWindow(parent, nodeOffset);\n };\n const syncViewportToScrollPosition = () => {\n if (!visible)\n return;\n store._update(ACTION_SCROLL, window[scrollToKey] - getOffsetToWindow(rootElement, 0));\n };\n const onScrollStopped = debounce(() => {\n // Check scroll position once just after scrolling stopped\n syncViewportToScrollPosition();\n store._update(ACTION_SCROLL_END);\n }, 150);\n const onScroll = () => {\n syncViewportToScrollPosition();\n onScrollStopped();\n };\n const onWheel = createOnWheel(store, isHorizontal, onScrollStopped);\n const io = new IntersectionObserver(([entry]) => {\n visible = entry.isIntersecting;\n });\n io.observe(rootElement);\n window.addEventListener(\"scroll\", onScroll);\n window.addEventListener(\"wheel\", onWheel, { passive: true });\n return () => {\n io.disconnect();\n window.removeEventListener(\"scroll\", onScroll);\n window.removeEventListener(\"wheel\", onWheel);\n onScrollStopped._cancel();\n };\n },\n _fixScrollJump: (jump) => {\n // TODO support case two window scrollers exist in the same view\n window.scrollBy(isHorizontal ? jump : 0, isHorizontal ? 0 : jump);\n },\n };\n};\n//# sourceMappingURL=scroller.js.map","import { useRef } from \"react\";\nimport { refKey } from \"./utils\";\nexport const useStatic = (init) => {\n const ref = useRef();\n return ref[refKey] || (ref[refKey] = init());\n};\n//# sourceMappingURL=useStatic.js.map","import { ACTION_ITEM_RESIZE, ACTION_VIEWPORT_RESIZE, } from \"./store\";\nimport { exists, computeStyle, getStyleNumber, max, once } from \"./utils\";\nconst rootObserveOpts = { box: \"border-box\" };\nexport const createResizer = (store, isHorizontal) => {\n let rootElement;\n const sizeKey = isHorizontal ? \"width\" : \"height\";\n const mountedIndexes = new WeakMap();\n // Initialize ResizeObserver lazily for SSR\n const getResizeObserver = once(() => {\n // https://www.w3.org/TR/resize-observer/#intro\n return new ResizeObserver((entries) => {\n const resizes = [];\n for (const { target, contentRect } of entries) {\n if (target === rootElement) {\n store._update(ACTION_VIEWPORT_RESIZE, contentRect[sizeKey] +\n contentRect[isHorizontal ? \"left\" : \"top\"] +\n // contentRect doesn't have paddingRight/paddingBottom so get them from computed style\n // https://www.w3.org/TR/resize-observer/#css-definitions\n getStyleNumber(computeStyle(rootElement)[isHorizontal ? \"paddingRight\" : \"paddingBottom\"]));\n }\n else {\n const index = mountedIndexes.get(target);\n if (exists(index)) {\n resizes.push([index, contentRect[sizeKey]]);\n }\n }\n }\n if (resizes.length) {\n store._update(ACTION_ITEM_RESIZE, resizes);\n }\n });\n });\n return {\n _observeRoot(root) {\n rootElement = root;\n const ro = getResizeObserver();\n ro.observe(root, rootObserveOpts);\n return () => {\n ro.disconnect();\n };\n },\n _observeItem(el, i) {\n const ro = getResizeObserver();\n mountedIndexes.set(el, i);\n ro.observe(el);\n return () => {\n mountedIndexes.delete(el);\n ro.unobserve(el);\n };\n },\n };\n};\nexport const createWindowResizer = (store, isHorizontal) => {\n const sizeKey = isHorizontal ? \"width\" : \"height\";\n const windowSizeKey = isHorizontal ? \"innerWidth\" : \"innerHeight\";\n const mountedIndexes = new WeakMap();\n // Initialize ResizeObserver lazily for SSR\n const getResizeObserver = once(() => {\n // https://www.w3.org/TR/resize-observer/#intro\n return new ResizeObserver((entries) => {\n const resizes = [];\n for (const { target, contentRect } of entries) {\n const index = mountedIndexes.get(target);\n if (exists(index)) {\n resizes.push([index, contentRect[sizeKey]]);\n }\n }\n if (resizes.length) {\n store._update(ACTION_ITEM_RESIZE, resizes);\n }\n });\n });\n return {\n _observeRoot() {\n const cb = () => {\n store._update(ACTION_VIEWPORT_RESIZE, window[windowSizeKey]);\n };\n window.addEventListener(\"resize\", cb);\n cb();\n return () => {\n window.removeEventListener(\"resize\", cb);\n getResizeObserver().disconnect();\n };\n },\n _observeItem(el, i) {\n const ro = getResizeObserver();\n mountedIndexes.set(el, i);\n ro.observe(el);\n return () => {\n mountedIndexes.delete(el);\n ro.unobserve(el);\n };\n },\n };\n};\nexport const createGridResizer = (vStore, hStore) => {\n let rootElement;\n const heightKey = \"height\";\n const widthKey = \"width\";\n const mountedIndexes = new WeakMap();\n const maybeCachedRowIndexes = new Set();\n const maybeCachedColIndexes = new Set();\n const sizeCache = new Map();\n const getKey = (rowIndex, colIndex) => `${rowIndex}-${colIndex}`;\n // Initialize ResizeObserver lazily for SSR\n const getResizeObserver = once(() => {\n // https://www.w3.org/TR/resize-observer/#intro\n return new ResizeObserver((entries) => {\n const resizedRows = new Set();\n const resizedCols = new Set();\n for (const { target, contentRect } of entries) {\n if (target === rootElement) {\n // contentRect doesn't have paddingRight/paddingBottom so get them from computed style\n // https://www.w3.org/TR/resize-observer/#css-definitions\n // TODO subtract scroll bar width/height\n // https://github.com/w3c/csswg-drafts/issues/3536\n const style = computeStyle(rootElement);\n vStore._update(ACTION_VIEWPORT_RESIZE, contentRect[heightKey] +\n contentRect.top +\n getStyleNumber(style.paddingBottom));\n hStore._update(ACTION_VIEWPORT_RESIZE, contentRect[widthKey] +\n contentRect.left +\n getStyleNumber(style.paddingRight));\n }\n else {\n const cell = mountedIndexes.get(target);\n if (cell) {\n const [rowIndex, colIndex] = cell;\n const key = getKey(rowIndex, colIndex);\n const prevSize = sizeCache.get(key);\n const size = [\n contentRect[heightKey],\n contentRect[widthKey],\n ];\n let rowResized;\n let colResized;\n if (!prevSize) {\n rowResized = colResized = true;\n }\n else {\n if (prevSize[0] !== size[0]) {\n rowResized = true;\n }\n if (prevSize[1] !== size[1]) {\n colResized = true;\n }\n }\n if (rowResized) {\n resizedRows.add(rowIndex);\n }\n if (colResized) {\n resizedCols.add(colIndex);\n }\n if (rowResized || colResized) {\n sizeCache.set(key, size);\n }\n }\n }\n }\n if (resizedRows.size) {\n const heightResizes = [];\n resizedRows.forEach((rowIndex) => {\n let maxHeight = 0;\n maybeCachedColIndexes.forEach((colIndex) => {\n const size = sizeCache.get(getKey(rowIndex, colIndex));\n if (size) {\n maxHeight = max(maxHeight, size[0]);\n }\n });\n if (maxHeight) {\n heightResizes.push([rowIndex, maxHeight]);\n }\n });\n vStore._update(ACTION_ITEM_RESIZE, heightResizes);\n }\n if (resizedCols.size) {\n const widthResizes = [];\n resizedCols.forEach((colIndex) => {\n let maxWidth = 0;\n maybeCachedRowIndexes.forEach((rowIndex) => {\n const size = sizeCache.get(getKey(rowIndex, colIndex));\n if (size) {\n maxWidth = max(maxWidth, size[1]);\n }\n });\n if (maxWidth) {\n widthResizes.push([colIndex, maxWidth]);\n }\n });\n hStore._update(ACTION_ITEM_RESIZE, widthResizes);\n }\n });\n });\n return {\n _observeRoot(root) {\n rootElement = root;\n const ro = getResizeObserver();\n ro.observe(root, rootObserveOpts);\n return () => {\n ro.disconnect();\n };\n },\n _observeItem(el, rowIndex, colIndex) {\n const ro = getResizeObserver();\n mountedIndexes.set(el, [rowIndex, colIndex]);\n maybeCachedRowIndexes.add(rowIndex);\n maybeCachedColIndexes.add(colIndex);\n ro.observe(el);\n return () => {\n mountedIndexes.delete(el);\n ro.unobserve(el);\n };\n },\n };\n};\n//# sourceMappingURL=resizer.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useMemo, } from \"react\";\nexport const Viewport = forwardRef(({ children, attrs, width, height, scrolling }, ref) => {\n return (_jsx(\"div\", { ref: ref, ...attrs, children: _jsx(\"div\", { style: useMemo(() => {\n return {\n position: \"relative\",\n visibility: \"hidden\",\n width: width !== null && width !== void 0 ? width : \"100%\",\n height: height !== null && height !== void 0 ? height : \"100%\",\n pointerEvents: scrolling ? \"none\" : \"auto\",\n };\n }, [width, height, scrolling]), children: children }) }));\n});\n//# sourceMappingURL=Viewport.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { memo, useRef, useMemo, } from \"react\";\nimport { UPDATE_SIZE } from \"../core/store\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { useSelector } from \"./useSelector\";\nimport { refKey } from \"./utils\";\nexport const ListItem = memo(({ _children: children, _resizer: resizer, _store: store, _index: index, _element: Element, _isHorizontal: isHorizontal, _isRtl: isRtl, }) => {\n const ref = useRef(null);\n const offset = useSelector(store, () => store._getItemOffset(index), UPDATE_SIZE, true);\n const hide = useSelector(store, () => store._isUnmeasuredItem(index), UPDATE_SIZE, true);\n // The index may be changed if elements are inserted to or removed from the start of props.children\n useIsomorphicLayoutEffect(() => resizer._observeItem(ref[refKey], index), [index]);\n return (_jsx(Element, { ref: ref, style: useMemo(() => {\n const leftOrRightKey = isRtl ? \"right\" : \"left\";\n const style = {\n margin: 0,\n padding: 0,\n position: \"absolute\",\n [isHorizontal ? \"height\" : \"width\"]: \"100%\",\n [isHorizontal ? \"top\" : leftOrRightKey]: 0,\n [isHorizontal ? leftOrRightKey : \"top\"]: offset,\n visibility: hide ? \"hidden\" : \"visible\",\n // willChange: \"transform\",\n };\n if (isHorizontal) {\n style.display = \"flex\";\n }\n return style;\n }, [offset, hide]), children: children }));\n});\n//# sourceMappingURL=ListItem.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useRef, useMemo, forwardRef, useImperativeHandle, useEffect, } from \"react\";\nimport { UPDATE_SCROLL_WITH_EVENT, ACTION_ITEMS_LENGTH_CHANGE, createVirtualStore, UPDATE_SIZE, UPDATE_JUMP, UPDATE_IS_SCROLLING, UPDATE_SCROLL, } from \"../core/store\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { useSelector } from \"./useSelector\";\nimport { exists, max, min, values } from \"../core/utils\";\nimport { createScroller } from \"../core/scroller\";\nimport { emptyComponents, flattenChildren, refKey } from \"./utils\";\nimport { useStatic } from \"./useStatic\";\nimport { useLatestRef } from \"./useLatestRef\";\nimport { createResizer } from \"../core/resizer\";\nimport { Viewport as DefaultViewport, } from \"./Viewport\";\nimport { ListItem } from \"./ListItem\";\nimport { flushSync } from \"react-dom\";\n/**\n * Virtualized list component. See {@link VListProps} and {@link VListHandle}.\n */\nexport const VList = forwardRef(({ children, overscan = 4, initialItemSize, initialItemCount, shift, horizontal: horizontalProp, mode, cache, components: { Root: Viewport = DefaultViewport, Item: ItemElement = \"div\", } = emptyComponents, onScroll: onScrollProp, onScrollStop: onScrollStopProp, onRangeChange: onRangeChangeProp, ...viewportAttrs }, ref) => {\n // Memoize element array\n const elements = useMemo(() => flattenChildren(children), [children]);\n const count = elements.length;\n const onScroll = useLatestRef(onScrollProp);\n const onScrollStop = useLatestRef(onScrollStopProp);\n const [store, resizer, scroller, isHorizontal, isRtl] = useStatic(() => {\n const _isHorizontal = !!horizontalProp;\n const _isRtl = mode === \"rtl\";\n const _store = createVirtualStore(flushSync, count, initialItemSize, initialItemCount, cache, mode === \"reverse\", !initialItemSize);\n return [\n _store,\n createResizer(_store, _isHorizontal),\n createScroller(_store, _isHorizontal, _isRtl),\n _isHorizontal,\n _isRtl,\n ];\n });\n // The elements length and cached items length are different just after element is added/removed.\n if (count !== store._getItemsLength()) {\n store._update(ACTION_ITEMS_LENGTH_CHANGE, [count, shift]);\n }\n const [startIndex, endIndex] = useSelector(store, store._getRange, UPDATE_SCROLL + UPDATE_SIZE);\n const scrolling = useSelector(store, store._getIsScrolling, UPDATE_IS_SCROLLING);\n const jumpCount = useSelector(store, store._getJumpCount, UPDATE_JUMP);\n const scrollSize = useSelector(store, store._getCorrectedScrollSize, UPDATE_SIZE, true);\n const rootRef = useRef(null);\n useIsomorphicLayoutEffect(() => {\n const root = rootRef[refKey];\n const unobserve = resizer._observeRoot(root);\n const cleanup = scroller._initRoot(root);\n const cleanupOnScroll = store._subscribe(UPDATE_SCROLL_WITH_EVENT, () => {\n onScroll[refKey] && onScroll[refKey](store._getScrollOffset());\n });\n return () => {\n unobserve();\n cleanup();\n cleanupOnScroll();\n };\n }, []);\n useIsomorphicLayoutEffect(() => {\n const jump = store._flushJump();\n if (!jump)\n return;\n scroller._fixScrollJump(jump);\n }, [jumpCount]);\n useEffect(() => {\n if (!scrolling) {\n onScrollStop[refKey] && onScrollStop[refKey]();\n }\n }, [scrolling]);\n useEffect(() => {\n if (!onRangeChangeProp)\n return;\n onRangeChangeProp(startIndex, endIndex);\n }, [startIndex, endIndex]);\n useImperativeHandle(ref, () => {\n return {\n get cache() {\n return store._getCache();\n },\n get scrollOffset() {\n return store._getScrollOffset();\n },\n get scrollSize() {\n return store._getCorrectedScrollSize();\n },\n get viewportSize() {\n return store._getViewportSize();\n },\n scrollToIndex: scroller._scrollToIndex,\n scrollTo: scroller._scrollTo,\n scrollBy: scroller._scrollBy,\n };\n }, []);\n const overscanedStartIndex = max(startIndex - overscan, 0);\n const overscanedEndIndex = min(endIndex + overscan, count - 1);\n const items = useMemo(() => {\n const res = [];\n for (let i = overscanedStartIndex; i <= overscanedEndIndex; i++) {\n const e = elements[i];\n const key = e.key;\n res.push(_jsx(ListItem, { _resizer: resizer, _store: store, _index: i, _element: ItemElement, _children: e, _isHorizontal: isHorizontal, _isRtl: isRtl }, exists(key) ? key : \"_\" + i));\n }\n return res;\n }, [elements, overscanedStartIndex, overscanedEndIndex]);\n return (_jsx(Viewport, { ref: rootRef, width: isHorizontal ? scrollSize : undefined, height: isHorizontal ? undefined : scrollSize, scrolling: scrolling, attrs: useMemo(() => ({\n ...viewportAttrs,\n style: {\n overflow: isHorizontal ? \"auto hidden\" : \"hidden auto\",\n display: isHorizontal ? \"inline-block\" : \"block\",\n contain: \"strict\",\n // transform: \"translate3d(0px, 0px, 0px)\",\n // willChange: \"scroll-position\",\n // backfaceVisibility: \"hidden\",\n // https://github.com/bvaughn/react-window/issues/395\n // willChange: \"transform\",\n width: \"100%\",\n height: \"100%\",\n padding: 0,\n margin: 0,\n ...viewportAttrs.style,\n },\n }), values(viewportAttrs)), children: items }));\n});\n//# sourceMappingURL=VList.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { memo, useRef, useMemo, forwardRef, useImperativeHandle, } from \"react\";\nimport { ACTION_ITEMS_LENGTH_CHANGE, UPDATE_IS_SCROLLING, UPDATE_JUMP, UPDATE_SCROLL, UPDATE_SIZE, createVirtualStore, } from \"../core/store\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { useSelector } from \"./useSelector\";\nimport { max, min, values } from \"../core/utils\";\nimport { createScroller } from \"../core/scroller\";\nimport { emptyComponents, refKey } from \"./utils\";\nimport { useStatic } from \"./useStatic\";\nimport { createGridResizer } from \"../core/resizer\";\nimport { Viewport as DefaultViewport } from \"./Viewport\";\nimport { flushSync } from \"react-dom\";\nconst genKey = (i, j) => `${i}-${j}`;\nconst Cell = memo(({ _children: children, _resizer: resizer, _vStore: vStore, _hStore: hStore, _rowIndex: rowIndex, _colIndex: colIndex, _element: Element, _isRtl: isRtl, }) => {\n const ref = useRef(null);\n const top = useSelector(vStore, () => vStore._getItemOffset(rowIndex), UPDATE_SIZE, true);\n const left = useSelector(hStore, () => hStore._getItemOffset(colIndex), UPDATE_SIZE, true);\n const vHide = useSelector(vStore, () => vStore._isUnmeasuredItem(rowIndex), UPDATE_SIZE, true);\n const hHide = useSelector(hStore, () => hStore._isUnmeasuredItem(colIndex), UPDATE_SIZE, true);\n const height = useSelector(vStore, () => vStore._getItemSize(rowIndex), UPDATE_SIZE, true);\n const width = useSelector(hStore, () => hStore._getItemSize(colIndex), UPDATE_SIZE, true);\n // The index may be changed if elements are inserted to or removed from the start of props.children\n useIsomorphicLayoutEffect(() => resizer._observeItem(ref[refKey], rowIndex, colIndex), [colIndex, rowIndex]);\n return (_jsx(Element, { ref: ref, style: useMemo(() => {\n const style = {\n display: \"grid\",\n margin: 0,\n padding: 0,\n position: \"absolute\",\n top: top,\n [isRtl ? \"right\" : \"left\"]: left,\n visibility: vHide || hHide ? \"hidden\" : \"visible\",\n minHeight: height,\n minWidth: width,\n };\n return style;\n }, [top, left, width, height, vHide, hHide]), children: children }));\n});\n/**\n * Virtualized grid component. See {@link VGridProps} and {@link VGridHandle}.\n */\nexport const VGrid = forwardRef(({ children, row: rowCount, col: colCount, cellHeight = 40, cellWidth = 100, overscan = 2, initialRowCount, initialColCount, rtl: rtlProp, components: { Root: Viewport = DefaultViewport, Cell: ItemElement = \"div\", } = emptyComponents, ...viewportAttrs }, ref) => {\n const [vStore, hStore, resizer, vScroller, hScroller, isRtl] = useStatic(() => {\n const _isRtl = !!rtlProp;\n const _vs = createVirtualStore(flushSync, rowCount, cellHeight, initialRowCount);\n const _hs = createVirtualStore(flushSync, colCount, cellWidth, initialColCount);\n return [\n _vs,\n _hs,\n createGridResizer(_vs, _hs),\n createScroller(_vs, false, _isRtl),\n createScroller(_hs, true, _isRtl),\n _isRtl,\n ];\n });\n // The elements length and cached items length are different just after element is added/removed.\n if (rowCount !== vStore._getItemsLength()) {\n vStore._update(ACTION_ITEMS_LENGTH_CHANGE, [rowCount]);\n }\n if (colCount !== hStore._getItemsLength()) {\n hStore._update(ACTION_ITEMS_LENGTH_CHANGE, [colCount]);\n }\n const [startRowIndex, endRowIndex] = useSelector(vStore, vStore._getRange, UPDATE_SCROLL + UPDATE_SIZE);\n const [startColIndex, endColIndex] = useSelector(hStore, hStore._getRange, UPDATE_SCROLL + UPDATE_SIZE);\n const verticalScrolling = useSelector(vStore, vStore._getIsScrolling, UPDATE_IS_SCROLLING);\n const horizontalScrolling = useSelector(hStore, hStore._getIsScrolling, UPDATE_IS_SCROLLING);\n const vJumpCount = useSelector(vStore, vStore._getJumpCount, UPDATE_JUMP);\n const hJumpCount = useSelector(hStore, hStore._getJumpCount, UPDATE_JUMP);\n const height = useSelector(vStore, vStore._getCorrectedScrollSize, UPDATE_SIZE, true);\n const width = useSelector(hStore, hStore._getCorrectedScrollSize, UPDATE_SIZE, true);\n const rootRef = useRef(null);\n useIsomorphicLayoutEffect(() => {\n const root = rootRef[refKey];\n const unobserve = resizer._observeRoot(root);\n const vCleanup = vScroller._initRoot(root);\n const hCleanup = hScroller._initRoot(root);\n return () => {\n unobserve();\n vCleanup();\n hCleanup();\n };\n }, []);\n useIsomorphicLayoutEffect(() => {\n const jump = vStore._flushJump();\n if (!jump)\n return;\n vScroller._fixScrollJump(jump);\n }, [vJumpCount]);\n useIsomorphicLayoutEffect(() => {\n const jump = hStore._flushJump();\n if (!jump)\n return;\n hScroller._fixScrollJump(jump);\n }, [hJumpCount]);\n useImperativeHandle(ref, () => {\n return {\n get scrollOffset() {\n return [hStore._getScrollOffset(), vStore._getScrollOffset()];\n },\n get scrollSize() {\n return [\n hStore._getCorrectedScrollSize(),\n vStore._getCorrectedScrollSize(),\n ];\n },\n get viewportSize() {\n return [hStore._getViewportSize(), vStore._getViewportSize()];\n },\n scrollToIndex(indexX, indexY) {\n hScroller._scrollToIndex(indexX);\n vScroller._scrollToIndex(indexY);\n },\n scrollTo(offsetX, offsetY) {\n hScroller._scrollTo(offsetX);\n vScroller._scrollTo(offsetY);\n },\n scrollBy(offsetX, offsetY) {\n hScroller._scrollBy(offsetX);\n vScroller._scrollBy(offsetY);\n },\n };\n }, []);\n const render = useMemo(() => {\n const cache = new Map();\n return (rowIndex, colIndex) => {\n let e = cache.get(genKey(rowIndex, colIndex));\n if (!e) {\n cache.set(genKey(rowIndex, colIndex), (e = children({ rowIndex, colIndex })));\n }\n return e;\n };\n }, [children]);\n const overscanedStartRowIndex = max(startRowIndex - overscan, 0);\n const overscanedEndRowIndex = min(endRowIndex + overscan, rowCount - 1);\n const overscanedStartColIndex = max(startColIndex - overscan, 0);\n const overscanedEndColIndex = min(endColIndex + overscan, colCount - 1);\n const items = useMemo(() => {\n const res = [];\n for (let i = overscanedStartRowIndex; i <= overscanedEndRowIndex; i++) {\n for (let j = overscanedStartColIndex; j <= overscanedEndColIndex; j++) {\n res.push(_jsx(Cell, { _resizer: resizer, _vStore: vStore, _hStore: hStore, _rowIndex: i, _colIndex: j, _element: ItemElement, _children: render(i, j), _isRtl: isRtl }, genKey(i, j)));\n }\n }\n return res;\n }, [\n render,\n overscanedStartRowIndex,\n overscanedEndRowIndex,\n overscanedStartColIndex,\n overscanedEndColIndex,\n ]);\n return (_jsx(Viewport, { ref: rootRef, width: width, height: height, scrolling: verticalScrolling || horizontalScrolling, attrs: useMemo(() => ({\n ...viewportAttrs,\n style: {\n overflow: \"auto\",\n contain: \"strict\",\n // transform: \"translate3d(0px, 0px, 0px)\",\n // willChange: \"scroll-position\",\n // backfaceVisibility: \"hidden\",\n width: \"100%\",\n height: \"100%\",\n padding: 0,\n margin: 0,\n ...viewportAttrs.style,\n },\n }), values(viewportAttrs)), children: items }));\n});\n//# sourceMappingURL=VGrid.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useRef, useMemo, useEffect, forwardRef, useImperativeHandle, } from \"react\";\nimport { ACTION_ITEMS_LENGTH_CHANGE, UPDATE_IS_SCROLLING, UPDATE_JUMP, UPDATE_SCROLL, UPDATE_SIZE, createVirtualStore, } from \"../core/store\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { useSelector } from \"./useSelector\";\nimport { exists, max, min, values } from \"../core/utils\";\nimport { createWindowScroller } from \"../core/scroller\";\nimport { emptyComponents, flattenChildren, refKey } from \"./utils\";\nimport { useStatic } from \"./useStatic\";\nimport { useLatestRef } from \"./useLatestRef\";\nimport { createWindowResizer } from \"../core/resizer\";\nimport { Viewport as DefaultViewport, } from \"./Viewport\";\nimport { ListItem } from \"./ListItem\";\nimport { flushSync } from \"react-dom\";\n/**\n * Virtualized list component controlled by the window scrolling. See {@link WVListProps} and {@link WVListHandle}.\n */\nexport const WVList = forwardRef(({ children, overscan = 4, initialItemSize, initialItemCount, horizontal: horizontalProp, cache, components: { Root: Viewport = DefaultViewport, Item: ItemElement = \"div\", } = emptyComponents, onScrollStop: onScrollStopProp, onRangeChange: onRangeChangeProp, ...viewportAttrs }, ref) => {\n // Memoize element array\n const elements = useMemo(() => flattenChildren(children), [children]);\n const count = elements.length;\n const onScrollStop = useLatestRef(onScrollStopProp);\n const [store, resizer, scroller, isHorizontal] = useStatic(() => {\n const _isHorizontal = !!horizontalProp;\n const _store = createVirtualStore(flushSync, count, initialItemSize, initialItemCount, cache, false, !initialItemSize);\n return [\n _store,\n createWindowResizer(_store, _isHorizontal),\n createWindowScroller(_store, _isHorizontal),\n _isHorizontal,\n ];\n });\n // The elements length and cached items length are different just after element is added/removed.\n if (count !== store._getItemsLength()) {\n store._update(ACTION_ITEMS_LENGTH_CHANGE, [count]);\n }\n const [startIndex, endIndex] = useSelector(store, store._getRange, UPDATE_SCROLL + UPDATE_SIZE);\n const scrolling = useSelector(store, store._getIsScrolling, UPDATE_IS_SCROLLING);\n const jumpCount = useSelector(store, store._getJumpCount, UPDATE_JUMP);\n const scrollSize = useSelector(store, store._getCorrectedScrollSize, UPDATE_SIZE, true);\n const rootRef = useRef(null);\n useIsomorphicLayoutEffect(() => {\n const root = rootRef[refKey];\n const unobserve = resizer._observeRoot(root);\n const cleanup = scroller._initRoot(root);\n return () => {\n unobserve();\n cleanup();\n };\n }, []);\n useIsomorphicLayoutEffect(() => {\n const jump = store._flushJump();\n if (!jump)\n return;\n scroller._fixScrollJump(jump);\n }, [jumpCount]);\n useEffect(() => {\n if (!scrolling) {\n onScrollStop[refKey] && onScrollStop[refKey]();\n }\n }, [scrolling]);\n useEffect(() => {\n if (!onRangeChangeProp)\n return;\n onRangeChangeProp(startIndex, endIndex);\n }, [startIndex, endIndex]);\n useImperativeHandle(ref, () => {\n return {\n get cache() {\n return store._getCache();\n },\n };\n }, []);\n const overscanedStartIndex = max(startIndex - overscan, 0);\n const overscanedEndIndex = min(endIndex + overscan, count - 1);\n const items = useMemo(() => {\n const res = [];\n for (let i = overscanedStartIndex; i <= overscanedEndIndex; i++) {\n const e = elements[i];\n const key = e.key;\n res.push(_jsx(ListItem, { _resizer: resizer, _store: store, _index: i, _element: ItemElement, _children: e, _isHorizontal: isHorizontal, _isRtl: false }, exists(key) ? key : \"_\" + i));\n }\n return res;\n }, [elements, overscanedStartIndex, overscanedEndIndex]);\n return (_jsx(Viewport, { ref: rootRef, width: isHorizontal ? scrollSize : undefined, height: isHorizontal ? undefined : scrollSize, scrolling: scrolling, attrs: useMemo(() => ({\n ...viewportAttrs,\n style: {\n overflow: \"visible\",\n display: isHorizontal ? \"inline-block\" : \"block\",\n // transform: \"translate3d(0px, 0px, 0px)\",\n // willChange: \"scroll-position\",\n // backfaceVisibility: \"hidden\",\n // https://github.com/bvaughn/react-window/issues/395\n // willChange: \"transform\",\n width: isHorizontal ? \"auto\" : \"100%\",\n height: isHorizontal ? \"100%\" : \"auto\",\n padding: 0,\n margin: 0,\n ...viewportAttrs.style,\n },\n }), values(viewportAttrs)), children: items }));\n});\n//# sourceMappingURL=WVList.js.map"],"names":["min","Math","max","abs","now","Date","values","Object","isArray","Array","timeout","setTimeout","clamp","value","minValue","maxValue","exists","v","debounce","fn","ms","id","cancel","clearTimeout","debouncedFn","_cancel","once","called","cache","args","computeStyle","e","getComputedStyle","getStyleNumber","parseFloat","UNCACHED","getItemSize","index","size","_sizes","_defaultItemSize","computeOffset","_length","_measuredOffsetIndex","_offsets","i","top","findIndex","distance","sum","h","findStartIndexWithOffset","offset","initialIndex","appendCache","length","prepend","key","push","updateCacheLength","isShift","diff","isRemove","shift","splice","reduce","acc","removed","calculateJump","items","keepEnd","createVirtualStore","flushSync","elementsCount","itemSize","initialItemCount","initCache","isReverse","shouldAutoEstimateItemSize","viewportSize","scrollOffset","jumpCount","jump","_scrollDirection","_isShifting","_isManualScrolling","_resized","_prevRange","subscribers","Set","getScrollSize","computeTotalSize","getScrollOffsetMax","clampScrollOffset","updateScrollDirection","dir","prev","_getCache","JSON","parse","stringify","_getRange","prevStartIndex","prevEndIndex","start","end","findEndIndex","_isUnmeasuredItem","_hasUnmeasuredItemsInTargetViewport","startIndex","hasUnmeasuredItemsInRange","endIndex","slice","includes","_getItemOffset","computeStartOffset","_getItemSize","_getItemsLength","_getScrollOffset","_getScrollOffsetMax","_getIsScrolling","_getViewportSize","_getCorrectedScrollSize","_getJumpCount","_flushJump","prevJump","_subscribe","target","cb","sub","add","delete","_update","type","payload","shouldSync","mutated","updated","filter","isNewItemMeasured","forEach","setItemSize","isInitialMeasurement","measuredSizes","s","startItemSize","every","arr","sort","a","b","mid","median","estimateDefaultItemSize","distanceToEnd","UPDATE_SCROLL","delta","isJustResized","update","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","refKey","emptyComponents","children","elements","c","flattenChildren","useLatestRef","ref","useRef","useSelector","store","getSnapShot","shouldGetLatest","state","setState","useState","getter","snap","hasNegativeOffsetInRtl","scrollable","isNegative","createOnWheel","isHorizontal","onScrollStopped","throttle","time","n","ctrlKey","deltaX","deltaY","createScroller","isRtl","rootElement","scrollToQueue","scrollToKey","normalizeOffset","scrollManually","async","getTargetOffset","getOffset","targetOffset","unsubscribe","Promise","resolve","reject","resolved","resolveQueue","undefined","_initRoot","root","syncViewportToScrollPosition","onScroll","onWheel","addEventListener","passive","removeEventListener","_scrollTo","_scrollBy","_scrollToIndex","align","_fixScrollJump","createWindowScroller","offsetKey","visible","getOffsetToWindow","node","nodeOffset","parent","offsetParent","document","body","io","IntersectionObserver","entry","isIntersecting","observe","disconnect","scrollBy","useStatic","init","rootObserveOpts","box","createResizer","sizeKey","mountedIndexes","WeakMap","getResizeObserver","ResizeObserver","entries","resizes","contentRect","get","_observeRoot","ro","_observeItem","el","set","unobserve","createWindowResizer","windowSizeKey","createGridResizer","vStore","hStore","heightKey","widthKey","maybeCachedRowIndexes","maybeCachedColIndexes","sizeCache","Map","getKey","rowIndex","colIndex","resizedRows","resizedCols","style","paddingBottom","left","paddingRight","cell","prevSize","rowResized","colResized","heightResizes","maxHeight","widthResizes","maxWidth","Viewport","forwardRef","attrs","width","height","scrolling","_jsx","jsx","useMemo","position","visibility","pointerEvents","ListItem","memo","_children","_resizer","resizer","_store","_index","_element","Element","_isHorizontal","_isRtl","hide","leftOrRightKey","margin","padding","display","VList","overscan","initialItemSize","horizontal","horizontalProp","mode","components","Root","DefaultViewport","Item","ItemElement","onScrollProp","onScrollStop","onScrollStopProp","onRangeChange","onRangeChangeProp","viewportAttrs","count","scroller","scrollSize","rootRef","cleanup","cleanupOnScroll","useImperativeHandle","scrollToIndex","scrollTo","overscanedStartIndex","overscanedEndIndex","res","overflow","contain","genKey","j","Cell","_vStore","_hStore","_rowIndex","_colIndex","vHide","hHide","minHeight","minWidth","VGrid","row","rowCount","col","colCount","cellHeight","cellWidth","initialRowCount","initialColCount","rtl","rtlProp","vScroller","hScroller","_vs","_hs","startRowIndex","endRowIndex","startColIndex","endColIndex","verticalScrolling","horizontalScrolling","vJumpCount","hJumpCount","vCleanup","hCleanup","indexX","indexY","offsetX","offsetY","render","overscanedStartRowIndex","overscanedEndRowIndex","overscanedStartColIndex","overscanedEndColIndex","WVList"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/core/utils.ts","../src/core/cache.ts","../src/core/store.ts","../src/react/useIsomorphicLayoutEffect.ts","../src/react/utils.ts","../src/react/useLatestRef.ts","../src/react/useSelector.ts","../src/core/environment.ts","../src/core/scroller.ts","../src/react/useStatic.ts","../src/core/resizer.ts","../src/react/Viewport.tsx","../src/react/ListItem.tsx","../src/react/VList.tsx","../src/react/VGrid.tsx","../src/react/WVList.tsx"],"sourcesContent":["export const min = Math.min;\nexport const max = Math.max;\nexport const abs = Math.abs;\nexport const now = Date.now;\nexport const values = Object.values;\nexport const isArray = Array.isArray;\nexport const timeout = setTimeout;\nexport const clamp = (value, minValue, maxValue) => min(maxValue, max(minValue, value));\nexport const exists = (v) => v != null;\nexport const median = (arr) => {\n const s = [...arr].sort((a, b) => a - b);\n const mid = (arr.length / 2) | 0;\n return s.length % 2 === 0 ? (s[mid - 1] + s[mid]) / 2 : s[mid];\n};\nexport const debounce = (fn, ms) => {\n let id;\n const cancel = () => {\n if (exists(id)) {\n clearTimeout(id);\n }\n };\n const debouncedFn = () => {\n cancel();\n id = timeout(() => {\n id = null;\n fn();\n }, ms);\n };\n debouncedFn._cancel = cancel;\n return debouncedFn;\n};\nexport const throttle = (fn, ms) => {\n let time = now() - ms;\n return (...args) => {\n const n = now();\n if (time + ms < n) {\n time = n;\n fn(...args);\n }\n };\n};\nexport const once = (fn) => {\n let called;\n let cache;\n return ((...args) => {\n if (!called) {\n called = true;\n cache = fn(...args);\n }\n return cache;\n });\n};\n// wrap for SSR\nexport const computeStyle = (e) => getComputedStyle(e);\nexport const getStyleNumber = (v) => {\n if (v) {\n return parseFloat(v);\n }\n else {\n return 0;\n }\n};\n//# sourceMappingURL=utils.js.map","import { clamp, median, min } from \"./utils\";\nexport const UNCACHED = -1;\nexport const getItemSize = (cache, index) => {\n const size = cache._sizes[index];\n return size === UNCACHED ? cache._defaultItemSize : size;\n};\nexport const setItemSize = (cache, index, size) => {\n const isInitialMeasurement = cache._sizes[index] === UNCACHED;\n cache._sizes[index] = size;\n // mark as dirty\n cache._measuredOffsetIndex = min(index, cache._measuredOffsetIndex);\n return isInitialMeasurement;\n};\nexport const computeOffset = (cache, index) => {\n if (!cache._length)\n return 0;\n if (cache._measuredOffsetIndex >= index) {\n return cache._offsets[index];\n }\n let i = cache._measuredOffsetIndex;\n let top = cache._offsets[i];\n while (i < index) {\n top += getItemSize(cache, i);\n cache._offsets[++i] = top;\n }\n // mark as measured\n cache._measuredOffsetIndex = index;\n return top;\n};\nexport const computeTotalSize = (cache) => {\n if (!cache._length)\n return 0;\n return (computeOffset(cache, cache._length - 1) +\n getItemSize(cache, cache._length - 1));\n};\nexport const findIndex = (cache, i, distance) => {\n let sum = 0;\n if (distance >= 0) {\n // search forward\n while (i < cache._length - 1) {\n const h = getItemSize(cache, i++);\n if ((sum += h) >= distance) {\n if (sum - h / 2 >= distance) {\n i--;\n }\n break;\n }\n }\n }\n else {\n // search backward\n while (i > 0) {\n const h = getItemSize(cache, --i);\n if ((sum -= h) <= distance) {\n if (sum + h / 2 < distance) {\n i++;\n }\n break;\n }\n }\n }\n return clamp(i, 0, cache._length - 1);\n};\nexport const findStartIndexWithOffset = (cache, offset, initialIndex) => {\n return findIndex(cache, initialIndex, offset - computeOffset(cache, initialIndex));\n};\nexport const hasUnmeasuredItemsInRange = (cache, startIndex, endIndex) => {\n return cache._sizes.slice(startIndex, endIndex + 1).includes(UNCACHED);\n};\nexport const estimateDefaultItemSize = (cache) => {\n const measuredSizes = cache._sizes.filter((s) => s !== UNCACHED);\n // This function will be called after measurement so measured size array must be longer than 0\n const startItemSize = measuredSizes[0];\n cache._defaultItemSize = measuredSizes.every((s) => s === startItemSize)\n ? // Maybe a fixed size array\n startItemSize\n : // Maybe a variable size array\n median(measuredSizes);\n};\nconst appendCache = (cache, length, prepend) => {\n const key = prepend ? \"unshift\" : \"push\";\n for (let i = cache._length; i < length; i++) {\n cache._sizes[key](UNCACHED);\n // first offset must be 0\n cache._offsets.push(i === 0 ? 0 : UNCACHED);\n }\n cache._length = length;\n};\nexport const initCache = (length, itemSize) => {\n const cache = {\n _defaultItemSize: itemSize,\n _length: 0,\n _measuredOffsetIndex: 0,\n _sizes: [],\n _offsets: [],\n };\n appendCache(cache, length);\n return cache;\n};\nexport const updateCacheLength = (cache, length, isShift) => {\n const diff = length - cache._length;\n const isRemove = diff < 0;\n let shift;\n if (isRemove) {\n // Removed\n shift = (isShift ? cache._sizes.splice(0, -diff) : cache._sizes.splice(diff)).reduce((acc, removed) => acc + (removed === UNCACHED ? cache._defaultItemSize : removed), 0);\n cache._offsets.splice(diff);\n }\n else {\n // Added\n shift = cache._defaultItemSize * diff;\n appendCache(cache, cache._length + diff, isShift);\n }\n cache._measuredOffsetIndex = isShift\n ? // Discard cache for now\n 0\n : // measuredOffsetIndex shouldn't be less than 0 because it makes scrollSize NaN and cause infinite rerender.\n // https://github.com/inokawa/virtua/pull/160\n clamp(length - 1, 0, cache._measuredOffsetIndex);\n cache._length = length;\n return [shift, isRemove];\n};\n//# sourceMappingURL=cache.js.map","import { findStartIndexWithOffset, initCache, getItemSize, computeTotalSize, findIndex as findEndIndex, computeOffset as computeStartOffset, UNCACHED, setItemSize, hasUnmeasuredItemsInRange, estimateDefaultItemSize, updateCacheLength, } from \"./cache\";\nimport { abs, clamp, max, min } from \"./utils\";\nconst calculateJump = (cache, items, keepEnd) => {\n return items.reduce((acc, [index, size]) => {\n const diff = size - getItemSize(cache, index);\n if (!keepEnd || diff > 0) {\n acc += diff;\n }\n return acc;\n }, 0);\n};\n// Scroll offset and sizes can have sub-pixel value if window.devicePixelRatio has decimal value\nconst SUBPIXEL_THRESHOLD = 1.5; // 0.5 * 3\nexport const SCROLL_IDLE = 0;\nexport const SCROLL_DOWN = 1;\nexport const SCROLL_UP = 2;\nexport const ACTION_ITEM_RESIZE = 1;\nexport const ACTION_VIEWPORT_RESIZE = 2;\nexport const ACTION_ITEMS_LENGTH_CHANGE = 3;\nexport const ACTION_SCROLL = 4;\nexport const ACTION_BEFORE_MANUAL_SCROLL = 5;\nexport const ACTION_SCROLL_END = 6;\nexport const ACTION_MANUAL_SCROLL = 7;\nexport const UPDATE_SCROLL = 0b00001;\nexport const UPDATE_SIZE = 0b00010;\nexport const UPDATE_JUMP = 0b00100;\nexport const UPDATE_IS_SCROLLING = 0b01000;\nexport const UPDATE_SCROLL_WITH_EVENT = 0b10000;\nexport const createVirtualStore = (flushSync, elementsCount, itemSize = 40, initialItemCount = 0, cache = initCache(elementsCount, itemSize), isReverse, shouldAutoEstimateItemSize) => {\n let viewportSize = itemSize * max(initialItemCount - 1, 0);\n let scrollOffset = 0;\n let jumpCount = 0;\n let jump = 0;\n let _scrollDirection = SCROLL_IDLE;\n let _isShifting = false;\n let _isManualScrolling = false;\n let _resized = false;\n let _prevRange = [0, initialItemCount];\n const subscribers = new Set();\n const getScrollSize = () => computeTotalSize(cache);\n const getScrollOffsetMax = () => getScrollSize() - viewportSize;\n const clampScrollOffset = (value) => {\n // Scroll offset may exceed min or max especially in Safari's elastic scrolling.\n return clamp(value, 0, getScrollOffsetMax());\n };\n const updateScrollDirection = (dir) => {\n const prev = _scrollDirection;\n _scrollDirection = dir;\n // Return true if scrolling is just started or stopped\n return (_scrollDirection !== prev &&\n (_scrollDirection === SCROLL_IDLE || prev === SCROLL_IDLE));\n };\n return {\n _getCache() {\n return JSON.parse(JSON.stringify(cache));\n },\n _getRange() {\n const [prevStartIndex, prevEndIndex] = _prevRange;\n const start = findStartIndexWithOffset(cache, scrollOffset, \n // Clamp because prevStartIndex may exceed the limit when children decreased a lot after scrolling\n min(prevStartIndex, cache._length - 1));\n const end = findEndIndex(cache, start, viewportSize);\n if (prevStartIndex === start && prevEndIndex === end) {\n return _prevRange;\n }\n return (_prevRange = [start, end]);\n },\n _isUnmeasuredItem(index) {\n return cache._sizes[index] === UNCACHED;\n },\n _hasUnmeasuredItemsInTargetViewport(offset) {\n const startIndex = findStartIndexWithOffset(cache, offset, _prevRange[0] // TODO binary search may be better here\n );\n return hasUnmeasuredItemsInRange(cache, max(0, startIndex - 1), min(cache._length - 1, findEndIndex(cache, startIndex, viewportSize) + 1));\n },\n _getItemOffset(index) {\n const offset = computeStartOffset(cache, index);\n if (isReverse) {\n return offset + max(0, viewportSize - getScrollSize());\n }\n return offset;\n },\n _getItemSize(index) {\n return getItemSize(cache, index);\n },\n _getItemsLength() {\n return cache._length;\n },\n _getScrollOffset() {\n return scrollOffset;\n },\n _getScrollOffsetMax: getScrollOffsetMax,\n _getIsScrolling() {\n return _scrollDirection !== SCROLL_IDLE;\n },\n _getViewportSize() {\n return viewportSize;\n },\n _getCorrectedScrollSize() {\n return max(getScrollSize(), viewportSize);\n },\n _getJumpCount() {\n return jumpCount;\n },\n _flushJump() {\n const prevJump = jump;\n jump = 0;\n return prevJump;\n },\n _subscribe(target, cb) {\n const sub = [target, cb];\n subscribers.add(sub);\n return () => {\n subscribers.delete(sub);\n };\n },\n _update(type, payload) {\n let shouldSync;\n let mutated = 0;\n switch (type) {\n case ACTION_ITEM_RESIZE: {\n const updated = payload.filter(([index, size]) => cache._sizes[index] !== size);\n // Skip if all items are cached and not updated\n if (!updated.length) {\n break;\n }\n // Calculate jump\n let diff = 0;\n if (_isShifting || _isManualScrolling) {\n // Should maintain visible position under specific situations\n const [startIndex] = _prevRange;\n if (scrollOffset === 0) {\n // Do nothing to stick to the start\n }\n else if (scrollOffset >\n getScrollOffsetMax() - SUBPIXEL_THRESHOLD) {\n // Keep end to stick to the end\n diff = calculateJump(cache, updated, true);\n }\n else {\n // Keep start at mid\n diff = calculateJump(cache, updated.filter(([index]) => index < startIndex));\n }\n }\n else if (_scrollDirection === SCROLL_UP) {\n // We can assume jumps occurred on the upper outside during reverse scrolling\n diff = calculateJump(cache, updated);\n }\n else {\n // Do nothing\n }\n if (diff) {\n jump = diff;\n jumpCount++;\n mutated += UPDATE_JUMP;\n }\n // Update item sizes\n let isNewItemMeasured = false;\n updated.forEach(([index, size]) => {\n if (setItemSize(cache, index, size)) {\n isNewItemMeasured = true;\n }\n });\n // Estimate initial item size from measured sizes\n if (shouldAutoEstimateItemSize &&\n isNewItemMeasured &&\n // TODO support reverse scroll also\n !scrollOffset) {\n estimateDefaultItemSize(cache);\n }\n mutated += UPDATE_SIZE;\n _resized = shouldSync = true;\n break;\n }\n case ACTION_VIEWPORT_RESIZE: {\n if (viewportSize !== payload) {\n viewportSize = payload;\n mutated = UPDATE_SIZE;\n }\n break;\n }\n case ACTION_ITEMS_LENGTH_CHANGE: {\n if (payload[1]) {\n // Calc distance before updating cache\n const distanceToEnd = getScrollOffsetMax() - scrollOffset;\n const [shift, isRemove] = updateCacheLength(cache, payload[0], true);\n const diff = isRemove ? -min(shift, distanceToEnd) : shift;\n jump += diff;\n scrollOffset = clampScrollOffset(scrollOffset + diff);\n jumpCount++;\n mutated = UPDATE_SCROLL + UPDATE_JUMP;\n _isShifting = true;\n }\n else {\n updateCacheLength(cache, payload[0]);\n }\n break;\n }\n case ACTION_SCROLL:\n case ACTION_BEFORE_MANUAL_SCROLL: {\n // Skip if offset is not changed\n if (scrollOffset === payload) {\n break;\n }\n if (type === ACTION_SCROLL) {\n const delta = payload - scrollOffset;\n // Scrolling after resizing will be caused by jump compensation\n const isJustResized = _resized;\n _resized = false;\n // Skip scroll direction detection just after resizing because it may result in the opposite direction.\n // Scroll events are dispatched enough so it's ok to skip some of them.\n if ((_scrollDirection === SCROLL_IDLE || !isJustResized) &&\n // Ignore until manual scrolling\n !_isManualScrolling) {\n if (updateScrollDirection(delta < 0 ? SCROLL_UP : SCROLL_DOWN)) {\n mutated += UPDATE_IS_SCROLLING;\n }\n }\n // Ignore manual scroll because it may be called in useEffect/useLayoutEffect and cause the warn below.\n // Warning: flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.\n //\n // Update synchronously if scrolled a lot\n shouldSync = abs(delta) > viewportSize;\n mutated += UPDATE_SCROLL_WITH_EVENT;\n if (!isJustResized) {\n _isShifting = false;\n }\n }\n scrollOffset = clampScrollOffset(payload);\n mutated += UPDATE_SCROLL;\n break;\n }\n case ACTION_SCROLL_END: {\n if (updateScrollDirection(SCROLL_IDLE)) {\n mutated = UPDATE_IS_SCROLLING;\n }\n _isShifting = _isManualScrolling = false;\n break;\n }\n case ACTION_MANUAL_SCROLL: {\n _isManualScrolling = true;\n break;\n }\n }\n if (mutated) {\n const update = () => {\n subscribers.forEach(([target, cb]) => {\n // Early return to skip React's computation\n if (!(mutated & target)) {\n return;\n }\n cb();\n });\n };\n if (shouldSync) {\n // https://github.com/facebook/react/issues/25191\n // https://github.com/facebook/react/blob/a5fc797db14c6e05d4d5c4dbb22a0dd70d41f5d5/packages/react-reconciler/src/ReactFiberWorkLoop.js#L1443-L1447\n flushSync(update);\n }\n else {\n update();\n }\n }\n },\n };\n};\n//# sourceMappingURL=store.js.map","import { useEffect, useLayoutEffect } from \"react\";\n// https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nexport const useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import { exists, isArray } from \"../core/utils\";\nexport const refKey = \"current\";\nexport const emptyComponents = {};\nconst forEach = (children, elements) => {\n if (isArray(children)) {\n for (const c of children) {\n forEach(c, elements);\n }\n }\n else if (!exists(children) || typeof children === \"boolean\") {\n // filter out, that is the same as React.Children.toArray\n }\n else {\n elements.push(children);\n }\n};\n// Replace React.Children.forEach with our tiny implementation.\n// In our usage, just flatten children array keeping element instances and their keys, React.Children is redundant and slow.\n//\n// - React.Children.toArray is slow because it clones element instance.\n// - React.Children.map is slow because it clones element instance.\n// - React.Children.forEach is slow because it escapes and modifies keys even if they are unused.\n//\n// And React.Children seems to be in maintenance mode so it's unlikely it would be improved and ported to older versions.\n// https://github.com/reactjs/rfcs/pull/61#issuecomment-584402735\nexport const flattenChildren = (children) => {\n const elements = [];\n forEach(children, elements);\n return elements;\n};\n//# sourceMappingURL=utils.js.map","import { useRef } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { refKey } from \"./utils\";\nexport const useLatestRef = (value) => {\n const ref = useRef(value);\n useIsomorphicLayoutEffect(() => {\n ref[refKey] = value;\n }, [value]);\n return ref;\n};\n//# sourceMappingURL=useLatestRef.js.map","import { useState } from \"react\";\nimport { useLatestRef } from \"./useLatestRef\";\nimport { refKey } from \"./utils\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nexport const useSelector = (store, getSnapShot, target, shouldGetLatest) => {\n const [state, setState] = useState(getSnapShot);\n const getter = useLatestRef(getSnapShot);\n useIsomorphicLayoutEffect(() => {\n return store._subscribe(target, () => {\n setState(() => getter[refKey]());\n });\n }, []);\n // especially for sort of items\n if (shouldGetLatest) {\n const snap = getSnapShot();\n if (state !== snap) {\n setState(snap);\n }\n }\n return state;\n};\n//# sourceMappingURL=useSelector.js.map","import { once } from \"./utils\";\n// The scroll position may be negative value in rtl direction.\n//\n// left right result\n// -100 0 true spec compliant\n// 0 100 false probably Chrome earlier than v85\n// https://github.com/othree/jquery.rtl-scroll-type\nexport const hasNegativeOffsetInRtl = /*#__PURE__*/ once((scrollable) => {\n const key = \"scrollLeft\";\n const prev = scrollable[key];\n scrollable[key] = 1;\n // scrollLeft can be positive under some specific situations even if negative mode, so we use `<` for now.\n const isNegative = scrollable[key] < 1;\n scrollable[key] = prev;\n return isNegative;\n});\n//# sourceMappingURL=environment.js.map","import { hasNegativeOffsetInRtl } from \"./environment\";\nimport { ACTION_SCROLL, ACTION_BEFORE_MANUAL_SCROLL, ACTION_SCROLL_END, UPDATE_SIZE, ACTION_MANUAL_SCROLL, } from \"./store\";\nimport { debounce, throttle, timeout, clamp } from \"./utils\";\n// Infer scroll state also from wheel events\n// Sometimes scroll events do not fire when frame dropped even if the visual have been already scrolled\nconst createOnWheel = (store, isHorizontal, onScrollStopped) => {\n return throttle((e) => {\n if (!store._getIsScrolling()) {\n // Scroll start should be detected with scroll event\n return;\n }\n if (e.ctrlKey) {\n // Probably a pinch-to-zoom gesture\n return;\n }\n // Get delta before checking deltaMode for firefox behavior\n // https://github.com/w3c/uievents/issues/181#issuecomment-392648065\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1392460#c34\n if (isHorizontal ? e.deltaX : e.deltaY) {\n const offset = store._getScrollOffset();\n if (offset > 0 && offset < store._getScrollOffsetMax()) {\n onScrollStopped();\n }\n }\n }, 50);\n};\nexport const createScroller = (store, isHorizontal, isRtl) => {\n let rootElement;\n let scrollToQueue;\n const scrollToKey = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n const normalizeOffset = (offset, diff) => {\n if (isHorizontal && isRtl) {\n if (hasNegativeOffsetInRtl(rootElement)) {\n return -offset;\n }\n else {\n return diff ? -offset : store._getScrollOffsetMax() - offset;\n }\n }\n return offset;\n };\n const scrollManually = async (getOffset) => {\n if (!rootElement)\n return;\n const getTargetOffset = () => {\n // Adjust if the offset is over the end, to get correct startIndex.\n return clamp(getOffset(), 0, store._getScrollOffsetMax());\n };\n while (true) {\n // Sync viewport to scroll destination\n // In order to scroll to the correct position, mount the items and measure their sizes before scrolling.\n const targetOffset = getTargetOffset();\n store._update(ACTION_BEFORE_MANUAL_SCROLL, targetOffset);\n if (!store._hasUnmeasuredItemsInTargetViewport(targetOffset)) {\n break;\n }\n if (scrollToQueue) {\n // Cancel waiting scrollTo\n scrollToQueue[1]();\n }\n // Wait for the scroll destination items to be measured.\n const unsubscribe = store._subscribe(UPDATE_SIZE, () => {\n scrollToQueue && scrollToQueue[0]();\n });\n try {\n // The measurement will be done asynchronously and the timing is not predictable so we use promise.\n // For example, ResizeObserver may not fire when window is not visible.\n await new Promise((resolve, reject) => {\n let resolved = false;\n const resolveQueue = () => {\n if (resolved)\n return;\n resolved = true;\n resolve();\n scrollToQueue = undefined;\n };\n scrollToQueue = [resolveQueue, reject];\n // In some specific situation with VGrid, the promise never resolved so we resolve it if timed out.\n timeout(resolveQueue, 250);\n });\n }\n catch (e) {\n // canceled\n return;\n }\n finally {\n unsubscribe();\n }\n }\n // Scroll with the updated value\n rootElement[scrollToKey] = normalizeOffset(getTargetOffset());\n store._update(ACTION_MANUAL_SCROLL);\n };\n return {\n _initRoot(root) {\n rootElement = root;\n const syncViewportToScrollPosition = () => {\n store._update(ACTION_SCROLL, normalizeOffset(root[scrollToKey]));\n };\n const onScrollStopped = debounce(() => {\n // Check scroll position once just after scrolling stopped\n syncViewportToScrollPosition();\n store._update(ACTION_SCROLL_END);\n }, 150);\n const onScroll = () => {\n syncViewportToScrollPosition();\n onScrollStopped();\n };\n const onWheel = createOnWheel(store, isHorizontal, onScrollStopped);\n root.addEventListener(\"scroll\", onScroll);\n root.addEventListener(\"wheel\", onWheel, { passive: true });\n return () => {\n root.removeEventListener(\"scroll\", onScroll);\n root.removeEventListener(\"wheel\", onWheel);\n onScrollStopped._cancel();\n };\n },\n _scrollTo(offset) {\n scrollManually(() => offset);\n },\n _scrollBy(offset) {\n offset += store._getScrollOffset();\n scrollManually(() => offset);\n },\n _scrollToIndex(index, align) {\n index = clamp(index, 0, store._getItemsLength() - 1);\n scrollManually(align === \"end\"\n ? () => store._getItemOffset(index) +\n store._getItemSize(index) -\n store._getViewportSize()\n : () => store._getItemOffset(index));\n },\n _fixScrollJump: (jump) => {\n if (!rootElement)\n return;\n rootElement[scrollToKey] += normalizeOffset(jump, true);\n },\n };\n};\nexport const createWindowScroller = (store, isHorizontal) => {\n const scrollToKey = isHorizontal ? \"scrollX\" : \"scrollY\";\n const offsetKey = isHorizontal ? \"offsetLeft\" : \"offsetTop\";\n return {\n _initRoot(rootElement) {\n let visible = false;\n const getOffsetToWindow = (node, offset) => {\n const nodeOffset = offset + node[offsetKey];\n const parent = node.offsetParent;\n if (node === document.body || !parent) {\n return nodeOffset;\n }\n return getOffsetToWindow(parent, nodeOffset);\n };\n const syncViewportToScrollPosition = () => {\n if (!visible)\n return;\n store._update(ACTION_SCROLL, window[scrollToKey] - getOffsetToWindow(rootElement, 0));\n };\n const onScrollStopped = debounce(() => {\n // Check scroll position once just after scrolling stopped\n syncViewportToScrollPosition();\n store._update(ACTION_SCROLL_END);\n }, 150);\n const onScroll = () => {\n syncViewportToScrollPosition();\n onScrollStopped();\n };\n const onWheel = createOnWheel(store, isHorizontal, onScrollStopped);\n const io = new IntersectionObserver(([entry]) => {\n visible = entry.isIntersecting;\n });\n io.observe(rootElement);\n window.addEventListener(\"scroll\", onScroll);\n window.addEventListener(\"wheel\", onWheel, { passive: true });\n return () => {\n io.disconnect();\n window.removeEventListener(\"scroll\", onScroll);\n window.removeEventListener(\"wheel\", onWheel);\n onScrollStopped._cancel();\n };\n },\n _fixScrollJump: (jump) => {\n // TODO support case two window scrollers exist in the same view\n window.scrollBy(isHorizontal ? jump : 0, isHorizontal ? 0 : jump);\n },\n };\n};\n//# sourceMappingURL=scroller.js.map","import { useRef } from \"react\";\nimport { refKey } from \"./utils\";\nexport const useStatic = (init) => {\n const ref = useRef();\n return ref[refKey] || (ref[refKey] = init());\n};\n//# sourceMappingURL=useStatic.js.map","import { ACTION_ITEM_RESIZE, ACTION_VIEWPORT_RESIZE, } from \"./store\";\nimport { exists, computeStyle, getStyleNumber, max, once } from \"./utils\";\nconst rootObserveOpts = { box: \"border-box\" };\nexport const createResizer = (store, isHorizontal) => {\n let rootElement;\n const sizeKey = isHorizontal ? \"width\" : \"height\";\n const mountedIndexes = new WeakMap();\n // Initialize ResizeObserver lazily for SSR\n const getResizeObserver = once(() => {\n // https://www.w3.org/TR/resize-observer/#intro\n return new ResizeObserver((entries) => {\n const resizes = [];\n for (const { target, contentRect } of entries) {\n // Skip zero-sized rects that may be observed under `display: none` style\n if (!target.offsetParent)\n continue;\n if (target === rootElement) {\n store._update(ACTION_VIEWPORT_RESIZE, contentRect[sizeKey] +\n contentRect[isHorizontal ? \"left\" : \"top\"] +\n // contentRect doesn't have paddingRight/paddingBottom so get them from computed style\n // https://www.w3.org/TR/resize-observer/#css-definitions\n getStyleNumber(computeStyle(rootElement)[isHorizontal ? \"paddingRight\" : \"paddingBottom\"]));\n }\n else {\n const index = mountedIndexes.get(target);\n if (exists(index)) {\n resizes.push([index, contentRect[sizeKey]]);\n }\n }\n }\n if (resizes.length) {\n store._update(ACTION_ITEM_RESIZE, resizes);\n }\n });\n });\n return {\n _observeRoot(root) {\n rootElement = root;\n const ro = getResizeObserver();\n ro.observe(root, rootObserveOpts);\n return () => {\n ro.disconnect();\n };\n },\n _observeItem(el, i) {\n const ro = getResizeObserver();\n mountedIndexes.set(el, i);\n ro.observe(el);\n return () => {\n mountedIndexes.delete(el);\n ro.unobserve(el);\n };\n },\n };\n};\nexport const createWindowResizer = (store, isHorizontal) => {\n const sizeKey = isHorizontal ? \"width\" : \"height\";\n const windowSizeKey = isHorizontal ? \"innerWidth\" : \"innerHeight\";\n const mountedIndexes = new WeakMap();\n // Initialize ResizeObserver lazily for SSR\n const getResizeObserver = once(() => {\n // https://www.w3.org/TR/resize-observer/#intro\n return new ResizeObserver((entries) => {\n const resizes = [];\n for (const { target, contentRect } of entries) {\n // Skip zero-sized rects that may be observed under `display: none` style\n if (!target.offsetParent)\n continue;\n const index = mountedIndexes.get(target);\n if (exists(index)) {\n resizes.push([index, contentRect[sizeKey]]);\n }\n }\n if (resizes.length) {\n store._update(ACTION_ITEM_RESIZE, resizes);\n }\n });\n });\n return {\n _observeRoot() {\n const cb = () => {\n store._update(ACTION_VIEWPORT_RESIZE, window[windowSizeKey]);\n };\n window.addEventListener(\"resize\", cb);\n cb();\n return () => {\n window.removeEventListener(\"resize\", cb);\n getResizeObserver().disconnect();\n };\n },\n _observeItem(el, i) {\n const ro = getResizeObserver();\n mountedIndexes.set(el, i);\n ro.observe(el);\n return () => {\n mountedIndexes.delete(el);\n ro.unobserve(el);\n };\n },\n };\n};\nexport const createGridResizer = (vStore, hStore) => {\n let rootElement;\n const heightKey = \"height\";\n const widthKey = \"width\";\n const mountedIndexes = new WeakMap();\n const maybeCachedRowIndexes = new Set();\n const maybeCachedColIndexes = new Set();\n const sizeCache = new Map();\n const getKey = (rowIndex, colIndex) => `${rowIndex}-${colIndex}`;\n // Initialize ResizeObserver lazily for SSR\n const getResizeObserver = once(() => {\n // https://www.w3.org/TR/resize-observer/#intro\n return new ResizeObserver((entries) => {\n const resizedRows = new Set();\n const resizedCols = new Set();\n for (const { target, contentRect } of entries) {\n // Skip zero-sized rects that may be observed under `display: none` style\n if (!target.offsetParent)\n continue;\n if (target === rootElement) {\n // contentRect doesn't have paddingRight/paddingBottom so get them from computed style\n // https://www.w3.org/TR/resize-observer/#css-definitions\n // TODO subtract scroll bar width/height\n // https://github.com/w3c/csswg-drafts/issues/3536\n const style = computeStyle(rootElement);\n vStore._update(ACTION_VIEWPORT_RESIZE, contentRect[heightKey] +\n contentRect.top +\n getStyleNumber(style.paddingBottom));\n hStore._update(ACTION_VIEWPORT_RESIZE, contentRect[widthKey] +\n contentRect.left +\n getStyleNumber(style.paddingRight));\n }\n else {\n const cell = mountedIndexes.get(target);\n if (cell) {\n const [rowIndex, colIndex] = cell;\n const key = getKey(rowIndex, colIndex);\n const prevSize = sizeCache.get(key);\n const size = [\n contentRect[heightKey],\n contentRect[widthKey],\n ];\n let rowResized;\n let colResized;\n if (!prevSize) {\n rowResized = colResized = true;\n }\n else {\n if (prevSize[0] !== size[0]) {\n rowResized = true;\n }\n if (prevSize[1] !== size[1]) {\n colResized = true;\n }\n }\n if (rowResized) {\n resizedRows.add(rowIndex);\n }\n if (colResized) {\n resizedCols.add(colIndex);\n }\n if (rowResized || colResized) {\n sizeCache.set(key, size);\n }\n }\n }\n }\n if (resizedRows.size) {\n const heightResizes = [];\n resizedRows.forEach((rowIndex) => {\n let maxHeight = 0;\n maybeCachedColIndexes.forEach((colIndex) => {\n const size = sizeCache.get(getKey(rowIndex, colIndex));\n if (size) {\n maxHeight = max(maxHeight, size[0]);\n }\n });\n if (maxHeight) {\n heightResizes.push([rowIndex, maxHeight]);\n }\n });\n vStore._update(ACTION_ITEM_RESIZE, heightResizes);\n }\n if (resizedCols.size) {\n const widthResizes = [];\n resizedCols.forEach((colIndex) => {\n let maxWidth = 0;\n maybeCachedRowIndexes.forEach((rowIndex) => {\n const size = sizeCache.get(getKey(rowIndex, colIndex));\n if (size) {\n maxWidth = max(maxWidth, size[1]);\n }\n });\n if (maxWidth) {\n widthResizes.push([colIndex, maxWidth]);\n }\n });\n hStore._update(ACTION_ITEM_RESIZE, widthResizes);\n }\n });\n });\n return {\n _observeRoot(root) {\n rootElement = root;\n const ro = getResizeObserver();\n ro.observe(root, rootObserveOpts);\n return () => {\n ro.disconnect();\n };\n },\n _observeItem(el, rowIndex, colIndex) {\n const ro = getResizeObserver();\n mountedIndexes.set(el, [rowIndex, colIndex]);\n maybeCachedRowIndexes.add(rowIndex);\n maybeCachedColIndexes.add(colIndex);\n ro.observe(el);\n return () => {\n mountedIndexes.delete(el);\n ro.unobserve(el);\n };\n },\n };\n};\n//# sourceMappingURL=resizer.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useMemo, } from \"react\";\nexport const Viewport = forwardRef(({ children, attrs, width, height, scrolling }, ref) => {\n return (_jsx(\"div\", { ref: ref, ...attrs, children: _jsx(\"div\", { style: useMemo(() => {\n return {\n position: \"relative\",\n visibility: \"hidden\",\n width: width !== null && width !== void 0 ? width : \"100%\",\n height: height !== null && height !== void 0 ? height : \"100%\",\n pointerEvents: scrolling ? \"none\" : \"auto\",\n };\n }, [width, height, scrolling]), children: children }) }));\n});\n//# sourceMappingURL=Viewport.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { memo, useRef, useMemo, } from \"react\";\nimport { UPDATE_SIZE } from \"../core/store\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { useSelector } from \"./useSelector\";\nimport { refKey } from \"./utils\";\nexport const ListItem = memo(({ _children: children, _resizer: resizer, _store: store, _index: index, _element: Element, _isHorizontal: isHorizontal, _isRtl: isRtl, }) => {\n const ref = useRef(null);\n const offset = useSelector(store, () => store._getItemOffset(index), UPDATE_SIZE, true);\n const hide = useSelector(store, () => store._isUnmeasuredItem(index), UPDATE_SIZE, true);\n // The index may be changed if elements are inserted to or removed from the start of props.children\n useIsomorphicLayoutEffect(() => resizer._observeItem(ref[refKey], index), [index]);\n return (_jsx(Element, { ref: ref, style: useMemo(() => {\n const leftOrRightKey = isRtl ? \"right\" : \"left\";\n const style = {\n margin: 0,\n padding: 0,\n position: \"absolute\",\n [isHorizontal ? \"height\" : \"width\"]: \"100%\",\n [isHorizontal ? \"top\" : leftOrRightKey]: 0,\n [isHorizontal ? leftOrRightKey : \"top\"]: offset,\n visibility: hide ? \"hidden\" : \"visible\",\n // willChange: \"transform\",\n };\n if (isHorizontal) {\n style.display = \"flex\";\n }\n return style;\n }, [offset, hide]), children: children }));\n});\n//# sourceMappingURL=ListItem.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useRef, useMemo, forwardRef, useImperativeHandle, useEffect, } from \"react\";\nimport { UPDATE_SCROLL_WITH_EVENT, ACTION_ITEMS_LENGTH_CHANGE, createVirtualStore, UPDATE_SIZE, UPDATE_JUMP, UPDATE_IS_SCROLLING, UPDATE_SCROLL, } from \"../core/store\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { useSelector } from \"./useSelector\";\nimport { exists, max, min, values } from \"../core/utils\";\nimport { createScroller } from \"../core/scroller\";\nimport { emptyComponents, flattenChildren, refKey } from \"./utils\";\nimport { useStatic } from \"./useStatic\";\nimport { useLatestRef } from \"./useLatestRef\";\nimport { createResizer } from \"../core/resizer\";\nimport { Viewport as DefaultViewport, } from \"./Viewport\";\nimport { ListItem } from \"./ListItem\";\nimport { flushSync } from \"react-dom\";\n/**\n * Virtualized list component. See {@link VListProps} and {@link VListHandle}.\n */\nexport const VList = forwardRef(({ children, overscan = 4, initialItemSize, initialItemCount, shift, horizontal: horizontalProp, mode, cache, components: { Root: Viewport = DefaultViewport, Item: ItemElement = \"div\", } = emptyComponents, onScroll: onScrollProp, onScrollStop: onScrollStopProp, onRangeChange: onRangeChangeProp, ...viewportAttrs }, ref) => {\n // Memoize element array\n const elements = useMemo(() => flattenChildren(children), [children]);\n const count = elements.length;\n const onScroll = useLatestRef(onScrollProp);\n const onScrollStop = useLatestRef(onScrollStopProp);\n const [store, resizer, scroller, isHorizontal, isRtl] = useStatic(() => {\n const _isHorizontal = !!horizontalProp;\n const _isRtl = mode === \"rtl\";\n const _store = createVirtualStore(flushSync, count, initialItemSize, initialItemCount, cache, mode === \"reverse\", !initialItemSize);\n return [\n _store,\n createResizer(_store, _isHorizontal),\n createScroller(_store, _isHorizontal, _isRtl),\n _isHorizontal,\n _isRtl,\n ];\n });\n // The elements length and cached items length are different just after element is added/removed.\n if (count !== store._getItemsLength()) {\n store._update(ACTION_ITEMS_LENGTH_CHANGE, [count, shift]);\n }\n const [startIndex, endIndex] = useSelector(store, store._getRange, UPDATE_SCROLL + UPDATE_SIZE);\n const scrolling = useSelector(store, store._getIsScrolling, UPDATE_IS_SCROLLING);\n const jumpCount = useSelector(store, store._getJumpCount, UPDATE_JUMP);\n const scrollSize = useSelector(store, store._getCorrectedScrollSize, UPDATE_SIZE, true);\n const rootRef = useRef(null);\n useIsomorphicLayoutEffect(() => {\n const root = rootRef[refKey];\n const unobserve = resizer._observeRoot(root);\n const cleanup = scroller._initRoot(root);\n const cleanupOnScroll = store._subscribe(UPDATE_SCROLL_WITH_EVENT, () => {\n onScroll[refKey] && onScroll[refKey](store._getScrollOffset());\n });\n return () => {\n unobserve();\n cleanup();\n cleanupOnScroll();\n };\n }, []);\n useIsomorphicLayoutEffect(() => {\n const jump = store._flushJump();\n if (!jump)\n return;\n scroller._fixScrollJump(jump);\n }, [jumpCount]);\n useEffect(() => {\n if (!scrolling) {\n onScrollStop[refKey] && onScrollStop[refKey]();\n }\n }, [scrolling]);\n useEffect(() => {\n if (!onRangeChangeProp)\n return;\n onRangeChangeProp(startIndex, endIndex);\n }, [startIndex, endIndex]);\n useImperativeHandle(ref, () => {\n return {\n get cache() {\n return store._getCache();\n },\n get scrollOffset() {\n return store._getScrollOffset();\n },\n get scrollSize() {\n return store._getCorrectedScrollSize();\n },\n get viewportSize() {\n return store._getViewportSize();\n },\n scrollToIndex: scroller._scrollToIndex,\n scrollTo: scroller._scrollTo,\n scrollBy: scroller._scrollBy,\n };\n }, []);\n const overscanedStartIndex = max(startIndex - overscan, 0);\n const overscanedEndIndex = min(endIndex + overscan, count - 1);\n const items = useMemo(() => {\n const res = [];\n for (let i = overscanedStartIndex; i <= overscanedEndIndex; i++) {\n const e = elements[i];\n const key = e.key;\n res.push(_jsx(ListItem, { _resizer: resizer, _store: store, _index: i, _element: ItemElement, _children: e, _isHorizontal: isHorizontal, _isRtl: isRtl }, exists(key) ? key : \"_\" + i));\n }\n return res;\n }, [elements, overscanedStartIndex, overscanedEndIndex]);\n return (_jsx(Viewport, { ref: rootRef, width: isHorizontal ? scrollSize : undefined, height: isHorizontal ? undefined : scrollSize, scrolling: scrolling, attrs: useMemo(() => ({\n ...viewportAttrs,\n style: {\n overflow: isHorizontal ? \"auto hidden\" : \"hidden auto\",\n display: isHorizontal ? \"inline-block\" : \"block\",\n contain: \"strict\",\n // transform: \"translate3d(0px, 0px, 0px)\",\n // willChange: \"scroll-position\",\n // backfaceVisibility: \"hidden\",\n // https://github.com/bvaughn/react-window/issues/395\n // willChange: \"transform\",\n width: \"100%\",\n height: \"100%\",\n padding: 0,\n margin: 0,\n ...viewportAttrs.style,\n },\n }), values(viewportAttrs)), children: items }));\n});\n//# sourceMappingURL=VList.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { memo, useRef, useMemo, forwardRef, useImperativeHandle, } from \"react\";\nimport { ACTION_ITEMS_LENGTH_CHANGE, UPDATE_IS_SCROLLING, UPDATE_JUMP, UPDATE_SCROLL, UPDATE_SIZE, createVirtualStore, } from \"../core/store\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { useSelector } from \"./useSelector\";\nimport { max, min, values } from \"../core/utils\";\nimport { createScroller } from \"../core/scroller\";\nimport { emptyComponents, refKey } from \"./utils\";\nimport { useStatic } from \"./useStatic\";\nimport { createGridResizer } from \"../core/resizer\";\nimport { Viewport as DefaultViewport } from \"./Viewport\";\nimport { flushSync } from \"react-dom\";\nconst genKey = (i, j) => `${i}-${j}`;\nconst Cell = memo(({ _children: children, _resizer: resizer, _vStore: vStore, _hStore: hStore, _rowIndex: rowIndex, _colIndex: colIndex, _element: Element, _isRtl: isRtl, }) => {\n const ref = useRef(null);\n const top = useSelector(vStore, () => vStore._getItemOffset(rowIndex), UPDATE_SIZE, true);\n const left = useSelector(hStore, () => hStore._getItemOffset(colIndex), UPDATE_SIZE, true);\n const vHide = useSelector(vStore, () => vStore._isUnmeasuredItem(rowIndex), UPDATE_SIZE, true);\n const hHide = useSelector(hStore, () => hStore._isUnmeasuredItem(colIndex), UPDATE_SIZE, true);\n const height = useSelector(vStore, () => vStore._getItemSize(rowIndex), UPDATE_SIZE, true);\n const width = useSelector(hStore, () => hStore._getItemSize(colIndex), UPDATE_SIZE, true);\n // The index may be changed if elements are inserted to or removed from the start of props.children\n useIsomorphicLayoutEffect(() => resizer._observeItem(ref[refKey], rowIndex, colIndex), [colIndex, rowIndex]);\n return (_jsx(Element, { ref: ref, style: useMemo(() => {\n const style = {\n display: \"grid\",\n margin: 0,\n padding: 0,\n position: \"absolute\",\n top: top,\n [isRtl ? \"right\" : \"left\"]: left,\n visibility: vHide || hHide ? \"hidden\" : \"visible\",\n minHeight: height,\n minWidth: width,\n };\n return style;\n }, [top, left, width, height, vHide, hHide]), children: children }));\n});\n/**\n * Virtualized grid component. See {@link VGridProps} and {@link VGridHandle}.\n */\nexport const VGrid = forwardRef(({ children, row: rowCount, col: colCount, cellHeight = 40, cellWidth = 100, overscan = 2, initialRowCount, initialColCount, rtl: rtlProp, components: { Root: Viewport = DefaultViewport, Cell: ItemElement = \"div\", } = emptyComponents, ...viewportAttrs }, ref) => {\n const [vStore, hStore, resizer, vScroller, hScroller, isRtl] = useStatic(() => {\n const _isRtl = !!rtlProp;\n const _vs = createVirtualStore(flushSync, rowCount, cellHeight, initialRowCount);\n const _hs = createVirtualStore(flushSync, colCount, cellWidth, initialColCount);\n return [\n _vs,\n _hs,\n createGridResizer(_vs, _hs),\n createScroller(_vs, false, _isRtl),\n createScroller(_hs, true, _isRtl),\n _isRtl,\n ];\n });\n // The elements length and cached items length are different just after element is added/removed.\n if (rowCount !== vStore._getItemsLength()) {\n vStore._update(ACTION_ITEMS_LENGTH_CHANGE, [rowCount]);\n }\n if (colCount !== hStore._getItemsLength()) {\n hStore._update(ACTION_ITEMS_LENGTH_CHANGE, [colCount]);\n }\n const [startRowIndex, endRowIndex] = useSelector(vStore, vStore._getRange, UPDATE_SCROLL + UPDATE_SIZE);\n const [startColIndex, endColIndex] = useSelector(hStore, hStore._getRange, UPDATE_SCROLL + UPDATE_SIZE);\n const verticalScrolling = useSelector(vStore, vStore._getIsScrolling, UPDATE_IS_SCROLLING);\n const horizontalScrolling = useSelector(hStore, hStore._getIsScrolling, UPDATE_IS_SCROLLING);\n const vJumpCount = useSelector(vStore, vStore._getJumpCount, UPDATE_JUMP);\n const hJumpCount = useSelector(hStore, hStore._getJumpCount, UPDATE_JUMP);\n const height = useSelector(vStore, vStore._getCorrectedScrollSize, UPDATE_SIZE, true);\n const width = useSelector(hStore, hStore._getCorrectedScrollSize, UPDATE_SIZE, true);\n const rootRef = useRef(null);\n useIsomorphicLayoutEffect(() => {\n const root = rootRef[refKey];\n const unobserve = resizer._observeRoot(root);\n const vCleanup = vScroller._initRoot(root);\n const hCleanup = hScroller._initRoot(root);\n return () => {\n unobserve();\n vCleanup();\n hCleanup();\n };\n }, []);\n useIsomorphicLayoutEffect(() => {\n const jump = vStore._flushJump();\n if (!jump)\n return;\n vScroller._fixScrollJump(jump);\n }, [vJumpCount]);\n useIsomorphicLayoutEffect(() => {\n const jump = hStore._flushJump();\n if (!jump)\n return;\n hScroller._fixScrollJump(jump);\n }, [hJumpCount]);\n useImperativeHandle(ref, () => {\n return {\n get scrollOffset() {\n return [hStore._getScrollOffset(), vStore._getScrollOffset()];\n },\n get scrollSize() {\n return [\n hStore._getCorrectedScrollSize(),\n vStore._getCorrectedScrollSize(),\n ];\n },\n get viewportSize() {\n return [hStore._getViewportSize(), vStore._getViewportSize()];\n },\n scrollToIndex(indexX, indexY) {\n hScroller._scrollToIndex(indexX);\n vScroller._scrollToIndex(indexY);\n },\n scrollTo(offsetX, offsetY) {\n hScroller._scrollTo(offsetX);\n vScroller._scrollTo(offsetY);\n },\n scrollBy(offsetX, offsetY) {\n hScroller._scrollBy(offsetX);\n vScroller._scrollBy(offsetY);\n },\n };\n }, []);\n const render = useMemo(() => {\n const cache = new Map();\n return (rowIndex, colIndex) => {\n let e = cache.get(genKey(rowIndex, colIndex));\n if (!e) {\n cache.set(genKey(rowIndex, colIndex), (e = children({ rowIndex, colIndex })));\n }\n return e;\n };\n }, [children]);\n const overscanedStartRowIndex = max(startRowIndex - overscan, 0);\n const overscanedEndRowIndex = min(endRowIndex + overscan, rowCount - 1);\n const overscanedStartColIndex = max(startColIndex - overscan, 0);\n const overscanedEndColIndex = min(endColIndex + overscan, colCount - 1);\n const items = useMemo(() => {\n const res = [];\n for (let i = overscanedStartRowIndex; i <= overscanedEndRowIndex; i++) {\n for (let j = overscanedStartColIndex; j <= overscanedEndColIndex; j++) {\n res.push(_jsx(Cell, { _resizer: resizer, _vStore: vStore, _hStore: hStore, _rowIndex: i, _colIndex: j, _element: ItemElement, _children: render(i, j), _isRtl: isRtl }, genKey(i, j)));\n }\n }\n return res;\n }, [\n render,\n overscanedStartRowIndex,\n overscanedEndRowIndex,\n overscanedStartColIndex,\n overscanedEndColIndex,\n ]);\n return (_jsx(Viewport, { ref: rootRef, width: width, height: height, scrolling: verticalScrolling || horizontalScrolling, attrs: useMemo(() => ({\n ...viewportAttrs,\n style: {\n overflow: \"auto\",\n contain: \"strict\",\n // transform: \"translate3d(0px, 0px, 0px)\",\n // willChange: \"scroll-position\",\n // backfaceVisibility: \"hidden\",\n width: \"100%\",\n height: \"100%\",\n padding: 0,\n margin: 0,\n ...viewportAttrs.style,\n },\n }), values(viewportAttrs)), children: items }));\n});\n//# sourceMappingURL=VGrid.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useRef, useMemo, useEffect, forwardRef, useImperativeHandle, } from \"react\";\nimport { ACTION_ITEMS_LENGTH_CHANGE, UPDATE_IS_SCROLLING, UPDATE_JUMP, UPDATE_SCROLL, UPDATE_SIZE, createVirtualStore, } from \"../core/store\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { useSelector } from \"./useSelector\";\nimport { exists, max, min, values } from \"../core/utils\";\nimport { createWindowScroller } from \"../core/scroller\";\nimport { emptyComponents, flattenChildren, refKey } from \"./utils\";\nimport { useStatic } from \"./useStatic\";\nimport { useLatestRef } from \"./useLatestRef\";\nimport { createWindowResizer } from \"../core/resizer\";\nimport { Viewport as DefaultViewport, } from \"./Viewport\";\nimport { ListItem } from \"./ListItem\";\nimport { flushSync } from \"react-dom\";\n/**\n * Virtualized list component controlled by the window scrolling. See {@link WVListProps} and {@link WVListHandle}.\n */\nexport const WVList = forwardRef(({ children, overscan = 4, initialItemSize, initialItemCount, horizontal: horizontalProp, cache, components: { Root: Viewport = DefaultViewport, Item: ItemElement = \"div\", } = emptyComponents, onScrollStop: onScrollStopProp, onRangeChange: onRangeChangeProp, ...viewportAttrs }, ref) => {\n // Memoize element array\n const elements = useMemo(() => flattenChildren(children), [children]);\n const count = elements.length;\n const onScrollStop = useLatestRef(onScrollStopProp);\n const [store, resizer, scroller, isHorizontal] = useStatic(() => {\n const _isHorizontal = !!horizontalProp;\n const _store = createVirtualStore(flushSync, count, initialItemSize, initialItemCount, cache, false, !initialItemSize);\n return [\n _store,\n createWindowResizer(_store, _isHorizontal),\n createWindowScroller(_store, _isHorizontal),\n _isHorizontal,\n ];\n });\n // The elements length and cached items length are different just after element is added/removed.\n if (count !== store._getItemsLength()) {\n store._update(ACTION_ITEMS_LENGTH_CHANGE, [count]);\n }\n const [startIndex, endIndex] = useSelector(store, store._getRange, UPDATE_SCROLL + UPDATE_SIZE);\n const scrolling = useSelector(store, store._getIsScrolling, UPDATE_IS_SCROLLING);\n const jumpCount = useSelector(store, store._getJumpCount, UPDATE_JUMP);\n const scrollSize = useSelector(store, store._getCorrectedScrollSize, UPDATE_SIZE, true);\n const rootRef = useRef(null);\n useIsomorphicLayoutEffect(() => {\n const root = rootRef[refKey];\n const unobserve = resizer._observeRoot(root);\n const cleanup = scroller._initRoot(root);\n return () => {\n unobserve();\n cleanup();\n };\n }, []);\n useIsomorphicLayoutEffect(() => {\n const jump = store._flushJump();\n if (!jump)\n return;\n scroller._fixScrollJump(jump);\n }, [jumpCount]);\n useEffect(() => {\n if (!scrolling) {\n onScrollStop[refKey] && onScrollStop[refKey]();\n }\n }, [scrolling]);\n useEffect(() => {\n if (!onRangeChangeProp)\n return;\n onRangeChangeProp(startIndex, endIndex);\n }, [startIndex, endIndex]);\n useImperativeHandle(ref, () => {\n return {\n get cache() {\n return store._getCache();\n },\n };\n }, []);\n const overscanedStartIndex = max(startIndex - overscan, 0);\n const overscanedEndIndex = min(endIndex + overscan, count - 1);\n const items = useMemo(() => {\n const res = [];\n for (let i = overscanedStartIndex; i <= overscanedEndIndex; i++) {\n const e = elements[i];\n const key = e.key;\n res.push(_jsx(ListItem, { _resizer: resizer, _store: store, _index: i, _element: ItemElement, _children: e, _isHorizontal: isHorizontal, _isRtl: false }, exists(key) ? key : \"_\" + i));\n }\n return res;\n }, [elements, overscanedStartIndex, overscanedEndIndex]);\n return (_jsx(Viewport, { ref: rootRef, width: isHorizontal ? scrollSize : undefined, height: isHorizontal ? undefined : scrollSize, scrolling: scrolling, attrs: useMemo(() => ({\n ...viewportAttrs,\n style: {\n overflow: \"visible\",\n display: isHorizontal ? \"inline-block\" : \"block\",\n // transform: \"translate3d(0px, 0px, 0px)\",\n // willChange: \"scroll-position\",\n // backfaceVisibility: \"hidden\",\n // https://github.com/bvaughn/react-window/issues/395\n // willChange: \"transform\",\n width: isHorizontal ? \"auto\" : \"100%\",\n height: isHorizontal ? \"100%\" : \"auto\",\n padding: 0,\n margin: 0,\n ...viewportAttrs.style,\n },\n }), values(viewportAttrs)), children: items }));\n});\n//# sourceMappingURL=WVList.js.map"],"names":["min","Math","max","abs","now","Date","values","Object","isArray","Array","timeout","setTimeout","clamp","value","minValue","maxValue","exists","v","debounce","fn","ms","id","cancel","clearTimeout","debouncedFn","_cancel","once","called","cache","args","computeStyle","e","getComputedStyle","getStyleNumber","parseFloat","UNCACHED","getItemSize","index","size","_sizes","_defaultItemSize","computeOffset","_length","_measuredOffsetIndex","_offsets","i","top","findIndex","distance","sum","h","findStartIndexWithOffset","offset","initialIndex","appendCache","length","prepend","key","push","updateCacheLength","isShift","diff","isRemove","shift","splice","reduce","acc","removed","calculateJump","items","keepEnd","createVirtualStore","flushSync","elementsCount","itemSize","initialItemCount","initCache","isReverse","shouldAutoEstimateItemSize","viewportSize","scrollOffset","jumpCount","jump","_scrollDirection","_isShifting","_isManualScrolling","_resized","_prevRange","subscribers","Set","getScrollSize","computeTotalSize","getScrollOffsetMax","clampScrollOffset","updateScrollDirection","dir","prev","_getCache","JSON","parse","stringify","_getRange","prevStartIndex","prevEndIndex","start","end","findEndIndex","_isUnmeasuredItem","_hasUnmeasuredItemsInTargetViewport","startIndex","hasUnmeasuredItemsInRange","endIndex","slice","includes","_getItemOffset","computeStartOffset","_getItemSize","_getItemsLength","_getScrollOffset","_getScrollOffsetMax","_getIsScrolling","_getViewportSize","_getCorrectedScrollSize","_getJumpCount","_flushJump","prevJump","_subscribe","target","cb","sub","add","delete","_update","type","payload","shouldSync","mutated","updated","filter","isNewItemMeasured","forEach","setItemSize","isInitialMeasurement","measuredSizes","s","startItemSize","every","arr","sort","a","b","mid","median","estimateDefaultItemSize","distanceToEnd","UPDATE_SCROLL","delta","isJustResized","update","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","refKey","emptyComponents","children","elements","c","flattenChildren","useLatestRef","ref","useRef","useSelector","store","getSnapShot","shouldGetLatest","state","setState","useState","getter","snap","hasNegativeOffsetInRtl","scrollable","isNegative","createOnWheel","isHorizontal","onScrollStopped","throttle","time","n","ctrlKey","deltaX","deltaY","createScroller","isRtl","rootElement","scrollToQueue","scrollToKey","normalizeOffset","scrollManually","async","getTargetOffset","getOffset","targetOffset","unsubscribe","Promise","resolve","reject","resolved","resolveQueue","undefined","_initRoot","root","syncViewportToScrollPosition","onScroll","onWheel","addEventListener","passive","removeEventListener","_scrollTo","_scrollBy","_scrollToIndex","align","_fixScrollJump","createWindowScroller","offsetKey","visible","getOffsetToWindow","node","nodeOffset","parent","offsetParent","document","body","io","IntersectionObserver","entry","isIntersecting","observe","disconnect","scrollBy","useStatic","init","rootObserveOpts","box","createResizer","sizeKey","mountedIndexes","WeakMap","getResizeObserver","ResizeObserver","entries","resizes","contentRect","get","_observeRoot","ro","_observeItem","el","set","unobserve","createWindowResizer","windowSizeKey","createGridResizer","vStore","hStore","heightKey","widthKey","maybeCachedRowIndexes","maybeCachedColIndexes","sizeCache","Map","getKey","rowIndex","colIndex","resizedRows","resizedCols","style","paddingBottom","left","paddingRight","cell","prevSize","rowResized","colResized","heightResizes","maxHeight","widthResizes","maxWidth","Viewport","forwardRef","attrs","width","height","scrolling","_jsx","jsx","useMemo","position","visibility","pointerEvents","ListItem","memo","_children","_resizer","resizer","_store","_index","_element","Element","_isHorizontal","_isRtl","hide","leftOrRightKey","margin","padding","display","VList","overscan","initialItemSize","horizontal","horizontalProp","mode","components","Root","DefaultViewport","Item","ItemElement","onScrollProp","onScrollStop","onScrollStopProp","onRangeChange","onRangeChangeProp","viewportAttrs","count","scroller","scrollSize","rootRef","cleanup","cleanupOnScroll","useImperativeHandle","scrollToIndex","scrollTo","overscanedStartIndex","overscanedEndIndex","res","overflow","contain","genKey","j","Cell","_vStore","_hStore","_rowIndex","_colIndex","vHide","hHide","minHeight","minWidth","VGrid","row","rowCount","col","colCount","cellHeight","cellWidth","initialRowCount","initialColCount","rtl","rtlProp","vScroller","hScroller","_vs","_hs","startRowIndex","endRowIndex","startColIndex","endColIndex","verticalScrolling","horizontalScrolling","vJumpCount","hJumpCount","vCleanup","hCleanup","indexX","indexY","offsetX","offsetY","render","overscanedStartRowIndex","overscanedEndRowIndex","overscanedStartColIndex","overscanedEndColIndex","WVList"],"mappings":"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"}