@aiquants/virtualscroll 3.4.0 → 3.6.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 +86 -0
- package/README.md +34 -4
- package/dist/ScrollBar.d.cts +24 -1
- package/dist/ScrollBar.d.ts +24 -1
- package/dist/ScrollBar.d.ts.map +1 -1
- package/dist/ScrollPane.d.ts.map +1 -1
- package/dist/TapScrollCircle.d.cts +12 -5
- package/dist/TapScrollCircle.d.ts +12 -5
- 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/computeTapScrollVelocity.d.cts +120 -0
- package/dist/computeTapScrollVelocity.d.ts +121 -0
- package/dist/computeTapScrollVelocity.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2428 -2152
- package/dist/styles/virtualscroll.css +1 -1
- package/dist/styles/virtualscroll.standalone.css +1 -1
- package/dist/useGridTapScroll.d.cts +83 -0
- package/dist/useGridTapScroll.d.ts +84 -0
- package/dist/useGridTapScroll.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/ScrollBar.tsx +16 -4
- package/src/ScrollPane.tsx +1 -0
- package/src/TapScrollCircle.tsx +42 -10
- package/src/VirtualGrid.tsx +559 -76
- package/src/computeTapScrollVelocity.ts +150 -0
- package/src/index.ts +15 -1
- package/src/styles/virtualscroll.css +90 -1
- package/src/useGridTapScroll.ts +370 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,92 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@aiquants/virtualscroll` are documented here.
|
|
4
4
|
|
|
5
|
+
## 3.6.0 (2026-09-18)
|
|
6
|
+
|
|
7
|
+
- **挙動置換 — `VirtualGrid` のタップサークルが 2 つ → 1 つの統合 2 軸サークルへ**: 縦バーの
|
|
8
|
+
サークル + 横バーのサークル (同時ドラッグは document 捕捉 pointerdown により構造的に不可能・
|
|
9
|
+
横は W_F = 0 で完全クリップ — 出荷済み欠陥) をやめ、グリッド所有の 1 サークル (`axis="xy"`) が
|
|
10
|
+
単一ドラッグベクトルで両軸を連続スクロールする。**コーナーアンカー + 3 アーム配置則**
|
|
11
|
+
(`min(可視上限, max(到達性, 遠象限床))` — 全アームが root 寸・sbw・size・オフセットのみに依存 =
|
|
12
|
+
帯幅非依存・凍結トグル不変)、**既定オフセットは両軸 −200** (到達性導出 — バー既定 −80/0 では
|
|
13
|
+
ない)。opt-out は従来どおり `tapScrollCircleOptions: { enabled: false }` — 今後は**唯一の
|
|
14
|
+
サークルを殺す**。封鎖コンテンツ面積は半減 (40 px ディスク 1 枚)。既定 ON の挙動置換を
|
|
15
|
+
**minor** とする判断は ADR-32 登記: 置換対象が出荷済み欠陥・再解釈フィールド
|
|
16
|
+
(`offsetX`/`offsetY` — バー相対 → コーナー相対) への in-repo 依存ゼロ・型削除ゼロ (いずれか
|
|
17
|
+
1 つでも崩れていれば 4.0.0 だった)。
|
|
18
|
+
- **速度則**: 方向余弦分解 `v = (s_x(r)·ox/r, s_y(r)·oy/r)` — `s_a` は無改造
|
|
19
|
+
`computeTapScrollSpeed` の軸別評価 (純軸ドラッグは各バー則と画素法則恒等 = T1)。新規純関数
|
|
20
|
+
`computeTapScrollVelocity` + 型 `TapScrollVelocityInput` / `TapScrollAxisSpeedParams` を
|
|
21
|
+
**バレル export ×3**。`TapScrollCircle.axis` は `"x" | "y" | "xy"` の射影部分空間へ一般化
|
|
22
|
+
(既定 `"y"` 不変・state 型不変 — `"xy"` の `direction` は径方向係合 `{0, 1}`)。
|
|
23
|
+
- **登記デルタ (グリッド仕様 §3.6 の一覧が正典)**: キャンセルイベント無条件リセット (旧: 縦は
|
|
24
|
+
paneId フィルタ → 一様に無条件 = 厳密 fail-closed) / 片軸境界はループ非停止・境界フラグ毎
|
|
25
|
+
フレーム (反転で同一保持中に端から退却) / 軸上ピンの純軸ドラッグはループをパーク (角度付き
|
|
26
|
+
pointermove で再開) / pendingColAnchor は**適用済み** hx デルタのみで解除 (バーの要求時規則
|
|
27
|
+
より厳格) / `"xy"` に反転抑止リング無し (原点通過は r = 6 で反転・緩衝は静止直径 12 px のみ) /
|
|
28
|
+
52 px 未満ルートは先頭側エッジクリップ (ブラウザ未検証ニッチ)。
|
|
29
|
+
- **軸近傍リーク (旧ハード軸ロックの代償 — 両向き登記)**: 4° 誤差・75% 引きのオープンループで
|
|
30
|
+
意図縦 ⇒ 交差 829 px/s (2 s で ≈ 8+ 列 @200 px 列)、意図横 ⇒ 交差 1,533 px/s (2 s で
|
|
31
|
+
≈ **96 行** @32 px 行)。受入閾値 (タッチ実機・クローズドループ): 中央値 ≤ 1 列 (意図縦) /
|
|
32
|
+
≤ 6 行 (意図横) — 超過時は連続リマップ `φ_ε(θ) = θ − ε·sin 4θ` を 3.6.0 既定として出荷する
|
|
33
|
+
事前コミット。異方性下ではコンテンツ速度角 ≠ ドラッグ角 (全手掛かりはドラッグ角を表示 —
|
|
34
|
+
登記)。遮蔽 / 到達性の閾値表はグリッド仕様 §3.6。
|
|
35
|
+
- **`axis="x"` の引き transform 修正**: `translateY` → `translateX` (「右ドラッグで下へ動く」
|
|
36
|
+
出荷済み quirk — 裸バー opt-in 経由でのみ到達・in-repo 消費者ゼロ)。`"y"` はバイト恒等。
|
|
37
|
+
- **forced-colors**: `.aqvs-tap-scroll-circle` へパッケージ初の `forced-colors: active` 輪郭
|
|
38
|
+
(グラデーション視覚の平坦化で不可視になるのを防ぐ描画モード修正 — 単体サークルにも適用)。
|
|
39
|
+
- **in-package export ×3** (バレル非掲載): `TAP_SCROLL_MAX_FRAME_DELTA_SECONDS` /
|
|
40
|
+
`DEFAULT_TAP_SCROLL_CIRCLE_OPTIONS` / `resolveTapScrollCircleOptions`。
|
|
41
|
+
`enableHorizontalTapCircle` は裸バー向けの生きた汎用機能として存続 (グリッドが opt-in を
|
|
42
|
+
やめただけ — clean cut-over 姿勢の明示的免除)。
|
|
43
|
+
- **バグ修正 — 自己計測ペインの一方向ラチェット (`ScrollBar.stretchMainSize`)**: in-flow 兄弟
|
|
44
|
+
バーの固定インライン高が definite-but-content-floored なホスト (`flex: 1` かつ `min-height: 0`
|
|
45
|
+
無し) の min-content 床になり縮小が永久に効かなかった (実 Chromium 実証)。新 prop
|
|
46
|
+
`stretchMainSize` (縦バー限定でインライン主軸寸をスキップ — 横バーは stretch が主軸を寸法
|
|
47
|
+
決めできないため書込み維持) を `ScrollPane` が `isSelfMeasuringViewport` で結線。幾何は
|
|
48
|
+
`viewportSize` の数値由来で無傷。回帰ゲート = 実 Chromium ラダー E2E
|
|
49
|
+
(800→1300→800→600→1000 双方向回復)。ScrollPane 仕様 §2.5 に機構を登記。
|
|
50
|
+
- 単体 815 / 815 (45 ファイル) 全緑・変異台帳 MV-XY 37 行 + MV-SM 3 行 (物理 43 変異) 全 red 実測。
|
|
51
|
+
|
|
52
|
+
## 3.5.0 (2026-09-14)
|
|
53
|
+
|
|
54
|
+
- **新機能 — `VirtualGrid` の両軸末尾凍結 (`frozenTrailingCols` / `frozenTrailingRows`)**:
|
|
55
|
+
末尾凍結はエンジン機能 (ADR-18 — route A)。列側は幅減算 + 右クリップ — スクロール帯幅を
|
|
56
|
+
`viewport − W_F − W_T` へ一般化し (`scrollBandWidthRef` の単一 ref 源)、末尾セルは右アンカー
|
|
57
|
+
クリップ `.aqvs-grid-row-trailing` / `-inner` の**帯ローカル left** で描画する (アンカー機構の
|
|
58
|
+
外 — 先頭帯の鏡像)。行側は `.aqvs-grid-main` の**下**の第 2 帯外バンド `.aqvs-grid-trailing-rows`
|
|
59
|
+
(クリップ高 = H_T_vis インライン、inner は木高 H_T の bottom 定着 — 帯上端 = extent − H_T_vis
|
|
60
|
+
が全構成で成立)。帯行は `renderRow` 逐語再利用で 4 象限コーナー全種が無償成立。複合帯の
|
|
61
|
+
優先順位は LEADING > TRAILING > MIDDLE (ADR-19): 中帯が最初に潰れ (`bandWidth ≤ 0` は正準空窓
|
|
62
|
+
start > end)、末尾が 2 番目 (CSS `max()` 左端 / bottom 定着 inner)、可視クリップの単一情報源は
|
|
63
|
+
`trailingVisibleSize` (消費先はテンプレート高 / hbar `paddingRight` / `getFrozenSize` の vis
|
|
64
|
+
export の 3 点ちょうど)。
|
|
65
|
+
- **契約**: 両 props は [0, `MAX_FROZEN_TRAILING_COLS` / `MAX_FROZEN_TRAILING_ROWS` = 128] の整数
|
|
66
|
+
fail-fast (RangeError)・動的クランプは `min(T, count − 先頭実効)` で**先頭がカウント空間で勝つ**
|
|
67
|
+
(ADR-19-1)。**登記済み帰結**: 先頭 + 末尾の帯寸がビューポートを超えるとき、隠れた末尾セルは
|
|
68
|
+
どのスクロール位置でも可視化できない (文書化されたクランプ — `scrollToCell` の末尾 no-op は
|
|
69
|
+
そこでも正確)。T = 0 は DOM 構造・インライン属性までバイト恒等 (F = 0 / R = 0 恒等の双子)。
|
|
70
|
+
`scrollToCell` / `initialScrollAnchor` の末尾狙いは当該軸 no-op (列は既存アンカー残置)、
|
|
71
|
+
`updateRowSize` / `focusRowAtIndex` は 3 分岐 (末尾帯行は `trailingRowEpoch` 繰上げ / 帯行 DOM
|
|
72
|
+
直接フォーカス)、`getContentSize().height` = H_F + 埋め込み + H_T。
|
|
73
|
+
- **`getFrozenSize` の 10 フィールド化 (非破壊)**: `{cols, width, rows, height}` に
|
|
74
|
+
`trailingCols` / `trailingRows` (クランプ後実効カウント)・`trailingWidth` / `trailingHeight`
|
|
75
|
+
(木 px — 接尾辞和)・`trailingVisibleWidth` / `trailingVisibleHeight` (ビューポートクリップ =
|
|
76
|
+
`min(木, max(0, viewport − 先頭))` — プレアタッチは 0) を追加。
|
|
77
|
+
- **`--aqvs-grid-trailing-width`**: 新設のパッケージスコープ CSS 変数 (0px フォールバック)。
|
|
78
|
+
T > 0 のときのみ書かれ T = 0 で除去される**単一書き手**規律。`.aqvs-grid-row-scroll` の
|
|
79
|
+
`right` は `var(--aqvs-grid-trailing-width, 0px)` へ差替え (T = 0 は計算結果までバイト恒等)。
|
|
80
|
+
- **ADR-25 — `data-aqvs-frozen-row` の付与を F_eff > 0 へゲート分離**: 従来は凍結分岐と結合して
|
|
81
|
+
いたため、末尾のみ (F = 0 ∧ T > 0) のグリッドが凍結列ゼロで全行に属性を出す嘘になるところ
|
|
82
|
+
だった。class `aqvs-grid-row-frozen-host` は「横帯モード」の描画トレイトとして残る。既存構成
|
|
83
|
+
(F > 0 / T = 0) への挙動変化ゼロ。
|
|
84
|
+
- **ADR-23 — T の実行時変更は埋め込み VirtualScroll を再マウントしない**: `key` は R 専用のまま、
|
|
85
|
+
itemCount が**末尾**で伸縮するだけ (getItem / getItemKey / getItemHeight = i + R 不変)。視点は
|
|
86
|
+
トグルを跨いで無償保存される。**保留アンカーの帰結 (文書化)**: T 増加で末尾帯入りする行を
|
|
87
|
+
狙った保留行アンカーは最終スクロール行へクランプされる (itemCount 変化ごとの再ピン留め +
|
|
88
|
+
`sanitizeIndex` — 「保留アンカーは R 再マウントで死ぬ」の鏡像)。MV-TR-A1..A4 ゲートで実測確定
|
|
89
|
+
(740/740 全緑)。
|
|
90
|
+
|
|
5
91
|
## 3.4.0 (2026-09-03)
|
|
6
92
|
|
|
7
93
|
- **修正 — コンテンツが viewport に収まる場合の `maxScrollPosition` を 0 へクランプ**:
|
package/README.md
CHANGED
|
@@ -121,7 +121,10 @@ function App() {
|
|
|
121
121
|
`position: absolute`, …). With an auto-height host the band stays 0 and the package logs a warning —
|
|
122
122
|
there is nothing to measure. In self-measured mode the root carries `data-self-measured="true"` and the
|
|
123
123
|
packaged rule `.aqvs-scroll-pane[data-self-measured="true"] { height: 100% }` stretches it to the host,
|
|
124
|
-
so the stylesheet import is required for this mode as well.
|
|
124
|
+
so the stylesheet import is required for this mode as well. Since v3.6.0 the self-measured pane also
|
|
125
|
+
skips the scrollbar's inline main-axis size (`ScrollBar.stretchMainSize`) so a `flex: 1` host without
|
|
126
|
+
`min-height: 0` can shrink again — the bar's fixed height used to become the host's min-content floor
|
|
127
|
+
and lock shrinking permanently (one-way ratchet).
|
|
125
128
|
|
|
126
129
|
**Pass `viewportSize` only when the band is known by calculation, not measurement** — a dropdown whose
|
|
127
130
|
height comes from row count × row height, for example. If you pass a value that disagrees with the real
|
|
@@ -396,9 +399,12 @@ Contracts (see the design plan under `docs/plans/` for the full bounding theorem
|
|
|
396
399
|
`[0, MAX_FROZEN_LEADING_COLS]` (128) — `RangeError` otherwise; values beyond the current
|
|
397
400
|
`colCount` freeze every column (documented dynamic clamp). `scrollToCell` /
|
|
398
401
|
`initialScrollAnchor` targeting a frozen column are horizontal no-ops (always visible), and
|
|
399
|
-
`getFrozenSize()` reports the effective `{cols, width, rows, height
|
|
400
|
-
|
|
401
|
-
|
|
402
|
+
`getFrozenSize()` reports the effective `{cols, width, rows, height, trailingCols,
|
|
403
|
+
trailingRows, trailingWidth, trailingHeight, trailingVisibleWidth, trailingVisibleHeight}`
|
|
404
|
+
(both axes, both ends — the `rows`/`height` fields are a non-breaking v3.4.0 addition and
|
|
405
|
+
the six `trailing*` fields a non-breaking v3.5.0 addition; `trailingWidth`/`trailingHeight`
|
|
406
|
+
are TREE px, the `trailingVisible*` pair is the viewport clip `min(tree, max(0, viewport -
|
|
407
|
+
leading))`) for consumer hit-test partitioning.
|
|
402
408
|
Frozen cells precede the scroll band in row DOM (logical column order for AT / tabbing), and
|
|
403
409
|
an all-frozen grid reports the scroll band as the canonical EMPTY window (`renderingColStart
|
|
404
410
|
> renderingColEnd` — inclusive loops run zero iterations). `frozenLeadingCols` of `0` (the
|
|
@@ -417,6 +423,23 @@ Contracts (see the design plan under `docs/plans/` for the full bounding theorem
|
|
|
417
423
|
an inset), and `frozenLeadingRows` of `0` (the default) is structurally identical to the
|
|
418
424
|
pre-frozen DOM. Changing `frozenLeadingRows` at runtime rebuilds the embedded row tree
|
|
419
425
|
(remount) and preserves the visible-top viewpoint across the toggle.
|
|
426
|
+
- Frozen trailing columns / rows (v3.5.0): `frozenTrailingCols` pins the last T columns in a
|
|
427
|
+
right-anchored clip outside the anchor machinery (band-local lefts; the scroll band
|
|
428
|
+
generalizes to `viewport - W_F - W_T` with a right clip inset driven by
|
|
429
|
+
`--aqvs-grid-trailing-width` — written only while T > 0, `0px` fallback otherwise), and
|
|
430
|
+
`frozenTrailingRows` pins the last T rows as a second grid-owned band BELOW the scroll pane
|
|
431
|
+
(clip height = the visible size `min(H_T, max(0, viewport - H_F))`, inner bottom-anchored at
|
|
432
|
+
the tree height H_T). Band rows reuse the normal row renderer, so every corner of the
|
|
433
|
+
3 x 3 region grid comes for free. Integers in `[0, MAX_FROZEN_TRAILING_COLS]` /
|
|
434
|
+
`[0, MAX_FROZEN_TRAILING_ROWS]` (128) — `RangeError` otherwise; the dynamic clamp is
|
|
435
|
+
`min(T, count - effectiveLeading)`: the LEADING band wins the count space (ADR-19-1), and
|
|
436
|
+
when the leading + trailing extents exceed the viewport, occluded trailing cells cannot be
|
|
437
|
+
scrolled into view (a documented clamp — `scrollToCell` / `initialScrollAnchor` targeting a
|
|
438
|
+
trailing track stay no-ops on that axis, the column no-op leaving any armed column anchor in
|
|
439
|
+
place). Changing `frozenTrailingCols`/`frozenTrailingRows` at runtime does NOT remount the
|
|
440
|
+
embedded row axis (the tail-only itemCount change keeps the viewpoint for free; a pending
|
|
441
|
+
row anchor whose target enters the band clamps to the last scroll row), and a value of `0`
|
|
442
|
+
(the default) is structurally identical to the pre-trailing DOM.
|
|
420
443
|
|
|
421
444
|
## Residual quantizer for snapping consumers
|
|
422
445
|
|
|
@@ -759,6 +782,13 @@ viewport), `.aqvs-scrollbar` (+ `-vertical` / `-horizontal`), `.aqvs-scrollbar-t
|
|
|
759
782
|
|
|
760
783
|
The auxiliary tap scroll circle can replace the native scrollbar for large datasets while remaining easy to control:
|
|
761
784
|
|
|
785
|
+
> **VirtualGrid ships a single two-axis circle since v3.6.0**: instead of one circle per bar, the grid
|
|
786
|
+
> renders ONE grid-owned circle (`axis="xy"`) near its far corner whose single drag vector scrolls both
|
|
787
|
+
> axes continuously (per-axis speeds follow each bar's law exactly on pure-axis drags). It reads the same
|
|
788
|
+
> `scrollBarOptions.tapScrollCircleOptions` knob (default offsets become `-200`/`-200`, corner-relative);
|
|
789
|
+
> `enabled: false` kills the single circle. Standalone `VirtualScroll` / `ScrollPane` / `ScrollBar`
|
|
790
|
+
> behavior is unchanged.
|
|
791
|
+
|
|
762
792
|
- **Adaptive speed scaling** automatically ramps up to a `120×` multiplier as `itemCount` grows (trillions supported).
|
|
763
793
|
- **Manual overrides** let you clamp or extend speed via `maxSpeedMultiplier` when you need deterministic behavior.
|
|
764
794
|
- **Speed shaping** with `maxSpeedCurve` controls how quickly the speed ramps up as you pull the circle, blending gentle near-threshold drag with high-speed travel at extended distances. The ceiling itself does not depend on the drag distance: `exponentialSteepness` shapes the ramp, and `exponentialScale` caps the ceiling (its effective value is `min(exponentialScale, maxSpeedMultiplier)`).
|
package/dist/ScrollBar.d.cts
CHANGED
|
@@ -36,6 +36,12 @@ export type ScrollBarTapCircleOptions = {
|
|
|
36
36
|
easedOffset?: number;
|
|
37
37
|
};
|
|
38
38
|
};
|
|
39
|
+
type ResolvedTapScrollCircleOptions = Required<Omit<ScrollBarTapCircleOptions, "className" | "maxVisualDistance" | "renderVisual" | "maxSpeedCurve">> & {
|
|
40
|
+
className?: string;
|
|
41
|
+
maxVisualDistance: number;
|
|
42
|
+
renderVisual?: ScrollBarTapCircleOptions["renderVisual"];
|
|
43
|
+
maxSpeedCurve?: ScrollBarTapCircleOptions["maxSpeedCurve"];
|
|
44
|
+
};
|
|
39
45
|
/** Custom event name emitted when external interactions should cancel tap scrolling. / 外部操作によってタップスクロールをキャンセルすべき際に発行されるカスタムイベント名。 */
|
|
40
46
|
export declare const TAP_SCROLL_CANCEL_EVENT = "virtualscroll:tap-scroll-cancel";
|
|
41
47
|
/**
|
|
@@ -83,6 +89,14 @@ export type ScrollBarProps = {
|
|
|
83
89
|
* 不変。VirtualGrid が兆列到達性のために有効化する、v3.2.0)。縦バーには影響しない。
|
|
84
90
|
*/
|
|
85
91
|
enableHorizontalTapCircle?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Skip the inline main-axis size on the bar root and let the flex host's stretch own it.
|
|
94
|
+
* バールートのインライン主軸寸を書かず、flex ホストの stretch に寸法を委ねる指定。
|
|
95
|
+
* 自己計測 ScrollPane 専用のシーム (in-flow 兄弟バーの固定高がホストの min-content 床になる
|
|
96
|
+
* 一方向ラチェットの遮断)。縦バー限定 — 横バーの主軸は flex 主軸で stretch が寸法を与えられ
|
|
97
|
+
* ないため、horizontal では無視して書込みを維持する。
|
|
98
|
+
*/
|
|
99
|
+
stretchMainSize?: boolean;
|
|
86
100
|
/** The width of the scrollbar. / スクロールバーの幅。 */
|
|
87
101
|
scrollBarWidth?: number;
|
|
88
102
|
/** Additional class names for the component. / コンポーネントの追加のクラス名。 */
|
|
@@ -114,6 +128,14 @@ export declare const TAP_SCROLL_SPEED_DEFAULTS: {
|
|
|
114
128
|
/** 最小速度倍率 (ビューポート比)。 */
|
|
115
129
|
readonly minSpeedMultiplier: 0.2;
|
|
116
130
|
};
|
|
131
|
+
export declare const TAP_SCROLL_MAX_FRAME_DELTA_SECONDS: number;
|
|
132
|
+
export declare const DEFAULT_TAP_SCROLL_CIRCLE_OPTIONS: ResolvedTapScrollCircleOptions;
|
|
133
|
+
/**
|
|
134
|
+
* Resolves user supplied tap scroll circle options with internal defaults.
|
|
135
|
+
*
|
|
136
|
+
* ユーザー指定のタップスクロールサークル設定を内部デフォルトで補完。
|
|
137
|
+
*/
|
|
138
|
+
export declare const resolveTapScrollCircleOptions: (options: ScrollBarTapCircleOptions | undefined, itemCount?: number) => ResolvedTapScrollCircleOptions;
|
|
117
139
|
/**
|
|
118
140
|
* Input for `computeTapScrollSpeed`.
|
|
119
141
|
* `computeTapScrollSpeed` の入力。
|
|
@@ -228,4 +250,5 @@ export declare const computeAutoTapScrollMaxSpeedMultiplier: (itemCount?: number
|
|
|
228
250
|
*
|
|
229
251
|
* カスタムスクロールバーコンポーネント。
|
|
230
252
|
*/
|
|
231
|
-
export declare const ScrollBar: ({ contentSize, viewportSize, scrollPosition, onScroll, enableThumbDrag, enableTrackClick, enableArrowButtons, horizontal, enableHorizontalTapCircle, scrollBarWidth, className, ariaControls, tapScrollCircleOptions, itemCount, renderThumbOverlay, visibleStartIndex, visibleEndIndex, }: ScrollBarProps) => import("react").JSX.Element;
|
|
253
|
+
export declare const ScrollBar: ({ contentSize, viewportSize, scrollPosition, onScroll, enableThumbDrag, enableTrackClick, enableArrowButtons, horizontal, enableHorizontalTapCircle, stretchMainSize, scrollBarWidth, className, ariaControls, tapScrollCircleOptions, itemCount, renderThumbOverlay, visibleStartIndex, visibleEndIndex, }: ScrollBarProps) => import("react").JSX.Element;
|
|
254
|
+
export {};
|
package/dist/ScrollBar.d.ts
CHANGED
|
@@ -36,6 +36,12 @@ export type ScrollBarTapCircleOptions = {
|
|
|
36
36
|
easedOffset?: number;
|
|
37
37
|
};
|
|
38
38
|
};
|
|
39
|
+
type ResolvedTapScrollCircleOptions = Required<Omit<ScrollBarTapCircleOptions, "className" | "maxVisualDistance" | "renderVisual" | "maxSpeedCurve">> & {
|
|
40
|
+
className?: string;
|
|
41
|
+
maxVisualDistance: number;
|
|
42
|
+
renderVisual?: ScrollBarTapCircleOptions["renderVisual"];
|
|
43
|
+
maxSpeedCurve?: ScrollBarTapCircleOptions["maxSpeedCurve"];
|
|
44
|
+
};
|
|
39
45
|
/** Custom event name emitted when external interactions should cancel tap scrolling. / 外部操作によってタップスクロールをキャンセルすべき際に発行されるカスタムイベント名。 */
|
|
40
46
|
export declare const TAP_SCROLL_CANCEL_EVENT = "virtualscroll:tap-scroll-cancel";
|
|
41
47
|
/**
|
|
@@ -83,6 +89,14 @@ export type ScrollBarProps = {
|
|
|
83
89
|
* 不変。VirtualGrid が兆列到達性のために有効化する、v3.2.0)。縦バーには影響しない。
|
|
84
90
|
*/
|
|
85
91
|
enableHorizontalTapCircle?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Skip the inline main-axis size on the bar root and let the flex host's stretch own it.
|
|
94
|
+
* バールートのインライン主軸寸を書かず、flex ホストの stretch に寸法を委ねる指定。
|
|
95
|
+
* 自己計測 ScrollPane 専用のシーム (in-flow 兄弟バーの固定高がホストの min-content 床になる
|
|
96
|
+
* 一方向ラチェットの遮断)。縦バー限定 — 横バーの主軸は flex 主軸で stretch が寸法を与えられ
|
|
97
|
+
* ないため、horizontal では無視して書込みを維持する。
|
|
98
|
+
*/
|
|
99
|
+
stretchMainSize?: boolean;
|
|
86
100
|
/** The width of the scrollbar. / スクロールバーの幅。 */
|
|
87
101
|
scrollBarWidth?: number;
|
|
88
102
|
/** Additional class names for the component. / コンポーネントの追加のクラス名。 */
|
|
@@ -114,6 +128,14 @@ export declare const TAP_SCROLL_SPEED_DEFAULTS: {
|
|
|
114
128
|
/** 最小速度倍率 (ビューポート比)。 */
|
|
115
129
|
readonly minSpeedMultiplier: 0.2;
|
|
116
130
|
};
|
|
131
|
+
export declare const TAP_SCROLL_MAX_FRAME_DELTA_SECONDS: number;
|
|
132
|
+
export declare const DEFAULT_TAP_SCROLL_CIRCLE_OPTIONS: ResolvedTapScrollCircleOptions;
|
|
133
|
+
/**
|
|
134
|
+
* Resolves user supplied tap scroll circle options with internal defaults.
|
|
135
|
+
*
|
|
136
|
+
* ユーザー指定のタップスクロールサークル設定を内部デフォルトで補完。
|
|
137
|
+
*/
|
|
138
|
+
export declare const resolveTapScrollCircleOptions: (options: ScrollBarTapCircleOptions | undefined, itemCount?: number) => ResolvedTapScrollCircleOptions;
|
|
117
139
|
/**
|
|
118
140
|
* Input for `computeTapScrollSpeed`.
|
|
119
141
|
* `computeTapScrollSpeed` の入力。
|
|
@@ -228,5 +250,6 @@ export declare const computeAutoTapScrollMaxSpeedMultiplier: (itemCount?: number
|
|
|
228
250
|
*
|
|
229
251
|
* カスタムスクロールバーコンポーネント。
|
|
230
252
|
*/
|
|
231
|
-
export declare const ScrollBar: ({ contentSize, viewportSize, scrollPosition, onScroll, enableThumbDrag, enableTrackClick, enableArrowButtons, horizontal, enableHorizontalTapCircle, scrollBarWidth, className, ariaControls, tapScrollCircleOptions, itemCount, renderThumbOverlay, visibleStartIndex, visibleEndIndex, }: ScrollBarProps) => import("react").JSX.Element;
|
|
253
|
+
export declare const ScrollBar: ({ contentSize, viewportSize, scrollPosition, onScroll, enableThumbDrag, enableTrackClick, enableArrowButtons, horizontal, enableHorizontalTapCircle, stretchMainSize, scrollBarWidth, className, ariaControls, tapScrollCircleOptions, itemCount, renderThumbOverlay, visibleStartIndex, visibleEndIndex, }: ScrollBarProps) => import("react").JSX.Element;
|
|
254
|
+
export {};
|
|
232
255
|
//# sourceMappingURL=ScrollBar.d.ts.map
|
package/dist/ScrollBar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollBar.d.ts","sourceRoot":"","sources":["../src/ScrollBar.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAIrD,OAAO,EAA8E,KAAK,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AAiEnJ;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,SAAS,CAAA;IAC/D,4FAA4F;IAC5F,aAAa,CAAC,EAAE;QACZ,qEAAqE;QACrE,oBAAoB,EAAE,MAAM,CAAA;QAC5B,gEAAgE;QAChE,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,4EAA4E;QAC5E,WAAW,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACJ,CAAA;
|
|
1
|
+
{"version":3,"file":"ScrollBar.d.ts","sourceRoot":"","sources":["../src/ScrollBar.tsx"],"names":[],"mappings":"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"}
|
package/dist/ScrollPane.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollPane.d.ts","sourceRoot":"","sources":["../src/ScrollPane.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ScrollPane.d.ts","sourceRoot":"","sources":["../src/ScrollPane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,11 +15,18 @@ export type TapScrollCircleDragState = {
|
|
|
15
15
|
};
|
|
16
16
|
export type TapScrollCircleProps = {
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* Projection subspace the direction/distance/dead-zone derivation reads (default "y" —
|
|
19
|
+
* vertical bars). The configured axis selects `A ⊆ R²` (`span(e_x)`, `span(e_y)`, or `R²`);
|
|
20
|
+
* `distance = ‖P_A(offset)‖₂` and `rawDirection` is the sign of the projection where a sign
|
|
21
|
+
* exists — `"xy"` has none, so `direction` degrades to the radial engagement flag `{0, 1}`
|
|
22
|
+
* and 2-D orientation lives in the always-carried `offsetX`/`offsetY` (v3.6.0). Horizontal
|
|
23
|
+
* bars pass "x" (v3.2.0).
|
|
24
|
+
* 方向・距離・デッドゾーン導出が読む射影部分空間 (既定 "y" — 縦バー)。設定軸が `A ⊆ R²` を
|
|
25
|
+
* 選び、`distance = ‖P_A(offset)‖₂`、`rawDirection` は射影の符号 (符号が存在する場合)。
|
|
26
|
+
* `"xy"` に符号は無く `direction` は径方向係合 `{0, 1}` へ退化し、向きは無条件搬送の
|
|
27
|
+
* `offsetX`/`offsetY` が運ぶ (v3.6.0)。横バーは "x" を渡す (v3.2.0)。
|
|
21
28
|
*/
|
|
22
|
-
axis?: "x" | "y";
|
|
29
|
+
axis?: "x" | "y" | "xy";
|
|
23
30
|
/** Called whenever the drag state updates. / ドラッグ状態が更新された際に呼び出されるコールバック。 */
|
|
24
31
|
onDragChange: (state: TapScrollCircleDragState) => void;
|
|
25
32
|
/** Additional class names for styling. / 追加のスタイル用クラス名。 */
|
|
@@ -31,7 +38,7 @@ export type TapScrollCircleProps = {
|
|
|
31
38
|
/** Additional inline styles. / 追加のインラインスタイル。 */
|
|
32
39
|
style?: CSSProperties;
|
|
33
40
|
/** Base opacity applied to the circle. / サークル全体に適用する基準透明度。 */
|
|
34
|
-
opacity
|
|
41
|
+
opacity?: number;
|
|
35
42
|
/** Custom rendering logic for the visual contents. / ビジュアル内容を描画するカスタムロジック。 */
|
|
36
43
|
renderVisual?: (props: TapScrollCircleRenderProps) => ReactNode;
|
|
37
44
|
};
|
|
@@ -15,11 +15,18 @@ export type TapScrollCircleDragState = {
|
|
|
15
15
|
};
|
|
16
16
|
export type TapScrollCircleProps = {
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* Projection subspace the direction/distance/dead-zone derivation reads (default "y" —
|
|
19
|
+
* vertical bars). The configured axis selects `A ⊆ R²` (`span(e_x)`, `span(e_y)`, or `R²`);
|
|
20
|
+
* `distance = ‖P_A(offset)‖₂` and `rawDirection` is the sign of the projection where a sign
|
|
21
|
+
* exists — `"xy"` has none, so `direction` degrades to the radial engagement flag `{0, 1}`
|
|
22
|
+
* and 2-D orientation lives in the always-carried `offsetX`/`offsetY` (v3.6.0). Horizontal
|
|
23
|
+
* bars pass "x" (v3.2.0).
|
|
24
|
+
* 方向・距離・デッドゾーン導出が読む射影部分空間 (既定 "y" — 縦バー)。設定軸が `A ⊆ R²` を
|
|
25
|
+
* 選び、`distance = ‖P_A(offset)‖₂`、`rawDirection` は射影の符号 (符号が存在する場合)。
|
|
26
|
+
* `"xy"` に符号は無く `direction` は径方向係合 `{0, 1}` へ退化し、向きは無条件搬送の
|
|
27
|
+
* `offsetX`/`offsetY` が運ぶ (v3.6.0)。横バーは "x" を渡す (v3.2.0)。
|
|
21
28
|
*/
|
|
22
|
-
axis?: "x" | "y";
|
|
29
|
+
axis?: "x" | "y" | "xy";
|
|
23
30
|
/** Called whenever the drag state updates. / ドラッグ状態が更新された際に呼び出されるコールバック。 */
|
|
24
31
|
onDragChange: (state: TapScrollCircleDragState) => void;
|
|
25
32
|
/** Additional class names for styling. / 追加のスタイル用クラス名。 */
|
|
@@ -31,7 +38,7 @@ export type TapScrollCircleProps = {
|
|
|
31
38
|
/** Additional inline styles. / 追加のインラインスタイル。 */
|
|
32
39
|
style?: CSSProperties;
|
|
33
40
|
/** Base opacity applied to the circle. / サークル全体に適用する基準透明度。 */
|
|
34
|
-
opacity
|
|
41
|
+
opacity?: number;
|
|
35
42
|
/** Custom rendering logic for the visual contents. / ビジュアル内容を描画するカスタムロジック。 */
|
|
36
43
|
renderVisual?: (props: TapScrollCircleRenderProps) => ReactNode;
|
|
37
44
|
};
|
|
@@ -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
|
|
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;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAA;IACvB,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,mHA2R3B,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;
|