MCPcopy
hub / github.com/rx-angular/rx-angular / connect

Method connect

libs/state/src/lib/rx-state.service.ts:542–665  ·  view source on GitHub ↗

* @internal

(
    keyOrInputOrSlice$:
      | Key
      | Observable<Partial<State> | Value>
      | Signal<Partial<State> | Value>,
    projectOrSlices$?:
      | ProjectStateReducer<State, Value>
      | Observable<State[Key] | Value>
      | Signal<State[Key] | Value>,
    projectValueFn?: ProjectValueReducer<State, Key, Value>,
  )

Source from the content-addressed store, hash-verified

540 * @internal
541 */
542 connect<Key extends keyof State, Value extends Partial<State>>(
543 keyOrInputOrSlice$:
544 | Key
545 | Observable<Partial<State> | Value>
546 | Signal<Partial<State> | Value>,
547 projectOrSlices$?:
548 | ProjectStateReducer<State, Value>
549 | Observable<State[Key] | Value>
550 | Signal<State[Key] | Value>,
551 projectValueFn?: ProjectValueReducer<State, Key, Value>,
552 ): void {
553 /**
554 * From top to bottom the overloads are handled.
555 */
556 if (
557 isObservable(keyOrInputOrSlice$) &&
558 !projectOrSlices$ &&
559 !projectValueFn
560 ) {
561 this.accumulator.nextSliceObservable(keyOrInputOrSlice$);
562 return;
563 }
564
565 if (isSignal(keyOrInputOrSlice$) && !projectOrSlices$ && !projectValueFn) {
566 this.accumulator.nextSliceObservable(
567 toObservableMicrotaskInternal(keyOrInputOrSlice$, {
568 injector: this.injector,
569 }),
570 );
571 return;
572 }
573
574 if (
575 isObservable(keyOrInputOrSlice$) &&
576 projectOrSlices$ &&
577 typeof projectOrSlices$ === 'function' &&
578 !projectValueFn
579 ) {
580 const projectionStateFn = projectOrSlices$;
581 const slice$ = keyOrInputOrSlice$.pipe(
582 map((v) => projectionStateFn(this.accumulator.state, v as Value)),
583 );
584 this.accumulator.nextSliceObservable(slice$ as Observable<Value>);
585 return;
586 }
587
588 if (
589 isSignal(keyOrInputOrSlice$) &&
590 projectOrSlices$ &&
591 typeof projectOrSlices$ === 'function' &&
592 !projectValueFn
593 ) {
594 const projectionStateFn = projectOrSlices$;
595 const slice$ = toObservableMicrotaskInternal(keyOrInputOrSlice$, {
596 injector: this.injector,
597 }).pipe(
598 map((v) => projectionStateFn(this.accumulator.state, v as Value)),
599 );

Callers 15

constructorMethod · 0.80
constructorMethod · 0.80
constructorMethod · 0.80
constructorMethod · 0.80
constructorMethod · 0.80
constructorMethod · 0.80
constructorMethod · 0.80
ngAfterViewInitMethod · 0.80
ngAfterViewInitMethod · 0.80
ngAfterViewInitMethod · 0.80
connectToggleSortByMethod · 0.80
valueMethod · 0.80

Calls 3

getMethod · 0.95
isKeyOfFunction · 0.90

Tested by 3

strOMethod · 0.64
constructorMethod · 0.64
constructorMethod · 0.64