reflex-dom-retractable-0.1.4.0: src/Reflex/Dom/Retractable/Trans.hs
-- |
-- 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 `Reflex.Dom.Retractable.Class.MonadRetract` using wrapper around `Control.Monad.Reader.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