{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.DataTransferItem
       (getAsString, getAsFile, getAsFile_, getAsFileUnsafe,
        getAsFileUnchecked, getKind, getType, DataTransferItem(..),
        gTypeDataTransferItem)
       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/DataTransferItem.getAsString Mozilla DataTransferItem.getAsString documentation> 
getAsString ::
            (MonadDOM m, ToJSString callback) =>
              DataTransferItem -> Maybe (StringCallback callback) -> m ()
getAsString :: DataTransferItem -> Maybe (StringCallback callback) -> m ()
getAsString DataTransferItem
self Maybe (StringCallback callback)
callback
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (DataTransferItem
self DataTransferItem
-> Getting (JSM JSVal) DataTransferItem (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getAsString" [Maybe (StringCallback callback) -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe (StringCallback callback)
callback]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
getAsFile :: (MonadDOM m) => DataTransferItem -> m (Maybe Blob)
getAsFile :: DataTransferItem -> m (Maybe Blob)
getAsFile DataTransferItem
self
  = DOM (Maybe Blob) -> m (Maybe Blob)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((DataTransferItem
self DataTransferItem
-> Getting (JSM JSVal) DataTransferItem (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getAsFile" ()) JSM JSVal -> (JSVal -> DOM (Maybe Blob)) -> DOM (Maybe Blob)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Blob)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
getAsFile_ :: (MonadDOM m) => DataTransferItem -> m ()
getAsFile_ :: DataTransferItem -> m ()
getAsFile_ DataTransferItem
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 (DataTransferItem
self DataTransferItem
-> Getting (JSM JSVal) DataTransferItem (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getAsFile" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
getAsFileUnsafe ::
                (MonadDOM m, HasCallStack) => DataTransferItem -> m Blob
getAsFileUnsafe :: DataTransferItem -> m Blob
getAsFileUnsafe DataTransferItem
self
  = DOM Blob -> m Blob
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((DataTransferItem
self DataTransferItem
-> Getting (JSM JSVal) DataTransferItem (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getAsFile" ()) JSM JSVal -> (JSVal -> DOM (Maybe Blob)) -> DOM (Maybe Blob)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Blob)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe Blob) -> (Maybe Blob -> DOM Blob) -> DOM Blob
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM Blob -> (Blob -> DOM Blob) -> Maybe Blob -> DOM Blob
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM Blob
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") Blob -> DOM Blob
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
getAsFileUnchecked :: (MonadDOM m) => DataTransferItem -> m Blob
getAsFileUnchecked :: DataTransferItem -> m Blob
getAsFileUnchecked DataTransferItem
self
  = DOM Blob -> m Blob
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((DataTransferItem
self DataTransferItem
-> Getting (JSM JSVal) DataTransferItem (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"getAsFile" ()) JSM JSVal -> (JSVal -> DOM Blob) -> DOM Blob
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Blob
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.kind Mozilla DataTransferItem.kind documentation> 
getKind ::
        (MonadDOM m, FromJSString result) => DataTransferItem -> m result
getKind :: DataTransferItem -> m result
getKind DataTransferItem
self = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((DataTransferItem
self DataTransferItem
-> Getting (JSM JSVal) DataTransferItem (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DataTransferItem (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"kind") 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/DataTransferItem.type Mozilla DataTransferItem.type documentation> 
getType ::
        (MonadDOM m, FromJSString result) => DataTransferItem -> m result
getType :: DataTransferItem -> m result
getType DataTransferItem
self = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((DataTransferItem
self DataTransferItem
-> Getting (JSM JSVal) DataTransferItem (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DataTransferItem (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"type") 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)