Module

Halogen.Query.HalogenM

Package
purescript-halogen
Repository
purescript-halogen/purescript-halogen

#HalogenF Source

data HalogenF state action slots output m a

The Halogen component eval algebra.

  • state is the component's state
  • action is the type of actions; events internal to the component that can be evaluated
  • slots is the set of slots for addressing child components
  • output is the type of output messages the component can raise
  • m is the monad used during evaluation
  • a is the result of the HalogenF expression (see HalogenM for an example).

Constructors

Instances

#HalogenM Source

newtype HalogenM state action slots output m a

The Halogen component eval effect monad.

  • state is the component's state
  • action is the type of actions; veents internal to the component that can be evaluated
  • slots is the set of slots for addressing child components
  • output is the type of output messages the component can raise
  • m is the monad used during evaluation
  • a is the result of the HalogenM expression. Use the following pattern: handleAction :: Action -> H.HalogenM State Action Slots Output m Unit handleQuery :: forall a. Query a -> H.HalogenM State Action Slots Output m (Maybe a)

Constructors

Instances

#HalogenAp Source

newtype HalogenAp state action slots output m a

An applicative-only version of HalogenM to allow for parallel evaluation.

Constructors

Instances

#raise Source

raise :: forall state action slots output m. output -> HalogenM state action slots output m Unit

Raises an output message for the component.

#query Source

query :: forall state action output m label slots query output' slot a _1. Cons label (Slot query output' slot) _1 slots => IsSymbol label => Ord slot => Proxy label -> slot -> query a -> HalogenM state action slots output m (Maybe a)

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

#queryAll Source

queryAll :: forall state action output m label slots query output' slot a _1. Cons label (Slot query output' slot) _1 slots => IsSymbol label => Ord slot => Proxy label -> query a -> HalogenM state action slots output m (Map slot a)

Sends a query to all children of a component at a given slot label.

#SubscriptionId Source

newtype SubscriptionId

The ID value associated with a subscription. Allows the subscription to be stopped at a later time.

Constructors

Instances

#subscribe Source

subscribe :: forall state action slots output m. Emitter action -> HalogenM state action slots output m SubscriptionId

Subscribes a component to an Emitter.

When a component is disposed of any active subscriptions will automatically be stopped and no further subscriptions will be possible during finalization.

#subscribe' Source

subscribe' :: forall state action slots output m. (SubscriptionId -> Emitter action) -> HalogenM state action slots output m Unit

An alternative to subscribe, intended for subscriptions that unsubscribe themselves. Instead of returning the SubscriptionId from subscribe', it is passed into an Emitter constructor. This allows emitted queries to include the SubscriptionId, rather than storing it in the state of the component.

When a component is disposed of any active subscriptions will automatically be stopped and no further subscriptions will be possible during finalization.

#unsubscribe Source

unsubscribe :: forall state action slots output m. SubscriptionId -> HalogenM state action slots output m Unit

Unsubscribes a component from a subscription. If the subscription associated with the ID has already ended this will have no effect.

#ForkId Source

newtype ForkId

The ID value associated with a forked process. Allows the fork to be killed at a later time.

Constructors

Instances

#fork Source

fork :: forall state action slots output m. HalogenM state action slots output m Unit -> HalogenM state action slots output m ForkId

Starts a HalogenM process running independent from the current eval "thread".

A commonly use case for fork is in component initializers where some async action is started. Normally all interaction with the component will be blocked until the initializer completes, but if the async action is forked instead, the initializer can complete synchronously while the async action continues.

Some care needs to be taken when using a fork that can modify the component state, as it's easy for the forked process to "clobber" the state (overwrite some or all of it with an old value) by mistake.

When a component is disposed of any active forks will automatically be killed. New forks can be started during finalization but there will be no means of killing them.

#kill Source

kill :: forall state action slots output m. ForkId -> HalogenM state action slots output m Unit

Kills a forked process if it is still running. Attempting to kill a forked process that has already ended will have no effect.

#getRef Source

getRef :: forall state action slots output m. RefLabel -> HalogenM state action slots output m (Maybe Element)

Retrieves an Element value that is associated with a Ref in the rendered output of a component. If there is no currently rendered value for the requested ref this will return Nothing.

#imapState Source

imapState :: forall state state' action slots output m. (state -> state') -> (state' -> state) -> (HalogenM state action slots output m) ~> (HalogenM state' action slots output m)

#mapAction Source

mapAction :: forall state action action' slots output m. Functor m => (action -> action') -> (HalogenM state action slots output m) ~> (HalogenM state action' slots output m)

#mapOutput Source

mapOutput :: forall state action slots output output' m. (output -> output') -> (HalogenM state action slots output m) ~> (HalogenM state action slots output' m)

#hoist Source

hoist :: forall state action slots output m m'. Functor m' => (m ~> m') -> (HalogenM state action slots output m) ~> (HalogenM state action slots output m')