@acorex/modules 18.0.0 → 18.0.1
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.
- package/README.md +7 -7
- package/auth/README.md +3 -3
- package/auth/lib/account/account.module.d.ts +1 -1
- package/backend/lib/auth/oidc/application.loader.d.ts +2 -2
- package/backend/lib/auth/oidc/oidc.strategy.d.ts +2 -3
- package/backend/lib/auth/oidc/tenant.loader.d.ts +2 -2
- package/backend/lib/data/api/data-provider.d.ts +1 -2
- package/backend/lib/data/local/data-Conditioner.d.ts +1 -1
- package/backend/lib/data/local/local-data-provider.d.ts +1 -1
- package/esm2022/auth/index.mjs +1 -1
- package/esm2022/auth/lib/account/account.module.mjs +3 -3
- package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +4 -4
- package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +4 -4
- package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +4 -5
- package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +6 -5
- package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +3 -3
- package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +4 -5
- package/esm2022/auth/lib/auth.config.mjs +1 -1
- package/esm2022/auth/lib/auth.module.mjs +1 -1
- package/esm2022/auth/lib/auth.routes.mjs +1 -1
- package/esm2022/auth/lib/error-handler.mjs +2 -2
- package/esm2022/auth/lib/forgot/password/password.component.mjs +3 -3
- package/esm2022/auth/lib/forgot/routes.mjs +1 -1
- package/esm2022/auth/lib/login/login.module.mjs +1 -1
- package/esm2022/auth/lib/login/password/password.component.mjs +3 -3
- package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +1 -1
- package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +5 -7
- package/esm2022/auth/lib/shared/services/idle.service.mjs +1 -1
- package/esm2022/auth/lib/shared/services/index.mjs +1 -1
- package/esm2022/auth/lib/store/auth.effects.mjs +1 -1
- package/esm2022/auth/lib/store/index.mjs +1 -1
- package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +3 -3
- package/esm2022/auth/lib/two-factor/two-factor.module.mjs +1 -1
- package/esm2022/backend/index.mjs +1 -1
- package/esm2022/backend/lib/auth/oidc/application.loader.mjs +17 -12
- package/esm2022/backend/lib/auth/oidc/configuration.service.mjs +2 -3
- package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +1 -1
- package/esm2022/backend/lib/auth/oidc/index.mjs +1 -1
- package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +2 -4
- package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +3 -3
- package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +1 -1
- package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +4 -13
- package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +1 -1
- package/esm2022/backend/lib/backend.configs.mjs +1 -1
- package/esm2022/backend/lib/backend.module.mjs +1 -1
- package/esm2022/backend/lib/data/api/data-provider.mjs +54 -15
- package/esm2022/backend/lib/data/index.mjs +1 -1
- package/esm2022/backend/lib/data/local/data-Conditioner.mjs +25 -19
- package/esm2022/backend/lib/data/local/local-data-provider.mjs +1 -1
- package/esm2022/log-management/lib/audit-logs.entity.mjs +2 -3
- package/esm2022/notification/index.mjs +1 -1
- package/esm2022/notification/lib/notification.module.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-jEqtVhBE.mjs → acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs} +23 -25
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs +70 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-blank.layout-BOdRxDNv.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-Drm4fC1I.mjs → acorex-modules-auth-login.module-CsfZ__0S.mjs} +5 -7
- package/fesm2022/acorex-modules-auth-login.module-CsfZ__0S.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-master.layout-7OSbK7SF.mjs +37 -0
- package/fesm2022/acorex-modules-auth-master.layout-7OSbK7SF.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-V2IWBUZb.mjs +125 -0
- package/fesm2022/acorex-modules-auth-password.component-V2IWBUZb.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-qr9vkp8j.mjs +72 -0
- package/fesm2022/acorex-modules-auth-password.component-qr9vkp8j.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-DyjibH6l.mjs → acorex-modules-auth-routes--jOmlQkp.mjs} +2 -2
- package/fesm2022/acorex-modules-auth-routes--jOmlQkp.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs +83 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs +40 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor.module-A0hevYO2.mjs → acorex-modules-auth-two-factor.module-CmSVriRz.mjs} +4 -6
- package/fesm2022/acorex-modules-auth-two-factor.module-CmSVriRz.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth.mjs +2 -4
- package/fesm2022/acorex-modules-auth.mjs.map +1 -1
- package/fesm2022/acorex-modules-backend.mjs +98 -61
- package/fesm2022/acorex-modules-backend.mjs.map +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +1 -2
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification.mjs.map +1 -1
- package/log-management/lib/audit-logs.entity.d.ts +1 -1
- package/notification/README.md +3 -3
- package/package.json +1 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-jEqtVhBE.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-BbtMSwfI.mjs +0 -72
- package/fesm2022/acorex-modules-auth-app-chooser.component-BbtMSwfI.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-login.module-Drm4fC1I.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-master.layout-cAm6TYeA.mjs +0 -39
- package/fesm2022/acorex-modules-auth-master.layout-cAm6TYeA.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-Ch2Wqi2W.mjs +0 -74
- package/fesm2022/acorex-modules-auth-password.component-Ch2Wqi2W.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-D4CkGaq0.mjs +0 -127
- package/fesm2022/acorex-modules-auth-password.component-D4CkGaq0.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-routes-DyjibH6l.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CJu2Lfbf.mjs +0 -84
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CJu2Lfbf.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-two-factor-code.component-B41iXHoT.mjs +0 -40
- package/fesm2022/acorex-modules-auth-two-factor-code.component-B41iXHoT.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-two-factor.module-A0hevYO2.mjs.map +0 -1
@@ -1,12 +1,11 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { inject, NgZone, isDevMode, Injectable, InjectionToken, Component, ViewChild, NgModule } from '@angular/core';
|
3
|
+
import * as i1$2 from '@acorex/platform/common';
|
4
|
+
import { AXPLayoutService, AXPSignOutAction, AXPSignInAction, AXPLogoComponent, AXPDataProvider, AXPComponentSlotModule, AXPCommonModule } from '@acorex/platform/common';
|
3
5
|
import * as i2 from '@angular/router';
|
4
6
|
import { Router, RouterModule, ROUTES } from '@angular/router';
|
5
7
|
import { AXPUnauthorizedError, AXPUnauthenticatedError, AXPSessionService, AXPAuthGuard } from '@acorex/platform/auth';
|
6
8
|
import { HttpErrorResponse, HttpClientModule } from '@angular/common/http';
|
7
|
-
import { AXPLayoutService, AXPLogoComponent } from '@acorex/platform/layouts';
|
8
|
-
import * as i1$3 from '@acorex/platform/common';
|
9
|
-
import { AXPSignOutAction, AXPSignInAction, AXPDataProvider, AXPCommonModule } from '@acorex/platform/common';
|
10
9
|
import * as i1$1 from '@angular/common';
|
11
10
|
import { CommonModule } from '@angular/common';
|
12
11
|
import * as i1 from '@ngrx/effects';
|
@@ -27,8 +26,6 @@ import { AXAvatarModule } from '@acorex/components/avatar';
|
|
27
26
|
import * as i2$3 from '@acorex/components/image';
|
28
27
|
import { AXImageModule } from '@acorex/components/image';
|
29
28
|
import { MockDataService } from '@acorex/platform/mocks';
|
30
|
-
import * as i1$2 from '@acorex/platform/layout';
|
31
|
-
import { AXPComponentSlotModule } from '@acorex/platform/layout';
|
32
29
|
|
33
30
|
class AXMAuthErrorHandler {
|
34
31
|
constructor() {
|
@@ -105,18 +102,18 @@ const routes = [
|
|
105
102
|
},
|
106
103
|
{
|
107
104
|
path: '',
|
108
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
109
|
-
loadChildren: () => import('./acorex-modules-auth-login.module-
|
105
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-7OSbK7SF.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
106
|
+
loadChildren: () => import('./acorex-modules-auth-login.module-CsfZ__0S.mjs').then((c) => c.AXPSignInModule),
|
110
107
|
},
|
111
108
|
{
|
112
109
|
path: '',
|
113
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
114
|
-
loadChildren: () => import('./acorex-modules-auth-two-factor.module-
|
110
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-7OSbK7SF.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
111
|
+
loadChildren: () => import('./acorex-modules-auth-two-factor.module-CmSVriRz.mjs').then((c) => c.AXPTwoFactorModule),
|
115
112
|
},
|
116
113
|
{
|
117
114
|
path: '',
|
118
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
119
|
-
loadChildren: () => import('./acorex-modules-auth-routes
|
115
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-7OSbK7SF.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
116
|
+
loadChildren: () => import('./acorex-modules-auth-routes--jOmlQkp.mjs').then((c) => c),
|
120
117
|
},
|
121
118
|
{
|
122
119
|
path: 'account',
|
@@ -263,11 +260,11 @@ class AXPAppChooserListComponent {
|
|
263
260
|
this.router.navigate([`/${item.name}/home`]);
|
264
261
|
}
|
265
262
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAppChooserListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
266
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", ngImport: i0, template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\">\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }] }); }
|
263
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", ngImport: i0, template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n @for(application of (applications$ | async); track $index){\r\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\r\n (click)=\"chooseApplication(application)\">\r\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\r\n <div\r\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\r\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\r\n <!-- TODO: logo instead of application icon -->\r\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\r\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\r\n </div>\r\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\r\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\r\n @if(application.name===selectedApplication?.name){\r\n <ax-loading></ax-loading>\r\n }@else {\r\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }] }); }
|
267
264
|
}
|
268
265
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAppChooserListComponent, decorators: [{
|
269
266
|
type: Component,
|
270
|
-
args: [{ selector: 'axp-app-chooser-list', standalone: true, imports: [CommonModule, AXDecoratorModule, AXPLogoComponent, AXLoadingModule], template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\">\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>" }]
|
267
|
+
args: [{ selector: 'axp-app-chooser-list', standalone: true, imports: [CommonModule, AXDecoratorModule, AXPLogoComponent, AXLoadingModule], template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n @for(application of (applications$ | async); track $index){\r\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\r\n (click)=\"chooseApplication(application)\">\r\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\r\n <div\r\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\r\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\r\n <!-- TODO: logo instead of application icon -->\r\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\r\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\r\n </div>\r\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\r\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\r\n @if(application.name===selectedApplication?.name){\r\n <ax-loading></ax-loading>\r\n }@else {\r\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</div>" }]
|
271
268
|
}] });
|
272
269
|
|
273
270
|
class AXMAppChooserSlotComponent {
|
@@ -283,7 +280,7 @@ class AXMAppChooserSlotComponent {
|
|
283
280
|
this.router.navigate([`/${item.name}/home`]);
|
284
281
|
}
|
285
282
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMAppChooserSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
286
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div class=\"ax-bg-surface ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$1.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list" }] }); }
|
283
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if(((applications$ | async)?.length ?? 0) > 1)\r\n{\r\n<ax-button color=\"default\" look=\"blank\" #appChooser>\r\n <ax-icon>\r\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\r\n </ax-icon>\r\n</ax-button>\r\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\r\n <div class=\"ax-bg-surface ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\r\n <axp-app-chooser-list></axp-app-chooser-list>\r\n </div>\r\n</ax-popover>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$1.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list" }] }); }
|
287
284
|
}
|
288
285
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMAppChooserSlotComponent, decorators: [{
|
289
286
|
type: Component,
|
@@ -294,7 +291,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
294
291
|
AXDecoratorModule,
|
295
292
|
AXPLogoComponent,
|
296
293
|
AXPAppChooserListComponent
|
297
|
-
], template: "@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div class=\"ax-bg-surface ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}" }]
|
294
|
+
], template: "@if(((applications$ | async)?.length ?? 0) > 1)\r\n{\r\n<ax-button color=\"default\" look=\"blank\" #appChooser>\r\n <ax-icon>\r\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\r\n </ax-icon>\r\n</ax-button>\r\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\r\n <div class=\"ax-bg-surface ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\r\n <axp-app-chooser-list></axp-app-chooser-list>\r\n </div>\r\n</ax-popover>\r\n}" }]
|
298
295
|
}] });
|
299
296
|
|
300
297
|
class AXPTenantChooserDropdownComponent {
|
@@ -308,11 +305,11 @@ class AXPTenantChooserDropdownComponent {
|
|
308
305
|
this.router.navigate(['/auth/account/tenant-chooser']);
|
309
306
|
}
|
310
307
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPTenantChooserDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
311
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", ngImport: i0, template: "<ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n }\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
|
308
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", ngImport: i0, template: "<ng-container *ngIf=\"tenants$ | async as tenants\">\r\n @if(tenants.length>1){\r\n <div (click)=\"tenantChooser()\"\r\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\r\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\r\n {{ tenant?.title }}\r\n </p>\r\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\r\n </div>\r\n }@else {\r\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\r\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\r\n {{ tenant?.title }}\r\n </p>\r\n </div>\r\n }\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
|
312
309
|
}
|
313
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPTenantChooserDropdownComponent, decorators: [{
|
314
311
|
type: Component,
|
315
|
-
args: [{ selector: 'axp-tenant-chooser-dropdown', standalone: true, imports: [CommonModule, AXDecoratorModule], template: "<ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n }\n</ng-container>" }]
|
312
|
+
args: [{ selector: 'axp-tenant-chooser-dropdown', standalone: true, imports: [CommonModule, AXDecoratorModule], template: "<ng-container *ngIf=\"tenants$ | async as tenants\">\r\n @if(tenants.length>1){\r\n <div (click)=\"tenantChooser()\"\r\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\r\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\r\n {{ tenant?.title }}\r\n </p>\r\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\r\n </div>\r\n }@else {\r\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\r\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\r\n {{ tenant?.title }}\r\n </p>\r\n </div>\r\n }\r\n</ng-container>" }]
|
316
313
|
}] });
|
317
314
|
|
318
315
|
class AXMAuthProfileSlotComponent {
|
@@ -327,7 +324,8 @@ class AXMAuthProfileSlotComponent {
|
|
327
324
|
this.loadImage();
|
328
325
|
}
|
329
326
|
editProfile() {
|
330
|
-
this.router.navigate(['/asc/identity/e/user-info/0/view']);
|
327
|
+
// this.router.navigate(['/asc/identity/e/user-info/0/view']);
|
328
|
+
this.router.navigate(['/asc/oidc/e/user-info/0/view']);
|
331
329
|
}
|
332
330
|
async logOut() {
|
333
331
|
await this.sessionService.signout();
|
@@ -341,7 +339,7 @@ class AXMAuthProfileSlotComponent {
|
|
341
339
|
async loadImage() {
|
342
340
|
try {
|
343
341
|
const url = this.sessionService.user?.avatar;
|
344
|
-
if (url?.toLowerCase().startsWith(
|
342
|
+
if (url?.toLowerCase().startsWith('http')) {
|
345
343
|
this.src = url;
|
346
344
|
}
|
347
345
|
else if (this.sessionService.user?.avatar != 'null' && this.dataService) {
|
@@ -358,7 +356,7 @@ class AXMAuthProfileSlotComponent {
|
|
358
356
|
}
|
359
357
|
}
|
360
358
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMAuthProfileSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
361
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXMAuthProfileSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\n<ax-avatar #avatar color=\"secondary\" [size]=\"32\" class=\"ax-cursor-pointer ax-ms-4\">\n <ax-image [src]=\"src\"></ax-image>\n</ax-avatar>\n<ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <ax-avatar [size]=\"60\">\n <ax-image [src]=\"src\">\n <ax-loading></ax-loading>\n </ax-image>\n </ax-avatar>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"profile-menus ax-text-slate-500\">\n <!-- <ul>\n <li>\n <i class=\"fa-solid fa-folder-open\"></i>\n <span> Project Management </span>\n </li>\n <li>\n <i class=\"fa-solid fa-envelope-open-text\"></i>\n <span>Email Config</span>\n </li>\n <li>\n <i class=\"fa-solid fa-gear\"></i>\n <span>Setting</span>\n </li>\n </ul> -->\n <ul>\n <!-- <li>\n <i class=\"fa-solid fa-gem ax-text-primary-500\"></i>\n <span> Upgrade account </span>\n </li> -->\n <li (click)=\"editProfile()\">\n <i class=\"fa-solid fa-user\"></i>\n <span>Edit profile</span>\n </li>\n </ul>\n <ul>\n <li class=\"ax-text-danger-500\" (click)=\"logOut()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n <span>Logout</span>\n </li>\n </ul>\n </div>\n </div>\n</ax-popover>\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$3.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i3$2.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$1.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }] }); }
|
359
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXMAuthProfileSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\r\n<ax-avatar #avatar color=\"secondary\" [size]=\"32\" class=\"ax-cursor-pointer ax-ms-4\">\r\n <ax-image [src]=\"src\"></ax-image>\r\n</ax-avatar>\r\n<ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\r\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\r\n <ax-avatar [size]=\"60\">\r\n <ax-image [src]=\"src\">\r\n <ax-loading></ax-loading>\r\n </ax-image>\r\n </ax-avatar>\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\r\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\r\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\r\n </div>\r\n </div>\r\n <div class=\"profile-menus ax-text-slate-500\">\r\n <!-- <ul>\r\n <li>\r\n <i class=\"fa-solid fa-folder-open\"></i>\r\n <span> Project Management </span>\r\n </li>\r\n <li>\r\n <i class=\"fa-solid fa-envelope-open-text\"></i>\r\n <span>Email Config</span>\r\n </li>\r\n <li>\r\n <i class=\"fa-solid fa-gear\"></i>\r\n <span>Setting</span>\r\n </li>\r\n </ul> -->\r\n <ul>\r\n <!-- <li>\r\n <i class=\"fa-solid fa-gem ax-text-primary-500\"></i>\r\n <span> Upgrade account </span>\r\n </li> -->\r\n <li (click)=\"editProfile()\">\r\n <i class=\"fa-solid fa-user\"></i>\r\n <span>Edit profile</span>\r\n </li>\r\n </ul>\r\n <ul>\r\n <li class=\"ax-text-danger-500\" (click)=\"logOut()\">\r\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\r\n <span>Logout</span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</ax-popover>\r\n} @else {\r\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\r\n <ax-icon>\r\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\r\n </ax-icon>\r\n</ax-button>\r\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$3.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i3$2.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$1.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }] }); }
|
362
360
|
}
|
363
361
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMAuthProfileSlotComponent, decorators: [{
|
364
362
|
type: Component,
|
@@ -371,7 +369,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
371
369
|
AXDecoratorModule,
|
372
370
|
AXPTenantChooserDropdownComponent,
|
373
371
|
AXLoadingModule,
|
374
|
-
], template: "@if((isAuthenticated$ | async)) {\n<ax-avatar #avatar color=\"secondary\" [size]=\"32\" class=\"ax-cursor-pointer ax-ms-4\">\n <ax-image [src]=\"src\"></ax-image>\n</ax-avatar>\n<ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <ax-avatar [size]=\"60\">\n <ax-image [src]=\"src\">\n <ax-loading></ax-loading>\n </ax-image>\n </ax-avatar>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"profile-menus ax-text-slate-500\">\n <!-- <ul>\n <li>\n <i class=\"fa-solid fa-folder-open\"></i>\n <span> Project Management </span>\n </li>\n <li>\n <i class=\"fa-solid fa-envelope-open-text\"></i>\n <span>Email Config</span>\n </li>\n <li>\n <i class=\"fa-solid fa-gear\"></i>\n <span>Setting</span>\n </li>\n </ul> -->\n <ul>\n <!-- <li>\n <i class=\"fa-solid fa-gem ax-text-primary-500\"></i>\n <span> Upgrade account </span>\n </li> -->\n <li (click)=\"editProfile()\">\n <i class=\"fa-solid fa-user\"></i>\n <span>Edit profile</span>\n </li>\n </ul>\n <ul>\n <li class=\"ax-text-danger-500\" (click)=\"logOut()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n <span>Logout</span>\n </li>\n </ul>\n </div>\n </div>\n</ax-popover>\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}" }]
|
372
|
+
], template: "@if((isAuthenticated$ | async)) {\r\n<ax-avatar #avatar color=\"secondary\" [size]=\"32\" class=\"ax-cursor-pointer ax-ms-4\">\r\n <ax-image [src]=\"src\"></ax-image>\r\n</ax-avatar>\r\n<ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\r\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\r\n <ax-avatar [size]=\"60\">\r\n <ax-image [src]=\"src\">\r\n <ax-loading></ax-loading>\r\n </ax-image>\r\n </ax-avatar>\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\r\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\r\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\r\n </div>\r\n </div>\r\n <div class=\"profile-menus ax-text-slate-500\">\r\n <!-- <ul>\r\n <li>\r\n <i class=\"fa-solid fa-folder-open\"></i>\r\n <span> Project Management </span>\r\n </li>\r\n <li>\r\n <i class=\"fa-solid fa-envelope-open-text\"></i>\r\n <span>Email Config</span>\r\n </li>\r\n <li>\r\n <i class=\"fa-solid fa-gear\"></i>\r\n <span>Setting</span>\r\n </li>\r\n </ul> -->\r\n <ul>\r\n <!-- <li>\r\n <i class=\"fa-solid fa-gem ax-text-primary-500\"></i>\r\n <span> Upgrade account </span>\r\n </li> -->\r\n <li (click)=\"editProfile()\">\r\n <i class=\"fa-solid fa-user\"></i>\r\n <span>Edit profile</span>\r\n </li>\r\n </ul>\r\n <ul>\r\n <li class=\"ax-text-danger-500\" (click)=\"logOut()\">\r\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\r\n <span>Logout</span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</ax-popover>\r\n} @else {\r\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\r\n <ax-icon>\r\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\r\n </ax-icon>\r\n</ax-button>\r\n}" }]
|
375
373
|
}], ctorParameters: () => [], propDecorators: { profilePopover: [{
|
376
374
|
type: ViewChild,
|
377
375
|
args: ['profilePopover']
|
@@ -408,12 +406,12 @@ function routesFacory() {
|
|
408
406
|
routes = [
|
409
407
|
{
|
410
408
|
path: 'tenant-chooser',
|
411
|
-
loadComponent: () => import('./acorex-modules-auth-tenant-chooser.component-
|
409
|
+
loadComponent: () => import('./acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs').then((c) => c.AXPAuthTenantChooserComponent),
|
412
410
|
canActivate: [AXPAuthGuard, canActivateTenantChooser]
|
413
411
|
},
|
414
412
|
{
|
415
413
|
path: 'app-chooser',
|
416
|
-
loadComponent: () => import('./acorex-modules-auth-app-chooser.component-
|
414
|
+
loadComponent: () => import('./acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs').then((c) => c.AXPAuthAppChooserComponent),
|
417
415
|
canActivate: [AXPAuthGuard, canActivateAppChooser]
|
418
416
|
},
|
419
417
|
];
|
@@ -487,7 +485,7 @@ class AXMAuthModule {
|
|
487
485
|
};
|
488
486
|
}
|
489
487
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
490
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: AXMAuthModule, imports: [CommonModule, i1$
|
488
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: AXMAuthModule, imports: [CommonModule, i1$2.AXPCommonModule, HttpClientModule, i2.RouterModule, i1.EffectsFeatureModule, AXPAccountModule] }); }
|
491
489
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXMAuthModule, providers: [AXMAuthErrorHandler], imports: [CommonModule,
|
492
490
|
AXPCommonModule.forChild({ errorHandlers: [AXMAuthErrorHandler] }),
|
493
491
|
HttpClientModule,
|
@@ -515,4 +513,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
515
513
|
*/
|
516
514
|
|
517
515
|
export { AXM_AUTH_CONFIG_TOKEN as A, AXMAuthenticationTypes as a, AXPTenantChooserDropdownComponent as b, AXPAppChooserListComponent as c, AXMAuthErrorHandler as d, AXMDefaultAuthConfigs as e, configAuthModule as f, AXMAuthModule as g, AXPIdleService as h };
|
518
|
-
//# sourceMappingURL=acorex-modules-auth-acorex-modules-auth-
|
516
|
+
//# sourceMappingURL=acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs","sources":["../../../../libs/modules/auth/src/lib/error-handler.ts","../../../../libs/modules/auth/src/lib/auth.config.ts","../../../../libs/modules/auth/src/lib/auth.routes.ts","../../../../libs/modules/auth/src/lib/shared/services/idle.service.ts","../../../../libs/modules/auth/src/lib/store/auth.effects.ts","../../../../libs/modules/auth/src/lib/store/index.ts","../../../../libs/modules/auth/src/lib/account/app-chooser/app-chooser-list.component.ts","../../../../libs/modules/auth/src/lib/account/app-chooser/app-chooser-list.component.html","../../../../libs/modules/auth/src/lib/account/app-chooser/app-chooser-slot.component.ts","../../../../libs/modules/auth/src/lib/account/app-chooser/app-chooser-slot.component.html","../../../../libs/modules/auth/src/lib/account/tenant-chooser/tenant-chooser-dropdown.component.ts","../../../../libs/modules/auth/src/lib/account/tenant-chooser/tenant-chooser-dropdown.component.html","../../../../libs/modules/auth/src/lib/account/profile/profile-slot.component.ts","../../../../libs/modules/auth/src/lib/account/profile/profile-slot.component.html","../../../../libs/modules/auth/src/lib/account/account.module.ts","../../../../libs/modules/auth/src/lib/auth.module.ts","../../../../libs/modules/auth/src/acorex-modules-auth.ts"],"sourcesContent":["import { Injectable, NgZone, inject, isDevMode } from \"@angular/core\";\r\nimport { AXPErrorHandler, AXPLayoutService } from \"@acorex/platform/common\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AXPUnauthenticatedError, AXPUnauthorizedError } from \"@acorex/platform/auth\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class AXMAuthErrorHandler implements AXPErrorHandler {\r\n\r\n\r\n private router = inject(Router);\r\n private layoutService = inject(AXPLayoutService);\r\n private zone = inject(NgZone);\r\n\r\n\r\n\r\n handleError(error: Error, next: (error: any) => void): void {\r\n if (error instanceof HttpErrorResponse) {\r\n if (error.status == 401) {\r\n this.router.navigate(['/auth/login']);\r\n }\r\n else if (error.status == 404) {\r\n this.router.navigate(['/404']);\r\n }\r\n }\r\n else if (error instanceof AXPUnauthorizedError) {\r\n const redirectUrl = error.data?.redirectUrl;\r\n console.error(error.message);\r\n this.router.navigate(['/401'], { queryParams: redirectUrl ? { redirectUrl: redirectUrl } : null });\r\n }\r\n else if (error instanceof AXPUnauthenticatedError) {\r\n console.error(error.message);\r\n const redirectUrl = error.data?.redirectUrl;\r\n this.router.navigate(['/auth/login'], { queryParams: redirectUrl ? { redirectUrl: redirectUrl } : null });\r\n } else {\r\n if (isDevMode()) {\r\n next(error); // Pass the error to the next handler\r\n }\r\n else {\r\n next(error); // maybe we need a error page\r\n }\r\n }\r\n this.layoutService.setNavigationLoading(false);\r\n }\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { UserManagerSettings } from 'oidc-client-ts';\r\n\r\nexport enum AXMAuthenticationTypes {\r\n UsernamePassword,\r\n UsernameEmailPassword,\r\n EmailPassword,\r\n MobilePassword,\r\n EmailCode,\r\n MobileCode,\r\n}\r\n\r\nexport const AXM_AUTH_CONFIG_TOKEN = new InjectionToken<AXMAuthConfigs>('app-module-auth-config', {\r\n providedIn: 'root',\r\n factory: () => {\r\n return AXMDefaultAuthConfigs;\r\n },\r\n});\r\n\r\nexport interface AXMAuthConfigs {\r\n type: AXMAuthenticationTypes;\r\n oidc_settings?: UserManagerSettings;\r\n end_url?: string;\r\n signinPage?: {\r\n description: string;\r\n slogan: string;\r\n };\r\n idleTimeout?: number;\r\n}\r\n\r\nexport const AXMDefaultAuthConfigs: AXMAuthConfigs = {\r\n type: AXMAuthenticationTypes.UsernamePassword,\r\n};\r\n\r\nexport function configAuthModule(config: Partial<AXMAuthConfigs> = AXMDefaultAuthConfigs): AXMAuthConfigs {\r\n return { ...AXMDefaultAuthConfigs, ...config };\r\n}\r\n","import { Route } from '@angular/router';\r\nexport const routes: Route[] = [\r\n {\r\n path: 'auth',\r\n children: [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n redirectTo: 'login',\r\n },\r\n {\r\n path: '',\r\n loadComponent: () => import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\r\n loadChildren: () => import('./login/login.module').then((c) => c.AXPSignInModule),\r\n },\r\n {\r\n path: '',\r\n loadComponent: () => import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\r\n loadChildren: () => import('./two-factor/two-factor.module').then((c) => c.AXPTwoFactorModule),\r\n },\r\n {\r\n path: '',\r\n loadComponent: () => import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\r\n loadChildren: () => import('./forgot/routes').then((c) => c),\r\n },\r\n {\r\n path: 'account',\r\n loadComponent: () => import('./shared/layouts/blank/blank.layout').then((c) => c.AXPAuthBlankLayoutComponent),\r\n loadChildren: () => import('./account/account.module').then((c) => c.AXPAccountModule),\r\n },\r\n // {\r\n // path: '',\r\n // loadComponent: () =>\r\n // import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\r\n // loadChildren: () => import('./register/register.module').then((c) => c.AXPRegisterModule),\r\n // },\r\n ],\r\n },\r\n];\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Subject, Observable, timer, Subscription } from 'rxjs';\r\nimport { startWith, switchMap, tap } from 'rxjs/operators';\r\nimport { AXM_AUTH_CONFIG_TOKEN } from '../../auth.config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPIdleService {\r\n private configs = inject(AXM_AUTH_CONFIG_TOKEN);\r\n private idle$ = new Subject<void>();\r\n private timeoutDuration = this.configs.idleTimeout ?? 10 * 60 * 1000;\r\n private userActivity$ = new Subject<void>();\r\n private idleSubscription: Subscription | null = null;\r\n\r\n constructor() {\r\n this.setupActivityListeners();\r\n }\r\n\r\n get idleState$(): Observable<void> {\r\n return this.idle$.asObservable();\r\n }\r\n\r\n private setupActivityListeners() {\r\n const activityEvents = ['mousemove', 'keydown', 'wheel'];\r\n activityEvents.forEach(event =>\r\n document.addEventListener(event, () => this.resetTimer())\r\n );\r\n }\r\n\r\n startWatching() {\r\n this.stopWatching(); // Stop any existing subscription\r\n this.idleSubscription = this.userActivity$.pipe(\r\n startWith(null),\r\n switchMap(() => timer(this.timeoutDuration)),\r\n tap(() => this.idle$.next()),\r\n ).subscribe();\r\n }\r\n\r\n resetTimer() {\r\n this.userActivity$.next();\r\n }\r\n\r\n stopWatching() {\r\n if (this.idleSubscription) {\r\n this.idleSubscription.unsubscribe();\r\n this.idleSubscription = null;\r\n }\r\n }\r\n}\r\n","import { AXDialogButtonItem, AXDialogService } from \"@acorex/components/dialog\";\r\nimport { AXPSessionService } from \"@acorex/platform/auth\";\r\nimport { AXPSignInAction, AXPSignOutAction } from \"@acorex/platform/common\";\r\nimport { Injectable, inject } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\r\nimport { of, switchMap, tap } from \"rxjs\";\r\nimport { AXPIdleService } from \"../shared/services\";\r\nimport { AXM_AUTH_CONFIG_TOKEN } from \"../auth.config\";\r\n\r\n@Injectable()\r\nexport class AXPAuthEffects {\r\n\r\n private configs = inject(AXM_AUTH_CONFIG_TOKEN);\r\n private sessionService = inject(AXPSessionService);\r\n private idleService = inject(AXPIdleService);\r\n private dialogService = inject(AXDialogService);\r\n private dialogAlreadyOpen = false;\r\n\r\n constructor(private actions$: Actions, private router: Router) { }\r\n\r\n signout$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(AXPSignOutAction),\r\n switchMap((action) => {\r\n this.idleService.stopWatching();\r\n this.router.navigate(['/auth/login']);\r\n return of();\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n signin$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(AXPSignInAction),\r\n switchMap((action) => {\r\n if (this.configs.idleTimeout) {\r\n this.idleService.startWatching();\r\n }\r\n return of();\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n\r\n idle$ = createEffect(\r\n () =>\r\n this.idleService.idleState$.pipe(\r\n tap(() => {\r\n if (!this.dialogAlreadyOpen) {\r\n let time = 60;\r\n let intervalId: number;\r\n const buttonText = (time: number) => `Stay Sign In (${time})`;\r\n const stayButton: AXDialogButtonItem = {\r\n text: buttonText(time),\r\n color: 'primary',\r\n autofocus: true,\r\n onClick: () => {\r\n this.idleService.resetTimer();\r\n dialog.close();\r\n this.dialogAlreadyOpen = false;\r\n clearInterval(intervalId);\r\n }\r\n }\r\n const dialog = this.dialogService.open({\r\n title: \"Session Timeout\",\r\n content: \"You're being timed out due to inactivity. Please choose to stay signed in or to sign off. Otherwise, you will signed off automatically.\",\r\n type: 'warning',\r\n buttons: [\r\n {\r\n text: \"Sign Off\",\r\n color: 'ghost',\r\n onClick: async () => {\r\n await this.sessionService.signout();\r\n dialog.close();\r\n this.dialogAlreadyOpen = false;\r\n clearInterval(intervalId);\r\n }\r\n },\r\n stayButton,\r\n ]\r\n });\r\n this.dialogAlreadyOpen = true;\r\n // Automatically close dialog and sign out after additional time\r\n intervalId = setInterval(() => {\r\n if (time > 0) {\r\n stayButton.text = buttonText(--time);\r\n } else {\r\n clearInterval(intervalId);\r\n this.sessionService.signout();\r\n dialog.close();\r\n this.dialogAlreadyOpen = false;\r\n }\r\n }, 1000);\r\n //\r\n }\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n}\r\n","export * from './auth.effects';\r\n//export * from './auth.actions';","import { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXLoadingModule } from '@acorex/components/loading';\r\nimport { AXPApplication, AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPLogoComponent } from '@acorex/platform/common';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'axp-app-chooser-list',\r\n templateUrl: 'app-chooser-list.component.html',\r\n standalone: true,\r\n imports: [CommonModule, AXDecoratorModule, AXPLogoComponent, AXLoadingModule],\r\n})\r\nexport class AXPAppChooserListComponent {\r\n private router = inject(Router);\r\n private sessionService = inject(AXPSessionService);\r\n\r\n protected selectedApplication: AXPApplication | null = null;\r\n protected applications$ = this.sessionService.applications$;\r\n\r\n async chooseApplication(item: AXPApplication) {\r\n this.selectedApplication = item;\r\n await this.sessionService.setApplication(item);\r\n this.router.navigate([`/${item.name}/home`]);\r\n }\r\n}\r\n","<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n @for(application of (applications$ | async); track $index){\r\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\r\n (click)=\"chooseApplication(application)\">\r\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\r\n <div\r\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\r\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\r\n <!-- TODO: logo instead of application icon -->\r\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\r\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\r\n </div>\r\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\r\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\r\n @if(application.name===selectedApplication?.name){\r\n <ax-loading></ax-loading>\r\n }@else {\r\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</div>","import { AXButtonModule } from \"@acorex/components/button\";\r\nimport { AXDecoratorModule } from \"@acorex/components/decorators\";\r\nimport { AXPopoverModule } from \"@acorex/components/popover\";\r\nimport { AXPApplication, AXPSessionService } from \"@acorex/platform/auth\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Component, inject } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AXPAppChooserListComponent } from \"./app-chooser-list.component\";\r\nimport { of } from \"rxjs\";\r\nimport { AXPLogoComponent } from \"@acorex/platform/common\";\r\n\r\n@Component({\r\n templateUrl: './app-chooser-slot.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n AXButtonModule,\r\n AXPopoverModule,\r\n AXDecoratorModule,\r\n AXPLogoComponent,\r\n AXPAppChooserListComponent\r\n ]\r\n})\r\nexport class AXMAppChooserSlotComponent {\r\n private sessionService = inject(AXPSessionService);\r\n protected tenant$ = this.sessionService.tenant$;\r\n\r\n protected application$ = this.sessionService.application$;\r\n protected applications$ = of([]);\r\n\r\n private router = inject(Router);\r\n\r\n\r\n async chooseApplication(item: AXPApplication) {\r\n //await this.sessionService.selectApplication(item.name);\r\n this.router.navigate([`/${item.name}/home`]);\r\n }\r\n\r\n\r\n}","@if(((applications$ | async)?.length ?? 0) > 1)\r\n{\r\n<ax-button color=\"default\" look=\"blank\" #appChooser>\r\n <ax-icon>\r\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\r\n </ax-icon>\r\n</ax-button>\r\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\r\n <div class=\"ax-bg-surface ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\r\n <axp-app-chooser-list></axp-app-chooser-list>\r\n </div>\r\n</ax-popover>\r\n}","import { Component, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { CommonModule } from '@angular/common';\r\nimport { of } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'axp-tenant-chooser-dropdown',\r\n templateUrl: 'tenant-chooser-dropdown.component.html',\r\n standalone: true,\r\n imports: [CommonModule, AXDecoratorModule]\r\n})\r\nexport class AXPTenantChooserDropdownComponent {\r\n\r\n private router = inject(Router);\r\n private sessionService = inject(AXPSessionService);\r\n protected tenants$ = of([]) // this.sessionService.tenants$;\r\n protected tenant = this.sessionService.tenant;\r\n\r\n tenantChooser() {\r\n this.router.navigate(['/auth/account/tenant-chooser']);\r\n }\r\n\r\n\r\n}","<ng-container *ngIf=\"tenants$ | async as tenants\">\r\n @if(tenants.length>1){\r\n <div (click)=\"tenantChooser()\"\r\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\r\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\r\n {{ tenant?.title }}\r\n </p>\r\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\r\n </div>\r\n }@else {\r\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\r\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\r\n {{ tenant?.title }}\r\n </p>\r\n </div>\r\n }\r\n</ng-container>","import { AXAvatarModule } from '@acorex/components/avatar';\r\nimport { AXButtonModule } from '@acorex/components/button';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXImageModule } from '@acorex/components/image';\r\nimport { AXLoadingModule } from '@acorex/components/loading';\r\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\r\nimport { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPDataProvider } from '@acorex/platform/common';\r\nimport { MockDataService } from '@acorex/platform/mocks';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, ViewChild, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';\r\n\r\n@Component({\r\n templateUrl: './profile-slot.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n AXImageModule,\r\n AXAvatarModule,\r\n AXPopoverModule,\r\n AXButtonModule,\r\n AXDecoratorModule,\r\n AXPTenantChooserDropdownComponent,\r\n AXLoadingModule,\r\n ],\r\n})\r\nexport class AXMAuthProfileSlotComponent {\r\n private router = inject(Router);\r\n private sessionService = inject(AXPSessionService);\r\n private dataService = inject(AXPDataProvider, { optional: true });\r\n private mockerService = inject(MockDataService);\r\n\r\n constructor() {\r\n this.loadImage();\r\n }\r\n protected src!: string;\r\n protected user$ = this.sessionService.user$;\r\n protected tenant$ = this.sessionService.tenant$;\r\n\r\n protected isAuthenticated$ = this.sessionService.isAuthenticated$;\r\n\r\n @ViewChild('profilePopover') profilePopover!: AXPopoverComponent;\r\n\r\n editProfile() {\r\n // this.router.navigate(['/asc/identity/e/user-info/0/view']);\r\n this.router.navigate(['/asc/oidc/e/user-info/0/view']);\r\n }\r\n\r\n async logOut() {\r\n await this.sessionService.signout();\r\n }\r\n\r\n toggleProfileMenu() {\r\n this.profilePopover.open();\r\n }\r\n\r\n protected handleSignIn() {\r\n this.router.navigate(['/auth/login']);\r\n }\r\n private async loadImage() {\r\n try {\r\n const url = this.sessionService.user?.avatar as string;\r\n if (url?.toLowerCase().startsWith('http')) {\r\n this.src = url;\r\n } else if (this.sessionService.user?.avatar != 'null' && this.dataService) {\r\n //TODO: Remove dataService and mockService\r\n const blob = await this.dataService.viewFile(url, '');\r\n this.src = URL.createObjectURL(blob);\r\n } else {\r\n this.src = this.mockerService.avatar();\r\n }\r\n } catch (error) {\r\n console.error('Failed to load image by ID:', error);\r\n }\r\n }\r\n}\r\n","@if((isAuthenticated$ | async)) {\r\n<ax-avatar #avatar color=\"secondary\" [size]=\"32\" class=\"ax-cursor-pointer ax-ms-4\">\r\n <ax-image [src]=\"src\"></ax-image>\r\n</ax-avatar>\r\n<ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\r\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\r\n <ax-avatar [size]=\"60\">\r\n <ax-image [src]=\"src\">\r\n <ax-loading></ax-loading>\r\n </ax-image>\r\n </ax-avatar>\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\r\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\r\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\r\n </div>\r\n </div>\r\n <div class=\"profile-menus ax-text-slate-500\">\r\n <!-- <ul>\r\n <li>\r\n <i class=\"fa-solid fa-folder-open\"></i>\r\n <span> Project Management </span>\r\n </li>\r\n <li>\r\n <i class=\"fa-solid fa-envelope-open-text\"></i>\r\n <span>Email Config</span>\r\n </li>\r\n <li>\r\n <i class=\"fa-solid fa-gear\"></i>\r\n <span>Setting</span>\r\n </li>\r\n </ul> -->\r\n <ul>\r\n <!-- <li>\r\n <i class=\"fa-solid fa-gem ax-text-primary-500\"></i>\r\n <span> Upgrade account </span>\r\n </li> -->\r\n <li (click)=\"editProfile()\">\r\n <i class=\"fa-solid fa-user\"></i>\r\n <span>Edit profile</span>\r\n </li>\r\n </ul>\r\n <ul>\r\n <li class=\"ax-text-danger-500\" (click)=\"logOut()\">\r\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\r\n <span>Logout</span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</ax-popover>\r\n} @else {\r\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\r\n <ax-icon>\r\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\r\n </ax-icon>\r\n</ax-button>\r\n}","import { AXPAuthGuard, AXPSessionService } from '@acorex/platform/auth';\r\nimport { inject, NgModule } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterModule, RouterStateSnapshot, ROUTES, Routes } from '@angular/router';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { AXMAppChooserSlotComponent } from './app-chooser/app-chooser-slot.component';\r\nimport { AXMAuthProfileSlotComponent } from './profile/profile-slot.component';\r\nimport { AXPComponentSlotModule } from '@acorex/platform/common';\r\n\r\n\r\nconst canActivateTenantChooser: CanActivateFn =\r\n async (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const sessionService = inject(AXPSessionService);\r\n const router = inject(Router);\r\n const tenants = await firstValueFrom(sessionService.tenants$);\r\n if (tenants.length == 0) {\r\n return router.createUrlTree(['/auth/login']);\r\n }\r\n if (tenants.length == 1) {\r\n await sessionService.setTenant(tenants[0]);\r\n return router.createUrlTree(['/auth/account/app-chooser']);\r\n }\r\n return true;\r\n };\r\n\r\n\r\nconst canActivateAppChooser: CanActivateFn =\r\n async (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const sessionService = inject(AXPSessionService);\r\n const router = inject(Router);\r\n const apps = await firstValueFrom(sessionService.applications$);\r\n if (apps.length == 0) {\r\n return router.createUrlTree(['/auth/login']);\r\n }\r\n if (apps.length == 1) {\r\n await sessionService.setApplication(apps[0])\r\n return router.createUrlTree([`/${apps[0].name}/home`]);\r\n }\r\n return true\r\n };\r\n\r\n\r\nfunction routesFacory() {\r\n let routes: Routes = [];\r\n routes = [\r\n {\r\n path: 'tenant-chooser',\r\n loadComponent: () =>\r\n import('./tenant-chooser/tenant-chooser.component').then(\r\n (c) => c.AXPAuthTenantChooserComponent\r\n ),\r\n canActivate: [AXPAuthGuard, canActivateTenantChooser]\r\n },\r\n {\r\n path: 'app-chooser',\r\n loadComponent: () =>\r\n import('./app-chooser/app-chooser.component').then((c) => c.AXPAuthAppChooserComponent),\r\n canActivate: [AXPAuthGuard, canActivateAppChooser]\r\n },\r\n ];\r\n return routes;\r\n}\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n RouterModule,\r\n //\r\n AXPComponentSlotModule.forChild({\r\n \"header-end\": [\r\n {\r\n name: \"app-choser\",\r\n component: AXMAppChooserSlotComponent,\r\n },\r\n {\r\n name: \"profile\",\r\n component: AXMAuthProfileSlotComponent,\r\n },\r\n ]\r\n })\r\n ],\r\n exports: [],\r\n providers: [\r\n {\r\n provide: ROUTES,\r\n multi: true,\r\n useFactory: routesFacory,\r\n },\r\n ],\r\n})\r\nexport class AXPAccountModule { }\r\n","import { AXPCommonModule } from '@acorex/platform/common';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { routes } from './auth.routes';\r\nimport { AXMAuthErrorHandler } from './error-handler';\r\nimport { AXPAuthEffects } from './store';\r\nimport { AXPAccountModule } from './account/account.module';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n AXPCommonModule.forChild({ errorHandlers: [AXMAuthErrorHandler] }),\r\n HttpClientModule,\r\n RouterModule.forChild(routes),\r\n EffectsModule.forFeature([AXPAuthEffects]),\r\n AXPAccountModule\r\n ],\r\n providers: [AXMAuthErrorHandler],\r\n})\r\nexport class AXMAuthModule {\r\n static forRoot(): ModuleWithProviders<AXMAuthModule> {\r\n return {\r\n ngModule: AXMAuthModule,\r\n providers: [],\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["switchMap","tap","i1","i2","i3","i4","i5","i6","i7"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAgCjC,KAAA;IA5BG,WAAW,CAAC,KAAY,EAAE,IAA0B,EAAA;AAChD,QAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACpC,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;aACzC;AACI,iBAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClC;SACJ;AACI,aAAA,IAAI,KAAK,YAAY,oBAAoB,EAAE;AAC5C,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;AAC5C,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;SACtG;AACI,aAAA,IAAI,KAAK,YAAY,uBAAuB,EAAE;AAC/C,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;SAC7G;aAAM;YACH,IAAI,SAAS,EAAE,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC;aACf;iBACI;AACD,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC;aACf;SACJ;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAClD;8GApCQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ICHC,uBAOX;AAPD,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,sBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAgB,CAAA;AAChB,IAAA,sBAAA,CAAA,sBAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAqB,CAAA;AACrB,IAAA,sBAAA,CAAA,sBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACb,IAAA,sBAAA,CAAA,sBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc,CAAA;AACd,IAAA,sBAAA,CAAA,sBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,sBAAA,CAAA,sBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACZ,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,GAOjC,EAAA,CAAA,CAAA,CAAA;MAEY,qBAAqB,GAAG,IAAI,cAAc,CAAiB,wBAAwB,EAAE;AAChG,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;AACZ,QAAA,OAAO,qBAAqB,CAAC;KAC9B;AACF,CAAA,EAAE;AAaU,MAAA,qBAAqB,GAAmB;IACnD,IAAI,EAAE,sBAAsB,CAAC,gBAAgB;EAC7C;AAEc,SAAA,gBAAgB,CAAC,MAAA,GAAkC,qBAAqB,EAAA;AACtF,IAAA,OAAO,EAAE,GAAG,qBAAqB,EAAE,GAAG,MAAM,EAAE,CAAC;AACjD;;ACnCO,MAAM,MAAM,GAAY;AAC7B,IAAA;AACE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,UAAU,EAAE,OAAO;AACpB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE,MAAM,OAAO,kDAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC;AAChH,gBAAA,YAAY,EAAE,MAAM,OAAO,iDAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAClF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE,MAAM,OAAO,kDAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC;AAChH,gBAAA,YAAY,EAAE,MAAM,OAAO,sDAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;AAC/F,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE,MAAM,OAAO,kDAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC;AAChH,gBAAA,YAAY,EAAE,MAAM,OAAO,2CAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7D,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,aAAa,EAAE,MAAM,OAAO,iDAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;AAC7G,gBAAA,YAAY,EAAE,MAAM,8DAAkC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AACvF,aAAA;;;;;;;AAOF,SAAA;AACF,KAAA;CACF;;MChCY,cAAc,CAAA;AAOvB,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC5B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;QACpC,IAAgB,CAAA,gBAAA,GAAwB,IAAI,CAAC;QAGjD,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;AAED,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;KACpC;IAEO,sBAAsB,GAAA;QAC1B,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,cAAc,CAAC,OAAO,CAAC,KAAK,IACxB,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAC5D,CAAC;KACL;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAC3C,SAAS,CAAC,IAAI,CAAC,EACf,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAC5C,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAC/B,CAAC,SAAS,EAAE,CAAC;KACjB;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;IAED,YAAY,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAChC;KACJ;8GAxCQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCMrB,cAAc,CAAA;IAQvB,WAAoB,CAAA,QAAiB,EAAU,MAAc,EAAA;QAAzC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AANrD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QACxC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAIlC,IAAQ,CAAA,QAAA,GAAG,YAAY,CACnB,MACI,IAAI,CAAC,QAAQ,CAAC,IAAI,CACd,MAAM,CAAC,gBAAgB,CAAC,EACxBA,WAAS,CAAC,CAAC,MAAM,KAAI;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YACtC,OAAO,EAAE,EAAE,CAAC;SACf,CAAC,CACL,EACL,EAAE,QAAQ,EAAE,KAAK,EAAE,CACtB,CAAC;QAEF,IAAO,CAAA,OAAA,GAAG,YAAY,CAClB,MACI,IAAI,CAAC,QAAQ,CAAC,IAAI,CACd,MAAM,CAAC,eAAe,CAAC,EACvBA,WAAS,CAAC,CAAC,MAAM,KAAI;AACjB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;aACpC;YACD,OAAO,EAAE,EAAE,CAAC;SACf,CAAC,CACL,EACL,EAAE,QAAQ,EAAE,KAAK,EAAE,CACtB,CAAC;AAGF,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAChB,MACI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAC5BC,KAAG,CAAC,MAAK;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBACzB,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,gBAAA,IAAI,UAAkB,CAAC;gBACvB,MAAM,UAAU,GAAG,CAAC,IAAY,KAAK,CAAA,cAAA,EAAiB,IAAI,CAAA,CAAA,CAAG,CAAC;AAC9D,gBAAA,MAAM,UAAU,GAAuB;AACnC,oBAAA,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;AACtB,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,MAAK;AACV,wBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;wBAC9B,MAAM,CAAC,KAAK,EAAE,CAAC;AACf,wBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;wBAC/B,aAAa,CAAC,UAAU,CAAC,CAAC;qBAC7B;iBACJ,CAAA;AACD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACnC,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,OAAO,EAAE,yIAAyI;AAClJ,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,OAAO,EAAE;AACL,wBAAA;AACI,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,KAAK,EAAE,OAAO;4BACd,OAAO,EAAE,YAAW;AAChB,gCAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gCACpC,MAAM,CAAC,KAAK,EAAE,CAAC;AACf,gCAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gCAC/B,aAAa,CAAC,UAAU,CAAC,CAAC;6BAC7B;AACJ,yBAAA;wBACD,UAAU;AACb,qBAAA;AACJ,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;;AAE9B,gBAAA,UAAU,GAAG,WAAW,CAAC,MAAK;AAC1B,oBAAA,IAAI,IAAI,GAAG,CAAC,EAAE;wBACV,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;qBACxC;yBAAM;wBACH,aAAa,CAAC,UAAU,CAAC,CAAC;AAC1B,wBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;wBAC9B,MAAM,CAAC,KAAK,EAAE,CAAC;AACf,wBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;qBAClC;iBACJ,EAAE,IAAI,CAAC,CAAC;;aAEZ;SACJ,CAAC,CACL,EACL,EAAE,QAAQ,EAAE,KAAK,EAAE,CACtB,CAAC;KApFgE;8GARzD,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAd,cAAc,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACTX;;MCaa,0BAA0B,CAAA;AANvC,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEzC,IAAmB,CAAA,mBAAA,GAA0B,IAAI,CAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;AAO7D,KAAA;IALC,MAAM,iBAAiB,CAAC,IAAoB,EAAA;AAC1C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAO,KAAA,CAAA,CAAC,CAAC,CAAC;KAC9C;8GAXU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,gFCdvC,8/CAsBM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDVM,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,iIAAoB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEjE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAEpB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,8/CAAA,EAAA,CAAA;;;MEWlE,0BAA0B,CAAA;AAZvC,IAAA,WAAA,GAAA;AAaY,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAEtC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAEzB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AASnC,KAAA;IANG,MAAM,iBAAiB,CAAC,IAAoB,EAAA;;AAExC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAO,KAAA,CAAA,CAAC,CAAC,CAAC;KAChD;8GAbQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBvC,ykBAYC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGO,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEjB,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGrB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAZtC,SAAS;AAEM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACL,YAAY;wBACZ,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,0BAA0B;AAC7B,qBAAA,EAAA,QAAA,EAAA,ykBAAA,EAAA,CAAA;;;MERQ,iCAAiC,CAAA;AAN9C,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;AACjB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAOjD,KAAA;IALG,aAAa,GAAA;QACT,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC;KAC1D;8GATQ,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,ECb9C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,s6BAkBe,EDPD,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2LAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAE3B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,s6BAAA,EAAA,CAAA;;;MEiBjC,2BAA2B,CAAA;AAMtC,IAAA,WAAA,GAAA;AALQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC3C,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAMtC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAEtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;QANhE,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IASD,WAAW,GAAA;;QAET,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC;KACxD;AAED,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;KACrC;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;IAES,YAAY,GAAA;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;KACvC;AACO,IAAA,MAAM,SAAS,GAAA;AACrB,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAgB,CAAC;YACvD,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;aAChB;AAAM,iBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;;AAEzE,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;aACxC;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;SACrD;KACF;8GAhDU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,0LC5BxC,8sEAyDC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCG,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,sTACf,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,EACjB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iCAAiC,uEACjC,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGN,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,iBAAiB;wBACjB,iCAAiC;wBACjC,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,8sEAAA,EAAA,CAAA;wDAiB4B,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB,CAAA;;;AElC7B,MAAM,wBAAwB,GAC5B,OAAO,KAA6B,EAAE,KAA0B,KAAI;AAClE,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACjD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC9D,IAAA,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;QACvB,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;KAC9C;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;QACvB,MAAM,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC;KAC5D;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAGJ,MAAM,qBAAqB,GACzB,OAAO,KAA6B,EAAE,KAA0B,KAAI;AAClE,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACjD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AAChE,IAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QACpB,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;KAC9C;AACD,IAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QACpB,MAAM,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,QAAA,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAO,KAAA,CAAA,CAAC,CAAC,CAAC;KACxD;AACD,IAAA,OAAO,IAAI,CAAA;AACb,CAAC,CAAC;AAGJ,SAAS,YAAY,GAAA;IACnB,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,IAAA,MAAM,GAAG;AACP,QAAA;AACE,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,aAAa,EAAE,MACb,OAAO,6DAA2C,CAAC,CAAC,IAAI,CACtD,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CACvC;AACH,YAAA,WAAW,EAAE,CAAC,YAAY,EAAE,wBAAwB,CAAC;AACtD,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,aAAa,EAAE,MACb,OAAO,0DAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC;AACzF,YAAA,WAAW,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC;AACnD,SAAA;KACF,CAAC;AACF,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;MA6BY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,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,gBAAgB,YAxBzB,YAAY,EAAAN,IAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,EAAA;AAwBH,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,gBAAgB,EARhB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,YAAY;AACzB,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAtBC,YAAY;;YAEZ,sBAAsB,CAAC,QAAQ,CAAC;AAC9B,gBAAA,YAAY,EAAE;AACZ,oBAAA;AACE,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,SAAS,EAAE,0BAA0B;AACtC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,SAAS,EAAE,2BAA2B;AACvC,qBAAA;AACF,iBAAA;aACF,CAAC,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAWO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA3B5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;;wBAEZ,sBAAsB,CAAC,QAAQ,CAAC;AAC9B,4BAAA,YAAY,EAAE;AACZ,gCAAA;AACE,oCAAA,IAAI,EAAE,YAAY;AAClB,oCAAA,SAAS,EAAE,0BAA0B;AACtC,iCAAA;AACD,gCAAA;AACE,oCAAA,IAAI,EAAE,SAAS;AACf,oCAAA,SAAS,EAAE,2BAA2B;AACvC,iCAAA;AACF,6BAAA;yBACF,CAAC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,YAAY;AACzB,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;;;;;;;;MCjEY,aAAa,CAAA;AACxB,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE,EAAE;SACd,CAAC;KACH;8GANU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,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,aAAa,EATtB,OAAA,EAAA,CAAA,YAAY,EAEZA,IAAA,CAAA,eAAA,EAAA,gBAAgB,4CAGhB,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;AAIP,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,aAAa,EAFb,SAAA,EAAA,CAAC,mBAAmB,CAAC,YAP9B,YAAY;YACZ,eAAe,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAClE,gBAAgB;AAChB,YAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC;YAC1C,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;wBAClE,gBAAgB;AAChB,wBAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC;wBAC1C,gBAAgB;AACjB,qBAAA;oBACD,SAAS,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA,CAAA;;;ACtBD;;AAEG;;;;"}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { inject, Component, ViewEncapsulation } from '@angular/core';
|
3
|
+
import * as i3 from '@acorex/components/avatar';
|
4
|
+
import { AXAvatarModule } from '@acorex/components/avatar';
|
5
|
+
import { AXButtonModule } from '@acorex/components/button';
|
6
|
+
import { AXCheckBoxModule } from '@acorex/components/check-box';
|
7
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
8
|
+
import { AXFormModule } from '@acorex/components/form';
|
9
|
+
import * as i2 from '@acorex/components/image';
|
10
|
+
import { AXImageModule } from '@acorex/components/image';
|
11
|
+
import { AXLabelModule } from '@acorex/components/label';
|
12
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
13
|
+
import { AXTextBoxModule } from '@acorex/components/text-box';
|
14
|
+
import * as i6 from '@acorex/core/translation';
|
15
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
16
|
+
import { AXPSessionService } from '@acorex/platform/auth';
|
17
|
+
import { AXP_PLATFORM_CONFIG_TOKEN, AXPLogoComponent } from '@acorex/platform/common';
|
18
|
+
import * as i1 from '@angular/common';
|
19
|
+
import { CommonModule } from '@angular/common';
|
20
|
+
import { Router } from '@angular/router';
|
21
|
+
import { b as AXPTenantChooserDropdownComponent, c as AXPAppChooserListComponent } from './acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs';
|
22
|
+
import { of } from 'rxjs';
|
23
|
+
import '@angular/common/http';
|
24
|
+
import '@ngrx/effects';
|
25
|
+
import '@acorex/components/dialog';
|
26
|
+
import 'rxjs/operators';
|
27
|
+
import '@acorex/components/popover';
|
28
|
+
import '@acorex/platform/mocks';
|
29
|
+
|
30
|
+
class AXPAuthAppChooserComponent {
|
31
|
+
constructor() {
|
32
|
+
this.router = inject(Router);
|
33
|
+
this.platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);
|
34
|
+
this.sessionService = inject(AXPSessionService);
|
35
|
+
this.user = this.sessionService.user;
|
36
|
+
this.tenants$ = of([]); //this.sessionService.tenants$;
|
37
|
+
this.tenant = this.sessionService.tenant;
|
38
|
+
}
|
39
|
+
tenantChooser() {
|
40
|
+
this.router.navigate(['/auth/account/tenant-chooser']);
|
41
|
+
}
|
42
|
+
async handleSignout() {
|
43
|
+
await this.sessionService.signout();
|
44
|
+
this.router.navigate(['/auth/login']);
|
45
|
+
}
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAuthAppChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPAuthAppChooserComponent, isStandalone: true, selector: "axp-auth-app-chooser", ngImport: i0, template: "<main *translate=\"let t\"\r\n class=\"ax-w-full ax-space-y-10 ax-h-[100vh] ax-flex ax-flex-col ax-items-center ax-justify-center ax-bg-surface md:ax-bg-default\">\r\n <section>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-w-36 ax-mx-auto ax-text-2xl ax-font-bold\"></axp-logo>\r\n </section>\r\n <section class=\"ax-flex ax-justify-center\">\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-center ax-text-center ax-flex-col ax-items-center ax-border ax-rounded-lg ax-shadow-lg ax-p-6 md:ax-w-96 ax-w-80\">\r\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\r\n @if(user?.avatar){\r\n <ax-image [src]=\"user?.avatar\"></ax-image>\r\n }\r\n </ax-avatar>\r\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\r\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\r\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\r\n {{ t('application-chooser.description', { scope: 'auth' }) | async }}\r\n </p>\r\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n <axp-app-chooser-list></axp-app-chooser-list>\r\n </div>\r\n </div>\r\n </section>\r\n <section>\r\n <p class=\"ax-text-neutral-400 ax-text-sm\">\r\n {{ t('application-chooser.footer', { scope: 'auth' }) | async }}\r\n <ng-container *ngIf=\"tenants$ | async as tenants\">\r\n @if(tenants.length > 1){\r\n <a (click)=\"tenantChooser()\" class=\"ax-text-primary-500 ax-cursor-pointer ax-font-medium hover:ax-underline\">\r\n {{ t('application-chooser.backCompany', { scope: 'auth' }) | async }}\r\n </a>\r\n } @else {\r\n <a (click)=\"handleSignout()\" class=\"ax-text-primary-500 ax-font-medium ax-cursor-pointer hover:ax-underline\">\r\n {{ t('backLogin', { scope: 'auth' }) | async }}\r\n </a>\r\n }\r\n </ng-container>\r\n </p>\r\n </section>\r\n</main>", styles: [".gradient{background:-webkit-linear-gradient(var(--ax-current-v1),var(--ax-current-v2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i3.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["source"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i6.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list" }], encapsulation: i0.ViewEncapsulation.None }); }
|
48
|
+
}
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAuthAppChooserComponent, decorators: [{
|
50
|
+
type: Component,
|
51
|
+
args: [{ selector: 'axp-auth-app-chooser', imports: [
|
52
|
+
CommonModule,
|
53
|
+
AXFormModule,
|
54
|
+
AXTextBoxModule,
|
55
|
+
AXButtonModule,
|
56
|
+
AXLabelModule,
|
57
|
+
AXCheckBoxModule,
|
58
|
+
AXAvatarModule,
|
59
|
+
AXImageModule,
|
60
|
+
AXDecoratorModule,
|
61
|
+
AXPLogoComponent,
|
62
|
+
AXLoadingModule,
|
63
|
+
AXTranslationModule,
|
64
|
+
AXPTenantChooserDropdownComponent,
|
65
|
+
AXPAppChooserListComponent
|
66
|
+
], encapsulation: ViewEncapsulation.None, standalone: true, template: "<main *translate=\"let t\"\r\n class=\"ax-w-full ax-space-y-10 ax-h-[100vh] ax-flex ax-flex-col ax-items-center ax-justify-center ax-bg-surface md:ax-bg-default\">\r\n <section>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-w-36 ax-mx-auto ax-text-2xl ax-font-bold\"></axp-logo>\r\n </section>\r\n <section class=\"ax-flex ax-justify-center\">\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-center ax-text-center ax-flex-col ax-items-center ax-border ax-rounded-lg ax-shadow-lg ax-p-6 md:ax-w-96 ax-w-80\">\r\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\r\n @if(user?.avatar){\r\n <ax-image [src]=\"user?.avatar\"></ax-image>\r\n }\r\n </ax-avatar>\r\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\r\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\r\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\r\n {{ t('application-chooser.description', { scope: 'auth' }) | async }}\r\n </p>\r\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n <axp-app-chooser-list></axp-app-chooser-list>\r\n </div>\r\n </div>\r\n </section>\r\n <section>\r\n <p class=\"ax-text-neutral-400 ax-text-sm\">\r\n {{ t('application-chooser.footer', { scope: 'auth' }) | async }}\r\n <ng-container *ngIf=\"tenants$ | async as tenants\">\r\n @if(tenants.length > 1){\r\n <a (click)=\"tenantChooser()\" class=\"ax-text-primary-500 ax-cursor-pointer ax-font-medium hover:ax-underline\">\r\n {{ t('application-chooser.backCompany', { scope: 'auth' }) | async }}\r\n </a>\r\n } @else {\r\n <a (click)=\"handleSignout()\" class=\"ax-text-primary-500 ax-font-medium ax-cursor-pointer hover:ax-underline\">\r\n {{ t('backLogin', { scope: 'auth' }) | async }}\r\n </a>\r\n }\r\n </ng-container>\r\n </p>\r\n </section>\r\n</main>", styles: [".gradient{background:-webkit-linear-gradient(var(--ax-current-v1),var(--ax-current-v2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}\n"] }]
|
67
|
+
}] });
|
68
|
+
|
69
|
+
export { AXPAuthAppChooserComponent };
|
70
|
+
//# sourceMappingURL=acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs","sources":["../../../../libs/modules/auth/src/lib/account/app-chooser/app-chooser.component.ts","../../../../libs/modules/auth/src/lib/account/app-chooser/app-chooser.component.html"],"sourcesContent":["import { Component, ViewEncapsulation, inject } from '@angular/core';\r\n\r\nimport { AXAvatarModule } from '@acorex/components/avatar';\r\nimport { AXButtonModule } from '@acorex/components/button';\r\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXFormModule } from '@acorex/components/form';\r\nimport { AXImageModule } from '@acorex/components/image';\r\nimport { AXLabelModule } from '@acorex/components/label';\r\nimport { AXLoadingModule } from '@acorex/components/loading';\r\nimport { AXTextBoxModule } from '@acorex/components/text-box';\r\nimport { AXTranslationModule } from '@acorex/core/translation';\r\nimport { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPLogoComponent, AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';\r\nimport { AXPAppChooserListComponent } from './app-chooser-list.component';\r\nimport { of } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'axp-auth-app-chooser',\r\n templateUrl: './app-chooser.component.html',\r\n styleUrls: ['./app-chooser.component.scss'],\r\n imports: [\r\n CommonModule,\r\n AXFormModule,\r\n AXTextBoxModule,\r\n AXButtonModule,\r\n AXLabelModule,\r\n AXCheckBoxModule,\r\n AXAvatarModule,\r\n AXImageModule,\r\n AXDecoratorModule,\r\n AXPLogoComponent,\r\n AXLoadingModule,\r\n AXTranslationModule,\r\n AXPTenantChooserDropdownComponent,\r\n AXPAppChooserListComponent\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n})\r\nexport class AXPAuthAppChooserComponent {\r\n\r\n private router = inject(Router);\r\n protected platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);\r\n private sessionService = inject(AXPSessionService);\r\n\r\n protected user = this.sessionService.user;\r\n protected tenants$ = of([])//this.sessionService.tenants$;\r\n protected tenant = this.sessionService.tenant;\r\n\r\n\r\n tenantChooser() {\r\n this.router.navigate(['/auth/account/tenant-chooser']);\r\n }\r\n\r\n async handleSignout() {\r\n await this.sessionService.signout();\r\n this.router.navigate(['/auth/login']);\r\n }\r\n\r\n\r\n}\r\n","<main *translate=\"let t\"\r\n class=\"ax-w-full ax-space-y-10 ax-h-[100vh] ax-flex ax-flex-col ax-items-center ax-justify-center ax-bg-surface md:ax-bg-default\">\r\n <section>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-w-36 ax-mx-auto ax-text-2xl ax-font-bold\"></axp-logo>\r\n </section>\r\n <section class=\"ax-flex ax-justify-center\">\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-center ax-text-center ax-flex-col ax-items-center ax-border ax-rounded-lg ax-shadow-lg ax-p-6 md:ax-w-96 ax-w-80\">\r\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\r\n @if(user?.avatar){\r\n <ax-image [src]=\"user?.avatar\"></ax-image>\r\n }\r\n </ax-avatar>\r\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\r\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\r\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\r\n {{ t('application-chooser.description', { scope: 'auth' }) | async }}\r\n </p>\r\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n <axp-app-chooser-list></axp-app-chooser-list>\r\n </div>\r\n </div>\r\n </section>\r\n <section>\r\n <p class=\"ax-text-neutral-400 ax-text-sm\">\r\n {{ t('application-chooser.footer', { scope: 'auth' }) | async }}\r\n <ng-container *ngIf=\"tenants$ | async as tenants\">\r\n @if(tenants.length > 1){\r\n <a (click)=\"tenantChooser()\" class=\"ax-text-primary-500 ax-cursor-pointer ax-font-medium hover:ax-underline\">\r\n {{ t('application-chooser.backCompany', { scope: 'auth' }) | async }}\r\n </a>\r\n } @else {\r\n <a (click)=\"handleSignout()\" class=\"ax-text-primary-500 ax-font-medium ax-cursor-pointer hover:ax-underline\">\r\n {{ t('backLogin', { scope: 'auth' }) | async }}\r\n </a>\r\n }\r\n </ng-container>\r\n </p>\r\n </section>\r\n</main>"],"names":["i2","i3","i4"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-auth-blank.layout-BOdRxDNv.mjs","sources":["../../../../libs/modules/auth/src/lib/shared/layouts/blank/blank.layout.ts","../../../../libs/modules/auth/src/lib/shared/layouts/blank/blank.layout.html"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n templateUrl: 'blank.layout.html',\n imports: [RouterModule],\n standalone: true,\n})\nexport class AXPAuthBlankLayoutComponent implements OnInit {\n constructor() { }\n\n ngOnInit() { }\n}\n","<router-outlet></router-outlet>"],"names":["i1"],"mappings":";;;;;MAQa,2BAA2B,CAAA;AACtC,IAAA,WAAA,GAAA,GAAiB;AAEjB,IAAA,QAAQ,MAAM;8GAHH,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRxC,iCAA+B,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;8BAEC,CAAC,YAAY,CAAC,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EAAA,iCAAA,EAAA,CAAA;;;;;"}
|
1
|
+
{"version":3,"file":"acorex-modules-auth-blank.layout-BOdRxDNv.mjs","sources":["../../../../libs/modules/auth/src/lib/shared/layouts/blank/blank.layout.ts","../../../../libs/modules/auth/src/lib/shared/layouts/blank/blank.layout.html"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@Component({\r\n templateUrl: 'blank.layout.html',\r\n imports: [RouterModule],\r\n standalone: true,\r\n})\r\nexport class AXPAuthBlankLayoutComponent implements OnInit {\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n}\r\n","<router-outlet></router-outlet>"],"names":["i1"],"mappings":";;;;;MAQa,2BAA2B,CAAA;AACtC,IAAA,WAAA,GAAA,GAAiB;AAEjB,IAAA,QAAQ,MAAM;8GAHH,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRxC,iCAA+B,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;8BAEC,CAAC,YAAY,CAAC,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EAAA,iCAAA,EAAA,CAAA;;;;;"}
|
@@ -1,11 +1,10 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { inject, NgModule } from '@angular/core';
|
3
3
|
import { RouterModule, ROUTES } from '@angular/router';
|
4
|
-
import { A as AXM_AUTH_CONFIG_TOKEN, a as AXMAuthenticationTypes } from './acorex-modules-auth-acorex-modules-auth-
|
4
|
+
import { A as AXM_AUTH_CONFIG_TOKEN, a as AXMAuthenticationTypes } from './acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs';
|
5
|
+
import '@acorex/platform/common';
|
5
6
|
import '@acorex/platform/auth';
|
6
7
|
import '@angular/common/http';
|
7
|
-
import '@acorex/platform/layouts';
|
8
|
-
import '@acorex/platform/common';
|
9
8
|
import '@angular/common';
|
10
9
|
import '@ngrx/effects';
|
11
10
|
import '@acorex/components/dialog';
|
@@ -18,7 +17,6 @@ import '@acorex/components/loading';
|
|
18
17
|
import '@acorex/components/avatar';
|
19
18
|
import '@acorex/components/image';
|
20
19
|
import '@acorex/platform/mocks';
|
21
|
-
import '@acorex/platform/layout';
|
22
20
|
|
23
21
|
function routesFacory() {
|
24
22
|
const val = inject(AXM_AUTH_CONFIG_TOKEN);
|
@@ -32,10 +30,10 @@ function routesFacory() {
|
|
32
30
|
AXMAuthenticationTypes.EmailPassword,
|
33
31
|
AXMAuthenticationTypes.MobilePassword,
|
34
32
|
].includes(val.type)) {
|
35
|
-
return import('./acorex-modules-auth-password.component-
|
33
|
+
return import('./acorex-modules-auth-password.component-V2IWBUZb.mjs').then((c) => c.AXPLoginPasswordComponent);
|
36
34
|
}
|
37
35
|
else {
|
38
|
-
return import('./acorex-modules-auth-password.component-
|
36
|
+
return import('./acorex-modules-auth-password.component-V2IWBUZb.mjs').then((c) => c.AXPLoginPasswordComponent);
|
39
37
|
}
|
40
38
|
},
|
41
39
|
},
|
@@ -69,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
69
67
|
}] });
|
70
68
|
|
71
69
|
export { AXPSignInModule };
|
72
|
-
//# sourceMappingURL=acorex-modules-auth-login.module-
|
70
|
+
//# sourceMappingURL=acorex-modules-auth-login.module-CsfZ__0S.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-auth-login.module-CsfZ__0S.mjs","sources":["../../../../libs/modules/auth/src/lib/login/login.module.ts"],"sourcesContent":["import { NgModule, inject } from '@angular/core';\r\nimport { ROUTES, RouterModule, Routes } from '@angular/router';\r\nimport { AXMAuthenticationTypes, AXM_AUTH_CONFIG_TOKEN } from '../auth.config';\r\n\r\nfunction routesFacory() {\r\n const val = inject(AXM_AUTH_CONFIG_TOKEN);\r\n let routes: Routes = [];\r\n routes = [\r\n {\r\n path: 'login',\r\n loadComponent: () => {\r\n if (\r\n [\r\n AXMAuthenticationTypes.UsernamePassword,\r\n AXMAuthenticationTypes.EmailPassword,\r\n AXMAuthenticationTypes.MobilePassword,\r\n ].includes(val.type)\r\n ) {\r\n return import('./password/password.component').then((c) => c.AXPLoginPasswordComponent);\r\n } else {\r\n return import('./password/password.component').then((c) => c.AXPLoginPasswordComponent);\r\n }\r\n },\r\n },\r\n ];\r\n return routes;\r\n}\r\n\r\n@NgModule({\r\n imports: [RouterModule],\r\n exports: [],\r\n providers: [\r\n {\r\n provide: ROUTES,\r\n multi: true,\r\n useFactory: routesFacory,\r\n },\r\n ],\r\n})\r\nexport class AXPSignInModule { }\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAIA,SAAS,YAAY,GAAA;AACnB,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,IAAA,MAAM,GAAG;AACP,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;YACb,aAAa,EAAE,MAAK;gBAClB,IACE;AACE,oBAAA,sBAAsB,CAAC,gBAAgB;AACvC,oBAAA,sBAAsB,CAAC,aAAa;AACpC,oBAAA,sBAAsB,CAAC,cAAc;AACtC,iBAAA,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EACpB;AACA,oBAAA,OAAO,OAAO,uDAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC,CAAC;iBACzF;qBAAM;AACL,oBAAA,OAAO,OAAO,uDAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC,CAAC;iBACzF;aACF;AACF,SAAA;KACF,CAAC;AACF,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;MAaY,eAAe,CAAA;8GAAf,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,YAVhB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAUX,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,EARf,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,YAAY;AACzB,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CARS,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAUX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,YAAY;AACzB,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;;;;;"}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import * as i1 from '@acorex/platform/common';
|
2
|
+
import { AXP_PLATFORM_CONFIG_TOKEN, AXPLogoComponent, AXPComponentSlotModule } from '@acorex/platform/common';
|
3
|
+
import * as i0 from '@angular/core';
|
4
|
+
import { inject, Component, ViewEncapsulation } from '@angular/core';
|
5
|
+
import * as i2 from '@angular/router';
|
6
|
+
import { RouterModule } from '@angular/router';
|
7
|
+
import { A as AXM_AUTH_CONFIG_TOKEN } from './acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs';
|
8
|
+
import '@acorex/platform/auth';
|
9
|
+
import '@angular/common/http';
|
10
|
+
import '@angular/common';
|
11
|
+
import '@ngrx/effects';
|
12
|
+
import '@acorex/components/dialog';
|
13
|
+
import 'rxjs';
|
14
|
+
import 'rxjs/operators';
|
15
|
+
import '@acorex/components/button';
|
16
|
+
import '@acorex/components/decorators';
|
17
|
+
import '@acorex/components/popover';
|
18
|
+
import '@acorex/components/loading';
|
19
|
+
import '@acorex/components/avatar';
|
20
|
+
import '@acorex/components/image';
|
21
|
+
import '@acorex/platform/mocks';
|
22
|
+
|
23
|
+
class AXPAuthMasterLayoutComponent {
|
24
|
+
constructor() {
|
25
|
+
this.authConfig = inject(AXM_AUTH_CONFIG_TOKEN);
|
26
|
+
this.platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);
|
27
|
+
}
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAuthMasterLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
29
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: AXPAuthMasterLayoutComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"ax-w-full ax-h-full ax-flex\">\r\n <div class=\"ax-flex-1 ax-bg-surface ax-flex ax-flex-col ax-items-center ax-justify-between ax-py-12\">\r\n <router-outlet></router-outlet>\r\n <div class=\"ax-flex ax-justify-between\">\r\n <div class=\"auth-footer-links\">\r\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ax-hidden lg:ax-flex ax-bg-primary-500 ax-flex-1 axp-auth-bk\">\r\n <div class=\"ax-flex ax-flex-col ax-text-primary-fore ax-justify-between ax-px-48 ax-py-20 ax-text-center\">\r\n <div>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-mx-auto ax-text-2xl\"></axp-logo>\r\n </div>\r\n <div>\r\n <p class=\"ax-font-black ax-text-4xl ax-mb-4\">\r\n {{authConfig.signinPage?.slogan}}\r\n </p>\r\n <p>\r\n {{authConfig.signinPage?.description}}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".auth-footer-links{gap:1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.auth-footer-links a{color:rgba(var(--ax-color-primary-500));cursor:pointer}.auth-footer-links a:hover{text-decoration:underline}.auth-footer-links a:visited{color:rgba(var(--ax-color-primary-700))}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["source"] }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i1.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
30
|
+
}
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAuthMasterLayoutComponent, decorators: [{
|
32
|
+
type: Component,
|
33
|
+
args: [{ imports: [RouterModule, AXPLogoComponent, AXPComponentSlotModule], standalone: true, encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-w-full ax-h-full ax-flex\">\r\n <div class=\"ax-flex-1 ax-bg-surface ax-flex ax-flex-col ax-items-center ax-justify-between ax-py-12\">\r\n <router-outlet></router-outlet>\r\n <div class=\"ax-flex ax-justify-between\">\r\n <div class=\"auth-footer-links\">\r\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ax-hidden lg:ax-flex ax-bg-primary-500 ax-flex-1 axp-auth-bk\">\r\n <div class=\"ax-flex ax-flex-col ax-text-primary-fore ax-justify-between ax-px-48 ax-py-20 ax-text-center\">\r\n <div>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-mx-auto ax-text-2xl\"></axp-logo>\r\n </div>\r\n <div>\r\n <p class=\"ax-font-black ax-text-4xl ax-mb-4\">\r\n {{authConfig.signinPage?.slogan}}\r\n </p>\r\n <p>\r\n {{authConfig.signinPage?.description}}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".auth-footer-links{gap:1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.auth-footer-links a{color:rgba(var(--ax-color-primary-500));cursor:pointer}.auth-footer-links a:hover{text-decoration:underline}.auth-footer-links a:visited{color:rgba(var(--ax-color-primary-700))}\n"] }]
|
34
|
+
}] });
|
35
|
+
|
36
|
+
export { AXPAuthMasterLayoutComponent };
|
37
|
+
//# sourceMappingURL=acorex-modules-auth-master.layout-7OSbK7SF.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-auth-master.layout-7OSbK7SF.mjs","sources":["../../../../libs/modules/auth/src/lib/shared/layouts/master/master.layout.ts","../../../../libs/modules/auth/src/lib/shared/layouts/master/master.layout.html"],"sourcesContent":["import { AXPComponentSlotModule, AXPLogoComponent, AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AXM_AUTH_CONFIG_TOKEN } from '../../../auth.config';\r\n\r\n@Component({\r\n templateUrl: 'master.layout.html',\r\n styleUrls: ['master.layout.scss'],\r\n imports: [RouterModule, AXPLogoComponent, AXPComponentSlotModule],\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXPAuthMasterLayoutComponent {\r\n protected authConfig = inject(AXM_AUTH_CONFIG_TOKEN);\r\n protected platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);\r\n}\r\n","<div class=\"ax-w-full ax-h-full ax-flex\">\r\n <div class=\"ax-flex-1 ax-bg-surface ax-flex ax-flex-col ax-items-center ax-justify-between ax-py-12\">\r\n <router-outlet></router-outlet>\r\n <div class=\"ax-flex ax-justify-between\">\r\n <div class=\"auth-footer-links\">\r\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ax-hidden lg:ax-flex ax-bg-primary-500 ax-flex-1 axp-auth-bk\">\r\n <div class=\"ax-flex ax-flex-col ax-text-primary-fore ax-justify-between ax-px-48 ax-py-20 ax-text-center\">\r\n <div>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-mx-auto ax-text-2xl\"></axp-logo>\r\n </div>\r\n <div>\r\n <p class=\"ax-font-black ax-text-4xl ax-mb-4\">\r\n {{authConfig.signinPage?.slogan}}\r\n </p>\r\n <p>\r\n {{authConfig.signinPage?.description}}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;MAYa,4BAA4B,CAAA;AAPzC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC9D,KAAA;8GAHY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,wECZzC,0iCAyBM,EAAA,MAAA,EAAA,CAAA,+RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBM,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAA,gBAAgB,wEAAE,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAIrD,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;8BAGC,CAAC,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,EAAA,UAAA,EACrD,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0iCAAA,EAAA,MAAA,EAAA,CAAA,+RAAA,CAAA,EAAA,CAAA;;;;;"}
|