{"ast":null,"code":"import _classCallCheck from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport var Subscription = /*@__PURE__*/function () {\n  var Subscription = /*#__PURE__*/function () {\n    function Subscription(unsubscribe) {\n      _classCallCheck(this, Subscription);\n\n      this.closed = false;\n      this._parentOrParents = null;\n      this._subscriptions = null;\n\n      if (unsubscribe) {\n        this._ctorUnsubscribe = true;\n        this._unsubscribe = unsubscribe;\n      }\n    }\n\n    _createClass(Subscription, [{\n      key: \"unsubscribe\",\n      value: function unsubscribe() {\n        var errors;\n\n        if (this.closed) {\n          return;\n        }\n\n        var _parentOrParents = this._parentOrParents,\n            _ctorUnsubscribe = this._ctorUnsubscribe,\n            _unsubscribe = this._unsubscribe,\n            _subscriptions = this._subscriptions;\n        this.closed = true;\n        this._parentOrParents = null;\n        this._subscriptions = null;\n\n        if (_parentOrParents instanceof Subscription) {\n          _parentOrParents.remove(this);\n        } else if (_parentOrParents !== null) {\n          for (var index = 0; index < _parentOrParents.length; ++index) {\n            var parent = _parentOrParents[index];\n            parent.remove(this);\n          }\n        }\n\n        if (isFunction(_unsubscribe)) {\n          if (_ctorUnsubscribe) {\n            this._unsubscribe = undefined;\n          }\n\n          try {\n            _unsubscribe.call(this);\n          } catch (e) {\n            errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n          }\n        }\n\n        if (isArray(_subscriptions)) {\n          var _index = -1;\n\n          var len = _subscriptions.length;\n\n          while (++_index < len) {\n            var sub = _subscriptions[_index];\n\n            if (isObject(sub)) {\n              try {\n                sub.unsubscribe();\n              } catch (e) {\n                errors = errors || [];\n\n                if (e instanceof UnsubscriptionError) {\n                  errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n                } else {\n                  errors.push(e);\n                }\n              }\n            }\n          }\n        }\n\n        if (errors) {\n          throw new UnsubscriptionError(errors);\n        }\n      }\n    }, {\n      key: \"add\",\n      value: function add(teardown) {\n        var subscription = teardown;\n\n        if (!teardown) {\n          return Subscription.EMPTY;\n        }\n\n        switch (typeof teardown) {\n          case 'function':\n            subscription = new Subscription(teardown);\n\n          case 'object':\n            if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n              return subscription;\n            } else if (this.closed) {\n              subscription.unsubscribe();\n              return subscription;\n            } else if (!(subscription instanceof Subscription)) {\n              var tmp = subscription;\n              subscription = new Subscription();\n              subscription._subscriptions = [tmp];\n            }\n\n            break;\n\n          default:\n            {\n              throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n            }\n        }\n\n        var _subscription = subscription,\n            _parentOrParents = _subscription._parentOrParents;\n\n        if (_parentOrParents === null) {\n          subscription._parentOrParents = this;\n        } else if (_parentOrParents instanceof Subscription) {\n          if (_parentOrParents === this) {\n            return subscription;\n          }\n\n          subscription._parentOrParents = [_parentOrParents, this];\n        } else if (_parentOrParents.indexOf(this) === -1) {\n          _parentOrParents.push(this);\n        } else {\n          return subscription;\n        }\n\n        var subscriptions = this._subscriptions;\n\n        if (subscriptions === null) {\n          this._subscriptions = [subscription];\n        } else {\n          subscriptions.push(subscription);\n        }\n\n        return subscription;\n      }\n    }, {\n      key: \"remove\",\n      value: function remove(subscription) {\n        var subscriptions = this._subscriptions;\n\n        if (subscriptions) {\n          var subscriptionIndex = subscriptions.indexOf(subscription);\n\n          if (subscriptionIndex !== -1) {\n            subscriptions.splice(subscriptionIndex, 1);\n          }\n        }\n      }\n    }]);\n\n    return Subscription;\n  }();\n\n  Subscription.EMPTY = function (empty) {\n    empty.closed = true;\n    return empty;\n  }( /*@__PURE__*/new Subscription());\n\n  return Subscription;\n}();\n\nfunction flattenUnsubscriptionErrors(errors) {\n  return errors.reduce(function (errs, err) {\n    return errs.concat(err instanceof UnsubscriptionError ? err.errors : err);\n  }, []);\n} //# sourceMappingURL=Subscription.js.map","map":null,"metadata":{},"sourceType":"module"}