import { fromEvent } from 'rxjs'; import { share, filter } from 'rxjs/operators'; export const bodyClick$ = fromEvent(window.document.body, 'click') .pipe(share()); export const bodyKeydown$ = fromEvent(window.document.body, 'keydown') .pipe(share()); export const escape$ = bodyKeydown$ .pipe( filter((e: KeyboardEvent) => e.keyCode === 27), share() ); export const enter$ = bodyKeydown$ .pipe( filter((e: KeyboardEvent) => e.keyCode === 13), share() ); export const arrowUp$ = bodyKeydown$ .pipe( filter((e: KeyboardEvent) => e.keyCode === 38), share() ); export const arrowDown$ = bodyKeydown$ .pipe( filter((e: KeyboardEvent) => e.keyCode === 40), share() );