UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

95 lines 9.95 kB
import { Injectable, InjectionToken, Injector } from '@angular/core'; import { Router } from '@angular/router'; import { distinctUntilChanged, shareReplay } from 'rxjs/operators'; import { fromTrigger, hookGeneric, getInjectedHooks, stateToFactory, ExtensionPointForPlugins } from '../common/extension-hooks'; import { PluginsResolveService } from '../plugins'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "../plugins"; /** * A hook to use for Multi Provider extension. * Consider using the `hookSearch` function instead. * @deprecated Please don't use the search factory. It will be refactored soon. */ export const HOOK_SEARCH = new InjectionToken('HOOK_SEARCH'); /** * You can either provide a single `Search` as parameter: * ```typescript * hookSearch(...) * ``` * * Or an array to directly register multiple: * ```typescript * hookSearch([...]) * ``` * * Or you provide an Service that implements `ExtensionFactory<Search>` * ```typescript * export class MySearchFactory implements ExtensionFactory<Search> {...} * ... * hookSearch(MySearchFactory) * ``` * A typed alternative to `HOOK_SEARCH`. * @param search The `Search`'s or `ExtensionFactory` to be provided. * @returns An `Provider` to be provided in your module. * @deprecated Please don't use the search factory. It will be refactored soon. */ export function hookSearch(search, options) { return hookGeneric(search, HOOK_SEARCH, options); } export var SearchFilters; (function (SearchFilters) { SearchFilters["ONLY_DEVICES"] = "onlyDevices"; SearchFilters["ONLY_GROUPS_AND_ASSETS"] = "onlyGroupsAndAssets"; SearchFilters["ALL_FILTERS"] = "allFilters"; })(SearchFilters || (SearchFilters = {})); /** * A service which defines the search function. */ export class SearchService extends ExtensionPointForPlugins { constructor(rootInjector, router, plugins) { super(rootInjector, plugins); this.router = router; this.items$ = this.setupItemsObservable(); } /** * Returns the current state. * @readonly * @returns The current set of actions. */ get state() { return this.state$.value; } /** * Adds a new item to the search in the header. * @param item The item to add. */ add(item) { this.state.add(item); this.emitNewState(); } /** * Removes an search from the header. * @param item The item to remove. */ remove(item) { this.state.delete(item); this.emitNewState(); } setupItemsObservable() { return fromTrigger(this.router, this.refresh$, [ getInjectedHooks(HOOK_SEARCH, this.injectors), () => this.factories, stateToFactory(this.state$) ]).pipe(shareReplay(1), distinctUntilChanged()); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, 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: SearchService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i2.PluginsResolveService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NlYXJjaC9zZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsV0FBVyxFQUVYLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLHdCQUF3QixFQUV6QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQUduRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRTdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQStCLEVBQUUsT0FBcUM7SUFDL0YsT0FBTyxXQUFXLENBQVMsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2Qiw2Q0FBNEIsQ0FBQTtJQUM1QiwrREFBOEMsQ0FBQTtJQUM5QywyQ0FBMEIsQ0FBQTtBQUM1QixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRDs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFjLFNBQVEsd0JBQWdDO0lBQ2pFLFlBQ0UsWUFBc0IsRUFDZCxNQUFjLEVBQ3RCLE9BQThCO1FBRTlCLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFIckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUl0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLElBQVk7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRVMsb0JBQW9CO1FBQzVCLE9BQU8sV0FBVyxDQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyRCxnQkFBZ0IsQ0FBUyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNyRCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUztZQUNwQixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzsrR0EzQ1UsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBmcm9tVHJpZ2dlcixcbiAgR2VuZXJpY0hvb2tUeXBlLFxuICBob29rR2VuZXJpYyxcbiAgZ2V0SW5qZWN0ZWRIb29rcyxcbiAgc3RhdGVUb0ZhY3RvcnksXG4gIEV4dGVuc2lvblBvaW50Rm9yUGx1Z2lucyxcbiAgR2VuZXJpY0hvb2tPcHRpb25zXG59IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcGx1Z2lucyc7XG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICcuL3NlYXJjaC5tb2RlbCc7XG5cbi8qKlxuICogQSBob29rIHRvIHVzZSBmb3IgTXVsdGkgUHJvdmlkZXIgZXh0ZW5zaW9uLlxuICogQ29uc2lkZXIgdXNpbmcgdGhlIGBob29rU2VhcmNoYCBmdW5jdGlvbiBpbnN0ZWFkLlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIGRvbid0IHVzZSB0aGUgc2VhcmNoIGZhY3RvcnkuIEl0IHdpbGwgYmUgcmVmYWN0b3JlZCBzb29uLlxuICovXG5leHBvcnQgY29uc3QgSE9PS19TRUFSQ0ggPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0hPT0tfU0VBUkNIJyk7XG5cbi8qKlxuICogWW91IGNhbiBlaXRoZXIgcHJvdmlkZSBhIHNpbmdsZSBgU2VhcmNoYCBhcyBwYXJhbWV0ZXI6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaG9va1NlYXJjaCguLi4pXG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBob29rU2VhcmNoKFsuLi5dKVxuICogYGBgXG4gKlxuICogT3IgeW91IHByb3ZpZGUgYW4gU2VydmljZSB0aGF0IGltcGxlbWVudHMgYEV4dGVuc2lvbkZhY3Rvcnk8U2VhcmNoPmBcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBleHBvcnQgY2xhc3MgTXlTZWFyY2hGYWN0b3J5IGltcGxlbWVudHMgRXh0ZW5zaW9uRmFjdG9yeTxTZWFyY2g+IHsuLi59XG4gKiAgLi4uXG4gKiAgaG9va1NlYXJjaChNeVNlYXJjaEZhY3RvcnkpXG4gKiBgYGBcbiAqIEEgdHlwZWQgYWx0ZXJuYXRpdmUgdG8gYEhPT0tfU0VBUkNIYC5cbiAqIEBwYXJhbSBzZWFyY2ggVGhlIGBTZWFyY2hgJ3Mgb3IgYEV4dGVuc2lvbkZhY3RvcnlgIHRvIGJlIHByb3ZpZGVkLlxuICogQHJldHVybnMgQW4gYFByb3ZpZGVyYCB0byBiZSBwcm92aWRlZCBpbiB5b3VyIG1vZHVsZS5cbiAqIEBkZXByZWNhdGVkIFBsZWFzZSBkb24ndCB1c2UgdGhlIHNlYXJjaCBmYWN0b3J5LiBJdCB3aWxsIGJlIHJlZmFjdG9yZWQgc29vbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhvb2tTZWFyY2goc2VhcmNoOiBHZW5lcmljSG9va1R5cGU8U2VhcmNoPiwgb3B0aW9ucz86IFBhcnRpYWw8R2VuZXJpY0hvb2tPcHRpb25zPikge1xuICByZXR1cm4gaG9va0dlbmVyaWM8U2VhcmNoPihzZWFyY2gsIEhPT0tfU0VBUkNILCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGVudW0gU2VhcmNoRmlsdGVycyB7XG4gIE9OTFlfREVWSUNFUyA9ICdvbmx5RGV2aWNlcycsXG4gIE9OTFlfR1JPVVBTX0FORF9BU1NFVFMgPSAnb25seUdyb3Vwc0FuZEFzc2V0cycsXG4gIEFMTF9GSUxURVJTID0gJ2FsbEZpbHRlcnMnXG59XG5cbi8qKlxuICogQSBzZXJ2aWNlIHdoaWNoIGRlZmluZXMgdGhlIHNlYXJjaCBmdW5jdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSBleHRlbmRzIEV4dGVuc2lvblBvaW50Rm9yUGx1Z2luczxTZWFyY2g+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcm9vdEluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHBsdWdpbnM6IFBsdWdpbnNSZXNvbHZlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihyb290SW5qZWN0b3IsIHBsdWdpbnMpO1xuICAgIHRoaXMuaXRlbXMkID0gdGhpcy5zZXR1cEl0ZW1zT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUuXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBzZXQgb2YgYWN0aW9ucy5cbiAgICovXG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBpdGVtIHRvIHRoZSBzZWFyY2ggaW4gdGhlIGhlYWRlci5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gYWRkLlxuICAgKi9cbiAgYWRkKGl0ZW06IFNlYXJjaCkge1xuICAgIHRoaXMuc3RhdGUuYWRkKGl0ZW0pO1xuICAgIHRoaXMuZW1pdE5ld1N0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBzZWFyY2ggZnJvbSB0aGUgaGVhZGVyLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byByZW1vdmUuXG4gICAqL1xuICByZW1vdmUoaXRlbTogU2VhcmNoKSB7XG4gICAgdGhpcy5zdGF0ZS5kZWxldGUoaXRlbSk7XG4gICAgdGhpcy5lbWl0TmV3U3RhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEl0ZW1zT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPFNlYXJjaFtdPiB7XG4gICAgcmV0dXJuIGZyb21UcmlnZ2VyPFNlYXJjaD4odGhpcy5yb3V0ZXIsIHRoaXMucmVmcmVzaCQsIFtcbiAgICAgIGdldEluamVjdGVkSG9va3M8U2VhcmNoPihIT09LX1NFQVJDSCwgdGhpcy5pbmplY3RvcnMpLFxuICAgICAgKCkgPT4gdGhpcy5mYWN0b3JpZXMsXG4gICAgICBzdGF0ZVRvRmFjdG9yeSh0aGlzLnN0YXRlJClcbiAgICBdKS5waXBlKHNoYXJlUmVwbGF5KDEpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxufVxuIl19