import * as i0 from '@angular/core';
import { Injectable, NgModule } from '@angular/core';
import * as i1 from '@c8y/ngx-components';
import { hookTab } from '@c8y/ngx-components';
import { BrandingTabFactory, BRANDING_EDIT_CHILD_ROUTES, SharedBrandingModule } from '@c8y/ngx-components/branding/shared';
import { gettext } from '@c8y/ngx-components/gettext';
import { map } from 'rxjs/operators';

const darkThemeTabName = gettext('Dark theme');
/**
 * Factory for creating the dark theme tab.
 * Extends the BrandingTabFactory to provide the dark theme tab.
 */
class DarkThemeTabFactory extends BrandingTabFactory {
    constructor(options) {
        super();
        this.options = options;
    }
    /**
     * Overrides the `getTabsForVersion` method of `BrandingTabFactory` to provide the dark theme tab.
     */
    getTabsForVersion(name) {
        return [
            {
                path: this.getPathForBranding(name, 'dark'),
                label: darkThemeTabName,
                icon: 'moon',
                priority: 400
            }
        ];
    }
    /**
     * Overrides the `shouldShowTab$` method of `BrandingTabFactory` to show the dark theme tab only if the dark theme is available.
     */
    shouldShowTab$() {
        return this.options.get$('darkThemeAvailable', false, true).pipe(map(value => !!value));
    }
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DarkThemeTabFactory, deps: [{ token: i1.OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
    static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DarkThemeTabFactory, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DarkThemeTabFactory, decorators: [{
            type: Injectable,
            args: [{ providedIn: 'root' }]
        }], ctorParameters: () => [{ type: i1.OptionsService }] });

BRANDING_EDIT_CHILD_ROUTES.push({
    path: 'dark',
    loadComponent: () => import('@c8y/ngx-components/branding/shared/lazy').then(m => m.BrandingThemeFormComponent),
    data: {
        dark: true,
        tabName: darkThemeTabName
    }
});
class DarkThemeModule {
    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DarkThemeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
    static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: DarkThemeModule, imports: [SharedBrandingModule] }); }
    static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DarkThemeModule, providers: [hookTab(DarkThemeTabFactory)], imports: [SharedBrandingModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DarkThemeModule, decorators: [{
            type: NgModule,
            args: [{
                    imports: [SharedBrandingModule],
                    providers: [hookTab(DarkThemeTabFactory)]
                }]
        }] });

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

export { DarkThemeModule };
//# sourceMappingURL=c8y-ngx-components-branding-dark-theme.mjs.map
