import { __generator } from "tslib"; import { identity } from '../util/identity'; import { isScheduler } from '../util/isScheduler'; import { defer } from './defer'; import { scheduleIterable } from '../scheduled/scheduleIterable'; export function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) { var _a, _b; var resultSelector; var initialState; if (arguments.length === 1) { (_a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity : _b, scheduler = _a.scheduler); } else { initialState = initialStateOrOptions; if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) { resultSelector = identity; scheduler = resultSelectorOrScheduler; } else { resultSelector = resultSelectorOrScheduler; } } function gen() { var state; return __generator(this, function (_a) { switch (_a.label) { case 0: state = initialState; _a.label = 1; case 1: if (!(!condition || condition(state))) return [3, 4]; return [4, resultSelector(state)]; case 2: _a.sent(); _a.label = 3; case 3: state = iterate(state); return [3, 1]; case 4: return [2]; } }); } return defer((scheduler ? function () { return scheduleIterable(gen(), scheduler); } : gen)); } //# sourceMappingURL=generate.js.map