// Do not edit. This file is generated.
// MoonBit type: FilePickerOptions
// Specifications: file-system-access.idl
///|
/// [FilePickerOptions](https://developer.mozilla.org/en-US/docs/Web/API/FilePickerOptions)
#external
pub type FilePickerOptions
///|
pub impl TJsValue for FilePickerOptions with to_js(self : FilePickerOptions) -> JsValue = "%identity"
///|
pub impl FromJsAny for FilePickerOptions with from_js_any(value : JsAny) -> FilePickerOptions = "%identity"
///|
pub fn FilePickerOptions::new(
types? : Array[FilePickerAcceptType],
exclude_accept_all_option? : Bool,
id? : String,
start_in? : &TStartInDirectory,
) -> FilePickerOptions {
file_picker_options_ffi(
opt_to_js(types),
opt_to_js(exclude_accept_all_option),
opt_to_js(id),
match start_in {
Some(v) => v.to_js()
None => JsValue::undefined()
},
)
}
///|
pub fn FilePickerOptions::empty() -> FilePickerOptions {
file_picker_options_empty_ffi()
}
///|
pub fn FilePickerOptions::types(
self : FilePickerOptions,
) -> Array[FilePickerAcceptType]? {
file_picker_options_get_types_ffi(TJsValue::to_js(self)).to_option()
}
///|
pub fn FilePickerOptions::exclude_accept_all_option(
self : FilePickerOptions,
) -> Bool? {
file_picker_options_get_exclude_accept_all_option_ffi(TJsValue::to_js(self)).to_option_prim()
}
///|
pub fn FilePickerOptions::id(self : FilePickerOptions) -> String? {
file_picker_options_get_id_ffi(TJsValue::to_js(self)).to_option_prim()
}
///|
pub fn FilePickerOptions::start_in(
self : FilePickerOptions,
) -> StartInDirectory? {
file_picker_options_get_start_in_ffi(TJsValue::to_js(self)).to_option()
}
///|
#cfg(target="js")
extern "js" fn file_picker_options_ffi(
types : JsValue,
exclude_accept_all_option : JsValue,
id : JsValue,
start_in : JsValue,
) -> FilePickerOptions =
#|(types, excludeAcceptAllOption, id, startIn) => {
#| const obj = {};
#| if (types !== undefined) obj.types = types;
#| if (excludeAcceptAllOption !== undefined) obj.excludeAcceptAllOption = excludeAcceptAllOption;
#| if (id !== undefined) obj.id = id;
#| if (startIn !== undefined) obj.startIn = startIn;
#| return obj;
#|}
///|
#cfg(target="js")
extern "js" fn file_picker_options_empty_ffi() -> FilePickerOptions = "() => {}"
///|
#cfg(target="js")
extern "js" fn file_picker_options_get_types_ffi(obj : JsValue) -> JsValue = "(obj) => obj.types"
///|
#cfg(target="js")
extern "js" fn file_picker_options_get_exclude_accept_all_option_ffi(
obj : JsValue,
) -> JsValue = "(obj) => obj.excludeAcceptAllOption"
///|
#cfg(target="js")
extern "js" fn file_picker_options_get_id_ffi(obj : JsValue) -> JsValue = "(obj) => obj.id"
///|
#cfg(target="js")
extern "js" fn file_picker_options_get_start_in_ffi(obj : JsValue) -> JsValue = "(obj) => obj.startIn"
///|
#cfg(target="wasm-gc")
fn file_picker_options_ffi(
types : JsValue,
exclude_accept_all_option : JsValue,
id : JsValue,
start_in : JsValue,
) -> FilePickerOptions = "webapi_FilePickerOptions" "new"
///|
#cfg(target="wasm-gc")
fn file_picker_options_empty_ffi() -> FilePickerOptions = "webapi_Dictionary" "empty"
///|
#cfg(target="wasm-gc")
fn file_picker_options_get_types_ffi(obj : JsValue) -> JsValue = "webapi_FilePickerOptions" "get_types"
///|
#cfg(target="wasm-gc")
fn file_picker_options_get_exclude_accept_all_option_ffi(
obj : JsValue,
) -> JsValue = "webapi_FilePickerOptions" "get_excludeAcceptAllOption"
///|
#cfg(target="wasm-gc")
fn file_picker_options_get_id_ffi(obj : JsValue) -> JsValue = "webapi_FilePickerOptions" "get_id"
///|
#cfg(target="wasm-gc")
fn file_picker_options_get_start_in_ffi(obj : JsValue) -> JsValue = "webapi_FilePickerOptions" "get_startIn"