UNPKG

2.41 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var xstream_1 = require("xstream");
4function fromEvent(element, eventName, useCapture, preventDefault, passive) {
5 if (useCapture === void 0) { useCapture = false; }
6 if (preventDefault === void 0) { preventDefault = false; }
7 if (passive === void 0) { passive = false; }
8 var next = null;
9 return xstream_1.Stream.create({
10 start: function start(listener) {
11 if (preventDefault) {
12 next = function _next(event) {
13 preventDefaultConditional(event, preventDefault);
14 listener.next(event);
15 };
16 }
17 else {
18 next = function _next(event) {
19 listener.next(event);
20 };
21 }
22 element.addEventListener(eventName, next, {
23 capture: useCapture,
24 passive: passive,
25 });
26 },
27 stop: function stop() {
28 element.removeEventListener(eventName, next, useCapture);
29 next = null;
30 },
31 });
32}
33exports.fromEvent = fromEvent;
34function matchObject(matcher, obj) {
35 var keys = Object.keys(matcher);
36 var n = keys.length;
37 for (var i = 0; i < n; i++) {
38 var k = keys[i];
39 if (typeof matcher[k] === 'object' && typeof obj[k] === 'object') {
40 if (!matchObject(matcher[k], obj[k])) {
41 return false;
42 }
43 }
44 else if (matcher[k] !== obj[k]) {
45 return false;
46 }
47 }
48 return true;
49}
50function preventDefaultConditional(event, preventDefault) {
51 if (preventDefault) {
52 if (typeof preventDefault === 'boolean') {
53 event.preventDefault();
54 }
55 else if (isPredicate(preventDefault)) {
56 if (preventDefault(event)) {
57 event.preventDefault();
58 }
59 }
60 else if (typeof preventDefault === 'object') {
61 if (matchObject(preventDefault, event)) {
62 event.preventDefault();
63 }
64 }
65 else {
66 throw new Error('preventDefault has to be either a boolean, predicate function or object');
67 }
68 }
69}
70exports.preventDefaultConditional = preventDefaultConditional;
71function isPredicate(fn) {
72 return typeof fn === 'function';
73}
74//# sourceMappingURL=fromEvent.js.map
\No newline at end of file