diff --git a/CHANGELOG.md b/CHANGELOG.md index c035de5..b306e53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Notable changes to this project are documented in this file. The format is based Breaking changes: New features: +- Added `HTMLHtmlElement` module and `documentElement` function `HTMLDocument` (#60 by @toastal) Bugfixes: diff --git a/src/Web/HTML/HTMLDocument.js b/src/Web/HTML/HTMLDocument.js index cb28e70..d3efb08 100644 --- a/src/Web/HTML/HTMLDocument.js +++ b/src/Web/HTML/HTMLDocument.js @@ -1,5 +1,11 @@ "use strict"; +exports._documentElement = function (doc) { + return function () { + return doc.documentElement; + }; +}; + exports._head = function (doc) { return function () { return doc.head; diff --git a/src/Web/HTML/HTMLDocument.purs b/src/Web/HTML/HTMLDocument.purs index 32055ec..11d2ef0 100644 --- a/src/Web/HTML/HTMLDocument.purs +++ b/src/Web/HTML/HTMLDocument.purs @@ -10,6 +10,7 @@ module Web.HTML.HTMLDocument , toParentNode , toNonElementParentNode , toEventTarget + , documentElement , head , body , readyState @@ -34,6 +35,7 @@ import Web.Event.EventTarget (EventTarget) import Web.HTML.HTMLDocument.ReadyState (ReadyState) import Web.HTML.HTMLDocument.ReadyState as ReadyState import Web.HTML.HTMLElement (HTMLElement) +import Web.HTML.HTMLHtmlElement (HTMLHtmlElement) import Web.HTML.HTMLScriptElement (HTMLScriptElement) import Web.Internal.FFI (unsafeReadProtoTagged) @@ -69,6 +71,11 @@ toNonElementParentNode = unsafeCoerce toEventTarget :: HTMLDocument -> EventTarget toEventTarget = unsafeCoerce +foreign import _documentElement :: HTMLDocument -> Effect (Nullable HTMLHtmlElement) + +documentElement :: HTMLDocument -> Effect (Maybe HTMLHtmlElement) +documentElement = map toMaybe <<< _documentElement + foreign import _head :: HTMLDocument -> Effect (Nullable HTMLElement) head :: HTMLDocument -> Effect (Maybe HTMLElement) diff --git a/src/Web/HTML/HTMLHtmlElement.purs b/src/Web/HTML/HTMLHtmlElement.purs new file mode 100644 index 0000000..6303565 --- /dev/null +++ b/src/Web/HTML/HTMLHtmlElement.purs @@ -0,0 +1,52 @@ +module Web.HTML.HTMLHtmlElement where + +import Data.Maybe (Maybe) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM (ChildNode, Element, Node, NonDocumentTypeChildNode, ParentNode) +import Web.Event.EventTarget (EventTarget) +import Web.HTML.HTMLElement (HTMLElement) +import Web.Internal.FFI (unsafeReadProtoTagged) + +foreign import data HTMLHtmlElement :: Type + +fromHTMLElement :: HTMLElement -> Maybe HTMLHtmlElement +fromHTMLElement = unsafeReadProtoTagged "HTMLHtmlElement" + +fromElement :: Element -> Maybe HTMLHtmlElement +fromElement = unsafeReadProtoTagged "HTMLHtmlElement" + +fromNode :: Node -> Maybe HTMLHtmlElement +fromNode = unsafeReadProtoTagged "HTMLHtmlElement" + +fromChildNode :: ChildNode -> Maybe HTMLHtmlElement +fromChildNode = unsafeReadProtoTagged "HTMLHtmlElement" + +fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe HTMLHtmlElement +fromNonDocumentTypeChildNode = unsafeReadProtoTagged "HTMLHtmlElement" + +fromParentNode :: ParentNode -> Maybe HTMLHtmlElement +fromParentNode = unsafeReadProtoTagged "HTMLHtmlElement" + +fromEventTarget :: EventTarget -> Maybe HTMLHtmlElement +fromEventTarget = unsafeReadProtoTagged "HTMLHtmlElement" + +toHTMLElement :: HTMLHtmlElement -> HTMLElement +toHTMLElement = unsafeCoerce + +toElement :: HTMLHtmlElement -> Element +toElement = unsafeCoerce + +toNode :: HTMLHtmlElement -> Node +toNode = unsafeCoerce + +toChildNode :: HTMLHtmlElement -> ChildNode +toChildNode = unsafeCoerce + +toNonDocumentTypeChildNode :: HTMLHtmlElement -> NonDocumentTypeChildNode +toNonDocumentTypeChildNode = unsafeCoerce + +toParentNode :: HTMLHtmlElement -> ParentNode +toParentNode = unsafeCoerce + +toEventTarget :: HTMLHtmlElement -> EventTarget +toEventTarget = unsafeCoerce