on develop help sign in
Experiment with aligned layout.
eca0bc6Dan Brown
Quickref.md+111−94
@@ -28,33 +28,33 @@ Since MonadWidget depends on MonadHold and MonadHold depends on MonadSample, any
28
28
29```haskell
29```haskell
30-- Trivial Event
30-- Trivial Event
31−[ ] never :: Event a
31+[ ] never :: Event a
32
32
33-- Extract Event from Dynamic
33-- Extract Event from Dynamic
34[ ] updated :: Dynamic a -> Event a
34[ ] updated :: Dynamic a -> Event a
35
35
36-- Transform Event to Event using function
36-- Transform Event to Event using function
37−[ ] fmap :: (a -> b) -> Event a -> Event b
37+[ ] fmap :: (a -> b) -> Event a -> Event b
38−[ ] fmapMaybe :: (a -> Maybe b) -> Event a -> Event b
38+[ ] fmapMaybe :: (a -> Maybe b) -> Event a -> Event b
39−[ ] ffor :: Event a -> (a -> b) -> Event b
40−[ ] fforMaybe :: Event a -> (a -> Maybe b) -> Event b
41−[ ] ffilter :: (a -> Bool) -> Event a -> Event a
39+[ ] ffilter :: (a -> Bool) -> Event a -> Event a
40+[ ] ffor :: Event a -> (a -> b) -> Event b
41+[ ] fforMaybe :: Event a -> (a -> Maybe b) -> Event b
42[ ] splitE :: Event (a, b) -> (Event a, Event b)
42[ ] splitE :: Event (a, b) -> (Event a, Event b)
43
43
44-- Event to identical Event with debug trace.
44-- Event to identical Event with debug trace.
45−[ ] traceEvent :: Show a => String -> Event a -> Event a
45+[ ] traceEvent :: Show a => String -> Event a -> Event a
46−[ ] traceEventWith :: (a -> String) -> Event a -> Event a
46+[ ] traceEventWith :: (a -> String) -> Event a -> Event a
47
47
48-- Transform Event to Event by sampling Behavior or Dynamic
48-- Transform Event to Event by sampling Behavior or Dynamic
49−[ ] tag :: Behavior b -> Event a -> Event b
50−[ ] tagDyn :: Dynamic a -> Event b -> Event a
51−[ ] gate :: Behavior Bool -> Event a -> Event a
49+[ ] gate :: Behavior Bool -> Event a -> Event a
50+[ ] tag :: Behavior a -> Event b -> Event a
51+[ ] tagDyn :: Dynamic a -> Event b -> Event a
52−[ ] attach :: Behavior a -> Event b -> Event (a, b)
52+[ ] attach :: Behavior a -> Event b -> Event (a, b)
53−[ ] attachDyn :: Dynamic a -> Event b -> Event (a, b)
53+[ ] attachDyn :: Dynamic a -> Event b -> Event (a, b)
54−[ ] attachWith :: (a -> b -> c) -> Behavior a -> Event b -> Event c
54+[ ] attachWith :: (a -> b -> c) -> Behavior a -> Event b -> Event c
55−[ ] attachDynWith :: (a -> b -> c) -> Dynamic a -> Event b -> Event c
55+[ ] attachDynWith :: (a -> b -> c) -> Dynamic a -> Event b -> Event c
56−[ ] attachWithMaybe :: (a -> b -> Maybe c) -> Behavior a -> Event b -> Event c
56+[ ] attachWithMaybe :: (a -> b -> Maybe c) -> Behavior a -> Event b -> Event c
57−[ ] attachDynWithMaybe :: (a -> b -> Maybe c) -> Dynamic a -> Event b -> Event c
57+[ ] attachDynWithMaybe :: (a -> b -> Maybe c) -> Dynamic a -> Event b -> Event c
58
58
59-- Combine multiple Events
59-- Combine multiple Events
60[ ] <> :: Monoid a => Event a -> Event a -> Event a
60[ ] <> :: Monoid a => Event a -> Event a -> Event a
@@ -65,18 +65,18 @@ Since MonadWidget depends on MonadHold and MonadHold depends on MonadSample, any
65[ ] mergeMap :: Ord k => Map k (Event a) -> Event (Map k a)
65[ ] mergeMap :: Ord k => Map k (Event a) -> Event (Map k a)
66
66
67-- Efficient one-to-many fanout
67-- Efficient one-to-many fanout
68−[ ] fan :: GCompare k => Event (DMap k) -> EventSelector k
69−[ ] fanMap :: Ord k => Event (Map k a) -> EventSelector (Const2 k a)
68+[ ] fanMap :: Ord k => Event (Map k a) -> EventSelector (Const2 k a)
69+[ ] fan :: GCompare k => Event (DMap k) -> EventSelector k
70−[ ] select :: EventSelector k -> k a -> Event a
70+[ ] select :: EventSelector k -> k a -> Event a
71
71
72-- Event to Event via monadic function
72-- Event to Event via monadic function
73−[ ] push :: (a -> m (Maybe b)) -> Event a -> Event b
73+[ ] push :: (a -> m (Maybe b)) -> Event a -> Event b
74−[ ] pushAlways :: (a -> m b) -> Event a -> Event b
74+[ ] pushAlways :: (a -> m b ) -> Event a -> Event b
75 -- Note supplied function operates in [H] context
75 -- Note supplied function operates in [H] context
76
76
77-- Event to monadic Event
77-- Event to monadic Event
78−[H] headE :: Event a -> m (Event a)
78+[H] headE :: Event a -> m (Event a)
79−[H] tailE :: Event a -> m (Event a)
79+[H] tailE :: Event a -> m (Event a)
80[H] headTailE :: Event a -> m (Event a, Event a)
80[H] headTailE :: Event a -> m (Event a, Event a)
81```
81```
82
82
@@ -86,63 +86,69 @@ These functions flatten Event-of-Event, Behavior-of-Event, or Dynamic-of-Event i
86
86
87```haskell
87```haskell
88-- Flatten Event-of-Event to monadic Event. New Event is used immediately.
88-- Flatten Event-of-Event to monadic Event. New Event is used immediately.
89−[H] switchPromptly :: Event a -> Event (Event a) -> m (Event a)
89+[H] switchPromptly :: Event a -> Event (Event a) -> m (Event a)
90
90
91-- Flatten Behavior-of-Event to Event. Old Event is used during switchover.
91-- Flatten Behavior-of-Event to Event. Old Event is used during switchover.
92−[ ] switch :: Behavior (Event a) -> Event a
92+[ ] switch :: Behavior (Event a) -> Event a
93
93
94-- Flatten Dyanmic-of-Event to Event. New Event is used immediately.
94-- Flatten Dyanmic-of-Event to Event. New Event is used immediately.
95−[ ] switchPromptlyDyn :: Dynamic (Event a) -> Event a
95+[ ] switchPromptlyDyn :: Dynamic (Event a) -> Event a
96
96
97-- Flatten Event-of-Event to Event that fires when both wrapper and new Event fire.
97-- Flatten Event-of-Event to Event that fires when both wrapper and new Event fire.
98−[ ] coincidence :: Event (Event a) -> Event a
98+[ ] coincidence :: Event (Event a) -> Event a
99+
100+-- Flatten Dynamic-of-Dynamic to Dynamic. New Dynamic is used immediately.
101+-- Output updated whenever inner or outer Dynamic updates.
102+[ ] joinDyn :: Dynamic (Dynamic a) -> Dynamic a
103+[ ] joinDynThroughMap :: Ord k => Dynamic (Map k (Dynamic a)) -> Dynamic (Map k a)
104+
105+-- Flatten Event-of-Behavior to monadic Behavior
106+[H] switcher :: Behavior a -> Event (Behavior a) -> m (Behavior a)
99```
107```
100
108
101### Functions producing Behavior
109### Functions producing Behavior
102
110
103```haskell
111```haskell
104-- Trivial Behavior
112-- Trivial Behavior
105−[ ] constant :: a -> Behavior a
113+[ ] constant :: a -> Behavior a
106
114
107-- Extract Behavior from Dynamic
115-- Extract Behavior from Dynamic
108−[ ] current :: Dynamic a -> Behavior a
116+[ ] current :: Dynamic a -> Behavior a
117+
118+-- Event to monadic Behavior
119+[H] hold :: a -> Event a -> m (Behavior a)
109
120
110-- Transform Behavior to Behavior using function
121-- Transform Behavior to Behavior using function
111−[ ] fmap :: (a -> b) -> Behavior a -> Behavior b
122+[ ] fmap :: (a -> b) -> Behavior a -> Behavior b
112−[ ] ffor :: Behavior a -> (a -> b) -> Behavior b
123+[ ] ffor :: Behavior a -> (a -> b) -> Behavior b
113[ ] <*> :: Behavior (a -> b) -> Behavior a -> Behavior b
124[ ] <*> :: Behavior (a -> b) -> Behavior a -> Behavior b
114[ ] >>= :: Behavior a -> (a -> Behavior b) -> Behavior b
125[ ] >>= :: Behavior a -> (a -> Behavior b) -> Behavior b
115[ ] <> :: Monoid a => Behavior a -> Behavior a -> Behavior a
126[ ] <> :: Monoid a => Behavior a -> Behavior a -> Behavior a
127+-- ... plus many more due to typeclass membership
116
128
117-- Behavior to Behavior via monadic value
129-- Behavior to Behavior via monadic value
118[S] sample :: Behavior a -> m a
130[S] sample :: Behavior a -> m a
119−[ ] pull :: m a -> Behavior a
131+[ ] pull :: m a -> Behavior a
120 -- Note supplied value is in [S] context
132 -- Note supplied value is in [S] context
121−
122−-- Event to monadic Behavior
123−[H] hold :: a -> Event a -> m (Behavior a)
124−
125−-- Flatten Event-of-Behavior to monadic Behavior
126−[H] switcher :: Behavior a -> Event (Behavior a) -> m (Behavior a)
127```
133```
128
134
129### Functions producing Dynamic
135### Functions producing Dynamic
130
136
131```haskell
137```haskell
132-- Trivial Dynamic
138-- Trivial Dynamic
133−[ ] constDyn :: a -> Dynamic a
139+[ ] constDyn :: a -> Dynamic a
134
140
135-- Construct Dynamic from Event
141-- Construct Dynamic from Event
136−[H] holdDyn :: a -> Event a -> m (Dynamic a)
142+[H] holdDyn :: a -> Event a -> m (Dynamic a)
137−[H] foldDyn :: (a -> b -> b) -> b -> Event a -> m (Dynamic b)
143+[H] foldDyn :: (a -> b -> b) -> b -> Event a -> m (Dynamic b)
138[H] foldDynM :: (a -> b -> m' b) -> b -> Event a -> m (Dynamic b)
144[H] foldDynM :: (a -> b -> m' b) -> b -> Event a -> m (Dynamic b)
139 -- Note supplied function operates in [H] context
145 -- Note supplied function operates in [H] context
140[H] count :: Num b => Event a -> m (Dynamic b)
146[H] count :: Num b => Event a -> m (Dynamic b)
141[H] toggle :: Bool -> Event a -> m (Dynamic Bool)
147[H] toggle :: Bool -> Event a -> m (Dynamic Bool)
142
148
143-- Transform Dynamic to Dynamic using function
149-- Transform Dynamic to Dynamic using function
144−[H] mapDyn :: (a -> b) -> Dynamic a -> m (Dynamic b)
150+[H] forDyn :: Dynamic a -> (a -> b) -> m (Dynamic b)
145−[H] forDyn :: Dynamic a -> (a -> b) -> m (Dynamic b)
151+[H] mapDyn :: (a -> b) -> Dynamic a -> m (Dynamic b)
146[H] mapDynM :: (a -> m' b) -> Dynamic a -> m (Dynamic b)
152[H] mapDynM :: (a -> m' b) -> Dynamic a -> m (Dynamic b)
147 -- Note supplied function runs in [S] context
153 -- Note supplied function runs in [S] context
148[H] splitDyn :: Dynamic (a, b) -> m (Dynamic a, Dynamic b)
154[H] splitDyn :: Dynamic (a, b) -> m (Dynamic a, Dynamic b)
@@ -153,20 +159,15 @@ These functions flatten Event-of-Event, Behavior-of-Event, or Dynamic-of-Event i
153[H] combineDyn :: (a -> b -> c) -> Dynamic a -> Dynamic b -> m (Dynamic c)
159[H] combineDyn :: (a -> b -> c) -> Dynamic a -> Dynamic b -> m (Dynamic c)
154
160
155-- Efficient one-to-many fanout
161-- Efficient one-to-many fanout
156−[ ] demux :: Ord k => Dynamic k -> Demux k
162+[ ] demux :: Ord k => Dynamic k -> Demux k
157−[H] getDemuxed :: Eq k => Demux k -> k -> m (Dynamic Bool)
163+[H] getDemuxed :: Eq k => Demux k -> k -> m (Dynamic Bool)
158
164
159-- Dynamic to Dynamic, removing updates w/o value change
165-- Dynamic to Dynamic, removing updates w/o value change
160[ ] nubDyn :: Eq a => Dynamic a -> Dynamic a
166[ ] nubDyn :: Eq a => Dynamic a -> Dynamic a
161
167
162-- Dynamic to identical Dynamic with debug trace.
168-- Dynamic to identical Dynamic with debug trace.
163−[ ] traceDyn :: Show a => String -> Dynamic a -> Dynamic a
169+[ ] traceDyn :: Show a => String -> Dynamic a -> Dynamic a
164−[ ] traceDynWith :: (a -> String) -> Dynamic a -> Dynamic a
170+[ ] traceDynWith :: (a -> String) -> Dynamic a -> Dynamic a
165−
166−-- Flatten Dynamic-of-Dynamic to Dynamic. New Dynamic is used immediately.
167−-- Output updated whenever inner or outer Dynamic updates.
168−[ ] joinDyn :: Dynamic (Dynamic a) -> Dynamic a
169−[ ] joinDynThroughMap :: Ord k => Dynamic (Map k (Dynamic a)) -> Dynamic (Map k a)
170```
171```
171
172
172## Reflex-Dom
173## Reflex-Dom
@@ -182,37 +183,37 @@ Widgets may return any type (this is 'a' in many of the functions below). Often
182```haskell
183```haskell
183-- Simplest form. Create a widget of given type containing the given child.
184-- Simplest form. Create a widget of given type containing the given child.
184-- Return whatever the child returns.
185-- Return whatever the child returns.
185−[W] el :: String -> m a -> m a
186+[W] el :: String -> m a -> m a
186
187
187-- This version returns the 'El' as well.
188-- This version returns the 'El' as well.
188−[W] el' :: String -> m a -> m (El, a)
189+[W] el' :: String -> m a -> m (El, a)
189
190
190−-- These two additionaly apply attributes to the element, such as ("class" =: "blah")
191+-- These two additionally apply attributes to the element, such as ("class" =: "blah")
191−[W] elAttr :: String -> Map String String -> m a -> m a
192+[W] elAttr :: String -> Map String String -> m a -> m a
192−[W] elAttr' :: String -> Map String String -> m a -> m (El, a)
193+[W] elAttr' :: String -> Map String String -> m a -> m (El, a)
193
194
194-- As above, but now the attribute map is Dynamic
195-- As above, but now the attribute map is Dynamic
195−[W] elDynAttr :: String -> Dynamic (Map String String) -> m a -> m a
196+[W] elDynAttr :: String -> Dynamic (Map String String) -> m a -> m a
196[W] elDynAttr' :: String -> Dynamic (Map String String) -> m a -> m (El, a)
197[W] elDynAttr' :: String -> Dynamic (Map String String) -> m a -> m (El, a)
197
198
198-- Shortcut for elAttr when you only want to set the "class" attribute.
199-- Shortcut for elAttr when you only want to set the "class" attribute.
199−[W] elClass :: String -> String -> m a -> m a
200+[W] elClass :: String -> String -> m a -> m a
200
201
201-- Even shorter-cut for above when element type is "div". Create a div of given class.
202-- Even shorter-cut for above when element type is "div". Create a div of given class.
202−[W] divClass :: String -> m a -> m a
203+[W] divClass :: String -> m a -> m a
203
204
204-- Create a widget of given type with arbitrary, Dymamic HTML inside.
205-- Create a widget of given type with arbitrary, Dymamic HTML inside.
205−[W] elDynHtml' :: String -> Dynamic String -> m El
206+[W] elDynHtml' :: String -> Dynamic String -> m El
206[W] elDynHtmlAttr' :: String -> Map String String -> Dynamic String -> m El
207[W] elDynHtmlAttr' :: String -> Map String String -> Dynamic String -> m El
207
208
208-- Shortcut for elDynHtml' where the type is "div" and you don't need the 'El'.
209-- Shortcut for elDynHtml' where the type is "div" and you don't need the 'El'.
209−[W] dynHtml :: Dynamic String -> m ()
210+[W] dynHtml :: Dynamic String -> m ()
210
211
211-- Create a static text element
212-- Create a static text element
212−[W] text :: String -> m ()
213+[W] text :: String -> m ()
213
214
214-- Create a dynamic text element
215-- Create a dynamic text element
215−[W] dynText :: Dynamic String -> m ()
216+[W] dynText :: Dynamic String -> m ()
216[W] display :: Show a => Dynamic a -> m ()
217[W] display :: Show a => Dynamic a -> m ()
217
218
218-- Create a "button" element with given label, return onClick Event
219-- Create a "button" element with given label, return onClick Event
@@ -229,37 +230,46 @@ In the Dynamic cases above, the *content* of a widget is dynamic but the *defini
229Note the "list" functions do not imply particular HTML tags (ul, li, etc), though the widgets they create can have those tags if you construct them appropriately.
230Note the "list" functions do not imply particular HTML tags (ul, li, etc), though the widgets they create can have those tags if you construct them appropriately.
230
231
231```haskell
232```haskell
232−-- Given a Dynamic of widget-creating actions, create a widget that is redefined whenever the Dynamic updates.
233+-- Given a Dynamic of widget-creating actions, create a widget that is redefined
234+-- whenever the Dynamic updates. The returned Event of widget results occurs when
233−-- The returned Event of widget results occurs when the Dynamic does. Note that if type 'a' is an Event, the
235+-- the Dynamic does. Note that if type 'a' is an Event, the return value is an
234−-- return value is an Event-of-Events that would typically be flattened.
236+-- Event-of-Events that would typically be flattened.
235−[W] dyn :: Dynamic (m a) -> m (Event a)
237+[W] dyn :: Dynamic (m a) -> m (Event a)
236
238
237-- Same as dyn, but takes initial value and an update Event instead of a Dynamic.
239-- Same as dyn, but takes initial value and an update Event instead of a Dynamic.
238−[W] widgetHold :: m a -> Event (m a) -> m (Dynamic a)
240+[W] widgetHold :: m a -> Event (m a) -> m (Dynamic a)
239
241
240-- Given a Dynamic key/value map and a function to create a widget for a given
242-- Given a Dynamic key/value map and a function to create a widget for a given
241-- key & Dynamic value, create a bunch of widgets. Widgets will be created,
243-- key & Dynamic value, create a bunch of widgets. Widgets will be created,
242-- destroyed, and updated appropriately as the map changes. Returns Dynamic map
244-- destroyed, and updated appropriately as the map changes. Returns Dynamic map
243-- from keys to widget results.
245-- from keys to widget results.
246+[W] listWithKey :: Ord k =>
244−[W] listWithKey :: Ord k => Dynamic (Map k v) -> (k -> Dynamic v -> m a) -> m (Dynamic (Map k a))
247+ Dynamic (Map k v) -> (k -> Dynamic v -> m a ) -> m (Dynamic (Map k a))
245
248
246-- Same as above where the widget constructor doesn't care about the key.
249-- Same as above where the widget constructor doesn't care about the key.
250+[W] list :: Ord k =>
247−[W] list :: Ord k => Dynamic (Map k v) -> (Dynamic v -> m a) -> m (Dynamic (Map k a))
251+ Dynamic (Map k v) -> ( Dynamic v -> m a ) -> m (Dynamic (Map k a))
248
252
249-- Even simpler version where there are no keys and we just use a list.
253-- Even simpler version where there are no keys and we just use a list.
250−[W] simpleList :: Dynamic [v] -> (Dynamic v -> m a) -> m (Dynamic [a])
254+[W] simpleList ::
255+ Dynamic [v] -> ( Dynamic v -> m a ) -> m (Dynamic [a])
256+
257+-- Like listWithKey specialized for widgets returning (Event a). listWithKey would
258+-- return 'Dynamic (Map k (Event a))' in this scenario, but listViewWithKey flattens
259+-- this to 'Event (Map k a)' via 'switch'.
260+[W] listViewWithKey :: Ord k =>
261+ Dynamic (Map k v) -> (k -> Dynamic v -> m (Event a)) -> m (Event (Map k a))
262+
263+-- As above, but there is a "current key", and the widget constructor gets a
264+-- Dynamic Bool indicating if that widget is currently selected. The returned
265+-- Event fires when any of the widgets' returned Events fire, and returns the key
266+-- of an arbitrary firing widget.
267+[W] selectViewListWithKey_ :: Ord k => Dynamic k ->
268+ Dynamic (Map k v) -> (k -> Dynamic v -> Dynamic Bool -> m (Event a)) -> m (Event k)
251
269
252-- Same as listWithKey, but takes initial values and an updates Event instead of a Dynamic.
270-- Same as listWithKey, but takes initial values and an updates Event instead of a Dynamic.
271+[W] listWithKey' :: Ord k =>
253−[W] listWithKey' :: Ord k => Map k v -> Event (Map k (Maybe v)) -> (k -> v -> Event v -> m a) -> m (Dynamic (Map k a))
272+ Map k v -> Event (Map k (Maybe v)) -> (k -> v -> Event v -> m a) -> m (Dynamic (Map k a))
254−
255−-- Like listWithKey specialized for widgets returning (Event a). listWithKey would return 'Dynamic (Map k (Event a))'
256−-- in this scenario, but listViewWithKey flattens this to 'Event (Map k a)' via 'switch'.
257−[W] listViewWithKey :: Ord k => Dynamic (Map k v) -> (k -> Dynamic v -> m (Event a)) -> m (Event (Map k a))
258−
259−-- As above, but there is a "current key", and the widget constructor gets a Dynamic Bool indicating if that widget
260−-- is currently selected. The returned Event fires when any of the widgets' returned Events fire, and returns the key
261−-- of an arbitrary firing widget.
262−[W] selectViewListWithKey_ :: Ord k => Dynamic k -> Dynamic (Map k v) -> (k -> Dynamic v -> Dynamic Bool -> m (Event a)) -> m (Event k)
263
273
264-- tableDynAttr
274-- tableDynAttr
265-- tabDisplay
275-- tabDisplay
@@ -272,32 +282,39 @@ Note the "list" functions do not imply particular HTML tags (ul, li, etc), thoug
272#### Connecting to DOM events
282#### Connecting to DOM events
273
283
274```haskell
284```haskell
275−-- Extract the specified Event from an 'El'. The allowable event names, and their corresponding
285+-- Extract the specified Event from an 'El'. The allowable event names, and their
276−-- data types, are listed in Reflex/Dom/Widget/Basic.hs
286+-- corresponding data types, are listed in Reflex/Dom/Widget/Basic.hs
277[ ] domEvent :: EventName en -> El -> Event (EventResultType en)
287[ ] domEvent :: EventName en -> El -> Event (EventResultType en)
278```
288```
279
289
280#### Performing arbitrary I/O in response to Events
290#### Performing arbitrary I/O in response to Events
281
291
282```haskell
292```haskell
283−-- Run side-effecting actions in Event when it occurs; returned Event contains results.
293+-- Run side-effecting actions in Event when it occurs; returned Event contains
284−-- Side effects run in (WidgetHost m) monad, which includes [S] and [H] and can also do I/O via liftIO
294+-- results. Side effects run in (WidgetHost m) monad, which includes [S] and [H]
295+-- and can also do I/O via liftIO
285−[W] performEvent :: Event (WidgetHost m a) -> m (Event a)
296+[W] performEvent :: Event ( WidgetHost m a) -> m (Event a)
286
297
287-- Just run side-effects; no return Event
298-- Just run side-effects; no return Event
288−[W] performEvent_ :: Event (WidgetHost m ()) -> m ()
299+[W] performEvent_ :: Event ( WidgetHost m ()) -> m ()
289
300
290−-- Actions are run asynchronously; each action is given a callback to call when it completes
301+-- Actions run asynchronously; actions are given a callback to send return values
291[W] performEventAsync :: Event ((a -> IO ()) -> WidgetHost m ()) -> m (Event a)
302[W] performEventAsync :: Event ((a -> IO ()) -> WidgetHost m ()) -> m (Event a)
292```
303```
293
304
294### Startup
305### Startup
295
306
296```haskell
307```haskell
297−-- Reflex-Dom entry point. Takes a monadic widget-building action of lengthy type and turns it into an IO action.
308+-- Reflex-Dom entry point. Takes a monadic widget-building action of lengthy
309+-- type and turns it into an IO action.
310+[I] mainWidget ::
298−[I] mainWidget :: Widget Spider (Gui Spider (WithWebView SpiderHost) (HostFrame Spider)) () -> IO ()
311+ Widget Spider (Gui Spider (WithWebView SpiderHost) (HostFrame Spider)) () -> IO ()
312+[I] mainWidgetWithHead ::
313+ Widget Spider (Gui Spider (WithWebView SpiderHost) (HostFrame Spider)) () ->
299−[I] mainWidgetWithHead :: Widget Spider (Gui Spider (WithWebView SpiderHost) (HostFrame Spider)) () -> Widget Spider (Gui Spider (WithWebView SpiderHost) (HostFrame Spider)) () -> IO ()
314+ Widget Spider (Gui Spider (WithWebView SpiderHost) (HostFrame Spider)) () -> IO ()
315+[I] mainWidgetWithCss ::
316+ ByteString ->
300−[I] mainWidgetWithCss :: ByteString -> Widget Spider (Gui Spider (WithWebView SpiderHost) (HostFrame Spider)) () -> IO ()
317+ Widget Spider (Gui Spider (WithWebView SpiderHost) (HostFrame Spider)) () -> IO ()
301
318
302-- One-shot Event that is triggered once all initial widgets are built
319-- One-shot Event that is triggered once all initial widgets are built
303[W] getPostBuild :: m (Event ())
320[W] getPostBuild :: m (Event ())