| "use strict"; | 
| Object.defineProperty(exports, "__esModule", { value: true }); | 
| var Observable_1 = require("../Observable"); | 
| var Subscription_1 = require("../Subscription"); | 
| var iterator_1 = require("../symbol/iterator"); | 
| function scheduleIterable(input, scheduler) { | 
|     if (!input) { | 
|         throw new Error('Iterable cannot be null'); | 
|     } | 
|     return new Observable_1.Observable(function (subscriber) { | 
|         var sub = new Subscription_1.Subscription(); | 
|         var iterator; | 
|         sub.add(function () { | 
|             if (iterator && typeof iterator.return === 'function') { | 
|                 iterator.return(); | 
|             } | 
|         }); | 
|         sub.add(scheduler.schedule(function () { | 
|             iterator = input[iterator_1.iterator](); | 
|             sub.add(scheduler.schedule(function () { | 
|                 if (subscriber.closed) { | 
|                     return; | 
|                 } | 
|                 var value; | 
|                 var done; | 
|                 try { | 
|                     var result = iterator.next(); | 
|                     value = result.value; | 
|                     done = result.done; | 
|                 } | 
|                 catch (err) { | 
|                     subscriber.error(err); | 
|                     return; | 
|                 } | 
|                 if (done) { | 
|                     subscriber.complete(); | 
|                 } | 
|                 else { | 
|                     subscriber.next(value); | 
|                     this.schedule(); | 
|                 } | 
|             })); | 
|         })); | 
|         return sub; | 
|     }); | 
| } | 
| exports.scheduleIterable = scheduleIterable; | 
| //# sourceMappingURL=scheduleIterable.js.map |