diff --git a/README.md b/README.md
index 667fcf7..54c0e16 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ Experimental successor to [rescript-webapi](https://github.com/TheSpyder/rescrip
Install the package using your favorite package manager:
```shell
-npm i -D @rescript/webapi@experimental
+npm i @rescript/webapi@experimental
```
and add `@rescript/webapi` to your `rescript.json`:
diff --git a/docs/content/docs/index.mdx b/docs/content/docs/index.mdx
index 87c4d2c..15d4e4a 100644
--- a/docs/content/docs/index.mdx
+++ b/docs/content/docs/index.mdx
@@ -30,14 +30,14 @@ Install the package using your favorite package manager:
diff --git a/src/DOMAPI.res b/src/DOMAPI.res
index df04130..3261920 100644
--- a/src/DOMAPI.res
+++ b/src/DOMAPI.res
@@ -7442,6 +7442,19 @@ and htmlTableRowElement = {
cells: htmlCollectionOf,
}
+/**
+Provides special properties (beyond the HTMLElement interface it also has available to it inheritance) for manipulating single or grouped table column elements.
+[See HTMLTableColElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLTableColElement)
+*/
+type htmlTableColElement = {
+ ...htmlElement,
+ /**
+ Sets or retrieves the number of columns in the group.
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/span)
+ */
+ mutable span: int,
+}
+
/**
Provides properties and methods (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating elements.
[See HTMLButtonElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLButtonElement)
@@ -8307,6 +8320,22 @@ type htmlDataElement = {
mutable value: string,
}
+/**
+[See HTMLDetailsElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement)
+*/
+type htmlDetailsElement = {
+ ...htmlElement,
+ /**
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/open)
+ */
+ mutable name: string,
+ /**
+ [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/open)
+ */
+ @as("open")
+ mutable open_: bool,
+}
+
/**
[See HTMLDialogElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLDialogElement)
*/
diff --git a/src/DOMAPI/Document.js b/src/DOMAPI/Document.js
index d856702..54c6311 100644
--- a/src/DOMAPI/Document.js
+++ b/src/DOMAPI/Document.js
@@ -1,2 +1,204 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
+
+import * as QuerySelector$WebAPI from "./QuerySelector.js";
+
+let include = QuerySelector$WebAPI.Impl({});
+
+let safeQuerySelector = include.safeQuerySelector;
+
+let querySelector_htmlAnchorElement = include.querySelector_htmlAnchorElement;
+
+let querySelector_htmlAreaElement = include.querySelector_htmlAreaElement;
+
+let querySelector_htmlAudioElement = include.querySelector_htmlAudioElement;
+
+let querySelector_htmlBaseElement = include.querySelector_htmlBaseElement;
+
+let querySelector_htmlBodyElement = include.querySelector_htmlBodyElement;
+
+let querySelector_htmlBRElement = include.querySelector_htmlBRElement;
+
+let querySelector_htmlButtonElement = include.querySelector_htmlButtonElement;
+
+let querySelector_htmlCanvasElement = include.querySelector_htmlCanvasElement;
+
+let querySelector_htmlDataElement = include.querySelector_htmlDataElement;
+
+let querySelector_htmlDataListElement = include.querySelector_htmlDataListElement;
+
+let querySelector_htmlDetailsElement = include.querySelector_htmlDetailsElement;
+
+let querySelector_htmlDialogElement = include.querySelector_htmlDialogElement;
+
+let querySelector_htmlDivElement = include.querySelector_htmlDivElement;
+
+let querySelector_htmlDListElement = include.querySelector_htmlDListElement;
+
+let querySelector_htmlEmbedElement = include.querySelector_htmlEmbedElement;
+
+let querySelector_htmlFieldSetElement = include.querySelector_htmlFieldSetElement;
+
+let querySelector_htmlFormElement = include.querySelector_htmlFormElement;
+
+let querySelector_htmlHRElement = include.querySelector_htmlHRElement;
+
+let querySelector_htmlHeadElement = include.querySelector_htmlHeadElement;
+
+let querySelector_htmlHeadingElement = include.querySelector_htmlHeadingElement;
+
+let querySelector_htmlHtmlElement = include.querySelector_htmlHtmlElement;
+
+let querySelector_htmlIFrameElement = include.querySelector_htmlIFrameElement;
+
+let querySelector_htmlImageElement = include.querySelector_htmlImageElement;
+
+let querySelector_htmlInputElement = include.querySelector_htmlInputElement;
+
+let querySelector_htmlLabelElement = include.querySelector_htmlLabelElement;
+
+let querySelector_htmlLegendElement = include.querySelector_htmlLegendElement;
+
+let querySelector_htmlLIElement = include.querySelector_htmlLIElement;
+
+let querySelector_htmlLinkElement = include.querySelector_htmlLinkElement;
+
+let querySelector_htmlMapElement = include.querySelector_htmlMapElement;
+
+let querySelector_htmlMediaElement = include.querySelector_htmlMediaElement;
+
+let querySelector_htmlMenuElement = include.querySelector_htmlMenuElement;
+
+let querySelector_htmlMetaElement = include.querySelector_htmlMetaElement;
+
+let querySelector_htmlMeterElement = include.querySelector_htmlMeterElement;
+
+let querySelector_htmlModElement = include.querySelector_htmlModElement;
+
+let querySelector_htmlObjectElement = include.querySelector_htmlObjectElement;
+
+let querySelector_htmlOListElement = include.querySelector_htmlOListElement;
+
+let querySelector_htmlOptGroupElement = include.querySelector_htmlOptGroupElement;
+
+let querySelector_htmlOptionElement = include.querySelector_htmlOptionElement;
+
+let querySelector_htmlOutputElement = include.querySelector_htmlOutputElement;
+
+let querySelector_htmlParagraphElement = include.querySelector_htmlParagraphElement;
+
+let querySelector_htmlPictureElement = include.querySelector_htmlPictureElement;
+
+let querySelector_htmlPreElement = include.querySelector_htmlPreElement;
+
+let querySelector_htmlProgressElement = include.querySelector_htmlProgressElement;
+
+let querySelector_htmlQuoteElement = include.querySelector_htmlQuoteElement;
+
+let querySelector_htmlScriptElement = include.querySelector_htmlScriptElement;
+
+let querySelector_htmlSelectElement = include.querySelector_htmlSelectElement;
+
+let querySelector_htmlSlotElement = include.querySelector_htmlSlotElement;
+
+let querySelector_htmlSourceElement = include.querySelector_htmlSourceElement;
+
+let querySelector_htmlSpanElement = include.querySelector_htmlSpanElement;
+
+let querySelector_htmlStyleElement = include.querySelector_htmlStyleElement;
+
+let querySelector_htmlTableCaptionElement = include.querySelector_htmlTableCaptionElement;
+
+let querySelector_htmlTableCellElement = include.querySelector_htmlTableCellElement;
+
+let querySelector_htmlTableColElement = include.querySelector_htmlTableColElement;
+
+let querySelector_htmlTableElement = include.querySelector_htmlTableElement;
+
+let querySelector_htmlTableRowElement = include.querySelector_htmlTableRowElement;
+
+let querySelector_htmlTableSectionElement = include.querySelector_htmlTableSectionElement;
+
+let querySelector_htmlTemplateElement = include.querySelector_htmlTemplateElement;
+
+let querySelector_htmlTextAreaElement = include.querySelector_htmlTextAreaElement;
+
+let querySelector_htmlTimeElement = include.querySelector_htmlTimeElement;
+
+let querySelector_htmlTitleElement = include.querySelector_htmlTitleElement;
+
+let querySelector_htmlTrackElement = include.querySelector_htmlTrackElement;
+
+let querySelector_htmlUListElement = include.querySelector_htmlUListElement;
+
+let querySelector_htmlUnknownElement = include.querySelector_htmlUnknownElement;
+
+let querySelector_htmlVideoElement = include.querySelector_htmlVideoElement;
+
+export {
+ safeQuerySelector,
+ querySelector_htmlAnchorElement,
+ querySelector_htmlAreaElement,
+ querySelector_htmlAudioElement,
+ querySelector_htmlBaseElement,
+ querySelector_htmlBodyElement,
+ querySelector_htmlBRElement,
+ querySelector_htmlButtonElement,
+ querySelector_htmlCanvasElement,
+ querySelector_htmlDataElement,
+ querySelector_htmlDataListElement,
+ querySelector_htmlDetailsElement,
+ querySelector_htmlDialogElement,
+ querySelector_htmlDivElement,
+ querySelector_htmlDListElement,
+ querySelector_htmlEmbedElement,
+ querySelector_htmlFieldSetElement,
+ querySelector_htmlFormElement,
+ querySelector_htmlHRElement,
+ querySelector_htmlHeadElement,
+ querySelector_htmlHeadingElement,
+ querySelector_htmlHtmlElement,
+ querySelector_htmlIFrameElement,
+ querySelector_htmlImageElement,
+ querySelector_htmlInputElement,
+ querySelector_htmlLabelElement,
+ querySelector_htmlLegendElement,
+ querySelector_htmlLIElement,
+ querySelector_htmlLinkElement,
+ querySelector_htmlMapElement,
+ querySelector_htmlMediaElement,
+ querySelector_htmlMenuElement,
+ querySelector_htmlMetaElement,
+ querySelector_htmlMeterElement,
+ querySelector_htmlModElement,
+ querySelector_htmlObjectElement,
+ querySelector_htmlOListElement,
+ querySelector_htmlOptGroupElement,
+ querySelector_htmlOptionElement,
+ querySelector_htmlOutputElement,
+ querySelector_htmlParagraphElement,
+ querySelector_htmlPictureElement,
+ querySelector_htmlPreElement,
+ querySelector_htmlProgressElement,
+ querySelector_htmlQuoteElement,
+ querySelector_htmlScriptElement,
+ querySelector_htmlSelectElement,
+ querySelector_htmlSlotElement,
+ querySelector_htmlSourceElement,
+ querySelector_htmlSpanElement,
+ querySelector_htmlStyleElement,
+ querySelector_htmlTableCaptionElement,
+ querySelector_htmlTableCellElement,
+ querySelector_htmlTableColElement,
+ querySelector_htmlTableElement,
+ querySelector_htmlTableRowElement,
+ querySelector_htmlTableSectionElement,
+ querySelector_htmlTemplateElement,
+ querySelector_htmlTextAreaElement,
+ querySelector_htmlTimeElement,
+ querySelector_htmlTitleElement,
+ querySelector_htmlTrackElement,
+ querySelector_htmlUListElement,
+ querySelector_htmlUnknownElement,
+ querySelector_htmlVideoElement,
+}
+/* include Not a pure module */
diff --git a/src/DOMAPI/Document.res b/src/DOMAPI/Document.res
index 8501ac2..c54b183 100644
--- a/src/DOMAPI/Document.res
+++ b/src/DOMAPI/Document.res
@@ -77,12 +77,9 @@ Throws a "HierarchyRequestError" DOMException if the constraints of the node tre
@send
external replaceChildren2: (document, string) => unit = "replaceChildren"
-/**
-Returns the first element that is a descendant of node that matches selectors.
-[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Document/querySelector)
-*/
-@send
-external querySelector: (document, string) => element = "querySelector"
+include QuerySelector.Impl({
+ type t = document
+})
/**
Returns all element descendants of node that match selectors.
diff --git a/src/DOMAPI/FillStyle.js b/src/DOMAPI/FillStyle.js
index 1e79cc4..d12dfc1 100644
--- a/src/DOMAPI/FillStyle.js
+++ b/src/DOMAPI/FillStyle.js
@@ -1,15 +1,15 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-import * as CanvasPattern$WebApi from "../CanvasAPI/CanvasPattern.js";
-import * as CanvasGradient$WebApi from "../CanvasAPI/CanvasGradient.js";
+import * as CanvasPattern$WebAPI from "../CanvasAPI/CanvasPattern.js";
+import * as CanvasGradient$WebAPI from "../CanvasAPI/CanvasGradient.js";
function decode(t) {
- if (CanvasGradient$WebApi.isInstanceOf(t)) {
+ if (CanvasGradient$WebAPI.isInstanceOf(t)) {
return {
TAG: "CanvasGradient",
_0: t
};
- } else if (CanvasPattern$WebApi.isInstanceOf(t)) {
+ } else if (CanvasPattern$WebAPI.isInstanceOf(t)) {
return {
TAG: "CanvasPattern",
_0: t
diff --git a/src/DOMAPI/HTMLCanvasElement.res b/src/DOMAPI/HTMLCanvasElement.res
index 6fcc4da..4d089cc 100644
--- a/src/DOMAPI/HTMLCanvasElement.res
+++ b/src/DOMAPI/HTMLCanvasElement.res
@@ -8,6 +8,7 @@ external asHTMLElement: htmlCanvasElement => htmlElement = "%identity"
external asElement: htmlCanvasElement => element = "%identity"
external asNode: htmlCanvasElement => node = "%identity"
external asEventTarget: htmlCanvasElement => eventTarget = "%identity"
+
/**
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/focus)
*/
diff --git a/src/DOMAPI/HTMLDivElement.js b/src/DOMAPI/HTMLDivElement.js
index d856702..54c6311 100644
--- a/src/DOMAPI/HTMLDivElement.js
+++ b/src/DOMAPI/HTMLDivElement.js
@@ -1,2 +1,204 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
-/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */
+
+import * as QuerySelector$WebAPI from "./QuerySelector.js";
+
+let include = QuerySelector$WebAPI.Impl({});
+
+let safeQuerySelector = include.safeQuerySelector;
+
+let querySelector_htmlAnchorElement = include.querySelector_htmlAnchorElement;
+
+let querySelector_htmlAreaElement = include.querySelector_htmlAreaElement;
+
+let querySelector_htmlAudioElement = include.querySelector_htmlAudioElement;
+
+let querySelector_htmlBaseElement = include.querySelector_htmlBaseElement;
+
+let querySelector_htmlBodyElement = include.querySelector_htmlBodyElement;
+
+let querySelector_htmlBRElement = include.querySelector_htmlBRElement;
+
+let querySelector_htmlButtonElement = include.querySelector_htmlButtonElement;
+
+let querySelector_htmlCanvasElement = include.querySelector_htmlCanvasElement;
+
+let querySelector_htmlDataElement = include.querySelector_htmlDataElement;
+
+let querySelector_htmlDataListElement = include.querySelector_htmlDataListElement;
+
+let querySelector_htmlDetailsElement = include.querySelector_htmlDetailsElement;
+
+let querySelector_htmlDialogElement = include.querySelector_htmlDialogElement;
+
+let querySelector_htmlDivElement = include.querySelector_htmlDivElement;
+
+let querySelector_htmlDListElement = include.querySelector_htmlDListElement;
+
+let querySelector_htmlEmbedElement = include.querySelector_htmlEmbedElement;
+
+let querySelector_htmlFieldSetElement = include.querySelector_htmlFieldSetElement;
+
+let querySelector_htmlFormElement = include.querySelector_htmlFormElement;
+
+let querySelector_htmlHRElement = include.querySelector_htmlHRElement;
+
+let querySelector_htmlHeadElement = include.querySelector_htmlHeadElement;
+
+let querySelector_htmlHeadingElement = include.querySelector_htmlHeadingElement;
+
+let querySelector_htmlHtmlElement = include.querySelector_htmlHtmlElement;
+
+let querySelector_htmlIFrameElement = include.querySelector_htmlIFrameElement;
+
+let querySelector_htmlImageElement = include.querySelector_htmlImageElement;
+
+let querySelector_htmlInputElement = include.querySelector_htmlInputElement;
+
+let querySelector_htmlLabelElement = include.querySelector_htmlLabelElement;
+
+let querySelector_htmlLegendElement = include.querySelector_htmlLegendElement;
+
+let querySelector_htmlLIElement = include.querySelector_htmlLIElement;
+
+let querySelector_htmlLinkElement = include.querySelector_htmlLinkElement;
+
+let querySelector_htmlMapElement = include.querySelector_htmlMapElement;
+
+let querySelector_htmlMediaElement = include.querySelector_htmlMediaElement;
+
+let querySelector_htmlMenuElement = include.querySelector_htmlMenuElement;
+
+let querySelector_htmlMetaElement = include.querySelector_htmlMetaElement;
+
+let querySelector_htmlMeterElement = include.querySelector_htmlMeterElement;
+
+let querySelector_htmlModElement = include.querySelector_htmlModElement;
+
+let querySelector_htmlObjectElement = include.querySelector_htmlObjectElement;
+
+let querySelector_htmlOListElement = include.querySelector_htmlOListElement;
+
+let querySelector_htmlOptGroupElement = include.querySelector_htmlOptGroupElement;
+
+let querySelector_htmlOptionElement = include.querySelector_htmlOptionElement;
+
+let querySelector_htmlOutputElement = include.querySelector_htmlOutputElement;
+
+let querySelector_htmlParagraphElement = include.querySelector_htmlParagraphElement;
+
+let querySelector_htmlPictureElement = include.querySelector_htmlPictureElement;
+
+let querySelector_htmlPreElement = include.querySelector_htmlPreElement;
+
+let querySelector_htmlProgressElement = include.querySelector_htmlProgressElement;
+
+let querySelector_htmlQuoteElement = include.querySelector_htmlQuoteElement;
+
+let querySelector_htmlScriptElement = include.querySelector_htmlScriptElement;
+
+let querySelector_htmlSelectElement = include.querySelector_htmlSelectElement;
+
+let querySelector_htmlSlotElement = include.querySelector_htmlSlotElement;
+
+let querySelector_htmlSourceElement = include.querySelector_htmlSourceElement;
+
+let querySelector_htmlSpanElement = include.querySelector_htmlSpanElement;
+
+let querySelector_htmlStyleElement = include.querySelector_htmlStyleElement;
+
+let querySelector_htmlTableCaptionElement = include.querySelector_htmlTableCaptionElement;
+
+let querySelector_htmlTableCellElement = include.querySelector_htmlTableCellElement;
+
+let querySelector_htmlTableColElement = include.querySelector_htmlTableColElement;
+
+let querySelector_htmlTableElement = include.querySelector_htmlTableElement;
+
+let querySelector_htmlTableRowElement = include.querySelector_htmlTableRowElement;
+
+let querySelector_htmlTableSectionElement = include.querySelector_htmlTableSectionElement;
+
+let querySelector_htmlTemplateElement = include.querySelector_htmlTemplateElement;
+
+let querySelector_htmlTextAreaElement = include.querySelector_htmlTextAreaElement;
+
+let querySelector_htmlTimeElement = include.querySelector_htmlTimeElement;
+
+let querySelector_htmlTitleElement = include.querySelector_htmlTitleElement;
+
+let querySelector_htmlTrackElement = include.querySelector_htmlTrackElement;
+
+let querySelector_htmlUListElement = include.querySelector_htmlUListElement;
+
+let querySelector_htmlUnknownElement = include.querySelector_htmlUnknownElement;
+
+let querySelector_htmlVideoElement = include.querySelector_htmlVideoElement;
+
+export {
+ safeQuerySelector,
+ querySelector_htmlAnchorElement,
+ querySelector_htmlAreaElement,
+ querySelector_htmlAudioElement,
+ querySelector_htmlBaseElement,
+ querySelector_htmlBodyElement,
+ querySelector_htmlBRElement,
+ querySelector_htmlButtonElement,
+ querySelector_htmlCanvasElement,
+ querySelector_htmlDataElement,
+ querySelector_htmlDataListElement,
+ querySelector_htmlDetailsElement,
+ querySelector_htmlDialogElement,
+ querySelector_htmlDivElement,
+ querySelector_htmlDListElement,
+ querySelector_htmlEmbedElement,
+ querySelector_htmlFieldSetElement,
+ querySelector_htmlFormElement,
+ querySelector_htmlHRElement,
+ querySelector_htmlHeadElement,
+ querySelector_htmlHeadingElement,
+ querySelector_htmlHtmlElement,
+ querySelector_htmlIFrameElement,
+ querySelector_htmlImageElement,
+ querySelector_htmlInputElement,
+ querySelector_htmlLabelElement,
+ querySelector_htmlLegendElement,
+ querySelector_htmlLIElement,
+ querySelector_htmlLinkElement,
+ querySelector_htmlMapElement,
+ querySelector_htmlMediaElement,
+ querySelector_htmlMenuElement,
+ querySelector_htmlMetaElement,
+ querySelector_htmlMeterElement,
+ querySelector_htmlModElement,
+ querySelector_htmlObjectElement,
+ querySelector_htmlOListElement,
+ querySelector_htmlOptGroupElement,
+ querySelector_htmlOptionElement,
+ querySelector_htmlOutputElement,
+ querySelector_htmlParagraphElement,
+ querySelector_htmlPictureElement,
+ querySelector_htmlPreElement,
+ querySelector_htmlProgressElement,
+ querySelector_htmlQuoteElement,
+ querySelector_htmlScriptElement,
+ querySelector_htmlSelectElement,
+ querySelector_htmlSlotElement,
+ querySelector_htmlSourceElement,
+ querySelector_htmlSpanElement,
+ querySelector_htmlStyleElement,
+ querySelector_htmlTableCaptionElement,
+ querySelector_htmlTableCellElement,
+ querySelector_htmlTableColElement,
+ querySelector_htmlTableElement,
+ querySelector_htmlTableRowElement,
+ querySelector_htmlTableSectionElement,
+ querySelector_htmlTemplateElement,
+ querySelector_htmlTextAreaElement,
+ querySelector_htmlTimeElement,
+ querySelector_htmlTitleElement,
+ querySelector_htmlTrackElement,
+ querySelector_htmlUListElement,
+ querySelector_htmlUnknownElement,
+ querySelector_htmlVideoElement,
+}
+/* include Not a pure module */
diff --git a/src/DOMAPI/HTMLDivElement.res b/src/DOMAPI/HTMLDivElement.res
index cfc7b51..a4732a0 100644
--- a/src/DOMAPI/HTMLDivElement.res
+++ b/src/DOMAPI/HTMLDivElement.res
@@ -72,12 +72,9 @@ Throws a "HierarchyRequestError" DOMException if the constraints of the node tre
@send
external replaceChildren2: (htmlDivElement, string) => unit = "replaceChildren"
-/**
-Returns the first element that is a descendant of node that matches selectors.
-[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Document/querySelector)
-*/
-@send
-external querySelector: (htmlDivElement, string) => element = "querySelector"
+include QuerySelector.Impl({
+ type t = htmlDivElement
+})
/**
Returns all element descendants of node that match selectors.
diff --git a/src/DOMAPI/QuerySelector.js b/src/DOMAPI/QuerySelector.js
new file mode 100644
index 0000000..8fd8a2e
--- /dev/null
+++ b/src/DOMAPI/QuerySelector.js
@@ -0,0 +1,470 @@
+// Generated by ReScript, PLEASE EDIT WITH CARE
+
+import * as Primitive_option from "rescript/lib/es6/Primitive_option.js";
+
+function isInstanceOfHTMLAnchorElement(param) {
+ return (param instanceof HTMLAnchorElement);
+}
+
+function isInstanceOfHTMLAreaElement(param) {
+ return (param instanceof HTMLAreaElement);
+}
+
+function isInstanceOfHTMLAudioElement(param) {
+ return (param instanceof HTMLAudioElement);
+}
+
+function isInstanceOfHTMLBaseElement(param) {
+ return (param instanceof HTMLBaseElement);
+}
+
+function isInstanceOfHTMLBodyElement(param) {
+ return (param instanceof HTMLBodyElement);
+}
+
+function isInstanceOfHTMLBRElement(param) {
+ return (param instanceof HTMLBRElement);
+}
+
+function isInstanceOfHTMLButtonElement(param) {
+ return (param instanceof HTMLButtonElement);
+}
+
+function isInstanceOfHTMLCanvasElement(param) {
+ return (param instanceof HTMLCanvasElement);
+}
+
+function isInstanceOfHTMLDataElement(param) {
+ return (param instanceof HTMLDataElement);
+}
+
+function isInstanceOfHTMLDataListElement(param) {
+ return (param instanceof HTMLDataListElement);
+}
+
+function isInstanceOfHTMLDetailsElement(param) {
+ return (param instanceof HTMLDetailsElement);
+}
+
+function isInstanceOfHTMLDialogElement(param) {
+ return (param instanceof HTMLDialogElement);
+}
+
+function isInstanceOfHTMLDivElement(param) {
+ return (param instanceof HTMLDivElement);
+}
+
+function isInstanceOfHTMLDListElement(param) {
+ return (param instanceof HTMLDListElement);
+}
+
+function isInstanceOfHTMLEmbedElement(param) {
+ return (param instanceof HTMLEmbedElement);
+}
+
+function isInstanceOfHTMLFieldSetElement(param) {
+ return (param instanceof HTMLFieldSetElement);
+}
+
+function isInstanceOfHTMLFormElement(param) {
+ return (param instanceof HTMLFormElement);
+}
+
+function isInstanceOfHTMLHRElement(param) {
+ return (param instanceof HTMLHRElement);
+}
+
+function isInstanceOfHTMLHeadElement(param) {
+ return (param instanceof HTMLHeadElement);
+}
+
+function isInstanceOfHTMLHeadingElement(param) {
+ return (param instanceof HTMLHeadingElement);
+}
+
+function isInstanceOfHTMLHtmlElement(param) {
+ return (param instanceof HTMLHtmlElement);
+}
+
+function isInstanceOfHTMLIFrameElement(param) {
+ return (param instanceof HTMLIFrameElement);
+}
+
+function isInstanceOfHTMLImageElement(param) {
+ return (param instanceof HTMLImageElement);
+}
+
+function isInstanceOfHTMLInputElement(param) {
+ return (param instanceof HTMLInputElement);
+}
+
+function isInstanceOfHTMLLabelElement(param) {
+ return (param instanceof HTMLLabelElement);
+}
+
+function isInstanceOfHTMLLegendElement(param) {
+ return (param instanceof HTMLLegendElement);
+}
+
+function isInstanceOfHTMLLIElement(param) {
+ return (param instanceof HTMLLIElement);
+}
+
+function isInstanceOfHTMLLinkElement(param) {
+ return (param instanceof HTMLLinkElement);
+}
+
+function isInstanceOfHTMLMapElement(param) {
+ return (param instanceof HTMLMapElement);
+}
+
+function isInstanceOfHTMLMediaElement(param) {
+ return (param instanceof HTMLMediaElement);
+}
+
+function isInstanceOfHTMLMenuElement(param) {
+ return (param instanceof HTMLMenuElement);
+}
+
+function isInstanceOfHTMLMetaElement(param) {
+ return (param instanceof HTMLMetaElement);
+}
+
+function isInstanceOfHTMLMeterElement(param) {
+ return (param instanceof HTMLMeterElement);
+}
+
+function isInstanceOfHTMLModElement(param) {
+ return (param instanceof HTMLModElement);
+}
+
+function isInstanceOfHTMLObjectElement(param) {
+ return (param instanceof HTMLObjectElement);
+}
+
+function isInstanceOfHTMLOListElement(param) {
+ return (param instanceof HTMLOListElement);
+}
+
+function isInstanceOfHTMLOptGroupElement(param) {
+ return (param instanceof HTMLOptGroupElement);
+}
+
+function isInstanceOfHTMLOptionElement(param) {
+ return (param instanceof HTMLOptionElement);
+}
+
+function isInstanceOfHTMLOutputElement(param) {
+ return (param instanceof HTMLOutputElement);
+}
+
+function isInstanceOfHTMLParagraphElement(param) {
+ return (param instanceof HTMLParagraphElement);
+}
+
+function isInstanceOfHTMLPictureElement(param) {
+ return (param instanceof HTMLPictureElement);
+}
+
+function isInstanceOfHTMLPreElement(param) {
+ return (param instanceof HTMLPreElement);
+}
+
+function isInstanceOfHTMLProgressElement(param) {
+ return (param instanceof HTMLProgressElement);
+}
+
+function isInstanceOfHTMLQuoteElement(param) {
+ return (param instanceof HTMLQuoteElement);
+}
+
+function isInstanceOfHTMLScriptElement(param) {
+ return (param instanceof HTMLScriptElement);
+}
+
+function isInstanceOfHTMLSelectElement(param) {
+ return (param instanceof HTMLSelectElement);
+}
+
+function isInstanceOfHTMLSlotElement(param) {
+ return (param instanceof HTMLSlotElement);
+}
+
+function isInstanceOfHTMLSourceElement(param) {
+ return (param instanceof HTMLSourceElement);
+}
+
+function isInstanceOfHTMLSpanElement(param) {
+ return (param instanceof HTMLSpanElement);
+}
+
+function isInstanceOfHTMLStyleElement(param) {
+ return (param instanceof HTMLStyleElement);
+}
+
+function isInstanceOfHTMLTableCaptionElement(param) {
+ return (param instanceof HTMLTableCaptionElement);
+}
+
+function isInstanceOfHTMLTableCellElement(param) {
+ return (param instanceof HTMLTableCellElement);
+}
+
+function isInstanceOfHTMLTableColElement(param) {
+ return (param instanceof HTMLTableColElement);
+}
+
+function isInstanceOfHTMLTableElement(param) {
+ return (param instanceof HTMLTableElement);
+}
+
+function isInstanceOfHTMLTableRowElement(param) {
+ return (param instanceof HTMLTableRowElement);
+}
+
+function isInstanceOfHTMLTableSectionElement(param) {
+ return (param instanceof HTMLTableSectionElement);
+}
+
+function isInstanceOfHTMLTemplateElement(param) {
+ return (param instanceof HTMLTemplateElement);
+}
+
+function isInstanceOfHTMLTextAreaElement(param) {
+ return (param instanceof HTMLTextAreaElement);
+}
+
+function isInstanceOfHTMLTimeElement(param) {
+ return (param instanceof HTMLTimeElement);
+}
+
+function isInstanceOfHTMLTitleElement(param) {
+ return (param instanceof HTMLTitleElement);
+}
+
+function isInstanceOfHTMLTrackElement(param) {
+ return (param instanceof HTMLTrackElement);
+}
+
+function isInstanceOfHTMLUListElement(param) {
+ return (param instanceof HTMLUListElement);
+}
+
+function isInstanceOfHTMLUnknownElement(param) {
+ return (param instanceof HTMLUnknownElement);
+}
+
+function isInstanceOfHTMLVideoElement(param) {
+ return (param instanceof HTMLVideoElement);
+}
+
+function Impl(T) {
+ let safeQuerySelector = (predicate, t, selector) => {
+ let e = t.querySelector(selector);
+ if (e === null || !predicate(t)) {
+ return;
+ } else {
+ return Primitive_option.some(e);
+ }
+ };
+ let querySelector_htmlAnchorElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLAnchorElement, t, selector);
+ let querySelector_htmlAreaElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLAreaElement, t, selector);
+ let querySelector_htmlAudioElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLAudioElement, t, selector);
+ let querySelector_htmlBaseElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLBaseElement, t, selector);
+ let querySelector_htmlBodyElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLBodyElement, t, selector);
+ let querySelector_htmlBRElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLBRElement, t, selector);
+ let querySelector_htmlButtonElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLButtonElement, t, selector);
+ let querySelector_htmlCanvasElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLCanvasElement, t, selector);
+ let querySelector_htmlDataElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLDataElement, t, selector);
+ let querySelector_htmlDataListElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLDataListElement, t, selector);
+ let querySelector_htmlDetailsElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLDetailsElement, t, selector);
+ let querySelector_htmlDialogElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLDialogElement, t, selector);
+ let querySelector_htmlDivElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLDivElement, t, selector);
+ let querySelector_htmlDListElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLDListElement, t, selector);
+ let querySelector_htmlEmbedElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLEmbedElement, t, selector);
+ let querySelector_htmlFieldSetElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLFieldSetElement, t, selector);
+ let querySelector_htmlFormElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLFormElement, t, selector);
+ let querySelector_htmlHRElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLHRElement, t, selector);
+ let querySelector_htmlHeadElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLHeadElement, t, selector);
+ let querySelector_htmlHeadingElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLHeadingElement, t, selector);
+ let querySelector_htmlHtmlElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLHtmlElement, t, selector);
+ let querySelector_htmlIFrameElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLIFrameElement, t, selector);
+ let querySelector_htmlImageElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLImageElement, t, selector);
+ let querySelector_htmlInputElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLInputElement, t, selector);
+ let querySelector_htmlLabelElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLLabelElement, t, selector);
+ let querySelector_htmlLegendElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLLegendElement, t, selector);
+ let querySelector_htmlLIElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLLIElement, t, selector);
+ let querySelector_htmlLinkElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLLinkElement, t, selector);
+ let querySelector_htmlMapElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLMapElement, t, selector);
+ let querySelector_htmlMediaElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLMediaElement, t, selector);
+ let querySelector_htmlMenuElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLMenuElement, t, selector);
+ let querySelector_htmlMetaElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLMetaElement, t, selector);
+ let querySelector_htmlMeterElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLMeterElement, t, selector);
+ let querySelector_htmlModElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLModElement, t, selector);
+ let querySelector_htmlObjectElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLObjectElement, t, selector);
+ let querySelector_htmlOListElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLOListElement, t, selector);
+ let querySelector_htmlOptGroupElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLOptGroupElement, t, selector);
+ let querySelector_htmlOptionElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLOptionElement, t, selector);
+ let querySelector_htmlOutputElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLOutputElement, t, selector);
+ let querySelector_htmlParagraphElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLParagraphElement, t, selector);
+ let querySelector_htmlPictureElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLPictureElement, t, selector);
+ let querySelector_htmlPreElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLPreElement, t, selector);
+ let querySelector_htmlProgressElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLProgressElement, t, selector);
+ let querySelector_htmlQuoteElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLQuoteElement, t, selector);
+ let querySelector_htmlScriptElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLScriptElement, t, selector);
+ let querySelector_htmlSelectElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLSelectElement, t, selector);
+ let querySelector_htmlSlotElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLSlotElement, t, selector);
+ let querySelector_htmlSourceElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLSourceElement, t, selector);
+ let querySelector_htmlSpanElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLSpanElement, t, selector);
+ let querySelector_htmlStyleElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLStyleElement, t, selector);
+ let querySelector_htmlTableCaptionElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTableCaptionElement, t, selector);
+ let querySelector_htmlTableCellElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTableCellElement, t, selector);
+ let querySelector_htmlTableColElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTableColElement, t, selector);
+ let querySelector_htmlTableElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTableElement, t, selector);
+ let querySelector_htmlTableRowElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTableRowElement, t, selector);
+ let querySelector_htmlTableSectionElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTableSectionElement, t, selector);
+ let querySelector_htmlTemplateElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTemplateElement, t, selector);
+ let querySelector_htmlTextAreaElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTextAreaElement, t, selector);
+ let querySelector_htmlTimeElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTimeElement, t, selector);
+ let querySelector_htmlTitleElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTitleElement, t, selector);
+ let querySelector_htmlTrackElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLTrackElement, t, selector);
+ let querySelector_htmlUListElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLUListElement, t, selector);
+ let querySelector_htmlUnknownElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLUnknownElement, t, selector);
+ let querySelector_htmlVideoElement = (t, selector) => safeQuerySelector(isInstanceOfHTMLVideoElement, t, selector);
+ return {
+ safeQuerySelector: safeQuerySelector,
+ querySelector_htmlAnchorElement: querySelector_htmlAnchorElement,
+ querySelector_htmlAreaElement: querySelector_htmlAreaElement,
+ querySelector_htmlAudioElement: querySelector_htmlAudioElement,
+ querySelector_htmlBaseElement: querySelector_htmlBaseElement,
+ querySelector_htmlBodyElement: querySelector_htmlBodyElement,
+ querySelector_htmlBRElement: querySelector_htmlBRElement,
+ querySelector_htmlButtonElement: querySelector_htmlButtonElement,
+ querySelector_htmlCanvasElement: querySelector_htmlCanvasElement,
+ querySelector_htmlDataElement: querySelector_htmlDataElement,
+ querySelector_htmlDataListElement: querySelector_htmlDataListElement,
+ querySelector_htmlDetailsElement: querySelector_htmlDetailsElement,
+ querySelector_htmlDialogElement: querySelector_htmlDialogElement,
+ querySelector_htmlDivElement: querySelector_htmlDivElement,
+ querySelector_htmlDListElement: querySelector_htmlDListElement,
+ querySelector_htmlEmbedElement: querySelector_htmlEmbedElement,
+ querySelector_htmlFieldSetElement: querySelector_htmlFieldSetElement,
+ querySelector_htmlFormElement: querySelector_htmlFormElement,
+ querySelector_htmlHRElement: querySelector_htmlHRElement,
+ querySelector_htmlHeadElement: querySelector_htmlHeadElement,
+ querySelector_htmlHeadingElement: querySelector_htmlHeadingElement,
+ querySelector_htmlHtmlElement: querySelector_htmlHtmlElement,
+ querySelector_htmlIFrameElement: querySelector_htmlIFrameElement,
+ querySelector_htmlImageElement: querySelector_htmlImageElement,
+ querySelector_htmlInputElement: querySelector_htmlInputElement,
+ querySelector_htmlLabelElement: querySelector_htmlLabelElement,
+ querySelector_htmlLegendElement: querySelector_htmlLegendElement,
+ querySelector_htmlLIElement: querySelector_htmlLIElement,
+ querySelector_htmlLinkElement: querySelector_htmlLinkElement,
+ querySelector_htmlMapElement: querySelector_htmlMapElement,
+ querySelector_htmlMediaElement: querySelector_htmlMediaElement,
+ querySelector_htmlMenuElement: querySelector_htmlMenuElement,
+ querySelector_htmlMetaElement: querySelector_htmlMetaElement,
+ querySelector_htmlMeterElement: querySelector_htmlMeterElement,
+ querySelector_htmlModElement: querySelector_htmlModElement,
+ querySelector_htmlObjectElement: querySelector_htmlObjectElement,
+ querySelector_htmlOListElement: querySelector_htmlOListElement,
+ querySelector_htmlOptGroupElement: querySelector_htmlOptGroupElement,
+ querySelector_htmlOptionElement: querySelector_htmlOptionElement,
+ querySelector_htmlOutputElement: querySelector_htmlOutputElement,
+ querySelector_htmlParagraphElement: querySelector_htmlParagraphElement,
+ querySelector_htmlPictureElement: querySelector_htmlPictureElement,
+ querySelector_htmlPreElement: querySelector_htmlPreElement,
+ querySelector_htmlProgressElement: querySelector_htmlProgressElement,
+ querySelector_htmlQuoteElement: querySelector_htmlQuoteElement,
+ querySelector_htmlScriptElement: querySelector_htmlScriptElement,
+ querySelector_htmlSelectElement: querySelector_htmlSelectElement,
+ querySelector_htmlSlotElement: querySelector_htmlSlotElement,
+ querySelector_htmlSourceElement: querySelector_htmlSourceElement,
+ querySelector_htmlSpanElement: querySelector_htmlSpanElement,
+ querySelector_htmlStyleElement: querySelector_htmlStyleElement,
+ querySelector_htmlTableCaptionElement: querySelector_htmlTableCaptionElement,
+ querySelector_htmlTableCellElement: querySelector_htmlTableCellElement,
+ querySelector_htmlTableColElement: querySelector_htmlTableColElement,
+ querySelector_htmlTableElement: querySelector_htmlTableElement,
+ querySelector_htmlTableRowElement: querySelector_htmlTableRowElement,
+ querySelector_htmlTableSectionElement: querySelector_htmlTableSectionElement,
+ querySelector_htmlTemplateElement: querySelector_htmlTemplateElement,
+ querySelector_htmlTextAreaElement: querySelector_htmlTextAreaElement,
+ querySelector_htmlTimeElement: querySelector_htmlTimeElement,
+ querySelector_htmlTitleElement: querySelector_htmlTitleElement,
+ querySelector_htmlTrackElement: querySelector_htmlTrackElement,
+ querySelector_htmlUListElement: querySelector_htmlUListElement,
+ querySelector_htmlUnknownElement: querySelector_htmlUnknownElement,
+ querySelector_htmlVideoElement: querySelector_htmlVideoElement
+ };
+}
+
+export {
+ isInstanceOfHTMLAnchorElement,
+ isInstanceOfHTMLAreaElement,
+ isInstanceOfHTMLAudioElement,
+ isInstanceOfHTMLBaseElement,
+ isInstanceOfHTMLBodyElement,
+ isInstanceOfHTMLBRElement,
+ isInstanceOfHTMLButtonElement,
+ isInstanceOfHTMLCanvasElement,
+ isInstanceOfHTMLDataElement,
+ isInstanceOfHTMLDataListElement,
+ isInstanceOfHTMLDetailsElement,
+ isInstanceOfHTMLDialogElement,
+ isInstanceOfHTMLDivElement,
+ isInstanceOfHTMLDListElement,
+ isInstanceOfHTMLEmbedElement,
+ isInstanceOfHTMLFieldSetElement,
+ isInstanceOfHTMLFormElement,
+ isInstanceOfHTMLHRElement,
+ isInstanceOfHTMLHeadElement,
+ isInstanceOfHTMLHeadingElement,
+ isInstanceOfHTMLHtmlElement,
+ isInstanceOfHTMLIFrameElement,
+ isInstanceOfHTMLImageElement,
+ isInstanceOfHTMLInputElement,
+ isInstanceOfHTMLLabelElement,
+ isInstanceOfHTMLLegendElement,
+ isInstanceOfHTMLLIElement,
+ isInstanceOfHTMLLinkElement,
+ isInstanceOfHTMLMapElement,
+ isInstanceOfHTMLMediaElement,
+ isInstanceOfHTMLMenuElement,
+ isInstanceOfHTMLMetaElement,
+ isInstanceOfHTMLMeterElement,
+ isInstanceOfHTMLModElement,
+ isInstanceOfHTMLObjectElement,
+ isInstanceOfHTMLOListElement,
+ isInstanceOfHTMLOptGroupElement,
+ isInstanceOfHTMLOptionElement,
+ isInstanceOfHTMLOutputElement,
+ isInstanceOfHTMLParagraphElement,
+ isInstanceOfHTMLPictureElement,
+ isInstanceOfHTMLPreElement,
+ isInstanceOfHTMLProgressElement,
+ isInstanceOfHTMLQuoteElement,
+ isInstanceOfHTMLScriptElement,
+ isInstanceOfHTMLSelectElement,
+ isInstanceOfHTMLSlotElement,
+ isInstanceOfHTMLSourceElement,
+ isInstanceOfHTMLSpanElement,
+ isInstanceOfHTMLStyleElement,
+ isInstanceOfHTMLTableCaptionElement,
+ isInstanceOfHTMLTableCellElement,
+ isInstanceOfHTMLTableColElement,
+ isInstanceOfHTMLTableElement,
+ isInstanceOfHTMLTableRowElement,
+ isInstanceOfHTMLTableSectionElement,
+ isInstanceOfHTMLTemplateElement,
+ isInstanceOfHTMLTextAreaElement,
+ isInstanceOfHTMLTimeElement,
+ isInstanceOfHTMLTitleElement,
+ isInstanceOfHTMLTrackElement,
+ isInstanceOfHTMLUListElement,
+ isInstanceOfHTMLUnknownElement,
+ isInstanceOfHTMLVideoElement,
+ Impl,
+}
+/* No side effect */
diff --git a/src/DOMAPI/QuerySelector.res b/src/DOMAPI/QuerySelector.res
new file mode 100644
index 0000000..2cad642
--- /dev/null
+++ b/src/DOMAPI/QuerySelector.res
@@ -0,0 +1,317 @@
+open Prelude
+open DOMAPI
+
+let isInstanceOfHTMLAnchorElement = (_: 't): bool => %raw(`param instanceof HTMLAnchorElement`)
+let isInstanceOfHTMLAreaElement = (_: 't): bool => %raw(`param instanceof HTMLAreaElement`)
+let isInstanceOfHTMLAudioElement = (_: 't): bool => %raw(`param instanceof HTMLAudioElement`)
+let isInstanceOfHTMLBaseElement = (_: 't): bool => %raw(`param instanceof HTMLBaseElement`)
+let isInstanceOfHTMLBodyElement = (_: 't): bool => %raw(`param instanceof HTMLBodyElement`)
+let isInstanceOfHTMLBRElement = (_: 't): bool => %raw(`param instanceof HTMLBRElement`)
+let isInstanceOfHTMLButtonElement = (_: 't): bool => %raw(`param instanceof HTMLButtonElement`)
+let isInstanceOfHTMLCanvasElement = (_: 't): bool => %raw(`param instanceof HTMLCanvasElement`)
+let isInstanceOfHTMLDataElement = (_: 't): bool => %raw(`param instanceof HTMLDataElement`)
+let isInstanceOfHTMLDataListElement = (_: 't): bool => %raw(`param instanceof HTMLDataListElement`)
+let isInstanceOfHTMLDetailsElement = (_: 't): bool => %raw(`param instanceof HTMLDetailsElement`)
+let isInstanceOfHTMLDialogElement = (_: 't): bool => %raw(`param instanceof HTMLDialogElement`)
+let isInstanceOfHTMLDivElement = (_: 't): bool => %raw(`param instanceof HTMLDivElement`)
+let isInstanceOfHTMLDListElement = (_: 't): bool => %raw(`param instanceof HTMLDListElement`)
+let isInstanceOfHTMLEmbedElement = (_: 't): bool => %raw(`param instanceof HTMLEmbedElement`)
+let isInstanceOfHTMLFieldSetElement = (_: 't): bool => %raw(`param instanceof HTMLFieldSetElement`)
+let isInstanceOfHTMLFormElement = (_: 't): bool => %raw(`param instanceof HTMLFormElement`)
+let isInstanceOfHTMLHRElement = (_: 't): bool => %raw(`param instanceof HTMLHRElement`)
+let isInstanceOfHTMLHeadElement = (_: 't): bool => %raw(`param instanceof HTMLHeadElement`)
+let isInstanceOfHTMLHeadingElement = (_: 't): bool => %raw(`param instanceof HTMLHeadingElement`)
+let isInstanceOfHTMLHtmlElement = (_: 't): bool => %raw(`param instanceof HTMLHtmlElement`)
+let isInstanceOfHTMLIFrameElement = (_: 't): bool => %raw(`param instanceof HTMLIFrameElement`)
+let isInstanceOfHTMLImageElement = (_: 't): bool => %raw(`param instanceof HTMLImageElement`)
+let isInstanceOfHTMLInputElement = (_: 't): bool => %raw(`param instanceof HTMLInputElement`)
+let isInstanceOfHTMLLabelElement = (_: 't): bool => %raw(`param instanceof HTMLLabelElement`)
+let isInstanceOfHTMLLegendElement = (_: 't): bool => %raw(`param instanceof HTMLLegendElement`)
+let isInstanceOfHTMLLIElement = (_: 't): bool => %raw(`param instanceof HTMLLIElement`)
+let isInstanceOfHTMLLinkElement = (_: 't): bool => %raw(`param instanceof HTMLLinkElement`)
+let isInstanceOfHTMLMapElement = (_: 't): bool => %raw(`param instanceof HTMLMapElement`)
+let isInstanceOfHTMLMediaElement = (_: 't): bool => %raw(`param instanceof HTMLMediaElement`)
+let isInstanceOfHTMLMenuElement = (_: 't): bool => %raw(`param instanceof HTMLMenuElement`)
+let isInstanceOfHTMLMetaElement = (_: 't): bool => %raw(`param instanceof HTMLMetaElement`)
+let isInstanceOfHTMLMeterElement = (_: 't): bool => %raw(`param instanceof HTMLMeterElement`)
+let isInstanceOfHTMLModElement = (_: 't): bool => %raw(`param instanceof HTMLModElement`)
+let isInstanceOfHTMLObjectElement = (_: 't): bool => %raw(`param instanceof HTMLObjectElement`)
+let isInstanceOfHTMLOListElement = (_: 't): bool => %raw(`param instanceof HTMLOListElement`)
+let isInstanceOfHTMLOptGroupElement = (_: 't): bool => %raw(`param instanceof HTMLOptGroupElement`)
+let isInstanceOfHTMLOptionElement = (_: 't): bool => %raw(`param instanceof HTMLOptionElement`)
+let isInstanceOfHTMLOutputElement = (_: 't): bool => %raw(`param instanceof HTMLOutputElement`)
+let isInstanceOfHTMLParagraphElement = (_: 't): bool =>
+ %raw(`param instanceof HTMLParagraphElement`)
+let isInstanceOfHTMLPictureElement = (_: 't): bool => %raw(`param instanceof HTMLPictureElement`)
+let isInstanceOfHTMLPreElement = (_: 't): bool => %raw(`param instanceof HTMLPreElement`)
+let isInstanceOfHTMLProgressElement = (_: 't): bool => %raw(`param instanceof HTMLProgressElement`)
+let isInstanceOfHTMLQuoteElement = (_: 't): bool => %raw(`param instanceof HTMLQuoteElement`)
+let isInstanceOfHTMLScriptElement = (_: 't): bool => %raw(`param instanceof HTMLScriptElement`)
+let isInstanceOfHTMLSelectElement = (_: 't): bool => %raw(`param instanceof HTMLSelectElement`)
+let isInstanceOfHTMLSlotElement = (_: 't): bool => %raw(`param instanceof HTMLSlotElement`)
+let isInstanceOfHTMLSourceElement = (_: 't): bool => %raw(`param instanceof HTMLSourceElement`)
+let isInstanceOfHTMLSpanElement = (_: 't): bool => %raw(`param instanceof HTMLSpanElement`)
+let isInstanceOfHTMLStyleElement = (_: 't): bool => %raw(`param instanceof HTMLStyleElement`)
+let isInstanceOfHTMLTableCaptionElement = (_: 't): bool =>
+ %raw(`param instanceof HTMLTableCaptionElement`)
+let isInstanceOfHTMLTableCellElement = (_: 't): bool =>
+ %raw(`param instanceof HTMLTableCellElement`)
+let isInstanceOfHTMLTableColElement = (_: 't): bool => %raw(`param instanceof HTMLTableColElement`)
+let isInstanceOfHTMLTableElement = (_: 't): bool => %raw(`param instanceof HTMLTableElement`)
+let isInstanceOfHTMLTableRowElement = (_: 't): bool => %raw(`param instanceof HTMLTableRowElement`)
+let isInstanceOfHTMLTableSectionElement = (_: 't): bool =>
+ %raw(`param instanceof HTMLTableSectionElement`)
+let isInstanceOfHTMLTemplateElement = (_: 't): bool => %raw(`param instanceof HTMLTemplateElement`)
+let isInstanceOfHTMLTextAreaElement = (_: 't): bool => %raw(`param instanceof HTMLTextAreaElement`)
+let isInstanceOfHTMLTimeElement = (_: 't): bool => %raw(`param instanceof HTMLTimeElement`)
+let isInstanceOfHTMLTitleElement = (_: 't): bool => %raw(`param instanceof HTMLTitleElement`)
+let isInstanceOfHTMLTrackElement = (_: 't): bool => %raw(`param instanceof HTMLTrackElement`)
+let isInstanceOfHTMLUListElement = (_: 't): bool => %raw(`param instanceof HTMLUListElement`)
+let isInstanceOfHTMLUnknownElement = (_: 't): bool => %raw(`param instanceof HTMLUnknownElement`)
+let isInstanceOfHTMLVideoElement = (_: 't): bool => %raw(`param instanceof HTMLVideoElement`)
+
+module Impl = (
+ T: {
+ type t
+ },
+) => {
+ /**
+`querySelector(T.t, string)`
+
+Returns the first element that is a descendant of node that matches selectors.
+If nothing matches, the result is `null`. Use `querySelector_` helpers to get a typed result.
+
+```res
+t->querySelector("#myCanvas")
+```
+
+[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Document/querySelector)
+ */
+ @send
+ external querySelector: (T.t, string) => null = "querySelector"
+
+ let safeQuerySelector = (predicate: T.t => bool, t: T.t, selector: string): option<'return> => {
+ let e = querySelector(t, selector)
+ switch e {
+ | Null.Null => None
+ | Null.Value(e) => predicate(t) ? Some(unsafeConversation(e)) : None
+ }
+ }
+
+ let querySelector_htmlAnchorElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLAnchorElement, t, selector)
+ }
+ let querySelector_htmlAreaElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLAreaElement, t, selector)
+ }
+ let querySelector_htmlAudioElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLAudioElement, t, selector)
+ }
+ let querySelector_htmlBaseElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLBaseElement, t, selector)
+ }
+ let querySelector_htmlBodyElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLBodyElement, t, selector)
+ }
+ let querySelector_htmlBRElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLBRElement, t, selector)
+ }
+ let querySelector_htmlButtonElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLButtonElement, t, selector)
+ }
+ let querySelector_htmlCanvasElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLCanvasElement, t, selector)
+ }
+ let querySelector_htmlDataElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLDataElement, t, selector)
+ }
+ let querySelector_htmlDataListElement = (t: T.t, selector: string): option<
+ htmlDataListElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLDataListElement, t, selector)
+ }
+ let querySelector_htmlDetailsElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLDetailsElement, t, selector)
+ }
+ let querySelector_htmlDialogElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLDialogElement, t, selector)
+ }
+ let querySelector_htmlDivElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLDivElement, t, selector)
+ }
+ let querySelector_htmlDListElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLDListElement, t, selector)
+ }
+ let querySelector_htmlEmbedElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLEmbedElement, t, selector)
+ }
+ let querySelector_htmlFieldSetElement = (t: T.t, selector: string): option<
+ htmlFieldSetElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLFieldSetElement, t, selector)
+ }
+ let querySelector_htmlFormElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLFormElement, t, selector)
+ }
+ let querySelector_htmlHRElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLHRElement, t, selector)
+ }
+ let querySelector_htmlHeadElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLHeadElement, t, selector)
+ }
+ let querySelector_htmlHeadingElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLHeadingElement, t, selector)
+ }
+ let querySelector_htmlHtmlElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLHtmlElement, t, selector)
+ }
+ let querySelector_htmlIFrameElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLIFrameElement, t, selector)
+ }
+ let querySelector_htmlImageElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLImageElement, t, selector)
+ }
+ let querySelector_htmlInputElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLInputElement, t, selector)
+ }
+ let querySelector_htmlLabelElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLLabelElement, t, selector)
+ }
+ let querySelector_htmlLegendElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLLegendElement, t, selector)
+ }
+ let querySelector_htmlLIElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLLIElement, t, selector)
+ }
+ let querySelector_htmlLinkElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLLinkElement, t, selector)
+ }
+ let querySelector_htmlMapElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLMapElement, t, selector)
+ }
+ let querySelector_htmlMediaElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLMediaElement, t, selector)
+ }
+ let querySelector_htmlMenuElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLMenuElement, t, selector)
+ }
+ let querySelector_htmlMetaElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLMetaElement, t, selector)
+ }
+ let querySelector_htmlMeterElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLMeterElement, t, selector)
+ }
+ let querySelector_htmlModElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLModElement, t, selector)
+ }
+ let querySelector_htmlObjectElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLObjectElement, t, selector)
+ }
+ let querySelector_htmlOListElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLOListElement, t, selector)
+ }
+ let querySelector_htmlOptGroupElement = (t: T.t, selector: string): option<
+ htmlOptGroupElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLOptGroupElement, t, selector)
+ }
+ let querySelector_htmlOptionElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLOptionElement, t, selector)
+ }
+ let querySelector_htmlOutputElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLOutputElement, t, selector)
+ }
+ let querySelector_htmlParagraphElement = (t: T.t, selector: string): option<
+ htmlParagraphElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLParagraphElement, t, selector)
+ }
+ let querySelector_htmlPictureElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLPictureElement, t, selector)
+ }
+ let querySelector_htmlPreElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLPreElement, t, selector)
+ }
+ let querySelector_htmlProgressElement = (t: T.t, selector: string): option<
+ htmlProgressElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLProgressElement, t, selector)
+ }
+ let querySelector_htmlQuoteElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLQuoteElement, t, selector)
+ }
+ let querySelector_htmlScriptElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLScriptElement, t, selector)
+ }
+ let querySelector_htmlSelectElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLSelectElement, t, selector)
+ }
+ let querySelector_htmlSlotElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLSlotElement, t, selector)
+ }
+ let querySelector_htmlSourceElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLSourceElement, t, selector)
+ }
+ let querySelector_htmlSpanElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLSpanElement, t, selector)
+ }
+ let querySelector_htmlStyleElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLStyleElement, t, selector)
+ }
+ let querySelector_htmlTableCaptionElement = (t: T.t, selector: string): option<
+ htmlTableCaptionElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLTableCaptionElement, t, selector)
+ }
+ let querySelector_htmlTableCellElement = (t: T.t, selector: string): option<
+ htmlTableCellElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLTableCellElement, t, selector)
+ }
+ let querySelector_htmlTableColElement = (t: T.t, selector: string): option<
+ htmlTableColElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLTableColElement, t, selector)
+ }
+ let querySelector_htmlTableElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLTableElement, t, selector)
+ }
+ let querySelector_htmlTableRowElement = (t: T.t, selector: string): option<
+ htmlTableRowElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLTableRowElement, t, selector)
+ }
+ let querySelector_htmlTableSectionElement = (t: T.t, selector: string): option<
+ htmlTableSectionElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLTableSectionElement, t, selector)
+ }
+ let querySelector_htmlTemplateElement = (t: T.t, selector: string): option<
+ htmlTemplateElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLTemplateElement, t, selector)
+ }
+ let querySelector_htmlTextAreaElement = (t: T.t, selector: string): option<
+ htmlTextAreaElement,
+ > => {
+ safeQuerySelector(isInstanceOfHTMLTextAreaElement, t, selector)
+ }
+ let querySelector_htmlTimeElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLTimeElement, t, selector)
+ }
+ let querySelector_htmlTitleElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLTitleElement, t, selector)
+ }
+ let querySelector_htmlTrackElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLTrackElement, t, selector)
+ }
+ let querySelector_htmlUListElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLUListElement, t, selector)
+ }
+ let querySelector_htmlUnknownElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLUnknownElement, t, selector)
+ }
+ let querySelector_htmlVideoElement = (t: T.t, selector: string): option => {
+ safeQuerySelector(isInstanceOfHTMLVideoElement, t, selector)
+ }
+}
diff --git a/tests/DOMAPI/HTMLCanvasElement__tes.js b/tests/DOMAPI/HTMLCanvasElement__tes.js
index c135597..f1e62e4 100644
--- a/tests/DOMAPI/HTMLCanvasElement__tes.js
+++ b/tests/DOMAPI/HTMLCanvasElement__tes.js
@@ -1,39 +1,38 @@
// Generated by ReScript, PLEASE EDIT WITH CARE
+import * as Option from "rescript/lib/es6/Option.js";
+import * as Document$WebAPI from "../../src/DOMAPI/Document.js";
import * as FillStyle$WebAPI from "../../src/DOMAPI/FillStyle.js";
-
-let myCanvas = document.getElementById("myCanvas");
-
-let ctx = myCanvas.getContext("2d");
-
-ctx.fillStyle = "red";
-
-ctx.fillRect(50, 50, 200, 200);
-
-ctx.fillStyle = "black";
-
-ctx.font = "2px Tahoma";
-
-ctx.textBaseline = "top";
-
-ctx.fillText("MY TEXT", 60, 60);
-
-let color = FillStyle$WebAPI.decode(ctx.fillStyle);
-
-switch (color.TAG) {
- case "String" :
- console.log("Color: " + color._0);
- break;
- case "CanvasGradient" :
- console.log("CanvasGradient");
- break;
- case "CanvasPattern" :
- console.log("CanvasPattern");
- break;
-}
+import * as HTMLDivElement$WebAPI from "../../src/DOMAPI/HTMLDivElement.js";
+
+let myDiv = Document$WebAPI.querySelector_htmlDivElement(document, "#myDiv");
+
+let myCanvas = Option.flatMap(myDiv, div => HTMLDivElement$WebAPI.querySelector_htmlCanvasElement(div, "#myCanvas"));
+
+Option.forEach(myCanvas, myCanvas => {
+ let ctx = myCanvas.getContext("2d");
+ ctx.fillStyle = "red";
+ ctx.fillRect(50, 50, 200, 200);
+ ctx.fillStyle = "black";
+ ctx.font = "2px Tahoma";
+ ctx.textBaseline = "top";
+ ctx.fillText("MY TEXT", 60, 60);
+ let color = FillStyle$WebAPI.decode(ctx.fillStyle);
+ switch (color.TAG) {
+ case "String" :
+ console.log("Color: " + color._0);
+ return;
+ case "CanvasGradient" :
+ console.log("CanvasGradient");
+ return;
+ case "CanvasPattern" :
+ console.log("CanvasPattern");
+ return;
+ }
+});
export {
+ myDiv,
myCanvas,
- ctx,
}
-/* myCanvas Not a pure module */
+/* myDiv Not a pure module */
diff --git a/tests/DOMAPI/HTMLCanvasElement__tes.res b/tests/DOMAPI/HTMLCanvasElement__tes.res
index 920340b..d427b3a 100644
--- a/tests/DOMAPI/HTMLCanvasElement__tes.res
+++ b/tests/DOMAPI/HTMLCanvasElement__tes.res
@@ -1,19 +1,24 @@
open WebAPI.Global
-let myCanvas: DOMAPI.htmlCanvasElement =
- document->Document.getElementById("myCanvas")->Prelude.unsafeConversation
-let ctx = myCanvas->HTMLCanvasElement.getContext_2D
+let myDiv = document->Document.querySelector_htmlDivElement("#myDiv")
-ctx.fillStyle = FillStyle.fromString("red")
-ctx->CanvasRenderingContext2D.fillRect(~x=50., ~y=50., ~w=200., ~h=200.)
+let myCanvas: option =
+ myDiv->Option.flatMap(div => div->HTMLDivElement.querySelector_htmlCanvasElement("#myCanvas"))
-ctx.fillStyle = FillStyle.fromString("black")
-ctx.font = "2px Tahoma"
-ctx.textBaseline = CanvasAPI.Top
-ctx->CanvasRenderingContext2D.fillText(~text="MY TEXT", ~x=60., ~y=60.)
+myCanvas->Option.forEach(myCanvas => {
+ let ctx = myCanvas->HTMLCanvasElement.getContext_2D
-switch ctx.fillStyle->FillStyle.decode {
-| FillStyle.String(color) => Console.log(`Color: ${color}`)
-| FillStyle.CanvasGradient(_) => Console.log("CanvasGradient")
-| FillStyle.CanvasPattern(_) => Console.log("CanvasPattern")
-}
+ ctx.fillStyle = FillStyle.fromString("red")
+ ctx->CanvasRenderingContext2D.fillRect(~x=50., ~y=50., ~w=200., ~h=200.)
+
+ ctx.fillStyle = FillStyle.fromString("black")
+ ctx.font = "2px Tahoma"
+ ctx.textBaseline = CanvasAPI.Top
+ ctx->CanvasRenderingContext2D.fillText(~text="MY TEXT", ~x=60., ~y=60.)
+
+ switch ctx.fillStyle->FillStyle.decode {
+ | FillStyle.String(color) => Console.log(`Color: ${color}`)
+ | FillStyle.CanvasGradient(_) => Console.log("CanvasGradient")
+ | FillStyle.CanvasPattern(_) => Console.log("CanvasPattern")
+ }
+})