jsaddle-dom-0.10.0.0: src/JSDOM/Generated/AudioDataInit.hs
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- | Generated by dom-gen from webcodecs (webref). Do not edit.
module JSDOM.Generated.AudioDataInit
(newAudioDataInit, setFormat, getFormat, setSampleRate, getSampleRate, setNumberOfFrames, getNumberOfFrames, setNumberOfChannels, getNumberOfChannels, setTimestamp, getTimestamp, setData, getData, setTransfer, getTransfer, getTransferUnsafe, getTransferUnchecked, AudioDataInit(..), gTypeAudioDataInit)
where
import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
import qualified Prelude as P
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
import JSDOM.Types
import qualified JSDOM.Types as Types
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Generated.Enums
-- | <https://w3c.github.io/webcodecs/#dictdef-audiodatainit AudioDataInit specification>
newAudioDataInit :: (MonadDOM m, IsAllowSharedBufferSource data') => AudioSampleFormat -> Float -> Word -> Word -> Int53 -> data' -> m AudioDataInit
newAudioDataInit format sampleRate numberOfFrames numberOfChannels timestamp data' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "format" (toJSVal format)) P.>> (o ^. jss "sampleRate" (toJSVal sampleRate)) P.>> (o ^. jss "numberOfFrames" (toJSVal numberOfFrames)) P.>> (o ^. jss "numberOfChannels" (toJSVal numberOfChannels)) P.>> (o ^. jss "timestamp" (toJSVal timestamp)) P.>> (o ^. jss "data" (toJSVal data')) P.>> P.return o)) >>= fromJSValUnchecked))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-format AudioDataInit.format specification>
setFormat :: (MonadDOM m) => AudioDataInit -> AudioSampleFormat -> m ()
setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-format AudioDataInit.format specification>
getFormat :: (MonadDOM m) => AudioDataInit -> m AudioSampleFormat
getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-samplerate AudioDataInit.sampleRate specification>
setSampleRate :: (MonadDOM m) => AudioDataInit -> Float -> m ()
setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-samplerate AudioDataInit.sampleRate specification>
getSampleRate :: (MonadDOM m) => AudioDataInit -> m Float
getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofframes AudioDataInit.numberOfFrames specification>
setNumberOfFrames :: (MonadDOM m) => AudioDataInit -> Word -> m ()
setNumberOfFrames self val = liftDOM (void (self ^. jss "numberOfFrames" (toJSVal val)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofframes AudioDataInit.numberOfFrames specification>
getNumberOfFrames :: (MonadDOM m) => AudioDataInit -> m Word
getNumberOfFrames self = liftDOM ((P.round <$> ((self ^. js "numberOfFrames") >>= valToNumber)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofchannels AudioDataInit.numberOfChannels specification>
setNumberOfChannels :: (MonadDOM m) => AudioDataInit -> Word -> m ()
setNumberOfChannels self val = liftDOM (void (self ^. jss "numberOfChannels" (toJSVal val)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofchannels AudioDataInit.numberOfChannels specification>
getNumberOfChannels :: (MonadDOM m) => AudioDataInit -> m Word
getNumberOfChannels self = liftDOM ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-timestamp AudioDataInit.timestamp specification>
setTimestamp :: (MonadDOM m) => AudioDataInit -> Int53 -> m ()
setTimestamp self val = liftDOM (void (self ^. jss "timestamp" (toJSVal val)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-timestamp AudioDataInit.timestamp specification>
getTimestamp :: (MonadDOM m) => AudioDataInit -> m Int53
getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-data AudioDataInit.data specification>
setData :: (MonadDOM m, IsAllowSharedBufferSource val) => AudioDataInit -> val -> m ()
setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-data AudioDataInit.data specification>
getData :: (MonadDOM m) => AudioDataInit -> m AllowSharedBufferSource
getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
setTransfer :: (MonadDOM m, IsArrayBuffer val) => AudioDataInit -> [val] -> m ()
setTransfer self val = liftDOM (void (self ^. jss "transfer" (toJSVal val)))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
getTransfer :: (MonadDOM m) => AudioDataInit -> m (Maybe [ArrayBuffer])
getTransfer self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
getTransferUnsafe :: (MonadDOM m, HasCallStack) => AudioDataInit -> m [ArrayBuffer]
getTransferUnsafe self = liftDOM ((((self ^. js "transfer") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
getTransferUnchecked :: (MonadDOM m) => AudioDataInit -> m [ArrayBuffer]
getTransferUnchecked self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))