UNPKG

@johngw/stream

Version:

Reactive programming tools using the WHATWG Streams API.

48 lines 1.33 kB
/** * Creates a ReadableStream from DOM mutations. * * @group Sources * @see {@link addedNodes:function} * @see {@link removedNodes:function} * @example * ``` * fromDOMMutations(document.body, { childList: true }) * .pipeTo(write((mutation) => { * console.info(mutation.addedNodes) * })) * ``` * * If the queue is full when receiving DOM mutations, you * may notice some events being dropped. To avoid this you * will need to increase the high water mark. * * ``` * fromDOMMutations( * document.body, * { childList: true }, * new CountQueuingStrategy({ highWaterMark: 10 }) * ) * .pipeThrough(addedNodes()) * .pipeTo( * write(console.info), * new CountQueuingStrategy({ highWaterMark: 50 }) * ) * ``` */ export function fromDOMMutations(target, options, queuingStrategy) { let observer; return new ReadableStream({ start(controller) { observer = new MutationObserver((mutations) => { for (const mutation of mutations) if (controller.desiredSize) controller.enqueue(mutation); }); observer.observe(target, options); }, cancel() { observer.disconnect(); }, }, queuingStrategy); } //# sourceMappingURL=fromDOMMutations.js.map