dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
88 lines • 3.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addDisposableListener = exports.addDisposableWindowListener = exports.Emitter = exports.Event = void 0;
var Event;
(function (Event) {
Event.any = function () {
var children = [];
for (var _i = 0; _i < arguments.length; _i++) {
children[_i] = arguments[_i];
}
return function (listener) {
var disposables = children.map(function (child) { return child(listener); });
return {
dispose: function () {
disposables.forEach(function (d) {
d.dispose();
});
},
};
};
};
})(Event = exports.Event || (exports.Event = {}));
// dumb event emitter with better typings than nodes event emitter
// https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts
var Emitter = /** @class */ (function () {
function Emitter(options) {
this.options = options;
this._listeners = [];
this._disposed = false;
}
Object.defineProperty(Emitter.prototype, "event", {
get: function () {
var _this = this;
if (!this._event) {
this._event = function (listener) {
var _a;
if (((_a = _this.options) === null || _a === void 0 ? void 0 : _a.replay) && _this._last !== undefined) {
listener(_this._last);
}
var firstListener = _this._listeners.length === 0;
_this._listeners.push(listener);
return {
dispose: function () {
var index = _this._listeners.indexOf(listener);
if (index > -1) {
_this._listeners.splice(index, 1);
}
},
};
};
}
return this._event;
},
enumerable: false,
configurable: true
});
Emitter.prototype.fire = function (e) {
this._last = e;
this._listeners.forEach(function (listener) {
listener(e);
});
};
Emitter.prototype.dispose = function () {
this._listeners = [];
this._disposed = true;
};
return Emitter;
}());
exports.Emitter = Emitter;
function addDisposableWindowListener(element, type, listener, options) {
element.addEventListener(type, listener, options);
return {
dispose: function () {
element.removeEventListener(type, listener);
},
};
}
exports.addDisposableWindowListener = addDisposableWindowListener;
function addDisposableListener(element, type, listener, options) {
element.addEventListener(type, listener, options);
return {
dispose: function () {
element.removeEventListener(type, listener);
},
};
}
exports.addDisposableListener = addDisposableListener;
//# sourceMappingURL=events.js.map