{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.DataTransfer
       (setDragImage, getData, getData_, setData, clearData,
        setDropEffect, getDropEffect, setEffectAllowed, getEffectAllowed,
        getItems, getTypes, getFiles, DataTransfer(..), gTypeDataTransfer)
       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/DataTransfer.setDragImage Mozilla DataTransfer.setDragImage documentation> 
setDragImage ::
             (MonadDOM m, IsElement image) =>
               DataTransfer -> Maybe image -> Int -> Int -> m ()
setDragImage :: DataTransfer -> Maybe image -> Int -> Int -> m ()
setDragImage DataTransfer
self Maybe image
image Int
x Int
y
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (DataTransfer
self DataTransfer
-> Getting (JSM JSVal) DataTransfer (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]
"setDragImage" [Maybe image -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe image
image, Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Int
x, Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Int
y]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
getData ::
        (MonadDOM m, ToJSString format, FromJSString result) =>
          DataTransfer -> format -> m result
getData :: DataTransfer -> format -> m result
getData DataTransfer
self format
format
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((DataTransfer
self DataTransfer
-> Getting (JSM JSVal) DataTransfer (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]
"getData" [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format]) 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/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
getData_ ::
         (MonadDOM m, ToJSString format) => DataTransfer -> format -> m ()
getData_ :: DataTransfer -> format -> m ()
getData_ DataTransfer
self format
format
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (DataTransfer
self DataTransfer
-> Getting (JSM JSVal) DataTransfer (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]
"getData" [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setData Mozilla DataTransfer.setData documentation> 
setData ::
        (MonadDOM m, ToJSString format, ToJSString data') =>
          DataTransfer -> format -> data' -> m ()
setData :: DataTransfer -> format -> data' -> m ()
setData DataTransfer
self format
format data'
data'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (DataTransfer
self DataTransfer
-> Getting (JSM JSVal) DataTransfer (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]
"setData" [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal data'
data']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.clearData Mozilla DataTransfer.clearData documentation> 
clearData ::
          (MonadDOM m, ToJSString format) =>
            DataTransfer -> Maybe format -> m ()
clearData :: DataTransfer -> Maybe format -> m ()
clearData DataTransfer
self Maybe format
format
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (DataTransfer
self DataTransfer
-> Getting (JSM JSVal) DataTransfer (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]
"clearData" [Maybe format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe format
format]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
setDropEffect ::
              (MonadDOM m, ToJSString val) => DataTransfer -> val -> m ()
setDropEffect :: DataTransfer -> val -> m ()
setDropEffect DataTransfer
self val
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (DataTransfer
self DataTransfer -> Getting (DOM ()) DataTransfer (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]
"dropEffect" (val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
getDropEffect ::
              (MonadDOM m, FromJSString result) => DataTransfer -> m result
getDropEffect :: DataTransfer -> m result
getDropEffect DataTransfer
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((DataTransfer
self DataTransfer
-> Getting (JSM JSVal) DataTransfer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DataTransfer (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"dropEffect") 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/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
setEffectAllowed ::
                 (MonadDOM m, ToJSString val) => DataTransfer -> val -> m ()
setEffectAllowed :: DataTransfer -> val -> m ()
setEffectAllowed DataTransfer
self val
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (DataTransfer
self DataTransfer -> Getting (DOM ()) DataTransfer (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]
"effectAllowed" (val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
getEffectAllowed ::
                 (MonadDOM m, FromJSString result) => DataTransfer -> m result
getEffectAllowed :: DataTransfer -> m result
getEffectAllowed DataTransfer
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((DataTransfer
self DataTransfer
-> Getting (JSM JSVal) DataTransfer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DataTransfer (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"effectAllowed") 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/DataTransfer.items Mozilla DataTransfer.items documentation> 
getItems :: (MonadDOM m) => DataTransfer -> m DataTransferItemList
getItems :: DataTransfer -> m DataTransferItemList
getItems DataTransfer
self
  = DOM DataTransferItemList -> m DataTransferItemList
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((DataTransfer
self DataTransfer
-> Getting (JSM JSVal) DataTransfer (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter DataTransfer (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"items") JSM JSVal
-> (JSVal -> DOM DataTransferItemList) -> DOM DataTransferItemList
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM DataTransferItemList
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

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

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