xnew
xnew はライブラリの中核となる関数で、コンポーネントの実体である unit を生成します。unit が破棄されると、内部のタイマー・リスナー・子要素はまとめて自動で解放されるため、後片付けのコードは不要です。
xnew.nest
xnew.nest は子要素を生成して unit.element をその要素に切り替えます。以降に生成される要素は新しい要素の内側に配置されるため、親要素を変数で持ち回る必要はありません。
xnew.extend
xnew.extend は別のコンポーネントの振る舞いを現在の unit にミックスインします。新しい要素は生成しません。ドラッグ・ロギング・キーボード操作などの機能をコンポーネントとして用意しておけば、他のコンポーネントに 1 行で組み込めます。
xnew.timeout
xnew.timeout は xnew 用に拡張された setTimeout です。所属する unit が破棄されると自動でキャンセルされ、ID を保持して clearTimeout を呼ぶ必要はありません。timeout と transition を連鎖させれば、コールバックをネストせずに多段シーケンスを記述できます。
xnew.interval
xnew.interval は自動クリーンアップに対応した setInterval です。所属する unit が finalize されると interval は自動停止します。ID を保持して clearInterval を呼ぶ必要はありません。
xnew.transition
xnew.transition は指定した時間にわたって値を 0 から 1 まで変化させ、フレームごとにコールバックを呼び出します。この値を不透明度・位置・スケール・色などに適用すれば、1 回の呼び出しで滑らかなアニメーションが得られます。
xnew.promise
xnew.promise は標準の Promise をコンポーネントに紐付け、.then() / .catch() のハンドラを現在のコンポーネントスコープで実行します。Promise の解決前にコンポーネントが破棄された場合、保留中のハンドラも破棄されるため、破棄済み DOM への書き込みなどの不具合が起きません。
xnew.scope
xnew.scope は現在のコンポーネントコンテキストを取り込み、呼び出し時にそのコンテキストを復元するラッパー関数を返します。素の setTimeout やネイティブの addEventListener の中では xnew のスコープが失われるため、その内部で xnew API を呼び出したいときに使用するエスケープハッチです。
xnew.context
xnew.context を使うと、子孫コンポーネントから祖先の共有データを取得できます。状態を保持するコンポーネントをルート付近に 1 度生成しておけば、中間層に props を渡し回さなくても、深くネストされた子孫から参照できます。
xnew.find
xnew.find は、指定したコンポーネントから生成された、現在アクティブな unit すべてを返します。配列を自前で管理せずに、敵への一斉通知・カウンターの一括同期・衝突判定の対象列挙などを行えます。
xnew.audio
シンセサイザー