@acorex/modules 20.6.3 → 20.6.4

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.
Files changed (26) hide show
  1. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CAGlVzjD.mjs → acorex-modules-auth-acorex-modules-auth-D2RpP22p.mjs} +10 -10
  2. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CAGlVzjD.mjs.map → acorex-modules-auth-acorex-modules-auth-D2RpP22p.mjs.map} +1 -1
  3. package/fesm2022/{acorex-modules-auth-app-chooser.component-BAoN8dn6.mjs → acorex-modules-auth-app-chooser.component-BI3wED24.mjs} +2 -2
  4. package/fesm2022/{acorex-modules-auth-app-chooser.component-BAoN8dn6.mjs.map → acorex-modules-auth-app-chooser.component-BI3wED24.mjs.map} +1 -1
  5. package/fesm2022/{acorex-modules-auth-login.module-CToi7k63.mjs → acorex-modules-auth-login.module-CceKXOOB.mjs} +4 -4
  6. package/fesm2022/{acorex-modules-auth-login.module-CToi7k63.mjs.map → acorex-modules-auth-login.module-CceKXOOB.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-auth-master.layout-YZfKfaoC.mjs → acorex-modules-auth-master.layout-knGLhLSY.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-auth-master.layout-YZfKfaoC.mjs.map → acorex-modules-auth-master.layout-knGLhLSY.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-auth-oauth-callback.component-CKQh5Mpa.mjs → acorex-modules-auth-oauth-callback.component-BmxjkoNA.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-auth-oauth-callback.component-CKQh5Mpa.mjs.map → acorex-modules-auth-oauth-callback.component-BmxjkoNA.mjs.map} +1 -1
  11. package/fesm2022/acorex-modules-auth-password.component-BMLK4drm.mjs +563 -0
  12. package/fesm2022/acorex-modules-auth-password.component-BMLK4drm.mjs.map +1 -0
  13. package/fesm2022/{acorex-modules-auth-password.component-Jskc80kr.mjs → acorex-modules-auth-password.component-BhPfqSA_.mjs} +6 -6
  14. package/fesm2022/{acorex-modules-auth-password.component-Jskc80kr.mjs.map → acorex-modules-auth-password.component-BhPfqSA_.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-auth-routes-BOofdLjr.mjs → acorex-modules-auth-routes-BtenIM-p.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-auth-routes-BOofdLjr.mjs.map → acorex-modules-auth-routes-BtenIM-p.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-auth-two-factor-code.component-BmlUjtYC.mjs → acorex-modules-auth-two-factor-code.component-Bk0jHCv_.mjs} +3 -3
  18. package/fesm2022/{acorex-modules-auth-two-factor-code.component-BmlUjtYC.mjs.map → acorex-modules-auth-two-factor-code.component-Bk0jHCv_.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-auth-two-factor.module-Bc39IBha.mjs → acorex-modules-auth-two-factor.module-BUSxDCwt.mjs} +3 -3
  20. package/fesm2022/{acorex-modules-auth-two-factor.module-Bc39IBha.mjs.map → acorex-modules-auth-two-factor.module-BUSxDCwt.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-auth-user-sessions.component-BBX97AST.mjs → acorex-modules-auth-user-sessions.component-CbMB_YWS.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-auth-user-sessions.component-BBX97AST.mjs.map → acorex-modules-auth-user-sessions.component-CbMB_YWS.mjs.map} +1 -1
  23. package/fesm2022/acorex-modules-auth.mjs +1 -1
  24. package/package.json +2 -2
  25. package/fesm2022/acorex-modules-auth-password.component-Dqb6GBes.mjs +0 -226
  26. package/fesm2022/acorex-modules-auth-password.component-Dqb6GBes.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-auth-two-factor.module-Bc39IBha.mjs","sources":["../tmp-esm2022/auth/lib/pages/two-factor/two-factor.module.js"],"sourcesContent":["import { inject, NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { AXM_AUTH_CONFIG_TOKEN } from '../../auth.config';\nimport * as i0 from \"@angular/core\";\nfunction routesFacory() {\n const val = inject(AXM_AUTH_CONFIG_TOKEN);\n let routes = [];\n routes = [\n {\n path: 'two-step',\n loadComponent: () => import('./two-factor-code/two-factor-code.component').then((c) => c.AXPAuthTwoFactorCodeComponent),\n },\n ];\n return routes;\n}\nexport class AXPTwoFactorModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTwoFactorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTwoFactorModule, imports: [RouterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTwoFactorModule, providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ], imports: [RouterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTwoFactorModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [RouterModule],\n exports: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWZhY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3BhZ2VzL3R3by1mYWN0b3IvdHdvLWZhY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFMUQsU0FBUyxZQUFZO0lBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUN4QixNQUFNLEdBQUc7UUFDUDtZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FDbEIsTUFBTSxDQUFDLDZDQUE2QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7U0FDckc7S0FDRixDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQWNELE1BQU0sT0FBTyxrQkFBa0I7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLFlBVm5CLFlBQVk7Z0hBVVgsa0JBQWtCLGFBUmxCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLFlBQVk7YUFDekI7U0FDRixZQVJTLFlBQVk7OzRGQVVYLGtCQUFrQjtrQkFaOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLE1BQU07NEJBQ2YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsVUFBVSxFQUFFLFlBQVk7eUJBQ3pCO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBST1VURVMsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWE1fQVVUSF9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi8uLi9hdXRoLmNvbmZpZyc7XG5cbmZ1bmN0aW9uIHJvdXRlc0ZhY29yeSgpIHtcbiAgY29uc3QgdmFsID0gaW5qZWN0KEFYTV9BVVRIX0NPTkZJR19UT0tFTik7XG4gIGxldCByb3V0ZXM6IFJvdXRlcyA9IFtdO1xuICByb3V0ZXMgPSBbXG4gICAge1xuICAgICAgcGF0aDogJ3R3by1zdGVwJyxcbiAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgIGltcG9ydCgnLi90d28tZmFjdG9yLWNvZGUvdHdvLWZhY3Rvci1jb2RlLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQQXV0aFR3b0ZhY3RvckNvZGVDb21wb25lbnQpLFxuICAgIH0sXG4gIF07XG4gIHJldHVybiByb3V0ZXM7XG59XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxuICBleHBvcnRzOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogUk9VVEVTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VGYWN0b3J5OiByb3V0ZXNGYWNvcnksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQVHdvRmFjdG9yTW9kdWxlIHt9XG4iXX0="],"names":[],"mappings":";;;;;AAIA,SAAS,YAAY,GAAG;AACxB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC7C,IAAI,IAAI,MAAM,GAAG,EAAE;AACnB,IAAI,MAAM,GAAG;AACb,QAAQ;AACR,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,aAAa,EAAE,MAAM,OAAO,8DAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;AACnI,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM;AACjB;AACO,MAAM,kBAAkB,CAAC;AAChC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC/J,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE;AAC/I,YAAY;AACZ,gBAAgB,OAAO,EAAE,MAAM;AAC/B,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,UAAU,EAAE,YAAY;AACxC,aAAa;AACb,SAAS,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACtC;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,YAAY,EAAE,EAAE;AACpC,oBAAoB,OAAO,EAAE,CAAC,YAAY,CAAC;AAC3C,oBAAoB,OAAO,EAAE,EAAE;AAC/B,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,MAAM;AAC3C,4BAA4B,KAAK,EAAE,IAAI;AACvC,4BAA4B,UAAU,EAAE,YAAY;AACpD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;;;"}
1
+ {"version":3,"file":"acorex-modules-auth-two-factor.module-BUSxDCwt.mjs","sources":["../tmp-esm2022/auth/lib/pages/two-factor/two-factor.module.js"],"sourcesContent":["import { inject, NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { AXM_AUTH_CONFIG_TOKEN } from '../../auth.config';\nimport * as i0 from \"@angular/core\";\nfunction routesFacory() {\n const val = inject(AXM_AUTH_CONFIG_TOKEN);\n let routes = [];\n routes = [\n {\n path: 'two-step',\n loadComponent: () => import('./two-factor-code/two-factor-code.component').then((c) => c.AXPAuthTwoFactorCodeComponent),\n },\n ];\n return routes;\n}\nexport class AXPTwoFactorModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTwoFactorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTwoFactorModule, imports: [RouterModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTwoFactorModule, providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ], imports: [RouterModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTwoFactorModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [RouterModule],\n exports: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWZhY3Rvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3BhZ2VzL3R3by1mYWN0b3IvdHdvLWZhY3Rvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFMUQsU0FBUyxZQUFZO0lBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUN4QixNQUFNLEdBQUc7UUFDUDtZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FDbEIsTUFBTSxDQUFDLDZDQUE2QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7U0FDckc7S0FDRixDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQWNELE1BQU0sT0FBTyxrQkFBa0I7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLFlBVm5CLFlBQVk7Z0hBVVgsa0JBQWtCLGFBUmxCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLFlBQVk7YUFDekI7U0FDRixZQVJTLFlBQVk7OzRGQVVYLGtCQUFrQjtrQkFaOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLE1BQU07NEJBQ2YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsVUFBVSxFQUFFLFlBQVk7eUJBQ3pCO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBST1VURVMsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWE1fQVVUSF9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi8uLi9hdXRoLmNvbmZpZyc7XG5cbmZ1bmN0aW9uIHJvdXRlc0ZhY29yeSgpIHtcbiAgY29uc3QgdmFsID0gaW5qZWN0KEFYTV9BVVRIX0NPTkZJR19UT0tFTik7XG4gIGxldCByb3V0ZXM6IFJvdXRlcyA9IFtdO1xuICByb3V0ZXMgPSBbXG4gICAge1xuICAgICAgcGF0aDogJ3R3by1zdGVwJyxcbiAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgIGltcG9ydCgnLi90d28tZmFjdG9yLWNvZGUvdHdvLWZhY3Rvci1jb2RlLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQQXV0aFR3b0ZhY3RvckNvZGVDb21wb25lbnQpLFxuICAgIH0sXG4gIF07XG4gIHJldHVybiByb3V0ZXM7XG59XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxuICBleHBvcnRzOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogUk9VVEVTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VGYWN0b3J5OiByb3V0ZXNGYWNvcnksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQVHdvRmFjdG9yTW9kdWxlIHt9XG4iXX0="],"names":[],"mappings":";;;;;AAIA,SAAS,YAAY,GAAG;AACxB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC7C,IAAI,IAAI,MAAM,GAAG,EAAE;AACnB,IAAI,MAAM,GAAG;AACb,QAAQ;AACR,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,aAAa,EAAE,MAAM,OAAO,8DAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;AACnI,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM;AACjB;AACO,MAAM,kBAAkB,CAAC;AAChC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC/J,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE;AAC/I,YAAY;AACZ,gBAAgB,OAAO,EAAE,MAAM;AAC/B,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,UAAU,EAAE,YAAY;AACxC,aAAa;AACb,SAAS,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACtC;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,YAAY,EAAE,EAAE;AACpC,oBAAoB,OAAO,EAAE,CAAC,YAAY,CAAC;AAC3C,oBAAoB,OAAO,EAAE,EAAE;AAC/B,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,MAAM;AAC3C,4BAA4B,KAAK,EAAE,IAAI;AACvC,4BAA4B,UAAU,EAAE,YAAY;AACpD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;;;"}
@@ -18,7 +18,7 @@ import * as i0 from '@angular/core';
18
18
  import { signal, inject, ChangeDetectorRef, computed, ChangeDetectionStrategy, Component } from '@angular/core';
19
19
  import * as i2 from '@angular/forms';
20
20
  import { FormsModule } from '@angular/forms';
21
- import { d as AXMUserDeviceSessionsService } from './acorex-modules-auth-acorex-modules-auth-CAGlVzjD.mjs';
21
+ import { d as AXMUserDeviceSessionsService } from './acorex-modules-auth-acorex-modules-auth-D2RpP22p.mjs';
22
22
 
23
23
  class AXMUserSessionsComponent {
24
24
  constructor() {
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
134
134
  }], ctorParameters: () => [] });
135
135
 
136
136
  export { AXMUserSessionsComponent };
137
- //# sourceMappingURL=acorex-modules-auth-user-sessions.component-BBX97AST.mjs.map
137
+ //# sourceMappingURL=acorex-modules-auth-user-sessions.component-CbMB_YWS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-auth-user-sessions.component-BBX97AST.mjs","sources":["../tmp-esm2022/auth/lib/pages/account/user-sessions/user-sessions.component.js"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMUserDeviceSessionsService } from './user-sessions.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@acorex/components/select-box\";\nimport * as i4 from \"@angular/common\";\nexport class AXMUserSessionsComponent {\n constructor() {\n this.AXPTokenExpirationDurations = {\n oneWeek: 'oneWeek',\n oneMonth: 'oneMonth',\n threeMonths: 'threeMonths',\n sixMonths: 'sixMonths',\n };\n this.items = signal([], ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n this.activeSession = signal(undefined, ...(ngDevMode ? [{ debugName: \"activeSession\" }] : []));\n this.expireTime = signal(null, ...(ngDevMode ? [{ debugName: \"expireTime\" }] : []));\n this.expirationItems = [\n { name: 'Terminate in 1 week', id: this.AXPTokenExpirationDurations.oneWeek },\n { name: 'Terminate in 1 month', id: this.AXPTokenExpirationDurations.oneMonth },\n { name: 'Terminate in 3 month', id: this.AXPTokenExpirationDurations.threeMonths },\n { name: 'Terminate in 6 month', id: this.AXPTokenExpirationDurations.sixMonths },\n ];\n this.dataSource = new AXDataSource({\n pageSize: 10,\n key: 'id',\n load: async (e) => {\n let items = this.expirationItems;\n return {\n items,\n total: items.length,\n };\n },\n });\n this.userDeviceSessionsService = inject(AXMUserDeviceSessionsService);\n this.cdRef = inject(ChangeDetectorRef);\n this.popupService = inject(AXPopupService);\n this.platform = inject(AXPlatform);\n this.translateService = inject(AXTranslationService);\n this.sessionService = inject(AXPSessionService);\n this.settingService = inject(AXPSettingService);\n // ✅ Use a computed signal to update dynamically when items change\n this.itemsWithIcons = computed(() => this.items().map((item) => ({\n ...item,\n icon: this.getDeviceIcon(item.deviceName),\n })), ...(ngDevMode ? [{ debugName: \"itemsWithIcons\" }] : []));\n this.loadUserSessions();\n }\n async loadUserSessions() {\n try {\n let sessions = await this.userDeviceSessionsService.getSessions();\n this.items.set(sessions);\n try {\n const activeSession = await this.userDeviceSessionsService.getCurrentActiveSessions();\n this.activeSession.set(activeSession);\n }\n catch (error) {\n console.warn('No active session found:', error);\n this.activeSession.set(undefined);\n }\n const sessionTimeout = await this.settingService.scope(AXPPlatformScope.User).get('session-timeout');\n if (sessionTimeout && sessionTimeout.id in this.AXPTokenExpirationDurations) {\n let selectedItem = this.expirationItems.find((item) => item.id === sessionTimeout.id);\n if (selectedItem) {\n this.expireTime.set({ name: selectedItem.name, id: selectedItem.id });\n }\n }\n }\n catch (error) {\n console.error('Error loading user sessions', error);\n }\n }\n getDeviceIcon(deviceName) {\n if (!deviceName)\n return 'fa-solid fa-question'; // Default icon if no name is provided\n const lowerCaseName = deviceName.toLowerCase();\n if (lowerCaseName.includes('windows'))\n return 'fa-brands fa-windows';\n if (lowerCaseName.includes('macbook') || lowerCaseName.includes('mac'))\n return 'fa-brands fa-apple';\n if (lowerCaseName.includes('linux'))\n return 'fa-brands fa-linux';\n if (lowerCaseName.includes('android'))\n return 'fa-brands fa-android';\n if (lowerCaseName.includes('ios') || lowerCaseName.includes('iphone') || lowerCaseName.includes('ipad'))\n return 'fa-brands fa-apple';\n return 'fa-solid fa-desktop'; // Default icon for unknown devices\n }\n onChangeSessionExpireTime(e) {\n this.userDeviceSessionsService.setTokenLifetimeMinutes(e.component.selectedItems[0]);\n }\n async onTerminate(sessionId) {\n if (!sessionId) {\n console.error('No item to terminate');\n return;\n }\n await this.userDeviceSessionsService.terminateSession(sessionId);\n await this.loadUserSessions();\n }\n async onTerminateAll() {\n await this.userDeviceSessionsService.terminateAllSession();\n await this.loadUserSessions();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMUserSessionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMUserSessionsComponent, isStandalone: true, selector: \"ng-component\", ngImport: i0, template: \"<div class=\\\"ax-mx-auto ax-p-6 ax-w-full\\\">\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mb-4\\\">This Device</p>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-primary-200 ax-border ax-bg-primary-50 ax-rounded-lg\\\">\\n <i class=\\\"{{ getDeviceIcon(activeSession()?.deviceName) }} ax-text-primary-500 ax-m-3\\\"></i>\\n </div>\\n @if (activeSession()) {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ activeSession()?.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ activeSession()?.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ activeSession()?.location }} <span>\\n {{ activeSession()?.lastLoginDate ? (activeSession()?.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}\\n </span>\\n </p>\\n </div>\\n </div>\\n }\\n </div>\\n\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-danger-200 ax-border ax-bg-danger-50 ax-rounded-lg\\\">\\n <i class=\\\"ax-icon ax-icon-clear ax-text-danger-500 ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2 ax-cursor-pointer\\\" (click)=\\\"onTerminateAll()\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">Terminate All Other Sessions</div>\\n <p class=\\\"ax-font-normal ax-text-sm ax-subtitle-on-lightest\\\">Log out all devices exept for this one.</p>\\n </div>\\n </div>\\n }\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div>\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mt-4 ax-mb-4\\\">Active Devices</p>\\n @for (item of itemsWithIcons(); track item) {\\n <div>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-relative ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <i\\n class=\\\"ax-icon ax-icon-close ax-absolute ax-end-2 ax-top-2 ax-cursor-pointer\\\"\\n (click)=\\\"onTerminate(item.id)\\\"\\n ></i>\\n <div class=\\\"ax-border ax-rounded-lg\\\">\\n <i class=\\\"{{ item.icon }} ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ item.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ item.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ item.location }} <span>{{ item.lastLoginDate ? (item.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</div>\\n<ax-footer>\\n <div class=\\\"ax-flex-col ax-w-full\\\">\\n <div>\\n <p class=\\\"ax-text-danger-500 ax-font-medium ax-text-base\\\">Terminate Old Sessions</p>\\n </div>\\n <div>\\n <ax-suffix>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-mt-4\\\">\\n <div class=\\\"ax-font-normal ax-text-base ax-text-on-lightest\\\">If inactive for...</div>\\n <div class=\\\"ax-w-3/6\\\">\\n <ax-select-box\\n [ngModel]=\\\"expireTime()\\\"\\n (onValueChanged)=\\\"onChangeSessionExpireTime($event)\\\"\\n [dataSource]=\\\"dataSource\\\"\\n textField=\\\"name\\\"\\n valueField=\\\"id\\\"\\n placeholder=\\\"Choose...\\\"\\n >\\n </ax-select-box>\\n </div>\\n </div>\\n </ax-suffix>\\n </div>\\n </div>\\n</ax-footer>\\n\", dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"component\", type: i3.AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"isItemTruncated\", \"showItemTooltip\", \"itemHeight\", \"maxVisibleItems\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\", \"onItemSelected\", \"onItemClick\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"pipe\", type: i4.DatePipe, name: \"date\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMUserSessionsComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n AXButtonModule,\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXDropdownModule,\n AXPopoverModule,\n ], template: \"<div class=\\\"ax-mx-auto ax-p-6 ax-w-full\\\">\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mb-4\\\">This Device</p>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-primary-200 ax-border ax-bg-primary-50 ax-rounded-lg\\\">\\n <i class=\\\"{{ getDeviceIcon(activeSession()?.deviceName) }} ax-text-primary-500 ax-m-3\\\"></i>\\n </div>\\n @if (activeSession()) {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ activeSession()?.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ activeSession()?.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ activeSession()?.location }} <span>\\n {{ activeSession()?.lastLoginDate ? (activeSession()?.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}\\n </span>\\n </p>\\n </div>\\n </div>\\n }\\n </div>\\n\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-danger-200 ax-border ax-bg-danger-50 ax-rounded-lg\\\">\\n <i class=\\\"ax-icon ax-icon-clear ax-text-danger-500 ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2 ax-cursor-pointer\\\" (click)=\\\"onTerminateAll()\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">Terminate All Other Sessions</div>\\n <p class=\\\"ax-font-normal ax-text-sm ax-subtitle-on-lightest\\\">Log out all devices exept for this one.</p>\\n </div>\\n </div>\\n }\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div>\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mt-4 ax-mb-4\\\">Active Devices</p>\\n @for (item of itemsWithIcons(); track item) {\\n <div>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-relative ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <i\\n class=\\\"ax-icon ax-icon-close ax-absolute ax-end-2 ax-top-2 ax-cursor-pointer\\\"\\n (click)=\\\"onTerminate(item.id)\\\"\\n ></i>\\n <div class=\\\"ax-border ax-rounded-lg\\\">\\n <i class=\\\"{{ item.icon }} ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ item.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ item.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ item.location }} <span>{{ item.lastLoginDate ? (item.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</div>\\n<ax-footer>\\n <div class=\\\"ax-flex-col ax-w-full\\\">\\n <div>\\n <p class=\\\"ax-text-danger-500 ax-font-medium ax-text-base\\\">Terminate Old Sessions</p>\\n </div>\\n <div>\\n <ax-suffix>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-mt-4\\\">\\n <div class=\\\"ax-font-normal ax-text-base ax-text-on-lightest\\\">If inactive for...</div>\\n <div class=\\\"ax-w-3/6\\\">\\n <ax-select-box\\n [ngModel]=\\\"expireTime()\\\"\\n (onValueChanged)=\\\"onChangeSessionExpireTime($event)\\\"\\n [dataSource]=\\\"dataSource\\\"\\n textField=\\\"name\\\"\\n valueField=\\\"id\\\"\\n placeholder=\\\"Choose...\\\"\\n >\\n </ax-select-box>\\n </div>\\n </div>\\n </ax-suffix>\\n </div>\\n </div>\\n</ax-footer>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXNzaW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3BhZ2VzL2FjY291bnQvdXNlci1zZXNzaW9ucy91c2VyLXNlc3Npb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvcGFnZXMvYWNjb3VudC91c2VyLXNlc3Npb25zL3VzZXItc2Vzc2lvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9D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bUIsRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDaEMsQ0FBQzsrR0F4R1Usd0JBQXdCO21HQUF4Qix3QkFBd0Isd0VDOUJyQyxzOEhBeUZBLDJDRHBFSSxjQUFjLDhCQUNkLGlCQUFpQixxUEFDakIsWUFBWSw4QkFDWixXQUFXLDhWQUNYLGlCQUFpQixndUJBQ2pCLGdCQUFnQiw4QkFDaEIsZUFBZTs7NEZBR04sd0JBQXdCO2tCQWJwQyxTQUFTO3NDQUVTLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQU2V0dGluZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBQbGF0Zm9ybVNjb3BlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYTVVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItc2Vzc2lvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1TZWN1cml0eU1hbmFnZW1lbnREZXZpY2VTZXNzaW9uc0VudGl0eU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzL2RldmljZS1zZXNzaW9ucy50eXBlcyc7XG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItc2Vzc2lvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVXNlclNlc3Npb25zQ29tcG9uZW50IHtcbiAgQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zID0ge1xuICAgIG9uZVdlZWs6ICdvbmVXZWVrJyxcbiAgICBvbmVNb250aDogJ29uZU1vbnRoJyxcbiAgICB0aHJlZU1vbnRoczogJ3RocmVlTW9udGhzJyxcbiAgICBzaXhNb250aHM6ICdzaXhNb250aHMnLFxuICB9O1xuXG4gIGl0ZW1zID0gc2lnbmFsPEFYTVNlY3VyaXR5TWFuYWdlbWVudERldmljZVNlc3Npb25zRW50aXR5TW9kZWxbXT4oW10pO1xuICBhY3RpdmVTZXNzaW9uID0gc2lnbmFsPEFYTVNlY3VyaXR5TWFuYWdlbWVudERldmljZVNlc3Npb25zRW50aXR5TW9kZWwgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGV4cGlyZVRpbWUgPSBzaWduYWw8eyBuYW1lOiBzdHJpbmc7IGlkOiBzdHJpbmcgfSB8IG51bGw+KG51bGwpO1xuXG4gIGV4cGlyYXRpb25JdGVtcyA9IFtcbiAgICB7IG5hbWU6ICdUZXJtaW5hdGUgaW4gMSB3ZWVrJywgaWQ6IHRoaXMuQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zLm9uZVdlZWsgfSxcbiAgICB7IG5hbWU6ICdUZXJtaW5hdGUgaW4gMSBtb250aCcsIGlkOiB0aGlzLkFYUFRva2VuRXhwaXJhdGlvbkR1cmF0aW9ucy5vbmVNb250aCB9LFxuICAgIHsgbmFtZTogJ1Rlcm1pbmF0ZSBpbiAzIG1vbnRoJywgaWQ6IHRoaXMuQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zLnRocmVlTW9udGhzIH0sXG4gICAgeyBuYW1lOiAnVGVybWluYXRlIGluIDYgbW9udGgnLCBpZDogdGhpcy5BWFBUb2tlbkV4cGlyYXRpb25EdXJhdGlvbnMuc2l4TW9udGhzIH0sXG4gIF07XG4gIHByb3RlY3RlZCBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZTxhbnk+KHtcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAga2V5OiAnaWQnLFxuICAgIGxvYWQ6IGFzeW5jIChlKSA9PiB7XG4gICAgICBsZXQgaXRlbXMgPSB0aGlzLmV4cGlyYXRpb25JdGVtcztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zLFxuICAgICAgICB0b3RhbDogaXRlbXMubGVuZ3RoLFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbiAgcHJpdmF0ZSB1c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlID0gaW5qZWN0KEFYTVVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHBsYXRmb3JtID0gaW5qZWN0KEFYUGxhdGZvcm0pO1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZXR0aW5nU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2FkVXNlclNlc3Npb25zKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRVc2VyU2Vzc2lvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IHRoaXMudXNlckRldmljZVNlc3Npb25zU2VydmljZS5nZXRTZXNzaW9ucygpO1xuICAgICAgdGhpcy5pdGVtcy5zZXQoc2Vzc2lvbnMpO1xuICAgICAgXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBhY3RpdmVTZXNzaW9uID0gYXdhaXQgdGhpcy51c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlLmdldEN1cnJlbnRBY3RpdmVTZXNzaW9ucygpO1xuICAgICAgICB0aGlzLmFjdGl2ZVNlc3Npb24uc2V0KGFjdGl2ZVNlc3Npb24pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdObyBhY3RpdmUgc2Vzc2lvbiBmb3VuZDonLCBlcnJvcik7XG4gICAgICAgIHRoaXMuYWN0aXZlU2Vzc2lvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3Qgc2Vzc2lvblRpbWVvdXQgPSBhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcikuZ2V0KCdzZXNzaW9uLXRpbWVvdXQnKTtcbiAgICAgIGlmIChzZXNzaW9uVGltZW91dCAmJiBzZXNzaW9uVGltZW91dC5pZCBpbiB0aGlzLkFYUFRva2VuRXhwaXJhdGlvbkR1cmF0aW9ucykge1xuICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gdGhpcy5leHBpcmF0aW9uSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gc2Vzc2lvblRpbWVvdXQuaWQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgdGhpcy5leHBpcmVUaW1lLnNldCh7IG5hbWU6IHNlbGVjdGVkSXRlbS5uYW1lLCBpZDogc2VsZWN0ZWRJdGVtLmlkIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgdXNlciBzZXNzaW9ucycsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyDinIUgVXNlIGEgY29tcHV0ZWQgc2lnbmFsIHRvIHVwZGF0ZSBkeW5hbWljYWxseSB3aGVuIGl0ZW1zIGNoYW5nZVxuICBpdGVtc1dpdGhJY29ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pdGVtcygpLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBpY29uOiB0aGlzLmdldERldmljZUljb24oaXRlbS5kZXZpY2VOYW1lKSxcbiAgICB9KSksXG4gICk7XG5cbiAgZ2V0RGV2aWNlSWNvbihkZXZpY2VOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghZGV2aWNlTmFtZSkgcmV0dXJuICdmYS1zb2xpZCBmYS1xdWVzdGlvbic7IC8vIERlZmF1bHQgaWNvbiBpZiBubyBuYW1lIGlzIHByb3ZpZGVkXG5cbiAgICBjb25zdCBsb3dlckNhc2VOYW1lID0gZGV2aWNlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ3dpbmRvd3MnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtd2luZG93cyc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ21hY2Jvb2snKSB8fCBsb3dlckNhc2VOYW1lLmluY2x1ZGVzKCdtYWMnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYXBwbGUnO1xuICAgIGlmIChsb3dlckNhc2VOYW1lLmluY2x1ZGVzKCdsaW51eCcpKSByZXR1cm4gJ2ZhLWJyYW5kcyBmYS1saW51eCc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2FuZHJvaWQnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYW5kcm9pZCc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lvcycpIHx8IGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lwaG9uZScpIHx8IGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lwYWQnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYXBwbGUnO1xuXG4gICAgcmV0dXJuICdmYS1zb2xpZCBmYS1kZXNrdG9wJzsgLy8gRGVmYXVsdCBpY29uIGZvciB1bmtub3duIGRldmljZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoYW5nZVNlc3Npb25FeHBpcmVUaW1lKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2Uuc2V0VG9rZW5MaWZldGltZU1pbnV0ZXMoZS5jb21wb25lbnQuc2VsZWN0ZWRJdGVtc1swXSk7XG4gIH1cblxuICBhc3luYyBvblRlcm1pbmF0ZShzZXNzaW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBpdGVtIHRvIHRlcm1pbmF0ZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UudGVybWluYXRlU2Vzc2lvbihzZXNzaW9uSWQpO1xuICAgIGF3YWl0IHRoaXMubG9hZFVzZXJTZXNzaW9ucygpO1xuICB9XG5cbiAgYXN5bmMgb25UZXJtaW5hdGVBbGwoKSB7XG4gICAgYXdhaXQgdGhpcy51c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlLnRlcm1pbmF0ZUFsbFNlc3Npb24oKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRVc2VyU2Vzc2lvbnMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW14LWF1dG8gYXgtcC02IGF4LXctZnVsbFwiPlxuICA8cCBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3QgYXgtbWItNFwiPlRoaXMgRGV2aWNlPC9wPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgPlxuICAgIDxkaXYgY2xhc3M9XCJheC1ib3JkZXItcHJpbWFyeS0yMDAgYXgtYm9yZGVyIGF4LWJnLXByaW1hcnktNTAgYXgtcm91bmRlZC1sZ1wiPlxuICAgICAgPGkgY2xhc3M9XCJ7eyBnZXREZXZpY2VJY29uKGFjdGl2ZVNlc3Npb24oKT8uZGV2aWNlTmFtZSkgfX0gYXgtdGV4dC1wcmltYXJ5LTUwMCBheC1tLTNcIj48L2k+XG4gICAgPC9kaXY+XG4gICAgQGlmIChhY3RpdmVTZXNzaW9uKCkpIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1sLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj57eyBhY3RpdmVTZXNzaW9uKCk/LmRldmljZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC1zbSBheC10ZXh0LW9uLWxpZ2h0ZXN0XCI+e3sgYWN0aXZlU2Vzc2lvbigpPy5vcGVyYXRpbmdTeXN0ZW0gfX08L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQteHMgYXgtc3VidGl0bGUtb24tbGlnaHRlc3RcIj5cbiAgICAgICAgICAgIHt7IGFjdGl2ZVNlc3Npb24oKT8ubG9jYXRpb24gfX0gPHNwYW4+XG4gICAgICAgICAgICAgIHt7IGFjdGl2ZVNlc3Npb24oKT8ubGFzdExvZ2luRGF0ZSA/IChhY3RpdmVTZXNzaW9uKCk/Lmxhc3RMb2dpbkRhdGUgfCBkYXRlOiAneXl5eS9NTS9kZCBISDptbScpIDogJycgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGl0ZW1zV2l0aEljb25zKCkgJiYgaXRlbXNXaXRoSWNvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtYm9yZGVyLWRhbmdlci0yMDAgYXgtYm9yZGVyIGF4LWJnLWRhbmdlci01MCBheC1yb3VuZGVkLWxnXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNsZWFyIGF4LXRleHQtZGFuZ2VyLTUwMCBheC1tLTNcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1sLTIgYXgtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25UZXJtaW5hdGVBbGwoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj5UZXJtaW5hdGUgQWxsIE90aGVyIFNlc3Npb25zPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC1zbSBheC1zdWJ0aXRsZS1vbi1saWdodGVzdFwiPkxvZyBvdXQgYWxsIGRldmljZXMgZXhlcHQgZm9yIHRoaXMgb25lLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoaXRlbXNXaXRoSWNvbnMoKSAmJiBpdGVtc1dpdGhJY29ucygpLmxlbmd0aCA+IDApIHtcbiAgICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtYmFzZSBheC10ZXh0LW9uLWxpZ2h0ZXN0IGF4LW10LTQgYXgtbWItNFwiPkFjdGl2ZSBEZXZpY2VzPC9wPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtc1dpdGhJY29ucygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcmVsYXRpdmUgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jbG9zZSBheC1hYnNvbHV0ZSBheC1lbmQtMiBheC10b3AtMiBheC1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblRlcm1pbmF0ZShpdGVtLmlkKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJvcmRlciBheC1yb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwie3sgaXRlbS5pY29uIH19IGF4LW0tM1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWwtMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj57eyBpdGVtLmRldmljZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQtc20gYXgtdGV4dC1vbi1saWdodGVzdFwiPnt7IGl0ZW0ub3BlcmF0aW5nU3lzdGVtIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC14cyBheC1zdWJ0aXRsZS1vbi1saWdodGVzdFwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubG9jYXRpb24gfX0gPHNwYW4+e3sgaXRlbS5sYXN0TG9naW5EYXRlID8gKGl0ZW0ubGFzdExvZ2luRGF0ZSB8IGRhdGU6ICd5eXl5L01NL2RkIEhIOm1tJykgOiAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbjxheC1mb290ZXI+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4LWNvbCBheC13LWZ1bGxcIj5cbiAgICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LWRhbmdlci01MDAgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlXCI+VGVybWluYXRlIE9sZCBTZXNzaW9uczwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1tdC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQtYmFzZSBheC10ZXh0LW9uLWxpZ2h0ZXN0XCI+SWYgaW5hY3RpdmUgZm9yLi4uPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctMy82XCI+XG4gICAgICAgICAgICA8YXgtc2VsZWN0LWJveFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJleHBpcmVUaW1lKClcIlxuICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25DaGFuZ2VTZXNzaW9uRXhwaXJlVGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICAgICAgICAgIHRleHRGaWVsZD1cIm5hbWVcIlxuICAgICAgICAgICAgICB2YWx1ZUZpZWxkPVwiaWRcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNob29zZS4uLlwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2F4LWZvb3Rlcj5cbiJdfQ=="],"names":["i4"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-auth-user-sessions.component-CbMB_YWS.mjs","sources":["../tmp-esm2022/auth/lib/pages/account/user-sessions/user-sessions.component.js"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMUserDeviceSessionsService } from './user-sessions.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@acorex/components/select-box\";\nimport * as i4 from \"@angular/common\";\nexport class AXMUserSessionsComponent {\n constructor() {\n this.AXPTokenExpirationDurations = {\n oneWeek: 'oneWeek',\n oneMonth: 'oneMonth',\n threeMonths: 'threeMonths',\n sixMonths: 'sixMonths',\n };\n this.items = signal([], ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n this.activeSession = signal(undefined, ...(ngDevMode ? [{ debugName: \"activeSession\" }] : []));\n this.expireTime = signal(null, ...(ngDevMode ? [{ debugName: \"expireTime\" }] : []));\n this.expirationItems = [\n { name: 'Terminate in 1 week', id: this.AXPTokenExpirationDurations.oneWeek },\n { name: 'Terminate in 1 month', id: this.AXPTokenExpirationDurations.oneMonth },\n { name: 'Terminate in 3 month', id: this.AXPTokenExpirationDurations.threeMonths },\n { name: 'Terminate in 6 month', id: this.AXPTokenExpirationDurations.sixMonths },\n ];\n this.dataSource = new AXDataSource({\n pageSize: 10,\n key: 'id',\n load: async (e) => {\n let items = this.expirationItems;\n return {\n items,\n total: items.length,\n };\n },\n });\n this.userDeviceSessionsService = inject(AXMUserDeviceSessionsService);\n this.cdRef = inject(ChangeDetectorRef);\n this.popupService = inject(AXPopupService);\n this.platform = inject(AXPlatform);\n this.translateService = inject(AXTranslationService);\n this.sessionService = inject(AXPSessionService);\n this.settingService = inject(AXPSettingService);\n // ✅ Use a computed signal to update dynamically when items change\n this.itemsWithIcons = computed(() => this.items().map((item) => ({\n ...item,\n icon: this.getDeviceIcon(item.deviceName),\n })), ...(ngDevMode ? [{ debugName: \"itemsWithIcons\" }] : []));\n this.loadUserSessions();\n }\n async loadUserSessions() {\n try {\n let sessions = await this.userDeviceSessionsService.getSessions();\n this.items.set(sessions);\n try {\n const activeSession = await this.userDeviceSessionsService.getCurrentActiveSessions();\n this.activeSession.set(activeSession);\n }\n catch (error) {\n console.warn('No active session found:', error);\n this.activeSession.set(undefined);\n }\n const sessionTimeout = await this.settingService.scope(AXPPlatformScope.User).get('session-timeout');\n if (sessionTimeout && sessionTimeout.id in this.AXPTokenExpirationDurations) {\n let selectedItem = this.expirationItems.find((item) => item.id === sessionTimeout.id);\n if (selectedItem) {\n this.expireTime.set({ name: selectedItem.name, id: selectedItem.id });\n }\n }\n }\n catch (error) {\n console.error('Error loading user sessions', error);\n }\n }\n getDeviceIcon(deviceName) {\n if (!deviceName)\n return 'fa-solid fa-question'; // Default icon if no name is provided\n const lowerCaseName = deviceName.toLowerCase();\n if (lowerCaseName.includes('windows'))\n return 'fa-brands fa-windows';\n if (lowerCaseName.includes('macbook') || lowerCaseName.includes('mac'))\n return 'fa-brands fa-apple';\n if (lowerCaseName.includes('linux'))\n return 'fa-brands fa-linux';\n if (lowerCaseName.includes('android'))\n return 'fa-brands fa-android';\n if (lowerCaseName.includes('ios') || lowerCaseName.includes('iphone') || lowerCaseName.includes('ipad'))\n return 'fa-brands fa-apple';\n return 'fa-solid fa-desktop'; // Default icon for unknown devices\n }\n onChangeSessionExpireTime(e) {\n this.userDeviceSessionsService.setTokenLifetimeMinutes(e.component.selectedItems[0]);\n }\n async onTerminate(sessionId) {\n if (!sessionId) {\n console.error('No item to terminate');\n return;\n }\n await this.userDeviceSessionsService.terminateSession(sessionId);\n await this.loadUserSessions();\n }\n async onTerminateAll() {\n await this.userDeviceSessionsService.terminateAllSession();\n await this.loadUserSessions();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMUserSessionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMUserSessionsComponent, isStandalone: true, selector: \"ng-component\", ngImport: i0, template: \"<div class=\\\"ax-mx-auto ax-p-6 ax-w-full\\\">\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mb-4\\\">This Device</p>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-primary-200 ax-border ax-bg-primary-50 ax-rounded-lg\\\">\\n <i class=\\\"{{ getDeviceIcon(activeSession()?.deviceName) }} ax-text-primary-500 ax-m-3\\\"></i>\\n </div>\\n @if (activeSession()) {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ activeSession()?.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ activeSession()?.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ activeSession()?.location }} <span>\\n {{ activeSession()?.lastLoginDate ? (activeSession()?.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}\\n </span>\\n </p>\\n </div>\\n </div>\\n }\\n </div>\\n\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-danger-200 ax-border ax-bg-danger-50 ax-rounded-lg\\\">\\n <i class=\\\"ax-icon ax-icon-clear ax-text-danger-500 ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2 ax-cursor-pointer\\\" (click)=\\\"onTerminateAll()\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">Terminate All Other Sessions</div>\\n <p class=\\\"ax-font-normal ax-text-sm ax-subtitle-on-lightest\\\">Log out all devices exept for this one.</p>\\n </div>\\n </div>\\n }\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div>\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mt-4 ax-mb-4\\\">Active Devices</p>\\n @for (item of itemsWithIcons(); track item) {\\n <div>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-relative ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <i\\n class=\\\"ax-icon ax-icon-close ax-absolute ax-end-2 ax-top-2 ax-cursor-pointer\\\"\\n (click)=\\\"onTerminate(item.id)\\\"\\n ></i>\\n <div class=\\\"ax-border ax-rounded-lg\\\">\\n <i class=\\\"{{ item.icon }} ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ item.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ item.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ item.location }} <span>{{ item.lastLoginDate ? (item.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</div>\\n<ax-footer>\\n <div class=\\\"ax-flex-col ax-w-full\\\">\\n <div>\\n <p class=\\\"ax-text-danger-500 ax-font-medium ax-text-base\\\">Terminate Old Sessions</p>\\n </div>\\n <div>\\n <ax-suffix>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-mt-4\\\">\\n <div class=\\\"ax-font-normal ax-text-base ax-text-on-lightest\\\">If inactive for...</div>\\n <div class=\\\"ax-w-3/6\\\">\\n <ax-select-box\\n [ngModel]=\\\"expireTime()\\\"\\n (onValueChanged)=\\\"onChangeSessionExpireTime($event)\\\"\\n [dataSource]=\\\"dataSource\\\"\\n textField=\\\"name\\\"\\n valueField=\\\"id\\\"\\n placeholder=\\\"Choose...\\\"\\n >\\n </ax-select-box>\\n </div>\\n </div>\\n </ax-suffix>\\n </div>\\n </div>\\n</ax-footer>\\n\", dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"component\", type: i3.AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"isItemTruncated\", \"showItemTooltip\", \"itemHeight\", \"maxVisibleItems\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\", \"onItemSelected\", \"onItemClick\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"pipe\", type: i4.DatePipe, name: \"date\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMUserSessionsComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n AXButtonModule,\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXDropdownModule,\n AXPopoverModule,\n ], template: \"<div class=\\\"ax-mx-auto ax-p-6 ax-w-full\\\">\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mb-4\\\">This Device</p>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-primary-200 ax-border ax-bg-primary-50 ax-rounded-lg\\\">\\n <i class=\\\"{{ getDeviceIcon(activeSession()?.deviceName) }} ax-text-primary-500 ax-m-3\\\"></i>\\n </div>\\n @if (activeSession()) {\\n <div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ activeSession()?.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ activeSession()?.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ activeSession()?.location }} <span>\\n {{ activeSession()?.lastLoginDate ? (activeSession()?.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}\\n </span>\\n </p>\\n </div>\\n </div>\\n }\\n </div>\\n\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <div class=\\\"ax-border-danger-200 ax-border ax-bg-danger-50 ax-rounded-lg\\\">\\n <i class=\\\"ax-icon ax-icon-clear ax-text-danger-500 ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2 ax-cursor-pointer\\\" (click)=\\\"onTerminateAll()\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">Terminate All Other Sessions</div>\\n <p class=\\\"ax-font-normal ax-text-sm ax-subtitle-on-lightest\\\">Log out all devices exept for this one.</p>\\n </div>\\n </div>\\n }\\n @if (itemsWithIcons() && itemsWithIcons().length > 0) {\\n <div>\\n <p class=\\\"ax-font-semibold ax-text-base ax-text-on-lightest ax-mt-4 ax-mb-4\\\">Active Devices</p>\\n @for (item of itemsWithIcons(); track item) {\\n <div>\\n <div\\n class=\\\"ax-flex ax-border ax-items-center ax-relative ax-rounded-lg ax-border-lightest ax-bg-lightest ax-text-on-lightest ax-mb-3 ax-p-3\\\"\\n >\\n <i\\n class=\\\"ax-icon ax-icon-close ax-absolute ax-end-2 ax-top-2 ax-cursor-pointer\\\"\\n (click)=\\\"onTerminate(item.id)\\\"\\n ></i>\\n <div class=\\\"ax-border ax-rounded-lg\\\">\\n <i class=\\\"{{ item.icon }} ax-m-3\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-ml-2\\\">\\n <div class=\\\"ax-font-medium ax-text-base ax-text-on-lightest\\\">{{ item.deviceName }}</div>\\n <div class=\\\"ax-font-normal ax-text-sm ax-text-on-lightest\\\">{{ item.operatingSystem }}</div>\\n <p class=\\\"ax-font-normal ax-text-xs ax-subtitle-on-lightest\\\">\\n {{ item.location }} <span>{{ item.lastLoginDate ? (item.lastLoginDate | date: 'yyyy/MM/dd HH:mm') : '' }}</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n</div>\\n<ax-footer>\\n <div class=\\\"ax-flex-col ax-w-full\\\">\\n <div>\\n <p class=\\\"ax-text-danger-500 ax-font-medium ax-text-base\\\">Terminate Old Sessions</p>\\n </div>\\n <div>\\n <ax-suffix>\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-mt-4\\\">\\n <div class=\\\"ax-font-normal ax-text-base ax-text-on-lightest\\\">If inactive for...</div>\\n <div class=\\\"ax-w-3/6\\\">\\n <ax-select-box\\n [ngModel]=\\\"expireTime()\\\"\\n (onValueChanged)=\\\"onChangeSessionExpireTime($event)\\\"\\n [dataSource]=\\\"dataSource\\\"\\n textField=\\\"name\\\"\\n valueField=\\\"id\\\"\\n placeholder=\\\"Choose...\\\"\\n >\\n </ax-select-box>\\n </div>\\n </div>\\n </ax-suffix>\\n </div>\\n </div>\\n</ax-footer>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXNzaW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3BhZ2VzL2FjY291bnQvdXNlci1zZXNzaW9ucy91c2VyLXNlc3Npb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvcGFnZXMvYWNjb3VudC91c2VyLXNlc3Npb25zL3VzZXItc2Vzc2lvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQXVCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9D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bUIsRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDaEMsQ0FBQzsrR0F4R1Usd0JBQXdCO21HQUF4Qix3QkFBd0Isd0VDOUJyQyxzOEhBeUZBLDJDRHBFSSxjQUFjLDhCQUNkLGlCQUFpQixxUEFDakIsWUFBWSw4QkFDWixXQUFXLDhWQUNYLGlCQUFpQixndUJBQ2pCLGdCQUFnQiw4QkFDaEIsZUFBZTs7NEZBR04sd0JBQXdCO2tCQWJwQyxTQUFTO3NDQUVTLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQU2V0dGluZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBQbGF0Zm9ybVNjb3BlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYTVVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItc2Vzc2lvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1TZWN1cml0eU1hbmFnZW1lbnREZXZpY2VTZXNzaW9uc0VudGl0eU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzL2RldmljZS1zZXNzaW9ucy50eXBlcyc7XG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItc2Vzc2lvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNVXNlclNlc3Npb25zQ29tcG9uZW50IHtcbiAgQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zID0ge1xuICAgIG9uZVdlZWs6ICdvbmVXZWVrJyxcbiAgICBvbmVNb250aDogJ29uZU1vbnRoJyxcbiAgICB0aHJlZU1vbnRoczogJ3RocmVlTW9udGhzJyxcbiAgICBzaXhNb250aHM6ICdzaXhNb250aHMnLFxuICB9O1xuXG4gIGl0ZW1zID0gc2lnbmFsPEFYTVNlY3VyaXR5TWFuYWdlbWVudERldmljZVNlc3Npb25zRW50aXR5TW9kZWxbXT4oW10pO1xuICBhY3RpdmVTZXNzaW9uID0gc2lnbmFsPEFYTVNlY3VyaXR5TWFuYWdlbWVudERldmljZVNlc3Npb25zRW50aXR5TW9kZWwgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGV4cGlyZVRpbWUgPSBzaWduYWw8eyBuYW1lOiBzdHJpbmc7IGlkOiBzdHJpbmcgfSB8IG51bGw+KG51bGwpO1xuXG4gIGV4cGlyYXRpb25JdGVtcyA9IFtcbiAgICB7IG5hbWU6ICdUZXJtaW5hdGUgaW4gMSB3ZWVrJywgaWQ6IHRoaXMuQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zLm9uZVdlZWsgfSxcbiAgICB7IG5hbWU6ICdUZXJtaW5hdGUgaW4gMSBtb250aCcsIGlkOiB0aGlzLkFYUFRva2VuRXhwaXJhdGlvbkR1cmF0aW9ucy5vbmVNb250aCB9LFxuICAgIHsgbmFtZTogJ1Rlcm1pbmF0ZSBpbiAzIG1vbnRoJywgaWQ6IHRoaXMuQVhQVG9rZW5FeHBpcmF0aW9uRHVyYXRpb25zLnRocmVlTW9udGhzIH0sXG4gICAgeyBuYW1lOiAnVGVybWluYXRlIGluIDYgbW9udGgnLCBpZDogdGhpcy5BWFBUb2tlbkV4cGlyYXRpb25EdXJhdGlvbnMuc2l4TW9udGhzIH0sXG4gIF07XG4gIHByb3RlY3RlZCBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZTxhbnk+KHtcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAga2V5OiAnaWQnLFxuICAgIGxvYWQ6IGFzeW5jIChlKSA9PiB7XG4gICAgICBsZXQgaXRlbXMgPSB0aGlzLmV4cGlyYXRpb25JdGVtcztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zLFxuICAgICAgICB0b3RhbDogaXRlbXMubGVuZ3RoLFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbiAgcHJpdmF0ZSB1c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlID0gaW5qZWN0KEFYTVVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHBsYXRmb3JtID0gaW5qZWN0KEFYUGxhdGZvcm0pO1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZXR0aW5nU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2FkVXNlclNlc3Npb25zKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRVc2VyU2Vzc2lvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IHRoaXMudXNlckRldmljZVNlc3Npb25zU2VydmljZS5nZXRTZXNzaW9ucygpO1xuICAgICAgdGhpcy5pdGVtcy5zZXQoc2Vzc2lvbnMpO1xuICAgICAgXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBhY3RpdmVTZXNzaW9uID0gYXdhaXQgdGhpcy51c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlLmdldEN1cnJlbnRBY3RpdmVTZXNzaW9ucygpO1xuICAgICAgICB0aGlzLmFjdGl2ZVNlc3Npb24uc2V0KGFjdGl2ZVNlc3Npb24pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdObyBhY3RpdmUgc2Vzc2lvbiBmb3VuZDonLCBlcnJvcik7XG4gICAgICAgIHRoaXMuYWN0aXZlU2Vzc2lvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3Qgc2Vzc2lvblRpbWVvdXQgPSBhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcikuZ2V0KCdzZXNzaW9uLXRpbWVvdXQnKTtcbiAgICAgIGlmIChzZXNzaW9uVGltZW91dCAmJiBzZXNzaW9uVGltZW91dC5pZCBpbiB0aGlzLkFYUFRva2VuRXhwaXJhdGlvbkR1cmF0aW9ucykge1xuICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gdGhpcy5leHBpcmF0aW9uSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gc2Vzc2lvblRpbWVvdXQuaWQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgdGhpcy5leHBpcmVUaW1lLnNldCh7IG5hbWU6IHNlbGVjdGVkSXRlbS5uYW1lLCBpZDogc2VsZWN0ZWRJdGVtLmlkIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgdXNlciBzZXNzaW9ucycsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvLyDinIUgVXNlIGEgY29tcHV0ZWQgc2lnbmFsIHRvIHVwZGF0ZSBkeW5hbWljYWxseSB3aGVuIGl0ZW1zIGNoYW5nZVxuICBpdGVtc1dpdGhJY29ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pdGVtcygpLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBpY29uOiB0aGlzLmdldERldmljZUljb24oaXRlbS5kZXZpY2VOYW1lKSxcbiAgICB9KSksXG4gICk7XG5cbiAgZ2V0RGV2aWNlSWNvbihkZXZpY2VOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghZGV2aWNlTmFtZSkgcmV0dXJuICdmYS1zb2xpZCBmYS1xdWVzdGlvbic7IC8vIERlZmF1bHQgaWNvbiBpZiBubyBuYW1lIGlzIHByb3ZpZGVkXG5cbiAgICBjb25zdCBsb3dlckNhc2VOYW1lID0gZGV2aWNlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ3dpbmRvd3MnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtd2luZG93cyc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ21hY2Jvb2snKSB8fCBsb3dlckNhc2VOYW1lLmluY2x1ZGVzKCdtYWMnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYXBwbGUnO1xuICAgIGlmIChsb3dlckNhc2VOYW1lLmluY2x1ZGVzKCdsaW51eCcpKSByZXR1cm4gJ2ZhLWJyYW5kcyBmYS1saW51eCc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2FuZHJvaWQnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYW5kcm9pZCc7XG4gICAgaWYgKGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lvcycpIHx8IGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lwaG9uZScpIHx8IGxvd2VyQ2FzZU5hbWUuaW5jbHVkZXMoJ2lwYWQnKSkgcmV0dXJuICdmYS1icmFuZHMgZmEtYXBwbGUnO1xuXG4gICAgcmV0dXJuICdmYS1zb2xpZCBmYS1kZXNrdG9wJzsgLy8gRGVmYXVsdCBpY29uIGZvciB1bmtub3duIGRldmljZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoYW5nZVNlc3Npb25FeHBpcmVUaW1lKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2Uuc2V0VG9rZW5MaWZldGltZU1pbnV0ZXMoZS5jb21wb25lbnQuc2VsZWN0ZWRJdGVtc1swXSk7XG4gIH1cblxuICBhc3luYyBvblRlcm1pbmF0ZShzZXNzaW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBpdGVtIHRvIHRlcm1pbmF0ZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnVzZXJEZXZpY2VTZXNzaW9uc1NlcnZpY2UudGVybWluYXRlU2Vzc2lvbihzZXNzaW9uSWQpO1xuICAgIGF3YWl0IHRoaXMubG9hZFVzZXJTZXNzaW9ucygpO1xuICB9XG5cbiAgYXN5bmMgb25UZXJtaW5hdGVBbGwoKSB7XG4gICAgYXdhaXQgdGhpcy51c2VyRGV2aWNlU2Vzc2lvbnNTZXJ2aWNlLnRlcm1pbmF0ZUFsbFNlc3Npb24oKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRVc2VyU2Vzc2lvbnMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW14LWF1dG8gYXgtcC02IGF4LXctZnVsbFwiPlxuICA8cCBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3QgYXgtbWItNFwiPlRoaXMgRGV2aWNlPC9wPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgPlxuICAgIDxkaXYgY2xhc3M9XCJheC1ib3JkZXItcHJpbWFyeS0yMDAgYXgtYm9yZGVyIGF4LWJnLXByaW1hcnktNTAgYXgtcm91bmRlZC1sZ1wiPlxuICAgICAgPGkgY2xhc3M9XCJ7eyBnZXREZXZpY2VJY29uKGFjdGl2ZVNlc3Npb24oKT8uZGV2aWNlTmFtZSkgfX0gYXgtdGV4dC1wcmltYXJ5LTUwMCBheC1tLTNcIj48L2k+XG4gICAgPC9kaXY+XG4gICAgQGlmIChhY3RpdmVTZXNzaW9uKCkpIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1sLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj57eyBhY3RpdmVTZXNzaW9uKCk/LmRldmljZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC1zbSBheC10ZXh0LW9uLWxpZ2h0ZXN0XCI+e3sgYWN0aXZlU2Vzc2lvbigpPy5vcGVyYXRpbmdTeXN0ZW0gfX08L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQteHMgYXgtc3VidGl0bGUtb24tbGlnaHRlc3RcIj5cbiAgICAgICAgICAgIHt7IGFjdGl2ZVNlc3Npb24oKT8ubG9jYXRpb24gfX0gPHNwYW4+XG4gICAgICAgICAgICAgIHt7IGFjdGl2ZVNlc3Npb24oKT8ubGFzdExvZ2luRGF0ZSA/IChhY3RpdmVTZXNzaW9uKCk/Lmxhc3RMb2dpbkRhdGUgfCBkYXRlOiAneXl5eS9NTS9kZCBISDptbScpIDogJycgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGl0ZW1zV2l0aEljb25zKCkgJiYgaXRlbXNXaXRoSWNvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtYm9yZGVyLWRhbmdlci0yMDAgYXgtYm9yZGVyIGF4LWJnLWRhbmdlci01MCBheC1yb3VuZGVkLWxnXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNsZWFyIGF4LXRleHQtZGFuZ2VyLTUwMCBheC1tLTNcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1sLTIgYXgtY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25UZXJtaW5hdGVBbGwoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj5UZXJtaW5hdGUgQWxsIE90aGVyIFNlc3Npb25zPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC1zbSBheC1zdWJ0aXRsZS1vbi1saWdodGVzdFwiPkxvZyBvdXQgYWxsIGRldmljZXMgZXhlcHQgZm9yIHRoaXMgb25lLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoaXRlbXNXaXRoSWNvbnMoKSAmJiBpdGVtc1dpdGhJY29ucygpLmxlbmd0aCA+IDApIHtcbiAgICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtYmFzZSBheC10ZXh0LW9uLWxpZ2h0ZXN0IGF4LW10LTQgYXgtbWItNFwiPkFjdGl2ZSBEZXZpY2VzPC9wPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtc1dpdGhJY29ucygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWJvcmRlciBheC1pdGVtcy1jZW50ZXIgYXgtcmVsYXRpdmUgYXgtcm91bmRlZC1sZyBheC1ib3JkZXItbGlnaHRlc3QgYXgtYmctbGlnaHRlc3QgYXgtdGV4dC1vbi1saWdodGVzdCBheC1tYi0zIGF4LXAtM1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jbG9zZSBheC1hYnNvbHV0ZSBheC1lbmQtMiBheC10b3AtMiBheC1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblRlcm1pbmF0ZShpdGVtLmlkKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJvcmRlciBheC1yb3VuZGVkLWxnXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwie3sgaXRlbS5pY29uIH19IGF4LW0tM1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWwtMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlIGF4LXRleHQtb24tbGlnaHRlc3RcIj57eyBpdGVtLmRldmljZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQtc20gYXgtdGV4dC1vbi1saWdodGVzdFwiPnt7IGl0ZW0ub3BlcmF0aW5nU3lzdGVtIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1ub3JtYWwgYXgtdGV4dC14cyBheC1zdWJ0aXRsZS1vbi1saWdodGVzdFwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubG9jYXRpb24gfX0gPHNwYW4+e3sgaXRlbS5sYXN0TG9naW5EYXRlID8gKGl0ZW0ubGFzdExvZ2luRGF0ZSB8IGRhdGU6ICd5eXl5L01NL2RkIEhIOm1tJykgOiAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbjxheC1mb290ZXI+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4LWNvbCBheC13LWZ1bGxcIj5cbiAgICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LWRhbmdlci01MDAgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1iYXNlXCI+VGVybWluYXRlIE9sZCBTZXNzaW9uczwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1tdC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZvbnQtbm9ybWFsIGF4LXRleHQtYmFzZSBheC10ZXh0LW9uLWxpZ2h0ZXN0XCI+SWYgaW5hY3RpdmUgZm9yLi4uPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctMy82XCI+XG4gICAgICAgICAgICA8YXgtc2VsZWN0LWJveFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJleHBpcmVUaW1lKClcIlxuICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25DaGFuZ2VTZXNzaW9uRXhwaXJlVGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICAgICAgICAgIHRleHRGaWVsZD1cIm5hbWVcIlxuICAgICAgICAgICAgICB2YWx1ZUZpZWxkPVwiaWRcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNob29zZS4uLlwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2F4LWZvb3Rlcj5cbiJdfQ=="],"names":["i4"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { e as AXMAuthErrorHandler, h as AXMAuthModule, a as AXMAuthenticationTypes, f as AXMDefaultAuthConfigs, k as AXMDeviceSessionsService, l as AXMDeviceSessionsServiceImpl, i as AXMSessionStatusTypes, A as AXM_AUTH_CONFIG_TOKEN, j as AXPIdleService, g as configAuthModule } from './acorex-modules-auth-acorex-modules-auth-CAGlVzjD.mjs';
1
+ export { e as AXMAuthErrorHandler, h as AXMAuthModule, a as AXMAuthenticationTypes, f as AXMDefaultAuthConfigs, k as AXMDeviceSessionsService, l as AXMDeviceSessionsServiceImpl, i as AXMSessionStatusTypes, A as AXM_AUTH_CONFIG_TOKEN, j as AXPIdleService, g as configAuthModule } from './acorex-modules-auth-acorex-modules-auth-D2RpP22p.mjs';
2
2
  //# sourceMappingURL=acorex-modules-auth.mjs.map
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@acorex/modules",
3
- "version": "20.6.3",
3
+ "version": "20.6.4",
4
4
  "peerDependencies": {
5
- "@acorex/platform": "20.6.3",
5
+ "@acorex/platform": "20.6.4",
6
6
  "@angular/service-worker": "^20.0.0",
7
7
  "angular-oauth2-oidc": "^15.0.0",
8
8
  "d3": "^7.0.0",
@@ -1,226 +0,0 @@
1
- import * as i2$1 from '@acorex/components/button';
2
- import { AXButtonModule } from '@acorex/components/button';
3
- import * as i9 from '@acorex/components/check-box';
4
- import { AXCheckBoxModule } from '@acorex/components/check-box';
5
- import * as i1$2 from '@acorex/components/decorators';
6
- import { AXDecoratorModule } from '@acorex/components/decorators';
7
- import { AXDialogService } from '@acorex/components/dialog';
8
- import * as i1$1 from '@acorex/components/form';
9
- import { AXFormModule, AXFormComponent } from '@acorex/components/form';
10
- import * as i7 from '@acorex/components/label';
11
- import { AXLabelModule } from '@acorex/components/label';
12
- import * as i2$2 from '@acorex/components/loading';
13
- import { AXLoadingModule } from '@acorex/components/loading';
14
- import * as i5 from '@acorex/components/password-box';
15
- import { AXPasswordBoxModule } from '@acorex/components/password-box';
16
- import * as i4 from '@acorex/components/text-box';
17
- import { AXTextBoxModule } from '@acorex/components/text-box';
18
- import * as i5$1 from '@acorex/core/translation';
19
- import { AXTranslationModule } from '@acorex/core/translation';
20
- import * as i1 from '@angular/common';
21
- import { CommonModule } from '@angular/common';
22
- import * as i0 from '@angular/core';
23
- import { inject, ViewChild, Component } from '@angular/core';
24
- import { RouterModule, ActivatedRoute, Router } from '@angular/router';
25
- import { AXToastService } from '@acorex/components/toast';
26
- import { AXValidationModule } from '@acorex/core/validation';
27
- import { AXPSessionService } from '@acorex/platform/auth';
28
- import { AXPHomePageService } from '@acorex/platform/common';
29
- import * as i2 from '@angular/forms';
30
- import { FormsModule } from '@angular/forms';
31
- import { BehaviorSubject, firstValueFrom } from 'rxjs';
32
- import { A as AXM_AUTH_CONFIG_TOKEN, a as AXMAuthenticationTypes } from './acorex-modules-auth-acorex-modules-auth-CAGlVzjD.mjs';
33
-
34
- const MODULES = [
35
- CommonModule,
36
- FormsModule,
37
- AXFormModule,
38
- AXTextBoxModule,
39
- AXPasswordBoxModule,
40
- AXButtonModule,
41
- AXLabelModule,
42
- AXDecoratorModule,
43
- AXCheckBoxModule,
44
- AXTranslationModule,
45
- AXTranslationModule,
46
- AXLoadingModule,
47
- RouterModule,
48
- AXValidationModule,
49
- ];
50
- class AXPLoginPasswordComponent {
51
- constructor() {
52
- this.configs = inject(AXM_AUTH_CONFIG_TOKEN);
53
- this.v1 = '';
54
- this.v2 = '';
55
- this.isLoading$ = new BehaviorSubject(false);
56
- this.isExternalLoading$ = new BehaviorSubject(false);
57
- this.submitText = 'signin.submit';
58
- this.dialogService = inject(AXDialogService);
59
- this.sessionService = inject(AXPSessionService);
60
- this.activateRoute = inject(ActivatedRoute);
61
- this.homePageService = inject(AXPHomePageService);
62
- this.toastService = inject(AXToastService);
63
- this.router = inject(Router);
64
- this.isKeepLogin = false;
65
- }
66
- // Computed property to check if external providers exist
67
- get hasExternalProviders() {
68
- return !!(this.configs?.externalProviders && Object.keys(this.configs.externalProviders).length > 0);
69
- }
70
- ngOnInit() {
71
- this.l2 = 'password';
72
- switch (this.configs.type) {
73
- case AXMAuthenticationTypes.EmailPassword:
74
- this.l1 = 'email';
75
- break;
76
- case AXMAuthenticationTypes.MobilePassword:
77
- this.l1 = 'mobile';
78
- break;
79
- case AXMAuthenticationTypes.UsernameEmailPassword:
80
- this.l1 = 'username-email';
81
- break;
82
- case AXMAuthenticationTypes.UsernamePassword:
83
- default:
84
- this.l1 = 'username';
85
- }
86
- }
87
- handleForgotOnClick() {
88
- this.router.navigate(['/auth/forgot']);
89
- }
90
- handleRegisterOnClick() {
91
- this.router.navigate([this.configs.signup?.url || '/auth/register']);
92
- }
93
- handleLoginClick() {
94
- this.sessionService.setStrategy(this.configs.defaultStrategyName || 'user-pass');
95
- const redirectUrl = this.activateRoute.snapshot.queryParams['redirectUrl'];
96
- this.form.validate().then(async (form) => {
97
- console.log(this.configs.defaultStrategyName);
98
- if (form.result) {
99
- this.isLoading$.next(true);
100
- this.submitText = 'processing';
101
- this.submitText = 'redirecting';
102
- try {
103
- const strategy = this.sessionService.getSessionData()?.strategy;
104
- if (!strategy) {
105
- throw new Error('Strategy not found');
106
- }
107
- await this.sessionService.signin({
108
- strategy: strategy,
109
- username: this.v1,
110
- password: this.v2,
111
- });
112
- await this.sessionService.signInComplete();
113
- // Check authentication status before navigation
114
- const isAuthenticated = await firstValueFrom(this.sessionService.isAuthenticated$);
115
- if (!isAuthenticated) {
116
- throw new Error('Authentication failed after signin');
117
- }
118
- const currentApplication = await firstValueFrom(this.sessionService.application$);
119
- if (!currentApplication) {
120
- if (this.sessionService.tenant?.id == null) {
121
- this.router.navigate(['/auth/account/tenant-chooser']);
122
- }
123
- else if (this.sessionService.application?.id == null) {
124
- this.router.navigate(['/auth/account/app-chooser']);
125
- }
126
- }
127
- else if (redirectUrl) {
128
- this.router.navigate([redirectUrl]);
129
- }
130
- else {
131
- await this.homePageService.navigateTo();
132
- }
133
- }
134
- catch (error) {
135
- let errorMsg = error?.error?.error_description ||
136
- error?.error?.error ||
137
- error?.message ||
138
- 'An error occurred during sign in.';
139
- if (typeof errorMsg === 'object') {
140
- // اگر شیء بود، سعی کن یک فیلد message یا description را نمایش بدهی
141
- errorMsg = errorMsg.message || errorMsg.error_description || JSON.stringify(errorMsg);
142
- }
143
- this.toastService.show({
144
- color: 'danger',
145
- content: errorMsg,
146
- timeOut: 5000,
147
- });
148
- console.log({ error });
149
- this.submitText = 'signin.submit';
150
- this.v2 = null;
151
- this.isLoading$.next(false);
152
- }
153
- }
154
- });
155
- }
156
- async handleExternalSignIn(provider) {
157
- this.sessionService.setStrategy(provider);
158
- try {
159
- this.isExternalLoading$.next(true);
160
- // Get provider configuration (optional, for validation)
161
- const providerConfig = this.configs?.externalProviders?.[provider];
162
- if (!providerConfig) {
163
- throw new Error(`Provider '${provider}' is not configured`);
164
- }
165
- await this.sessionService.signin({ strategy: provider });
166
- }
167
- catch (error) {
168
- console.error(`${provider} sign-in error:`, error);
169
- // Optionally show an error message to the user here
170
- }
171
- finally {
172
- this.isExternalLoading$.next(false);
173
- }
174
- }
175
- /**
176
- * Generates a code challenge for PKCE (Proof Key for Code Exchange)
177
- */
178
- async generateCodeChallenge(codeVerifier) {
179
- // Create SHA256 hash of the code verifier
180
- const hash = await this.sha256(codeVerifier);
181
- // Base64url encode the hash
182
- return this.base64UrlEncode(hash);
183
- }
184
- /**
185
- * Generates a random string for code verifier
186
- */
187
- generateRandomString(length) {
188
- const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
189
- let text = '';
190
- for (let i = 0; i < length; i++) {
191
- text += possible.charAt(Math.floor(Math.random() * possible.length));
192
- }
193
- return text;
194
- }
195
- /**
196
- * Creates SHA256 hash of the input string using Web Crypto API
197
- */
198
- async sha256(str) {
199
- const encoder = new TextEncoder();
200
- const data = encoder.encode(str);
201
- return await crypto.subtle.digest('SHA-256', data);
202
- }
203
- /**
204
- * Base64url encodes an ArrayBuffer
205
- */
206
- base64UrlEncode(buffer) {
207
- const bytes = new Uint8Array(buffer);
208
- let binary = '';
209
- for (let i = 0; i < bytes.byteLength; i++) {
210
- binary += String.fromCharCode(bytes[i]);
211
- }
212
- return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
213
- }
214
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPLoginPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
215
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPLoginPasswordComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: AXFormComponent, descendants: true }], ngImport: i0, template: "<ng-container *translate=\"let t\">\n <div class=\"ax-text-center ax-mb-4\">\n <h1 class=\"ax-font-bold ax-text-xl ax-mb-2\">\n {{ '@auth:signin.title' | translate | async }}\n </h1>\n <p class=\"ax-text-base ax-text-neutral-600\">\n {{ '@auth:signin.hint' | translate | async }}\n </p>\n </div>\n <div class=\"ax-w-80 lg:ax-w-96\">\n <ax-form>\n <div class=\"ax-flex ax-flex-col ax-gap-6\">\n <ax-form-field>\n <ax-label>{{ '@auth:username-email' | translate | async }}</ax-label>\n <ax-text-box [name]=\"'username'\" id=\"username\" [autoComplete]=\"'username'\" [(value)]=\"v1\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@auth:password' | translate | async }}</ax-label>\n <ax-password-box [name]=\"'password'\" id=\"password\" [autoComplete]=\"'current-password'\" [(value)]=\"v2\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-password-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <ax-check-box [(ngModel)]=\"isKeepLogin\">\n <ax-label class=\"ax-mb-0\">{{ '@auth:signin.remember' | translate | async }}</ax-label>\n </ax-check-box>\n <ax-button\n color=\"primary\"\n class=\"ax-sm\"\n id=\"forgot-password\"\n [text]=\"'@auth:forgot.password' | translate | async\"\n look=\"blank\"\n (onClick)=\"handleForgotOnClick()\"\n >\n </ax-button>\n </div>\n </div>\n <ax-button\n color=\"primary\"\n class=\"ax-mt-6 ax-w-full\"\n id=\"submit-login\"\n [text]=\"'@auth:signin.submit' | translate | async\"\n (onClick)=\"handleLoginClick()\"\n [disabled]=\"isLoading$ | async\"\n [type]=\"'submit'\"\n >\n @if (isLoading$ | async) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n @if (hasExternalProviders || configs.signup?.enable) {\n <div class=\"ax-heading ax-heading-center !ax-my-8\">\n <span>{{ '@auth:signin.or' | translate | async }}</span>\n </div>\n }\n <div class=\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\">\n @if (configs.externalProviders?.['google']) {\n <ax-button\n class=\"ax-w-full ax-mt-2\"\n text=\"{{ '@auth:authentication.with-google' | translate | async }}\"\n [color]=\"'default'\"\n id=\"google\"\n (onClick)=\"handleExternalSignIn('google')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-google fa-lg ax-text-danger-500\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n @if (configs.externalProviders?.['apple']) {\n <ax-button\n text=\"{{ '@auth:authentication.with-apple' | translate | async }}\"\n [color]=\"'default'\"\n id=\"apple\"\n (onClick)=\"handleExternalSignIn('apple')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-apple fa-xl\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n @if (configs.externalProviders?.['microsoft']) {\n <ax-button\n text=\"{{ '@auth:authentication.with-microsoft' | translate | async }}\"\n [color]=\"'default'\"\n id=\"microsoft\"\n (onClick)=\"handleExternalSignIn('microsoft')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-microsoft fa-lg text-blue-500\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n </div>\n </ax-form>\n @if (configs.signup?.enable) {\n <ax-button\n class=\"ax-w-full ax-mt-2\"\n id=\"register\"\n (onClick)=\"handleRegisterOnClick()\"\n text=\"{{ '@auth:register' | translate | async }}\"\n [color]=\"'default'\"\n >\n </ax-button>\n }\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i1$1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i1$1.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i1$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i4.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXPasswordBoxModule }, { kind: "component", type: i5.AXPasswordBoxComponent, selector: "ax-password-box", inputs: ["readonly", "disabled", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "autoComplete", "showToggleButton", "class"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i7.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i9.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }] }); }
216
- }
217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPLoginPasswordComponent, decorators: [{
218
- type: Component,
219
- args: [{ imports: [...MODULES], template: "<ng-container *translate=\"let t\">\n <div class=\"ax-text-center ax-mb-4\">\n <h1 class=\"ax-font-bold ax-text-xl ax-mb-2\">\n {{ '@auth:signin.title' | translate | async }}\n </h1>\n <p class=\"ax-text-base ax-text-neutral-600\">\n {{ '@auth:signin.hint' | translate | async }}\n </p>\n </div>\n <div class=\"ax-w-80 lg:ax-w-96\">\n <ax-form>\n <div class=\"ax-flex ax-flex-col ax-gap-6\">\n <ax-form-field>\n <ax-label>{{ '@auth:username-email' | translate | async }}</ax-label>\n <ax-text-box [name]=\"'username'\" id=\"username\" [autoComplete]=\"'username'\" [(value)]=\"v1\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@auth:password' | translate | async }}</ax-label>\n <ax-password-box [name]=\"'password'\" id=\"password\" [autoComplete]=\"'current-password'\" [(value)]=\"v2\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-password-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <ax-check-box [(ngModel)]=\"isKeepLogin\">\n <ax-label class=\"ax-mb-0\">{{ '@auth:signin.remember' | translate | async }}</ax-label>\n </ax-check-box>\n <ax-button\n color=\"primary\"\n class=\"ax-sm\"\n id=\"forgot-password\"\n [text]=\"'@auth:forgot.password' | translate | async\"\n look=\"blank\"\n (onClick)=\"handleForgotOnClick()\"\n >\n </ax-button>\n </div>\n </div>\n <ax-button\n color=\"primary\"\n class=\"ax-mt-6 ax-w-full\"\n id=\"submit-login\"\n [text]=\"'@auth:signin.submit' | translate | async\"\n (onClick)=\"handleLoginClick()\"\n [disabled]=\"isLoading$ | async\"\n [type]=\"'submit'\"\n >\n @if (isLoading$ | async) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n @if (hasExternalProviders || configs.signup?.enable) {\n <div class=\"ax-heading ax-heading-center !ax-my-8\">\n <span>{{ '@auth:signin.or' | translate | async }}</span>\n </div>\n }\n <div class=\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\">\n @if (configs.externalProviders?.['google']) {\n <ax-button\n class=\"ax-w-full ax-mt-2\"\n text=\"{{ '@auth:authentication.with-google' | translate | async }}\"\n [color]=\"'default'\"\n id=\"google\"\n (onClick)=\"handleExternalSignIn('google')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-google fa-lg ax-text-danger-500\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n @if (configs.externalProviders?.['apple']) {\n <ax-button\n text=\"{{ '@auth:authentication.with-apple' | translate | async }}\"\n [color]=\"'default'\"\n id=\"apple\"\n (onClick)=\"handleExternalSignIn('apple')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-apple fa-xl\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n @if (configs.externalProviders?.['microsoft']) {\n <ax-button\n text=\"{{ '@auth:authentication.with-microsoft' | translate | async }}\"\n [color]=\"'default'\"\n id=\"microsoft\"\n (onClick)=\"handleExternalSignIn('microsoft')\"\n [disabled]=\"isExternalLoading$ | async\"\n >\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-brands fa-microsoft fa-lg text-blue-500\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-loading *ngIf=\"isExternalLoading$ | async\"></ax-loading>\n </ax-button>\n }\n </div>\n </ax-form>\n @if (configs.signup?.enable) {\n <ax-button\n class=\"ax-w-full ax-mt-2\"\n id=\"register\"\n (onClick)=\"handleRegisterOnClick()\"\n text=\"{{ '@auth:register' | translate | async }}\"\n [color]=\"'default'\"\n >\n </ax-button>\n }\n </div>\n</ng-container>\n" }]
220
- }], propDecorators: { form: [{
221
- type: ViewChild,
222
- args: [AXFormComponent]
223
- }] } });
224
-
225
- export { AXPLoginPasswordComponent };
226
- //# sourceMappingURL=acorex-modules-auth-password.component-Dqb6GBes.mjs.map