Module

React.Halo

Package
purescript-react-halo
Repository
robertdp/purescript-react-halo

Re-exports from React.Halo.Component

#ComponentSpec Source

type ComponentSpec :: Type -> Type -> Type -> (Type -> Type) -> Typetype ComponentSpec props state action m = { eval :: Lifecycle props action -> HaloM props state action m Unit, initialState :: props -> state, render :: { props :: props, send :: action -> Effect Unit, state :: state } -> JSX }

#component Source

component :: forall props state action. String -> ComponentSpec props state action Aff -> Component props

Build a component by providing a name and a Halo component spec.

Re-exports from React.Halo.Hook

#UseHalo Source

newtype UseHalo props state action hooks

Constructors

Instances

#HookSpec Source

type HookSpec :: Type -> Type -> Type -> (Type -> Type) -> Typetype HookSpec props state action m = { eval :: Lifecycle props action -> HaloM props state action m Unit, initialState :: state, props :: props }

#useHalo Source

useHalo :: forall props state action. HookSpec props state action Aff -> Hook (UseHalo props state action) (state /\ (action -> Effect Unit))

Run renderless Halo in the current component. This allows Halo to be used with other hooks and other ways of building components.

Re-exports from React.Halo.Internal.Control

#HaloM Source

newtype HaloM :: Type -> Type -> Type -> (Type -> Type) -> Type -> Typenewtype HaloM props state action (m :: Type -> Type) a

The Halo evaluation monad. It lifts the HaloF algebra into a free monad.

  • props are the component props
  • state is the component state
  • action is the set of actions that the component handles
  • m is the monad used during evaluation
  • a is the result type

Instances

#HaloAp Source

newtype HaloAp :: Type -> Type -> Type -> (Type -> Type) -> Type -> Typenewtype HaloAp props state action (m :: Type -> Type) a

The Halo parallel evaluation applicative. It lifts HaloM into a free applicative.

  • props are the component props
  • state is the component state
  • action is the set of actions that the component handles
  • m is the monad used during evaluation
  • a is the result type

Instances

#unsubscribe Source

unsubscribe :: forall props state action m. SubscriptionId -> HaloM props state action m Unit

Cancels the event subscription belonging to the SubscriptionId.

#subscribe' Source

subscribe' :: forall props state action m. (SubscriptionId -> Emitter action) -> HaloM props state action m SubscriptionId

Same as subscribe but the event-producing logic is also passed the SuscriptionId. This is useful when events need to unsubscribe themselves.

#subscribe Source

subscribe :: forall props state action m. Emitter action -> HaloM props state action m SubscriptionId

Subscribe to new actions from an Emitter. Subscriptions will be automatically cancelled when the component unmounts.

Returns a SubscriptionId which can be used with unsubscribe to manually cancel a subscription.

#props Source

props :: forall props state action m. HaloM props state action m props

Read the current props.

#kill Source

kill :: forall props state action m. ForkId -> HaloM props state action m Unit

Kills the process belonging to the ForkId.

#hoistAp Source

hoistAp :: forall props state action m m'. Functor m => (m ~> m') -> (HaloAp props state action m) ~> (HaloAp props state action m')

Hoist (transform) the base applicative of a HaloAp expression.

#hoist Source

hoist :: forall props state action m m'. Functor m => (m ~> m') -> (HaloM props state action m) ~> (HaloM props state action m')

Hoist (transform) the base monad of a HaloM expression.

#fork Source

fork :: forall props state action m. HaloM props state action m Unit -> HaloM props state action m ForkId

Start a HaloM process running independantly from the current "thread". Forks are tracked automatically and killed when the Finalize event occurs (when the component unmounts). New forks can still be created during the Finalize event, but once evaluation ends there will be no way of killing them.

Returns a ForkId for the new process.

Re-exports from React.Halo.Internal.Eval

#EvalSpec Source

type EvalSpec :: Type -> Type -> Type -> (Type -> Type) -> Typetype EvalSpec props state action m = { onAction :: action -> HaloM props state action m Unit, onFinalize :: Maybe action, onInitialize :: props -> Maybe action, onUpdate :: props -> props -> Maybe action }

A simpler interface for building the components eval function. The main lifecycle events map directly into actions, so only the action handling logic needs to be written using HaloM.

#mkEval Source

mkEval :: forall props state action m. EvalSpec props state action m -> Lifecycle props action -> HaloM props state action m Unit

Given an EvalSpec builder, it will return an eval function.

#defaultEval Source

defaultEval :: forall props action state m. EvalSpec props state action m

The empty EvalSpec.

Re-exports from React.Halo.Internal.Types

#Lifecycle Source

data Lifecycle props action

The Halo lifecycle events.

  • Initialize contains the initial props. It occurs when the component mounts, and only once per component.
  • Update contains the previous and new props. It occurs when the component re-renders and the props have changes.
  • Action contains the dispatched action. It occurs each time an action is dispatched to be eval'd, up until the Finalize event.
  • Finalize occurs when the component unmounts.

Constructors

#ForkId Source

newtype ForkId

Instances