-- | -- Module : Reflex.Dom.Retractable.Trans -- Copyright : (c) 2019 ATUM SOLUTIONS AG -- License : MIT -- Maintainer : ncrashed@protonmail.com -- Stability : unstable -- Portability : non-portable -- -- Plug-in implementation for `MonadRetract` using wrapper around `ReaderT`. -- -- Example of use: -- -- @ -- import Control.Monad -- import Reflex.Dom -- import Reflex.Dom.Retractable -- -- main :: IO () -- main = mainWidget $ runRetract frontend -- -- frontend :: (MonadWidget t m, MonadRetract t m) => m () -- frontend = void $ retractStack $ pageA 42 -- -- pageA :: (MonadWidget t m, MonadRetract t m) => Int -> m () -- pageA n = do -- e <- button "Go page B" -- void $ nextWidget $ ffor e $ const Retractable { -- retractableNext = pageB $ n + 1 -- , retractablePrev = Just $ pure $ pageA n -- } -- -- pageB :: (MonadWidget t m, MonadRetract t m) => Int -> m () -- pageB n = do -- e <- button "Go page A" -- void $ nextWidget $ ffor e $ const Retractable { -- retractableNext = pageA $ n + 1 -- , retractablePrev = Just $ pure $ pageB n -- } -- @ module Reflex.Dom.Retractable.Trans( RetractT , RetractEnv , newRetractEnv , runRetractT , runRetract ) where import Reflex.Dom.Retractable.Trans.Internal