{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.PasswordCredential
       (newPasswordCredential, newPasswordCredential', setIdName,
        getIdName, setPasswordName, getPasswordName, setAdditionalData,
        getAdditionalData, getAdditionalDataUnsafe,
        getAdditionalDataUnchecked, PasswordCredential(..),
        gTypePasswordCredential)
       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/PasswordCredential Mozilla PasswordCredential documentation> 
newPasswordCredential ::
                      (MonadDOM m) => PasswordCredentialData -> m PasswordCredential
newPasswordCredential :: PasswordCredentialData -> m PasswordCredential
newPasswordCredential PasswordCredentialData
data'
  = DOM PasswordCredential -> m PasswordCredential
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> PasswordCredential
PasswordCredential (JSVal -> PasswordCredential)
-> JSM JSVal -> DOM PasswordCredential
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 ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"PasswordCredential") [PasswordCredentialData -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal PasswordCredentialData
data'])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation> 
newPasswordCredential' ::
                       (MonadDOM m) => HTMLFormElement -> m PasswordCredential
newPasswordCredential' :: HTMLFormElement -> m PasswordCredential
newPasswordCredential' HTMLFormElement
form
  = DOM PasswordCredential -> m PasswordCredential
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> PasswordCredential
PasswordCredential (JSVal -> PasswordCredential)
-> JSM JSVal -> DOM PasswordCredential
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 ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"PasswordCredential") [HTMLFormElement -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal HTMLFormElement
form])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.idName Mozilla PasswordCredential.idName documentation> 
setIdName ::
          (MonadDOM m, ToJSString val) => PasswordCredential -> val -> m ()
setIdName :: PasswordCredential -> val -> m ()
setIdName PasswordCredential
self val
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (PasswordCredential
self PasswordCredential
-> Getting (DOM ()) PasswordCredential (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"idName" (val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.idName Mozilla PasswordCredential.idName documentation> 
getIdName ::
          (MonadDOM m, FromJSString result) => PasswordCredential -> m result
getIdName :: PasswordCredential -> m result
getIdName PasswordCredential
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((PasswordCredential
self PasswordCredential
-> Getting (JSM JSVal) PasswordCredential (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter PasswordCredential (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"idName") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.passwordName Mozilla PasswordCredential.passwordName documentation> 
setPasswordName ::
                (MonadDOM m, ToJSString val) => PasswordCredential -> val -> m ()
setPasswordName :: PasswordCredential -> val -> m ()
setPasswordName PasswordCredential
self val
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (PasswordCredential
self PasswordCredential
-> Getting (DOM ()) PasswordCredential (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"passwordName" (val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.passwordName Mozilla PasswordCredential.passwordName documentation> 
getPasswordName ::
                (MonadDOM m, FromJSString result) => PasswordCredential -> m result
getPasswordName :: PasswordCredential -> m result
getPasswordName PasswordCredential
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((PasswordCredential
self PasswordCredential
-> Getting (JSM JSVal) PasswordCredential (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter PasswordCredential (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"passwordName") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
setAdditionalData ::
                  (MonadDOM m, IsCredentialBodyType val) =>
                    PasswordCredential -> Maybe val -> m ()
setAdditionalData :: PasswordCredential -> Maybe val -> m ()
setAdditionalData PasswordCredential
self Maybe val
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (PasswordCredential
self PasswordCredential
-> Getting (DOM ()) PasswordCredential (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"additionalData" (Maybe val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
getAdditionalData ::
                  (MonadDOM m) => PasswordCredential -> m (Maybe CredentialBodyType)
getAdditionalData :: PasswordCredential -> m (Maybe CredentialBodyType)
getAdditionalData PasswordCredential
self
  = DOM (Maybe CredentialBodyType) -> m (Maybe CredentialBodyType)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((PasswordCredential
self PasswordCredential
-> Getting (JSM JSVal) PasswordCredential (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter PasswordCredential (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"additionalData") JSM JSVal
-> (JSVal -> DOM (Maybe CredentialBodyType))
-> DOM (Maybe CredentialBodyType)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe CredentialBodyType)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
getAdditionalDataUnchecked ::
                           (MonadDOM m) => PasswordCredential -> m CredentialBodyType
getAdditionalDataUnchecked :: PasswordCredential -> m CredentialBodyType
getAdditionalDataUnchecked PasswordCredential
self
  = DOM CredentialBodyType -> m CredentialBodyType
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((PasswordCredential
self PasswordCredential
-> Getting (JSM JSVal) PasswordCredential (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter PasswordCredential (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"additionalData") JSM JSVal
-> (JSVal -> DOM CredentialBodyType) -> DOM CredentialBodyType
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM CredentialBodyType
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)