UNPKG

@ng-web-apis/common

Version:
25 lines 3.65 kB
import { inject, InjectionToken } from '@angular/core'; import { Observable, share } from 'rxjs'; import { WINDOW } from './window'; export const WA_ANIMATION_FRAME = new InjectionToken('[WA_ANIMATION_FRAME]', { factory: () => { const { requestAnimationFrame, cancelAnimationFrame } = inject(WINDOW); const animationFrame$ = new Observable((subscriber) => { let id = NaN; const callback = (timestamp) => { subscriber.next(timestamp); id = requestAnimationFrame(callback); }; id = requestAnimationFrame(callback); return () => { cancelAnimationFrame(id); }; }); return animationFrame$.pipe(share()); }, }); /** * @deprecated: drop in v5.0, use {@link WA_ANIMATION_FRAME} */ export const ANIMATION_FRAME = WA_ANIMATION_FRAME; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLWZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3Rva2Vucy9hbmltYXRpb24tZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FDaEQsc0JBQXNCLEVBQ3RCO0lBQ0ksT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNWLE1BQU0sRUFBQyxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxNQUFNLGVBQWUsR0FBRyxJQUFJLFVBQVUsQ0FBc0IsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN2RSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDYixNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQThCLEVBQVEsRUFBRTtnQkFDdEQsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0IsRUFBRSxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQztZQUVGLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVyQyxPQUFPLEdBQUcsRUFBRTtnQkFDUixvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDSixDQUNKLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIHNoYXJlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtXSU5ET1d9IGZyb20gJy4vd2luZG93JztcblxuZXhwb3J0IGNvbnN0IFdBX0FOSU1BVElPTl9GUkFNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPERPTUhpZ2hSZXNUaW1lU3RhbXA+PihcbiAgICAnW1dBX0FOSU1BVElPTl9GUkFNRV0nLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge3JlcXVlc3RBbmltYXRpb25GcmFtZSwgY2FuY2VsQW5pbWF0aW9uRnJhbWV9ID0gaW5qZWN0KFdJTkRPVyk7XG4gICAgICAgICAgICBjb25zdCBhbmltYXRpb25GcmFtZSQgPSBuZXcgT2JzZXJ2YWJsZTxET01IaWdoUmVzVGltZVN0YW1wPigoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBpZCA9IE5hTjtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9ICh0aW1lc3RhbXA6IERPTUhpZ2hSZXNUaW1lU3RhbXApOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lJC5waXBlKHNoYXJlKCkpO1xuICAgICAgICB9LFxuICAgIH0sXG4pO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkOiBkcm9wIGluIHY1LjAsIHVzZSB7QGxpbmsgV0FfQU5JTUFUSU9OX0ZSQU1FfVxuICovXG5leHBvcnQgY29uc3QgQU5JTUFUSU9OX0ZSQU1FID0gV0FfQU5JTUFUSU9OX0ZSQU1FO1xuIl19