// Generated from WebIDL - DO NOT EDIT
// Source: @webref/idl/permissions
///|
/// PermissionState enum
pub(all) enum PermissionState {
Granted
Denied
Prompt
} derive(Eq, Show)
///|
/// Convert to string value
pub fn PermissionState::to_string(self : PermissionState) -> String {
match self {
PermissionState::Granted => "granted"
PermissionState::Denied => "denied"
PermissionState::Prompt => "prompt"
}
}
///|
/// Parse from string value
pub fn PermissionState::from_string(s : String) -> PermissionState? {
match s {
"granted" => Some(PermissionState::Granted)
"denied" => Some(PermissionState::Denied)
"prompt" => Some(PermissionState::Prompt)
_ => None
}
}
///|
/// PermissionDescriptor dictionary
pub(all) struct PermissionDescriptor {
name : String
}
///|
/// Create a new PermissionDescriptor with default values
pub fn PermissionDescriptor::default() -> PermissionDescriptor {
PermissionDescriptor::{ name: "" }
}
///|
extern "js" fn PermissionDescriptor::to_js_ffi(
self : PermissionDescriptor,
) -> JsValue =
#| (self) => ({
#| name: self.name
#| })
///|
/// Convert to JsValue
pub fn PermissionDescriptor::to_js(self : PermissionDescriptor) -> JsValue {
PermissionDescriptor::to_js_ffi(self)
}
///|
extern "js" fn PermissionDescriptor::from_js_ffi(
value : JsValue,
) -> PermissionDescriptor =
#| (v) => ({
#| name: v.name
#| })
///|
/// Convert from JsValue
pub fn PermissionDescriptor::from_js(value : JsValue) -> PermissionDescriptor {
PermissionDescriptor::from_js_ffi(value)
}
///|
/// PermissionSetParameters dictionary
pub(all) struct PermissionSetParameters {
descriptor : JsValue
state : PermissionState
}
///|
/// Create a new PermissionSetParameters
pub fn PermissionSetParameters::new(
descriptor~ : JsValue,
state~ : PermissionState,
) -> PermissionSetParameters {
PermissionSetParameters::{ descriptor, state }
}
///|
extern "js" fn PermissionSetParameters::to_js_ffi(
self : PermissionSetParameters,
) -> JsValue =
#| (self) => ({
#| descriptor: self.descriptor,
#| state: ['granted', 'denied', 'prompt'][self.state]
#| })
///|
/// Convert to JsValue
pub fn PermissionSetParameters::to_js(
self : PermissionSetParameters,
) -> JsValue {
PermissionSetParameters::to_js_ffi(self)
}
///|
extern "js" fn PermissionSetParameters::from_js_ffi(
value : JsValue,
) -> PermissionSetParameters =
#| (v) => ({
#| descriptor: v.descriptor,
#| state: ['granted', 'denied', 'prompt'].indexOf(v.state)
#| })
///|
/// Convert from JsValue
pub fn PermissionSetParameters::from_js(
value : JsValue,
) -> PermissionSetParameters {
PermissionSetParameters::from_js_ffi(value)
}
///|
/// Permissions interface
pub type Permissions
///|
pub extern "js" fn Permissions::to_js_value(self : Permissions) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to Permissions (unchecked)
pub extern "js" fn Permissions::from_js_value(v : JsValue) -> Permissions =
#| (v) => v
///|
/// Safely cast JsValue to Permissions (checked with instanceof)
pub extern "js" fn Permissions::from_js_value_opt(v : JsValue) -> Permissions? =
#| (v) => (v instanceof Permissions) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to Permissions (checked with instanceof)
pub extern "js" fn JsValue::as_permissions(self : JsValue) -> Permissions? =
#| (self) => (self instanceof Permissions) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to Permissions (unchecked)
pub extern "js" fn JsValue::to_permissions(self : JsValue) -> Permissions =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum PermissionsQueryError {
TypeError(JsError)
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum PermissionsRevokeError {
TypeError(JsError)
OtherError(JsError)
} derive(Show)
///|
pub extern "js" fn Permissions::query(
self : Permissions,
permission_desc : JsValue,
) -> Promise[Result[PermissionStatus, PermissionsQueryError]] =
#| (self, permission_desc) => self.query(permission_desc).then(r => ({ $tag: 1, _0: r })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }))
///|
pub extern "js" fn Permissions::request(
self : Permissions,
permission_desc : JsValue,
) -> Promise[PermissionStatus] =
#| (self, permission_desc) => self.request(permission_desc)
///|
/// @alert deprecated "revoke is deprecated"
pub extern "js" fn Permissions::revoke(
self : Permissions,
permission_desc : JsValue,
) -> Promise[Result[PermissionStatus, PermissionsRevokeError]] =
#| (self, permission_desc) => self.revoke(permission_desc).then(r => ({ $tag: 1, _0: r })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
/// PermissionStatus interface
pub type PermissionStatus
///|
pub extern "js" fn PermissionStatus::to_js_value(
self : PermissionStatus,
) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to PermissionStatus (unchecked)
pub extern "js" fn PermissionStatus::from_js_value(
v : JsValue,
) -> PermissionStatus =
#| (v) => v
///|
/// Safely cast JsValue to PermissionStatus (checked with instanceof)
pub extern "js" fn PermissionStatus::from_js_value_opt(
v : JsValue,
) -> PermissionStatus? =
#| (v) => (v instanceof PermissionStatus) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to PermissionStatus (checked with instanceof)
pub extern "js" fn JsValue::as_permission_status(
self : JsValue,
) -> PermissionStatus? =
#| (self) => (self instanceof PermissionStatus) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to PermissionStatus (unchecked)
pub extern "js" fn JsValue::to_permission_status(
self : JsValue,
) -> PermissionStatus =
#| (self) => self
///|
pub extern "js" fn PermissionStatus::to_event_target(
self : PermissionStatus,
) -> EventTarget =
#| (self) => self
///|
pub extern "js" fn PermissionStatus::as_bluetooth_le_scan_permission_result(
self : PermissionStatus,
) -> BluetoothLEScanPermissionResult? =
#| (self) => (self instanceof BluetoothLEScanPermissionResult) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
pub extern "js" fn PermissionStatus::as_bluetooth_permission_result(
self : PermissionStatus,
) -> BluetoothPermissionResult? =
#| (self) => (self instanceof BluetoothPermissionResult) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
pub extern "js" fn PermissionStatus::as_usb_permission_result(
self : PermissionStatus,
) -> USBPermissionResult? =
#| (self) => (self instanceof USBPermissionResult) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
pub extern "js" fn PermissionStatus::as_xr_permission_status(
self : PermissionStatus,
) -> XRPermissionStatus? =
#| (self) => (self instanceof XRPermissionStatus) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
pub extern "js" fn PermissionStatus::get_state(
self : PermissionStatus,
) -> PermissionState =
#| (self) => ['granted', 'denied', 'prompt'].indexOf(self.state)
///|
pub extern "js" fn PermissionStatus::get_name(
self : PermissionStatus,
) -> String =
#| (self) => self.name
///|
pub extern "js" fn PermissionStatus::set_onchange(
self : PermissionStatus,
handler : (Event) -> Unit,
) -> Unit =
#| (self, handler) => { self.onchange = (e) => handler(e) }
///|
pub extern "js" fn PermissionStatus::clear_onchange(
self : PermissionStatus,
) -> Unit =
#| (self) => { self.onchange = null }