UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

62 lines 9.34 kB
import { Injectable, InjectionToken, Injector } from '@angular/core'; import { Router } from '@angular/router'; import { ExtensionPointWithoutStateForPlugins, fromTriggerOnce, hookGeneric, PluginsResolveService } from '@c8y/ngx-components'; import { flatten } from 'lodash'; import { shareReplay, startWith } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "@c8y/ngx-components"; /** * A hook to use for Multi Provider extension. * @deprecated Consider using the `hookDeviceRegistration` function instead. */ export const HOOK_DEVICE_REGISTRATION = new InjectionToken('HOOK_DEVICE_REGISTRATION'); /** * You can either provide a single `RegisterDeviceExtension` as parameter: * ```typescript * hookDeviceRegistration(...) * ``` * * Or an array to directly register multiple: * ```typescript * hookDeviceRegistration([...]) * ``` * * Or you provide an Service that implements `ExtensionFactory<RegisterDeviceExtension>` * ```typescript * export class MyDeviceRegistrationFactory implements ExtensionFactory<RegisterDeviceExtension> {...} * ... * hookDeviceRegistration(MyDeviceRegistrationFactory) * ``` * A typed alternative to `HOOK_DEVICE_REGISTRATION`. * @param registration The `RegisterDeviceExtension`'s or `ExtensionFactory` to be provided. * @returns An `Provider` to be provided in your module. */ export function hookDeviceRegistration(registration, options) { return hookGeneric(registration, HOOK_DEVICE_REGISTRATION, options); } /** * A service which defines device registration options. */ export class RegisterDeviceExtensionService extends ExtensionPointWithoutStateForPlugins { constructor(rootInjector, router, plugins) { super(rootInjector, plugins); this.router = router; this.items$ = this.setupItemsObservable(); } setupItemsObservable() { return fromTriggerOnce(this.router, this.refresh$, [ () => flatten(this.injectors.map(injector => injector.get(HOOK_DEVICE_REGISTRATION, [], { self: true }))), () => this.factories ]).pipe(startWith([]), shareReplay(1)); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterDeviceExtensionService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterDeviceExtensionService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterDeviceExtensionService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i2.PluginsResolveService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZGV2aWNlLWV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcmVnaXN0ZXItZGV2aWNlL2Ryb3Bkb3duL3JlZ2lzdGVyLWRldmljZS1leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFFTCxvQ0FBb0MsRUFDcEMsZUFBZSxFQUVmLFdBQVcsRUFDWCxxQkFBcUIsRUFFdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUF5QnhEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN4RCwwQkFBMEIsQ0FDM0IsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsWUFBc0QsRUFDdEQsT0FBcUM7SUFFckMsT0FBTyxXQUFXLENBQTBCLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvRixDQUFDO0FBRUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sOEJBQStCLFNBQVEsb0NBQXdEO0lBQzFHLFlBQ0UsWUFBc0IsRUFDZCxNQUFjLEVBQ3RCLE9BQThCO1FBRTlCLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFIckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUl0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsT0FBTyxlQUFlLENBQXFCLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyRSxHQUFHLEVBQUUsQ0FDSCxPQUFPLENBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQzNGO1lBQ0gsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVM7U0FDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQzsrR0FsQlUsOEJBQThCO21IQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTs7NEZBRVAsOEJBQThCO2tCQUgxQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEV4dGVuc2lvbkZhY3RvcnksXG4gIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2lucyxcbiAgZnJvbVRyaWdnZXJPbmNlLFxuICBHZW5lcmljSG9va1R5cGUsXG4gIGhvb2tHZW5lcmljLFxuICBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UsXG4gIEdlbmVyaWNIb29rT3B0aW9uc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlZ2lzdGVyRGV2aWNlSXRlbSB9IGZyb20gJy4vUmVnaXN0ZXJEZXZpY2VJdGVtJztcblxuLyoqXG4gKiBBbiBleHRlbnNpb24gSE9PSyBjYW4gdXNlIGVpdGhlciBhIHB1cmUgdmFsdWU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZVZhbHVlOiB7IC4uLmhvb2tWYWx1ZSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlVmFsdWU6IFt7IC4uLmhvb2tWYWx1ZXMgfV0sIG11bHRpOiB0cnVlIH1cbiAqIGBgYFxuICpcbiAqIE9yIGFuIEV4dGVuc2lvbkZhY3Rvcnkgd2hpY2ggYWxsb3dzIHRvIGRlZmluZSBhIGdldCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uXG4gKiBnZXRzIGNhbGxlZCBvbiBlYWNoIG5hdmlnYXRpb24gd2l0aCB0aGUgY3VycmVudCByb3V0ZSBhbmQgY2FuIHJldHVybiB2YWx1ZXNcbiAqIGFzeW5jIChvYnNlcnZhYmxlIG9yIHByb21pc2UpLlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VGYWN0b3J5OiB7IGdldDogKHJvdXRlKSA9PiBkb1NvbWV0aGluZ0FzeW5jKHJvdXRlKSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgUmVnaXN0ZXJEZXZpY2VFeHRlbnNpb24gPVxuICB8IFJlZ2lzdGVyRGV2aWNlSXRlbVxuICB8IFJlZ2lzdGVyRGV2aWNlSXRlbVtdXG4gIHwgRXh0ZW5zaW9uRmFjdG9yeTxSZWdpc3RlckRldmljZUl0ZW0+O1xuLyoqXG4gKiBBIGhvb2sgdG8gdXNlIGZvciBNdWx0aSBQcm92aWRlciBleHRlbnNpb24uXG4gKiBAZGVwcmVjYXRlZCBDb25zaWRlciB1c2luZyB0aGUgYGhvb2tEZXZpY2VSZWdpc3RyYXRpb25gIGZ1bmN0aW9uIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBIT09LX0RFVklDRV9SRUdJU1RSQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVnaXN0ZXJEZXZpY2VFeHRlbnNpb24+KFxuICAnSE9PS19ERVZJQ0VfUkVHSVNUUkFUSU9OJ1xuKTtcblxuLyoqXG4gKiBZb3UgY2FuIGVpdGhlciBwcm92aWRlIGEgc2luZ2xlIGBSZWdpc3RlckRldmljZUV4dGVuc2lvbmAgYXMgcGFyYW1ldGVyOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tEZXZpY2VSZWdpc3RyYXRpb24oLi4uKVxuICogYGBgXG4gKlxuICogT3IgYW4gYXJyYXkgdG8gZGlyZWN0bHkgcmVnaXN0ZXIgbXVsdGlwbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaG9va0RldmljZVJlZ2lzdHJhdGlvbihbLi4uXSlcbiAqIGBgYFxuICpcbiAqIE9yIHlvdSBwcm92aWRlIGFuIFNlcnZpY2UgdGhhdCBpbXBsZW1lbnRzIGBFeHRlbnNpb25GYWN0b3J5PFJlZ2lzdGVyRGV2aWNlRXh0ZW5zaW9uPmBcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBleHBvcnQgY2xhc3MgTXlEZXZpY2VSZWdpc3RyYXRpb25GYWN0b3J5IGltcGxlbWVudHMgRXh0ZW5zaW9uRmFjdG9yeTxSZWdpc3RlckRldmljZUV4dGVuc2lvbj4gey4uLn1cbiAqICAuLi5cbiAqICBob29rRGV2aWNlUmVnaXN0cmF0aW9uKE15RGV2aWNlUmVnaXN0cmF0aW9uRmFjdG9yeSlcbiAqIGBgYFxuICogQSB0eXBlZCBhbHRlcm5hdGl2ZSB0byBgSE9PS19ERVZJQ0VfUkVHSVNUUkFUSU9OYC5cbiAqIEBwYXJhbSByZWdpc3RyYXRpb24gVGhlIGBSZWdpc3RlckRldmljZUV4dGVuc2lvbmAncyBvciBgRXh0ZW5zaW9uRmFjdG9yeWAgdG8gYmUgcHJvdmlkZWQuXG4gKiBAcmV0dXJucyBBbiBgUHJvdmlkZXJgIHRvIGJlIHByb3ZpZGVkIGluIHlvdXIgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9va0RldmljZVJlZ2lzdHJhdGlvbihcbiAgcmVnaXN0cmF0aW9uOiBHZW5lcmljSG9va1R5cGU8UmVnaXN0ZXJEZXZpY2VFeHRlbnNpb24+LFxuICBvcHRpb25zPzogUGFydGlhbDxHZW5lcmljSG9va09wdGlvbnM+XG4pIHtcbiAgcmV0dXJuIGhvb2tHZW5lcmljPFJlZ2lzdGVyRGV2aWNlRXh0ZW5zaW9uPihyZWdpc3RyYXRpb24sIEhPT0tfREVWSUNFX1JFR0lTVFJBVElPTiwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogQSBzZXJ2aWNlIHdoaWNoIGRlZmluZXMgZGV2aWNlIHJlZ2lzdHJhdGlvbiBvcHRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckRldmljZUV4dGVuc2lvblNlcnZpY2UgZXh0ZW5kcyBFeHRlbnNpb25Qb2ludFdpdGhvdXRTdGF0ZUZvclBsdWdpbnM8UmVnaXN0ZXJEZXZpY2VJdGVtPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvb3RJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwbHVnaW5zOiBQbHVnaW5zUmVzb2x2ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocm9vdEluamVjdG9yLCBwbHVnaW5zKTtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuc2V0dXBJdGVtc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEl0ZW1zT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPFJlZ2lzdGVyRGV2aWNlSXRlbVtdPiB7XG4gICAgcmV0dXJuIGZyb21UcmlnZ2VyT25jZTxSZWdpc3RlckRldmljZUl0ZW0+KHRoaXMucm91dGVyLCB0aGlzLnJlZnJlc2gkLCBbXG4gICAgICAoKSA9PlxuICAgICAgICBmbGF0dGVuKFxuICAgICAgICAgIHRoaXMuaW5qZWN0b3JzLm1hcChpbmplY3RvciA9PiBpbmplY3Rvci5nZXQoSE9PS19ERVZJQ0VfUkVHSVNUUkFUSU9OLCBbXSwgeyBzZWxmOiB0cnVlIH0pKVxuICAgICAgICApLFxuICAgICAgKCkgPT4gdGhpcy5mYWN0b3JpZXNcbiAgICBdKS5waXBlKHN0YXJ0V2l0aChbXSksIHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxufVxuIl19