/
FileReader.purs
53 lines (39 loc) · 1.36 KB
/
FileReader.purs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
module Web.File.FileReader
( FileReader
, fromEventTarget
, toEventTarget
, fileReader
, readyState
, result
, abort
, readAsText
, readAsArrayBuffer
, readAsDataURL
) where
import Prelude
import Data.Maybe (Maybe, fromJust)
import Effect (Effect)
import Foreign (Foreign)
import Partial.Unsafe (unsafePartial)
import Unsafe.Coerce (unsafeCoerce)
import Web.Event.EventTarget (EventTarget)
import Web.File.Blob (Blob)
import Web.File.FileReader.ReadyState (toEnumReadyState, ReadyState)
import Web.Internal.FFI (unsafeReadProtoTagged)
foreign import data FileReader :: Type
fromEventTarget :: EventTarget -> Maybe FileReader
fromEventTarget = unsafeReadProtoTagged "FileReader"
toEventTarget :: FileReader -> EventTarget
toEventTarget = unsafeCoerce
foreign import fileReader :: Effect FileReader
foreign import error :: FileReader -> Effect Foreign
foreign import readyStateImpl :: FileReader -> Effect Int
readyState :: FileReader -> Effect ReadyState
readyState fr = do
rs <- readyStateImpl fr
pure $ unsafePartial $ fromJust $ toEnumReadyState rs
foreign import result :: FileReader -> Effect Foreign
foreign import abort :: FileReader -> Effect Unit
foreign import readAsText :: Blob -> FileReader -> Effect Unit
foreign import readAsArrayBuffer :: Blob -> FileReader -> Effect Unit
foreign import readAsDataURL :: Blob -> FileReader -> Effect Unit