{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-} module GHCJS.DOM.JSFFI.FormData ( module Generated , js_newFormData0 , js_newFormData1 , newFormData , js_append , js_append3 , append , appendBlob ) where import Control.Monad.IO.Class (MonadIO(..)) import GHCJS.Types (JSVal, JSString) import GHCJS.Marshal.Pure (PToJSVal(..)) import GHCJS.DOM.Types import GHCJS.DOM.JSFFI.Generated.FormData as Generated hiding (js_append, append, newFormData) foreign import javascript unsafe "new window[\"FormData\"]()" js_newFormData0 :: IO FormData foreign import javascript unsafe "new window[\"FormData\"]($1)" js_newFormData1 :: HTMLFormElement -> IO FormData -- | newFormData :: (MonadIO m) => Maybe HTMLFormElement -> m FormData newFormData = liftIO . maybe js_newFormData0 js_newFormData1 foreign import javascript unsafe "$1[\"append\"]($2, $3)" js_append :: FormData -> JSString -> JSVal -> IO () foreign import javascript unsafe "$1[\"append\"]($2, $3, $4)" js_append3 :: FormData -> JSString -> JSVal -> JSString -> IO () -- | append :: (MonadIO m, ToJSString name, ToJSString str) => FormData -> name -> str -> m () append self name str = liftIO $ js_append self (toJSString name) (pToJSVal str) -- | appendBlob :: (MonadIO m, ToJSString name, IsBlob blob, ToJSString filename) => FormData -> name -> blob -> Maybe filename -> m () appendBlob self name blob mfilename = let jsname = toJSString name jsblob = unBlob $ toBlob blob in liftIO $ case mfilename of Just filename -> js_append3 self jsname jsblob $ toJSString filename Nothing -> js_append self jsname jsblob