@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
61 lines • 7.82 kB
JavaScript
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