Safe Haskell | None |
---|---|
Language | Haskell98 |
Reflex.Dom.Builder.Immediate
Description
This is a builder to be used on the client side. It can be run in two modes:
- in "hydration mode", reusing DOM nodes already in the page (as produced
by
renderStatic
) - in "immediate mode", creating and appending DOM nodes as required
In "hydration mode", the preexisting DOM must contain what the builder will expect at switchover time (the time at which parity with the static renderer is reached, and the time after which the page is "live").
For example, displaying the current time as text should be done inside
prerender
to ensure that we don't attempt to hydrate the incorrect text.
The server will prerender a text node with time A, and the client will expect
a text node with time B. Barring a miracle, time A and time B will not match,
and hydration will fail.
Synopsis
- newtype HydrationDomBuilderT (s :: k) t (m :: Type -> Type) a = HydrationDomBuilderT {
- unHydrationDomBuilderT :: ReaderT (HydrationDomBuilderEnv t m) (DomRenderHookT t m) a
- data HydrationDomBuilderEnv t (m :: Type -> Type) = HydrationDomBuilderEnv {
- _hydrationDomBuilderEnv_document :: !Document
- _hydrationDomBuilderEnv_parent :: !(Either Node (IORef Node))
- _hydrationDomBuilderEnv_unreadyChildren :: !(IORef Word)
- _hydrationDomBuilderEnv_commitAction :: !(JSM ())
- _hydrationDomBuilderEnv_hydrationMode :: !(IORef HydrationMode)
- _hydrationDomBuilderEnv_switchover :: !(Event t ())
- _hydrationDomBuilderEnv_delayed :: !(IORef (HydrationRunnerT t m ()))
- data HydrationMode
- newtype HydrationRunnerT t (m :: Type -> Type) a = HydrationRunnerT {
- unHydrationRunnerT :: StateT HydrationState (ReaderT Node (DomRenderHookT t m)) a
- runHydrationRunnerT :: (MonadRef m, Ref m ~ IORef, PerformEvent t m, MonadFix m, MonadReflexCreateTrigger t m, MonadJSM m, MonadJSM (Performable m)) => HydrationRunnerT t m a -> Maybe Node -> Node -> Chan [DSum (EventTriggerRef t) TriggerInvocation] -> m a
- runHydrationRunnerTWithFailure :: (MonadRef m, Ref m ~ IORef, PerformEvent t m, MonadFix m, MonadReflexCreateTrigger t m, MonadJSM m, MonadJSM (Performable m)) => HydrationRunnerT t m a -> IO () -> Maybe Node -> Node -> Chan [DSum (EventTriggerRef t) TriggerInvocation] -> m a
- type ImmediateDomBuilderT = HydrationDomBuilderT GhcjsDomSpace
- runHydrationDomBuilderT :: forall {k} m t (s :: k) a. (MonadFix m, PerformEvent t m, MonadReflexCreateTrigger t m, MonadJSM (Performable m), MonadRef m, Ref m ~ IORef) => HydrationDomBuilderT s t m a -> HydrationDomBuilderEnv t m -> Chan [DSum (EventTriggerRef t) TriggerInvocation] -> m a
- getHydrationMode :: forall {k} (m :: Type -> Type) (s :: k) t. MonadIO m => HydrationDomBuilderT s t m HydrationMode
- addHydrationStep :: forall {k} (m :: Type -> Type) t (s :: k). MonadIO m => HydrationRunnerT t m () -> HydrationDomBuilderT s t m ()
- addHydrationStepWithSetup :: forall {k} m a t (s :: k). MonadIO m => m a -> (a -> HydrationRunnerT t m ()) -> HydrationDomBuilderT s t m ()
- setPreviousNode :: forall (m :: Type -> Type) t. Monad m => Maybe Node -> HydrationRunnerT t m ()
- insertAfterPreviousNode :: forall (m :: Type -> Type) node t. (MonadJSM m, IsNode node) => node -> HydrationRunnerT t m ()
- hydrateComment :: forall (m :: Type -> Type) t. (MonadJSM m, Reflex t, MonadFix m) => Document -> Text -> Maybe (Event t Text) -> HydrationRunnerT t m Comment
- askParent :: forall (m :: Type -> Type) t. Monad m => HydrationRunnerT t m Node
- askEvents :: forall {k} (m :: Type -> Type) (s :: k) t. Monad m => HydrationDomBuilderT s t m (Chan [DSum (EventTriggerRef t) TriggerInvocation])
- append :: forall {k} (m :: Type -> Type) (s :: k) t. MonadJSM m => Node -> HydrationDomBuilderT s t m ()
- textNodeInternal :: forall t (m :: Type -> Type). (Adjustable t m, MonadHold t m, MonadJSM m, MonadFix m) => TextNodeConfig t -> HydrationDomBuilderT HydrationDomSpace t m (TextNode HydrationDomSpace t)
- removeSubsequentNodes :: (MonadJSM m, IsNode n) => n -> m ()
- deleteBetweenExclusive :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m ()
- extractBetweenExclusive :: (MonadJSM m, IsNode start, IsNode end) => DocumentFragment -> start -> end -> m ()
- deleteUpTo :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m ()
- extractUpTo :: (MonadJSM m, IsNode start, IsNode end) => DocumentFragment -> start -> end -> m ()
- type SupportsHydrationDomBuilder t (m :: Type -> Type) = (Reflex t, MonadJSM m, MonadHold t m, MonadFix m, MonadReflexCreateTrigger t m, MonadRef m, Ref m ~ Ref JSM, Adjustable t m, PrimMonad m, PerformEvent t m, MonadJSM (Performable m))
- collectUpTo :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m DocumentFragment
- collectUpToGivenParent :: (MonadJSM m, IsNode parent, IsNode start, IsNode end) => parent -> start -> end -> m DocumentFragment
- newtype EventTriggerRef t a = EventTriggerRef {
- unEventTriggerRef :: IORef (Maybe (EventTrigger t a))
- newtype EventFilterTriggerRef t (er :: EventTag -> Type) (en :: EventTag) = EventFilterTriggerRef (IORef (Maybe (EventTrigger t (er en))))
- wrap :: forall {k1} (s :: k1) m (er :: EventTag -> Type) t. (MonadJSM m, DomRenderHook t m, EventSpec s ~ GhcjsEventSpec) => Chan [DSum (EventTriggerRef t) TriggerInvocation] -> Element -> RawElementConfig er t s -> m (DMap EventName (EventFilterTriggerRef t er))
- elementInternal :: forall (m :: Type -> Type) t (er :: EventTag -> Type) a. (MonadJSM m, Reflex t, MonadReflexCreateTrigger t m, MonadFix m) => Text -> ElementConfig er t HydrationDomSpace -> HydrationDomBuilderT HydrationDomSpace t m a -> HydrationDomBuilderT HydrationDomSpace t m (Element er HydrationDomSpace t, a)
- data HydrationDomSpace
- data GhcjsDomSpace
- newtype GhcjsDomHandler a b = GhcjsDomHandler {
- unGhcjsDomHandler :: a -> JSM b
- newtype GhcjsDomHandler1 (a :: EventTag -> Type) (b :: EventTag -> Type) = GhcjsDomHandler1 {
- unGhcjsDomHandler1 :: forall (x :: EventTag). a x -> JSM (b x)
- newtype GhcjsDomEvent (en :: EventTag) = GhcjsDomEvent {
- unGhcjsDomEvent :: EventType en
- newtype GhcjsEventFilter (er :: EventTag -> Type) (en :: EventTag) = GhcjsEventFilter (GhcjsDomEvent en -> JSM (EventFlags, JSM (Maybe (er en))))
- data Pair1 (f :: k -> Type) (g :: k -> Type) (a :: k) = Pair1 (f a) (g a)
- data Maybe1 (f :: k -> Type) (a :: k)
- data GhcjsEventSpec (er :: EventTag -> Type) = GhcjsEventSpec {}
- class Monad m => HasDocument (m :: Type -> Type) where
- askDocument :: m (RawDocument (DomBuilderSpace m))
- ghcjsEventSpec_filters :: forall (er :: EventTag -> Type) f. Functor f => (DMap EventName (GhcjsEventFilter er) -> f (DMap EventName (GhcjsEventFilter er))) -> GhcjsEventSpec er -> f (GhcjsEventSpec er)
- ghcjsEventSpec_handler :: forall (er :: EventTag -> Type) f. Functor f => (GhcjsEventHandler er -> f (GhcjsEventHandler er)) -> GhcjsEventSpec er -> f (GhcjsEventSpec er)
- newtype GhcjsEventHandler (er :: EventTag -> Type) = GhcjsEventHandler {
- unGhcjsEventHandler :: forall (en :: EventTag). (EventName en, GhcjsDomEvent en) -> JSM (Maybe (er en))
- drawChildUpdate :: forall {k1} {k2} (m :: Type -> Type) t k3 (s :: k1) f (a :: k2). MonadJSM m => HydrationDomBuilderEnv t m -> (IORef (ChildReadyState k3) -> JSM ()) -> HydrationDomBuilderT s t m (f a) -> DomRenderHookT t m (Compose (TraverseChild t m k3) f a)
- data ChildReadyState a
- mkHasFocus :: forall {k1} {k2} m (d :: k1) (t :: k2) (er :: EventTag -> Type). (HasDocument m, MonadJSM m, IsNode (RawElement d), MonadHold t m, Reflex t, IsDocumentOrShadowRoot (RawDocument (DomBuilderSpace m))) => Element er d t -> m (Dynamic t Bool)
- insertBefore :: (MonadJSM m, IsNode new, IsNode existing) => new -> existing -> m ()
- type family EventType (en :: EventTag) where ...
- defaultDomEventHandler :: forall e (en :: EventTag). IsElement e => e -> EventName en -> EventM e (EventType en) (Maybe (EventResult en))
- defaultDomWindowEventHandler :: forall (en :: EventTag). Window -> EventName en -> EventM Window (EventType en) (Maybe (EventResult en))
- withIsEvent :: forall (en :: EventTag) r. EventName en -> (IsEvent (EventType en) => r) -> r
- showEventName :: forall (en :: EventTag). EventName en -> String
- elementOnEventName :: forall e (en :: EventTag). IsElement e => EventName en -> e -> EventM e (EventType en) () -> JSM (JSM ())
- windowOnEventName :: forall (en :: EventTag). EventName en -> Window -> EventM Window (EventType en) () -> JSM (JSM ())
- wrapDomEvent :: (TriggerEvent t m, MonadJSM m) => e -> (e -> EventM e event () -> JSM (JSM ())) -> EventM e event a -> m (Event t a)
- subscribeDomEvent :: (EventM e event () -> JSM (JSM ())) -> EventM e event (Maybe a) -> Chan [DSum (EventTriggerRef t) TriggerInvocation] -> EventTrigger t a -> JSM (JSM ())
- wrapDomEventMaybe :: (TriggerEvent t m, MonadJSM m) => e -> (e -> EventM e event () -> JSM (JSM ())) -> EventM e event (Maybe a) -> m (Event t a)
- wrapDomEventsMaybe :: forall (m :: Type -> Type) t e f. (MonadJSM m, MonadReflexCreateTrigger t m) => e -> (forall (en :: EventTag). IsEvent (EventType en) => EventName en -> EventM e (EventType en) (Maybe (f en))) -> (forall (en :: EventTag). EventName en -> e -> EventM e (EventType en) () -> JSM (JSM ())) -> ImmediateDomBuilderT t m (EventSelector t (WrapArg f EventName))
- getKeyEvent :: EventM e KeyboardEvent Word
- getMouseEventCoords :: EventM e MouseEvent (Int, Int)
- getTouchEvent :: EventM e TouchEvent TouchEventResult
- data WindowConfig (t :: k) = WindowConfig
- data Window (t :: k) = Window {}
- wrapWindow :: forall (m :: Type -> Type) t. (MonadJSM m, MonadReflexCreateTrigger t m) => Window -> WindowConfig t -> HydrationDomBuilderT GhcjsDomSpace t m (Window t)
- hydratableAttribute :: IsString s => s
- skipHydrationAttribute :: IsString s => s
- traverseDMapWithKeyWithAdjust' :: forall {k1} (s :: k1) t (m :: Type -> Type) k2 v v'. (Adjustable t m, MonadHold t m, MonadFix m, MonadJSM m, GCompare k2, RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) => (forall a. k2 a -> v a -> HydrationDomBuilderT s t m (v' a)) -> DMap k2 v -> Event t (PatchDMap k2 v) -> HydrationDomBuilderT s t m (DMap k2 v', Event t (PatchDMap k2 v'))
- hoistTraverseWithKeyWithAdjust :: forall {k1} {k2} t (m :: Type -> Type) k3 p v' (s :: k2) v. (Adjustable t m, MonadHold t m, GCompare k3, MonadJSM m, MonadFix m, Patch (p k3 (Compose (TraverseChild t m (Some k3)) v')), PatchTarget (p k3 (Compose (TraverseChild t m (Some k3)) v')) ~ DMap k3 (Compose (TraverseChild t m (Some k3)) v'), Monoid (p k3 (Compose (TraverseChild t m (Some k3)) v')), RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) => (forall (vv :: k1 -> Type) (vv' :: k1 -> Type). (forall (a :: k1). k3 a -> vv a -> DomRenderHookT t m (vv' a)) -> DMap k3 vv -> Event t (p k3 vv) -> DomRenderHookT t m (DMap k3 vv', Event t (p k3 vv'))) -> (forall (vv :: k1 -> Type) (vv' :: k1 -> Type). (forall (a :: k1). vv a -> vv' a) -> p k3 vv -> p k3 vv') -> (p k3 (Compose (TraverseChild t m (Some k3)) v') -> DMap k3 (Constant (IORef (ChildReadyState (Some k3))) :: k1 -> Type) -> IO (DMap k3 (Constant (IORef (ChildReadyState (Some k3))) :: k1 -> Type))) -> (IORef (Map (Some k3) Text) -> Text -> p k3 (Compose (TraverseChild t m (Some k3)) v') -> JSM ()) -> (forall (a :: k1). k3 a -> v a -> HydrationDomBuilderT s t m (v' a)) -> DMap k3 v -> Event t (p k3 v) -> HydrationDomBuilderT s t m (DMap k3 v', Event t (p k3 v'))
- traverseIntMapWithKeyWithAdjust' :: forall {k} (s :: k) t (m :: Type -> Type) v v'. (Adjustable t m, MonadJSM m, MonadFix m, MonadHold t m, RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) => (Key -> v -> HydrationDomBuilderT s t m v') -> IntMap v -> Event t (PatchIntMap v) -> HydrationDomBuilderT s t m (IntMap v', Event t (PatchIntMap v'))
- hoistTraverseIntMapWithKeyWithAdjust :: forall {k} t (m :: Type -> Type) p v' (s :: k) v. (Adjustable t m, MonadHold t m, MonadJSM m, MonadFix m, Monoid (p (TraverseChild t m Int v')), Functor p, PatchTarget (p (TraverseChild t m Int v')) ~ IntMap (TraverseChild t m Int v'), Patch (p (TraverseChild t m Int v')), RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) => ((Key -> v -> DomRenderHookT t m (TraverseChild t m Int v')) -> IntMap v -> Event t (p v) -> DomRenderHookT t m (IntMap (TraverseChild t m Int v'), Event t (p (TraverseChild t m Int v')))) -> (p (TraverseChild t m Int v') -> IntMap (IORef (ChildReadyState Int)) -> IO (IntMap (IORef (ChildReadyState Int)))) -> (IORef (IntMap Text) -> Text -> p (TraverseChild t m Int v') -> JSM ()) -> (Key -> v -> HydrationDomBuilderT s t m v') -> IntMap v -> Event t (p v) -> HydrationDomBuilderT s t m (IntMap v', Event t (p v'))
Documentation
newtype HydrationDomBuilderT (s :: k) t (m :: Type -> Type) a Source #
A monad for DomBuilder which just gets the results of children and pushes
work into an action that is delayed until after postBuild (to match the
static builder). The action runs in HydrationRunnerT
, which performs the
DOM takeover and sets up the events, after which point this monad will
continue in the vein of ImmediateDomBuilderT
.
Constructors
HydrationDomBuilderT | |
Fields
|
Instances
data HydrationDomBuilderEnv t (m :: Type -> Type) Source #
Constructors
HydrationDomBuilderEnv | |
Fields
|
data HydrationMode Source #
Constructors
HydrationMode_Hydrating | The time from initial load to parity with static builder |
HydrationMode_Immediate | After hydration |
Instances
Show HydrationMode Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods showsPrec :: Int -> HydrationMode -> ShowS # show :: HydrationMode -> String # showList :: [HydrationMode] -> ShowS # | |
Eq HydrationMode Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods (==) :: HydrationMode -> HydrationMode -> Bool # (/=) :: HydrationMode -> HydrationMode -> Bool # | |
Ord HydrationMode Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods compare :: HydrationMode -> HydrationMode -> Ordering # (<) :: HydrationMode -> HydrationMode -> Bool # (<=) :: HydrationMode -> HydrationMode -> Bool # (>) :: HydrationMode -> HydrationMode -> Bool # (>=) :: HydrationMode -> HydrationMode -> Bool # max :: HydrationMode -> HydrationMode -> HydrationMode # min :: HydrationMode -> HydrationMode -> HydrationMode # |
newtype HydrationRunnerT t (m :: Type -> Type) a Source #
The monad which performs the delayed actions to reuse prerendered nodes and set up events. State contains reference to the previous node sibling, if any, and the reader contains reference to the parent node.
Constructors
HydrationRunnerT | |
Fields
|
Instances
MonadSample t m => MonadSample (t :: Type) (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods sample :: Behavior t a -> HydrationRunnerT t m a # | |
(Reflex t, MonadFix m) => DomRenderHook (t :: Type) (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods withRenderHook :: (forall x. JSM x -> JSM x) -> HydrationRunnerT t m a -> HydrationRunnerT t m a Source # requestDomAction :: Event t (JSM a) -> HydrationRunnerT t m (Event t a) Source # requestDomAction_ :: Event t (JSM a) -> HydrationRunnerT t m () Source # | |
MonadReflexCreateTrigger t m => MonadReflexCreateTrigger t (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods newEventWithTrigger :: (EventTrigger t a -> IO (IO ())) -> HydrationRunnerT t m (Event t a) # newFanEventWithTrigger :: GCompare k => (forall a. k a -> EventTrigger t a -> IO (IO ())) -> HydrationRunnerT t m (EventSelector t k) # | |
MonadTrans (HydrationRunnerT t) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods lift :: Monad m => m a -> HydrationRunnerT t m a # | |
MonadFix m => MonadFix (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods mfix :: (a -> HydrationRunnerT t m a) -> HydrationRunnerT t m a # | |
MonadIO m => MonadIO (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods liftIO :: IO a -> HydrationRunnerT t m a # | |
Monad m => Applicative (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods pure :: a -> HydrationRunnerT t m a # (<*>) :: HydrationRunnerT t m (a -> b) -> HydrationRunnerT t m a -> HydrationRunnerT t m b # liftA2 :: (a -> b -> c) -> HydrationRunnerT t m a -> HydrationRunnerT t m b -> HydrationRunnerT t m c # (*>) :: HydrationRunnerT t m a -> HydrationRunnerT t m b -> HydrationRunnerT t m b # (<*) :: HydrationRunnerT t m a -> HydrationRunnerT t m b -> HydrationRunnerT t m a # | |
Functor m => Functor (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods fmap :: (a -> b) -> HydrationRunnerT t m a -> HydrationRunnerT t m b # (<$) :: a -> HydrationRunnerT t m b -> HydrationRunnerT t m a # | |
Monad m => Monad (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods (>>=) :: HydrationRunnerT t m a -> (a -> HydrationRunnerT t m b) -> HydrationRunnerT t m b # (>>) :: HydrationRunnerT t m a -> HydrationRunnerT t m b -> HydrationRunnerT t m b # return :: a -> HydrationRunnerT t m a # | |
MonadAsyncException m => MonadAsyncException (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods mask :: ((forall a. HydrationRunnerT t m a -> HydrationRunnerT t m a) -> HydrationRunnerT t m b) -> HydrationRunnerT t m b # | |
MonadException m => MonadException (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods throw :: Exception e => e -> HydrationRunnerT t m a # catch :: Exception e => HydrationRunnerT t m a -> (e -> HydrationRunnerT t m a) -> HydrationRunnerT t m a # finally :: HydrationRunnerT t m a -> HydrationRunnerT t m b -> HydrationRunnerT t m a # | |
MonadJSM m => MonadJSM (HydrationRunnerT t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods liftJSM' :: JSM a -> HydrationRunnerT t m a # |
runHydrationRunnerT :: (MonadRef m, Ref m ~ IORef, PerformEvent t m, MonadFix m, MonadReflexCreateTrigger t m, MonadJSM m, MonadJSM (Performable m)) => HydrationRunnerT t m a -> Maybe Node -> Node -> Chan [DSum (EventTriggerRef t) TriggerInvocation] -> m a Source #
runHydrationRunnerTWithFailure :: (MonadRef m, Ref m ~ IORef, PerformEvent t m, MonadFix m, MonadReflexCreateTrigger t m, MonadJSM m, MonadJSM (Performable m)) => HydrationRunnerT t m a -> IO () -> Maybe Node -> Node -> Chan [DSum (EventTriggerRef t) TriggerInvocation] -> m a Source #
runHydrationDomBuilderT :: forall {k} m t (s :: k) a. (MonadFix m, PerformEvent t m, MonadReflexCreateTrigger t m, MonadJSM (Performable m), MonadRef m, Ref m ~ IORef) => HydrationDomBuilderT s t m a -> HydrationDomBuilderEnv t m -> Chan [DSum (EventTriggerRef t) TriggerInvocation] -> m a Source #
getHydrationMode :: forall {k} (m :: Type -> Type) (s :: k) t. MonadIO m => HydrationDomBuilderT s t m HydrationMode Source #
addHydrationStep :: forall {k} (m :: Type -> Type) t (s :: k). MonadIO m => HydrationRunnerT t m () -> HydrationDomBuilderT s t m () Source #
Add a hydration step
addHydrationStepWithSetup :: forall {k} m a t (s :: k). MonadIO m => m a -> (a -> HydrationRunnerT t m ()) -> HydrationDomBuilderT s t m () Source #
Add a hydration step which depends on some computation that should only be
done *before* the switchover to immediate mode - this is most likely some
form of hold
which we want to remove after hydration is done
setPreviousNode :: forall (m :: Type -> Type) t. Monad m => Maybe Node -> HydrationRunnerT t m () Source #
insertAfterPreviousNode :: forall (m :: Type -> Type) node t. (MonadJSM m, IsNode node) => node -> HydrationRunnerT t m () Source #
hydrateComment :: forall (m :: Type -> Type) t. (MonadJSM m, Reflex t, MonadFix m) => Document -> Text -> Maybe (Event t Text) -> HydrationRunnerT t m Comment Source #
askEvents :: forall {k} (m :: Type -> Type) (s :: k) t. Monad m => HydrationDomBuilderT s t m (Chan [DSum (EventTriggerRef t) TriggerInvocation]) Source #
append :: forall {k} (m :: Type -> Type) (s :: k) t. MonadJSM m => Node -> HydrationDomBuilderT s t m () Source #
textNodeInternal :: forall t (m :: Type -> Type). (Adjustable t m, MonadHold t m, MonadJSM m, MonadFix m) => TextNodeConfig t -> HydrationDomBuilderT HydrationDomSpace t m (TextNode HydrationDomSpace t) Source #
removeSubsequentNodes :: (MonadJSM m, IsNode n) => n -> m () Source #
Remove all nodes after given node
deleteBetweenExclusive :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m () Source #
s and e must both be children of the same node and s must precede e; all nodes between s and e will be removed, but s and e will not be removed
extractBetweenExclusive :: (MonadJSM m, IsNode start, IsNode end) => DocumentFragment -> start -> end -> m () Source #
s and e must both be children of the same node and s must precede e; all nodes between s and e will be moved into the given DocumentFragment, but s and e will not be moved
deleteUpTo :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m () Source #
s and e must both be children of the same node and s must precede e; s and all nodes between s and e will be removed, but e will not be removed
extractUpTo :: (MonadJSM m, IsNode start, IsNode end) => DocumentFragment -> start -> end -> m () Source #
type SupportsHydrationDomBuilder t (m :: Type -> Type) = (Reflex t, MonadJSM m, MonadHold t m, MonadFix m, MonadReflexCreateTrigger t m, MonadRef m, Ref m ~ Ref JSM, Adjustable t m, PrimMonad m, PerformEvent t m, MonadJSM (Performable m)) Source #
collectUpTo :: (MonadJSM m, IsNode start, IsNode end) => start -> end -> m DocumentFragment Source #
collectUpToGivenParent :: (MonadJSM m, IsNode parent, IsNode start, IsNode end) => parent -> start -> end -> m DocumentFragment Source #
newtype EventTriggerRef t a #
A reference to an EventTrigger
suitable for firing with TriggerEventT
.
Constructors
EventTriggerRef | |
Fields
|
newtype EventFilterTriggerRef t (er :: EventTag -> Type) (en :: EventTag) Source #
Constructors
EventFilterTriggerRef (IORef (Maybe (EventTrigger t (er en)))) |
wrap :: forall {k1} (s :: k1) m (er :: EventTag -> Type) t. (MonadJSM m, DomRenderHook t m, EventSpec s ~ GhcjsEventSpec) => Chan [DSum (EventTriggerRef t) TriggerInvocation] -> Element -> RawElementConfig er t s -> m (DMap EventName (EventFilterTriggerRef t er)) Source #
This wrap
is only partial: it doesn't create the EventSelector
itself
elementInternal :: forall (m :: Type -> Type) t (er :: EventTag -> Type) a. (MonadJSM m, Reflex t, MonadReflexCreateTrigger t m, MonadFix m) => Text -> ElementConfig er t HydrationDomSpace -> HydrationDomBuilderT HydrationDomSpace t m a -> HydrationDomBuilderT HydrationDomSpace t m (Element er HydrationDomSpace t, a) Source #
data HydrationDomSpace Source #
Instances
DomSpace HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate Associated Types
Methods addEventSpecFlags :: forall proxy (en :: EventTag) er. proxy HydrationDomSpace -> EventName en -> (Maybe (er en) -> EventFlags) -> EventSpec HydrationDomSpace er -> EventSpec HydrationDomSpace er Source # | |||||||||||||||||||||||||||||||||
SupportsHydrationDomBuilder t m => DomBuilder t (HydrationDomBuilderT HydrationDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate Associated Types
Methods textNode :: TextNodeConfig t -> HydrationDomBuilderT HydrationDomSpace t m (TextNode (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) t) Source # commentNode :: CommentNodeConfig t -> HydrationDomBuilderT HydrationDomSpace t m (CommentNode (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) t) Source # element :: forall (er :: EventTag -> Type) a. Text -> ElementConfig er t (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) -> HydrationDomBuilderT HydrationDomSpace t m a -> HydrationDomBuilderT HydrationDomSpace t m (Element er (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) t, a) Source # inputElement :: forall (er :: EventTag -> Type). InputElementConfig er t (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) -> HydrationDomBuilderT HydrationDomSpace t m (InputElement er (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) t) Source # textAreaElement :: forall (er :: EventTag -> Type). TextAreaElementConfig er t (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) -> HydrationDomBuilderT HydrationDomSpace t m (TextAreaElement er (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) t) Source # selectElement :: forall (er :: EventTag -> Type) a. SelectElementConfig er t (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) -> HydrationDomBuilderT HydrationDomSpace t m a -> HydrationDomBuilderT HydrationDomSpace t m (SelectElement er (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) t, a) Source # placeRawElement :: RawElement (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) -> HydrationDomBuilderT HydrationDomSpace t m () Source # wrapRawElement :: forall (er :: EventTag -> Type). RawElement (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) -> RawElementConfig er t (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) -> HydrationDomBuilderT HydrationDomSpace t m (Element er (DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m)) t) Source # | |||||||||||||||||||||||||||||||||
(Adjustable t m, PrerenderBaseConstraints t m, ReflexHost t) => Prerender t (HydrationDomBuilderT HydrationDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Prerender Associated Types
Methods prerender :: HydrationDomBuilderT HydrationDomSpace t m a -> Client (HydrationDomBuilderT HydrationDomSpace t m) a -> HydrationDomBuilderT HydrationDomSpace t m (Dynamic t a) Source # | |||||||||||||||||||||||||||||||||
type EventSpec HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawCommentNode HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawDocument HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawElement HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawInputElement HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawSelectElement HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawTextAreaElement HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawTextNode HydrationDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type DomBuilderSpace (HydrationDomBuilderT HydrationDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type Client (HydrationDomBuilderT HydrationDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Prerender type Client (HydrationDomBuilderT HydrationDomSpace t m) = PostBuildT t (HydrationDomBuilderT GhcjsDomSpace t m) |
data GhcjsDomSpace Source #
Instances
DomSpace GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate Associated Types
Methods addEventSpecFlags :: forall proxy (en :: EventTag) er. proxy GhcjsDomSpace -> EventName en -> (Maybe (er en) -> EventFlags) -> EventSpec GhcjsDomSpace er -> EventSpec GhcjsDomSpace er Source # | |||||||||||||||||||||||||||||||||
SupportsHydrationDomBuilder t m => DomBuilder t (HydrationDomBuilderT GhcjsDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate Associated Types
Methods textNode :: TextNodeConfig t -> HydrationDomBuilderT GhcjsDomSpace t m (TextNode (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) t) Source # commentNode :: CommentNodeConfig t -> HydrationDomBuilderT GhcjsDomSpace t m (CommentNode (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) t) Source # element :: forall (er :: EventTag -> Type) a. Text -> ElementConfig er t (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) -> HydrationDomBuilderT GhcjsDomSpace t m a -> HydrationDomBuilderT GhcjsDomSpace t m (Element er (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) t, a) Source # inputElement :: forall (er :: EventTag -> Type). InputElementConfig er t (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) -> HydrationDomBuilderT GhcjsDomSpace t m (InputElement er (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) t) Source # textAreaElement :: forall (er :: EventTag -> Type). TextAreaElementConfig er t (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) -> HydrationDomBuilderT GhcjsDomSpace t m (TextAreaElement er (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) t) Source # selectElement :: forall (er :: EventTag -> Type) a. SelectElementConfig er t (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) -> HydrationDomBuilderT GhcjsDomSpace t m a -> HydrationDomBuilderT GhcjsDomSpace t m (SelectElement er (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) t, a) Source # placeRawElement :: RawElement (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) -> HydrationDomBuilderT GhcjsDomSpace t m () Source # wrapRawElement :: forall (er :: EventTag -> Type). RawElement (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) -> RawElementConfig er t (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) -> HydrationDomBuilderT GhcjsDomSpace t m (Element er (DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m)) t) Source # | |||||||||||||||||||||||||||||||||
SupportsHydrationDomBuilder t m => MountableDomBuilder t (HydrationDomBuilderT GhcjsDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate Associated Types
Methods buildDomFragment :: HydrationDomBuilderT GhcjsDomSpace t m a -> HydrationDomBuilderT GhcjsDomSpace t m (DomFragment (HydrationDomBuilderT GhcjsDomSpace t m), a) Source # mountDomFragment :: DomFragment (HydrationDomBuilderT GhcjsDomSpace t m) -> Event t (DomFragment (HydrationDomBuilderT GhcjsDomSpace t m)) -> HydrationDomBuilderT GhcjsDomSpace t m () Source # | |||||||||||||||||||||||||||||||||
(ReflexHost t, Adjustable t m, PrerenderBaseConstraints t m) => Prerender t (HydrationDomBuilderT GhcjsDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Prerender Associated Types
Methods prerender :: HydrationDomBuilderT GhcjsDomSpace t m a -> Client (HydrationDomBuilderT GhcjsDomSpace t m) a -> HydrationDomBuilderT GhcjsDomSpace t m (Dynamic t a) Source # | |||||||||||||||||||||||||||||||||
type EventSpec GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawCommentNode GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawDocument GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawElement GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawInputElement GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawSelectElement GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawTextAreaElement GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type RawTextNode GhcjsDomSpace Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type DomBuilderSpace (HydrationDomBuilderT GhcjsDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type DomFragment (HydrationDomBuilderT GhcjsDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Builder.Immediate | |||||||||||||||||||||||||||||||||
type Client (HydrationDomBuilderT GhcjsDomSpace t m) Source # | |||||||||||||||||||||||||||||||||
Defined in Reflex.Dom.Prerender |
newtype GhcjsDomHandler a b Source #
Constructors
GhcjsDomHandler | |
Fields
|
newtype GhcjsDomHandler1 (a :: EventTag -> Type) (b :: EventTag -> Type) Source #
Constructors
GhcjsDomHandler1 | |
Fields
|
newtype GhcjsDomEvent (en :: EventTag) Source #
Constructors
GhcjsDomEvent | |
Fields
|
newtype GhcjsEventFilter (er :: EventTag -> Type) (en :: EventTag) Source #
Constructors
GhcjsEventFilter (GhcjsDomEvent en -> JSM (EventFlags, JSM (Maybe (er en)))) |
data GhcjsEventSpec (er :: EventTag -> Type) Source #
Constructors
GhcjsEventSpec | |
Fields |
Instances
er ~ EventResult => Default (GhcjsEventSpec er) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods def :: GhcjsEventSpec er # |
class Monad m => HasDocument (m :: Type -> Type) where Source #
Minimal complete definition
Nothing
Methods
askDocument :: m (RawDocument (DomBuilderSpace m)) Source #
default askDocument :: forall (f :: (Type -> Type) -> Type -> Type) (m' :: Type -> Type). (m ~ f m', RawDocument (DomBuilderSpace m) ~ RawDocument (DomBuilderSpace m'), MonadTrans f, HasDocument m') => m (RawDocument (DomBuilderSpace m)) Source #
Instances
HasDocument m => HasDocument (HydratableT m) Source # | |
Defined in Reflex.Dom.Builder.Hydratable Methods askDocument :: HydratableT m (RawDocument (DomBuilderSpace (HydratableT m))) Source # | |
HasDocument m => HasDocument (InputDisabledT m) Source # | |
Defined in Reflex.Dom.Builder.InputDisabled Methods askDocument :: InputDisabledT m (RawDocument (DomBuilderSpace (InputDisabledT m))) Source # | |
HasDocument m => HasDocument (PostBuildT t m) Source # | |
Defined in Reflex.Dom.Builder.Class Methods askDocument :: PostBuildT t m (RawDocument (DomBuilderSpace (PostBuildT t m))) Source # | |
HasDocument m => HasDocument (ReaderT r m) Source # | |
Defined in Reflex.Dom.Builder.Class Methods askDocument :: ReaderT r m (RawDocument (DomBuilderSpace (ReaderT r m))) Source # | |
HasDocument m => HasDocument (DynamicWriterT t w m) Source # | |
Defined in Reflex.Dom.Builder.Class Methods askDocument :: DynamicWriterT t w m (RawDocument (DomBuilderSpace (DynamicWriterT t w m))) Source # | |
HasDocument m => HasDocument (EventWriterT t w m) Source # | |
Defined in Reflex.Dom.Builder.Class Methods askDocument :: EventWriterT t w m (RawDocument (DomBuilderSpace (EventWriterT t w m))) Source # | |
HasDocument m => HasDocument (QueryT t q m) Source # | |
Defined in Reflex.Dom.Builder.Class Methods askDocument :: QueryT t q m (RawDocument (DomBuilderSpace (QueryT t q m))) Source # | |
(SupportsStaticDomBuilder t m, Monad m) => HasDocument (StaticDomBuilderT t m) Source # | |
Defined in Reflex.Dom.Builder.Static Methods askDocument :: StaticDomBuilderT t m (RawDocument (DomBuilderSpace (StaticDomBuilderT t m))) Source # | |
HasDocument m => HasDocument (RequesterT t request response m) Source # | |
Defined in Reflex.Dom.Builder.Class Methods askDocument :: RequesterT t request response m (RawDocument (DomBuilderSpace (RequesterT t request response m))) Source # | |
(RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document, Monad m) => HasDocument (HydrationDomBuilderT s t m) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods askDocument :: HydrationDomBuilderT s t m (RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m))) Source # |
ghcjsEventSpec_filters :: forall (er :: EventTag -> Type) f. Functor f => (DMap EventName (GhcjsEventFilter er) -> f (DMap EventName (GhcjsEventFilter er))) -> GhcjsEventSpec er -> f (GhcjsEventSpec er) Source #
ghcjsEventSpec_handler :: forall (er :: EventTag -> Type) f. Functor f => (GhcjsEventHandler er -> f (GhcjsEventHandler er)) -> GhcjsEventSpec er -> f (GhcjsEventSpec er) Source #
newtype GhcjsEventHandler (er :: EventTag -> Type) Source #
Constructors
GhcjsEventHandler | |
Fields
|
drawChildUpdate :: forall {k1} {k2} (m :: Type -> Type) t k3 (s :: k1) f (a :: k2). MonadJSM m => HydrationDomBuilderEnv t m -> (IORef (ChildReadyState k3) -> JSM ()) -> HydrationDomBuilderT s t m (f a) -> DomRenderHookT t m (Compose (TraverseChild t m k3) f a) Source #
data ChildReadyState a Source #
Constructors
ChildReadyState_Ready | |
ChildReadyState_Unready !(Maybe a) |
Instances
Read a => Read (ChildReadyState a) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods readsPrec :: Int -> ReadS (ChildReadyState a) # readList :: ReadS [ChildReadyState a] # readPrec :: ReadPrec (ChildReadyState a) # readListPrec :: ReadPrec [ChildReadyState a] # | |
Show a => Show (ChildReadyState a) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods showsPrec :: Int -> ChildReadyState a -> ShowS # show :: ChildReadyState a -> String # showList :: [ChildReadyState a] -> ShowS # | |
Eq a => Eq (ChildReadyState a) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods (==) :: ChildReadyState a -> ChildReadyState a -> Bool # (/=) :: ChildReadyState a -> ChildReadyState a -> Bool # | |
Ord a => Ord (ChildReadyState a) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods compare :: ChildReadyState a -> ChildReadyState a -> Ordering # (<) :: ChildReadyState a -> ChildReadyState a -> Bool # (<=) :: ChildReadyState a -> ChildReadyState a -> Bool # (>) :: ChildReadyState a -> ChildReadyState a -> Bool # (>=) :: ChildReadyState a -> ChildReadyState a -> Bool # max :: ChildReadyState a -> ChildReadyState a -> ChildReadyState a # min :: ChildReadyState a -> ChildReadyState a -> ChildReadyState a # |
mkHasFocus :: forall {k1} {k2} m (d :: k1) (t :: k2) (er :: EventTag -> Type). (HasDocument m, MonadJSM m, IsNode (RawElement d), MonadHold t m, Reflex t, IsDocumentOrShadowRoot (RawDocument (DomBuilderSpace m))) => Element er d t -> m (Dynamic t Bool) Source #
type family EventType (en :: EventTag) where ... Source #
Equations
EventType 'AbortTag = UIEvent | |
EventType 'BlurTag = FocusEvent | |
EventType 'ChangeTag = Event | |
EventType 'ClickTag = MouseEvent | |
EventType 'ContextmenuTag = MouseEvent | |
EventType 'DblclickTag = MouseEvent | |
EventType 'DragTag = MouseEvent | |
EventType 'DragendTag = MouseEvent | |
EventType 'DragenterTag = MouseEvent | |
EventType 'DragleaveTag = MouseEvent | |
EventType 'DragoverTag = MouseEvent | |
EventType 'DragstartTag = MouseEvent | |
EventType 'DropTag = MouseEvent | |
EventType 'ErrorTag = UIEvent | |
EventType 'FocusTag = FocusEvent | |
EventType 'InputTag = Event | |
EventType 'InvalidTag = Event | |
EventType 'KeydownTag = KeyboardEvent | |
EventType 'KeypressTag = KeyboardEvent | |
EventType 'KeyupTag = KeyboardEvent | |
EventType 'LoadTag = UIEvent | |
EventType 'MousedownTag = MouseEvent | |
EventType 'MouseenterTag = MouseEvent | |
EventType 'MouseleaveTag = MouseEvent | |
EventType 'MousemoveTag = MouseEvent | |
EventType 'MouseoutTag = MouseEvent | |
EventType 'MouseoverTag = MouseEvent | |
EventType 'MouseupTag = MouseEvent | |
EventType 'MousewheelTag = MouseEvent | |
EventType 'ScrollTag = UIEvent | |
EventType 'SelectTag = UIEvent | |
EventType 'SubmitTag = Event | |
EventType 'WheelTag = WheelEvent | |
EventType 'BeforecutTag = ClipboardEvent | |
EventType 'CutTag = ClipboardEvent | |
EventType 'BeforecopyTag = ClipboardEvent | |
EventType 'CopyTag = ClipboardEvent | |
EventType 'BeforepasteTag = ClipboardEvent | |
EventType 'PasteTag = ClipboardEvent | |
EventType 'ResetTag = Event | |
EventType 'SearchTag = Event | |
EventType 'SelectstartTag = Event | |
EventType 'TouchstartTag = TouchEvent | |
EventType 'TouchmoveTag = TouchEvent | |
EventType 'TouchendTag = TouchEvent | |
EventType 'TouchcancelTag = TouchEvent |
defaultDomEventHandler :: forall e (en :: EventTag). IsElement e => e -> EventName en -> EventM e (EventType en) (Maybe (EventResult en)) Source #
defaultDomWindowEventHandler :: forall (en :: EventTag). Window -> EventName en -> EventM Window (EventType en) (Maybe (EventResult en)) Source #
withIsEvent :: forall (en :: EventTag) r. EventName en -> (IsEvent (EventType en) => r) -> r Source #
elementOnEventName :: forall e (en :: EventTag). IsElement e => EventName en -> e -> EventM e (EventType en) () -> JSM (JSM ()) Source #
windowOnEventName :: forall (en :: EventTag). EventName en -> Window -> EventM Window (EventType en) () -> JSM (JSM ()) Source #
wrapDomEvent :: (TriggerEvent t m, MonadJSM m) => e -> (e -> EventM e event () -> JSM (JSM ())) -> EventM e event a -> m (Event t a) Source #
subscribeDomEvent :: (EventM e event () -> JSM (JSM ())) -> EventM e event (Maybe a) -> Chan [DSum (EventTriggerRef t) TriggerInvocation] -> EventTrigger t a -> JSM (JSM ()) Source #
wrapDomEventMaybe :: (TriggerEvent t m, MonadJSM m) => e -> (e -> EventM e event () -> JSM (JSM ())) -> EventM e event (Maybe a) -> m (Event t a) Source #
wrapDomEventsMaybe :: forall (m :: Type -> Type) t e f. (MonadJSM m, MonadReflexCreateTrigger t m) => e -> (forall (en :: EventTag). IsEvent (EventType en) => EventName en -> EventM e (EventType en) (Maybe (f en))) -> (forall (en :: EventTag). EventName en -> e -> EventM e (EventType en) () -> JSM (JSM ())) -> ImmediateDomBuilderT t m (EventSelector t (WrapArg f EventName)) Source #
getMouseEventCoords :: EventM e MouseEvent (Int, Int) Source #
data WindowConfig (t :: k) Source #
Constructors
WindowConfig |
Instances
Default (WindowConfig t) Source # | |
Defined in Reflex.Dom.Builder.Immediate Methods def :: WindowConfig t # |
Constructors
Window | |
Fields |
wrapWindow :: forall (m :: Type -> Type) t. (MonadJSM m, MonadReflexCreateTrigger t m) => Window -> WindowConfig t -> HydrationDomBuilderT GhcjsDomSpace t m (Window t) Source #
Attributes for controlling hydration
hydratableAttribute :: IsString s => s Source #
An attribute which signals that an element should be hydrated.
skipHydrationAttribute :: IsString s => s Source #
An attribute which causes hydration to skip over an element completely.
Internal
traverseDMapWithKeyWithAdjust' :: forall {k1} (s :: k1) t (m :: Type -> Type) k2 v v'. (Adjustable t m, MonadHold t m, MonadFix m, MonadJSM m, GCompare k2, RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) => (forall a. k2 a -> v a -> HydrationDomBuilderT s t m (v' a)) -> DMap k2 v -> Event t (PatchDMap k2 v) -> HydrationDomBuilderT s t m (DMap k2 v', Event t (PatchDMap k2 v')) Source #
hoistTraverseWithKeyWithAdjust Source #
Arguments
:: forall {k1} {k2} t (m :: Type -> Type) k3 p v' (s :: k2) v. (Adjustable t m, MonadHold t m, GCompare k3, MonadJSM m, MonadFix m, Patch (p k3 (Compose (TraverseChild t m (Some k3)) v')), PatchTarget (p k3 (Compose (TraverseChild t m (Some k3)) v')) ~ DMap k3 (Compose (TraverseChild t m (Some k3)) v'), Monoid (p k3 (Compose (TraverseChild t m (Some k3)) v')), RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) | |
=> (forall (vv :: k1 -> Type) (vv' :: k1 -> Type). (forall (a :: k1). k3 a -> vv a -> DomRenderHookT t m (vv' a)) -> DMap k3 vv -> Event t (p k3 vv) -> DomRenderHookT t m (DMap k3 vv', Event t (p k3 vv'))) | The base monad's traversal |
-> (forall (vv :: k1 -> Type) (vv' :: k1 -> Type). (forall (a :: k1). vv a -> vv' a) -> p k3 vv -> p k3 vv') | A way of mapping over the patch type |
-> (p k3 (Compose (TraverseChild t m (Some k3)) v') -> DMap k3 (Constant (IORef (ChildReadyState (Some k3))) :: k1 -> Type) -> IO (DMap k3 (Constant (IORef (ChildReadyState (Some k3))) :: k1 -> Type))) | Given a patch for the children DOM elements, produce a patch for the childrens' unreadiness state |
-> (IORef (Map (Some k3) Text) -> Text -> p k3 (Compose (TraverseChild t m (Some k3)) v') -> JSM ()) | Apply a patch to the DOM |
-> (forall (a :: k1). k3 a -> v a -> HydrationDomBuilderT s t m (v' a)) | |
-> DMap k3 v | |
-> Event t (p k3 v) | |
-> HydrationDomBuilderT s t m (DMap k3 v', Event t (p k3 v')) |
traverseIntMapWithKeyWithAdjust' :: forall {k} (s :: k) t (m :: Type -> Type) v v'. (Adjustable t m, MonadJSM m, MonadFix m, MonadHold t m, RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) => (Key -> v -> HydrationDomBuilderT s t m v') -> IntMap v -> Event t (PatchIntMap v) -> HydrationDomBuilderT s t m (IntMap v', Event t (PatchIntMap v')) Source #
hoistTraverseIntMapWithKeyWithAdjust Source #
Arguments
:: forall {k} t (m :: Type -> Type) p v' (s :: k) v. (Adjustable t m, MonadHold t m, MonadJSM m, MonadFix m, Monoid (p (TraverseChild t m Int v')), Functor p, PatchTarget (p (TraverseChild t m Int v')) ~ IntMap (TraverseChild t m Int v'), Patch (p (TraverseChild t m Int v')), RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) | |
=> ((Key -> v -> DomRenderHookT t m (TraverseChild t m Int v')) -> IntMap v -> Event t (p v) -> DomRenderHookT t m (IntMap (TraverseChild t m Int v'), Event t (p (TraverseChild t m Int v')))) | The base monad's traversal |
-> (p (TraverseChild t m Int v') -> IntMap (IORef (ChildReadyState Int)) -> IO (IntMap (IORef (ChildReadyState Int)))) | Given a patch for the children DOM elements, produce a patch for the childrens' unreadiness state |
-> (IORef (IntMap Text) -> Text -> p (TraverseChild t m Int v') -> JSM ()) | Apply a patch to the DOM |
-> (Key -> v -> HydrationDomBuilderT s t m v') | |
-> IntMap v | |
-> Event t (p v) | |
-> HydrationDomBuilderT s t m (IntMap v', Event t (p v')) |