-
Notifications
You must be signed in to change notification settings - Fork 12
/
window.gleam
62 lines (43 loc) · 2 KB
/
window.gleam
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import gleam/javascript/promise.{type Promise}
import plinth/browser/event.{type Event}
pub type Window
@external(javascript, "../../window_ffi.mjs", "self")
pub fn self() -> Window
@external(javascript, "../../window_ffi.mjs", "alert")
pub fn alert(a: String) -> Nil
@external(javascript, "../../window_ffi.mjs", "addEventListener")
pub fn add_event_listener(type_: String, listener: fn(Event) -> Nil) -> Nil
pub type WakeLockSentinal
// part of the navigator API as navigators are not valuable to pass around moved to window module
@external(javascript, "../../window_ffi.mjs", "requestWakeLock")
pub fn request_wake_lock() -> Promise(Result(WakeLockSentinal, Nil))
@external(javascript, "../../window_ffi.mjs", "location")
pub fn location() -> String
@external(javascript, "../../window_ffi.mjs", "locationOf")
pub fn location_of(window: Window) -> String
// reload exists on the location object but exposed at top level here
@external(javascript, "../../window_ffi.mjs", "reload")
pub fn reload() -> Nil
// I'm not sure how much value there is in specific hash/search function
@external(javascript, "../../window_ffi.mjs", "getHash")
pub fn get_hash() -> Result(String, Nil)
@external(javascript, "../../window_ffi.mjs", "getSearch")
pub fn get_search() -> Result(String, Nil)
@external(javascript, "../../window_ffi.mjs", "innerHeight")
pub fn inner_height(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "innerWidth")
pub fn inner_width(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "outerHeight")
pub fn outer_height(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "outerWidth")
pub fn outer_width(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "open")
pub fn open(
url: String,
name: String,
features: String,
) -> Result(Window, String)
@external(javascript, "../../window_ffi.mjs", "close")
pub fn close(window: Window) -> Bool
@external(javascript, "../../window_ffi.mjs", "closed")
pub fn closed(window: Window) -> Bool