{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.PerformanceObserver
       (newPerformanceObserver, observe, disconnect,
        PerformanceObserver(..), gTypePerformanceObserver)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver Mozilla PerformanceObserver documentation> 
newPerformanceObserver ::
                       (MonadDOM m) =>
                         PerformanceObserverCallback -> m PerformanceObserver
newPerformanceObserver :: forall (m :: * -> *).
MonadDOM m =>
PerformanceObserverCallback -> m PerformanceObserver
newPerformanceObserver PerformanceObserverCallback
callback
  = DOM PerformanceObserver -> m PerformanceObserver
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> PerformanceObserver
PerformanceObserver (JSVal -> PerformanceObserver)
-> JSM JSVal -> DOM PerformanceObserver
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new (String -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg String
"PerformanceObserver") [PerformanceObserverCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal PerformanceObserverCallback
callback])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.observe Mozilla PerformanceObserver.observe documentation> 
observe ::
        (MonadDOM m) =>
          PerformanceObserver -> PerformanceObserverInit -> m ()
observe :: forall (m :: * -> *).
MonadDOM m =>
PerformanceObserver -> PerformanceObserverInit -> m ()
observe PerformanceObserver
self PerformanceObserverInit
options
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (PerformanceObserver
self PerformanceObserver
-> Getting (JSM JSVal) PerformanceObserver (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"observe" [PerformanceObserverInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal PerformanceObserverInit
options]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.disconnect Mozilla PerformanceObserver.disconnect documentation> 
disconnect :: (MonadDOM m) => PerformanceObserver -> m ()
disconnect :: forall (m :: * -> *). MonadDOM m => PerformanceObserver -> m ()
disconnect PerformanceObserver
self = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (PerformanceObserver
self PerformanceObserver
-> Getting (JSM JSVal) PerformanceObserver (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"disconnect" ()))