57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
/**
|
|
* Browser DOM event streams.
|
|
*
|
|
* This module provides typed constructors that turn `window.addEventListener`
|
|
* and `document.addEventListener` events into Effect `Stream` values. Both
|
|
* helpers accept the usual listener options and an optional stream buffer size.
|
|
*
|
|
* @since 4.0.0
|
|
*/
|
|
|
|
import * as Stream from "effect/Stream"
|
|
|
|
/**
|
|
* Creates a `Stream` from `window.addEventListener`.
|
|
*
|
|
* **Details**
|
|
*
|
|
* By default, the underlying buffer is unbounded in size. You can customize the
|
|
* buffer size by passing an object as the second argument with the `bufferSize`
|
|
* field.
|
|
*
|
|
* @category streams
|
|
* @since 4.0.0
|
|
*/
|
|
export const fromEventListenerWindow = <K extends keyof WindowEventMap>(
|
|
type: K,
|
|
options?: boolean | {
|
|
readonly capture?: boolean
|
|
readonly passive?: boolean
|
|
readonly once?: boolean
|
|
readonly bufferSize?: number | undefined
|
|
} | undefined
|
|
): Stream.Stream<WindowEventMap[K], never, never> => Stream.fromEventListener<WindowEventMap[K]>(window, type, options)
|
|
|
|
/**
|
|
* Creates a `Stream` from `document.addEventListener`.
|
|
*
|
|
* **Details**
|
|
*
|
|
* By default, the underlying buffer is unbounded in size. You can customize the
|
|
* buffer size by passing an object as the second argument with the `bufferSize`
|
|
* field.
|
|
*
|
|
* @category streams
|
|
* @since 4.0.0
|
|
*/
|
|
export const fromEventListenerDocument = <K extends keyof DocumentEventMap>(
|
|
type: K,
|
|
options?: boolean | {
|
|
readonly capture?: boolean
|
|
readonly passive?: boolean
|
|
readonly once?: boolean
|
|
readonly bufferSize?: number | undefined
|
|
} | undefined
|
|
): Stream.Stream<DocumentEventMap[K], never, never> =>
|
|
Stream.fromEventListener<DocumentEventMap[K]>(document, type, options)
|