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
256
357import Prelude
458
559import Data.Enum (toEnum )
660import Data.JSDate (JSDate )
7- import Data.Maybe (Maybe , fromJust )
61+ import Data.Maybe (Maybe , fromMaybe )
862import Effect (Effect )
63+ import Effect.Uncurried (EffectFn1 , EffectFn2 , runEffectFn1 , runEffectFn2 )
964import Unsafe.Coerce (unsafeCoerce )
1065import Web.DOM (ChildNode , Element , Node , NonDocumentTypeChildNode , ParentNode )
1166import Web.Event.EventTarget (EventTarget )
1267import Web.HTML.HTMLElement (HTMLElement )
1368import Web.HTML.HTMLMediaElement.CanPlayType (CanPlayType )
69+ import Web.HTML.HTMLMediaElement.CanPlayType as CanPlayType
1470import Web.HTML.HTMLMediaElement.NetworkState (NetworkState )
71+ import Web.HTML.HTMLMediaElement.NetworkState as NetworkState
1572import Web.HTML.HTMLMediaElement.ReadyState (ReadyState )
73+ import Web.HTML.HTMLMediaElement.ReadyState as ReadyState
1674import Web.Internal.FFI (unsafeReadProtoTagged )
1775
1876foreign import data HTMLMediaElement :: Type
@@ -69,10 +127,10 @@ foreign import currentSrc :: HTMLMediaElement -> Effect String
69127foreign import crossOrigin :: HTMLMediaElement -> Effect String
70128foreign import setCrossOrigin :: String -> HTMLMediaElement -> Effect Unit
71129
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
74132
75- foreign import networkStateIndex :: HTMLMediaElement -> Effect Int
133+ foreign import _networkState :: EffectFn1 HTMLMediaElement Int
76134
77135foreign import preload :: HTMLMediaElement -> Effect String
78136foreign import setPreload :: String -> HTMLMediaElement -> Effect Unit
@@ -81,12 +139,15 @@ foreign import setPreload :: String -> HTMLMediaElement -> Effect Unit
81139
82140foreign import load :: HTMLMediaElement -> Effect Unit
83141
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
85144
86- readyState :: Partial => HTMLMediaElement -> Effect ReadyState
87- readyState = map (fromJust <<< toEnum) <<< readyStateIndex
145+ foreign import _canPlayType :: EffectFn2 String HTMLMediaElement String
88146
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
90151
91152foreign import seeking :: HTMLMediaElement -> Effect Boolean
92153
0 commit comments