モーダル&ウィンドウ
モーダル(Modal)とウィンドウ(Window)は、NovelAI 内にカスタムダイアログやフローティングウィンドウを作るための仕組みです。情報表示、入力受付、ユーザースクリプト機能の UI 提供などに利用できます。
- モーダル:画面中央のダイアログで、閉じるまで他 UI の操作をブロックします
- ウィンドウ:移動可能なフローティングパネルで、他 UI を操作しながら使えます
それぞれ api.v1.ui.modal.open と api.v1.ui.window.open で作成します。
位置と操作モデル以外は、構造・機能が似ています。どちらも UI パーツ(UI パーツ)で任意の UI を組み立てられます。
モーダルを作る
api.v1.ui.modal.open に、タイトル、内容、サイズなどを指定します。
let modal = api.v1.ui.modal.open({
title: 'Example Modal',
content: [
{
type: 'text',
text: 'This is an example modal created by a script.'
},
],
size: 'small'
});

モーダルは、作成後に操作できるオブジェクトを返します。close で閉じたり、update で更新したり、closed Promise を await してクローズ後処理を行ったりできます。
ウィンドウを作る
api.v1.ui.window.open に、タイトル、内容、サイズなどを指定します。
let wndw = api.v1.ui.window.open({
title: 'Example Window',
content: [
{
type: 'text',
text: 'This is an example window created by a script.'
},
],
defaultHeight: 300,
defaultWidth: 400
});

ウィンドウも、作成後に操作できるオブジェクトを返します。close、update、closed などの扱いはモーダルと同様です。
「このスクリプトを無効化しますか?」
スクリプトが作成したモーダルとウィンドウには、“Disable This Script?” ボタンが表示されます。モーダルでは右下、ウィンドウではタイトルバーに表示されます。クリックすると、そのモーダル/ウィンドウを作成したスクリプトが即座に無効化され、そのスクリプトが作った他のモーダル/ウィンドウも含めて閉じられます。
参考
- UI パーツ - モーダル/ウィンドウの内容を作る
- UI 拡張 - UI を追加する他の方法
- API リファレンス - API 全体(英語)