import * as i0 from '@angular/core';
import { inject, Injectable, NgModule } from '@angular/core';
import { ContextRouteService, PreviewService, ViewContext, hookTab, hookRoute, hookPreview } from '@c8y/ngx-components';
import { gettext } from '@c8y/ngx-components/gettext';
import { DASHBOARD_DETAILS_TABS_OUTLET_NAME, DASHBOARD_DETAILS_OUTLET } from '@c8y/ngx-components/context-dashboard';
import { ActivatedRoute } from '@angular/router';
import { map } from 'rxjs';

const ADVANCED_TAB_FEATURE_KEY = 'ui.dashboard-details-advanced-tab';

const TAB_ID = 'advanced';
class AdvancedTabFactory {
    constructor() {
        this.activatedRoute = inject(ActivatedRoute);
        this.contextRouteService = inject(ContextRouteService);
        this.betaPreviewService = inject(PreviewService);
    }
    get() {
        return this.betaPreviewService.getState$(ADVANCED_TAB_FEATURE_KEY).pipe(map(state => {
            if (state) {
                const rootContext = this.contextRouteService.getRootContextOfChild(this.activatedRoute);
                if (rootContext === ViewContext.Dashboard) {
                    return [
                        {
                            label: gettext('Import / Export`dashboard configuration`'),
                            icon: 'input-output',
                            priority: 5,
                            path: [{ outlets: { [DASHBOARD_DETAILS_OUTLET]: TAB_ID } }],
                            tabsOutlet: DASHBOARD_DETAILS_TABS_OUTLET_NAME
                        }
                    ];
                }
            }
            return [];
        }));
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedTabFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedTabFactory }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedTabFactory, decorators: [{
            type: Injectable
        }] });

class AdvancedTabRouteGuard {
    constructor() {
        this.betaPreviewService = inject(PreviewService);
    }
    canActivate() {
        return this.betaPreviewService.getState$(ADVANCED_TAB_FEATURE_KEY);
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedTabRouteGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedTabRouteGuard, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedTabRouteGuard, decorators: [{
            type: Injectable,
            args: [{ providedIn: 'root' }]
        }] });

class DashboardDetailsAdvancedTabModule {
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DashboardDetailsAdvancedTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: DashboardDetailsAdvancedTabModule }); }
    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DashboardDetailsAdvancedTabModule, providers: [
            hookTab(AdvancedTabFactory),
            hookRoute([
                {
                    path: TAB_ID,
                    loadComponent: () => import('./c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-L0Ns8oOr.mjs').then(m => m.DashboardDetailsAdvancedTabComponent),
                    outlet: DASHBOARD_DETAILS_OUTLET,
                    context: ViewContext.Dashboard,
                    canActivate: [AdvancedTabRouteGuard]
                }
            ]),
            hookPreview({
                key: ADVANCED_TAB_FEATURE_KEY,
                label: 'Dashboard details - Import / Export tab',
                description: () => import('@c8y/style/markdown-files/dashboard-details-import-export-tab.md').then(m => m.default),
                settings: { reload: true }
            })
        ] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DashboardDetailsAdvancedTabModule, decorators: [{
            type: NgModule,
            args: [{
                    providers: [
                        hookTab(AdvancedTabFactory),
                        hookRoute([
                            {
                                path: TAB_ID,
                                loadComponent: () => import('./c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-L0Ns8oOr.mjs').then(m => m.DashboardDetailsAdvancedTabComponent),
                                outlet: DASHBOARD_DETAILS_OUTLET,
                                context: ViewContext.Dashboard,
                                canActivate: [AdvancedTabRouteGuard]
                            }
                        ]),
                        hookPreview({
                            key: ADVANCED_TAB_FEATURE_KEY,
                            label: 'Dashboard details - Import / Export tab',
                            description: () => import('@c8y/style/markdown-files/dashboard-details-import-export-tab.md').then(m => m.default),
                            settings: { reload: true }
                        })
                    ]
                }]
        }] });

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

export { DashboardDetailsAdvancedTabModule };
//# sourceMappingURL=c8y-ngx-components-dashboard-details-advanced-tab.mjs.map
