{"version":3,"file":"angular-kit-cdk-rx-interop.mjs","sources":["../../../../libs/cdk/rx-interop/src/lib/on-changes/util/map-changes.ts","../../../../libs/cdk/rx-interop/src/lib/on-changes/effect-on-changes$.ts","../../../../libs/cdk/rx-interop/src/lib/on-changes/on-changes-state.ts","../../../../libs/cdk/rx-interop/src/lib/use-functions/use-on-changes$.ts","../../../../libs/cdk/rx-interop/src/lib/use-functions/use-on-changes-state$.ts","../../../../libs/cdk/rx-interop/src/lib/use-functions/use-host-listener$.ts","../../../../libs/cdk/rx-interop/src/lib/use-functions/use-from-event$.ts","../../../../libs/cdk/rx-interop/src/lib/use-functions/use-host-binding.ts","../../../../libs/cdk/rx-interop/src/angular-kit-cdk-rx-interop.ts"],"sourcesContent":["import {SimpleChange} from \"@angular/core\";\nimport {TypedSimpleChanges} from \"../effect-on-changes$\";\n\n/**\n * @internal\n * @param changes\n */\nexport function mapChanges<I extends Record<string, any>>(changes: Partial<TypedSimpleChanges<I>>): Partial<I> {\n  const t = {} as Partial<I>;\n  Object.entries(changes).forEach((entry) => {\n    const key = entry[0];\n\n    const value: SimpleChange = entry[1] as SimpleChange;\n\n    // @ts-ignore\n    t[key] = value.currentValue;\n  });\n\n  return t;\n}\n","import {SimpleChanges} from '@angular/core';\nimport {mapChanges} from \"./util/map-changes\";\n\n// eslint-disable-next-line\nexport interface TypedSimpleChanges<I> extends SimpleChanges {}\n\nexport type OnChangesEffect<I> = (changes: Partial<I>) => void;\n\nexport interface EffectOnChangesConfig{\n  allowUndefined?: boolean;\n  allowNull?: boolean;\n}\n\nexport function effectOnChanges$<I extends Record<string, any>>(changes: TypedSimpleChanges<I>, cb: OnChangesEffect<I>): void;\nexport function effectOnChanges$<I extends Record<string, any>, K extends keyof I>(changes: TypedSimpleChanges<I>, key: K, cb: OnChangesEffect<I>): void;\nexport function effectOnChanges$<I extends Record<string, any>>(changes: TypedSimpleChanges<I>, keyOrCb: string | OnChangesEffect<I>, cb?: OnChangesEffect<I>): void {\n  const mappedChanges: Partial<I> = mapChanges(changes);\n  if (mappedChanges === undefined) {\n    return;\n  }\n  if (typeof keyOrCb === 'string') {\n    // @ts-ignore\n    const value = mappedChanges[keyOrCb];\n    if(value === undefined){\n      return;\n    }\n    // @ts-ignore\n    cb(value);\n  } else {\n    keyOrCb(mappedChanges);\n  }\n}\n\n","import {inject, Injectable} from \"@angular/core\";\nimport {TypedSimpleChanges} from \"./effect-on-changes$\";\nimport {BehaviorSubject, distinctUntilChanged, filter, Observable, ReplaySubject, scan, switchMap} from \"rxjs\";\nimport {mapChanges} from \"./util/map-changes\";\n\n/**\n * @internal\n *\n * @description\n */\n@Injectable()\nclass OnChanges<I extends Record<string, any>> {\n  private readonly source$$ = new ReplaySubject<Partial<I>>(1)\n  private readonly initialized$$ = new BehaviorSubject<boolean>(false)\n\n  isInitialized$ = this.initialized$$.asObservable().pipe(\n    distinctUntilChanged()\n  );\n\n  /**\n   * @publicApi\n   * Emits the changes\n   */\n  changes$: Observable<Partial<I>> = this.initialized$$.pipe(\n    filter(initialized => !!initialized),\n    switchMap(() => this.source$$),\n    distinctUntilChanged((previous: Partial<I>, current: Partial<I>) => {\n      const keys = Object.keys(current);\n      return keys.every((key) => {\n        return current[key] === previous[key];\n      });\n    })\n  )\n\n\n  /**\n   * @publicApi\n   * Emits the accumulated changes\n   */\n  changesState$: Observable<I> = this.initialized$$.pipe(\n    filter(initialized => !!initialized),\n    switchMap(() => this.source$$),\n    scan((acc, curr) => ({...acc, ...curr}), {} as I),\n    distinctUntilChanged((previous: I, current: I) => {\n      const keys = Object.keys(current);\n      return keys.every((key) => {\n        return current[key] === previous[key];\n      });\n    })\n  )\n\n  /**\n   * @publicApi\n   * @description\n   * Connects the changes to the state\n   *\n   * @example\n   *  ngOnChanges(changes: TypedSimpleChanges<any>\n   *  this.state.connect$(changes);\n   *  }\n   * @param changes\n   */\n  connect$<I>(changes: TypedSimpleChanges<I> | undefined){\n    if (changes === undefined) {\n      return;\n    }\n    const value = mapChanges(changes);\n\n    if (!this.initialized$$.getValue()){\n      this.initialized$$.next(true);\n    }\n\n    // @ts-ignore\n    this.source$$.next(value);\n\n  }\n}\n\nexport function provideOnChanges$<T extends Record<string, any>>(){\n  return OnChanges<T>;\n}\n\nexport function injectOnChanges$<T extends Record<string, any>>(){\n  return inject(OnChanges<T>)\n}\n\n","import {distinctUntilChanged, filter, Observable, ReplaySubject} from \"rxjs\";\nimport {OnChanges, SimpleChanges} from \"@angular/core\";\nimport {TypedSimpleChanges} from \"../on-changes/effect-on-changes$\";\nimport {mapChanges} from \"../on-changes/util/map-changes\";\n\n\n/**\n *  @publicApi\n *  @description\n *  Creates a stream on {@link OnChanges} of a component.\n *\n * @param component\n * @param input\n */\nexport function useOnChanges$<I extends Record<string, any>,C extends OnChanges, K extends keyof C>(component: C, ...input: Array<K>): Observable<Partial<I>> {\n  const {stream$} = decorate<I, C>(component);\n\n  return stream$.asObservable().pipe(\n    filter(isNotUndefined),\n    distinctUntilChanged((previous: Partial<I>, current: Partial<I>) => {\n      const keys = Object.keys(current);\n      return keys.every((key) => {\n        return current[key] === previous[key];\n      });\n    })\n  );\n}\n\n\n/**\n * @internal\n * @param originalNgOnChanges\n */\nexport function validate(originalNgOnChanges: (changes: SimpleChanges) => void) {\n  if (!originalNgOnChanges) {\n    throw new Error('ngOnChanges is not defined. Did you forget to implement OnChanges interface?');\n  }\n}\n\n/**\n * @internal\n * @param component\n */\nexport function decorate<I extends Record<string, any>,C extends OnChanges>(component: C) {\n  const originalNgOnChanges = component.ngOnChanges;\n\n  validate(originalNgOnChanges);\n\n  const {wrapper, stream$} = createWrapper<I,C>(component);\n\n  component.ngOnChanges = wrapper;\n\n  return {stream$}\n}\n\n\n/**\n * @internal\n * @param component\n */\nfunction createWrapper<I extends Record<string, any>,C extends OnChanges>(component: C){\n  const originalNgOnChanges = component.ngOnChanges;\n  const stream$ = new ReplaySubject<Partial<I>>()\n  const wrapper = (changes: TypedSimpleChanges<I>) => {\n    const mappedChanges: Partial<I> = mapChanges(changes);\n    if (mappedChanges === undefined) {\n      return;\n    }\n    stream$.next(mappedChanges);\n\n    originalNgOnChanges(changes);\n  }\n\n  return {wrapper, stream$};\n}\n\n/**\n * @internal\n * @param value\n */\nexport function isNotUndefined<T>(value: T | undefined): value is T {\n  return value !== undefined;\n}\n","import {OnChanges} from \"@angular/core\";\nimport {distinctUntilChanged, filter, Observable, scan} from \"rxjs\";\nimport {decorate, isNotUndefined} from \"./use-on-changes$\";\n\n/**\n *  @publicApi\n *  @description\n *  Creates a stream on accumulated {@link OnChanges} of a component.\n *\n * @param component\n * @param input\n */\nexport function useOnChangesState$<I extends Record<string, any>,C extends OnChanges, K extends keyof C>(component: C, ...input: Array<K>): Observable<I> {\n  const {stream$} = decorate<I, C>(component);\n\n  return stream$.asObservable().pipe(\n    filter(isNotUndefined),\n    scan((acc, curr) => ({...acc, ...curr}), {} as I),\n    distinctUntilChanged((previous: I, current: I) => {\n      const keys = Object.keys(current);\n      return keys.every((key) => {\n        return current[key] === previous[key];\n      });\n    })\n  );\n}\n","import {ChangeDetectorRef, ElementRef, inject, Injector, NgZone, runInInjectionContext, ViewRef} from '@angular/core';\nimport {distinctUntilChanged, fromEvent, Observable, ReplaySubject, takeUntil} from 'rxjs';\n\nexport interface UseHostListenerConfig {\n  zoneless?: boolean;\n  injector?: Injector;\n}\n/**\n *\n * @publicApi\n *\n * @description\n * Use this function to create a reactive host listener of the component where the listener is used.\n * By default the host listener runs outside of Angular's zone.\n *\n * @example\n *\n * const click$ = useHostListener$('click');\n *\n * click$.subscribe(() => { // do something });\n *\n * @param eventName\n */\nexport function useHostListener$<T extends Event>(eventName: string): Observable<T>;\nexport function useHostListener$<T extends Event>(eventName: string, cfg: UseHostListenerConfig): Observable<T>;\nexport function useHostListener$<T extends Event>(eventName: string, cfg?: UseHostListenerConfig): Observable<T> {\n  let events$!: Observable<T>;\n  if (cfg?.injector) {\n    runInInjectionContext(cfg?.injector, () => {\n      events$ = _useHostListener$(eventName, cfg);\n    });\n  } else {\n    events$ = _useHostListener$(eventName, cfg);\n  }\n  return events$;\n}\n\nfunction _useHostListener$<T extends Event>(eventName: string, cfg?: UseHostListenerConfig): Observable<T> {\n  const { nativeElement } = inject(ElementRef);\n  const ngZone = inject(NgZone);\n  const cdr = cfg?.zoneless ? undefined : inject(ChangeDetectorRef);\n\n  const events$ = new ReplaySubject<T>(1);\n\n  ngZone.runOutsideAngular(() => {\n    fromEvent<T>(nativeElement, eventName)\n      .pipe(takeUntil(useOnDestroy()))\n      .subscribe((value) => {\n        events$.next(value);\n        cfg?.zoneless ? void 0 : cdr?.detectChanges();\n      });\n  });\n\n  return events$.asObservable().pipe(distinctUntilChanged());\n}\n\n/**\n * @internal\n * @description\n * helper\n */\nexport function useOnDestroy() {\n  const onDestroy$ = new ReplaySubject<void>(1);\n  const viewRef = inject(ChangeDetectorRef) as ViewRef;\n\n  viewRef?.onDestroy(() => {\n    onDestroy$.next(void 0);\n    onDestroy$.complete();\n  });\n\n  return onDestroy$;\n}\n","import {ChangeDetectorRef, ElementRef, inject, Injector, NgZone, runInInjectionContext,} from '@angular/core';\nimport {distinctUntilChanged, fromEvent, Observable, ReplaySubject, takeUntil} from 'rxjs';\nimport {useOnDestroy} from './use-host-listener$';\n\nexport interface UseFromEventConfig {\n  zoneless?: boolean;\n  injector?: Injector;\n}\n\n/**\n *\n * @publicApi\n *\n * @description\n * Use this function to create a stream of events from an element.\n * By default the host listener runs outside of Angular's zone.\n *\n * @example\n * const element = inject(ElementRef)\n * const click$ = useFromEvent(this.element, 'click');\n *\n * click$.subscribe(() => { // do something });\n *\n * @param eventName\n */\nexport function useFromEvent$<T extends Event>(element: HTMLElement, eventName: string): Observable<T>;\nexport function useFromEvent$<T extends Event>(elementRef: ElementRef, eventName: string): Observable<T>;\nexport function useFromEvent$<T extends Event>(\n  element: HTMLElement,\n  eventName: string,\n  cfg: UseFromEventConfig\n): Observable<T>;\nexport function useFromEvent$<T extends Event>(\n  elementRef: ElementRef,\n  eventName: string,\n  cfg: UseFromEventConfig\n): Observable<T>;\nexport function useFromEvent$<T extends Event>(\n  elementOrRef: HTMLElement | ElementRef,\n  eventName: string,\n  cfg?: UseFromEventConfig\n): Observable<T> {\n  let events$!: Observable<T>;\n  if (cfg?.injector) {\n    runInInjectionContext(cfg?.injector, () => {\n      events$ = _useFromEvent$(elementOrRef, eventName, cfg);\n    });\n  } else {\n    events$ = _useFromEvent$(elementOrRef, eventName, cfg);\n  }\n  return events$;\n}\n\nfunction _useFromEvent$<T extends Event>(\n  elementOrRef: HTMLElement | ElementRef,\n  eventName: string,\n  cfg?: UseFromEventConfig\n): Observable<T> {\n  const events$ = new ReplaySubject<T>(1);\n  const cdr = cfg?.zoneless ? undefined : inject(ChangeDetectorRef);\n  const ngZone = inject(NgZone);\n\n  const el = elementOrRef instanceof ElementRef ? elementOrRef?.nativeElement : elementOrRef;\n\n  ngZone.runOutsideAngular(() => {\n    fromEvent<T>(el, eventName)\n      .pipe(takeUntil(useOnDestroy()))\n      .subscribe((value) => {\n        events$.next(value);\n        cfg?.zoneless ? void 0 : cdr?.detectChanges();\n      });\n  });\n\n  return events$.asObservable().pipe(distinctUntilChanged());\n}\n","import {ElementRef, inject, Renderer2} from \"@angular/core\";\n\n/**\n * @publicApi\n *\n * @description\n * Use this function to create a host binding that can be used in a component.\n *\n * @example\n *\n * const disabled = useHostBinding$('disabled', false);\n * // somewhere in the component\n * disabled.set(true);\n *\n * @param className\n * @param enabledByDefault\n */\nexport function useHostBinding(className: string, enabledByDefault: boolean) {\n  const renderer2 = inject(Renderer2);\n  const {nativeElement} = inject(ElementRef)\n\n  let value = enabledByDefault;\n\n\n  if (value) {\n    renderer2.addClass(nativeElement, className);\n  }\n\n  return {\n    /**\n     * Set the value of the host binding\n     * @param newValue\n     */\n    set(newValue: boolean) {\n      value = newValue;\n\n      if (value) {\n        renderer2.addClass(nativeElement, className);\n      } else {\n        renderer2.removeClass(nativeElement, className);\n      }\n\n    },\n\n    /**\n     * Get the value of the host binding\n     */\n    get() {\n      return value;\n    }\n\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}