@updevs/components 1.0.0-alpha.35 → 1.0.0-alpha.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,6 @@ import * as pt from '../../assets/i18n/pt.json';
12
12
  import { FooterModule } from '../../partials/footer/footer.module';
13
13
  import { HeaderModule } from '../../partials/header/header.module';
14
14
  import { VerticalSidebarLayoutComponent } from './vertical-sidebar-layout.component';
15
- import { FooterCopyrightDirective } from '../../partials/footer/footer-copyright.directive';
16
15
  import { SidebarComponent } from '../../partials/sidebar/sidebar.component';
17
16
  import { PageHeaderComponent } from '../../partials/page-header/page-header.component';
18
17
  import * as i0 from "@angular/core";
@@ -26,8 +25,7 @@ export class VerticalSidebarLayoutModule {
26
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.NgModule }); }
27
26
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, declarations: [VerticalSidebarLayoutComponent,
28
27
  SidebarComponent,
29
- PageHeaderComponent,
30
- FooterCopyrightDirective], imports: [CommonModule,
28
+ PageHeaderComponent], imports: [CommonModule,
31
29
  RouterModule,
32
30
  TranslocoModule,
33
31
  UpdIconsModule,
@@ -38,8 +36,7 @@ export class VerticalSidebarLayoutModule {
38
36
  FooterModule,
39
37
  HeaderModule], exports: [VerticalSidebarLayoutComponent,
40
38
  SidebarComponent,
41
- PageHeaderComponent,
42
- FooterCopyrightDirective] }); }
39
+ PageHeaderComponent] }); }
43
40
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, imports: [CommonModule,
44
41
  RouterModule,
45
42
  TranslocoModule,
@@ -69,15 +66,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
69
66
  declarations: [
70
67
  VerticalSidebarLayoutComponent,
71
68
  SidebarComponent,
72
- PageHeaderComponent,
73
- FooterCopyrightDirective
69
+ PageHeaderComponent
74
70
  ],
75
71
  exports: [
76
72
  VerticalSidebarLayoutComponent,
77
73
  SidebarComponent,
78
- PageHeaderComponent,
79
- FooterCopyrightDirective
74
+ PageHeaderComponent
80
75
  ]
81
76
  }]
82
77
  }], ctorParameters: () => [{ type: i1.TranslocoService }] });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtc2lkZWJhci1sYXlvdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGF5b3V0cy92ZXJ0aWNhbC1zaWRlYmFyLWxheW91dC92ZXJ0aWNhbC1zaWRlYmFyLWxheW91dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkUsT0FBTyxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7OztBQTRCdkYsTUFBTSxPQUFPLDJCQUEyQjtJQUNwQyxZQUFZLGdCQUFrQztRQUMxQyxnQkFBZ0IsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQUxRLDJCQUEyQjsrR0FBM0IsMkJBQTJCLGlCQVpoQyw4QkFBOEI7WUFDOUIsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQix3QkFBd0IsYUFmeEIsWUFBWTtZQUNaLFlBQVk7WUFDWixlQUFlO1lBQ2YsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixZQUFZO1lBQ1osWUFBWSxhQVNaLDhCQUE4QjtZQUM5QixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLHdCQUF3QjsrR0FHbkIsMkJBQTJCLFlBeEJoQyxZQUFZO1lBQ1osWUFBWTtZQUNaLGVBQWU7WUFDZixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixZQUFZOzsyRkFlUCwyQkFBMkI7a0JBMUJ2QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixZQUFZO3FCQUNmO29CQUNELFlBQVksRUFBRTt3QkFDViw4QkFBOEI7d0JBQzlCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQix3QkFBd0I7cUJBQzNCO29CQUNELE9BQU8sRUFBRTt3QkFDTCw4QkFBOEI7d0JBQzlCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQix3QkFBd0I7cUJBQzNCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXBkSWNvbnNNb2R1bGUgfSBmcm9tICdAdXBkZXZzL2ljb25zJztcbmltcG9ydCB7IFVwZENvcmVMYXlvdXRNb2R1bGUgfSBmcm9tICdAdXBkZXZzL3Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgVXBkQnV0dG9uTW9kdWxlIH0gZnJvbSAnQHVwZGV2cy9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBVcGRMaW5rTW9kdWxlIH0gZnJvbSAnQHVwZGV2cy9jb21wb25lbnRzL2xpbmsnO1xuaW1wb3J0IHsgVXBkRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcblxuaW1wb3J0ICogYXMgZW4gZnJvbSAnLi4vLi4vYXNzZXRzL2kxOG4vZW4uanNvbic7XG5pbXBvcnQgKiBhcyBwdCBmcm9tICcuLi8uLi9hc3NldHMvaTE4bi9wdC5qc29uJztcbmltcG9ydCB7IEZvb3Rlck1vZHVsZSB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL2Zvb3Rlci9mb290ZXIubW9kdWxlJztcbmltcG9ydCB7IEhlYWRlck1vZHVsZSB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL2hlYWRlci9oZWFkZXIubW9kdWxlJztcbmltcG9ydCB7IFZlcnRpY2FsU2lkZWJhckxheW91dENvbXBvbmVudCB9IGZyb20gJy4vdmVydGljYWwtc2lkZWJhci1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvb3RlckNvcHlyaWdodERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL2Zvb3Rlci9mb290ZXItY29weXJpZ2h0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGFydGlhbHMvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGFydGlhbHMvcGFnZS1oZWFkZXIvcGFnZS1oZWFkZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBUcmFuc2xvY29Nb2R1bGUsXG4gICAgICAgIFVwZEljb25zTW9kdWxlLFxuICAgICAgICBVcGRDb3JlTGF5b3V0TW9kdWxlLFxuICAgICAgICBVcGRCdXR0b25Nb2R1bGUsXG4gICAgICAgIFVwZExpbmtNb2R1bGUsXG4gICAgICAgIFVwZERyb3Bkb3duTW9kdWxlLFxuICAgICAgICBGb290ZXJNb2R1bGUsXG4gICAgICAgIEhlYWRlck1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIFZlcnRpY2FsU2lkZWJhckxheW91dENvbXBvbmVudCxcbiAgICAgICAgU2lkZWJhckNvbXBvbmVudCxcbiAgICAgICAgUGFnZUhlYWRlckNvbXBvbmVudCxcbiAgICAgICAgRm9vdGVyQ29weXJpZ2h0RGlyZWN0aXZlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIFZlcnRpY2FsU2lkZWJhckxheW91dENvbXBvbmVudCxcbiAgICAgICAgU2lkZWJhckNvbXBvbmVudCxcbiAgICAgICAgUGFnZUhlYWRlckNvbXBvbmVudCxcbiAgICAgICAgRm9vdGVyQ29weXJpZ2h0RGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBWZXJ0aWNhbFNpZGViYXJMYXlvdXRNb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UpIHtcbiAgICAgICAgdHJhbnNsb2NvU2VydmljZS5zZXRGYWxsYmFja0xhbmdGb3JNaXNzaW5nVHJhbnNsYXRpb24oeyBmYWxsYmFja0xhbmc6ICdlbicgfSk7XG4gICAgICAgIHRyYW5zbG9jb1NlcnZpY2Uuc2V0VHJhbnNsYXRpb24oZW4sICdlbicpO1xuICAgICAgICB0cmFuc2xvY29TZXJ2aWNlLnNldFRyYW5zbGF0aW9uKHB0LCAncHQnKTtcbiAgICB9XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtc2lkZWJhci1sYXlvdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvbGF5b3V0cy92ZXJ0aWNhbC1zaWRlYmFyLWxheW91dC92ZXJ0aWNhbC1zaWRlYmFyLWxheW91dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkUsT0FBTyxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7OztBQTBCdkYsTUFBTSxPQUFPLDJCQUEyQjtJQUNwQyxZQUFZLGdCQUFrQztRQUMxQyxnQkFBZ0IsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQUxRLDJCQUEyQjsrR0FBM0IsMkJBQTJCLGlCQVZoQyw4QkFBOEI7WUFDOUIsZ0JBQWdCO1lBQ2hCLG1CQUFtQixhQWRuQixZQUFZO1lBQ1osWUFBWTtZQUNaLGVBQWU7WUFDZixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixZQUFZLGFBUVosOEJBQThCO1lBQzlCLGdCQUFnQjtZQUNoQixtQkFBbUI7K0dBR2QsMkJBQTJCLFlBdEJoQyxZQUFZO1lBQ1osWUFBWTtZQUNaLGVBQWU7WUFDZixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixZQUFZOzsyRkFhUCwyQkFBMkI7a0JBeEJ2QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixZQUFZO3FCQUNmO29CQUNELFlBQVksRUFBRTt3QkFDViw4QkFBOEI7d0JBQzlCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsOEJBQThCO3dCQUM5QixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjtxQkFDdEI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVcGRJY29uc01vZHVsZSB9IGZyb20gJ0B1cGRldnMvaWNvbnMnO1xuaW1wb3J0IHsgVXBkQ29yZUxheW91dE1vZHVsZSB9IGZyb20gJ0B1cGRldnMvc2RrL2xheW91dCc7XG5pbXBvcnQgeyBVcGRCdXR0b25Nb2R1bGUgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IFVwZExpbmtNb2R1bGUgfSBmcm9tICdAdXBkZXZzL2NvbXBvbmVudHMvbGluayc7XG5pbXBvcnQgeyBVcGREcm9wZG93bk1vZHVsZSB9IGZyb20gJ0B1cGRldnMvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xuXG5pbXBvcnQgKiBhcyBlbiBmcm9tICcuLi8uLi9hc3NldHMvaTE4bi9lbi5qc29uJztcbmltcG9ydCAqIGFzIHB0IGZyb20gJy4uLy4uL2Fzc2V0cy9pMThuL3B0Lmpzb24nO1xuaW1wb3J0IHsgRm9vdGVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vcGFydGlhbHMvZm9vdGVyL2Zvb3Rlci5tb2R1bGUnO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vcGFydGlhbHMvaGVhZGVyL2hlYWRlci5tb2R1bGUnO1xuaW1wb3J0IHsgVmVydGljYWxTaWRlYmFyTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi92ZXJ0aWNhbC1zaWRlYmFyLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL3BhZ2UtaGVhZGVyL3BhZ2UtaGVhZGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgVHJhbnNsb2NvTW9kdWxlLFxuICAgICAgICBVcGRJY29uc01vZHVsZSxcbiAgICAgICAgVXBkQ29yZUxheW91dE1vZHVsZSxcbiAgICAgICAgVXBkQnV0dG9uTW9kdWxlLFxuICAgICAgICBVcGRMaW5rTW9kdWxlLFxuICAgICAgICBVcGREcm9wZG93bk1vZHVsZSxcbiAgICAgICAgRm9vdGVyTW9kdWxlLFxuICAgICAgICBIZWFkZXJNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBWZXJ0aWNhbFNpZGViYXJMYXlvdXRDb21wb25lbnQsXG4gICAgICAgIFNpZGViYXJDb21wb25lbnQsXG4gICAgICAgIFBhZ2VIZWFkZXJDb21wb25lbnRcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgVmVydGljYWxTaWRlYmFyTGF5b3V0Q29tcG9uZW50LFxuICAgICAgICBTaWRlYmFyQ29tcG9uZW50LFxuICAgICAgICBQYWdlSGVhZGVyQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBWZXJ0aWNhbFNpZGViYXJMYXlvdXRNb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UpIHtcbiAgICAgICAgdHJhbnNsb2NvU2VydmljZS5zZXRGYWxsYmFja0xhbmdGb3JNaXNzaW5nVHJhbnNsYXRpb24oeyBmYWxsYmFja0xhbmc6ICdlbicgfSk7XG4gICAgICAgIHRyYW5zbG9jb1NlcnZpY2Uuc2V0VHJhbnNsYXRpb24oZW4sICdlbicpO1xuICAgICAgICB0cmFuc2xvY29TZXJ2aWNlLnNldFRyYW5zbGF0aW9uKHB0LCAncHQnKTtcbiAgICB9XG59XG4iXX0=
@@ -1,6 +1,5 @@
1
- import { Component, ContentChild, TemplateRef, HostBinding, ViewEncapsulation } from '@angular/core';
2
- import { BaseComponent } from '@updevs/sdk/layout';
3
- import { FooterCopyrightDirective } from './footer-copyright.directive';
1
+ import { Component, HostBinding, ViewEncapsulation, inject } from '@angular/core';
2
+ import { BaseComponent, LayoutService } from '@updevs/sdk/layout';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "@angular/common";
6
5
  import * as i2 from "@jsverse/transloco";
@@ -24,6 +23,7 @@ export class FooterComponent extends BaseComponent {
24
23
  * Current year.
25
24
  */
26
25
  this.currentYear = new Date().getFullYear();
26
+ this.layoutService = inject(LayoutService);
27
27
  this.baseWrapperClasses = 'footer d-print-none';
28
28
  }
29
29
  ngOnInit() {
@@ -40,16 +40,13 @@ export class FooterComponent extends BaseComponent {
40
40
  this.wrapperClasses = `${this.baseWrapperClasses}${stickyBottomCls}${transparentCls}`;
41
41
  }
42
42
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FooterComponent, selector: "upd-footer", host: { properties: { "class": "this.wrapperClasses" } }, queries: [{ propertyName: "footerCopyrightTemplate", first: true, predicate: FooterCopyrightDirective, descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n @if (!!footerCopyrightTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerCopyrightTemplate\"></ng-container>\n } @else {\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], encapsulation: i0.ViewEncapsulation.None }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FooterComponent, selector: "upd-footer", host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], encapsulation: i0.ViewEncapsulation.None }); }
44
44
  }
45
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterComponent, decorators: [{
46
46
  type: Component,
47
- args: [{ selector: 'upd-footer', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n @if (!!footerCopyrightTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerCopyrightTemplate\"></ng-container>\n } @else {\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n }\n </div>\n </div>\n</div>\n" }]
47
+ args: [{ selector: 'upd-footer', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n" }]
48
48
  }], propDecorators: { wrapperClasses: [{
49
49
  type: HostBinding,
50
50
  args: ['class']
51
- }], footerCopyrightTemplate: [{
52
- type: ContentChild,
53
- args: [FooterCopyrightDirective, { read: TemplateRef, static: true }]
54
51
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sYXlvdXQvc3JjL3BhcnRpYWxzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvcGFydGlhbHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsV0FBVyxFQUlYLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFReEUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQU5sRDs7UUFPMEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFHMUM7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckI7O1dBRUc7UUFDSCxVQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUN4Qjs7V0FFRztRQUNILGdCQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQU0vQix1QkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztLQWlCdEQ7SUFmRyxRQUFRO1FBQ0osSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEYsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQzFGLENBQUM7OEdBekNRLGVBQWU7a0dBQWYsZUFBZSxpS0FFVix3QkFBd0IsMkJBQVUsV0FBVyx1RkN2Qi9ELGtoREFtQ0E7OzJGRGRhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0ksWUFBWSxpQkFHUCxpQkFBaUIsQ0FBQyxJQUFJOzhCQUdmLGNBQWM7c0JBQW5DLFdBQVc7dUJBQUMsT0FBTztnQkFDeUQsdUJBQXVCO3NCQUFuRyxZQUFZO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE9uSW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpbmtNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ0B1cGRldnMvc2RrL2xheW91dCc7XG5cbmltcG9ydCB7IEZvb3RlckNvcHlyaWdodERpcmVjdGl2ZSB9IGZyb20gJy4vZm9vdGVyLWNvcHlyaWdodC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1mb290ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvb3Rlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm9vdGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd3JhcHBlckNsYXNzZXMgPSAnJztcbiAgICBAQ29udGVudENoaWxkKEZvb3RlckNvcHlyaWdodERpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pIGZvb3RlckNvcHlyaWdodFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGZvb3RlciB3aWxsIGFsd2F5cyBiZSBzaG93bi5cbiAgICAgKi9cbiAgICBpc1N0aWNreSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGZvb3RlciBpcyB0cmFuc3BhcmVudCBvciBub3QuXG4gICAgICovXG4gICAgaXNUcmFuc3BhcmVudCA9IHRydWU7XG4gICAgLyoqXG4gICAgICogTGlua3MuXG4gICAgICovXG4gICAgbGlua3M6IExpbmtNb2RlbFtdID0gW107XG4gICAgLyoqXG4gICAgICogQ3VycmVudCB5ZWFyLlxuICAgICAqL1xuICAgIGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIC8qKlxuICAgICAqIFZlcnNpb24gb2YgdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqL1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGJhc2VXcmFwcGVyQ2xhc3NlcyA9ICdmb290ZXIgZC1wcmludC1ub25lJztcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVdyYXBwZXJDbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoISFjaGFuZ2VzWydpc1N0aWNreSddLmN1cnJlbnRWYWx1ZSB8fCAhIWNoYW5nZXNbJ2lzVHJhbnNwYXJlbnQnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlV3JhcHBlckNsYXNzZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlV3JhcHBlckNsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0aWNreUJvdHRvbUNscyA9IHRoaXMuaXNTdGlja3kgPyAnIHN0aWNreS1ib3R0b20nIDogJyc7XG4gICAgICAgIGNvbnN0IHRyYW5zcGFyZW50Q2xzID0gdGhpcy5pc1RyYW5zcGFyZW50ID8gJyBmb290ZXItdHJhbnNwYXJlbnQnIDogJyc7XG4gICAgICAgIHRoaXMud3JhcHBlckNsYXNzZXMgPSBgJHt0aGlzLmJhc2VXcmFwcGVyQ2xhc3Nlc30ke3N0aWNreUJvdHRvbUNsc30ke3RyYW5zcGFyZW50Q2xzfWA7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci14bFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgdGV4dC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtcm93LXJldmVyc2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy1hdXRvIG1zLWxnLWF1dG9cIj5cbiAgICAgICAgICAgIEBpZiAobGlua3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtaW5saW5lIGxpc3QtaW5saW5lLWRvdHMgbWItMFwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChsaW5rIG9mIGxpbmtzOyB0cmFjayBsaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWlubGluZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fVwiIHRhcmdldD1cInt7bGluay50YXJnZXR9fVwiIGNsYXNzPVwibGluay1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsaW5rLnRleHRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1sZy1hdXRvIG10LTMgbXQtbGctMFwiPlxuICAgICAgICAgICAgQGlmICghIWZvb3RlckNvcHlyaWdodFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJDb3B5cmlnaHRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1pbmxpbmUgbGlzdC1pbmxpbmUtZG90cyBtYi0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtaW5saW5lLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyBwcmVmaXg6ICdVcERldnMuRm9vdGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ1ByZWZpeCcpIH19IHt7IHQoJ1N5bWJvbCcpIH19IHt7IGN1cnJlbnRZZWFyIH19IHt7IHQoJ1N1ZmZpeCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgQGlmICghIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtaW5saW5lLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2ZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sYXlvdXQvc3JjL3BhcnRpYWxzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvcGFydGlhbHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBb0MsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBILE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFRbEUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQU5sRDs7UUFPMEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFMUM7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckI7O1dBRUc7UUFDSCxVQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUN4Qjs7V0FFRztRQUNILGdCQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQU05QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV2Qyx1QkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztLQWlCdEQ7SUFmRyxRQUFRO1FBQ0osSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEYsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQzFGLENBQUM7OEdBMUNRLGVBQWU7a0dBQWYsZUFBZSx3SkNWNUIsMm5EQXVDQTs7MkZEN0JhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0ksWUFBWSxpQkFHUCxpQkFBaUIsQ0FBQyxJQUFJOzhCQUdmLGNBQWM7c0JBQW5DLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaW5rTW9kZWwgfSBmcm9tICdAdXBkZXZzL3Nkay9jb3JlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIExheW91dFNlcnZpY2UgfSBmcm9tICdAdXBkZXZzL3Nkay9sYXlvdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1mb290ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvb3Rlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm9vdGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd3JhcHBlckNsYXNzZXMgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGZvb3RlciB3aWxsIGFsd2F5cyBiZSBzaG93bi5cbiAgICAgKi9cbiAgICBpc1N0aWNreSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGZvb3RlciBpcyB0cmFuc3BhcmVudCBvciBub3QuXG4gICAgICovXG4gICAgaXNUcmFuc3BhcmVudCA9IHRydWU7XG4gICAgLyoqXG4gICAgICogTGlua3MuXG4gICAgICovXG4gICAgbGlua3M6IExpbmtNb2RlbFtdID0gW107XG4gICAgLyoqXG4gICAgICogQ3VycmVudCB5ZWFyLlxuICAgICAqL1xuICAgIGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIC8qKlxuICAgICAqIFZlcnNpb24gb2YgdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqL1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICByZWFkb25seSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSBiYXNlV3JhcHBlckNsYXNzZXMgPSAnZm9vdGVyIGQtcHJpbnQtbm9uZSc7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVXcmFwcGVyQ2xhc3NlcygpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhY2hhbmdlc1snaXNTdGlja3knXS5jdXJyZW50VmFsdWUgfHwgISFjaGFuZ2VzWydpc1RyYW5zcGFyZW50J10uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVdyYXBwZXJDbGFzc2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVdyYXBwZXJDbGFzc2VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGlja3lCb3R0b21DbHMgPSB0aGlzLmlzU3RpY2t5ID8gJyBzdGlja3ktYm90dG9tJyA6ICcnO1xuICAgICAgICBjb25zdCB0cmFuc3BhcmVudENscyA9IHRoaXMuaXNUcmFuc3BhcmVudCA/ICcgZm9vdGVyLXRyYW5zcGFyZW50JyA6ICcnO1xuICAgICAgICB0aGlzLndyYXBwZXJDbGFzc2VzID0gYCR7dGhpcy5iYXNlV3JhcHBlckNsYXNzZXN9JHtzdGlja3lCb3R0b21DbHN9JHt0cmFuc3BhcmVudENsc31gO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXIteGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHRleHQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXJvdy1yZXZlcnNlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctYXV0byBtcy1sZy1hdXRvXCI+XG4gICAgICAgICAgICBAaWYgKCEhbGF5b3V0U2VydmljZS5yaWdodEZvb3RlcigpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsYXlvdXRTZXJ2aWNlLnJpZ2h0Rm9vdGVyKCkhXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAobGlua3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtaW5saW5lIGxpc3QtaW5saW5lLWRvdHMgbWItMFwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChsaW5rIG9mIGxpbmtzOyB0cmFjayBsaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWlubGluZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fVwiIHRhcmdldD1cInt7bGluay50YXJnZXR9fVwiIGNsYXNzPVwibGluay1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsaW5rLnRleHRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1sZy1hdXRvIG10LTMgbXQtbGctMFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1pbmxpbmUgbGlzdC1pbmxpbmUtZG90cyBtYi0wXCI+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1pbmxpbmUtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdDsgcHJlZml4OiAnVXBEZXZzLkZvb3RlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ1ByZWZpeCcpIH19IHt7IHQoJ1N5bWJvbCcpIH19IHt7IGN1cnJlbnRZZWFyIH19IHt7IHQoJ1N1ZmZpeCcpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgQGlmICghIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1pbmxpbmUtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG5cbiAgICAgICAgICAgIEBpZiAoISFsYXlvdXRTZXJ2aWNlLmxlZnRGb290ZXIoKSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGF5b3V0U2VydmljZS5sZWZ0Rm9vdGVyKCkhXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,4 +1,3 @@
1
- export * from './footer-copyright.directive';
2
1
  export * from './footer.component';
3
2
  export * from './footer.module';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sYXlvdXQvc3JjL3BhcnRpYWxzL2Zvb3Rlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mb290ZXItY29weXJpZ2h0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvb3Rlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb290ZXIubW9kdWxlJztcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sYXlvdXQvc3JjL3BhcnRpYWxzL2Zvb3Rlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9vdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvb3Rlci5tb2R1bGUnO1xuIl19
@@ -15,14 +15,22 @@ export class SidebarComponent extends BaseComponent {
15
15
  this.theme = 'dark';
16
16
  this.menuItems = [];
17
17
  this.textService = inject(TextService);
18
+ this.currentRoute = '';
18
19
  this.router = inject(Router);
19
20
  this.menuService = inject(MenuService);
20
21
  }
21
22
  ngOnInit() {
23
+ this.currentRoute = this.router.url;
22
24
  this.menuItems = this.menuService.generateMenu();
23
- const menuRefreshSub = this.menuService.refreshSubject.subscribe(() => this.menuItems = [...this.menuService.generateMenu()]);
24
- const routerSub = this.router.events.pipe(filter(event => event instanceof NavigationStart)).subscribe(event => this.updateActiveRoute(event.url));
25
- this.updateActiveRoute(this.router.url);
25
+ const menuRefreshSub = this.menuService.refreshSubject.subscribe(() => {
26
+ this.menuItems = [...this.menuService.generateMenu()];
27
+ this.updateActiveRoute();
28
+ });
29
+ const routerSub = this.router.events.pipe(filter(event => event instanceof NavigationStart)).subscribe(event => {
30
+ this.currentRoute = event.url;
31
+ this.updateActiveRoute();
32
+ });
33
+ this.updateActiveRoute();
26
34
  this.addSubscriptions(routerSub, menuRefreshSub);
27
35
  }
28
36
  onMenuItemClick(item) {
@@ -70,11 +78,11 @@ export class SidebarComponent extends BaseComponent {
70
78
  }
71
79
  return undefined;
72
80
  }
73
- updateActiveRoute(newPath) {
81
+ updateActiveRoute() {
74
82
  this.resetMenuState(this.menuItems);
75
83
  let item;
76
84
  for (const mi of this.menuItems) {
77
- item = this.findActiveNode(mi, newPath);
85
+ item = this.findActiveNode(mi, this.currentRoute);
78
86
  if (!!item) {
79
87
  break;
80
88
  }
@@ -112,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
112
120
  type: HostBinding,
113
121
  args: ['attr.data-bs-theme']
114
122
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGF5b3V0L3NyYy9wYXJ0aWFscy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvcGFydGlhbHMvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUMsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFROUIsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWE7SUFObkQ7O1FBTzBCLG1CQUFjLEdBQUcseUNBQXlDLENBQUM7UUFDOUMsVUFBSyxHQUFHLE1BQU0sQ0FBQztRQUVsRCxjQUFTLEdBQXFCLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBK0d0RDtJQTdHRyxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2pE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dkIsQ0FBQztJQUNMLENBQUM7OEdBdEhRLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHdLQ2Q3Qix1bkhBd0VBOzsyRkQxRGEsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNJLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSTs4QkFHZixjQUFjO3NCQUFuQyxXQUFXO3VCQUFDLE9BQU87Z0JBQ2UsS0FBSztzQkFBdkMsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvblN0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRleHRTZXJ2aWNlIH0gZnJvbSAnQHVwZGV2cy9zZGsnO1xuaW1wb3J0IHsgT3B0aW9uYWxUeXBlIH0gZnJvbSAnQHVwZGV2cy9zZGsvdHlwZXMnO1xuaW1wb3J0IHsgUm91dGVEYXRhTW9kZWwsIE1lbnVTZXJ2aWNlIH0gZnJvbSAnQHVwZGV2cy9zZGsvcm91dGVzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdAdXBkZXZzL3Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXBkLXNpZGViYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHdyYXBwZXJDbGFzc2VzID0gJ25hdmJhciBuYXZiYXItdmVydGljYWwgbmF2YmFyLWV4cGFuZC1sZyc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtYnMtdGhlbWUnKSB0aGVtZSA9ICdkYXJrJztcblxuICAgIG1lbnVJdGVtczogUm91dGVEYXRhTW9kZWxbXSA9IFtdO1xuICAgIHJlYWRvbmx5IHRleHRTZXJ2aWNlID0gaW5qZWN0KFRleHRTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51U2VydmljZSA9IGluamVjdChNZW51U2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSB0aGlzLm1lbnVTZXJ2aWNlLmdlbmVyYXRlTWVudSgpO1xuICAgICAgICBjb25zdCBtZW51UmVmcmVzaFN1YiA9IHRoaXMubWVudVNlcnZpY2UucmVmcmVzaFN1YmplY3Quc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcyA9IFsuLi50aGlzLm1lbnVTZXJ2aWNlLmdlbmVyYXRlTWVudSgpXVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByb3V0ZXJTdWIgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydClcbiAgICAgICAgKS5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy51cGRhdGVBY3RpdmVSb3V0ZSgoPE5hdmlnYXRpb25TdGFydD5ldmVudCkudXJsKSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVSb3V0ZSh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgICB0aGlzLmFkZFN1YnNjcmlwdGlvbnMocm91dGVyU3ViLCBtZW51UmVmcmVzaFN1Yik7XG4gICAgfVxuXG4gICAgb25NZW51SXRlbUNsaWNrKGl0ZW06IFJvdXRlRGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLmlzTG9ja2VkKSB7XG4gICAgICAgICAgICBpZiAoISFpdGVtLmxvY2tlZENsaWNrRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpdGVtLmxvY2tlZENsaWNrRnVuY3Rpb24oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXNldE1lbnVTdGF0ZSh0aGlzLm1lbnVJdGVtcyk7XG5cbiAgICAgICAgaXRlbS5pc0FjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRzKGl0ZW0pO1xuXG4gICAgICAgIGlmICghIWl0ZW0uY2xpY2tGdW5jdGlvbikge1xuICAgICAgICAgICAgaXRlbS5jbGlja0Z1bmN0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCB8fCAwKSA+IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKGl0ZW0uZ2V0RnVsbFBhdGgoKSkudGhlbigpO1xuICAgIH1cblxuICAgIGhhc0NoaWxkcmVuKGl0ZW06IFJvdXRlRGF0YU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoIHx8IDApID4gMDtcbiAgICB9XG5cbiAgICBhc01lbnVJdGVtKGl0ZW06IGFueSk6IFJvdXRlRGF0YU1vZGVsIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gYXMgUm91dGVEYXRhTW9kZWw7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUNsYXNzZXMoaXRlbTogUm91dGVEYXRhTW9kZWwsIGFjdGl2ZUNsYXNzOiBzdHJpbmcsIC4uLmNsYXNzZXM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uY2xhc3NlcyxcbiAgICAgICAgICAgIGl0ZW0uaXNBY3RpdmUgPyBhY3RpdmVDbGFzcyA6ICcnLFxuICAgICAgICAgICAgaXRlbS5pc0xvY2tlZCA/ICdkaXNhYmxlZCcgOiAnJ1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEFjdGl2ZU5vZGUoaXRlbTogUm91dGVEYXRhTW9kZWwsIGZ1bGxQYXRoOiBzdHJpbmcpOiBPcHRpb25hbFR5cGU8Um91dGVEYXRhTW9kZWw+IHtcbiAgICAgICAgaWYgKGl0ZW0uZnVsbFBhdGggPT09IGZ1bGxQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcmVzdWx0ICYmIGkgPCBpdGVtLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5maW5kQWN0aXZlTm9kZShpdGVtLmNoaWxkcmVuW2ldLCBmdWxsUGF0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWN0aXZlUm91dGUobmV3UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRNZW51U3RhdGUodGhpcy5tZW51SXRlbXMpO1xuXG4gICAgICAgIGxldCBpdGVtOiBPcHRpb25hbFR5cGU8Um91dGVEYXRhTW9kZWw+O1xuXG4gICAgICAgIGZvciAoY29uc3QgbWkgb2YgdGhpcy5tZW51SXRlbXMpIHtcbiAgICAgICAgICAgIGl0ZW0gPSB0aGlzLmZpbmRBY3RpdmVOb2RlKG1pLCBuZXdQYXRoKTtcblxuICAgICAgICAgICAgaWYgKCEhaXRlbSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKCEhaXRlbSkge1xuICAgICAgICAgICAgaXRlbS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBpdGVtID0gaXRlbS5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0TWVudVN0YXRlKGl0ZW1zOiBSb3V0ZURhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goaSA9PiB7XG4gICAgICAgICAgICBpLmlzQWN0aXZlID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChpLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0TWVudVN0YXRlKGkuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVBhcmVudHMobWVudUl0ZW06IFJvdXRlRGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGxldCBpdGVtOiBPcHRpb25hbFR5cGU8Um91dGVEYXRhTW9kZWw+ID0gbWVudUl0ZW07XG5cbiAgICAgICAgd2hpbGUgKCEhaXRlbSkge1xuICAgICAgICAgICAgaXRlbS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBpdGVtID0gaXRlbS5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm5hdmJhci10b2dnbGVyXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdmJhci10b2dnbGVyLWljb25cIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGgxIGNsYXNzPVwibmF2YmFyLWJyYW5kIG5hdmJhci1icmFuZC1hdXRvZGFya1wiPlxuICAgICAgICA8YSBocmVmPVwiLlwiPlxuICAgICAgICAgICAgPGltZyB3aWR0aD1cIjExMFwiIGhlaWdodD1cIjMyXCIgY2xhc3M9XCJuYXZiYXItYnJhbmQtaW1hZ2UgdXBkLWJyYW5kLWxvZ29cIiAvPlxuICAgICAgICA8L2E+XG4gICAgPC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdmJhci1uYXYgcHQtbGctM1wiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtZW51SXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIFtjbGFzcy5kcm9wZG93bl09XCJoYXNDaGlsZHJlbihpdGVtKVwiIFtjbGFzcy5hY3RpdmVdPVwiaXRlbS5pc0FjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie21lbnVJdGVtOiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpdGVtVHBsIGxldC1pdGVtPVwibWVudUl0ZW1cIj5cbiAgICA8dXBkLWxpbmsgW2lzTmF2aWdhdGlvbl09XCJ0cnVlXCIgKGNsaWNrZWQpPVwib25NZW51SXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoaXRlbSwgJ3Nob3cnLCBoYXNDaGlsZHJlbihpdGVtKSA/ICdkcm9wZG93bi10b2dnbGUnOicnKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpbmtDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInttZW51SXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3VwZC1saW5rPlxuICAgIEBpZiAoaGFzQ2hpbGRyZW4oaXRlbSkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlsZHJlblRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bWVudUl0ZW06IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsaW5rQ29udGVudCBsZXQtaXRlbT1cIm1lbnVJdGVtXCI+XG4gICAgQGlmICghIWl0ZW0uaWNvbikge1xuICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1saW5rLWljb24gZC1tZC1ub25lIGQtbGctaW5saW5lLWJsb2NrXCI+XG4gICAgICAgICAgICA8dXBkLWljb24gW21vZGVsXT1cIml0ZW0uaWNvblwiPjwvdXBkLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG4gICAgPHNwYW4gY2xhc3M9XCJuYXYtbGluay10aXRsZVwiPnt7IHRleHRTZXJ2aWNlLmdldFRleHQoaXRlbS50aXRsZSkgfX08L3NwYW4+XG4gICAgQGlmIChpdGVtLmlzTG9ja2VkKSB7XG4gICAgICAgIDx1cGQtaWNvbiBjbGFzcz1cIm1zLWF1dG9cIiBbbW9kZWxdPVwie3RhYmxlckljb246ICdsb2NrJ31cIj48L3VwZC1pY29uPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2hpbGRyZW5UcGwgbGV0LWl0ZW09XCJtZW51SXRlbVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgW2NsYXNzLnNob3ddPVwiaXRlbS5pc0FjdGl2ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudS1jb2x1bW5zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBhc01lbnVJdGVtKGl0ZW0pLmNoaWxkcmVuOyB0cmFjayBjaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKCFoYXNDaGlsZHJlbihjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1cGQtbGluayAoY2xpY2tlZCk9XCJvbk1lbnVJdGVtQ2xpY2soY2hpbGQpXCIgW2N1c3RvbUNsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoY2hpbGQsICdhY3RpdmUnLCAnZHJvcGRvd24taXRlbScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaW5rQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bWVudUl0ZW06IGNoaWxkfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91cGQtbGluaz5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cGQtbGluayAoY2xpY2tlZCk9XCJvbk1lbnVJdGVtQ2xpY2soY2hpbGQpXCIgW2N1c3RvbUNsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoY2hpbGQsICdhY3RpdmUnLCAnZHJvcGRvd24taXRlbScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlua0NvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie21lbnVJdGVtOiBjaGlsZH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VwZC1saW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgW2NsYXNzLnNob3ddPVwiY2hpbGQuaXNBY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoZ3JhbmRjaGlsZCBvZiBjaGlsZC5jaGlsZHJlbjsgdHJhY2sgZ3JhbmRjaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwZC1saW5rIChjbGlja2VkKT1cIm9uTWVudUl0ZW1DbGljayhncmFuZGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiZ2V0SXRlbUNsYXNzZXMoZ3JhbmRjaGlsZCwgJ2FjdGl2ZScsICdkcm9wZG93bi1pdGVtJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpbmtDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInttZW51SXRlbTogZ3JhbmRjaGlsZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdXBkLWxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGF5b3V0L3NyYy9wYXJ0aWFscy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xheW91dC9zcmMvcGFydGlhbHMvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUMsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFROUIsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWE7SUFObkQ7O1FBTzBCLG1CQUFjLEdBQUcseUNBQXlDLENBQUM7UUFDOUMsVUFBSyxHQUFHLE1BQU0sQ0FBQztRQUVsRCxjQUFTLEdBQXFCLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuQyxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNULFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FvSHREO0lBbEhHLFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFN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UUFDMUMsSUFBSSxJQUFJLEdBQWlDLFFBQVEsQ0FBQztRQUVsRCxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDOzhHQTVIUSxnQkFBZ0I7a0dBQWhCLGdCQUFnQix3S0NkN0IsdW5IQXdFQTs7MkZEMURhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDSSxhQUFhLGlCQUdSLGlCQUFpQixDQUFDLElBQUk7OEJBR2YsY0FBYztzQkFBbkMsV0FBVzt1QkFBQyxPQUFPO2dCQUNlLEtBQUs7c0JBQXZDLFdBQVc7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgVmlld0VuY2Fwc3VsYXRpb24sIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25TdGFydCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUZXh0U2VydmljZSB9IGZyb20gJ0B1cGRldnMvc2RrJztcbmltcG9ydCB7IE9wdGlvbmFsVHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IFJvdXRlRGF0YU1vZGVsLCBNZW51U2VydmljZSB9IGZyb20gJ0B1cGRldnMvc2RrL3JvdXRlcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1zaWRlYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2lkZWJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSB3cmFwcGVyQ2xhc3NlcyA9ICduYXZiYXIgbmF2YmFyLXZlcnRpY2FsIG5hdmJhci1leHBhbmQtbGcnO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWJzLXRoZW1lJykgdGhlbWUgPSAnZGFyayc7XG5cbiAgICBtZW51SXRlbXM6IFJvdXRlRGF0YU1vZGVsW10gPSBbXTtcbiAgICByZWFkb25seSB0ZXh0U2VydmljZSA9IGluamVjdChUZXh0U2VydmljZSk7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRSb3V0ZSA9ICcnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51U2VydmljZSA9IGluamVjdChNZW51U2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci51cmw7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zID0gdGhpcy5tZW51U2VydmljZS5nZW5lcmF0ZU1lbnUoKTtcbiAgICAgICAgY29uc3QgbWVudVJlZnJlc2hTdWIgPSB0aGlzLm1lbnVTZXJ2aWNlLnJlZnJlc2hTdWJqZWN0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcyA9IFsuLi50aGlzLm1lbnVTZXJ2aWNlLmdlbmVyYXRlTWVudSgpXTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlUm91dGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJvdXRlclN1YiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KVxuICAgICAgICApLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSb3V0ZSA9ICg8TmF2aWdhdGlvblN0YXJ0PmV2ZW50KS51cmw7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVJvdXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlUm91dGUoKTtcbiAgICAgICAgdGhpcy5hZGRTdWJzY3JpcHRpb25zKHJvdXRlclN1YiwgbWVudVJlZnJlc2hTdWIpO1xuICAgIH1cblxuICAgIG9uTWVudUl0ZW1DbGljayhpdGVtOiBSb3V0ZURhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5pc0xvY2tlZCkge1xuICAgICAgICAgICAgaWYgKCEhaXRlbS5sb2NrZWRDbGlja0Z1bmN0aW9uKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5sb2NrZWRDbGlja0Z1bmN0aW9uKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzZXRNZW51U3RhdGUodGhpcy5tZW51SXRlbXMpO1xuXG4gICAgICAgIGl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudXBkYXRlUGFyZW50cyhpdGVtKTtcblxuICAgICAgICBpZiAoISFpdGVtLmNsaWNrRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIGl0ZW0uY2xpY2tGdW5jdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChpdGVtLmNoaWxkcmVuPy5sZW5ndGggfHwgMCkgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShpdGVtLmdldEZ1bGxQYXRoKCkpLnRoZW4oKTtcbiAgICB9XG5cbiAgICBoYXNDaGlsZHJlbihpdGVtOiBSb3V0ZURhdGFNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCB8fCAwKSA+IDA7XG4gICAgfVxuXG4gICAgYXNNZW51SXRlbShpdGVtOiBhbnkpOiBSb3V0ZURhdGFNb2RlbCB7XG4gICAgICAgIHJldHVybiBpdGVtIGFzIFJvdXRlRGF0YU1vZGVsO1xuICAgIH1cblxuICAgIGdldEl0ZW1DbGFzc2VzKGl0ZW06IFJvdXRlRGF0YU1vZGVsLCBhY3RpdmVDbGFzczogc3RyaW5nLCAuLi5jbGFzc2VzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmNsYXNzZXMsXG4gICAgICAgICAgICBpdGVtLmlzQWN0aXZlID8gYWN0aXZlQ2xhc3MgOiAnJyxcbiAgICAgICAgICAgIGl0ZW0uaXNMb2NrZWQgPyAnZGlzYWJsZWQnIDogJydcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRBY3RpdmVOb2RlKGl0ZW06IFJvdXRlRGF0YU1vZGVsLCBmdWxsUGF0aDogc3RyaW5nKTogT3B0aW9uYWxUeXBlPFJvdXRlRGF0YU1vZGVsPiB7XG4gICAgICAgIGlmIChpdGVtLmZ1bGxQYXRoID09PSBmdWxsUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXJlc3VsdCAmJiBpIDwgaXRlbS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZmluZEFjdGl2ZU5vZGUoaXRlbS5jaGlsZHJlbltpXSwgZnVsbFBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUFjdGl2ZVJvdXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0TWVudVN0YXRlKHRoaXMubWVudUl0ZW1zKTtcblxuICAgICAgICBsZXQgaXRlbTogT3B0aW9uYWxUeXBlPFJvdXRlRGF0YU1vZGVsPjtcblxuICAgICAgICBmb3IgKGNvbnN0IG1pIG9mIHRoaXMubWVudUl0ZW1zKSB7XG4gICAgICAgICAgICBpdGVtID0gdGhpcy5maW5kQWN0aXZlTm9kZShtaSwgdGhpcy5jdXJyZW50Um91dGUpO1xuXG4gICAgICAgICAgICBpZiAoISFpdGVtKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoISFpdGVtKSB7XG4gICAgICAgICAgICBpdGVtLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnBhcmVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRNZW51U3RhdGUoaXRlbXM6IFJvdXRlRGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgaXRlbXMuZm9yRWFjaChpID0+IHtcbiAgICAgICAgICAgIGkuaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGkuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRNZW51U3RhdGUoaS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUGFyZW50cyhtZW51SXRlbTogUm91dGVEYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbGV0IGl0ZW06IE9wdGlvbmFsVHlwZTxSb3V0ZURhdGFNb2RlbD4gPSBtZW51SXRlbTtcblxuICAgICAgICB3aGlsZSAoISFpdGVtKSB7XG4gICAgICAgICAgICBpdGVtLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnBhcmVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibmF2YmFyLXRvZ2dsZXJcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmF2YmFyLXRvZ2dsZXItaWNvblwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8aDEgY2xhc3M9XCJuYXZiYXItYnJhbmQgbmF2YmFyLWJyYW5kLWF1dG9kYXJrXCI+XG4gICAgICAgIDxhIGhyZWY9XCIuXCI+XG4gICAgICAgICAgICA8aW1nIHdpZHRoPVwiMTEwXCIgaGVpZ2h0PVwiMzJcIiBjbGFzcz1cIm5hdmJhci1icmFuZC1pbWFnZSB1cGQtYnJhbmQtbG9nb1wiIC8+XG4gICAgICAgIDwvYT5cbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzZSBuYXZiYXItY29sbGFwc2VcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwibmF2YmFyLW5hdiBwdC1sZy0zXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIG1lbnVJdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgW2NsYXNzLmRyb3Bkb3duXT1cImhhc0NoaWxkcmVuKGl0ZW0pXCIgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLmlzQWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bWVudUl0ZW06IGl0ZW19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UcGwgbGV0LWl0ZW09XCJtZW51SXRlbVwiPlxuICAgIDx1cGQtbGluayBbaXNOYXZpZ2F0aW9uXT1cInRydWVcIiAoY2xpY2tlZCk9XCJvbk1lbnVJdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhpdGVtLCAnc2hvdycsIGhhc0NoaWxkcmVuKGl0ZW0pID8gJ2Ryb3Bkb3duLXRvZ2dsZSc6JycpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlua0NvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie21lbnVJdGVtOiBpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvdXBkLWxpbms+XG4gICAgQGlmIChoYXNDaGlsZHJlbihpdGVtKSkge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaWxkcmVuVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInttZW51SXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpbmtDb250ZW50IGxldC1pdGVtPVwibWVudUl0ZW1cIj5cbiAgICBAaWYgKCEhaXRlbS5pY29uKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWxpbmstaWNvbiBkLW1kLW5vbmUgZC1sZy1pbmxpbmUtYmxvY2tcIj5cbiAgICAgICAgICAgIDx1cGQtaWNvbiBbbW9kZWxdPVwiaXRlbS5pY29uXCI+PC91cGQtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgIH1cbiAgICA8c3BhbiBjbGFzcz1cIm5hdi1saW5rLXRpdGxlXCI+e3sgdGV4dFNlcnZpY2UuZ2V0VGV4dChpdGVtLnRpdGxlKSB9fTwvc3Bhbj5cbiAgICBAaWYgKGl0ZW0uaXNMb2NrZWQpIHtcbiAgICAgICAgPHVwZC1pY29uIGNsYXNzPVwibXMtYXV0b1wiIFttb2RlbF09XCJ7dGFibGVySWNvbjogJ2xvY2snfVwiPjwvdXBkLWljb24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjaGlsZHJlblRwbCBsZXQtaXRlbT1cIm1lbnVJdGVtXCI+XG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBbY2xhc3Muc2hvd109XCJpdGVtLmlzQWN0aXZlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51LWNvbHVtbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51LWNvbHVtblwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGFzTWVudUl0ZW0oaXRlbSkuY2hpbGRyZW47IHRyYWNrIGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWhhc0NoaWxkcmVuKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHVwZC1saW5rIChjbGlja2VkKT1cIm9uTWVudUl0ZW1DbGljayhjaGlsZClcIiBbY3VzdG9tQ2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhjaGlsZCwgJ2FjdGl2ZScsICdkcm9wZG93bi1pdGVtJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpbmtDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInttZW51SXRlbTogY2hpbGR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VwZC1saW5rPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwZC1saW5rIChjbGlja2VkKT1cIm9uTWVudUl0ZW1DbGljayhjaGlsZClcIiBbY3VzdG9tQ2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhjaGlsZCwgJ2FjdGl2ZScsICdkcm9wZG93bi1pdGVtJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaW5rQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bWVudUl0ZW06IGNoaWxkfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdXBkLWxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBbY2xhc3Muc2hvd109XCJjaGlsZC5pc0FjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChncmFuZGNoaWxkIG9mIGNoaWxkLmNoaWxkcmVuOyB0cmFjayBncmFuZGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXBkLWxpbmsgKGNsaWNrZWQpPVwib25NZW51SXRlbUNsaWNrKGdyYW5kY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCJnZXRJdGVtQ2xhc3NlcyhncmFuZGNoaWxkLCAnYWN0aXZlJywgJ2Ryb3Bkb3duLWl0ZW0nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlua0NvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie21lbnVJdGVtOiBncmFuZGNoaWxkfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91cGQtbGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Directive, TemplateRef, Component, ViewEncapsulation, HostBinding, ContentChild, NgModule, viewChild, ElementRef, input, computed, signal, InjectionToken, Injectable, Inject, model } from '@angular/core';
2
+ import { inject, Directive, Component, ViewEncapsulation, HostBinding, NgModule, viewChild, ElementRef, input, computed, signal, InjectionToken, Injectable, Inject, model } from '@angular/core';
3
3
  import { BaseComponent, LayoutService, UpdCoreLayoutConfigService, PreferencesStorage, UpdCoreLayoutModule } from '@updevs/sdk/layout';
4
4
  import * as i1 from '@angular/common';
5
5
  import { CommonModule } from '@angular/common';
@@ -47,17 +47,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
47
47
  type: Directive
48
48
  }] });
49
49
 
50
- class FooterCopyrightDirective {
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterCopyrightDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
52
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: FooterCopyrightDirective, selector: "[updFooterCopyright]", ngImport: i0 }); }
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterCopyrightDirective, decorators: [{
55
- type: Directive,
56
- args: [{
57
- selector: '[updFooterCopyright]'
58
- }]
59
- }] });
60
-
61
50
  class FooterComponent extends BaseComponent {
62
51
  constructor() {
63
52
  super(...arguments);
@@ -78,6 +67,7 @@ class FooterComponent extends BaseComponent {
78
67
  * Current year.
79
68
  */
80
69
  this.currentYear = new Date().getFullYear();
70
+ this.layoutService = inject(LayoutService);
81
71
  this.baseWrapperClasses = 'footer d-print-none';
82
72
  }
83
73
  ngOnInit() {
@@ -94,17 +84,14 @@ class FooterComponent extends BaseComponent {
94
84
  this.wrapperClasses = `${this.baseWrapperClasses}${stickyBottomCls}${transparentCls}`;
95
85
  }
96
86
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FooterComponent, selector: "upd-footer", host: { properties: { "class": "this.wrapperClasses" } }, queries: [{ propertyName: "footerCopyrightTemplate", first: true, predicate: FooterCopyrightDirective, descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n @if (!!footerCopyrightTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerCopyrightTemplate\"></ng-container>\n } @else {\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], encapsulation: i0.ViewEncapsulation.None }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FooterComponent, selector: "upd-footer", host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], encapsulation: i0.ViewEncapsulation.None }); }
98
88
  }
99
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterComponent, decorators: [{
100
90
  type: Component,
101
- args: [{ selector: 'upd-footer', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n @if (!!footerCopyrightTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerCopyrightTemplate\"></ng-container>\n } @else {\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n }\n </div>\n </div>\n</div>\n" }]
91
+ args: [{ selector: 'upd-footer', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n" }]
102
92
  }], propDecorators: { wrapperClasses: [{
103
93
  type: HostBinding,
104
94
  args: ['class']
105
- }], footerCopyrightTemplate: [{
106
- type: ContentChild,
107
- args: [FooterCopyrightDirective, { read: TemplateRef, static: true }]
108
95
  }] } });
109
96
 
110
97
  class FooterModule {
@@ -522,14 +509,22 @@ class SidebarComponent extends BaseComponent {
522
509
  this.theme = 'dark';
523
510
  this.menuItems = [];
524
511
  this.textService = inject(TextService);
512
+ this.currentRoute = '';
525
513
  this.router = inject(Router);
526
514
  this.menuService = inject(MenuService);
527
515
  }
528
516
  ngOnInit() {
517
+ this.currentRoute = this.router.url;
529
518
  this.menuItems = this.menuService.generateMenu();
530
- const menuRefreshSub = this.menuService.refreshSubject.subscribe(() => this.menuItems = [...this.menuService.generateMenu()]);
531
- const routerSub = this.router.events.pipe(filter(event => event instanceof NavigationStart)).subscribe(event => this.updateActiveRoute(event.url));
532
- this.updateActiveRoute(this.router.url);
519
+ const menuRefreshSub = this.menuService.refreshSubject.subscribe(() => {
520
+ this.menuItems = [...this.menuService.generateMenu()];
521
+ this.updateActiveRoute();
522
+ });
523
+ const routerSub = this.router.events.pipe(filter(event => event instanceof NavigationStart)).subscribe(event => {
524
+ this.currentRoute = event.url;
525
+ this.updateActiveRoute();
526
+ });
527
+ this.updateActiveRoute();
533
528
  this.addSubscriptions(routerSub, menuRefreshSub);
534
529
  }
535
530
  onMenuItemClick(item) {
@@ -577,11 +572,11 @@ class SidebarComponent extends BaseComponent {
577
572
  }
578
573
  return undefined;
579
574
  }
580
- updateActiveRoute(newPath) {
575
+ updateActiveRoute() {
581
576
  this.resetMenuState(this.menuItems);
582
577
  let item;
583
578
  for (const mi of this.menuItems) {
584
- item = this.findActiveNode(mi, newPath);
579
+ item = this.findActiveNode(mi, this.currentRoute);
585
580
  if (!!item) {
586
581
  break;
587
582
  }
@@ -650,8 +645,7 @@ class VerticalSidebarLayoutModule {
650
645
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, deps: [{ token: i1$1.TranslocoService }], target: i0.ɵɵFactoryTarget.NgModule }); }
651
646
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, declarations: [VerticalSidebarLayoutComponent,
652
647
  SidebarComponent,
653
- PageHeaderComponent,
654
- FooterCopyrightDirective], imports: [CommonModule,
648
+ PageHeaderComponent], imports: [CommonModule,
655
649
  RouterModule,
656
650
  TranslocoModule,
657
651
  UpdIconsModule,
@@ -662,8 +656,7 @@ class VerticalSidebarLayoutModule {
662
656
  FooterModule,
663
657
  HeaderModule], exports: [VerticalSidebarLayoutComponent,
664
658
  SidebarComponent,
665
- PageHeaderComponent,
666
- FooterCopyrightDirective] }); }
659
+ PageHeaderComponent] }); }
667
660
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, imports: [CommonModule,
668
661
  RouterModule,
669
662
  TranslocoModule,
@@ -693,14 +686,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
693
686
  declarations: [
694
687
  VerticalSidebarLayoutComponent,
695
688
  SidebarComponent,
696
- PageHeaderComponent,
697
- FooterCopyrightDirective
689
+ PageHeaderComponent
698
690
  ],
699
691
  exports: [
700
692
  VerticalSidebarLayoutComponent,
701
693
  SidebarComponent,
702
- PageHeaderComponent,
703
- FooterCopyrightDirective
694
+ PageHeaderComponent
704
695
  ]
705
696
  }]
706
697
  }], ctorParameters: () => [{ type: i1$1.TranslocoService }] });
@@ -937,5 +928,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
937
928
  * Generated bundle index. Do not edit.
938
929
  */
939
930
 
940
- export { AuthFlowModule, AuthFlowRoutingModule, BasePageComponent, BlankLayoutComponent, BlankLayoutModule, FooterComponent, FooterCopyrightDirective, FooterModule, HeaderComponent, HeaderModule, LoggedOutComponent, LoginComponent, OauthCallbackComponent, PageHeaderComponent, SidebarComponent, UpdLayoutConfigService, UpdLayoutModule, VerticalSidebarLayoutComponent, VerticalSidebarLayoutModule, routes };
931
+ export { AuthFlowModule, AuthFlowRoutingModule, BasePageComponent, BlankLayoutComponent, BlankLayoutModule, FooterComponent, FooterModule, HeaderComponent, HeaderModule, LoggedOutComponent, LoginComponent, OauthCallbackComponent, PageHeaderComponent, SidebarComponent, UpdLayoutConfigService, UpdLayoutModule, VerticalSidebarLayoutComponent, VerticalSidebarLayoutModule, routes };
941
932
  //# sourceMappingURL=updevs-components-layout.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"updevs-components-layout.mjs","sources":["../../../../libs/components/layout/src/abstractions/base-page.component.ts","../../../../libs/components/layout/src/partials/footer/footer-copyright.directive.ts","../../../../libs/components/layout/src/partials/footer/footer.component.ts","../../../../libs/components/layout/src/partials/footer/footer.component.html","../../../../libs/components/layout/src/partials/footer/footer.module.ts","../../../../libs/components/layout/src/partials/header/header.component.ts","../../../../libs/components/layout/src/partials/header/header.component.html","../../../../libs/components/layout/src/partials/header/header.module.ts","../../../../libs/components/layout/src/models/login-page-config.model.ts","../../../../libs/components/layout/src/models/security-layout-config.model.ts","../../../../libs/components/layout/src/models/upd-layout-config.model.ts","../../../../libs/components/layout/src/tools/layout.constants.ts","../../../../libs/components/layout/src/services/upd-layout-config.service.ts","../../../../libs/components/layout/src/abstractions/base.layout.ts","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.component.ts","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.component.html","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.module.ts","../../../../libs/components/layout/src/partials/sidebar/sidebar.component.ts","../../../../libs/components/layout/src/partials/sidebar/sidebar.component.html","../../../../libs/components/layout/src/partials/page-header/page-header.component.ts","../../../../libs/components/layout/src/partials/page-header/page-header.component.html","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts","../../../../libs/components/layout/src/pages/auth-flow/logged-out/logged-out.component.ts","../../../../libs/components/layout/src/pages/auth-flow/logged-out/logged-out.component.html","../../../../libs/components/layout/src/pages/auth-flow/login/login.component.ts","../../../../libs/components/layout/src/pages/auth-flow/login/login.component.html","../../../../libs/components/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts","../../../../libs/components/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html","../../../../libs/components/layout/src/pages/auth-flow/auth-flow-routing.module.ts","../../../../libs/components/layout/src/pages/auth-flow/auth-flow.module.ts","../../../../libs/components/layout/src/upd-layout.module.ts","../../../../libs/components/layout/src/updevs-components-layout.ts"],"sourcesContent":["import { OnDestroy, Directive, inject } from '@angular/core';\nimport { BaseComponent, LayoutService } from '@updevs/sdk/layout';\n\n/**\n * Basic page structure.\n */\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class BasePageComponent extends BaseComponent implements OnDestroy {\n protected readonly _layoutService = inject(LayoutService);\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._layoutService.pageHeader.set(undefined);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[updFooterCopyright]'\n})\nexport class FooterCopyrightDirective {}\n","import {\n Component,\n ContentChild,\n TemplateRef,\n HostBinding,\n OnInit,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { LinkModel } from '@updevs/sdk/core';\nimport { BaseComponent } from '@updevs/sdk/layout';\n\nimport { FooterCopyrightDirective } from './footer-copyright.directive';\n\n@Component({\n selector: 'upd-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class FooterComponent extends BaseComponent implements OnInit, OnChanges {\n @HostBinding('class') wrapperClasses = '';\n @ContentChild(FooterCopyrightDirective, { read: TemplateRef, static: true }) footerCopyrightTemplate?: TemplateRef<any>;\n\n /**\n * Whether the footer will always be shown.\n */\n isSticky = false;\n /**\n * Whether the footer is transparent or not.\n */\n isTransparent = true;\n /**\n * Links.\n */\n links: LinkModel[] = [];\n /**\n * Current year.\n */\n currentYear = new Date().getFullYear();\n /**\n * Version of the application.\n */\n version?: string;\n\n private baseWrapperClasses = 'footer d-print-none';\n\n ngOnInit(): void {\n this.updateWrapperClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!!changes['isSticky'].currentValue || !!changes['isTransparent'].currentValue) {\n this.updateWrapperClasses();\n }\n }\n\n private updateWrapperClasses(): void {\n const stickyBottomCls = this.isSticky ? ' sticky-bottom' : '';\n const transparentCls = this.isTransparent ? ' footer-transparent' : '';\n this.wrapperClasses = `${this.baseWrapperClasses}${stickyBottomCls}${transparentCls}`;\n }\n}\n","<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n @if (!!footerCopyrightTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerCopyrightTemplate\"></ng-container>\n } @else {\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n }\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { FooterComponent } from './footer.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule\n ],\n declarations: [\n FooterComponent\n ],\n exports: [\n FooterComponent\n ]\n})\nexport class FooterModule {}\n","import {\n Component,\n ViewEncapsulation,\n HostBinding,\n OnInit,\n inject,\n computed,\n signal,\n viewChild,\n ElementRef, input\n} from '@angular/core';\nimport { TablerIconsType } from '@updevs/icons';\nimport { TextService } from '@updevs/sdk';\nimport { BaseComponent, LayoutService, PreferencesStorage, UpdCoreLayoutConfigService } from '@updevs/sdk/layout';\nimport { DropdownItem } from '@updevs/components/dropdown';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { NotificationModel, NotificationsService } from '@updevs/sdk/notifications';\nimport { SecurityStorage } from '@updevs/sdk/security';\n\nimport { HeaderStyleType } from './header-style.type';\n\n@Component({\n selector: 'upd-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class HeaderComponent extends BaseComponent implements OnInit {\n @HostBinding('class') get classes(): string {\n return this.wrapperClasses();\n }\n\n languageSwitcherRef = viewChild('languageSwitcherBtn', { read: ElementRef });\n notificationsRef = viewChild('notificationsBtn', { read: ElementRef });\n loggedUserRef = viewChild('loggedUserBtn', { read: ElementRef });\n\n isLanguageSwitcherDropdownOpen = false;\n isNotificationsDropdownOpen = false;\n isLoggedUserDropdownOpen = false;\n\n readonly style = input<HeaderStyleType>('light');\n readonly nextThemeIcon = computed<TablerIconsType>(() => this.currentPreferences()?.isDarkTheme ? 'sun' : 'moon-stars');\n readonly currentNotificationsIcon = computed<TablerIconsType>(() => this.hasNewNotifications() ? 'bell-ringing' : 'bell');\n readonly hasNewNotifications = computed(() => this.currentNotifications().some(n => !n.dateRead));\n readonly languagesOptions = computed<DropdownItem[]>(() => {\n const allLanguagesOptions: DropdownItem[] = [];\n const availableLanguages = (this.coreLayoutConfigService.config.availableLanguages || {});\n\n Object.keys(availableLanguages).forEach(key => {\n allLanguagesOptions.push({\n id: key,\n type: 'default',\n text: availableLanguages[key],\n isActive: this.currentLanguageKey() === key\n });\n });\n\n return allLanguagesOptions;\n });\n readonly loggedUserOptions = computed<DropdownItem[]>(() => {\n const userActions: DropdownItem[] = [];\n\n this.coreLayoutConfigService.config.loggedUserMenuActions.forEach(act => userActions.push({\n id: act.id!(),\n text: act.text!(),\n type: 'default',\n icon: act.iconModel?.()\n }));\n\n return userActions;\n });\n readonly userInfo = computed(() => this.securityStorage.getUserInfo());\n readonly userIdentification = computed(() =>\n !!this.userInfo() ? this.coreLayoutConfigService.config.getUserName(this.userInfo()!) : ''\n );\n readonly userDescription = computed(() =>\n !!this.coreLayoutConfigService.config.getUserDescription\n ? this.coreLayoutConfigService.config.getUserDescription(this.userInfo()!)\n : ''\n );\n readonly shouldBlinkIfNewNotifications = computed(() => !!this.coreLayoutConfigService.config.shouldBlinkIfNewNotifications);\n readonly latestNotifications = computed(() => {\n const unreadNotifications = this.currentNotifications()\n .filter(n => !n.dateRead)\n .sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())\n .slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n const readNotifications = this.currentNotifications()\n .filter(n => !!n.dateRead)\n .sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())\n .slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n\n return [\n ...unreadNotifications,\n ...readNotifications\n ].slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n });\n readonly textService = inject(TextService);\n\n private readonly securityStorage = inject(SecurityStorage);\n private readonly coreLayoutConfigService = inject(UpdCoreLayoutConfigService);\n private readonly layoutService = inject(LayoutService);\n private readonly translocoService = inject(TranslocoService);\n private readonly preferencesStorage = inject(PreferencesStorage);\n private readonly notificationsService = inject(NotificationsService);\n private readonly currentPreferences = this.preferencesStorage.getPreferences();\n private readonly currentNotifications = this.notificationsService.notifications;\n private readonly currentLanguageKey = signal('');\n private readonly wrapperClasses = computed(() => `navbar navbar-expand-md d-none d-lg-flex d-print-none navbar-${this.style()}`);\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly config = computed(() => this.layoutService.mainHeaderConfig());\n\n ngOnInit(): void {\n if (!!this.currentPreferences()?.isDarkTheme) {\n this.layoutService.setDarkMode();\n }\n\n if (!!this.currentPreferences()?.currentLanguageCode) {\n const code = this.currentPreferences()!.currentLanguageCode!;\n\n this.currentLanguageKey.set(code);\n this.translocoService.setActiveLang(code);\n }\n }\n\n switchTheme(): void {\n this.layoutService.toggleDarkMode();\n }\n\n switchLanguage(item: DropdownItem): void {\n this.currentLanguageKey.set(item.id);\n this.translocoService.setActiveLang(item.id);\n this.preferencesStorage.savePreferences({ ...this.currentPreferences(), currentLanguageCode: item.id });\n\n this.isLanguageSwitcherDropdownOpen = false;\n }\n\n selectLoggedUserMenuItem(item: DropdownItem): void {\n const btn = this.coreLayoutConfigService.config.loggedUserMenuActions.find(b => b.id!() === item.id);\n\n if (!!btn?.clickFunction) {\n btn.clickFunction!({ data: this.userInfo() });\n }\n }\n\n readNotification(notification: NotificationModel): void {\n if (!notification.dateRead) {\n this.notificationsService.markAsRead(notification.id);\n }\n\n this.notificationsService.clickOnNotification(notification);\n }\n\n removeNotification(notification: NotificationModel): void {\n this.notificationsService.removeNotifications(notification.id);\n }\n}\n","<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n @if (!!config().showThemeSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon()\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (!!config().showLanguageSwitcher && languagesOptions().length > 0) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLanguageSwitcherDropdownOpen=true\"\n #languageSwitcherBtn>\n <upd-icon tablerIcon=\"language\"></upd-icon>\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLanguageSwitcherDropdownOpen\"\n [dropdownReference]=\"languageSwitcherRef()\" [items]=\"languagesOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isLanguageSwitcherDropdownOpen = $event\" (selectedItem)=\"switchLanguage($event)\">\n </upd-dropdown>\n </div>\n }\n @if (!!config().showNotifications && !!userInfo()) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isNotificationsDropdownOpen = true\"\n #notificationsBtn>\n <upd-icon [tablerIcon]=\"currentNotificationsIcon()\"></upd-icon>\n @if (hasNewNotifications()) {\n <span class=\"badge bg-red\" [class.badge-blink]=\"shouldBlinkIfNewNotifications()\"></span>\n }\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1 dropdown-menu-card\" [isOpen]=\"isNotificationsDropdownOpen\"\n [dropdownReference]=\"notificationsRef()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isNotificationsDropdownOpen = $event\" [minWidth]=\"400\" arrowType=\"right\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">{{ 'UpDevs.NotificationCenter.Title' | transloco }}</h3>\n </div>\n @for (notification of latestNotifications(); track notification) {\n <div class=\"list-group list-group-flush list-group-hoverable\" (click)=\"readNotification(notification)\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\">\n @if (!!notification.dateRead) {\n <span class=\"status-dot d-block\"></span>\n } @else {\n <span class=\"status-dot status-dot-animated bg-primary d-block\"></span>\n }\n </div>\n <div class=\"col text-truncate\">\n <a href=\"javascript:void(0)\" class=\"text-body d-block\"\n [class.fw-bold]=\"!notification.dateRead\">\n {{ textService.getText(notification.title) }}\n </a>\n @if (!!notification.description) {\n <div class=\"d-block text-secondary text-truncate mt-n1\">\n {{ textService.getText(notification.description) }}\n </div>\n }\n </div>\n <div class=\"col-auto\">\n <upd-link [customClasses]=\"['list-group-item-actions']\"\n (clicked)=\"removeNotification(notification)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-link>\n </div>\n </div>\n </div>\n </div>\n } @empty {\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ 'UpDevs.NotificationCenter.NoNotifications' | transloco }}</h1>\n </div>\n }\n </div>\n </upd-dropdown>\n </div>\n }\n </div>\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n }\n\n <div class=\"d-none d-xl-block ps-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n }\n </div>\n @if (!!config().showSearchBar && !!userInfo()) {\n <div class=\"collapse navbar-collapse\">\n <div class=\"me-2\" [class.w-100]=\"config().shouldUseFullSearchBar\">\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"{{'UpDevs.Header.Search' | transloco}}...\">\n </div>\n </form>\n </div>\n </div>\n } @else {\n <div></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { HeaderComponent } from './header.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule,\n UpdIconsModule,\n UpdDropdownModule,\n UpdLinkModule\n ],\n declarations: [\n HeaderComponent\n ],\n exports: [\n HeaderComponent\n ]\n})\nexport class HeaderModule {}\n","import { ButtonModel } from '@updevs/sdk/layout';\nimport { BgColorStyleType, ColorStyleType } from '@updevs/sdk/types';\n\nimport { LoginPageConfig } from './login-page.config';\n\n/**\n * Configuration of the login page layout.\n */\nexport class LoginPageConfigModel implements LoginPageConfig {\n /**\n * Layout of the login page.\n */\n layout: 'centered-box' | 'box-with-picture' | 'cover';\n\n /**\n * Background color of the login box (exclusive with bgStyle).\n * Should be the name of a CSS class.\n */\n bgColor?: string;\n\n /**\n * Background color of the login box (exclusive with bgColor).\n */\n bgStyle?: BgColorStyleType;\n\n /**\n * Color of the border used in the login page.\n */\n borderColor: ColorStyleType;\n\n /**\n * Color of the sign-in button.\n */\n signInButtonColor: ColorStyleType;\n\n /**\n * Color of all links in the login page.\n */\n linksColor: ColorStyleType;\n\n /**\n * Route with the page to recover the user's password.\n */\n recoverPasswordRoute?: string;\n\n /**\n * Route with the page to register a user.\n */\n signUpRoute?: string;\n\n /**\n * Buttons used for social login (google, facebook, etc).\n */\n socialLoginButtons: ButtonModel[] = [];\n\n constructor(init?: LoginPageConfig) {\n Object.assign(this, init);\n\n this.layout = init?.layout || 'centered-box';\n this.borderColor = init?.borderColor || 'primary';\n this.signInButtonColor = init?.signInButtonColor || 'primary';\n this.linksColor = init?.linksColor || this.signInButtonColor;\n\n if (init?.socialLoginButtons) {\n this.socialLoginButtons = init.socialLoginButtons;\n }\n }\n}\n","import { SecurityLayoutConfig } from './security-layout.config';\nimport { LoginPageConfigModel } from './login-page-config.model';\n\n/**\n * Configuration for the pages related to the security.\n */\nexport class SecurityLayoutConfigModel implements SecurityLayoutConfig {\n /**\n * Configuration of the login page.\n */\n loginPage: LoginPageConfigModel;\n\n constructor(init?: SecurityLayoutConfig) {\n this.loginPage = new LoginPageConfigModel(init?.loginPage);\n }\n}\n","import { UpdLayoutConfig } from './upd-layout.config';\nimport { SecurityLayoutConfigModel } from './security-layout-config.model';\n\n/**\n * Layout configuration.\n */\nexport class UpdLayoutConfigModel implements UpdLayoutConfig {\n /**\n * Main menu title.\n */\n menuTitle?: string;\n /**\n * Whether the menu should start expanded.\n */\n shouldMenuStartExpanded?: boolean;\n /**\n * Main application logo.\n */\n mainLogo?: string;\n /**\n * Small application logo.\n */\n smallLogo?: string;\n /**\n * Background image for the logged out page.\n */\n loggedOutBackground?: string;\n /**\n * Whether the default notifications button should be displayed.\n */\n showNotificationsButton?: boolean;\n /**\n * Whether the report error button should be displayed when an exception is thrown by the server.\n */\n displayReportErrorButton?: boolean;\n /**\n * Whether the logged user's menu should be displayed.\n */\n showUserMenu?: boolean;\n /**\n * Whether the fluid layout (less padding) should be used.\n */\n useFluidLayout?: boolean;\n /**\n * Configuration for the pages related to the security.\n */\n securityLayoutConfig: SecurityLayoutConfigModel;\n\n constructor(init?: UpdLayoutConfig) {\n if (init?.mainLogo === undefined) {\n // this.mainLogo = LogoConstants.defaultLogo; // TODO: add images\n }\n\n if (init?.smallLogo === undefined) {\n // this.smallLogo = LogoConstants.smallLogo;\n }\n\n if (init?.loggedOutBackground === undefined) {\n // this.loggedOutBackground = ImageConstants.loggedOutBackground;\n }\n\n this.menuTitle = init?.menuTitle || 'UpDevs';\n this.showNotificationsButton = init?.showNotificationsButton || true;\n this.showUserMenu = init?.showUserMenu || true;\n this.displayReportErrorButton = init?.displayReportErrorButton || false;\n this.useFluidLayout = init?.useFluidLayout || false;\n this.securityLayoutConfig = new SecurityLayoutConfigModel(init?.securityLayoutConfig);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { UpdLayoutConfig } from '../models/upd-layout.config';\n\n/**\n * Layout constants.\n */\nexport class LayoutConstants {\n /**\n * Key to inject the default configuration.\n */\n static defaultOptionsKey = 'upd-layout-default-options';\n\n /**\n * Injection token for the default configuration.\n */\n static defaultOptionsInjectionToken = new InjectionToken<UpdLayoutConfig>(LayoutConstants.defaultOptionsKey);\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { UpdLayoutConfigModel } from '../models/upd-layout-config.model';\nimport { LayoutConstants } from '../tools/layout.constants';\nimport { UpdLayoutConfig } from '../models/upd-layout.config';\n\n/**\n * Layout configuration data.\n */\n@Injectable()\nexport class UpdLayoutConfigService {\n /**\n * Configuration (See: #upsee[p:models, i:UpdCoreLayoutConfigModel]).\n */\n readonly config: UpdLayoutConfigModel;\n\n constructor(@Inject(LayoutConstants.defaultOptionsInjectionToken) layoutConfig: UpdLayoutConfig) {\n this.config = new UpdLayoutConfigModel(layoutConfig);\n }\n}\n","import { BaseComponent, LayoutService } from '@updevs/sdk/layout';\nimport { inject, OnInit, Directive, OnDestroy } from '@angular/core';\n\nimport { UpdLayoutConfigService } from '../services/upd-layout-config.service';\n\n/**\n * Basic layout structure.\n */\n@Directive()\nexport abstract class BaseLayout extends BaseComponent implements OnInit, OnDestroy {\n protected readonly _layoutConfigService = inject(UpdLayoutConfigService);\n protected readonly _layoutService = inject(LayoutService);\n\n ngOnInit(): void {\n if (this._layoutConfigService.config.useFluidLayout) {\n this._layoutService.addBodyClasses('layout-fluid');\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (this._layoutConfigService.config.useFluidLayout) {\n this._layoutService.removeBodyClasses('layout-fluid');\n }\n }\n}\n","import { Component, computed, OnInit } from '@angular/core';\n\nimport { BaseLayout } from '../../abstractions/base.layout';\n\n@Component({\n selector: 'upd-blank-layout',\n templateUrl: './blank-layout.component.html',\n styleUrls: ['./blank-layout.component.scss']\n})\nexport class BlankLayoutComponent extends BaseLayout implements OnInit {\n readonly config = computed(() => this._layoutService.mainHeaderConfig());\n\n override ngOnInit() {\n // Overriding layout fluid from parent.\n }\n}\n","<div class=\"page\" [class.page-center]=\"_layoutService.isPageCentered()\">\n @if (!config().shouldHideTopBarIfBlankLayout) {\n <upd-header [style]=\"'transparent'\"></upd-header>\n }\n\n <router-outlet></router-outlet>\n\n @if (!config().shouldHideFooterIfBlankLayout) {\n <upd-footer></upd-footer>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterOutlet } from '@angular/router';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { TranslocoPipe } from '@jsverse/transloco';\n\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { BlankLayoutComponent } from './blank-layout.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterOutlet,\n TranslocoPipe,\n UpdDropdownModule,\n UpdIconsModule,\n UpdLinkModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n BlankLayoutComponent\n ],\n exports: [\n BlankLayoutComponent\n ]\n})\nexport class BlankLayoutModule {}\n","import { Component, HostBinding, ViewEncapsulation, OnInit, inject } from '@angular/core';\nimport { Router, NavigationStart } from '@angular/router';\nimport { TextService } from '@updevs/sdk';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { RouteDataModel, MenuService } from '@updevs/sdk/routes';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { filter } from 'rxjs';\n\n@Component({\n selector: 'upd-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SidebarComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = 'navbar navbar-vertical navbar-expand-lg';\n @HostBinding('attr.data-bs-theme') theme = 'dark';\n\n menuItems: RouteDataModel[] = [];\n readonly textService = inject(TextService);\n\n private readonly router = inject(Router);\n private readonly menuService = inject(MenuService);\n\n ngOnInit(): void {\n this.menuItems = this.menuService.generateMenu();\n const menuRefreshSub = this.menuService.refreshSubject.subscribe(() =>\n this.menuItems = [...this.menuService.generateMenu()]\n );\n const routerSub = this.router.events.pipe(\n filter(event => event instanceof NavigationStart)\n ).subscribe(event => this.updateActiveRoute((<NavigationStart>event).url));\n\n this.updateActiveRoute(this.router.url);\n this.addSubscriptions(routerSub, menuRefreshSub);\n }\n\n onMenuItemClick(item: RouteDataModel): void {\n if (item.isLocked) {\n if (!!item.lockedClickFunction) {\n item.lockedClickFunction();\n }\n\n return;\n }\n\n this.resetMenuState(this.menuItems);\n\n item.isActive = true;\n\n this.updateParents(item);\n\n if (!!item.clickFunction) {\n item.clickFunction();\n return;\n }\n\n if ((item.children?.length || 0) > 0) {\n return;\n }\n\n this.router.navigate(item.getFullPath()).then();\n }\n\n hasChildren(item: RouteDataModel): boolean {\n return (item.children?.length || 0) > 0;\n }\n\n asMenuItem(item: any): RouteDataModel {\n return item as RouteDataModel;\n }\n\n getItemClasses(item: RouteDataModel, activeClass: string, ...classes: string[]): string[] {\n return [\n ...classes,\n item.isActive ? activeClass : '',\n item.isLocked ? 'disabled' : ''\n ];\n }\n\n private findActiveNode(item: RouteDataModel, fullPath: string): OptionalType<RouteDataModel> {\n if (item.fullPath === fullPath) {\n return item;\n } else if (item.children.length > 0) {\n let result;\n\n for (let i = 0; !result && i < item.children.length; i++) {\n result = this.findActiveNode(item.children[i], fullPath);\n }\n\n return result;\n }\n\n return undefined;\n }\n\n private updateActiveRoute(newPath: string): void {\n this.resetMenuState(this.menuItems);\n\n let item: OptionalType<RouteDataModel>;\n\n for (const mi of this.menuItems) {\n item = this.findActiveNode(mi, newPath);\n\n if (!!item) {\n break;\n }\n }\n\n while (!!item) {\n item.isActive = true;\n item = item.parent;\n }\n }\n\n private resetMenuState(items: RouteDataModel[]): void {\n items.forEach(i => {\n i.isActive = false;\n\n if (i.children.length > 0) {\n this.resetMenuState(i.children);\n }\n });\n }\n\n private updateParents(menuItem: RouteDataModel): void {\n let item: OptionalType<RouteDataModel> = menuItem;\n\n while (!!item) {\n item.isActive = true;\n item = item.parent;\n }\n }\n}\n","<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </h1>\n <div class=\"collapse navbar-collapse\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </li>\n }\n </ul>\n </div>\n</div>\n\n<ng-template #itemTpl let-item=\"menuItem\">\n <upd-link [isNavigation]=\"true\" (clicked)=\"onMenuItemClick(item)\"\n [customClasses]=\"getItemClasses(item, 'show', hasChildren(item) ? 'dropdown-toggle':'')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </upd-link>\n @if (hasChildren(item)) {\n <ng-container [ngTemplateOutlet]=\"childrenTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n }\n</ng-template>\n\n<ng-template #linkContent let-item=\"menuItem\">\n @if (!!item.icon) {\n <span class=\"nav-link-icon d-md-none d-lg-inline-block\">\n <upd-icon [model]=\"item.icon\"></upd-icon>\n </span>\n }\n <span class=\"nav-link-title\">{{ textService.getText(item.title) }}</span>\n @if (item.isLocked) {\n <upd-icon class=\"ms-auto\" [model]=\"{tablerIcon: 'lock'}\"></upd-icon>\n }\n</ng-template>\n\n<ng-template #childrenTpl let-item=\"menuItem\">\n <div class=\"dropdown-menu\" [class.show]=\"item.isActive\">\n <div class=\"dropdown-menu-columns\">\n <div class=\"dropdown-menu-column\">\n @for (child of asMenuItem(item).children; track child) {\n @if (!hasChildren(child)) {\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n } @else {\n <div class=\"dropend\">\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n <div class=\"dropdown-menu\" [class.show]=\"child.isActive\">\n @for (grandchild of child.children; track grandchild) {\n <upd-link (clicked)=\"onMenuItemClick(grandchild)\"\n [customClasses]=\"getItemClasses(grandchild, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: grandchild}\">\n </ng-container>\n </upd-link>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n","import { Component, input } from '@angular/core';\nimport { PageHeaderModel } from '@updevs/sdk/layout';\n\n@Component({\n selector: 'upd-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss']\n})\nexport class PageHeaderComponent {\n model = input.required<PageHeaderModel>();\n}\n","<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model().titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model().title }}\n </h2>\n </div>\n @if (model().actionButtons.length > 0) {\n <div class=\"col-auto ms-auto d-print-none\">\n <div class=\"btn-list\">\n @for (btn of model().actionButtons; track btn) {\n <upd-button [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseLayout } from '../../abstractions/base.layout';\n\n@Component({\n selector: 'upd-vertical-sidebar-layout',\n templateUrl: './vertical-sidebar-layout.component.html',\n styleUrls: ['./vertical-sidebar-layout.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class VerticalSidebarLayoutComponent extends BaseLayout {}\n","<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (!!_layoutService.pageHeader()) {\n <upd-page-header [model]=\"_layoutService.pageHeader()!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from '../../assets/i18n/en.json';\nimport * as pt from '../../assets/i18n/pt.json';\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { VerticalSidebarLayoutComponent } from './vertical-sidebar-layout.component';\nimport { FooterCopyrightDirective } from '../../partials/footer/footer-copyright.directive';\nimport { SidebarComponent } from '../../partials/sidebar/sidebar.component';\nimport { PageHeaderComponent } from '../../partials/page-header/page-header.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n TranslocoModule,\n UpdIconsModule,\n UpdCoreLayoutModule,\n UpdButtonModule,\n UpdLinkModule,\n UpdDropdownModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n VerticalSidebarLayoutComponent,\n SidebarComponent,\n PageHeaderComponent,\n FooterCopyrightDirective\n ],\n exports: [\n VerticalSidebarLayoutComponent,\n SidebarComponent,\n PageHeaderComponent,\n FooterCopyrightDirective\n ]\n})\nexport class VerticalSidebarLayoutModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'upd-logged-out',\n templateUrl: './logged-out.component.html',\n styleUrls: ['./logged-out.component.scss']\n})\nexport class LoggedOutComponent {\n\n}\n","<p>logged-out works!</p>\n","import { Component, inject, OnDestroy, OnInit, model, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { LayoutService } from '@updevs/sdk/layout';\nimport { AuthService } from '@updevs/sdk/security';\nimport { FormRowModel, DynamicFieldType, InputFieldModel } from '@updevs/components/form';\nimport { finalize } from 'rxjs';\n\nimport { UpdLayoutConfigService } from '../../../services/upd-layout-config.service';\n\n@Component({\n selector: 'upd-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n formGroup = model(new FormGroup({}));\n formRows: FormRowModel[] = [];\n isSigningIn = signal(false);\n readonly layoutConfigService = inject(UpdLayoutConfigService);\n readonly config = this.layoutConfigService.config.securityLayoutConfig.loginPage;\n\n get border(): string {\n return `border-${this.config.borderColor}`;\n }\n\n get linkClasses(): string[] {\n return [`link-${this.config.linksColor}`];\n }\n\n private get boxBgColor(): string {\n return this.config.bgColor || (!!this.config.bgStyle ? `bg-${this.config.bgStyle}` : '') || 'bg-white';\n }\n\n private readonly bodyClasses = ['border-top-wide', this.border, 'd-flex', 'flex-column'];\n private readonly router = inject(Router);\n private readonly authService = inject(AuthService);\n private readonly layoutService = inject(LayoutService);\n\n ngOnInit(): void {\n this.layoutService.addBodyClasses(this.boxBgColor);\n\n if (this.config.layout !== 'cover') {\n this.layoutService.addBodyClasses(...this.bodyClasses);\n }\n\n this.formRows = [\n {\n fields: [\n {\n name: 'username',\n type: DynamicFieldType.Input,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.Email', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3)],\n shouldSubmitOnEnter: true\n } as InputFieldModel\n ]\n },\n {\n fields: [\n {\n name: 'password',\n type: DynamicFieldType.Input,\n inputType: 'password',\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.Password', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3)],\n shouldSubmitOnEnter: true\n } as InputFieldModel\n ]\n },\n {\n fields: [\n {\n name: 'rememberMe',\n type: DynamicFieldType.Checkbox,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.RememberMe', isTranslated: false },\n initValue: false\n }\n ]\n }\n ];\n }\n\n ngOnDestroy(): void {\n this.layoutService.removeBodyClasses(this.boxBgColor);\n\n if (this.config.layout !== 'cover') {\n this.layoutService.removeBodyClasses(...this.bodyClasses);\n }\n }\n\n login(): void {\n // TODO: handle remember me\n this.isSigningIn.set(true);\n this.authService.login((this.formGroup().value as any).username, (this.formGroup().value as any).password)\n .pipe(finalize(() => this.isSigningIn.set(false)))\n .subscribe();\n }\n\n goToRecoverPasswordPage(): void {\n this.router.navigate([this.config.recoverPasswordRoute]).then();\n }\n\n goToSignUpPage(): void {\n this.router.navigate([this.config.signUpRoute]).then();\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Login'\">\n <upd-header [style]=\"'transparent'\"></upd-header>\n <div class=\"page page-center\">\n @switch (config.layout) {\n @case ('centered-box') {\n <div class=\"container container-tight py-4\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n }\n @case ('box-with-picture') {\n <div class=\"container container-normal py-4\">\n <div class=\"row align-items-center g-4\">\n <div class=\"col-lg\">\n <div class=\"container-tight\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-lg d-none d-lg-block\">\n <img height=\"300\" class=\"d-block mx-auto upd-right-login-image\" />\n </div>\n </div>\n </div>\n }\n @case ('cover') {\n <div class=\"row g-0 flex-fill\">\n <div class=\"col-12 col-lg-6 col-xl-4 border-top-wide d-flex flex-column justify-content-center\"\n [ngClass]=\"border\">\n <div class=\"container container-tight my-5 px-lg-5\">\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n\n <h2 class=\"h3 text-center mb-3\">\n {{ t('Title') }}\n </h2>\n\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-12 col-lg-6 col-xl-8 d-none d-lg-block\">\n <div class=\"bg-cover h-100 min-vh-100 upd-right-login-cover-image\"></div>\n </div>\n </div>\n }\n }\n </div>\n <upd-footer></upd-footer>\n\n <ng-template #loginCardTpl>\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n <upd-card [removeBorder]=\"true\">\n <div class=\"p-4\">\n <h2 class=\"h2 text-center mb-4\">\n {{ t('Title') }}\n </h2>\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n </upd-card>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </ng-template>\n\n <ng-template #loginFormTpl>\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\" (submitted)=\"login()\"></upd-form>\n <div class=\"form-footer\">\n <upd-button [colorStyle]=\"config.signInButtonColor\" (clicked)=\"login()\" [isLoading]=\"isSigningIn()\"\n customClasses=\"w-100\">\n {{ t('SignIn') }}\n </upd-button>\n @if (!!config.recoverPasswordRoute) {\n <div class=\"d-flex mt-2\">\n <upd-link class=\"ms-auto\" [customClasses]=\"linkClasses\" (clicked)=\"goToRecoverPasswordPage()\">\n {{ t('RecoverPassword') }}\n </upd-link>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #socialLoginTpl>\n @if (config.socialLoginButtons.length > 0) {\n <div class=\"hr-text\">\n {{ t('Or') }}\n </div>\n <div class=\"card-body\">\n <div class=\"row\">\n @for (btn of config.socialLoginButtons; track btn) {\n <div class=\"col\">\n <upd-button [model]=\"btn\"></upd-button>\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n\n <ng-template #headerTpl>\n <div class=\"text-center mb-4\">\n <a href=\".\" class=\"navbar-brand navbar-brand-autodark\">\n <img height=\"36\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </div>\n </ng-template>\n\n <ng-template #noAccountTpl>\n @if (!!config.signUpRoute) {\n <div class=\"text-center text-muted mt-3\">\n {{ t('NoAccountYet') }}\n <upd-link [customClasses]=\"linkClasses\" (clicked)=\"goToSignUpPage()\">{{ t('SignUp') }}</upd-link>\n </div>\n }\n </ng-template>\n</ng-container>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'upd-oauth-callback',\n templateUrl: './oauth-callback.component.html',\n styleUrls: ['./oauth-callback.component.scss']\n})\nexport class OauthCallbackComponent {\n\n}\n","<p>oauth-callback works!</p>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { OauthCallbackComponent } from './oauth-callback/oauth-callback.component';\nimport { LoggedOutComponent } from './logged-out/logged-out.component';\nimport { LoginComponent } from './login/login.component';\n\n/**\n * Auth flow routes.\n */\nexport const routes: Routes = [\n { path: 'oauth/callback', component: OauthCallbackComponent },\n { path: 'logged-out', component: LoggedOutComponent },\n { path: 'login', component: LoginComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { useHash: true })],\n exports: [RouterModule]\n})\nexport class AuthFlowRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCardModule } from '@updevs/components/card';\nimport { UpdFormModule } from '@updevs/components/form';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { LoginComponent } from './login/login.component';\nimport { OauthCallbackComponent } from './oauth-callback/oauth-callback.component';\nimport { LoggedOutComponent } from './logged-out/logged-out.component';\nimport { AuthFlowRoutingModule } from './auth-flow-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n AuthFlowRoutingModule,\n UpdButtonModule,\n UpdIconsModule,\n FormsModule,\n TranslocoDirective,\n UpdLinkModule,\n UpdCardModule,\n UpdFormModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n LoginComponent,\n OauthCallbackComponent,\n LoggedOutComponent\n ],\n exports: [\n LoginComponent,\n OauthCallbackComponent,\n LoggedOutComponent\n ]\n})\nexport class AuthFlowModule {\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdNotificationsModule } from '@updevs/sdk/notifications';\n\nimport { UpdLayoutConfig } from './models/upd-layout.config';\nimport { LayoutConstants } from './tools/layout.constants';\nimport { UpdLayoutConfigService } from './services/upd-layout-config.service';\n\n/**\n * Layout module.\n */\n@NgModule({\n imports: [\n CommonModule,\n UpdCoreLayoutModule,\n UpdNotificationsModule\n ],\n providers: [\n UpdLayoutConfigService\n ]\n})\nexport class UpdLayoutModule {\n /**\n * Sets up the layout module with the provided configuration.\n * @param config Configuration (See: #updsee[p:abstractions, i:UpdCoreLayoutConfig]).\n */\n static forRoot(config: UpdLayoutConfig): ModuleWithProviders<UpdLayoutModule> {\n return {\n ngModule: UpdLayoutModule,\n providers: [\n { provide: LayoutConstants.defaultOptionsInjectionToken, useValue: config }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i4","i2.FooterComponent","i3.HeaderComponent","i4.SidebarComponent","i5.PageHeaderComponent","en","pt","i3","i5","i8.FooterComponent","i9.HeaderComponent"],"mappings":"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"}
1
+ {"version":3,"file":"updevs-components-layout.mjs","sources":["../../../../libs/components/layout/src/abstractions/base-page.component.ts","../../../../libs/components/layout/src/partials/footer/footer.component.ts","../../../../libs/components/layout/src/partials/footer/footer.component.html","../../../../libs/components/layout/src/partials/footer/footer.module.ts","../../../../libs/components/layout/src/partials/header/header.component.ts","../../../../libs/components/layout/src/partials/header/header.component.html","../../../../libs/components/layout/src/partials/header/header.module.ts","../../../../libs/components/layout/src/models/login-page-config.model.ts","../../../../libs/components/layout/src/models/security-layout-config.model.ts","../../../../libs/components/layout/src/models/upd-layout-config.model.ts","../../../../libs/components/layout/src/tools/layout.constants.ts","../../../../libs/components/layout/src/services/upd-layout-config.service.ts","../../../../libs/components/layout/src/abstractions/base.layout.ts","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.component.ts","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.component.html","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.module.ts","../../../../libs/components/layout/src/partials/sidebar/sidebar.component.ts","../../../../libs/components/layout/src/partials/sidebar/sidebar.component.html","../../../../libs/components/layout/src/partials/page-header/page-header.component.ts","../../../../libs/components/layout/src/partials/page-header/page-header.component.html","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts","../../../../libs/components/layout/src/pages/auth-flow/logged-out/logged-out.component.ts","../../../../libs/components/layout/src/pages/auth-flow/logged-out/logged-out.component.html","../../../../libs/components/layout/src/pages/auth-flow/login/login.component.ts","../../../../libs/components/layout/src/pages/auth-flow/login/login.component.html","../../../../libs/components/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts","../../../../libs/components/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html","../../../../libs/components/layout/src/pages/auth-flow/auth-flow-routing.module.ts","../../../../libs/components/layout/src/pages/auth-flow/auth-flow.module.ts","../../../../libs/components/layout/src/upd-layout.module.ts","../../../../libs/components/layout/src/updevs-components-layout.ts"],"sourcesContent":["import { OnDestroy, Directive, inject } from '@angular/core';\nimport { BaseComponent, LayoutService } from '@updevs/sdk/layout';\n\n/**\n * Basic page structure.\n */\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class BasePageComponent extends BaseComponent implements OnDestroy {\n protected readonly _layoutService = inject(LayoutService);\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._layoutService.pageHeader.set(undefined);\n }\n}\n","import { Component, HostBinding, OnInit, OnChanges, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { LinkModel } from '@updevs/sdk/core';\nimport { BaseComponent, LayoutService } from '@updevs/sdk/layout';\n\n@Component({\n selector: 'upd-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class FooterComponent extends BaseComponent implements OnInit, OnChanges {\n @HostBinding('class') wrapperClasses = '';\n\n /**\n * Whether the footer will always be shown.\n */\n isSticky = false;\n /**\n * Whether the footer is transparent or not.\n */\n isTransparent = true;\n /**\n * Links.\n */\n links: LinkModel[] = [];\n /**\n * Current year.\n */\n currentYear = new Date().getFullYear();\n /**\n * Version of the application.\n */\n version?: string;\n\n readonly layoutService = inject(LayoutService);\n\n private baseWrapperClasses = 'footer d-print-none';\n\n ngOnInit(): void {\n this.updateWrapperClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!!changes['isSticky'].currentValue || !!changes['isTransparent'].currentValue) {\n this.updateWrapperClasses();\n }\n }\n\n private updateWrapperClasses(): void {\n const stickyBottomCls = this.isSticky ? ' sticky-bottom' : '';\n const transparentCls = this.isTransparent ? ' footer-transparent' : '';\n this.wrapperClasses = `${this.baseWrapperClasses}${stickyBottomCls}${transparentCls}`;\n }\n}\n","<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { FooterComponent } from './footer.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule\n ],\n declarations: [\n FooterComponent\n ],\n exports: [\n FooterComponent\n ]\n})\nexport class FooterModule {}\n","import {\n Component,\n ViewEncapsulation,\n HostBinding,\n OnInit,\n inject,\n computed,\n signal,\n viewChild,\n ElementRef, input\n} from '@angular/core';\nimport { TablerIconsType } from '@updevs/icons';\nimport { TextService } from '@updevs/sdk';\nimport { BaseComponent, LayoutService, PreferencesStorage, UpdCoreLayoutConfigService } from '@updevs/sdk/layout';\nimport { DropdownItem } from '@updevs/components/dropdown';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { NotificationModel, NotificationsService } from '@updevs/sdk/notifications';\nimport { SecurityStorage } from '@updevs/sdk/security';\n\nimport { HeaderStyleType } from './header-style.type';\n\n@Component({\n selector: 'upd-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class HeaderComponent extends BaseComponent implements OnInit {\n @HostBinding('class') get classes(): string {\n return this.wrapperClasses();\n }\n\n languageSwitcherRef = viewChild('languageSwitcherBtn', { read: ElementRef });\n notificationsRef = viewChild('notificationsBtn', { read: ElementRef });\n loggedUserRef = viewChild('loggedUserBtn', { read: ElementRef });\n\n isLanguageSwitcherDropdownOpen = false;\n isNotificationsDropdownOpen = false;\n isLoggedUserDropdownOpen = false;\n\n readonly style = input<HeaderStyleType>('light');\n readonly nextThemeIcon = computed<TablerIconsType>(() => this.currentPreferences()?.isDarkTheme ? 'sun' : 'moon-stars');\n readonly currentNotificationsIcon = computed<TablerIconsType>(() => this.hasNewNotifications() ? 'bell-ringing' : 'bell');\n readonly hasNewNotifications = computed(() => this.currentNotifications().some(n => !n.dateRead));\n readonly languagesOptions = computed<DropdownItem[]>(() => {\n const allLanguagesOptions: DropdownItem[] = [];\n const availableLanguages = (this.coreLayoutConfigService.config.availableLanguages || {});\n\n Object.keys(availableLanguages).forEach(key => {\n allLanguagesOptions.push({\n id: key,\n type: 'default',\n text: availableLanguages[key],\n isActive: this.currentLanguageKey() === key\n });\n });\n\n return allLanguagesOptions;\n });\n readonly loggedUserOptions = computed<DropdownItem[]>(() => {\n const userActions: DropdownItem[] = [];\n\n this.coreLayoutConfigService.config.loggedUserMenuActions.forEach(act => userActions.push({\n id: act.id!(),\n text: act.text!(),\n type: 'default',\n icon: act.iconModel?.()\n }));\n\n return userActions;\n });\n readonly userInfo = computed(() => this.securityStorage.getUserInfo());\n readonly userIdentification = computed(() =>\n !!this.userInfo() ? this.coreLayoutConfigService.config.getUserName(this.userInfo()!) : ''\n );\n readonly userDescription = computed(() =>\n !!this.coreLayoutConfigService.config.getUserDescription\n ? this.coreLayoutConfigService.config.getUserDescription(this.userInfo()!)\n : ''\n );\n readonly shouldBlinkIfNewNotifications = computed(() => !!this.coreLayoutConfigService.config.shouldBlinkIfNewNotifications);\n readonly latestNotifications = computed(() => {\n const unreadNotifications = this.currentNotifications()\n .filter(n => !n.dateRead)\n .sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())\n .slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n const readNotifications = this.currentNotifications()\n .filter(n => !!n.dateRead)\n .sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())\n .slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n\n return [\n ...unreadNotifications,\n ...readNotifications\n ].slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n });\n readonly textService = inject(TextService);\n\n private readonly securityStorage = inject(SecurityStorage);\n private readonly coreLayoutConfigService = inject(UpdCoreLayoutConfigService);\n private readonly layoutService = inject(LayoutService);\n private readonly translocoService = inject(TranslocoService);\n private readonly preferencesStorage = inject(PreferencesStorage);\n private readonly notificationsService = inject(NotificationsService);\n private readonly currentPreferences = this.preferencesStorage.getPreferences();\n private readonly currentNotifications = this.notificationsService.notifications;\n private readonly currentLanguageKey = signal('');\n private readonly wrapperClasses = computed(() => `navbar navbar-expand-md d-none d-lg-flex d-print-none navbar-${this.style()}`);\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly config = computed(() => this.layoutService.mainHeaderConfig());\n\n ngOnInit(): void {\n if (!!this.currentPreferences()?.isDarkTheme) {\n this.layoutService.setDarkMode();\n }\n\n if (!!this.currentPreferences()?.currentLanguageCode) {\n const code = this.currentPreferences()!.currentLanguageCode!;\n\n this.currentLanguageKey.set(code);\n this.translocoService.setActiveLang(code);\n }\n }\n\n switchTheme(): void {\n this.layoutService.toggleDarkMode();\n }\n\n switchLanguage(item: DropdownItem): void {\n this.currentLanguageKey.set(item.id);\n this.translocoService.setActiveLang(item.id);\n this.preferencesStorage.savePreferences({ ...this.currentPreferences(), currentLanguageCode: item.id });\n\n this.isLanguageSwitcherDropdownOpen = false;\n }\n\n selectLoggedUserMenuItem(item: DropdownItem): void {\n const btn = this.coreLayoutConfigService.config.loggedUserMenuActions.find(b => b.id!() === item.id);\n\n if (!!btn?.clickFunction) {\n btn.clickFunction!({ data: this.userInfo() });\n }\n }\n\n readNotification(notification: NotificationModel): void {\n if (!notification.dateRead) {\n this.notificationsService.markAsRead(notification.id);\n }\n\n this.notificationsService.clickOnNotification(notification);\n }\n\n removeNotification(notification: NotificationModel): void {\n this.notificationsService.removeNotifications(notification.id);\n }\n}\n","<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n @if (!!config().showThemeSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon()\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (!!config().showLanguageSwitcher && languagesOptions().length > 0) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLanguageSwitcherDropdownOpen=true\"\n #languageSwitcherBtn>\n <upd-icon tablerIcon=\"language\"></upd-icon>\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLanguageSwitcherDropdownOpen\"\n [dropdownReference]=\"languageSwitcherRef()\" [items]=\"languagesOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isLanguageSwitcherDropdownOpen = $event\" (selectedItem)=\"switchLanguage($event)\">\n </upd-dropdown>\n </div>\n }\n @if (!!config().showNotifications && !!userInfo()) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isNotificationsDropdownOpen = true\"\n #notificationsBtn>\n <upd-icon [tablerIcon]=\"currentNotificationsIcon()\"></upd-icon>\n @if (hasNewNotifications()) {\n <span class=\"badge bg-red\" [class.badge-blink]=\"shouldBlinkIfNewNotifications()\"></span>\n }\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1 dropdown-menu-card\" [isOpen]=\"isNotificationsDropdownOpen\"\n [dropdownReference]=\"notificationsRef()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isNotificationsDropdownOpen = $event\" [minWidth]=\"400\" arrowType=\"right\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">{{ 'UpDevs.NotificationCenter.Title' | transloco }}</h3>\n </div>\n @for (notification of latestNotifications(); track notification) {\n <div class=\"list-group list-group-flush list-group-hoverable\" (click)=\"readNotification(notification)\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\">\n @if (!!notification.dateRead) {\n <span class=\"status-dot d-block\"></span>\n } @else {\n <span class=\"status-dot status-dot-animated bg-primary d-block\"></span>\n }\n </div>\n <div class=\"col text-truncate\">\n <a href=\"javascript:void(0)\" class=\"text-body d-block\"\n [class.fw-bold]=\"!notification.dateRead\">\n {{ textService.getText(notification.title) }}\n </a>\n @if (!!notification.description) {\n <div class=\"d-block text-secondary text-truncate mt-n1\">\n {{ textService.getText(notification.description) }}\n </div>\n }\n </div>\n <div class=\"col-auto\">\n <upd-link [customClasses]=\"['list-group-item-actions']\"\n (clicked)=\"removeNotification(notification)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-link>\n </div>\n </div>\n </div>\n </div>\n } @empty {\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ 'UpDevs.NotificationCenter.NoNotifications' | transloco }}</h1>\n </div>\n }\n </div>\n </upd-dropdown>\n </div>\n }\n </div>\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n }\n\n <div class=\"d-none d-xl-block ps-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n }\n </div>\n @if (!!config().showSearchBar && !!userInfo()) {\n <div class=\"collapse navbar-collapse\">\n <div class=\"me-2\" [class.w-100]=\"config().shouldUseFullSearchBar\">\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"{{'UpDevs.Header.Search' | transloco}}...\">\n </div>\n </form>\n </div>\n </div>\n } @else {\n <div></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { HeaderComponent } from './header.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule,\n UpdIconsModule,\n UpdDropdownModule,\n UpdLinkModule\n ],\n declarations: [\n HeaderComponent\n ],\n exports: [\n HeaderComponent\n ]\n})\nexport class HeaderModule {}\n","import { ButtonModel } from '@updevs/sdk/layout';\nimport { BgColorStyleType, ColorStyleType } from '@updevs/sdk/types';\n\nimport { LoginPageConfig } from './login-page.config';\n\n/**\n * Configuration of the login page layout.\n */\nexport class LoginPageConfigModel implements LoginPageConfig {\n /**\n * Layout of the login page.\n */\n layout: 'centered-box' | 'box-with-picture' | 'cover';\n\n /**\n * Background color of the login box (exclusive with bgStyle).\n * Should be the name of a CSS class.\n */\n bgColor?: string;\n\n /**\n * Background color of the login box (exclusive with bgColor).\n */\n bgStyle?: BgColorStyleType;\n\n /**\n * Color of the border used in the login page.\n */\n borderColor: ColorStyleType;\n\n /**\n * Color of the sign-in button.\n */\n signInButtonColor: ColorStyleType;\n\n /**\n * Color of all links in the login page.\n */\n linksColor: ColorStyleType;\n\n /**\n * Route with the page to recover the user's password.\n */\n recoverPasswordRoute?: string;\n\n /**\n * Route with the page to register a user.\n */\n signUpRoute?: string;\n\n /**\n * Buttons used for social login (google, facebook, etc).\n */\n socialLoginButtons: ButtonModel[] = [];\n\n constructor(init?: LoginPageConfig) {\n Object.assign(this, init);\n\n this.layout = init?.layout || 'centered-box';\n this.borderColor = init?.borderColor || 'primary';\n this.signInButtonColor = init?.signInButtonColor || 'primary';\n this.linksColor = init?.linksColor || this.signInButtonColor;\n\n if (init?.socialLoginButtons) {\n this.socialLoginButtons = init.socialLoginButtons;\n }\n }\n}\n","import { SecurityLayoutConfig } from './security-layout.config';\nimport { LoginPageConfigModel } from './login-page-config.model';\n\n/**\n * Configuration for the pages related to the security.\n */\nexport class SecurityLayoutConfigModel implements SecurityLayoutConfig {\n /**\n * Configuration of the login page.\n */\n loginPage: LoginPageConfigModel;\n\n constructor(init?: SecurityLayoutConfig) {\n this.loginPage = new LoginPageConfigModel(init?.loginPage);\n }\n}\n","import { UpdLayoutConfig } from './upd-layout.config';\nimport { SecurityLayoutConfigModel } from './security-layout-config.model';\n\n/**\n * Layout configuration.\n */\nexport class UpdLayoutConfigModel implements UpdLayoutConfig {\n /**\n * Main menu title.\n */\n menuTitle?: string;\n /**\n * Whether the menu should start expanded.\n */\n shouldMenuStartExpanded?: boolean;\n /**\n * Main application logo.\n */\n mainLogo?: string;\n /**\n * Small application logo.\n */\n smallLogo?: string;\n /**\n * Background image for the logged out page.\n */\n loggedOutBackground?: string;\n /**\n * Whether the default notifications button should be displayed.\n */\n showNotificationsButton?: boolean;\n /**\n * Whether the report error button should be displayed when an exception is thrown by the server.\n */\n displayReportErrorButton?: boolean;\n /**\n * Whether the logged user's menu should be displayed.\n */\n showUserMenu?: boolean;\n /**\n * Whether the fluid layout (less padding) should be used.\n */\n useFluidLayout?: boolean;\n /**\n * Configuration for the pages related to the security.\n */\n securityLayoutConfig: SecurityLayoutConfigModel;\n\n constructor(init?: UpdLayoutConfig) {\n if (init?.mainLogo === undefined) {\n // this.mainLogo = LogoConstants.defaultLogo; // TODO: add images\n }\n\n if (init?.smallLogo === undefined) {\n // this.smallLogo = LogoConstants.smallLogo;\n }\n\n if (init?.loggedOutBackground === undefined) {\n // this.loggedOutBackground = ImageConstants.loggedOutBackground;\n }\n\n this.menuTitle = init?.menuTitle || 'UpDevs';\n this.showNotificationsButton = init?.showNotificationsButton || true;\n this.showUserMenu = init?.showUserMenu || true;\n this.displayReportErrorButton = init?.displayReportErrorButton || false;\n this.useFluidLayout = init?.useFluidLayout || false;\n this.securityLayoutConfig = new SecurityLayoutConfigModel(init?.securityLayoutConfig);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { UpdLayoutConfig } from '../models/upd-layout.config';\n\n/**\n * Layout constants.\n */\nexport class LayoutConstants {\n /**\n * Key to inject the default configuration.\n */\n static defaultOptionsKey = 'upd-layout-default-options';\n\n /**\n * Injection token for the default configuration.\n */\n static defaultOptionsInjectionToken = new InjectionToken<UpdLayoutConfig>(LayoutConstants.defaultOptionsKey);\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { UpdLayoutConfigModel } from '../models/upd-layout-config.model';\nimport { LayoutConstants } from '../tools/layout.constants';\nimport { UpdLayoutConfig } from '../models/upd-layout.config';\n\n/**\n * Layout configuration data.\n */\n@Injectable()\nexport class UpdLayoutConfigService {\n /**\n * Configuration (See: #upsee[p:models, i:UpdCoreLayoutConfigModel]).\n */\n readonly config: UpdLayoutConfigModel;\n\n constructor(@Inject(LayoutConstants.defaultOptionsInjectionToken) layoutConfig: UpdLayoutConfig) {\n this.config = new UpdLayoutConfigModel(layoutConfig);\n }\n}\n","import { BaseComponent, LayoutService } from '@updevs/sdk/layout';\nimport { inject, OnInit, Directive, OnDestroy } from '@angular/core';\n\nimport { UpdLayoutConfigService } from '../services/upd-layout-config.service';\n\n/**\n * Basic layout structure.\n */\n@Directive()\nexport abstract class BaseLayout extends BaseComponent implements OnInit, OnDestroy {\n protected readonly _layoutConfigService = inject(UpdLayoutConfigService);\n protected readonly _layoutService = inject(LayoutService);\n\n ngOnInit(): void {\n if (this._layoutConfigService.config.useFluidLayout) {\n this._layoutService.addBodyClasses('layout-fluid');\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (this._layoutConfigService.config.useFluidLayout) {\n this._layoutService.removeBodyClasses('layout-fluid');\n }\n }\n}\n","import { Component, computed, OnInit } from '@angular/core';\n\nimport { BaseLayout } from '../../abstractions/base.layout';\n\n@Component({\n selector: 'upd-blank-layout',\n templateUrl: './blank-layout.component.html',\n styleUrls: ['./blank-layout.component.scss']\n})\nexport class BlankLayoutComponent extends BaseLayout implements OnInit {\n readonly config = computed(() => this._layoutService.mainHeaderConfig());\n\n override ngOnInit() {\n // Overriding layout fluid from parent.\n }\n}\n","<div class=\"page\" [class.page-center]=\"_layoutService.isPageCentered()\">\n @if (!config().shouldHideTopBarIfBlankLayout) {\n <upd-header [style]=\"'transparent'\"></upd-header>\n }\n\n <router-outlet></router-outlet>\n\n @if (!config().shouldHideFooterIfBlankLayout) {\n <upd-footer></upd-footer>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterOutlet } from '@angular/router';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { TranslocoPipe } from '@jsverse/transloco';\n\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { BlankLayoutComponent } from './blank-layout.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterOutlet,\n TranslocoPipe,\n UpdDropdownModule,\n UpdIconsModule,\n UpdLinkModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n BlankLayoutComponent\n ],\n exports: [\n BlankLayoutComponent\n ]\n})\nexport class BlankLayoutModule {}\n","import { Component, HostBinding, ViewEncapsulation, OnInit, inject } from '@angular/core';\nimport { Router, NavigationStart } from '@angular/router';\nimport { TextService } from '@updevs/sdk';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { RouteDataModel, MenuService } from '@updevs/sdk/routes';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { filter } from 'rxjs';\n\n@Component({\n selector: 'upd-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SidebarComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = 'navbar navbar-vertical navbar-expand-lg';\n @HostBinding('attr.data-bs-theme') theme = 'dark';\n\n menuItems: RouteDataModel[] = [];\n readonly textService = inject(TextService);\n\n private currentRoute = '';\n private readonly router = inject(Router);\n private readonly menuService = inject(MenuService);\n\n ngOnInit(): void {\n this.currentRoute = this.router.url;\n this.menuItems = this.menuService.generateMenu();\n const menuRefreshSub = this.menuService.refreshSubject.subscribe(() => {\n this.menuItems = [...this.menuService.generateMenu()];\n this.updateActiveRoute();\n });\n const routerSub = this.router.events.pipe(\n filter(event => event instanceof NavigationStart)\n ).subscribe(event => {\n this.currentRoute = (<NavigationStart>event).url;\n this.updateActiveRoute();\n });\n\n this.updateActiveRoute();\n this.addSubscriptions(routerSub, menuRefreshSub);\n }\n\n onMenuItemClick(item: RouteDataModel): void {\n if (item.isLocked) {\n if (!!item.lockedClickFunction) {\n item.lockedClickFunction();\n }\n\n return;\n }\n\n this.resetMenuState(this.menuItems);\n\n item.isActive = true;\n\n this.updateParents(item);\n\n if (!!item.clickFunction) {\n item.clickFunction();\n return;\n }\n\n if ((item.children?.length || 0) > 0) {\n return;\n }\n\n this.router.navigate(item.getFullPath()).then();\n }\n\n hasChildren(item: RouteDataModel): boolean {\n return (item.children?.length || 0) > 0;\n }\n\n asMenuItem(item: any): RouteDataModel {\n return item as RouteDataModel;\n }\n\n getItemClasses(item: RouteDataModel, activeClass: string, ...classes: string[]): string[] {\n return [\n ...classes,\n item.isActive ? activeClass : '',\n item.isLocked ? 'disabled' : ''\n ];\n }\n\n private findActiveNode(item: RouteDataModel, fullPath: string): OptionalType<RouteDataModel> {\n if (item.fullPath === fullPath) {\n return item;\n } else if (item.children.length > 0) {\n let result;\n\n for (let i = 0; !result && i < item.children.length; i++) {\n result = this.findActiveNode(item.children[i], fullPath);\n }\n\n return result;\n }\n\n return undefined;\n }\n\n private updateActiveRoute(): void {\n this.resetMenuState(this.menuItems);\n\n let item: OptionalType<RouteDataModel>;\n\n for (const mi of this.menuItems) {\n item = this.findActiveNode(mi, this.currentRoute);\n\n if (!!item) {\n break;\n }\n }\n\n while (!!item) {\n item.isActive = true;\n item = item.parent;\n }\n }\n\n private resetMenuState(items: RouteDataModel[]): void {\n items.forEach(i => {\n i.isActive = false;\n\n if (i.children.length > 0) {\n this.resetMenuState(i.children);\n }\n });\n }\n\n private updateParents(menuItem: RouteDataModel): void {\n let item: OptionalType<RouteDataModel> = menuItem;\n\n while (!!item) {\n item.isActive = true;\n item = item.parent;\n }\n }\n}\n","<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </h1>\n <div class=\"collapse navbar-collapse\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </li>\n }\n </ul>\n </div>\n</div>\n\n<ng-template #itemTpl let-item=\"menuItem\">\n <upd-link [isNavigation]=\"true\" (clicked)=\"onMenuItemClick(item)\"\n [customClasses]=\"getItemClasses(item, 'show', hasChildren(item) ? 'dropdown-toggle':'')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </upd-link>\n @if (hasChildren(item)) {\n <ng-container [ngTemplateOutlet]=\"childrenTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n }\n</ng-template>\n\n<ng-template #linkContent let-item=\"menuItem\">\n @if (!!item.icon) {\n <span class=\"nav-link-icon d-md-none d-lg-inline-block\">\n <upd-icon [model]=\"item.icon\"></upd-icon>\n </span>\n }\n <span class=\"nav-link-title\">{{ textService.getText(item.title) }}</span>\n @if (item.isLocked) {\n <upd-icon class=\"ms-auto\" [model]=\"{tablerIcon: 'lock'}\"></upd-icon>\n }\n</ng-template>\n\n<ng-template #childrenTpl let-item=\"menuItem\">\n <div class=\"dropdown-menu\" [class.show]=\"item.isActive\">\n <div class=\"dropdown-menu-columns\">\n <div class=\"dropdown-menu-column\">\n @for (child of asMenuItem(item).children; track child) {\n @if (!hasChildren(child)) {\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n } @else {\n <div class=\"dropend\">\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n <div class=\"dropdown-menu\" [class.show]=\"child.isActive\">\n @for (grandchild of child.children; track grandchild) {\n <upd-link (clicked)=\"onMenuItemClick(grandchild)\"\n [customClasses]=\"getItemClasses(grandchild, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: grandchild}\">\n </ng-container>\n </upd-link>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n","import { Component, input } from '@angular/core';\nimport { PageHeaderModel } from '@updevs/sdk/layout';\n\n@Component({\n selector: 'upd-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss']\n})\nexport class PageHeaderComponent {\n model = input.required<PageHeaderModel>();\n}\n","<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model().titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model().title }}\n </h2>\n </div>\n @if (model().actionButtons.length > 0) {\n <div class=\"col-auto ms-auto d-print-none\">\n <div class=\"btn-list\">\n @for (btn of model().actionButtons; track btn) {\n <upd-button [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseLayout } from '../../abstractions/base.layout';\n\n@Component({\n selector: 'upd-vertical-sidebar-layout',\n templateUrl: './vertical-sidebar-layout.component.html',\n styleUrls: ['./vertical-sidebar-layout.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class VerticalSidebarLayoutComponent extends BaseLayout {}\n","<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (!!_layoutService.pageHeader()) {\n <upd-page-header [model]=\"_layoutService.pageHeader()!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from '../../assets/i18n/en.json';\nimport * as pt from '../../assets/i18n/pt.json';\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { VerticalSidebarLayoutComponent } from './vertical-sidebar-layout.component';\nimport { SidebarComponent } from '../../partials/sidebar/sidebar.component';\nimport { PageHeaderComponent } from '../../partials/page-header/page-header.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n TranslocoModule,\n UpdIconsModule,\n UpdCoreLayoutModule,\n UpdButtonModule,\n UpdLinkModule,\n UpdDropdownModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n VerticalSidebarLayoutComponent,\n SidebarComponent,\n PageHeaderComponent\n ],\n exports: [\n VerticalSidebarLayoutComponent,\n SidebarComponent,\n PageHeaderComponent\n ]\n})\nexport class VerticalSidebarLayoutModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'upd-logged-out',\n templateUrl: './logged-out.component.html',\n styleUrls: ['./logged-out.component.scss']\n})\nexport class LoggedOutComponent {\n\n}\n","<p>logged-out works!</p>\n","import { Component, inject, OnDestroy, OnInit, model, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { LayoutService } from '@updevs/sdk/layout';\nimport { AuthService } from '@updevs/sdk/security';\nimport { FormRowModel, DynamicFieldType, InputFieldModel } from '@updevs/components/form';\nimport { finalize } from 'rxjs';\n\nimport { UpdLayoutConfigService } from '../../../services/upd-layout-config.service';\n\n@Component({\n selector: 'upd-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n formGroup = model(new FormGroup({}));\n formRows: FormRowModel[] = [];\n isSigningIn = signal(false);\n readonly layoutConfigService = inject(UpdLayoutConfigService);\n readonly config = this.layoutConfigService.config.securityLayoutConfig.loginPage;\n\n get border(): string {\n return `border-${this.config.borderColor}`;\n }\n\n get linkClasses(): string[] {\n return [`link-${this.config.linksColor}`];\n }\n\n private get boxBgColor(): string {\n return this.config.bgColor || (!!this.config.bgStyle ? `bg-${this.config.bgStyle}` : '') || 'bg-white';\n }\n\n private readonly bodyClasses = ['border-top-wide', this.border, 'd-flex', 'flex-column'];\n private readonly router = inject(Router);\n private readonly authService = inject(AuthService);\n private readonly layoutService = inject(LayoutService);\n\n ngOnInit(): void {\n this.layoutService.addBodyClasses(this.boxBgColor);\n\n if (this.config.layout !== 'cover') {\n this.layoutService.addBodyClasses(...this.bodyClasses);\n }\n\n this.formRows = [\n {\n fields: [\n {\n name: 'username',\n type: DynamicFieldType.Input,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.Email', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3)],\n shouldSubmitOnEnter: true\n } as InputFieldModel\n ]\n },\n {\n fields: [\n {\n name: 'password',\n type: DynamicFieldType.Input,\n inputType: 'password',\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.Password', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3)],\n shouldSubmitOnEnter: true\n } as InputFieldModel\n ]\n },\n {\n fields: [\n {\n name: 'rememberMe',\n type: DynamicFieldType.Checkbox,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.RememberMe', isTranslated: false },\n initValue: false\n }\n ]\n }\n ];\n }\n\n ngOnDestroy(): void {\n this.layoutService.removeBodyClasses(this.boxBgColor);\n\n if (this.config.layout !== 'cover') {\n this.layoutService.removeBodyClasses(...this.bodyClasses);\n }\n }\n\n login(): void {\n // TODO: handle remember me\n this.isSigningIn.set(true);\n this.authService.login((this.formGroup().value as any).username, (this.formGroup().value as any).password)\n .pipe(finalize(() => this.isSigningIn.set(false)))\n .subscribe();\n }\n\n goToRecoverPasswordPage(): void {\n this.router.navigate([this.config.recoverPasswordRoute]).then();\n }\n\n goToSignUpPage(): void {\n this.router.navigate([this.config.signUpRoute]).then();\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Login'\">\n <upd-header [style]=\"'transparent'\"></upd-header>\n <div class=\"page page-center\">\n @switch (config.layout) {\n @case ('centered-box') {\n <div class=\"container container-tight py-4\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n }\n @case ('box-with-picture') {\n <div class=\"container container-normal py-4\">\n <div class=\"row align-items-center g-4\">\n <div class=\"col-lg\">\n <div class=\"container-tight\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-lg d-none d-lg-block\">\n <img height=\"300\" class=\"d-block mx-auto upd-right-login-image\" />\n </div>\n </div>\n </div>\n }\n @case ('cover') {\n <div class=\"row g-0 flex-fill\">\n <div class=\"col-12 col-lg-6 col-xl-4 border-top-wide d-flex flex-column justify-content-center\"\n [ngClass]=\"border\">\n <div class=\"container container-tight my-5 px-lg-5\">\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n\n <h2 class=\"h3 text-center mb-3\">\n {{ t('Title') }}\n </h2>\n\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-12 col-lg-6 col-xl-8 d-none d-lg-block\">\n <div class=\"bg-cover h-100 min-vh-100 upd-right-login-cover-image\"></div>\n </div>\n </div>\n }\n }\n </div>\n <upd-footer></upd-footer>\n\n <ng-template #loginCardTpl>\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n <upd-card [removeBorder]=\"true\">\n <div class=\"p-4\">\n <h2 class=\"h2 text-center mb-4\">\n {{ t('Title') }}\n </h2>\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n </upd-card>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </ng-template>\n\n <ng-template #loginFormTpl>\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\" (submitted)=\"login()\"></upd-form>\n <div class=\"form-footer\">\n <upd-button [colorStyle]=\"config.signInButtonColor\" (clicked)=\"login()\" [isLoading]=\"isSigningIn()\"\n customClasses=\"w-100\">\n {{ t('SignIn') }}\n </upd-button>\n @if (!!config.recoverPasswordRoute) {\n <div class=\"d-flex mt-2\">\n <upd-link class=\"ms-auto\" [customClasses]=\"linkClasses\" (clicked)=\"goToRecoverPasswordPage()\">\n {{ t('RecoverPassword') }}\n </upd-link>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #socialLoginTpl>\n @if (config.socialLoginButtons.length > 0) {\n <div class=\"hr-text\">\n {{ t('Or') }}\n </div>\n <div class=\"card-body\">\n <div class=\"row\">\n @for (btn of config.socialLoginButtons; track btn) {\n <div class=\"col\">\n <upd-button [model]=\"btn\"></upd-button>\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n\n <ng-template #headerTpl>\n <div class=\"text-center mb-4\">\n <a href=\".\" class=\"navbar-brand navbar-brand-autodark\">\n <img height=\"36\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </div>\n </ng-template>\n\n <ng-template #noAccountTpl>\n @if (!!config.signUpRoute) {\n <div class=\"text-center text-muted mt-3\">\n {{ t('NoAccountYet') }}\n <upd-link [customClasses]=\"linkClasses\" (clicked)=\"goToSignUpPage()\">{{ t('SignUp') }}</upd-link>\n </div>\n }\n </ng-template>\n</ng-container>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'upd-oauth-callback',\n templateUrl: './oauth-callback.component.html',\n styleUrls: ['./oauth-callback.component.scss']\n})\nexport class OauthCallbackComponent {\n\n}\n","<p>oauth-callback works!</p>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { OauthCallbackComponent } from './oauth-callback/oauth-callback.component';\nimport { LoggedOutComponent } from './logged-out/logged-out.component';\nimport { LoginComponent } from './login/login.component';\n\n/**\n * Auth flow routes.\n */\nexport const routes: Routes = [\n { path: 'oauth/callback', component: OauthCallbackComponent },\n { path: 'logged-out', component: LoggedOutComponent },\n { path: 'login', component: LoginComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { useHash: true })],\n exports: [RouterModule]\n})\nexport class AuthFlowRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCardModule } from '@updevs/components/card';\nimport { UpdFormModule } from '@updevs/components/form';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { LoginComponent } from './login/login.component';\nimport { OauthCallbackComponent } from './oauth-callback/oauth-callback.component';\nimport { LoggedOutComponent } from './logged-out/logged-out.component';\nimport { AuthFlowRoutingModule } from './auth-flow-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n AuthFlowRoutingModule,\n UpdButtonModule,\n UpdIconsModule,\n FormsModule,\n TranslocoDirective,\n UpdLinkModule,\n UpdCardModule,\n UpdFormModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n LoginComponent,\n OauthCallbackComponent,\n LoggedOutComponent\n ],\n exports: [\n LoginComponent,\n OauthCallbackComponent,\n LoggedOutComponent\n ]\n})\nexport class AuthFlowModule {\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdNotificationsModule } from '@updevs/sdk/notifications';\n\nimport { UpdLayoutConfig } from './models/upd-layout.config';\nimport { LayoutConstants } from './tools/layout.constants';\nimport { UpdLayoutConfigService } from './services/upd-layout-config.service';\n\n/**\n * Layout module.\n */\n@NgModule({\n imports: [\n CommonModule,\n UpdCoreLayoutModule,\n UpdNotificationsModule\n ],\n providers: [\n UpdLayoutConfigService\n ]\n})\nexport class UpdLayoutModule {\n /**\n * Sets up the layout module with the provided configuration.\n * @param config Configuration (See: #updsee[p:abstractions, i:UpdCoreLayoutConfig]).\n */\n static forRoot(config: UpdLayoutConfig): ModuleWithProviders<UpdLayoutModule> {\n return {\n ngModule: UpdLayoutModule,\n providers: [\n { provide: LayoutConstants.defaultOptionsInjectionToken, useValue: config }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i4","i2.FooterComponent","i3.HeaderComponent","i4.SidebarComponent","i5.PageHeaderComponent","en","pt","i3","i5","i8.FooterComponent","i9.HeaderComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAEG;AAEH;AACM,MAAgB,iBAAkB,SAAQ,aAAa,CAAA;AAF7D,IAAA,WAAA,GAAA;;AAGuB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAM7D,KAAA;IAJY,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KACjD;8GANiB,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAFtC,SAAS;;;ACIJ,MAAO,eAAgB,SAAQ,aAAa,CAAA;AANlD,IAAA,WAAA,GAAA;;QAO0B,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AAE1C;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB;;AAEG;QACH,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AACrB;;AAEG;QACH,IAAK,CAAA,KAAA,GAAgB,EAAE,CAAC;AACxB;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAM9B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAEvC,IAAkB,CAAA,kBAAA,GAAG,qBAAqB,CAAC;AAiBtD,KAAA;IAfG,QAAQ,GAAA;QACJ,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,EAAE;YAC/E,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;KACJ;IAEO,oBAAoB,GAAA;AACxB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,GAAG,gBAAgB,GAAG,EAAE,CAAC;AAC9D,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACvE,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,EAAG,eAAe,CAAA,EAAG,cAAc,CAAA,CAAE,CAAC;KACzF;8GA1CQ,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,wJCV5B,2nDAuCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Ba,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,2nDAAA,EAAA,CAAA;8BAGf,cAAc,EAAA,CAAA;sBAAnC,WAAW;uBAAC,OAAO,CAAA;;;MEOX,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAZ,YAAY,EAAA,YAAA,EAAA,CANjB,eAAe,CAAA,EAAA,OAAA,EAAA,CAJf,YAAY;AACZ,YAAA,eAAe,aAMf,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAVjB,YAAY;YACZ,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASV,YAAY,EAAA,UAAA,EAAA,CAAA;kBAZxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;AAClB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,eAAe;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,eAAe;AAClB,qBAAA;AACJ,iBAAA,CAAA;;;ACUK,MAAO,eAAgB,SAAQ,aAAa,CAAA;AANlD,IAAA,WAAA,GAAA;;QAWI,IAAmB,CAAA,mBAAA,GAAG,SAAS,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7E,IAAgB,CAAA,gBAAA,GAAG,SAAS,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACvE,IAAa,CAAA,aAAA,GAAG,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAEjE,IAA8B,CAAA,8BAAA,GAAG,KAAK,CAAC;QACvC,IAA2B,CAAA,2BAAA,GAAG,KAAK,CAAC;QACpC,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,OAAO,CAAC,CAAC;QACxC,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAkB,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,GAAG,KAAK,GAAG,YAAY,CAAC,CAAC;AAC/G,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAkB,MAAM,IAAI,CAAC,mBAAmB,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC;QACjH,IAAmB,CAAA,mBAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAiB,MAAK;YACtD,MAAM,mBAAmB,GAAmB,EAAE,CAAC;AAC/C,YAAA,MAAM,kBAAkB,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;YAE1F,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;gBAC1C,mBAAmB,CAAC,IAAI,CAAC;AACrB,oBAAA,EAAE,EAAE,GAAG;AACP,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAC7B,oBAAA,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG;AAC9C,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,mBAAmB,CAAC;AAC/B,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAiB,MAAK;YACvD,MAAM,WAAW,GAAmB,EAAE,CAAC;AAEvC,YAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC;AACtF,gBAAA,EAAE,EAAE,GAAG,CAAC,EAAG,EAAE;AACb,gBAAA,IAAI,EAAE,GAAG,CAAC,IAAK,EAAE;AACjB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,GAAG,CAAC,SAAS,IAAI;AAC1B,aAAA,CAAC,CAAC,CAAC;AAEJ,YAAA,OAAO,WAAW,CAAC;AACvB,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MACnC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,GAAG,EAAE,CAC7F,CAAC;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAChC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kBAAkB;AACpD,cAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC;cACxE,EAAE,CACX,CAAC;AACO,QAAA,IAAA,CAAA,6BAA6B,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACpH,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,EAAE;iBAClD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxB,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;iBACvF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;AACtF,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE;iBAChD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzB,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;iBACvF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAEtF,OAAO;AACH,gBAAA,GAAG,mBAAmB;AACtB,gBAAA,GAAG,iBAAiB;AACvB,aAAA,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;AACvF,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAE1B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACpD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;AAC9D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAC/D,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAgE,6DAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC,CAAC;;AAGxH,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC;AA8C3E,KAAA;AAhIG,IAAA,IAA0B,OAAO,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;KAChC;IAkFD,QAAQ,GAAA;QACJ,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SACpC;QAED,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAG,CAAC,mBAAoB,CAAC;AAE7D,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC7C;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;KACvC;AAED,IAAA,cAAc,CAAC,IAAkB,EAAA;QAC7B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAExG,QAAA,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;KAC/C;AAED,IAAA,wBAAwB,CAAC,IAAkB,EAAA;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAErG,QAAA,IAAI,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE;AACtB,YAAA,GAAG,CAAC,aAAc,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SACjD;KACJ;AAED,IAAA,gBAAgB,CAAC,YAA+B,EAAA;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YACxB,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SACzD;AAED,QAAA,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;KAC/D;AAED,IAAA,kBAAkB,CAAC,YAA+B,EAAA;QAC9C,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;KAClE;8GAhIQ,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,gVAKuC,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAChB,UAAU,EAChB,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,oEClCjE,+9OA0HA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kCAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Fa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,+9OAAA,EAAA,CAAA;8BAGX,OAAO,EAAA,CAAA;sBAAhC,WAAW;uBAAC,OAAO,CAAA;;;MEJX,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAZ,YAAY,EAAA,YAAA,EAAA,CANjB,eAAe,CAAA,EAAA,OAAA,EAAA,CAPf,YAAY;YACZ,eAAe;YACf,cAAc;YACd,iBAAiB;AACjB,YAAA,aAAa,aAMb,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAbjB,YAAY;YACZ,eAAe;YACf,cAAc;YACd,iBAAiB;YACjB,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASR,YAAY,EAAA,UAAA,EAAA,CAAA;kBAfxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,iBAAiB;wBACjB,aAAa;AAChB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,eAAe;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,eAAe;AAClB,qBAAA;AACJ,iBAAA,CAAA;;;AClBD;;AAEG;MACU,oBAAoB,CAAA;AA+C7B,IAAA,WAAA,CAAY,IAAsB,EAAA;AALlC;;AAEG;QACH,IAAkB,CAAA,kBAAA,GAAkB,EAAE,CAAC;AAGnC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,cAAc,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,SAAS,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,IAAI,SAAS,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAC;AAE7D,QAAA,IAAI,IAAI,EAAE,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;SACrD;KACJ;AACJ;;AChED;;AAEG;MACU,yBAAyB,CAAA;AAMlC,IAAA,WAAA,CAAY,IAA2B,EAAA;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KAC9D;AACJ;;ACZD;;AAEG;MACU,oBAAoB,CAAA;AA0C7B,IAAA,WAAA,CAAY,IAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,EAAE,QAAQ,KAAK,SAAS,EAAE;;SAEjC;AAED,QAAA,IAAI,IAAI,EAAE,SAAS,KAAK,SAAS,EAAE;;SAElC;AAED,QAAA,IAAI,IAAI,EAAE,mBAAmB,KAAK,SAAS,EAAE;;SAE5C;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,QAAQ,CAAC;QAC7C,IAAI,CAAC,uBAAuB,GAAG,IAAI,EAAE,uBAAuB,IAAI,IAAI,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,wBAAwB,IAAI,KAAK,CAAC;QACxE,IAAI,CAAC,cAAc,GAAG,IAAI,EAAE,cAAc,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,oBAAoB,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;KACzF;AACJ;;AChED;;AAEG;MACU,eAAe,CAAA;AACxB;;AAEG;aACI,IAAiB,CAAA,iBAAA,GAAG,4BAA4B,CAAC,EAAA;AAExD;;AAEG;aACI,IAA4B,CAAA,4BAAA,GAAG,IAAI,cAAc,CAAkB,eAAe,CAAC,iBAAiB,CAAC,CAAC,EAAA;;;ACVjH;;AAEG;MAEU,sBAAsB,CAAA;AAM/B,IAAA,WAAA,CAAkE,YAA6B,EAAA;QAC3F,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAC;KACxD;8GARQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAMX,eAAe,CAAC,4BAA4B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHANvD,sBAAsB,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;0BAOM,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,eAAe,CAAC,4BAA4B,CAAA;;;ACXpE;;AAEG;AAEG,MAAgB,UAAW,SAAQ,aAAa,CAAA;AADtD,IAAA,WAAA,GAAA;;AAEuB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAe7D,KAAA;IAbG,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;SACtD;KACJ;IAEQ,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACzD;KACJ;8GAhBiB,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAV,UAAU,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;;;ACCJ,MAAO,oBAAqB,SAAQ,UAAU,CAAA;AALpD,IAAA,WAAA,GAAA;;AAMa,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAK5E,KAAA;IAHY,QAAQ,GAAA;;KAEhB;8GALQ,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,+ECTjC,yVAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDFa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,yVAAA,EAAA,CAAA;;;MEyBnB,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CANtB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAVpB,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,YAAY;AACZ,YAAA,YAAY,aAMZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhBtB,YAAY;YAGZ,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,aAAa;wBACb,iBAAiB;wBACjB,cAAc;wBACd,aAAa;wBACb,YAAY;wBACZ,YAAY;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,oBAAoB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,oBAAoB;AACvB,qBAAA;AACJ,iBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;AANnD,IAAA,WAAA,GAAA;;QAO0B,IAAc,CAAA,cAAA,GAAG,yCAAyC,CAAC;QAC9C,IAAK,CAAA,KAAA,GAAG,MAAM,CAAC;QAElD,IAAS,CAAA,SAAA,GAAqB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAEnC,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AACT,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAoHtD,KAAA;IAlHG,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;AAClE,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,eAAe,CAAC,CACpD,CAAC,SAAS,CAAC,KAAK,IAAG;AAChB,YAAA,IAAI,CAAC,YAAY,GAAqB,KAAM,CAAC,GAAG,CAAC;YACjD,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;KACpD;AAED,IAAA,eAAe,CAAC,IAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9B;YAED,OAAO;SACV;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAErB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEzB,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;SACV;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO;SACV;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;KACnD;AAED,IAAA,WAAW,CAAC,IAAoB,EAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;AAChB,QAAA,OAAO,IAAsB,CAAC;KACjC;AAED,IAAA,cAAc,CAAC,IAAoB,EAAE,WAAmB,EAAE,GAAG,OAAiB,EAAA;QAC1E,OAAO;AACH,YAAA,GAAG,OAAO;YACV,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;SAClC,CAAC;KACL;IAEO,cAAc,CAAC,IAAoB,EAAE,QAAgB,EAAA;AACzD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,IAAI,MAAM,CAAC;AAEX,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAA,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;aAC5D;AAED,YAAA,OAAO,MAAM,CAAC;SACjB;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEpC,QAAA,IAAI,IAAkC,CAAC;AAEvC,QAAA,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;YAC7B,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAElD,YAAA,IAAI,CAAC,CAAC,IAAI,EAAE;gBACR,MAAM;aACT;SACJ;AAED,QAAA,OAAO,CAAC,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;SACtB;KACJ;AAEO,IAAA,cAAc,CAAC,KAAuB,EAAA;AAC1C,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AACd,YAAA,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;aACnC;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,aAAa,CAAC,QAAwB,EAAA;QAC1C,IAAI,IAAI,GAAiC,QAAQ,CAAC;AAElD,QAAA,OAAO,CAAC,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;SACtB;KACJ;8GA5HQ,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,wKCd7B,unHAwEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD1Da,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,aAAa,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,unHAAA,EAAA,CAAA;8BAGf,cAAc,EAAA,CAAA;sBAAnC,WAAW;uBAAC,OAAO,CAAA;gBACe,KAAK,EAAA,CAAA;sBAAvC,WAAW;uBAAC,oBAAoB,CAAA;;;MERxB,mBAAmB,CAAA;AALhC,IAAA,WAAA,GAAA;AAMI,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAmB,CAAC;AAC7C,KAAA;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,0LCRhC,80BAuBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDfa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,80BAAA,EAAA,CAAA;;;AEMzB,MAAO,8BAA+B,SAAQ,UAAU,CAAA;8GAAjD,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,0FCV3C,yeAgBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDNa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;+BACI,6BAA6B,EAAA,aAAA,EAGxB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,yeAAA,EAAA,CAAA;;;MEkC5B,2BAA2B,CAAA;AACpC,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC1C,gBAAgB,CAAC,oCAAoC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,QAAA,gBAAgB,CAAC,cAAc,CAACC,IAAE,EAAE,IAAI,CAAC,CAAC;AAC1C,QAAA,gBAAgB,CAAC,cAAc,CAACC,IAAE,EAAE,IAAI,CAAC,CAAC;KAC7C;8GALQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,iBAVhC,8BAA8B;YAC9B,gBAAgB;AAChB,YAAA,mBAAmB,aAdnB,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,YAAY;AACZ,YAAA,YAAY,aAQZ,8BAA8B;YAC9B,gBAAgB;YAChB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAtBhC,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAaP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAxBvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,eAAe;wBACf,aAAa;wBACb,iBAAiB;wBACjB,YAAY;wBACZ,YAAY;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,8BAA8B;wBAC9B,gBAAgB;wBAChB,mBAAmB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,8BAA8B;wBAC9B,gBAAgB;wBAChB,mBAAmB;AACtB,qBAAA;AACJ,iBAAA,CAAA;;;MClCY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sDCP/B,4BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA;;;MEYjB,cAAc,CAAA;AAL3B,IAAA,WAAA,GAAA;QAMI,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACrD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC;AAchE,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAwE1D,KAAA;AAvFG,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;KAC9C;AAED,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAE,CAAA,CAAC,CAAC;KAC7C;AAED,IAAA,IAAY,UAAU,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAM,GAAA,EAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA,CAAE,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC;KAC1G;IAOD,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;YAChC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,QAAQ,GAAG;AACZ,YAAA;AACI,gBAAA,MAAM,EAAE;AACJ,oBAAA;AACI,wBAAA,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,gBAAgB,CAAC,KAAK;AAC5B,wBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;wBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,KAAK,EAAE;AAC1D,wBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,wBAAA,mBAAmB,EAAE,IAAI;AACT,qBAAA;AACvB,iBAAA;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,MAAM,EAAE;AACJ,oBAAA;AACI,wBAAA,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,gBAAgB,CAAC,KAAK;AAC5B,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;wBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,KAAK,EAAE;AAC7D,wBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,wBAAA,mBAAmB,EAAE,IAAI;AACT,qBAAA;AACvB,iBAAA;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,MAAM,EAAE;AACJ,oBAAA;AACI,wBAAA,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;AAC/B,wBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;wBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,KAAK,EAAE;AAC/D,wBAAA,SAAS,EAAE,KAAK;AACnB,qBAAA;AACJ,iBAAA;AACJ,aAAA;SACJ,CAAC;KACL;IAED,WAAW,GAAA;QACP,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;YAChC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7D;KACJ;IAED,KAAK,GAAA;;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAa,CAAC,QAAQ,EAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAa,CAAC,QAAQ,CAAC;AACrG,aAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,aAAA,SAAS,EAAE,CAAC;KACpB;IAED,uBAAuB,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACnE;IAED,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAC1D;8GA7FQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,4OCf3B,+2JAiHA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDlGa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACI,WAAW,EAAA,QAAA,EAAA,+2JAAA,EAAA,CAAA;;;MEJZ,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,0DCPnC,gCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,oBAAoB,EAAA,QAAA,EAAA,gCAAA,EAAA,CAAA;;;AEIlC;;AAEG;AACU,MAAA,MAAM,GAAW;AAC1B,IAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,EAAE;AAC7D,IAAA,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE;AACrD,IAAA,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;EAC9C;MAMW,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,0CAFpB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAEb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAHpB,OAAA,EAAA,CAAA,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAC/C,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,OAAO,EAAE,CAAC,YAAY,CAAC;AAC1B,iBAAA,CAAA;;;MCuBY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAVnB,cAAc;YACd,sBAAsB;AACtB,YAAA,kBAAkB,aAflB,YAAY;YACZ,qBAAqB;YACrB,eAAe;YACf,cAAc;YACd,WAAW;YACX,kBAAkB;YAClB,aAAa;YACb,aAAa;YACb,aAAa;YACb,YAAY;AACZ,YAAA,YAAY,aAQZ,cAAc;YACd,sBAAsB;YACtB,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAvBnB,YAAY;YACZ,qBAAqB;YACrB,eAAe;YACf,cAAc;YACd,WAAW;YAEX,aAAa;YACb,aAAa;YACb,aAAa;YACb,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAaP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAzB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,qBAAqB;wBACrB,eAAe;wBACf,cAAc;wBACd,WAAW;wBACX,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,YAAY;wBACZ,YAAY;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,cAAc;wBACd,sBAAsB;wBACtB,kBAAkB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,cAAc;wBACd,sBAAsB;wBACtB,kBAAkB;AACrB,qBAAA;AACJ,iBAAA,CAAA;;;AChCD;;AAEG;MAWU,eAAe,CAAA;AACxB;;;AAGG;IACH,OAAO,OAAO,CAAC,MAAuB,EAAA;QAClC,OAAO;AACH,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE;gBACP,EAAE,OAAO,EAAE,eAAe,CAAC,4BAA4B,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC9E,aAAA;SACJ,CAAC;KACL;8GAZQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YARpB,YAAY;YACZ,mBAAmB;YACnB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAMjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJb,SAAA,EAAA;YACP,sBAAsB;AACzB,SAAA,EAAA,OAAA,EAAA,CANG,YAAY;YACZ,mBAAmB;YACnB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMjB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,sBAAsB;AACzB,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,sBAAsB;AACzB,qBAAA;AACJ,iBAAA,CAAA;;;ACrBD;;AAEG;;;;"}
@@ -3,20 +3,19 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "./vertical-sidebar-layout.component";
4
4
  import * as i2 from "../../partials/sidebar/sidebar.component";
5
5
  import * as i3 from "../../partials/page-header/page-header.component";
6
- import * as i4 from "../../partials/footer/footer-copyright.directive";
7
- import * as i5 from "@angular/common";
8
- import * as i6 from "@angular/router";
9
- import * as i7 from "@jsverse/transloco";
10
- import * as i8 from "@updevs/icons";
11
- import * as i9 from "@updevs/sdk/layout";
12
- import * as i10 from "@updevs/components/button";
13
- import * as i11 from "@updevs/components/link";
14
- import * as i12 from "@updevs/components/dropdown";
15
- import * as i13 from "../../partials/footer/footer.module";
16
- import * as i14 from "../../partials/header/header.module";
6
+ import * as i4 from "@angular/common";
7
+ import * as i5 from "@angular/router";
8
+ import * as i6 from "@jsverse/transloco";
9
+ import * as i7 from "@updevs/icons";
10
+ import * as i8 from "@updevs/sdk/layout";
11
+ import * as i9 from "@updevs/components/button";
12
+ import * as i10 from "@updevs/components/link";
13
+ import * as i11 from "@updevs/components/dropdown";
14
+ import * as i12 from "../../partials/footer/footer.module";
15
+ import * as i13 from "../../partials/header/header.module";
17
16
  export declare class VerticalSidebarLayoutModule {
18
17
  constructor(translocoService: TranslocoService);
19
18
  static ɵfac: i0.ɵɵFactoryDeclaration<VerticalSidebarLayoutModule, never>;
20
- static ɵmod: i0.ɵɵNgModuleDeclaration<VerticalSidebarLayoutModule, [typeof i1.VerticalSidebarLayoutComponent, typeof i2.SidebarComponent, typeof i3.PageHeaderComponent, typeof i4.FooterCopyrightDirective], [typeof i5.CommonModule, typeof i6.RouterModule, typeof i7.TranslocoModule, typeof i8.UpdIconsModule, typeof i9.UpdCoreLayoutModule, typeof i10.UpdButtonModule, typeof i11.UpdLinkModule, typeof i12.UpdDropdownModule, typeof i13.FooterModule, typeof i14.HeaderModule], [typeof i1.VerticalSidebarLayoutComponent, typeof i2.SidebarComponent, typeof i3.PageHeaderComponent, typeof i4.FooterCopyrightDirective]>;
19
+ static ɵmod: i0.ɵɵNgModuleDeclaration<VerticalSidebarLayoutModule, [typeof i1.VerticalSidebarLayoutComponent, typeof i2.SidebarComponent, typeof i3.PageHeaderComponent], [typeof i4.CommonModule, typeof i5.RouterModule, typeof i6.TranslocoModule, typeof i7.UpdIconsModule, typeof i8.UpdCoreLayoutModule, typeof i9.UpdButtonModule, typeof i10.UpdLinkModule, typeof i11.UpdDropdownModule, typeof i12.FooterModule, typeof i13.HeaderModule], [typeof i1.VerticalSidebarLayoutComponent, typeof i2.SidebarComponent, typeof i3.PageHeaderComponent]>;
21
20
  static ɵinj: i0.ɵɵInjectorDeclaration<VerticalSidebarLayoutModule>;
22
21
  }
@@ -1,10 +1,9 @@
1
- import { TemplateRef, OnInit, OnChanges, SimpleChanges } from '@angular/core';
1
+ import { OnInit, OnChanges, SimpleChanges } from '@angular/core';
2
2
  import { LinkModel } from '@updevs/sdk/core';
3
- import { BaseComponent } from '@updevs/sdk/layout';
3
+ import { BaseComponent, LayoutService } from '@updevs/sdk/layout';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class FooterComponent extends BaseComponent implements OnInit, OnChanges {
6
6
  wrapperClasses: string;
7
- footerCopyrightTemplate?: TemplateRef<any>;
8
7
  /**
9
8
  * Whether the footer will always be shown.
10
9
  */
@@ -25,10 +24,11 @@ export declare class FooterComponent extends BaseComponent implements OnInit, On
25
24
  * Version of the application.
26
25
  */
27
26
  version?: string;
27
+ readonly layoutService: LayoutService;
28
28
  private baseWrapperClasses;
29
29
  ngOnInit(): void;
30
30
  ngOnChanges(changes: SimpleChanges): void;
31
31
  private updateWrapperClasses;
32
32
  static ɵfac: i0.ɵɵFactoryDeclaration<FooterComponent, never>;
33
- static ɵcmp: i0.ɵɵComponentDeclaration<FooterComponent, "upd-footer", never, {}, {}, ["footerCopyrightTemplate"], never, false, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<FooterComponent, "upd-footer", never, {}, {}, never, never, false, never>;
34
34
  }
@@ -1,3 +1,2 @@
1
- export * from './footer-copyright.directive';
2
1
  export * from './footer.component';
3
2
  export * from './footer.module';
@@ -8,6 +8,7 @@ export declare class SidebarComponent extends BaseComponent implements OnInit {
8
8
  theme: string;
9
9
  menuItems: RouteDataModel[];
10
10
  readonly textService: TextService;
11
+ private currentRoute;
11
12
  private readonly router;
12
13
  private readonly menuService;
13
14
  ngOnInit(): void;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@updevs/components",
3
- "version": "1.0.0-alpha.35",
3
+ "version": "1.0.0-alpha.37",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.0.1",
6
6
  "@angular/core": "^18.0.1",
7
7
  "@jsverse/transloco": "^7.4.2",
8
8
  "@jsverse/transloco-messageformat": "^7.0.1",
9
9
  "@updevs/icons": "^1.0.9",
10
- "@updevs/sdk": "^1.0.0-alpha.34"
10
+ "@updevs/sdk": "^1.0.0-alpha.36"
11
11
  },
12
12
  "dependencies": {
13
13
  "tslib": "^2.3.0"
@@ -34,29 +34,23 @@
34
34
  "esm": "./esm2022/badge/updevs-components-badge.mjs",
35
35
  "default": "./fesm2022/updevs-components-badge.mjs"
36
36
  },
37
+ "./calendar": {
38
+ "types": "./calendar/index.d.ts",
39
+ "esm2022": "./esm2022/calendar/updevs-components-calendar.mjs",
40
+ "esm": "./esm2022/calendar/updevs-components-calendar.mjs",
41
+ "default": "./fesm2022/updevs-components-calendar.mjs"
42
+ },
37
43
  "./button": {
38
44
  "types": "./button/index.d.ts",
39
45
  "esm2022": "./esm2022/button/updevs-components-button.mjs",
40
46
  "esm": "./esm2022/button/updevs-components-button.mjs",
41
47
  "default": "./fesm2022/updevs-components-button.mjs"
42
48
  },
43
- "./dropdown": {
44
- "types": "./dropdown/index.d.ts",
45
- "esm2022": "./esm2022/dropdown/updevs-components-dropdown.mjs",
46
- "esm": "./esm2022/dropdown/updevs-components-dropdown.mjs",
47
- "default": "./fesm2022/updevs-components-dropdown.mjs"
48
- },
49
- "./card": {
50
- "types": "./card/index.d.ts",
51
- "esm2022": "./esm2022/card/updevs-components-card.mjs",
52
- "esm": "./esm2022/card/updevs-components-card.mjs",
53
- "default": "./fesm2022/updevs-components-card.mjs"
54
- },
55
- "./calendar": {
56
- "types": "./calendar/index.d.ts",
57
- "esm2022": "./esm2022/calendar/updevs-components-calendar.mjs",
58
- "esm": "./esm2022/calendar/updevs-components-calendar.mjs",
59
- "default": "./fesm2022/updevs-components-calendar.mjs"
49
+ "./drag-and-drop": {
50
+ "types": "./drag-and-drop/index.d.ts",
51
+ "esm2022": "./esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs",
52
+ "esm": "./esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs",
53
+ "default": "./fesm2022/updevs-components-drag-and-drop.mjs"
60
54
  },
61
55
  "./form": {
62
56
  "types": "./form/index.d.ts",
@@ -64,11 +58,17 @@
64
58
  "esm": "./esm2022/form/updevs-components-form.mjs",
65
59
  "default": "./fesm2022/updevs-components-form.mjs"
66
60
  },
67
- "./drag-and-drop": {
68
- "types": "./drag-and-drop/index.d.ts",
69
- "esm2022": "./esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs",
70
- "esm": "./esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs",
71
- "default": "./fesm2022/updevs-components-drag-and-drop.mjs"
61
+ "./card": {
62
+ "types": "./card/index.d.ts",
63
+ "esm2022": "./esm2022/card/updevs-components-card.mjs",
64
+ "esm": "./esm2022/card/updevs-components-card.mjs",
65
+ "default": "./fesm2022/updevs-components-card.mjs"
66
+ },
67
+ "./dropdown": {
68
+ "types": "./dropdown/index.d.ts",
69
+ "esm2022": "./esm2022/dropdown/updevs-components-dropdown.mjs",
70
+ "esm": "./esm2022/dropdown/updevs-components-dropdown.mjs",
71
+ "default": "./fesm2022/updevs-components-dropdown.mjs"
72
72
  },
73
73
  "./layout": {
74
74
  "types": "./layout/index.d.ts",
@@ -1,13 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FooterCopyrightDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterCopyrightDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: FooterCopyrightDirective, selector: "[updFooterCopyright]", ngImport: i0 }); }
6
- }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterCopyrightDirective, decorators: [{
8
- type: Directive,
9
- args: [{
10
- selector: '[updFooterCopyright]'
11
- }]
12
- }] });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLWNvcHlyaWdodC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGF5b3V0L3NyYy9wYXJ0aWFscy9mb290ZXIvZm9vdGVyLWNvcHlyaWdodC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLMUMsTUFBTSxPQUFPLHdCQUF3Qjs4R0FBeEIsd0JBQXdCO2tHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdXBkRm9vdGVyQ29weXJpZ2h0XSdcbn0pXG5leHBvcnQgY2xhc3MgRm9vdGVyQ29weXJpZ2h0RGlyZWN0aXZlIHt9XG4iXX0=
@@ -1,5 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class FooterCopyrightDirective {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<FooterCopyrightDirective, never>;
4
- static ɵdir: i0.ɵɵDirectiveDeclaration<FooterCopyrightDirective, "[updFooterCopyright]", never, {}, {}, never, never, false, never>;
5
- }