monaco-editor
Version:
A browser based code editor
56 lines (55 loc) • 1.6 kB
JavaScript
export function isDisposable(thing) {
return typeof thing.dispose === 'function'
&& thing.dispose.length === 0;
}
export function dispose(first) {
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
if (Array.isArray(first)) {
first.forEach(function (d) { return d && d.dispose(); });
return [];
}
else if (rest.length === 0) {
if (first) {
first.dispose();
return first;
}
return undefined;
}
else {
dispose(first);
dispose(rest);
return [];
}
}
export function combinedDisposable(disposables) {
return { dispose: function () { return dispose(disposables); } };
}
export function toDisposable(fn) {
return { dispose: function () { fn(); } };
}
var Disposable = /** @class */ (function () {
function Disposable() {
this._toDispose = [];
}
Disposable.prototype.dispose = function () {
this._toDispose = dispose(this._toDispose);
};
Disposable.prototype._register = function (t) {
this._toDispose.push(t);
return t;
};
Disposable.None = Object.freeze({ dispose: function () { } });
return Disposable;
}());
export { Disposable };
var ImmortalReference = /** @class */ (function () {
function ImmortalReference(object) {
this.object = object;
}
ImmortalReference.prototype.dispose = function () { };
return ImmortalReference;
}());
export { ImmortalReference };