モーダル&ウィンドウ

モーダル(Modal)とウィンドウ(Window)は、NovelAI 内にカスタムダイアログやフローティングウィンドウを作るための仕組みです。情報表示、入力受付、ユーザースクリプト機能の UI 提供などに利用できます。

  • モーダル:画面中央のダイアログで、閉じるまで他 UI の操作をブロックします
  • ウィンドウ:移動可能なフローティングパネルで、他 UI を操作しながら使えます

それぞれ api.v1.ui.modal.openapi.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'
});

Modal Example

モーダルは、作成後に操作できるオブジェクトを返します。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
});

Window Example

ウィンドウも、作成後に操作できるオブジェクトを返します。closeupdateclosed などの扱いはモーダルと同様です。

「このスクリプトを無効化しますか?」

スクリプトが作成したモーダルとウィンドウには、“Disable This Script?” ボタンが表示されます。モーダルでは右下、ウィンドウではタイトルバーに表示されます。クリックすると、そのモーダル/ウィンドウを作成したスクリプトが即座に無効化され、そのスクリプトが作った他のモーダル/ウィンドウも含めて閉じられます。

参考