diff --git a/src/DOM/HTML/HTMLAnchorElement.js b/src/DOM/HTML/HTMLAnchorElement.js
new file mode 100644
index 0000000..a32f9ec
--- /dev/null
+++ b/src/DOM/HTML/HTMLAnchorElement.js
@@ -0,0 +1,122 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLAnchorElement
+
+exports.target = function (a) {
+ return function () {
+ return a.target;
+ };
+};
+
+exports.setTarget = function (target) {
+ return function (a) {
+ return function () {
+ a.target = target;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.download = function (a) {
+ return function () {
+ return a.download;
+ };
+};
+
+exports.setDownload = function (download) {
+ return function (a) {
+ return function () {
+ a.download = download;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.rel = function (a) {
+ return function () {
+ return a.rel;
+ };
+};
+
+exports.setRel = function (rel) {
+ return function (a) {
+ return function () {
+ a.rel = rel;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.rev = function (a) {
+ return function () {
+ return a.rev;
+ };
+};
+
+exports.setRev = function (rev) {
+ return function (a) {
+ return function () {
+ a.rev = rev;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.relList = function (a) {
+ return function () {
+ return a.relList;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.hreflang = function (a) {
+ return function () {
+ return a.hreflang;
+ };
+};
+
+exports.setHreflang = function (hreflang) {
+ return function (a) {
+ return function () {
+ a.hreflang = hreflang;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (a) {
+ return function () {
+ return a.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (a) {
+ return function () {
+ a.type = type;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.text = function (a) {
+ return function () {
+ return a.text;
+ };
+};
+
+exports.setText = function (text) {
+ return function (a) {
+ return function () {
+ a.text = text;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLAnchorElement.purs b/src/DOM/HTML/HTMLAnchorElement.purs
new file mode 100644
index 0000000..bfce7ab
--- /dev/null
+++ b/src/DOM/HTML/HTMLAnchorElement.purs
@@ -0,0 +1,32 @@
+module DOM.HTML.HTMLAnchorElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLAnchorElement())
+import DOM.Node.Types (DOMTokenList())
+
+foreign import target :: forall eff. HTMLAnchorElement -> Eff (dom :: DOM | eff) String
+foreign import setTarget :: forall eff. String -> HTMLAnchorElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import download :: forall eff. HTMLAnchorElement -> Eff (dom :: DOM | eff) String
+foreign import setDownload :: forall eff. String -> HTMLAnchorElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import rel :: forall eff. HTMLAnchorElement -> Eff (dom :: DOM | eff) String
+foreign import setRel :: forall eff. String -> HTMLAnchorElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import rev :: forall eff. HTMLAnchorElement -> Eff (dom :: DOM | eff) String
+foreign import setRev :: forall eff. String -> HTMLAnchorElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import relList :: forall eff. HTMLAnchorElement -> Eff (dom :: DOM | eff) DOMTokenList
+
+foreign import hreflang :: forall eff. HTMLAnchorElement -> Eff (dom :: DOM | eff) String
+foreign import setHreflang :: forall eff. String -> HTMLAnchorElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLAnchorElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLAnchorElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import text :: forall eff. HTMLAnchorElement -> Eff (dom :: DOM | eff) String
+foreign import setText :: forall eff. String -> HTMLAnchorElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLAreaElement.js b/src/DOM/HTML/HTMLAreaElement.js
new file mode 100644
index 0000000..a4afc40
--- /dev/null
+++ b/src/DOM/HTML/HTMLAreaElement.js
@@ -0,0 +1,138 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLAreaElement
+
+exports.alt = function (area) {
+ return function () {
+ return area.alt;
+ };
+};
+
+exports.setAlt = function (alt) {
+ return function (area) {
+ return function () {
+ area.alt = alt;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.coords = function (area) {
+ return function () {
+ return area.coords;
+ };
+};
+
+exports.setCoords = function (coords) {
+ return function (area) {
+ return function () {
+ area.coords = coords;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.shape = function (area) {
+ return function () {
+ return area.shape;
+ };
+};
+
+exports.setShape = function (shape) {
+ return function (area) {
+ return function () {
+ area.shape = shape;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.target = function (area) {
+ return function () {
+ return area.target;
+ };
+};
+
+exports.setTarget = function (target) {
+ return function (area) {
+ return function () {
+ area.target = target;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.download = function (area) {
+ return function () {
+ return area.download;
+ };
+};
+
+exports.setDownload = function (download) {
+ return function (area) {
+ return function () {
+ area.download = download;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.rel = function (area) {
+ return function () {
+ return area.rel;
+ };
+};
+
+exports.setRel = function (rel) {
+ return function (area) {
+ return function () {
+ area.rel = rel;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.relList = function (area) {
+ return function () {
+ return area.relList;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.hreflang = function (area) {
+ return function () {
+ return area.hreflang;
+ };
+};
+
+exports.setHreflang = function (hreflang) {
+ return function (area) {
+ return function () {
+ area.hreflang = hreflang;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (area) {
+ return function () {
+ return area.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (area) {
+ return function () {
+ area.type = type;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLAreaElement.purs b/src/DOM/HTML/HTMLAreaElement.purs
new file mode 100644
index 0000000..cd39488
--- /dev/null
+++ b/src/DOM/HTML/HTMLAreaElement.purs
@@ -0,0 +1,35 @@
+module DOM.HTML.HTMLAreaElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLAreaElement())
+import DOM.Node.Types (DOMTokenList())
+
+foreign import alt :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setAlt :: forall eff. String -> HTMLAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import coords :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setCoords :: forall eff. String -> HTMLAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import shape :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setShape :: forall eff. String -> HTMLAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import target :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setTarget :: forall eff. String -> HTMLAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import download :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setDownload :: forall eff. String -> HTMLAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import rel :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setRel :: forall eff. String -> HTMLAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import relList :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) DOMTokenList
+
+foreign import hreflang :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setHreflang :: forall eff. String -> HTMLAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLAreaElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLBaseElement.js b/src/DOM/HTML/HTMLBaseElement.js
new file mode 100644
index 0000000..2c67ae9
--- /dev/null
+++ b/src/DOM/HTML/HTMLBaseElement.js
@@ -0,0 +1,34 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLBaseElement
+
+exports.href = function (base) {
+ return function () {
+ return base.href;
+ };
+};
+
+exports.setHref = function (href) {
+ return function (base) {
+ return function () {
+ base.href = href;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.target = function (base) {
+ return function () {
+ return base.target;
+ };
+};
+
+exports.setTarget = function (target) {
+ return function (base) {
+ return function () {
+ base.target = target;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLBaseElement.purs b/src/DOM/HTML/HTMLBaseElement.purs
new file mode 100644
index 0000000..4eb4a8f
--- /dev/null
+++ b/src/DOM/HTML/HTMLBaseElement.purs
@@ -0,0 +1,14 @@
+module DOM.HTML.HTMLBaseElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLBaseElement())
+
+foreign import href :: forall eff. HTMLBaseElement -> Eff (dom :: DOM | eff) String
+foreign import setHref :: forall eff. String -> HTMLBaseElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import target :: forall eff. HTMLBaseElement -> Eff (dom :: DOM | eff) String
+foreign import setTarget :: forall eff. String -> HTMLBaseElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLButtonElement.js b/src/DOM/HTML/HTMLButtonElement.js
new file mode 100644
index 0000000..c910ddf
--- /dev/null
+++ b/src/DOM/HTML/HTMLButtonElement.js
@@ -0,0 +1,220 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLButtonElement
+
+exports.autofocus = function (button) {
+ return function () {
+ return button.autofocus;
+ };
+};
+
+exports.setAutofocus = function (autofocus) {
+ return function (button) {
+ return function () {
+ button.autofocus = autofocus;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.disabled = function (button) {
+ return function () {
+ return button.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (button) {
+ return function () {
+ button.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.form = function (button) {
+ return function () {
+ return button.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formAction = function (button) {
+ return function () {
+ return button.formAction;
+ };
+};
+
+exports.setFormAction = function (formAction) {
+ return function (button) {
+ return function () {
+ button.formAction = formAction;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formEnctype = function (button) {
+ return function () {
+ return button.formEnctype;
+ };
+};
+
+exports.setFormEnctype = function (formEnctype) {
+ return function (button) {
+ return function () {
+ button.formEnctype = formEnctype;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formMethod = function (button) {
+ return function () {
+ return button.formMethod;
+ };
+};
+
+exports.setFormMethod = function (formMethod) {
+ return function (button) {
+ return function () {
+ button.formMethod = formMethod;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formNoValidate = function (button) {
+ return function () {
+ return button.formNoValidate;
+ };
+};
+
+exports.setFormNoValidate = function (formNoValidate) {
+ return function (button) {
+ return function () {
+ button.formNoValidate = formNoValidate;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formTarget = function (button) {
+ return function () {
+ return button.formTarget;
+ };
+};
+
+exports.setFormTarget = function (formTarget) {
+ return function (button) {
+ return function () {
+ button.formTarget = formTarget;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (button) {
+ return function () {
+ return button.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (button) {
+ return function () {
+ button.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (button) {
+ return function () {
+ return button.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (button) {
+ return function () {
+ button.type = type;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.value = function (button) {
+ return function () {
+ return button.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (button) {
+ return function () {
+ button.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.willValidate = function (button) {
+ return function () {
+ return button.willValidate;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validity = function (button) {
+ return function () {
+ return button.validity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validationMessage = function (button) {
+ return function () {
+ return button.validationMessage;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (button) {
+ return function () {
+ return button.checkValidity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setCustomValidity = function (value) {
+ return function (button) {
+ return function () {
+ button.setCustomValidity(value);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.labels = function (button) {
+ return function () {
+ return button.labels;
+ };
+};
diff --git a/src/DOM/HTML/HTMLButtonElement.purs b/src/DOM/HTML/HTMLButtonElement.purs
new file mode 100644
index 0000000..71c0aed
--- /dev/null
+++ b/src/DOM/HTML/HTMLButtonElement.purs
@@ -0,0 +1,55 @@
+module DOM.HTML.HTMLButtonElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.Node.Types (NodeList())
+import DOM.HTML.Types (HTMLButtonElement(), HTMLFormElement(), ValidityState())
+
+foreign import autofocus :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAutofocus :: forall eff. Boolean -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import disabled :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import form :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import formAction :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String
+foreign import setFormAction :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import formEnctype :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String
+foreign import setFormEnctype :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import formMethod :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String
+foreign import setFormMethod :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import formNoValidate :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setFormNoValidate :: forall eff. Boolean -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import formTarget :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String
+foreign import setFormTarget :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import name :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import value :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String
+foreign import setValue :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import willValidate :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import validity :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) ValidityState
+
+foreign import validationMessage :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String
+
+foreign import checkValidity :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import setCustomValidity :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import labels :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) NodeList
diff --git a/src/DOM/HTML/HTMLCanvasElement.js b/src/DOM/HTML/HTMLCanvasElement.js
new file mode 100644
index 0000000..00e7d45
--- /dev/null
+++ b/src/DOM/HTML/HTMLCanvasElement.js
@@ -0,0 +1,34 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLCanvasElement
+
+exports.width = function (canvas) {
+ return function () {
+ return canvas.width;
+ };
+};
+
+exports.setWidth = function (width) {
+ return function (canvas) {
+ return function () {
+ canvas.width = width;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.height = function (canvas) {
+ return function () {
+ return canvas.height;
+ };
+};
+
+exports.setHeight = function (height) {
+ return function (canvas) {
+ return function () {
+ canvas.height = height;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLCanvasElement.purs b/src/DOM/HTML/HTMLCanvasElement.purs
new file mode 100644
index 0000000..5e6e8ce
--- /dev/null
+++ b/src/DOM/HTML/HTMLCanvasElement.purs
@@ -0,0 +1,22 @@
+module DOM.HTML.HTMLCanvasElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLCanvasElement())
+
+-- typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext;
+
+foreign import width :: forall eff. HTMLCanvasElement -> Eff (dom :: DOM | eff) Int
+foreign import setWidth :: forall eff. Int -> HTMLCanvasElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import height :: forall eff. HTMLCanvasElement -> Eff (dom :: DOM | eff) Int
+foreign import setHeight :: forall eff. Int -> HTMLCanvasElement -> Eff (dom :: DOM | eff) Unit
+
+-- RenderingContext? getContext(DOMString contextId, any... arguments);
+
+-- DOMString toDataURL(optional DOMString type, any... arguments);
+-- void toBlob(FileCallback? _callback, optional DOMString type, any... arguments);
+-- };
diff --git a/src/DOM/HTML/HTMLDataElement.js b/src/DOM/HTML/HTMLDataElement.js
new file mode 100644
index 0000000..430e428
--- /dev/null
+++ b/src/DOM/HTML/HTMLDataElement.js
@@ -0,0 +1,18 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLDataElement
+
+exports.value = function (data) {
+ return function () {
+ return data.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (data) {
+ return function () {
+ data.value = value;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLDataElement.purs b/src/DOM/HTML/HTMLDataElement.purs
new file mode 100644
index 0000000..5ad21a7
--- /dev/null
+++ b/src/DOM/HTML/HTMLDataElement.purs
@@ -0,0 +1,11 @@
+module DOM.HTML.HTMLDataElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLDataElement())
+
+foreign import value :: forall eff. HTMLDataElement -> Eff (dom :: DOM | eff) String
+foreign import setValue :: forall eff. String -> HTMLDataElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLDataListElement.js b/src/DOM/HTML/HTMLDataListElement.js
new file mode 100644
index 0000000..a1f2eab
--- /dev/null
+++ b/src/DOM/HTML/HTMLDataListElement.js
@@ -0,0 +1,10 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLDataListElement
+
+exports.options = function (dle) {
+ return function () {
+ return dle.options;
+ };
+};
diff --git a/src/DOM/HTML/HTMLDataListElement.purs b/src/DOM/HTML/HTMLDataListElement.purs
new file mode 100644
index 0000000..aaae10a
--- /dev/null
+++ b/src/DOM/HTML/HTMLDataListElement.purs
@@ -0,0 +1,9 @@
+module DOM.HTML.HTMLDataListElement where
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLDataListElement())
+import DOM.Node.Types (HTMLCollection())
+
+foreign import options :: forall eff. HTMLDataListElement -> Eff (dom :: DOM | eff) HTMLCollection
diff --git a/src/DOM/HTML/HTMLEmbedElement.js b/src/DOM/HTML/HTMLEmbedElement.js
new file mode 100644
index 0000000..2e26b21
--- /dev/null
+++ b/src/DOM/HTML/HTMLEmbedElement.js
@@ -0,0 +1,66 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLEmbedElement
+
+exports.src = function (embed) {
+ return function () {
+ return embed.src;
+ };
+};
+
+exports.setSrc = function (src) {
+ return function (embed) {
+ return function () {
+ embed.src = src;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (embed) {
+ return function () {
+ return embed.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (embed) {
+ return function () {
+ embed.type = type;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.width = function (embed) {
+ return function () {
+ return embed.width;
+ };
+};
+
+exports.setWidth = function (width) {
+ return function (embed) {
+ return function () {
+ embed.width = width;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.height = function (embed) {
+ return function () {
+ return embed.height;
+ };
+};
+
+exports.setHeight = function (height) {
+ return function (embed) {
+ return function () {
+ embed.height = height;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLEmbedElement.purs b/src/DOM/HTML/HTMLEmbedElement.purs
new file mode 100644
index 0000000..433a8af
--- /dev/null
+++ b/src/DOM/HTML/HTMLEmbedElement.purs
@@ -0,0 +1,20 @@
+module DOM.HTML.HTMLEmbedElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLEmbedElement())
+
+foreign import src :: forall eff. HTMLEmbedElement -> Eff (dom :: DOM | eff) String
+foreign import setSrc :: forall eff. String -> HTMLEmbedElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLEmbedElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLEmbedElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import width :: forall eff. HTMLEmbedElement -> Eff (dom :: DOM | eff) String
+foreign import setWidth :: forall eff. String -> HTMLEmbedElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import height :: forall eff. HTMLEmbedElement -> Eff (dom :: DOM | eff) String
+foreign import setHeight :: forall eff. String -> HTMLEmbedElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLFieldSetElement.js b/src/DOM/HTML/HTMLFieldSetElement.js
new file mode 100644
index 0000000..3306f2d
--- /dev/null
+++ b/src/DOM/HTML/HTMLFieldSetElement.js
@@ -0,0 +1,100 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLFieldSetElement
+
+exports.disabled = function (fieldset) {
+ return function () {
+ return fieldset.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (fieldset) {
+ return function () {
+ fieldset.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.form = function (fieldset) {
+ return function () {
+ return fieldset.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (fieldset) {
+ return function () {
+ return fieldset.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (fieldset) {
+ return function () {
+ fieldset.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (fieldset) {
+ return function () {
+ return fieldset.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (fieldset) {
+ return function () {
+ fieldset.type = type;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.willValidate = function (fieldset) {
+ return function () {
+ return fieldset.willValidate;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validity = function (fieldset) {
+ return function () {
+ return fieldset.validity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validationMessage = function (fieldset) {
+ return function () {
+ return fieldset.validationMessage;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (fieldset) {
+ return function () {
+ return fieldset.checkValidity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setCustomValidity = function (value) {
+ return function (fieldset) {
+ return function () {
+ fieldset.setCustomValidity(value);
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLFieldSetElement.purs b/src/DOM/HTML/HTMLFieldSetElement.purs
new file mode 100644
index 0000000..6913354
--- /dev/null
+++ b/src/DOM/HTML/HTMLFieldSetElement.purs
@@ -0,0 +1,34 @@
+module DOM.HTML.HTMLFieldSetElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLFieldSetElement(), HTMLFormElement(), ValidityState())
+
+foreign import disabled :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLFieldSetElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import form :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import name :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLFieldSetElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLFieldSetElement -> Eff (dom :: DOM | eff) Unit
+
+-- readonly attribute HTMLFormControlsCollection elements;
+
+foreign import willValidate :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import validity :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) ValidityState
+
+foreign import validationMessage :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) String
+
+foreign import checkValidity :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import setCustomValidity :: forall eff. String -> HTMLFieldSetElement -> Eff (dom :: DOM | eff) Unit
+
diff --git a/src/DOM/HTML/HTMLFormElement.js b/src/DOM/HTML/HTMLFormElement.js
new file mode 100644
index 0000000..75a4cb2
--- /dev/null
+++ b/src/DOM/HTML/HTMLFormElement.js
@@ -0,0 +1,178 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLFormElement
+
+exports.acceptCharset = function (form) {
+ return function () {
+ return form.acceptCharset;
+ };
+};
+
+exports.setAcceptCharset = function (acceptCharset) {
+ return function (form) {
+ return function () {
+ form.acceptCharset = acceptCharset;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.action = function (form) {
+ return function () {
+ return form.action;
+ };
+};
+
+exports.setAction = function (action) {
+ return function (form) {
+ return function () {
+ form.action = action;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.autocomplete = function (form) {
+ return function () {
+ return form.autocomplete;
+ };
+};
+
+exports.setAutocomplete = function (autocomplete) {
+ return function (form) {
+ return function () {
+ form.autocomplete = autocomplete;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.enctype = function (form) {
+ return function () {
+ return form.enctype;
+ };
+};
+
+exports.setEnctype = function (enctype) {
+ return function (form) {
+ return function () {
+ form.enctype = enctype;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.encoding = function (form) {
+ return function () {
+ return form.encoding;
+ };
+};
+
+exports.setEncoding = function (encoding) {
+ return function (form) {
+ return function () {
+ form.encoding = encoding;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.method = function (form) {
+ return function () {
+ return form.method;
+ };
+};
+
+exports.setMethod = function (method) {
+ return function (form) {
+ return function () {
+ form.method = method;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (form) {
+ return function () {
+ return form.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (form) {
+ return function () {
+ form.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.noValidate = function (form) {
+ return function () {
+ return form.noValidate;
+ };
+};
+
+exports.setNoValidate = function (noValidate) {
+ return function (form) {
+ return function () {
+ form.noValidate = noValidate;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.target = function (form) {
+ return function () {
+ return form.target;
+ };
+};
+
+exports.setTarget = function (target) {
+ return function (form) {
+ return function () {
+ form.target = target;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.length = function (form) {
+ return function () {
+ return form.length;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.submit = function (form) {
+ return function () {
+ form.submit();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.reset = function (form) {
+ return function () {
+ form.reset();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (form) {
+ return function () {
+ return form.checkValidity();
+ };
+};
diff --git a/src/DOM/HTML/HTMLFormElement.purs b/src/DOM/HTML/HTMLFormElement.purs
new file mode 100644
index 0000000..c59d107
--- /dev/null
+++ b/src/DOM/HTML/HTMLFormElement.purs
@@ -0,0 +1,46 @@
+module DOM.HTML.HTMLFormElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLFormElement())
+
+foreign import acceptCharset :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) String
+foreign import setAcceptCharset :: forall eff. String -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import action :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) String
+foreign import setAction :: forall eff. String -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import autocomplete :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) String
+foreign import setAutocomplete :: forall eff. String -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import enctype :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) String
+foreign import setEnctype :: forall eff. String -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import encoding :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) String
+foreign import setEncoding :: forall eff. String -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import method :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) String
+foreign import setMethod :: forall eff. String -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import name :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import noValidate :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setNoValidate :: forall eff. Boolean -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import target :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) String
+foreign import setTarget :: forall eff. String -> HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+
+-- readonly attribute HTMLFormControlsCollection elements;
+
+foreign import length :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) Int
+
+-- getter Element (unsigned long index);
+-- getter (RadioNodeList or Element) (DOMString name);
+
+foreign import submit :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+foreign import reset :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) Unit
+foreign import checkValidity :: forall eff. HTMLFormElement -> Eff (dom :: DOM | eff) Boolean
diff --git a/src/DOM/HTML/HTMLIFrameElement.js b/src/DOM/HTML/HTMLIFrameElement.js
new file mode 100644
index 0000000..faee712
--- /dev/null
+++ b/src/DOM/HTML/HTMLIFrameElement.js
@@ -0,0 +1,90 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLIFrameElement
+
+exports.src = function (iframe) {
+ return function () {
+ return iframe.src;
+ };
+};
+
+exports.setSrc = function (src) {
+ return function (iframe) {
+ return function () {
+ iframe.src = src;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.srcdoc = function (iframe) {
+ return function () {
+ return iframe.srcdoc;
+ };
+};
+
+exports.setSrcdoc = function (srcdoc) {
+ return function (iframe) {
+ return function () {
+ iframe.srcdoc = srcdoc;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (iframe) {
+ return function () {
+ return iframe.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (iframe) {
+ return function () {
+ iframe.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.width = function (iframe) {
+ return function () {
+ return iframe.width;
+ };
+};
+
+exports.setWidth = function (width) {
+ return function (iframe) {
+ return function () {
+ iframe.width = width;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.height = function (iframe) {
+ return function () {
+ return iframe.height;
+ };
+};
+
+exports.setHeight = function (height) {
+ return function (iframe) {
+ return function () {
+ iframe.height = height;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.contentDocument = function (iframe) {
+ return function () {
+ return iframe.contentDocument;
+ };
+};
diff --git a/src/DOM/HTML/HTMLIFrameElement.purs b/src/DOM/HTML/HTMLIFrameElement.purs
new file mode 100644
index 0000000..ee33e77
--- /dev/null
+++ b/src/DOM/HTML/HTMLIFrameElement.purs
@@ -0,0 +1,32 @@
+module DOM.HTML.HTMLIFrameElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLIFrameElement())
+import DOM.Node.Types (Document())
+
+foreign import src :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) String
+foreign import setSrc :: forall eff. String -> HTMLIFrameElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import srcdoc :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) String
+foreign import setSrcdoc :: forall eff. String -> HTMLIFrameElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import name :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLIFrameElement -> Eff (dom :: DOM | eff) Unit
+
+-- [PutForwards=value] readonly attribute DOMSettableTokenList sandbox;
+
+foreign import width :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) String
+foreign import setWidth :: forall eff. String -> HTMLIFrameElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import height :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) String
+foreign import setHeight :: forall eff. String -> HTMLIFrameElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import contentDocument :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) (Nullable Document)
+
+-- readonly attribute WindowProxy? contentWindow;
diff --git a/src/DOM/HTML/HTMLImageElement.js b/src/DOM/HTML/HTMLImageElement.js
new file mode 100644
index 0000000..bdc0335
--- /dev/null
+++ b/src/DOM/HTML/HTMLImageElement.js
@@ -0,0 +1,152 @@
+/* global exports, Image */
+"use strict";
+
+// module DOM.HTML.HTMLImageElement
+
+exports.create = function () {
+ return function () {
+ return new Image();
+ };
+};
+
+exports["create'"] = function (width) {
+ return function (height) {
+ return function () {
+ return new Image(width, height);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.alt = function (image) {
+ return function () {
+ return image.alt;
+ };
+};
+
+exports.setAlt = function (alt) {
+ return function (image) {
+ return function () {
+ image.alt = alt;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.src = function (image) {
+ return function () {
+ return image.src;
+ };
+};
+
+exports.setSrc = function (src) {
+ return function (image) {
+ return function () {
+ image.src = src;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.crossOrigin = function (image) {
+ return function () {
+ return image.crossOrigin;
+ };
+};
+
+exports.setCrossOrigin = function (crossOrigin) {
+ return function (image) {
+ return function () {
+ image.crossOrigin = crossOrigin;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.useMap = function (image) {
+ return function () {
+ return image.useMap;
+ };
+};
+
+exports.setUseMap = function (useMap) {
+ return function (image) {
+ return function () {
+ image.useMap = useMap;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.isMap = function (image) {
+ return function () {
+ return image.isMap;
+ };
+};
+
+exports.setIsMap = function (isMap) {
+ return function (image) {
+ return function () {
+ image.isMap = isMap;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.width = function (image) {
+ return function () {
+ return image.width;
+ };
+};
+
+exports.setWidth = function (width) {
+ return function (image) {
+ return function () {
+ image.width = width;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.height = function (image) {
+ return function () {
+ return image.height;
+ };
+};
+
+exports.setHeight = function (height) {
+ return function (image) {
+ return function () {
+ image.height = height;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.naturalWidth = function (image) {
+ return function () {
+ return image.naturalWidth;
+ };
+};
+
+exports.naturalHeight = function (image) {
+ return function () {
+ return image.naturalHeight;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.complete = function (image) {
+ return function () {
+ return image.complete;
+ };
+};
diff --git a/src/DOM/HTML/HTMLImageElement.purs b/src/DOM/HTML/HTMLImageElement.purs
new file mode 100644
index 0000000..cdab6f5
--- /dev/null
+++ b/src/DOM/HTML/HTMLImageElement.purs
@@ -0,0 +1,36 @@
+module DOM.HTML.HTMLImageElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLImageElement())
+
+foreign import create :: forall eff. Unit -> Eff (dom :: DOM | eff) HTMLImageElement
+foreign import create' :: forall eff. Int -> Int -> Eff (dom :: DOM | eff) HTMLImageElement
+
+foreign import alt :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) String
+foreign import setAlt :: forall eff. String -> HTMLImageElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import src :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) String
+foreign import setSrc :: forall eff. String -> HTMLImageElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import crossOrigin :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) String
+foreign import setCrossOrigin :: forall eff. String -> HTMLImageElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import useMap :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) String
+foreign import setUseMap :: forall eff. String -> HTMLImageElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import isMap :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setIsMap :: forall eff. Boolean -> HTMLImageElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import width :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) Int
+foreign import setWidth :: forall eff. Int -> HTMLImageElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import height :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) Int
+foreign import setHeight :: forall eff. Int -> HTMLImageElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import naturalWidth :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) Int
+foreign import naturalHeight :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) Int
+foreign import complete :: forall eff. HTMLImageElement -> Eff (dom :: DOM | eff) Boolean
diff --git a/src/DOM/HTML/HTMLInputElement.js b/src/DOM/HTML/HTMLInputElement.js
new file mode 100644
index 0000000..5e1cb78
--- /dev/null
+++ b/src/DOM/HTML/HTMLInputElement.js
@@ -0,0 +1,790 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLInputElement
+
+exports.accept = function (input) {
+ return function () {
+ return input.accept;
+ };
+};
+
+exports.setAccept = function (accept) {
+ return function (input) {
+ return function () {
+ input.accept = accept;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.alt = function (input) {
+ return function () {
+ return input.alt;
+ };
+};
+
+exports.setAlt = function (alt) {
+ return function (input) {
+ return function () {
+ input.alt = alt;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.autocomplete = function (input) {
+ return function () {
+ return input.autocomplete;
+ };
+};
+
+exports.setAutocomplete = function (autocomplete) {
+ return function (input) {
+ return function () {
+ input.autocomplete = autocomplete;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.autofocus = function (input) {
+ return function () {
+ return input.autofocus;
+ };
+};
+
+exports.setAutofocus = function (autofocus) {
+ return function (input) {
+ return function () {
+ input.autofocus = autofocus;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.defaultChecked = function (input) {
+ return function () {
+ return input.defaultChecked;
+ };
+};
+
+exports.setDefaultChecked = function (defaultChecked) {
+ return function (input) {
+ return function () {
+ input.defaultChecked = defaultChecked;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checked = function (input) {
+ return function () {
+ return input.checked;
+ };
+};
+
+exports.setChecked = function (checked) {
+ return function (input) {
+ return function () {
+ input.checked = checked;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.dirName = function (input) {
+ return function () {
+ return input.dirName;
+ };
+};
+
+exports.setDirName = function (dirName) {
+ return function (input) {
+ return function () {
+ input.dirName = dirName;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.disabled = function (input) {
+ return function () {
+ return input.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (input) {
+ return function () {
+ input.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.input = function (input) {
+ return function () {
+ return input.input;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.files = function (input) {
+ return function () {
+ return input.files;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formAction = function (input) {
+ return function () {
+ return input.formAction;
+ };
+};
+
+exports.setFormAction = function (formAction) {
+ return function (input) {
+ return function () {
+ input.formAction = formAction;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formEnctype = function (input) {
+ return function () {
+ return input.formEnctype;
+ };
+};
+
+exports.setFormEnctype = function (formEnctype) {
+ return function (input) {
+ return function () {
+ input.formEnctype = formEnctype;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formMethod = function (input) {
+ return function () {
+ return input.formMethod;
+ };
+};
+
+exports.setFormMethod = function (formMethod) {
+ return function (input) {
+ return function () {
+ input.formMethod = formMethod;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formNoValidate = function (input) {
+ return function () {
+ return input.formNoValidate;
+ };
+};
+
+exports.setFormNoValidate = function (formNoValidate) {
+ return function (input) {
+ return function () {
+ input.formNoValidate = formNoValidate;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.formTarget = function (input) {
+ return function () {
+ return input.formTarget;
+ };
+};
+
+exports.setFormTarget = function (formTarget) {
+ return function (input) {
+ return function () {
+ input.formTarget = formTarget;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.height = function (input) {
+ return function () {
+ return input.height;
+ };
+};
+
+exports.setHeight = function (height) {
+ return function (input) {
+ return function () {
+ input.height = height;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.indeterminate = function (input) {
+ return function () {
+ return input.indeterminate;
+ };
+};
+
+exports.setIndeterminate = function (indeterminate) {
+ return function (input) {
+ return function () {
+ input.indeterminate = indeterminate;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.list = function (input) {
+ return function () {
+ return input.list;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.max = function (input) {
+ return function () {
+ return input.max;
+ };
+};
+
+exports.setMax = function (max) {
+ return function (input) {
+ return function () {
+ input.max = max;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.maxLength = function (input) {
+ return function () {
+ return input.maxLength;
+ };
+};
+
+exports.setMaxLength = function (maxLength) {
+ return function (input) {
+ return function () {
+ input.maxLength = maxLength;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.min = function (input) {
+ return function () {
+ return input.min;
+ };
+};
+
+exports.setMin = function (min) {
+ return function (input) {
+ return function () {
+ input.min = min;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.minLength = function (input) {
+ return function () {
+ return input.minLength;
+ };
+};
+
+exports.setMinLength = function (minLength) {
+ return function (input) {
+ return function () {
+ input.minLength = minLength;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.multiple = function (input) {
+ return function () {
+ return input.multiple;
+ };
+};
+
+exports.setMultiple = function (multiple) {
+ return function (input) {
+ return function () {
+ input.multiple = multiple;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (input) {
+ return function () {
+ return input.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (input) {
+ return function () {
+ input.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.pattern = function (input) {
+ return function () {
+ return input.pattern;
+ };
+};
+
+exports.setPattern = function (pattern) {
+ return function (input) {
+ return function () {
+ input.pattern = pattern;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.placeholder = function (input) {
+ return function () {
+ return input.placeholder;
+ };
+};
+
+exports.setPlaceholder = function (placeholder) {
+ return function (input) {
+ return function () {
+ input.placeholder = placeholder;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.readOnly = function (input) {
+ return function () {
+ return input.readOnly;
+ };
+};
+
+exports.setReadOnly = function (readOnly) {
+ return function (input) {
+ return function () {
+ input.readOnly = readOnly;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.required = function (input) {
+ return function () {
+ return input.required;
+ };
+};
+
+exports.setRequired = function (required) {
+ return function (input) {
+ return function () {
+ input.required = required;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.size = function (input) {
+ return function () {
+ return input.size;
+ };
+};
+
+exports.setSize = function (size) {
+ return function (input) {
+ return function () {
+ input.size = size;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.src = function (input) {
+ return function () {
+ return input.src;
+ };
+};
+
+exports.setSrc = function (src) {
+ return function (input) {
+ return function () {
+ input.src = src;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.step = function (input) {
+ return function () {
+ return input.step;
+ };
+};
+
+exports.setStep = function (step) {
+ return function (input) {
+ return function () {
+ input.step = step;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (input) {
+ return function () {
+ return input.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (input) {
+ return function () {
+ input.type = type;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.defaultValue = function (input) {
+ return function () {
+ return input.defaultValue;
+ };
+};
+
+exports.setDefaultValue = function (defaultValue) {
+ return function (input) {
+ return function () {
+ input.defaultValue = defaultValue;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.value = function (input) {
+ return function () {
+ return input.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (input) {
+ return function () {
+ input.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.valueAsDate = function (input) {
+ return function () {
+ return input.valueAsDate;
+ };
+};
+
+exports.setValueAsDate = function (valueAsDate) {
+ return function (input) {
+ return function () {
+ input.valueAsDate = valueAsDate;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.valueAsNumber = function (input) {
+ return function () {
+ return input.valueAsNumber;
+ };
+};
+
+exports.setValueAsNumber = function (valueAsNumber) {
+ return function (input) {
+ return function () {
+ input.valueAsNumber = valueAsNumber;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.width = function (input) {
+ return function () {
+ return input.width;
+ };
+};
+
+exports.setWidth = function (width) {
+ return function (input) {
+ return function () {
+ input.width = width;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports["stepUp'"] = function (n) {
+ return function (input) {
+ return function () {
+ input.stepUp(n);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports["stepDown'"] = function (n) {
+ return function (input) {
+ return function () {
+ input.stepDown(n);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.length = function (input) {
+ return function () {
+ return input.length;
+ };
+};
+
+exports.setLength = function (length) {
+ return function (input) {
+ return function () {
+ input.length = length;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectedOptions = function (input) {
+ return function () {
+ return input.selectedOptions;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectedIndex = function (input) {
+ return function () {
+ return input.selectedIndex;
+ };
+};
+
+exports.setSelectedIndex = function (selectedIndex) {
+ return function (input) {
+ return function () {
+ input.selectedIndex = selectedIndex;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.value = function (input) {
+ return function () {
+ return input.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (input) {
+ return function () {
+ input.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.willValidate = function (input) {
+ return function () {
+ return input.willValidate;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validity = function (input) {
+ return function () {
+ return input.validity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validationMessage = function (input) {
+ return function () {
+ return input.validationMessage;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (input) {
+ return function () {
+ return input.checkValidity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setCustomValidity = function (value) {
+ return function (input) {
+ return function () {
+ input.setCustomValidity(value);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.labels = function (input) {
+ return function () {
+ return input.labels;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.select = function (input) {
+ return function () {
+ input.select();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectionStart = function (input) {
+ return function () {
+ return input.selectionStart;
+ };
+};
+
+exports.setSelectionStart = function (selectionStart) {
+ return function (input) {
+ return function () {
+ input.selectionStart = selectionStart;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectionEnd = function (input) {
+ return function () {
+ return input.selectionEnd;
+ };
+};
+
+exports.setSelectionEnd = function (selectionEnd) {
+ return function (input) {
+ return function () {
+ input.selectionEnd = selectionEnd;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectionDirection = function (input) {
+ return function () {
+ return input.selectionDirection;
+ };
+};
+
+exports.setSelectionDirection = function (selectionDirection) {
+ return function (input) {
+ return function () {
+ input.selectionDirection = selectionDirection;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setRangeText = function (replacement) {
+ return function (input) {
+ return function () {
+ input.setRangeText(replacement);
+ };
+ };
+};
+
+exports["setRangeText'"] = function (replacement) {
+ return function (start) {
+ return function (end) {
+ return function (selectionMode) {
+ return function (input) {
+ return function () {
+ input.setRangeText(replacement);
+ };
+ };
+ };
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setSelectionRange = function (start) {
+ return function (end) {
+ return function (direction) {
+ return function (input) {
+ return function () {
+ input.setRangeText(replacement);
+ };
+ };
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLInputElement.purs b/src/DOM/HTML/HTMLInputElement.purs
new file mode 100644
index 0000000..c862278
--- /dev/null
+++ b/src/DOM/HTML/HTMLInputElement.purs
@@ -0,0 +1,160 @@
+module DOM.HTML.HTMLInputElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Date (JSDate())
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.File.Types (FileList())
+import DOM.HTML.SelectionMode (SelectionMode())
+import DOM.HTML.Types (HTMLElement(), HTMLInputElement(), HTMLFormElement(), ValidityState())
+import DOM.Node.Types (NodeList())
+
+foreign import accept :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAccept :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import alt :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAlt :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import autocomplete :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAutocomplete :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import autofocus :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAutofocus :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import defaultChecked :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDefaultChecked :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import checked :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setChecked :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import dirName :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setDirName :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import disabled :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import form :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import files :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable FileList)
+
+foreign import formAction :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setFormAction :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import formEnctype :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setFormEnctype :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import formMethod :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setFormMethod :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import formNoValidate :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setFormNoValidate :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import formTarget :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setFormTarget :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import height :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Int
+foreign import setHeight :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import indeterminate :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setIndeterminate :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import list :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable HTMLElement)
+
+foreign import max :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setMax :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import maxLength :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Int
+foreign import setMaxLength :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import min :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setMin :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import minLength :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Int
+foreign import setMinLength :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import multiple :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setMultiple :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import name :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import pattern :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setPattern :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import placeholder :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setPlaceholder :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import readOnly :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setReadOnly :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import required :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setRequired :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import size :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Int
+foreign import setSize :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import src :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setSrc :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import step :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setStep :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import defaultValue :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setDefaultValue :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import value :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setValue :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import valueAsDate :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) JSDate
+foreign import setValueAsDate :: forall eff. JSDate -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import valueAsNumber :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Number
+foreign import setValueAsNumber :: forall eff. Number -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import width :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Int
+foreign import setWidth :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+stepUp :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+stepUp = stepUp' 1
+
+foreign import stepUp' :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+stepDown :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+stepDown = stepDown' 1
+
+foreign import stepDown' :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import willValidate :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import validity :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) ValidityState
+
+foreign import validationMessage :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+
+foreign import checkValidity :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import setCustomValidity :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import labels :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) NodeList
+
+foreign import select :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import selectionStart :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Int
+foreign import setSelectionStart :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import selectionEnd :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Int
+foreign import setSelectionEnd :: forall eff. Int -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import selectionDirection :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String
+foreign import setSelectionDirection :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import setRangeText :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+foreign import setRangeText' :: forall eff. String -> Int -> Int -> SelectionMode -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import setSelectionRange :: forall eff. Int -> Int -> String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLKeygenElement.js b/src/DOM/HTML/HTMLKeygenElement.js
new file mode 100644
index 0000000..cf3c90a
--- /dev/null
+++ b/src/DOM/HTML/HTMLKeygenElement.js
@@ -0,0 +1,148 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLKeygenElement
+
+exports.autofocus = function (keygen) {
+ return function () {
+ return keygen.autofocus;
+ };
+};
+
+exports.setAutofocus = function (autofocus) {
+ return function (keygen) {
+ return function () {
+ keygen.autofocus = autofocus;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.challenge = function (keygen) {
+ return function () {
+ return keygen.challenge;
+ };
+};
+
+exports.setChallenge = function (challenge) {
+ return function (keygen) {
+ return function () {
+ keygen.challenge = challenge;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.disabled = function (keygen) {
+ return function () {
+ return keygen.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (keygen) {
+ return function () {
+ keygen.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.form = function (keygen) {
+ return function () {
+ return keygen.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.keytype = function (keygen) {
+ return function () {
+ return keygen.keytype;
+ };
+};
+
+exports.setKeytype = function (keytype) {
+ return function (keygen) {
+ return function () {
+ keygen.keytype = keytype;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (keygen) {
+ return function () {
+ return keygen.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (keygen) {
+ return function () {
+ keygen.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (keygen) {
+ return function () {
+ return keygen.type;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.willValidate = function (keygen) {
+ return function () {
+ return keygen.willValidate;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validity = function (keygen) {
+ return function () {
+ return keygen.validity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validationMessage = function (keygen) {
+ return function () {
+ return keygen.validationMessage;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (keygen) {
+ return function () {
+ return keygen.checkValidity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setCustomValidity = function (value) {
+ return function (keygen) {
+ return function () {
+ keygen.setCustomValidity(value);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.labels = function (keygen) {
+ return function () {
+ return keygen.labels;
+ };
+};
diff --git a/src/DOM/HTML/HTMLKeygenElement.purs b/src/DOM/HTML/HTMLKeygenElement.purs
new file mode 100644
index 0000000..9c7bbde
--- /dev/null
+++ b/src/DOM/HTML/HTMLKeygenElement.purs
@@ -0,0 +1,42 @@
+module DOM.HTML.HTMLKeygenElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.Node.Types (NodeList())
+import DOM.HTML.Types (HTMLKeygenElement(), HTMLFormElement(), ValidityState())
+
+foreign import autofocus :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAutofocus :: forall eff. Boolean -> HTMLKeygenElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import challenge :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) String
+foreign import setChallenge :: forall eff. String -> HTMLKeygenElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import disabled :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLKeygenElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import form :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import keytype :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) String
+foreign import setKeytype :: forall eff. String -> HTMLKeygenElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import name :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLKeygenElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) String
+
+foreign import willValidate :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import validity :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) ValidityState
+
+foreign import validationMessage :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) String
+
+foreign import checkValidity :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import setCustomValidity :: forall eff. String -> HTMLKeygenElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import labels :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) NodeList
diff --git a/src/DOM/HTML/HTMLLIElement.js b/src/DOM/HTML/HTMLLIElement.js
new file mode 100644
index 0000000..46a9253
--- /dev/null
+++ b/src/DOM/HTML/HTMLLIElement.js
@@ -0,0 +1,18 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLLIElement
+
+exports.value = function (li) {
+ return function () {
+ return li.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (li) {
+ return function () {
+ li.value = value;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLLIElement.purs b/src/DOM/HTML/HTMLLIElement.purs
new file mode 100644
index 0000000..c58b08d
--- /dev/null
+++ b/src/DOM/HTML/HTMLLIElement.purs
@@ -0,0 +1,11 @@
+module DOM.HTML.HTMLLIElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLLIElement())
+
+foreign import value :: forall eff. HTMLLIElement -> Eff (dom :: DOM | eff) Int
+foreign import setValue :: forall eff. Int -> HTMLLIElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLLabelElement.js b/src/DOM/HTML/HTMLLabelElement.js
new file mode 100644
index 0000000..ba83482
--- /dev/null
+++ b/src/DOM/HTML/HTMLLabelElement.js
@@ -0,0 +1,34 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLLabelElement
+
+exports.form = function (label) {
+ return function () {
+ return label.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.htmlFor = function (label) {
+ return function () {
+ return label.htmlFor;
+ };
+};
+
+exports.setHtmlFor = function (htmlFor) {
+ return function (label) {
+ return function () {
+ label.htmlFor = htmlFor;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.control = function (label) {
+ return function () {
+ return label.control;
+ };
+};
diff --git a/src/DOM/HTML/HTMLLabelElement.purs b/src/DOM/HTML/HTMLLabelElement.purs
new file mode 100644
index 0000000..e3b6514
--- /dev/null
+++ b/src/DOM/HTML/HTMLLabelElement.purs
@@ -0,0 +1,17 @@
+module DOM.HTML.HTMLLabelElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLLabelElement(), HTMLFormElement(), HTMLElement())
+
+foreign import form :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import htmlFor :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) String
+foreign import setHtmlFor :: forall eff. String -> HTMLLabelElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import control :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) (Nullable HTMLElement)
diff --git a/src/DOM/HTML/HTMLLegendElement.js b/src/DOM/HTML/HTMLLegendElement.js
new file mode 100644
index 0000000..d20fd25
--- /dev/null
+++ b/src/DOM/HTML/HTMLLegendElement.js
@@ -0,0 +1,10 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLLegendElement
+
+exports.form = function (le) {
+ return function () {
+ return le.form;
+ };
+};
diff --git a/src/DOM/HTML/HTMLLegendElement.purs b/src/DOM/HTML/HTMLLegendElement.purs
new file mode 100644
index 0000000..321c2cc
--- /dev/null
+++ b/src/DOM/HTML/HTMLLegendElement.purs
@@ -0,0 +1,9 @@
+module DOM.HTML.HTMLLegendElement where
+
+import Control.Monad.Eff (Eff())
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLLegendElement(), HTMLFormElement())
+
+foreign import form :: forall eff. HTMLLegendElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
diff --git a/src/DOM/HTML/HTMLLinkElement.js b/src/DOM/HTML/HTMLLinkElement.js
new file mode 100644
index 0000000..f8bfe1d
--- /dev/null
+++ b/src/DOM/HTML/HTMLLinkElement.js
@@ -0,0 +1,138 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLLinkElement
+
+exports.disabled = function (link) {
+ return function () {
+ return link.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (link) {
+ return function () {
+ link.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.href = function (link) {
+ return function () {
+ return link.href;
+ };
+};
+
+exports.setHref = function (href) {
+ return function (link) {
+ return function () {
+ link.href = href;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.crossOrigin = function (link) {
+ return function () {
+ return link.crossOrigin;
+ };
+};
+
+exports.setCrossOrigin = function (crossOrigin) {
+ return function (link) {
+ return function () {
+ link.crossOrigin = crossOrigin;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.rel = function (link) {
+ return function () {
+ return link.rel;
+ };
+};
+
+exports.setRel = function (rel) {
+ return function (link) {
+ return function () {
+ link.rel = rel;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.rev = function (link) {
+ return function () {
+ return link.rev;
+ };
+};
+
+exports.setRev = function (rev) {
+ return function (link) {
+ return function () {
+ link.rev = rev;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.relList = function (link) {
+ return function () {
+ return link.relList;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.media = function (link) {
+ return function () {
+ return link.media;
+ };
+};
+
+exports.setMedia = function (media) {
+ return function (link) {
+ return function () {
+ link.media = media;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.hreflang = function (link) {
+ return function () {
+ return link.hreflang;
+ };
+};
+
+exports.setHreflang = function (hreflang) {
+ return function (link) {
+ return function () {
+ link.hreflang = hreflang;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (link) {
+ return function () {
+ return link.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (link) {
+ return function () {
+ link.type = type;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLLinkElement.purs b/src/DOM/HTML/HTMLLinkElement.purs
new file mode 100644
index 0000000..d58f1fd
--- /dev/null
+++ b/src/DOM/HTML/HTMLLinkElement.purs
@@ -0,0 +1,39 @@
+module DOM.HTML.HTMLLinkElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLLinkElement())
+import DOM.Node.Types (DOMTokenList())
+
+foreign import disabled :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLLinkElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import href :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) String
+foreign import setHref :: forall eff. String -> HTMLLinkElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import crossOrigin :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) String
+foreign import setCrossOrigin :: forall eff. String -> HTMLLinkElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import rel :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) String
+foreign import setRel :: forall eff. String -> HTMLLinkElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import rev :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) String
+foreign import setRev :: forall eff. String -> HTMLLinkElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import relList :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) DOMTokenList
+
+foreign import media :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) String
+foreign import setMedia :: forall eff. String -> HTMLLinkElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import hreflang :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) String
+foreign import setHreflang :: forall eff. String -> HTMLLinkElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLLinkElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLLinkElement -> Eff (dom :: DOM | eff) Unit
+
+-- [PutForwards=value] readonly attribute DOMSettableTokenList sizes;
+
+-- HTMLLinkElement implements LinkStyle;
diff --git a/src/DOM/HTML/HTMLMapElement.js b/src/DOM/HTML/HTMLMapElement.js
new file mode 100644
index 0000000..7569691
--- /dev/null
+++ b/src/DOM/HTML/HTMLMapElement.js
@@ -0,0 +1,34 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLMapElement
+
+exports.name = function (map) {
+ return function () {
+ return map.name;
+ };
+};
+
+exports.setDisabled = function (name) {
+ return function (map) {
+ return function () {
+ map.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.areas = function (map) {
+ return function () {
+ return map.areas;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.images = function (map) {
+ return function () {
+ return map.images;
+ };
+};
diff --git a/src/DOM/HTML/HTMLMapElement.purs b/src/DOM/HTML/HTMLMapElement.purs
new file mode 100644
index 0000000..fe45f2d
--- /dev/null
+++ b/src/DOM/HTML/HTMLMapElement.purs
@@ -0,0 +1,16 @@
+module DOM.HTML.HTMLMapElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLMapElement())
+import DOM.Node.Types (HTMLCollection())
+
+foreign import name :: forall eff. HTMLMapElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLMapElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import areas :: forall eff. HTMLMapElement -> Eff (dom :: DOM | eff) HTMLCollection
+
+foreign import images :: forall eff. HTMLMapElement -> Eff (dom :: DOM | eff) HTMLCollection
diff --git a/src/DOM/HTML/HTMLMediaElement.js b/src/DOM/HTML/HTMLMediaElement.js
new file mode 100644
index 0000000..dc758a0
--- /dev/null
+++ b/src/DOM/HTML/HTMLMediaElement.js
@@ -0,0 +1,309 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLMediaElement
+
+exports.src = function (media) {
+ return function () {
+ return media.src;
+ };
+};
+
+exports.setSrc = function (src) {
+ return function (media) {
+ return function () {
+ media.src = src;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.currentSrc = function (media) {
+ return function () {
+ return media.currentSrc;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.crossOrigin = function (media) {
+ return function () {
+ return media.crossOrigin;
+ };
+};
+
+exports.setCrossOrigin = function (crossOrigin) {
+ return function (media) {
+ return function () {
+ media.crossOrigin = crossOrigin;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.networkStateIndex = function (media) {
+ return function () {
+ return media.networkState;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.preload = function (media) {
+ return function () {
+ return media.preload;
+ };
+};
+
+exports.setPreload = function (preload) {
+ return function (media) {
+ return function () {
+ media.preload = preload;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.load = function (media) {
+ return function () {
+ return media.load();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.canPlayType = function (type) {
+ return function (media) {
+ return function () {
+ return media.canPlayType(type);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.readyStateIndex = function (media) {
+ return function () {
+ return media.readyState;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.seeking = function (media) {
+ return function () {
+ return media.seeking;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.currentTime = function (media) {
+ return function () {
+ return media.currentTime;
+ };
+};
+
+exports.setCurrentTime = function (currentTime) {
+ return function (media) {
+ return function () {
+ media.currentTime = currentTime;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.duration = function (media) {
+ return function () {
+ return media.duration;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.getStartDate = function (media) {
+ return function () {
+ return media.getStartDate();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.paused = function (media) {
+ return function () {
+ return media.paused;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.defaultPlaybackRate = function (media) {
+ return function () {
+ return media.defaultPlaybackRate;
+ };
+};
+
+exports.setDefaultPlaybackRate = function (defaultPlaybackRate) {
+ return function (media) {
+ return function () {
+ media.defaultPlaybackRate = defaultPlaybackRate;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.playbackRate = function (media) {
+ return function () {
+ return media.playbackRate;
+ };
+};
+
+exports.setPlaybackRate = function (playbackRate) {
+ return function (media) {
+ return function () {
+ media.playbackRate = playbackRate;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.ended = function (media) {
+ return function () {
+ return media.ended;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.autoplay = function (media) {
+ return function () {
+ return media.autoplay;
+ };
+};
+
+exports.setAutoplay = function (autoplay) {
+ return function (media) {
+ return function () {
+ media.autoplay = autoplay;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.loop = function (media) {
+ return function () {
+ return media.loop;
+ };
+};
+
+exports.setLoop = function (loop) {
+ return function (media) {
+ return function () {
+ media.loop = loop;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.play = function (media) {
+ return function () {
+ media.play();
+ };
+};
+
+
+// ----------------------------------------------------------------------------
+
+exports.pause = function (media) {
+ return function () {
+ media.pause();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.mediaGroup = function (media) {
+ return function () {
+ return media.mediaGroup;
+ };
+};
+
+exports.setMediaGroup = function (mediaGroup) {
+ return function (media) {
+ return function () {
+ media.mediaGroup = mediaGroup;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.controls = function (media) {
+ return function () {
+ return media.controls;
+ };
+};
+
+exports.setControls = function (controls) {
+ return function (media) {
+ return function () {
+ media.controls = controls;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.volume = function (media) {
+ return function () {
+ return media.volume;
+ };
+};
+
+exports.setVolume = function (volume) {
+ return function (media) {
+ return function () {
+ media.volume = volume;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.muted = function (media) {
+ return function () {
+ return media.muted;
+ };
+};
+
+exports.setMuted = function (muted) {
+ return function (media) {
+ return function () {
+ media.muted = muted;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.defaultMuted = function (media) {
+ return function () {
+ return media.defaultMuted;
+ };
+};
+
+exports.setDefaultMuted = function (defaultMuted) {
+ return function (media) {
+ return function () {
+ media.defaultMuted = defaultMuted;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLMediaElement.purs b/src/DOM/HTML/HTMLMediaElement.purs
new file mode 100644
index 0000000..7f7ec8e
--- /dev/null
+++ b/src/DOM/HTML/HTMLMediaElement.purs
@@ -0,0 +1,98 @@
+module DOM.HTML.HTMLMediaElement where
+
+import Prelude (Unit(), map, (<<<))
+
+import Control.Monad.Eff (Eff())
+
+import Data.Date (JSDate())
+import Data.Enum (toEnum)
+import Data.Maybe.Unsafe as U
+
+import DOM (DOM())
+import DOM.HTML.HTMLMediaElement.CanPlayType (CanPlayType())
+import DOM.HTML.HTMLMediaElement.NetworkState (NetworkState())
+import DOM.HTML.HTMLMediaElement.ReadyState (ReadyState())
+import DOM.HTML.Types (HTMLMediaElement())
+
+-- readonly attribute MediaError? error;
+
+foreign import src :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) String
+foreign import setSrc :: forall eff. String -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import currentSrc :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) String
+
+foreign import crossOrigin :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) String
+foreign import setCrossOrigin :: forall eff. String -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+networkState :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) NetworkState
+networkState = map (U.fromJust <<< toEnum) <<< readyStateIndex
+
+foreign import networkStateIndex :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Int
+
+foreign import preload :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) String
+foreign import setPreload :: forall eff. String -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+-- readonly attribute TimeRanges buffered;
+
+foreign import load :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import canPlayType :: forall eff. String -> HTMLMediaElement -> Eff (dom :: DOM | eff) CanPlayType
+
+readyState :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) ReadyState
+readyState = map (U.fromJust <<< toEnum) <<< readyStateIndex
+
+foreign import readyStateIndex :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Int
+
+foreign import seeking :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import currentTime :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Number
+foreign import setCurrentTime :: forall eff. Number -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import duration :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Number
+
+foreign import getStartDate :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) JSDate
+
+foreign import paused :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import defaultPlaybackRate :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Number
+foreign import setDefaultPlaybackRate :: forall eff. Number -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import playbackRate :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Number
+foreign import setPlaybackRate :: forall eff. Number -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+-- readonly attribute TimeRanges played;
+-- readonly attribute TimeRanges seekable;
+
+foreign import ended :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import autoplay :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAutoplay :: forall eff. Boolean -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import loop :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setLoop :: forall eff. Boolean -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import play :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import pause :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import mediaGroup :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) String
+foreign import setMediaGroup :: forall eff. String -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+-- attribute MediaController? controller;
+
+foreign import controls :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setControls :: forall eff. Boolean -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import volume :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Number
+foreign import setVolume :: forall eff. Number -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import muted :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setMuted :: forall eff. Boolean -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import defaultMuted :: forall eff. HTMLMediaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDefaultMuted :: forall eff. Boolean -> HTMLMediaElement -> Eff (dom :: DOM | eff) Unit
+
+-- readonly attribute AudioTrackList audioTracks;
+-- readonly attribute VideoTrackList videoTracks;
+-- readonly attribute TextTrackList textTracks;
+-- TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = "");
diff --git a/src/DOM/HTML/HTMLMediaElement/CanPlayType.purs b/src/DOM/HTML/HTMLMediaElement/CanPlayType.purs
new file mode 100644
index 0000000..2288d71
--- /dev/null
+++ b/src/DOM/HTML/HTMLMediaElement/CanPlayType.purs
@@ -0,0 +1,34 @@
+module DOM.HTML.HTMLMediaElement.CanPlayType
+ ( CanPlayType()
+ , runCanPlayType
+ , unspecified
+ , maybe
+ , probably
+ ) where
+
+import Prelude
+import Data.Maybe (Maybe(..))
+import Data.Enum (Enum, Cardinality(..), defaultSucc, defaultPred)
+
+newtype CanPlayType = CanPlayType String
+
+runCanPlayType :: CanPlayType -> String
+runCanPlayType (CanPlayType t) = t
+
+instance eqCanPlayType :: Eq CanPlayType where
+ eq (CanPlayType x) (CanPlayType y) = x == y
+
+instance ordCanPlayType :: Ord CanPlayType where
+ compare (CanPlayType x) (CanPlayType y) = compare x y
+
+instance showCanPlayType :: Show CanPlayType where
+ show (CanPlayType t) = "(CanPlayType " <> show t <> ")"
+
+unspecified :: CanPlayType
+unspecified = CanPlayType ""
+
+maybe :: CanPlayType
+maybe = CanPlayType "maybe"
+
+probably :: CanPlayType
+probably = CanPlayType "probably"
diff --git a/src/DOM/HTML/HTMLMediaElement/NetworkState.purs b/src/DOM/HTML/HTMLMediaElement/NetworkState.purs
new file mode 100644
index 0000000..ed9a87e
--- /dev/null
+++ b/src/DOM/HTML/HTMLMediaElement/NetworkState.purs
@@ -0,0 +1,53 @@
+module DOM.HTML.HTMLMediaElement.NetworkState (NetworkState(..)) where
+
+import Prelude
+import Data.Maybe (Maybe(..))
+import Data.Enum (Enum, Cardinality(..), defaultSucc, defaultPred)
+
+data NetworkState
+ = NETWORK_EMPTY
+ | NETWORK_IDLE
+ | NETWORK_LOADING
+ | NETWORK_NO_SOURCE
+
+instance eqNetworkState :: Eq NetworkState where
+ eq NETWORK_EMPTY NETWORK_EMPTY = true
+ eq NETWORK_IDLE NETWORK_IDLE = true
+ eq NETWORK_LOADING NETWORK_LOADING = true
+ eq NETWORK_NO_SOURCE NETWORK_NO_SOURCE = true
+ eq _ _ = false
+
+instance ordNetworkState :: Ord NetworkState where
+ compare x y = compare (fromEnumNetworkState x) (fromEnumNetworkState y)
+
+instance boundedNetworkState :: Bounded NetworkState where
+ bottom = NETWORK_EMPTY
+ top = NETWORK_NO_SOURCE
+
+instance boundedOrdNetworkState :: BoundedOrd NetworkState
+
+instance enumNetworkState :: Enum NetworkState where
+ cardinality = Cardinality 4
+ succ = defaultSucc toEnumNetworkState fromEnumNetworkState
+ pred = defaultPred toEnumNetworkState fromEnumNetworkState
+ toEnum = toEnumNetworkState
+ fromEnum = fromEnumNetworkState
+
+instance showNetworkState :: Show NetworkState where
+ show NETWORK_EMPTY = "NETWORK_EMPTY"
+ show NETWORK_IDLE = "NETWORK_IDLE"
+ show NETWORK_LOADING = "NETWORK_LOADING"
+ show NETWORK_NO_SOURCE = "NETWORK_NO_SOURCE"
+
+toEnumNetworkState :: Int -> Maybe NetworkState
+toEnumNetworkState 0 = Just NETWORK_EMPTY
+toEnumNetworkState 1 = Just NETWORK_IDLE
+toEnumNetworkState 2 = Just NETWORK_LOADING
+toEnumNetworkState 3 = Just NETWORK_NO_SOURCE
+toEnumNetworkState _ = Nothing
+
+fromEnumNetworkState :: NetworkState -> Int
+fromEnumNetworkState NETWORK_EMPTY = 0
+fromEnumNetworkState NETWORK_IDLE = 1
+fromEnumNetworkState NETWORK_LOADING = 2
+fromEnumNetworkState NETWORK_NO_SOURCE = 3
diff --git a/src/DOM/HTML/HTMLMediaElement/ReadyState.purs b/src/DOM/HTML/HTMLMediaElement/ReadyState.purs
new file mode 100644
index 0000000..b5e5534
--- /dev/null
+++ b/src/DOM/HTML/HTMLMediaElement/ReadyState.purs
@@ -0,0 +1,58 @@
+module DOM.HTML.HTMLMediaElement.ReadyState (ReadyState(..)) where
+
+import Prelude
+import Data.Maybe (Maybe(..))
+import Data.Enum (Enum, Cardinality(..), defaultSucc, defaultPred)
+
+data ReadyState
+ = HAVE_NOTHING
+ | HAVE_METADATA
+ | HAVE_CURRENT_DATA
+ | HAVE_FUTURE_DATA
+ | HAVE_ENOUGH_DATA
+
+instance eqReadyState :: Eq ReadyState where
+ eq HAVE_NOTHING HAVE_NOTHING = true
+ eq HAVE_METADATA HAVE_METADATA = true
+ eq HAVE_CURRENT_DATA HAVE_CURRENT_DATA = true
+ eq HAVE_FUTURE_DATA HAVE_FUTURE_DATA = true
+ eq HAVE_ENOUGH_DATA HAVE_ENOUGH_DATA = true
+ eq _ _ = false
+
+instance ordReadyState :: Ord ReadyState where
+ compare x y = compare (fromEnumReadyState x) (fromEnumReadyState y)
+
+instance boundedReadyState :: Bounded ReadyState where
+ bottom = HAVE_NOTHING
+ top = HAVE_ENOUGH_DATA
+
+instance boundedOrdReadyState :: BoundedOrd ReadyState
+
+instance enumReadyState :: Enum ReadyState where
+ cardinality = Cardinality 5
+ succ = defaultSucc toEnumReadyState fromEnumReadyState
+ pred = defaultPred toEnumReadyState fromEnumReadyState
+ toEnum = toEnumReadyState
+ fromEnum = fromEnumReadyState
+
+instance showReadyState :: Show ReadyState where
+ show HAVE_NOTHING = "HAVE_NOTHING"
+ show HAVE_METADATA = "HAVE_METADATA"
+ show HAVE_CURRENT_DATA = "HAVE_CURRENT_DATA"
+ show HAVE_FUTURE_DATA = "HAVE_FUTURE_DATA"
+ show HAVE_ENOUGH_DATA = "HAVE_ENOUGH_DATA"
+
+toEnumReadyState :: Int -> Maybe ReadyState
+toEnumReadyState 0 = Just HAVE_NOTHING
+toEnumReadyState 1 = Just HAVE_METADATA
+toEnumReadyState 2 = Just HAVE_CURRENT_DATA
+toEnumReadyState 3 = Just HAVE_FUTURE_DATA
+toEnumReadyState 4 = Just HAVE_ENOUGH_DATA
+toEnumReadyState _ = Nothing
+
+fromEnumReadyState :: ReadyState -> Int
+fromEnumReadyState HAVE_NOTHING = 0
+fromEnumReadyState HAVE_METADATA = 1
+fromEnumReadyState HAVE_CURRENT_DATA = 2
+fromEnumReadyState HAVE_FUTURE_DATA = 3
+fromEnumReadyState HAVE_ENOUGH_DATA = 4
diff --git a/src/DOM/HTML/HTMLMetaElement.js b/src/DOM/HTML/HTMLMetaElement.js
new file mode 100644
index 0000000..322c257
--- /dev/null
+++ b/src/DOM/HTML/HTMLMetaElement.js
@@ -0,0 +1,50 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLMetaElement
+
+exports.name = function (meta) {
+ return function () {
+ return meta.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (meta) {
+ return function () {
+ meta.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.httpEquiv = function (meta) {
+ return function () {
+ return meta.httpEquiv;
+ };
+};
+
+exports.setHttpEquiv = function (httpEquiv) {
+ return function (meta) {
+ return function () {
+ meta.httpEquiv = httpEquiv;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.content = function (meta) {
+ return function () {
+ return meta.content;
+ };
+};
+
+exports.setContent = function (content) {
+ return function (meta) {
+ return function () {
+ meta.content = content;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLMetaElement.purs b/src/DOM/HTML/HTMLMetaElement.purs
new file mode 100644
index 0000000..eba271f
--- /dev/null
+++ b/src/DOM/HTML/HTMLMetaElement.purs
@@ -0,0 +1,17 @@
+module DOM.HTML.HTMLMetaElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLMetaElement())
+
+foreign import name :: forall eff. HTMLMetaElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLMetaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import httpEquiv :: forall eff. HTMLMetaElement -> Eff (dom :: DOM | eff) String
+foreign import setHttpEquiv :: forall eff. String -> HTMLMetaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import content :: forall eff. HTMLMetaElement -> Eff (dom :: DOM | eff) String
+foreign import setContent :: forall eff. String -> HTMLMetaElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLMeterElement.js b/src/DOM/HTML/HTMLMeterElement.js
new file mode 100644
index 0000000..17e1d2d
--- /dev/null
+++ b/src/DOM/HTML/HTMLMeterElement.js
@@ -0,0 +1,106 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLMeterElement
+
+exports.value = function (meter) {
+ return function () {
+ return meter.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (meter) {
+ return function () {
+ meter.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.min = function (meter) {
+ return function () {
+ return meter.min;
+ };
+};
+
+exports.setMin = function (min) {
+ return function (meter) {
+ return function () {
+ meter.min = min;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.max = function (meter) {
+ return function () {
+ return meter.max;
+ };
+};
+
+exports.setMax = function (max) {
+ return function (meter) {
+ return function () {
+ meter.max = max;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.low = function (meter) {
+ return function () {
+ return meter.low;
+ };
+};
+
+exports.setLow = function (low) {
+ return function (meter) {
+ return function () {
+ meter.low = low;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.high = function (meter) {
+ return function () {
+ return meter.high;
+ };
+};
+
+exports.setLow = function (high) {
+ return function (meter) {
+ return function () {
+ meter.high = high;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.optimum = function (meter) {
+ return function () {
+ return meter.optimum;
+ };
+};
+
+exports.setLow = function (optimum) {
+ return function (meter) {
+ return function () {
+ meter.optimum = optimum;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.labels = function (meter) {
+ return function () {
+ return meter.labels;
+ };
+};
diff --git a/src/DOM/HTML/HTMLMeterElement.purs b/src/DOM/HTML/HTMLMeterElement.purs
new file mode 100644
index 0000000..0c1b4c4
--- /dev/null
+++ b/src/DOM/HTML/HTMLMeterElement.purs
@@ -0,0 +1,29 @@
+module DOM.HTML.HTMLMeterElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLMeterElement())
+import DOM.Node.Types (NodeList())
+
+foreign import value :: forall eff. HTMLMeterElement -> Eff (dom :: DOM | eff) Number
+foreign import setValue :: forall eff. Number -> HTMLMeterElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import min :: forall eff. HTMLMeterElement -> Eff (dom :: DOM | eff) Number
+foreign import setMin :: forall eff. Number -> HTMLMeterElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import max :: forall eff. HTMLMeterElement -> Eff (dom :: DOM | eff) Number
+foreign import setMax :: forall eff. Number -> HTMLMeterElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import low :: forall eff. HTMLMeterElement -> Eff (dom :: DOM | eff) Number
+foreign import setLow :: forall eff. Number -> HTMLMeterElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import high :: forall eff. HTMLMeterElement -> Eff (dom :: DOM | eff) Number
+foreign import setHigh :: forall eff. Number -> HTMLMeterElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import optimum :: forall eff. HTMLMeterElement -> Eff (dom :: DOM | eff) Number
+foreign import setOptimum :: forall eff. Number -> HTMLMeterElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import labels :: forall eff. HTMLMeterElement -> Eff (dom :: DOM | eff) NodeList
diff --git a/src/DOM/HTML/HTMLModElement.js b/src/DOM/HTML/HTMLModElement.js
new file mode 100644
index 0000000..017e820
--- /dev/null
+++ b/src/DOM/HTML/HTMLModElement.js
@@ -0,0 +1,34 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLModElement
+
+exports.cite = function (mod) {
+ return function () {
+ return mod.cite;
+ };
+};
+
+exports.setCite = function (cite) {
+ return function (mod) {
+ return function () {
+ mod.cite = cite;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.dateTime = function (mod) {
+ return function () {
+ return mod.dateTime;
+ };
+};
+
+exports.setDateTime = function (dateTime) {
+ return function (mod) {
+ return function () {
+ mod.dateTime = dateTime;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLModElement.purs b/src/DOM/HTML/HTMLModElement.purs
new file mode 100644
index 0000000..29379c4
--- /dev/null
+++ b/src/DOM/HTML/HTMLModElement.purs
@@ -0,0 +1,14 @@
+module DOM.HTML.HTMLModElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLModElement())
+
+foreign import cite :: forall eff. HTMLModElement -> Eff (dom :: DOM | eff) String
+foreign import setCite :: forall eff. String -> HTMLModElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import dateTime :: forall eff. HTMLModElement -> Eff (dom :: DOM | eff) String
+foreign import setDateTime :: forall eff. String -> HTMLModElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLOListElement.js b/src/DOM/HTML/HTMLOListElement.js
new file mode 100644
index 0000000..776f5ce
--- /dev/null
+++ b/src/DOM/HTML/HTMLOListElement.js
@@ -0,0 +1,50 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLOListElement
+
+exports.reversed = function (ol) {
+ return function () {
+ return ol.reversed;
+ };
+};
+
+exports.setReversed = function (reversed) {
+ return function (ol) {
+ return function () {
+ ol.reversed = reversed;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.start = function (ol) {
+ return function () {
+ return ol.start;
+ };
+};
+
+exports.setStart = function (start) {
+ return function (ol) {
+ return function () {
+ ol.start = start;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (ol) {
+ return function () {
+ return ol.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (ol) {
+ return function () {
+ ol.type = type;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLOListElement.purs b/src/DOM/HTML/HTMLOListElement.purs
new file mode 100644
index 0000000..b24c87d
--- /dev/null
+++ b/src/DOM/HTML/HTMLOListElement.purs
@@ -0,0 +1,17 @@
+module DOM.HTML.HTMLOListElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLOListElement())
+
+foreign import reversed :: forall eff. HTMLOListElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setReversed :: forall eff. Boolean -> HTMLOListElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import start :: forall eff. HTMLOListElement -> Eff (dom :: DOM | eff) Int
+foreign import setStart :: forall eff. Int -> HTMLOListElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLOListElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLOListElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLObjectElement.js b/src/DOM/HTML/HTMLObjectElement.js
new file mode 100644
index 0000000..15994ec
--- /dev/null
+++ b/src/DOM/HTML/HTMLObjectElement.js
@@ -0,0 +1,164 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLObjectElement
+
+exports.data_ = function (object) {
+ return function () {
+ return object.data;
+ };
+};
+
+exports.setData = function (data) {
+ return function (object) {
+ return function () {
+ object.data = data;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (object) {
+ return function () {
+ return object.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (object) {
+ return function () {
+ object.type = type;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.typeMustMatch = function (object) {
+ return function () {
+ return object.typeMustMatch;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (object) {
+ return function () {
+ return object.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (object) {
+ return function () {
+ object.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.useMap = function (object) {
+ return function () {
+ return object.useMap;
+ };
+};
+
+exports.setUseMap = function (useMap) {
+ return function (object) {
+ return function () {
+ object.useMap = useMap;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.form = function (object) {
+ return function () {
+ return object.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.width = function (object) {
+ return function () {
+ return object.width;
+ };
+};
+
+exports.setWidth = function (width) {
+ return function (object) {
+ return function () {
+ object.width = width;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.height = function (object) {
+ return function () {
+ return object.height;
+ };
+};
+
+exports.setHeight = function (height) {
+ return function (object) {
+ return function () {
+ object.height = height;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.contentDocument = function (object) {
+ return function () {
+ return object.contentDocument;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.willValidate = function (object) {
+ return function () {
+ return object.willValidate;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validity = function (object) {
+ return function () {
+ return object.validity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validationMessage = function (object) {
+ return function () {
+ return object.validationMessage;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (object) {
+ return function () {
+ return object.checkValidity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setCustomValidity = function (value) {
+ return function (object) {
+ return function () {
+ object.setCustomValidity(value);
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLObjectElement.purs b/src/DOM/HTML/HTMLObjectElement.purs
new file mode 100644
index 0000000..7ae9d9a
--- /dev/null
+++ b/src/DOM/HTML/HTMLObjectElement.purs
@@ -0,0 +1,49 @@
+module DOM.HTML.HTMLObjectElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLObjectElement(), HTMLFormElement(), ValidityState())
+import DOM.Node.Types (Document())
+
+foreign import data_ :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String
+foreign import setData :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import typeMustMatch :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import name :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import useMap :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String
+foreign import setUseMap :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import form :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import width :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String
+foreign import setWidth :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import height :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String
+foreign import setHeight :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import contentDocument :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) (Nullable Document)
+
+-- readonly attribute WindowProxy? contentWindow;
+
+foreign import willValidate :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import validity :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) ValidityState
+
+foreign import validationMessage :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String
+
+foreign import checkValidity :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import setCustomValidity :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit
+
+-- legacycaller any (any... arguments);
diff --git a/src/DOM/HTML/HTMLOptGroupElement.js b/src/DOM/HTML/HTMLOptGroupElement.js
new file mode 100644
index 0000000..cc88703
--- /dev/null
+++ b/src/DOM/HTML/HTMLOptGroupElement.js
@@ -0,0 +1,34 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLOptGroupElement
+
+exports.disabled = function (optgroup) {
+ return function () {
+ return optgroup.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (optgroup) {
+ return function () {
+ optgroup.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.label = function (optgroup) {
+ return function () {
+ return optgroup.label;
+ };
+};
+
+exports.setLabel = function (label) {
+ return function (optgroup) {
+ return function () {
+ optgroup.label = label;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLOptGroupElement.purs b/src/DOM/HTML/HTMLOptGroupElement.purs
new file mode 100644
index 0000000..1ed09e8
--- /dev/null
+++ b/src/DOM/HTML/HTMLOptGroupElement.purs
@@ -0,0 +1,14 @@
+module DOM.HTML.HTMLOptGroupElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLOptGroupElement())
+
+foreign import disabled :: forall eff. HTMLOptGroupElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLOptGroupElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import label :: forall eff. HTMLOptGroupElement -> Eff (dom :: DOM | eff) String
+foreign import setLabel :: forall eff. String -> HTMLOptGroupElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLOptionElement.js b/src/DOM/HTML/HTMLOptionElement.js
new file mode 100644
index 0000000..c93f828
--- /dev/null
+++ b/src/DOM/HTML/HTMLOptionElement.js
@@ -0,0 +1,114 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLOptionElement
+
+exports.disabled = function (option) {
+ return function () {
+ return option.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (option) {
+ return function () {
+ option.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.form = function (option) {
+ return function () {
+ return option.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.label = function (option) {
+ return function () {
+ return option.label;
+ };
+};
+
+exports.setLabel = function (label) {
+ return function (option) {
+ return function () {
+ option.label = label;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.defaultSelected = function (option) {
+ return function () {
+ return option.defaultSelected;
+ };
+};
+
+exports.setDefaultSelected = function (defaultSelected) {
+ return function (option) {
+ return function () {
+ option.defaultSelected = defaultSelected;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selected = function (option) {
+ return function () {
+ return option.selected;
+ };
+};
+
+exports.setSelected = function (selected) {
+ return function (option) {
+ return function () {
+ option.selected = selected;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.value = function (option) {
+ return function () {
+ return option.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (option) {
+ return function () {
+ option.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.text = function (option) {
+ return function () {
+ return option.text;
+ };
+};
+
+exports.setText = function (text) {
+ return function (option) {
+ return function () {
+ option.text = text;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.index = function (option) {
+ return function () {
+ return option.index;
+ };
+};
diff --git a/src/DOM/HTML/HTMLOptionElement.purs b/src/DOM/HTML/HTMLOptionElement.purs
new file mode 100644
index 0000000..dceda21
--- /dev/null
+++ b/src/DOM/HTML/HTMLOptionElement.purs
@@ -0,0 +1,34 @@
+module DOM.HTML.HTMLOptionElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLOptionElement(), HTMLFormElement())
+
+-- [NamedConstructor=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)]
+
+foreign import disabled :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLOptionElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import form :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import label :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) String
+foreign import setLabel :: forall eff. String -> HTMLOptionElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import defaultSelected :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDefaultSelected :: forall eff. Boolean -> HTMLOptionElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import selected :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setSelected :: forall eff. Boolean -> HTMLOptionElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import value :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) String
+foreign import setValue :: forall eff. String -> HTMLOptionElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import text :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) String
+foreign import setText :: forall eff. String -> HTMLOptionElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import index :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) Int
diff --git a/src/DOM/HTML/HTMLOutputElement.js b/src/DOM/HTML/HTMLOutputElement.js
new file mode 100644
index 0000000..0c6a10e
--- /dev/null
+++ b/src/DOM/HTML/HTMLOutputElement.js
@@ -0,0 +1,116 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLOutputElement
+
+exports.form = function (output) {
+ return function () {
+ return output.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (output) {
+ return function () {
+ return output.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (output) {
+ return function () {
+ output.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (output) {
+ return function () {
+ return output.type;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.defaultValue = function (output) {
+ return function () {
+ return output.defaultValue;
+ };
+};
+
+exports.setDefaultValue = function (defaultValue) {
+ return function (output) {
+ return function () {
+ output.defaultValue = defaultValue;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.value = function (output) {
+ return function () {
+ return output.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (output) {
+ return function () {
+ output.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.willValidate = function (output) {
+ return function () {
+ return output.willValidate;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validity = function (output) {
+ return function () {
+ return output.validity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validationMessage = function (output) {
+ return function () {
+ return output.validationMessage;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (output) {
+ return function () {
+ return output.checkValidity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setCustomValidity = function (value) {
+ return function (output) {
+ return function () {
+ output.setCustomValidity(value);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.labels = function (output) {
+ return function () {
+ return output.labels;
+ };
+};
diff --git a/src/DOM/HTML/HTMLOutputElement.purs b/src/DOM/HTML/HTMLOutputElement.purs
new file mode 100644
index 0000000..b2e4e67
--- /dev/null
+++ b/src/DOM/HTML/HTMLOutputElement.purs
@@ -0,0 +1,38 @@
+module DOM.HTML.HTMLOutputElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.Node.Types (NodeList())
+import DOM.HTML.Types (HTMLOutputElement(), HTMLFormElement(), ValidityState())
+
+-- [PutForwards=value] readonly attribute DOMSettableTokenList htmlFor;
+
+foreign import form :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import name :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLOutputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) String
+
+foreign import defaultValue :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) String
+foreign import setDefaultValue :: forall eff. String -> HTMLOutputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import value :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) String
+foreign import setValue :: forall eff. String -> HTMLOutputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import willValidate :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import validity :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) ValidityState
+
+foreign import validationMessage :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) String
+
+foreign import checkValidity :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import setCustomValidity :: forall eff. String -> HTMLOutputElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import labels :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) NodeList
diff --git a/src/DOM/HTML/HTMLParamElement.js b/src/DOM/HTML/HTMLParamElement.js
new file mode 100644
index 0000000..6f82b2b
--- /dev/null
+++ b/src/DOM/HTML/HTMLParamElement.js
@@ -0,0 +1,34 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLParamElement
+
+exports.name = function (param) {
+ return function () {
+ return param.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (param) {
+ return function () {
+ param.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.value = function (param) {
+ return function () {
+ return param.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (param) {
+ return function () {
+ param.value = value;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLParamElement.purs b/src/DOM/HTML/HTMLParamElement.purs
new file mode 100644
index 0000000..d4beac7
--- /dev/null
+++ b/src/DOM/HTML/HTMLParamElement.purs
@@ -0,0 +1,14 @@
+module DOM.HTML.HTMLParamElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLParamElement())
+
+foreign import name :: forall eff. HTMLParamElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLParamElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import value :: forall eff. HTMLParamElement -> Eff (dom :: DOM | eff) String
+foreign import setValue :: forall eff. String -> HTMLParamElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLProgressElement.js b/src/DOM/HTML/HTMLProgressElement.js
new file mode 100644
index 0000000..f702ef8
--- /dev/null
+++ b/src/DOM/HTML/HTMLProgressElement.js
@@ -0,0 +1,50 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLProgressElement
+
+exports.value = function (progress) {
+ return function () {
+ return progress.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (progress) {
+ return function () {
+ progress.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.max = function (progress) {
+ return function () {
+ return progress.max;
+ };
+};
+
+exports.setMax = function (max) {
+ return function (progress) {
+ return function () {
+ progress.max = max;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.position = function (progress) {
+ return function () {
+ return progress.position;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.labels = function (progress) {
+ return function () {
+ return progress.labels;
+ };
+};
diff --git a/src/DOM/HTML/HTMLProgressElement.purs b/src/DOM/HTML/HTMLProgressElement.purs
new file mode 100644
index 0000000..4d6b278
--- /dev/null
+++ b/src/DOM/HTML/HTMLProgressElement.purs
@@ -0,0 +1,19 @@
+module DOM.HTML.HTMLProgressElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLProgressElement())
+import DOM.Node.Types (NodeList())
+
+foreign import value :: forall eff. HTMLProgressElement -> Eff (dom :: DOM | eff) Number
+foreign import setValue :: forall eff. Number -> HTMLProgressElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import max :: forall eff. HTMLProgressElement -> Eff (dom :: DOM | eff) Number
+foreign import setMax :: forall eff. Number -> HTMLProgressElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import position :: forall eff. HTMLProgressElement -> Eff (dom :: DOM | eff) Number
+
+foreign import labels :: forall eff. HTMLProgressElement -> Eff (dom :: DOM | eff) NodeList
diff --git a/src/DOM/HTML/HTMLQuoteElement.js b/src/DOM/HTML/HTMLQuoteElement.js
new file mode 100644
index 0000000..3e09c3d
--- /dev/null
+++ b/src/DOM/HTML/HTMLQuoteElement.js
@@ -0,0 +1,18 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLQuoteElement
+
+exports.cite = function (quote) {
+ return function () {
+ return quote.cite;
+ };
+};
+
+exports.setCite = function (cite) {
+ return function (quote) {
+ return function () {
+ quote.cite = cite;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLQuoteElement.purs b/src/DOM/HTML/HTMLQuoteElement.purs
new file mode 100644
index 0000000..6b62348
--- /dev/null
+++ b/src/DOM/HTML/HTMLQuoteElement.purs
@@ -0,0 +1,11 @@
+module DOM.HTML.HTMLQuoteElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLQuoteElement())
+
+foreign import cite :: forall eff. HTMLQuoteElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setCite :: forall eff. Boolean -> HTMLQuoteElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLScriptElement.js b/src/DOM/HTML/HTMLScriptElement.js
new file mode 100644
index 0000000..f598e59
--- /dev/null
+++ b/src/DOM/HTML/HTMLScriptElement.js
@@ -0,0 +1,114 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLScriptElement
+
+exports.src = function (script) {
+ return function () {
+ return script.src;
+ };
+};
+
+exports.setSrc = function (src) {
+ return function (script) {
+ return function () {
+ script.src = src;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (script) {
+ return function () {
+ return script.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (script) {
+ return function () {
+ script.type = type;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.charset = function (script) {
+ return function () {
+ return script.charset;
+ };
+};
+
+exports.setCharset = function (charset) {
+ return function (script) {
+ return function () {
+ script.charset = charset;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.async = function (script) {
+ return function () {
+ return script.async;
+ };
+};
+
+exports.setAsync = function (async) {
+ return function (script) {
+ return function () {
+ script.async = async;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.defer = function (script) {
+ return function () {
+ return script.defer;
+ };
+};
+
+exports.setDefer = function (defer) {
+ return function (script) {
+ return function () {
+ script.defer = defer;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.crossOrigin = function (script) {
+ return function () {
+ return script.crossOrigin;
+ };
+};
+
+exports.setCrossOrigin = function (crossOrigin) {
+ return function (script) {
+ return function () {
+ script.crossOrigin = crossOrigin;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.text = function (script) {
+ return function () {
+ return script.text;
+ };
+};
+
+exports.setText = function (text) {
+ return function (script) {
+ return function () {
+ script.text = text;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLScriptElement.purs b/src/DOM/HTML/HTMLScriptElement.purs
new file mode 100644
index 0000000..3d67a8c
--- /dev/null
+++ b/src/DOM/HTML/HTMLScriptElement.purs
@@ -0,0 +1,29 @@
+module DOM.HTML.HTMLScriptElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLScriptElement())
+
+foreign import src :: forall eff. HTMLScriptElement -> Eff (dom :: DOM | eff) String
+foreign import setSrc :: forall eff. String -> HTMLScriptElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLScriptElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLScriptElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import charset :: forall eff. HTMLScriptElement -> Eff (dom :: DOM | eff) String
+foreign import setCharset :: forall eff. String -> HTMLScriptElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import async :: forall eff. HTMLScriptElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAsync :: forall eff. Boolean -> HTMLScriptElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import defer :: forall eff. HTMLScriptElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDefer :: forall eff. Boolean -> HTMLScriptElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import crossOrigin :: forall eff. HTMLScriptElement -> Eff (dom :: DOM | eff) String
+foreign import setCrossOrigin :: forall eff. String -> HTMLScriptElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import text :: forall eff. HTMLScriptElement -> Eff (dom :: DOM | eff) String
+foreign import setText :: forall eff. String -> HTMLScriptElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLSelectElement.js b/src/DOM/HTML/HTMLSelectElement.js
new file mode 100644
index 0000000..1e3a714
--- /dev/null
+++ b/src/DOM/HTML/HTMLSelectElement.js
@@ -0,0 +1,220 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLSelectElement
+
+exports.autofocus = function (select) {
+ return function () {
+ return select.autofocus;
+ };
+};
+
+exports.setAutofocus = function (autofocus) {
+ return function (select) {
+ return function () {
+ select.autofocus = autofocus;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.disabled = function (select) {
+ return function () {
+ return select.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (select) {
+ return function () {
+ select.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.multiple = function (select) {
+ return function () {
+ return select.multiple;
+ };
+};
+
+exports.setMultiple = function (multiple) {
+ return function (select) {
+ return function () {
+ select.multiple = multiple;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.form = function (select) {
+ return function () {
+ return select.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (select) {
+ return function () {
+ return select.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (select) {
+ return function () {
+ select.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.required = function (select) {
+ return function () {
+ return select.required;
+ };
+};
+
+exports.setRequired = function (required) {
+ return function (select) {
+ return function () {
+ select.required = required;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.size = function (select) {
+ return function () {
+ return select.size;
+ };
+};
+
+exports.setSize = function (size) {
+ return function (select) {
+ return function () {
+ select.size = size;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (select) {
+ return function () {
+ return select.type;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.length = function (select) {
+ return function () {
+ return select.length;
+ };
+};
+
+exports.setLength = function (length) {
+ return function (select) {
+ return function () {
+ select.length = length;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectedOptions = function (select) {
+ return function () {
+ return select.selectedOptions;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectedIndex = function (select) {
+ return function () {
+ return select.selectedIndex;
+ };
+};
+
+exports.setSelectedIndex = function (selectedIndex) {
+ return function (select) {
+ return function () {
+ select.selectedIndex = selectedIndex;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.value = function (select) {
+ return function () {
+ return select.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (select) {
+ return function () {
+ select.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.willValidate = function (select) {
+ return function () {
+ return select.willValidate;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validity = function (select) {
+ return function () {
+ return select.validity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validationMessage = function (select) {
+ return function () {
+ return select.validationMessage;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (select) {
+ return function () {
+ return select.checkValidity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setCustomValidity = function (value) {
+ return function (select) {
+ return function () {
+ select.setCustomValidity(value);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.labels = function (select) {
+ return function () {
+ return select.labels;
+ };
+};
diff --git a/src/DOM/HTML/HTMLSelectElement.purs b/src/DOM/HTML/HTMLSelectElement.purs
new file mode 100644
index 0000000..1d0a97e
--- /dev/null
+++ b/src/DOM/HTML/HTMLSelectElement.purs
@@ -0,0 +1,65 @@
+module DOM.HTML.HTMLSelectElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLSelectElement(), HTMLFormElement(), ValidityState())
+import DOM.Node.Types (NodeList(), HTMLCollection())
+
+foreign import autofocus :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAutofocus :: forall eff. Boolean -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import disabled :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import form :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import multiple :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setMultiple :: forall eff. Boolean -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import name :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import required :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setRequired :: forall eff. Boolean -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import size :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Int
+foreign import setSize :: forall eff. Int -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) String
+
+-- readonly attribute HTMLOptionsCollection options;
+
+foreign import length :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Int
+foreign import setLength :: forall eff. Int -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+-- getter Element? item(unsigned long index);
+-- HTMLOptionElement? namedItem(DOMString name);
+-- void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
+-- void remove(); // ChildNode overload
+-- void remove(long index);
+-- setter creator void (unsigned long index, HTMLOptionElement? option);
+
+foreign import selectedOptions :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) HTMLCollection
+
+foreign import selectedIndex :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Int
+foreign import setSelectedIndex :: forall eff. Int -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import value :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) String
+foreign import setValue :: forall eff. String -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import willValidate :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import validity :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) ValidityState
+
+foreign import validationMessage :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) String
+
+foreign import checkValidity :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import setCustomValidity :: forall eff. String -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import labels :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) NodeList
diff --git a/src/DOM/HTML/HTMLSourceElement.js b/src/DOM/HTML/HTMLSourceElement.js
new file mode 100644
index 0000000..cddcdc5
--- /dev/null
+++ b/src/DOM/HTML/HTMLSourceElement.js
@@ -0,0 +1,50 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLSourceElement
+
+exports.src = function (source) {
+ return function () {
+ return source.src;
+ };
+};
+
+exports.setSrc = function (src) {
+ return function (source) {
+ return function () {
+ source.src = src;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (source) {
+ return function () {
+ return source.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (source) {
+ return function () {
+ source.type = type;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.media = function (source) {
+ return function () {
+ return source.media;
+ };
+};
+
+exports.setMedia = function (media) {
+ return function (source) {
+ return function () {
+ source.media = media;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLSourceElement.purs b/src/DOM/HTML/HTMLSourceElement.purs
new file mode 100644
index 0000000..d4fd22d
--- /dev/null
+++ b/src/DOM/HTML/HTMLSourceElement.purs
@@ -0,0 +1,20 @@
+module DOM.HTML.HTMLSourceElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLSourceElement())
+
+-- [NamedConstructor=Audio(optional DOMString src)]
+
+foreign import src :: forall eff. HTMLSourceElement -> Eff (dom :: DOM | eff) String
+foreign import setSrc :: forall eff. String -> HTMLSourceElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLSourceElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLSourceElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import media :: forall eff. HTMLSourceElement -> Eff (dom :: DOM | eff) String
+foreign import setMedia :: forall eff. String -> HTMLSourceElement -> Eff (dom :: DOM | eff) Unit
+
diff --git a/src/DOM/HTML/HTMLStyleElement.js b/src/DOM/HTML/HTMLStyleElement.js
new file mode 100644
index 0000000..a45c6e7
--- /dev/null
+++ b/src/DOM/HTML/HTMLStyleElement.js
@@ -0,0 +1,50 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLStyleElement
+
+exports.disabled = function (style) {
+ return function () {
+ return style.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (style) {
+ return function () {
+ style.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.media = function (style) {
+ return function () {
+ return style.media;
+ };
+};
+
+exports.setMedia = function (media) {
+ return function (style) {
+ return function () {
+ style.media = media;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (style) {
+ return function () {
+ return style.type;
+ };
+};
+
+exports.setType = function (type) {
+ return function (style) {
+ return function () {
+ style.type = type;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLStyleElement.purs b/src/DOM/HTML/HTMLStyleElement.purs
new file mode 100644
index 0000000..c1173ae
--- /dev/null
+++ b/src/DOM/HTML/HTMLStyleElement.purs
@@ -0,0 +1,17 @@
+module DOM.HTML.HTMLStyleElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLStyleElement())
+
+foreign import disabled :: forall eff. HTMLStyleElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLStyleElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import media :: forall eff. HTMLStyleElement -> Eff (dom :: DOM | eff) String
+foreign import setMedia :: forall eff. String -> HTMLStyleElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLStyleElement -> Eff (dom :: DOM | eff) String
+foreign import setType :: forall eff. String -> HTMLStyleElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTableCellElement.js b/src/DOM/HTML/HTMLTableCellElement.js
new file mode 100644
index 0000000..6f8e826
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableCellElement.js
@@ -0,0 +1,42 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTableCellElement
+
+exports.colSpan = function (cell) {
+ return function () {
+ return cell.colSpan;
+ };
+};
+
+exports.setSpan = function (colSpan) {
+ return function (cell) {
+ return function () {
+ cell.colSpan = colSpan;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.rowSpan = function (cell) {
+ return function () {
+ return cell.rowSpan;
+ };
+};
+
+exports.setRowSpan = function (rowSpan) {
+ return function (cell) {
+ return function () {
+ cell.rowSpan = rowSpan;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.cellIndex = function (cell) {
+ return function () {
+ return cell.cellIndex;
+ };
+};
diff --git a/src/DOM/HTML/HTMLTableCellElement.purs b/src/DOM/HTML/HTMLTableCellElement.purs
new file mode 100644
index 0000000..286b03e
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableCellElement.purs
@@ -0,0 +1,19 @@
+module DOM.HTML.HTMLTableCellElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTableCellElement())
+
+
+foreign import colSpan :: forall eff. HTMLTableCellElement -> Eff (dom :: DOM | eff) Int
+foreign import setColSpan :: forall eff. Int -> HTMLTableCellElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import rowSpan :: forall eff. HTMLTableCellElement -> Eff (dom :: DOM | eff) Int
+foreign import setRowSpan :: forall eff. Int -> HTMLTableCellElement -> Eff (dom :: DOM | eff) Unit
+
+-- [PutForwards=value] readonly attribute DOMSettableTokenList headers;
+
+foreign import cellIndex :: forall eff. HTMLTableCellElement -> Eff (dom :: DOM | eff) Int
diff --git a/src/DOM/HTML/HTMLTableColElement.js b/src/DOM/HTML/HTMLTableColElement.js
new file mode 100644
index 0000000..7bb537d
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableColElement.js
@@ -0,0 +1,18 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTableColElement
+
+exports.span = function (col) {
+ return function () {
+ return col.span;
+ };
+};
+
+exports.setSpan = function (span) {
+ return function (col) {
+ return function () {
+ col.span = span;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLTableColElement.purs b/src/DOM/HTML/HTMLTableColElement.purs
new file mode 100644
index 0000000..92e2031
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableColElement.purs
@@ -0,0 +1,11 @@
+module DOM.HTML.HTMLTableColElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTableColElement())
+
+foreign import span :: forall eff. HTMLTableColElement -> Eff (dom :: DOM | eff) Int
+foreign import setSpan :: forall eff. Int -> HTMLTableColElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTableElement.js b/src/DOM/HTML/HTMLTableElement.js
new file mode 100644
index 0000000..b2476a1
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableElement.js
@@ -0,0 +1,158 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTableElement
+
+exports.caption = function (table) {
+ return function () {
+ return table.caption;
+ };
+};
+
+exports.setCaption = function (caption) {
+ return function (table) {
+ return function () {
+ table.caption = caption;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.createCaption = function (table) {
+ return function () {
+ return table.createCaption();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.deleteCaption = function (table) {
+ return function () {
+ table.deleteCaption();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.tHead = function (table) {
+ return function () {
+ return table.tHead;
+ };
+};
+
+exports.setTHead = function (tHead) {
+ return function (table) {
+ return function () {
+ table.tHead = tHead;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.createTHead = function (table) {
+ return function () {
+ return table.createTHead();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.deleteTHead = function (table) {
+ return function () {
+ table.deleteTHead();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.tFoot = function (table) {
+ return function () {
+ return table.tFoot;
+ };
+};
+
+exports.setTFoot = function (tFoot) {
+ return function (table) {
+ return function () {
+ table.tFoot = tFoot;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.createTFoot = function (table) {
+ return function () {
+ return table.createTFoot();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.deleteTFoot = function (table) {
+ return function () {
+ table.deleteTFoot();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.tBodies = function (table) {
+ return function () {
+ return table.tBodies;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.createTBody = function (table) {
+ return function () {
+ return table.createTBody();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.rows = function (table) {
+ return function () {
+ return table.rows;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports["insertRow'"] = function (table) {
+ return function (index) {
+ return function () {
+ return table.insertRow(index);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.deleteRow = function (table) {
+ return function (index) {
+ return function () {
+ table.deleteRow(index);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.border = function (table) {
+ return function () {
+ return table.border;
+ };
+};
+
+exports.setBorder = function (border) {
+ return function (table) {
+ return function () {
+ table.border = border;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLTableElement.purs b/src/DOM/HTML/HTMLTableElement.purs
new file mode 100644
index 0000000..0108303
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableElement.purs
@@ -0,0 +1,44 @@
+module DOM.HTML.HTMLTableElement where
+
+import Prelude (Unit(), negate)
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTableElement(), HTMLTableCaptionElement(), HTMLElement(), HTMLTableSectionElement())
+import DOM.Node.Types (HTMLCollection())
+
+foreign import caption :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableCaptionElement)
+foreign import setCaption :: forall eff. Nullable HTMLTableCaptionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import createCaption :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement
+foreign import deleteCaption :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import tHead :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableSectionElement)
+foreign import setTHead :: forall eff. Nullable HTMLTableSectionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import createTHead :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement
+foreign import deleteTHead :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import tFoot :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableSectionElement)
+foreign import setTFoot :: forall eff. Nullable HTMLTableSectionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import createTFoot :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement
+foreign import deleteTFoot :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import tBodies :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLCollection
+foreign import createTBody :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement
+
+foreign import rows :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLCollection
+
+insertRow :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement
+insertRow = insertRow' (-1)
+
+foreign import insertRow' :: forall eff. Int -> HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement
+
+foreign import deleteRow :: forall eff. Int -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import border :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) String
+foreign import setBorder :: forall eff. String -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTableHeaderCellElement.js b/src/DOM/HTML/HTMLTableHeaderCellElement.js
new file mode 100644
index 0000000..78cd335
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableHeaderCellElement.js
@@ -0,0 +1,34 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTableHeaderCellElement
+
+exports.scope = function (cell) {
+ return function () {
+ return cell.scope;
+ };
+};
+
+exports.setScope = function (scope) {
+ return function (cell) {
+ return function () {
+ cell.scope = scope;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.abbr = function (cell) {
+ return function () {
+ return cell.abbr;
+ };
+};
+
+exports.setAbbr = function (abbr) {
+ return function (cell) {
+ return function () {
+ cell.abbr = abbr;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLTableHeaderCellElement.purs b/src/DOM/HTML/HTMLTableHeaderCellElement.purs
new file mode 100644
index 0000000..f706919
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableHeaderCellElement.purs
@@ -0,0 +1,14 @@
+module DOM.HTML.HTMLTableHeaderCellElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTableHeaderCellElement())
+
+foreign import scope :: forall eff. HTMLTableHeaderCellElement -> Eff (dom :: DOM | eff) String
+foreign import setScope :: forall eff. String -> HTMLTableHeaderCellElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import abbr :: forall eff. HTMLTableHeaderCellElement -> Eff (dom :: DOM | eff) String
+foreign import setAbbr :: forall eff. String -> HTMLTableHeaderCellElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTableRowElement.js b/src/DOM/HTML/HTMLTableRowElement.js
new file mode 100644
index 0000000..85014fb
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableRowElement.js
@@ -0,0 +1,54 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTableRowElement
+
+exports.rowIndex = function (row) {
+ return function () {
+ return row.rowIndex;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.sectionRowIndex = function (row) {
+ return function () {
+ return row.sectionRowIndex;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.cells = function (row) {
+ return function () {
+ return row.cells;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.cells = function (row) {
+ return function () {
+ return row.cells;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports["insertCell'"] = function (index) {
+ return function (row) {
+ return function () {
+ return row.insertCell(index);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.deleteCell = function (index) {
+ return function (row) {
+ return function () {
+ row.deleteCell(index);
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLTableRowElement.purs b/src/DOM/HTML/HTMLTableRowElement.purs
new file mode 100644
index 0000000..2e33198
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableRowElement.purs
@@ -0,0 +1,22 @@
+module DOM.HTML.HTMLTableRowElement where
+
+import Prelude (Unit(), negate)
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTableRowElement(), HTMLElement())
+import DOM.Node.Types (HTMLCollection())
+
+foreign import rowIndex :: forall eff. HTMLTableRowElement -> Eff (dom :: DOM | eff) Int
+
+foreign import sectionRowIndex :: forall eff. HTMLTableRowElement -> Eff (dom :: DOM | eff) Int
+
+foreign import cells :: forall eff. HTMLTableRowElement -> Eff (dom :: DOM | eff) HTMLCollection
+
+insertCell :: forall eff. HTMLTableRowElement -> Eff (dom :: DOM | eff) HTMLElement
+insertCell = insertCell' (-1)
+
+foreign import insertCell' :: forall eff. Int -> HTMLTableRowElement -> Eff (dom :: DOM | eff) HTMLElement
+
+foreign import deleteCell :: forall eff. Int -> HTMLTableRowElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTableSectionElement.js b/src/DOM/HTML/HTMLTableSectionElement.js
new file mode 100644
index 0000000..d3db3c4
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableSectionElement.js
@@ -0,0 +1,30 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTableSectionElement
+
+exports.rows = function (section) {
+ return function () {
+ return section.rows;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports["insertRow'"] = function (section) {
+ return function (index) {
+ return function () {
+ return section.insertRow(index);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.deleteRow = function (section) {
+ return function (index) {
+ return function () {
+ section.deleteRow(index);
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLTableSectionElement.purs b/src/DOM/HTML/HTMLTableSectionElement.purs
new file mode 100644
index 0000000..5ad1c6b
--- /dev/null
+++ b/src/DOM/HTML/HTMLTableSectionElement.purs
@@ -0,0 +1,18 @@
+module DOM.HTML.HTMLTableSectionElement where
+
+import Prelude (Unit(), negate)
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTableSectionElement(), HTMLElement())
+import DOM.Node.Types (HTMLCollection())
+
+foreign import rows :: forall eff. HTMLTableSectionElement -> Eff (dom :: DOM | eff) HTMLCollection
+
+insertRow :: forall eff. HTMLTableSectionElement -> Eff (dom :: DOM | eff) HTMLElement
+insertRow = insertRow' (-1)
+
+foreign import insertRow' :: forall eff. Int -> HTMLTableSectionElement -> Eff (dom :: DOM | eff) HTMLElement
+
+foreign import deleteRow :: forall eff. Int -> HTMLTableSectionElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTemplateElement.js b/src/DOM/HTML/HTMLTemplateElement.js
new file mode 100644
index 0000000..f2dbe67
--- /dev/null
+++ b/src/DOM/HTML/HTMLTemplateElement.js
@@ -0,0 +1,10 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTemplateElement
+
+exports.content = function (template) {
+ return function () {
+ return template.content;
+ };
+};
diff --git a/src/DOM/HTML/HTMLTemplateElement.purs b/src/DOM/HTML/HTMLTemplateElement.purs
new file mode 100644
index 0000000..c210dd4
--- /dev/null
+++ b/src/DOM/HTML/HTMLTemplateElement.purs
@@ -0,0 +1,9 @@
+module DOM.HTML.HTMLTemplateElement where
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTemplateElement())
+import DOM.Node.Types (DocumentFragment())
+
+foreign import content :: forall eff. HTMLTemplateElement -> Eff (dom :: DOM | eff) DocumentFragment
diff --git a/src/DOM/HTML/HTMLTextAreaElement.js b/src/DOM/HTML/HTMLTextAreaElement.js
new file mode 100644
index 0000000..edbc9b3
--- /dev/null
+++ b/src/DOM/HTML/HTMLTextAreaElement.js
@@ -0,0 +1,410 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTextAreaElement
+
+exports.autocomplete = function (textarea) {
+ return function () {
+ return textarea.autocomplete;
+ };
+};
+
+exports.setAutocomplete = function (autocomplete) {
+ return function (textarea) {
+ return function () {
+ textarea.autocomplete = autocomplete;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.autofocus = function (textarea) {
+ return function () {
+ return textarea.autofocus;
+ };
+};
+
+exports.setAutofocus = function (autofocus) {
+ return function (textarea) {
+ return function () {
+ textarea.autofocus = autofocus;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.cols = function (textarea) {
+ return function () {
+ return textarea.cols;
+ };
+};
+
+exports.setCols = function (cols) {
+ return function (textarea) {
+ return function () {
+ textarea.cols = cols;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.dirName = function (textarea) {
+ return function () {
+ return textarea.dirName;
+ };
+};
+
+exports.setDirName = function (dirName) {
+ return function (textarea) {
+ return function () {
+ textarea.dirName = dirName;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.disabled = function (textarea) {
+ return function () {
+ return textarea.disabled;
+ };
+};
+
+exports.setDisabled = function (disabled) {
+ return function (textarea) {
+ return function () {
+ textarea.disabled = disabled;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.form = function (textarea) {
+ return function () {
+ return textarea.form;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.maxLength = function (textarea) {
+ return function () {
+ return textarea.maxLength;
+ };
+};
+
+exports.setMaxLength = function (maxLength) {
+ return function (textarea) {
+ return function () {
+ textarea.maxLength = maxLength;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.minLength = function (textarea) {
+ return function () {
+ return textarea.minLength;
+ };
+};
+
+exports.setMinLength = function (minLength) {
+ return function (textarea) {
+ return function () {
+ textarea.minLength = minLength;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.name = function (textarea) {
+ return function () {
+ return textarea.name;
+ };
+};
+
+exports.setName = function (name) {
+ return function (textarea) {
+ return function () {
+ textarea.name = name;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.placeholder = function (textarea) {
+ return function () {
+ return textarea.placeholder;
+ };
+};
+
+exports.setPlaceholder = function (placeholder) {
+ return function (textarea) {
+ return function () {
+ textarea.placeholder = placeholder;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.readOnly = function (textarea) {
+ return function () {
+ return textarea.readOnly;
+ };
+};
+
+exports.setReadOnly = function (readOnly) {
+ return function (textarea) {
+ return function () {
+ textarea.readOnly = readOnly;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.required = function (textarea) {
+ return function () {
+ return textarea.required;
+ };
+};
+
+exports.setRequired = function (required) {
+ return function (textarea) {
+ return function () {
+ textarea.required = required;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.rows = function (textarea) {
+ return function () {
+ return textarea.rows;
+ };
+};
+
+exports.setRows = function (rows) {
+ return function (textarea) {
+ return function () {
+ textarea.rows = rows;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.wrap = function (textarea) {
+ return function () {
+ return textarea.wrap;
+ };
+};
+
+exports.setWrap = function (wrap) {
+ return function (textarea) {
+ return function () {
+ textarea.wrap = wrap;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.type_ = function (textarea) {
+ return function () {
+ return textarea.type;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.defaultValue = function (textarea) {
+ return function () {
+ return textarea.defaultValue;
+ };
+};
+
+exports.setDefaultValue = function (defaultValue) {
+ return function (textarea) {
+ return function () {
+ textarea.defaultValue = defaultValue;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.value = function (textarea) {
+ return function () {
+ return textarea.value;
+ };
+};
+
+exports.setValue = function (value) {
+ return function (textarea) {
+ return function () {
+ textarea.value = value;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.textLength = function (textarea) {
+ return function () {
+ return textarea.textLength;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.willValidate = function (textarea) {
+ return function () {
+ return textarea.willValidate;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validity = function (textarea) {
+ return function () {
+ return textarea.validity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.validationMessage = function (textarea) {
+ return function () {
+ return textarea.validationMessage;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.checkValidity = function (textarea) {
+ return function () {
+ return textarea.checkValidity;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setCustomValidity = function (value) {
+ return function (textarea) {
+ return function () {
+ textarea.setCustomValidity(value);
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.labels = function (textarea) {
+ return function () {
+ return textarea.labels;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.select = function (textarea) {
+ return function () {
+ textarea.select();
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectionStart = function (textarea) {
+ return function () {
+ return textarea.selectionStart;
+ };
+};
+
+exports.setSelectionStart = function (selectionStart) {
+ return function (textarea) {
+ return function () {
+ textarea.selectionStart = selectionStart;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectionEnd = function (textarea) {
+ return function () {
+ return textarea.selectionEnd;
+ };
+};
+
+exports.setSelectionEnd = function (selectionEnd) {
+ return function (textarea) {
+ return function () {
+ textarea.selectionEnd = selectionEnd;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.selectionDirection = function (textarea) {
+ return function () {
+ return textarea.selectionDirection;
+ };
+};
+
+exports.setSelectionDirection = function (selectionDirection) {
+ return function (textarea) {
+ return function () {
+ textarea.selectionDirection = selectionDirection;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setRangeText = function (replacement) {
+ return function (textarea) {
+ return function () {
+ textarea.setRangeText(replacement);
+ };
+ };
+};
+
+exports["setRangeText'"] = function (replacement) {
+ return function (start) {
+ return function (end) {
+ return function (selectionMode) {
+ return function (textarea) {
+ return function () {
+ textarea.setRangeText(replacement);
+ };
+ };
+ };
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.setSelectionRange = function (start) {
+ return function (end) {
+ return function (direction) {
+ return function (textarea) {
+ return function () {
+ textarea.setRangeText(replacement);
+ };
+ };
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLTextAreaElement.purs b/src/DOM/HTML/HTMLTextAreaElement.purs
new file mode 100644
index 0000000..1ae939e
--- /dev/null
+++ b/src/DOM/HTML/HTMLTextAreaElement.purs
@@ -0,0 +1,91 @@
+module DOM.HTML.HTMLTextAreaElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import Data.Nullable (Nullable())
+
+import DOM (DOM())
+import DOM.HTML.SelectionMode (SelectionMode())
+import DOM.HTML.Types (HTMLTextAreaElement(), HTMLFormElement(), ValidityState())
+import DOM.Node.Types (NodeList())
+
+foreign import autocomplete :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setAutocomplete :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import autofocus :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setAutofocus :: forall eff. Boolean -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import cols :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Int
+foreign import setCols :: forall eff. Int -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import dirName :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setDirName :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import disabled :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDisabled :: forall eff. Boolean -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import form :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement)
+
+foreign import maxLength :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Int
+foreign import setMaxLength :: forall eff. Int -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import minLength :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Int
+foreign import setMinLength :: forall eff. Int -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import name :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setName :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import placeholder :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setPlaceholder :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import readOnly :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setReadOnly :: forall eff. Boolean -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import required :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setRequired :: forall eff. Boolean -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import rows :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Int
+foreign import setRows :: forall eff. Int -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import wrap :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setWrap :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import type_ :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+
+foreign import defaultValue :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setDefaultValue :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import value :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setValue :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import textLength :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Int
+
+foreign import willValidate :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import validity :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) ValidityState
+
+foreign import validationMessage :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+
+foreign import checkValidity :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Boolean
+
+foreign import setCustomValidity :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import labels :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) NodeList
+
+foreign import select :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import selectionStart :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Int
+foreign import setSelectionStart :: forall eff. Int -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import selectionEnd :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Int
+foreign import setSelectionEnd :: forall eff. Int -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import selectionDirection :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) String
+foreign import setSelectionDirection :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import setRangeText :: forall eff. String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+foreign import setRangeText' :: forall eff. String -> Int -> Int -> SelectionMode -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import setSelectionRange :: forall eff. Int -> Int -> String -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTimeElement.js b/src/DOM/HTML/HTMLTimeElement.js
new file mode 100644
index 0000000..6dca740
--- /dev/null
+++ b/src/DOM/HTML/HTMLTimeElement.js
@@ -0,0 +1,18 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTimeElement
+
+exports.dateTime = function (time) {
+ return function () {
+ return time.dateTime;
+ };
+};
+
+exports.setDateTime = function (dateTime) {
+ return function (time) {
+ return function () {
+ time.dateTime = dateTime;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLTimeElement.purs b/src/DOM/HTML/HTMLTimeElement.purs
new file mode 100644
index 0000000..c2f7178
--- /dev/null
+++ b/src/DOM/HTML/HTMLTimeElement.purs
@@ -0,0 +1,11 @@
+module DOM.HTML.HTMLTimeElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTimeElement())
+
+foreign import dateTime :: forall eff. HTMLTimeElement -> Eff (dom :: DOM | eff) String
+foreign import setDateTime :: forall eff. String -> HTMLTimeElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTitleElement.js b/src/DOM/HTML/HTMLTitleElement.js
new file mode 100644
index 0000000..48478d8
--- /dev/null
+++ b/src/DOM/HTML/HTMLTitleElement.js
@@ -0,0 +1,18 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTitleElement
+
+exports.text = function (title) {
+ return function () {
+ return title.text;
+ };
+};
+
+exports.setText = function (text) {
+ return function (title) {
+ return function () {
+ title.text = text;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLTitleElement.purs b/src/DOM/HTML/HTMLTitleElement.purs
new file mode 100644
index 0000000..81fb195
--- /dev/null
+++ b/src/DOM/HTML/HTMLTitleElement.purs
@@ -0,0 +1,11 @@
+module DOM.HTML.HTMLTitleElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLTitleElement())
+
+foreign import text :: forall eff. HTMLTitleElement -> Eff (dom :: DOM | eff) String
+foreign import setText :: forall eff. String -> HTMLTitleElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/HTMLTrackElement.js b/src/DOM/HTML/HTMLTrackElement.js
new file mode 100644
index 0000000..57d27bc
--- /dev/null
+++ b/src/DOM/HTML/HTMLTrackElement.js
@@ -0,0 +1,90 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLTrackElement
+
+exports.kind = function (track) {
+ return function () {
+ return track.kind;
+ };
+};
+
+exports.setKind = function (kind) {
+ return function (track) {
+ return function () {
+ track.kind = kind;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.src = function (track) {
+ return function () {
+ return track.src;
+ };
+};
+
+exports.setSrc = function (src) {
+ return function (track) {
+ return function () {
+ track.src = src;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.srclang = function (track) {
+ return function () {
+ return track.srclang;
+ };
+};
+
+exports.setSrclang = function (srclang) {
+ return function (track) {
+ return function () {
+ track.srclang = srclang;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.label = function (track) {
+ return function () {
+ return track.label;
+ };
+};
+
+exports.setLabel = function (label) {
+ return function (track) {
+ return function () {
+ track.label = label;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports["default"] = function (track) {
+ return function () {
+ return track["default"];
+ };
+};
+
+exports.setDefault = function (def) {
+ return function (track) {
+ return function () {
+ track["default"] = def;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.readyStateIndex = function (track) {
+ return function () {
+ return track.readyState;
+ };
+};
diff --git a/src/DOM/HTML/HTMLTrackElement.purs b/src/DOM/HTML/HTMLTrackElement.purs
new file mode 100644
index 0000000..cf84960
--- /dev/null
+++ b/src/DOM/HTML/HTMLTrackElement.purs
@@ -0,0 +1,34 @@
+module DOM.HTML.HTMLTrackElement where
+
+import Prelude (Unit(), (<<<), map)
+
+import Control.Monad.Eff (Eff())
+
+import Data.Enum (toEnum)
+import Data.Maybe.Unsafe as U
+
+import DOM (DOM())
+import DOM.HTML.HTMLTrackElement.ReadyState (ReadyState())
+import DOM.HTML.Types (HTMLTrackElement())
+
+foreign import kind :: forall eff. HTMLTrackElement -> Eff (dom :: DOM | eff) String
+foreign import setKind :: forall eff. String -> HTMLTrackElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import src :: forall eff. HTMLTrackElement -> Eff (dom :: DOM | eff) String
+foreign import setSrc :: forall eff. String -> HTMLTrackElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import srclang :: forall eff. HTMLTrackElement -> Eff (dom :: DOM | eff) String
+foreign import setSrclang :: forall eff. String -> HTMLTrackElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import label :: forall eff. HTMLTrackElement -> Eff (dom :: DOM | eff) String
+foreign import setLabel :: forall eff. String -> HTMLTrackElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import default :: forall eff. HTMLTrackElement -> Eff (dom :: DOM | eff) Boolean
+foreign import setDefault :: forall eff. Boolean -> HTMLTrackElement -> Eff (dom :: DOM | eff) Unit
+
+readyState :: forall eff. HTMLTrackElement -> Eff (dom :: DOM | eff) ReadyState
+readyState = map (U.fromJust <<< toEnum) <<< readyStateIndex
+
+foreign import readyStateIndex :: forall eff. HTMLTrackElement -> Eff (dom :: DOM | eff) Int
+
+-- readonly attribute TextTrack track;
diff --git a/src/DOM/HTML/HTMLTrackElement/ReadyState.purs b/src/DOM/HTML/HTMLTrackElement/ReadyState.purs
new file mode 100644
index 0000000..c56b47c
--- /dev/null
+++ b/src/DOM/HTML/HTMLTrackElement/ReadyState.purs
@@ -0,0 +1,53 @@
+module DOM.HTML.HTMLTrackElement.ReadyState (ReadyState(..)) where
+
+import Prelude
+import Data.Maybe (Maybe(..))
+import Data.Enum (Enum, Cardinality(..), defaultSucc, defaultPred)
+
+data ReadyState
+ = NONE
+ | LOADING
+ | LOADED
+ | ERROR
+
+instance eqReadyState :: Eq ReadyState where
+ eq NONE NONE = true
+ eq LOADING LOADING = true
+ eq LOADED LOADED = true
+ eq ERROR ERROR = true
+ eq _ _ = false
+
+instance ordReadyState :: Ord ReadyState where
+ compare x y = compare (fromEnumReadyState x) (fromEnumReadyState y)
+
+instance boundedReadyState :: Bounded ReadyState where
+ bottom = NONE
+ top = ERROR
+
+instance boundedOrdReadyState :: BoundedOrd ReadyState
+
+instance enumReadyState :: Enum ReadyState where
+ cardinality = Cardinality 4
+ succ = defaultSucc toEnumReadyState fromEnumReadyState
+ pred = defaultPred toEnumReadyState fromEnumReadyState
+ toEnum = toEnumReadyState
+ fromEnum = fromEnumReadyState
+
+instance showReadyState :: Show ReadyState where
+ show NONE = "NONE"
+ show LOADING = "LOADING"
+ show LOADED = "LOADED"
+ show ERROR = "ERROR"
+
+toEnumReadyState :: Int -> Maybe ReadyState
+toEnumReadyState 0 = Just NONE
+toEnumReadyState 1 = Just LOADING
+toEnumReadyState 2 = Just LOADED
+toEnumReadyState 3 = Just ERROR
+toEnumReadyState _ = Nothing
+
+fromEnumReadyState :: ReadyState -> Int
+fromEnumReadyState NONE = 0
+fromEnumReadyState LOADING = 1
+fromEnumReadyState LOADED = 2
+fromEnumReadyState ERROR = 3
diff --git a/src/DOM/HTML/HTMLVideoElement.js b/src/DOM/HTML/HTMLVideoElement.js
new file mode 100644
index 0000000..2edc029
--- /dev/null
+++ b/src/DOM/HTML/HTMLVideoElement.js
@@ -0,0 +1,68 @@
+/* global exports */
+"use strict";
+
+// module DOM.HTML.HTMLVideoElement
+
+// ----------------------------------------------------------------------------
+
+exports.width = function (video) {
+ return function () {
+ return video.width;
+ };
+};
+
+exports.setWidth = function (width) {
+ return function (video) {
+ return function () {
+ video.width = width;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.height = function (video) {
+ return function () {
+ return video.height;
+ };
+};
+
+exports.setHeight = function (height) {
+ return function (video) {
+ return function () {
+ video.height = height;
+ };
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.videoWidth = function (video) {
+ return function () {
+ return video.videoWidth;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.videoHeight = function (video) {
+ return function () {
+ return video.videoHeight;
+ };
+};
+
+// ----------------------------------------------------------------------------
+
+exports.poster = function (video) {
+ return function () {
+ return video.poster;
+ };
+};
+
+exports.setPoster = function (poster) {
+ return function (video) {
+ return function () {
+ video.poster = poster;
+ };
+ };
+};
diff --git a/src/DOM/HTML/HTMLVideoElement.purs b/src/DOM/HTML/HTMLVideoElement.purs
new file mode 100644
index 0000000..4bae46a
--- /dev/null
+++ b/src/DOM/HTML/HTMLVideoElement.purs
@@ -0,0 +1,20 @@
+module DOM.HTML.HTMLVideoElement where
+
+import Prelude (Unit())
+
+import Control.Monad.Eff (Eff())
+
+import DOM (DOM())
+import DOM.HTML.Types (HTMLVideoElement())
+
+foreign import width :: forall eff. HTMLVideoElement -> Eff (dom :: DOM | eff) Int
+foreign import setWidth :: forall eff. Int -> HTMLVideoElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import height :: forall eff. HTMLVideoElement -> Eff (dom :: DOM | eff) Int
+foreign import setHeight :: forall eff. Int -> HTMLVideoElement -> Eff (dom :: DOM | eff) Unit
+
+foreign import videoWidth :: forall eff. HTMLVideoElement -> Eff (dom :: DOM | eff) Int
+foreign import videoHeight :: forall eff. HTMLVideoElement -> Eff (dom :: DOM | eff) Int
+
+foreign import poster :: forall eff. HTMLVideoElement -> Eff (dom :: DOM | eff) String
+foreign import setPoster :: forall eff. String -> HTMLVideoElement -> Eff (dom :: DOM | eff) Unit
diff --git a/src/DOM/HTML/Location.js b/src/DOM/HTML/Location.js
index 7037e87..6c9e2f9 100644
--- a/src/DOM/HTML/Location.js
+++ b/src/DOM/HTML/Location.js
@@ -17,6 +17,8 @@ exports.setHash = function (hash) {
};
};
+// ----------------------------------------------------------------------------
+
exports.host = function (location) {
return function () {
return location.host;
@@ -31,6 +33,8 @@ exports.setHost = function (host) {
};
};
+// ----------------------------------------------------------------------------
+
exports.hostname = function (location) {
return function () {
return location.hostname;
@@ -45,6 +49,8 @@ exports.setHostname = function (hostname) {
};
};
+// ----------------------------------------------------------------------------
+
exports.href = function (location) {
return function () {
return location.href;
@@ -59,6 +65,8 @@ exports.setHref = function (href) {
};
};
+// ----------------------------------------------------------------------------
+
exports.origin = function (location) {
return function () {
return location.origin;
@@ -73,6 +81,8 @@ exports.setOrigin = function (origin) {
};
};
+// ----------------------------------------------------------------------------
+
exports.pathname = function (location) {
return function () {
return location.pathname;
@@ -87,6 +97,8 @@ exports.setPathname = function (pathname) {
};
};
+// ----------------------------------------------------------------------------
+
exports.port = function (location) {
return function () {
return location.port;
@@ -101,6 +113,8 @@ exports.setPort = function (port) {
};
};
+// ----------------------------------------------------------------------------
+
exports.protocol = function (location) {
return function () {
return location.protocol;
@@ -115,6 +129,8 @@ exports.setProtocol = function (protocol) {
};
};
+// ----------------------------------------------------------------------------
+
exports.search = function (location) {
return function () {
return location.search;
@@ -129,6 +145,8 @@ exports.setSearch = function (search) {
};
};
+// ----------------------------------------------------------------------------
+
exports.assign = function (url) {
return function (location) {
return function () {
@@ -137,6 +155,8 @@ exports.assign = function (url) {
};
};
+// ----------------------------------------------------------------------------
+
exports.replace = function (url) {
return function (location) {
return function () {
@@ -145,6 +165,8 @@ exports.replace = function (url) {
};
};
+// ----------------------------------------------------------------------------
+
exports.reload = function (location) {
return function() {
location.reload();
diff --git a/src/DOM/HTML/SelectionMode.purs b/src/DOM/HTML/SelectionMode.purs
new file mode 100644
index 0000000..13b9077
--- /dev/null
+++ b/src/DOM/HTML/SelectionMode.purs
@@ -0,0 +1,36 @@
+module DOM.HTML.SelectionMode
+ ( SelectionMode()
+ , runSelectionMode
+ , select
+ , start
+ , end
+ , preserve
+ ) where
+
+import Prelude
+
+newtype SelectionMode = SelectionMode String
+
+runSelectionMode :: SelectionMode -> String
+runSelectionMode (SelectionMode m) = m
+
+instance eqSelectionMode :: Eq SelectionMode where
+ eq (SelectionMode x) (SelectionMode y) = x == y
+
+instance ordSelectionMode :: Ord SelectionMode where
+ compare (SelectionMode x) (SelectionMode y) = compare x y
+
+instance showSelectionMode :: Show SelectionMode where
+ show (SelectionMode m) = "(SelectionMode " <> show m <> ")"
+
+select :: SelectionMode
+select = SelectionMode "select"
+
+start :: SelectionMode
+start = SelectionMode "start"
+
+end :: SelectionMode
+end = SelectionMode "end"
+
+preserve :: SelectionMode
+preserve = SelectionMode "preserve"
diff --git a/src/DOM/HTML/Types.purs b/src/DOM/HTML/Types.purs
index 0a104da..2908aad 100644
--- a/src/DOM/HTML/Types.purs
+++ b/src/DOM/HTML/Types.purs
@@ -1,6 +1,8 @@
-- http://www.w3.org/TR/html5
module DOM.HTML.Types
- ( Window()
+ ( Navigator()
+ , Location()
+ , Window()
, windowToEventTarget
, HTMLDocument()
, htmlDocumentToDocument
@@ -9,7 +11,6 @@ module DOM.HTML.Types
, htmlDocumentToNode
, htmlDocumentToEventTarget
, readHTMLDocument
- , Navigator()
, HTMLElement()
, htmlElementToElement
, htmlElementToParentNode
@@ -17,10 +18,196 @@ module DOM.HTML.Types
, htmlElementToNode
, htmlElementToEventTarget
, readHTMLElement
- , Location()
+ , HTMLHtmlElement()
+ , htmlHtmlElementToHTMLElement
+ , readHTMLHtmlElement
+ , HTMLHeadElement()
+ , htmlHeadElementToHTMLElement
+ , readHTMLHeadElement
+ , HTMLTitleElement()
+ , htmlTitleElementToHTMLElement
+ , readHTMLTitleElement
+ , HTMLBaseElement()
+ , htmlBaseElementToHTMLElement
+ , readHTMLBaseElement
+ , HTMLLinkElement()
+ , htmlLinkElementToHTMLElement
+ , readHTMLLinkElement
+ , HTMLMetaElement()
+ , htmlMetaElementToHTMLElement
+ , readHTMLMetaElement
+ , HTMLStyleElement()
+ , htmlStyleElementToHTMLElement
+ , readHTMLStyleElement
+ , HTMLBodyElement()
+ , htmlBodyElementToHTMLElement
+ , readHTMLBodyElement
+ , HTMLHeadingElement()
+ , htmlHeadingElementToHTMLElement
+ , readHTMLHeadingElement
+ , HTMLParagraphElement()
+ , htmlParagraphElementToHTMLElement
+ , readHTMLParagraphElement
+ , HTMLHRElement()
+ , htmlHRElementToHTMLElement
+ , readHTMLHRElement
+ , HTMLPreElement()
+ , htmlPreElementToHTMLElement
+ , readHTMLPreElement
+ , HTMLQuoteElement()
+ , htmlQuoteElementToHTMLElement
+ , readHTMLQuoteElement
+ , HTMLOListElement()
+ , htmlOListElementToHTMLElement
+ , readHTMLOListElement
+ , HTMLUListElement()
+ , htmlUListElementToHTMLElement
+ , readHTMLUListElement
+ , HTMLLIElement()
+ , htmlLIElementToHTMLElement
+ , readHTMLLIElement
+ , HTMLDListElement()
+ , htmlDListElementToHTMLElement
+ , readHTMLDListElement
+ , HTMLDivElement()
+ , htmlDivElementToHTMLElement
+ , readHTMLDivElement
+ , HTMLAnchorElement()
+ , htmlAnchorElementToHTMLElement
+ , readHTMLAnchorElement
+ , HTMLDataElement()
+ , htmlDataElementToHTMLElement
+ , readHTMLDataElement
+ , HTMLTimeElement()
+ , htmlTimeElementToHTMLElement
+ , readHTMLTimeElement
+ , HTMLSpanElement()
+ , htmlSpanElementToHTMLElement
+ , readHTMLSpanElement
+ , HTMLBRElement()
+ , htmlBRElementToHTMLElement
+ , readHTMLBRElement
+ , HTMLModElement()
+ , htmlModElementToHTMLElement
+ , readHTMLModElement
+ , HTMLImageElement()
+ , htmlImageElementToHTMLElement
+ , readHTMLImageElement
+ , HTMLIFrameElement()
+ , htmlIFrameElementToHTMLElement
+ , readHTMLIFrameElement
+ , HTMLEmbedElement()
+ , htmlEmbedElementToHTMLElement
+ , readHTMLEmbedElement
+ , HTMLObjectElement()
+ , htmlObjectElementToHTMLElement
+ , readHTMLObjectElement
+ , HTMLParamElement()
+ , htmlParamElementToHTMLElement
+ , readHTMLParamElement
+ , HTMLMediaElement()
+ , htmlMediaElementToHTMLElement
+ , readHTMLMediaElement
+ , HTMLAudioElement()
+ , htmlAudioElementToHTMLMediaElement
+ , readHTMLAudioElement
+ , HTMLVideoElement()
+ , htmlVideoElementToHTMLMediaElement
+ , readHTMLVideoElement
+ , HTMLSourceElement()
+ , htmlSourceElementToHTMLElement
+ , readHTMLSourceElement
+ , HTMLTrackElement()
+ , htmlTrackElementToHTMLElement
+ , readHTMLTrackElement
+ , HTMLMapElement()
+ , htmlMapElementToHTMLElement
+ , readHTMLMapElement
+ , HTMLAreaElement()
+ , htmlAreaElementToHTMLElement
+ , readHTMLAreaElement
+ , HTMLTableElement()
+ , htmlTableElementToHTMLElement
+ , readHTMLTableElement
+ , HTMLTableCaptionElement()
+ , htmlTableCaptionElementToHTMLElement
+ , readHTMLTableCaptionElement
+ , HTMLTableColElement()
+ , htmlTableColElementToHTMLElement
+ , readHTMLTableColElement
+ , HTMLTableSectionElement()
+ , htmlTableSectionElementToHTMLElement
+ , readHTMLTableSectionElement
+ , HTMLTableRowElement()
+ , htmlTableRowElementToHTMLElement
+ , readHTMLTableRowElement
+ , HTMLTableCellElement()
+ , htmlTableCellElementToHTMLElement
+ , readHTMLTableCellElement
+ , HTMLTableDataCellElement()
+ , htmlTableDataCellElementToHTMLTableCellElement
+ , readHTMLTableDataCellElement
+ , HTMLTableHeaderCellElement()
+ , htmlTableHeaderCellElementToHTMLTableCellElement
+ , readHTMLTableHeaderCellElement
+ , HTMLFormElement()
+ , htmlFormElementToHTMLElement
+ , readHTMLFormElement
+ , HTMLLabelElement()
+ , htmlLabelElementToHTMLElement
+ , readHTMLLabelElement
+ , HTMLInputElement()
+ , htmlInputElementToHTMLElement
+ , readHTMLInputElement
+ , HTMLButtonElement()
+ , htmlButtonElementToHTMLElement
+ , readHTMLButtonElement
+ , HTMLSelectElement()
+ , htmlSelectElementToHTMLElement
+ , readHTMLSelectElement
+ , HTMLDataListElement()
+ , htmlDataListElementToHTMLElement
+ , readHTMLDataListElement
+ , HTMLOptGroupElement()
+ , htmlOptGroupElementToHTMLElement
+ , readHTMLOptGroupElement
+ , HTMLOptionElement()
+ , htmlOptionElementToHTMLElement
+ , readHTMLOptionElement
+ , HTMLTextAreaElement()
+ , htmlTextAreaElementToHTMLElement
+ , readHTMLTextAreaElement
+ , HTMLKeygenElement()
+ , htmlKeygenElementToHTMLElement
+ , readHTMLKeygenElement
+ , HTMLOutputElement()
+ , htmlOutputElementToHTMLElement
+ , readHTMLOutputElement
+ , HTMLProgressElement()
+ , htmlProgressElementToHTMLElement
+ , readHTMLProgressElement
+ , HTMLMeterElement()
+ , htmlMeterElementToHTMLElement
+ , readHTMLMeterElement
+ , HTMLFieldSetElement()
+ , htmlFieldSetElementToHTMLElement
+ , readHTMLFieldSetElement
+ , HTMLLegendElement()
+ , htmlLegendElementToHTMLElement
+ , readHTMLLegendElement
+ , HTMLScriptElement()
+ , htmlScriptElementToHTMLElement
+ , readHTMLScriptElement
+ , HTMLTemplateElement()
+ , htmlTemplateElementToHTMLElement
+ , readHTMLTemplateElement
+ , HTMLCanvasElement()
+ , htmlCanvasElementToHTMLElement
+ , readHTMLCanvasElement
+ , ValidityState()
) where
-import Prelude
+import Prelude ((<<<))
import Data.Either (Either(..))
import Data.Foreign (Foreign(), F(), ForeignError(..), unsafeReadTagged)
@@ -29,7 +216,11 @@ import Data.Foreign.Class (IsForeign)
import DOM.Event.Types
import DOM.Node.Types
-import qualified Unsafe.Coerce as U
+import Unsafe.Coerce as U
+
+foreign import data Navigator :: *
+
+foreign import data Location :: *
foreign import data Window :: *
@@ -59,7 +250,7 @@ readHTMLDocument = unsafeReadTagged "HTMLDocument"
instance isForeignHTMLDocument :: IsForeign HTMLDocument where
read = readHTMLDocument
-foreign import data Navigator :: *
+-- The generic HTML element
foreign import data HTMLElement :: *
@@ -78,7 +269,11 @@ htmlElementToNode = U.unsafeCoerce
htmlElementToEventTarget :: HTMLElement -> EventTarget
htmlElementToEventTarget = U.unsafeCoerce
-foreign import _readHTMLElement :: (forall a. String -> F a) -> (forall a. a -> F a) -> Foreign -> F HTMLElement
+foreign import _readHTMLElement
+ :: (forall a. String -> F a)
+ -> (forall a. a -> F a)
+ -> Foreign
+ -> F HTMLElement
readHTMLElement :: Foreign -> F HTMLElement
readHTMLElement = _readHTMLElement (Left <<< TypeMismatch "HTMLElement") Right
@@ -86,4 +281,686 @@ readHTMLElement = _readHTMLElement (Left <<< TypeMismatch "HTMLElement") Right
instance isForeignHTMLElement :: IsForeign HTMLElement where
read = readHTMLElement
-foreign import data Location :: *
+-- The root element
+
+foreign import data HTMLHtmlElement :: *
+
+htmlHtmlElementToHTMLElement :: HTMLHtmlElement -> HTMLElement
+htmlHtmlElementToHTMLElement = U.unsafeCoerce
+
+readHTMLHtmlElement :: Foreign -> F HTMLHtmlElement
+readHTMLHtmlElement = unsafeReadTagged "HTMLHtmlElement"
+
+instance isForeignHTMLHtmlElement :: IsForeign HTMLHtmlElement where
+ read = readHTMLHtmlElement
+
+-- Document metadata
+
+foreign import data HTMLHeadElement :: *
+
+htmlHeadElementToHTMLElement :: HTMLHeadElement -> HTMLElement
+htmlHeadElementToHTMLElement = U.unsafeCoerce
+
+readHTMLHeadElement :: Foreign -> F HTMLHeadElement
+readHTMLHeadElement = unsafeReadTagged "HTMLHeadElement"
+
+instance isForeignHTMLHeadElement :: IsForeign HTMLHeadElement where
+ read = readHTMLHeadElement
+
+foreign import data HTMLTitleElement :: *
+
+htmlTitleElementToHTMLElement :: HTMLTitleElement -> HTMLElement
+htmlTitleElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTitleElement :: Foreign -> F HTMLTitleElement
+readHTMLTitleElement = unsafeReadTagged "HTMLTitleElement"
+
+instance isForeignHTMLTitleElement :: IsForeign HTMLTitleElement where
+ read = readHTMLTitleElement
+
+foreign import data HTMLBaseElement :: *
+
+htmlBaseElementToHTMLElement :: HTMLBaseElement -> HTMLElement
+htmlBaseElementToHTMLElement = U.unsafeCoerce
+
+readHTMLBaseElement :: Foreign -> F HTMLBaseElement
+readHTMLBaseElement = unsafeReadTagged "HTMLBaseElement"
+
+instance isForeignHTMLBaseElement :: IsForeign HTMLBaseElement where
+ read = readHTMLBaseElement
+
+foreign import data HTMLLinkElement :: *
+
+htmlLinkElementToHTMLElement :: HTMLLinkElement -> HTMLElement
+htmlLinkElementToHTMLElement = U.unsafeCoerce
+
+readHTMLLinkElement :: Foreign -> F HTMLLinkElement
+readHTMLLinkElement = unsafeReadTagged "HTMLLinkElement"
+
+instance isForeignHTMLLinkElement :: IsForeign HTMLLinkElement where
+ read = readHTMLLinkElement
+
+foreign import data HTMLMetaElement :: *
+
+htmlMetaElementToHTMLElement :: HTMLMetaElement -> HTMLElement
+htmlMetaElementToHTMLElement = U.unsafeCoerce
+
+readHTMLMetaElement :: Foreign -> F HTMLMetaElement
+readHTMLMetaElement = unsafeReadTagged "HTMLMetaElement"
+
+instance isForeignHTMLMetaElement :: IsForeign HTMLMetaElement where
+ read = readHTMLMetaElement
+
+foreign import data HTMLStyleElement :: *
+
+htmlStyleElementToHTMLElement :: HTMLStyleElement -> HTMLElement
+htmlStyleElementToHTMLElement = U.unsafeCoerce
+
+readHTMLStyleElement :: Foreign -> F HTMLStyleElement
+readHTMLStyleElement = unsafeReadTagged "HTMLStyleElement"
+
+instance isForeignHTMLStyleElement :: IsForeign HTMLStyleElement where
+ read = readHTMLStyleElement
+
+-- Sections
+
+foreign import data HTMLBodyElement :: *
+
+htmlBodyElementToHTMLElement :: HTMLBodyElement -> HTMLElement
+htmlBodyElementToHTMLElement = U.unsafeCoerce
+
+readHTMLBodyElement :: Foreign -> F HTMLBodyElement
+readHTMLBodyElement = unsafeReadTagged "HTMLBodyElement"
+
+instance isForeignHTMLBodyElement :: IsForeign HTMLBodyElement where
+ read = readHTMLBodyElement
+
+foreign import data HTMLHeadingElement :: *
+
+htmlHeadingElementToHTMLElement :: HTMLHeadingElement -> HTMLElement
+htmlHeadingElementToHTMLElement = U.unsafeCoerce
+
+readHTMLHeadingElement :: Foreign -> F HTMLHeadingElement
+readHTMLHeadingElement = unsafeReadTagged "HTMLHeadingElement"
+
+instance isForeignHTMLHeadingElement :: IsForeign HTMLHeadingElement where
+ read = readHTMLHeadingElement
+
+-- Grouping content
+
+foreign import data HTMLParagraphElement :: *
+
+htmlParagraphElementToHTMLElement :: HTMLParagraphElement -> HTMLElement
+htmlParagraphElementToHTMLElement = U.unsafeCoerce
+
+readHTMLParagraphElement :: Foreign -> F HTMLParagraphElement
+readHTMLParagraphElement = unsafeReadTagged "HTMLParagraphElement"
+
+instance isForeignHTMLParagraphElement :: IsForeign HTMLParagraphElement where
+ read = readHTMLParagraphElement
+
+foreign import data HTMLHRElement :: *
+
+htmlHRElementToHTMLElement :: HTMLHRElement -> HTMLElement
+htmlHRElementToHTMLElement = U.unsafeCoerce
+
+readHTMLHRElement :: Foreign -> F HTMLHRElement
+readHTMLHRElement = unsafeReadTagged "HTMLHRElement"
+
+instance isForeignHTMLHRElement :: IsForeign HTMLHRElement where
+ read = readHTMLHRElement
+
+foreign import data HTMLPreElement :: *
+
+htmlPreElementToHTMLElement :: HTMLPreElement -> HTMLElement
+htmlPreElementToHTMLElement = U.unsafeCoerce
+
+readHTMLPreElement :: Foreign -> F HTMLPreElement
+readHTMLPreElement = unsafeReadTagged "HTMLPreElement"
+
+instance isForeignHTMLPreElement :: IsForeign HTMLPreElement where
+ read = readHTMLPreElement
+
+foreign import data HTMLQuoteElement :: *
+
+htmlQuoteElementToHTMLElement :: HTMLQuoteElement -> HTMLElement
+htmlQuoteElementToHTMLElement = U.unsafeCoerce
+
+readHTMLQuoteElement :: Foreign -> F HTMLQuoteElement
+readHTMLQuoteElement = unsafeReadTagged "HTMLQuoteElement"
+
+instance isForeignHTMLQuoteElement :: IsForeign HTMLQuoteElement where
+ read = readHTMLQuoteElement
+
+foreign import data HTMLOListElement :: *
+
+htmlOListElementToHTMLElement :: HTMLOListElement -> HTMLElement
+htmlOListElementToHTMLElement = U.unsafeCoerce
+
+readHTMLOListElement :: Foreign -> F HTMLOListElement
+readHTMLOListElement = unsafeReadTagged "HTMLOListElement"
+
+instance isForeignHTMLOListElement :: IsForeign HTMLOListElement where
+ read = readHTMLOListElement
+
+foreign import data HTMLUListElement :: *
+
+htmlUListElementToHTMLElement :: HTMLUListElement -> HTMLElement
+htmlUListElementToHTMLElement = U.unsafeCoerce
+
+readHTMLUListElement :: Foreign -> F HTMLUListElement
+readHTMLUListElement = unsafeReadTagged "HTMLUListElement"
+
+instance isForeignHTMLUListElement :: IsForeign HTMLUListElement where
+ read = readHTMLUListElement
+
+foreign import data HTMLLIElement :: *
+
+htmlLIElementToHTMLElement :: HTMLLIElement -> HTMLElement
+htmlLIElementToHTMLElement = U.unsafeCoerce
+
+readHTMLLIElement :: Foreign -> F HTMLLIElement
+readHTMLLIElement = unsafeReadTagged "HTMLLIElement"
+
+instance isForeignHTMLLIElement :: IsForeign HTMLLIElement where
+ read = readHTMLLIElement
+
+foreign import data HTMLDListElement :: *
+
+htmlDListElementToHTMLElement :: HTMLDListElement -> HTMLElement
+htmlDListElementToHTMLElement = U.unsafeCoerce
+
+readHTMLDListElement :: Foreign -> F HTMLDListElement
+readHTMLDListElement = unsafeReadTagged "HTMLDListElement"
+
+instance isForeignHTMLDListElement :: IsForeign HTMLDListElement where
+ read = readHTMLDListElement
+
+foreign import data HTMLDivElement :: *
+
+htmlDivElementToHTMLElement :: HTMLDivElement -> HTMLElement
+htmlDivElementToHTMLElement = U.unsafeCoerce
+
+readHTMLDivElement :: Foreign -> F HTMLDivElement
+readHTMLDivElement = unsafeReadTagged "HTMLDivElement"
+
+instance isForeignHTMLDivElement :: IsForeign HTMLDivElement where
+ read = readHTMLDivElement
+
+-- Text
+
+foreign import data HTMLAnchorElement :: *
+
+htmlAnchorElementToHTMLElement :: HTMLAnchorElement -> HTMLElement
+htmlAnchorElementToHTMLElement = U.unsafeCoerce
+
+readHTMLAnchorElement :: Foreign -> F HTMLAnchorElement
+readHTMLAnchorElement = unsafeReadTagged "HTMLAnchorElement"
+
+instance isForeignHTMLAnchorElement :: IsForeign HTMLAnchorElement where
+ read = readHTMLAnchorElement
+
+foreign import data HTMLDataElement :: *
+
+htmlDataElementToHTMLElement :: HTMLDataElement -> HTMLElement
+htmlDataElementToHTMLElement = U.unsafeCoerce
+
+readHTMLDataElement :: Foreign -> F HTMLDataElement
+readHTMLDataElement = unsafeReadTagged "HTMLDataElement"
+
+instance isForeignHTMLDataElement :: IsForeign HTMLDataElement where
+ read = readHTMLDataElement
+
+foreign import data HTMLTimeElement :: *
+
+htmlTimeElementToHTMLElement :: HTMLTimeElement -> HTMLElement
+htmlTimeElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTimeElement :: Foreign -> F HTMLTimeElement
+readHTMLTimeElement = unsafeReadTagged "HTMLTimeElement"
+
+instance isForeignHTMLTimeElement :: IsForeign HTMLTimeElement where
+ read = readHTMLTimeElement
+
+foreign import data HTMLSpanElement :: *
+
+htmlSpanElementToHTMLElement :: HTMLSpanElement -> HTMLElement
+htmlSpanElementToHTMLElement = U.unsafeCoerce
+
+readHTMLSpanElement :: Foreign -> F HTMLSpanElement
+readHTMLSpanElement = unsafeReadTagged "HTMLSpanElement"
+
+instance isForeignHTMLSpanElement :: IsForeign HTMLSpanElement where
+ read = readHTMLSpanElement
+
+foreign import data HTMLBRElement :: *
+
+htmlBRElementToHTMLElement :: HTMLBRElement -> HTMLElement
+htmlBRElementToHTMLElement = U.unsafeCoerce
+
+readHTMLBRElement :: Foreign -> F HTMLBRElement
+readHTMLBRElement = unsafeReadTagged "HTMLBRElement"
+
+instance isForeignHTMLBRElement :: IsForeign HTMLBRElement where
+ read = readHTMLBRElement
+
+foreign import data HTMLModElement :: *
+
+htmlModElementToHTMLElement :: HTMLModElement -> HTMLElement
+htmlModElementToHTMLElement = U.unsafeCoerce
+
+readHTMLModElement :: Foreign -> F HTMLModElement
+readHTMLModElement = unsafeReadTagged "HTMLModElement"
+
+instance isForeignHTMLModElement :: IsForeign HTMLModElement where
+ read = readHTMLModElement
+
+-- Embedded content
+
+foreign import data HTMLImageElement :: *
+
+htmlImageElementToHTMLElement :: HTMLImageElement -> HTMLElement
+htmlImageElementToHTMLElement = U.unsafeCoerce
+
+readHTMLImageElement :: Foreign -> F HTMLImageElement
+readHTMLImageElement = unsafeReadTagged "HTMLImageElement"
+
+instance isForeignHTMLImageElement :: IsForeign HTMLImageElement where
+ read = readHTMLImageElement
+
+foreign import data HTMLIFrameElement :: *
+
+htmlIFrameElementToHTMLElement :: HTMLIFrameElement -> HTMLElement
+htmlIFrameElementToHTMLElement = U.unsafeCoerce
+
+readHTMLIFrameElement :: Foreign -> F HTMLIFrameElement
+readHTMLIFrameElement = unsafeReadTagged "HTMLIFrameElement"
+
+instance isForeignHTMLIFrameElement :: IsForeign HTMLIFrameElement where
+ read = readHTMLIFrameElement
+
+foreign import data HTMLEmbedElement :: *
+
+htmlEmbedElementToHTMLElement :: HTMLEmbedElement -> HTMLElement
+htmlEmbedElementToHTMLElement = U.unsafeCoerce
+
+readHTMLEmbedElement :: Foreign -> F HTMLEmbedElement
+readHTMLEmbedElement = unsafeReadTagged "HTMLEmbedElement"
+
+instance isForeignHTMLEmbedElement :: IsForeign HTMLEmbedElement where
+ read = readHTMLEmbedElement
+
+foreign import data HTMLObjectElement :: *
+
+htmlObjectElementToHTMLElement :: HTMLObjectElement -> HTMLElement
+htmlObjectElementToHTMLElement = U.unsafeCoerce
+
+readHTMLObjectElement :: Foreign -> F HTMLObjectElement
+readHTMLObjectElement = unsafeReadTagged "HTMLObjectElement"
+
+instance isForeignHTMLObjectElement :: IsForeign HTMLObjectElement where
+ read = readHTMLObjectElement
+
+foreign import data HTMLParamElement :: *
+
+htmlParamElementToHTMLElement :: HTMLParamElement -> HTMLElement
+htmlParamElementToHTMLElement = U.unsafeCoerce
+
+readHTMLParamElement :: Foreign -> F HTMLParamElement
+readHTMLParamElement = unsafeReadTagged "HTMLParamElement"
+
+instance isForeignHTMLParamElement :: IsForeign HTMLParamElement where
+ read = readHTMLParamElement
+
+foreign import data HTMLMediaElement :: *
+
+htmlMediaElementToHTMLElement :: HTMLMediaElement -> HTMLElement
+htmlMediaElementToHTMLElement = U.unsafeCoerce
+
+readHTMLMediaElement :: Foreign -> F HTMLMediaElement
+readHTMLMediaElement = unsafeReadTagged "HTMLMediaElement"
+
+foreign import data HTMLAudioElement :: *
+
+htmlAudioElementToHTMLMediaElement :: HTMLAudioElement -> HTMLMediaElement
+htmlAudioElementToHTMLMediaElement = U.unsafeCoerce
+
+readHTMLAudioElement :: Foreign -> F HTMLAudioElement
+readHTMLAudioElement = unsafeReadTagged "HTMLAudioElement"
+
+foreign import data HTMLVideoElement :: *
+
+htmlVideoElementToHTMLMediaElement :: HTMLVideoElement -> HTMLMediaElement
+htmlVideoElementToHTMLMediaElement = U.unsafeCoerce
+
+readHTMLVideoElement :: Foreign -> F HTMLVideoElement
+readHTMLVideoElement = unsafeReadTagged "HTMLVideoElement"
+
+foreign import data HTMLSourceElement :: *
+
+htmlSourceElementToHTMLElement :: HTMLSourceElement -> HTMLElement
+htmlSourceElementToHTMLElement = U.unsafeCoerce
+
+readHTMLSourceElement :: Foreign -> F HTMLSourceElement
+readHTMLSourceElement = unsafeReadTagged "HTMLSourceElement"
+
+instance isForeignHTMLSourceElement :: IsForeign HTMLSourceElement where
+ read = readHTMLSourceElement
+
+foreign import data HTMLTrackElement :: *
+
+htmlTrackElementToHTMLElement :: HTMLTrackElement -> HTMLElement
+htmlTrackElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTrackElement :: Foreign -> F HTMLTrackElement
+readHTMLTrackElement = unsafeReadTagged "HTMLTrackElement"
+
+instance isForeignHTMLTrackElement :: IsForeign HTMLTrackElement where
+ read = readHTMLTrackElement
+
+foreign import data HTMLMapElement :: *
+
+htmlMapElementToHTMLElement :: HTMLMapElement -> HTMLElement
+htmlMapElementToHTMLElement = U.unsafeCoerce
+
+readHTMLMapElement :: Foreign -> F HTMLMapElement
+readHTMLMapElement = unsafeReadTagged "HTMLMapElement"
+
+instance isForeignHTMLMapElement :: IsForeign HTMLMapElement where
+ read = readHTMLMapElement
+
+foreign import data HTMLAreaElement :: *
+
+htmlAreaElementToHTMLElement :: HTMLAreaElement -> HTMLElement
+htmlAreaElementToHTMLElement = U.unsafeCoerce
+
+readHTMLAreaElement :: Foreign -> F HTMLAreaElement
+readHTMLAreaElement = unsafeReadTagged "HTMLAreaElement"
+
+instance isForeignHTMLAreaElement :: IsForeign HTMLAreaElement where
+ read = readHTMLAreaElement
+
+-- Tabular data
+
+foreign import data HTMLTableElement :: *
+
+htmlTableElementToHTMLElement :: HTMLTableElement -> HTMLElement
+htmlTableElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTableElement :: Foreign -> F HTMLTableElement
+readHTMLTableElement = unsafeReadTagged "HTMLTableElement"
+
+instance isForeignHTMLTableElement :: IsForeign HTMLTableElement where
+ read = readHTMLTableElement
+
+foreign import data HTMLTableCaptionElement :: *
+
+htmlTableCaptionElementToHTMLElement :: HTMLTableCaptionElement -> HTMLElement
+htmlTableCaptionElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTableCaptionElement :: Foreign -> F HTMLTableCaptionElement
+readHTMLTableCaptionElement = unsafeReadTagged "HTMLTableCaptionElement"
+
+instance isForeignHTMLTableCaptionElement :: IsForeign HTMLTableCaptionElement where
+ read = readHTMLTableCaptionElement
+
+foreign import data HTMLTableColElement :: *
+
+htmlTableColElementToHTMLElement :: HTMLTableColElement -> HTMLElement
+htmlTableColElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTableColElement :: Foreign -> F HTMLTableColElement
+readHTMLTableColElement = unsafeReadTagged "HTMLTableColElement"
+
+instance isForeignHTMLTableColElement :: IsForeign HTMLTableColElement where
+ read = readHTMLTableColElement
+
+foreign import data HTMLTableSectionElement :: *
+
+htmlTableSectionElementToHTMLElement :: HTMLTableSectionElement -> HTMLElement
+htmlTableSectionElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTableSectionElement :: Foreign -> F HTMLTableSectionElement
+readHTMLTableSectionElement = unsafeReadTagged "HTMLTableSectionElement"
+
+instance isForeignHTMLTableSectionElement :: IsForeign HTMLTableSectionElement where
+ read = readHTMLTableSectionElement
+
+foreign import data HTMLTableRowElement :: *
+
+htmlTableRowElementToHTMLElement :: HTMLTableRowElement -> HTMLElement
+htmlTableRowElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTableRowElement :: Foreign -> F HTMLTableRowElement
+readHTMLTableRowElement = unsafeReadTagged "HTMLTableRowElement"
+
+instance isForeignHTMLTableRowElement :: IsForeign HTMLTableRowElement where
+ read = readHTMLTableRowElement
+
+foreign import data HTMLTableCellElement :: *
+
+htmlTableCellElementToHTMLElement :: HTMLTableCellElement -> HTMLElement
+htmlTableCellElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTableCellElement :: Foreign -> F HTMLTableCellElement
+readHTMLTableCellElement = unsafeReadTagged "HTMLTableCellElement"
+
+foreign import data HTMLTableDataCellElement :: *
+
+htmlTableDataCellElementToHTMLTableCellElement :: HTMLTableDataCellElement -> HTMLTableCellElement
+htmlTableDataCellElementToHTMLTableCellElement = U.unsafeCoerce
+
+readHTMLTableDataCellElement :: Foreign -> F HTMLTableDataCellElement
+readHTMLTableDataCellElement = unsafeReadTagged "HTMLTableDataCellElement"
+
+foreign import data HTMLTableHeaderCellElement :: *
+
+htmlTableHeaderCellElementToHTMLTableCellElement :: HTMLTableHeaderCellElement -> HTMLTableCellElement
+htmlTableHeaderCellElementToHTMLTableCellElement = U.unsafeCoerce
+
+readHTMLTableHeaderCellElement :: Foreign -> F HTMLTableHeaderCellElement
+readHTMLTableHeaderCellElement = unsafeReadTagged "HTMLTableHeaderCellElement"
+
+-- Forms
+
+foreign import data HTMLFormElement :: *
+
+htmlFormElementToHTMLElement :: HTMLFormElement -> HTMLElement
+htmlFormElementToHTMLElement = U.unsafeCoerce
+
+readHTMLFormElement :: Foreign -> F HTMLFormElement
+readHTMLFormElement = unsafeReadTagged "HTMLFormElement"
+
+instance isForeignHTMLFormElement :: IsForeign HTMLFormElement where
+ read = readHTMLFormElement
+
+foreign import data HTMLLabelElement :: *
+
+htmlLabelElementToHTMLElement :: HTMLLabelElement -> HTMLElement
+htmlLabelElementToHTMLElement = U.unsafeCoerce
+
+readHTMLLabelElement :: Foreign -> F HTMLLabelElement
+readHTMLLabelElement = unsafeReadTagged "HTMLLabelElement"
+
+instance isForeignHTMLLabelElement :: IsForeign HTMLLabelElement where
+ read = readHTMLLabelElement
+
+foreign import data HTMLInputElement :: *
+
+htmlInputElementToHTMLElement :: HTMLInputElement -> HTMLElement
+htmlInputElementToHTMLElement = U.unsafeCoerce
+
+readHTMLInputElement :: Foreign -> F HTMLInputElement
+readHTMLInputElement = unsafeReadTagged "HTMLInputElement"
+
+instance isForeignHTMLInputElement :: IsForeign HTMLInputElement where
+ read = readHTMLInputElement
+
+foreign import data HTMLButtonElement :: *
+
+htmlButtonElementToHTMLElement :: HTMLButtonElement -> HTMLElement
+htmlButtonElementToHTMLElement = U.unsafeCoerce
+
+readHTMLButtonElement :: Foreign -> F HTMLButtonElement
+readHTMLButtonElement = unsafeReadTagged "HTMLButtonElement"
+
+instance isForeignHTMLButtonElement :: IsForeign HTMLButtonElement where
+ read = readHTMLButtonElement
+
+foreign import data HTMLSelectElement :: *
+
+htmlSelectElementToHTMLElement :: HTMLSelectElement -> HTMLElement
+htmlSelectElementToHTMLElement = U.unsafeCoerce
+
+readHTMLSelectElement :: Foreign -> F HTMLSelectElement
+readHTMLSelectElement = unsafeReadTagged "HTMLSelectElement"
+
+instance isForeignHTMLSelectElement :: IsForeign HTMLSelectElement where
+ read = readHTMLSelectElement
+
+foreign import data HTMLDataListElement :: *
+
+htmlDataListElementToHTMLElement :: HTMLDataListElement -> HTMLElement
+htmlDataListElementToHTMLElement = U.unsafeCoerce
+
+readHTMLDataListElement :: Foreign -> F HTMLDataListElement
+readHTMLDataListElement = unsafeReadTagged "HTMLDataListElement"
+
+instance isForeignHTMLDataListElement :: IsForeign HTMLDataListElement where
+ read = readHTMLDataListElement
+
+foreign import data HTMLOptGroupElement :: *
+
+htmlOptGroupElementToHTMLElement :: HTMLOptGroupElement -> HTMLElement
+htmlOptGroupElementToHTMLElement = U.unsafeCoerce
+
+readHTMLOptGroupElement :: Foreign -> F HTMLOptGroupElement
+readHTMLOptGroupElement = unsafeReadTagged "HTMLOptGroupElement"
+
+instance isForeignHTMLOptGroupElement :: IsForeign HTMLOptGroupElement where
+ read = readHTMLOptGroupElement
+
+foreign import data HTMLOptionElement :: *
+
+htmlOptionElementToHTMLElement :: HTMLOptionElement -> HTMLElement
+htmlOptionElementToHTMLElement = U.unsafeCoerce
+
+readHTMLOptionElement :: Foreign -> F HTMLOptionElement
+readHTMLOptionElement = unsafeReadTagged "HTMLOptionElement"
+
+instance isForeignHTMLOptionElement :: IsForeign HTMLOptionElement where
+ read = readHTMLOptionElement
+
+foreign import data HTMLTextAreaElement :: *
+
+htmlTextAreaElementToHTMLElement :: HTMLTextAreaElement -> HTMLElement
+htmlTextAreaElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTextAreaElement :: Foreign -> F HTMLTextAreaElement
+readHTMLTextAreaElement = unsafeReadTagged "HTMLTextAreaElement"
+
+instance isForeignHTMLTextAreaElement :: IsForeign HTMLTextAreaElement where
+ read = readHTMLTextAreaElement
+
+foreign import data HTMLKeygenElement :: *
+
+htmlKeygenElementToHTMLElement :: HTMLKeygenElement -> HTMLElement
+htmlKeygenElementToHTMLElement = U.unsafeCoerce
+
+readHTMLKeygenElement :: Foreign -> F HTMLKeygenElement
+readHTMLKeygenElement = unsafeReadTagged "HTMLKeygenElement"
+
+instance isForeignHTMLKeygenElement :: IsForeign HTMLKeygenElement where
+ read = readHTMLKeygenElement
+
+foreign import data HTMLOutputElement :: *
+
+htmlOutputElementToHTMLElement :: HTMLOutputElement -> HTMLElement
+htmlOutputElementToHTMLElement = U.unsafeCoerce
+
+readHTMLOutputElement :: Foreign -> F HTMLOutputElement
+readHTMLOutputElement = unsafeReadTagged "HTMLOutputElement"
+
+instance isForeignHTMLOutputElement :: IsForeign HTMLOutputElement where
+ read = readHTMLOutputElement
+
+foreign import data HTMLProgressElement :: *
+
+htmlProgressElementToHTMLElement :: HTMLProgressElement -> HTMLElement
+htmlProgressElementToHTMLElement = U.unsafeCoerce
+
+readHTMLProgressElement :: Foreign -> F HTMLProgressElement
+readHTMLProgressElement = unsafeReadTagged "HTMLProgressElement"
+
+instance isForeignHTMLProgressElement :: IsForeign HTMLProgressElement where
+ read = readHTMLProgressElement
+
+foreign import data HTMLMeterElement :: *
+
+htmlMeterElementToHTMLElement :: HTMLMeterElement -> HTMLElement
+htmlMeterElementToHTMLElement = U.unsafeCoerce
+
+readHTMLMeterElement :: Foreign -> F HTMLMeterElement
+readHTMLMeterElement = unsafeReadTagged "HTMLMeterElement"
+
+instance isForeignHTMLMeterElement :: IsForeign HTMLMeterElement where
+ read = readHTMLMeterElement
+
+foreign import data HTMLFieldSetElement :: *
+
+htmlFieldSetElementToHTMLElement :: HTMLFieldSetElement -> HTMLElement
+htmlFieldSetElementToHTMLElement = U.unsafeCoerce
+
+readHTMLFieldSetElement :: Foreign -> F HTMLFieldSetElement
+readHTMLFieldSetElement = unsafeReadTagged "HTMLFieldSetElement"
+
+instance isForeignHTMLFieldSetElement :: IsForeign HTMLFieldSetElement where
+ read = readHTMLFieldSetElement
+
+foreign import data HTMLLegendElement :: *
+
+htmlLegendElementToHTMLElement :: HTMLLegendElement -> HTMLElement
+htmlLegendElementToHTMLElement = U.unsafeCoerce
+
+readHTMLLegendElement :: Foreign -> F HTMLLegendElement
+readHTMLLegendElement = unsafeReadTagged "HTMLLegendElement"
+
+instance isForeignHTMLLegendElement :: IsForeign HTMLLegendElement where
+ read = readHTMLLegendElement
+
+-- Scripting
+
+foreign import data HTMLScriptElement :: *
+
+htmlScriptElementToHTMLElement :: HTMLScriptElement -> HTMLElement
+htmlScriptElementToHTMLElement = U.unsafeCoerce
+
+readHTMLScriptElement :: Foreign -> F HTMLScriptElement
+readHTMLScriptElement = unsafeReadTagged "HTMLScriptElement"
+
+instance isForeignHTMLScriptElement :: IsForeign HTMLScriptElement where
+ read = readHTMLScriptElement
+
+foreign import data HTMLTemplateElement :: *
+
+htmlTemplateElementToHTMLElement :: HTMLTemplateElement -> HTMLElement
+htmlTemplateElementToHTMLElement = U.unsafeCoerce
+
+readHTMLTemplateElement :: Foreign -> F HTMLTemplateElement
+readHTMLTemplateElement = unsafeReadTagged "HTMLTemplateElement"
+
+instance isForeignHTMLTemplateElement :: IsForeign HTMLTemplateElement where
+ read = readHTMLTemplateElement
+
+foreign import data HTMLCanvasElement :: *
+
+htmlCanvasElementToHTMLElement :: HTMLCanvasElement -> HTMLElement
+htmlCanvasElementToHTMLElement = U.unsafeCoerce
+
+readHTMLCanvasElement :: Foreign -> F HTMLCanvasElement
+readHTMLCanvasElement = unsafeReadTagged "HTMLCanvasElement"
+
+instance isForeignHTMLCanvasElement :: IsForeign HTMLCanvasElement where
+ read = readHTMLCanvasElement
+
+foreign import data ValidityState :: *
diff --git a/src/DOM/Node/NodeType.purs b/src/DOM/Node/NodeType.purs
index 126798b..90cd66f 100644
--- a/src/DOM/Node/NodeType.purs
+++ b/src/DOM/Node/NodeType.purs
@@ -43,7 +43,7 @@ instance boundedNodeType :: Bounded NodeType where
instance boundedOrdNodeType :: BoundedOrd NodeType
instance enumNodeType :: Enum NodeType where
- cardinality = Cardinality 4
+ cardinality = Cardinality 12
succ = defaultSucc toEnumNodeType fromEnumNodeType
pred = defaultPred toEnumNodeType fromEnumNodeType
toEnum = toEnumNodeType
diff --git a/src/DOM/Node/ParentNode.purs b/src/DOM/Node/ParentNode.purs
index 63d3461..3f0d240 100644
--- a/src/DOM/Node/ParentNode.purs
+++ b/src/DOM/Node/ParentNode.purs
@@ -4,8 +4,8 @@ import Control.Monad.Eff (Eff())
import Data.Nullable (Nullable())
-import DOM
-import DOM.Node.Types
+import DOM (DOM())
+import DOM.Node.Types (NodeList(), ParentNode(), Element(), HTMLCollection())
-- | The child elements for the node.
foreign import children :: forall eff. ParentNode -> Eff (dom :: DOM | eff) HTMLCollection
diff --git a/src/DOM/Node/Types.purs b/src/DOM/Node/Types.purs
index a9f36f7..bbd2188 100644
--- a/src/DOM/Node/Types.purs
+++ b/src/DOM/Node/Types.purs
@@ -15,6 +15,7 @@ foreign import data NonDocumentTypeChildNode :: *
foreign import data ChildNode :: *
foreign import data NodeList :: *
foreign import data HTMLCollection :: *
+foreign import data DOMTokenList :: *
foreign import data Document :: *