{"version":3,"file":"rxap-data-source-accordion.mjs","sources":["../../../../../packages/angular/data-source/accordion/src/lib/accordion.data-source.ts","../../../../../packages/angular/data-source/accordion/src/lib/tokens.ts","../../../../../packages/angular/data-source/accordion/src/lib/panel-accordion.data-source.ts","../../../../../packages/angular/data-source/accordion/src/index.ts","../../../../../packages/angular/data-source/accordion/src/rxap-data-source-accordion.ts"],"sourcesContent":["import {\n  inject,\n  Injectable,\n  InjectionToken,\n  OnDestroy,\n  OnInit,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BaseDataSource } from '@rxap/data-source';\nimport { Method } from '@rxap/pattern';\nimport { ToggleSubject } from '@rxap/rxjs';\nimport { isPromiseLike } from '@rxap/utilities';\nimport {\n  isObservable,\n  Observable,\n  ReplaySubject,\n  Subject,\n  Subscription,\n} from 'rxjs';\n\nexport type AccordionDataSourceMethod<Data = unknown, Parameters = unknown> = Method<Data, Parameters>;\n\n@Injectable()\nexport abstract class AccordionDataSource<\n  Data = unknown,\n  Parameters = unknown\n> extends BaseDataSource<Data> implements OnInit, OnDestroy {\n\n  public override _data$ = new ReplaySubject<Data>(1);\n  public override readonly loading$ = new ToggleSubject(true);\n\n  public override readonly loading = toSignal(this.loading$, { initialValue: false });\n  public override readonly hasError = toSignal(this.hasError$, { initialValue: false });\n\n  protected parameters: Parameters | null = null;\n\n  protected readonly _refresh$ = new Subject<void>();\n\n  protected abstract readonly method: AccordionDataSourceMethod<Data, Parameters>;\n\n  protected _subscription: Subscription | null = null;\n\n  public get refresh$(): Observable<void> {\n    return this._refresh$.asObservable();\n  }\n\n  public abstract getParameters(): Observable<Parameters> | Promise<Parameters> | Parameters;\n\n  public override ngOnDestroy() {\n    super.ngOnDestroy();\n    this._subscription?.unsubscribe();\n  }\n\n  public ngOnInit() {\n    const parameters = this.getParameters();\n    if (isObservable(parameters)) {\n      this._subscription = parameters.subscribe((params) => {\n        this.parameters = params;\n        return this.load();\n      });\n    } else if (isPromiseLike(parameters)) {\n      parameters.then((params) => {\n        this.parameters = params;\n        return this.load();\n      });\n    } else {\n      this.parameters = parameters;\n      this.load();\n    }\n  }\n\n  public override refresh(): any {\n    const result = this.load();\n    if (isPromiseLike(result)) {\n      result.then(() => this._refresh$.next());\n    } else {\n      this._refresh$.next();\n    }\n  }\n\n  protected async load(): Promise<void> {\n    if (!this.parameters) {\n      throw new Error('The parameters are not set. Ensure the parameters are set before calling the load method.');\n    }\n    this.loading$.enable();\n    this.hasError$.disable();\n    try {\n      this._data$.next(await this.method.call(this.parameters));\n    } catch (error) {\n      console.error(`Fail to load data '${ this.id }' - '${ this.constructor.name }'`);\n      this.hasError$.enable();\n    } finally {\n      this.loading$.disable();\n    }\n  }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const ACCORDION_DATA_SOURCE = new InjectionToken('ACCORDION_DATA_SOURCE');\n","import {\n  inject,\n  Injectable,\n  OnDestroy,\n  OnInit,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport '@rxap/rxjs';\nimport { AccordionDataSource } from './accordion.data-source';\nimport { ACCORDION_DATA_SOURCE } from './tokens';\n\n@Injectable()\nexport abstract class PanelAccordionDataSource<\n  Data = unknown,\n  Parameters = unknown\n> extends AccordionDataSource<Data, Parameters> implements OnDestroy, OnInit {\n\n  protected readonly accordionDataSource = inject<AccordionDataSource<Data, Parameters>>(ACCORDION_DATA_SOURCE);\n\n  override getParameters(): Observable<Parameters> | Promise<Parameters> | Parameters {\n    return this.accordionDataSource.getParameters();\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this._subscription = this.accordionDataSource.refresh$.pipe(\n      tap(() => this.refresh()),\n    ).subscribe();\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this._subscription?.unsubscribe();\n  }\n\n}\n","// region \nexport * from './lib/accordion.data-source';\nexport * from './lib/panel-accordion.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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"}