module Web.HTML.HTMLMediaElement ( HTMLMediaElement , fromHTMLElement , fromElement , fromNode , fromChildNode , fromNonDocumentTypeChildNode , fromParentNode , fromEventTarget , toHTMLElement , toElement , toNode , toChildNode , toNonDocumentTypeChildNode , toParentNode , toEventTarget , src , setSrc , currentSrc , crossOrigin , setCrossOrigin , networkState , preload , setPreload , load , canPlayType , readyState , seeking , currentTime , setCurrentTime , duration , getStartDate , paused , defaultPlaybackRate , setDefaultPlaybackRate , playbackRate , setPlaybackRate , ended , autoplay , setAutoplay , loop , setLoop , play , pause , mediaGroup , setMediaGroup , controls , setControls , volume , setVolume , muted , setMuted , defaultMuted , setDefaultMuted ) where import Prelude import Data.Enum (toEnum) import Data.JSDate (JSDate) import Data.Maybe (Maybe, fromMaybe) import Effect (Effect) import Effect.Uncurried (EffectFn1, EffectFn2, runEffectFn1, runEffectFn2) import Unsafe.Coerce (unsafeCoerce) import Web.DOM (ChildNode, Element, Node, NonDocumentTypeChildNode, ParentNode) import Web.Event.EventTarget (EventTarget) import Web.HTML.HTMLElement (HTMLElement) import Web.HTML.HTMLMediaElement.CanPlayType (CanPlayType) import Web.HTML.HTMLMediaElement.CanPlayType as CanPlayType import Web.HTML.HTMLMediaElement.NetworkState (NetworkState) import Web.HTML.HTMLMediaElement.NetworkState as NetworkState import Web.HTML.HTMLMediaElement.ReadyState (ReadyState) import Web.HTML.HTMLMediaElement.ReadyState as ReadyState import Web.Internal.FFI (unsafeReadProtoTagged) foreign import data HTMLMediaElement :: Type fromHTMLElement :: HTMLElement -> Maybe HTMLMediaElement fromHTMLElement = unsafeReadProtoTagged "HTMLMediaElement" fromElement :: Element -> Maybe HTMLMediaElement fromElement = unsafeReadProtoTagged "HTMLMediaElement" fromNode :: Node -> Maybe HTMLMediaElement fromNode = unsafeReadProtoTagged "HTMLMediaElement" fromChildNode :: ChildNode -> Maybe HTMLMediaElement fromChildNode = unsafeReadProtoTagged "HTMLMediaElement" fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe HTMLMediaElement fromNonDocumentTypeChildNode = unsafeReadProtoTagged "HTMLMediaElement" fromParentNode :: ParentNode -> Maybe HTMLMediaElement fromParentNode = unsafeReadProtoTagged "HTMLMediaElement" fromEventTarget :: EventTarget -> Maybe HTMLMediaElement fromEventTarget = unsafeReadProtoTagged "HTMLMediaElement" toHTMLElement :: HTMLMediaElement -> HTMLElement toHTMLElement = unsafeCoerce toElement :: HTMLMediaElement -> Element toElement = unsafeCoerce toNode :: HTMLMediaElement -> Node toNode = unsafeCoerce toChildNode :: HTMLMediaElement -> ChildNode toChildNode = unsafeCoerce toNonDocumentTypeChildNode :: HTMLMediaElement -> NonDocumentTypeChildNode toNonDocumentTypeChildNode = unsafeCoerce toParentNode :: HTMLMediaElement -> ParentNode toParentNode = unsafeCoerce toEventTarget :: HTMLMediaElement -> EventTarget toEventTarget = unsafeCoerce -- readonly attribute MediaError? error; foreign import src :: HTMLMediaElement -> Effect String foreign import setSrc :: String -> HTMLMediaElement -> Effect Unit foreign import currentSrc :: HTMLMediaElement -> Effect String foreign import crossOrigin :: HTMLMediaElement -> Effect String foreign import setCrossOrigin :: String -> HTMLMediaElement -> Effect Unit networkState :: HTMLMediaElement -> Effect NetworkState networkState el = map (fromMaybe NetworkState.Empty <<< toEnum) $ runEffectFn1 _networkState el foreign import _networkState :: EffectFn1 HTMLMediaElement Int foreign import preload :: HTMLMediaElement -> Effect String foreign import setPreload :: String -> HTMLMediaElement -> Effect Unit -- readonly attribute TimeRanges buffered; foreign import load :: HTMLMediaElement -> Effect Unit canPlayType :: String -> HTMLMediaElement -> Effect CanPlayType canPlayType ty el = map (fromMaybe CanPlayType.Unspecified <<< CanPlayType.parse) $ runEffectFn2 _canPlayType ty el foreign import _canPlayType :: EffectFn2 String HTMLMediaElement String readyState :: HTMLMediaElement -> Effect ReadyState readyState el = map (fromMaybe ReadyState.HaveNothing <<< toEnum) $ runEffectFn1 _readyState el foreign import _readyState :: EffectFn1 HTMLMediaElement Int foreign import seeking :: HTMLMediaElement -> Effect Boolean foreign import currentTime :: HTMLMediaElement -> Effect Number foreign import setCurrentTime :: Number -> HTMLMediaElement -> Effect Unit foreign import duration :: HTMLMediaElement -> Effect Number foreign import getStartDate :: HTMLMediaElement -> Effect JSDate foreign import paused :: HTMLMediaElement -> Effect Boolean foreign import defaultPlaybackRate :: HTMLMediaElement -> Effect Number foreign import setDefaultPlaybackRate :: Number -> HTMLMediaElement -> Effect Unit foreign import playbackRate :: HTMLMediaElement -> Effect Number foreign import setPlaybackRate :: Number -> HTMLMediaElement -> Effect Unit -- readonly attribute TimeRanges played; -- readonly attribute TimeRanges seekable; foreign import ended :: HTMLMediaElement -> Effect Boolean foreign import autoplay :: HTMLMediaElement -> Effect Boolean foreign import setAutoplay :: Boolean -> HTMLMediaElement -> Effect Unit foreign import loop :: HTMLMediaElement -> Effect Boolean foreign import setLoop :: Boolean -> HTMLMediaElement -> Effect Unit foreign import play :: HTMLMediaElement -> Effect Unit foreign import pause :: HTMLMediaElement -> Effect Unit foreign import mediaGroup :: HTMLMediaElement -> Effect String foreign import setMediaGroup :: String -> HTMLMediaElement -> Effect Unit -- attribute MediaController? controller; foreign import controls :: HTMLMediaElement -> Effect Boolean foreign import setControls :: Boolean -> HTMLMediaElement -> Effect Unit foreign import volume :: HTMLMediaElement -> Effect Number foreign import setVolume :: Number -> HTMLMediaElement -> Effect Unit foreign import muted :: HTMLMediaElement -> Effect Boolean foreign import setMuted :: Boolean -> HTMLMediaElement -> Effect Unit foreign import defaultMuted :: HTMLMediaElement -> Effect Boolean foreign import setDefaultMuted :: Boolean -> HTMLMediaElement -> Effect Unit -- readonly attribute AudioTrackList audioTracks; -- readonly attribute VideoTrackList videoTracks; -- readonly attribute TextTrackList textTracks; -- TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = "");