{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.TextEvent
       (initTextEvent, getData, TextEvent(..), gTypeTextEvent) 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/TextEvent.initTextEvent Mozilla TextEvent.initTextEvent documentation> 
initTextEvent ::
              (MonadDOM m, ToJSString typeArg, ToJSString dataArg) =>
                TextEvent ->
                  Maybe typeArg ->
                    Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()
initTextEvent :: forall (m :: * -> *) typeArg dataArg.
(MonadDOM m, ToJSString typeArg, ToJSString dataArg) =>
TextEvent
-> Maybe typeArg
-> Bool
-> Bool
-> Maybe Window
-> Maybe dataArg
-> m ()
initTextEvent TextEvent
self Maybe typeArg
typeArg Bool
canBubbleArg Bool
cancelableArg Maybe Window
viewArg
  Maybe dataArg
dataArg
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (TextEvent
self TextEvent -> Getting (JSM JSVal) TextEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"initTextEvent"
            [Maybe typeArg -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe typeArg
typeArg, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
canBubbleArg, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
cancelableArg,
             Maybe Window -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Window
viewArg, Maybe dataArg -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe dataArg
dataArg]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.data Mozilla TextEvent.data documentation> 
getData ::
        (MonadDOM m, FromJSString result) => TextEvent -> m result
getData :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
TextEvent -> m result
getData TextEvent
self = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((TextEvent
self TextEvent -> Getting (JSM JSVal) TextEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter TextEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"data") JSM JSVal -> (JSVal -> DOM result) -> DOM result
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 result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)