diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/operators/map.ts | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/map.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/operators/map.ts | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/operators/map.ts b/node_modules/rxjs/src/internal/operators/map.ts new file mode 100644 index 0000000..fa7305d --- /dev/null +++ b/node_modules/rxjs/src/internal/operators/map.ts @@ -0,0 +1,61 @@ +import { OperatorFunction } from '../types'; +import { operate } from '../util/lift'; +import { createOperatorSubscriber } from './OperatorSubscriber'; + +export function map<T, R>(project: (value: T, index: number) => R): OperatorFunction<T, R>; +/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */ +export function map<T, R, A>(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction<T, R>; + +/** + * Applies a given `project` function to each value emitted by the source + * Observable, and emits the resulting values as an Observable. + * + * <span class="informal">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), + * it passes each source value through a transformation function to get + * corresponding output values.</span> + * + *  + * + * Similar to the well known `Array.prototype.map` function, this operator + * applies a projection to each value and emits that projection in the output + * Observable. + * + * ## Example + * + * Map every click to the `clientX` position of that click + * + * ```ts + * import { fromEvent, map } from 'rxjs'; + * + * const clicks = fromEvent<PointerEvent>(document, 'click'); + * const positions = clicks.pipe(map(ev => ev.clientX)); + * + * positions.subscribe(x => console.log(x)); + * ``` + * + * @see {@link mapTo} + * @see {@link pluck} + * + * @param project The function to apply to each `value` emitted by the source + * Observable. The `index` parameter is the number `i` for the i-th emission + * that has happened since the subscription, starting from the number `0`. + * @param thisArg An optional argument to define what `this` is in the + * `project` function. + * @return A function that returns an Observable that emits the values from the + * source Observable transformed by the given `project` function. + */ +export function map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R> { + return operate((source, subscriber) => { + // The index of the value from the source. Used with projection. + let index = 0; + // Subscribe to the source, all errors and completions are sent along + // to the consumer. + source.subscribe( + createOperatorSubscriber(subscriber, (value: T) => { + // Call the projection function with the appropriate this context, + // and send the resulting value to the consumer. + subscriber.next(project.call(thisArg, value, index++)); + }) + ); + }); +} |
