{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.FontFaceSet
       (newFontFaceSet, has, has_, add, add_, delete, delete_, clear,
        load, load_, check, check_, getSize, loading, loadingDone,
        loadingerror, getReady, getStatus, FontFaceSet(..),
        gTypeFontFaceSet)
       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/FontFaceSet Mozilla FontFaceSet documentation> 
newFontFaceSet :: (MonadDOM m) => [FontFace] -> m FontFaceSet
newFontFaceSet :: [FontFace] -> m FontFaceSet
newFontFaceSet [FontFace]
initialFaces
  = DOM FontFaceSet -> m FontFaceSet
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> FontFaceSet
FontFaceSet (JSVal -> FontFaceSet) -> JSM JSVal -> DOM FontFaceSet
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 ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"FontFaceSet") [JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([FontFace] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [FontFace]
initialFaces)])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.has Mozilla FontFaceSet.has documentation> 
has :: (MonadDOM m) => FontFaceSet -> FontFace -> m Bool
has :: FontFaceSet -> FontFace -> m Bool
has FontFaceSet
self FontFace
font
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"has" [FontFace -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal FontFace
font]) JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.has Mozilla FontFaceSet.has documentation> 
has_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
has_ :: FontFaceSet -> FontFace -> m ()
has_ FontFaceSet
self FontFace
font = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"has" [FontFace -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal FontFace
font]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.add Mozilla FontFaceSet.add documentation> 
add :: (MonadDOM m) => FontFaceSet -> FontFace -> m FontFaceSet
add :: FontFaceSet -> FontFace -> m FontFaceSet
add FontFaceSet
self FontFace
font
  = DOM FontFaceSet -> m FontFaceSet
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"add" [FontFace -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal FontFace
font]) JSM JSVal -> (JSVal -> DOM FontFaceSet) -> DOM FontFaceSet
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM FontFaceSet
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.add Mozilla FontFaceSet.add documentation> 
add_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
add_ :: FontFaceSet -> FontFace -> m ()
add_ FontFaceSet
self FontFace
font = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"add" [FontFace -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal FontFace
font]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.delete Mozilla FontFaceSet.delete documentation> 
delete :: (MonadDOM m) => FontFaceSet -> FontFace -> m Bool
delete :: FontFaceSet -> FontFace -> m Bool
delete FontFaceSet
self FontFace
font
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"delete" [FontFace -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal FontFace
font]) JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.delete Mozilla FontFaceSet.delete documentation> 
delete_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
delete_ :: FontFaceSet -> FontFace -> m ()
delete_ FontFaceSet
self FontFace
font
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"delete" [FontFace -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal FontFace
font]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.clear Mozilla FontFaceSet.clear documentation> 
clear :: (MonadDOM m) => FontFaceSet -> m ()
clear :: FontFaceSet -> m ()
clear FontFaceSet
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 (FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"clear" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.load Mozilla FontFaceSet.load documentation> 
load ::
     (MonadDOM m, ToJSString font, ToJSString text) =>
       FontFaceSet -> font -> Maybe text -> m [FontFace]
load :: FontFaceSet -> font -> Maybe text -> m [FontFace]
load FontFaceSet
self font
font Maybe text
text
  = DOM [FontFace] -> m [FontFace]
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"load" [font -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal font
font, Maybe text -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe text
text]) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
          JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> DOM [FontFace]) -> DOM [FontFace]
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM [FontFace]
forall o. FromJSVal o => JSVal -> JSM [o]
fromJSArrayUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.load Mozilla FontFaceSet.load documentation> 
load_ ::
      (MonadDOM m, ToJSString font, ToJSString text) =>
        FontFaceSet -> font -> Maybe text -> m ()
load_ :: FontFaceSet -> font -> Maybe text -> m ()
load_ FontFaceSet
self font
font Maybe text
text
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"load" [font -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal font
font, Maybe text -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe text
text]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
check ::
      (MonadDOM m, ToJSString font, ToJSString text) =>
        FontFaceSet -> font -> Maybe text -> m Bool
check :: FontFaceSet -> font -> Maybe text -> m Bool
check FontFaceSet
self font
font Maybe text
text
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"check" [font -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal font
font, Maybe text -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe text
text]) JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
check_ ::
       (MonadDOM m, ToJSString font, ToJSString text) =>
         FontFaceSet -> font -> Maybe text -> m ()
check_ :: FontFaceSet -> font -> Maybe text -> m ()
check_ FontFaceSet
self font
font Maybe text
text
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (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]
"check" [font -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal font
font, Maybe text -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe text
text]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.size Mozilla FontFaceSet.size documentation> 
getSize :: (MonadDOM m) => FontFaceSet -> m Int
getSize :: FontFaceSet -> m Int
getSize FontFaceSet
self
  = 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
<$> ((FontFaceSet
self FontFaceSet
-> Getting (JSM JSVal) FontFaceSet (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter FontFaceSet (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"size") 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/FontFaceSet.onloading Mozilla FontFaceSet.onloading documentation> 
loading :: EventName FontFaceSet Event
loading :: EventName FontFaceSet Event
loading = DOMString -> EventName FontFaceSet Event
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"loading")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloadingdone Mozilla FontFaceSet.onloadingdone documentation> 
loadingDone :: EventName FontFaceSet Event
loadingDone :: EventName FontFaceSet Event
loadingDone = DOMString -> EventName FontFaceSet Event
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"loadingdone")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloadingerror Mozilla FontFaceSet.onloadingerror documentation> 
loadingerror :: EventName FontFaceSet onloadingerror
loadingerror :: EventName FontFaceSet onloadingerror
loadingerror = DOMString -> EventName FontFaceSet onloadingerror
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"loadingerror")

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

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