UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

110 lines 14.3 kB
import { NgModule, inject } from '@angular/core'; import { RouterModule } from '@angular/router'; import { SupportsBrandingService } from './supports-branding.service'; import { hookNavigator, HookProviderTypes, hookTab } from '@c8y/ngx-components'; import { BrandingTabFactory, lightThemeTabName, genericTabName } from './branding-tab.factory'; import { StoreBrandingService } from '@c8y/ngx-components/branding/shared/data'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; export const BRANDING_EDIT_CHILD_ROUTES = [ { path: '', pathMatch: 'full', redirectTo: 'generic' }, { path: 'generic', loadComponent: () => import('@c8y/ngx-components/branding/shared/lazy').then(m => m.BrandingFormComponent), data: { tabName: genericTabName } }, { path: 'light', loadComponent: () => import('@c8y/ngx-components/branding/shared/lazy').then(m => m.BrandingThemeFormComponent), data: { tabName: lightThemeTabName } } ]; export const BRANDING_ROUTING = [ { path: 'branding-editor', canActivate: [SupportsBrandingService], children: [ { path: '', pathMatch: 'full', loadComponent: () => import('@c8y/ngx-components/branding/shared/lazy').then(m => m.BrandingComponent) }, { path: ':name', resolve: { branding: ((route, _state) => { return inject(StoreBrandingService).getBrandingOptionsForVersion(route.params.name); }), tags: (async (route, _state) => { const store = inject(StoreBrandingService); const { variants } = await store.loadBrandingVariants(); return variants.find(v => v?.tags?.includes(route.params.name))?.tags; }), fallbackBranding: (async (_route, _state) => { try { const store = inject(StoreBrandingService); const fallbackBranding = await store.getBrandingOptionsForVersion('fallback'); return fallbackBranding; } catch (e) { return {}; } }) }, children: [ { path: '', pathMatch: 'full', redirectTo: 'edit' }, { path: 'edit', loadComponent: () => import('@c8y/ngx-components/branding/shared/lazy').then(m => m.EditBrandingRouterOutletComponent), children: BRANDING_EDIT_CHILD_ROUTES } ] } ] }, // Redirects for legacy paths from old angularJS implementation // allows to keep old links working and to use the old branding manager (as long as we still ship it) when the new plugins are removed from admin app { path: 'enterprise/branding', pathMatch: 'full', redirectTo: 'branding-editor' }, { path: 'branding', pathMatch: 'full', redirectTo: 'branding-editor' } ]; export class SharedBrandingModule { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedBrandingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SharedBrandingModule, imports: [i1.RouterModule] }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedBrandingModule, providers: [ // providerType: HookProviderTypes.ExistingProvider is used to ensure that the hook is only applied once even if the module is imported multiple times hookNavigator(SupportsBrandingService, { providerType: HookProviderTypes.ExistingProvider }), hookTab(BrandingTabFactory) ], imports: [RouterModule.forChild(BRANDING_ROUTING)] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedBrandingModule, decorators: [{ type: NgModule, args: [{ imports: [RouterModule.forChild(BRANDING_ROUTING)], providers: [ // providerType: HookProviderTypes.ExistingProvider is used to ensure that the hook is only applied once even if the module is imported multiple times hookNavigator(SupportsBrandingService, { providerType: HookProviderTypes.ExistingProvider }), hookTab(BrandingTabFactory) ] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWJyYW5kaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2JyYW5kaW5nL3NoYXJlZC9zaGFyZWQtYnJhbmRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFDTCxZQUFZLEVBTWIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRixPQUFPLEVBR0wsb0JBQW9CLEVBQ3JCLE1BQU0sMENBQTBDLENBQUM7OztBQUVsRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBWTtJQUNqRDtRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLE1BQU07UUFDakIsVUFBVSxFQUFFLFNBQVM7S0FDdEI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUNsQixNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7UUFDdkYsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUFFLGNBQWM7U0FDeEI7S0FDRjtJQUNEO1FBQ0UsSUFBSSxFQUFFLE9BQU87UUFDYixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztRQUM1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QUFDLGtCQUFrQixDQUFDO1NBQzVCLFlBTFMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQzs7NEZBT3RDLG9CQUFvQjtrQkFSaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQ2xELFNBQVMsRUFBRTt3QkFDVCxzSkFBc0o7d0JBQ3RKLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3dCQUM1RixPQUFPLENBQUMsa0JBQWtCLENBQUM7cUJBQzVCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUm91dGVyTW9kdWxlLFxuICBSb3V0ZSxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUmVzb2x2ZUZuLFxuICBSb3V0ZXNcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1cHBvcnRzQnJhbmRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9zdXBwb3J0cy1icmFuZGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IGhvb2tOYXZpZ2F0b3IsIEhvb2tQcm92aWRlclR5cGVzLCBob29rVGFiIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCcmFuZGluZ1RhYkZhY3RvcnksIGxpZ2h0VGhlbWVUYWJOYW1lLCBnZW5lcmljVGFiTmFtZSB9IGZyb20gJy4vYnJhbmRpbmctdGFiLmZhY3RvcnknO1xuaW1wb3J0IHtcbiAgQnJhbmRpbmdGaWxlRGV0YWlscyxcbiAgQnJhbmRpbmdPcHRpb25zSnNvbixcbiAgU3RvcmVCcmFuZGluZ1NlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9icmFuZGluZy9zaGFyZWQvZGF0YSc7XG5cbmV4cG9ydCBjb25zdCBCUkFORElOR19FRElUX0NISUxEX1JPVVRFUzogUm91dGVbXSA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIHJlZGlyZWN0VG86ICdnZW5lcmljJ1xuICB9LFxuICB7XG4gICAgcGF0aDogJ2dlbmVyaWMnLFxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICBpbXBvcnQoJ0BjOHkvbmd4LWNvbXBvbmVudHMvYnJhbmRpbmcvc2hhcmVkL2xhenknKS50aGVuKG0gPT4gbS5CcmFuZGluZ0Zvcm1Db21wb25lbnQpLFxuICAgIGRhdGE6IHtcbiAgICAgIHRhYk5hbWU6IGdlbmVyaWNUYWJOYW1lXG4gICAgfVxuICB9LFxuICB7XG4gICAgcGF0aDogJ2xpZ2h0JyxcbiAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgaW1wb3J0KCdAYzh5L25neC1jb21wb25lbnRzL2JyYW5kaW5nL3NoYXJlZC9sYXp5JykudGhlbihtID0+IG0uQnJhbmRpbmdUaGVtZUZvcm1Db21wb25lbnQpLFxuICAgIGRhdGE6IHtcbiAgICAgIHRhYk5hbWU6IGxpZ2h0VGhlbWVUYWJOYW1lXG4gICAgfVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgQlJBTkRJTkdfUk9VVElORzogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJ2JyYW5kaW5nLWVkaXRvcicsXG4gICAgY2FuQWN0aXZhdGU6IFtTdXBwb3J0c0JyYW5kaW5nU2VydmljZV0sXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJycsXG4gICAgICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgIGltcG9ydCgnQGM4eS9uZ3gtY29tcG9uZW50cy9icmFuZGluZy9zaGFyZWQvbGF6eScpLnRoZW4obSA9PiBtLkJyYW5kaW5nQ29tcG9uZW50KVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJzpuYW1lJyxcbiAgICAgICAgcmVzb2x2ZToge1xuICAgICAgICAgIGJyYW5kaW5nOiAoKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBfc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpbmplY3QoU3RvcmVCcmFuZGluZ1NlcnZpY2UpLmdldEJyYW5kaW5nT3B0aW9uc0ZvclZlcnNpb24ocm91dGUucGFyYW1zLm5hbWUpO1xuICAgICAgICAgIH0pIGFzIFJlc29sdmVGbjxCcmFuZGluZ0ZpbGVEZXRhaWxzW10+LFxuICAgICAgICAgIHRhZ3M6IChhc3luYyAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIF9zdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoU3RvcmVCcmFuZGluZ1NlcnZpY2UpO1xuICAgICAgICAgICAgY29uc3QgeyB2YXJpYW50cyB9ID0gYXdhaXQgc3RvcmUubG9hZEJyYW5kaW5nVmFyaWFudHMoKTtcbiAgICAgICAgICAgIHJldHVybiB2YXJpYW50cy5maW5kKHYgPT4gdj8udGFncz8uaW5jbHVkZXMocm91dGUucGFyYW1zLm5hbWUpKT8udGFncztcbiAgICAgICAgICB9KSBhcyBSZXNvbHZlRm48c3RyaW5nW10+LFxuICAgICAgICAgIGZhbGxiYWNrQnJhbmRpbmc6IChhc3luYyAoXG4gICAgICAgICAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgICAgICBfc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gaW5qZWN0KFN0b3JlQnJhbmRpbmdTZXJ2aWNlKTtcbiAgICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tCcmFuZGluZyA9IGF3YWl0IHN0b3JlLmdldEJyYW5kaW5nT3B0aW9uc0ZvclZlcnNpb24oJ2ZhbGxiYWNrJyk7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxsYmFja0JyYW5kaW5nO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgYXMgUmVzb2x2ZUZuPEJyYW5kaW5nT3B0aW9uc0pzb24+XG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICAgICAgICAgIHJlZGlyZWN0VG86ICdlZGl0J1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0aDogJ2VkaXQnLFxuICAgICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgaW1wb3J0KCdAYzh5L25neC1jb21wb25lbnRzL2JyYW5kaW5nL3NoYXJlZC9sYXp5JykudGhlbihcbiAgICAgICAgICAgICAgICBtID0+IG0uRWRpdEJyYW5kaW5nUm91dGVyT3V0bGV0Q29tcG9uZW50XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBjaGlsZHJlbjogQlJBTkRJTkdfRURJVF9DSElMRF9ST1VURVNcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIC8vIFJlZGlyZWN0cyBmb3IgbGVnYWN5IHBhdGhzIGZyb20gb2xkIGFuZ3VsYXJKUyBpbXBsZW1lbnRhdGlvblxuICAvLyBhbGxvd3MgdG8ga2VlcCBvbGQgbGlua3Mgd29ya2luZyBhbmQgdG8gdXNlIHRoZSBvbGQgYnJhbmRpbmcgbWFuYWdlciAoYXMgbG9uZyBhcyB3ZSBzdGlsbCBzaGlwIGl0KSB3aGVuIHRoZSBuZXcgcGx1Z2lucyBhcmUgcmVtb3ZlZCBmcm9tIGFkbWluIGFwcFxuICB7XG4gICAgcGF0aDogJ2VudGVycHJpc2UvYnJhbmRpbmcnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIHJlZGlyZWN0VG86ICdicmFuZGluZy1lZGl0b3InXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnYnJhbmRpbmcnLFxuICAgIHBhdGhNYXRjaDogJ2Z1bGwnLFxuICAgIHJlZGlyZWN0VG86ICdicmFuZGluZy1lZGl0b3InXG4gIH1cbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQoQlJBTkRJTkdfUk9VVElORyldLFxuICBwcm92aWRlcnM6IFtcbiAgICAvLyBwcm92aWRlclR5cGU6IEhvb2tQcm92aWRlclR5cGVzLkV4aXN0aW5nUHJvdmlkZXIgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgaG9vayBpcyBvbmx5IGFwcGxpZWQgb25jZSBldmVuIGlmIHRoZSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXNcbiAgICBob29rTmF2aWdhdG9yKFN1cHBvcnRzQnJhbmRpbmdTZXJ2aWNlLCB7IHByb3ZpZGVyVHlwZTogSG9va1Byb3ZpZGVyVHlwZXMuRXhpc3RpbmdQcm92aWRlciB9KSxcbiAgICBob29rVGFiKEJyYW5kaW5nVGFiRmFjdG9yeSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRCcmFuZGluZ01vZHVsZSB7fVxuIl19