These widgets run fully on the browser:
The widgets executes fully in the browser.
You can see the package Hplaygroud
that implement the browser widgets.
It has been compiler with Haste
and uses the Haste DOM internally. And also my haste-perch
library, that gives monoid and monad instances to Haste.DOM Elem's, so that a syntax similar to blaze-html can be used in the browser to create HTML elements.
It uses the same View monad that MFlow uses to compose pages, and also uses the same widget definitions. inputInt===getInt
So you can develop a widget and later decide either to run it in the browser or in the server by changing the type signature.
Moreover, the widget uses some reactive sentences (that can be ported also to the server widgets). Once a event is raised, the widget is executed.
The code is more concise and understandable than in other reactive browser frameworks and it is mode dynamic since the browser creates his own rendering at runtime, This widget does not rely on an external HTML template.
This is the beginning. The idea is to integrate it in MFlow by means of widget modifier that will run in the browser or in the server automatically, and will return the result to the server once it validates.