| "use strict"; | 
| Object.defineProperty(exports, "__esModule", { value: true }); | 
| var Observable_1 = require("../Observable"); | 
| var async_1 = require("../scheduler/async"); | 
| var isNumeric_1 = require("../util/isNumeric"); | 
| var isScheduler_1 = require("../util/isScheduler"); | 
| function timer(dueTime, periodOrScheduler, scheduler) { | 
|     if (dueTime === void 0) { dueTime = 0; } | 
|     var period = -1; | 
|     if (isNumeric_1.isNumeric(periodOrScheduler)) { | 
|         period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler); | 
|     } | 
|     else if (isScheduler_1.isScheduler(periodOrScheduler)) { | 
|         scheduler = periodOrScheduler; | 
|     } | 
|     if (!isScheduler_1.isScheduler(scheduler)) { | 
|         scheduler = async_1.async; | 
|     } | 
|     return new Observable_1.Observable(function (subscriber) { | 
|         var due = isNumeric_1.isNumeric(dueTime) | 
|             ? dueTime | 
|             : (+dueTime - scheduler.now()); | 
|         return scheduler.schedule(dispatch, due, { | 
|             index: 0, period: period, subscriber: subscriber | 
|         }); | 
|     }); | 
| } | 
| exports.timer = timer; | 
| function dispatch(state) { | 
|     var index = state.index, period = state.period, subscriber = state.subscriber; | 
|     subscriber.next(index); | 
|     if (subscriber.closed) { | 
|         return; | 
|     } | 
|     else if (period === -1) { | 
|         return subscriber.complete(); | 
|     } | 
|     state.index = index + 1; | 
|     this.schedule(state, period); | 
| } | 
| //# sourceMappingURL=timer.js.map |