{-# LANGUAGE OverloadedStrings #-}
module Miso.Native.X.Element.Refresh.Event
(
onHeaderOffset
, onHeaderOffsetWith
, onHeaderOffsetMain
, onHeaderOffsetMainWith
, onRefreshStateChange
, onRefreshStateChangeWith
, onRefreshStateChangeMain
, onRefreshStateChangeMainWith
, onStartRefresh
, onStartRefreshWith
, onStartRefreshMain
, onStartRefreshMainWith
, HeaderOffsetEvent (..)
, RefreshStateChangeEvent (..)
, StartRefreshEvent (..)
, headerOffsetDecoder
, refreshStateChangeDecoder
, startRefreshDecoder
, refreshEvents
) where
import qualified Data.Map as M
import Miso.Event
import Miso.JSON
import Miso.String (MisoString)
import Miso.Types (Attribute, EventHandler, DOMRef)
refreshEvents :: Events
refreshEvents :: Events
refreshEvents
= [(MisoString, Phase)] -> Events
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList
[ (MisoString
"headeroffset", Phase
BUBBLE)
, (MisoString
"refreshstatechange", Phase
BUBBLE)
, (MisoString
"startrefresh", Phase
BUBBLE)
]
data
=
{ HeaderOffsetEvent -> Bool
isDragging :: Bool
, HeaderOffsetEvent -> Double
offsetPercent :: Double
} deriving (Int -> HeaderOffsetEvent -> ShowS
[HeaderOffsetEvent] -> ShowS
HeaderOffsetEvent -> String
(Int -> HeaderOffsetEvent -> ShowS)
-> (HeaderOffsetEvent -> String)
-> ([HeaderOffsetEvent] -> ShowS)
-> Show HeaderOffsetEvent
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> HeaderOffsetEvent -> ShowS
showsPrec :: Int -> HeaderOffsetEvent -> ShowS
$cshow :: HeaderOffsetEvent -> String
show :: HeaderOffsetEvent -> String
$cshowList :: [HeaderOffsetEvent] -> ShowS
showList :: [HeaderOffsetEvent] -> ShowS
Show, HeaderOffsetEvent -> HeaderOffsetEvent -> Bool
(HeaderOffsetEvent -> HeaderOffsetEvent -> Bool)
-> (HeaderOffsetEvent -> HeaderOffsetEvent -> Bool)
-> Eq HeaderOffsetEvent
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HeaderOffsetEvent -> HeaderOffsetEvent -> Bool
== :: HeaderOffsetEvent -> HeaderOffsetEvent -> Bool
$c/= :: HeaderOffsetEvent -> HeaderOffsetEvent -> Bool
/= :: HeaderOffsetEvent -> HeaderOffsetEvent -> Bool
Eq)
newtype RefreshStateChangeEvent
= RefreshStateChangeEvent
{ RefreshStateChangeEvent -> MisoString
state :: MisoString
} deriving (Int -> RefreshStateChangeEvent -> ShowS
[RefreshStateChangeEvent] -> ShowS
RefreshStateChangeEvent -> String
(Int -> RefreshStateChangeEvent -> ShowS)
-> (RefreshStateChangeEvent -> String)
-> ([RefreshStateChangeEvent] -> ShowS)
-> Show RefreshStateChangeEvent
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> RefreshStateChangeEvent -> ShowS
showsPrec :: Int -> RefreshStateChangeEvent -> ShowS
$cshow :: RefreshStateChangeEvent -> String
show :: RefreshStateChangeEvent -> String
$cshowList :: [RefreshStateChangeEvent] -> ShowS
showList :: [RefreshStateChangeEvent] -> ShowS
Show, RefreshStateChangeEvent -> RefreshStateChangeEvent -> Bool
(RefreshStateChangeEvent -> RefreshStateChangeEvent -> Bool)
-> (RefreshStateChangeEvent -> RefreshStateChangeEvent -> Bool)
-> Eq RefreshStateChangeEvent
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: RefreshStateChangeEvent -> RefreshStateChangeEvent -> Bool
== :: RefreshStateChangeEvent -> RefreshStateChangeEvent -> Bool
$c/= :: RefreshStateChangeEvent -> RefreshStateChangeEvent -> Bool
/= :: RefreshStateChangeEvent -> RefreshStateChangeEvent -> Bool
Eq)
newtype StartRefreshEvent
= StartRefreshEvent
{ StartRefreshEvent -> Bool
isManual :: Bool
} deriving (Int -> StartRefreshEvent -> ShowS
[StartRefreshEvent] -> ShowS
StartRefreshEvent -> String
(Int -> StartRefreshEvent -> ShowS)
-> (StartRefreshEvent -> String)
-> ([StartRefreshEvent] -> ShowS)
-> Show StartRefreshEvent
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StartRefreshEvent -> ShowS
showsPrec :: Int -> StartRefreshEvent -> ShowS
$cshow :: StartRefreshEvent -> String
show :: StartRefreshEvent -> String
$cshowList :: [StartRefreshEvent] -> ShowS
showList :: [StartRefreshEvent] -> ShowS
Show, StartRefreshEvent -> StartRefreshEvent -> Bool
(StartRefreshEvent -> StartRefreshEvent -> Bool)
-> (StartRefreshEvent -> StartRefreshEvent -> Bool)
-> Eq StartRefreshEvent
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StartRefreshEvent -> StartRefreshEvent -> Bool
== :: StartRefreshEvent -> StartRefreshEvent -> Bool
$c/= :: StartRefreshEvent -> StartRefreshEvent -> Bool
/= :: StartRefreshEvent -> StartRefreshEvent -> Bool
Eq)
headerOffsetDecoder :: Decoder HeaderOffsetEvent
= [MisoString
"detail"] [MisoString]
-> (Value -> Parser HeaderOffsetEvent) -> Decoder HeaderOffsetEvent
forall a. [MisoString] -> (Value -> Parser a) -> Decoder a
`at` Value -> Parser HeaderOffsetEvent
details
where
details :: Value -> Parser HeaderOffsetEvent
details = MisoString
-> (Object -> Parser HeaderOffsetEvent)
-> Value
-> Parser HeaderOffsetEvent
forall a. MisoString -> (Object -> Parser a) -> Value -> Parser a
withObject MisoString
"detail" ((Object -> Parser HeaderOffsetEvent)
-> Value -> Parser HeaderOffsetEvent)
-> (Object -> Parser HeaderOffsetEvent)
-> Value
-> Parser HeaderOffsetEvent
forall a b. (a -> b) -> a -> b
$ \Object
o ->
Bool -> Double -> HeaderOffsetEvent
HeaderOffsetEvent
(Bool -> Double -> HeaderOffsetEvent)
-> Parser Bool -> Parser (Double -> HeaderOffsetEvent)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> MisoString -> Parser Bool
forall a. FromJSON a => Object -> MisoString -> Parser a
.: MisoString
"isDragging"
Parser (Double -> HeaderOffsetEvent)
-> Parser Double -> Parser HeaderOffsetEvent
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> MisoString -> Parser Double
forall a. FromJSON a => Object -> MisoString -> Parser a
.: MisoString
"offsetPercent"
refreshStateChangeDecoder :: Decoder RefreshStateChangeEvent
refreshStateChangeDecoder :: Decoder RefreshStateChangeEvent
refreshStateChangeDecoder = [MisoString
"detail"] [MisoString]
-> (Value -> Parser RefreshStateChangeEvent)
-> Decoder RefreshStateChangeEvent
forall a. [MisoString] -> (Value -> Parser a) -> Decoder a
`at` Value -> Parser RefreshStateChangeEvent
details
where
details :: Value -> Parser RefreshStateChangeEvent
details = MisoString
-> (Object -> Parser RefreshStateChangeEvent)
-> Value
-> Parser RefreshStateChangeEvent
forall a. MisoString -> (Object -> Parser a) -> Value -> Parser a
withObject MisoString
"detail" ((Object -> Parser RefreshStateChangeEvent)
-> Value -> Parser RefreshStateChangeEvent)
-> (Object -> Parser RefreshStateChangeEvent)
-> Value
-> Parser RefreshStateChangeEvent
forall a b. (a -> b) -> a -> b
$ \Object
o ->
MisoString -> RefreshStateChangeEvent
RefreshStateChangeEvent (MisoString -> RefreshStateChangeEvent)
-> Parser MisoString -> Parser RefreshStateChangeEvent
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> MisoString -> Parser MisoString
forall a. FromJSON a => Object -> MisoString -> Parser a
.: MisoString
"state"
startRefreshDecoder :: Decoder StartRefreshEvent
startRefreshDecoder :: Decoder StartRefreshEvent
startRefreshDecoder = [MisoString
"detail"] [MisoString]
-> (Value -> Parser StartRefreshEvent) -> Decoder StartRefreshEvent
forall a. [MisoString] -> (Value -> Parser a) -> Decoder a
`at` Value -> Parser StartRefreshEvent
details
where
details :: Value -> Parser StartRefreshEvent
details = MisoString
-> (Object -> Parser StartRefreshEvent)
-> Value
-> Parser StartRefreshEvent
forall a. MisoString -> (Object -> Parser a) -> Value -> Parser a
withObject MisoString
"detail" ((Object -> Parser StartRefreshEvent)
-> Value -> Parser StartRefreshEvent)
-> (Object -> Parser StartRefreshEvent)
-> Value
-> Parser StartRefreshEvent
forall a b. (a -> b) -> a -> b
$ \Object
o ->
Bool -> StartRefreshEvent
StartRefreshEvent (Bool -> StartRefreshEvent)
-> Parser Bool -> Parser StartRefreshEvent
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> MisoString -> Parser Bool
forall a. FromJSON a => Object -> MisoString -> Parser a
.: MisoString
"isManual"
onHeaderOffset :: (HeaderOffsetEvent -> action) -> Attribute model action
HeaderOffsetEvent -> action
action = MisoString
-> Decoder HeaderOffsetEvent
-> (HeaderOffsetEvent -> model -> DOMRef -> action)
-> Attribute model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> Attribute model action
on MisoString
"headeroffset" Decoder HeaderOffsetEvent
headerOffsetDecoder (\HeaderOffsetEvent
e model
_ DOMRef
_ -> HeaderOffsetEvent -> action
action HeaderOffsetEvent
e)
onHeaderOffsetMain :: (HeaderOffsetEvent -> action) -> EventHandler model action
onHeaderOffsetMain :: forall action model.
(HeaderOffsetEvent -> action) -> EventHandler model action
onHeaderOffsetMain HeaderOffsetEvent -> action
action = MisoString
-> Decoder HeaderOffsetEvent
-> (HeaderOffsetEvent -> model -> DOMRef -> action)
-> EventHandler model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> EventHandler model action
onMain MisoString
"headeroffset" Decoder HeaderOffsetEvent
headerOffsetDecoder (\HeaderOffsetEvent
e model
_ DOMRef
_ -> HeaderOffsetEvent -> action
action HeaderOffsetEvent
e)
onHeaderOffsetMainWith :: (HeaderOffsetEvent -> model -> DOMRef -> action) -> EventHandler model action
onHeaderOffsetMainWith :: forall model action.
(HeaderOffsetEvent -> model -> DOMRef -> action)
-> EventHandler model action
onHeaderOffsetMainWith HeaderOffsetEvent -> model -> DOMRef -> action
action = MisoString
-> Decoder HeaderOffsetEvent
-> (HeaderOffsetEvent -> model -> DOMRef -> action)
-> EventHandler model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> EventHandler model action
onMain MisoString
"headeroffset" Decoder HeaderOffsetEvent
headerOffsetDecoder HeaderOffsetEvent -> model -> DOMRef -> action
action
onRefreshStateChange :: (RefreshStateChangeEvent -> action) -> Attribute model action
onRefreshStateChange :: forall action model.
(RefreshStateChangeEvent -> action) -> Attribute model action
onRefreshStateChange RefreshStateChangeEvent -> action
action = MisoString
-> Decoder RefreshStateChangeEvent
-> (RefreshStateChangeEvent -> model -> DOMRef -> action)
-> Attribute model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> Attribute model action
on MisoString
"refreshstatechange" Decoder RefreshStateChangeEvent
refreshStateChangeDecoder (\RefreshStateChangeEvent
e model
_ DOMRef
_ -> RefreshStateChangeEvent -> action
action RefreshStateChangeEvent
e)
onRefreshStateChangeMain :: (RefreshStateChangeEvent -> action) -> EventHandler model action
onRefreshStateChangeMain :: forall action model.
(RefreshStateChangeEvent -> action) -> EventHandler model action
onRefreshStateChangeMain RefreshStateChangeEvent -> action
action = MisoString
-> Decoder RefreshStateChangeEvent
-> (RefreshStateChangeEvent -> model -> DOMRef -> action)
-> EventHandler model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> EventHandler model action
onMain MisoString
"refreshstatechange" Decoder RefreshStateChangeEvent
refreshStateChangeDecoder (\RefreshStateChangeEvent
e model
_ DOMRef
_ -> RefreshStateChangeEvent -> action
action RefreshStateChangeEvent
e)
onRefreshStateChangeMainWith :: (RefreshStateChangeEvent -> model -> DOMRef -> action) -> EventHandler model action
onRefreshStateChangeMainWith :: forall model action.
(RefreshStateChangeEvent -> model -> DOMRef -> action)
-> EventHandler model action
onRefreshStateChangeMainWith RefreshStateChangeEvent -> model -> DOMRef -> action
action = MisoString
-> Decoder RefreshStateChangeEvent
-> (RefreshStateChangeEvent -> model -> DOMRef -> action)
-> EventHandler model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> EventHandler model action
onMain MisoString
"refreshstatechange" Decoder RefreshStateChangeEvent
refreshStateChangeDecoder RefreshStateChangeEvent -> model -> DOMRef -> action
action
onStartRefresh :: (StartRefreshEvent -> action) -> Attribute model action
onStartRefresh :: forall action model.
(StartRefreshEvent -> action) -> Attribute model action
onStartRefresh StartRefreshEvent -> action
action = MisoString
-> Decoder StartRefreshEvent
-> (StartRefreshEvent -> model -> DOMRef -> action)
-> Attribute model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> Attribute model action
on MisoString
"startrefresh" Decoder StartRefreshEvent
startRefreshDecoder (\StartRefreshEvent
e model
_ DOMRef
_ -> StartRefreshEvent -> action
action StartRefreshEvent
e)
onStartRefreshMain :: (StartRefreshEvent -> action) -> EventHandler model action
onStartRefreshMain :: forall action model.
(StartRefreshEvent -> action) -> EventHandler model action
onStartRefreshMain StartRefreshEvent -> action
action = MisoString
-> Decoder StartRefreshEvent
-> (StartRefreshEvent -> model -> DOMRef -> action)
-> EventHandler model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> EventHandler model action
onMain MisoString
"startrefresh" Decoder StartRefreshEvent
startRefreshDecoder (\StartRefreshEvent
e model
_ DOMRef
_ -> StartRefreshEvent -> action
action StartRefreshEvent
e)
onStartRefreshMainWith :: (StartRefreshEvent -> model -> DOMRef -> action) -> EventHandler model action
onStartRefreshMainWith :: forall model action.
(StartRefreshEvent -> model -> DOMRef -> action)
-> EventHandler model action
onStartRefreshMainWith StartRefreshEvent -> model -> DOMRef -> action
action = MisoString
-> Decoder StartRefreshEvent
-> (StartRefreshEvent -> model -> DOMRef -> action)
-> EventHandler model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> EventHandler model action
onMain MisoString
"startrefresh" Decoder StartRefreshEvent
startRefreshDecoder StartRefreshEvent -> model -> DOMRef -> action
action
onHeaderOffsetWith :: (HeaderOffsetEvent -> DOMRef -> action) -> Attribute model action
HeaderOffsetEvent -> DOMRef -> action
action = MisoString
-> Decoder HeaderOffsetEvent
-> (HeaderOffsetEvent -> model -> DOMRef -> action)
-> Attribute model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> Attribute model action
on MisoString
"headeroffset" Decoder HeaderOffsetEvent
headerOffsetDecoder ((HeaderOffsetEvent -> model -> DOMRef -> action)
-> Attribute model action)
-> (HeaderOffsetEvent -> model -> DOMRef -> action)
-> Attribute model action
forall a b. (a -> b) -> a -> b
$ \HeaderOffsetEvent
h model
_ DOMRef
domRef -> HeaderOffsetEvent -> DOMRef -> action
action HeaderOffsetEvent
h DOMRef
domRef
onRefreshStateChangeWith :: (RefreshStateChangeEvent -> DOMRef -> action) -> Attribute model action
onRefreshStateChangeWith :: forall action model.
(RefreshStateChangeEvent -> DOMRef -> action)
-> Attribute model action
onRefreshStateChangeWith RefreshStateChangeEvent -> DOMRef -> action
action = MisoString
-> Decoder RefreshStateChangeEvent
-> (RefreshStateChangeEvent -> model -> DOMRef -> action)
-> Attribute model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> Attribute model action
on MisoString
"refreshstatechange" Decoder RefreshStateChangeEvent
refreshStateChangeDecoder ((RefreshStateChangeEvent -> model -> DOMRef -> action)
-> Attribute model action)
-> (RefreshStateChangeEvent -> model -> DOMRef -> action)
-> Attribute model action
forall a b. (a -> b) -> a -> b
$ \RefreshStateChangeEvent
h model
_ DOMRef
domRef -> RefreshStateChangeEvent -> DOMRef -> action
action RefreshStateChangeEvent
h DOMRef
domRef
onStartRefreshWith :: (StartRefreshEvent -> DOMRef -> action) -> Attribute model action
onStartRefreshWith :: forall action model.
(StartRefreshEvent -> DOMRef -> action) -> Attribute model action
onStartRefreshWith StartRefreshEvent -> DOMRef -> action
action = MisoString
-> Decoder StartRefreshEvent
-> (StartRefreshEvent -> model -> DOMRef -> action)
-> Attribute model action
forall result model action.
MisoString
-> Decoder result
-> (result -> model -> DOMRef -> action)
-> Attribute model action
on MisoString
"startrefresh" Decoder StartRefreshEvent
startRefreshDecoder ((StartRefreshEvent -> model -> DOMRef -> action)
-> Attribute model action)
-> (StartRefreshEvent -> model -> DOMRef -> action)
-> Attribute model action
forall a b. (a -> b) -> a -> b
$ \StartRefreshEvent
h model
_ DOMRef
domRef -> StartRefreshEvent -> DOMRef -> action
action StartRefreshEvent
h DOMRef
domRef