{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.DocumentOrShadowRoot
       (elementFromPoint, elementFromPoint_, elementFromPointUnsafe,
        elementFromPointUnchecked, getActiveElement,
        getActiveElementUnsafe, getActiveElementUnchecked,
        getPointerLockElement, getPointerLockElementUnsafe,
        getPointerLockElementUnchecked, DocumentOrShadowRoot(..),
        gTypeDocumentOrShadowRoot, IsDocumentOrShadowRoot,
        toDocumentOrShadowRoot)
       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/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
elementFromPoint ::
                 (MonadDOM m, IsDocumentOrShadowRoot self) =>
                   self -> Double -> Double -> m (Maybe Element)
elementFromPoint :: self -> Double -> Double -> m (Maybe Element)
elementFromPoint self
self Double
x Double
y
  = DOM (Maybe Element) -> m (Maybe Element)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (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]
"elementFromPoint"
          [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y])
         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/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
elementFromPoint_ ::
                  (MonadDOM m, IsDocumentOrShadowRoot self) =>
                    self -> Double -> Double -> m ()
elementFromPoint_ :: self -> Double -> Double -> m ()
elementFromPoint_ self
self Double
x Double
y
  = 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 -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (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]
"elementFromPoint"
            [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
elementFromPointUnsafe ::
                       (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) =>
                         self -> Double -> Double -> m Element
elementFromPointUnsafe :: self -> Double -> Double -> m Element
elementFromPointUnsafe self
self Double
x Double
y
  = DOM Element -> m Element
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (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]
"elementFromPoint"
           [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y])
          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/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
elementFromPointUnchecked ::
                          (MonadDOM m, IsDocumentOrShadowRoot self) =>
                            self -> Double -> Double -> m Element
elementFromPointUnchecked :: self -> Double -> Double -> m Element
elementFromPointUnchecked self
self Double
x Double
y
  = DOM Element -> m Element
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (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]
"elementFromPoint"
          [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
x, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
y])
         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)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
getActiveElement ::
                 (MonadDOM m, IsDocumentOrShadowRoot self) =>
                   self -> m (Maybe Element)
getActiveElement :: self -> m (Maybe Element)
getActiveElement self
self
  = DOM (Maybe Element) -> m (Maybe Element)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DocumentOrShadowRoot (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"activeElement") 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/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
getActiveElementUnsafe ::
                       (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) =>
                         self -> m Element
getActiveElementUnsafe :: self -> m Element
getActiveElementUnsafe self
self
  = DOM Element -> m Element
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DocumentOrShadowRoot (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"activeElement") 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/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
getActiveElementUnchecked ::
                          (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m Element
getActiveElementUnchecked :: self -> m Element
getActiveElementUnchecked self
self
  = DOM Element -> m Element
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DocumentOrShadowRoot (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"activeElement") 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)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
getPointerLockElement ::
                      (MonadDOM m, IsDocumentOrShadowRoot self) =>
                        self -> m (Maybe Element)
getPointerLockElement :: self -> m (Maybe Element)
getPointerLockElement self
self
  = DOM (Maybe Element) -> m (Maybe Element)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DocumentOrShadowRoot (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"pointerLockElement") 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/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
getPointerLockElementUnsafe ::
                            (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) =>
                              self -> m Element
getPointerLockElementUnsafe :: self -> m Element
getPointerLockElementUnsafe self
self
  = DOM Element -> m Element
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DocumentOrShadowRoot (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"pointerLockElement") 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/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
getPointerLockElementUnchecked ::
                               (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m Element
getPointerLockElementUnchecked :: self -> m Element
getPointerLockElementUnchecked self
self
  = DOM Element -> m Element
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> DocumentOrShadowRoot
forall o. IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
toDocumentOrShadowRoot self
self) DocumentOrShadowRoot
-> Getting (JSM JSVal) DocumentOrShadowRoot (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DocumentOrShadowRoot (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"pointerLockElement") 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)