1
- module Web.HTML.HTMLMediaElement where
1
+ module Web.HTML.HTMLMediaElement
2
+ ( HTMLMediaElement
3
+ , fromHTMLElement
4
+ , fromElement
5
+ , fromNode
6
+ , fromChildNode
7
+ , fromNonDocumentTypeChildNode
8
+ , fromParentNode
9
+ , fromEventTarget
10
+ , toHTMLElement
11
+ , toElement
12
+ , toNode
13
+ , toChildNode
14
+ , toNonDocumentTypeChildNode
15
+ , toParentNode
16
+ , toEventTarget
17
+ , src
18
+ , setSrc
19
+ , currentSrc
20
+ , crossOrigin
21
+ , setCrossOrigin
22
+ , networkState
23
+ , preload
24
+ , setPreload
25
+ , load
26
+ , canPlayType
27
+ , readyState
28
+ , seeking
29
+ , currentTime
30
+ , setCurrentTime
31
+ , duration
32
+ , getStartDate
33
+ , paused
34
+ , defaultPlaybackRate
35
+ , setDefaultPlaybackRate
36
+ , playbackRate
37
+ , setPlaybackRate
38
+ , ended
39
+ , autoplay
40
+ , setAutoplay
41
+ , loop
42
+ , setLoop
43
+ , play
44
+ , pause
45
+ , mediaGroup
46
+ , setMediaGroup
47
+ , controls
48
+ , setControls
49
+ , volume
50
+ , setVolume
51
+ , muted
52
+ , setMuted
53
+ , defaultMuted
54
+ , setDefaultMuted
55
+ ) where
2
56
3
57
import Prelude
4
58
5
59
import Data.Enum (toEnum )
6
60
import Data.JSDate (JSDate )
7
- import Data.Maybe (Maybe , fromJust )
61
+ import Data.Maybe (Maybe , fromMaybe )
8
62
import Effect (Effect )
63
+ import Effect.Uncurried (EffectFn1 , EffectFn2 , runEffectFn1 , runEffectFn2 )
9
64
import Unsafe.Coerce (unsafeCoerce )
10
65
import Web.DOM (ChildNode , Element , Node , NonDocumentTypeChildNode , ParentNode )
11
66
import Web.Event.EventTarget (EventTarget )
12
67
import Web.HTML.HTMLElement (HTMLElement )
13
68
import Web.HTML.HTMLMediaElement.CanPlayType (CanPlayType )
69
+ import Web.HTML.HTMLMediaElement.CanPlayType as CanPlayType
14
70
import Web.HTML.HTMLMediaElement.NetworkState (NetworkState )
71
+ import Web.HTML.HTMLMediaElement.NetworkState as NetworkState
15
72
import Web.HTML.HTMLMediaElement.ReadyState (ReadyState )
73
+ import Web.HTML.HTMLMediaElement.ReadyState as ReadyState
16
74
import Web.Internal.FFI (unsafeReadProtoTagged )
17
75
18
76
foreign import data HTMLMediaElement :: Type
@@ -69,10 +127,10 @@ foreign import currentSrc :: HTMLMediaElement -> Effect String
69
127
foreign import crossOrigin :: HTMLMediaElement -> Effect String
70
128
foreign import setCrossOrigin :: String -> HTMLMediaElement -> Effect Unit
71
129
72
- networkState :: Partial => HTMLMediaElement -> Effect NetworkState
73
- networkState = map (fromJust <<< toEnum) <<< readyStateIndex
130
+ networkState :: HTMLMediaElement -> Effect NetworkState
131
+ networkState el = map (fromMaybe NetworkState.Empty <<< toEnum) $ runEffectFn1 _networkState el
74
132
75
- foreign import networkStateIndex :: HTMLMediaElement -> Effect Int
133
+ foreign import _networkState :: EffectFn1 HTMLMediaElement Int
76
134
77
135
foreign import preload :: HTMLMediaElement -> Effect String
78
136
foreign import setPreload :: String -> HTMLMediaElement -> Effect Unit
@@ -81,12 +139,15 @@ foreign import setPreload :: String -> HTMLMediaElement -> Effect Unit
81
139
82
140
foreign import load :: HTMLMediaElement -> Effect Unit
83
141
84
- foreign import canPlayType :: String -> HTMLMediaElement -> Effect CanPlayType
142
+ canPlayType :: String -> HTMLMediaElement -> Effect CanPlayType
143
+ canPlayType ty el = map (fromMaybe CanPlayType.Unspecified <<< CanPlayType .parse) $ runEffectFn2 _canPlayType ty el
85
144
86
- readyState :: Partial => HTMLMediaElement -> Effect ReadyState
87
- readyState = map (fromJust <<< toEnum) <<< readyStateIndex
145
+ foreign import _canPlayType :: EffectFn2 String HTMLMediaElement String
88
146
89
- foreign import readyStateIndex :: HTMLMediaElement -> Effect Int
147
+ readyState :: HTMLMediaElement -> Effect ReadyState
148
+ readyState el = map (fromMaybe ReadyState.HaveNothing <<< toEnum) $ runEffectFn1 _readyState el
149
+
150
+ foreign import _readyState :: EffectFn1 HTMLMediaElement Int
90
151
91
152
foreign import seeking :: HTMLMediaElement -> Effect Boolean
92
153
0 commit comments