{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.OverconstrainedErrorEvent
       (newOverconstrainedErrorEvent, getError, getErrorUnsafe,
        getErrorUnchecked, OverconstrainedErrorEvent(..),
        gTypeOverconstrainedErrorEvent)
       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/OverconstrainedErrorEvent Mozilla OverconstrainedErrorEvent documentation> 
newOverconstrainedErrorEvent ::
                             (MonadDOM m, ToJSString type') =>
                               type' ->
                                 Maybe OverconstrainedErrorEventInit -> m OverconstrainedErrorEvent
newOverconstrainedErrorEvent :: forall (m :: * -> *) type'.
(MonadDOM m, ToJSString type') =>
type'
-> Maybe OverconstrainedErrorEventInit
-> m OverconstrainedErrorEvent
newOverconstrainedErrorEvent type'
type' Maybe OverconstrainedErrorEventInit
eventInitDict
  = DOM OverconstrainedErrorEvent -> m OverconstrainedErrorEvent
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> OverconstrainedErrorEvent
OverconstrainedErrorEvent (JSVal -> OverconstrainedErrorEvent)
-> JSM JSVal -> DOM OverconstrainedErrorEvent
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new (String -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg String
"OverconstrainedErrorEvent")
           [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type', Maybe OverconstrainedErrorEventInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe OverconstrainedErrorEventInit
eventInitDict])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
getError ::
         (MonadDOM m) =>
           OverconstrainedErrorEvent -> m (Maybe OverconstrainedError)
getError :: forall (m :: * -> *).
MonadDOM m =>
OverconstrainedErrorEvent -> m (Maybe OverconstrainedError)
getError OverconstrainedErrorEvent
self = DOM (Maybe OverconstrainedError) -> m (Maybe OverconstrainedError)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((OverconstrainedErrorEvent
self OverconstrainedErrorEvent
-> Getting (JSM JSVal) OverconstrainedErrorEvent (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String
-> IndexPreservingGetter OverconstrainedErrorEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"error") JSM JSVal
-> (JSVal -> DOM (Maybe OverconstrainedError))
-> DOM (Maybe OverconstrainedError)
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe OverconstrainedError)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
getErrorUnsafe ::
               (MonadDOM m, HasCallStack) =>
                 OverconstrainedErrorEvent -> m OverconstrainedError
getErrorUnsafe :: forall (m :: * -> *).
(MonadDOM m, HasCallStack) =>
OverconstrainedErrorEvent -> m OverconstrainedError
getErrorUnsafe OverconstrainedErrorEvent
self
  = DOM OverconstrainedError -> m OverconstrainedError
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((OverconstrainedErrorEvent
self OverconstrainedErrorEvent
-> Getting (JSM JSVal) OverconstrainedErrorEvent (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String
-> IndexPreservingGetter OverconstrainedErrorEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"error") JSM JSVal
-> (JSVal -> DOM (Maybe OverconstrainedError))
-> DOM (Maybe OverconstrainedError)
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe OverconstrainedError)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe OverconstrainedError)
-> (Maybe OverconstrainedError -> DOM OverconstrainedError)
-> DOM OverconstrainedError
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM OverconstrainedError
-> (OverconstrainedError -> DOM OverconstrainedError)
-> Maybe OverconstrainedError
-> DOM OverconstrainedError
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (String -> DOM OverconstrainedError
forall a. HasCallStack => String -> a
Prelude.error String
"Nothing to return") OverconstrainedError -> DOM OverconstrainedError
forall a. a -> JSM a
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
getErrorUnchecked ::
                  (MonadDOM m) => OverconstrainedErrorEvent -> m OverconstrainedError
getErrorUnchecked :: forall (m :: * -> *).
MonadDOM m =>
OverconstrainedErrorEvent -> m OverconstrainedError
getErrorUnchecked OverconstrainedErrorEvent
self
  = DOM OverconstrainedError -> m OverconstrainedError
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((OverconstrainedErrorEvent
self OverconstrainedErrorEvent
-> Getting (JSM JSVal) OverconstrainedErrorEvent (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String
-> IndexPreservingGetter OverconstrainedErrorEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"error") JSM JSVal
-> (JSVal -> DOM OverconstrainedError) -> DOM OverconstrainedError
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM OverconstrainedError
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)