# Wterm

**コンポーネント機能**：xterm.js を基に実装されたWeb端末コンポーネント。ブラウザ内にWebSocketを通じてバックエンドとやり取り可能な端末インターフェースを埋め込むことができます。端末サイズの自動調整、ハートビートによる接続維持、入出力データの送受信などの機能をサポートしています。  
**タイプ**：通常コンポーネント  
**親コンポーネント**：`bricks.JsWidget`

## 初期化パラメータ

- `ws_url` (String, 必須)  
  WebSocket接続用のURL。バックエンドの端末サービスとの通信を確立するために使用します。

- `ping_timeout` (Number, 省略可能, デフォルト値: 19)  
  ハートビートの間隔（秒単位）。定期的にサーバーへハートビートメッセージを送信し、接続を維持するために使用します。

> その他の `JsWidget` から継承可能な一般的なオプション（レイアウト、スタイルなど）も適用されます。

## 主要なイベント

- `domon`  
  コンポーネントがDOMにマウントされたときに発火。自動的に `send_term_size()` を呼び出し、現在の端末サイズをサーバーに送信します。

- `domoff`  
  コンポーネントがDOMから削除されたときに発火。WebSocket接続の切断や端末インスタンスの破棄など、リソースのクリーンアップ処理を実行します。

- `element_resize`  
  コンポーネントを含む要素のサイズが変更されたときに発火。端末表示領域の調整およびサイズの再適応（`FitAddon` 経由）を行います。

- `terminal_input`（暗黙のイベント）  
  ユーザーが端末に入力をした際、`term.onData` によってトリガーされ、入力内容をWebSocketを通じてサーバーに送信します。

- `terminal_resize`  
  端末の行数・列数が変更されたときに発火（`term.onResize` で監視）。自動的に `send_term_size()` を呼び出して、最新のサイズ情報をサーバーに同期します。

- `websocket_message`  
  WebSocketメッセージを受信した際、データの種類に応じて処理を行います：
  - `data`: 受信内容を端末画面に書き込みます。
  - `heartbeat`: ハートビート応答。接続が正常であることを示します。
  - その他: デバッグ用にログを出力します。

- `websocket_open / close / error`  
  WebSocketのライフサイクルイベント。それぞれ接続確立時、切断時、エラー発生時に処理を行い、リソースが正しく解放されるよう保証します。