Module
Spork.PureApp
- Package
- purescript-spork
- Repository
- natefaubion/purescript-spork
#make Source
make :: forall action model eff. PureApp model action -> Node -> Eff (AppEffects eff) (AppInstance (AppEffects eff) model action)
Builds a running PureApp
.
example domNode = do
inst <- PureApp.make app domNode
_ <- inst.subscribe \_ -> log "Got a change!"
#makeWithSelector Source
makeWithSelector :: forall action model eff. PureApp model action -> String -> Eff (AppEffects eff) (AppInstance (AppEffects eff) model action)
Builds a running PureApp
given a DOM selector.
main = do
inst <- PureApp.makeWithSelector app "#app"
_ <- inst.subscribe \_ -> log "Got a change!"
Re-exports from Spork.App
#AppInstance Source
type AppInstance eff model action = { push :: action -> Eff eff Unit, restore :: model -> Eff eff Unit, run :: Eff eff Unit, snapshot :: Eff eff model, subscribe :: (AppChange model action -> Eff eff Unit) -> Eff eff (Eff eff Unit) }
The interface for communicating with a running App.
push
- Buffers an action to be run on the next tick.run
- Initiates a tick of the App, flushing and applying all queued actions.snapshot
- Yields the current model of the App.restore
- Replaces the current model of the App.subscribe
- Listens to App changes (model and actions).
#App Source
type App effects subs model action = { init :: Transition effects model action, render :: model -> Html action, subs :: model -> Batch subs action, update :: model -> action -> Transition effects model action }
A specification for a Spork app:
render
- Renders a model toHtml
which yields actions via DOM events.update
- Takes the current model and, with a new action, transitions to a new model while optionally running effects.subs
- Determines the set of active subscriptions based on the model.init
- Initial model and effects to kickstart the application.