Version: 0.0.0-prealpha.10.0.0-prealpha.20.0.0-prealpha.35.0.0-alpha.15.0.0-alpha.25.0.0-alpha.35.0.0-alpha.45.0.0-alpha.55.0.0-alpha.65.0.0-alpha.75.0.0-alpha.85.0.0-alpha.95.0.0-alpha.105.0.0-alpha.115.0.0-alpha.125.0.0-alpha.135.0.0-alpha.145.0.0-beta.05.0.0-beta.15.0.0-beta.25.0.0-beta.35.0.0-beta.45.0.0-beta.55.0.0-beta.65.0.0-beta.75.0.0-beta.85.0.0-beta.95.0.0-beta.105.0.0-beta.115.0.0-beta.125.0.0-rc.15.0.0-rc.25.0.0-rc.35.0.0-rc.45.0.0-rc.55.0.05.0.15.0.25.0.35.1.05.1.15.2.05.2.1-smooth5.3.05.3.15.3.35.4.05.4.15.4.25.4.35.5.0-beta.05.5.0-beta.15.5.0-beta.25.5.0-beta.35.5.0-beta.45.5.0-beta.55.5.0-beta.65.5.0-beta.75.5.05.5.15.5.25.5.35.5.45.5.55.5.65.5.75.5.85.5.95.5.105.5.115.5.125.6.0-forward-compat.05.6.0-forward-compat.15.6.0-forward-compat.25.6.0-forward-compat.35.6.0-forward-compat.45.6.0-forward-compat.56.0.0-alpha.06.0.0-alpha.16.0.0-alpha.26.0.0-alpha.36.0.0-alpha.46.0.0-beta.06.0.0-beta.16.0.0-beta.26.0.0-beta.36.0.0-beta.46.0.0-rc.06.0.0-rc.16.0.0-smoosh.06.0.0-smoosh.16.0.0-smoosh.26.0.0-tactical-rc.16.0.0-tenacious-rc.26.0.0-terrific-rc.36.0.0-turbo-rc.46.0.0-uber-rc.56.0.0-ucandoit-rc.66.0.0-uncanny-rc.76.0.06.1.06.2.06.2.16.2.26.3.06.3.16.3.26.3.36.4.06.5.06.5.16.5.26.5.36.5.46.5.56.6.06.6.16.6.26.6.36.6.46.6.66.6.77.0.0-alpha.0
import { Observable } from 'rxjs';
import { elementAt as higherOrder } from 'rxjs/operators';
/**
* Emits the single value at the specified `index` in a sequence of emissions
* from the source Observable.
*
* <span class="informal">Emits only the i-th value, then completes.</span>
* <img src="./img/elementAt.png" width="100%">
* `elementAt` returns an Observable that emits the item at the specified
* `index` in the source Observable, or a default value if that `index` is out
* of range and the `default` argument is provided. If the `default` argument is
* not given and the `index` is out of range, the output Observable will emit an
* `ArgumentOutOfRangeError` error.
* @example <caption>Emit only the third click event</caption>
* var clicks = Rx.Observable.fromEvent(document, 'click');
* var result = clicks.elementAt(2);
* result.subscribe(x => console.log(x));
* // Results in:
* // click 1 = nothing
* // click 2 = nothing
* // click 3 = MouseEvent object logged to console
* @see {@link first}
* @see {@link last}
* @see {@link skip}
* @see {@link single}
* @see {@link take}
* @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an
* ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the
* Observable has completed before emitting the i-th `next` notification.
* @param {number} index Is the number `i` for the i-th source emission that has
* happened since the subscription, starting from the number `0`.
* @param {T} [defaultValue] The default value returned for missing indices.
* @return {Observable} An Observable that emits a single item, if it is found.
* Otherwise, will emit the default value if given. If not, then emits an error.
* @method elementAt
* @owner Observable
*/
export function elementAt<T>(this: Observable<T>, index: number, defaultValue?: T): Observable<T> {
return higherOrder.apply(undefined, arguments)(this);
}