{"ast":null,"code":"import _toConsumableArray from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nexport function bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n  if (resultSelector) {\n    if (isScheduler(resultSelector)) {\n      scheduler = resultSelector;\n    } else {\n      return function () {\n        return bindNodeCallback(callbackFunc, scheduler).apply(void 0, arguments).pipe(map(function (args) {\n          return isArray(args) ? resultSelector.apply(void 0, _toConsumableArray(args)) : resultSelector(args);\n        }));\n      };\n    }\n  }\n\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var params = {\n      subject: undefined,\n      args: args,\n      callbackFunc: callbackFunc,\n      scheduler: scheduler,\n      context: this\n    };\n    return new Observable(function (subscriber) {\n      var context = params.context;\n      var subject = params.subject;\n\n      if (!scheduler) {\n        if (!subject) {\n          subject = params.subject = new AsyncSubject();\n\n          var handler = function handler() {\n            for (var _len2 = arguments.length, innerArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n              innerArgs[_key2] = arguments[_key2];\n            }\n\n            var err = innerArgs.shift();\n\n            if (err) {\n              subject.error(err);\n              return;\n            }\n\n            subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n            subject.complete();\n          };\n\n          try {\n            callbackFunc.apply(context, [].concat(args, [handler]));\n          } catch (err) {\n            if (canReportError(subject)) {\n              subject.error(err);\n            } else {\n              console.warn(err);\n            }\n          }\n        }\n\n        return subject.subscribe(subscriber);\n      } else {\n        return scheduler.schedule(dispatch, 0, {\n          params: params,\n          subscriber: subscriber,\n          context: context\n        });\n      }\n    });\n  };\n}\n\nfunction dispatch(state) {\n  var _this = this;\n\n  var params = state.params,\n      subscriber = state.subscriber,\n      context = state.context;\n  var callbackFunc = params.callbackFunc,\n      args = params.args,\n      scheduler = params.scheduler;\n  var subject = params.subject;\n\n  if (!subject) {\n    subject = params.subject = new AsyncSubject();\n\n    var handler = function handler() {\n      for (var _len3 = arguments.length, innerArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        innerArgs[_key3] = arguments[_key3];\n      }\n\n      var err = innerArgs.shift();\n\n      if (err) {\n        _this.add(scheduler.schedule(dispatchError, 0, {\n          err: err,\n          subject: subject\n        }));\n      } else {\n        var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n\n        _this.add(scheduler.schedule(dispatchNext, 0, {\n          value: value,\n          subject: subject\n        }));\n      }\n    };\n\n    try {\n      callbackFunc.apply(context, [].concat(_toConsumableArray(args), [handler]));\n    } catch (err) {\n      this.add(scheduler.schedule(dispatchError, 0, {\n        err: err,\n        subject: subject\n      }));\n    }\n  }\n\n  this.add(subject.subscribe(subscriber));\n}\n\nfunction dispatchNext(arg) {\n  var value = arg.value,\n      subject = arg.subject;\n  subject.next(value);\n  subject.complete();\n}\n\nfunction dispatchError(arg) {\n  var err = arg.err,\n      subject = arg.subject;\n  subject.error(err);\n} //# sourceMappingURL=bindNodeCallback.js.map","map":null,"metadata":{},"sourceType":"module"}