Skip to content

formulon-cell

@libraz/formulon-cell@libraz/formulon WASM 計算エンジンの上に乗るベータ版 spreadsheet UI パッケージです。本サイトでは主に デモホスト として使っています。Formulon の主役はヘッドレスな計算エンジンで、formulon-cell はブラウザ版をワークブックとして検証するための surface です。

エンジンに desktop-spreadsheet 風の chrome ─ canvas グリッド、数式バー、ステータスバー、シートタブ、選択、キーボード編集、コンテキストメニュー、ランタイム i18n、テーマトークン、各種ダイアログ ─ を被せたいときに使います。計算・読み込み・再計算・ヘッドレス回帰検査だけが目的なら、まず Formulon 本体の実行環境ドキュメントを読んでください。

用語: chrome(UI 用語)

UI の作業領域を囲む装飾部分 ─ ツールバー、メニュー、ステータスバー、スクロールバー、ダイアログなど。「Chrome ブラウザ」とは無関係です。

用語: canvas-rendered grid

HTML <canvas> 上にグリッドを描画する方式で、セルを DOM ノードとして並べないため数万セル規模でも軽快に動きます。代わりに DOM ベースの a11y や CSS スタイルは canvas 周囲の chrome にしか効きません。

このサイトで見せていること

  • @libraz/formulon を裏に持つ実際のブラウザワークブック
  • 関数入力、数式再計算、セル結果の表示
  • ホストアプリが再利用できる store / command helper ベースの spreadsheet surface
  • en / ja 辞書によるランタイム i18n
  • CSS 変数による paper(明)/ ink(暗)テーマ
  • Formulon を体験・検証するために設計した、デモ専用の UI/UX

パッケージ

パッケージ用途
@libraz/formulon-cellVanilla TS / DOM のコア。framework 非依存
@libraz/formulon-cell-reactReact 18+ コンポーネントと hooks
@libraz/formulon-cell-vueVue 3 コンポーネントと composables
sh
npm install @libraz/formulon-cell zustand
# adapter(任意)
npm install @libraz/formulon-cell-react react react-dom
npm install @libraz/formulon-cell-vue vue

なぜ zustand が peer dependency なのか

ビルトイン chrome が購読している store を、ホストアプリ側からも同じ実体で読めるようにするためです。ステータスバー、サイドパネル、解析オブザーバなどをパッケージを fork せずに作れます。

stub engine フォールバック

WASM エンジンは pthread 有効で配布されており、SharedArrayBuffer を必要とします。cross-origin isolation(Cross-Origin-Opener-Policy: same-origin + Cross-Origin-Embedder-Policy: require-corp)が無い環境では、formulon-cell は in-memory の stub engine にフォールバックします。UI は描画と選択・編集ジェスチャに応答し続けますが、数式評価・再計算・.xlsx round-trip は no-op に縮退します。

実行時の判定:

ts
import { WorkbookHandle, isUsingStub } from '@libraz/formulon-cell'

const wb = await WorkbookHandle.createDefault()
if (isUsingStub()) {
  console.warn('formulon-cell: stub engine 動作中 ─ recalc 無効')
}

ホスト側のヘッダ設定は バンドラ設定、ランタイム契約は インストール を参照してください。

フルデモ

トップページにはコンパクトなライブ関数ピッカーを置いています。より大規模な UI/UX デモは同梱 formulon-cell playground を overlay 子ウィンドウで開き、主役の製品 surface と誤認されないようにしています。

フル UI デモを開く

次に読むもの