@aiquants/virtualscroll 3.4.0 → 3.5.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 +39 -0
- package/README.md +23 -3
- package/dist/TapScrollCircle.d.cts +1 -1
- package/dist/TapScrollCircle.d.ts +1 -1
- package/dist/TapScrollCircle.d.ts.map +1 -1
- package/dist/VirtualGrid.d.cts +105 -3
- package/dist/VirtualGrid.d.ts +105 -3
- package/dist/VirtualGrid.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2067 -1984
- package/dist/styles/virtualscroll.css +1 -1
- package/dist/styles/virtualscroll.standalone.css +1 -1
- package/package.json +1 -1
- package/src/TapScrollCircle.tsx +1 -1
- package/src/VirtualGrid.tsx +408 -72
- package/src/index.ts +14 -1
- package/src/styles/virtualscroll.css +59 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@aiquants/virtualscroll` are documented here.
|
|
4
4
|
|
|
5
|
+
## 3.5.0 (2026-09-14)
|
|
6
|
+
|
|
7
|
+
- **新機能 — `VirtualGrid` の両軸末尾凍結 (`frozenTrailingCols` / `frozenTrailingRows`)**:
|
|
8
|
+
末尾凍結はエンジン機能 (ADR-18 — route A)。列側は幅減算 + 右クリップ — スクロール帯幅を
|
|
9
|
+
`viewport − W_F − W_T` へ一般化し (`scrollBandWidthRef` の単一 ref 源)、末尾セルは右アンカー
|
|
10
|
+
クリップ `.aqvs-grid-row-trailing` / `-inner` の**帯ローカル left** で描画する (アンカー機構の
|
|
11
|
+
外 — 先頭帯の鏡像)。行側は `.aqvs-grid-main` の**下**の第 2 帯外バンド `.aqvs-grid-trailing-rows`
|
|
12
|
+
(クリップ高 = H_T_vis インライン、inner は木高 H_T の bottom 定着 — 帯上端 = extent − H_T_vis
|
|
13
|
+
が全構成で成立)。帯行は `renderRow` 逐語再利用で 4 象限コーナー全種が無償成立。複合帯の
|
|
14
|
+
優先順位は LEADING > TRAILING > MIDDLE (ADR-19): 中帯が最初に潰れ (`bandWidth ≤ 0` は正準空窓
|
|
15
|
+
start > end)、末尾が 2 番目 (CSS `max()` 左端 / bottom 定着 inner)、可視クリップの単一情報源は
|
|
16
|
+
`trailingVisibleSize` (消費先はテンプレート高 / hbar `paddingRight` / `getFrozenSize` の vis
|
|
17
|
+
export の 3 点ちょうど)。
|
|
18
|
+
- **契約**: 両 props は [0, `MAX_FROZEN_TRAILING_COLS` / `MAX_FROZEN_TRAILING_ROWS` = 128] の整数
|
|
19
|
+
fail-fast (RangeError)・動的クランプは `min(T, count − 先頭実効)` で**先頭がカウント空間で勝つ**
|
|
20
|
+
(ADR-19-1)。**登記済み帰結**: 先頭 + 末尾の帯寸がビューポートを超えるとき、隠れた末尾セルは
|
|
21
|
+
どのスクロール位置でも可視化できない (文書化されたクランプ — `scrollToCell` の末尾 no-op は
|
|
22
|
+
そこでも正確)。T = 0 は DOM 構造・インライン属性までバイト恒等 (F = 0 / R = 0 恒等の双子)。
|
|
23
|
+
`scrollToCell` / `initialScrollAnchor` の末尾狙いは当該軸 no-op (列は既存アンカー残置)、
|
|
24
|
+
`updateRowSize` / `focusRowAtIndex` は 3 分岐 (末尾帯行は `trailingRowEpoch` 繰上げ / 帯行 DOM
|
|
25
|
+
直接フォーカス)、`getContentSize().height` = H_F + 埋め込み + H_T。
|
|
26
|
+
- **`getFrozenSize` の 10 フィールド化 (非破壊)**: `{cols, width, rows, height}` に
|
|
27
|
+
`trailingCols` / `trailingRows` (クランプ後実効カウント)・`trailingWidth` / `trailingHeight`
|
|
28
|
+
(木 px — 接尾辞和)・`trailingVisibleWidth` / `trailingVisibleHeight` (ビューポートクリップ =
|
|
29
|
+
`min(木, max(0, viewport − 先頭))` — プレアタッチは 0) を追加。
|
|
30
|
+
- **`--aqvs-grid-trailing-width`**: 新設のパッケージスコープ CSS 変数 (0px フォールバック)。
|
|
31
|
+
T > 0 のときのみ書かれ T = 0 で除去される**単一書き手**規律。`.aqvs-grid-row-scroll` の
|
|
32
|
+
`right` は `var(--aqvs-grid-trailing-width, 0px)` へ差替え (T = 0 は計算結果までバイト恒等)。
|
|
33
|
+
- **ADR-25 — `data-aqvs-frozen-row` の付与を F_eff > 0 へゲート分離**: 従来は凍結分岐と結合して
|
|
34
|
+
いたため、末尾のみ (F = 0 ∧ T > 0) のグリッドが凍結列ゼロで全行に属性を出す嘘になるところ
|
|
35
|
+
だった。class `aqvs-grid-row-frozen-host` は「横帯モード」の描画トレイトとして残る。既存構成
|
|
36
|
+
(F > 0 / T = 0) への挙動変化ゼロ。
|
|
37
|
+
- **ADR-23 — T の実行時変更は埋め込み VirtualScroll を再マウントしない**: `key` は R 専用のまま、
|
|
38
|
+
itemCount が**末尾**で伸縮するだけ (getItem / getItemKey / getItemHeight = i + R 不変)。視点は
|
|
39
|
+
トグルを跨いで無償保存される。**保留アンカーの帰結 (文書化)**: T 増加で末尾帯入りする行を
|
|
40
|
+
狙った保留行アンカーは最終スクロール行へクランプされる (itemCount 変化ごとの再ピン留め +
|
|
41
|
+
`sanitizeIndex` — 「保留アンカーは R 再マウントで死ぬ」の鏡像)。MV-TR-A1..A4 ゲートで実測確定
|
|
42
|
+
(740/740 全緑)。
|
|
43
|
+
|
|
5
44
|
## 3.4.0 (2026-09-03)
|
|
6
45
|
|
|
7
46
|
- **修正 — コンテンツが viewport に収まる場合の `maxScrollPosition` を 0 へクランプ**:
|
package/README.md
CHANGED
|
@@ -396,9 +396,12 @@ Contracts (see the design plan under `docs/plans/` for the full bounding theorem
|
|
|
396
396
|
`[0, MAX_FROZEN_LEADING_COLS]` (128) — `RangeError` otherwise; values beyond the current
|
|
397
397
|
`colCount` freeze every column (documented dynamic clamp). `scrollToCell` /
|
|
398
398
|
`initialScrollAnchor` targeting a frozen column are horizontal no-ops (always visible), and
|
|
399
|
-
`getFrozenSize()` reports the effective `{cols, width, rows, height
|
|
400
|
-
|
|
401
|
-
|
|
399
|
+
`getFrozenSize()` reports the effective `{cols, width, rows, height, trailingCols,
|
|
400
|
+
trailingRows, trailingWidth, trailingHeight, trailingVisibleWidth, trailingVisibleHeight}`
|
|
401
|
+
(both axes, both ends — the `rows`/`height` fields are a non-breaking v3.4.0 addition and
|
|
402
|
+
the six `trailing*` fields a non-breaking v3.5.0 addition; `trailingWidth`/`trailingHeight`
|
|
403
|
+
are TREE px, the `trailingVisible*` pair is the viewport clip `min(tree, max(0, viewport -
|
|
404
|
+
leading))`) for consumer hit-test partitioning.
|
|
402
405
|
Frozen cells precede the scroll band in row DOM (logical column order for AT / tabbing), and
|
|
403
406
|
an all-frozen grid reports the scroll band as the canonical EMPTY window (`renderingColStart
|
|
404
407
|
> renderingColEnd` — inclusive loops run zero iterations). `frozenLeadingCols` of `0` (the
|
|
@@ -417,6 +420,23 @@ Contracts (see the design plan under `docs/plans/` for the full bounding theorem
|
|
|
417
420
|
an inset), and `frozenLeadingRows` of `0` (the default) is structurally identical to the
|
|
418
421
|
pre-frozen DOM. Changing `frozenLeadingRows` at runtime rebuilds the embedded row tree
|
|
419
422
|
(remount) and preserves the visible-top viewpoint across the toggle.
|
|
423
|
+
- Frozen trailing columns / rows (v3.5.0): `frozenTrailingCols` pins the last T columns in a
|
|
424
|
+
right-anchored clip outside the anchor machinery (band-local lefts; the scroll band
|
|
425
|
+
generalizes to `viewport - W_F - W_T` with a right clip inset driven by
|
|
426
|
+
`--aqvs-grid-trailing-width` — written only while T > 0, `0px` fallback otherwise), and
|
|
427
|
+
`frozenTrailingRows` pins the last T rows as a second grid-owned band BELOW the scroll pane
|
|
428
|
+
(clip height = the visible size `min(H_T, max(0, viewport - H_F))`, inner bottom-anchored at
|
|
429
|
+
the tree height H_T). Band rows reuse the normal row renderer, so every corner of the
|
|
430
|
+
3 x 3 region grid comes for free. Integers in `[0, MAX_FROZEN_TRAILING_COLS]` /
|
|
431
|
+
`[0, MAX_FROZEN_TRAILING_ROWS]` (128) — `RangeError` otherwise; the dynamic clamp is
|
|
432
|
+
`min(T, count - effectiveLeading)`: the LEADING band wins the count space (ADR-19-1), and
|
|
433
|
+
when the leading + trailing extents exceed the viewport, occluded trailing cells cannot be
|
|
434
|
+
scrolled into view (a documented clamp — `scrollToCell` / `initialScrollAnchor` targeting a
|
|
435
|
+
trailing track stay no-ops on that axis, the column no-op leaving any armed column anchor in
|
|
436
|
+
place). Changing `frozenTrailingCols`/`frozenTrailingRows` at runtime does NOT remount the
|
|
437
|
+
embedded row axis (the tail-only itemCount change keeps the viewpoint for free; a pending
|
|
438
|
+
row anchor whose target enters the band clamps to the last scroll row), and a value of `0`
|
|
439
|
+
(the default) is structurally identical to the pre-trailing DOM.
|
|
420
440
|
|
|
421
441
|
## Residual quantizer for snapping consumers
|
|
422
442
|
|
|
@@ -31,7 +31,7 @@ export type TapScrollCircleProps = {
|
|
|
31
31
|
/** Additional inline styles. / 追加のインラインスタイル。 */
|
|
32
32
|
style?: CSSProperties;
|
|
33
33
|
/** Base opacity applied to the circle. / サークル全体に適用する基準透明度。 */
|
|
34
|
-
opacity
|
|
34
|
+
opacity?: number;
|
|
35
35
|
/** Custom rendering logic for the visual contents. / ビジュアル内容を描画するカスタムロジック。 */
|
|
36
36
|
renderVisual?: (props: TapScrollCircleRenderProps) => ReactNode;
|
|
37
37
|
};
|
|
@@ -31,7 +31,7 @@ export type TapScrollCircleProps = {
|
|
|
31
31
|
/** Additional inline styles. / 追加のインラインスタイル。 */
|
|
32
32
|
style?: CSSProperties;
|
|
33
33
|
/** Base opacity applied to the circle. / サークル全体に適用する基準透明度。 */
|
|
34
|
-
opacity
|
|
34
|
+
opacity?: number;
|
|
35
35
|
/** Custom rendering logic for the visual contents. / ビジュアル内容を描画するカスタムロジック。 */
|
|
36
36
|
renderVisual?: (props: TapScrollCircleRenderProps) => ReactNode;
|
|
37
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TapScrollCircle.d.ts","sourceRoot":"","sources":["../src/TapScrollCircle.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAqC,MAAM,OAAO,CAAA;AAIxF,MAAM,MAAM,wBAAwB,GAAG;IACnC,mEAAmE;IACnE,MAAM,EAAE,OAAO,CAAA;IACf,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IAChB,4EAA4E;IAC5E,YAAY,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAA;IACvD,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"TapScrollCircle.d.ts","sourceRoot":"","sources":["../src/TapScrollCircle.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAqC,MAAM,OAAO,CAAA;AAIxF,MAAM,MAAM,wBAAwB,GAAG;IACnC,mEAAmE;IACnE,MAAM,EAAE,OAAO,CAAA;IACf,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IAChB,4EAA4E;IAC5E,YAAY,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAA;IACvD,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,SAAS,CAAA;CAClE,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC;;;;OAIG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB;;;;OAIG;IACH,UAAU,EAAE,MAAM,cAAc,GAAG,IAAI,CAAA;CAC1C,CAAA;AAcD,MAAM,MAAM,0BAA0B,GAAG;IACrC,yDAAyD;IACzD,SAAS,EAAE,wBAAwB,CAAA;IACnC,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAA;IACjB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;CAClB,CAAA;AAgCD;;;GAGG;AACH,eAAO,MAAM,eAAe,mHAkQ3B,CAAA"}
|
package/dist/VirtualGrid.d.cts
CHANGED
|
@@ -51,6 +51,34 @@ export declare const MAX_FROZEN_LEADING_COLS = 128;
|
|
|
51
51
|
* この上限そのもの。違反は fail-fast の RangeError。
|
|
52
52
|
*/
|
|
53
53
|
export declare const MAX_FROZEN_LEADING_ROWS = 128;
|
|
54
|
+
/**
|
|
55
|
+
* Hard cap for `frozenTrailingCols` (v3.5.0 trailing-freeze plan §3). The trailing band is NOT
|
|
56
|
+
* windowed — every trailing column materializes in every rendered row and is EXEMPT from the
|
|
57
|
+
* MAX_RENDERED_CELLS truncation (the scroll-band budget is reduced by the trailing count
|
|
58
|
+
* instead) — so the cap is what bounds the band: worst case 128 x MAX_RENDERED_ITEMS rows, and
|
|
59
|
+
* W_T <= 128 x MAX_TRACK_SIZE = 2^25 (the measured layout wall; practical W_T <= viewport <<
|
|
60
|
+
* 2^24). Violations fail fast with a RangeError.
|
|
61
|
+
*
|
|
62
|
+
* `frozenTrailingCols` の上限 (3.5.0 末尾凍結プラン §3)。末尾帯は窓化されず全描画行で具現化し、
|
|
63
|
+
* かつ MAX_RENDERED_CELLS の打切り対象外 (代わりにスクロール帯予算を末尾数ぶん控除) のため、
|
|
64
|
+
* 帯を有界にするのはこの上限そのもの: 最悪 128 × MAX_RENDERED_ITEMS 行、W_T ≤ 128 ×
|
|
65
|
+
* MAX_TRACK_SIZE = 2^25 (実測壁ちょうど — 実運用は W_T ≤ viewport ≪ 2^24)。違反は fail-fast の
|
|
66
|
+
* RangeError。
|
|
67
|
+
*/
|
|
68
|
+
export declare const MAX_FROZEN_TRAILING_COLS = 128;
|
|
69
|
+
/**
|
|
70
|
+
* Hard cap for `frozenTrailingRows` (v3.5.0 trailing-freeze plan §3). The trailing-row band is
|
|
71
|
+
* grid-owned and OUT of the embedded VirtualScroll (the SECOND out-of-pane band, below the
|
|
72
|
+
* pane): every band row materializes every rendered column and is exempt from
|
|
73
|
+
* MAX_RENDERED_CELLS (the budget denominator counts band rows instead), so the cap bounds the
|
|
74
|
+
* band itself. Violations fail fast with a RangeError.
|
|
75
|
+
*
|
|
76
|
+
* `frozenTrailingRows` の上限 (3.5.0 末尾凍結プラン §3)。末尾行帯はグリッド所有で埋め込み
|
|
77
|
+
* VirtualScroll の外 (ペインの**下**の第 2 帯外バンド)。帯行は描画列を全て具現化し
|
|
78
|
+
* MAX_RENDERED_CELLS の打切り対象外 (予算分母に帯行数を算入) のため、帯を有界にするのは
|
|
79
|
+
* この上限そのもの。違反は fail-fast の RangeError。
|
|
80
|
+
*/
|
|
81
|
+
export declare const MAX_FROZEN_TRAILING_ROWS = 128;
|
|
54
82
|
/**
|
|
55
83
|
* Resolves the per-row column cap from the cell budget and the effective rendered-row count.
|
|
56
84
|
* Pure and exported as the mutation-gate surface for the production MAX_RENDERED_CELLS fallback
|
|
@@ -237,6 +265,40 @@ export type VirtualGridProps<T> = {
|
|
|
237
265
|
* 通知しゼロ描画)。
|
|
238
266
|
*/
|
|
239
267
|
frozenLeadingRows?: number;
|
|
268
|
+
/**
|
|
269
|
+
* Number of trailing columns frozen at the right edge (v3.5.0 trailing-freeze plan §3;
|
|
270
|
+
* default 0). Integer in [0, MAX_FROZEN_TRAILING_COLS] — RangeError otherwise (fail-fast).
|
|
271
|
+
* Dynamic clamp (documented contract): min(T, colCount − effectiveFrozenCols) — the LEADING
|
|
272
|
+
* band wins the count space. Trailing cells render in a right-anchored clip outside the
|
|
273
|
+
* anchor machinery (band-local lefts); `--aqvs-grid-trailing-width` is written iff T > 0.
|
|
274
|
+
* `scrollToCell` / `initialScrollAnchor` targeting a trailing column are horizontal no-ops
|
|
275
|
+
* (always visible). T = 0 is structurally identical to the pre-trailing DOM.
|
|
276
|
+
* 右端に凍結する末尾列数 (3.5.0 末尾凍結プラン §3。既定 0)。[0, MAX_FROZEN_TRAILING_COLS]
|
|
277
|
+
* の整数 — 違反は RangeError (fail-fast)。動的クランプ (文書化契約): min(T, colCount −
|
|
278
|
+
* effectiveFrozenCols) — カウント空間は**先頭が勝つ**。末尾セルはアンカー機構の外の
|
|
279
|
+
* 右アンカークリップに帯ローカル left で描画し、`--aqvs-grid-trailing-width` は T > 0 の
|
|
280
|
+
* ときのみ書かれる。`scrollToCell` / `initialScrollAnchor` の末尾列狙いは横 no-op
|
|
281
|
+
* (常時可視)。T = 0 は DOM 構造まで従来と恒等。
|
|
282
|
+
*/
|
|
283
|
+
frozenTrailingCols?: number;
|
|
284
|
+
/**
|
|
285
|
+
* Number of trailing rows pinned at the bottom (v3.5.0 trailing-freeze plan §3; default 0).
|
|
286
|
+
* Integer in [0, MAX_FROZEN_TRAILING_ROWS] — RangeError otherwise (fail-fast). Dynamic
|
|
287
|
+
* clamp (documented contract): min(T, rowCount − effectiveFrozenRows) — leading wins. The
|
|
288
|
+
* band is grid-owned BELOW the pane; the embedded scroll rows shrink at the TAIL only
|
|
289
|
+
* (itemCount = rowCount − R − T, getItem = i + R unchanged), so a runtime T change does NOT
|
|
290
|
+
* remount the embedded VirtualScroll (ADR-23). `scrollToCell` / `initialScrollAnchor`
|
|
291
|
+
* targeting a trailing row are vertical no-ops (always visible). T = 0 is structurally
|
|
292
|
+
* identical to the pre-trailing DOM.
|
|
293
|
+
* 下端に凍結する末尾行数 (3.5.0 末尾凍結プラン §3。既定 0)。[0, MAX_FROZEN_TRAILING_ROWS]
|
|
294
|
+
* の整数 — 違反は RangeError (fail-fast)。動的クランプ (文書化契約): min(T, rowCount −
|
|
295
|
+
* effectiveFrozenRows) — 先頭が勝つ。帯はペインの**下**のグリッド所有バンドで、埋め込み
|
|
296
|
+
* スクロール行は**末尾**だけが伸縮する (itemCount = rowCount − R − T、getItem = i + R
|
|
297
|
+
* 不変) — T の実行時変更は埋め込み VirtualScroll を再マウントしない (ADR-23)。
|
|
298
|
+
* `scrollToCell` / `initialScrollAnchor` の末尾行狙いは縦 no-op (常時可視)。T = 0 は
|
|
299
|
+
* DOM 構造まで従来と恒等。
|
|
300
|
+
*/
|
|
301
|
+
frozenTrailingRows?: number;
|
|
240
302
|
/** Row-axis overscan (default 3 — a declared, intentional deviation from the bare VirtualScroll default 15; see the bounding contract). / 行軸 overscan (既定 3 — 素の既定 15 からの宣言済み意図的乖離)。 */
|
|
241
303
|
overscanRows?: number;
|
|
242
304
|
/** Column-axis overscan (default 3). / 列軸 overscan (既定 3)。 */
|
|
@@ -286,7 +348,24 @@ export type VirtualGridHandle = {
|
|
|
286
348
|
x: number;
|
|
287
349
|
y: number;
|
|
288
350
|
};
|
|
289
|
-
/**
|
|
351
|
+
/**
|
|
352
|
+
* Cell-targeted jump. alignY uses the row vocabulary (top/bottom/center), alignX its
|
|
353
|
+
* horizontal twin (start/end/center). No "nearest". Targeting a LEADING frozen or TRAILING
|
|
354
|
+
* frozen column is a horizontal no-op that leaves any previously armed column anchor in
|
|
355
|
+
* place (the visual status quo is preserved; manual horizontal input clears anchors as
|
|
356
|
+
* usual); targeting a leading/trailing frozen row is a vertical no-op. Band membership is
|
|
357
|
+
* judged at CALL time — a T change AFTER arming follows the ADR-23 clamp semantics: a
|
|
358
|
+
* pending row anchor whose target row lands inside the trailing band after a T increase
|
|
359
|
+
* clamps to the last scroll row. Overlap registration (ADR-19-1): when the leading +
|
|
360
|
+
* trailing band extents exceed the viewport, occluded trailing cells cannot be scrolled
|
|
361
|
+
* into view — the no-op is exact there too.
|
|
362
|
+
* セル狙いジャンプ。"nearest" は無し。先頭 / 末尾凍結列狙いの横成分は no-op で、既存の
|
|
363
|
+
* 列アンカーはそのまま残る (視覚的現状維持 — 手動横入力が従来どおり解除する)。先頭 /
|
|
364
|
+
* 末尾凍結行狙いの縦成分も no-op。帯所属の判定は**呼出し時** — 張った後の T 変更は
|
|
365
|
+
* ADR-23 のクランプ意味論 (T 増加で末尾帯入りする行を狙った保留行アンカーは最終
|
|
366
|
+
* スクロール行へクランプ) に従う。重複登記 (ADR-19-1): 先頭 + 末尾の帯寸がビューポートを
|
|
367
|
+
* 超えるとき、隠れた末尾セルはどのスクロール位置でも可視化できない — no-op はそこでも正確。
|
|
368
|
+
*/
|
|
290
369
|
scrollToCell(row: number, col: number, options?: {
|
|
291
370
|
alignY?: "top" | "bottom" | "center";
|
|
292
371
|
alignX?: "start" | "end" | "center";
|
|
@@ -314,7 +393,7 @@ export type VirtualGridHandle = {
|
|
|
314
393
|
height: number;
|
|
315
394
|
};
|
|
316
395
|
getRange(): VirtualGridRange | null;
|
|
317
|
-
/** Pair-call seam: getRowHeight stays the truth;
|
|
396
|
+
/** Pair-call seam: getRowHeight stays the truth. 3-way split — leading band rows bump the frozen-row epoch, trailing band rows bump the trailing-row epoch (accessor re-read; the bands hold no tree), scroll rows delegate to the row updateItemSize at −R. / 対呼び出しシーム (getRowHeight が正)。3 分岐 — 先頭帯行は凍結行 epoch、末尾帯行は末尾行 epoch の繰上げ (アクセサ再読 — 帯に木は無い)、スクロール行は −R で行 updateItemSize へ委譲。 */
|
|
318
397
|
updateRowSize(row: number, px: number): void;
|
|
319
398
|
/**
|
|
320
399
|
* Column twin: validates (MAX_TRACK_SIZE fail-fast), updates the width tree, and bumps the
|
|
@@ -327,12 +406,35 @@ export type VirtualGridHandle = {
|
|
|
327
406
|
* バッチングで 1 コミットに合流 (設計の rAF 合流意図のコミット粒度での実現)。
|
|
328
407
|
*/
|
|
329
408
|
updateColSize(col: number, px: number): void;
|
|
330
|
-
/**
|
|
409
|
+
/**
|
|
410
|
+
* Effective frozen-band sizes on both axes and both ends (v3.5.0 — a non-breaking field
|
|
411
|
+
* extension of the {cols, width} → {cols, width, rows, height} precedent). cols/rows/
|
|
412
|
+
* trailingCols/trailingRows = dynamic post-clamp counts; width/height/trailingWidth/
|
|
413
|
+
* trailingHeight = TREE px (the trailing sizes are tree SUFFIX sums); trailingVisibleWidth/
|
|
414
|
+
* trailingVisibleHeight = viewport-clipped `min(tree, max(0, viewport − leading))` — THE
|
|
415
|
+
* single source for W_T_vis / H_T_vis that every consumer judgment/write path cites (never
|
|
416
|
+
* re-derive the formula). Pre-attach the grid viewport reads {0, 0}, so the vis fields are
|
|
417
|
+
* 0 (an initial measured state, not a sentinel) while the tree fields stay tree px.
|
|
418
|
+
* 実効凍結帯寸法 — 両軸・両端 (v3.5.0。{cols, width} → {cols, width, rows, height} の
|
|
419
|
+
* 前例に続く非破壊のフィールド追加)。cols / rows / trailingCols / trailingRows は動的
|
|
420
|
+
* クランプ後の実効カウント、width / height / trailingWidth / trailingHeight は**木** px
|
|
421
|
+
* (末尾寸は木の接尾辞和)、trailingVisibleWidth / trailingVisibleHeight はビューポート
|
|
422
|
+
* クリップ `min(木, max(0, viewport − 先頭))` — W_T_vis / H_T_vis の**単一情報源**で、
|
|
423
|
+
* 消費側の判定 / 書込み経路は全てこのフィールドを名指しで読む (式の再導出禁止)。
|
|
424
|
+
* プレアタッチはビューポート {0, 0} のため vis フィールドは 0 (番兵ではなく初期実測状態)、
|
|
425
|
+
* 木フィールドは常に木 px。
|
|
426
|
+
*/
|
|
331
427
|
getFrozenSize(): {
|
|
332
428
|
cols: number;
|
|
333
429
|
width: number;
|
|
334
430
|
rows: number;
|
|
335
431
|
height: number;
|
|
432
|
+
trailingCols: number;
|
|
433
|
+
trailingRows: number;
|
|
434
|
+
trailingWidth: number;
|
|
435
|
+
trailingHeight: number;
|
|
436
|
+
trailingVisibleWidth: number;
|
|
437
|
+
trailingVisibleHeight: number;
|
|
336
438
|
};
|
|
337
439
|
/** 2-axis wheel bridge entry: vertical → embedded VirtualScroll, horizontal → hx. Returns whether the event was consumed (WheelBridgeTarget contract). / 2 軸ホイールブリッジ口。消費有無を返す (ブリッジ契約)。 */
|
|
338
440
|
applyWheel(event: WheelEvent): boolean;
|
package/dist/VirtualGrid.d.ts
CHANGED
|
@@ -51,6 +51,34 @@ export declare const MAX_FROZEN_LEADING_COLS = 128;
|
|
|
51
51
|
* この上限そのもの。違反は fail-fast の RangeError。
|
|
52
52
|
*/
|
|
53
53
|
export declare const MAX_FROZEN_LEADING_ROWS = 128;
|
|
54
|
+
/**
|
|
55
|
+
* Hard cap for `frozenTrailingCols` (v3.5.0 trailing-freeze plan §3). The trailing band is NOT
|
|
56
|
+
* windowed — every trailing column materializes in every rendered row and is EXEMPT from the
|
|
57
|
+
* MAX_RENDERED_CELLS truncation (the scroll-band budget is reduced by the trailing count
|
|
58
|
+
* instead) — so the cap is what bounds the band: worst case 128 x MAX_RENDERED_ITEMS rows, and
|
|
59
|
+
* W_T <= 128 x MAX_TRACK_SIZE = 2^25 (the measured layout wall; practical W_T <= viewport <<
|
|
60
|
+
* 2^24). Violations fail fast with a RangeError.
|
|
61
|
+
*
|
|
62
|
+
* `frozenTrailingCols` の上限 (3.5.0 末尾凍結プラン §3)。末尾帯は窓化されず全描画行で具現化し、
|
|
63
|
+
* かつ MAX_RENDERED_CELLS の打切り対象外 (代わりにスクロール帯予算を末尾数ぶん控除) のため、
|
|
64
|
+
* 帯を有界にするのはこの上限そのもの: 最悪 128 × MAX_RENDERED_ITEMS 行、W_T ≤ 128 ×
|
|
65
|
+
* MAX_TRACK_SIZE = 2^25 (実測壁ちょうど — 実運用は W_T ≤ viewport ≪ 2^24)。違反は fail-fast の
|
|
66
|
+
* RangeError。
|
|
67
|
+
*/
|
|
68
|
+
export declare const MAX_FROZEN_TRAILING_COLS = 128;
|
|
69
|
+
/**
|
|
70
|
+
* Hard cap for `frozenTrailingRows` (v3.5.0 trailing-freeze plan §3). The trailing-row band is
|
|
71
|
+
* grid-owned and OUT of the embedded VirtualScroll (the SECOND out-of-pane band, below the
|
|
72
|
+
* pane): every band row materializes every rendered column and is exempt from
|
|
73
|
+
* MAX_RENDERED_CELLS (the budget denominator counts band rows instead), so the cap bounds the
|
|
74
|
+
* band itself. Violations fail fast with a RangeError.
|
|
75
|
+
*
|
|
76
|
+
* `frozenTrailingRows` の上限 (3.5.0 末尾凍結プラン §3)。末尾行帯はグリッド所有で埋め込み
|
|
77
|
+
* VirtualScroll の外 (ペインの**下**の第 2 帯外バンド)。帯行は描画列を全て具現化し
|
|
78
|
+
* MAX_RENDERED_CELLS の打切り対象外 (予算分母に帯行数を算入) のため、帯を有界にするのは
|
|
79
|
+
* この上限そのもの。違反は fail-fast の RangeError。
|
|
80
|
+
*/
|
|
81
|
+
export declare const MAX_FROZEN_TRAILING_ROWS = 128;
|
|
54
82
|
/**
|
|
55
83
|
* Resolves the per-row column cap from the cell budget and the effective rendered-row count.
|
|
56
84
|
* Pure and exported as the mutation-gate surface for the production MAX_RENDERED_CELLS fallback
|
|
@@ -237,6 +265,40 @@ export type VirtualGridProps<T> = {
|
|
|
237
265
|
* 通知しゼロ描画)。
|
|
238
266
|
*/
|
|
239
267
|
frozenLeadingRows?: number;
|
|
268
|
+
/**
|
|
269
|
+
* Number of trailing columns frozen at the right edge (v3.5.0 trailing-freeze plan §3;
|
|
270
|
+
* default 0). Integer in [0, MAX_FROZEN_TRAILING_COLS] — RangeError otherwise (fail-fast).
|
|
271
|
+
* Dynamic clamp (documented contract): min(T, colCount − effectiveFrozenCols) — the LEADING
|
|
272
|
+
* band wins the count space. Trailing cells render in a right-anchored clip outside the
|
|
273
|
+
* anchor machinery (band-local lefts); `--aqvs-grid-trailing-width` is written iff T > 0.
|
|
274
|
+
* `scrollToCell` / `initialScrollAnchor` targeting a trailing column are horizontal no-ops
|
|
275
|
+
* (always visible). T = 0 is structurally identical to the pre-trailing DOM.
|
|
276
|
+
* 右端に凍結する末尾列数 (3.5.0 末尾凍結プラン §3。既定 0)。[0, MAX_FROZEN_TRAILING_COLS]
|
|
277
|
+
* の整数 — 違反は RangeError (fail-fast)。動的クランプ (文書化契約): min(T, colCount −
|
|
278
|
+
* effectiveFrozenCols) — カウント空間は**先頭が勝つ**。末尾セルはアンカー機構の外の
|
|
279
|
+
* 右アンカークリップに帯ローカル left で描画し、`--aqvs-grid-trailing-width` は T > 0 の
|
|
280
|
+
* ときのみ書かれる。`scrollToCell` / `initialScrollAnchor` の末尾列狙いは横 no-op
|
|
281
|
+
* (常時可視)。T = 0 は DOM 構造まで従来と恒等。
|
|
282
|
+
*/
|
|
283
|
+
frozenTrailingCols?: number;
|
|
284
|
+
/**
|
|
285
|
+
* Number of trailing rows pinned at the bottom (v3.5.0 trailing-freeze plan §3; default 0).
|
|
286
|
+
* Integer in [0, MAX_FROZEN_TRAILING_ROWS] — RangeError otherwise (fail-fast). Dynamic
|
|
287
|
+
* clamp (documented contract): min(T, rowCount − effectiveFrozenRows) — leading wins. The
|
|
288
|
+
* band is grid-owned BELOW the pane; the embedded scroll rows shrink at the TAIL only
|
|
289
|
+
* (itemCount = rowCount − R − T, getItem = i + R unchanged), so a runtime T change does NOT
|
|
290
|
+
* remount the embedded VirtualScroll (ADR-23). `scrollToCell` / `initialScrollAnchor`
|
|
291
|
+
* targeting a trailing row are vertical no-ops (always visible). T = 0 is structurally
|
|
292
|
+
* identical to the pre-trailing DOM.
|
|
293
|
+
* 下端に凍結する末尾行数 (3.5.0 末尾凍結プラン §3。既定 0)。[0, MAX_FROZEN_TRAILING_ROWS]
|
|
294
|
+
* の整数 — 違反は RangeError (fail-fast)。動的クランプ (文書化契約): min(T, rowCount −
|
|
295
|
+
* effectiveFrozenRows) — 先頭が勝つ。帯はペインの**下**のグリッド所有バンドで、埋め込み
|
|
296
|
+
* スクロール行は**末尾**だけが伸縮する (itemCount = rowCount − R − T、getItem = i + R
|
|
297
|
+
* 不変) — T の実行時変更は埋め込み VirtualScroll を再マウントしない (ADR-23)。
|
|
298
|
+
* `scrollToCell` / `initialScrollAnchor` の末尾行狙いは縦 no-op (常時可視)。T = 0 は
|
|
299
|
+
* DOM 構造まで従来と恒等。
|
|
300
|
+
*/
|
|
301
|
+
frozenTrailingRows?: number;
|
|
240
302
|
/** Row-axis overscan (default 3 — a declared, intentional deviation from the bare VirtualScroll default 15; see the bounding contract). / 行軸 overscan (既定 3 — 素の既定 15 からの宣言済み意図的乖離)。 */
|
|
241
303
|
overscanRows?: number;
|
|
242
304
|
/** Column-axis overscan (default 3). / 列軸 overscan (既定 3)。 */
|
|
@@ -286,7 +348,24 @@ export type VirtualGridHandle = {
|
|
|
286
348
|
x: number;
|
|
287
349
|
y: number;
|
|
288
350
|
};
|
|
289
|
-
/**
|
|
351
|
+
/**
|
|
352
|
+
* Cell-targeted jump. alignY uses the row vocabulary (top/bottom/center), alignX its
|
|
353
|
+
* horizontal twin (start/end/center). No "nearest". Targeting a LEADING frozen or TRAILING
|
|
354
|
+
* frozen column is a horizontal no-op that leaves any previously armed column anchor in
|
|
355
|
+
* place (the visual status quo is preserved; manual horizontal input clears anchors as
|
|
356
|
+
* usual); targeting a leading/trailing frozen row is a vertical no-op. Band membership is
|
|
357
|
+
* judged at CALL time — a T change AFTER arming follows the ADR-23 clamp semantics: a
|
|
358
|
+
* pending row anchor whose target row lands inside the trailing band after a T increase
|
|
359
|
+
* clamps to the last scroll row. Overlap registration (ADR-19-1): when the leading +
|
|
360
|
+
* trailing band extents exceed the viewport, occluded trailing cells cannot be scrolled
|
|
361
|
+
* into view — the no-op is exact there too.
|
|
362
|
+
* セル狙いジャンプ。"nearest" は無し。先頭 / 末尾凍結列狙いの横成分は no-op で、既存の
|
|
363
|
+
* 列アンカーはそのまま残る (視覚的現状維持 — 手動横入力が従来どおり解除する)。先頭 /
|
|
364
|
+
* 末尾凍結行狙いの縦成分も no-op。帯所属の判定は**呼出し時** — 張った後の T 変更は
|
|
365
|
+
* ADR-23 のクランプ意味論 (T 増加で末尾帯入りする行を狙った保留行アンカーは最終
|
|
366
|
+
* スクロール行へクランプ) に従う。重複登記 (ADR-19-1): 先頭 + 末尾の帯寸がビューポートを
|
|
367
|
+
* 超えるとき、隠れた末尾セルはどのスクロール位置でも可視化できない — no-op はそこでも正確。
|
|
368
|
+
*/
|
|
290
369
|
scrollToCell(row: number, col: number, options?: {
|
|
291
370
|
alignY?: "top" | "bottom" | "center";
|
|
292
371
|
alignX?: "start" | "end" | "center";
|
|
@@ -314,7 +393,7 @@ export type VirtualGridHandle = {
|
|
|
314
393
|
height: number;
|
|
315
394
|
};
|
|
316
395
|
getRange(): VirtualGridRange | null;
|
|
317
|
-
/** Pair-call seam: getRowHeight stays the truth;
|
|
396
|
+
/** Pair-call seam: getRowHeight stays the truth. 3-way split — leading band rows bump the frozen-row epoch, trailing band rows bump the trailing-row epoch (accessor re-read; the bands hold no tree), scroll rows delegate to the row updateItemSize at −R. / 対呼び出しシーム (getRowHeight が正)。3 分岐 — 先頭帯行は凍結行 epoch、末尾帯行は末尾行 epoch の繰上げ (アクセサ再読 — 帯に木は無い)、スクロール行は −R で行 updateItemSize へ委譲。 */
|
|
318
397
|
updateRowSize(row: number, px: number): void;
|
|
319
398
|
/**
|
|
320
399
|
* Column twin: validates (MAX_TRACK_SIZE fail-fast), updates the width tree, and bumps the
|
|
@@ -327,12 +406,35 @@ export type VirtualGridHandle = {
|
|
|
327
406
|
* バッチングで 1 コミットに合流 (設計の rAF 合流意図のコミット粒度での実現)。
|
|
328
407
|
*/
|
|
329
408
|
updateColSize(col: number, px: number): void;
|
|
330
|
-
/**
|
|
409
|
+
/**
|
|
410
|
+
* Effective frozen-band sizes on both axes and both ends (v3.5.0 — a non-breaking field
|
|
411
|
+
* extension of the {cols, width} → {cols, width, rows, height} precedent). cols/rows/
|
|
412
|
+
* trailingCols/trailingRows = dynamic post-clamp counts; width/height/trailingWidth/
|
|
413
|
+
* trailingHeight = TREE px (the trailing sizes are tree SUFFIX sums); trailingVisibleWidth/
|
|
414
|
+
* trailingVisibleHeight = viewport-clipped `min(tree, max(0, viewport − leading))` — THE
|
|
415
|
+
* single source for W_T_vis / H_T_vis that every consumer judgment/write path cites (never
|
|
416
|
+
* re-derive the formula). Pre-attach the grid viewport reads {0, 0}, so the vis fields are
|
|
417
|
+
* 0 (an initial measured state, not a sentinel) while the tree fields stay tree px.
|
|
418
|
+
* 実効凍結帯寸法 — 両軸・両端 (v3.5.0。{cols, width} → {cols, width, rows, height} の
|
|
419
|
+
* 前例に続く非破壊のフィールド追加)。cols / rows / trailingCols / trailingRows は動的
|
|
420
|
+
* クランプ後の実効カウント、width / height / trailingWidth / trailingHeight は**木** px
|
|
421
|
+
* (末尾寸は木の接尾辞和)、trailingVisibleWidth / trailingVisibleHeight はビューポート
|
|
422
|
+
* クリップ `min(木, max(0, viewport − 先頭))` — W_T_vis / H_T_vis の**単一情報源**で、
|
|
423
|
+
* 消費側の判定 / 書込み経路は全てこのフィールドを名指しで読む (式の再導出禁止)。
|
|
424
|
+
* プレアタッチはビューポート {0, 0} のため vis フィールドは 0 (番兵ではなく初期実測状態)、
|
|
425
|
+
* 木フィールドは常に木 px。
|
|
426
|
+
*/
|
|
331
427
|
getFrozenSize(): {
|
|
332
428
|
cols: number;
|
|
333
429
|
width: number;
|
|
334
430
|
rows: number;
|
|
335
431
|
height: number;
|
|
432
|
+
trailingCols: number;
|
|
433
|
+
trailingRows: number;
|
|
434
|
+
trailingWidth: number;
|
|
435
|
+
trailingHeight: number;
|
|
436
|
+
trailingVisibleWidth: number;
|
|
437
|
+
trailingVisibleHeight: number;
|
|
336
438
|
};
|
|
337
439
|
/** 2-axis wheel bridge entry: vertical → embedded VirtualScroll, horizontal → hx. Returns whether the event was consumed (WheelBridgeTarget contract). / 2 軸ホイールブリッジ口。消費有無を返す (ブリッジ契約)。 */
|
|
338
440
|
applyWheel(event: WheelEvent): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualGrid.d.ts","sourceRoot":"","sources":["../src/VirtualGrid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAkC,KAAK,cAAc,EAAE,KAAK,SAAS,EAA2F,MAAM,OAAO,CAAA;AAIpL,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,OAAO,EAAqF,KAAK,4BAA4B,EAAqD,KAAK,6BAA6B,EAAyB,MAAM,qBAAqB,CAAA;AAExQ;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,SAAU,CAAA;AAarC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,QAAS,CAAA;AAExC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAA;AAE1C;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"VirtualGrid.d.ts","sourceRoot":"","sources":["../src/VirtualGrid.tsx"],"names":[],"mappings":"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"}
|