import * as i0 from '@angular/core';
import { Component, InjectionToken, Injectable, inject, NgModule } from '@angular/core';
import * as i2 from '@c8y/client';
import { gettext } from '@c8y/ngx-components/gettext';
import * as i4 from '@c8y/ngx-components';
import { IconDirective, C8yTranslateDirective, FormGroupComponent, RequiredInputPlaceholderDirective, GuideDocsComponent, GuideHrefDirective, C8yTranslatePipe, hookGeneric, ExtensionPointWithoutStateForPlugins, fromTriggerOnce, NavigatorNode, TitleComponent, BreadcrumbComponent, BreadcrumbItemComponent, ActionBarItemComponent, HelpComponent, ProductExperienceDirective, UserPreferencesConfigurationStrategy, DATA_GRID_CONFIGURATION_STRATEGY, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, BuiltInActionType, ContextRouteService, ViewContext, CoreModule, CommonModule, hookNavigator, hookBreadcrumb, hookDataGridActionControls } from '@c8y/ngx-components';
import * as i3 from '@c8y/ngx-components/device-grid';
import { DeviceGridComponent, DeviceGridModule } from '@c8y/ngx-components/device-grid';
import * as i5 from '@ngx-translate/core';
import * as i1 from 'ngx-bootstrap/modal';
import { of } from 'rxjs';
import { switchMap, tap, catchError, take, map, startWith, shareReplay } from 'rxjs/operators';
import * as i6 from '@angular/forms';
import { FormsModule } from '@angular/forms';
import { PopoverDirective, PopoverModule } from 'ngx-bootstrap/popover';
import * as i1$1 from '@angular/router';
import { RouterModule } from '@angular/router';
import { flatten, isEmpty } from 'lodash-es';
import { AsyncPipe } from '@angular/common';
import { TooltipModule } from 'ngx-bootstrap/tooltip';

class AddSmartGroupComponent {
    constructor(modal, smartGroupsService, deviceGridService, alert, translateService) {
        this.modal = modal;
        this.smartGroupsService = smartGroupsService;
        this.deviceGridService = deviceGridService;
        this.alert = alert;
        this.translateService = translateService;
        this.smartGroup = {
            name: '',
            type: 'c8y_DynamicGroup',
            c8y_IsDynamicGroup: {}
        };
    }
    create() {
        return this.deviceGridService
            .getConfig$(this.configKey)
            .pipe(switchMap(config => {
            return this.smartGroupsService.create({
                smartGroup: this.smartGroup,
                deviceQueryString: this.deviceQuery,
                configurableColumns: config
            });
        }), tap(() => {
            this.alert.success(this.translateService.instant(gettext('Smart group "{{ name }}" added.'), {
                name: this.smartGroup.name
            }));
            this.modal.hide();
        }), catchError(ex => {
            this.alert.addServerFailure(ex);
            return of([]);
        }), take(1))
            .subscribe();
    }
    close() {
        this.modal.hide();
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AddSmartGroupComponent, deps: [{ token: i1.BsModalRef }, { token: i2.SmartGroupsService }, { token: i3.DeviceGridService }, { token: i4.AlertService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
    static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: AddSmartGroupComponent, isStandalone: true, selector: "c8y-add-smart-group", ngImport: i0, template: "<div class=\"viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n    <h4\n      id=\"modal-title\"\n      translate\n    >\n      Add smart group\n    </h4>\n  </div>\n\n  <form\n    #createSmartGroup=\"ngForm\"\n    (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n  >\n    <div class=\"modal-inner-scroll\">\n      <div\n        class=\"modal-body\"\n        id=\"modal-body\"\n      >\n        <c8y-form-group>\n          <label\n            class=\"d-inline-block\"\n            for=\"name\"\n            translate\n          >\n            Group name\n          </label>\n          <button\n            class=\"btn-help btn-help--sm a-s-center\"\n            [attr.aria-label]=\"'Help' | translate\"\n            [popover]=\"customPopoverTemplate\"\n            placement=\"right\"\n            type=\"button\"\n            [outsideClick]=\"true\"\n            data-cy=\"add-smart-group-component--Help-button\"\n          ></button>\n          <input\n            class=\"form-control\"\n            id=\"name\"\n            placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n            name=\"name\"\n            type=\"text\"\n            autocomplete=\"off\"\n            required\n            [(ngModel)]=\"smartGroup.name\"\n          />\n        </c8y-form-group>\n      </div>\n    </div>\n    <div class=\"modal-footer\">\n      <button\n        class=\"btn btn-default\"\n        title=\"{{ 'Cancel' | translate }}\"\n        type=\"button\"\n        (click)=\"close()\"\n        translate\n      >\n        Cancel\n      </button>\n\n      <button\n        class=\"btn btn-primary\"\n        title=\"{{ 'Add' | translate }}\"\n        type=\"submit\"\n        [disabled]=\"createSmartGroup.form.invalid\"\n        translate\n      >\n        Add\n      </button>\n    </div>\n  </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n  <div\n    class=\"m-b-16\"\n    style=\"pointer-events: auto\"\n    tabindex=\"0\"\n    data-cy=\"add-smart-group-component--popover-Template\"\n    translate\n  >\n    The smart group will be created based on the filters currently applied in the device list.\n  </div>\n  <br />\n  <p\n    c8y-guide-docs\n    translate\n    ngNonBindable\n  >\n    <small>\n      Find out more in the\n      <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n        user documentation</a\n      >.\n    </small>\n  </p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AddSmartGroupComponent, decorators: [{
            type: Component,
            args: [{ selector: 'c8y-add-smart-group', imports: [
                        IconDirective,
                        C8yTranslateDirective,
                        FormsModule,
                        FormGroupComponent,
                        PopoverDirective,
                        RequiredInputPlaceholderDirective,
                        GuideDocsComponent,
                        GuideHrefDirective,
                        C8yTranslatePipe
                    ], template: "<div class=\"viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n    <h4\n      id=\"modal-title\"\n      translate\n    >\n      Add smart group\n    </h4>\n  </div>\n\n  <form\n    #createSmartGroup=\"ngForm\"\n    (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n  >\n    <div class=\"modal-inner-scroll\">\n      <div\n        class=\"modal-body\"\n        id=\"modal-body\"\n      >\n        <c8y-form-group>\n          <label\n            class=\"d-inline-block\"\n            for=\"name\"\n            translate\n          >\n            Group name\n          </label>\n          <button\n            class=\"btn-help btn-help--sm a-s-center\"\n            [attr.aria-label]=\"'Help' | translate\"\n            [popover]=\"customPopoverTemplate\"\n            placement=\"right\"\n            type=\"button\"\n            [outsideClick]=\"true\"\n            data-cy=\"add-smart-group-component--Help-button\"\n          ></button>\n          <input\n            class=\"form-control\"\n            id=\"name\"\n            placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n            name=\"name\"\n            type=\"text\"\n            autocomplete=\"off\"\n            required\n            [(ngModel)]=\"smartGroup.name\"\n          />\n        </c8y-form-group>\n      </div>\n    </div>\n    <div class=\"modal-footer\">\n      <button\n        class=\"btn btn-default\"\n        title=\"{{ 'Cancel' | translate }}\"\n        type=\"button\"\n        (click)=\"close()\"\n        translate\n      >\n        Cancel\n      </button>\n\n      <button\n        class=\"btn btn-primary\"\n        title=\"{{ 'Add' | translate }}\"\n        type=\"submit\"\n        [disabled]=\"createSmartGroup.form.invalid\"\n        translate\n      >\n        Add\n      </button>\n    </div>\n  </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n  <div\n    class=\"m-b-16\"\n    style=\"pointer-events: auto\"\n    tabindex=\"0\"\n    data-cy=\"add-smart-group-component--popover-Template\"\n    translate\n  >\n    The smart group will be created based on the filters currently applied in the device list.\n  </div>\n  <br />\n  <p\n    c8y-guide-docs\n    translate\n    ngNonBindable\n  >\n    <small>\n      Find out more in the\n      <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n        user documentation</a\n      >.\n    </small>\n  </p>\n</ng-template>\n" }]
        }], ctorParameters: () => [{ type: i1.BsModalRef }, { type: i2.SmartGroupsService }, { type: i3.DeviceGridService }, { type: i4.AlertService }, { type: i5.TranslateService }] });

const HOOK_DEVICE_LIST_COLUMNS = new InjectionToken('HOOK_ALL_DEVICES_LIST_COLUMNS');
/**
 * A hook to override the default device grid columns configuration in `c8y-device-list` component.
 */
function hookDeviceListColumns(columns, options) {
    return hookGeneric(columns, HOOK_DEVICE_LIST_COLUMNS, options);
}
/**
 * A service defining device list column extension options.
 */
class DeviceListExtensionService extends ExtensionPointWithoutStateForPlugins {
    constructor(rootInjector, router, plugins, deviceGridService) {
        super(rootInjector, plugins);
        this.router = router;
        this.deviceGridService = deviceGridService;
        this.items$ = this.setupItemsObservable();
    }
    setupItemsObservable() {
        return fromTriggerOnce(this.router, this.refresh$, [
            () => flatten(this.injectors.map(injector => injector.get(HOOK_DEVICE_LIST_COLUMNS, [], {
                self: true
            }))),
            () => this.factories
        ]).pipe(map((columns) => isEmpty(columns) ? this.deviceGridService.getDefaultColumns() : columns), startWith(this.deviceGridService.getDefaultColumns()), shareReplay(1));
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListExtensionService, deps: [{ token: i0.Injector }, { token: i1$1.Router }, { token: i4.PluginsResolveService }, { token: i3.DeviceGridService }], target: i0.ɵɵFactoryTarget.Injectable }); }
    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListExtensionService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListExtensionService, decorators: [{
            type: Injectable,
            args: [{
                    providedIn: 'root'
                }]
        }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$1.Router }, { type: i4.PluginsResolveService }, { type: i3.DeviceGridService }] });

class DeviceListNavigationFactory {
    constructor() {
        this.nav = new NavigatorNode({
            label: gettext('All devices'),
            path: 'device',
            icon: 'c8y-device-management',
            parent: {
                label: gettext('Devices'),
                icon: 'exchange'
            },
            priority: 2000
        });
    }
    async get() {
        return this.nav;
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListNavigationFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListNavigationFactory }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListNavigationFactory, decorators: [{
            type: Injectable
        }] });

class DeviceListComponent {
    constructor(deviceGridService, bsModalService, deviceListExtensionService) {
        this.deviceGridService = deviceGridService;
        this.bsModalService = bsModalService;
        this.GRID_CONFIG_KEY = 'device-grid-all';
        this.count$ = this.deviceGridService.getTotal({});
        this.columns$ = deviceListExtensionService.items$;
    }
    getGridConfigContext() {
        return {
            key: this.GRID_CONFIG_KEY,
            defaultColumns: this.deviceGridService.getDefaultColumns(),
            legacyConfigKey: 'all-devices-columns-meta_',
            legacyFilterKey: 'all-devices-columns-config'
        };
    }
    async createSmartGroup() {
        const initialState = {
            configKey: this.GRID_CONFIG_KEY,
            deviceQuery: this.deviceQueryStringOutput
        };
        this.bsModalService.show(AddSmartGroupComponent, {
            class: 'modal-sm',
            ariaDescribedby: 'modal-body',
            ariaLabelledBy: 'modal-title',
            ignoreBackdropClick: true,
            keyboard: false,
            initialState
        });
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListComponent, deps: [{ token: i3.DeviceGridService }, { token: i1.BsModalService }, { token: DeviceListExtensionService }], target: i0.ɵɵFactoryTarget.Component }); }
    static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: DeviceListComponent, isStandalone: true, selector: "c8y-device-list", providers: [
            {
                provide: DATA_GRID_CONFIGURATION_STRATEGY,
                useClass: UserPreferencesConfigurationStrategy
            },
            {
                provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,
                useExisting: DeviceListComponent
            }
        ], ngImport: i0, template: "<c8y-title>\n  {{ 'All devices' | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'exchange'\"\n    [label]=\"'Devices' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-device-management'\"\n    [label]=\"'All devices' | translate\"\n  ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Add smart group' | translate }}\"\n    (click)=\"createSmartGroup()\"\n  >\n    <i c8yIcon=\"c8y-group-smart\"></i>\n    {{ 'Add smart group' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-help\n  src=\"/docs/device-management-application/viewing-all-devices/#viewing-all-devices\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n  <c8y-device-grid\n    [columns]=\"columns$ | async\"\n    [infiniteScroll]=\"(count$ | async) === undefined ? 'auto' : undefined\"\n    (onDeviceQueryStringChange)=\"deviceQueryStringOutput = $event\"\n    c8yProductExperience\n    [actionName]=\"'allDevices'\"\n  ></c8y-device-grid>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListComponent, decorators: [{
            type: Component,
            args: [{ selector: 'c8y-device-list', providers: [
                        {
                            provide: DATA_GRID_CONFIGURATION_STRATEGY,
                            useClass: UserPreferencesConfigurationStrategy
                        },
                        {
                            provide: DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER,
                            useExisting: DeviceListComponent
                        }
                    ], imports: [
                        TitleComponent,
                        BreadcrumbComponent,
                        BreadcrumbItemComponent,
                        ActionBarItemComponent,
                        IconDirective,
                        HelpComponent,
                        DeviceGridComponent,
                        ProductExperienceDirective,
                        C8yTranslatePipe,
                        AsyncPipe
                    ], template: "<c8y-title>\n  {{ 'All devices' | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'exchange'\"\n    [label]=\"'Devices' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-device-management'\"\n    [label]=\"'All devices' | translate\"\n  ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Add smart group' | translate }}\"\n    (click)=\"createSmartGroup()\"\n  >\n    <i c8yIcon=\"c8y-group-smart\"></i>\n    {{ 'Add smart group' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-help\n  src=\"/docs/device-management-application/viewing-all-devices/#viewing-all-devices\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n  <c8y-device-grid\n    [columns]=\"columns$ | async\"\n    [infiniteScroll]=\"(count$ | async) === undefined ? 'auto' : undefined\"\n    (onDeviceQueryStringChange)=\"deviceQueryStringOutput = $event\"\n    c8yProductExperience\n    [actionName]=\"'allDevices'\"\n  ></c8y-device-grid>\n</div>\n" }]
        }], ctorParameters: () => [{ type: i3.DeviceGridService }, { type: i1.BsModalService }, { type: DeviceListExtensionService }] });

class ActionControlsFactory {
    constructor(deviceGridService) {
        this.deviceGridService = deviceGridService;
    }
    get() {
        return {
            actionControls: [
                {
                    type: BuiltInActionType.Delete,
                    priority: -Infinity,
                    callback: async (item, reload) => {
                        await this.deviceGridService.delete(item);
                        reload(false);
                    }
                }
            ],
            matchesGrid(_, context) {
                return context?.key === 'device-grid-all';
            }
        };
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActionControlsFactory, deps: [{ token: i3.DeviceGridService }], target: i0.ɵɵFactoryTarget.Injectable }); }
    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActionControlsFactory, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ActionControlsFactory, decorators: [{
            type: Injectable,
            args: [{ providedIn: 'root' }]
        }], ctorParameters: () => [{ type: i3.DeviceGridService }] });

class DevicesBreadcrumbFactory {
    constructor() {
        this.contextRouteService = inject(ContextRouteService);
    }
    async get(route) {
        const routeContext = this.contextRouteService.getContextData(route);
        if (!routeContext) {
            return;
        }
        const { context, contextData } = routeContext;
        const { routeConfig } = route.snapshot;
        if (context === ViewContext.Device ||
            routeConfig?.context === ViewContext.Device) {
            const breadcrumb = { items: [] };
            const breadcrumbItems = [];
            breadcrumbItems.push({
                label: gettext('Devices'),
                icon: 'exchange'
            });
            breadcrumbItems.push({
                label: gettext('All devices'),
                path: '/device'
            });
            const name = contextData?.name;
            if (!!name) {
                breadcrumbItems.push({ label: name });
            }
            const label = routeConfig?.label;
            if (!!label) {
                breadcrumbItems.push({ label });
            }
            breadcrumb.items = breadcrumbItems;
            return breadcrumb;
        }
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DevicesBreadcrumbFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DevicesBreadcrumbFactory }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DevicesBreadcrumbFactory, decorators: [{
            type: Injectable
        }] });

const deviceListRoutes = [
    {
        path: 'device',
        component: DeviceListComponent
    }
];
class DeviceListModule {
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: DeviceListModule, imports: [CoreModule,
            CommonModule,
            DeviceGridModule,
            PopoverModule,
            TooltipModule, i1$1.RouterModule, DeviceListComponent,
            AddSmartGroupComponent] }); }
    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListModule, providers: [
            hookNavigator(DeviceListNavigationFactory),
            hookBreadcrumb(DevicesBreadcrumbFactory),
            hookDataGridActionControls(ActionControlsFactory)
        ], imports: [CoreModule,
            CommonModule,
            DeviceGridModule,
            PopoverModule,
            TooltipModule,
            RouterModule.forChild(deviceListRoutes),
            DeviceListComponent,
            AddSmartGroupComponent] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: DeviceListModule, decorators: [{
            type: NgModule,
            args: [{
                    imports: [
                        CoreModule,
                        CommonModule,
                        DeviceGridModule,
                        PopoverModule,
                        TooltipModule,
                        RouterModule.forChild(deviceListRoutes),
                        DeviceListComponent,
                        AddSmartGroupComponent
                    ],
                    exports: [],
                    providers: [
                        hookNavigator(DeviceListNavigationFactory),
                        hookBreadcrumb(DevicesBreadcrumbFactory),
                        hookDataGridActionControls(ActionControlsFactory)
                    ]
                }]
        }] });

/**
 * Generated bundle index. Do not edit.
 */

export { AddSmartGroupComponent, DeviceListComponent, DeviceListExtensionService, DeviceListModule, DeviceListNavigationFactory, DevicesBreadcrumbFactory, hookDeviceListColumns };
//# sourceMappingURL=c8y-ngx-components-device-list.mjs.map
