@rxap/data-source
Version:
Provides a set of classes and decorators for creating and managing data sources in Angular applications, including base classes, static data sources, observable data sources, and method data sources. It also includes a component for displaying data source
1 lines • 7.5 kB
Source Map (JSON)
{"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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"}