Skip to content

Commit aeb0825

Browse files
committed
Add HTMLHtmlElement
1 parent 9e657a0 commit aeb0825

File tree

4 files changed

+66
-0
lines changed

4 files changed

+66
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Notable changes to this project are documented in this file. The format is based
77
Breaking changes:
88

99
New features:
10+
- Added `HTMLHtmlElement` module and `documentElement` function `HTMLDocument` (#60 by @toastal)
1011

1112
Bugfixes:
1213

src/Web/HTML/HTMLDocument.js

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
"use strict";
22

3+
exports._documentElement = function (doc) {
4+
return function () {
5+
return doc.documentElement;
6+
};
7+
};
8+
39
exports._head = function (doc) {
410
return function () {
511
return doc.head;

src/Web/HTML/HTMLDocument.purs

+7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module Web.HTML.HTMLDocument
1010
, toParentNode
1111
, toNonElementParentNode
1212
, toEventTarget
13+
, documentElement
1314
, head
1415
, body
1516
, readyState
@@ -33,6 +34,7 @@ import Web.DOM.ParentNode (ParentNode)
3334
import Web.Event.EventTarget (EventTarget)
3435
import Web.HTML.HTMLDocument.ReadyState (ReadyState)
3536
import Web.HTML.HTMLDocument.ReadyState as ReadyState
37+
import Web.HTML.HTMLHtmlElement (HTMLHtmlElement)
3638
import Web.HTML.HTMLElement (HTMLElement)
3739
import Web.HTML.HTMLScriptElement (HTMLScriptElement)
3840
import Web.Internal.FFI (unsafeReadProtoTagged)
@@ -69,6 +71,11 @@ toNonElementParentNode = unsafeCoerce
6971
toEventTarget :: HTMLDocument -> EventTarget
7072
toEventTarget = unsafeCoerce
7173

74+
foreign import _documentElement :: HTMLDocument -> Effect (Nullable HTMLHtmlElement)
75+
76+
documentElement :: HTMLDocument -> Effect (Maybe HTMLHtmlElement)
77+
documentElement = map toMaybe <<< _documentElement
78+
7279
foreign import _head :: HTMLDocument -> Effect (Nullable HTMLElement)
7380

7481
head :: HTMLDocument -> Effect (Maybe HTMLElement)

src/Web/HTML/HTMLHtmlElement.purs

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
module Web.HTML.HTMLHtmlElement where
2+
3+
import Data.Maybe (Maybe)
4+
import Unsafe.Coerce (unsafeCoerce)
5+
import Web.DOM (ChildNode, Element, Node, NonDocumentTypeChildNode, ParentNode)
6+
import Web.Event.EventTarget (EventTarget)
7+
import Web.HTML.HTMLElement (HTMLElement)
8+
import Web.Internal.FFI (unsafeReadProtoTagged)
9+
10+
foreign import data HTMLHtmlElement :: Type
11+
12+
fromHTMLElement :: HTMLElement -> Maybe HTMLHtmlElement
13+
fromHTMLElement = unsafeReadProtoTagged "HTMLHtmlElement"
14+
15+
fromElement :: Element -> Maybe HTMLHtmlElement
16+
fromElement = unsafeReadProtoTagged "HTMLHtmlElement"
17+
18+
fromNode :: Node -> Maybe HTMLHtmlElement
19+
fromNode = unsafeReadProtoTagged "HTMLHtmlElement"
20+
21+
fromChildNode :: ChildNode -> Maybe HTMLHtmlElement
22+
fromChildNode = unsafeReadProtoTagged "HTMLHtmlElement"
23+
24+
fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe HTMLHtmlElement
25+
fromNonDocumentTypeChildNode = unsafeReadProtoTagged "HTMLHtmlElement"
26+
27+
fromParentNode :: ParentNode -> Maybe HTMLHtmlElement
28+
fromParentNode = unsafeReadProtoTagged "HTMLHtmlElement"
29+
30+
fromEventTarget :: EventTarget -> Maybe HTMLHtmlElement
31+
fromEventTarget = unsafeReadProtoTagged "HTMLHtmlElement"
32+
33+
toHTMLElement :: HTMLHtmlElement -> HTMLElement
34+
toHTMLElement = unsafeCoerce
35+
36+
toElement :: HTMLHtmlElement -> Element
37+
toElement = unsafeCoerce
38+
39+
toNode :: HTMLHtmlElement -> Node
40+
toNode = unsafeCoerce
41+
42+
toChildNode :: HTMLHtmlElement -> ChildNode
43+
toChildNode = unsafeCoerce
44+
45+
toNonDocumentTypeChildNode :: HTMLHtmlElement -> NonDocumentTypeChildNode
46+
toNonDocumentTypeChildNode = unsafeCoerce
47+
48+
toParentNode :: HTMLHtmlElement -> ParentNode
49+
toParentNode = unsafeCoerce
50+
51+
toEventTarget :: HTMLHtmlElement -> EventTarget
52+
toEventTarget = unsafeCoerce

0 commit comments

Comments
 (0)