module Web.HTML.HTMLElement
( HTMLElement
, fromElement
, fromNode
, fromChildNode
, fromNonDocumentTypeChildNode
, fromParentNode
, fromEventTarget
, toElement
, toNode
, toChildNode
, toNonDocumentTypeChildNode
, toParentNode
, toEventTarget
, title
, setTitle
, lang
, setLang
, dir
, setDir
, hidden
, setHidden
, tabIndex
, setTabIndex
, draggable
, setDraggable
, contentEditable
, setContentEditable
, isContentEditable
, spellcheck
, setSpellcheck
, click
, focus
, blur
, offsetParent
, offsetTop
, offsetLeft
, offsetWidth
, offsetHeight
) where
import Prelude
import Data.Function.Uncurried (Fn3, runFn3)
import Data.Maybe (Maybe(..))
import Data.Nullable (Nullable, toMaybe)
import Effect (Effect)
import Unsafe.Coerce (unsafeCoerce)
import Web.DOM (ChildNode)
import Web.DOM.Element (Element)
import Web.DOM.Internal.Types (Node)
import Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode)
import Web.DOM.ParentNode (ParentNode)
import Web.Event.EventTarget (EventTarget)
foreign import data HTMLElement :: Type
foreign import _read :: forall a. Fn3 (forall x. Maybe x) (forall x. x -> Maybe x) a (Maybe HTMLElement)
fromElement :: Element -> Maybe HTMLElement
fromElement x = runFn3 _read Nothing Just x
fromNode :: Node -> Maybe HTMLElement
fromNode x = runFn3 _read Nothing Just x
fromChildNode :: ChildNode -> Maybe HTMLElement
fromChildNode x = runFn3 _read Nothing Just x
fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe HTMLElement
fromNonDocumentTypeChildNode x = runFn3 _read Nothing Just x
fromParentNode :: ParentNode -> Maybe HTMLElement
fromParentNode x = runFn3 _read Nothing Just x
fromEventTarget :: EventTarget -> Maybe HTMLElement
fromEventTarget x = runFn3 _read Nothing Just x
toElement :: HTMLElement -> Element
toElement = unsafeCoerce
toNode :: HTMLElement -> Node
toNode = unsafeCoerce
toChildNode :: HTMLElement -> ChildNode
toChildNode = unsafeCoerce
toNonDocumentTypeChildNode :: HTMLElement -> NonDocumentTypeChildNode
toNonDocumentTypeChildNode = unsafeCoerce
toParentNode :: HTMLElement -> ParentNode
toParentNode = unsafeCoerce
toEventTarget :: HTMLElement -> EventTarget
toEventTarget = unsafeCoerce
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 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
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