@rescript-tauri/plugin-dialog¶
Tauri 2.x ネイティブダイアログプラグイン の ReScript バインディングです。open / save / message / ask / confirm を提供します。
注釈
本パッケージは main で機能完備済みです。初回 npm 公開は他のパッケージと合わせて予定されています。それまでは、ソースリポジトリ経由かワークスペースリンクで利用してください。
インストール¶
pnpm add @rescript-tauri/plugin-dialog @tauri-apps/plugin-dialog
@rescript-tauri/plugin-dialog は @rescript-tauri/core と @tauri-apps/plugin-dialog の両方を peerDependencies として宣言しています。
{
"dependencies": [
"@rescript-tauri/core",
"@rescript-tauri/plugin-dialog"
]
}
Rust 側:
# src-tauri/Cargo.toml
[dependencies]
tauri-plugin-dialog = "2"
// src-tauri/src/main.rs
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_dialog::init())
.run(tauri::generate_context!())
.expect("error while running app");
}
Capabilities¶
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"windows": ["main"],
"permissions": [
"core:default",
"dialog:default"
]
}
dialog:default ですべてのダイアログ API をカバーできます。
最小例¶
open RescriptTauriPluginDialog
let pickedPath = await PluginDialog.openFile(~options={
title: "Pick a file",
filters: [{name: "Text", extensions: ["txt", "md"]}],
})
switch pickedPath->Nullable.toOption {
| Some(path) => Console.log("picked: " ++ path)
| None => Console.log("cancelled")
}
openFile は promise<Nullable.t<string>> を返します。Nullable.null は キャンセルを示すシグナルです。
公開 API¶
8 つの公開関数で上流の API 全体をカバーします:
関数 |
戻り値 |
備考 |
|---|---|---|
|
|
単一ファイルのピッカー |
|
|
複数ファイルのピッカー |
|
|
単一ディレクトリ |
|
|
複数ディレクトリ |
|
|
保存先パスの選択 |
|
|
情報 / 警告 / エラーのポップアップ |
|
|
はい / いいえ の問い合わせ |
|
|
OK / キャンセル の問い合わせ |
なぜ open* 関数が 4 つあるのか¶
上流の TypeScript の open(options) は multiple / directory フラグに よって戻り値の型が変化します:
open({ multiple: true })
// → string[] | null
open({ directory: false })
// → string | null
ReScript のバインディングでは、phantom type やランタイム分岐なしにこの条件型戻り値を 表現できません。そこで API を 4 つの uncurried 関数に分割し、戻り値の型を バインディングレベルで固定しています。対応するオプションフラグ(multiple、directory)は openOptions レコードに 意図的に公開していません。必要な戻り値の形に合致する関数を 選んでください。
モバイル限定オプション¶
openOptions.pickerMode(#document / #media / #image / #video)と openOptions.fileAccessMode(#copy / #scoped)は、iOS / Android ビルドで後から利用できるようバインディングに残してあります。デスクトップでは下層プラグインが 無視するため害はありません。
互換性¶
コンポーネント |
サポート範囲 |
|---|---|
上流の |
|
Rust 側 |
|
|
|
ReScript |
|
|
|
OS |
Linux / macOS / Windows |
関連情報¶
上流ドキュメント: Tauri 2.x dialog プラグイン