bellroy/elm-actor-framework/1.0.0

Formerly tricycle/elm-actor-framework. Search finds this package by either name.

Framework.Browser


Program

Elements

Documents

Application


type alias Program elmFlags appFlags appAddresses appActors appModel appMsg =
Program
elmFlags
(FrameworkModel appAddresses appModel)
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)

All of the functions in this module will return a Program. A Program describes an Elm program! How does it react to input? Does it show anything on screen? Etc.

Elements

{ factory :
appActors
-> ( Pid, appFlags )
-> ( appModel
, FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
, apply :
appModel
-> Process
appModel
output
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
, init :
elmFlags
-> FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
, view :
List output
-> Html
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
}
-> Program
elmFlags
appFlags
appAddresses
appActors
appModel
appMsg

Create an HTML element managed by Elm. The resulting elements are easy to embed in larger JavaScript projects, and lots of companies that use Elm started with this approach! Try it out on something small. If it works, great, do more! If not, revert, no big deal.

Documents

{ factory :
appActors
-> ( Pid, appFlags )
-> ( appModel
, FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
, apply :
appModel
-> Process
appModel
output
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
, init :
elmFlags
-> FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
, view :
List output
-> List
(Html
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
)
}
-> Program
elmFlags
appFlags
appAddresses
appActors
appModel
appMsg

Create an HTML document managed by Elm. This expands upon what element can do in that view now gives you control over the <title> and <body>.

Application

{ factory :
appActors
-> ( Pid, appFlags )
-> ( appModel
, FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
, apply :
appModel
-> Process
appModel
output
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
, init :
elmFlags
-> Url
-> Key
-> FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
, view :
List output
-> List
(Html
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
)
, onUrlRequest :
UrlRequest
-> FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
, onUrlChange :
Url
-> FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
}
-> Program
elmFlags
appFlags
appAddresses
appActors
appModel
appMsg

Create an application that manages Url changes.

Utility

type alias FrameworkModel appAddresses appModel =
FrameworkModel appAddresses appModel

An alias for the Internal Framework Model

{ factory :
appActors
-> ( Pid, appFlags )
-> ( appModel
, FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
, apply :
appModel
-> Process
appModel
output
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
}
-> { init :
FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
-> ( FrameworkModel appAddresses appModel
, Cmd
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
)
, update :
FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
-> FrameworkModel appAddresses appModel
-> ( FrameworkModel appAddresses appModel
, Cmd
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
)
, subscriptions :
FrameworkModel appAddresses appModel
-> Sub
(FrameworkMessage
appFlags
appAddresses
appActors
appModel
appMsg
)
, view :
(List output -> List (Html msg))
-> FrameworkModel appAddresses appModel
-> Document msg
}

Returns a record that is ready to be used on one of the elm/browsers creation functions.

This can be used to roll your own Program

getInstance : Pid -> FrameworkModel appAddresses appModel -> Maybe appModel