Module

Halogen.Query

Package
purescript-halogen
Repository
slamdata/purescript-halogen

Functions and types used to describe the HalogenF algebra used in a component's eval function.

#Action Source

type Action f = Unit -> f Unit

Type synonym for an "action" - An action only causes effects and has no result value.

In a query algebra, an action is any constructor that carries the algebra's type variable as a value. For example:

data Query a
  = SomeAction a
  | SomeOtherAction String a
  | NotAnAction (Boolean -> a)

Both SomeAction and SomeOtherAction have a as a value so they are considered actions, whereas NotAnAction has a as the result of a function so is considered to be a "request" (see below).

#action Source

action :: forall f. Action f -> f Unit

Takes a data constructor of query algebra f and creates an action.

For example:

data Query a = Tick a

sendTick :: forall o eff. HalogenIO Query o (Aff (HalogenEffects eff)) -> Aff (HalogenEffects eff) Unit
sendTick app = app.query (action Tick)

#Request Source

type Request f a = (a -> a) -> f a

Type synonym for an "request" - a request can cause effects as well as fetching some information from a component.

In a query algebra, an action is any constructor that carries the algebra's type variable as the return value of a function. For example:

data Query a = SomeRequest (Boolean -> a)

#request Source

request :: forall f a. Request f a -> f a

Takes a data constructor of query algebra f and creates a request.

For example:

data Query a = GetTickCount (Int -> a)

getTickCount :: forall o eff. HalogenIO Query o (Aff (HalogenEffects eff)) -> Aff (HalogenEffects eff) Int
getTickCount app = app.query (request GetTickCount)

#query Source

query :: forall s f g p o m a. Eq p => p -> g a -> HalogenM s f g p o m (Maybe a)

Sends a query to a child of a component at the specified slot.

#query' Source

query' :: forall s f g g' m p p' o a. Eq p' => ChildPath g g' p p' -> p -> g a -> HalogenM s f g' p' o m (Maybe a)

Sends a query to a child of a component at the specified slot, using a ChildPath to discriminate the type of child component to query.

#queryAll Source

queryAll :: forall s f g p o m a. Ord p => g a -> HalogenM s f g p o m (Map p a)

Sends a query to all children of a component.

#queryAll' Source

queryAll' :: forall s f g g' p p' o m a. Ord p => Eq p' => ChildPath g g' p p' -> g a -> HalogenM s f g' p' o m (Map p a)

Sends a query to all children of a specific type within a component, using a ChildPath to discriminate the type of child component to query.

#getHTMLElementRef Source

getHTMLElementRef :: forall s f g p o m. RefLabel -> HalogenM s f g p o m (Maybe HTMLElement)

Re-exports from Control.Monad.Aff.Class

#liftAff Source

liftAff :: forall a m eff. MonadAff eff m => Aff eff a -> m a

Re-exports from Control.Monad.Eff.Class

#liftEff Source

liftEff :: forall a m eff. MonadEff eff m => Eff eff a -> m a

Re-exports from Control.Monad.State.Class

#put Source

put :: forall m s. MonadState s m => s -> m Unit

Set the state.

#modify Source

modify :: forall s m. MonadState s m => (s -> s) -> m Unit

Modify the state by applying a function to the current state.

#gets Source

gets :: forall s m a. MonadState s m => (s -> a) -> m a

Get a value which depends on the current state.

#get Source

get :: forall m s. MonadState s m => m s

Get the current state.

Re-exports from Control.Monad.Trans.Class

#lift Source

lift :: forall m a t. MonadTrans t => Monad m => m a -> t m a

Re-exports from Halogen.Query.EventSource

#SubscribeStatus Source

data SubscribeStatus

The status of an EventSource subscription. When a query raised by an EventSource evaluates to Done the producer will be unsubscribed from.

Constructors

Instances

#EventSource Source

newtype EventSource f m

#eventSource_ Source

eventSource_ :: forall f m eff. MonadAff (avar :: AVAR | eff) m => (Eff (avar :: AVAR | eff) Unit -> Eff (avar :: AVAR | eff) Unit) -> f SubscribeStatus -> EventSource f m

Creates an EventSource for a callback that accepts no arguments.

  • The first argument is the function that attaches the listener.
  • The second argument is the query to raise whenever the listener is triggered.

#eventSource Source

eventSource :: forall f m a eff. MonadAff (avar :: AVAR | eff) m => ((a -> Eff (avar :: AVAR | eff) Unit) -> Eff (avar :: AVAR | eff) Unit) -> (a -> Maybe (f SubscribeStatus)) -> EventSource f m

Creates an EventSource for a callback that accepts one argument.

  • The first argument is the function that attaches the listener.
  • The second argument is a handler that optionally produces a value in f.

Re-exports from Halogen.Query.HalogenM

#HalogenM Source

newtype HalogenM s (f :: Type -> Type) g p o m a

Constructors

Instances

#HalogenF Source

data HalogenF s (f :: Type -> Type) g p o m a

The Halogen component algebra

Constructors

Instances

#subscribe Source

subscribe :: forall s f g p o m. EventSource f m -> HalogenM s f g p o m Unit

Provides a way of having a component subscribe to an EventSource from within an Eval function.

#raise Source

raise :: forall s f g p o m. o -> HalogenM s f g p o m Unit

Raises an output message for the component.

#mkQuery Source

mkQuery :: forall s f g p o m a. Eq p => p -> g a -> HalogenM s f g p o m a

#getSlots Source

getSlots :: forall s f g p o m. HalogenM s f g p o m (List p)

#getRef Source

getRef :: forall s f g p o m. RefLabel -> HalogenM s f g p o m (Maybe Foreign)

#fork Source

fork :: forall s f g p o m eff a. MonadAff eff m => HalogenM s f g p o m a -> HalogenM s f g p o m (Error -> m Unit)

#checkSlot Source

checkSlot :: forall s f g p o m. p -> HalogenM s f g p o m Boolean

Re-exports from Halogen.Query.InputF

#RefLabel Source