front-0.0.0.2: src/Web/Front.hs
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
-- | Generate message that will be pushed to client(s) based on underlying communication.
createTask
:: Show a
=> Text -- ^ DOM Element Id.
-> (t -> Markup a) -- ^ How to render state.
-> t -- ^ State to render.
-> ClientTask a -- ^ Message that will be pushed to client(s).
createTask eid renderer state = task
where rhtml = AttachText eid (T.pack . renderHtml $ markup)
markup = renderer state
task = ClientTask
{ executeRenderHtml = [rhtml]
, executeAction = registerEvents markup []
}
emptyTask :: ClientTask a
emptyTask = ClientTask { executeRenderHtml = [], executeAction = [] }