From e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sat, 28 Jun 2025 17:26:46 -0700 Subject: initial commit: scaffolding --- .../internal/scheduler/animationFrameProvider.ts | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts (limited to 'node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts') diff --git a/node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts b/node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts new file mode 100644 index 0000000..610093b --- /dev/null +++ b/node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts @@ -0,0 +1,44 @@ +import { Subscription } from '../Subscription'; + +interface AnimationFrameProvider { + schedule(callback: FrameRequestCallback): Subscription; + requestAnimationFrame: typeof requestAnimationFrame; + cancelAnimationFrame: typeof cancelAnimationFrame; + delegate: + | { + requestAnimationFrame: typeof requestAnimationFrame; + cancelAnimationFrame: typeof cancelAnimationFrame; + } + | undefined; +} + +export const animationFrameProvider: AnimationFrameProvider = { + // When accessing the delegate, use the variable rather than `this` so that + // the functions can be called without being bound to the provider. + schedule(callback) { + let request = requestAnimationFrame; + let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame; + const { delegate } = animationFrameProvider; + if (delegate) { + request = delegate.requestAnimationFrame; + cancel = delegate.cancelAnimationFrame; + } + const handle = request((timestamp) => { + // Clear the cancel function. The request has been fulfilled, so + // attempting to cancel the request upon unsubscription would be + // pointless. + cancel = undefined; + callback(timestamp); + }); + return new Subscription(() => cancel?.(handle)); + }, + requestAnimationFrame(...args) { + const { delegate } = animationFrameProvider; + return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args); + }, + cancelAnimationFrame(...args) { + const { delegate } = animationFrameProvider; + return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args); + }, + delegate: undefined, +}; -- cgit v1.2.3