UNPKG

sub-events

Version:

Lightweight, strongly-typed events, with monitored subscriptions.

25 lines (24 loc) 756 B
"use strict"; 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; }