on develop help sign in
Add DomBuilder instance for EventWriterT
commit75e06d9bbc5371b2eccec96b3fa941b078ce3e3e authorDaniel Haraj <dan@obsidian.systems> dateMon 26 Dec 2016, 10:55 (10 years ago) parentefaaa52
1 file changed+19
src/Reflex/Dom/Builder/Class.hs+19
src/Reflex/Dom/Builder/Class.hs+19
@@ -448,6 +448,25 @@ instance (DomBuilder t m, MonadHold t m, MonadFix m) => DomBuilder t (RequesterT
448448 { _rawElementConfig_eventSpec = _rawElementConfig_eventSpec cfg
449449 }
450450
451+instance (DomBuilder t m, MonadHold t m, MonadFix m, Semigroup w, Monoid w) => DomBuilder t (EventWriterT t w m) where
452+ type DomBuilderSpace (EventWriterT t w m) = DomBuilderSpace m
453+ textNode = liftTextNode
454+ element elementTag cfg child = do
455+ let cfg' = liftElementConfig cfg
456+ (el, (a, e)) <- lift $ element elementTag cfg' $ runEventWriterT child
457+ tellEvent e
458+ return (el, a)
459+ inputElement cfg = lift $ inputElement $ cfg & inputElementConfig_elementConfig %~ liftElementConfig
460+ textAreaElement cfg = lift $ textAreaElement $ cfg & textAreaElementConfig_elementConfig %~ liftElementConfig
461+ selectElement cfg child = do
462+ let cfg' = cfg & selectElementConfig_elementConfig %~ liftElementConfig
463+ (el, (a, e)) <- lift $ selectElement cfg' $ runEventWriterT child
464+ tellEvent e
465+ return (el, a)
466+ placeRawElement = lift . placeRawElement
467+ wrapRawElement e cfg = lift $ wrapRawElement e $ cfg
468+ { _rawElementConfig_eventSpec = _rawElementConfig_eventSpec cfg
469+ }
451470
452471-- * Convenience functions
453472