UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

61 lines 7.82 kB
import { Injectable, InjectionToken, Injector } from '@angular/core'; import { Router } from '@angular/router'; import { flatten } from 'lodash-es'; import { shareReplay } from 'rxjs'; import { ExtensionPointWithoutStateForPlugins, fromTriggerOnce, hookGeneric } from '../common/extension-hooks'; import { PluginsResolveService } from '../plugins/plugins-resolve.service'; import * as i0 from "@angular/core"; import * as i1 from "../plugins/plugins-resolve.service"; import * as i2 from "@angular/router"; const HOOK_ACTION_CONTROLS = new InjectionToken('ActionControlHook'); /** * You can either provide a single `ActionControlHook` as parameter: * ```typescript * hookDataGridActionControls(...) * ``` * * Or an array to directly register multiple: * ```typescript * hookDataGridActionControls([...]) * ``` * * Or you provide a service that implements `ActionControlFactory` * ```typescript * export class MyActionControlsFactory implements ActionControlFactory {...} * ... * hookDataGridActionControls(MyActionControlsFactory) * ``` * @param config The `ActionControlHook`'s or `ExtensionFactory` to be provided. * @returns An `Provider` to be provided in your module. */ export function hookDataGridActionControls(action, options) { return hookGeneric(action, HOOK_ACTION_CONTROLS, options); } /** * A service which defines device grid action options. */ export class ActionControlsExtensionService extends ExtensionPointWithoutStateForPlugins { constructor(rootInjector, plugins, router) { super(rootInjector, plugins); this.router = router; this.items$ = this.setupItemsObservable(); } setupItemsObservable() { return fromTriggerOnce(this.router, this.refresh$, [ () => { const hooks = flatten(this.injectors.map(injector => injector.get(HOOK_ACTION_CONTROLS, [], { self: true }))); return hooks; }, () => this.factories ]).pipe(shareReplay(1)); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionControlsExtensionService, deps: [{ token: i0.Injector }, { token: i1.PluginsResolveService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionControlsExtensionService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionControlsExtensionService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.PluginsResolveService }, { type: i2.Router }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbnRyb2xzLWV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRhLWdyaWQvYWN0aW9uLWNvbnRyb2xzLWV4dGVuc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsZUFBZSxFQUdmLFdBQVcsRUFDWixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7O0FBRzNFLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FDeEMsTUFBMEMsRUFDMUMsT0FBcUM7SUFFckMsT0FBTyxXQUFXLENBQW9CLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sOEJBQStCLFNBQVEsb0NBQXVEO0lBQ3pHLFlBQ0UsWUFBc0IsRUFDdEIsT0FBOEIsRUFDdEIsTUFBYztRQUV0QixLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRnJCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFHdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRVMsb0JBQW9CO1FBQzVCLE9BQU8sZUFBZSxDQUFvQixJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDcEUsR0FBRyxFQUFFO2dCQUNILE1BQU0sS0FBSyxHQUF3QixPQUFPLENBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUN2RixDQUFDO2dCQUVGLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTO1NBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQzsrR0FyQlUsOEJBQThCO21IQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTs7NEZBRVAsOEJBQThCO2tCQUgxQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2lucyxcbiAgZnJvbVRyaWdnZXJPbmNlLFxuICBHZW5lcmljSG9va09wdGlvbnMsXG4gIEdlbmVyaWNIb29rVHlwZSxcbiAgaG9va0dlbmVyaWNcbn0gZnJvbSAnLi4vY29tbW9uL2V4dGVuc2lvbi1ob29rcyc7XG5pbXBvcnQgeyBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UgfSBmcm9tICcuLi9wbHVnaW5zL3BsdWdpbnMtcmVzb2x2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGlvbkNvbnRyb2xIb29rIH0gZnJvbSAnLi9kYXRhLWdyaWQubW9kZWwnO1xuXG5jb25zdCBIT09LX0FDVElPTl9DT05UUk9MUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQWN0aW9uQ29udHJvbEhvb2snKTtcblxuLyoqXG4gKiBZb3UgY2FuIGVpdGhlciBwcm92aWRlIGEgc2luZ2xlIGBBY3Rpb25Db250cm9sSG9va2AgYXMgcGFyYW1ldGVyOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tEYXRhR3JpZEFjdGlvbkNvbnRyb2xzKC4uLilcbiAqIGBgYFxuICpcbiAqIE9yIGFuIGFycmF5IHRvIGRpcmVjdGx5IHJlZ2lzdGVyIG11bHRpcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tEYXRhR3JpZEFjdGlvbkNvbnRyb2xzKFsuLi5dKVxuICogYGBgXG4gKlxuICogT3IgeW91IHByb3ZpZGUgYSBzZXJ2aWNlIHRoYXQgaW1wbGVtZW50cyBgQWN0aW9uQ29udHJvbEZhY3RvcnlgXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgZXhwb3J0IGNsYXNzIE15QWN0aW9uQ29udHJvbHNGYWN0b3J5IGltcGxlbWVudHMgQWN0aW9uQ29udHJvbEZhY3Rvcnkgey4uLn1cbiAqICAuLi5cbiAqICBob29rRGF0YUdyaWRBY3Rpb25Db250cm9scyhNeUFjdGlvbkNvbnRyb2xzRmFjdG9yeSlcbiAqIGBgYFxuICogQHBhcmFtIGNvbmZpZyBUaGUgYEFjdGlvbkNvbnRyb2xIb29rYCdzIG9yIGBFeHRlbnNpb25GYWN0b3J5YCB0byBiZSBwcm92aWRlZC5cbiAqIEByZXR1cm5zIEFuIGBQcm92aWRlcmAgdG8gYmUgcHJvdmlkZWQgaW4geW91ciBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob29rRGF0YUdyaWRBY3Rpb25Db250cm9scyhcbiAgYWN0aW9uOiBHZW5lcmljSG9va1R5cGU8QWN0aW9uQ29udHJvbEhvb2s+LFxuICBvcHRpb25zPzogUGFydGlhbDxHZW5lcmljSG9va09wdGlvbnM+XG4pIHtcbiAgcmV0dXJuIGhvb2tHZW5lcmljPEFjdGlvbkNvbnRyb2xIb29rPihhY3Rpb24sIEhPT0tfQUNUSU9OX0NPTlRST0xTLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2Ugd2hpY2ggZGVmaW5lcyBkZXZpY2UgZ3JpZCBhY3Rpb24gb3B0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uQ29udHJvbHNFeHRlbnNpb25TZXJ2aWNlIGV4dGVuZHMgRXh0ZW5zaW9uUG9pbnRXaXRob3V0U3RhdGVGb3JQbHVnaW5zPEFjdGlvbkNvbnRyb2xIb29rPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvb3RJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcGx1Z2luczogUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgc3VwZXIocm9vdEluamVjdG9yLCBwbHVnaW5zKTtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuc2V0dXBJdGVtc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEl0ZW1zT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRyb2xIb29rW10+IHtcbiAgICByZXR1cm4gZnJvbVRyaWdnZXJPbmNlPEFjdGlvbkNvbnRyb2xIb29rPih0aGlzLnJvdXRlciwgdGhpcy5yZWZyZXNoJCwgW1xuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBob29rczogQWN0aW9uQ29udHJvbEhvb2tbXSA9IGZsYXR0ZW4oXG4gICAgICAgICAgdGhpcy5pbmplY3RvcnMubWFwKGluamVjdG9yID0+IGluamVjdG9yLmdldChIT09LX0FDVElPTl9DT05UUk9MUywgW10sIHsgc2VsZjogdHJ1ZSB9KSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gaG9va3M7XG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy5mYWN0b3JpZXNcbiAgICBdKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxufVxuIl19