Packages
plinth
0.4.14
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.13
0.1.12
0.1.11
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Bindings to Node.js and browser platform APIs
Current section
Files
Jump to
Current section
Files
src/plinth/browser/window.gleam
import gleam/dynamic
import gleam/javascript/promise.{type Promise}
import gleam/json.{type Json}
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) -> Result(String, String)
@external(javascript, "../../window_ffi.mjs", "setLocation")
pub fn set_location(window: Window, url: String) -> Nil
@external(javascript, "../../window_ffi.mjs", "origin")
pub fn origin() -> String
@external(javascript, "../../window_ffi.mjs", "pathname")
pub fn pathname() -> String
// reload exists on the location object but exposed at top level here
@external(javascript, "../../window_ffi.mjs", "reload")
pub fn reload() -> Nil
@external(javascript, "../../window_ffi.mjs", "reloadOf")
pub fn reload_of(window: Window) -> Nil
@external(javascript, "../../window_ffi.mjs", "focus")
pub fn focus(window: Window) -> 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", "screenX")
pub fn screen_x(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "screenY")
pub fn screen_y(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "screenTop")
pub fn screen_top(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "screenLeft")
pub fn screen_left(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "scrollX")
pub fn scroll_x(window: Window) -> Int
@external(javascript, "../../window_ffi.mjs", "scrollY")
pub fn scroll_y(window: Window) -> Int
@external(javascript, "../../worker_ffi.mjs", "onMessage")
pub fn on_message(worker: Window, handle: fn(Json) -> Nil) -> Nil
@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
@external(javascript, "../../window_ffi.mjs", "queueMicrotask")
pub fn queue_microtask(callback: fn() -> Nil) -> Nil
// A long integer value, the request ID, that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value. You can pass this value to window.cancelAnimationFrame() to cancel the refresh callback request.
pub type RequestID
@external(javascript, "../../window_ffi.mjs", "requestAnimationFrame")
pub fn request_animation_frame(callback: fn(Float) -> Nil) -> RequestID
@external(javascript, "../../window_ffi.mjs", "cancelAnimationFrame")
pub fn cancel_animation_frame(request_id: RequestID) -> Nil
@external(javascript, "../../window_ffi.mjs", "eval_")
pub fn eval(source: String) -> Result(dynamic.Dynamic, String)
@external(javascript, "../../window_ffi.mjs", "import_")
pub fn import_(source: String) -> Promise(Result(dynamic.Dynamic, String))