@acorex-platform/module-auth-client 0.0.53 → 0.0.56

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 (71) hide show
  1. package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-DuplzyV7.mjs} +115 -332
  2. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-DuplzyV7.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-CLKLwWW8.mjs → acorex-platform-module-auth-client-app-chooser.component-DtqWiAUz.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-CLKLwWW8.mjs.map → acorex-platform-module-auth-client-app-chooser.component-DtqWiAUz.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-CknYaMZD.mjs → acorex-platform-module-auth-client-change-password.command-Bmhag8Ec.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-CknYaMZD.mjs.map → acorex-platform-module-auth-client-change-password.command-Bmhag8Ec.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CML784Lg.mjs → acorex-platform-module-auth-client-change-photo.command-nUXhaunq.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CML784Lg.mjs.map → acorex-platform-module-auth-client-change-photo.command-nUXhaunq.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs → acorex-platform-module-auth-client-get-user-activity.query-WQ2Cddje.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs.map → acorex-platform-module-auth-client-get-user-activity.query-WQ2Cddje.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs → acorex-platform-module-auth-client-lock-screen.command-BNfSDphl.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs.map → acorex-platform-module-auth-client-lock-screen.command-BNfSDphl.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs → acorex-platform-module-auth-client-login.module-Vnp_yqik.mjs} +3 -3
  14. package/fesm2022/{acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs.map → acorex-platform-module-auth-client-login.module-Vnp_yqik.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BAg2W20W.mjs → acorex-platform-module-auth-client-manage-two-factor.command-DUKXmbTm.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BAg2W20W.mjs.map → acorex-platform-module-auth-client-manage-two-factor.command-DUKXmbTm.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-auth-client-oauth-callback.component-DWnljN18.mjs → acorex-platform-module-auth-client-oauth-callback.component-BgUSFibH.mjs} +3 -3
  18. package/fesm2022/{acorex-platform-module-auth-client-oauth-callback.component-DWnljN18.mjs.map → acorex-platform-module-auth-client-oauth-callback.component-BgUSFibH.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-CEpu6c7D.mjs → acorex-platform-module-auth-client-open-sessions.command-QA8Qy-QK.mjs} +5 -5
  20. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-CEpu6c7D.mjs.map → acorex-platform-module-auth-client-open-sessions.command-QA8Qy-QK.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs → acorex-platform-module-auth-client-password.component-DV_st1dO.mjs} +9 -9
  22. package/fesm2022/acorex-platform-module-auth-client-password.component-DV_st1dO.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-D4bqeKCd.mjs → acorex-platform-module-auth-client-profile-activity-chart.component-ChfLmf-G.mjs} +5 -5
  24. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-D4bqeKCd.mjs.map → acorex-platform-module-auth-client-profile-activity-chart.component-ChfLmf-G.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DWNbDzDd.mjs → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs} +4 -4
  26. package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DWNbDzDd.mjs.map → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-DLTbTEe6.mjs → acorex-platform-module-auth-client-profile-page-component.provider-DFR0YCzn.mjs} +4 -4
  28. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-DLTbTEe6.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-DFR0YCzn.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-BhmMsO3g.mjs → acorex-platform-module-auth-client-profile-page.component-CTUIGiwl.mjs} +5 -5
  30. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-BhmMsO3g.mjs.map → acorex-platform-module-auth-client-profile-page.component-CTUIGiwl.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs → acorex-platform-module-auth-client-register-password.component-Dxnh1oWk.mjs} +9 -8
  32. package/fesm2022/acorex-platform-module-auth-client-register-password.component-Dxnh1oWk.mjs.map +1 -0
  33. package/fesm2022/{acorex-platform-module-auth-client-register.module-Qa3ovje0.mjs → acorex-platform-module-auth-client-register.module-5_AvLXe5.mjs} +4 -4
  34. package/fesm2022/{acorex-platform-module-auth-client-register.module-Qa3ovje0.mjs.map → acorex-platform-module-auth-client-register.module-5_AvLXe5.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-BenNCyt6.mjs → acorex-platform-module-auth-client-remove-pin-code.command-CHs-Ulo9.mjs} +2 -2
  36. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-BenNCyt6.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-CHs-Ulo9.mjs.map} +1 -1
  37. package/fesm2022/acorex-platform-module-auth-client-result.component-DuMch6Ge.mjs +38 -0
  38. package/fesm2022/acorex-platform-module-auth-client-result.component-DuMch6Ge.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-ChigSAI-.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-BG_kRZlx.mjs} +6 -6
  40. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-ChigSAI-.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-BG_kRZlx.mjs.map} +1 -1
  41. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CefSbJz8.mjs → acorex-platform-module-auth-client-set-pin-code.command-Dr-Ca07P.mjs} +3 -3
  42. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CefSbJz8.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-Dr-Ca07P.mjs.map} +1 -1
  43. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-DqFW_4rM.mjs → acorex-platform-module-auth-client-set-pin-code.component-BJDxhfaN.mjs} +5 -5
  44. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-DqFW_4rM.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-BJDxhfaN.mjs.map} +1 -1
  45. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-DCdRCf1m.mjs → acorex-platform-module-auth-client-tenant-chooser.component-BuDF5_BQ.mjs} +2 -2
  46. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-DCdRCf1m.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-BuDF5_BQ.mjs.map} +1 -1
  47. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-CtSv3MQu.mjs → acorex-platform-module-auth-client-two-factor-code.component-C7mUgPF3.mjs} +2 -2
  48. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-CtSv3MQu.mjs.map → acorex-platform-module-auth-client-two-factor-code.component-C7mUgPF3.mjs.map} +1 -1
  49. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-B7tETPbq.mjs → acorex-platform-module-auth-client-two-factor.module-DfBc55hu.mjs} +2 -2
  50. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-B7tETPbq.mjs.map → acorex-platform-module-auth-client-two-factor.module-DfBc55hu.mjs.map} +1 -1
  51. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs → acorex-platform-module-auth-client-view-login-history.command-BDWELxmi.mjs} +2 -2
  52. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs.map → acorex-platform-module-auth-client-view-login-history.command-BDWELxmi.mjs.map} +1 -1
  53. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs → acorex-platform-module-auth-client-welcome-onboarding-page.component-DcYCayqN.mjs} +2 -2
  54. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs.map → acorex-platform-module-auth-client-welcome-onboarding-page.component-DcYCayqN.mjs.map} +1 -1
  55. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs → acorex-platform-module-auth-client-welcome-onboarding.command-BKMo5xN9.mjs} +2 -2
  56. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs.map → acorex-platform-module-auth-client-welcome-onboarding.command-BKMo5xN9.mjs.map} +1 -1
  57. package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
  58. package/i18n/en-AU/auth.json +1196 -0
  59. package/i18n/en-US/auth.json +1196 -0
  60. package/i18n/fa-IR/auth.json +1196 -0
  61. package/package.json +2 -2
  62. package/types/acorex-platform-module-auth-client.d.ts +29 -2
  63. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs.map +0 -1
  64. package/fesm2022/acorex-platform-module-auth-client-master.layout-B3krDskY.mjs +0 -39
  65. package/fesm2022/acorex-platform-module-auth-client-master.layout-B3krDskY.mjs.map +0 -1
  66. package/fesm2022/acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs.map +0 -1
  67. package/fesm2022/acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs +0 -84
  68. package/fesm2022/acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs.map +0 -1
  69. package/fesm2022/acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs.map +0 -1
  70. package/fesm2022/acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs +0 -36
  71. package/fesm2022/acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs.map +0 -1
@@ -1,39 +0,0 @@
1
- import * as i5 from '@acorex/core/translation';
2
- import { AXTranslationModule } from '@acorex/core/translation';
3
- import { AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';
4
- import * as i1 from '@acorex-platform/framework-client/core';
5
- import { AXPLogoComponent, AXPComponentSlotModule, AXPContextStore } from '@acorex-platform/framework-client/core';
6
- import { AsyncPipe } from '@angular/common';
7
- import * as i0 from '@angular/core';
8
- import { inject, signal, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
9
- import * as i6 from '@angular/router';
10
- import { RouterModule } from '@angular/router';
11
- import { w as AXMAuthPlatformSettingsService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
12
-
13
- //#region ----- Auth master layout -----
14
- class AXPAuthMasterLayoutComponent {
15
- //#endregion
16
- //#region ----- Lifecycle -----
17
- constructor() {
18
- //#region ----- Services & Dependencies -----
19
- this.authPlatformSettings = inject(AXMAuthPlatformSettingsService);
20
- this.platformBranding = inject(AXPPlatformBrandingService);
21
- this.platformTitle = signal('', /* @ts-ignore */
22
- ...(ngDevMode ? [{ debugName: "platformTitle" }] : /* istanbul ignore next */ []));
23
- //#endregion
24
- //#region ----- Computed Properties -----
25
- /** Plain string or MLS map — rendered via translate pipe. */
26
- this.slogan = this.authPlatformSettings.slogan();
27
- this.description = this.authPlatformSettings.description();
28
- void this.platformBranding.resolvePlatformTitle().then((title) => this.platformTitle.set(title));
29
- }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAuthMasterLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXPAuthMasterLayoutComponent, isStandalone: true, selector: "ng-component", providers: [AXPContextStore], ngImport: i0, template: "<div class=\"w-full h-full flex overflow-hidden\">\n <div\n class=\"axp-auth-master__form-pane flex-1 min-h-0 lightest-surface dark:darker-surface overflow-y-auto px-6 sm:px-8 md:px-10 lg:px-0\"\n >\n <!-- ----- Stack: logo + form vertically centered; footer pinned below ----- -->\n <div\n class=\"axp-auth-master__stack w-full min-h-full flex flex-col items-center\"\n >\n <div\n class=\"axp-auth-master__main w-full grow flex flex-col items-center justify-center gap-5 pt-6 pb-4 sm:pt-8 lg:pt-0 lg:gap-0\"\n >\n <!-- ----- Platform branding on viewports without the side panel ----- -->\n <div class=\"axp-auth-master__brand lg:hidden shrink-0 w-full flex justify-center\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"240\"\n [attr.alt]=\"platformTitle()\"\n class=\"axp-auth-master__logo\"\n ></axp-logo>\n </div>\n <div class=\"axp-auth-master__form-body w-full flex flex-col items-center\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <div class=\"flex justify-between shrink-0 pt-2 pb-1\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n </div>\n <div class=\"hidden lg:flex bg-primary-500 flex-1 axp-auth-bk text-white\">\n <div class=\"flex w-full flex-col justify-between px-48 py-20 text-center \">\n <div>\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onDark\"\n format=\"full\"\n [size]=\"280\"\n [attr.alt]=\"platformTitle()\"\n class=\"w-[280px] max-w-full mx-auto\"\n ></axp-logo>\n </div>\n <div>\n <p class=\"font-black text-4xl mb-4\">{{ slogan | translate | async }}</p>\n <p>{{ description | translate | async }}</p>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;.axp-auth-master__form-pane{-webkit-overflow-scrolling:touch;padding-top:max(1.75rem,calc(env(safe-area-inset-top,0px) + 1.25rem));padding-bottom:max(1.5rem,env(safe-area-inset-bottom,0px))}@media(min-width:1024px){.axp-auth-master__form-pane{padding-top:3rem;padding-bottom:3rem}}.axp-auth-master__brand{padding-top:.5rem;margin-bottom:.25rem}.axp-auth-master__logo{width:min(15rem,85vw);max-width:100%}@media(min-width:640px){.axp-auth-master__logo{width:min(16.25rem,90vw)}}.axp-auth-master__form-body>*:not(router-outlet){display:block;width:100%}.auth-footer-links{gap:calc(var(--spacing, .25rem) * 5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.auth-footer-links a{background-color:transparent;color:var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-surface)))}.auth-footer-links a.ax-state-selected{color:var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-surface)))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i6.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i1.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name", "host", "context"], exportAs: ["slot"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAuthMasterLayoutComponent, decorators: [{
34
- type: Component,
35
- args: [{ imports: [RouterModule, AXPLogoComponent, AXPComponentSlotModule, AXTranslationModule, AsyncPipe], providers: [AXPContextStore], changeDetection: ChangeDetectionStrategy.Eager, encapsulation: ViewEncapsulation.None, template: "<div class=\"w-full h-full flex overflow-hidden\">\n <div\n class=\"axp-auth-master__form-pane flex-1 min-h-0 lightest-surface dark:darker-surface overflow-y-auto px-6 sm:px-8 md:px-10 lg:px-0\"\n >\n <!-- ----- Stack: logo + form vertically centered; footer pinned below ----- -->\n <div\n class=\"axp-auth-master__stack w-full min-h-full flex flex-col items-center\"\n >\n <div\n class=\"axp-auth-master__main w-full grow flex flex-col items-center justify-center gap-5 pt-6 pb-4 sm:pt-8 lg:pt-0 lg:gap-0\"\n >\n <!-- ----- Platform branding on viewports without the side panel ----- -->\n <div class=\"axp-auth-master__brand lg:hidden shrink-0 w-full flex justify-center\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"240\"\n [attr.alt]=\"platformTitle()\"\n class=\"axp-auth-master__logo\"\n ></axp-logo>\n </div>\n <div class=\"axp-auth-master__form-body w-full flex flex-col items-center\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <div class=\"flex justify-between shrink-0 pt-2 pb-1\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n </div>\n <div class=\"hidden lg:flex bg-primary-500 flex-1 axp-auth-bk text-white\">\n <div class=\"flex w-full flex-col justify-between px-48 py-20 text-center \">\n <div>\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onDark\"\n format=\"full\"\n [size]=\"280\"\n [attr.alt]=\"platformTitle()\"\n class=\"w-[280px] max-w-full mx-auto\"\n ></axp-logo>\n </div>\n <div>\n <p class=\"font-black text-4xl mb-4\">{{ slogan | translate | async }}</p>\n <p>{{ description | translate | async }}</p>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;.axp-auth-master__form-pane{-webkit-overflow-scrolling:touch;padding-top:max(1.75rem,calc(env(safe-area-inset-top,0px) + 1.25rem));padding-bottom:max(1.5rem,env(safe-area-inset-bottom,0px))}@media(min-width:1024px){.axp-auth-master__form-pane{padding-top:3rem;padding-bottom:3rem}}.axp-auth-master__brand{padding-top:.5rem;margin-bottom:.25rem}.axp-auth-master__logo{width:min(15rem,85vw);max-width:100%}@media(min-width:640px){.axp-auth-master__logo{width:min(16.25rem,90vw)}}.axp-auth-master__form-body>*:not(router-outlet){display:block;width:100%}.auth-footer-links{gap:calc(var(--spacing, .25rem) * 5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.auth-footer-links a{background-color:transparent;color:var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-surface)))}.auth-footer-links a.ax-state-selected{color:var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-surface)))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
36
- }], ctorParameters: () => [] });
37
-
38
- export { AXPAuthMasterLayoutComponent };
39
- //# sourceMappingURL=acorex-platform-module-auth-client-master.layout-B3krDskY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-master.layout-B3krDskY.mjs","sources":["../../../../libs/modules/auth/client/src/lib/shared/layouts/master/master.layout.ts","../../../../libs/modules/auth/client/src/lib/shared/layouts/master/master.layout.html"],"sourcesContent":["import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';\nimport { AXPComponentSlotModule, AXPContextStore, AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AXMAuthPlatformSettingsService } from '../../../auth-platform-settings.service';\n\n//#region ----- Auth master layout -----\n\n@Component({\n templateUrl: 'master.layout.html',\n styleUrls: ['master.layout.css'],\n imports: [RouterModule, AXPLogoComponent, AXPComponentSlotModule, AXTranslationModule, AsyncPipe],\n providers: [AXPContextStore],\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAuthMasterLayoutComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly authPlatformSettings = inject(AXMAuthPlatformSettingsService);\n private readonly platformBranding = inject(AXPPlatformBrandingService);\n\n protected readonly platformTitle = signal('');\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n void this.platformBranding.resolvePlatformTitle().then((title) => this.platformTitle.set(title));\n }\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n /** Plain string or MLS map — rendered via translate pipe. */\n protected readonly slogan = this.authPlatformSettings.slogan();\n protected readonly description = this.authPlatformSettings.description();\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"w-full h-full flex overflow-hidden\">\n <div\n class=\"axp-auth-master__form-pane flex-1 min-h-0 lightest-surface dark:darker-surface overflow-y-auto px-6 sm:px-8 md:px-10 lg:px-0\"\n >\n <!-- ----- Stack: logo + form vertically centered; footer pinned below ----- -->\n <div\n class=\"axp-auth-master__stack w-full min-h-full flex flex-col items-center\"\n >\n <div\n class=\"axp-auth-master__main w-full grow flex flex-col items-center justify-center gap-5 pt-6 pb-4 sm:pt-8 lg:pt-0 lg:gap-0\"\n >\n <!-- ----- Platform branding on viewports without the side panel ----- -->\n <div class=\"axp-auth-master__brand lg:hidden shrink-0 w-full flex justify-center\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"240\"\n [attr.alt]=\"platformTitle()\"\n class=\"axp-auth-master__logo\"\n ></axp-logo>\n </div>\n <div class=\"axp-auth-master__form-body w-full flex flex-col items-center\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <div class=\"flex justify-between shrink-0 pt-2 pb-1\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n </div>\n <div class=\"hidden lg:flex bg-primary-500 flex-1 axp-auth-bk text-white\">\n <div class=\"flex w-full flex-col justify-between px-48 py-20 text-center \">\n <div>\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onDark\"\n format=\"full\"\n [size]=\"280\"\n [attr.alt]=\"platformTitle()\"\n class=\"w-[280px] max-w-full mx-auto\"\n ></axp-logo>\n </div>\n <div>\n <p class=\"font-black text-4xl mb-4\">{{ slogan | translate | async }}</p>\n <p>{{ description | translate | async }}</p>\n </div>\n </div>\n </div>\n</div>\n"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;AAQA;MAUa,4BAA4B,CAAA;;;AAYvC,IAAA,WAAA,GAAA;;AATiB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAC7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,0BAA0B,CAAC;QAEnD,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,EAAE;0FAAC;;;;AAe1B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;QATtE,KAAK,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClG;8GAdW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAJ5B,CAAC,eAAe,CAAC,0BCd9B,u/DAoDA,EAAA,MAAA,EAAA,CAAA,m4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,0FAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKrF,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;8BAGC,CAAC,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,SAAS,CAAC,aACtF,CAAC,eAAe,CAAC,EAAA,eAAA,EACX,uBAAuB,CAAC,KAAK,EAAA,aAAA,EAC/B,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,u/DAAA,EAAA,MAAA,EAAA,CAAA,m4CAAA,CAAA,EAAA;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/login/password/default-challenge.component.ts","../../../../libs/modules/auth/client/src/lib/pages/login/password/password.component.ts","../../../../libs/modules/auth/client/src/lib/pages/login/password/password.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPLoginChallengeComponentBase } from '@acorex-platform/framework-client/auth';\nimport { CommonModule } from '@angular/common';\nimport { Component, signal, ChangeDetectionStrategy } from '@angular/core';\n\n//#region ---- Default Challenge Component ----\n\n/**\n * Default built-in challenge component for login\n * Shows challenge image/content with an input field and refresh button\n */\n@Component({\n selector: 'axp-default-challenge',\n standalone: true,\n imports: [\n AXButtonModule,\n AXTextBoxModule,\n AXLabelModule,\n AXFormModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXValidationModule,\n CommonModule,\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <div class=\"flex flex-col gap-3 p-4 border rounded-md border-warning-300 bg-warning-50\">\n <!-- Challenge Image -->\n <div class=\"flex items-center justify-center gap-2\">\n @if (challengeData(); as challenge) {\n @if (challenge.contentType === 'image-base64') {\n <img\n [src]=\"'data:image/png;base64,' + challenge.content\"\n alt=\"Security Challenge\"\n class=\"h-12 border rounded\"\n />\n } @else if (challenge.contentType === 'image-url') {\n <img [src]=\"challenge.content\" alt=\"Security Challenge\" class=\"h-12 border rounded\" />\n } @else {\n <span class=\"font-mono text-lg p-2 border rounded bg-white\">\n {{ challenge.content }}\n </span>\n }\n }\n <!-- Refresh Challenge Button -->\n <ax-button\n look=\"blank\"\n color=\"primary\"\n class=\"ax-sm\"\n id=\"refresh-challenge\"\n (onClick)=\"onRefreshClick()\"\n [disabled]=\"isLoading()\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <ax-icon><i class=\"fa-solid fa-rotate\"></i></ax-icon>\n }\n </ax-button>\n </div>\n\n <!-- Challenge Response Input -->\n <ax-form-field>\n <ax-label>{{ '@auth:challenge.enter-code' | translate | async }}</ax-label>\n <ax-text-box\n [name]=\"'challengeResponse'\"\n id=\"challenge-response\"\n [placeholder]=\"'@auth:challenge.placeholder' | translate | async\"\n [value]=\"response()\"\n (valueChange)=\"onResponseChange($event)\"\n >\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n </div>\n `,\n})\nexport class AXPDefaultChallengeComponent extends AXPLoginChallengeComponentBase {\n //#region ---- Local State ----\n\n /** Local state for the response input */\n protected response = signal<string>('');\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handles response input change\n */\n protected onResponseChange(value: string): void {\n this.response.set(value);\n this.responseChange.emit(value);\n }\n\n /**\n * Handles refresh button click\n */\n protected onRefreshClick(): void {\n this.refreshRequest.emit();\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n ComponentRef,\n Injector,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n effect,\n inject,\n signal,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\n\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport {\n AXPLoginChallengeComponentBase,\n AXPLoginChallengeData,\n AXPSessionService,\n AXP_LOGIN_CHALLENGE_PROVIDER,\n} from '@acorex-platform/framework-client/auth';\nimport { AXPHomePageService, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\nimport { FormsModule } from '@angular/forms';\nimport { BehaviorSubject, firstValueFrom } from 'rxjs';\nimport { AXMAuthenticationTypes } from '../../../auth.config';\nimport { AXMAuthPlatformSettingsService } from '../../../auth-platform-settings.service';\nimport { writeTwoFactorChallenge } from '../../two-factor/two-factor-challenge.storage';\nimport { AXPLoginExternalProvidersComponent } from '../login-external-providers.component';\nimport { AXPDefaultChallengeComponent } from './default-challenge.component';\n\n//#region ---- Module Imports ----\n\nconst MODULES = [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXTextBoxModule,\n AXPasswordBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXDecoratorModule,\n AXCheckBoxModule,\n AXTranslationModule,\n AXLoadingModule,\n RouterModule,\n AXValidationModule,\n AXPLoginExternalProvidersComponent,\n];\n\n//#endregion\n\n@Component({\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.css'],\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [...MODULES],\n})\nexport class AXPLoginPasswordComponent implements OnInit {\n //#region ---- Services & Dependencies ----\n\n private readonly authPlatformSettings = inject(AXMAuthPlatformSettingsService);\n private sessionService = inject(AXPSessionService);\n private activateRoute = inject(ActivatedRoute);\n private homePageService = inject(AXPHomePageService);\n private toastService = inject(AXToastService);\n private formatService = inject(AXFormatService);\n private settingsService = inject(AXPSettingsService);\n private translateService = inject(AXTranslationService);\n private router = inject(Router);\n protected injector = inject(Injector);\n\n protected readonly signupEnabled = this.authPlatformSettings.signupEnabled();\n\n /** Optional challenge provider - injected only if configured */\n private challengeProvider = inject(AXP_LOGIN_CHALLENGE_PROVIDER, { optional: true });\n\n //#endregion\n\n //#region ---- Form References ----\n\n @ViewChild(AXFormComponent)\n private form!: AXFormComponent;\n\n //#endregion\n\n //#region ---- Form Fields ----\n\n /** Label key for the first input field (username/email/mobile) */\n protected l1!: string;\n\n /** Label key for the second input field (password) */\n protected l2!: string;\n\n /** Value of the first input field (username/email) */\n protected v1 = '';\n\n /** Value of the second input field (password) */\n protected v2: string | null = '';\n\n /** Whether to keep the user logged in */\n protected isKeepLogin = false;\n\n //#endregion\n\n //#region ---- Challenge State ----\n\n /** ViewContainerRef for rendering the challenge component */\n @ViewChild('challengeContainer', { read: ViewContainerRef })\n private challengeContainerRef?: ViewContainerRef;\n\n /** Reference to the currently rendered challenge component */\n private challengeComponentRef?: ComponentRef<AXPLoginChallengeComponentBase>;\n\n /** Current challenge data from the server */\n protected challengeData = signal<AXPLoginChallengeData | null>(null);\n\n /** User's response to the challenge (e.g., CAPTCHA text) */\n protected challengeResponse = signal<string>('');\n\n /** Loading state for challenge refresh */\n protected isChallengeLoading = signal<boolean>(false);\n\n /**\n * Effect to render the challenge component when challenge data changes\n */\n private challengeRenderEffect = effect(() => {\n const data = this.challengeData();\n const isLoading = this.isChallengeLoading();\n\n // Wait for next tick to ensure ViewContainerRef is available\n setTimeout(() => {\n if (data && this.challengeContainerRef) {\n this.renderChallengeComponent(data, isLoading);\n } else {\n this.destroyChallengeComponent();\n }\n });\n });\n\n //#endregion\n\n //#region ---- Loading & Status State ----\n\n protected isLoading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n protected submitText = 'signin.submit';\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /** Check if a challenge is currently active and should be displayed */\n protected get hasChallengeActive(): boolean {\n return this.challengeData() !== null;\n }\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n ngOnInit(): void {\n this.l2 = 'password';\n switch (this.authPlatformSettings.credentialType()) {\n case AXMAuthenticationTypes.EmailPassword:\n this.l1 = 'email';\n break;\n case AXMAuthenticationTypes.MobilePassword:\n this.l1 = 'mobile';\n break;\n case AXMAuthenticationTypes.UsernameEmailPassword:\n this.l1 = 'username-email';\n break;\n case AXMAuthenticationTypes.UsernamePassword:\n default:\n this.l1 = 'username';\n }\n }\n\n //#endregion\n\n //#region ---- Navigation Handlers ----\n\n protected handleForgotOnClick(): void {\n this.router.navigate(['/auth/forgot']);\n }\n\n protected handleRegisterOnClick(): void {\n this.router.navigate([this.authPlatformSettings.signupUrl()]);\n }\n\n //#endregion\n\n //#region ---- Login Handlers ----\n\n protected handleLoginClick(): void {\n const strategyName = this.authPlatformSettings.defaultStrategyName();\n this.sessionService.setStrategy(strategyName);\n const redirectUrl = this.activateRoute.snapshot.queryParams['redirectUrl'];\n\n this.form.validate().then(async (form) => {\n if (form.result) {\n this.isLoading$.next(true);\n this.submitText = 'processing';\n\n try {\n // Build credentials object with challenge data if active\n const currentChallenge = this.challengeData();\n const credentials = {\n strategy: strategyName,\n username: this.v1,\n password: this.v2!,\n rememberMe: this.isKeepLogin,\n ...(currentChallenge && {\n challengeId: currentChallenge.id,\n challengeResponse: this.challengeResponse(),\n }),\n };\n\n await this.sessionService.signin(credentials);\n\n // Check authentication status before navigation\n const isAuthenticated = await firstValueFrom(this.sessionService.isAuthenticated$);\n\n if (!isAuthenticated) {\n throw new Error('Authentication failed after signin');\n }\n\n // Clear challenge state on successful login\n this.clearChallengeState();\n\n await this.navigateAfterAuth(redirectUrl);\n } catch (error: unknown) {\n await this.handleLoginError(error);\n } finally {\n // Always unlock the button — success navigates away; failure must not stay \"processing\".\n this.submitText = 'signin.submit';\n this.isLoading$.next(false);\n }\n }\n });\n }\n\n private async navigateAfterAuth(redirectUrl?: string): Promise<void> {\n if (this.sessionService.tenant?.id == null) {\n await this.router.navigate(['/auth/account/tenant-chooser']);\n return;\n }\n\n if (this.sessionService.application?.id == null) {\n await this.router.navigate(['/auth/account/app-chooser']);\n return;\n }\n\n if (redirectUrl) {\n await this.router.navigate([redirectUrl]);\n return;\n }\n\n await this.homePageService.navigateTo();\n }\n\n /**\n * Handles login errors and checks if a challenge is required\n */\n private async handleLoginError(error: unknown): Promise<void> {\n const apiError = this.extractApiError(error);\n\n if (await this.navigateToTwoFactorIfRequired(apiError)) {\n return;\n }\n\n // Check if challenge provider wants to handle this error\n if (this.challengeProvider) {\n const checkResult = this.challengeProvider.checkResponse(error);\n\n if (checkResult?.required) {\n try {\n // Fetch challenge from server\n const challenge = await this.challengeProvider.getChallenge(checkResult.serverData);\n this.challengeData.set(challenge);\n this.challengeResponse.set('');\n\n // Show challenge message if provided\n if (checkResult.message) {\n this.toastService.show({\n color: 'warning',\n content: checkResult.message,\n timeOut: 5000,\n });\n }\n\n this.submitText = 'signin.submit';\n this.isLoading$.next(false);\n return;\n } catch (challengeError) {\n console.error('Failed to fetch challenge:', challengeError);\n }\n }\n }\n\n // Default error handling (do not add a second toast for requiresCaptcha —\n // that flag is for challenge UI; without a provider it duplicated the error toast)\n await this.showLoginError(error, apiError);\n }\n\n private async navigateToTwoFactorIfRequired(\n apiError: Record<string, unknown> | null,\n ): Promise<boolean> {\n if (!apiError) {\n return false;\n }\n\n const errorCode =\n (typeof apiError['error'] === 'string' && apiError['error']) ||\n (typeof apiError['code'] === 'string' && apiError['code']) ||\n '';\n if (errorCode !== 'TWO_FACTOR_REQUIRED') {\n return false;\n }\n\n const challengeId =\n typeof apiError['challengeId'] === 'string' ? apiError['challengeId'].trim() : '';\n if (!challengeId) {\n return false;\n }\n\n writeTwoFactorChallenge({\n challengeId,\n rememberMe: apiError['rememberMe'] === true,\n });\n\n const redirectUrl = this.activateRoute.snapshot.queryParams['redirectUrl'];\n await this.router.navigate(['/auth/twofactor'], {\n queryParams: redirectUrl ? { redirectUrl } : undefined,\n });\n this.submitText = 'signin.submit';\n this.isLoading$.next(false);\n return true;\n }\n\n /**\n * Displays the login error message to the user\n */\n private async showLoginError(error: unknown, apiError?: Record<string, unknown> | null): Promise<void> {\n let errorMsg = 'An error occurred during sign in.';\n const resolvedApiError = apiError ?? this.extractApiError(error);\n const errorCode =\n (typeof resolvedApiError?.['error'] === 'string' && resolvedApiError['error']) ||\n (typeof resolvedApiError?.['code'] === 'string' && resolvedApiError['code']) ||\n '';\n\n if (errorCode === 'AccountLocked') {\n errorMsg = await this.formatAccountLockedMessage(resolvedApiError);\n } else if (\n errorCode === 'MAX_ACTIVE_DEVICE_SESSIONS' ||\n resolvedApiError?.['message'] === 'MAX_ACTIVE_DEVICE_SESSIONS'\n ) {\n errorMsg = await this.translateService.translateAsync(\n '@auth:signin.errors.max-active-device-sessions',\n );\n } else if (resolvedApiError?.['message'] && typeof resolvedApiError['message'] === 'string') {\n errorMsg = resolvedApiError['message'];\n } else if (error && typeof error === 'object') {\n const err = error as Record<string, unknown>;\n const errObj = err['error'] as Record<string, unknown> | undefined;\n\n errorMsg =\n (errObj?.['error_description'] as string) ||\n (errObj?.['error'] as string) ||\n (err['message'] as string) ||\n errorMsg;\n\n if (typeof errorMsg === 'object') {\n const msgObj = errorMsg as unknown as Record<string, unknown>;\n errorMsg = (msgObj['message'] as string) || (msgObj['error_description'] as string) || JSON.stringify(errorMsg);\n }\n }\n\n const remainingAttempts = resolvedApiError?.['remainingAttempts'];\n if (typeof remainingAttempts === 'number' && remainingAttempts >= 0 && errorCode !== 'AccountLocked') {\n errorMsg = `${errorMsg} (${remainingAttempts} attempt${remainingAttempts === 1 ? '' : 's'} remaining)`;\n }\n\n this.toastService.show({\n color: 'danger',\n content: errorMsg,\n timeOut: 5000,\n });\n\n console.error('Login error:', error);\n this.submitText = 'signin.submit';\n this.v2 = null;\n this.isLoading$.next(false);\n }\n\n private extractApiError(error: unknown): Record<string, unknown> | null {\n if (!error || typeof error !== 'object') {\n return null;\n }\n\n const err = error as Record<string, unknown>;\n if (err['apiError'] && typeof err['apiError'] === 'object') {\n return err['apiError'] as Record<string, unknown>;\n }\n\n // AuthApiError exposes captcha/lockout fields on `.apiError`.\n if ('apiError' in err && err['apiError'] == null && typeof err['message'] === 'string') {\n return { message: err['message'] };\n }\n\n if (err['error'] && typeof err['error'] === 'object') {\n return err['error'] as Record<string, unknown>;\n }\n\n return null;\n }\n\n private async formatAccountLockedMessage(apiError: Record<string, unknown> | null): Promise<string> {\n const details =\n apiError?.['details'] && typeof apiError['details'] === 'object'\n ? (apiError['details'] as Record<string, unknown>)\n : null;\n const lockedUntil =\n (typeof apiError?.['lockedUntil'] === 'string' && apiError['lockedUntil']) ||\n (typeof details?.['lockedUntil'] === 'string' && details['lockedUntil']) ||\n '';\n const formatted = lockedUntil ? await this.formatLockedUntil(lockedUntil) : '';\n\n if (formatted) {\n return this.translateService.translateAsync('@auth:signin.errors.account-locked-until', {\n params: { datetime: formatted },\n });\n }\n\n return this.translateService.translateAsync('@auth:signin.errors.account-locked');\n }\n\n private async formatLockedUntil(iso: string): Promise<string> {\n const parsed = Date.parse(iso);\n if (!Number.isFinite(parsed)) {\n return '';\n }\n\n const dateFormat = await this.settingsService.get(AXPRegionalSetting.ShortDate);\n const timeFormat = await this.settingsService.get(AXPRegionalSetting.ShortTime);\n const format = `${dateFormat} ${timeFormat}`.trim();\n return this.formatService.format(new Date(parsed), 'datetime', { format });\n }\n\n //#endregion\n\n //#region ---- Challenge Handlers ----\n\n /**\n * Gets the challenge component type from provider or uses default\n */\n private getChallengeComponentType(): Type<AXPLoginChallengeComponentBase> {\n return this.challengeProvider?.getChallengeComponent() ?? AXPDefaultChallengeComponent;\n }\n\n /**\n * Renders the challenge component dynamically\n */\n private renderChallengeComponent(data: AXPLoginChallengeData, isLoading: boolean): void {\n if (!this.challengeContainerRef) return;\n\n // If component already exists, just update inputs\n if (this.challengeComponentRef) {\n this.updateChallengeComponentInputs(data, isLoading);\n return;\n }\n\n // Clear container and create new component\n this.challengeContainerRef.clear();\n const componentType = this.getChallengeComponentType();\n this.challengeComponentRef = this.challengeContainerRef.createComponent(componentType);\n\n // Set inputs\n this.updateChallengeComponentInputs(data, isLoading);\n\n // Subscribe to outputs\n const instance = this.challengeComponentRef.instance;\n instance.responseChange.subscribe((response: string) => {\n this.challengeResponse.set(response);\n });\n instance.refreshRequest.subscribe(() => {\n this.handleRefreshChallenge();\n });\n }\n\n /**\n * Updates the inputs of the challenge component\n */\n private updateChallengeComponentInputs(data: AXPLoginChallengeData, isLoading: boolean): void {\n if (!this.challengeComponentRef) return;\n\n this.challengeComponentRef.setInput('challengeData', data);\n this.challengeComponentRef.setInput('isLoading', isLoading);\n }\n\n /**\n * Destroys the challenge component\n */\n private destroyChallengeComponent(): void {\n if (this.challengeComponentRef) {\n this.challengeComponentRef.destroy();\n this.challengeComponentRef = undefined;\n }\n if (this.challengeContainerRef) {\n this.challengeContainerRef.clear();\n }\n }\n\n /**\n * Refreshes the challenge (e.g., user clicks \"new image\" button)\n */\n protected async handleRefreshChallenge(): Promise<void> {\n if (!this.challengeProvider) return;\n\n this.isChallengeLoading.set(true);\n try {\n const newChallenge = await this.challengeProvider.refreshChallenge();\n this.challengeData.set(newChallenge);\n this.challengeResponse.set('');\n } catch (error) {\n console.error('Failed to refresh challenge:', error);\n this.toastService.show({\n color: 'danger',\n content: 'Failed to load new challenge. Please try again.',\n timeOut: 3000,\n });\n } finally {\n this.isChallengeLoading.set(false);\n }\n }\n\n /**\n * Clears the challenge state (after successful login or manual clear)\n */\n private clearChallengeState(): void {\n this.challengeData.set(null);\n this.challengeResponse.set('');\n this.destroyChallengeComponent();\n }\n\n //#endregion\n}\n","<ng-container *translate=\"let t\">\n <div class=\"axp-auth-form\">\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:signin.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:signin.hint' | translate | async }}\n </p>\n </div>\n <ax-form>\n <div class=\"flex flex-col gap-4 lg:gap-6\">\n <ax-form-field>\n <ax-label>{{ ('@auth:' + l1) | translate | async }}</ax-label>\n <ax-text-box\n [name]=\"'username'\"\n id=\"username\"\n [autoComplete]=\"'username'\"\n [(value)]=\"v1\"\n >\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\n [name]=\"'password'\"\n id=\"password\"\n [autoComplete]=\"'current-password'\"\n [(value)]=\"v2\"\n >\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-password-box>\n </ax-form-field>\n\n <!-- Challenge Section (CAPTCHA) - rendered via ViewContainerRef -->\n @if (hasChallengeActive) {\n <ng-container #challengeContainer></ng-container>\n }\n\n <div class=\"flex justify-between items-center\">\n <ax-check-box [(ngModel)]=\"isKeepLogin\">\n <ax-label class=\"mb-0\">{{\n '@auth:signin.remember' | translate | async\n }}</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=\"mt-4 lg:mt-6 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 (externalProviders.hasContent() || signupEnabled) {\n <div class=\"my-5 lg:my-8 flex w-full items-center\">\n <div class=\"h-px flex-1 bg-border-lighter\"></div>\n <span class=\"px-3 text-xs font-medium tracking-wide text-neutral-400\">\n {{ '@auth:signin.or' | translate | async }}\n </span>\n <div class=\"h-px flex-1 bg-border-lighter\"></div>\n </div>\n }\n <axm-login-external-providers\n #externalProviders\n ></axm-login-external-providers>\n </ax-form>\n @if (signupEnabled) {\n <ax-button\n class=\"w-full 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"],"names":["i4","i5","i6","i7","i8","i1","i2","i3","i9","i10"],"mappings":"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"}
@@ -1,84 +0,0 @@
1
- import * as i1 from '@acorex/components/button';
2
- import { AXButtonModule } from '@acorex/components/button';
3
- import * as i5 from '@acorex/core/translation';
4
- import { AXTranslationModule } from '@acorex/core/translation';
5
- import { AXPSessionService } from '@acorex-platform/framework-client/auth';
6
- import { AXPHomePageService } from '@acorex-platform/framework-client/common';
7
- import { AsyncPipe } from '@angular/common';
8
- import * as i0 from '@angular/core';
9
- import { inject, effect, ChangeDetectionStrategy, Component } from '@angular/core';
10
- import { Router } from '@angular/router';
11
- import { firstValueFrom, filter } from 'rxjs';
12
- import { x as AXPPwaInstallService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
13
-
14
- //#region ----- Imports -----
15
- //#endregion
16
- //#region ----- Component -----
17
- class AXMPwaInstallComponent {
18
- //#endregion
19
- //#region ----- Lifecycle -----
20
- constructor() {
21
- //#region ----- Services & Dependencies -----
22
- this.router = inject(Router);
23
- this.sessionService = inject(AXPSessionService);
24
- this.homePageService = inject(AXPHomePageService);
25
- this.pwaInstall = inject(AXPPwaInstallService);
26
- this.leavingInstalledSession = false;
27
- //#endregion
28
- //#region ----- Computed Properties -----
29
- this.isAuthorized = this.sessionService.isAuthorized;
30
- effect(() => {
31
- if (this.pwaInstall.installed()) {
32
- void this.leaveInstalledSession();
33
- }
34
- });
35
- }
36
- //#endregion
37
- //#region ----- Event Handlers -----
38
- async handleInstallClick() {
39
- try {
40
- await this.pwaInstall.promptInstall();
41
- }
42
- catch {
43
- // Prompt can reject if the browser dismisses it; the page stays usable.
44
- }
45
- }
46
- handleOpenAppClick() {
47
- void this.leaveInstalledSession();
48
- }
49
- handleContinueInBrowserClick() {
50
- this.pwaInstall.dismissPrompt();
51
- void this.router.navigateByUrl('/auth/login');
52
- }
53
- //#endregion
54
- //#region ----- Navigation -----
55
- async leaveInstalledSession() {
56
- if (this.leavingInstalledSession) {
57
- return;
58
- }
59
- this.leavingInstalledSession = true;
60
- try {
61
- await firstValueFrom(this.sessionService.isLoading$.pipe(filter((loading) => !loading)));
62
- if (this.sessionService.isAuthorized && this.sessionService.application?.name) {
63
- await this.homePageService.navigateTo();
64
- return;
65
- }
66
- await this.router.navigateByUrl('/auth/login');
67
- }
68
- catch {
69
- await this.router.navigateByUrl('/auth/login');
70
- }
71
- finally {
72
- this.leavingInstalledSession = false;
73
- }
74
- }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPwaInstallComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMPwaInstallComponent, isStandalone: true, selector: "axm-pwa-install", ngImport: i0, template: "<div class=\"axp-auth-form axp-pwa-install\">\n <div class=\"axp-pwa-install__hero\" aria-hidden=\"true\">\n <img src=\"/assets/images/ui/pwa-install.svg\" alt=\"\" width=\"200\" height=\"132\" />\n </div>\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:pwa-install.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:pwa-install.hint' | translate | async }}\n </p>\n </div>\n\n @if (pwaInstall.installed()) {\n <!-- ----- Already running as an installed app ----- -->\n <p class=\"text-sm text-neutral-600 text-center mb-4\">\n {{ '@auth:pwa-install.installed-hint' | translate | async }}\n </p>\n <ax-button\n color=\"primary\"\n class=\"w-full\"\n [text]=\"'@auth:pwa-install.open-app' | translate | async\"\n (onClick)=\"handleOpenAppClick()\"\n ></ax-button>\n }\n <!-- ----- Offer native install or platform-specific steps ----- -->\n @else {\n <ul class=\"axp-pwa-install__benefits\" [attr.aria-label]=\"'@auth:pwa-install.benefits-label' | translate | async\">\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-house text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.home-screen.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.home-screen.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-download text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.no-store.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.no-store.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-cloud-arrow-down text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.offline-shell.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.offline-shell.description' | translate | async }}\n </p>\n </div>\n </li>\n </ul>\n\n <!--------------------------------------------------------------->\n <!-- ----- Chromium native install prompt ----- -->\n @if (pwaInstall.canPrompt()) {\n <ax-button\n color=\"primary\"\n class=\"w-full mt-4 lg:mt-6\"\n [text]=\"'@auth:pwa-install.install' | translate | async\"\n (onClick)=\"handleInstallClick()\"\n ></ax-button>\n }\n <!-- ----- Safari iOS cannot use beforeinstallprompt ----- -->\n @else if (pwaInstall.ios()) {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.ios.title' | translate | async }}</p>\n <ol class=\"axp-pwa-install__ol\">\n <li>{{ '@auth:pwa-install.ios.step-share' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-add' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-confirm' | translate | async }}</li>\n </ol>\n </div>\n }\n <!-- ----- Browser has no deferred prompt (dev HMR or unsupported) ----- -->\n @else {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.manual.title' | translate | async }}</p>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.manual.description' | translate | async }}\n </p>\n </div>\n }\n\n <!--------------------------------------------------------------->\n <!-- ----- Guest-only leave path; signed-in users already have the app chrome ----- -->\n @if (!isAuthorized) {\n <ax-button\n class=\"w-full mt-2\"\n color=\"default\"\n [text]=\"'@auth:pwa-install.continue-browser' | translate | async\"\n (onClick)=\"handleContinueInBrowserClick()\"\n ></ax-button>\n }\n }\n</div>\n", styles: [":host{display:block;width:100%}.axp-auth-form{width:100%;margin-inline:auto}@media(min-width:768px){.axp-auth-form{width:24rem;max-width:100%}}.axp-pwa-install__hero{margin-bottom:calc(var(--spacing, .25rem) * 4);display:flex;justify-content:center}@media(width>=64rem){.axp-pwa-install__hero{margin-bottom:calc(var(--spacing, .25rem) * 5)}}.axp-pwa-install__hero img{width:200px;height:auto;display:block}.axp-pwa-install__benefits{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);text-align:start}.axp-pwa-install__benefit{display:flex;align-items:flex-start;gap:calc(var(--spacing, .25rem) * 3)}.axp-pwa-install__benefit>i{margin-top:calc(var(--spacing, .25rem) * .5);flex-shrink:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)))}.axp-pwa-install__ol{display:flex;list-style-type:decimal;flex-direction:column;gap:var(--spacing, .25rem);padding-inline-start:calc(var(--spacing, .25rem) * 5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-pwa-install__steps{text-align:start}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPwaInstallComponent, decorators: [{
79
- type: Component,
80
- args: [{ selector: 'axm-pwa-install', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXButtonModule, AXTranslationModule, AsyncPipe], template: "<div class=\"axp-auth-form axp-pwa-install\">\n <div class=\"axp-pwa-install__hero\" aria-hidden=\"true\">\n <img src=\"/assets/images/ui/pwa-install.svg\" alt=\"\" width=\"200\" height=\"132\" />\n </div>\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:pwa-install.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:pwa-install.hint' | translate | async }}\n </p>\n </div>\n\n @if (pwaInstall.installed()) {\n <!-- ----- Already running as an installed app ----- -->\n <p class=\"text-sm text-neutral-600 text-center mb-4\">\n {{ '@auth:pwa-install.installed-hint' | translate | async }}\n </p>\n <ax-button\n color=\"primary\"\n class=\"w-full\"\n [text]=\"'@auth:pwa-install.open-app' | translate | async\"\n (onClick)=\"handleOpenAppClick()\"\n ></ax-button>\n }\n <!-- ----- Offer native install or platform-specific steps ----- -->\n @else {\n <ul class=\"axp-pwa-install__benefits\" [attr.aria-label]=\"'@auth:pwa-install.benefits-label' | translate | async\">\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-house text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.home-screen.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.home-screen.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-download text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.no-store.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.no-store.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-cloud-arrow-down text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.offline-shell.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.offline-shell.description' | translate | async }}\n </p>\n </div>\n </li>\n </ul>\n\n <!--------------------------------------------------------------->\n <!-- ----- Chromium native install prompt ----- -->\n @if (pwaInstall.canPrompt()) {\n <ax-button\n color=\"primary\"\n class=\"w-full mt-4 lg:mt-6\"\n [text]=\"'@auth:pwa-install.install' | translate | async\"\n (onClick)=\"handleInstallClick()\"\n ></ax-button>\n }\n <!-- ----- Safari iOS cannot use beforeinstallprompt ----- -->\n @else if (pwaInstall.ios()) {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.ios.title' | translate | async }}</p>\n <ol class=\"axp-pwa-install__ol\">\n <li>{{ '@auth:pwa-install.ios.step-share' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-add' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-confirm' | translate | async }}</li>\n </ol>\n </div>\n }\n <!-- ----- Browser has no deferred prompt (dev HMR or unsupported) ----- -->\n @else {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.manual.title' | translate | async }}</p>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.manual.description' | translate | async }}\n </p>\n </div>\n }\n\n <!--------------------------------------------------------------->\n <!-- ----- Guest-only leave path; signed-in users already have the app chrome ----- -->\n @if (!isAuthorized) {\n <ax-button\n class=\"w-full mt-2\"\n color=\"default\"\n [text]=\"'@auth:pwa-install.continue-browser' | translate | async\"\n (onClick)=\"handleContinueInBrowserClick()\"\n ></ax-button>\n }\n }\n</div>\n", styles: [":host{display:block;width:100%}.axp-auth-form{width:100%;margin-inline:auto}@media(min-width:768px){.axp-auth-form{width:24rem;max-width:100%}}.axp-pwa-install__hero{margin-bottom:calc(var(--spacing, .25rem) * 4);display:flex;justify-content:center}@media(width>=64rem){.axp-pwa-install__hero{margin-bottom:calc(var(--spacing, .25rem) * 5)}}.axp-pwa-install__hero img{width:200px;height:auto;display:block}.axp-pwa-install__benefits{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);text-align:start}.axp-pwa-install__benefit{display:flex;align-items:flex-start;gap:calc(var(--spacing, .25rem) * 3)}.axp-pwa-install__benefit>i{margin-top:calc(var(--spacing, .25rem) * .5);flex-shrink:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)))}.axp-pwa-install__ol{display:flex;list-style-type:decimal;flex-direction:column;gap:var(--spacing, .25rem);padding-inline-start:calc(var(--spacing, .25rem) * 5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-pwa-install__steps{text-align:start}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
81
- }], ctorParameters: () => [] });
82
-
83
- export { AXMPwaInstallComponent };
84
- //# sourceMappingURL=acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/install/pwa-install.component.ts","../../../../libs/modules/auth/client/src/lib/pages/install/pwa-install.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPHomePageService } from '@acorex-platform/framework-client/common';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { filter, firstValueFrom } from 'rxjs';\nimport { AXPPwaInstallService } from './pwa-install.service';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-pwa-install',\n templateUrl: './pwa-install.component.html',\n styleUrls: ['./pwa-install.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXTranslationModule, AsyncPipe],\n})\nexport class AXMPwaInstallComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly router = inject(Router);\n private readonly sessionService = inject(AXPSessionService);\n private readonly homePageService = inject(AXPHomePageService);\n protected readonly pwaInstall = inject(AXPPwaInstallService);\n private leavingInstalledSession = false;\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly isAuthorized = this.sessionService.isAuthorized;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n effect(() => {\n if (this.pwaInstall.installed()) {\n void this.leaveInstalledSession();\n }\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected async handleInstallClick(): Promise<void> {\n try {\n await this.pwaInstall.promptInstall();\n } catch {\n // Prompt can reject if the browser dismisses it; the page stays usable.\n }\n }\n\n protected handleOpenAppClick(): void {\n void this.leaveInstalledSession();\n }\n\n protected handleContinueInBrowserClick(): void {\n this.pwaInstall.dismissPrompt();\n void this.router.navigateByUrl('/auth/login');\n }\n\n //#endregion\n\n //#region ----- Navigation -----\n\n private async leaveInstalledSession(): Promise<void> {\n if (this.leavingInstalledSession) {\n return;\n }\n this.leavingInstalledSession = true;\n try {\n await firstValueFrom(this.sessionService.isLoading$.pipe(filter((loading) => !loading)));\n if (this.sessionService.isAuthorized && this.sessionService.application?.name) {\n await this.homePageService.navigateTo();\n return;\n }\n await this.router.navigateByUrl('/auth/login');\n } catch {\n await this.router.navigateByUrl('/auth/login');\n } finally {\n this.leavingInstalledSession = false;\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axp-auth-form axp-pwa-install\">\n <div class=\"axp-pwa-install__hero\" aria-hidden=\"true\">\n <img src=\"/assets/images/ui/pwa-install.svg\" alt=\"\" width=\"200\" height=\"132\" />\n </div>\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:pwa-install.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:pwa-install.hint' | translate | async }}\n </p>\n </div>\n\n @if (pwaInstall.installed()) {\n <!-- ----- Already running as an installed app ----- -->\n <p class=\"text-sm text-neutral-600 text-center mb-4\">\n {{ '@auth:pwa-install.installed-hint' | translate | async }}\n </p>\n <ax-button\n color=\"primary\"\n class=\"w-full\"\n [text]=\"'@auth:pwa-install.open-app' | translate | async\"\n (onClick)=\"handleOpenAppClick()\"\n ></ax-button>\n }\n <!-- ----- Offer native install or platform-specific steps ----- -->\n @else {\n <ul class=\"axp-pwa-install__benefits\" [attr.aria-label]=\"'@auth:pwa-install.benefits-label' | translate | async\">\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-house text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.home-screen.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.home-screen.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-download text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.no-store.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.no-store.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-cloud-arrow-down text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.offline-shell.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.offline-shell.description' | translate | async }}\n </p>\n </div>\n </li>\n </ul>\n\n <!--------------------------------------------------------------->\n <!-- ----- Chromium native install prompt ----- -->\n @if (pwaInstall.canPrompt()) {\n <ax-button\n color=\"primary\"\n class=\"w-full mt-4 lg:mt-6\"\n [text]=\"'@auth:pwa-install.install' | translate | async\"\n (onClick)=\"handleInstallClick()\"\n ></ax-button>\n }\n <!-- ----- Safari iOS cannot use beforeinstallprompt ----- -->\n @else if (pwaInstall.ios()) {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.ios.title' | translate | async }}</p>\n <ol class=\"axp-pwa-install__ol\">\n <li>{{ '@auth:pwa-install.ios.step-share' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-add' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-confirm' | translate | async }}</li>\n </ol>\n </div>\n }\n <!-- ----- Browser has no deferred prompt (dev HMR or unsupported) ----- -->\n @else {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.manual.title' | translate | async }}</p>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.manual.description' | translate | async }}\n </p>\n </div>\n }\n\n <!--------------------------------------------------------------->\n <!-- ----- Guest-only leave path; signed-in users already have the app chrome ----- -->\n @if (!isAuthorized) {\n <ax-button\n class=\"w-full mt-2\"\n color=\"default\"\n [text]=\"'@auth:pwa-install.continue-browser' | translate | async\"\n (onClick)=\"handleContinueInBrowserClick()\"\n ></ax-button>\n }\n }\n</div>\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/register/password/register-password.component.ts","../../../../libs/modules/auth/client/src/lib/pages/register/password/register-password.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPHomePageService } from '@acorex-platform/framework-client/common';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { CommonModule } from '@angular/common';\nimport { Component, OnInit, ViewChild, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { BehaviorSubject, firstValueFrom } from 'rxjs';\nimport { AXMAuthenticationTypes } from '../../../auth.config';\nimport { AXMAuthPlatformSettingsService } from '../../../auth-platform-settings.service';\n\nconst MODULES = [\n CommonModule,\n AXFormModule,\n AXTextBoxModule,\n AXPasswordBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXLoadingModule,\n RouterModule,\n AXValidationModule,\n];\n\n@Component({\n templateUrl: './register-password.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [...MODULES],\n})\nexport class AXPRegisterPasswordComponent implements OnInit {\n private readonly authPlatformSettings = inject(AXMAuthPlatformSettingsService);\n private sessionService = inject(AXPSessionService);\n private homePageService = inject(AXPHomePageService);\n private toastService = inject(AXToastService);\n private router = inject(Router);\n\n @ViewChild(AXFormComponent)\n private form!: AXFormComponent;\n\n protected usernameLabel = 'username';\n protected username = '';\n protected displayName = '';\n protected password: string | null = '';\n protected confirmPassword: string | null = '';\n protected isLoading$ = new BehaviorSubject(false);\n\n protected comparePasswordFn = (): boolean => {\n return this.password === this.confirmPassword;\n };\n\n ngOnInit(): void {\n switch (this.authPlatformSettings.credentialType()) {\n case AXMAuthenticationTypes.EmailPassword:\n this.usernameLabel = 'email';\n break;\n case AXMAuthenticationTypes.MobilePassword:\n this.usernameLabel = 'mobile';\n break;\n case AXMAuthenticationTypes.UsernameEmailPassword:\n this.usernameLabel = 'username-email';\n break;\n default:\n this.usernameLabel = 'username';\n }\n }\n\n protected handleLoginOnClick(): void {\n this.router.navigate(['/auth/login']);\n }\n\n protected handleRegisterClick(): void {\n const strategyName = this.authPlatformSettings.defaultStrategyName();\n this.sessionService.setStrategy(strategyName);\n\n this.form.validate().then(async (form) => {\n if (!form.result) {\n return;\n }\n\n this.isLoading$.next(true);\n\n try {\n await this.sessionService.register({\n strategy: strategyName,\n username: this.username.trim(),\n password: this.password!,\n ...(this.displayName.trim() ? { displayName: this.displayName.trim() } : {}),\n });\n\n const isAuthenticated = await firstValueFrom(this.sessionService.isAuthenticated$);\n if (!isAuthenticated) {\n throw new Error('Registration succeeded but session was not established');\n }\n\n await this.navigateAfterAuth();\n } catch (error: unknown) {\n this.showRegisterError(error);\n } finally {\n this.isLoading$.next(false);\n }\n });\n }\n\n private async navigateAfterAuth(): Promise<void> {\n if (this.sessionService.tenant?.id == null) {\n await this.router.navigate(['/auth/account/tenant-chooser']);\n return;\n }\n\n if (this.sessionService.application?.id == null) {\n await this.router.navigate(['/auth/account/app-chooser']);\n return;\n }\n\n await this.homePageService.navigateTo();\n }\n\n private showRegisterError(error: unknown): void {\n let errorMsg = 'An error occurred during registration.';\n\n if (error && typeof error === 'object') {\n const err = error as Record<string, unknown>;\n const apiError = err['apiError'] as Record<string, unknown> | undefined;\n\n if (apiError?.['message'] && typeof apiError['message'] === 'string') {\n errorMsg = apiError['message'];\n } else if (typeof err['message'] === 'string') {\n errorMsg = err['message'];\n }\n }\n\n this.toastService.show({\n color: 'danger',\n content: errorMsg,\n timeOut: 5000,\n });\n }\n}\n","<ng-container *translate=\"let t\">\n <div class=\"text-center mb-4\">\n <h1 class=\"font-bold text-xl mb-2\">\n {{ '@auth:signup.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:signup.hint' | translate | async }}\n </p>\n </div>\n <div class=\"w-80 lg:w-96\">\n <ax-form>\n <div class=\"flex flex-col gap-6\">\n <ax-form-field>\n <ax-label>{{\n '@auth:' + usernameLabel | translate | async\n }}</ax-label>\n <ax-text-box\n [name]=\"'username'\"\n id=\"username\"\n [autoComplete]=\"'username'\"\n [(value)]=\"username\"\n >\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:display-name' | translate | async }}</ax-label>\n <ax-text-box\n [name]=\"'displayName'\"\n id=\"displayName\"\n [autoComplete]=\"'name'\"\n [(value)]=\"displayName\"\n >\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\n [name]=\"'password'\"\n id=\"password\"\n [autoComplete]=\"'new-password'\"\n [(value)]=\"password\"\n >\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n <ax-validation-rule\n rule=\"regex\"\n message=\"Password must contain at least 8 characters\"\n [options]=\"{ pattern: '^.{8,}$' }\"\n >\n </ax-validation-rule>\n </ax-password-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{\n '@auth:confirm-password' | translate | async\n }}</ax-label>\n <ax-password-box\n [name]=\"'confirmPassword'\"\n id=\"confirmPassword\"\n [autoComplete]=\"'new-password'\"\n [(value)]=\"confirmPassword\"\n >\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n <ax-validation-rule\n rule=\"callback\"\n [options]=\"{ validate: comparePasswordFn }\"\n ></ax-validation-rule>\n </ax-password-box>\n </ax-form-field>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-6 w-full\"\n id=\"submit-register\"\n [text]=\"'@auth:signup.submit' | translate | async\"\n (onClick)=\"handleRegisterClick()\"\n [disabled]=\"isLoading$ | async\"\n [type]=\"'submit'\"\n >\n @if (isLoading$ | async) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </ax-form>\n <ax-button\n class=\"w-full mt-2\"\n id=\"back-to-login\"\n (onClick)=\"handleLoginOnClick()\"\n text=\"{{ '@auth:signin.title' | translate | async }}\"\n [color]=\"'default'\"\n >\n </ax-button>\n </div>\n</ng-container>\n"],"names":["i4","i5","i6","i7","i8"],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import * as i1 from '@acorex/components/button';
2
- import { AXButtonModule } from '@acorex/components/button';
3
- import * as i2 from '@acorex/components/decorators';
4
- import { AXDecoratorModule } from '@acorex/components/decorators';
5
- import { AXFormModule } from '@acorex/components/form';
6
- import { AXLabelModule } from '@acorex/components/label';
7
- import { AXLoadingModule } from '@acorex/components/loading';
8
- import { AXPasswordBoxModule } from '@acorex/components/password-box';
9
- import { AXTextBoxModule } from '@acorex/components/text-box';
10
- import { AXTranslationModule } from '@acorex/core/translation';
11
- import { CommonModule } from '@angular/common';
12
- import * as i0 from '@angular/core';
13
- import { ChangeDetectionStrategy, Component } from '@angular/core';
14
-
15
- const MODULES = [
16
- CommonModule,
17
- AXFormModule,
18
- AXTextBoxModule,
19
- AXPasswordBoxModule,
20
- AXButtonModule,
21
- AXLabelModule,
22
- AXDecoratorModule,
23
- AXTranslationModule,
24
- AXLoadingModule,
25
- ];
26
- class AXPRegisterResultComponent {
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRegisterResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXPRegisterResultComponent, isStandalone: true, selector: "ng-component", providers: [], ngImport: i0, template: "<div class=\"text-center mb-6\">\n <ax-icon class=\"fa-solid fa-circle-check text-5xl mb-4 text-success-500\">\n </ax-icon>\n <h1 class=\"font-bold text-xl mb-2\">\n You account successfully created\n </h1>\n <p class=\"text-base text-neutral-600\">\n You can continue now and explore further features\n </p>\n <ax-button color=\"primary\" class=\"mt-10\" text=\" Continue to your dashboard\">\n </ax-button>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXPasswordBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXLoadingModule }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRegisterResultComponent, decorators: [{
31
- type: Component,
32
- args: [{ imports: [...MODULES], changeDetection: ChangeDetectionStrategy.Eager, providers: [], template: "<div class=\"text-center mb-6\">\n <ax-icon class=\"fa-solid fa-circle-check text-5xl mb-4 text-success-500\">\n </ax-icon>\n <h1 class=\"font-bold text-xl mb-2\">\n You account successfully created\n </h1>\n <p class=\"text-base text-neutral-600\">\n You can continue now and explore further features\n </p>\n <ax-button color=\"primary\" class=\"mt-10\" text=\" Continue to your dashboard\">\n </ax-button>\n</div>" }]
33
- }] });
34
-
35
- export { AXPRegisterResultComponent };
36
- //# sourceMappingURL=acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/register/result/result.component.ts","../../../../libs/modules/auth/client/src/lib/pages/register/result/result.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\n\nconst MODULES = [\n CommonModule,\n AXFormModule,\n AXTextBoxModule,\n AXPasswordBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXLoadingModule,\n];\n\n@Component({\n templateUrl: './result.component.html',\n imports: [...MODULES],\n changeDetection: ChangeDetectionStrategy.Eager,\n providers: []\n})\nexport class AXPRegisterResultComponent {}\n","<div class=\"text-center mb-6\">\n <ax-icon class=\"fa-solid fa-circle-check text-5xl mb-4 text-success-500\">\n </ax-icon>\n <h1 class=\"font-bold text-xl mb-2\">\n You account successfully created\n </h1>\n <p class=\"text-base text-neutral-600\">\n You can continue now and explore further features\n </p>\n <ax-button color=\"primary\" class=\"mt-10\" text=\" Continue to your dashboard\">\n </ax-button>\n</div>"],"names":[],"mappings":";;;;;;;;;;;;;;AAWA,MAAM,OAAO,GAAG;IACd,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,mBAAmB;IACnB,cAAc;IACd,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,eAAe;CAChB;MAQY,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAFxB,EAAE,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BjB,wcAWM,2CDCJ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,8BACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,8BACb,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FASJ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;8BAEG,CAAC,GAAG,OAAO,CAAC,EAAA,eAAA,EACJ,uBAAuB,CAAC,KAAK,aACnC,EAAE,EAAA,QAAA,EAAA,wcAAA,EAAA;;;"}