reflex-dom-retractable-0.1.7.0: Routing and retractable back button for reflex-dom

Copyright(c) 2019 ATUM SOLUTIONS AG
LicenseMIT
Maintainerncrashed@protonmail.com
Stabilityunstable
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Reflex.Dom.Retractable.Trans

Description

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
     }
Synopsis

Documentation

data RetractT t m a Source #

Plug-in implementation of MonadRetract.

Instances
(Group q, Additive q, Query q, Eq q, MonadQuery t q m, Monad m) => MonadQuery t q (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

(Monoid w, MonadBehaviorWriter t w m) => MonadBehaviorWriter t w (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

tellBehavior :: Behavior t w -> RetractT t m () #

(Monoid w, DynamicWriter t w m) => DynamicWriter t w (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

tellDyn :: Dynamic t w -> RetractT t m () #

(Semigroup w, EventWriter t w m) => EventWriter t w (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

tellEvent :: Event t w -> RetractT t m () #

MonadReader e m => MonadReader e (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

ask :: RetractT t m e #

local :: (e -> e) -> RetractT t m a -> RetractT t m a #

reader :: (e -> a) -> RetractT t m a #

MonadState s m => MonadState s (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

get :: RetractT t m s #

put :: s -> RetractT t m () #

state :: (s -> (a, s)) -> RetractT t m a #

NotReady t m => NotReady t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

notReadyUntil :: Event t a -> RetractT t m () #

notReady :: RetractT t m () #

PerformEvent t m => PerformEvent t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Associated Types

type Performable (RetractT t m) :: Type -> Type #

Methods

performEvent :: Event t (Performable (RetractT t m) a) -> RetractT t m (Event t a) #

performEvent_ :: Event t (Performable (RetractT t m) ()) -> RetractT t m () #

TriggerEvent t m => TriggerEvent t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

newTriggerEvent :: RetractT t m (Event t a, a -> IO ()) #

newTriggerEventWithOnComplete :: RetractT t m (Event t a, a -> IO () -> IO ()) #

newEventWithLazyTriggerWithOnComplete :: ((a -> IO () -> IO ()) -> IO (IO ())) -> RetractT t m (Event t a) #

Requester t m => Requester t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Associated Types

type Request (RetractT t m) :: Type -> Type #

type Response (RetractT t m) :: Type -> Type #

Methods

requesting :: Event t (Request (RetractT t m) a) -> RetractT t m (Event t (Response (RetractT t m) a)) #

requesting_ :: Event t (Request (RetractT t m) a) -> RetractT t m () #

PostBuild t m => PostBuild t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

getPostBuild :: RetractT t m (Event t ()) #

MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

newEventWithTrigger :: (EventTrigger t a -> IO (IO ())) -> RetractT t m (Event t a) #

newFanEventWithTrigger :: GCompare k => (forall a. k a -> EventTrigger t a -> IO (IO ())) -> RetractT t m (EventSelector t k) #

Adjustable t m => Adjustable t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

runWithReplace :: RetractT t m a -> Event t (RetractT t m b) -> RetractT t m (a, Event t b) #

traverseIntMapWithKeyWithAdjust :: (Key -> v -> RetractT t m v') -> IntMap v -> Event t (PatchIntMap v) -> RetractT t m (IntMap v', Event t (PatchIntMap v')) #

traverseDMapWithKeyWithAdjust :: GCompare k => (forall a. k a -> v a -> RetractT t m (v' a)) -> DMap k v -> Event t (PatchDMap k v) -> RetractT t m (DMap k v', Event t (PatchDMap k v')) #

traverseDMapWithKeyWithAdjustWithMove :: GCompare k => (forall a. k a -> v a -> RetractT t m (v' a)) -> DMap k v -> Event t (PatchDMapWithMove k v) -> RetractT t m (DMap k v', Event t (PatchDMapWithMove k v')) #

DomBuilder t m => DomBuilder t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Associated Types

type DomBuilderSpace (RetractT t m) :: Type #

(PerformEvent t m, MonadHold t m, Adjustable t m, MonadFix m, MonadIO (Performable m)) => MonadRetract t (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

MonadTrans (RetractT t) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

lift :: Monad m => m a -> RetractT t m a #

MonadSample t m => MonadSample (t :: Type) (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

sample :: Behavior t a -> RetractT t m a #

MonadHold t m => MonadHold (t :: Type) (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

hold :: a -> Event t a -> RetractT t m (Behavior t a) #

holdDyn :: a -> Event t a -> RetractT t m (Dynamic t a) #

holdIncremental :: Patch p => PatchTarget p -> Event t p -> RetractT t m (Incremental t p) #

buildDynamic :: PushM t a -> Event t a -> RetractT t m (Dynamic t a) #

headE :: Event t a -> RetractT t m (Event t a) #

Monad m => Monad (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

(>>=) :: RetractT t m a -> (a -> RetractT t m b) -> RetractT t m b #

(>>) :: RetractT t m a -> RetractT t m b -> RetractT t m b #

return :: a -> RetractT t m a #

fail :: String -> RetractT t m a #

Functor m => Functor (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

fmap :: (a -> b) -> RetractT t m a -> RetractT t m b #

(<$) :: a -> RetractT t m b -> RetractT t m a #

MonadFix m => MonadFix (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

mfix :: (a -> RetractT t m a) -> RetractT t m a #

Applicative m => Applicative (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

pure :: a -> RetractT t m a #

(<*>) :: RetractT t m (a -> b) -> RetractT t m a -> RetractT t m b #

liftA2 :: (a -> b -> c) -> RetractT t m a -> RetractT t m b -> RetractT t m c #

(*>) :: RetractT t m a -> RetractT t m b -> RetractT t m b #

(<*) :: RetractT t m a -> RetractT t m b -> RetractT t m a #

MonadIO m => MonadIO (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

liftIO :: IO a -> RetractT t m a #

MonadJSM m => MonadJSM (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Methods

liftJSM' :: JSM a -> RetractT t m a #

MonadRef m => MonadRef (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Associated Types

type Ref (RetractT t m) :: Type -> Type #

Methods

newRef :: a -> RetractT t m (Ref (RetractT t m) a) #

readRef :: Ref (RetractT t m) a -> RetractT t m a #

writeRef :: Ref (RetractT t m) a -> a -> RetractT t m () #

modifyRef :: Ref (RetractT t m) a -> (a -> a) -> RetractT t m () #

modifyRef' :: Ref (RetractT t m) a -> (a -> a) -> RetractT t m () #

HasJSContext m => HasJSContext (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Associated Types

type JSContextPhantom (RetractT t m) :: Type #

HasDocument m => HasDocument (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Generic (RetractT t m a) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Associated Types

type Rep (RetractT t m a) :: Type -> Type #

Methods

from :: RetractT t m a -> Rep (RetractT t m a) x #

to :: Rep (RetractT t m a) x -> RetractT t m a #

type Ref (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

type Ref (RetractT t m) = Ref (ReaderT (RetractEnv t m) m)
type Performable (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

type Response (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

type Request (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

type Request (RetractT t m) = Request (ReaderT (RetractEnv t m) m)
type JSContextPhantom (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

type DomBuilderSpace (RetractT t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

type Rep (RetractT t m a) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

type Rep (RetractT t m a) = D1 (MetaData "RetractT" "Reflex.Dom.Retractable.Trans.Internal" "reflex-dom-retractable-0.1.7.0-inplace" True) (C1 (MetaCons "RetractT" PrefixI True) (S1 (MetaSel (Just "unRetractT") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (ReaderT (RetractEnv t m) m a))))

data RetractEnv t m Source #

Internal state of retractable widget

Instances
Generic (RetractEnv t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

Associated Types

type Rep (RetractEnv t m) :: Type -> Type #

Methods

from :: RetractEnv t m -> Rep (RetractEnv t m) x #

to :: Rep (RetractEnv t m) x -> RetractEnv t m #

type Rep (RetractEnv t m) Source # 
Instance details

Defined in Reflex.Dom.Retractable.Trans.Internal

type Rep (RetractEnv t m) = D1 (MetaData "RetractEnv" "Reflex.Dom.Retractable.Trans.Internal" "reflex-dom-retractable-0.1.7.0-inplace" False) (C1 (MetaCons "RetractEnv" PrefixI True) ((S1 (MetaSel (Just "renvNextFire") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (RetractableT t m -> IO ())) :*: (S1 (MetaSel (Just "renvNextEvent") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Event t (RetractableT t m))) :*: S1 (MetaSel (Just "renvRetractFire") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (IO ())))) :*: ((S1 (MetaSel (Just "renvRetractEvent") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Event t ())) :*: S1 (MetaSel (Just "renvWipeFire") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Maybe Int -> IO ()))) :*: (S1 (MetaSel (Just "renvWipeEvent") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Event t (Maybe Int))) :*: S1 (MetaSel (Just "renvStack") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Dynamic t [RetractableT t m]))))))

newRetractEnv :: (Reflex t, TriggerEvent t m) => m (RetractEnv t m) Source #

Allocate new environment for RetractT.

runRetractT :: RetractT t m a -> RetractEnv t m -> m a Source #

Execute retractable widget with given environment.

runRetract :: (Reflex t, TriggerEvent t m) => RetractT t m a -> m a Source #

Simplified version of runRetractT