|
- 'use strict';
-
- exports.__esModule = true;
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
-
- var _isDisposable = require('./isDisposable');
-
- var _isDisposable2 = _interopRequireDefault(_isDisposable);
-
- /**
- * Represents a group of disposable resources that are disposed together.
- */
-
- var CompositeDisposable = (function () {
- function CompositeDisposable() {
- for (var _len = arguments.length, disposables = Array(_len), _key = 0; _key < _len; _key++) {
- disposables[_key] = arguments[_key];
- }
-
- _classCallCheck(this, CompositeDisposable);
-
- if (Array.isArray(disposables[0]) && disposables.length === 1) {
- disposables = disposables[0];
- }
-
- for (var i = 0; i < disposables.length; i++) {
- if (!_isDisposable2['default'](disposables[i])) {
- throw new Error('Expected a disposable');
- }
- }
-
- this.disposables = disposables;
- this.isDisposed = false;
- }
-
- /**
- * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.
- * @param {Disposable} item Disposable to add.
- */
-
- CompositeDisposable.prototype.add = function add(item) {
- if (this.isDisposed) {
- item.dispose();
- } else {
- this.disposables.push(item);
- }
- };
-
- /**
- * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.
- * @param {Disposable} item Disposable to remove.
- * @returns {Boolean} true if found; false otherwise.
- */
-
- CompositeDisposable.prototype.remove = function remove(item) {
- if (this.isDisposed) {
- return false;
- }
-
- var index = this.disposables.indexOf(item);
- if (index === -1) {
- return false;
- }
-
- this.disposables.splice(index, 1);
- item.dispose();
- return true;
- };
-
- /**
- * Disposes all disposables in the group and removes them from the group.
- */
-
- CompositeDisposable.prototype.dispose = function dispose() {
- if (this.isDisposed) {
- return;
- }
-
- var len = this.disposables.length;
- var currentDisposables = new Array(len);
- for (var i = 0; i < len; i++) {
- currentDisposables[i] = this.disposables[i];
- }
-
- this.isDisposed = true;
- this.disposables = [];
- this.length = 0;
-
- for (var i = 0; i < len; i++) {
- currentDisposables[i].dispose();
- }
- };
-
- return CompositeDisposable;
- })();
-
- exports['default'] = CompositeDisposable;
- module.exports = exports['default'];
|