From 8cc040c7d93ff35036dcb310d117ac23dba96489 Mon Sep 17 00:00:00 2001 From: Gary Burgess Date: Thu, 10 May 2018 12:22:49 +0100 Subject: [PATCH] Initial commit --- .eslintrc.json | 29 + .gitignore | 8 + .travis.yml | 15 + LICENSE | 21 + README.md | 16 + bower.json | 23 + package.json | 14 + src/Web/HTML/HTMLAnchorElement.js | 119 +++ src/Web/HTML/HTMLAnchorElement.purs | 39 + src/Web/HTML/HTMLAreaElement.js | 135 ++++ src/Web/HTML/HTMLAreaElement.purs | 42 + src/Web/HTML/HTMLAudioElement.purs | 13 + src/Web/HTML/HTMLBRElement.purs | 13 + src/Web/HTML/HTMLBaseElement.js | 31 + src/Web/HTML/HTMLBaseElement.purs | 21 + src/Web/HTML/HTMLBodyElement.purs | 13 + src/Web/HTML/HTMLButtonElement.js | 217 +++++ src/Web/HTML/HTMLButtonElement.purs | 99 +++ src/Web/HTML/HTMLCanvasElement.js | 31 + src/Web/HTML/HTMLCanvasElement.purs | 29 + src/Web/HTML/HTMLDListElement.purs | 13 + src/Web/HTML/HTMLDataElement.js | 15 + src/Web/HTML/HTMLDataElement.purs | 18 + src/Web/HTML/HTMLDataListElement.js | 7 + src/Web/HTML/HTMLDataListElement.purs | 17 + src/Web/HTML/HTMLDivElement.purs | 13 + src/Web/HTML/HTMLDocument.js | 19 + src/Web/HTML/HTMLDocument.purs | 65 ++ src/Web/HTML/HTMLDocument/ReadyState.purs | 60 ++ src/Web/HTML/HTMLElement.js | 245 ++++++ src/Web/HTML/HTMLElement.purs | 136 ++++ src/Web/HTML/HTMLEmbedElement.js | 63 ++ src/Web/HTML/HTMLEmbedElement.purs | 27 + src/Web/HTML/HTMLFieldSetElement.js | 97 +++ src/Web/HTML/HTMLFieldSetElement.purs | 62 ++ src/Web/HTML/HTMLFormElement.js | 175 ++++ src/Web/HTML/HTMLFormElement.purs | 53 ++ src/Web/HTML/HTMLHRElement.purs | 13 + src/Web/HTML/HTMLHeadElement.purs | 13 + src/Web/HTML/HTMLHeadingElement.purs | 13 + src/Web/HTML/HTMLIFrameElement.js | 93 +++ src/Web/HTML/HTMLIFrameElement.purs | 62 ++ src/Web/HTML/HTMLImageElement.js | 150 ++++ src/Web/HTML/HTMLImageElement.purs | 43 + src/Web/HTML/HTMLInputElement.js | 747 ++++++++++++++++++ src/Web/HTML/HTMLInputElement.purs | 272 +++++++ src/Web/HTML/HTMLKeygenElement.js | 145 ++++ src/Web/HTML/HTMLKeygenElement.purs | 77 ++ src/Web/HTML/HTMLLIElement.js | 15 + src/Web/HTML/HTMLLIElement.purs | 18 + src/Web/HTML/HTMLLabelElement.js | 31 + src/Web/HTML/HTMLLabelElement.purs | 40 + src/Web/HTML/HTMLLegendElement.js | 7 + src/Web/HTML/HTMLLegendElement.purs | 29 + src/Web/HTML/HTMLLinkElement.js | 135 ++++ src/Web/HTML/HTMLLinkElement.purs | 46 ++ src/Web/HTML/HTMLMapElement.js | 31 + src/Web/HTML/HTMLMapElement.purs | 23 + src/Web/HTML/HTMLMediaElement.js | 305 +++++++ src/Web/HTML/HTMLMediaElement.purs | 105 +++ .../HTML/HTMLMediaElement/CanPlayType.purs | 29 + .../HTML/HTMLMediaElement/NetworkState.purs | 50 ++ src/Web/HTML/HTMLMediaElement/ReadyState.purs | 54 ++ src/Web/HTML/HTMLMetaElement.js | 47 ++ src/Web/HTML/HTMLMetaElement.purs | 24 + src/Web/HTML/HTMLMeterElement.js | 103 +++ src/Web/HTML/HTMLMeterElement.purs | 36 + src/Web/HTML/HTMLModElement.js | 31 + src/Web/HTML/HTMLModElement.purs | 21 + src/Web/HTML/HTMLOListElement.js | 47 ++ src/Web/HTML/HTMLOListElement.purs | 24 + src/Web/HTML/HTMLObjectElement.js | 161 ++++ src/Web/HTML/HTMLObjectElement.purs | 89 +++ src/Web/HTML/HTMLOptGroupElement.js | 31 + src/Web/HTML/HTMLOptGroupElement.purs | 21 + src/Web/HTML/HTMLOptionElement.js | 111 +++ src/Web/HTML/HTMLOptionElement.purs | 64 ++ src/Web/HTML/HTMLOutputElement.js | 113 +++ src/Web/HTML/HTMLOutputElement.purs | 69 ++ src/Web/HTML/HTMLParagraphElement.purs | 13 + src/Web/HTML/HTMLParamElement.js | 31 + src/Web/HTML/HTMLParamElement.purs | 21 + src/Web/HTML/HTMLPreElement.purs | 13 + src/Web/HTML/HTMLProgressElement.js | 47 ++ src/Web/HTML/HTMLProgressElement.purs | 26 + src/Web/HTML/HTMLQuoteElement.js | 15 + src/Web/HTML/HTMLQuoteElement.purs | 18 + src/Web/HTML/HTMLScriptElement.js | 111 +++ src/Web/HTML/HTMLScriptElement.purs | 36 + src/Web/HTML/HTMLSelectElement.js | 217 +++++ src/Web/HTML/HTMLSelectElement.purs | 110 +++ src/Web/HTML/HTMLSourceElement.js | 47 ++ src/Web/HTML/HTMLSourceElement.purs | 26 + src/Web/HTML/HTMLSpanElement.purs | 13 + src/Web/HTML/HTMLStyleElement.js | 31 + src/Web/HTML/HTMLStyleElement.purs | 21 + src/Web/HTML/HTMLTableCaptionElement.purs | 13 + src/Web/HTML/HTMLTableCellElement.js | 39 + src/Web/HTML/HTMLTableCellElement.purs | 25 + src/Web/HTML/HTMLTableColElement.js | 15 + src/Web/HTML/HTMLTableColElement.purs | 18 + src/Web/HTML/HTMLTableDataCellElement.purs | 13 + src/Web/HTML/HTMLTableElement.js | 155 ++++ src/Web/HTML/HTMLTableElement.purs | 96 +++ src/Web/HTML/HTMLTableHeaderCellElement.js | 31 + src/Web/HTML/HTMLTableHeaderCellElement.purs | 21 + src/Web/HTML/HTMLTableRowElement.js | 51 ++ src/Web/HTML/HTMLTableRowElement.purs | 29 + src/Web/HTML/HTMLTableSectionElement.js | 27 + src/Web/HTML/HTMLTableSectionElement.purs | 26 + src/Web/HTML/HTMLTemplateElement.js | 7 + src/Web/HTML/HTMLTemplateElement.purs | 17 + src/Web/HTML/HTMLTextAreaElement.js | 407 ++++++++++ src/Web/HTML/HTMLTextAreaElement.purs | 157 ++++ src/Web/HTML/HTMLTimeElement.js | 15 + src/Web/HTML/HTMLTimeElement.purs | 18 + src/Web/HTML/HTMLTitleElement.js | 15 + src/Web/HTML/HTMLTitleElement.purs | 19 + src/Web/HTML/HTMLTrackElement.js | 87 ++ src/Web/HTML/HTMLTrackElement.purs | 41 + src/Web/HTML/HTMLTrackElement/ReadyState.purs | 50 ++ src/Web/HTML/HTMLUListElement.purs | 13 + src/Web/HTML/HTMLVideoElement.js | 65 ++ src/Web/HTML/HTMLVideoElement.purs | 28 + src/Web/HTML/History.js | 46 ++ src/Web/HTML/History.purs | 31 + src/Web/HTML/Location.js | 171 ++++ src/Web/HTML/Location.purs | 61 ++ src/Web/HTML/Navigator.js | 7 + src/Web/HTML/Navigator.purs | 7 + src/Web/HTML/SelectionMode.purs | 36 + src/Web/HTML/ValidityState.js | 5 + src/Web/HTML/ValidityState.purs | 54 ++ src/Web/HTML/Window.js | 231 ++++++ src/Web/HTML/Window.purs | 152 ++++ 135 files changed, 8646 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 bower.json create mode 100644 package.json create mode 100644 src/Web/HTML/HTMLAnchorElement.js create mode 100644 src/Web/HTML/HTMLAnchorElement.purs create mode 100644 src/Web/HTML/HTMLAreaElement.js create mode 100644 src/Web/HTML/HTMLAreaElement.purs create mode 100644 src/Web/HTML/HTMLAudioElement.purs create mode 100644 src/Web/HTML/HTMLBRElement.purs create mode 100644 src/Web/HTML/HTMLBaseElement.js create mode 100644 src/Web/HTML/HTMLBaseElement.purs create mode 100644 src/Web/HTML/HTMLBodyElement.purs create mode 100644 src/Web/HTML/HTMLButtonElement.js create mode 100644 src/Web/HTML/HTMLButtonElement.purs create mode 100644 src/Web/HTML/HTMLCanvasElement.js create mode 100644 src/Web/HTML/HTMLCanvasElement.purs create mode 100644 src/Web/HTML/HTMLDListElement.purs create mode 100644 src/Web/HTML/HTMLDataElement.js create mode 100644 src/Web/HTML/HTMLDataElement.purs create mode 100644 src/Web/HTML/HTMLDataListElement.js create mode 100644 src/Web/HTML/HTMLDataListElement.purs create mode 100644 src/Web/HTML/HTMLDivElement.purs create mode 100644 src/Web/HTML/HTMLDocument.js create mode 100644 src/Web/HTML/HTMLDocument.purs create mode 100644 src/Web/HTML/HTMLDocument/ReadyState.purs create mode 100644 src/Web/HTML/HTMLElement.js create mode 100644 src/Web/HTML/HTMLElement.purs create mode 100644 src/Web/HTML/HTMLEmbedElement.js create mode 100644 src/Web/HTML/HTMLEmbedElement.purs create mode 100644 src/Web/HTML/HTMLFieldSetElement.js create mode 100644 src/Web/HTML/HTMLFieldSetElement.purs create mode 100644 src/Web/HTML/HTMLFormElement.js create mode 100644 src/Web/HTML/HTMLFormElement.purs create mode 100644 src/Web/HTML/HTMLHRElement.purs create mode 100644 src/Web/HTML/HTMLHeadElement.purs create mode 100644 src/Web/HTML/HTMLHeadingElement.purs create mode 100644 src/Web/HTML/HTMLIFrameElement.js create mode 100644 src/Web/HTML/HTMLIFrameElement.purs create mode 100644 src/Web/HTML/HTMLImageElement.js create mode 100644 src/Web/HTML/HTMLImageElement.purs create mode 100644 src/Web/HTML/HTMLInputElement.js create mode 100644 src/Web/HTML/HTMLInputElement.purs create mode 100644 src/Web/HTML/HTMLKeygenElement.js create mode 100644 src/Web/HTML/HTMLKeygenElement.purs create mode 100644 src/Web/HTML/HTMLLIElement.js create mode 100644 src/Web/HTML/HTMLLIElement.purs create mode 100644 src/Web/HTML/HTMLLabelElement.js create mode 100644 src/Web/HTML/HTMLLabelElement.purs create mode 100644 src/Web/HTML/HTMLLegendElement.js create mode 100644 src/Web/HTML/HTMLLegendElement.purs create mode 100644 src/Web/HTML/HTMLLinkElement.js create mode 100644 src/Web/HTML/HTMLLinkElement.purs create mode 100644 src/Web/HTML/HTMLMapElement.js create mode 100644 src/Web/HTML/HTMLMapElement.purs create mode 100644 src/Web/HTML/HTMLMediaElement.js create mode 100644 src/Web/HTML/HTMLMediaElement.purs create mode 100644 src/Web/HTML/HTMLMediaElement/CanPlayType.purs create mode 100644 src/Web/HTML/HTMLMediaElement/NetworkState.purs create mode 100644 src/Web/HTML/HTMLMediaElement/ReadyState.purs create mode 100644 src/Web/HTML/HTMLMetaElement.js create mode 100644 src/Web/HTML/HTMLMetaElement.purs create mode 100644 src/Web/HTML/HTMLMeterElement.js create mode 100644 src/Web/HTML/HTMLMeterElement.purs create mode 100644 src/Web/HTML/HTMLModElement.js create mode 100644 src/Web/HTML/HTMLModElement.purs create mode 100644 src/Web/HTML/HTMLOListElement.js create mode 100644 src/Web/HTML/HTMLOListElement.purs create mode 100644 src/Web/HTML/HTMLObjectElement.js create mode 100644 src/Web/HTML/HTMLObjectElement.purs create mode 100644 src/Web/HTML/HTMLOptGroupElement.js create mode 100644 src/Web/HTML/HTMLOptGroupElement.purs create mode 100644 src/Web/HTML/HTMLOptionElement.js create mode 100644 src/Web/HTML/HTMLOptionElement.purs create mode 100644 src/Web/HTML/HTMLOutputElement.js create mode 100644 src/Web/HTML/HTMLOutputElement.purs create mode 100644 src/Web/HTML/HTMLParagraphElement.purs create mode 100644 src/Web/HTML/HTMLParamElement.js create mode 100644 src/Web/HTML/HTMLParamElement.purs create mode 100644 src/Web/HTML/HTMLPreElement.purs create mode 100644 src/Web/HTML/HTMLProgressElement.js create mode 100644 src/Web/HTML/HTMLProgressElement.purs create mode 100644 src/Web/HTML/HTMLQuoteElement.js create mode 100644 src/Web/HTML/HTMLQuoteElement.purs create mode 100644 src/Web/HTML/HTMLScriptElement.js create mode 100644 src/Web/HTML/HTMLScriptElement.purs create mode 100644 src/Web/HTML/HTMLSelectElement.js create mode 100644 src/Web/HTML/HTMLSelectElement.purs create mode 100644 src/Web/HTML/HTMLSourceElement.js create mode 100644 src/Web/HTML/HTMLSourceElement.purs create mode 100644 src/Web/HTML/HTMLSpanElement.purs create mode 100644 src/Web/HTML/HTMLStyleElement.js create mode 100644 src/Web/HTML/HTMLStyleElement.purs create mode 100644 src/Web/HTML/HTMLTableCaptionElement.purs create mode 100644 src/Web/HTML/HTMLTableCellElement.js create mode 100644 src/Web/HTML/HTMLTableCellElement.purs create mode 100644 src/Web/HTML/HTMLTableColElement.js create mode 100644 src/Web/HTML/HTMLTableColElement.purs create mode 100644 src/Web/HTML/HTMLTableDataCellElement.purs create mode 100644 src/Web/HTML/HTMLTableElement.js create mode 100644 src/Web/HTML/HTMLTableElement.purs create mode 100644 src/Web/HTML/HTMLTableHeaderCellElement.js create mode 100644 src/Web/HTML/HTMLTableHeaderCellElement.purs create mode 100644 src/Web/HTML/HTMLTableRowElement.js create mode 100644 src/Web/HTML/HTMLTableRowElement.purs create mode 100644 src/Web/HTML/HTMLTableSectionElement.js create mode 100644 src/Web/HTML/HTMLTableSectionElement.purs create mode 100644 src/Web/HTML/HTMLTemplateElement.js create mode 100644 src/Web/HTML/HTMLTemplateElement.purs create mode 100644 src/Web/HTML/HTMLTextAreaElement.js create mode 100644 src/Web/HTML/HTMLTextAreaElement.purs create mode 100644 src/Web/HTML/HTMLTimeElement.js create mode 100644 src/Web/HTML/HTMLTimeElement.purs create mode 100644 src/Web/HTML/HTMLTitleElement.js create mode 100644 src/Web/HTML/HTMLTitleElement.purs create mode 100644 src/Web/HTML/HTMLTrackElement.js create mode 100644 src/Web/HTML/HTMLTrackElement.purs create mode 100644 src/Web/HTML/HTMLTrackElement/ReadyState.purs create mode 100644 src/Web/HTML/HTMLUListElement.purs create mode 100644 src/Web/HTML/HTMLVideoElement.js create mode 100644 src/Web/HTML/HTMLVideoElement.purs create mode 100644 src/Web/HTML/History.js create mode 100644 src/Web/HTML/History.purs create mode 100644 src/Web/HTML/Location.js create mode 100644 src/Web/HTML/Location.purs create mode 100644 src/Web/HTML/Navigator.js create mode 100644 src/Web/HTML/Navigator.purs create mode 100644 src/Web/HTML/SelectionMode.purs create mode 100644 src/Web/HTML/ValidityState.js create mode 100644 src/Web/HTML/ValidityState.purs create mode 100644 src/Web/HTML/Window.js create mode 100644 src/Web/HTML/Window.purs diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..cb9c786 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,29 @@ +{ + "parserOptions": { + "ecmaVersion": 5 + }, + "extends": "eslint:recommended", + "env": { + "commonjs": true, + "browser": true + }, + "rules": { + "strict": [2, "global"], + "block-scoped-var": 2, + "consistent-return": 2, + "eqeqeq": [2, "smart"], + "guard-for-in": 2, + "no-caller": 2, + "no-extend-native": 2, + "no-loop-func": 2, + "no-new": 2, + "no-param-reassign": 2, + "no-return-assign": 2, + "no-unused-expressions": 2, + "no-use-before-define": 2, + "radix": [2, "always"], + "indent": [2, 2], + "quotes": [2, "double"], + "semi": [2, "always"] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..361cf52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# Dependencies +.psci_modules +bower_components +node_modules + +# Generated files +.psci +output diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..968390b --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: node_js +dist: trusty +sudo: required +node_js: stable +install: + - npm install -g bower + - npm install + - bower install +script: + - npm run -s build +after_success: +- >- + test $TRAVIS_TAG && + echo $GITHUB_TOKEN | pulp login && + echo y | pulp publish --no-push diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3f798d0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 PureScript + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..51105f8 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# purescript-web-html + +[![Latest release](http://img.shields.io/github/release/purescript-web/purescript-web-html.svg)](https://github.com/purescript-web/purescript-web-html/releases) +[![Build status](https://travis-ci.org/purescript-web/purescript-web-html.svg?branch=master)](https://travis-ci.org/purescript-web/purescript-web-html) + +Type definitions and low level interface implementations for the W3C HTML5 API. + +## Installation + +``` +bower install purescript-web-html +``` + +## Documentation + +Module documentation is [published on Pursuit](http://pursuit.purescript.org/packages/purescript-web-html). diff --git a/bower.json b/bower.json new file mode 100644 index 0000000..37ab61a --- /dev/null +++ b/bower.json @@ -0,0 +1,23 @@ +{ + "name": "purescript-web-html", + "homepage": "https://github.com/purescript-web/purescript-web-html", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/purescript-web/purescript-web-html.git" + }, + "ignore": [ + "**/.*", + "bower_components", + "node_modules", + "output", + "bower.json", + "package.json" + ], + "dependencies": { + "purescript-js-date": "#compiler/0.12", + "purescript-web-dom": "#compiler/0.12", + "purescript-web-file": "#compiler/0.12", + "purescript-web-storage": "purescript-web/purescript-web-storage#compiler/0.12" + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..30b416a --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "private": true, + "scripts": { + "clean": "rimraf output && rimraf .pulp-cache", + "build": "eslint src && pulp build -- --censor-lib --strict" + }, + "devDependencies": { + "eslint": "^4.19.1", + "pulp": "^12.2.0", + "purescript-psa": "^0.6.0", + "purescript": "^0.11.7", + "rimraf": "^2.6.2" + } +} diff --git a/src/Web/HTML/HTMLAnchorElement.js b/src/Web/HTML/HTMLAnchorElement.js new file mode 100644 index 0000000..bddef8f --- /dev/null +++ b/src/Web/HTML/HTMLAnchorElement.js @@ -0,0 +1,119 @@ +"use strict"; + +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/Web/HTML/HTMLAnchorElement.purs b/src/Web/HTML/HTMLAnchorElement.purs new file mode 100644 index 0000000..2e4690e --- /dev/null +++ b/src/Web/HTML/HTMLAnchorElement.purs @@ -0,0 +1,39 @@ +module Web.HTML.HTMLAnchorElement where + +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.DOMTokenList (DOMTokenList) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLAnchorElement :: Type + +toHTMLElement :: HTMLAnchorElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLAnchorElement +read = unsafeReadTagged "HTMLAnchorElement" + +foreign import target :: HTMLAnchorElement -> Effect String +foreign import setTarget :: String -> HTMLAnchorElement -> Effect Unit + +foreign import download :: HTMLAnchorElement -> Effect String +foreign import setDownload :: String -> HTMLAnchorElement -> Effect Unit + +foreign import rel :: HTMLAnchorElement -> Effect String +foreign import setRel :: String -> HTMLAnchorElement -> Effect Unit + +foreign import rev :: HTMLAnchorElement -> Effect String +foreign import setRev :: String -> HTMLAnchorElement -> Effect Unit + +foreign import relList :: HTMLAnchorElement -> Effect DOMTokenList + +foreign import hreflang :: HTMLAnchorElement -> Effect String +foreign import setHreflang :: String -> HTMLAnchorElement -> Effect Unit + +foreign import type_ :: HTMLAnchorElement -> Effect String +foreign import setType :: String -> HTMLAnchorElement -> Effect Unit + +foreign import text :: HTMLAnchorElement -> Effect String +foreign import setText :: String -> HTMLAnchorElement -> Effect Unit diff --git a/src/Web/HTML/HTMLAreaElement.js b/src/Web/HTML/HTMLAreaElement.js new file mode 100644 index 0000000..9d7279a --- /dev/null +++ b/src/Web/HTML/HTMLAreaElement.js @@ -0,0 +1,135 @@ +"use strict"; + +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/Web/HTML/HTMLAreaElement.purs b/src/Web/HTML/HTMLAreaElement.purs new file mode 100644 index 0000000..754133e --- /dev/null +++ b/src/Web/HTML/HTMLAreaElement.purs @@ -0,0 +1,42 @@ +module Web.HTML.HTMLAreaElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.DOMTokenList (DOMTokenList) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLAreaElement :: Type + +toHTMLElement :: HTMLAreaElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLAreaElement +read = unsafeReadTagged "HTMLAreaElement" + +foreign import alt :: HTMLAreaElement -> Effect String +foreign import setAlt :: String -> HTMLAreaElement -> Effect Unit + +foreign import coords :: HTMLAreaElement -> Effect String +foreign import setCoords :: String -> HTMLAreaElement -> Effect Unit + +foreign import shape :: HTMLAreaElement -> Effect String +foreign import setShape :: String -> HTMLAreaElement -> Effect Unit + +foreign import target :: HTMLAreaElement -> Effect String +foreign import setTarget :: String -> HTMLAreaElement -> Effect Unit + +foreign import download :: HTMLAreaElement -> Effect String +foreign import setDownload :: String -> HTMLAreaElement -> Effect Unit + +foreign import rel :: HTMLAreaElement -> Effect String +foreign import setRel :: String -> HTMLAreaElement -> Effect Unit + +foreign import relList :: HTMLAreaElement -> Effect DOMTokenList + +foreign import hreflang :: HTMLAreaElement -> Effect String +foreign import setHreflang :: String -> HTMLAreaElement -> Effect Unit + +foreign import type_ :: HTMLAreaElement -> Effect String +foreign import setType :: String -> HTMLAreaElement -> Effect Unit diff --git a/src/Web/HTML/HTMLAudioElement.purs b/src/Web/HTML/HTMLAudioElement.purs new file mode 100644 index 0000000..1f4fd7c --- /dev/null +++ b/src/Web/HTML/HTMLAudioElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLAudioElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLMediaElement (HTMLMediaElement) + +foreign import data HTMLAudioElement :: Type + +toHTMLMediaElement :: HTMLAudioElement -> HTMLMediaElement +toHTMLMediaElement = unsafeCoerce + +read :: Foreign -> F HTMLAudioElement +read = unsafeReadTagged "HTMLAudioElement" diff --git a/src/Web/HTML/HTMLBRElement.purs b/src/Web/HTML/HTMLBRElement.purs new file mode 100644 index 0000000..41d0a8f --- /dev/null +++ b/src/Web/HTML/HTMLBRElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLBRElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLBRElement :: Type + +toHTMLElement :: HTMLBRElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLBRElement +read = unsafeReadTagged "HTMLBRElement" diff --git a/src/Web/HTML/HTMLBaseElement.js b/src/Web/HTML/HTMLBaseElement.js new file mode 100644 index 0000000..66962ae --- /dev/null +++ b/src/Web/HTML/HTMLBaseElement.js @@ -0,0 +1,31 @@ +"use strict"; + +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/Web/HTML/HTMLBaseElement.purs b/src/Web/HTML/HTMLBaseElement.purs new file mode 100644 index 0000000..516d70e --- /dev/null +++ b/src/Web/HTML/HTMLBaseElement.purs @@ -0,0 +1,21 @@ +module Web.HTML.HTMLBaseElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLBaseElement :: Type + +toHTMLElement :: HTMLBaseElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLBaseElement +read = unsafeReadTagged "HTMLBaseElement" + +foreign import href :: HTMLBaseElement -> Effect String +foreign import setHref :: String -> HTMLBaseElement -> Effect Unit + +foreign import target :: HTMLBaseElement -> Effect String +foreign import setTarget :: String -> HTMLBaseElement -> Effect Unit diff --git a/src/Web/HTML/HTMLBodyElement.purs b/src/Web/HTML/HTMLBodyElement.purs new file mode 100644 index 0000000..802b664 --- /dev/null +++ b/src/Web/HTML/HTMLBodyElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLBodyElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLBodyElement :: Type + +toHTMLElement :: HTMLBodyElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLBodyElement +read = unsafeReadTagged "HTMLBodyElement" diff --git a/src/Web/HTML/HTMLButtonElement.js b/src/Web/HTML/HTMLButtonElement.js new file mode 100644 index 0000000..dad57c3 --- /dev/null +++ b/src/Web/HTML/HTMLButtonElement.js @@ -0,0 +1,217 @@ +"use strict"; + +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/Web/HTML/HTMLButtonElement.purs b/src/Web/HTML/HTMLButtonElement.purs new file mode 100644 index 0000000..39b6a54 --- /dev/null +++ b/src/Web/HTML/HTMLButtonElement.purs @@ -0,0 +1,99 @@ +module Web.HTML.HTMLButtonElement + ( HTMLButtonElement + , toHTMLElement + , read + , autofocus + , setAutofocus + , disabled + , setDisabled + , form + , formAction + , setFormAction + , formEnctype + , setFormEnctype + , formMethod + , setFormMethod + , formNoValidate + , setFormNoValidate + , formTarget + , setFormTarget + , name + , setName + , type_ + , setType + , value + , setValue + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.NodeList (NodeList) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) +import Web.HTML.ValidityState (ValidityState) + +foreign import data HTMLButtonElement :: Type + +toHTMLElement :: HTMLButtonElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLButtonElement +read = unsafeReadTagged "HTMLButtonElement" + +foreign import autofocus :: HTMLButtonElement -> Effect Boolean +foreign import setAutofocus :: Boolean -> HTMLButtonElement -> Effect Unit + +foreign import disabled :: HTMLButtonElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLButtonElement -> Effect Unit + +form :: HTMLButtonElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLButtonElement -> Effect (Nullable HTMLFormElement) + +foreign import formAction :: HTMLButtonElement -> Effect String +foreign import setFormAction :: String -> HTMLButtonElement -> Effect Unit + +foreign import formEnctype :: HTMLButtonElement -> Effect String +foreign import setFormEnctype :: String -> HTMLButtonElement -> Effect Unit + +foreign import formMethod :: HTMLButtonElement -> Effect String +foreign import setFormMethod :: String -> HTMLButtonElement -> Effect Unit + +foreign import formNoValidate :: HTMLButtonElement -> Effect Boolean +foreign import setFormNoValidate :: Boolean -> HTMLButtonElement -> Effect Unit + +foreign import formTarget :: HTMLButtonElement -> Effect String +foreign import setFormTarget :: String -> HTMLButtonElement -> Effect Unit + +foreign import name :: HTMLButtonElement -> Effect String +foreign import setName :: String -> HTMLButtonElement -> Effect Unit + +foreign import type_ :: HTMLButtonElement -> Effect String +foreign import setType :: String -> HTMLButtonElement -> Effect Unit + +foreign import value :: HTMLButtonElement -> Effect String +foreign import setValue :: String -> HTMLButtonElement -> Effect Unit + +foreign import willValidate :: HTMLButtonElement -> Effect Boolean + +foreign import validity :: HTMLButtonElement -> Effect ValidityState + +foreign import validationMessage :: HTMLButtonElement -> Effect String + +foreign import checkValidity :: HTMLButtonElement -> Effect Boolean + +foreign import setCustomValidity :: String -> HTMLButtonElement -> Effect Unit + +foreign import labels :: HTMLButtonElement -> Effect NodeList diff --git a/src/Web/HTML/HTMLCanvasElement.js b/src/Web/HTML/HTMLCanvasElement.js new file mode 100644 index 0000000..d08abb8 --- /dev/null +++ b/src/Web/HTML/HTMLCanvasElement.js @@ -0,0 +1,31 @@ +"use strict"; + +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/Web/HTML/HTMLCanvasElement.purs b/src/Web/HTML/HTMLCanvasElement.purs new file mode 100644 index 0000000..547d8fd --- /dev/null +++ b/src/Web/HTML/HTMLCanvasElement.purs @@ -0,0 +1,29 @@ +module Web.HTML.HTMLCanvasElement where + +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLCanvasElement :: Type + +toHTMLElement :: HTMLCanvasElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLCanvasElement +read = unsafeReadTagged "HTMLCanvasElement" + +-- typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext; + +foreign import width :: HTMLCanvasElement -> Effect Int +foreign import setWidth :: Int -> HTMLCanvasElement -> Effect Unit + +foreign import height :: HTMLCanvasElement -> Effect Int +foreign import setHeight :: Int -> HTMLCanvasElement -> Effect 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/Web/HTML/HTMLDListElement.purs b/src/Web/HTML/HTMLDListElement.purs new file mode 100644 index 0000000..32160d6 --- /dev/null +++ b/src/Web/HTML/HTMLDListElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLDListElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLDListElement :: Type + +toHTMLElement :: HTMLDListElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLDListElement +read = unsafeReadTagged "HTMLDListElement" diff --git a/src/Web/HTML/HTMLDataElement.js b/src/Web/HTML/HTMLDataElement.js new file mode 100644 index 0000000..cf67d59 --- /dev/null +++ b/src/Web/HTML/HTMLDataElement.js @@ -0,0 +1,15 @@ +"use strict"; + +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/Web/HTML/HTMLDataElement.purs b/src/Web/HTML/HTMLDataElement.purs new file mode 100644 index 0000000..6093175 --- /dev/null +++ b/src/Web/HTML/HTMLDataElement.purs @@ -0,0 +1,18 @@ +module Web.HTML.HTMLDataElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLDataElement :: Type + +toHTMLElement :: HTMLDataElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLDataElement +read = unsafeReadTagged "HTMLDataElement" + +foreign import value :: HTMLDataElement -> Effect String +foreign import setValue :: String -> HTMLDataElement -> Effect Unit diff --git a/src/Web/HTML/HTMLDataListElement.js b/src/Web/HTML/HTMLDataListElement.js new file mode 100644 index 0000000..baf908f --- /dev/null +++ b/src/Web/HTML/HTMLDataListElement.js @@ -0,0 +1,7 @@ +"use strict"; + +exports.options = function (dle) { + return function () { + return dle.options; + }; +}; diff --git a/src/Web/HTML/HTMLDataListElement.purs b/src/Web/HTML/HTMLDataListElement.purs new file mode 100644 index 0000000..a0c96d1 --- /dev/null +++ b/src/Web/HTML/HTMLDataListElement.purs @@ -0,0 +1,17 @@ +module Web.HTML.HTMLDataListElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.HTMLCollection (HTMLCollection) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLDataListElement :: Type + +toHTMLElement :: HTMLDataListElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLDataListElement +read = unsafeReadTagged "HTMLDataListElement" + +foreign import options :: HTMLDataListElement -> Effect HTMLCollection diff --git a/src/Web/HTML/HTMLDivElement.purs b/src/Web/HTML/HTMLDivElement.purs new file mode 100644 index 0000000..6daf272 --- /dev/null +++ b/src/Web/HTML/HTMLDivElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLDivElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLDivElement :: Type + +toHTMLElement :: HTMLDivElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLDivElement +read = unsafeReadTagged "HTMLDivElement" diff --git a/src/Web/HTML/HTMLDocument.js b/src/Web/HTML/HTMLDocument.js new file mode 100644 index 0000000..753f0d0 --- /dev/null +++ b/src/Web/HTML/HTMLDocument.js @@ -0,0 +1,19 @@ +"use strict"; + +exports._body = function (doc) { + return function () { + return doc.body; + }; +}; + +exports._readyState = function (doc) { + return function () { + return doc.readyState; + }; +}; + +exports._activeElement = function (doc) { + return function () { + return doc.activeElement; + }; +}; diff --git a/src/Web/HTML/HTMLDocument.purs b/src/Web/HTML/HTMLDocument.purs new file mode 100644 index 0000000..772a540 --- /dev/null +++ b/src/Web/HTML/HTMLDocument.purs @@ -0,0 +1,65 @@ +module Web.HTML.HTMLDocument + ( HTMLDocument + , toDocument + , toNonElementParentNode + , toParentNode + , toNode + , toEventTarget + , read + , body + , readyState + , activeElement + , module Exports + ) where + +import Prelude + +import Data.Maybe (Maybe, fromJust) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Partial.Unsafe (unsafePartial) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.Document (Document) +import Web.DOM.Internal.Types (Node) +import Web.DOM.NonElementParentNode (NonElementParentNode) +import Web.DOM.ParentNode (ParentNode) +import Web.Event.Types (EventTarget) +import Web.HTML.HTMLDocument.ReadyState (ReadyState(..)) as Exports +import Web.HTML.HTMLDocument.ReadyState (ReadyState, parseReadyState) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLDocument :: Type + +toDocument :: HTMLDocument -> Document +toDocument = unsafeCoerce + +toNonElementParentNode :: HTMLDocument -> NonElementParentNode +toNonElementParentNode = unsafeCoerce + +toParentNode :: HTMLDocument -> ParentNode +toParentNode = unsafeCoerce + +toNode :: HTMLDocument -> Node +toNode = unsafeCoerce + +toEventTarget :: HTMLDocument -> EventTarget +toEventTarget = unsafeCoerce + +read :: Foreign -> F HTMLDocument +read = unsafeReadTagged "HTMLDocument" + +foreign import _body :: HTMLDocument -> Effect (Nullable HTMLElement) + +body :: HTMLDocument -> Effect (Maybe HTMLElement) +body = map toMaybe <<< _body + +foreign import _readyState :: HTMLDocument -> Effect String + +readyState :: HTMLDocument -> Effect ReadyState +readyState = map (unsafePartial fromJust <<< parseReadyState) <<< _readyState + +foreign import _activeElement :: HTMLDocument -> Effect (Nullable HTMLElement) + +activeElement :: HTMLDocument -> Effect (Maybe HTMLElement) +activeElement = map toMaybe <<< _activeElement diff --git a/src/Web/HTML/HTMLDocument/ReadyState.purs b/src/Web/HTML/HTMLDocument/ReadyState.purs new file mode 100644 index 0000000..518afe3 --- /dev/null +++ b/src/Web/HTML/HTMLDocument/ReadyState.purs @@ -0,0 +1,60 @@ +module Web.HTML.HTMLDocument.ReadyState where + +import Prelude +import Data.Enum (class Enum, class BoundedEnum, Cardinality(..), defaultSucc, defaultPred) +import Data.Maybe (Maybe(..)) + +data ReadyState + = Loading + | Interactive + | Complete + +derive instance eqReadyState :: Eq ReadyState +derive instance ordReadyState :: Ord ReadyState + +instance showReadyState :: Show ReadyState where + show = case _ of + Loading -> "Loading" + Interactive -> "Interactive" + Complete -> "Complete" + +printReadyState :: ReadyState -> String +printReadyState = case _ of + Loading -> "loading" + Interactive -> "interactive" + Complete -> "complete" + +parseReadyState :: String -> Maybe ReadyState +parseReadyState = case _ of + "loading" -> Just Loading + "interactive" -> Just Interactive + "complete" -> Just Complete + _ -> Nothing + +instance boundedReadyState :: Bounded ReadyState where + bottom = Loading + top = Complete + +instance enumReadyState :: Enum ReadyState where + succ = defaultSucc toEnumReadyState fromEnumReadyState + pred = defaultPred toEnumReadyState fromEnumReadyState + +instance boundedEnumReadyState :: BoundedEnum ReadyState where + cardinality = Cardinality 3 + toEnum = toEnumReadyState + fromEnum = fromEnumReadyState + +toEnumReadyState :: Int -> Maybe ReadyState +toEnumReadyState = + case _ of + 0 -> Just Loading + 1 -> Just Interactive + 2 -> Just Complete + _ -> Nothing + +fromEnumReadyState :: ReadyState -> Int +fromEnumReadyState = + case _ of + Loading -> 0 + Interactive -> 1 + Complete -> 2 diff --git a/src/Web/HTML/HTMLElement.js b/src/Web/HTML/HTMLElement.js new file mode 100644 index 0000000..6a1536e --- /dev/null +++ b/src/Web/HTML/HTMLElement.js @@ -0,0 +1,245 @@ +"use strict"; + +exports._read = function (failure) { + return function (success) { + return function (value) { + var tag = Object.prototype.toString.call(value); + if (tag.indexOf("[object HTML") === 0 && tag.indexOf("Element]") === tag.length - 8) { + return success(value); + } else { + return failure(tag); + } + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.title = function (elt) { + return function () { + return elt.title; + }; +}; + +exports.setTitle = function (title) { + return function (elt) { + return function () { + elt.title = title; + return {}; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.lang = function (elt) { + return function () { + return elt.lang; + }; +}; + +exports.setLang = function (lang) { + return function (elt) { + return function () { + elt.lang = lang; + return {}; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.dir = function (elt) { + return function () { + return elt.dir; + }; +}; + +exports.setDir = function (dir) { + return function (elt) { + return function () { + elt.dir = dir; + return {}; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.className = function (elt) { + return function () { + return elt.className; + }; +}; + +exports.setClassName = function (className) { + return function (elt) { + return function () { + elt.className = className; + return {}; + }; + }; +}; + +exports.classList = function (element) { + return function () { + return element.classList; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.hidden = function (elt) { + return function () { + return elt.hidden; + }; +}; + +exports.setHidden = function (hidden) { + return function (elt) { + return function () { + elt.hidden = hidden; + return {}; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.tabIndex = function (elt) { + return function () { + return elt.tabIndex; + }; +}; + +exports.setTabIndex = function (tabIndex) { + return function (elt) { + return function () { + elt.tabIndex = tabIndex; + return {}; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.draggable = function (elt) { + return function () { + return elt.draggable; + }; +}; + +exports.setDraggable = function (draggable) { + return function (elt) { + return function () { + elt.draggable = draggable; + return {}; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.contentEditable = function (elt) { + return function () { + return elt.contentEditable; + }; +}; + +exports.setContentEditable = function (contentEditable) { + return function (elt) { + return function () { + elt.contentEditable = contentEditable; + return {}; + }; + }; +}; + +exports.isContentEditable = function (elt) { + return function () { + return elt.isContentEditable; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.spellcheck = function (elt) { + return function () { + return elt.spellcheck; + }; +}; + +exports.setSpellcheck = function (spellcheck) { + return function (elt) { + return function () { + elt.spellcheck = spellcheck; + return {}; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.click = function (elt) { + return function () { + return elt.click(); + }; +}; + +exports.focus = function (elt) { + return function () { + return elt.focus(); + }; +}; + +exports.blur = function (elt) { + return function () { + return elt.blur(); + }; +}; + +// - CSSOM --------------------------------------------------------------------- + +exports.getBoundingClientRect = function (el) { + return function () { + var rect = el.getBoundingClientRect(); + return { + top: rect.top, + right: rect.right, + bottom: rect.bottom, + left: rect.left, + width: rect.width, + height: rect.height + }; + }; +}; + +exports._offsetParent = function (el) { + return function () { + return el.offsetParent; + }; +}; + +exports.offsetTop = function (el) { + return function () { + return el.offsetTop; + }; +}; + +exports.offsetLeft = function (el) { + return function () { + return el.offsetLeft; + }; +}; + +exports.offsetWidth = function (el) { + return function () { + return el.offsetWidth; + }; +}; + +exports.offsetHeight = function (el) { + return function () { + return el.offsetHeight; + }; +}; diff --git a/src/Web/HTML/HTMLElement.purs b/src/Web/HTML/HTMLElement.purs new file mode 100644 index 0000000..ce27946 --- /dev/null +++ b/src/Web/HTML/HTMLElement.purs @@ -0,0 +1,136 @@ +module Web.HTML.HTMLElement + ( HTMLElement + , toElement + , toParentNode + , toNonDocumentTypeChildNode + , toNode + , toEventTarget + , read + , title + , setTitle + , lang + , setLang + , dir + , setDir + , className + , setClassName + , classList + , hidden + , setHidden + , tabIndex + , setTabIndex + , draggable + , setDraggable + , contentEditable + , setContentEditable + , isContentEditable + , spellcheck + , setSpellcheck + , click + , focus + , blur + , getBoundingClientRect + , DOMRect + , offsetParent + , offsetTop + , offsetLeft + , offsetWidth + , offsetHeight + ) where + +import Prelude + +import Control.Monad.Except (except) +import Data.Either (Either(..)) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, ForeignError(..)) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.DOMTokenList (DOMTokenList) +import Web.DOM.Element (Element) +import Web.DOM.Internal.Types (Node) +import Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode) +import Web.DOM.ParentNode (ParentNode) +import Web.Event.Types (EventTarget) + +foreign import data HTMLElement :: Type + +toElement :: HTMLElement -> Element +toElement = unsafeCoerce + +toParentNode :: HTMLElement -> ParentNode +toParentNode = unsafeCoerce + +toNonDocumentTypeChildNode :: HTMLElement -> NonDocumentTypeChildNode +toNonDocumentTypeChildNode = unsafeCoerce + +toNode :: HTMLElement -> Node +toNode = unsafeCoerce + +toEventTarget :: HTMLElement -> EventTarget +toEventTarget = unsafeCoerce + +foreign import _read + :: (forall a. String -> F a) + -> (forall a. a -> F a) + -> Foreign + -> F HTMLElement + +read :: Foreign -> F HTMLElement +read = _read (except <<< Left <<< pure <<< TypeMismatch "HTMLElement") (except <<< Right) + +foreign import title :: HTMLElement -> Effect String +foreign import setTitle :: String -> HTMLElement -> Effect Unit + +foreign import lang :: HTMLElement -> Effect String +foreign import setLang :: String -> HTMLElement -> Effect Unit + +foreign import dir :: HTMLElement -> Effect String +foreign import setDir :: String -> HTMLElement -> Effect Unit + +foreign import className :: HTMLElement -> Effect String +foreign import setClassName :: String -> HTMLElement -> Effect Unit + +foreign import classList :: HTMLElement -> Effect DOMTokenList + +foreign import hidden :: HTMLElement -> Effect Boolean +foreign import setHidden :: Boolean -> HTMLElement -> Effect Unit + +foreign import tabIndex :: HTMLElement -> Effect Int +foreign import setTabIndex :: Int -> HTMLElement -> Effect Unit + +foreign import draggable :: HTMLElement -> Effect Boolean +foreign import setDraggable :: Boolean -> HTMLElement -> Effect Unit + +foreign import contentEditable :: HTMLElement -> Effect String +foreign import setContentEditable :: String -> HTMLElement -> Effect Unit +foreign import isContentEditable :: HTMLElement -> Effect Boolean + +foreign import spellcheck :: HTMLElement -> Effect Boolean +foreign import setSpellcheck :: Boolean -> HTMLElement -> Effect Unit + +foreign import click :: HTMLElement -> Effect Unit +foreign import focus :: HTMLElement -> Effect Unit +foreign import blur :: HTMLElement -> Effect Unit + +type DOMRect = + { top :: Number + , right :: Number + , bottom :: Number + , left :: Number + , width :: Number + , height :: Number + } + +foreign import getBoundingClientRect :: HTMLElement -> Effect DOMRect + +foreign import _offsetParent :: HTMLElement -> Effect (Nullable Element) + +offsetParent :: HTMLElement -> Effect (Maybe Element) +offsetParent = map toMaybe <<< _offsetParent + +foreign import offsetTop :: HTMLElement -> Effect Number +foreign import offsetLeft :: HTMLElement -> Effect Number +foreign import offsetWidth :: HTMLElement -> Effect Number +foreign import offsetHeight :: HTMLElement -> Effect Number diff --git a/src/Web/HTML/HTMLEmbedElement.js b/src/Web/HTML/HTMLEmbedElement.js new file mode 100644 index 0000000..cd0f6f2 --- /dev/null +++ b/src/Web/HTML/HTMLEmbedElement.js @@ -0,0 +1,63 @@ +"use strict"; + +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/Web/HTML/HTMLEmbedElement.purs b/src/Web/HTML/HTMLEmbedElement.purs new file mode 100644 index 0000000..4656269 --- /dev/null +++ b/src/Web/HTML/HTMLEmbedElement.purs @@ -0,0 +1,27 @@ +module Web.HTML.HTMLEmbedElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLEmbedElement :: Type + +toHTMLElement :: HTMLEmbedElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLEmbedElement +read = unsafeReadTagged "HTMLEmbedElement" + +foreign import src :: HTMLEmbedElement -> Effect String +foreign import setSrc :: String -> HTMLEmbedElement -> Effect Unit + +foreign import type_ :: HTMLEmbedElement -> Effect String +foreign import setType :: String -> HTMLEmbedElement -> Effect Unit + +foreign import width :: HTMLEmbedElement -> Effect String +foreign import setWidth :: String -> HTMLEmbedElement -> Effect Unit + +foreign import height :: HTMLEmbedElement -> Effect String +foreign import setHeight :: String -> HTMLEmbedElement -> Effect Unit diff --git a/src/Web/HTML/HTMLFieldSetElement.js b/src/Web/HTML/HTMLFieldSetElement.js new file mode 100644 index 0000000..bf86a0f --- /dev/null +++ b/src/Web/HTML/HTMLFieldSetElement.js @@ -0,0 +1,97 @@ +"use strict"; + +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/Web/HTML/HTMLFieldSetElement.purs b/src/Web/HTML/HTMLFieldSetElement.purs new file mode 100644 index 0000000..a131845 --- /dev/null +++ b/src/Web/HTML/HTMLFieldSetElement.purs @@ -0,0 +1,62 @@ +module Web.HTML.HTMLFieldSetElement + ( HTMLFieldSetElement + , toHTMLElement + , read + , disabled + , setDisabled + , form + , name + , setName + , type_ + , setType + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) +import Web.HTML.ValidityState (ValidityState) + +foreign import data HTMLFieldSetElement :: Type + +toHTMLElement :: HTMLFieldSetElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLFieldSetElement +read = unsafeReadTagged "HTMLFieldSetElement" + +foreign import disabled :: HTMLFieldSetElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLFieldSetElement -> Effect Unit + +foreign import _form :: HTMLFieldSetElement -> Effect (Nullable HTMLFormElement) + +form :: HTMLFieldSetElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import name :: HTMLFieldSetElement -> Effect String +foreign import setName :: String -> HTMLFieldSetElement -> Effect Unit + +foreign import type_ :: HTMLFieldSetElement -> Effect String +foreign import setType :: String -> HTMLFieldSetElement -> Effect Unit + +-- readonly attribute HTMLFormControlsCollection elements; + +foreign import willValidate :: HTMLFieldSetElement -> Effect Boolean + +foreign import validity :: HTMLFieldSetElement -> Effect ValidityState + +foreign import validationMessage :: HTMLFieldSetElement -> Effect String + +foreign import checkValidity :: HTMLFieldSetElement -> Effect Boolean + +foreign import setCustomValidity :: String -> HTMLFieldSetElement -> Effect Unit diff --git a/src/Web/HTML/HTMLFormElement.js b/src/Web/HTML/HTMLFormElement.js new file mode 100644 index 0000000..37acc84 --- /dev/null +++ b/src/Web/HTML/HTMLFormElement.js @@ -0,0 +1,175 @@ +"use strict"; + +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/Web/HTML/HTMLFormElement.purs b/src/Web/HTML/HTMLFormElement.purs new file mode 100644 index 0000000..b016d7a --- /dev/null +++ b/src/Web/HTML/HTMLFormElement.purs @@ -0,0 +1,53 @@ +module Web.HTML.HTMLFormElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLFormElement :: Type + +toHTMLElement :: HTMLFormElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLFormElement +read = unsafeReadTagged "HTMLFormElement" + +foreign import acceptCharset :: HTMLFormElement -> Effect String +foreign import setAcceptCharset :: String -> HTMLFormElement -> Effect Unit + +foreign import action :: HTMLFormElement -> Effect String +foreign import setAction :: String -> HTMLFormElement -> Effect Unit + +foreign import autocomplete :: HTMLFormElement -> Effect String +foreign import setAutocomplete :: String -> HTMLFormElement -> Effect Unit + +foreign import enctype :: HTMLFormElement -> Effect String +foreign import setEnctype :: String -> HTMLFormElement -> Effect Unit + +foreign import encoding :: HTMLFormElement -> Effect String +foreign import setEncoding :: String -> HTMLFormElement -> Effect Unit + +foreign import method :: HTMLFormElement -> Effect String +foreign import setMethod :: String -> HTMLFormElement -> Effect Unit + +foreign import name :: HTMLFormElement -> Effect String +foreign import setName :: String -> HTMLFormElement -> Effect Unit + +foreign import noValidate :: HTMLFormElement -> Effect Boolean +foreign import setNoValidate :: Boolean -> HTMLFormElement -> Effect Unit + +foreign import target :: HTMLFormElement -> Effect String +foreign import setTarget :: String -> HTMLFormElement -> Effect Unit + +-- readonly attribute HTMLFormControlsCollection elements; + +foreign import length :: HTMLFormElement -> Effect Int + +-- getter Element (unsigned long index); +-- getter (RadioNodeList or Element) (DOMString name); + +foreign import submit :: HTMLFormElement -> Effect Unit +foreign import reset :: HTMLFormElement -> Effect Unit +foreign import checkValidity :: HTMLFormElement -> Effect Boolean diff --git a/src/Web/HTML/HTMLHRElement.purs b/src/Web/HTML/HTMLHRElement.purs new file mode 100644 index 0000000..88db7f3 --- /dev/null +++ b/src/Web/HTML/HTMLHRElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLHRElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLHRElement :: Type + +toHTMLElement :: HTMLHRElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLHRElement +read = unsafeReadTagged "HTMLHRElement" diff --git a/src/Web/HTML/HTMLHeadElement.purs b/src/Web/HTML/HTMLHeadElement.purs new file mode 100644 index 0000000..a8f7326 --- /dev/null +++ b/src/Web/HTML/HTMLHeadElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLHeadElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLHeadElement :: Type + +htmlHeadElementToHTMLElement :: HTMLHeadElement -> HTMLElement +htmlHeadElementToHTMLElement = unsafeCoerce + +readHTMLHeadElement :: Foreign -> F HTMLHeadElement +readHTMLHeadElement = unsafeReadTagged "HTMLHeadElement" diff --git a/src/Web/HTML/HTMLHeadingElement.purs b/src/Web/HTML/HTMLHeadingElement.purs new file mode 100644 index 0000000..be50a72 --- /dev/null +++ b/src/Web/HTML/HTMLHeadingElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLHeadingElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLHeadingElement :: Type + +toHTMLElement :: HTMLHeadingElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLHeadingElement +read = unsafeReadTagged "HTMLHeadingElement" diff --git a/src/Web/HTML/HTMLIFrameElement.js b/src/Web/HTML/HTMLIFrameElement.js new file mode 100644 index 0000000..180688d --- /dev/null +++ b/src/Web/HTML/HTMLIFrameElement.js @@ -0,0 +1,93 @@ +"use strict"; + +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; + }; +}; + +exports._contentWindow = function (iframe) { + return function () { + return iframe.contentWindow; + }; +}; diff --git a/src/Web/HTML/HTMLIFrameElement.purs b/src/Web/HTML/HTMLIFrameElement.purs new file mode 100644 index 0000000..f6cf3b8 --- /dev/null +++ b/src/Web/HTML/HTMLIFrameElement.purs @@ -0,0 +1,62 @@ +module Web.HTML.HTMLIFrameElement + ( HTMLIFrameElement + , toHTMLElement + , read + , src + , setSrc + , srcdoc + , setSrcdoc + , name + , setName + , width + , setWidth + , height + , setHeight + , contentDocument + , contentWindow + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.Document (Document) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.Window (Window) + +foreign import data HTMLIFrameElement :: Type + +toHTMLElement :: HTMLIFrameElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLIFrameElement +read = unsafeReadTagged "HTMLIFrameElement" + +foreign import src :: HTMLIFrameElement -> Effect String +foreign import setSrc :: String -> HTMLIFrameElement -> Effect Unit + +foreign import srcdoc :: HTMLIFrameElement -> Effect String +foreign import setSrcdoc :: String -> HTMLIFrameElement -> Effect Unit + +foreign import name :: HTMLIFrameElement -> Effect String +foreign import setName :: String -> HTMLIFrameElement -> Effect Unit + +-- [PutForwards=value] readonly attribute DOMSettableTokenList sandbox; + +foreign import width :: HTMLIFrameElement -> Effect String +foreign import setWidth :: String -> HTMLIFrameElement -> Effect Unit + +foreign import height :: HTMLIFrameElement -> Effect String +foreign import setHeight :: String -> HTMLIFrameElement -> Effect Unit + +foreign import _contentDocument :: HTMLIFrameElement -> Effect (Nullable Document) +foreign import _contentWindow :: HTMLIFrameElement -> Effect (Nullable Window) + +contentDocument :: HTMLIFrameElement -> Effect (Maybe Document) +contentDocument = map toMaybe <<< _contentDocument + +contentWindow :: HTMLIFrameElement -> Effect (Maybe Window) +contentWindow = map toMaybe <<< _contentWindow diff --git a/src/Web/HTML/HTMLImageElement.js b/src/Web/HTML/HTMLImageElement.js new file mode 100644 index 0000000..7687e2c --- /dev/null +++ b/src/Web/HTML/HTMLImageElement.js @@ -0,0 +1,150 @@ +/* global Image */ +"use strict"; + +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/Web/HTML/HTMLImageElement.purs b/src/Web/HTML/HTMLImageElement.purs new file mode 100644 index 0000000..910977e --- /dev/null +++ b/src/Web/HTML/HTMLImageElement.purs @@ -0,0 +1,43 @@ +module Web.HTML.HTMLImageElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLImageElement :: Type + +toHTMLElement :: HTMLImageElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLImageElement +read = unsafeReadTagged "HTMLImageElement" + +foreign import create :: Unit -> Effect HTMLImageElement +foreign import create' :: Int -> Int -> Effect HTMLImageElement + +foreign import alt :: HTMLImageElement -> Effect String +foreign import setAlt :: String -> HTMLImageElement -> Effect Unit + +foreign import src :: HTMLImageElement -> Effect String +foreign import setSrc :: String -> HTMLImageElement -> Effect Unit + +foreign import crossOrigin :: HTMLImageElement -> Effect String +foreign import setCrossOrigin :: String -> HTMLImageElement -> Effect Unit + +foreign import useMap :: HTMLImageElement -> Effect String +foreign import setUseMap :: String -> HTMLImageElement -> Effect Unit + +foreign import isMap :: HTMLImageElement -> Effect Boolean +foreign import setIsMap :: Boolean -> HTMLImageElement -> Effect Unit + +foreign import width :: HTMLImageElement -> Effect Int +foreign import setWidth :: Int -> HTMLImageElement -> Effect Unit + +foreign import height :: HTMLImageElement -> Effect Int +foreign import setHeight :: Int -> HTMLImageElement -> Effect Unit + +foreign import naturalWidth :: HTMLImageElement -> Effect Int +foreign import naturalHeight :: HTMLImageElement -> Effect Int +foreign import complete :: HTMLImageElement -> Effect Boolean diff --git a/src/Web/HTML/HTMLInputElement.js b/src/Web/HTML/HTMLInputElement.js new file mode 100644 index 0000000..04ca088 --- /dev/null +++ b/src/Web/HTML/HTMLInputElement.js @@ -0,0 +1,747 @@ +"use strict"; + +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._form = function (input) { + return function () { + return input.form; + }; +}; + +// ---------------------------------------------------------------------------- + +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.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, start, end, selectionMode, input); + }; + }; + }; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.setSelectionRange = function (start) { + return function (end) { + return function (direction) { + return function (input) { + return function () { + input.setSelectionRange(start, end, direction, input); + }; + }; + }; + }; +}; diff --git a/src/Web/HTML/HTMLInputElement.purs b/src/Web/HTML/HTMLInputElement.purs new file mode 100644 index 0000000..7327f78 --- /dev/null +++ b/src/Web/HTML/HTMLInputElement.purs @@ -0,0 +1,272 @@ +module Web.HTML.HTMLInputElement + ( HTMLInputElement + , toHTMLElement + , read + , accept + , setAccept + , alt + , setAlt + , autocomplete + , setAutocomplete + , autofocus + , setAutofocus + , defaultChecked + , setDefaultChecked + , checked + , setChecked + , dirName + , setDirName + , disabled + , setDisabled + , form + , files + , formAction + , setFormAction + , formEnctype + , setFormEnctype + , formMethod + , setFormMethod + , formNoValidate + , setFormNoValidate + , formTarget + , setFormTarget + , height + , setHeight + , indeterminate + , setIndeterminate + , list + , max + , setMax + , maxLength + , setMaxLength + , min + , setMin + , minLength + , setMinLength + , multiple + , setMultiple + , name + , setName + , pattern + , setPattern + , placeholder + , setPlaceholder + , readOnly + , setReadOnly + , required + , setRequired + , size + , setSize + , src + , setSrc + , step + , setStep + , type_ + , setType + , defaultValue + , setDefaultValue + , value + , setValue + , valueAsDate + , setValueAsDate + , valueAsNumber + , setValueAsNumber + , width + , setWidth + , stepUp' + , stepDown' + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + , select + , selectionStart + , setSelectionStart + , selectionEnd + , setSelectionEnd + , selectionDirection + , setSelectionDirection + , setRangeText + , setRangeText' + , setSelectionRange + ) where + +import Prelude + +import Data.JSDate (JSDate) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.NodeList (NodeList) +import Web.File.FileList (FileList) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) +import Web.HTML.SelectionMode (SelectionMode) +import Web.HTML.ValidityState (ValidityState) + +foreign import data HTMLInputElement :: Type + +toHTMLElement :: HTMLInputElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLInputElement +read = unsafeReadTagged "HTMLInputElement" + +foreign import accept :: HTMLInputElement -> Effect Boolean +foreign import setAccept :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import alt :: HTMLInputElement -> Effect Boolean +foreign import setAlt :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import autocomplete :: HTMLInputElement -> Effect Boolean +foreign import setAutocomplete :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import autofocus :: HTMLInputElement -> Effect Boolean +foreign import setAutofocus :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import defaultChecked :: HTMLInputElement -> Effect Boolean +foreign import setDefaultChecked :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import checked :: HTMLInputElement -> Effect Boolean +foreign import setChecked :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import dirName :: HTMLInputElement -> Effect String +foreign import setDirName :: String -> HTMLInputElement -> Effect Unit + +foreign import disabled :: HTMLInputElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLInputElement -> Effect Unit + +form :: HTMLInputElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLInputElement -> Effect (Nullable HTMLFormElement) + +files :: HTMLInputElement -> Effect (Maybe FileList) +files = map toMaybe <<< _files + +foreign import _files :: HTMLInputElement -> Effect (Nullable FileList) + +foreign import formAction :: HTMLInputElement -> Effect String +foreign import setFormAction :: String -> HTMLInputElement -> Effect Unit + +foreign import formEnctype :: HTMLInputElement -> Effect String +foreign import setFormEnctype :: String -> HTMLInputElement -> Effect Unit + +foreign import formMethod :: HTMLInputElement -> Effect String +foreign import setFormMethod :: String -> HTMLInputElement -> Effect Unit + +foreign import formNoValidate :: HTMLInputElement -> Effect Boolean +foreign import setFormNoValidate :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import formTarget :: HTMLInputElement -> Effect String +foreign import setFormTarget :: String -> HTMLInputElement -> Effect Unit + +foreign import height :: HTMLInputElement -> Effect Int +foreign import setHeight :: Int -> HTMLInputElement -> Effect Unit + +foreign import indeterminate :: HTMLInputElement -> Effect Boolean +foreign import setIndeterminate :: Boolean -> HTMLInputElement -> Effect Unit + +list :: HTMLInputElement -> Effect (Maybe HTMLElement) +list = map toMaybe <<< _list + +foreign import _list :: HTMLInputElement -> Effect (Nullable HTMLElement) + +foreign import max :: HTMLInputElement -> Effect String +foreign import setMax :: String -> HTMLInputElement -> Effect Unit + +foreign import maxLength :: HTMLInputElement -> Effect Int +foreign import setMaxLength :: Int -> HTMLInputElement -> Effect Unit + +foreign import min :: HTMLInputElement -> Effect String +foreign import setMin :: String -> HTMLInputElement -> Effect Unit + +foreign import minLength :: HTMLInputElement -> Effect Int +foreign import setMinLength :: Int -> HTMLInputElement -> Effect Unit + +foreign import multiple :: HTMLInputElement -> Effect Boolean +foreign import setMultiple :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import name :: HTMLInputElement -> Effect String +foreign import setName :: String -> HTMLInputElement -> Effect Unit + +foreign import pattern :: HTMLInputElement -> Effect String +foreign import setPattern :: String -> HTMLInputElement -> Effect Unit + +foreign import placeholder :: HTMLInputElement -> Effect String +foreign import setPlaceholder :: String -> HTMLInputElement -> Effect Unit + +foreign import readOnly :: HTMLInputElement -> Effect Boolean +foreign import setReadOnly :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import required :: HTMLInputElement -> Effect Boolean +foreign import setRequired :: Boolean -> HTMLInputElement -> Effect Unit + +foreign import size :: HTMLInputElement -> Effect Int +foreign import setSize :: Int -> HTMLInputElement -> Effect Unit + +foreign import src :: HTMLInputElement -> Effect String +foreign import setSrc :: String -> HTMLInputElement -> Effect Unit + +foreign import step :: HTMLInputElement -> Effect String +foreign import setStep :: String -> HTMLInputElement -> Effect Unit + +foreign import type_ :: HTMLInputElement -> Effect String +foreign import setType :: String -> HTMLInputElement -> Effect Unit + +foreign import defaultValue :: HTMLInputElement -> Effect String +foreign import setDefaultValue :: String -> HTMLInputElement -> Effect Unit + +foreign import value :: HTMLInputElement -> Effect String +foreign import setValue :: String -> HTMLInputElement -> Effect Unit + +foreign import valueAsDate :: HTMLInputElement -> Effect JSDate +foreign import setValueAsDate :: JSDate -> HTMLInputElement -> Effect Unit + +foreign import valueAsNumber :: HTMLInputElement -> Effect Number +foreign import setValueAsNumber :: Number -> HTMLInputElement -> Effect Unit + +foreign import width :: HTMLInputElement -> Effect Int +foreign import setWidth :: Int -> HTMLInputElement -> Effect Unit + +stepUp :: HTMLInputElement -> Effect Unit +stepUp = stepUp' 1 + +foreign import stepUp' :: Int -> HTMLInputElement -> Effect Unit + +stepDown :: HTMLInputElement -> Effect Unit +stepDown = stepDown' 1 + +foreign import stepDown' :: Int -> HTMLInputElement -> Effect Unit + +foreign import willValidate :: HTMLInputElement -> Effect Boolean + +foreign import validity :: HTMLInputElement -> Effect ValidityState + +foreign import validationMessage :: HTMLInputElement -> Effect String + +foreign import checkValidity :: HTMLInputElement -> Effect Boolean + +foreign import setCustomValidity :: String -> HTMLInputElement -> Effect Unit + +foreign import labels :: HTMLInputElement -> Effect NodeList + +foreign import select :: HTMLInputElement -> Effect Unit + +foreign import selectionStart :: HTMLInputElement -> Effect Int +foreign import setSelectionStart :: Int -> HTMLInputElement -> Effect Unit + +foreign import selectionEnd :: HTMLInputElement -> Effect Int +foreign import setSelectionEnd :: Int -> HTMLInputElement -> Effect Unit + +foreign import selectionDirection :: HTMLInputElement -> Effect String +foreign import setSelectionDirection :: String -> HTMLInputElement -> Effect Unit + +foreign import setRangeText :: String -> HTMLInputElement -> Effect Unit +foreign import setRangeText' :: String -> Int -> Int -> SelectionMode -> HTMLInputElement -> Effect Unit + +foreign import setSelectionRange :: Int -> Int -> String -> HTMLInputElement -> Effect Unit diff --git a/src/Web/HTML/HTMLKeygenElement.js b/src/Web/HTML/HTMLKeygenElement.js new file mode 100644 index 0000000..7fb9170 --- /dev/null +++ b/src/Web/HTML/HTMLKeygenElement.js @@ -0,0 +1,145 @@ +"use strict"; + +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/Web/HTML/HTMLKeygenElement.purs b/src/Web/HTML/HTMLKeygenElement.purs new file mode 100644 index 0000000..d81a6c3 --- /dev/null +++ b/src/Web/HTML/HTMLKeygenElement.purs @@ -0,0 +1,77 @@ +module Web.HTML.HTMLKeygenElement + ( HTMLKeygenElement + , toHTMLElement + , read + , autofocus + , setAutofocus + , challenge + , setChallenge + , disabled + , setDisabled + , form + , keytype + , setKeytype + , name + , setName + , type_ + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.NodeList (NodeList) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) +import Web.HTML.ValidityState (ValidityState) + +foreign import data HTMLKeygenElement :: Type + +toHTMLElement :: HTMLKeygenElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLKeygenElement +read = unsafeReadTagged "HTMLKeygenElement" + +foreign import autofocus :: HTMLKeygenElement -> Effect Boolean +foreign import setAutofocus :: Boolean -> HTMLKeygenElement -> Effect Unit + +foreign import challenge :: HTMLKeygenElement -> Effect String +foreign import setChallenge :: String -> HTMLKeygenElement -> Effect Unit + +foreign import disabled :: HTMLKeygenElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLKeygenElement -> Effect Unit + +form :: HTMLKeygenElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLKeygenElement -> Effect (Nullable HTMLFormElement) + +foreign import keytype :: HTMLKeygenElement -> Effect String +foreign import setKeytype :: String -> HTMLKeygenElement -> Effect Unit + +foreign import name :: HTMLKeygenElement -> Effect String +foreign import setName :: String -> HTMLKeygenElement -> Effect Unit + +foreign import type_ :: HTMLKeygenElement -> Effect String + +foreign import willValidate :: HTMLKeygenElement -> Effect Boolean + +foreign import validity :: HTMLKeygenElement -> Effect ValidityState + +foreign import validationMessage :: HTMLKeygenElement -> Effect String + +foreign import checkValidity :: HTMLKeygenElement -> Effect Boolean + +foreign import setCustomValidity :: String -> HTMLKeygenElement -> Effect Unit + +foreign import labels :: HTMLKeygenElement -> Effect NodeList diff --git a/src/Web/HTML/HTMLLIElement.js b/src/Web/HTML/HTMLLIElement.js new file mode 100644 index 0000000..bb30ee5 --- /dev/null +++ b/src/Web/HTML/HTMLLIElement.js @@ -0,0 +1,15 @@ +"use strict"; + +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/Web/HTML/HTMLLIElement.purs b/src/Web/HTML/HTMLLIElement.purs new file mode 100644 index 0000000..c43a79a --- /dev/null +++ b/src/Web/HTML/HTMLLIElement.purs @@ -0,0 +1,18 @@ +module Web.HTML.HTMLLIElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLLIElement :: Type + +toHTMLElement :: HTMLLIElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLLIElement +read = unsafeReadTagged "HTMLLIElement" + +foreign import value :: HTMLLIElement -> Effect Int +foreign import setValue :: Int -> HTMLLIElement -> Effect Unit diff --git a/src/Web/HTML/HTMLLabelElement.js b/src/Web/HTML/HTMLLabelElement.js new file mode 100644 index 0000000..41101f3 --- /dev/null +++ b/src/Web/HTML/HTMLLabelElement.js @@ -0,0 +1,31 @@ +"use strict"; + +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/Web/HTML/HTMLLabelElement.purs b/src/Web/HTML/HTMLLabelElement.purs new file mode 100644 index 0000000..63cf057 --- /dev/null +++ b/src/Web/HTML/HTMLLabelElement.purs @@ -0,0 +1,40 @@ +module Web.HTML.HTMLLabelElement + ( HTMLLabelElement + , toHTMLElement + , read + , form + , htmlFor + , setHtmlFor + , control + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) + +foreign import data HTMLLabelElement :: Type + +toHTMLElement :: HTMLLabelElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLLabelElement +read = unsafeReadTagged "HTMLLabelElement" + +form :: HTMLLabelElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLLabelElement -> Effect (Nullable HTMLFormElement) + +foreign import htmlFor :: HTMLLabelElement -> Effect String +foreign import setHtmlFor :: String -> HTMLLabelElement -> Effect Unit + +control :: HTMLLabelElement -> Effect (Maybe HTMLElement) +control = map toMaybe <<< _control + +foreign import _control :: HTMLLabelElement -> Effect (Nullable HTMLElement) diff --git a/src/Web/HTML/HTMLLegendElement.js b/src/Web/HTML/HTMLLegendElement.js new file mode 100644 index 0000000..1a18899 --- /dev/null +++ b/src/Web/HTML/HTMLLegendElement.js @@ -0,0 +1,7 @@ +"use strict"; + +exports._form = function (le) { + return function () { + return le.form; + }; +}; diff --git a/src/Web/HTML/HTMLLegendElement.purs b/src/Web/HTML/HTMLLegendElement.purs new file mode 100644 index 0000000..8c73cd2 --- /dev/null +++ b/src/Web/HTML/HTMLLegendElement.purs @@ -0,0 +1,29 @@ +module Web.HTML.HTMLLegendElement + ( HTMLLegendElement + , toHTMLElement + , read + , form + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) + +foreign import data HTMLLegendElement :: Type + +toHTMLElement :: HTMLLegendElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLLegendElement +read = unsafeReadTagged "HTMLLegendElement" + +form :: HTMLLegendElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLLegendElement -> Effect (Nullable HTMLFormElement) diff --git a/src/Web/HTML/HTMLLinkElement.js b/src/Web/HTML/HTMLLinkElement.js new file mode 100644 index 0000000..3702221 --- /dev/null +++ b/src/Web/HTML/HTMLLinkElement.js @@ -0,0 +1,135 @@ +"use strict"; + +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/Web/HTML/HTMLLinkElement.purs b/src/Web/HTML/HTMLLinkElement.purs new file mode 100644 index 0000000..e4ec21f --- /dev/null +++ b/src/Web/HTML/HTMLLinkElement.purs @@ -0,0 +1,46 @@ +module Web.HTML.HTMLLinkElement where + +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.DOMTokenList (DOMTokenList) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLLinkElement :: Type + +toHTMLElement :: HTMLLinkElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLLinkElement +read = unsafeReadTagged "HTMLLinkElement" + +foreign import disabled :: HTMLLinkElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLLinkElement -> Effect Unit + +foreign import href :: HTMLLinkElement -> Effect String +foreign import setHref :: String -> HTMLLinkElement -> Effect Unit + +foreign import crossOrigin :: HTMLLinkElement -> Effect String +foreign import setCrossOrigin :: String -> HTMLLinkElement -> Effect Unit + +foreign import rel :: HTMLLinkElement -> Effect String +foreign import setRel :: String -> HTMLLinkElement -> Effect Unit + +foreign import rev :: HTMLLinkElement -> Effect String +foreign import setRev :: String -> HTMLLinkElement -> Effect Unit + +foreign import relList :: HTMLLinkElement -> Effect DOMTokenList + +foreign import media :: HTMLLinkElement -> Effect String +foreign import setMedia :: String -> HTMLLinkElement -> Effect Unit + +foreign import hreflang :: HTMLLinkElement -> Effect String +foreign import setHreflang :: String -> HTMLLinkElement -> Effect Unit + +foreign import type_ :: HTMLLinkElement -> Effect String +foreign import setType :: String -> HTMLLinkElement -> Effect Unit + +-- [PutForwards=value] readonly attribute DOMSettableTokenList sizes; + +-- HTMLLinkElement implements LinkStyle; diff --git a/src/Web/HTML/HTMLMapElement.js b/src/Web/HTML/HTMLMapElement.js new file mode 100644 index 0000000..b4b8dea --- /dev/null +++ b/src/Web/HTML/HTMLMapElement.js @@ -0,0 +1,31 @@ +"use strict"; + +exports.name = function (map) { + return function () { + return map.name; + }; +}; + +exports.setName = 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/Web/HTML/HTMLMapElement.purs b/src/Web/HTML/HTMLMapElement.purs new file mode 100644 index 0000000..fdcffbd --- /dev/null +++ b/src/Web/HTML/HTMLMapElement.purs @@ -0,0 +1,23 @@ +module Web.HTML.HTMLMapElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.HTMLCollection (HTMLCollection) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLMapElement :: Type + +toHTMLElement :: HTMLMapElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLMapElement +read = unsafeReadTagged "HTMLMapElement" + +foreign import name :: HTMLMapElement -> Effect String +foreign import setName :: String -> HTMLMapElement -> Effect Unit + +foreign import areas :: HTMLMapElement -> Effect HTMLCollection + +foreign import images :: HTMLMapElement -> Effect HTMLCollection diff --git a/src/Web/HTML/HTMLMediaElement.js b/src/Web/HTML/HTMLMediaElement.js new file mode 100644 index 0000000..33cf0e3 --- /dev/null +++ b/src/Web/HTML/HTMLMediaElement.js @@ -0,0 +1,305 @@ +"use strict"; + +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/Web/HTML/HTMLMediaElement.purs b/src/Web/HTML/HTMLMediaElement.purs new file mode 100644 index 0000000..e81221c --- /dev/null +++ b/src/Web/HTML/HTMLMediaElement.purs @@ -0,0 +1,105 @@ +module Web.HTML.HTMLMediaElement where + +import Prelude + +import Data.Enum (toEnum) +import Data.JSDate (JSDate) +import Data.Maybe (fromJust) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLMediaElement.CanPlayType (CanPlayType) +import Web.HTML.HTMLMediaElement.NetworkState (NetworkState) +import Web.HTML.HTMLMediaElement.ReadyState (ReadyState) + +foreign import data HTMLMediaElement :: Type + +toHTMLElement :: HTMLMediaElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLMediaElement +read = unsafeReadTagged "HTMLMediaElement" + +-- readonly attribute MediaError? error; + +foreign import src :: HTMLMediaElement -> Effect String +foreign import setSrc :: String -> HTMLMediaElement -> Effect Unit + +foreign import currentSrc :: HTMLMediaElement -> Effect String + +foreign import crossOrigin :: HTMLMediaElement -> Effect String +foreign import setCrossOrigin :: String -> HTMLMediaElement -> Effect Unit + +networkState :: Partial => HTMLMediaElement -> Effect NetworkState +networkState = map (fromJust <<< toEnum) <<< readyStateIndex + +foreign import networkStateIndex :: HTMLMediaElement -> Effect Int + +foreign import preload :: HTMLMediaElement -> Effect String +foreign import setPreload :: String -> HTMLMediaElement -> Effect Unit + +-- readonly attribute TimeRanges buffered; + +foreign import load :: HTMLMediaElement -> Effect Unit + +foreign import canPlayType :: String -> HTMLMediaElement -> Effect CanPlayType + +readyState :: Partial => HTMLMediaElement -> Effect ReadyState +readyState = map (fromJust <<< toEnum) <<< readyStateIndex + +foreign import readyStateIndex :: HTMLMediaElement -> Effect Int + +foreign import seeking :: HTMLMediaElement -> Effect Boolean + +foreign import currentTime :: HTMLMediaElement -> Effect Number +foreign import setCurrentTime :: Number -> HTMLMediaElement -> Effect Unit + +foreign import duration :: HTMLMediaElement -> Effect Number + +foreign import getStartDate :: HTMLMediaElement -> Effect JSDate + +foreign import paused :: HTMLMediaElement -> Effect Boolean + +foreign import defaultPlaybackRate :: HTMLMediaElement -> Effect Number +foreign import setDefaultPlaybackRate :: Number -> HTMLMediaElement -> Effect Unit + +foreign import playbackRate :: HTMLMediaElement -> Effect Number +foreign import setPlaybackRate :: Number -> HTMLMediaElement -> Effect Unit + +-- readonly attribute TimeRanges played; +-- readonly attribute TimeRanges seekable; + +foreign import ended :: HTMLMediaElement -> Effect Boolean + +foreign import autoplay :: HTMLMediaElement -> Effect Boolean +foreign import setAutoplay :: Boolean -> HTMLMediaElement -> Effect Unit + +foreign import loop :: HTMLMediaElement -> Effect Boolean +foreign import setLoop :: Boolean -> HTMLMediaElement -> Effect Unit + +foreign import play :: HTMLMediaElement -> Effect Unit + +foreign import pause :: HTMLMediaElement -> Effect Unit + +foreign import mediaGroup :: HTMLMediaElement -> Effect String +foreign import setMediaGroup :: String -> HTMLMediaElement -> Effect Unit + +-- attribute MediaController? controller; + +foreign import controls :: HTMLMediaElement -> Effect Boolean +foreign import setControls :: Boolean -> HTMLMediaElement -> Effect Unit + +foreign import volume :: HTMLMediaElement -> Effect Number +foreign import setVolume :: Number -> HTMLMediaElement -> Effect Unit + +foreign import muted :: HTMLMediaElement -> Effect Boolean +foreign import setMuted :: Boolean -> HTMLMediaElement -> Effect Unit + +foreign import defaultMuted :: HTMLMediaElement -> Effect Boolean +foreign import setDefaultMuted :: Boolean -> HTMLMediaElement -> Effect 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/Web/HTML/HTMLMediaElement/CanPlayType.purs b/src/Web/HTML/HTMLMediaElement/CanPlayType.purs new file mode 100644 index 0000000..c007619 --- /dev/null +++ b/src/Web/HTML/HTMLMediaElement/CanPlayType.purs @@ -0,0 +1,29 @@ +module Web.HTML.HTMLMediaElement.CanPlayType + ( CanPlayType + , runCanPlayType + , unspecified + , maybe + , probably + ) where + +import Prelude + +newtype CanPlayType = CanPlayType String + +runCanPlayType :: CanPlayType -> String +runCanPlayType (CanPlayType t) = t + +derive instance eqCanPlayType :: Eq CanPlayType +derive instance ordCanPlayType :: Ord CanPlayType + +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/Web/HTML/HTMLMediaElement/NetworkState.purs b/src/Web/HTML/HTMLMediaElement/NetworkState.purs new file mode 100644 index 0000000..f570c19 --- /dev/null +++ b/src/Web/HTML/HTMLMediaElement/NetworkState.purs @@ -0,0 +1,50 @@ +module Web.HTML.HTMLMediaElement.NetworkState (NetworkState(..)) where + +import Prelude +import Data.Maybe (Maybe(..)) +import Data.Enum (class Enum, class BoundedEnum, Cardinality(..), defaultSucc, defaultPred) + +data NetworkState + = NETWORK_EMPTY + | NETWORK_IDLE + | NETWORK_LOADING + | NETWORK_NO_SOURCE + +derive instance eqNetworkState :: Eq NetworkState +derive instance ordNetworkState :: Ord NetworkState + +instance boundedNetworkState :: Bounded NetworkState where + bottom = NETWORK_EMPTY + top = NETWORK_NO_SOURCE + +instance enumNetworkState :: Enum NetworkState where + succ = defaultSucc toEnumNetworkState fromEnumNetworkState + pred = defaultPred toEnumNetworkState fromEnumNetworkState + +instance boundedEnumNetworkState :: BoundedEnum NetworkState where + cardinality = Cardinality 4 + 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 = + case _ of + 0 -> Just NETWORK_EMPTY + 1 -> Just NETWORK_IDLE + 2 -> Just NETWORK_LOADING + 3 -> Just NETWORK_NO_SOURCE + _ -> Nothing + +fromEnumNetworkState :: NetworkState -> Int +fromEnumNetworkState = + case _ of + NETWORK_EMPTY -> 0 + NETWORK_IDLE -> 1 + NETWORK_LOADING -> 2 + NETWORK_NO_SOURCE -> 3 diff --git a/src/Web/HTML/HTMLMediaElement/ReadyState.purs b/src/Web/HTML/HTMLMediaElement/ReadyState.purs new file mode 100644 index 0000000..d88116d --- /dev/null +++ b/src/Web/HTML/HTMLMediaElement/ReadyState.purs @@ -0,0 +1,54 @@ +module Web.HTML.HTMLMediaElement.ReadyState (ReadyState(..)) where + +import Prelude +import Data.Maybe (Maybe(..)) +import Data.Enum (class Enum, class BoundedEnum, Cardinality(..), defaultSucc, defaultPred) + +data ReadyState + = HAVE_NOTHING + | HAVE_METADATA + | HAVE_CURRENT_DATA + | HAVE_FUTURE_DATA + | HAVE_ENOUGH_DATA + +derive instance eqReadyState :: Eq ReadyState +derive instance ordReadyState :: Ord ReadyState + +instance boundedReadyState :: Bounded ReadyState where + bottom = HAVE_NOTHING + top = HAVE_ENOUGH_DATA + +instance enumReadyState :: Enum ReadyState where + succ = defaultSucc toEnumReadyState fromEnumReadyState + pred = defaultPred toEnumReadyState fromEnumReadyState + +instance boundedEnumReadyState :: BoundedEnum ReadyState where + cardinality = Cardinality 5 + 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 = + case _ of + 0 -> Just HAVE_NOTHING + 1 -> Just HAVE_METADATA + 2 -> Just HAVE_CURRENT_DATA + 3 -> Just HAVE_FUTURE_DATA + 4 -> Just HAVE_ENOUGH_DATA + _ -> Nothing + +fromEnumReadyState :: ReadyState -> Int +fromEnumReadyState = + case _ of + HAVE_NOTHING -> 0 + HAVE_METADATA -> 1 + HAVE_CURRENT_DATA -> 2 + HAVE_FUTURE_DATA -> 3 + HAVE_ENOUGH_DATA -> 4 diff --git a/src/Web/HTML/HTMLMetaElement.js b/src/Web/HTML/HTMLMetaElement.js new file mode 100644 index 0000000..96308de --- /dev/null +++ b/src/Web/HTML/HTMLMetaElement.js @@ -0,0 +1,47 @@ +"use strict"; + +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/Web/HTML/HTMLMetaElement.purs b/src/Web/HTML/HTMLMetaElement.purs new file mode 100644 index 0000000..9f70180 --- /dev/null +++ b/src/Web/HTML/HTMLMetaElement.purs @@ -0,0 +1,24 @@ +module Web.HTML.HTMLMetaElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLMetaElement :: Type + +toHTMLElement :: HTMLMetaElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLMetaElement +read = unsafeReadTagged "HTMLMetaElement" + +foreign import name :: HTMLMetaElement -> Effect String +foreign import setName :: String -> HTMLMetaElement -> Effect Unit + +foreign import httpEquiv :: HTMLMetaElement -> Effect String +foreign import setHttpEquiv :: String -> HTMLMetaElement -> Effect Unit + +foreign import content :: HTMLMetaElement -> Effect String +foreign import setContent :: String -> HTMLMetaElement -> Effect Unit diff --git a/src/Web/HTML/HTMLMeterElement.js b/src/Web/HTML/HTMLMeterElement.js new file mode 100644 index 0000000..c529741 --- /dev/null +++ b/src/Web/HTML/HTMLMeterElement.js @@ -0,0 +1,103 @@ +"use strict"; + +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.setHigh = function (high) { + return function (meter) { + return function () { + meter.high = high; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.optimum = function (meter) { + return function () { + return meter.optimum; + }; +}; + +exports.setOptimum = function (optimum) { + return function (meter) { + return function () { + meter.optimum = optimum; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.labels = function (meter) { + return function () { + return meter.labels; + }; +}; diff --git a/src/Web/HTML/HTMLMeterElement.purs b/src/Web/HTML/HTMLMeterElement.purs new file mode 100644 index 0000000..bf181a5 --- /dev/null +++ b/src/Web/HTML/HTMLMeterElement.purs @@ -0,0 +1,36 @@ +module Web.HTML.HTMLMeterElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.NodeList (NodeList) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLMeterElement :: Type + +toHTMLElement :: HTMLMeterElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLMeterElement +read = unsafeReadTagged "HTMLMeterElement" + +foreign import value :: HTMLMeterElement -> Effect Number +foreign import setValue :: Number -> HTMLMeterElement -> Effect Unit + +foreign import min :: HTMLMeterElement -> Effect Number +foreign import setMin :: Number -> HTMLMeterElement -> Effect Unit + +foreign import max :: HTMLMeterElement -> Effect Number +foreign import setMax :: Number -> HTMLMeterElement -> Effect Unit + +foreign import low :: HTMLMeterElement -> Effect Number +foreign import setLow :: Number -> HTMLMeterElement -> Effect Unit + +foreign import high :: HTMLMeterElement -> Effect Number +foreign import setHigh :: Number -> HTMLMeterElement -> Effect Unit + +foreign import optimum :: HTMLMeterElement -> Effect Number +foreign import setOptimum :: Number -> HTMLMeterElement -> Effect Unit + +foreign import labels :: HTMLMeterElement -> Effect NodeList diff --git a/src/Web/HTML/HTMLModElement.js b/src/Web/HTML/HTMLModElement.js new file mode 100644 index 0000000..7b0b5c2 --- /dev/null +++ b/src/Web/HTML/HTMLModElement.js @@ -0,0 +1,31 @@ +"use strict"; + +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/Web/HTML/HTMLModElement.purs b/src/Web/HTML/HTMLModElement.purs new file mode 100644 index 0000000..a9d575a --- /dev/null +++ b/src/Web/HTML/HTMLModElement.purs @@ -0,0 +1,21 @@ +module Web.HTML.HTMLModElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLModElement :: Type + +toHTMLElement :: HTMLModElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLModElement +read = unsafeReadTagged "HTMLModElement" + +foreign import cite :: HTMLModElement -> Effect String +foreign import setCite :: String -> HTMLModElement -> Effect Unit + +foreign import dateTime :: HTMLModElement -> Effect String +foreign import setDateTime :: String -> HTMLModElement -> Effect Unit diff --git a/src/Web/HTML/HTMLOListElement.js b/src/Web/HTML/HTMLOListElement.js new file mode 100644 index 0000000..bed83a5 --- /dev/null +++ b/src/Web/HTML/HTMLOListElement.js @@ -0,0 +1,47 @@ +"use strict"; + +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/Web/HTML/HTMLOListElement.purs b/src/Web/HTML/HTMLOListElement.purs new file mode 100644 index 0000000..a6b7f60 --- /dev/null +++ b/src/Web/HTML/HTMLOListElement.purs @@ -0,0 +1,24 @@ +module Web.HTML.HTMLOListElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLOListElement :: Type + +toHTMLElement :: HTMLOListElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLOListElement +read = unsafeReadTagged "HTMLOListElement" + +foreign import reversed :: HTMLOListElement -> Effect Boolean +foreign import setReversed :: Boolean -> HTMLOListElement -> Effect Unit + +foreign import start :: HTMLOListElement -> Effect Int +foreign import setStart :: Int -> HTMLOListElement -> Effect Unit + +foreign import type_ :: HTMLOListElement -> Effect String +foreign import setType :: String -> HTMLOListElement -> Effect Unit diff --git a/src/Web/HTML/HTMLObjectElement.js b/src/Web/HTML/HTMLObjectElement.js new file mode 100644 index 0000000..2da0a12 --- /dev/null +++ b/src/Web/HTML/HTMLObjectElement.js @@ -0,0 +1,161 @@ +"use strict"; + +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/Web/HTML/HTMLObjectElement.purs b/src/Web/HTML/HTMLObjectElement.purs new file mode 100644 index 0000000..1b6486d --- /dev/null +++ b/src/Web/HTML/HTMLObjectElement.purs @@ -0,0 +1,89 @@ +module Web.HTML.HTMLObjectElement + ( HTMLObjectElement + , toHTMLElement + , read + , data_ + , setData + , type_ + , setType + , typeMustMatch + , name + , setName + , useMap + , setUseMap + , form + , width + , setWidth + , height + , setHeight + , contentDocument + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.Document (Document) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) +import Web.HTML.ValidityState (ValidityState) + +foreign import data HTMLObjectElement :: Type + +toHTMLElement :: HTMLObjectElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLObjectElement +read = unsafeReadTagged "HTMLObjectElement" + +foreign import data_ :: HTMLObjectElement -> Effect String +foreign import setData :: String -> HTMLObjectElement -> Effect Unit + +foreign import type_ :: HTMLObjectElement -> Effect String +foreign import setType :: String -> HTMLObjectElement -> Effect Unit + +foreign import typeMustMatch :: HTMLObjectElement -> Effect Boolean + +foreign import name :: HTMLObjectElement -> Effect String +foreign import setName :: String -> HTMLObjectElement -> Effect Unit + +foreign import useMap :: HTMLObjectElement -> Effect String +foreign import setUseMap :: String -> HTMLObjectElement -> Effect Unit + +form :: HTMLObjectElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLObjectElement -> Effect (Nullable HTMLFormElement) + +foreign import width :: HTMLObjectElement -> Effect String +foreign import setWidth :: String -> HTMLObjectElement -> Effect Unit + +foreign import height :: HTMLObjectElement -> Effect String +foreign import setHeight :: String -> HTMLObjectElement -> Effect Unit + +contentDocument :: HTMLObjectElement -> Effect (Maybe Document) +contentDocument = map toMaybe <<< _contentDocument + +foreign import _contentDocument :: HTMLObjectElement -> Effect (Nullable Document) + +-- readonly attribute WindowProxy? contentWindow; + +foreign import willValidate :: HTMLObjectElement -> Effect Boolean + +foreign import validity :: HTMLObjectElement -> Effect ValidityState + +foreign import validationMessage :: HTMLObjectElement -> Effect String + +foreign import checkValidity :: HTMLObjectElement -> Effect Boolean + +foreign import setCustomValidity :: String -> HTMLObjectElement -> Effect Unit + +-- legacycaller any (any... arguments); diff --git a/src/Web/HTML/HTMLOptGroupElement.js b/src/Web/HTML/HTMLOptGroupElement.js new file mode 100644 index 0000000..c0257c6 --- /dev/null +++ b/src/Web/HTML/HTMLOptGroupElement.js @@ -0,0 +1,31 @@ +"use strict"; + +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/Web/HTML/HTMLOptGroupElement.purs b/src/Web/HTML/HTMLOptGroupElement.purs new file mode 100644 index 0000000..e565a48 --- /dev/null +++ b/src/Web/HTML/HTMLOptGroupElement.purs @@ -0,0 +1,21 @@ +module Web.HTML.HTMLOptGroupElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLOptGroupElement :: Type + +toHTMLElement :: HTMLOptGroupElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLOptGroupElement +read = unsafeReadTagged "HTMLOptGroupElement" + +foreign import disabled :: HTMLOptGroupElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLOptGroupElement -> Effect Unit + +foreign import label :: HTMLOptGroupElement -> Effect String +foreign import setLabel :: String -> HTMLOptGroupElement -> Effect Unit diff --git a/src/Web/HTML/HTMLOptionElement.js b/src/Web/HTML/HTMLOptionElement.js new file mode 100644 index 0000000..9285741 --- /dev/null +++ b/src/Web/HTML/HTMLOptionElement.js @@ -0,0 +1,111 @@ +"use strict"; + +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/Web/HTML/HTMLOptionElement.purs b/src/Web/HTML/HTMLOptionElement.purs new file mode 100644 index 0000000..ef75ca7 --- /dev/null +++ b/src/Web/HTML/HTMLOptionElement.purs @@ -0,0 +1,64 @@ +module Web.HTML.HTMLOptionElement + ( HTMLOptionElement + , toHTMLElement + , read + , disabled + , setDisabled + , form + , label + , setLabel + , defaultSelected + , setDefaultSelected + , selected + , setSelected + , value + , setValue + , text + , setText + , index + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) + +foreign import data HTMLOptionElement :: Type + +toHTMLElement :: HTMLOptionElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLOptionElement +read = unsafeReadTagged "HTMLOptionElement" + +-- [NamedConstructor=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)] + +foreign import disabled :: HTMLOptionElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLOptionElement -> Effect Unit + +form :: HTMLOptionElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLOptionElement -> Effect (Nullable HTMLFormElement) + +foreign import label :: HTMLOptionElement -> Effect String +foreign import setLabel :: String -> HTMLOptionElement -> Effect Unit + +foreign import defaultSelected :: HTMLOptionElement -> Effect Boolean +foreign import setDefaultSelected :: Boolean -> HTMLOptionElement -> Effect Unit + +foreign import selected :: HTMLOptionElement -> Effect Boolean +foreign import setSelected :: Boolean -> HTMLOptionElement -> Effect Unit + +foreign import value :: HTMLOptionElement -> Effect String +foreign import setValue :: String -> HTMLOptionElement -> Effect Unit + +foreign import text :: HTMLOptionElement -> Effect String +foreign import setText :: String -> HTMLOptionElement -> Effect Unit + +foreign import index :: HTMLOptionElement -> Effect Int diff --git a/src/Web/HTML/HTMLOutputElement.js b/src/Web/HTML/HTMLOutputElement.js new file mode 100644 index 0000000..6b724b9 --- /dev/null +++ b/src/Web/HTML/HTMLOutputElement.js @@ -0,0 +1,113 @@ +"use strict"; + +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/Web/HTML/HTMLOutputElement.purs b/src/Web/HTML/HTMLOutputElement.purs new file mode 100644 index 0000000..57c06da --- /dev/null +++ b/src/Web/HTML/HTMLOutputElement.purs @@ -0,0 +1,69 @@ +module Web.HTML.HTMLOutputElement + ( HTMLOutputElement + , toHTMLElement + , read + , form + , name + , setName + , type_ + , defaultValue + , setDefaultValue + , value + , setValue + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.NodeList (NodeList) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) +import Web.HTML.ValidityState (ValidityState) + +foreign import data HTMLOutputElement :: Type + +toHTMLElement :: HTMLOutputElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLOutputElement +read = unsafeReadTagged "HTMLOutputElement" + +-- [PutForwards=value] readonly attribute DOMSettableTokenList htmlFor; + +form :: HTMLOutputElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLOutputElement -> Effect (Nullable HTMLFormElement) + +foreign import name :: HTMLOutputElement -> Effect String +foreign import setName :: String -> HTMLOutputElement -> Effect Unit + +foreign import type_ :: HTMLOutputElement -> Effect String + +foreign import defaultValue :: HTMLOutputElement -> Effect String +foreign import setDefaultValue :: String -> HTMLOutputElement -> Effect Unit + +foreign import value :: HTMLOutputElement -> Effect String +foreign import setValue :: String -> HTMLOutputElement -> Effect Unit + +foreign import willValidate :: HTMLOutputElement -> Effect Boolean + +foreign import validity :: HTMLOutputElement -> Effect ValidityState + +foreign import validationMessage :: HTMLOutputElement -> Effect String + +foreign import checkValidity :: HTMLOutputElement -> Effect Boolean + +foreign import setCustomValidity :: String -> HTMLOutputElement -> Effect Unit + +foreign import labels :: HTMLOutputElement -> Effect NodeList diff --git a/src/Web/HTML/HTMLParagraphElement.purs b/src/Web/HTML/HTMLParagraphElement.purs new file mode 100644 index 0000000..b774bf1 --- /dev/null +++ b/src/Web/HTML/HTMLParagraphElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLParagraphElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLParagraphElement :: Type + +toHTMLElement :: HTMLParagraphElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLParagraphElement +read = unsafeReadTagged "HTMLParagraphElement" diff --git a/src/Web/HTML/HTMLParamElement.js b/src/Web/HTML/HTMLParamElement.js new file mode 100644 index 0000000..f3a7864 --- /dev/null +++ b/src/Web/HTML/HTMLParamElement.js @@ -0,0 +1,31 @@ +"use strict"; + +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/Web/HTML/HTMLParamElement.purs b/src/Web/HTML/HTMLParamElement.purs new file mode 100644 index 0000000..a8d52d6 --- /dev/null +++ b/src/Web/HTML/HTMLParamElement.purs @@ -0,0 +1,21 @@ +module Web.HTML.HTMLParamElement where + +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLParamElement :: Type + +toHTMLElement :: HTMLParamElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLParamElement +read = unsafeReadTagged "HTMLParamElement" + +foreign import name :: HTMLParamElement -> Effect String +foreign import setName :: String -> HTMLParamElement -> Effect Unit + +foreign import value :: HTMLParamElement -> Effect String +foreign import setValue :: String -> HTMLParamElement -> Effect Unit diff --git a/src/Web/HTML/HTMLPreElement.purs b/src/Web/HTML/HTMLPreElement.purs new file mode 100644 index 0000000..6f663b6 --- /dev/null +++ b/src/Web/HTML/HTMLPreElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLPreElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLPreElement :: Type + +toHTMLElement :: HTMLPreElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLPreElement +read = unsafeReadTagged "HTMLPreElement" diff --git a/src/Web/HTML/HTMLProgressElement.js b/src/Web/HTML/HTMLProgressElement.js new file mode 100644 index 0000000..4d81b7a --- /dev/null +++ b/src/Web/HTML/HTMLProgressElement.js @@ -0,0 +1,47 @@ +"use strict"; + +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/Web/HTML/HTMLProgressElement.purs b/src/Web/HTML/HTMLProgressElement.purs new file mode 100644 index 0000000..dd8b038 --- /dev/null +++ b/src/Web/HTML/HTMLProgressElement.purs @@ -0,0 +1,26 @@ +module Web.HTML.HTMLProgressElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.NodeList (NodeList) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLProgressElement :: Type + +toHTMLElement :: HTMLProgressElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLProgressElement +read = unsafeReadTagged "HTMLProgressElement" + +foreign import value :: HTMLProgressElement -> Effect Number +foreign import setValue :: Number -> HTMLProgressElement -> Effect Unit + +foreign import max :: HTMLProgressElement -> Effect Number +foreign import setMax :: Number -> HTMLProgressElement -> Effect Unit + +foreign import position :: HTMLProgressElement -> Effect Number + +foreign import labels :: HTMLProgressElement -> Effect NodeList diff --git a/src/Web/HTML/HTMLQuoteElement.js b/src/Web/HTML/HTMLQuoteElement.js new file mode 100644 index 0000000..73812a1 --- /dev/null +++ b/src/Web/HTML/HTMLQuoteElement.js @@ -0,0 +1,15 @@ +"use strict"; + +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/Web/HTML/HTMLQuoteElement.purs b/src/Web/HTML/HTMLQuoteElement.purs new file mode 100644 index 0000000..52f0e2c --- /dev/null +++ b/src/Web/HTML/HTMLQuoteElement.purs @@ -0,0 +1,18 @@ +module Web.HTML.HTMLQuoteElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLQuoteElement :: Type + +toHTMLElement :: HTMLQuoteElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLQuoteElement +read = unsafeReadTagged "HTMLQuoteElement" + +foreign import cite :: HTMLQuoteElement -> Effect Boolean +foreign import setCite :: Boolean -> HTMLQuoteElement -> Effect Unit diff --git a/src/Web/HTML/HTMLScriptElement.js b/src/Web/HTML/HTMLScriptElement.js new file mode 100644 index 0000000..d202b2e --- /dev/null +++ b/src/Web/HTML/HTMLScriptElement.js @@ -0,0 +1,111 @@ +"use strict"; + +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/Web/HTML/HTMLScriptElement.purs b/src/Web/HTML/HTMLScriptElement.purs new file mode 100644 index 0000000..e7ce133 --- /dev/null +++ b/src/Web/HTML/HTMLScriptElement.purs @@ -0,0 +1,36 @@ +module Web.HTML.HTMLScriptElement where + +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLScriptElement :: Type + +toHTMLElement :: HTMLScriptElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLScriptElement +read = unsafeReadTagged "HTMLScriptElement" + +foreign import src :: HTMLScriptElement -> Effect String +foreign import setSrc :: String -> HTMLScriptElement -> Effect Unit + +foreign import type_ :: HTMLScriptElement -> Effect String +foreign import setType :: String -> HTMLScriptElement -> Effect Unit + +foreign import charset :: HTMLScriptElement -> Effect String +foreign import setCharset :: String -> HTMLScriptElement -> Effect Unit + +foreign import async :: HTMLScriptElement -> Effect Boolean +foreign import setAsync :: Boolean -> HTMLScriptElement -> Effect Unit + +foreign import defer :: HTMLScriptElement -> Effect Boolean +foreign import setDefer :: Boolean -> HTMLScriptElement -> Effect Unit + +foreign import crossOrigin :: HTMLScriptElement -> Effect String +foreign import setCrossOrigin :: String -> HTMLScriptElement -> Effect Unit + +foreign import text :: HTMLScriptElement -> Effect String +foreign import setText :: String -> HTMLScriptElement -> Effect Unit diff --git a/src/Web/HTML/HTMLSelectElement.js b/src/Web/HTML/HTMLSelectElement.js new file mode 100644 index 0000000..e14bb0b --- /dev/null +++ b/src/Web/HTML/HTMLSelectElement.js @@ -0,0 +1,217 @@ +"use strict"; + +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/Web/HTML/HTMLSelectElement.purs b/src/Web/HTML/HTMLSelectElement.purs new file mode 100644 index 0000000..c6955cd --- /dev/null +++ b/src/Web/HTML/HTMLSelectElement.purs @@ -0,0 +1,110 @@ +module Web.HTML.HTMLSelectElement + ( HTMLSelectElement + , toHTMLElement + , read + , autofocus + , setAutofocus + , disabled + , setDisabled + , form + , multiple + , setMultiple + , name + , setName + , required + , setRequired + , size + , setSize + , type_ + , length + , setLength + , selectedOptions + , selectedIndex + , setSelectedIndex + , value + , setValue + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.HTMLCollection (HTMLCollection) +import Web.DOM.NodeList (NodeList) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) +import Web.HTML.ValidityState (ValidityState) + +foreign import data HTMLSelectElement :: Type + +toHTMLElement :: HTMLSelectElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLSelectElement +read = unsafeReadTagged "HTMLSelectElement" + +foreign import autofocus :: HTMLSelectElement -> Effect Boolean +foreign import setAutofocus :: Boolean -> HTMLSelectElement -> Effect Unit + +foreign import disabled :: HTMLSelectElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLSelectElement -> Effect Unit + +form :: HTMLSelectElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLSelectElement -> Effect (Nullable HTMLFormElement) + +foreign import multiple :: HTMLSelectElement -> Effect Boolean +foreign import setMultiple :: Boolean -> HTMLSelectElement -> Effect Unit + +foreign import name :: HTMLSelectElement -> Effect String +foreign import setName :: String -> HTMLSelectElement -> Effect Unit + +foreign import required :: HTMLSelectElement -> Effect Boolean +foreign import setRequired :: Boolean -> HTMLSelectElement -> Effect Unit + +foreign import size :: HTMLSelectElement -> Effect Int +foreign import setSize :: Int -> HTMLSelectElement -> Effect Unit + +foreign import type_ :: HTMLSelectElement -> Effect String + +-- readonly attribute HTMLOptionsCollection options; + +foreign import length :: HTMLSelectElement -> Effect Int +foreign import setLength :: Int -> HTMLSelectElement -> Effect 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 :: HTMLSelectElement -> Effect HTMLCollection + +foreign import selectedIndex :: HTMLSelectElement -> Effect Int +foreign import setSelectedIndex :: Int -> HTMLSelectElement -> Effect Unit + +foreign import value :: HTMLSelectElement -> Effect String +foreign import setValue :: String -> HTMLSelectElement -> Effect Unit + +foreign import willValidate :: HTMLSelectElement -> Effect Boolean + +foreign import validity :: HTMLSelectElement -> Effect ValidityState + +foreign import validationMessage :: HTMLSelectElement -> Effect String + +foreign import checkValidity :: HTMLSelectElement -> Effect Boolean + +foreign import setCustomValidity :: String -> HTMLSelectElement -> Effect Unit + +foreign import labels :: HTMLSelectElement -> Effect NodeList diff --git a/src/Web/HTML/HTMLSourceElement.js b/src/Web/HTML/HTMLSourceElement.js new file mode 100644 index 0000000..6b8bc4e --- /dev/null +++ b/src/Web/HTML/HTMLSourceElement.js @@ -0,0 +1,47 @@ +"use strict"; + +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/Web/HTML/HTMLSourceElement.purs b/src/Web/HTML/HTMLSourceElement.purs new file mode 100644 index 0000000..b267e86 --- /dev/null +++ b/src/Web/HTML/HTMLSourceElement.purs @@ -0,0 +1,26 @@ +module Web.HTML.HTMLSourceElement where + +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLSourceElement :: Type + +toHTMLElement :: HTMLSourceElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLSourceElement +read = unsafeReadTagged "HTMLSourceElement" + +-- [NamedConstructor=Audio(optional DOMString src)] + +foreign import src :: HTMLSourceElement -> Effect String +foreign import setSrc :: String -> HTMLSourceElement -> Effect Unit + +foreign import type_ :: HTMLSourceElement -> Effect String +foreign import setType :: String -> HTMLSourceElement -> Effect Unit + +foreign import media :: HTMLSourceElement -> Effect String +foreign import setMedia :: String -> HTMLSourceElement -> Effect Unit diff --git a/src/Web/HTML/HTMLSpanElement.purs b/src/Web/HTML/HTMLSpanElement.purs new file mode 100644 index 0000000..1a3aa01 --- /dev/null +++ b/src/Web/HTML/HTMLSpanElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLSpanElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLSpanElement :: Type + +toHTMLElement :: HTMLSpanElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLSpanElement +read = unsafeReadTagged "HTMLSpanElement" diff --git a/src/Web/HTML/HTMLStyleElement.js b/src/Web/HTML/HTMLStyleElement.js new file mode 100644 index 0000000..ba4eae2 --- /dev/null +++ b/src/Web/HTML/HTMLStyleElement.js @@ -0,0 +1,31 @@ +"use strict"; + +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/Web/HTML/HTMLStyleElement.purs b/src/Web/HTML/HTMLStyleElement.purs new file mode 100644 index 0000000..1849e92 --- /dev/null +++ b/src/Web/HTML/HTMLStyleElement.purs @@ -0,0 +1,21 @@ +module Web.HTML.HTMLStyleElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLStyleElement :: Type + +toHTMLElement :: HTMLStyleElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLStyleElement +read = unsafeReadTagged "HTMLStyleElement" + +foreign import media :: HTMLStyleElement -> Effect String +foreign import setMedia :: String -> HTMLStyleElement -> Effect Unit + +foreign import type_ :: HTMLStyleElement -> Effect String +foreign import setType :: String -> HTMLStyleElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTableCaptionElement.purs b/src/Web/HTML/HTMLTableCaptionElement.purs new file mode 100644 index 0000000..55aca44 --- /dev/null +++ b/src/Web/HTML/HTMLTableCaptionElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLTableCaptionElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLTableCaptionElement :: Type + +toHTMLElement :: HTMLTableCaptionElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTableCaptionElement +read = unsafeReadTagged "HTMLTableCaptionElement" diff --git a/src/Web/HTML/HTMLTableCellElement.js b/src/Web/HTML/HTMLTableCellElement.js new file mode 100644 index 0000000..827bd80 --- /dev/null +++ b/src/Web/HTML/HTMLTableCellElement.js @@ -0,0 +1,39 @@ +"use strict"; + +exports.colSpan = function (cell) { + return function () { + return cell.colSpan; + }; +}; + +exports.setColSpan = 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/Web/HTML/HTMLTableCellElement.purs b/src/Web/HTML/HTMLTableCellElement.purs new file mode 100644 index 0000000..4ee8f69 --- /dev/null +++ b/src/Web/HTML/HTMLTableCellElement.purs @@ -0,0 +1,25 @@ +module Web.HTML.HTMLTableCellElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLTableCellElement :: Type + +toHTMLElement :: HTMLTableCellElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTableCellElement +read = unsafeReadTagged "HTMLTableCellElement" + +foreign import colSpan :: HTMLTableCellElement -> Effect Int +foreign import setColSpan :: Int -> HTMLTableCellElement -> Effect Unit + +foreign import rowSpan :: HTMLTableCellElement -> Effect Int +foreign import setRowSpan :: Int -> HTMLTableCellElement -> Effect Unit + +-- [PutForwards=value] readonly attribute DOMSettableTokenList headers; + +foreign import cellIndex :: HTMLTableCellElement -> Effect Int diff --git a/src/Web/HTML/HTMLTableColElement.js b/src/Web/HTML/HTMLTableColElement.js new file mode 100644 index 0000000..e29c5ec --- /dev/null +++ b/src/Web/HTML/HTMLTableColElement.js @@ -0,0 +1,15 @@ +"use strict"; + +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/Web/HTML/HTMLTableColElement.purs b/src/Web/HTML/HTMLTableColElement.purs new file mode 100644 index 0000000..78602dd --- /dev/null +++ b/src/Web/HTML/HTMLTableColElement.purs @@ -0,0 +1,18 @@ +module Web.HTML.HTMLTableColElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLTableColElement :: Type + +toHTMLElement :: HTMLTableColElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTableColElement +read = unsafeReadTagged "HTMLTableColElement" + +foreign import span :: HTMLTableColElement -> Effect Int +foreign import setSpan :: Int -> HTMLTableColElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTableDataCellElement.purs b/src/Web/HTML/HTMLTableDataCellElement.purs new file mode 100644 index 0000000..585deaf --- /dev/null +++ b/src/Web/HTML/HTMLTableDataCellElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLTableDataCellElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLTableCellElement (HTMLTableCellElement) + +foreign import data HTMLTableDataCellElement :: Type + +toHTMLTableCellElement :: HTMLTableDataCellElement -> HTMLTableCellElement +toHTMLTableCellElement = unsafeCoerce + +read :: Foreign -> F HTMLTableDataCellElement +read = unsafeReadTagged "HTMLTableDataCellElement" diff --git a/src/Web/HTML/HTMLTableElement.js b/src/Web/HTML/HTMLTableElement.js new file mode 100644 index 0000000..9fae7fa --- /dev/null +++ b/src/Web/HTML/HTMLTableElement.js @@ -0,0 +1,155 @@ +"use strict"; + +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 (index) { + return function (table) { + return function () { + return table.insertRow(index); + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.deleteRow = function (index) { + return function (table) { + 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/Web/HTML/HTMLTableElement.purs b/src/Web/HTML/HTMLTableElement.purs new file mode 100644 index 0000000..24c965a --- /dev/null +++ b/src/Web/HTML/HTMLTableElement.purs @@ -0,0 +1,96 @@ +module Web.HTML.HTMLTableElement + ( HTMLTableElement + , toHTMLElement + , read + , caption + , setCaption + , createCaption + , deleteCaption + , tHead + , setTHead + , createTHead + , deleteTHead + , tFoot + , setTFoot + , createTFoot + , deleteTFoot + , tBodies + , createTBody + , rows + , insertRow + , insertRow' + , deleteRow + , border + , setBorder + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe, toNullable) +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.HTMLCollection (HTMLCollection) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLTableCaptionElement (HTMLTableCaptionElement) +import Web.HTML.HTMLTableSectionElement (HTMLTableSectionElement) + +foreign import data HTMLTableElement :: Type + +toHTMLElement :: HTMLTableElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTableElement +read = unsafeReadTagged "HTMLTableElement" + +caption :: HTMLTableElement -> Effect (Maybe HTMLTableCaptionElement) +caption = map toMaybe <<< _caption + +setCaption :: Maybe HTMLTableCaptionElement -> HTMLTableElement -> Effect Unit +setCaption = _setCaption <<< toNullable + +foreign import _caption :: HTMLTableElement -> Effect (Nullable HTMLTableCaptionElement) +foreign import _setCaption :: Nullable HTMLTableCaptionElement -> HTMLTableElement -> Effect Unit + +foreign import createCaption :: HTMLTableElement -> Effect HTMLElement +foreign import deleteCaption :: HTMLTableElement -> Effect Unit + +tHead :: HTMLTableElement -> Effect (Maybe HTMLTableSectionElement) +tHead = map toMaybe <<< _tHead + +setTHead :: Maybe HTMLTableSectionElement -> HTMLTableElement -> Effect Unit +setTHead = _setTHead <<< toNullable + +foreign import _tHead :: HTMLTableElement -> Effect (Nullable HTMLTableSectionElement) +foreign import _setTHead :: Nullable HTMLTableSectionElement -> HTMLTableElement -> Effect Unit + +foreign import createTHead :: HTMLTableElement -> Effect HTMLElement +foreign import deleteTHead :: HTMLTableElement -> Effect Unit + +tFoot :: HTMLTableElement -> Effect (Maybe HTMLTableSectionElement) +tFoot = map toMaybe <<< _tFoot + +setTFoot :: Maybe HTMLTableSectionElement -> HTMLTableElement -> Effect Unit +setTFoot = _setTFoot <<< toNullable + +foreign import _tFoot :: HTMLTableElement -> Effect (Nullable HTMLTableSectionElement) +foreign import _setTFoot :: Nullable HTMLTableSectionElement -> HTMLTableElement -> Effect Unit + +foreign import createTFoot :: HTMLTableElement -> Effect HTMLElement +foreign import deleteTFoot :: HTMLTableElement -> Effect Unit + +foreign import tBodies :: HTMLTableElement -> Effect HTMLCollection +foreign import createTBody :: HTMLTableElement -> Effect HTMLElement + +foreign import rows :: HTMLTableElement -> Effect HTMLCollection + +insertRow :: HTMLTableElement -> Effect HTMLElement +insertRow = insertRow' (-1) + +foreign import insertRow' :: Int -> HTMLTableElement -> Effect HTMLElement + +foreign import deleteRow :: Int -> HTMLTableElement -> Effect Unit + +foreign import border :: HTMLTableElement -> Effect String +foreign import setBorder :: String -> HTMLTableElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTableHeaderCellElement.js b/src/Web/HTML/HTMLTableHeaderCellElement.js new file mode 100644 index 0000000..3c20a99 --- /dev/null +++ b/src/Web/HTML/HTMLTableHeaderCellElement.js @@ -0,0 +1,31 @@ +"use strict"; + +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/Web/HTML/HTMLTableHeaderCellElement.purs b/src/Web/HTML/HTMLTableHeaderCellElement.purs new file mode 100644 index 0000000..6d7a0b1 --- /dev/null +++ b/src/Web/HTML/HTMLTableHeaderCellElement.purs @@ -0,0 +1,21 @@ +module Web.HTML.HTMLTableHeaderCellElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLTableCellElement (HTMLTableCellElement) + +foreign import data HTMLTableHeaderCellElement :: Type + +toHTMLTableCellElement :: HTMLTableHeaderCellElement -> HTMLTableCellElement +toHTMLTableCellElement = unsafeCoerce + +read :: Foreign -> F HTMLTableHeaderCellElement +read = unsafeReadTagged "HTMLTableHeaderCellElement" + +foreign import scope :: HTMLTableHeaderCellElement -> Effect String +foreign import setScope :: String -> HTMLTableHeaderCellElement -> Effect Unit + +foreign import abbr :: HTMLTableHeaderCellElement -> Effect String +foreign import setAbbr :: String -> HTMLTableHeaderCellElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTableRowElement.js b/src/Web/HTML/HTMLTableRowElement.js new file mode 100644 index 0000000..82c5c17 --- /dev/null +++ b/src/Web/HTML/HTMLTableRowElement.js @@ -0,0 +1,51 @@ +"use strict"; + +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/Web/HTML/HTMLTableRowElement.purs b/src/Web/HTML/HTMLTableRowElement.purs new file mode 100644 index 0000000..ec4337a --- /dev/null +++ b/src/Web/HTML/HTMLTableRowElement.purs @@ -0,0 +1,29 @@ +module Web.HTML.HTMLTableRowElement where + +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Prelude (Unit, negate) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.HTMLCollection (HTMLCollection) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLTableRowElement :: Type + +toHTMLElement :: HTMLTableRowElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTableRowElement +read = unsafeReadTagged "HTMLTableRowElement" + +foreign import rowIndex :: HTMLTableRowElement -> Effect Int + +foreign import sectionRowIndex :: HTMLTableRowElement -> Effect Int + +foreign import cells :: HTMLTableRowElement -> Effect HTMLCollection + +insertCell :: HTMLTableRowElement -> Effect HTMLElement +insertCell = insertCell' (-1) + +foreign import insertCell' :: Int -> HTMLTableRowElement -> Effect HTMLElement + +foreign import deleteCell :: Int -> HTMLTableRowElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTableSectionElement.js b/src/Web/HTML/HTMLTableSectionElement.js new file mode 100644 index 0000000..527eb46 --- /dev/null +++ b/src/Web/HTML/HTMLTableSectionElement.js @@ -0,0 +1,27 @@ +"use strict"; + +exports.rows = function (section) { + return function () { + return section.rows; + }; +}; + +// ---------------------------------------------------------------------------- + +exports["insertRow'"] = function (index) { + return function (section) { + return function () { + return section.insertRow(index); + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.deleteRow = function (index) { + return function (section) { + return function () { + section.deleteRow(index); + }; + }; +}; diff --git a/src/Web/HTML/HTMLTableSectionElement.purs b/src/Web/HTML/HTMLTableSectionElement.purs new file mode 100644 index 0000000..5a5f249 --- /dev/null +++ b/src/Web/HTML/HTMLTableSectionElement.purs @@ -0,0 +1,26 @@ +module Web.HTML.HTMLTableSectionElement where + +import Prelude + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.HTMLCollection (HTMLCollection) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLTableSectionElement :: Type + +toHTMLElement :: HTMLTableSectionElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTableSectionElement +read = unsafeReadTagged "HTMLTableSectionElement" + +foreign import rows :: HTMLTableSectionElement -> Effect HTMLCollection + +insertRow :: HTMLTableSectionElement -> Effect HTMLElement +insertRow = insertRow' (-1) + +foreign import insertRow' :: Int -> HTMLTableSectionElement -> Effect HTMLElement + +foreign import deleteRow :: Int -> HTMLTableSectionElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTemplateElement.js b/src/Web/HTML/HTMLTemplateElement.js new file mode 100644 index 0000000..9e5508a --- /dev/null +++ b/src/Web/HTML/HTMLTemplateElement.js @@ -0,0 +1,7 @@ +"use strict"; + +exports.content = function (template) { + return function () { + return template.content; + }; +}; diff --git a/src/Web/HTML/HTMLTemplateElement.purs b/src/Web/HTML/HTMLTemplateElement.purs new file mode 100644 index 0000000..173b979 --- /dev/null +++ b/src/Web/HTML/HTMLTemplateElement.purs @@ -0,0 +1,17 @@ +module Web.HTML.HTMLTemplateElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.DocumentFragment (DocumentFragment) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLTemplateElement :: Type + +toHTMLElement :: HTMLTemplateElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTemplateElement +read = unsafeReadTagged "HTMLTemplateElement" + +foreign import content :: HTMLTemplateElement -> Effect DocumentFragment diff --git a/src/Web/HTML/HTMLTextAreaElement.js b/src/Web/HTML/HTMLTextAreaElement.js new file mode 100644 index 0000000..076226a --- /dev/null +++ b/src/Web/HTML/HTMLTextAreaElement.js @@ -0,0 +1,407 @@ +"use strict"; + +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, start, end, selectionMode); + }; + }; + }; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.setSelectionRange = function (start) { + return function (end) { + return function (direction) { + return function (textarea) { + return function () { + textarea.setSelectionRange(start, end, direction); + }; + }; + }; + }; +}; diff --git a/src/Web/HTML/HTMLTextAreaElement.purs b/src/Web/HTML/HTMLTextAreaElement.purs new file mode 100644 index 0000000..10078b1 --- /dev/null +++ b/src/Web/HTML/HTMLTextAreaElement.purs @@ -0,0 +1,157 @@ +module Web.HTML.HTMLTextAreaElement + ( HTMLTextAreaElement + , toHTMLElement + , read + , autocomplete + , setAutocomplete + , autofocus + , setAutofocus + , cols + , setCols + , dirName + , setDirName + , disabled + , setDisabled + , form + , maxLength + , setMaxLength + , minLength + , setMinLength + , name + , setName + , placeholder + , setPlaceholder + , readOnly + , setReadOnly + , required + , setRequired + , rows + , setRows + , wrap + , setWrap + , type_ + , defaultValue + , setDefaultValue + , value + , setValue + , textLength + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + , select + , selectionStart + , setSelectionStart + , selectionEnd + , setSelectionEnd + , selectionDirection + , setSelectionDirection + , setRangeText + , setRangeText' + , setSelectionRange + ) where + +import Prelude + +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.NodeList (NodeList) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLFormElement (HTMLFormElement) +import Web.HTML.SelectionMode (SelectionMode) +import Web.HTML.ValidityState (ValidityState) + +foreign import data HTMLTextAreaElement :: Type + +toHTMLElement :: HTMLTextAreaElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTextAreaElement +read = unsafeReadTagged "HTMLTextAreaElement" + +foreign import autocomplete :: HTMLTextAreaElement -> Effect String +foreign import setAutocomplete :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import autofocus :: HTMLTextAreaElement -> Effect Boolean +foreign import setAutofocus :: Boolean -> HTMLTextAreaElement -> Effect Unit + +foreign import cols :: HTMLTextAreaElement -> Effect Int +foreign import setCols :: Int -> HTMLTextAreaElement -> Effect Unit + +foreign import dirName :: HTMLTextAreaElement -> Effect String +foreign import setDirName :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import disabled :: HTMLTextAreaElement -> Effect Boolean +foreign import setDisabled :: Boolean -> HTMLTextAreaElement -> Effect Unit + +form :: HTMLTextAreaElement -> Effect (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: HTMLTextAreaElement -> Effect (Nullable HTMLFormElement) + +foreign import maxLength :: HTMLTextAreaElement -> Effect Int +foreign import setMaxLength :: Int -> HTMLTextAreaElement -> Effect Unit + +foreign import minLength :: HTMLTextAreaElement -> Effect Int +foreign import setMinLength :: Int -> HTMLTextAreaElement -> Effect Unit + +foreign import name :: HTMLTextAreaElement -> Effect String +foreign import setName :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import placeholder :: HTMLTextAreaElement -> Effect String +foreign import setPlaceholder :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import readOnly :: HTMLTextAreaElement -> Effect Boolean +foreign import setReadOnly :: Boolean -> HTMLTextAreaElement -> Effect Unit + +foreign import required :: HTMLTextAreaElement -> Effect Boolean +foreign import setRequired :: Boolean -> HTMLTextAreaElement -> Effect Unit + +foreign import rows :: HTMLTextAreaElement -> Effect Int +foreign import setRows :: Int -> HTMLTextAreaElement -> Effect Unit + +foreign import wrap :: HTMLTextAreaElement -> Effect String +foreign import setWrap :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import type_ :: HTMLTextAreaElement -> Effect String + +foreign import defaultValue :: HTMLTextAreaElement -> Effect String +foreign import setDefaultValue :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import value :: HTMLTextAreaElement -> Effect String +foreign import setValue :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import textLength :: HTMLTextAreaElement -> Effect Int + +foreign import willValidate :: HTMLTextAreaElement -> Effect Boolean + +foreign import validity :: HTMLTextAreaElement -> Effect ValidityState + +foreign import validationMessage :: HTMLTextAreaElement -> Effect String + +foreign import checkValidity :: HTMLTextAreaElement -> Effect Boolean + +foreign import setCustomValidity :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import labels :: HTMLTextAreaElement -> Effect NodeList + +foreign import select :: HTMLTextAreaElement -> Effect Unit + +foreign import selectionStart :: HTMLTextAreaElement -> Effect Int +foreign import setSelectionStart :: Int -> HTMLTextAreaElement -> Effect Unit + +foreign import selectionEnd :: HTMLTextAreaElement -> Effect Int +foreign import setSelectionEnd :: Int -> HTMLTextAreaElement -> Effect Unit + +foreign import selectionDirection :: HTMLTextAreaElement -> Effect String +foreign import setSelectionDirection :: String -> HTMLTextAreaElement -> Effect Unit + +foreign import setRangeText :: String -> HTMLTextAreaElement -> Effect Unit +foreign import setRangeText' :: String -> Int -> Int -> SelectionMode -> HTMLTextAreaElement -> Effect Unit + +foreign import setSelectionRange :: Int -> Int -> String -> HTMLTextAreaElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTimeElement.js b/src/Web/HTML/HTMLTimeElement.js new file mode 100644 index 0000000..4117181 --- /dev/null +++ b/src/Web/HTML/HTMLTimeElement.js @@ -0,0 +1,15 @@ +"use strict"; + +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/Web/HTML/HTMLTimeElement.purs b/src/Web/HTML/HTMLTimeElement.purs new file mode 100644 index 0000000..867fa70 --- /dev/null +++ b/src/Web/HTML/HTMLTimeElement.purs @@ -0,0 +1,18 @@ +module Web.HTML.HTMLTimeElement where + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Prelude (Unit) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLTimeElement :: Type + +toHTMLElement :: HTMLTimeElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTimeElement +read = unsafeReadTagged "HTMLTimeElement" + +foreign import dateTime :: HTMLTimeElement -> Effect String +foreign import setDateTime :: String -> HTMLTimeElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTitleElement.js b/src/Web/HTML/HTMLTitleElement.js new file mode 100644 index 0000000..d3440f9 --- /dev/null +++ b/src/Web/HTML/HTMLTitleElement.js @@ -0,0 +1,15 @@ +"use strict"; + +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/Web/HTML/HTMLTitleElement.purs b/src/Web/HTML/HTMLTitleElement.purs new file mode 100644 index 0000000..480a622 --- /dev/null +++ b/src/Web/HTML/HTMLTitleElement.purs @@ -0,0 +1,19 @@ +module Web.HTML.HTMLTitleElement where + +import Prelude + +import Effect (Effect) +import Foreign (Foreign, F, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLTitleElement :: Type + +toHTMLElement :: HTMLTitleElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTitleElement +read = unsafeReadTagged "HTMLTitleElement" + +foreign import text :: HTMLTitleElement -> Effect String +foreign import setText :: String -> HTMLTitleElement -> Effect Unit diff --git a/src/Web/HTML/HTMLTrackElement.js b/src/Web/HTML/HTMLTrackElement.js new file mode 100644 index 0000000..ef6fe66 --- /dev/null +++ b/src/Web/HTML/HTMLTrackElement.js @@ -0,0 +1,87 @@ +"use strict"; + +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/Web/HTML/HTMLTrackElement.purs b/src/Web/HTML/HTMLTrackElement.purs new file mode 100644 index 0000000..0dd0bd8 --- /dev/null +++ b/src/Web/HTML/HTMLTrackElement.purs @@ -0,0 +1,41 @@ +module Web.HTML.HTMLTrackElement where + +import Prelude + +import Data.Enum (toEnum) +import Data.Maybe (fromJust) +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLTrackElement.ReadyState (ReadyState) + +foreign import data HTMLTrackElement :: Type + +toHTMLElement :: HTMLTrackElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLTrackElement +read = unsafeReadTagged "HTMLTrackElement" + +foreign import kind :: HTMLTrackElement -> Effect String +foreign import setKind :: String -> HTMLTrackElement -> Effect Unit + +foreign import src :: HTMLTrackElement -> Effect String +foreign import setSrc :: String -> HTMLTrackElement -> Effect Unit + +foreign import srclang :: HTMLTrackElement -> Effect String +foreign import setSrclang :: String -> HTMLTrackElement -> Effect Unit + +foreign import label :: HTMLTrackElement -> Effect String +foreign import setLabel :: String -> HTMLTrackElement -> Effect Unit + +foreign import default :: HTMLTrackElement -> Effect Boolean +foreign import setDefault :: Boolean -> HTMLTrackElement -> Effect Unit + +readyState :: Partial => HTMLTrackElement -> Effect ReadyState +readyState = map (fromJust <<< toEnum) <<< readyStateIndex + +foreign import readyStateIndex :: HTMLTrackElement -> Effect Int + +-- readonly attribute TextTrack track; diff --git a/src/Web/HTML/HTMLTrackElement/ReadyState.purs b/src/Web/HTML/HTMLTrackElement/ReadyState.purs new file mode 100644 index 0000000..87a8627 --- /dev/null +++ b/src/Web/HTML/HTMLTrackElement/ReadyState.purs @@ -0,0 +1,50 @@ +module Web.HTML.HTMLTrackElement.ReadyState where + +import Prelude +import Data.Maybe (Maybe(..)) +import Data.Enum (class Enum, class BoundedEnum, Cardinality(..), defaultSucc, defaultPred) + +data ReadyState + = NONE + | LOADING + | LOADED + | ERROR + +derive instance eqReadyState :: Eq ReadyState +derive instance ordReadyState :: Ord ReadyState + +instance boundedReadyState :: Bounded ReadyState where + bottom = NONE + top = ERROR + +instance enumReadyState :: Enum ReadyState where + succ = defaultSucc toEnumReadyState fromEnumReadyState + pred = defaultPred toEnumReadyState fromEnumReadyState + +instance boundedEnumReadyState :: BoundedEnum ReadyState where + cardinality = Cardinality 4 + 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 = + case _ of + 0 -> Just NONE + 1 -> Just LOADING + 2 -> Just LOADED + 3 -> Just ERROR + _ -> Nothing + +fromEnumReadyState :: ReadyState -> Int +fromEnumReadyState = + case _ of + NONE -> 0 + LOADING -> 1 + LOADED -> 2 + ERROR -> 3 diff --git a/src/Web/HTML/HTMLUListElement.purs b/src/Web/HTML/HTMLUListElement.purs new file mode 100644 index 0000000..a440099 --- /dev/null +++ b/src/Web/HTML/HTMLUListElement.purs @@ -0,0 +1,13 @@ +module Web.HTML.HTMLUListElement where + +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLElement (HTMLElement) + +foreign import data HTMLUListElement :: Type + +toHTMLElement :: HTMLUListElement -> HTMLElement +toHTMLElement = unsafeCoerce + +read :: Foreign -> F HTMLUListElement +read = unsafeReadTagged "HTMLUListElement" diff --git a/src/Web/HTML/HTMLVideoElement.js b/src/Web/HTML/HTMLVideoElement.js new file mode 100644 index 0000000..6249364 --- /dev/null +++ b/src/Web/HTML/HTMLVideoElement.js @@ -0,0 +1,65 @@ +"use strict"; + +// ---------------------------------------------------------------------------- + +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/Web/HTML/HTMLVideoElement.purs b/src/Web/HTML/HTMLVideoElement.purs new file mode 100644 index 0000000..3faa28b --- /dev/null +++ b/src/Web/HTML/HTMLVideoElement.purs @@ -0,0 +1,28 @@ +module Web.HTML.HTMLVideoElement where + +import Prelude + +import Effect (Effect) +import Foreign (F, Foreign, unsafeReadTagged) +import Unsafe.Coerce (unsafeCoerce) +import Web.HTML.HTMLMediaElement (HTMLMediaElement) + +foreign import data HTMLVideoElement :: Type + +toHTMLMediaElement :: HTMLVideoElement -> HTMLMediaElement +toHTMLMediaElement = unsafeCoerce + +read :: Foreign -> F HTMLVideoElement +read = unsafeReadTagged "HTMLVideoElement" + +foreign import width :: HTMLVideoElement -> Effect Int +foreign import setWidth :: Int -> HTMLVideoElement -> Effect Unit + +foreign import height :: HTMLVideoElement -> Effect Int +foreign import setHeight :: Int -> HTMLVideoElement -> Effect Unit + +foreign import videoWidth :: HTMLVideoElement -> Effect Int +foreign import videoHeight :: HTMLVideoElement -> Effect Int + +foreign import poster :: HTMLVideoElement -> Effect String +foreign import setPoster :: String -> HTMLVideoElement -> Effect Unit diff --git a/src/Web/HTML/History.js b/src/Web/HTML/History.js new file mode 100644 index 0000000..e161c66 --- /dev/null +++ b/src/Web/HTML/History.js @@ -0,0 +1,46 @@ +"use strict"; + +exports.back = function(history) { + return function() { + return history.back(); + }; +}; +exports.forward = function(history) { + return function() { + return history.forward(); + }; +}; +exports.go = function(delta) { + return function(history) { + return function() { + return history.go(delta); + }; + }; +}; +exports.pushState = function(a) { + return function(docTitle) { + return function(url) { + return function(history) { + return function() { + return history.pushState(a, docTitle, url); + }; + }; + }; + }; +}; +exports.replaceState = function(a) { + return function(docTitle) { + return function(url) { + return function(history) { + return function() { + return history.replaceState(a, docTitle, url); + }; + }; + }; + }; +}; +exports.state = function(history) { + return function() { + return history.state; + }; +}; diff --git a/src/Web/HTML/History.purs b/src/Web/HTML/History.purs new file mode 100644 index 0000000..a7c1ea4 --- /dev/null +++ b/src/Web/HTML/History.purs @@ -0,0 +1,31 @@ +module Web.HTML.History where + +import Effect (Effect) +import Foreign (Foreign) +import Data.Newtype (class Newtype) +import Prelude (class Eq, class Ord, Unit) + +foreign import data History :: Type + +-- DocumentTitle will set value of `document.title` +newtype DocumentTitle = DocumentTitle String +derive instance eqDocumentTitle :: Eq DocumentTitle +derive instance ordDocumentTitle :: Ord DocumentTitle +derive instance newtypeDocumentTitle :: Newtype DocumentTitle _ + +newtype Delta = Delta Int +derive instance eqDelta :: Eq Delta +derive instance ordDelta :: Ord Delta +derive instance newtypeDelta :: Newtype Delta _ + +newtype URL = URL String +derive instance eqURL :: Eq URL +derive instance ordURL :: Ord URL +derive instance newtypeURL :: Newtype URL _ + +foreign import back :: History -> Effect Unit +foreign import forward :: History -> Effect Unit +foreign import go :: Delta -> History -> Effect Unit +foreign import pushState :: Foreign -> DocumentTitle -> URL -> History -> Effect Unit +foreign import replaceState :: Foreign -> DocumentTitle -> URL -> History -> Effect Unit +foreign import state :: History -> Effect Foreign diff --git a/src/Web/HTML/Location.js b/src/Web/HTML/Location.js new file mode 100644 index 0000000..ecb47e9 --- /dev/null +++ b/src/Web/HTML/Location.js @@ -0,0 +1,171 @@ +"use strict"; + +exports.hash = function (location) { + return function () { + return location.hash; + }; +}; + +exports.setHash = function (hash) { + return function (location) { + return function () { + location.hash = hash; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.host = function (location) { + return function () { + return location.host; + }; +}; + +exports.setHost = function (host) { + return function (location) { + return function () { + location.host = host; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.hostname = function (location) { + return function () { + return location.hostname; + }; +}; + +exports.setHostname = function (hostname) { + return function (location) { + return function () { + location.hostname = hostname; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.href = function (location) { + return function () { + return location.href; + }; +}; + +exports.setHref = function (href) { + return function (location) { + return function () { + location.href = href; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.origin = function (location) { + return function () { + return location.origin; + }; +}; + +exports.setOrigin = function (origin) { + return function (location) { + return function () { + location.origin = origin; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.pathname = function (location) { + return function () { + return location.pathname; + }; +}; + +exports.setPathname = function (pathname) { + return function (location) { + return function () { + location.pathname = pathname; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.port = function (location) { + return function () { + return location.port; + }; +}; + +exports.setPort = function (port) { + return function (location) { + return function () { + location.port = port; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.protocol = function (location) { + return function () { + return location.protocol; + }; +}; + +exports.setProtocol = function (protocol) { + return function (location) { + return function () { + location.protocol = protocol; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.search = function (location) { + return function () { + return location.search; + }; +}; + +exports.setSearch = function (search) { + return function (location) { + return function () { + location.search = search; + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.assign = function (url) { + return function (location) { + return function () { + location.assign(url); + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.replace = function (url) { + return function (location) { + return function () { + location.replace(url); + }; + }; +}; + +// ---------------------------------------------------------------------------- + +exports.reload = function (location) { + return function () { + location.reload(); + }; +}; diff --git a/src/Web/HTML/Location.purs b/src/Web/HTML/Location.purs new file mode 100644 index 0000000..fa6fd33 --- /dev/null +++ b/src/Web/HTML/Location.purs @@ -0,0 +1,61 @@ +module Web.HTML.Location + ( Location + , hash + , setHash + , host + , setHost + , hostname + , setHostname + , href + , setHref + , origin + , setOrigin + , pathname + , setPathname + , port + , setPort + , protocol + , setProtocol + , search + , setSearch + + , assign + , replace + , reload + ) where + +import Prelude +import Effect (Effect) + +foreign import data Location :: Type + +foreign import hash :: Location -> Effect String +foreign import setHash :: String -> Location -> Effect Unit + +foreign import host :: Location -> Effect String +foreign import setHost :: String -> Location -> Effect Unit + +foreign import hostname :: Location -> Effect String +foreign import setHostname :: String -> Location -> Effect Unit + +foreign import href :: Location -> Effect String +foreign import setHref :: String -> Location -> Effect Unit + +foreign import origin :: Location -> Effect String +foreign import setOrigin :: String -> Location -> Effect Unit + +foreign import pathname :: Location -> Effect String +foreign import setPathname :: String -> Location -> Effect Unit + +foreign import port :: Location -> Effect String +foreign import setPort :: String -> Location -> Effect Unit + +foreign import protocol :: Location -> Effect String +foreign import setProtocol :: String -> Location -> Effect Unit + +foreign import search :: Location -> Effect String +foreign import setSearch :: String -> Location -> Effect Unit + +foreign import assign :: String -> Location -> Effect Unit +foreign import replace :: String -> Location -> Effect Unit +foreign import reload :: Location -> Effect Unit diff --git a/src/Web/HTML/Navigator.js b/src/Web/HTML/Navigator.js new file mode 100644 index 0000000..58f56b3 --- /dev/null +++ b/src/Web/HTML/Navigator.js @@ -0,0 +1,7 @@ +"use strict"; + +exports.platform = function (navigator) { + return function () { + return navigator.platform; + }; +}; diff --git a/src/Web/HTML/Navigator.purs b/src/Web/HTML/Navigator.purs new file mode 100644 index 0000000..984557a --- /dev/null +++ b/src/Web/HTML/Navigator.purs @@ -0,0 +1,7 @@ +module Web.HTML.Navigator where + +import Effect (Effect) + +foreign import data Navigator :: Type + +foreign import platform :: Navigator -> Effect String diff --git a/src/Web/HTML/SelectionMode.purs b/src/Web/HTML/SelectionMode.purs new file mode 100644 index 0000000..9c15c3b --- /dev/null +++ b/src/Web/HTML/SelectionMode.purs @@ -0,0 +1,36 @@ +module Web.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/Web/HTML/ValidityState.js b/src/Web/HTML/ValidityState.js new file mode 100644 index 0000000..366a780 --- /dev/null +++ b/src/Web/HTML/ValidityState.js @@ -0,0 +1,5 @@ +"use strict"; + +exports.readProp = function (prop, vs) { + return vs[prop]; +}; diff --git a/src/Web/HTML/ValidityState.purs b/src/Web/HTML/ValidityState.purs new file mode 100644 index 0000000..8e3c09e --- /dev/null +++ b/src/Web/HTML/ValidityState.purs @@ -0,0 +1,54 @@ +module Web.HTML.ValidityState + ( ValidityState + , valueMissing + , typeMismatch + , patternMismatch + , tooLong + , tooShort + , rangeUnderflow + , rangeOverflow + , stepMismatch + , badInput + , customError + , valid + ) where + +import Effect (Effect) +import Effect.Uncurried (EffectFn2, runEffectFn2) + +foreign import data ValidityState :: Type + +valueMissing :: ValidityState -> Effect Boolean +valueMissing = runEffectFn2 readProp "valueMissing" + +typeMismatch :: ValidityState -> Effect Boolean +typeMismatch = runEffectFn2 readProp "typeMismatch" + +patternMismatch :: ValidityState -> Effect Boolean +patternMismatch = runEffectFn2 readProp "patternMismatch" + +tooLong :: ValidityState -> Effect Boolean +tooLong = runEffectFn2 readProp "tooLong" + +tooShort :: ValidityState -> Effect Boolean +tooShort = runEffectFn2 readProp "tooShort" + +rangeUnderflow :: ValidityState -> Effect Boolean +rangeUnderflow = runEffectFn2 readProp "rangeUnderflow" + +rangeOverflow :: ValidityState -> Effect Boolean +rangeOverflow = runEffectFn2 readProp "rangeOverflow" + +stepMismatch :: ValidityState -> Effect Boolean +stepMismatch = runEffectFn2 readProp "stepMismatch" + +badInput :: ValidityState -> Effect Boolean +badInput = runEffectFn2 readProp "badInput" + +customError :: ValidityState -> Effect Boolean +customError = runEffectFn2 readProp "customError" + +valid :: ValidityState -> Effect Boolean +valid = runEffectFn2 readProp "valid" + +foreign import readProp :: EffectFn2 String ValidityState Boolean diff --git a/src/Web/HTML/Window.js b/src/Web/HTML/Window.js new file mode 100644 index 0000000..97eb1af --- /dev/null +++ b/src/Web/HTML/Window.js @@ -0,0 +1,231 @@ +"use strict"; + +exports.document = function (window) { + return function () { + return window.document; + }; +}; + +exports.navigator = function (window) { + return function () { + return window.navigator; + }; +}; + +exports.location = function (window) { + return function () { + return window.location; + }; +}; + +exports.history = function(window) { + return function() { + return window.history; + }; +}; + +exports.innerWidth = function (window) { + return function () { + return window.innerWidth; + }; +}; + +exports.innerHeight = function (window) { + return function () { + return window.innerHeight; + }; +}; + +exports.alert = function (str) { + return function (window) { + return function () { + window.alert(str); + return {}; + }; + }; +}; + +exports.confirm = function (str) { + return function (window) { + return function () { + return window.confirm(str); + }; + }; +}; + +exports.moveBy = function (xDelta) { + return function (yDelta) { + return function (window) { + return function () { + window.moveBy(xDelta, yDelta); + return {}; + }; + }; + }; +}; + +exports.moveTo = function (width) { + return function (height) { + return function (window) { + return function () { + window.moveTo(width, height); + return {}; + }; + }; + }; +}; + +exports._open = function (url) { + return function (name) { + return function (features) { + return function (window) { + return function () { + return window.open(url, name, features); + }; + }; + }; + }; +}; + +exports.outerHeight = function (window) { + return function () { + return window.outerHeight; + }; +}; + +exports.outerWidth = function (window) { + return function () { + return window.outerWidth; + }; +}; + +exports.print = function (window) { + return function () { + window.print(); + return {}; + }; +}; + +exports._prompt = function (str) { + return function (defaultText) { + return function (window) { + return function () { + return window.prompt(str, defaultText); + }; + }; + }; +}; + +exports.resizeBy = function (xDelta) { + return function (yDelta) { + return function (window) { + return function () { + window.resizeBy(xDelta, yDelta); + return {}; + }; + }; + }; +}; + +exports.resizeTo = function (width) { + return function (height) { + return function (window) { + return function () { + window.resizeTo(width, height); + return {}; + }; + }; + }; +}; + +exports.screenX = function (window) { + return function () { + return window.screenX; + }; +}; + +exports.screenY = function (window) { + return function () { + return window.screenY; + }; +}; + +exports.scroll = function (xCoord) { + return function (yCoord) { + return function (window) { + return function () { + window.scroll(xCoord, yCoord); + return {}; + }; + }; + }; +}; + +exports.scrollBy = function (xCoord) { + return function (yCoord) { + return function (window) { + return function () { + window.scrollBy(xCoord, yCoord); + return {}; + }; + }; + }; +}; + +exports.scrollX = function (window) { + return function () { + return window.scrollX; + }; +}; + +exports.scrollY = function (window) { + return function () { + return window.scrollY; + }; +}; + +exports.localStorage = function (window) { + return function () { + return window.localStorage; + }; +}; + +exports.sessionStorage = function (window) { + return function () { + return window.sessionStorage; + }; +}; + +exports._requestAnimationFrame = function(fn) { + return function(window) { + return function() { + return window.requestAnimationFrame(fn); + }; + }; +}; + +exports._cancelAnimationFrame = function(id) { + return function(window) { + return function() { + return window.cancelAnimationFrame(id); + }; + }; +}; + +exports._requestIdleCallback = function(opts) { + return function(fn) { + return function(window) { + return function() { + return window.requestIdleCallback(fn, opts); + }; + }; + }; +}; + +exports._cancelIdleCallback = function(id) { + return function(window) { + return function() { + return window.cancelIdleCallback(id); + }; + }; +}; diff --git a/src/Web/HTML/Window.purs b/src/Web/HTML/Window.purs new file mode 100644 index 0000000..26e4f8c --- /dev/null +++ b/src/Web/HTML/Window.purs @@ -0,0 +1,152 @@ +module Web.HTML.Window + ( Window + , toEventTarget + , document + , navigator + , location + , history + , innerWidth + , innerHeight + , alert + , confirm + , moveBy + , moveTo + , open + , outerHeight + , outerWidth + , print + , prompt + , promptDefault + , resizeBy + , resizeTo + , screenX + , screenY + , scroll + , scrollBy + , scrollX + , scrollY + , localStorage + , sessionStorage + , requestAnimationFrame + , cancelAnimationFrame + , RequestAnimationFrameId + , requestIdleCallback + , cancelIdleCallback + , RequestIdleCallbackId + ) where + +import Data.Maybe (Maybe) +import Data.Newtype (class Newtype, unwrap) +import Data.Nullable (Nullable, toMaybe) +import Effect (Effect) +import Prelude (class Eq, class Ord, Unit, (<$>), (<<<), map) +import Unsafe.Coerce (unsafeCoerce) +import Web.Event.Types (EventTarget) +import Web.HTML.HTMLDocument (HTMLDocument) +import Web.HTML.History (History) +import Web.HTML.Location (Location) +import Web.HTML.Navigator (Navigator) +import Web.WebStorage.Storage (Storage) + +foreign import data Window :: Type + +toEventTarget :: Window -> EventTarget +toEventTarget = unsafeCoerce + +foreign import document :: Window -> Effect HTMLDocument + +foreign import navigator :: Window -> Effect Navigator + +foreign import location :: Window -> Effect Location + +foreign import history :: Window -> Effect History + +foreign import innerWidth :: Window -> Effect Int + +foreign import innerHeight :: Window -> Effect Int + +foreign import alert :: String -> Window -> Effect Unit + +foreign import confirm :: String -> Window -> Effect Boolean + +foreign import moveBy :: Int -> Int -> Window -> Effect Unit + +foreign import moveTo :: Int -> Int -> Window -> Effect Unit + +open :: String -> String -> String -> Window -> Effect (Maybe Window) +open url' name features window = toMaybe <$> _open url' name features window + +foreign import _open + :: String + -> String + -> String + -> Window + -> Effect (Nullable Window) + +foreign import outerHeight :: Window -> Effect Int + +foreign import outerWidth :: Window -> Effect Int + +foreign import print :: Window -> Effect Unit + +prompt :: String -> Window -> Effect (Maybe String) +prompt msg window = toMaybe <$> _prompt msg "" window + +promptDefault :: String -> String -> Window -> Effect (Maybe String) +promptDefault msg defaultText window = toMaybe <$> _prompt msg defaultText window + +foreign import _prompt :: String -> String -> Window -> Effect (Nullable String) + +foreign import resizeBy :: Int -> Int -> Window -> Effect Unit + +foreign import resizeTo :: Int -> Int -> Window -> Effect Unit + +foreign import screenX :: Window -> Effect Int + +foreign import screenY :: Window -> Effect Int + +foreign import scroll :: Int -> Int -> Window -> Effect Unit + +foreign import scrollBy :: Int -> Int -> Window -> Effect Unit + +foreign import scrollX :: Window -> Effect Int + +foreign import scrollY :: Window -> Effect Int + +foreign import localStorage :: Window -> Effect Storage + +foreign import sessionStorage :: Window -> Effect Storage + +newtype RequestAnimationFrameId = RequestAnimationFrameId Int + +derive instance newtypeRequestAnimationFrameId :: Newtype RequestAnimationFrameId _ +derive instance eqRequestAnimationFrameId :: Eq RequestAnimationFrameId +derive instance ordRequestAnimationFrameId :: Ord RequestAnimationFrameId + +foreign import _requestAnimationFrame :: Effect Unit -> Window -> Effect Int + +requestAnimationFrame :: Effect Unit -> Window -> Effect RequestAnimationFrameId +requestAnimationFrame fn = map RequestAnimationFrameId <<< _requestAnimationFrame fn + +foreign import _cancelAnimationFrame :: Int -> Window -> Effect Unit + +cancelAnimationFrame :: RequestAnimationFrameId -> Window -> Effect Unit +cancelAnimationFrame idAF = _cancelAnimationFrame (unwrap idAF) + +newtype RequestIdleCallbackId = RequestIdleCallbackId Int + +derive instance newtypeRequestIdleCallbackId :: Newtype RequestIdleCallbackId _ +derive instance eqRequestIdleCallbackId :: Eq RequestIdleCallbackId +derive instance ordRequestIdleCallbackId :: Ord RequestIdleCallbackId + +foreign import _requestIdleCallback :: { timeout :: Int } -> Effect Unit -> Window -> Effect Int + +-- | Set timeout to `0` to get the same behaviour as when it is `undefined` in +-- | [JavaScript](https://w3c.github.io/requestidlecallback/#h-the-requestidle-callback-method). +requestIdleCallback :: { timeout :: Int } -> Effect Unit -> Window -> Effect RequestIdleCallbackId +requestIdleCallback opts fn = map RequestIdleCallbackId <<< _requestIdleCallback opts fn + +foreign import _cancelIdleCallback :: Int -> Window -> Effect Unit + +cancelIdleCallback :: RequestIdleCallbackId -> Window -> Effect Unit +cancelIdleCallback idAF = _cancelIdleCallback (unwrap idAF)