@aiquants/virtualscroll 1.24.0 → 2.0.0
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/CHANGELOG.md +73 -1
- package/README.md +17 -5
- package/dist/VirtualScroll.d.cts +53 -4
- package/dist/VirtualScroll.d.ts +53 -4
- package/dist/VirtualScroll.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1327 -1299
- package/package.json +1 -1
- package/src/VirtualScroll.tsx +149 -13
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,78 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@aiquants/virtualscroll` are documented here.
|
|
4
4
|
|
|
5
|
+
## 2.0.0 (2026-08-11)
|
|
6
|
+
|
|
7
|
+
### Breaking
|
|
8
|
+
|
|
9
|
+
- **`VirtualScrollHandle` is now fully LOGICAL-space** — the essential fix that makes
|
|
10
|
+
coordinate-mixing bugs structurally impossible for consumers:
|
|
11
|
+
- `getScrollPosition()` now returns the **logical** position (was: pane position).
|
|
12
|
+
- `scrollTo()` now returns the applied **logical** position (was: pane position).
|
|
13
|
+
- The handle no longer extends `ScrollPaneHandle`; pane coordinates are an internal
|
|
14
|
+
implementation detail (ScrollPane's own handle remains pane-space by definition).
|
|
15
|
+
Rationale: the old asymmetry (logical input, pane output) forced consumers to write
|
|
16
|
+
conversion code, which caused two real bugs (daily-report's 6px initial offset and
|
|
17
|
+
directory-tree's double-inset anchor drift). Consumers WITHOUT `contentInsets` see no
|
|
18
|
+
numeric change (both spaces coincide when the top inset is 0). Consumers WITH insets:
|
|
19
|
+
delete your `± topInset` conversions — every handle/callback value is logical now.
|
|
20
|
+
移行: inset 未使用の消費者は数値変化なし。inset 使用の消費者は ± topInset 換算を全削除する
|
|
21
|
+
(ハンドル・コールバックの値はすべて論理座標)。
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Dynamic `contentInsets.top` changes no longer double-apply the inset delta when a scroll
|
|
26
|
+
anchor (`scrollToIndex` / `initialScrollAnchor`) is pending: the inset-sync effect now delegates
|
|
27
|
+
positioning to the drift-correction effect while an anchor exists (it only updates its
|
|
28
|
+
bookkeeping). The logical position is invariant under runtime inset changes on BOTH paths
|
|
29
|
+
(anchored and manual-scroll), each pinned by a regression test. This closes the previously
|
|
30
|
+
documented known issue.
|
|
31
|
+
動的 inset 変更 × 保留アンカーの二重適用 (既知課題) を根治。論理位置は実行時の inset 変更に
|
|
32
|
+
対して不変 (アンカー有り/無しの両経路をピンで固定)。
|
|
33
|
+
|
|
34
|
+
## 1.25.0
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- **`initialScrollAnchor`** prop (`{ index, offsetPx? }`) — anchor-based initial position for exact
|
|
39
|
+
scroll restoration across remounts of variable-height lists. Positions row `index` with `offsetPx`
|
|
40
|
+
px of it hidden above the viewport top, materializing the anchor neighborhood in the Fenwick tree
|
|
41
|
+
so the FIRST paint is already correct (no post-mount jump). Precedence:
|
|
42
|
+
`initialScrollAnchor > initialScrollIndex > initialScrollOffset`.
|
|
43
|
+
可変高さ一覧の再マウント越し厳密復元用。生 px 復元 (`initialScrollOffset`) は実測が具現化されて
|
|
44
|
+
いない空間では別の行に着地する (実測 21 行漂着) ため、行の同一性で位置決めする。
|
|
45
|
+
- **`VirtualScrollHandle.getScrollAnchor()`** — captures the current top visible row anchor
|
|
46
|
+
(`{ index, offsetPx } | null`) in the reconciled tree space; feed it back to `initialScrollAnchor`.
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- Passing `initialScrollIndex` together with `initialScrollOffset` no longer lets the offset stomp
|
|
51
|
+
the index position one commit after first paint (the passive initial-offset effect now respects
|
|
52
|
+
the precedence order).
|
|
53
|
+
|
|
54
|
+
## 1.24.0
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- **Inset coordinate endpoint unified**: `toPanePositionWithInset(0, top)` now maps logical 0 to
|
|
59
|
+
**pane 0** (top inset visible = true top) instead of pane `top`. This aligns the restore path with
|
|
60
|
+
the mount default and the ScrollPane clamp resting point, eliminating the "restored logical 0
|
|
61
|
+
renders a few px scrolled" asymmetry (measured 6px in daily-report). `scrollToIndex(0)` now returns
|
|
62
|
+
to pane 0 as well.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- `useThrottledInvoker` now **flushes the pending payload synchronously on unmount** instead of
|
|
67
|
+
discarding it, so save-on-scroll consumers no longer lose the final queued `onScroll` /
|
|
68
|
+
`onRangeChange` notification when unmounted mid-fling (residual loss is bounded to at most one
|
|
69
|
+
frame of movement after the last render-loop tick).
|
|
70
|
+
|
|
71
|
+
### Known issues
|
|
72
|
+
|
|
73
|
+
- Dynamic `contentInsets.top` changes while a `scrollToIndex` /`initialScrollIndex` anchor is
|
|
74
|
+
pending can double-apply the inset delta (pre-existing; no in-repo production consumer passes
|
|
75
|
+
dynamic insets). See the design spec's known-issue note.
|
|
76
|
+
|
|
5
77
|
## 1.23.0
|
|
6
78
|
|
|
7
79
|
### Added
|
|
@@ -24,7 +96,7 @@ All notable changes to `@aiquants/virtualscroll` are documented here.
|
|
|
24
96
|
See **Composite widget roles** in the README for the `enableKeyboardNavigation: false` requirement
|
|
25
97
|
that makes the intermediate wrappers transparent to the owned-element relationship.
|
|
26
98
|
|
|
27
|
-
## 1.21.0
|
|
99
|
+
## 1.21.0
|
|
28
100
|
|
|
29
101
|
### Breaking
|
|
30
102
|
|
package/README.md
CHANGED
|
@@ -207,7 +207,8 @@ exists in the DOM.
|
|
|
207
207
|
| `onWheelHorizontal` | `(deltaX: number) => void` | ❌ | Opt-in horizontal wheel delegation. When set, horizontal-dominant wheel / trackpad gestures (and shift+wheel) are delegated to this handler so the parent can implement horizontal scrolling. When omitted, horizontal gestures and shift+wheel bypass vertical scrolling so parent native scrolling works. See [Horizontal Scrolling](#horizontal-scrolling). |
|
|
208
208
|
| `background` | `ReactNode` | ❌ | Background element |
|
|
209
209
|
| `initialScrollIndex` | `number` | ❌ | Initial scroll index |
|
|
210
|
-
| `initialScrollOffset` | `number` | ❌ | Initial scroll offset |
|
|
210
|
+
| `initialScrollOffset` | `number` | ❌ | Initial scroll offset (**logical** px). Not suitable for restoring positions of variable-height lists across remounts — use `initialScrollAnchor` |
|
|
211
|
+
| `initialScrollAnchor` | `{ index: number; offsetPx?: number }` | ❌ | Anchor-based initial position (1.25.0): starts with row `index` scrolled `offsetPx` px past the viewport top, exact from the first commit. Save side: `getScrollAnchor()`. Precedence: anchor > `initialScrollIndex` > `initialScrollOffset` |
|
|
211
212
|
| `contentInsets` | `ScrollPaneContentInsets` | ❌ | Insets for the content area |
|
|
212
213
|
| `callbackThrottleMs` | `number` | ❌ | Throttle time for scroll callbacks (default: 5ms) |
|
|
213
214
|
| `onItemFocus` | `(index: number) => void` | ❌ | Callback when an item is focused |
|
|
@@ -243,13 +244,24 @@ exists in the DOM.
|
|
|
243
244
|
|
|
244
245
|
| Method | Type | Description |
|
|
245
246
|
| --- | --- | --- |
|
|
246
|
-
| `scrollTo` | `(position: number) =>
|
|
247
|
+
| `scrollTo` | `(position: number \| ((prev: number) => number)) => number` | Scroll to a **logical** position (updater receives the current logical position). Returns the applied **logical** position (2.0.0) |
|
|
247
248
|
| `scrollToIndex` | `(index: number, options?: { align?: "top" \| "bottom" \| "center"; offset?: number }) => void` | Scroll to specific item index with optional alignment and offset |
|
|
248
|
-
| `getScrollPosition` | `() => number` | Get current scroll position |
|
|
249
|
-
| `getContentSize` | `() => number` | Get total content size |
|
|
249
|
+
| `getScrollPosition` | `() => number` | Get current **logical** scroll position (2.0.0; `-1` when the pane is not connected) |
|
|
250
|
+
| `getContentSize` | `() => number` | Get total content size (insets included) |
|
|
250
251
|
| `getViewportSize` | `() => number` | Get viewport size |
|
|
251
252
|
| `focusItemAtIndex` | `(index: number, options?: { ensureVisible?: boolean }) => void` | Focus item at specific index |
|
|
252
|
-
| `getRange` | `() => VirtualScrollRange` | Get current range information |
|
|
253
|
+
| `getRange` | `() => VirtualScrollRange` | Get current range information (updated one render behind) |
|
|
254
|
+
| `getScrollAnchor` | `() => { index: number; offsetPx: number } \| null` | Capture the current top visible row anchor for exact restore via `initialScrollAnchor` (`null` when `itemCount` is 0) |
|
|
255
|
+
| `getFenwickTreeTotalHeight` | `() => number` | Total content height managed by the Fenwick tree (insets excluded) |
|
|
256
|
+
| `getFenwickSize` | `() => number` | Item count managed by the Fenwick tree |
|
|
257
|
+
| `updateItemSize` | `(index: number, size: number) => void` | Manually update one item's size (with layout-shift compensation). `getItemHeight(index)` must return the same value afterwards |
|
|
258
|
+
|
|
259
|
+
**Coordinate system (2.0.0)**: every position the handle and callbacks accept or return is
|
|
260
|
+
**logical** (content px, insets excluded) — `onScroll` / `onRangeChange` / `initialScroll*` /
|
|
261
|
+
`getScrollAnchor` / `scrollTo` (input AND return) / `getScrollPosition` all share one space, so no
|
|
262
|
+
conversion code is ever needed in consumers. Pane coordinates (insets included) are an internal
|
|
263
|
+
detail; only `ScrollPane`'s own handle speaks pane-space (it IS the pane). Logical 0 maps to
|
|
264
|
+
pane 0 internally (true top, top inset visible; unified in 1.24.0).
|
|
253
265
|
|
|
254
266
|
### VirtualScrollRange
|
|
255
267
|
|
package/dist/VirtualScroll.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { default as React, ReactNode } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ScrollPaneProps } from './ScrollPane.cjs';
|
|
3
3
|
import { useFenwickMapTree } from './useFenwickMapTree.cjs';
|
|
4
4
|
/**
|
|
5
5
|
* Represents the current state of the rendered range and scroll metrics.
|
|
@@ -21,11 +21,35 @@ export type VirtualScrollRange = {
|
|
|
21
21
|
totalHeight: number;
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Imperative handle of VirtualScroll. Every position it accepts or returns is in the
|
|
25
|
+
* LOGICAL coordinate space (content px, insets excluded) — the same space as onScroll /
|
|
26
|
+
* onRangeChange / initialScrollOffset / getScrollAnchor.
|
|
27
|
+
* VirtualScroll の命令ハンドル。受け取る位置・返す位置は**すべて論理座標** (inset 抜きの
|
|
28
|
+
* コンテンツ px) で、onScroll / onRangeChange / initialScrollOffset / getScrollAnchor と同一空間。
|
|
25
29
|
*
|
|
26
|
-
*
|
|
30
|
+
* ❗ ペイン座標 (inset 込み) は内部実装詳細であり、このハンドルからは一切露出しない。
|
|
31
|
+
* 2.0.0 以前は getScrollPosition と scrollTo の返値だけがペイン座標という非対称があり、
|
|
32
|
+
* 消費者側の換算コードが 2 度の実害バグ (daily-report 初期 6px ずれ / directory-tree の
|
|
33
|
+
* inset 二重適用) を生んだ。座標系の混在を消費者から構造的に不能にするための統一である。
|
|
34
|
+
* ScrollPane 自身のハンドル (ScrollPaneHandle) はペインそのものなのでペイン座標のままであり、
|
|
35
|
+
* その境界はこの型が引き受ける。
|
|
27
36
|
*/
|
|
28
|
-
export type VirtualScrollHandle =
|
|
37
|
+
export type VirtualScrollHandle = {
|
|
38
|
+
/**
|
|
39
|
+
* Scrolls to a LOGICAL position (updater form receives the current logical position).
|
|
40
|
+
* Returns the applied (clamped) LOGICAL position.
|
|
41
|
+
* 論理位置へスクロール (updater は現在の論理位置を受け取る)。適用後 (クランプ後) の論理位置を返す。
|
|
42
|
+
*/
|
|
43
|
+
scrollTo: (position: number | ((prev: number) => number)) => number;
|
|
44
|
+
/**
|
|
45
|
+
* Current LOGICAL scroll position. -1 when the pane is not connected.
|
|
46
|
+
* 現在の論理スクロール位置。ペイン未接続時は -1。
|
|
47
|
+
*/
|
|
48
|
+
getScrollPosition: () => number;
|
|
49
|
+
/** Total pane content size including insets (a size, not a position) / インセット込みのコンテンツ総高さ (位置ではなくサイズ)。未接続時は -1 */
|
|
50
|
+
getContentSize: () => number;
|
|
51
|
+
/** Viewport size / ビューポートの高さ。未接続時は -1 */
|
|
52
|
+
getViewportSize: () => number;
|
|
29
53
|
/** Scrolls to a specific item index / 指定したアイテムインデックスへスクロール */
|
|
30
54
|
scrollToIndex: (index: number, options?: {
|
|
31
55
|
align?: "top" | "bottom" | "center";
|
|
@@ -41,6 +65,15 @@ export type VirtualScrollHandle = ScrollPaneHandle & {
|
|
|
41
65
|
}) => void;
|
|
42
66
|
/** Gets the current scroll range information / 現在のスクロール範囲情報を取得 */
|
|
43
67
|
getRange: () => VirtualScrollRange;
|
|
68
|
+
/**
|
|
69
|
+
* Captures the current top-row anchor ({index, offsetPx}) for exact restore via initialScrollAnchor.
|
|
70
|
+
* initialScrollAnchor での厳密復元用に、現在の先頭可視行アンカー ({index, offsetPx}) を取得。
|
|
71
|
+
* itemCount 0 のときは null。offsetPx は先頭可視行の上端がビューポート上端より上に隠れている px (論理座標)。
|
|
72
|
+
*/
|
|
73
|
+
getScrollAnchor: () => {
|
|
74
|
+
index: number;
|
|
75
|
+
offsetPx: number;
|
|
76
|
+
} | null;
|
|
44
77
|
/**
|
|
45
78
|
* Manually updates the size of a specific item. Contract: after calling this,
|
|
46
79
|
* `getItemHeight(index)` must return the same `size`; `getItemHeight` is the source of truth,
|
|
@@ -130,6 +163,22 @@ export type VirtualScrollProps<T> = {
|
|
|
130
163
|
children: (item: T, index: number) => ReactNode;
|
|
131
164
|
initialScrollIndex?: number;
|
|
132
165
|
initialScrollOffset?: number;
|
|
166
|
+
/**
|
|
167
|
+
* Anchor-based initial position: starts with row `index` scrolled `offsetPx` px past the viewport top.
|
|
168
|
+
* アンカー基準の初期位置。行 index の上端がビューポート上端より offsetPx px 分だけ上に隠れた位置で開始する。
|
|
169
|
+
*
|
|
170
|
+
* 可変高さ一覧の「位置キープ」はこれを使うこと。initialScrollOffset の生 px 復元は、実測高さが
|
|
171
|
+
* 具現化されていない再マウント空間では px→行変換が推定値で行われ、別の行に着地する
|
|
172
|
+
* (実測: 深い復元で 21 行漂着)。アンカーは行の同一性で位置決めするため空間差に不変。
|
|
173
|
+
* 保存側は VirtualScrollHandle.getScrollAnchor() で取得した値をそのまま渡す。
|
|
174
|
+
* 優先順位: initialScrollAnchor > initialScrollIndex > initialScrollOffset。
|
|
175
|
+
* マウント時に itemCount > 0 なら初回コミットから厳密。itemCount 0 でマウントした場合は
|
|
176
|
+
* 最初のデータ到着 (0 → N) 時に scrollToIndex 経由で遅延適用される (近似 → 自己修復)。
|
|
177
|
+
*/
|
|
178
|
+
initialScrollAnchor?: {
|
|
179
|
+
index: number;
|
|
180
|
+
offsetPx?: number;
|
|
181
|
+
};
|
|
133
182
|
callbackThrottleMs?: number;
|
|
134
183
|
contentInsets?: ScrollPaneProps["contentInsets"];
|
|
135
184
|
onItemFocus?: (index: number) => void;
|
package/dist/VirtualScroll.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { default as React, ReactNode } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ScrollPaneProps } from './ScrollPane.tsx';
|
|
3
3
|
import { useFenwickMapTree } from './useFenwickMapTree.ts';
|
|
4
4
|
/**
|
|
5
5
|
* Represents the current state of the rendered range and scroll metrics.
|
|
@@ -21,11 +21,35 @@ export type VirtualScrollRange = {
|
|
|
21
21
|
totalHeight: number;
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Imperative handle of VirtualScroll. Every position it accepts or returns is in the
|
|
25
|
+
* LOGICAL coordinate space (content px, insets excluded) — the same space as onScroll /
|
|
26
|
+
* onRangeChange / initialScrollOffset / getScrollAnchor.
|
|
27
|
+
* VirtualScroll の命令ハンドル。受け取る位置・返す位置は**すべて論理座標** (inset 抜きの
|
|
28
|
+
* コンテンツ px) で、onScroll / onRangeChange / initialScrollOffset / getScrollAnchor と同一空間。
|
|
25
29
|
*
|
|
26
|
-
*
|
|
30
|
+
* ❗ ペイン座標 (inset 込み) は内部実装詳細であり、このハンドルからは一切露出しない。
|
|
31
|
+
* 2.0.0 以前は getScrollPosition と scrollTo の返値だけがペイン座標という非対称があり、
|
|
32
|
+
* 消費者側の換算コードが 2 度の実害バグ (daily-report 初期 6px ずれ / directory-tree の
|
|
33
|
+
* inset 二重適用) を生んだ。座標系の混在を消費者から構造的に不能にするための統一である。
|
|
34
|
+
* ScrollPane 自身のハンドル (ScrollPaneHandle) はペインそのものなのでペイン座標のままであり、
|
|
35
|
+
* その境界はこの型が引き受ける。
|
|
27
36
|
*/
|
|
28
|
-
export type VirtualScrollHandle =
|
|
37
|
+
export type VirtualScrollHandle = {
|
|
38
|
+
/**
|
|
39
|
+
* Scrolls to a LOGICAL position (updater form receives the current logical position).
|
|
40
|
+
* Returns the applied (clamped) LOGICAL position.
|
|
41
|
+
* 論理位置へスクロール (updater は現在の論理位置を受け取る)。適用後 (クランプ後) の論理位置を返す。
|
|
42
|
+
*/
|
|
43
|
+
scrollTo: (position: number | ((prev: number) => number)) => number;
|
|
44
|
+
/**
|
|
45
|
+
* Current LOGICAL scroll position. -1 when the pane is not connected.
|
|
46
|
+
* 現在の論理スクロール位置。ペイン未接続時は -1。
|
|
47
|
+
*/
|
|
48
|
+
getScrollPosition: () => number;
|
|
49
|
+
/** Total pane content size including insets (a size, not a position) / インセット込みのコンテンツ総高さ (位置ではなくサイズ)。未接続時は -1 */
|
|
50
|
+
getContentSize: () => number;
|
|
51
|
+
/** Viewport size / ビューポートの高さ。未接続時は -1 */
|
|
52
|
+
getViewportSize: () => number;
|
|
29
53
|
/** Scrolls to a specific item index / 指定したアイテムインデックスへスクロール */
|
|
30
54
|
scrollToIndex: (index: number, options?: {
|
|
31
55
|
align?: "top" | "bottom" | "center";
|
|
@@ -41,6 +65,15 @@ export type VirtualScrollHandle = ScrollPaneHandle & {
|
|
|
41
65
|
}) => void;
|
|
42
66
|
/** Gets the current scroll range information / 現在のスクロール範囲情報を取得 */
|
|
43
67
|
getRange: () => VirtualScrollRange;
|
|
68
|
+
/**
|
|
69
|
+
* Captures the current top-row anchor ({index, offsetPx}) for exact restore via initialScrollAnchor.
|
|
70
|
+
* initialScrollAnchor での厳密復元用に、現在の先頭可視行アンカー ({index, offsetPx}) を取得。
|
|
71
|
+
* itemCount 0 のときは null。offsetPx は先頭可視行の上端がビューポート上端より上に隠れている px (論理座標)。
|
|
72
|
+
*/
|
|
73
|
+
getScrollAnchor: () => {
|
|
74
|
+
index: number;
|
|
75
|
+
offsetPx: number;
|
|
76
|
+
} | null;
|
|
44
77
|
/**
|
|
45
78
|
* Manually updates the size of a specific item. Contract: after calling this,
|
|
46
79
|
* `getItemHeight(index)` must return the same `size`; `getItemHeight` is the source of truth,
|
|
@@ -130,6 +163,22 @@ export type VirtualScrollProps<T> = {
|
|
|
130
163
|
children: (item: T, index: number) => ReactNode;
|
|
131
164
|
initialScrollIndex?: number;
|
|
132
165
|
initialScrollOffset?: number;
|
|
166
|
+
/**
|
|
167
|
+
* Anchor-based initial position: starts with row `index` scrolled `offsetPx` px past the viewport top.
|
|
168
|
+
* アンカー基準の初期位置。行 index の上端がビューポート上端より offsetPx px 分だけ上に隠れた位置で開始する。
|
|
169
|
+
*
|
|
170
|
+
* 可変高さ一覧の「位置キープ」はこれを使うこと。initialScrollOffset の生 px 復元は、実測高さが
|
|
171
|
+
* 具現化されていない再マウント空間では px→行変換が推定値で行われ、別の行に着地する
|
|
172
|
+
* (実測: 深い復元で 21 行漂着)。アンカーは行の同一性で位置決めするため空間差に不変。
|
|
173
|
+
* 保存側は VirtualScrollHandle.getScrollAnchor() で取得した値をそのまま渡す。
|
|
174
|
+
* 優先順位: initialScrollAnchor > initialScrollIndex > initialScrollOffset。
|
|
175
|
+
* マウント時に itemCount > 0 なら初回コミットから厳密。itemCount 0 でマウントした場合は
|
|
176
|
+
* 最初のデータ到着 (0 → N) 時に scrollToIndex 経由で遅延適用される (近似 → 自己修復)。
|
|
177
|
+
*/
|
|
178
|
+
initialScrollAnchor?: {
|
|
179
|
+
index: number;
|
|
180
|
+
offsetPx?: number;
|
|
181
|
+
};
|
|
133
182
|
callbackThrottleMs?: number;
|
|
134
183
|
contentInsets?: ScrollPaneProps["contentInsets"];
|
|
135
184
|
onItemFocus?: (index: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualScroll.d.ts","sourceRoot":"","sources":["../src/VirtualScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,KAAK,SAAS,EAA0E,MAAM,OAAO,CAAA;AAEjI,OAAO,
|
|
1
|
+
{"version":3,"file":"VirtualScroll.d.ts","sourceRoot":"","sources":["../src/VirtualScroll.tsx"],"names":[],"mappings":"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"}
|