{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.NonElementParentNode
       (getElementById, getElementById_, getElementByIdUnsafe,
        getElementByIdUnchecked, NonElementParentNode(..),
        gTypeNonElementParentNode, IsNonElementParentNode,
        toNonElementParentNode)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
getElementById ::
               (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) =>
                 self -> elementId -> m (Maybe Element)
getElementById :: self -> elementId -> m (Maybe Element)
getElementById self
self elementId
elementId
  = DOM (Maybe Element) -> m (Maybe Element)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> NonElementParentNode
forall o. IsNonElementParentNode o => o -> NonElementParentNode
toNonElementParentNode self
self) NonElementParentNode
-> Getting (JSM JSVal) NonElementParentNode (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getElementById"
          [elementId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal elementId
elementId])
         JSM JSVal -> (JSVal -> DOM (Maybe Element)) -> DOM (Maybe Element)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Element)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
getElementById_ ::
                (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) =>
                  self -> elementId -> m ()
getElementById_ :: self -> elementId -> m ()
getElementById_ self
self elementId
elementId
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> NonElementParentNode
forall o. IsNonElementParentNode o => o -> NonElementParentNode
toNonElementParentNode self
self) NonElementParentNode
-> Getting (JSM JSVal) NonElementParentNode (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getElementById"
            [elementId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal elementId
elementId]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
getElementByIdUnsafe ::
                     (MonadDOM m, IsNonElementParentNode self, ToJSString elementId,
                      HasCallStack) =>
                       self -> elementId -> m Element
getElementByIdUnsafe :: self -> elementId -> m Element
getElementByIdUnsafe self
self elementId
elementId
  = DOM Element -> m Element
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> NonElementParentNode
forall o. IsNonElementParentNode o => o -> NonElementParentNode
toNonElementParentNode self
self) NonElementParentNode
-> Getting (JSM JSVal) NonElementParentNode (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getElementById"
           [elementId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal elementId
elementId])
          JSM JSVal -> (JSVal -> DOM (Maybe Element)) -> DOM (Maybe Element)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Element)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)
         DOM (Maybe Element)
-> (Maybe Element -> DOM Element) -> DOM Element
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= DOM Element
-> (Element -> DOM Element) -> Maybe Element -> DOM Element
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM Element
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") Element -> DOM Element
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
getElementByIdUnchecked ::
                        (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) =>
                          self -> elementId -> m Element
getElementByIdUnchecked :: self -> elementId -> m Element
getElementByIdUnchecked self
self elementId
elementId
  = DOM Element -> m Element
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> NonElementParentNode
forall o. IsNonElementParentNode o => o -> NonElementParentNode
toNonElementParentNode self
self) NonElementParentNode
-> Getting (JSM JSVal) NonElementParentNode (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getElementById"
          [elementId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal elementId
elementId])
         JSM JSVal -> (JSVal -> DOM Element) -> DOM Element
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Element
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)