+
+ The best example of usage of these bindings are the tests.
+ These typically contain tweaks made to the generated bindings to make them more
+ ergonomic.
+
+ {
+ testFiles.map(({ source, output, name }) => {
+ return (
+
+
{name}
+
+
+
+
+
+
+
+
+
+ );
+ })
+ }
+
+
diff --git a/docs/utils.js b/docs/utils.js
index 4bdf816..9c5a9a2 100644
--- a/docs/utils.js
+++ b/docs/utils.js
@@ -1,7 +1,7 @@
import * as path from "node:path";
import { exec } from "node:child_process";
import { promisify } from "node:util";
-import { readdirSync, existsSync } from "fs";
+import { readdirSync, existsSync, readFileSync } from "fs";
import { micromark } from "micromark";
const execAsync = promisify(exec);
@@ -140,4 +140,34 @@ export async function getDoc(absoluteFilePath) {
values,
valueHeadings,
};
-}
\ No newline at end of file
+}
+
+function trimRescriptOutput(output) {
+ return output
+ .replace("// Generated by ReScript, PLEASE EDIT WITH CARE", "")
+ .replace("/* response Not a pure module */", "")
+ .trim();
+}
+
+const testDir = path.resolve(process.cwd(), "tests");
+export const testFiles =
+ readdirSync(testDir, { recursive: true })
+ .filter(f => f.endsWith(".res"))
+ .map(tf => {
+ const sourcePath = path.join(testDir, tf);
+ const source = readFileSync(sourcePath, "utf-8");
+ const outputPath = sourcePath.replace(".res", ".js");
+ const output = readFileSync(outputPath, "utf-8");
+
+ const parts = tf.split(path.sep);
+ const name = parts[parts.length - 1].replace("__tests.res", "");
+
+ return {
+ sourcePath: sourcePath.replace(testDir,""),
+ source,
+ output: trimRescriptOutput(output),
+ outputPath: outputPath.replace(testDir,""),
+ name,
+ };
+ })
+ .sort((a, b) => a.name.localeCompare(b.name));
\ No newline at end of file
diff --git a/src/DOMAPI.res b/src/DOMAPI.res
index df04130..d8611e3 100644
--- a/src/DOMAPI.res
+++ b/src/DOMAPI.res
@@ -7131,6 +7131,13 @@ type range = {
commonAncestorContainer: node,
}
+/**
+[See StaticRange on MDN](https://developer.mozilla.org/docs/Web/API/StaticRange)
+*/
+type staticRange = {
+ ...abstractRange,
+}
+
type nodeFilter = {}
/**
diff --git a/src/EventAPI/EventTarget.res b/src/EventAPI/EventTarget.res
index 949f79c..8f3677c 100644
--- a/src/EventAPI/EventTarget.res
+++ b/src/EventAPI/EventTarget.res
@@ -32,8 +32,8 @@ The event listener is appended to target's event listener list and is not append
@send
external addEventListener: (
T.t,
- ~type_: eventType,
- ~callback: eventListener<'event>,
+ eventType,
+ eventListener<'event>,
~options: addEventListenerOptions=?,
) => unit = "addEventListener"
@@ -56,8 +56,8 @@ The event listener is appended to target's event listener list and is not append
@send
external addEventListener_useCapture: (
T.t,
- ~type_: eventType,
- ~callback: eventListener<'event>,
+ eventType,
+ eventListener<'event>,
@as(json`true`) _,
) => unit = "addEventListener"
@@ -68,8 +68,8 @@ Removes the event listener in target's event listener list with the same type, c
@send
external removeEventListener: (
T.t,
- ~type_: eventType,
- ~callback: eventListener<'event>,
+ eventType,
+ eventListener<'event>,
~options: eventListenerOptions=?,
) => unit = "removeEventListener"
@@ -80,8 +80,8 @@ Removes the event listener in target's event listener list with the same type, c
@send
external removeEventListener_useCapture: (
T.t,
- ~type_: eventType,
- ~callback: eventListener<'event>,
+ eventType,
+ eventListener<'event>,
@as(json`true`) _,
) => unit = "removeEventListener"
diff --git a/src/Global.res b/src/Global.res
index 593312d..f436003 100644
--- a/src/Global.res
+++ b/src/Global.res
@@ -535,8 +535,8 @@ The event listener is appended to target's event listener list and is not append
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
*/
external addEventListener: (
- ~type_: eventType,
- ~callback: eventListener<'event>,
+ eventType,
+ eventListener<'event>,
~options: addEventListenerOptions=?,
) => unit = "addEventListener"
@@ -557,8 +557,8 @@ The event listener is appended to target's event listener list and is not append
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
*/
external addEventListener_useCapture: (
- ~type_: eventType,
- ~callback: eventListener<'event>,
+ eventType,
+ eventListener<'event>,
@as(json`true`) _,
) => unit = "addEventListener"
@@ -567,8 +567,8 @@ Removes the event listener in target's event listener list with the same type, c
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
*/
external removeEventListener: (
- ~type_: string,
- ~callback: eventListener<'event>,
+ string,
+ eventListener<'event>,
~options: eventListenerOptions=?,
) => unit = "removeEventListener"
@@ -577,8 +577,8 @@ Removes the event listener in target's event listener list with the same type, c
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
*/
external removeEventListener_useCapture: (
- ~type_: eventType,
- ~callback: eventListener<'event>,
+ eventType,
+ eventListener<'event>,
@as(json`true`) _,
) => unit = "removeEventListener"
diff --git a/src/UIEventsAPI.js b/src/UIEventsAPI.js
new file mode 100644
index 0000000..d856702
--- /dev/null
+++ b/src/UIEventsAPI.js
@@ -0,0 +1,2 @@
+// Generated by ReScript, PLEASE EDIT WITH CARE
+/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
diff --git a/src/UIEventsAPI.res b/src/UIEventsAPI.res
new file mode 100644
index 0000000..2c43f58
--- /dev/null
+++ b/src/UIEventsAPI.res
@@ -0,0 +1,373 @@
+@@warning("-30")
+
+open EventAPI
+open DOMAPI
+
+/**
+Simple user interface events.
+[See UIEvent on MDN](https://developer.mozilla.org/docs/Web/API/UIEvent)
+*/
+type uiEvent = {
+ ...event,
+ /**
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/UIEvent/view)
+ */
+ view: Null.t