{"version":3,"file":"rxap-data-source.mjs","sources":["../../../../../packages/angular/data-source/src/lib/data-source-error/data-source-error.component.ts","../../../../../packages/angular/data-source/src/lib/data-source-error/data-source-error.component.html","../../../../../packages/angular/data-source/src/lib/base.data-source.ts","../../../../../packages/angular/data-source/src/lib/data-source-loader.ts","../../../../../packages/angular/data-source/src/lib/data-source-refresh-to-method-adapter-factory.ts","../../../../../packages/angular/data-source/src/lib/error.ts","../../../../../packages/angular/data-source/src/lib/tokens.ts","../../../../../packages/angular/data-source/src/lib/method.data-source.ts","../../../../../packages/angular/data-source/src/lib/observable.data-source.ts","../../../../../packages/angular/data-source/src/lib/pipe.data-source.ts","../../../../../packages/angular/data-source/src/lib/static.data-source.ts","../../../../../packages/angular/data-source/src/index.ts","../../../../../packages/angular/data-source/src/rxap-data-source.ts"],"sourcesContent":["import {\n  JsonPipe,\n  NgIf,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  signal,\n  SimpleChanges,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport {\n  Environment,\n  IsNotReleaseVersion,\n  RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport {\n  Observable,\n  Subscription,\n} from 'rxjs';\n\nexport interface DataSourceLikeForErrorHandling {\n  refresh?: () => void;\n  retry?: () => void;\n  reset?: () => void;\n  loading?: Observable<boolean> | boolean;\n  loading$?: Observable<boolean>;\n  error$?: Observable<unknown>;\n  error?: Observable<unknown> | unknown | null;\n}\n\n@Component({\n    selector: 'rxap-data-source-error',\n    templateUrl: './data-source-error.component.html',\n    styleUrls: ['./data-source-error.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MatButtonModule,\n        NgIf,\n        MatProgressSpinnerModule,\n        JsonPipe,\n    ]\n})\nexport class DataSourceErrorComponent implements OnChanges, OnInit, OnDestroy {\n\n  @Input()\n  public error?: unknown | null | Observable<unknown>;\n\n  @Input()\n  public refresh?: () => void;\n\n  @Input()\n  public retry?: () => void;\n\n  @Input()\n  public reset?: () => void;\n\n  @Input()\n  public set dataSourceLike(value: DataSourceLikeForErrorHandling) {\n    this.refresh ??= value.refresh;\n    this.retry ??= value.retry;\n    this.reset ??= value.reset;\n    this.loading ??= value.loading ?? value.loading$;\n    this.error ??= value.error ?? value.error$;\n  }\n\n  @Input()\n  public loading?: Observable<boolean> | boolean;\n\n  public isNotRelease = false;\n\n  public errorMessage = signal('Unknown Error');\n\n  public retryInProgress = signal(false);\n  public resetInProgress = signal(false);\n\n  private _subscription?: Subscription;\n\n  constructor(\n    @Inject(RXAP_ENVIRONMENT)\n    private readonly environment: Environment,\n  ) {\n    this.isNotRelease = IsNotReleaseVersion(environment);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['error']) {\n      this.retryInProgress.set(false);\n      this.resetInProgress.set(false);\n    }\n    if (changes['loading']) {\n      if (!changes['loading'].currentValue && typeof changes['loading'].currentValue === 'boolean') {\n        this.retryInProgress.set(false);\n        this.resetInProgress.set(false);\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._subscription?.unsubscribe();\n  }\n\n  ngOnInit() {\n    this._subscription = new Subscription();\n    if (this.loading instanceof Observable) {\n      this._subscription.add(this.loading.subscribe((loading) => {\n        if (!loading) {\n          if (this.retryInProgress()) {\n            this.retryInProgress.set(false);\n          }\n          if (this.resetInProgress()) {\n            this.resetInProgress.set(false);\n          }\n        }\n      }));\n    }\n    if (this.error instanceof Observable) {\n      this._subscription.add(this.error.subscribe((error) => {\n        if (error) {\n          this.errorMessage.set(error.message);\n        }\n      }));\n    }\n  }\n\n  triggerRetry() {\n    if (this.retry) {\n      this.retryInProgress.set(true);\n      this.retry();\n    } else if (this.refresh) {\n      this.retryInProgress.set(true);\n      this.refresh();\n    }\n  }\n\n  triggerReset() {\n    if (this.reset) {\n      this.resetInProgress.set(true);\n      this.reset();\n    }\n  }\n\n}\n","<div class=\"p-10 w-full\">\n  <div class=\"flex flex-col justify-center items-center gap-8\">\n    <span i18n>Something has gone wrong!</span>\n    <div class=\"flex flex-row justify-center items-center gap-4\">\n      <button *ngIf=\"refresh || retry\" type=\"button\" (click)=\"triggerRetry()\" [disabled]=\"retryInProgress() || resetInProgress()\" mat-stroked-button>\n        <span class=\"flex flex-row items-center gap-4\">\n          <span i18n>Retry</span>\n          <mat-spinner *ngIf=\"retryInProgress()\" [diameter]=\"15\"></mat-spinner>\n        </span>\n      </button>\n      <button *ngIf=\"reset\" type=\"button\" (click)=\"triggerReset()\" [disabled]=\"resetInProgress() || retryInProgress()\" mat-stroked-button>\n        <span class=\"flex flex-row items-center gap-4\">\n          <span i18n>Reset</span>\n          <mat-spinner *ngIf=\"resetInProgress()\" [diameter]=\"15\"></mat-spinner>\n        </span>\n      </button>\n    </div>\n    <span *ngIf=\"isNotRelease\" class=\"text-red-700\">{{errorMessage()}}</span>\n  </div>\n</div>\n","import {\n  Inject,\n  Injectable,\n  isDevMode,\n  Optional,\n  Signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n  BaseDefinition,\n  BaseDefinitionMetadata,\n  DefinitionMetadata,\n  RXAP_DEFINITION_METADATA,\n} from '@rxap/definition';\nimport {\n  CloneObservable,\n  ToggleSubject,\n} from '@rxap/rxjs';\nimport {\n  clone,\n  Constructor,\n  deepMerge,\n  GenerateRandomString,\n} from '@rxap/utilities';\nimport {\n  EMPTY,\n  firstValueFrom,\n  Observable,\n  ReplaySubject,\n  Subject,\n  TeardownLogic,\n} from 'rxjs';\nimport {\n  finalize,\n  startWith,\n  take,\n  takeUntil,\n  tap,\n} from 'rxjs/operators';\n\nexport type DataSourceViewerId = string;\n\nexport interface BaseDataSourceViewer<View = any> {\n  id?: DataSourceViewerId;\n  viewChange?: Observable<View>;\n  /**\n   * Indicates weather the data source should restore the last value from local storage\n   */\n  restore?: boolean;\n\n  [key: string]: any;\n}\n\nexport interface BaseDataSourceMetadata extends BaseDefinitionMetadata {\n  /**\n   * Indicates weather the data source should restore the last value from local storage\n   */\n  restore?: boolean;\n}\n\n@Injectable()\nexport class BaseDataSource<\n  Data = any,\n  Metadata extends BaseDataSourceMetadata = BaseDataSourceMetadata,\n  Viewer extends BaseDataSourceViewer = BaseDataSourceViewer\n> extends BaseDefinition<Metadata> {\n  public readonly change$ = new Subject<Data>();\n  /**\n   * Indicates weather the data source is currently loading new data\n   */\n  public loading$: Observable<boolean> = EMPTY;\n  public readonly hasError$ = new ToggleSubject();\n  public readonly error$ = new ReplaySubject<Error>(1);\n  public get lastRefreshed(): Date | null {\n    return this._lastRefreshed;\n  }\n  protected _lastRefreshed: Date | null = null;\n  protected _connectedViewer = new Map<DataSourceViewerId, Observable<Data>>();\n  protected _connectedViewerTeardown = new Map<\n    DataSourceViewerId,\n    TeardownLogic\n  >();\n  protected _data$: Observable<Data> = EMPTY;\n  /**\n   * a map of viewer to view id.\n   * Allows to create a view id from the viewer object reference\n   * @protected\n   */\n  protected _viewerIds = new Map<Viewer, string>();\n  protected _retry$ = new Subject<void>();\n\n  public loading?: Signal<boolean>;\n\n  public hasError?: Signal<boolean>;\n\n  constructor(\n    @Optional()\n    @Inject(RXAP_DEFINITION_METADATA)\n      metadata: Metadata | null = null,\n  ) {\n    super(metadata);\n  }\n\n  protected _data?: Data;\n\n  public get data() {\n    return clone(this._data);\n  }\n\n  public get hasConnections(): boolean {\n    return this._connectedViewer.size > 0;\n  }\n\n  public getViewerId(viewer: Viewer): string {\n    if (viewer.id) {\n      return viewer.id;\n    }\n    if (!this._viewerIds.has(viewer)) {\n      this._viewerIds.set(viewer, GenerateRandomString());\n    }\n    return this._viewerIds.get(viewer)!;\n  }\n\n  public connect(viewerOrString: Viewer | DataSourceViewerId): Observable<Data> {\n    let viewer: Viewer;\n    if (typeof viewerOrString === 'string') {\n      viewer = { id: viewerOrString } as Viewer;\n    } else {\n      viewer = viewerOrString;\n    }\n    if (!viewer.id) {\n      viewer.id = this.getViewerId(viewer);\n    }\n    if (this.isConnected(viewer)) {\n      return this._connectedViewer.get(viewer.id)!;\n    }\n    if (!viewer.viewChange) {\n      viewer.viewChange = EMPTY;\n    }\n    const _connection = this._connect(viewer);\n    let connection: Observable<Data>;\n    let teardownLogic: TeardownLogic | null = null;\n    if (Array.isArray(_connection)) {\n      if (_connection.length !== 2) {\n        throw new Error(\n          'if this._connect returns an array. The array should have two items',\n        );\n      }\n      connection = _connection[0];\n      teardownLogic = _connection[1];\n    } else {\n      connection = _connection;\n    }\n\n    const destroy$ = new Subject<void>();\n\n    const cacheKey = [ 'rxap', 'data-source', this.constructor.name, this.id ].join('_');\n    const restore = viewer.restore ?? this.metadata.restore ?? false;\n\n    connection = connection.pipe(\n      tap((data) => {\n        this._data = data;\n        if (restore) {\n          try {\n            const cache = JSON.stringify(data);\n            localStorage.setItem(cacheKey, cache);\n          } catch (e: any) {\n            console.warn(\n              `Failed to store data source '${ this.id }' data in local storage`,\n            );\n          }\n        }\n      }),\n      tap((data) => this.change$.next(data)),\n      tap(() => this._lastRefreshed = new Date()),\n      finalize(() => this.disconnect(viewer)),\n      takeUntil(destroy$),\n    );\n\n    if (restore) {\n      const data = localStorage.getItem(cacheKey);\n      if (data) {\n        this._data = JSON.parse(data) as Data;\n        connection = connection.pipe(startWith(this._data));\n      }\n    }\n\n    this._connectedViewer.set(viewer.id, connection);\n\n    if (teardownLogic) {\n      const tl = teardownLogic;\n      teardownLogic = () => {\n        destroy$.next();\n        if (typeof tl === 'function') {\n          tl();\n        } else {\n          tl.unsubscribe();\n        }\n      };\n    } else {\n      teardownLogic = () => {\n        destroy$.next();\n      };\n    }\n\n    this._connectedViewerTeardown.set(viewer.id, teardownLogic);\n    return connection;\n  }\n\n  public attach(viewerId: DataSourceViewerId): Observable<Data> {\n    if (this.isConnected(viewerId)) {\n      return CloneObservable(this._connectedViewer.get(viewerId)!);\n    }\n    throw new Error(`No active connection with viewer id '${ viewerId }' found`);\n  }\n\n  public isConnected(viewerOrId: Viewer | DataSourceViewerId): boolean {\n    const viewerId =\n      typeof viewerOrId === 'string'\n        ? viewerOrId\n        : viewerOrId.id ?? this.getViewerId(viewerOrId);\n    return this._connectedViewer.has(viewerId);\n  }\n\n  public disconnect(viewerOrId: Viewer | DataSourceViewerId) {\n    const viewerId =\n      typeof viewerOrId === 'string'\n        ? viewerOrId\n        : viewerOrId.id ?? this.getViewerId(viewerOrId);\n    if (this.isConnected(viewerId)) {\n      this._disconnect(viewerId);\n      this._connectedViewer.delete(viewerId);\n      if (this._connectedViewerTeardown.has(viewerId)) {\n        const teardownLogic = this._connectedViewerTeardown.get(viewerId)!;\n        if (teardownLogic) {\n          if (typeof teardownLogic === 'function') {\n            teardownLogic();\n          } else {\n            teardownLogic.unsubscribe();\n          }\n        }\n      }\n    } else {\n      console.warn(\n        `Connection with viewer id '${ viewerId }' is not connected to the data source '${ this.id }'`,\n      );\n    }\n    // TODO : find better cleanup solution\n    if (typeof viewerOrId === 'string') {\n      for (const [ viewer, id ] of this._viewerIds.entries()) {\n        if (viewerOrId === id) {\n          this._viewerIds.delete(viewer);\n        }\n      }\n    } else {\n      this._viewerIds.delete(viewerOrId);\n    }\n  }\n\n  /**\n   * Creates a connection to tha data source and converts the Observable into a\n   * promise and then disconnects the viewer\n   */\n  public async toPromise(viewer: Viewer): Promise<Data> {\n    const result = await firstValueFrom(this.connect(viewer).pipe(take(1)));\n    this.disconnect(viewer);\n    return result;\n  }\n\n  public derive(\n    id: string,\n    metadata: Partial<BaseDataSourceMetadata> = this.metadata,\n  ): BaseDataSource<any> {\n    return new BaseDataSource<any>({\n      ...deepMerge(this.metadata, metadata),\n      id,\n    });\n  }\n\n  public toJSON(): object {\n    return {\n      id: this.id,\n      metadata: this.metadata,\n      connected: this._connectedViewer.keys(),\n      data: this._data,\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  public refresh(): any {\n  }\n\n  public retry(): any {\n    this._retry$.next();\n  }\n\n  public reset(): any {\n    for (const viewerId of this._connectedViewer.keys()) {\n      this.disconnect(viewerId);\n    }\n    // eslint-disable-next-line no-prototype-builtins\n    if (this.metadata.hasOwnProperty('context')) {\n      delete this.metadata['context'];\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  protected _disconnect(viewerId: DataSourceViewerId): void {\n  }\n\n  protected genericRetryFunction(error: any, retryCount: number): Observable<any> {\n    return this._retry$.asObservable().pipe(\n      tap(() => this.hasError$.disable()),\n    );\n  }\n\n  protected handelError(error: any) {\n    if (isDevMode()) {\n      console.log(`DataSource '${ this.id }' has an error:`, error);\n    }\n  }\n\n  protected _connect(\n    viewer: BaseDataSourceViewer,\n  ): [ Observable<Data>, TeardownLogic ] | Observable<Data> {\n    this.init();\n    return this._data$;\n  }\n}\n\nexport function RxapDataSource<Metadata extends BaseDataSourceMetadata>(\n  dataSourceIdOrMetadata: string | Metadata,\n  className = 'BaseDataSource',\n  packageName = '@rxap/data-source',\n) {\n  return function (target: Constructor<BaseDataSource>) {\n    DefinitionMetadata(dataSourceIdOrMetadata, className, packageName)(target);\n  };\n}\n","import {\n  Injectable,\n  InjectFlags,\n  Injector,\n} from '@angular/core';\nimport {\n  BaseDataSource,\n  BaseDataSourceMetadata,\n  BaseDataSourceViewer,\n} from './base.data-source';\nimport { Observable } from 'rxjs';\nimport {\n  DefinitionLoader,\n  IdOrInstanceOrToken,\n} from '@rxap/definition';\n\n@Injectable({ providedIn: 'root' })\nexport class DataSourceLoader extends DefinitionLoader {\n\n  public connect<Data>(\n    dataSourceIdOrInstanceOrToken: IdOrInstanceOrToken<BaseDataSource<Data>>,\n    viewer: BaseDataSourceViewer,\n    metadata?: Partial<BaseDataSourceMetadata>,\n    injector?: Injector,\n    notFoundValue?: BaseDataSource<Data>,\n    flags?: InjectFlags,\n  ): Observable<Data> {\n    return this\n      .load(\n        dataSourceIdOrInstanceOrToken,\n        metadata,\n        injector,\n        notFoundValue,\n        flags,\n      )\n      .connect(viewer);\n  }\n\n}\n","import { ToMethod } from '@rxap/pattern';\nimport { BaseDataSource } from './base.data-source';\n\nexport function DataSourceRefreshToMethodAdapterFactory(dataSource: BaseDataSource<unknown>) {\n  return ToMethod(() => dataSource.refresh());\n}\n","import { RxapError } from '@rxap/utilities';\n\nexport class RxapDataSourceError extends RxapError {\n\n  constructor(message: string, code: string, className?: string) {\n    super('@rxap/data-source', message, code, className);\n  }\n\n}\n","import { InjectionToken } from '@angular/core';\nimport { Method } from '@rxap/pattern';\n\nexport const RXAP_STATIC_DATA_SOURCE_DATA = new InjectionToken('rxap/data-source/static-data-source-data');\n\nexport const RXAP_DATA_SOURCE_REFRESH = new InjectionToken('rxap/data-source/refresh');\n\nexport const RXAP_OBSERVABLE_DATA_SOURCE = new InjectionToken('rxap/data-source/observable-data-source');\n\nexport const RXAP_DATA_SOURCE_METADATA = new InjectionToken('rxap/data-source/metadata');\n\nexport const RXAP_DATA_SOURCE = new InjectionToken('rxap/data-source/instance');\n\nexport const RXAP_PIPE_DATA_SOURCE_OPERATOR = new InjectionToken('rxap/data-source/pipe-operator');\n\nexport const RXAP_DATA_SOURCE_METHOD = new InjectionToken<Method>('rxap/data-source/method');\n\nexport const RXAP_DATA_SOURCE_METHOD_WITHOUT_PARAMETERS = new InjectionToken<boolean>(\n  'rxap/data-source/method-without-parameters',\n  {\n    providedIn: 'root',\n    factory: () => false,\n  },\n);\n","import {\n  Inject,\n  Injectable,\n  OnInit,\n} from '@angular/core';\nimport { Method } from '@rxap/pattern';\nimport { ToggleSubject } from '@rxap/rxjs';\nimport {\n  EMPTY,\n  firstValueFrom,\n  from,\n  Observable,\n  OperatorFunction,\n  ReplaySubject,\n  Subject,\n  TeardownLogic,\n} from 'rxjs';\nimport {\n  startWith,\n  switchMap,\n  tap,\n} from 'rxjs/operators';\nimport {\n  BaseDataSource,\n  BaseDataSourceMetadata,\n  BaseDataSourceViewer,\n} from './base.data-source';\nimport {\n  RXAP_DATA_SOURCE_METHOD,\n  RXAP_DATA_SOURCE_METHOD_WITHOUT_PARAMETERS,\n} from './tokens';\n\n@Injectable()\nexport class MethodDataSource<Data, Parameters = any>\n  extends BaseDataSource<Data, BaseDataSourceMetadata, (BaseDataSourceViewer & Parameters) | BaseDataSourceViewer<Parameters>>\n  implements OnInit {\n\n  protected override readonly _data$ = new ReplaySubject<Data>(1);\n\n  public override readonly loading$ = new ToggleSubject(false);\n\n  private readonly _refresh = new Subject<void>();\n\n  constructor(\n    @Inject(RXAP_DATA_SOURCE_METHOD)\n    protected readonly method: Method<Data, Parameters>,\n    @Inject(RXAP_DATA_SOURCE_METHOD_WITHOUT_PARAMETERS)\n    protected readonly withoutParameters = false,\n  ) {\n    super(method.metadata);\n  }\n\n  public ngOnInit(): void {\n    if (this.withoutParameters) {\n      this.executeWithoutParameters();\n    }\n  }\n\n  public override refresh(): void {\n    this._refresh.next();\n    if (this.withoutParameters) {\n      this.executeWithoutParameters();\n    }\n  }\n\n  protected override _connect(viewer: (BaseDataSourceViewer & Parameters) | BaseDataSourceViewer<Parameters>): [ Observable<Data>, TeardownLogic ] | Observable<Data> {\n    if (this.withoutParameters) {\n      return super._connect(viewer);\n    } else {\n      return this._refresh.pipe(\n        tap(() => this.hasError$.disable()),\n        startWith(undefined),\n        switchMap<void, Observable<Data>>(() => {\n          if (viewer.viewChange && viewer.viewChange !== EMPTY) {\n            return (\n              viewer.viewChange as Observable<Parameters>\n            ).pipe(\n              tap(() => this.loading$.enable()),\n              switchMap((parameters) => from(this.execute(parameters)).pipe(this.handelExecution())),\n            );\n          } else {\n            this.loading$.enable();\n            return from(this.execute(viewer as Parameters)).pipe(this.handelExecution());\n          }\n        }),\n      );\n    }\n  }\n\n  protected handelExecution(): OperatorFunction<Data, Data> {\n    return tap({\n      next: () => {\n        this.loading$.disable();\n      },\n      error: (error: any) => {\n        this.loading$.disable();\n        this.hasError$.enable();\n        this.error$.next(error);\n      },\n      finalize: () => {\n        this.loading$.disable();\n      }\n    });\n  }\n\n  protected async execute(parameters?: Parameters): Promise<Data> {\n    return this.method.call(parameters);\n  }\n\n  protected async executeWithoutParameters(): Promise<void> {\n    this.hasError$.disable();\n    this.loading$.enable();\n    await firstValueFrom(from(this.execute()).pipe(\n      this.handelExecution(),\n      tap({\n        next: (data) => this._data$.next(data),\n      }),\n    ));\n  }\n\n}\n","import {\n  Inject,\n  Injectable,\n  Optional,\n} from '@angular/core';\nimport {\n  BaseDataSource,\n  BaseDataSourceMetadata,\n  RxapDataSource,\n} from './base.data-source';\nimport { Observable } from 'rxjs';\nimport {\n  RXAP_DATA_SOURCE_METADATA,\n  RXAP_OBSERVABLE_DATA_SOURCE,\n} from './tokens';\nimport { Constructor } from '@rxap/utilities';\n\nexport interface ObservableDataSourceMetadata<Data> extends BaseDataSourceMetadata {\n  data?: Observable<Data>;\n}\n\n@Injectable()\nexport class ObservableDataSource<Data> extends BaseDataSource<Data, ObservableDataSourceMetadata<Data>> {\n\n  constructor(\n    @Optional() @Inject(RXAP_OBSERVABLE_DATA_SOURCE) observable: Observable<Data> | null,\n    @Optional() @Inject(RXAP_DATA_SOURCE_METADATA) metadata: ObservableDataSourceMetadata<Data> | null = null,\n  ) {\n    super(metadata);\n    if (observable) {\n      this._data$ = observable;\n    } else if (this.metadata.data) {\n      this._data$ = this.metadata.data;\n    }\n  }\n\n}\n\nexport function RxapObservableDataSource<Data>(\n  metadata: ObservableDataSourceMetadata<Data>,\n  className = 'ObservableDataSource',\n  packageName = '@rxap/data-source',\n) {\n  return function (target: Constructor<ObservableDataSource<Data>>) {\n    RxapDataSource(metadata, className, packageName)(target);\n  };\n}\n\nexport function observableDataSource<Data>(\n  data: Observable<Data>,\n  metadata: ObservableDataSourceMetadata<Data> = { id: 'static' },\n): ObservableDataSource<Data> {\n  return new ObservableDataSource(data, metadata);\n}\n","import {\n  Inject,\n  Injectable,\n  OnDestroy,\n  Optional,\n} from '@angular/core';\nimport { Constructor } from '@rxap/utilities';\nimport {\n  Observable,\n  OperatorFunction,\n  Subject,\n  TeardownLogic,\n} from 'rxjs';\nimport {\n  map,\n  startWith,\n  switchMap,\n} from 'rxjs/operators';\nimport {\n  BaseDataSource,\n  BaseDataSourceMetadata,\n  BaseDataSourceViewer,\n  RxapDataSource,\n} from './base.data-source';\nimport { RxapDataSourceError } from './error';\nimport {\n  RXAP_DATA_SOURCE,\n  RXAP_PIPE_DATA_SOURCE_OPERATOR,\n} from './tokens';\n\nexport interface PipeDataSourceMetadata extends BaseDataSourceMetadata {\n  /**\n   * If true the parent data source will be refreshed when the pipe data source is refreshed\n   * @default false\n   */\n  refreshParent?: boolean;\n}\n\nexport function RxapPipeDataSource(\n  metadata: PipeDataSourceMetadata,\n  className = 'PipeDataSource',\n  packageName = '@rxap/data-source',\n) {\n  return function (target: Constructor<PipeDataSource>) {\n    RxapDataSource(metadata, className, packageName)(target);\n  };\n}\n\n@Injectable()\nexport class PipeDataSource<Source = any, Target = Source>\n  extends BaseDataSource<Target>\n  implements OnDestroy {\n\n  private readonly _refresh = new Subject<void>();\n\n  constructor(\n    @Inject(RXAP_DATA_SOURCE) public readonly dataSource: BaseDataSource<Source>,\n    @Optional() @Inject(RXAP_PIPE_DATA_SOURCE_OPERATOR) operation: OperatorFunction<Source, any> | null = null,\n    ...operations: Array<OperatorFunction<any, any> | PipeDataSourceMetadata>\n  ) {\n    super(dataSource.metadata);\n    this.loading$ = this.dataSource.loading$;\n    if (operation) {\n      this.setOperations(\n        operation,\n        ...operations.filter(op => typeof op === 'function') as Array<OperatorFunction<any, any>>,\n      );\n      if (operations.some(op => typeof op !== 'function')) {\n        this.metadata = {\n          ...this.metadata,\n          ...operations.find(op => typeof op !== 'function'),\n        };\n      }\n    }\n  }\n\n  private _operations: Array<OperatorFunction<any, any>> = [];\n\n  protected get operations(): Array<OperatorFunction<any, any>> {\n    return this._operations;\n  }\n\n  public setOperations(\n    operation: OperatorFunction<Source, any>,\n    ...operations: Array<OperatorFunction<any, any>>\n  ): void {\n    if (this._initialised) {\n      throw new RxapDataSourceError(\n        'Can not set operations after the data source is initialised',\n        '',\n        'PipeDataSource',\n      );\n    }\n    this._operations = [ operation, ...operations ];\n  }\n\n  public override ngOnDestroy() {\n    super.ngOnDestroy();\n    this.dataSource.disconnect(this.metadata);\n  }\n\n  /**\n   * @param parent true - call the refresh method of the parent data source\n   */\n  public override refresh(parent: boolean = this.metadata['refreshParent'] ?? false): any {\n    if (parent) {\n      this.dataSource.refresh();\n    } else {\n      this._refresh.next();\n    }\n  }\n\n  public override reset(): any {\n    return this.dataSource.reset();\n  }\n\n  public override toJSON(): object {\n    return {\n      ...super.toJSON(),\n      dataSource: this.dataSource,\n    };\n  }\n\n  protected override _connect(viewer: BaseDataSourceViewer): [ Observable<Target>, TeardownLogic ] | Observable<Target> {\n    this.init();\n    return [\n      this.dataSource.connect(viewer).pipe(\n        switchMap(data => this._refresh.pipe(\n          startWith(null),\n          map(() => data),\n        )),\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        ...this.viewerToOperations(viewer),\n      ),\n      () => this.dataSource.disconnect(viewer),\n    ];\n  }\n\n  protected viewerToOperations(viewer: BaseDataSourceViewer): Array<OperatorFunction<any, any>> {\n    return this.operations;\n  }\n\n}\n\nexport function pipeDataSource<Source, Target>(\n  dataSource: BaseDataSource<Source>,\n  operation: OperatorFunction<Source, any>,\n  ...operations: Array<OperatorFunction<any, any> | PipeDataSourceMetadata>\n): PipeDataSource<Source, Target> {\n  return new PipeDataSource<Source, Target>(dataSource, operation, ...operations);\n}\n","import {\n  clone,\n  Constructor,\n  isPromise,\n  isPromiseLike,\n} from '@rxap/utilities';\nimport {\n  isObservable,\n  Observable,\n  ReplaySubject,\n  Subscription,\n} from 'rxjs';\nimport {\n  Inject,\n  Injectable,\n  OnDestroy,\n  Optional,\n} from '@angular/core';\nimport {\n  RXAP_DATA_SOURCE_METADATA,\n  RXAP_STATIC_DATA_SOURCE_DATA,\n} from './tokens';\nimport {\n  BaseDataSource,\n  BaseDataSourceMetadata,\n  RxapDataSource,\n} from './base.data-source';\nimport { RxapDataSourceError } from './error';\nimport { tap } from 'rxjs/operators';\n\nexport type StaticDataSourceData<Data = any> =\n  | Data\n  | Promise<Data>\n  | Observable<Data>\n  | (() => Data);\n\nexport interface StaticDataSourceMetadata<Data = any>\n  extends BaseDataSourceMetadata {\n  data?: StaticDataSourceData<Data>;\n}\n\n@Injectable()\nexport class StaticDataSource<Data = any>\n  extends BaseDataSource<Data, StaticDataSourceMetadata<Data>>\n  implements OnDestroy {\n  protected override _data$ = new ReplaySubject<Data>(1);\n  private _dataSubscription?: Subscription;\n\n  constructor(\n    @Optional()\n    @Inject(RXAP_STATIC_DATA_SOURCE_DATA)\n      data: any | null,\n    @Optional()\n    @Inject(RXAP_DATA_SOURCE_METADATA)\n      metadata: StaticDataSourceMetadata | null,\n  ) {\n    super(metadata);\n    if ((data === undefined || data === null) && this.metadata.data !== undefined) {\n      data = this.metadata.data;\n    }\n    if (data === undefined) {\n      throw new RxapDataSourceError(\n        `Can not create static data source '${ this.id }' with undefined as data`,\n        '',\n      );\n    }\n    if (isObservable(data)) {\n      this._dataSubscription = (\n        data as Observable<any>\n      ).pipe(\n        tap({\n          next: data => this._data$.next(data),\n          error: error => this.error$.next(error),\n        }),\n      ).subscribe();\n    } else if (isPromiseLike(data)) {\n      if (isPromise(data)) {\n        data.then(data => this._data$.next(data)).catch((error) => this.error$.next(error));\n      } else {\n        data.then(data => this._data$.next(data));\n      }\n    } else if (typeof data === 'function') {\n      // TODO : fix typeof function cast\n      this._data$.next((this._data = (data as any)()));\n    } else {\n      this._data$.next((this._data = data));\n    }\n  }\n\n  public override get data(): Data {\n    return clone<Data>(this._data!);\n  }\n\n  public override set data(value: Data) {\n    const data = clone(value);\n    this._data = data;\n    this._data$.next(data);\n  }\n\n  public override ngOnDestroy(): void {\n    super.ngOnDestroy();\n    this._dataSubscription?.unsubscribe();\n  }\n\n  protected override _connect(): Observable<Data> {\n    this.init();\n    return this._data$.asObservable();\n  }\n\n}\n\nexport function RxapStaticDataSource<Data>(\n  metadata: StaticDataSourceMetadata<Data>,\n  className = 'StaticDataSource',\n  packageName = '@rxap/data-source',\n) {\n  return function (target: Constructor<StaticDataSource<Data>>) {\n    RxapDataSource(metadata, className, packageName)(target);\n  };\n}\n\nexport function staticDataSource<Data>(\n  data: StaticDataSourceData<Data>,\n  metadata: StaticDataSourceMetadata<Data> = { id: 'static' },\n): StaticDataSource<Data> {\n  return new StaticDataSource(data, metadata);\n}\n","// region data-source-error\nexport * from './lib/data-source-error/data-source-error.component';\n// endregion\n\n// region \nexport * from './lib/base.data-source';\nexport * from './lib/data-source-loader';\nexport * from './lib/data-source-refresh-to-method-adapter-factory';\nexport * from './lib/error';\nexport * from './lib/method.data-source';\nexport * from './lib/observable.data-source';\nexport * from './lib/pipe.data-source';\nexport * from './lib/static.data-source';\nexport * from './lib/tokens';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}