UNPKG

dockview

Version:

Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support

88 lines 3.21 kB
"use strict"; 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