{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.InputEvent
       (newInputEvent, getTargetRanges, getTargetRanges_, getInputType,
        getData, getDataUnsafe, getDataUnchecked, getDataTransfer,
        getDataTransferUnsafe, getDataTransferUnchecked, InputEvent(..),
        gTypeInputEvent)
       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/InputEvent Mozilla InputEvent documentation> 
newInputEvent ::
              (MonadDOM m, ToJSString type') =>
                type' -> Maybe InputEventInit -> m InputEvent
newInputEvent :: forall (m :: * -> *) type'.
(MonadDOM m, ToJSString type') =>
type' -> Maybe InputEventInit -> m InputEvent
newInputEvent type'
type' Maybe InputEventInit
eventInitDict
  = DOM InputEvent -> m InputEvent
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> InputEvent
InputEvent (JSVal -> InputEvent) -> JSM JSVal -> DOM InputEvent
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
"InputEvent") [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type', Maybe InputEventInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe InputEventInit
eventInitDict])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.getTargetRanges Mozilla InputEvent.getTargetRanges documentation> 
getTargetRanges :: (MonadDOM m) => InputEvent -> m [StaticRange]
getTargetRanges :: forall (m :: * -> *). MonadDOM m => InputEvent -> m [StaticRange]
getTargetRanges InputEvent
self
  = DOM [StaticRange] -> m [StaticRange]
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((InputEvent
self InputEvent
-> Getting (JSM JSVal) InputEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getTargetRanges" ()) JSM JSVal -> (JSVal -> DOM [StaticRange]) -> DOM [StaticRange]
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 [StaticRange]
forall o. FromJSVal o => JSVal -> JSM [o]
fromJSArrayUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.getTargetRanges Mozilla InputEvent.getTargetRanges documentation> 
getTargetRanges_ :: (MonadDOM m) => InputEvent -> m ()
getTargetRanges_ :: forall (m :: * -> *). MonadDOM m => InputEvent -> m ()
getTargetRanges_ InputEvent
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (InputEvent
self InputEvent
-> Getting (JSM JSVal) InputEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getTargetRanges" ()))

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
getDataUnsafe ::
              (MonadDOM m, HasCallStack, FromJSString result) =>
                InputEvent -> m result
getDataUnsafe :: forall (m :: * -> *) result.
(MonadDOM m, HasCallStack, FromJSString result) =>
InputEvent -> m result
getDataUnsafe InputEvent
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((InputEvent
self InputEvent
-> Getting (JSM JSVal) InputEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter InputEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"data") JSM JSVal -> (JSVal -> JSM (Maybe result)) -> JSM (Maybe 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 -> JSM (Maybe result)
forall a. FromJSString a => JSVal -> JSM (Maybe a)
fromMaybeJSString) JSM (Maybe result) -> (Maybe result -> 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
>>=
         DOM result -> (result -> DOM result) -> Maybe result -> DOM result
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (String -> DOM result
forall a. HasCallStack => String -> a
Prelude.error String
"Nothing to return") result -> DOM result
forall a. a -> JSM a
forall (m :: * -> *) a. Monad m => a -> m a
return)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
getDataTransfer ::
                (MonadDOM m) => InputEvent -> m (Maybe DataTransfer)
getDataTransfer :: forall (m :: * -> *).
MonadDOM m =>
InputEvent -> m (Maybe DataTransfer)
getDataTransfer InputEvent
self
  = DOM (Maybe DataTransfer) -> m (Maybe DataTransfer)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((InputEvent
self InputEvent
-> Getting (JSM JSVal) InputEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter InputEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"dataTransfer") JSM JSVal
-> (JSVal -> DOM (Maybe DataTransfer)) -> DOM (Maybe DataTransfer)
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 DataTransfer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

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

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