Halogen.Query
- Package
- purescript-halogen
- Repository
- purescript-halogen/purescript-halogen
Functions and types used to describe the HalogenF
algebra used in a
component's eval
function.
#Tell Source
type Tell f = Unit -> f Unit
Type synonym for a "tell-style" query - queries that only cause effects, but that cannot receive a return value.
In a query algebra, a tell constructor carries the algebra's type variable as its last argument. For example:
data Query a
= SomeTell a
| SomeOtherTell String a
| NotATell (Boolean -> a)
Both SomeTell
and SomeOtherTell
carry a plain a
as a value, whereas
NotATell
has a
as the result of a function so is considered to be a
"request" (see below).
#Request Source
type Request f a = (a -> a) -> f a
Type synonym for an "request-style" query - queries that can cause effects as well as fetching some information from a component.
In a query algebra, a request constructor carries the algebra's type variable as the return value of a function as its last argument. For example:
data Query a = SomeRequest (Boolean -> a)
#getHTMLElementRef Source
getHTMLElementRef :: forall state action slots output m. RefLabel -> HalogenM state action slots output m (Maybe HTMLElement)
Retrieves a HTMLElement
value that is associated with a Ref
in the
rendered output of a component. If there is no currently rendered value (or
it is not an HTMLElement
) for the request will return Nothing
.
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 Source
modify :: forall s m. MonadState s m => (s -> s) -> m s
Modify the state by applying a function to the current state. The returned value is the new state value.
#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 t m a. MonadTrans t => Monad m => m a -> t m a
Re-exports from Effect.Aff.Class
Re-exports from Effect.Class
#liftEffect Source
liftEffect :: forall m a. MonadEffect m => Effect a -> m a
Re-exports from Halogen.Query.HalogenM
#SubscriptionId Source
newtype SubscriptionId
The ID value associated with a subscription. Allows the subscription to be stopped at a later time.
Instances
#HalogenM Source
newtype HalogenM state action slots output m a
The Halogen component eval effect monad.
state
is the component's stateaction
is the type of actions; veents internal to the component that can be evaluatedslots
is the set of slots for addressing child componentsoutput
is the type of output messages the component can raisem
is the monad used during evaluationa
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
Functor (HalogenM state action slots output m)
Apply (HalogenM state action slots output m)
Applicative (HalogenM state action slots output m)
Bind (HalogenM state action slots output m)
Monad (HalogenM state action slots output m)
(Semigroup a) => Semigroup (HalogenM state action slots output m a)
(Monoid a) => Monoid (HalogenM state action slots output m a)
(MonadEffect m) => MonadEffect (HalogenM state action slots output m)
(MonadAff m) => MonadAff (HalogenM state action slots output m)
Parallel (HalogenAp state action slots output m) (HalogenM state action slots output m)
MonadTrans (HalogenM state action slots o)
MonadRec (HalogenM state action slots output m)
MonadState state (HalogenM state action slots output m)
(MonadAsk r m) => MonadAsk r (HalogenM state action slots output m)
(MonadTell w m) => MonadTell w (HalogenM state action slots output m)
(MonadThrow e m) => MonadThrow e (HalogenM state action slots output m)
#HalogenF Source
data HalogenF state action slots output m a
The Halogen component eval algebra.
state
is the component's stateaction
is the type of actions; events internal to the component that can be evaluatedslots
is the set of slots for addressing child componentsoutput
is the type of output messages the component can raisem
is the monad used during evaluationa
is the result of the HalogenF expression (see HalogenM for an example).
Constructors
State (state -> Tuple a state)
Subscribe (SubscriptionId -> Emitter action) (SubscriptionId -> a)
Unsubscribe SubscriptionId a
Lift (m a)
ChildQuery (ChildQueryBox slots a)
Raise output a
Par (HalogenAp state action slots output m a)
Fork (HalogenM state action slots output m Unit) (ForkId -> a)
Kill ForkId a
GetRef RefLabel (Maybe Element -> a)
Instances
#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.
#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.
#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.
#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
fork
ed 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.
Re-exports from Halogen.Query.HalogenQ
Re-exports from Halogen.Query.Input
- Modules
- Halogen
- Halogen.
Aff - Halogen.
Aff. Driver - Halogen.
Aff. Driver. Eval - Halogen.
Aff. Driver. State - Halogen.
Aff. Util - Halogen.
Component - Halogen.
Component. Profunctor - Halogen.
Data. OrdBox - Halogen.
Data. Slot - Halogen.
HTML - Halogen.
HTML. Core - Halogen.
HTML. Elements - Halogen.
HTML. Elements. Keyed - Halogen.
HTML. Events - Halogen.
HTML. Properties - Halogen.
HTML. Properties. ARIA - Halogen.
Query - Halogen.
Query. ChildQuery - Halogen.
Query. Event - Halogen.
Query. HalogenM - Halogen.
Query. HalogenQ - Halogen.
Query. Input - Halogen.
VDom. Driver