diff --git a/plugins/dialog/guest-js/index.ts b/plugins/dialog/guest-js/index.ts index e53cfcf7..1f1b6135 100644 --- a/plugins/dialog/guest-js/index.ts +++ b/plugins/dialog/guest-js/index.ts @@ -98,18 +98,14 @@ interface ConfirmDialogOptions { cancelLabel?: string; } -async function open( - options?: OpenDialogOptions & { multiple?: false; directory?: false }, -): Promise; -async function open( - options?: OpenDialogOptions & { multiple?: true; directory?: false }, -): Promise; -async function open( - options?: OpenDialogOptions & { multiple?: false; directory?: true }, -): Promise; -async function open( - options?: OpenDialogOptions & { multiple?: true; directory?: true }, -): Promise; +type OpenDialogReturn = T["directory"] extends true + ? T["multiple"] extends true + ? string[] | null + : string | null + : T["multiple"] extends true + ? FileResponse[] | null + : FileResponse | null; + /** * Open a file/directory selection dialog. * @@ -162,9 +158,9 @@ async function open( * * @since 2.0.0 */ -async function open( - options: OpenDialogOptions = {}, -): Promise { +async function open( + options: T = {} as T, +): Promise> { if (typeof options === "object") { Object.freeze(options); } @@ -298,6 +294,7 @@ export type { DialogFilter, FileResponse, OpenDialogOptions, + OpenDialogReturn, SaveDialogOptions, MessageDialogOptions, ConfirmDialogOptions,