// Generated from WebIDL - DO NOT EDIT
// Source: @webref/idl/idle-detection
///|
/// UserIdleState enum
pub(all) enum UserIdleState {
Active
Idle
} derive(Eq, Show)
///|
/// Convert to string value
pub fn UserIdleState::to_string(self : UserIdleState) -> String {
match self {
UserIdleState::Active => "active"
UserIdleState::Idle => "idle"
}
}
///|
/// Parse from string value
pub fn UserIdleState::from_string(s : String) -> UserIdleState? {
match s {
"active" => Some(UserIdleState::Active)
"idle" => Some(UserIdleState::Idle)
_ => None
}
}
///|
/// ScreenIdleState enum
pub(all) enum ScreenIdleState {
Locked
Unlocked
} derive(Eq, Show)
///|
/// Convert to string value
pub fn ScreenIdleState::to_string(self : ScreenIdleState) -> String {
match self {
ScreenIdleState::Locked => "locked"
ScreenIdleState::Unlocked => "unlocked"
}
}
///|
/// Parse from string value
pub fn ScreenIdleState::from_string(s : String) -> ScreenIdleState? {
match s {
"locked" => Some(ScreenIdleState::Locked)
"unlocked" => Some(ScreenIdleState::Unlocked)
_ => None
}
}
///|
/// IdleOptions dictionary
pub(all) struct IdleOptions {
threshold : Int64?
signal : AbortSignal?
}
///|
/// Create a new IdleOptions with default values
pub fn IdleOptions::default() -> IdleOptions {
IdleOptions::{ threshold: None, signal: None }
}
///|
extern "js" fn IdleOptions::to_js_ffi(self : IdleOptions) -> JsValue =
#| (self) => ({
#| threshold: self.threshold,
#| signal: ((() => { const v = self.signal; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn IdleOptions::to_js(self : IdleOptions) -> JsValue {
IdleOptions::to_js_ffi(self)
}
///|
extern "js" fn IdleOptions::from_js_ffi(value : JsValue) -> IdleOptions =
#| (v) => ({
#| threshold: v.threshold,
#| signal: (v.signal === undefined ? { $tag: 0 } : { $tag: 1, _0: v.signal })
#| })
///|
/// Convert from JsValue
pub fn IdleOptions::from_js(value : JsValue) -> IdleOptions {
IdleOptions::from_js_ffi(value)
}
///|
/// IdleDetector interface
pub type IdleDetector
///|
pub extern "js" fn IdleDetector::to_js_value(self : IdleDetector) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to IdleDetector (unchecked)
pub extern "js" fn IdleDetector::from_js_value(v : JsValue) -> IdleDetector =
#| (v) => v
///|
/// Safely cast JsValue to IdleDetector (checked with instanceof)
pub extern "js" fn IdleDetector::from_js_value_opt(
v : JsValue,
) -> IdleDetector? =
#| (v) => (v instanceof IdleDetector) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to IdleDetector (checked with instanceof)
pub extern "js" fn JsValue::as_idle_detector(self : JsValue) -> IdleDetector? =
#| (self) => (self instanceof IdleDetector) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to IdleDetector (unchecked)
pub extern "js" fn JsValue::to_idle_detector(self : JsValue) -> IdleDetector =
#| (self) => self
///|
pub extern "js" fn IdleDetector::to_event_target(
self : IdleDetector,
) -> EventTarget =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum IdleDetectorStartError {
NotAllowedError(JsError)
OtherError(JsError)
} derive(Show)
///|
pub extern "js" fn IdleDetector::new() -> IdleDetector =
#| () => new IdleDetector()
///|
pub extern "js" fn IdleDetector::get_user_state(
self : IdleDetector,
) -> UserIdleState? =
#| (self) => (() => { const v = self.userState; return v == null ? undefined : ['active', 'idle'].indexOf(v); })()
///|
pub extern "js" fn IdleDetector::get_screen_state(
self : IdleDetector,
) -> ScreenIdleState? =
#| (self) => (() => { const v = self.screenState; return v == null ? undefined : ['locked', 'unlocked'].indexOf(v); })()
///|
pub extern "js" fn IdleDetector::set_onchange(
self : IdleDetector,
handler : (Event) -> Unit,
) -> Unit =
#| (self, handler) => { self.onchange = (e) => handler(e) }
///|
pub extern "js" fn IdleDetector::clear_onchange(self : IdleDetector) -> Unit =
#| (self) => { self.onchange = null }
///|
pub extern "js" fn IdleDetector::request_permission() -> Promise[
PermissionState,
] =
#| () => IdleDetector.requestPermission()
///|
pub extern "js" fn IdleDetector::start(
self : IdleDetector,
) -> Promise[Result[Unit, IdleDetectorStartError]] =
#| (self) => self.start().then(r => ({ $tag: 1, _0: undefined })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'NotAllowedError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
extern "js" fn IdleDetector::start_with_options_ffi(
self : IdleDetector,
options : JsValue,
) -> Promise[Result[Unit, IdleDetectorStartError]] =
#| (self, options) => self.start(options).then(r => ({ $tag: 1, _0: undefined })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'NotAllowedError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub fn IdleDetector::start_with_options(
self : IdleDetector,
options : IdleOptions,
) -> Promise[Result[Unit, IdleDetectorStartError]] {
IdleDetector::start_with_options_ffi(self, options.to_js())
}