@aiquants/virtualscroll 3.8.0 → 3.8.2
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 +75 -0
- package/README.md +61 -6
- package/dist/VirtualScroll.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1496 -1489
- package/dist/styles/virtualscroll.css +1 -1
- package/dist/styles/virtualscroll.standalone.css +1 -1
- package/package.json +1 -1
- package/src/VirtualScroll.tsx +176 -76
- package/src/styles/virtualscroll.css +22 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,81 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@aiquants/virtualscroll` are documented here.
|
|
4
4
|
|
|
5
|
+
## 3.8.2 (2026-10-03)
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **動きを減らす設定で、パッケージが動かす部品をすべて止める**: `prefers-reduced-motion: reduce` では、配布 CSS の
|
|
10
|
+
ただ 1 つの規則が、パッケージが動かすすべての部品へ `transition: none !important; animation: none !important` を
|
|
11
|
+
宣言する。対象はタップスクロールサークル (バーとグリッド) とその中の全要素 (既定のビジュアル・
|
|
12
|
+
`tapScrollCircleSampleVisual`・消費側の `renderVisual`)、バーのサークルの器 (出入り)、矢印ボタン (色)、
|
|
13
|
+
スクロールバーのつまみ (ホバーとドラッグの太り。80ms と 60ms)、端へ戻るボタン (押下の縮みと地色。150ms) と
|
|
14
|
+
その覆い (出入り。500ms)。ビジュアルがインラインで書く 40〜260ms の遷移にも勝つ (カスケードは重要度をインライン
|
|
15
|
+
かどうかより先に比べる)。状態そのものは即座に切り替わる (つまみは太り、ボタンは押下で縮み、サークルは緩急なしで
|
|
16
|
+
ドラッグに追従する)。行と消費側の部品の遷移には触れない。Chromium 148 では、動きを減らす設定でこれらの部品と
|
|
17
|
+
サークルの中のインラインの遷移の `transition-duration` が 0.08〜0.5s から `0s` になり、行の中身が自分で持つ
|
|
18
|
+
0.2s の遷移はそのまま。パッケージの CSS を読み込まないホストでは遷移が残る。
|
|
19
|
+
- **テスト**: `scrollStepRepaint.spec.tsx` 4 件 (新規。行ラッパーのインラインの様式が top・平行移動・
|
|
20
|
+
`will-change: transform` の 3 つだけで `perspective` を持たないこと、配布 CSS が行ラッパーと行の器に
|
|
21
|
+
perspective・3D の文脈・filter を与えず行の器が transform を持たないこと、描画の窓を変えない 1 段の DOM の
|
|
22
|
+
書き込みがラッパーの `transform` だけであること、窓を 1 行ずらす 1 段は行の器の追加と削除だけで残る行へ
|
|
23
|
+
書き込まないこと) と `reducedMotion.spec.tsx` 5 件 (新規。動きを減らす設定の規則がただ 1 つで、そのセレクタが
|
|
24
|
+
同じファイルで遷移を宣言する部品のすべてとサークルの子孫にちょうど一致すること、既定のビジュアルと
|
|
25
|
+
`tapScrollCircleSampleVisual` の全要素が規則に一致しインラインの遷移が通常の重要度であること、一覧とグリッドの
|
|
26
|
+
全要素で規則に一致することと動く部品かサークルの中にあることが同値で、行・セル・バーの器・トラック・行ラッパーは
|
|
27
|
+
一致しないこと)。
|
|
28
|
+
|
|
29
|
+
### Notes
|
|
30
|
+
|
|
31
|
+
- **行ラッパーは 2D の平行移動だけの合成層のまま**: 行ラッパーは 3.8.1 と同じく `will-change: transform` だけを持つ。
|
|
32
|
+
`perspective` や 3D の変換は Chromium に描画の切り取り (表示領域を 4000px 広げた範囲) を外させるが、行を非 2D の
|
|
33
|
+
変換の下で合成させ、画素比によっては層ごと再標本化させる。ラッパーに `perspective: 16777216px` を置くと、
|
|
34
|
+
Chromium 148 で比 1.25 の明色では 420×708 の一覧の 111,871〜142,452 装置画素が 8 位置すべてで変わり、2px の
|
|
35
|
+
選択の輪と 2px のフォーカスの輪の間の帯が上下の辺で混ざった (一覧の終端では 4 辺とも)。比 1 の暗色でも 8 位置の
|
|
36
|
+
うち 4 位置で最大 107 画素が変わり、比 1.5・1.75・2・3 は同一だった。`will-change: transform` だけの層では、
|
|
37
|
+
1px の枠線・2px の輪・2px の隙間・2px のフォーカスの輪を持つ選択中の面が、比 1・1.25・1.5・1.75・2・3、明色と
|
|
38
|
+
暗色、8 位置 (0〜1,572,864.5px と 2 万行の終端) のすべての辺で、枠線の色の画素、floor(2 × 比) 個の輪の画素、
|
|
39
|
+
1 個までの混ざり、floor(2 × 比) 個の隙間の画素、floor(2 × 比) 個のフォーカスの輪の画素で描かれる。
|
|
40
|
+
- **窓をずらす 1 段の描き直しの費用**: 行をマウントしない 1 段 (8px) はラッパーの `transform` だけを書き、どの行も
|
|
41
|
+
描き直さない (描く層 0、PrePaint と Layerize で 0.4ms)。窓をずらす 1 段は行の器を足し引きするだけで残る行へ
|
|
42
|
+
書き込まないが、マウントで層が描き直しを要するので Chromium は描画の範囲をヒステリシス無しで今の位置へ置き直し
|
|
43
|
+
(`CullRectUpdater::ShouldProactivelyUpdate`)、中身が自分のはみ出しを切る残る行 (`kMayBeClippedByCullRect`) を
|
|
44
|
+
描き直す。Chromium 148 (1280×800・比 1・overscan 15・省略記号で終わる文の行。20 段 × 3 回の中央値) で、次の行を
|
|
45
|
+
選んで 1 行スクロールする 1 段は、高さ 160px の行で 36 層 (Paint 0.99ms、Paint・PrePaint・Layerize の和 2.6ms、
|
|
46
|
+
ラスター 3.7ms)、448px の行で 26 層 (0.66ms・1.9ms・2.6ms)。`perspective` を置いた場合は 160px の行で 6 層
|
|
47
|
+
(Paint 0.40ms) だった。
|
|
48
|
+
|
|
49
|
+
## 3.8.1 (2026-10-03)
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- **マウントのたびに一覧をもう一度描いていた**: 3.8.0 の装置の画素への揃えは、比をラッパーの取り付け (React の
|
|
54
|
+
確定の段) で状態へ確定していた。比が未定 (`null`) から比へ変わるこの更新のため、クライアントでのマウントの
|
|
55
|
+
たびに paint の前の同期の描き直し (React の Profiler では段階 `nested-update` の確定) が 1 回足されていた。
|
|
56
|
+
描き直すのは `VirtualScroll` 本体とペインで、React はその前に確定の passive effect も流す (実測でマウント
|
|
57
|
+
1 回あたり約 0.8〜1.4 ms、マウントの 4〜8 %)。行が 0 件からまた行を持つときのラッパーの付け直しでも同じ
|
|
58
|
+
描き直しが起きていた。ポップアップを開くたびに一覧をマウントするホストでは、開く操作ごとの確定が 1 回
|
|
59
|
+
増えていた。
|
|
60
|
+
- **比は描画の中で読み、取り付けは確かめるだけにする**: 平行移動を揃える比はラッパーを描く部品が描画の中で
|
|
61
|
+
読む。取り付けの前は React を実行しているページのウィンドウを描くウィンドウと見込み、取り付けがラッパーの
|
|
62
|
+
文書のウィンドウと突き合わせる。自分のウィンドウの文書に描いた一覧は最初の確定から揃った値で描き、確定の段の
|
|
63
|
+
描き直しは起きない (マウントでも行 0 件からの付け直しでも `nested-update` は 0 回)。iframe や別ウィンドウの
|
|
64
|
+
文書に描いた一覧は、取り付けでそのウィンドウの比へ切り替えて paint の前に 1 回だけ同期で描き直す (3.8.0 と
|
|
65
|
+
同じく、見込みの比で揃えた値は描かれない)。ブラウザの拡大縮小や密度の違う画面への移動は従来どおり
|
|
66
|
+
`(resolution: <比>dppx)` のメディアクエリで追い、確定の段の外の通常の更新 1 回で揃え直す。サーバー描画の
|
|
67
|
+
HTML は厳密値のままで、ハイドレーションも厳密値で描くので不一致は報告されず、ハイドレーションの直後に揃えた
|
|
68
|
+
値へ置き換わる。ウィンドウを持たない文書へ描くとラッパーの取り付けで `Error` を投げるのも従来どおり。描かれる
|
|
69
|
+
値と公開 API は変わらない。
|
|
70
|
+
- **テスト**: `VirtualScroll.spec.ts` +4 と 2 件の強化。`React.Profiler` で確定ごとの段階とその確定の時点の
|
|
71
|
+
transform を記録し、自分のウィンドウの文書へのマウントが比 1.25 でも最初の確定から格子上にあり
|
|
72
|
+
`nested-update` が無いこと、マウントの後の行 0 件 → 1000 件の付け直しの区間に `nested-update` が無く
|
|
73
|
+
付け直した確定から格子上にあること、比の変化は `update` の確定 1 回で揃え直すこと、`renderToString` は
|
|
74
|
+
厳密値を書き比 1.25 での `hydrateRoot` は不一致を報告せずハイドレーションの直後に揃え直すことを固定する
|
|
75
|
+
(新規 4 件)。act を使わない `flushSync` の行は確定が `mount` 1 回だけであることを、iframe の行は見込みの
|
|
76
|
+
ウィンドウからの切り替えが `nested-update` 1 回でその確定が iframe の比で揃っていることを足した。修正前の
|
|
77
|
+
ソースでは 3 件 (マウント・付け直し・`flushSync`) が red。vitest 1,030 件 / 53 ファイル (単体 999 + 統合 31。
|
|
78
|
+
2026-10-03 の `vitest run --maxWorkers=2` 1 回の全数実測で、すべて通りスキップ 0)。
|
|
79
|
+
|
|
5
80
|
## 3.8.0 (2026-10-03)
|
|
6
81
|
|
|
7
82
|
### Added
|
package/README.md
CHANGED
|
@@ -145,21 +145,74 @@ deltas, centred alignment, fractional row heights or insets) therefore never mov
|
|
|
145
145
|
a device pixel. A layer moved by a fraction is resampled as a whole: 2 px borders, outlines, focus rings and
|
|
146
146
|
the gaps between them smear across neighbouring pixel rows, and text blurs.
|
|
147
147
|
|
|
148
|
-
- The ratio comes from the window of the list's own document
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
- The ratio comes from the window of the list's own document, and it is read while the wrapper renders.
|
|
149
|
+
Before the wrapper is attached, the component expects the window of the page that runs React, and the
|
|
150
|
+
attach confirms it. A list rendered into its own window's document is therefore snapped in its first
|
|
151
|
+
commit, with no extra render. A list rendered into an iframe or a second window switches to that
|
|
152
|
+
window's ratio when the wrapper attaches, with one extra synchronous render before the browser paints.
|
|
153
|
+
The ratio is read again whenever it changes (browser zoom, or moving the window to a screen of another
|
|
154
|
+
density), through a `(resolution: <ratio>dppx)` media query.
|
|
152
155
|
- Only the wrapper translate is snapped. Row positions inside it keep their exact values (the browser paints
|
|
153
156
|
fractional positions inside a layer on whole pixels already), and every position the component reports
|
|
154
157
|
(`onScroll`, `onRangeChange`, `getScrollPosition()`, `getScrollAnchor()`) stays exact. The rows are drawn
|
|
155
158
|
at most half a device pixel away from the exact scroll position. `VirtualGrid` rows are drawn by the same
|
|
156
159
|
wrapper, so they are snapped vertically as well.
|
|
157
|
-
- Server-rendered HTML carries the exact offset, since there is no screen on the server
|
|
158
|
-
|
|
160
|
+
- Server-rendered HTML carries the exact offset, since there is no screen on the server. Hydration renders
|
|
161
|
+
the same exact offset, so it reports no mismatch, and the snapped offset replaces it right after hydration.
|
|
159
162
|
- Rendering into a document without a window (for example one made with
|
|
160
163
|
`document.implementation.createHTMLDocument()`) throws when the wrapper attaches: nothing is painted there,
|
|
161
164
|
so there is no ratio to snap to.
|
|
162
165
|
|
|
166
|
+
## What a scroll step paints
|
|
167
|
+
|
|
168
|
+
The items wrapper is a plain compositor layer: `will-change: transform`, moved by a 2D translate that is
|
|
169
|
+
snapped to the device-pixel grid (see above), with nothing that takes its subtree out of 2D compositing.
|
|
170
|
+
Measured in Chromium 148 (1280×800, ratio 1, overscan 15, rows whose text ends in an ellipsis; 20 steps,
|
|
171
|
+
3 runs, median of the run medians):
|
|
172
|
+
|
|
173
|
+
- A step that mounts no row writes only the wrapper's `transform` and repaints no row. An 8 px step paints
|
|
174
|
+
0 layers; PrePaint and Layerize take 0.4 ms.
|
|
175
|
+
- A step that shifts the rendering window adds and removes row containers and writes nothing to the rows it
|
|
176
|
+
keeps, yet Chromium repaints the kept rows whose content clips its own overflow (an ellipsis, a card with
|
|
177
|
+
`overflow: hidden`). A mount makes the layer need a repaint, so Chromium re-centres the area it paints the
|
|
178
|
+
layer in (the visible area grown by 4000 px) without its usual hysteresis
|
|
179
|
+
(`CullRectUpdater::ShouldProactivelyUpdate`), and every row painted with `kMayBeClippedByCullRect` is
|
|
180
|
+
repainted. Selecting the next row and scrolling one row paints 36 layers with 160 px rows (Paint 0.99 ms;
|
|
181
|
+
Paint, PrePaint and Layerize 2.6 ms; raster 3.7 ms) and 26 layers with 448 px rows (0.66 ms, 1.9 ms,
|
|
182
|
+
2.6 ms).
|
|
183
|
+
- The wrapper declares no `perspective` and no 3D transform, although either would make Chromium paint the
|
|
184
|
+
subtree without that area: the rows would then be composited under a non-2D transform, which Chromium
|
|
185
|
+
resamples at some ratios. With `perspective: 16777216px` on the wrapper, at ratio 1.25 in a light theme
|
|
186
|
+
111,871 to 142,452 device pixels of a 420×708 list changed at each of 8 offsets, and the band between a
|
|
187
|
+
2 px selection ring and a 2 px focus outline blended on the top and bottom edges (on all four edges at the
|
|
188
|
+
end of the list); at ratio 1 in a dark theme up to 107 pixels changed at 4 of the 8 offsets. Ratios 1.5,
|
|
189
|
+
1.75, 2 and 3 were identical. The same step would have painted 6 layers (Paint 0.40 ms).
|
|
190
|
+
- With the plain layer, a selected row whose surface has a 1 px border, a 2 px ring, a 2 px gap and a 2 px
|
|
191
|
+
outline renders on every side, at ratios 1, 1.25, 1.5, 1.75, 2 and 3, light and dark, and at 8 offsets
|
|
192
|
+
(0 to 1,572,864.5 px and the end of a 20,000-row list), as a full border pixel, floor(2 × ratio) ring
|
|
193
|
+
pixels, at most one blended pixel, floor(2 × ratio) gap pixels and floor(2 × ratio) outline pixels.
|
|
194
|
+
|
|
195
|
+
## Reduced motion
|
|
196
|
+
|
|
197
|
+
Under `prefers-reduced-motion: reduce`, every part that the package animates changes state without a
|
|
198
|
+
transition or an animation. One rule in the shipped stylesheet sets
|
|
199
|
+
`transition: none !important; animation: none !important` on:
|
|
200
|
+
|
|
201
|
+
- the tap scroll circle (the bar's and the grid's) and every element inside it: the default visual,
|
|
202
|
+
`tapScrollCircleSampleVisual` or your own `renderVisual`. Their inline transitions lose to `!important`,
|
|
203
|
+
because the cascade compares importance before it considers the `style` attribute;
|
|
204
|
+
- the bar's circle wrapper (its fade);
|
|
205
|
+
- the arrow buttons (their colour fade);
|
|
206
|
+
- the scrollbar thumb (its thickening on hover and while dragged, 80 ms and 60 ms);
|
|
207
|
+
- the scroll-to-edge buttons (their shrink while pressed and their background fade, 150 ms) and their
|
|
208
|
+
overlay (its fade, 500 ms).
|
|
209
|
+
|
|
210
|
+
The states themselves still change, at once: the thumb still thickens on hover and while dragged, an edge
|
|
211
|
+
button still shrinks while pressed, and the circle follows the drag without easing. Rows and everything you
|
|
212
|
+
render in them keep their own transitions. A host that does not load the package stylesheet keeps the
|
|
213
|
+
transitions. In Chromium 148 the computed `transition-duration` of these parts drops from 0.08–0.5 s to
|
|
214
|
+
`0s`, while a row's own 0.2 s transition stays 0.2 s.
|
|
215
|
+
|
|
163
216
|
## Horizontal Scrolling
|
|
164
217
|
|
|
165
218
|
`VirtualScroll` virtualizes and scrolls the **vertical** axis only. To add a horizontal axis — e.g. a
|
|
@@ -937,6 +990,8 @@ The auxiliary tap scroll circle can replace the native scrollbar for large datas
|
|
|
937
990
|
- **Per-pointer drag control**: `behaviorOptions.pointerDragInputs` restricts content drag-scrolling to specific pointer types, e.g. `["pen", "touch"]` to keep touch scrolling while freeing the mouse for text selection. Do **not** use `enablePointerDrag: false` for that — the pane has no native scroller, so disabling drag removes the only way to scroll on touch devices.
|
|
938
991
|
- **Full layout control** (`size`, `offsetX`, `offsetY`) keeps the circle accessible on both desktop and touch devices.
|
|
939
992
|
- **Visibility tuning** exposes an `opacity` knob so you can match subdued or high-contrast UI themes.
|
|
993
|
+
- **Reduced motion**: the circle and every element inside it follow the package-wide rule in
|
|
994
|
+
[Reduced motion](#reduced-motion).
|
|
940
995
|
|
|
941
996
|
```tsx
|
|
942
997
|
import { VirtualScroll } from "@aiquants/virtualscroll"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualScroll.d.ts","sourceRoot":"","sources":["../src/VirtualScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"VirtualScroll.d.ts","sourceRoot":"","sources":["../src/VirtualScroll.tsx"],"names":[],"mappings":"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"}
|