diff options
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/observable/dom/animationFrames.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm/internal/observable/dom/animationFrames.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/observable/dom/animationFrames.js b/node_modules/rxjs/dist/esm/internal/observable/dom/animationFrames.js new file mode 100644 index 0000000..d29825f --- /dev/null +++ b/node_modules/rxjs/dist/esm/internal/observable/dom/animationFrames.js @@ -0,0 +1,34 @@ +import { Observable } from '../../Observable'; +import { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider'; +import { animationFrameProvider } from '../../scheduler/animationFrameProvider'; +export function animationFrames(timestampProvider) { + return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES; +} +function animationFramesFactory(timestampProvider) { + return new Observable((subscriber) => { + const provider = timestampProvider || performanceTimestampProvider; + const start = provider.now(); + let id = 0; + const run = () => { + if (!subscriber.closed) { + id = animationFrameProvider.requestAnimationFrame((timestamp) => { + id = 0; + const now = provider.now(); + subscriber.next({ + timestamp: timestampProvider ? now : timestamp, + elapsed: now - start, + }); + run(); + }); + } + }; + run(); + return () => { + if (id) { + animationFrameProvider.cancelAnimationFrame(id); + } + }; + }); +} +const DEFAULT_ANIMATION_FRAMES = animationFramesFactory(); +//# sourceMappingURL=animationFrames.js.map
\ No newline at end of file |
