Packages
plinth
0.9.1
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/window_ffi.mjs
import { Result$Ok, Result$Error } from "./gleam.mjs";
export function crypto(self) {
const crypto = self.crypto
if (crypto && crypto instanceof globalThis.Crypto) {
return Result$Ok(crypto)
}
return Result$Error()
}
export function self() {
return globalThis;
}
export function alert(message) {
window.alert(message);
}
export function confirm(message) {
return window.confirm(message)
}
export function prompt(message, defaultValue) {
let text = window.prompt(message, defaultValue);
if (text !== null) {
return Result$Ok(text);
} else {
return Result$Error();
}
}
export function addEventListener(type, listener) {
return window.addEventListener(type, listener);
}
export function document(window) {
return window.document;
}
export async function requestWakeLock() {
try {
return Result$Ok(await window.navigator.wakeLock.request("screen"));
} catch (error) {
return Result$Error(error.toString());
}
}
export function location(window) {
return window.location;
}
export function focus(w) {
return w.focus();
}
export function innerHeight(w) {
return w.innerHeight;
}
export function innerWidth(w) {
return w.innerWidth;
}
export function outerHeight(w) {
return w.outerHeight;
}
export function outerWidth(w) {
return w.outerWidth;
}
export function screenX(w) {
return w.screenX;
}
export function screenY(w) {
return w.screenY;
}
export function screenTop(w) {
return w.screenTop;
}
export function screenLeft(w) {
return w.screenLeft;
}
export function scrollX(w) {
return w.scrollX;
}
export function scrollY(w) {
return w.scrollY;
}
export function opener(window) {
const opener = window.opener
if (opener) {
return Result$Ok(opener)
} else {
return Result$Error()
}
}
export function postMessage(window, message, targetOrigin) {
window.postMessage(message, targetOrigin)
}
export function onMessage(worker, callback) {
worker.addEventListener("message", function (message) {
callback(message);
});
}
// on message cast event
export function open(url, target, features) {
try {
return Result$Ok(window.open(url, target, features));
} catch (error) {
return Result$Error(error.toString());
}
}
export function close(w) {
w.close();
}
export function closed(w) {
return w.closed;
}
export function queueMicrotask(callback) {
return window.queueMicrotask(callback);
}
export function requestAnimationFrame(callback) {
return window.requestAnimationFrame(callback);
}
export function cancelAnimationFrame(callback) {
return window.cancelAnimationFrame(callback);
}
export function eval_(string) {
try {
return Result$Ok(eval(string));
} catch (error) {
return Result$Error(error.toString());
}
}
export async function import_(string) {
try {
return Result$Ok(await import(string));
} catch (error) {
return Result$Error(error.toString());
}
}