@platform/react
Version:
React refs and helpers.
25 lines (24 loc) • 929 B
JavaScript
import { map, merge, share } from 'rxjs/operators';
import { fromDocumentEvent } from './util';
export const toKeypress = (e, isPressed) => {
const { key, code, altKey, ctrlKey, shiftKey, metaKey } = e;
const isModifier = key === 'Meta' || key === 'Control' || key === 'Alt' || key === 'Shift';
const event = {
event: e,
isPressed,
key,
code,
altKey,
ctrlKey,
shiftKey,
metaKey,
isModifier,
preventDefault: () => e.preventDefault(),
stopPropagation: () => e.stopPropagation(),
stopImmediatePropagation: () => e.stopImmediatePropagation(),
};
return event;
};
export const keyDown$ = fromDocumentEvent('keydown').pipe(map((e) => toKeypress(e, true)), share());
export const keyUp$ = fromDocumentEvent('keyup').pipe(map((e) => toKeypress(e, false)), share());
export const keyPress$ = keyDown$.pipe(merge(keyUp$));