module Web.Front where
import Data.Text (Text)
import Bridge
import Text.Blaze.Front
import Text.Blaze.Front.Renderer
import qualified Data.Text as T
createTask
:: Show a
=> Text
-> (t -> Markup a)
-> t
-> ClientTask a
createTask :: Text -> (t -> Markup a) -> t -> ClientTask a
createTask eid :: Text
eid renderer :: t -> Markup a
renderer state :: t
state = ClientTask a
task
where rhtml :: RenderHtml
rhtml = Text -> Text -> RenderHtml
AttachText Text
eid (String -> Text
T.pack (String -> Text) -> (Markup a -> String) -> Markup a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Markup a -> String
forall act. Show act => Markup act -> String
renderHtml (Markup a -> Text) -> Markup a -> Text
forall a b. (a -> b) -> a -> b
$ Markup a
markup)
markup :: Markup a
markup = t -> Markup a
renderer t
state
task :: ClientTask a
task = ClientTask :: forall a. [RenderHtml] -> [CallbackAction a] -> ClientTask a
ClientTask
{ executeRenderHtml :: [RenderHtml]
executeRenderHtml = [RenderHtml
rhtml]
, executeAction :: [CallbackAction a]
executeAction = Markup a -> [CallbackAction a] -> [CallbackAction a]
forall a. Markup a -> [CallbackAction a] -> [CallbackAction a]
registerEvents Markup a
markup []
}
emptyTask :: ClientTask a
emptyTask :: ClientTask a
emptyTask = ClientTask :: forall a. [RenderHtml] -> [CallbackAction a] -> ClientTask a
ClientTask { executeRenderHtml :: [RenderHtml]
executeRenderHtml = [], executeAction :: [CallbackAction a]
executeAction = [] }