This repository was archived by the owner on Nov 1, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 73
/
Copy pathWebapi__Dom__Window.re
108 lines (99 loc) · 7.48 KB
/
Webapi__Dom__Window.re
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
type console; /* Console API, should maybe be defined in Js stdlib */
type crypto; /* Web Cryptography API */
type frameList; /* array-like, WindowProxy? */
type idleDeadline; /* Cooperative Scheduling of Background Tasks */
type locationbar; /* "bar object" */
type menubar; /* "bar object" */
type navigator;
type personalbar; /* "bar object" */
type screen;
type scrollbars; /* "bar object" */
type speechSynthesis;
type statusbar; /* "bar object" */
type toolbar; /* "bar object" */
type mediaQueryList; /* CSSOM View module */
type transferable;
type idleCallbackId; /* used by requestIdleCallback and cancelIdleCallback */
module Impl = (T: {type t;}) => {
type t_window = T.t;
/* A lot of this isn't really "dom", but rather global exports */
[@bs.get] external console : t_window => console = "";
[@bs.get] external crypto : t_window => crypto = "";
[@bs.get] external document : t_window => Dom.document = "";
[@bs.get] [@bs.return nullable] external frameElement : t_window => option(Dom.element) = ""; /* experimental? */
[@bs.get] external frames : t_window => frameList = "";
[@bs.get] external fullScreen : t_window => bool = "";
[@bs.get] external history : t_window => Dom.history = "";
[@bs.get] external innerWidth : t_window => int = "";
[@bs.get] external innerHeight : t_window => int = "";
[@bs.get] external isSecureContext : t_window => bool = "";
[@bs.get] external length : t_window => int = "";
[@bs.get] external location : t_window => Dom.location = "";
[@bs.set] external setLocation : (t_window, string) => unit = "location";
[@bs.get] external locationbar : t_window => locationbar = "";
/* localStorage: accessed directly via Dom.Storage.localStorage */
[@bs.get] external menubar : t_window => menubar = "";
[@bs.get] external name : t_window => string = "";
[@bs.set] external setName : (t_window, string) => unit = "name";
[@bs.get] external navigator : t_window => navigator = "";
[@bs.get] [@bs.return nullable] external opener : t_window => option(Dom.window) = "";
[@bs.get] external outerWidth : t_window => int = "";
[@bs.get] external outerHeight : t_window => int = "";
[@bs.get] external pageXOffset : t_window => float = ""; /* alias for scrollX */
[@bs.get] external pageYOffset : t_window => float = ""; /* alias for scrollY */
[@bs.get] external parent : t_window => Dom.window = "";
[@bs.get] external performance : t_window => Webapi__Performance.t = "";
[@bs.get] external personalbar : t_window => personalbar = "";
[@bs.get] external screen : t_window => screen = "";
[@bs.get] external screenX : t_window => int = "";
[@bs.get] external screenY : t_window => int = "";
[@bs.get] external scrollbars : t_window => scrollbars = "";
[@bs.get] external scrollX : t_window => float = "";
[@bs.get] external scrollY : t_window => float = "";
[@bs.get] external self : t_window => Dom.window = ""; /* alias for window, but apparently convenient because self (stand-alone) resolves to WorkerGlobalScope in a web worker. Probably poitnless here though */
/* sessionStorage: accessed directly via Dom.Storage.sessionStorage */
[@bs.get] external speechSynthesis : t_window => speechSynthesis = ""; /* experimental */
[@bs.get] external status : t_window => string = "";
[@bs.set] external setStatus : (t_window, string) => unit = "status";
[@bs.get] external statusbar : t_window => statusbar = "";
[@bs.get] external toolbar : t_window => toolbar = "";
[@bs.get] external top : t_window => Dom.window = "";
[@bs.get] external window : t_window => t_window = ""; /* This is pointless I think, it's just here because window is the implicit global scope, and it's needed to be able to get a reference to it */
[@bs.send.pipe : t_window] external alert : string => unit = "";
[@bs.send.pipe : t_window] external blur : unit = "";
[@bs.send.pipe : t_window] external cancelIdleCallback : idleCallbackId => unit = ""; /* experimental, Cooperative Scheduling of Background Tasks */
[@bs.send.pipe : t_window] external close : unit = "";
[@bs.send.pipe : t_window] external confirm : string => bool = "";
[@bs.send.pipe : t_window] external focus : unit = "";
[@bs.send.pipe : t_window] external getComputedStyle : Dom.element => Dom.cssStyleDeclaration = "";
[@bs.send.pipe : t_window] external getComputedStyleWithPseudoElement : (Dom.element, string) => Dom.cssStyleDeclaration = "getComputedStyle";
[@bs.send.pipe : t_window] external getSelection : Dom.selection = "";
[@bs.send.pipe : t_window] external matchMedia : string => mediaQueryList = ""; /* experimental, CSSOM View module */
[@bs.send.pipe : t_window] external moveBy : (int, int) => unit = ""; /* experimental, CSSOM View module */
[@bs.send.pipe : t_window] external moveTo : (int, int) => unit = ""; /* experimental, CSSOM View module */
[@bs.send.pipe : t_window] [@bs.return nullable] external open_ : (~url: string, ~name: string, ~features: string=?) => option(Dom.window) = "open"; /* yes, features is a stringly typed list of key value pairs, sigh */
[@bs.send.pipe : t_window] external postMessage : ('a, string) => unit = ""; /* experimental-ish?, Web Messaging */
[@bs.send.pipe : t_window] external postMessageWithTransfers : ('a, string, array(transferable)) => unit = "postMessage"; /* experimental-ish?, Web Messaging */
[@bs.send.pipe : t_window] external print : unit = "";
[@bs.send.pipe : t_window] external prompt : string => string = "";
[@bs.send.pipe : t_window] external promptWithDefault : (string, string) => string = "prompt";
/* requestAnimationFrame: accessed directly via Webapi */
[@bs.send.pipe : t_window] external requestIdleCallback : (idleDeadline => unit) => idleCallbackId = ""; /* experimental, Cooperative Scheduling of Background Tasks */
[@bs.send.pipe : t_window] external requestIdleCallbackWithOptions : (idleDeadline => unit, {. "timeout": int}) => idleCallbackId = "requestIdleCallback"; /* experimental, Cooperative Scheduling of Background Tasks */
[@bs.send.pipe : t_window] external resizeBy : (int, int) => unit = ""; /* experimental, CSSOM View module */
[@bs.send.pipe : t_window] external resizeTo : (int, int) => unit = ""; /* experimental, CSSOM View module */
[@bs.send.pipe : t_window] external scroll : (float, float) => unit = ""; /* experimental, CSSOM View module */
[@bs.send.pipe : t_window] external scrollBy : (float, float) => unit = ""; /* experimental, CSSOM View module */
[@bs.send.pipe : t_window] external scrollTo : (float, float) => unit = ""; /* experimental, CSSOM View module */
[@bs.send.pipe : t_window] external stop : unit = "";
[@bs.send.pipe : t_window] external addPopStateEventListener : ([@bs.as "popstate"] _, Dom.popStateEvent => unit) => unit = "addEventListener";
[@bs.send.pipe : t_window] external removePopStateEventListener : ([@bs.as "popstate"] _, Dom.popStateEvent => unit) => unit= "removeEventListener";
[@bs.send.pipe : t_window] external addBeforeUnloadEventListener : ([@bs.as "beforeunload"] _, Dom.beforeUnloadEvent => unit) => unit = "addEventListener";
[@bs.send.pipe : t_window] external removeBeforeUnloadEventListener : ([@bs.as "beforeunload"] _, Dom.beforeUnloadEvent => unit) => unit= "removeEventListener";
[@bs.set] external setOnLoad : (t_window, unit => unit) => unit = "onload"; /* use addEventListener instead? */
};
type t = Dom.window;
/* include WindowOrWorkerGlobalScope? not really "dom" though */
include Webapi__Dom__EventTarget.Impl({ type nonrec t = t; });
include Webapi__Dom__GlobalEventHandlers.Impl({ type nonrec t = t; });
include Impl({ type nonrec t = t; });