wonka-dom v1.0.0
WonkaDOM
Tools for working with DOM events using the Wonka FRP library.
Peer Dependencies
This library depends on the Wonka FRP library, and you'll want to install it directly and use it along with WonkaDOM.
- Wonka v4
Usage
ReasonML
Use Yarn or npm to install:
yarn add wonka wonka-domAnd add to your bsconfig.json along with wonka:
"bs-dependencies": ["wonka", "wonka-dom"],Then open the WonkaDOM module along with Wonka:
open Wonka;
open WonkaDOM;
fromAnimationFrame
|> subscribe((. time) => Js.log(time));TypeScript
Use Yarn or npm to install:
yarn add wonka wonka-domThen, import functions from wonka-dom:
import {pipe, subscribe} from 'wonka'
import {fromAnimationFrame} from 'wonka-dom'
pipe(
fromAnimationFrame,
subscribe(time => {
console.log(time)
})
)API
Sources
fromWindowEvent: : string => sourceT('a)
Attach an event handler for a top-level window event.
fromWindowEvent("keydown")
|> isKey("ArrowLeft")
|> subscribe((. event) => Js.log(event));fromKeyPressed: string => sourceT(bool)
Creates a source which will emit true when the key matching the given key code is pressed, and false when it's released.
fromKeyPressed("ArrowLeft")
|> subscribe((. pressed) => Js.log(pressed));fromMouseButton: int => sourceT(bool)
Creates a source which will emit true when the given mouse button is pressed, and false when it's released.
fromMouseButton(1)
|> subscribe((. pressed) => Js.log(pressed));fromMouseButtonPressed: mouseButton => sourceT(bool)
Creates a source which will be true when the given mouse button is pressed, and false when it's released. Note: in IE8 and earlier you need to use MouseIE8MiddleButton if you want to query the middle button.
fromMouseButtonPressed(`Right)
|> subscribe((. pressed) => Js.log(pressed));fromTouch: sourceT(Dom.TouchEvent.touchList)
A source containing the current state of the touch device.
fromTouch
|> subscribe((. touches) => Js.log(touches));fromTap: sourceT(bool)
A source which will be true when at least one finger is touching the touch device, and false otherwise.
fromTap
|> subscribe((. tapped) => Js.log(tapped));fromMousePos: sourceT(mousePosition)
A source containing the current mouse position.
fromMousePos
|> subscribe((. {x, y}) => Js.log2(x, y));fromAnimationFrame: sourceT(float)
A source which yields the current time, as determined by now, on every animation frame.
fromAnimationFrame
|> subscribe((. time) => Js.log(time));Operators
isKey: string => operatorT('a, 'a)
Only emit if the KeyboardEvent key matches the given key.
fromWindowEvent("keydown")
|> isKey("ArrowLeft")
|> subscribe((. keyEvent) => Js.log(keyEvent));isButton: int => operatorT('a, 'a)
Only emit if the MouseEvent button matches the given button.
fromWindowEvent("mousedown")
|> isButton(0)
|> subscribe((. mouseEvent) => Js.log(mouseEvent));6 years ago