{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.FileReader
       (newFileReader, readAsArrayBuffer, readAsBinaryString, readAsText,
        readAsDataURL, abort, pattern EMPTY, pattern LOADING, pattern DONE,
        getReadyState, getResult, getResultUnsafe, getResultUnchecked,
        getError, loadStart, progress, load, abortEvent, error, loadEnd,
        FileReader(..), gTypeFileReader)
       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/FileReader Mozilla FileReader documentation> 
newFileReader :: (MonadDOM m) => m FileReader
newFileReader :: m FileReader
newFileReader = DOM FileReader -> m FileReader
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSVal -> FileReader
FileReader (JSVal -> FileReader) -> JSM JSVal -> DOM FileReader
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> JSM JSVal -> () -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"FileReader") ())

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

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

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.abort Mozilla FileReader.abort documentation> 
abort :: (MonadDOM m) => FileReader -> m ()
abort :: FileReader -> m ()
abort FileReader
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 (FileReader
self FileReader
-> Getting (JSM JSVal) FileReader (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]
"abort" ()))
pattern $bEMPTY :: a
$mEMPTY :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
EMPTY = 0
pattern $bLOADING :: a
$mLOADING :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
LOADING = 1
pattern $bDONE :: a
$mDONE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
DONE = 2

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readyState Mozilla FileReader.readyState documentation> 
getReadyState :: (MonadDOM m) => FileReader -> m Word
getReadyState :: FileReader -> m Word
getReadyState FileReader
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (Double -> Word
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Word) -> JSM Double -> DOM Word
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((FileReader
self FileReader
-> Getting (JSM JSVal) FileReader (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter FileReader (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"readyState") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
getResultUnsafe ::
                (MonadDOM m, HasCallStack) => FileReader -> m StringOrArrayBuffer
getResultUnsafe :: FileReader -> m StringOrArrayBuffer
getResultUnsafe FileReader
self
  = DOM StringOrArrayBuffer -> m StringOrArrayBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((FileReader
self FileReader
-> Getting (JSM JSVal) FileReader (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter FileReader (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"result") JSM JSVal
-> (JSVal -> DOM (Maybe StringOrArrayBuffer))
-> DOM (Maybe StringOrArrayBuffer)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe StringOrArrayBuffer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe StringOrArrayBuffer)
-> (Maybe StringOrArrayBuffer -> DOM StringOrArrayBuffer)
-> DOM StringOrArrayBuffer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM StringOrArrayBuffer
-> (StringOrArrayBuffer -> DOM StringOrArrayBuffer)
-> Maybe StringOrArrayBuffer
-> DOM StringOrArrayBuffer
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM StringOrArrayBuffer
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") StringOrArrayBuffer -> DOM StringOrArrayBuffer
forall (m :: * -> *) a. Monad m => a -> m a
return)

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadstart Mozilla FileReader.onloadstart documentation> 
loadStart :: EventName FileReader ProgressEvent
loadStart :: EventName FileReader ProgressEvent
loadStart = DOMString -> EventName FileReader ProgressEvent
forall t e. DOMString -> EventName t e
unsafeEventNameAsync ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"loadstart")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onprogress Mozilla FileReader.onprogress documentation> 
progress :: EventName FileReader ProgressEvent
progress :: EventName FileReader ProgressEvent
progress = DOMString -> EventName FileReader ProgressEvent
forall t e. DOMString -> EventName t e
unsafeEventNameAsync ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"progress")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onload Mozilla FileReader.onload documentation> 
load :: EventName FileReader UIEvent
load :: EventName FileReader UIEvent
load = DOMString -> EventName FileReader UIEvent
forall t e. DOMString -> EventName t e
unsafeEventNameAsync ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"load")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onabort Mozilla FileReader.onabort documentation> 
abortEvent :: EventName FileReader UIEvent
abortEvent :: EventName FileReader UIEvent
abortEvent = DOMString -> EventName FileReader UIEvent
forall t e. DOMString -> EventName t e
unsafeEventNameAsync ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"abort")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onerror Mozilla FileReader.onerror documentation> 
error :: EventName FileReader UIEvent
error :: EventName FileReader UIEvent
error = DOMString -> EventName FileReader UIEvent
forall t e. DOMString -> EventName t e
unsafeEventNameAsync ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"error")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadend Mozilla FileReader.onloadend documentation> 
loadEnd :: EventName FileReader ProgressEvent
loadEnd :: EventName FileReader ProgressEvent
loadEnd = DOMString -> EventName FileReader ProgressEvent
forall t e. DOMString -> EventName t e
unsafeEventNameAsync ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"loadend")