aeon-dom
v0.3.0
Published
DOM event sources and behaviors for Aeon reactive streams
Maintainers
Readme
aeon-dom
DOM event sources and continuous-time browser Behaviors for Aeon.
This package provides:
fromDOMEvent(type, target, options?)— convert any DOMEventTargetevent into anEvent<E, never>animationFrames(scheduler)—Event<DOMHighResTimeStamp, never>driven byrequestAnimationFramemousePosition(scheduler)—Behavior<{x, y}, never>tracking the cursorwindowSize(scheduler)—Behavior<{width, height}, never>tracking viewport size
Installation
pnpm add aeon-core aeon-scheduler aeon-domQuick Start
import { observe } from "aeon-core";
import { DefaultScheduler } from "aeon-scheduler";
import { fromDOMEvent } from "aeon-dom";
const scheduler = new DefaultScheduler();
const clicks = fromDOMEvent("click", document.body);
observe((e) => console.log("clicked at", e.clientX, e.clientY), clicks, scheduler);Continuous Behaviors
import { mousePosition, windowSize } from "aeon-dom";
import { liftA2B, readBehavior } from "aeon-core";
import { toTime } from "aeon-types";
const mouse = mousePosition(scheduler);
const size = windowSize(scheduler);
const relativeX = liftA2B((m, s) => m.x / s.width, mouse, size);
console.log(readBehavior(relativeX, toTime(performance.now())));Documentation
License
MIT
