@tdb/util
Version:
Shared helpers and utilities.
45 lines • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
var constants = require("../../constants");
var IS_BROWSER = constants.IS_BROWSER;
var fromEvent = function (source, event) {
return source
? rxjs_1.fromEvent(source, event).pipe(operators_1.share())
: new rxjs_1.Subject().pipe(operators_1.share());
};
var fromDocumentEvent = function (event) {
return fromEvent(IS_BROWSER ? document : undefined, event);
};
var fromWindowEvent = function (event) {
return fromEvent(IS_BROWSER ? window : undefined, event);
};
exports.click$ = fromDocumentEvent('click');
exports.mouseDown$ = fromDocumentEvent('mousedown');
exports.mouseUp$ = fromDocumentEvent('mouseup');
exports.mouseMove$ = fromDocumentEvent('mousemove');
exports.hashChange$ = fromWindowEvent('hashchange');
exports.resize$ = fromWindowEvent('resize').pipe(operators_1.observeOn(rxjs_1.animationFrameScheduler), operators_1.share());
var toKeypress = function (e, isPressed) {
var key = e.key, code = e.code, charCode = e.charCode, altKey = e.altKey, ctrlKey = e.ctrlKey, shiftKey = e.shiftKey, metaKey = e.metaKey, char = e.char;
var isModifier = key === 'Meta' || key === 'Control' || key === 'Alt' || key === 'Shift';
var event = {
isPressed: isPressed,
key: key,
code: code,
charCode: charCode,
char: char,
altKey: altKey,
ctrlKey: ctrlKey,
shiftKey: shiftKey,
metaKey: metaKey,
isModifier: isModifier,
preventDefault: function () { return e.preventDefault(); },
};
return event;
};
exports.keyDown$ = fromDocumentEvent('keydown').pipe(operators_1.map(function (e) { return toKeypress(e, true); }), operators_1.share());
exports.keyUp$ = fromDocumentEvent('keyup').pipe(operators_1.map(function (e) { return toKeypress(e, false); }), operators_1.share());
exports.keyPress$ = exports.keyDown$.pipe(operators_1.merge(exports.keyUp$));
//# sourceMappingURL=events.js.map