Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unstable API which exposes internals for testing.
Synopsis
- data DebounceSettings = DebounceSettings {}
- data DebounceEdge
- leadingEdge :: DebounceEdge
- leadingMuteEdge :: DebounceEdge
- trailingEdge :: DebounceEdge
- trailingDelayEdge :: DebounceEdge
- mkDebounceInternal :: MVar () -> (Int -> IO ()) -> DebounceSettings -> IO (IO ())
Documentation
data DebounceSettings Source #
Settings to control how debouncing should work.
This should be constructed using defaultDebounceSettings
and record
update syntax, e.g.:
let settings =defaultDebounceSettings
{debounceAction
= flushLog }
Since: 0.1.2
DebounceSettings | |
|
data DebounceEdge Source #
Setting to control whether the action happens at the leading and/or trailing edge of the timeout.
Since: 0.1.6
Leading | Perform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, wait until the end of the cooldown and then perform the action again, then enter a new cooldown period. |
LeadingMute | Perform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, it is ignored. |
Trailing | Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it has no effect. |
TrailingDelay | Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it restarts the cooldown again. |
Instances
Show DebounceEdge Source # | |
Defined in Control.Debounce.Internal showsPrec :: Int -> DebounceEdge -> ShowS # show :: DebounceEdge -> String # showList :: [DebounceEdge] -> ShowS # | |
Eq DebounceEdge Source # | |
Defined in Control.Debounce.Internal (==) :: DebounceEdge -> DebounceEdge -> Bool # (/=) :: DebounceEdge -> DebounceEdge -> Bool # |
leadingEdge :: DebounceEdge Source #
Perform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, wait until the end of the cooldown and then perform the action again, then enter a new cooldown period.
Example of how this style debounce works:
! = function execution . = cooldown period X = debounced code execution ! ! ! ! ....... ....... ....... ....... X X X X
Since: 0.1.6
leadingMuteEdge :: DebounceEdge Source #
Perform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, it is ignored.
Example of how this style debounce works:
! = function execution . = cooldown period X = debounced code execution ! ! ! ! ....... ....... X X
Since: 0.1.6
trailingEdge :: DebounceEdge Source #
Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it has no effect.
Example of how this style debounce works:
! = function execution . = cooldown period X = debounced code execution ! ! ! ! ....... ....... X X
Since: 0.1.6
trailingDelayEdge :: DebounceEdge Source #
Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it restarts the cooldown again.
N.B. If a trigger happens DURING the debounceAction
it starts a new cooldown.
So if the debounceAction
takes longer than the debounceFreq
, it might run
again before the previous action has ended.
Example of how this style debounce works:
! = function execution . = cooldown period X = debounced code execution ! ! ! ! ....... ............... X X
Since: 0.1.6
mkDebounceInternal :: MVar () -> (Int -> IO ()) -> DebounceSettings -> IO (IO ()) Source #