{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Miso.FFI.Internal
(
syncCallback
, syncCallback1
, syncCallback2
, asyncCallback
, asyncCallback1
, asyncCallback2
, addEventListener
, removeEventListener
, eventPreventDefault
, eventStopPropagation
, windowAddEventListener
, windowRemoveEventListener
, windowInnerHeight
, windowInnerWidth
, now
, consoleWarn
, consoleLog
, consoleError
, consoleLog'
, eventJSON
, set
, setValue
, getBody
, getDocument
, getDrawingContext
, getHydrationContext
, getEventContext
, getComponentContext
, getElementById
, removeChild
, getHead
, diff
, nextSibling
, previousSibling
, getProperty
, callFunction
, castJSVal
, delegator
, dispatchEvent
, newEvent
, newCustomEvent
, hydrate
, focus
, blur
, select
, setSelectionRange
, scrollIntoView
, alert
, locationReload
, addStyle
, addStyleSheet
, addSrc
, addScript
, addScriptImportMap
, fetch
, CONTENT_TYPE(..)
, setDrawingContext
, flush
, Image (..)
, newImage
, Date (..)
, newDate
, toLocaleString
, getMilliseconds
, getSeconds
, files
, click
, websocketConnect
, websocketClose
, websocketSend
, eventSourceConnect
, eventSourceClose
, Blob (..)
, FormData (..)
, URLSearchParams (..)
, File (..)
, Uint8Array (..)
, ArrayBuffer (..)
, geolocation
, copyClipboard
, getUserMedia
, isOnLine
, FileReader (..)
, newFileReader
, Response (..)
, Event (..)
, populateClass
, updateRef
, inline
, splitmix32
, mathRandom
, getRandomValue
, mountComponent
, unmountComponent
, modelHydration
) where
import Control.Monad (void, forM_, (<=<), when)
import Data.Map.Strict (Map)
import Data.Maybe
import Prelude hiding ((!!))
import Miso.DSL
import Miso.String
set :: ToJSVal v => MisoString -> v -> Object -> IO ()
{-# INLINABLE set #-}
set :: forall v. ToJSVal v => MisoString -> v -> Object -> IO ()
set MisoString
k v
v Object
o = do
JSVal
v' <- v -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal v
v
MisoString -> JSVal -> Object -> IO ()
forall v. ToJSVal v => MisoString -> v -> Object -> IO ()
setProp (MisoString -> MisoString
forall a. FromMisoString a => MisoString -> a
fromMisoString MisoString
k) JSVal
v' Object
o
getProperty :: JSVal -> MisoString -> IO JSVal
{-# INLINABLE getProperty #-}
getProperty :: JSVal -> MisoString -> IO JSVal
getProperty = JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
(!)
callFunction :: (ToArgs args) => JSVal -> MisoString -> args -> IO JSVal
{-# INLINABLE callFunction #-}
callFunction :: forall args. ToArgs args => JSVal -> MisoString -> args -> IO JSVal
callFunction = JSVal -> MisoString -> args -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
(#)
castJSVal :: (FromJSVal a) => JSVal -> IO (Maybe a)
{-# INLINABLE castJSVal #-}
castJSVal :: forall a. FromJSVal a => JSVal -> IO (Maybe a)
castJSVal = JSVal -> IO (Maybe a)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
addEventListener
:: JSVal
-> MisoString
-> (JSVal -> IO ())
-> IO Function
{-# INLINABLE addEventListener #-}
addEventListener :: JSVal -> MisoString -> (JSVal -> IO ()) -> IO Function
addEventListener JSVal
self MisoString
name JSVal -> IO ()
cb = do
#ifdef GHCJS_BOTH
cb_ <- Function <$> syncCallback1 cb
#else
Function
cb_ <- JSVal -> Function
Function (JSVal -> Function) -> IO JSVal -> IO Function
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
cb
#endif
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
self JSVal -> MisoString -> (MisoString, Function) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"addEventListener" ((MisoString, Function) -> IO JSVal)
-> (MisoString, Function) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (MisoString
name, Function
cb_)
Function -> IO Function
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Function
cb_
removeEventListener
:: JSVal
-> MisoString
-> Function
-> IO ()
{-# INLINABLE removeEventListener #-}
removeEventListener :: JSVal -> MisoString -> Function -> IO ()
removeEventListener JSVal
self MisoString
name Function
cb =
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
self JSVal -> MisoString -> (MisoString, Function) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"removeEventListener" ((MisoString, Function) -> IO JSVal)
-> (MisoString, Function) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (MisoString
name, Function
cb)
windowRemoveEventListener
:: MisoString
-> Function
-> IO ()
{-# INLINABLE windowRemoveEventListener #-}
windowRemoveEventListener :: MisoString -> Function -> IO ()
windowRemoveEventListener MisoString
name Function
cb = do
JSVal
win <- MisoString -> IO JSVal
jsg MisoString
"window"
JSVal -> MisoString -> Function -> IO ()
removeEventListener JSVal
win MisoString
name Function
cb
windowAddEventListener
:: MisoString
-> (JSVal -> IO ())
-> IO Function
{-# INLINABLE windowAddEventListener #-}
windowAddEventListener :: MisoString -> (JSVal -> IO ()) -> IO Function
windowAddEventListener MisoString
name JSVal -> IO ()
cb = do
JSVal
win <- MisoString -> IO JSVal
jsg MisoString
"window"
JSVal -> MisoString -> (JSVal -> IO ()) -> IO Function
addEventListener JSVal
win MisoString
name JSVal -> IO ()
cb
eventStopPropagation :: JSVal -> IO ()
{-# INLINABLE eventStopPropagation #-}
eventStopPropagation :: JSVal -> IO ()
eventStopPropagation JSVal
e = do
JSVal
_ <- JSVal
e JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"stopPropagation" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
eventPreventDefault :: JSVal -> IO ()
{-# INLINABLE eventPreventDefault #-}
eventPreventDefault :: JSVal -> IO ()
eventPreventDefault JSVal
e = do
JSVal
_ <- JSVal
e JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"preventDefault" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
windowInnerHeight :: IO Int
{-# INLINABLE windowInnerHeight #-}
windowInnerHeight :: IO Int
windowInnerHeight = JSVal -> IO Int
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Int) -> IO JSVal -> IO Int
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< MisoString -> IO JSVal
jsg MisoString
"window" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"innerHeight"
windowInnerWidth :: IO Int
{-# INLINABLE windowInnerWidth #-}
windowInnerWidth :: IO Int
windowInnerWidth =
JSVal -> IO Int
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Int) -> IO JSVal -> IO Int
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< MisoString -> IO JSVal
jsg MisoString
"window" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"innerWidth"
now :: IO Double
{-# INLINABLE now #-}
now :: IO Double
now = JSVal -> IO Double
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Double) -> IO JSVal -> IO Double
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (MisoString -> IO JSVal
jsg MisoString
"performance" IO JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"now" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ())
consoleLog :: MisoString -> IO ()
{-# INLINABLE consoleLog #-}
consoleLog :: MisoString -> IO ()
consoleLog MisoString
v = do
JSVal
_ <- MisoString -> IO JSVal
jsg MisoString
"console" IO JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"log" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString -> MisoString
forall str. ToMisoString str => str -> MisoString
ms MisoString
v]
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
consoleWarn :: MisoString -> IO ()
{-# INLINABLE consoleWarn #-}
consoleWarn :: MisoString -> IO ()
consoleWarn MisoString
v = do
JSVal
_ <- MisoString -> IO JSVal
jsg MisoString
"console" IO JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"warn" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString -> MisoString
forall str. ToMisoString str => str -> MisoString
ms MisoString
v]
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
consoleError :: MisoString -> IO ()
{-# INLINABLE consoleError #-}
consoleError :: MisoString -> IO ()
consoleError MisoString
v = do
JSVal
_ <- MisoString -> IO JSVal
jsg MisoString
"console" IO JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"error" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString -> MisoString
forall str. ToMisoString str => str -> MisoString
ms MisoString
v]
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
consoleLog' :: ToArgs a => a -> IO ()
{-# INLINABLE consoleLog' #-}
consoleLog' :: forall a. ToArgs a => a -> IO ()
consoleLog' a
args' = do
[JSVal]
args <- a -> IO [JSVal]
forall args. ToArgs args => args -> IO [JSVal]
toArgs a
args'
JSVal
_ <- MisoString -> IO JSVal
jsg MisoString
"console" IO JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"log" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal]
args
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
eventJSON
:: JSVal
-> JSVal
-> IO JSVal
{-# INLINABLE eventJSON #-}
eventJSON :: JSVal -> JSVal -> IO JSVal
eventJSON JSVal
x JSVal
y = do
JSVal
moduleMiso <- MisoString -> IO JSVal
jsg MisoString
"miso"
JSVal
moduleMiso JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"eventJSON" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
x,JSVal
y]
updateRef
:: ToJSVal val
=> val
-> val
-> IO ()
{-# INLINABLE updateRef #-}
updateRef :: forall val. ToJSVal val => val -> val -> IO ()
updateRef val
jsval1 val
jsval2 = do
JSVal
moduleMiso <- MisoString -> IO JSVal
jsg MisoString
"miso"
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
moduleMiso JSVal -> MisoString -> (val, val) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"updateRef" ((val, val) -> IO JSVal) -> (val, val) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (val
jsval1, val
jsval2)
inline
:: (FromJSVal return, ToObject object)
=> MisoString
-> object
-> IO return
{-# INLINABLE inline #-}
inline :: forall return object.
(FromJSVal return, ToObject object) =>
MisoString -> object -> IO return
inline MisoString
code object
o = do
JSVal
moduleMiso <- MisoString -> IO JSVal
jsg MisoString
"miso"
Object JSVal
obj <- object -> IO Object
forall a. ToObject a => a -> IO Object
toObject object
o
JSVal -> IO return
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO return) -> IO JSVal -> IO return
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< do
JSVal
moduleMiso JSVal -> MisoString -> (MisoString, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"inline" ((MisoString, JSVal) -> IO JSVal)
-> (MisoString, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (MisoString
code, JSVal
obj)
populateClass
:: JSVal
-> [MisoString]
-> IO ()
{-# INLINABLE populateClass #-}
populateClass :: JSVal -> [MisoString] -> IO ()
populateClass JSVal
domRef [MisoString]
classes = do
JSVal
moduleMiso <- MisoString -> IO JSVal
jsg MisoString
"miso"
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
moduleMiso JSVal -> MisoString -> (JSVal, [MisoString]) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"populateClass" ((JSVal, [MisoString]) -> IO JSVal)
-> (JSVal, [MisoString]) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
domRef, [MisoString]
classes)
getBody :: IO JSVal
{-# INLINABLE getBody #-}
getBody :: IO JSVal
getBody = do
JSVal
ctx <- IO JSVal
getDrawingContext
JSVal
ctx JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getRoot" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
getDocument :: IO JSVal
{-# INLINABLE getDocument #-}
getDocument :: IO JSVal
getDocument = MisoString -> IO JSVal
jsg MisoString
"document"
getDrawingContext :: IO JSVal
{-# INLINABLE getDrawingContext #-}
getDrawingContext :: IO JSVal
getDrawingContext = MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"drawingContext"
getEventContext :: IO JSVal
{-# INLINABLE getEventContext #-}
getEventContext :: IO JSVal
getEventContext = MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"eventContext"
getHydrationContext :: IO JSVal
{-# INLINABLE getHydrationContext #-}
getHydrationContext :: IO JSVal
getHydrationContext = MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"hydrationContext"
getComponentContext :: IO JSVal
{-# INLINABLE getComponentContext #-}
getComponentContext :: IO JSVal
getComponentContext = MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"componentContext"
getElementById :: MisoString -> IO JSVal
{-# INLINABLE getElementById #-}
getElementById :: MisoString -> IO JSVal
getElementById MisoString
e = IO JSVal
getDocument IO JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getElementById" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
e]
getHead :: IO JSVal
{-# INLINABLE getHead #-}
getHead :: IO JSVal
getHead = do
JSVal
context <- IO JSVal
getDrawingContext
JSVal
context JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getHead" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
removeChild :: JSVal -> JSVal -> IO ()
{-# INLINABLE removeChild #-}
removeChild :: JSVal -> JSVal -> IO ()
removeChild JSVal
parent JSVal
child = do
JSVal
context <- IO JSVal
getDrawingContext
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
context JSVal -> MisoString -> (JSVal, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"removeChild" ((JSVal, JSVal) -> IO JSVal) -> (JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
parent, JSVal
child)
diff
:: Object
-> Object
-> JSVal
-> IO ()
{-# INLINABLE diff #-}
diff :: Object -> Object -> JSVal -> IO ()
diff (Object JSVal
a) (Object JSVal
b) JSVal
c = do
JSVal
moduleMiso <- MisoString -> IO JSVal
jsg MisoString
"miso"
JSVal
context <- IO JSVal
getDrawingContext
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
moduleMiso JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"diff" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
a,JSVal
b,JSVal
c,JSVal
context]
delegator :: JSVal -> JSVal -> Bool -> IO JSVal -> IO ()
{-# INLINABLE delegator #-}
delegator :: JSVal -> JSVal -> Bool -> IO JSVal -> IO ()
delegator JSVal
mountPoint JSVal
events Bool
debug IO JSVal
getVTree = do
JSVal
ctx <- IO JSVal
getEventContext
#ifdef WASM
cb <- asyncCallback1 $ \continuation -> void (call continuation global =<< getVTree)
#else
JSVal
cb <- (JSVal -> IO ()) -> IO JSVal
syncCallback1 ((JSVal -> IO ()) -> IO JSVal) -> (JSVal -> IO ()) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ \JSVal
continuation -> IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (JSVal -> JSVal -> JSVal -> IO JSVal
forall obj this args.
(ToObject obj, ToObject this, ToArgs args) =>
obj -> this -> args -> IO JSVal
call JSVal
continuation JSVal
global (JSVal -> IO JSVal) -> IO JSVal -> IO JSVal
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< IO JSVal
getVTree)
#endif
JSVal
d <- Bool -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal Bool
debug
JSVal
moduleMiso <- MisoString -> IO JSVal
jsg MisoString
"miso"
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
moduleMiso JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"delegator" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
mountPoint,JSVal
events,JSVal
cb,JSVal
d,JSVal
ctx]
hydrate :: Bool -> JSVal -> JSVal -> IO JSVal
{-# INLINABLE hydrate #-}
hydrate :: Bool -> JSVal -> JSVal -> IO JSVal
hydrate Bool
logLevel JSVal
mountPoint JSVal
vtree = do
JSVal
ll <- Bool -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal Bool
logLevel
JSVal
drawingContext <- IO JSVal
getDrawingContext
JSVal
hydrationContext <- IO JSVal
getHydrationContext
JSVal
moduleMiso <- MisoString -> IO JSVal
jsg MisoString
"miso"
JSVal
moduleMiso JSVal
-> MisoString -> (JSVal, JSVal, JSVal, JSVal, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"hydrate" ((JSVal, JSVal, JSVal, JSVal, JSVal) -> IO JSVal)
-> (JSVal, JSVal, JSVal, JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
ll, JSVal
mountPoint, JSVal
vtree, JSVal
hydrationContext, JSVal
drawingContext)
focus :: MisoString -> IO ()
{-# INLINABLE focus #-}
focus :: MisoString -> IO ()
focus MisoString
x = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> (MisoString, Int) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"callFocus" ((MisoString, Int) -> IO JSVal) -> (MisoString, Int) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (MisoString
x, Int
50 :: Int)
blur :: MisoString -> IO ()
{-# INLINABLE blur #-}
blur :: MisoString -> IO ()
blur MisoString
x = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> (MisoString, Int) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"callBlur" ((MisoString, Int) -> IO JSVal) -> (MisoString, Int) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (MisoString
x, Int
50 :: Int)
select :: MisoString -> IO ()
{-# INLINABLE select #-}
select :: MisoString -> IO ()
select MisoString
x = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> (MisoString, Int) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"callSelect" ((MisoString, Int) -> IO JSVal) -> (MisoString, Int) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (MisoString
x, Int
50 :: Int)
setSelectionRange :: MisoString -> Int -> Int -> IO ()
{-# INLINABLE setSelectionRange #-}
setSelectionRange :: MisoString -> Int -> Int -> IO ()
setSelectionRange MisoString
x Int
start Int
end = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> (MisoString, Int, Int, Int) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"callSetSelectionRange" ((MisoString, Int, Int, Int) -> IO JSVal)
-> (MisoString, Int, Int, Int) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (MisoString
x, Int
start, Int
end, Int
50 :: Int)
scrollIntoView :: MisoString -> IO ()
{-# INLINABLE scrollIntoView #-}
scrollIntoView :: MisoString -> IO ()
scrollIntoView MisoString
elId = do
JSVal
el <- MisoString -> IO JSVal
jsg MisoString
"document" IO JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getElementById" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
elId]
JSVal
_ <- JSVal
el JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"scrollIntoView" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
alert :: MisoString -> IO ()
{-# INLINABLE alert #-}
alert :: MisoString -> IO ()
alert MisoString
a = () () -> IO JSVal -> IO ()
forall a b. a -> IO b -> IO a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ MisoString -> MisoString -> IO JSVal
forall arg. ToJSVal arg => MisoString -> arg -> IO JSVal
jsg1 MisoString
"alert" MisoString
a
locationReload :: IO ()
{-# INLINABLE locationReload #-}
locationReload :: IO ()
locationReload = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ MisoString -> IO JSVal
jsg MisoString
"location" IO JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"reload" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ([] :: [MisoString])
addStyle :: MisoString -> IO JSVal
{-# INLINABLE addStyle #-}
addStyle :: MisoString -> IO JSVal
addStyle MisoString
css = do
JSVal
context <- IO JSVal
getDrawingContext
JSVal
head_ <- IO JSVal
getHead
JSVal
style <- JSVal
context JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"createElement" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
"style" :: MisoString]
JSVal -> MisoString -> MisoString -> IO ()
forall o v.
(ToObject o, ToJSVal v) =>
o -> MisoString -> v -> IO ()
setField JSVal
style MisoString
"innerHTML" MisoString
css
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
context JSVal -> MisoString -> (JSVal, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"appendChild" ((JSVal, JSVal) -> IO JSVal) -> (JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
head_, JSVal
style)
JSVal -> IO JSVal
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure JSVal
style
addScript :: Bool -> MisoString -> IO JSVal
{-# INLINABLE addScript #-}
addScript :: Bool -> MisoString -> IO JSVal
addScript Bool
useModule MisoString
js_ = do
JSVal
context <- IO JSVal
getDrawingContext
JSVal
head_ <- IO JSVal
getHead
JSVal
script <- JSVal
context JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"createElement" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
"script" :: MisoString]
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when Bool
useModule (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal -> MisoString -> MisoString -> IO ()
forall o v.
(ToObject o, ToJSVal v) =>
o -> MisoString -> v -> IO ()
setField JSVal
script MisoString
"type" (MisoString
"module" :: MisoString)
JSVal -> MisoString -> MisoString -> IO ()
forall o v.
(ToObject o, ToJSVal v) =>
o -> MisoString -> v -> IO ()
setField JSVal
script MisoString
"innerHTML" MisoString
js_
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
context JSVal -> MisoString -> (JSVal, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"appendChild" ((JSVal, JSVal) -> IO JSVal) -> (JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
head_, JSVal
script)
JSVal -> IO JSVal
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure JSVal
script
setValue :: JSVal -> MisoString -> IO ()
{-# INLINABLE setValue #-}
setValue :: JSVal -> MisoString -> IO ()
setValue JSVal
domRef MisoString
value = JSVal -> MisoString -> MisoString -> IO ()
forall o v.
(ToObject o, ToJSVal v) =>
o -> MisoString -> v -> IO ()
setField JSVal
domRef MisoString
"value" MisoString
value
addScriptImportMap :: MisoString -> IO JSVal
{-# INLINABLE addScriptImportMap #-}
addScriptImportMap :: MisoString -> IO JSVal
addScriptImportMap MisoString
impMap = do
JSVal
context <- IO JSVal
getDrawingContext
JSVal
head_ <- IO JSVal
getHead
JSVal
script <- JSVal
context JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"createElement" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
"script" :: MisoString]
JSVal -> MisoString -> MisoString -> IO ()
forall o v.
(ToObject o, ToJSVal v) =>
o -> MisoString -> v -> IO ()
setField JSVal
script MisoString
"type" (MisoString
"importmap" :: MisoString)
JSVal -> MisoString -> MisoString -> IO ()
forall o v.
(ToObject o, ToJSVal v) =>
o -> MisoString -> v -> IO ()
setField JSVal
script MisoString
"innerHTML" MisoString
impMap
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
context JSVal -> MisoString -> (JSVal, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"appendChild" ((JSVal, JSVal) -> IO JSVal) -> (JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
head_, JSVal
script)
JSVal -> IO JSVal
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure JSVal
script
addSrc :: MisoString -> Bool -> IO JSVal
{-# INLINABLE addSrc #-}
addSrc :: MisoString -> Bool -> IO JSVal
addSrc MisoString
url Bool
cacheBust = do
JSVal
context <- IO JSVal
getDrawingContext
JSVal
head_ <- IO JSVal
getHead
JSVal
link <- JSVal
context JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"createElement" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
"script" :: MisoString]
MisoString
url_ <- MisoString -> Bool -> IO MisoString
appendTimestamp MisoString
url Bool
cacheBust
JSVal
_ <- JSVal
link JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"setAttribute" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
"src", MisoString
url_ ]
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
context JSVal -> MisoString -> (JSVal, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"appendChild" ((JSVal, JSVal) -> IO JSVal) -> (JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
head_, JSVal
link)
JSVal -> IO JSVal
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure JSVal
link
addStyleSheet :: MisoString -> Bool -> IO JSVal
{-# INLINABLE addStyleSheet #-}
addStyleSheet :: MisoString -> Bool -> IO JSVal
addStyleSheet MisoString
url Bool
cacheBust = do
JSVal
context <- IO JSVal
getDrawingContext
JSVal
head_ <- IO JSVal
getHead
JSVal
link <- JSVal
context JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"createElement" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
"link" :: MisoString]
JSVal
_ <- JSVal
link JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"setAttribute" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
"rel",MisoString
"stylesheet" :: MisoString]
MisoString
url_ <- MisoString -> Bool -> IO MisoString
appendTimestamp MisoString
url Bool
cacheBust
JSVal
_ <- JSVal
link JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"setAttribute" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
"href", MisoString
url_ ]
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
context JSVal -> MisoString -> (JSVal, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"appendChild" ((JSVal, JSVal) -> IO JSVal) -> (JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
head_, JSVal
link)
JSVal -> IO JSVal
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure JSVal
link
appendTimestamp :: MisoString -> Bool -> IO MisoString
{-# INLINABLE appendTimestamp #-}
appendTimestamp :: MisoString -> Bool -> IO MisoString
appendTimestamp MisoString
url = \case
Bool
True -> do
Double
ts <- JSVal -> IO Double
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Double) -> IO JSVal -> IO Double
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< do MisoString -> IO JSVal
jsg MisoString
"Date" IO JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"now" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
MisoString -> IO MisoString
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (MisoString
url MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> MisoString
"?v=" MisoString -> MisoString -> MisoString
forall a. Semigroup a => a -> a -> a
<> Double -> MisoString
forall str. ToMisoString str => str -> MisoString
ms (Double
ts :: Double))
Bool
False ->
MisoString -> IO MisoString
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure MisoString
url
fetch
:: (FromJSVal success, FromJSVal error)
=> MisoString
-> MisoString
-> Maybe JSVal
-> [(MisoString, MisoString)]
-> (Response success -> IO ())
-> (Response error -> IO ())
-> CONTENT_TYPE
-> IO ()
{-# INLINABLE fetch #-}
fetch :: forall success error.
(FromJSVal success, FromJSVal error) =>
MisoString
-> MisoString
-> Maybe JSVal
-> [(MisoString, MisoString)]
-> (Response success -> IO ())
-> (Response error -> IO ())
-> CONTENT_TYPE
-> IO ()
fetch MisoString
url MisoString
method Maybe JSVal
maybeBody [(MisoString, MisoString)]
requestHeaders Response success -> IO ()
successful Response error -> IO ()
errorful CONTENT_TYPE
type_ = do
JSVal
successful_ <- JSVal -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (JSVal -> IO JSVal) -> IO JSVal -> IO JSVal
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (JSVal -> IO ()) -> IO JSVal
asyncCallback1 (Response success -> IO ()
successful (Response success -> IO ())
-> (JSVal -> IO (Response success)) -> JSVal -> IO ()
forall (m :: * -> *) b c a.
Monad m =>
(b -> m c) -> (a -> m b) -> a -> m c
<=< JSVal -> IO (Response success)
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked)
JSVal
errorful_ <- JSVal -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (JSVal -> IO JSVal) -> IO JSVal -> IO JSVal
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (JSVal -> IO ()) -> IO JSVal
asyncCallback1 (Response error -> IO ()
errorful (Response error -> IO ())
-> (JSVal -> IO (Response error)) -> JSVal -> IO ()
forall (m :: * -> *) b c a.
Monad m =>
(b -> m c) -> (a -> m b) -> a -> m c
<=< JSVal -> IO (Response error)
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked)
JSVal
moduleMiso <- MisoString -> IO JSVal
jsg MisoString
"miso"
JSVal
url_ <- MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal MisoString
url
JSVal
method_ <- MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal MisoString
method
JSVal
body_ <- Maybe JSVal -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal Maybe JSVal
maybeBody
Object JSVal
headers_ <- do
Object
o <- IO Object
create
[(MisoString, MisoString)]
-> ((MisoString, MisoString) -> IO ()) -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ [(MisoString, MisoString)]
requestHeaders (((MisoString, MisoString) -> IO ()) -> IO ())
-> ((MisoString, MisoString) -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \(MisoString
k,MisoString
v) -> MisoString -> MisoString -> Object -> IO ()
forall v. ToJSVal v => MisoString -> v -> Object -> IO ()
set MisoString
k MisoString
v Object
o
Object -> IO Object
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Object
o
JSVal
typ <- CONTENT_TYPE -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal CONTENT_TYPE
type_
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
moduleMiso JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"fetchCore" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$
[ JSVal
url_
, JSVal
method_
, JSVal
body_
, JSVal
headers_
, JSVal
successful_
, JSVal
errorful_
, JSVal
typ
]
data CONTENT_TYPE
= JSON
| ARRAY_BUFFER
| TEXT
| BLOB
| BYTES
| FORM_DATA
| NONE
deriving (Int -> CONTENT_TYPE -> ShowS
[CONTENT_TYPE] -> ShowS
CONTENT_TYPE -> String
(Int -> CONTENT_TYPE -> ShowS)
-> (CONTENT_TYPE -> String)
-> ([CONTENT_TYPE] -> ShowS)
-> Show CONTENT_TYPE
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CONTENT_TYPE -> ShowS
showsPrec :: Int -> CONTENT_TYPE -> ShowS
$cshow :: CONTENT_TYPE -> String
show :: CONTENT_TYPE -> String
$cshowList :: [CONTENT_TYPE] -> ShowS
showList :: [CONTENT_TYPE] -> ShowS
Show, CONTENT_TYPE -> CONTENT_TYPE -> Bool
(CONTENT_TYPE -> CONTENT_TYPE -> Bool)
-> (CONTENT_TYPE -> CONTENT_TYPE -> Bool) -> Eq CONTENT_TYPE
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CONTENT_TYPE -> CONTENT_TYPE -> Bool
== :: CONTENT_TYPE -> CONTENT_TYPE -> Bool
$c/= :: CONTENT_TYPE -> CONTENT_TYPE -> Bool
/= :: CONTENT_TYPE -> CONTENT_TYPE -> Bool
Eq)
instance ToJSVal CONTENT_TYPE where
toJSVal :: CONTENT_TYPE -> IO JSVal
toJSVal = \case
CONTENT_TYPE
JSON ->
MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString
"json" :: MisoString)
CONTENT_TYPE
ARRAY_BUFFER ->
MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString
"arrayBuffer" :: MisoString)
CONTENT_TYPE
TEXT ->
MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString
"text" :: MisoString)
CONTENT_TYPE
BLOB ->
MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString
"blob" :: MisoString)
CONTENT_TYPE
BYTES ->
MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString
"bytes" :: MisoString)
CONTENT_TYPE
FORM_DATA ->
MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString
"formData" :: MisoString)
CONTENT_TYPE
NONE ->
MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString
"none" :: MisoString)
{-# INLINE toJSVal #-}
flush :: IO ()
{-# INLINABLE flush #-}
flush :: IO ()
flush = do
JSVal
context <- IO JSVal
getDrawingContext
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
context JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"flush" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ([] :: [JSVal])
newtype Image = Image JSVal
deriving (Image -> IO JSVal
(Image -> IO JSVal) -> ToJSVal Image
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: Image -> IO JSVal
toJSVal :: Image -> IO JSVal
ToJSVal, Image -> IO Object
(Image -> IO Object) -> ToObject Image
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: Image -> IO Object
toObject :: Image -> IO Object
ToObject)
instance FromJSVal Image where
fromJSVal :: JSVal -> IO (Maybe Image)
fromJSVal = Maybe Image -> IO (Maybe Image)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe Image -> IO (Maybe Image))
-> (JSVal -> Maybe Image) -> JSVal -> IO (Maybe Image)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Image -> Maybe Image
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Image -> Maybe Image) -> (JSVal -> Image) -> JSVal -> Maybe Image
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> Image
Image
{-# INLINE fromJSVal #-}
newImage :: MisoString -> IO Image
{-# INLINABLE newImage #-}
newImage :: MisoString -> IO Image
newImage MisoString
url = do
JSVal
img <- IO JSVal -> [MisoString] -> IO JSVal
forall constructor args.
(ToObject constructor, ToArgs args) =>
constructor -> args -> IO JSVal
new (MisoString -> IO JSVal
jsg MisoString
"Image") ([] :: [MisoString])
JSVal -> MisoString -> MisoString -> IO ()
forall o v.
(ToObject o, ToJSVal v) =>
o -> MisoString -> v -> IO ()
setField JSVal
img MisoString
"src" MisoString
url
Image -> IO Image
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (JSVal -> Image
Image JSVal
img)
setDrawingContext :: MisoString -> IO ()
{-# INLINABLE setDrawingContext #-}
setDrawingContext :: MisoString -> IO ()
setDrawingContext MisoString
rendererName =
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"setDrawingContext" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
rendererName]
newtype Date = Date JSVal
deriving (Date -> IO JSVal
(Date -> IO JSVal) -> ToJSVal Date
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: Date -> IO JSVal
toJSVal :: Date -> IO JSVal
ToJSVal, Date -> IO Object
(Date -> IO Object) -> ToObject Date
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: Date -> IO Object
toObject :: Date -> IO Object
ToObject, Date -> Date -> Bool
(Date -> Date -> Bool) -> (Date -> Date -> Bool) -> Eq Date
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Date -> Date -> Bool
== :: Date -> Date -> Bool
$c/= :: Date -> Date -> Bool
/= :: Date -> Date -> Bool
Eq)
newDate :: IO Date
{-# INLINABLE newDate #-}
newDate :: IO Date
newDate = JSVal -> Date
Date (JSVal -> Date) -> IO JSVal -> IO Date
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> IO JSVal -> [MisoString] -> IO JSVal
forall constructor args.
(ToObject constructor, ToArgs args) =>
constructor -> args -> IO JSVal
new (MisoString -> IO JSVal
jsg MisoString
"Date") ([] :: [MisoString])
toLocaleString :: Date -> IO MisoString
{-# INLINABLE toLocaleString #-}
toLocaleString :: Date -> IO MisoString
toLocaleString Date
date = JSVal -> IO MisoString
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO MisoString) -> IO JSVal -> IO MisoString
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< do
Date
date Date -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"toLocaleString" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
getMilliseconds :: Date -> IO Double
{-# INLINABLE getMilliseconds #-}
getMilliseconds :: Date -> IO Double
getMilliseconds Date
date =
JSVal -> IO Double
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Double) -> IO JSVal -> IO Double
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< do
Date
date Date -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getMilliseconds" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ([] :: [MisoString])
getSeconds :: Date -> IO Double
{-# INLINABLE getSeconds #-}
getSeconds :: Date -> IO Double
getSeconds Date
date =
JSVal -> IO Double
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Double) -> IO JSVal -> IO Double
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< do
Date
date Date -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getSeconds" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ([] :: [MisoString])
nextSibling :: JSVal -> IO JSVal
{-# INLINABLE nextSibling #-}
nextSibling :: JSVal -> IO JSVal
nextSibling JSVal
domRef = JSVal
domRef JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"nextSibling"
previousSibling :: JSVal -> IO JSVal
{-# INLINABLE previousSibling #-}
previousSibling :: JSVal -> IO JSVal
previousSibling JSVal
domRef = JSVal
domRef JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"previousSibling"
files :: JSVal -> IO [JSVal]
{-# INLINABLE files #-}
files :: JSVal -> IO [JSVal]
files JSVal
domRef = JSVal -> IO [JSVal]
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO [JSVal]) -> IO JSVal -> IO [JSVal]
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< JSVal
domRef JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"files"
click :: () -> JSVal -> IO ()
{-# INLINABLE click #-}
click :: () -> JSVal -> IO ()
click () JSVal
domRef = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
domRef JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"click" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ([] :: [MisoString])
getUserMedia
:: Bool
-> Bool
-> (JSVal -> IO ())
-> (JSVal -> IO ())
-> IO ()
{-# INLINABLE getUserMedia #-}
getUserMedia :: Bool -> Bool -> (JSVal -> IO ()) -> (JSVal -> IO ()) -> IO ()
getUserMedia Bool
video Bool
audio JSVal -> IO ()
successful JSVal -> IO ()
errorful = do
Object
params <- IO Object
create
MisoString -> Bool -> Object -> IO ()
forall v. ToJSVal v => MisoString -> v -> Object -> IO ()
set MisoString
"video" Bool
video Object
params
MisoString -> Bool -> Object -> IO ()
forall v. ToJSVal v => MisoString -> v -> Object -> IO ()
set MisoString
"audio" Bool
audio Object
params
JSVal
devices <- MisoString -> IO JSVal
jsg MisoString
"navigator" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"mediaDevices"
JSVal
promise <- JSVal
devices JSVal -> MisoString -> [Object] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getUserMedia" ([Object] -> IO JSVal) -> [Object] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [Object
params]
JSVal
successfulCallback <- (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
successful
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
promise JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"then" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
successfulCallback]
JSVal
errorfulCallback <- (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
errorful
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
promise JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"catch" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
errorfulCallback]
copyClipboard
:: MisoString
-> IO ()
-> (JSVal -> IO ())
-> IO ()
{-# INLINABLE copyClipboard #-}
copyClipboard :: MisoString -> IO () -> (JSVal -> IO ()) -> IO ()
copyClipboard MisoString
txt IO ()
successful JSVal -> IO ()
errorful = do
JSVal
clipboard <- MisoString -> IO JSVal
jsg MisoString
"navigator" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"clipboard"
JSVal
promise <- JSVal
clipboard JSVal -> MisoString -> [MisoString] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"writeText" ([MisoString] -> IO JSVal) -> [MisoString] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [MisoString
txt]
JSVal
successfulCallback <- IO () -> IO JSVal
asyncCallback IO ()
successful
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
promise JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"then" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
successfulCallback]
JSVal
errorfulCallback <- (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
errorful
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
promise JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"catch" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
errorfulCallback]
websocketConnect
:: MisoString
-> IO ()
-> (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> (JSVal -> IO ())
-> Bool
-> IO JSVal
{-# INLINABLE websocketConnect #-}
websocketConnect :: MisoString
-> IO ()
-> (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> (JSVal -> IO ())
-> Bool
-> IO JSVal
websocketConnect
MisoString
url IO ()
onOpen JSVal -> IO ()
onClose
Maybe (JSVal -> IO ())
onMessageText Maybe (JSVal -> IO ())
onMessageJSON
Maybe (JSVal -> IO ())
onMessageBLOB Maybe (JSVal -> IO ())
onMessageArrayBuffer
JSVal -> IO ()
onError Bool
textOnly = do
JSVal
url_ <- MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal MisoString
url
JSVal
onOpen_ <- JSVal -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (JSVal -> IO JSVal) -> IO JSVal -> IO JSVal
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< IO () -> IO JSVal
asyncCallback IO ()
onOpen
JSVal
onClose_ <- JSVal -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (JSVal -> IO JSVal) -> IO JSVal -> IO JSVal
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
onClose
JSVal
onMessageText_ <- Maybe (JSVal -> IO ()) -> IO JSVal
withMaybe Maybe (JSVal -> IO ())
onMessageText
JSVal
onMessageJSON_ <- Maybe (JSVal -> IO ()) -> IO JSVal
withMaybe Maybe (JSVal -> IO ())
onMessageJSON
JSVal
onMessageBLOB_ <- Maybe (JSVal -> IO ()) -> IO JSVal
withMaybe Maybe (JSVal -> IO ())
onMessageBLOB
JSVal
onMessageArrayBuffer_ <- Maybe (JSVal -> IO ()) -> IO JSVal
withMaybe Maybe (JSVal -> IO ())
onMessageArrayBuffer
JSVal
onError_ <- JSVal -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (JSVal -> IO JSVal) -> IO JSVal -> IO JSVal
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
onError
JSVal
textOnly_ <- Bool -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal Bool
textOnly
MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"websocketConnect" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$
[ JSVal
url_
, JSVal
onOpen_
, JSVal
onClose_
, JSVal
onMessageText_
, JSVal
onMessageJSON_
, JSVal
onMessageBLOB_
, JSVal
onMessageArrayBuffer_
, JSVal
onError_
, JSVal
textOnly_
]
where
withMaybe :: Maybe (JSVal -> IO ()) -> IO JSVal
withMaybe Maybe (JSVal -> IO ())
Nothing = JSVal -> IO JSVal
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure JSVal
jsNull
withMaybe (Just JSVal -> IO ()
f) = (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
f
websocketClose :: JSVal -> IO ()
{-# INLINABLE websocketClose #-}
websocketClose :: JSVal -> IO ()
websocketClose JSVal
websocket = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ do
MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"websocketClose" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
websocket]
websocketSend :: JSVal -> JSVal -> IO ()
{-# INLINABLE websocketSend #-}
websocketSend :: JSVal -> JSVal -> IO ()
websocketSend JSVal
websocket JSVal
message = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ do
MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"websocketSend" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
websocket, JSVal
message]
eventSourceConnect
:: MisoString
-> IO ()
-> Maybe (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> (JSVal -> IO ())
-> Bool
-> IO JSVal
{-# INLINABLE eventSourceConnect #-}
eventSourceConnect :: MisoString
-> IO ()
-> Maybe (JSVal -> IO ())
-> Maybe (JSVal -> IO ())
-> (JSVal -> IO ())
-> Bool
-> IO JSVal
eventSourceConnect MisoString
url IO ()
onOpen Maybe (JSVal -> IO ())
onMessageText Maybe (JSVal -> IO ())
onMessageJSON JSVal -> IO ()
onError Bool
textOnly = do
JSVal
onOpen_ <- IO () -> IO JSVal
asyncCallback IO ()
onOpen
JSVal
onMessageText_ <- Maybe (JSVal -> IO ()) -> IO JSVal
withMaybe Maybe (JSVal -> IO ())
onMessageText
JSVal
onMessageJSON_ <- Maybe (JSVal -> IO ()) -> IO JSVal
withMaybe Maybe (JSVal -> IO ())
onMessageJSON
JSVal
onError_ <- (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
onError
JSVal
textOnly_ <- Bool -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal Bool
textOnly
MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal
-> MisoString
-> (MisoString, JSVal, JSVal, JSVal, JSVal, JSVal)
-> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"eventSourceConnect" ((MisoString, JSVal, JSVal, JSVal, JSVal, JSVal) -> IO JSVal)
-> (MisoString, JSVal, JSVal, JSVal, JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$
(MisoString
url, JSVal
onOpen_, JSVal
onMessageText_, JSVal
onMessageJSON_, JSVal
onError_, JSVal
textOnly_)
where
withMaybe :: Maybe (JSVal -> IO ()) -> IO JSVal
withMaybe Maybe (JSVal -> IO ())
Nothing = JSVal -> IO JSVal
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure JSVal
jsNull
withMaybe (Just JSVal -> IO ()
f) = JSVal -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (JSVal -> IO JSVal) -> IO JSVal -> IO JSVal
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
f
eventSourceClose :: JSVal -> IO ()
{-# INLINABLE eventSourceClose #-}
eventSourceClose :: JSVal -> IO ()
eventSourceClose JSVal
eventSource = IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ do
MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> [JSVal] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"eventSourceClose" ([JSVal] -> IO JSVal) -> [JSVal] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [JSVal
eventSource]
isOnLine :: IO Bool
{-# INLINABLE isOnLine #-}
isOnLine :: IO Bool
isOnLine = JSVal -> IO Bool
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Bool) -> IO JSVal -> IO Bool
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< MisoString -> IO JSVal
jsg MisoString
"navigator" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"onLine"
newtype Blob = Blob JSVal
deriving (Blob -> IO JSVal
(Blob -> IO JSVal) -> ToJSVal Blob
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: Blob -> IO JSVal
toJSVal :: Blob -> IO JSVal
ToJSVal, Blob -> Blob -> Bool
(Blob -> Blob -> Bool) -> (Blob -> Blob -> Bool) -> Eq Blob
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Blob -> Blob -> Bool
== :: Blob -> Blob -> Bool
$c/= :: Blob -> Blob -> Bool
/= :: Blob -> Blob -> Bool
Eq)
instance FromJSVal Blob where
fromJSVal :: JSVal -> IO (Maybe Blob)
fromJSVal = Maybe Blob -> IO (Maybe Blob)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe Blob -> IO (Maybe Blob))
-> (JSVal -> Maybe Blob) -> JSVal -> IO (Maybe Blob)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Blob -> Maybe Blob
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Blob -> Maybe Blob) -> (JSVal -> Blob) -> JSVal -> Maybe Blob
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> Blob
Blob
{-# INLINE fromJSVal #-}
newtype FormData = FormData JSVal
deriving (FormData -> IO JSVal
(FormData -> IO JSVal) -> ToJSVal FormData
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: FormData -> IO JSVal
toJSVal :: FormData -> IO JSVal
ToJSVal, FormData -> FormData -> Bool
(FormData -> FormData -> Bool)
-> (FormData -> FormData -> Bool) -> Eq FormData
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FormData -> FormData -> Bool
== :: FormData -> FormData -> Bool
$c/= :: FormData -> FormData -> Bool
/= :: FormData -> FormData -> Bool
Eq)
instance FromJSVal FormData where
fromJSVal :: JSVal -> IO (Maybe FormData)
fromJSVal = Maybe FormData -> IO (Maybe FormData)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe FormData -> IO (Maybe FormData))
-> (JSVal -> Maybe FormData) -> JSVal -> IO (Maybe FormData)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FormData -> Maybe FormData
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (FormData -> Maybe FormData)
-> (JSVal -> FormData) -> JSVal -> Maybe FormData
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> FormData
FormData
{-# INLINE fromJSVal #-}
instance FromJSVal ArrayBuffer where
fromJSVal :: JSVal -> IO (Maybe ArrayBuffer)
fromJSVal = Maybe ArrayBuffer -> IO (Maybe ArrayBuffer)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe ArrayBuffer -> IO (Maybe ArrayBuffer))
-> (JSVal -> Maybe ArrayBuffer) -> JSVal -> IO (Maybe ArrayBuffer)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ArrayBuffer -> Maybe ArrayBuffer
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ArrayBuffer -> Maybe ArrayBuffer)
-> (JSVal -> ArrayBuffer) -> JSVal -> Maybe ArrayBuffer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> ArrayBuffer
ArrayBuffer
{-# INLINE fromJSVal #-}
newtype ArrayBuffer = ArrayBuffer JSVal
deriving (ArrayBuffer -> ArrayBuffer -> Bool
(ArrayBuffer -> ArrayBuffer -> Bool)
-> (ArrayBuffer -> ArrayBuffer -> Bool) -> Eq ArrayBuffer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ArrayBuffer -> ArrayBuffer -> Bool
== :: ArrayBuffer -> ArrayBuffer -> Bool
$c/= :: ArrayBuffer -> ArrayBuffer -> Bool
/= :: ArrayBuffer -> ArrayBuffer -> Bool
Eq, ArrayBuffer -> IO JSVal
(ArrayBuffer -> IO JSVal) -> ToJSVal ArrayBuffer
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: ArrayBuffer -> IO JSVal
toJSVal :: ArrayBuffer -> IO JSVal
ToJSVal)
geolocation :: (JSVal -> IO ()) -> (JSVal -> IO ()) -> IO ()
{-# INLINABLE geolocation #-}
geolocation :: (JSVal -> IO ()) -> (JSVal -> IO ()) -> IO ()
geolocation JSVal -> IO ()
successful JSVal -> IO ()
errorful = do
JSVal
geo <- MisoString -> IO JSVal
jsg MisoString
"navigator" IO JSVal -> MisoString -> IO JSVal
forall o. ToObject o => o -> MisoString -> IO JSVal
! MisoString
"geolocation"
JSVal
cb1 <- (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
successful
JSVal
cb2 <- (JSVal -> IO ()) -> IO JSVal
asyncCallback1 JSVal -> IO ()
errorful
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
geo JSVal -> MisoString -> (JSVal, JSVal) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getCurrentPosition" ((JSVal, JSVal) -> IO JSVal) -> (JSVal, JSVal) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (JSVal
cb1, JSVal
cb2)
newtype File = File JSVal
deriving (File -> IO JSVal
(File -> IO JSVal) -> ToJSVal File
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: File -> IO JSVal
toJSVal :: File -> IO JSVal
ToJSVal, File -> IO Object
(File -> IO Object) -> ToObject File
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: File -> IO Object
toObject :: File -> IO Object
ToObject, File -> File -> Bool
(File -> File -> Bool) -> (File -> File -> Bool) -> Eq File
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: File -> File -> Bool
== :: File -> File -> Bool
$c/= :: File -> File -> Bool
/= :: File -> File -> Bool
Eq)
instance FromJSVal File where
fromJSVal :: JSVal -> IO (Maybe File)
fromJSVal = Maybe File -> IO (Maybe File)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe File -> IO (Maybe File))
-> (JSVal -> Maybe File) -> JSVal -> IO (Maybe File)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. File -> Maybe File
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (File -> Maybe File) -> (JSVal -> File) -> JSVal -> Maybe File
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> File
File
{-# INLINE fromJSVal #-}
newtype Uint8Array = Uint8Array JSVal
deriving Uint8Array -> IO JSVal
(Uint8Array -> IO JSVal) -> ToJSVal Uint8Array
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: Uint8Array -> IO JSVal
toJSVal :: Uint8Array -> IO JSVal
ToJSVal
instance FromJSVal Uint8Array where
fromJSVal :: JSVal -> IO (Maybe Uint8Array)
fromJSVal = Maybe Uint8Array -> IO (Maybe Uint8Array)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe Uint8Array -> IO (Maybe Uint8Array))
-> (JSVal -> Maybe Uint8Array) -> JSVal -> IO (Maybe Uint8Array)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Uint8Array -> Maybe Uint8Array
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Uint8Array -> Maybe Uint8Array)
-> (JSVal -> Uint8Array) -> JSVal -> Maybe Uint8Array
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> Uint8Array
Uint8Array
{-# INLINE fromJSVal #-}
newtype FileReader = FileReader JSVal
deriving (FileReader -> IO JSVal
(FileReader -> IO JSVal) -> ToJSVal FileReader
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: FileReader -> IO JSVal
toJSVal :: FileReader -> IO JSVal
ToJSVal, FileReader -> IO Object
(FileReader -> IO Object) -> ToObject FileReader
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: FileReader -> IO Object
toObject :: FileReader -> IO Object
ToObject, FileReader -> FileReader -> Bool
(FileReader -> FileReader -> Bool)
-> (FileReader -> FileReader -> Bool) -> Eq FileReader
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FileReader -> FileReader -> Bool
== :: FileReader -> FileReader -> Bool
$c/= :: FileReader -> FileReader -> Bool
/= :: FileReader -> FileReader -> Bool
Eq)
instance FromJSVal FileReader where
fromJSVal :: JSVal -> IO (Maybe FileReader)
fromJSVal = Maybe FileReader -> IO (Maybe FileReader)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe FileReader -> IO (Maybe FileReader))
-> (JSVal -> Maybe FileReader) -> JSVal -> IO (Maybe FileReader)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FileReader -> Maybe FileReader
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (FileReader -> Maybe FileReader)
-> (JSVal -> FileReader) -> JSVal -> Maybe FileReader
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> FileReader
FileReader
{-# INLINE fromJSVal #-}
newtype URLSearchParams = URLSearchParams JSVal
deriving (URLSearchParams -> IO JSVal
(URLSearchParams -> IO JSVal) -> ToJSVal URLSearchParams
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: URLSearchParams -> IO JSVal
toJSVal :: URLSearchParams -> IO JSVal
ToJSVal, URLSearchParams -> IO Object
(URLSearchParams -> IO Object) -> ToObject URLSearchParams
forall a. (a -> IO Object) -> ToObject a
$ctoObject :: URLSearchParams -> IO Object
toObject :: URLSearchParams -> IO Object
ToObject, URLSearchParams -> URLSearchParams -> Bool
(URLSearchParams -> URLSearchParams -> Bool)
-> (URLSearchParams -> URLSearchParams -> Bool)
-> Eq URLSearchParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: URLSearchParams -> URLSearchParams -> Bool
== :: URLSearchParams -> URLSearchParams -> Bool
$c/= :: URLSearchParams -> URLSearchParams -> Bool
/= :: URLSearchParams -> URLSearchParams -> Bool
Eq)
instance FromJSVal URLSearchParams where
fromJSVal :: JSVal -> IO (Maybe URLSearchParams)
fromJSVal = Maybe URLSearchParams -> IO (Maybe URLSearchParams)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe URLSearchParams -> IO (Maybe URLSearchParams))
-> (JSVal -> Maybe URLSearchParams)
-> JSVal
-> IO (Maybe URLSearchParams)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. URLSearchParams -> Maybe URLSearchParams
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (URLSearchParams -> Maybe URLSearchParams)
-> (JSVal -> URLSearchParams) -> JSVal -> Maybe URLSearchParams
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> URLSearchParams
URLSearchParams
{-# INLINE fromJSVal #-}
newFileReader :: IO FileReader
{-# INLINABLE newFileReader #-}
newFileReader :: IO FileReader
newFileReader = do
JSVal
reader <- IO JSVal -> [MisoString] -> IO JSVal
forall constructor args.
(ToObject constructor, ToArgs args) =>
constructor -> args -> IO JSVal
new (MisoString -> IO JSVal
jsg MisoString
"FileReader") ([] :: [MisoString])
FileReader -> IO FileReader
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (JSVal -> FileReader
FileReader JSVal
reader)
data Response body
= Response
{ forall body. Response body -> Maybe Int
status :: Maybe Int
, :: Map MisoString MisoString
, forall body. Response body -> Maybe MisoString
errorMessage :: Maybe MisoString
, forall body. Response body -> body
body :: body
}
instance Functor Response where
fmap :: forall a b. (a -> b) -> Response a -> Response b
fmap a -> b
f response :: Response a
response@Response { a
body :: forall body. Response body -> body
body :: a
body } = Response a
response { body = f body }
{-# INLINE fmap #-}
instance FromJSVal body => FromJSVal (Response body) where
fromJSVal :: JSVal -> IO (Maybe (Response body))
fromJSVal JSVal
o = do
Maybe (Maybe Int)
status_ <- JSVal -> IO (Maybe (Maybe Int))
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal (JSVal -> IO (Maybe (Maybe Int)))
-> IO JSVal -> IO (Maybe (Maybe Int))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< MisoString -> Object -> IO JSVal
forall o. ToObject o => MisoString -> o -> IO JSVal
getProp MisoString
"status" (JSVal -> Object
Object JSVal
o)
Maybe (Map MisoString MisoString)
headers_ <- JSVal -> IO (Maybe (Map MisoString MisoString))
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal (JSVal -> IO (Maybe (Map MisoString MisoString)))
-> IO JSVal -> IO (Maybe (Map MisoString MisoString))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< MisoString -> Object -> IO JSVal
forall o. ToObject o => MisoString -> o -> IO JSVal
getProp MisoString
"headers" (JSVal -> Object
Object JSVal
o)
Maybe (Maybe MisoString)
errorMessage_ <- JSVal -> IO (Maybe (Maybe MisoString))
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal (JSVal -> IO (Maybe (Maybe MisoString)))
-> IO JSVal -> IO (Maybe (Maybe MisoString))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< MisoString -> Object -> IO JSVal
forall o. ToObject o => MisoString -> o -> IO JSVal
getProp MisoString
"error" (JSVal -> Object
Object JSVal
o)
Maybe body
body_ <- JSVal -> IO (Maybe body)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal (JSVal -> IO (Maybe body)) -> IO JSVal -> IO (Maybe body)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< MisoString -> Object -> IO JSVal
forall o. ToObject o => MisoString -> o -> IO JSVal
getProp MisoString
"body" (JSVal -> Object
Object JSVal
o)
Maybe (Response body) -> IO (Maybe (Response body))
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe Int
-> Map MisoString MisoString
-> Maybe MisoString
-> body
-> Response body
forall body.
Maybe Int
-> Map MisoString MisoString
-> Maybe MisoString
-> body
-> Response body
Response (Maybe Int
-> Map MisoString MisoString
-> Maybe MisoString
-> body
-> Response body)
-> Maybe (Maybe Int)
-> Maybe
(Map MisoString MisoString
-> Maybe MisoString -> body -> Response body)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Maybe Int)
status_ Maybe
(Map MisoString MisoString
-> Maybe MisoString -> body -> Response body)
-> Maybe (Map MisoString MisoString)
-> Maybe (Maybe MisoString -> body -> Response body)
forall a b. Maybe (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe (Map MisoString MisoString)
headers_ Maybe (Maybe MisoString -> body -> Response body)
-> Maybe (Maybe MisoString) -> Maybe (body -> Response body)
forall a b. Maybe (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe (Maybe MisoString)
errorMessage_ Maybe (body -> Response body)
-> Maybe body -> Maybe (Response body)
forall a b. Maybe (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe body
body_)
{-# INLINE fromJSVal #-}
newtype Event = Event JSVal
deriving (Event -> IO JSVal
(Event -> IO JSVal) -> ToJSVal Event
forall a. (a -> IO JSVal) -> ToJSVal a
$ctoJSVal :: Event -> IO JSVal
toJSVal :: Event -> IO JSVal
ToJSVal, Event -> Event -> Bool
(Event -> Event -> Bool) -> (Event -> Event -> Bool) -> Eq Event
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Event -> Event -> Bool
== :: Event -> Event -> Bool
$c/= :: Event -> Event -> Bool
/= :: Event -> Event -> Bool
Eq)
instance FromJSVal Event where
fromJSVal :: JSVal -> IO (Maybe Event)
fromJSVal = Maybe Event -> IO (Maybe Event)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Maybe Event -> IO (Maybe Event))
-> (JSVal -> Maybe Event) -> JSVal -> IO (Maybe Event)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Event -> Maybe Event
forall a. a -> Maybe a
Just (Event -> Maybe Event) -> (JSVal -> Event) -> JSVal -> Maybe Event
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> Event
Event
{-# INLINE fromJSVal #-}
dispatchEvent :: Event -> IO ()
{-# INLINABLE dispatchEvent #-}
dispatchEvent :: Event -> IO ()
dispatchEvent Event
event = do
JSVal
doc <- IO JSVal
getDocument
JSVal
_ <- JSVal
doc JSVal -> MisoString -> [Event] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"dispatchEvent" ([Event] -> IO JSVal) -> [Event] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [Event
event]
() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
newEvent :: ToArgs args => args -> IO Event
{-# INLINABLE newEvent #-}
newEvent :: forall args. ToArgs args => args -> IO Event
newEvent args
args = JSVal -> Event
Event (JSVal -> Event) -> IO JSVal -> IO Event
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> IO JSVal -> args -> IO JSVal
forall constructor args.
(ToObject constructor, ToArgs args) =>
constructor -> args -> IO JSVal
new (MisoString -> IO JSVal
jsg MisoString
"Event") args
args
newCustomEvent :: ToArgs args => args -> IO Event
{-# INLINABLE newCustomEvent #-}
newCustomEvent :: forall args. ToArgs args => args -> IO Event
newCustomEvent args
args = JSVal -> Event
Event (JSVal -> Event) -> IO JSVal -> IO Event
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> IO JSVal -> args -> IO JSVal
forall constructor args.
(ToObject constructor, ToArgs args) =>
constructor -> args -> IO JSVal
new (MisoString -> IO JSVal
jsg MisoString
"CustomEvent") args
args
splitmix32 :: Double -> IO JSVal
{-# INLINABLE splitmix32 #-}
splitmix32 :: Double -> IO JSVal
splitmix32 Double
x = MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> [Double] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"splitmix32" ([Double] -> IO JSVal) -> [Double] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [Double
x]
mathRandom :: IO Double
{-# INLINABLE mathRandom #-}
mathRandom :: IO Double
mathRandom = JSVal -> IO Double
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Double) -> IO JSVal -> IO Double
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< do
MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"mathRandom" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
getRandomValue :: IO Double
{-# INLINABLE getRandomValue #-}
getRandomValue :: IO Double
getRandomValue = JSVal -> IO Double
forall a. FromJSVal a => JSVal -> IO a
fromJSValUnchecked (JSVal -> IO Double) -> IO JSVal -> IO Double
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< do
MisoString -> IO JSVal
jsg MisoString
"miso" IO JSVal -> MisoString -> () -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"getRandomValues" (() -> IO JSVal) -> () -> IO JSVal
forall a b. (a -> b) -> a -> b
$ ()
modelHydration :: Int -> Object -> IO ()
{-# INLINABLE modelHydration #-}
modelHydration :: Int -> Object -> IO ()
modelHydration Int
vcompId Object
model_ = do
JSVal
comp <- IO JSVal
getComponentContext
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
comp JSVal -> MisoString -> (Int, Object) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"modelHydration" ((Int, Object) -> IO JSVal) -> (Int, Object) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Int
vcompId, Object
model_)
mountComponent :: Int -> Object -> IO ()
{-# INLINABLE mountComponent #-}
mountComponent :: Int -> Object -> IO ()
mountComponent Int
vcompId Object
model_ = do
JSVal
comp <- IO JSVal
getComponentContext
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
comp JSVal -> MisoString -> (Int, Object) -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"mountComponent" ((Int, Object) -> IO JSVal) -> (Int, Object) -> IO JSVal
forall a b. (a -> b) -> a -> b
$ (Int
vcompId, Object
model_)
unmountComponent :: Int -> IO ()
{-# INLINABLE unmountComponent #-}
unmountComponent :: Int -> IO ()
unmountComponent Int
vcompId = do
JSVal
comp <- IO JSVal
getComponentContext
IO JSVal -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (IO JSVal -> IO ()) -> IO JSVal -> IO ()
forall a b. (a -> b) -> a -> b
$ JSVal
comp JSVal -> MisoString -> [Int] -> IO JSVal
forall object args.
(ToObject object, ToArgs args) =>
object -> MisoString -> args -> IO JSVal
# MisoString
"unmountComponent" ([Int] -> IO JSVal) -> [Int] -> IO JSVal
forall a b. (a -> b) -> a -> b
$ [Int
vcompId]