This repository has been archived on 2023-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
mightyscape-1.1-deprecated/extensions/fablabchemnitz/papercraft/openjscad/node_modules/most/lib/source/EventEmitterSource.js

62 lines
2.0 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = EventEmitterSource;
var _DeferredSink = require('../sink/DeferredSink');
var _DeferredSink2 = _interopRequireDefault(_DeferredSink);
var _dispose = require('../disposable/dispose');
var dispose = _interopRequireWildcard(_dispose);
var _tryEvent = require('./tryEvent');
var tryEvent = _interopRequireWildcard(_tryEvent);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function EventEmitterSource(event, source) {
this.event = event;
this.source = source;
} /** @license MIT License (c) copyright 2010-2016 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
EventEmitterSource.prototype.run = function (sink, scheduler) {
// NOTE: Because EventEmitter allows events in the same call stack as
// a listener is added, use a DeferredSink to buffer events
// until the stack clears, then propagate. This maintains most.js's
// invariant that no event will be delivered in the same call stack
// as an observer begins observing.
var dsink = new _DeferredSink2.default(sink);
function addEventVariadic(a) {
var arguments$1 = arguments;
var l = arguments.length;
if (l > 1) {
var arr = new Array(l);
for (var i = 0; i < l; ++i) {
arr[i] = arguments$1[i];
}
tryEvent.tryEvent(scheduler.now(), arr, dsink);
} else {
tryEvent.tryEvent(scheduler.now(), a, dsink);
}
}
this.source.addListener(this.event, addEventVariadic);
return dispose.create(disposeEventEmitter, { target: this, addEvent: addEventVariadic });
};
function disposeEventEmitter(info) {
var target = info.target;
target.source.removeListener(target.event, info.addEvent);
}