v1.2.0
機能リリースです。数式関数を 32 個から 109 個へ大幅拡充、セルエディターに Excel 風の色分けされた数式参照編集(クリックでのセル挿入)を追加、選択範囲にドラッグオートフィル用のハンドルを実装、条件付き書式ルールでサイドごとの罫線オーバーライドが可能になりました。React / Vue ラッパーはワークシートイベントをコンポーネント props として公開します。公開 API に破壊的変更はありません。
✨ ハイライト
- ▸ オートフィル(ドラッグでのフィルハンドル)。 選択範囲の右下に表示される小さな四角をドラッグして、値を下/上/左/右に拡張できます。単一セルのドラッグはタイル状にコピー、2 つ以上の数値セルは等差数列として外挿(
1, 2→3, 4, 5)、日付書式の単一セルは 1 日ずつ加算、数式は$固定参照を保ちつつ Excel と同じように相対参照をシフトします。スタイル・数値書式・セルタイプも伝播し、undo で元に戻せます。 - ▸ Excel 風の数式参照編集。 数式(
=始まりのセル)を編集中に他のセルをクリックすると、そのセル番地がキャレット位置に挿入され、ドラッグで範囲に拡張できます。式中のユニークな参照ごとに共通パレットから色が割り当てられ、グリッド上の参照範囲も同色の点線矩形で囲まれます。結合セルを含む参照は結合領域全体を囲うように展開されます。 - ▸ Enter キーで編集開始。 Mac に優しいデフォルト動作 — Enter で編集モードに入る(キャレットは末尾)。Numbers や Excel for Mac と同じ挙動です。F2 も引き続き使えます。
- ▸ 組み込み数式関数を 109 個に拡充(従来は 32 個)。追加:
VLOOKUP/HLOOKUP/INDEX/MATCH/XLOOKUP/XMATCH/ADDRESS、SUMIFS/COUNTIFS/AVERAGEIFS/MAXIFS/MINIFS/SWITCH、日付系TODAY/NOW/DATE/YEAR/MONTH/DAY/HOUR/MINUTE/SECOND/WEEKDAY/EDATE/EOMONTH/DAYS/DATEDIF、数学SUMPRODUCT/CEILING/FLOOR/MROUND/MEDIAN/LARGE/SMALL/RANK/EXP/LN/LOG/LOG10/SIGN/PI/RAND/RANDBETWEEN、三角関数SIN/COS/TAN/ASIN/ACOS/ATAN/ATAN2、文字列SEARCH/EXACT/PROPER/CHAR/CODE、情報ROW/COLUMN/ROWS/COLUMNS。 - ▸ 条件付き書式でのサイドごとの罫線オーバーライド。 CF ルールに
borderペイロードを持たせ、一致セルに対して右・上・下・左の罫線を個別に上書きできます。xlsx の<dxf><border>ラウンドトリップにも対応。 - ▸ React / Vue ラッパーがワークシートイベントを props として公開。 選択・セル値変更・一括セル変更・スクロール・ビューポートサイズ・構造変更などのイベントを、
worksheet.on*()を手動で購読することなく props として渡せます。 - ▸
reogrid-jsonI/O をパッケージのメインエントリから再エクスポート。 ReoGrid Studio などワークシートを永続化するホストが、writeReoGridJson/readReoGridJson/parseReoGridJsonおよびReoGridJsonDocument/JsonWorksheet/JsonCell型に対して、深いパスを掘ることなく@reogrid/lite/@reogrid/proから直接アクセスできます。
+ 追加
- ▸
ReogridOptions.autoFill(デフォルトtrue)とWorksheet.setAutoFillEnabled()でフィルハンドルを切り替え可能に。 - ▸ プログラムからオートフィルを利用するための
AutoFillActionとcomputeAutoFillValues()を公開。 - ▸
Worksheet.setFormulaRefHighlights()/CanvasWorksheet.setFormulaRefHighlights()、およびエディターとグリッドレンダラーで共有するTHEME.formulaRefColorsパレット。 - ▸ 条件付き書式の
borderペイロード(right/top/bottom/leftごとにスタイルと色を指定)。エンジン評価・レンダラー・xlsx ライターまで一貫対応。 - ▸ React コンポーネントのイベント props:
onSelectionChange、onCellValueChange、onBulkCellValueChange、onScroll、onViewportSizeChange、onStructureChange(onReadyに加えて)。 - ▸ Vue コンポーネントは同じイベントセットを型付きペイロードで emit します。
- ▸
@reogrid/lite/@reogrid/proのメインエントリからwriteReoGridJson、readReoGridJson、parseReoGridJson、およびReoGridJsonDocument/JsonWorksheet/JsonCellの各ドキュメント型とReoGridJsonReadOptions/ReoGridJsonWriteOptionsのオプション型を再エクスポート。 - ▸ 10 カテゴリ・109 個すべての組み込み関数を網羅した数式関数リファレンスドキュメント。
~ 変更
- ▸ エディターの数式参照ハイライトは、参照セル/範囲が結合領域と重なる場合に結合領域全体を囲うように展開されます(Google Sheets ではなく Excel と同じ挙動)。
🐛 修正
- ▸ オートフィルのホバーカーソルをスクロールコンテナにも適用。フィルハンドルのヒット領域全体で十字カーソルが確実に表示されるようになりました。
- ▸ 描画キャッシュキーに埋め込まれていた NUL バイトを
|に置き換え。まれに発生する計測キャッシュの衝突や文字列処理上の挙動を回避します。
⚡ パフォーマンス
- ▸ フレーム単位の Canvas ステートキャッシュにより、Book1.xlsx スクロール時の冗長な API 呼び出しを削減:
ctx.font=129 → 34(-74%)、ctx.fillStyle=179 → 46(-74%)、ctx.measureText()126 → 35(-72%)、save()/restore()122 → 85(-30%)。実ブラウザではセルあたりのコストはctx.font解析とmeasureTextのシェイピングが支配的なため、大きなシートでのスクロールが目に見えて滑らかになります。 - ▸ 折り返し/複数行セル向けに
layoutPlainTextLines()の結果をフレーム単位でキャッシュ。wrap-textを多用するテキスト中心のシートでは、スクロール時のフレームあたり処理量が大幅に減少します。単一行・折り返しなしのテキストはキャッシュをバイパスする高速経路を通ります。