UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

174 lines (165 loc) 7.2 kB
import * as i0 from '@angular/core'; import { Injectable, Inject, Pipe, NgModule } from '@angular/core'; import { Subject, BehaviorSubject, ReplaySubject } from 'rxjs'; import { runInZone } from '@iotize/ionic'; import { CommonModule } from '@angular/common'; import { shareReplay } from 'rxjs/operators'; class DefaultDashboardEventStreamService { _events = new Subject(); events = this._events.asObservable(); // private _componentRefs: [IComponent, string][] = []; constructor() { } emit(data) { this._events.next(data); } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultDashboardEventStreamService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultDashboardEventStreamService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultDashboardEventStreamService, decorators: [{ type: Injectable }], ctorParameters: () => [] }); const DATA_SOURCE_PROVIDER = 'DATA_SOURCE_PROVIDER'; const DASHBOARD_EVENT_STREAM_PROVIDER = 'DASHBOARD_EVENT_STREAM_PROVIDER'; class DataStreamIdToValueStreamPipe { dataSourceProvider; ngZone; constructor(dataSourceProvider, ngZone) { this.dataSourceProvider = dataSourceProvider; this.ngZone = ngZone; } transform(streamId) { return this.dataSourceProvider .getStream(streamId) .pipe(runInZone(this.ngZone)); } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataStreamIdToValueStreamPipe, deps: [{ token: DATA_SOURCE_PROVIDER }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Pipe }); /** @nocollapse */ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: DataStreamIdToValueStreamPipe, name: "dashboardValue" }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataStreamIdToValueStreamPipe, decorators: [{ type: Pipe, args: [{ name: 'dashboardValue', }] }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Inject, args: [DATA_SOURCE_PROVIDER] }] }, { type: i0.NgZone }] }); class DataStreamModule { static forRoot(settings) { return { ngModule: DataStreamModule, providers: DataStreamModule.createProviders(settings), }; } static createProviders(settings) { return [ { provide: DATA_SOURCE_PROVIDER, useExisting: settings.dataSourceProvider, }, { provide: DASHBOARD_EVENT_STREAM_PROVIDER, useExisting: settings.dashboardEventStreamProvider, }, ]; } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataStreamModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: DataStreamModule, declarations: [DataStreamIdToValueStreamPipe], imports: [CommonModule], exports: [DataStreamIdToValueStreamPipe] }); /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataStreamModule, imports: [CommonModule] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataStreamModule, decorators: [{ type: NgModule, args: [{ declarations: [DataStreamIdToValueStreamPipe], exports: [DataStreamIdToValueStreamPipe], imports: [CommonModule], }] }] }); class DefaultDataSourceProvider { _streamsChange = new BehaviorSubject({}); constructor() { } getAvailableStreamIds() { return Object.keys(this._streamsChange.value); } /** * @deprecated * @param streamId * @returns */ getEditableStream(streamId) { throw new Error('Method not implemented.'); } getStream(streamId) { return this._getOrCreateStream(streamId).asObservable(); } clearAll() { const streams = this._streamsChange.value; for (const [streamId, stream] of Object.entries(streams)) { stream.complete(); delete streams[streamId]; } this._streamsChange.next(streams); } _getOrCreateStream(streamId) { const existingStream = this._streamsChange.value[streamId]; if (!existingStream) { return this._createStream(streamId); } else { return existingStream; } } _createStream(streamId, value) { const streams = this._streamsChange.value; const newStream = arguments.length > 1 && value !== undefined ? new BehaviorSubject(value) : new ReplaySubject(1); streams[streamId] = newStream; this._streamsChange.next(streams); return newStream; } notifyValue(streamId, value) { this._getOrCreateStream(streamId).next(value); } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultDataSourceProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultDataSourceProvider }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultDataSourceProvider, decorators: [{ type: Injectable }], ctorParameters: () => [] }); class LwM2MEditableDataStream { tap; config; _values = new Subject(); /** * Values observable */ values = this._values.asObservable().pipe(shareReplay(1)); constructor(tap, config) { this.tap = tap; this.config = config; } /** * Read value. * It may also trigger a value changed event */ async read() { const result = await this.tap.lwm2m.execute(this.config.readCallFactory()); const body = result.body(); this._values.next(body); return body; } /** * Write given value * @param value */ async write(value) { const result = await this.tap.lwm2m.execute(this.config.writeCallFactory(value)); result.successful(); } } /** * Generated bundle index. Do not edit. */ export { DASHBOARD_EVENT_STREAM_PROVIDER, DATA_SOURCE_PROVIDER, DataStreamIdToValueStreamPipe, DataStreamModule, DefaultDashboardEventStreamService, DefaultDataSourceProvider, LwM2MEditableDataStream }; //# sourceMappingURL=iotize-ionic-data-stream.mjs.map