{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.ClipboardEvent
       (newClipboardEvent, getClipboardData, getClipboardDataUnsafe,
        getClipboardDataUnchecked, ClipboardEvent(..), gTypeClipboardEvent)
       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/ClipboardEvent Mozilla ClipboardEvent documentation> 
newClipboardEvent ::
                  (MonadDOM m, ToJSString type') =>
                    type' -> Maybe ClipboardEventInit -> m ClipboardEvent
newClipboardEvent :: forall (m :: * -> *) type'.
(MonadDOM m, ToJSString type') =>
type' -> Maybe ClipboardEventInit -> m ClipboardEvent
newClipboardEvent type'
type' Maybe ClipboardEventInit
eventInitDict
  = DOM ClipboardEvent -> m ClipboardEvent
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> ClipboardEvent
ClipboardEvent (JSVal -> ClipboardEvent) -> JSM JSVal -> DOM ClipboardEvent
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
"ClipboardEvent") [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type', Maybe ClipboardEventInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe ClipboardEventInit
eventInitDict])

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