{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.WindowOrWorkerGlobalScope
       (setTimeout, setTimeout_, clearTimeout, setInterval, setInterval_,
        clearInterval, atob, atob_, btoa, btoa_, getOrigin,
        WindowOrWorkerGlobalScope(..), gTypeWindowOrWorkerGlobalScope,
        IsWindowOrWorkerGlobalScope, toWindowOrWorkerGlobalScope)
       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/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
setTimeout ::
           (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
             self -> handler -> Maybe Int -> m Int
setTimeout :: self -> handler -> Maybe Int -> m Int
setTimeout self
self handler
handler Maybe Int
timeout
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         (((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"setTimeout"
             [handler -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal handler
handler, Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
timeout])
            JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
setTimeout_ ::
            (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
              self -> handler -> Maybe Int -> m ()
setTimeout_ :: self -> handler -> Maybe Int -> m ()
setTimeout_ self
self handler
handler Maybe Int
timeout
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"setTimeout"
            [handler -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal handler
handler, Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
timeout]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.clearTimeout Mozilla WindowOrWorkerGlobalScope.clearTimeout documentation> 
clearTimeout ::
             (MonadDOM m, IsWindowOrWorkerGlobalScope self) =>
               self -> Maybe Int -> m ()
clearTimeout :: self -> Maybe Int -> m ()
clearTimeout self
self Maybe Int
handle
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"clearTimeout"
            [Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
handle]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setInterval Mozilla WindowOrWorkerGlobalScope.setInterval documentation> 
setInterval ::
            (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
              self -> handler -> Maybe Int -> m Int
setInterval :: self -> handler -> Maybe Int -> m Int
setInterval self
self handler
handler Maybe Int
timeout
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         (((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"setInterval"
             [handler -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal handler
handler, Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
timeout])
            JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setInterval Mozilla WindowOrWorkerGlobalScope.setInterval documentation> 
setInterval_ ::
             (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
               self -> handler -> Maybe Int -> m ()
setInterval_ :: self -> handler -> Maybe Int -> m ()
setInterval_ self
self handler
handler Maybe Int
timeout
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"setInterval"
            [handler -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal handler
handler, Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
timeout]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.clearInterval Mozilla WindowOrWorkerGlobalScope.clearInterval documentation> 
clearInterval ::
              (MonadDOM m, IsWindowOrWorkerGlobalScope self) =>
                self -> Maybe Int -> m ()
clearInterval :: self -> Maybe Int -> m ()
clearInterval self
self Maybe Int
handle
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"clearInterval"
            [Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
handle]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
atob ::
     (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString string,
      FromJSString result) =>
       self -> string -> m result
atob :: self -> string -> m result
atob self
self string
string
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"atob"
          [string -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal string
string])
         JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
atob_ ::
      (MonadDOM m, IsWindowOrWorkerGlobalScope self,
       ToJSString string) =>
        self -> string -> m ()
atob_ :: self -> string -> m ()
atob_ self
self string
string
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"atob"
            [string -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal string
string]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
btoa ::
     (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString string,
      FromJSString result) =>
       self -> string -> m result
btoa :: self -> string -> m result
btoa self
self string
string
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"btoa"
          [string -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal string
string])
         JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
btoa_ ::
      (MonadDOM m, IsWindowOrWorkerGlobalScope self,
       ToJSString string) =>
        self -> string -> m ()
btoa_ :: self -> string -> m ()
btoa_ self
self string
string
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"btoa"
            [string -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal string
string]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.origin Mozilla WindowOrWorkerGlobalScope.origin documentation> 
getOrigin ::
          (MonadDOM m, IsWindowOrWorkerGlobalScope self,
           FromJSString result) =>
            self -> m result
getOrigin :: self -> m result
getOrigin self
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> WindowOrWorkerGlobalScope
forall o.
IsWindowOrWorkerGlobalScope o =>
o -> WindowOrWorkerGlobalScope
toWindowOrWorkerGlobalScope self
self) WindowOrWorkerGlobalScope
-> Getting (JSM JSVal) WindowOrWorkerGlobalScope (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char]
-> IndexPreservingGetter WindowOrWorkerGlobalScope (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"origin") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)