sub-events
Version:
Lightweight, strongly-typed events, with monitored subscriptions.
25 lines (24 loc) • 756 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromEvent = fromEvent;
var src_1 = require("../dist/src");
/**
* Creates a strongly-typed, named DOM Event wrapper.
*/
function fromEvent(target, event, options) {
var sec = new src_1.SubEventCount();
var handler = function (e) { return sec.emit(e, options); };
sec.onCount.subscribe(function (info) {
var start = info.prevCount === 0; // fresh start
var stop = info.newCount === 0; // no subscriptions left
if (start) {
target.addEventListener(event, handler);
}
else {
if (stop) {
target.removeEventListener(event, handler);
}
}
});
return sec;
}