| Copyright | (C) 2016-2026 David M. Johnson |
|---|---|
| License | BSD3-style (see the file LICENSE) |
| Maintainer | David M. Johnson <code@dmj.io> |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Miso.Subscription
Description
Overview
Miso.Subscription is the re-export hub for all of miso's built-in
Sub subscriptions. A subscription is a long-running IO
action of type that delivers
external events — mouse moves, key presses, URL changes, animation
frames — into the update loop by calling its Sink action -> IO ()Sink.
Register subscriptions in the subs field of a
Component:
import Miso import Miso.Subscription myComponent = (componentmodel update view) {subs= [mouseSubMouseMoved ,keyboardSubKeyPressed ,uriSubUrlChanged ,rAFSubTick ] }
Subscription catalogue
mouseSub- global
pointermove— Miso.Subscription.Mouse keyboardSub- global
keydown/keyup— Miso.Subscription.Keyboard arrowsSub,wasdSub,directionSub- arrow or WASD keys held — Miso.Subscription.Keyboard
uriSub- browser
popstate(back/forward/pushState) — Miso.Subscription.History routerSub- same, decoded via
Router— Miso.Subscription.History windowCoordsSub- global window
pointermove— Miso.Subscription.Window windowPointerMoveSub- global window
pointermove— Miso.Subscription.Window windowSubWithOptions- any window event — Miso.Subscription.Window
onLineSubonline/offlinechange — Miso.Subscription.OnLinerAFSub- every
requestAnimationFrametick — Miso.Subscription.RAF
History helpers
The Miso.Subscription.History module also exports imperative
navigation functions usable from within Effect:
update GoHome =io_(pushURI(toURIHome)) update GoBack =io_back
See also
- Miso.Effect —
Sub,Sink,mapSub - Miso.Subscription.Util —
createSubfor custom subscriptions - Miso.Router —
Routertypeclass used byrouterSub
Synopsis
- module Miso.Subscription.Mouse
- module Miso.Subscription.Keyboard
- module Miso.Subscription.History
- module Miso.Subscription.Window
- module Miso.Subscription.OnLine
- module Miso.Subscription.RAF