@acorex-platform/module-auth-client 2.0.0-next.0 → 2.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-Dgo6MzxI.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-CWE43xt1.mjs} +65 -46
  2. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CWE43xt1.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-nSUtqF_D.mjs → acorex-platform-module-auth-client-app-chooser.component-D14L5cdt.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-nSUtqF_D.mjs.map → acorex-platform-module-auth-client-app-chooser.component-D14L5cdt.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-Bman8avz.mjs → acorex-platform-module-auth-client-change-password.command-DN0yaJ9l.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-Bman8avz.mjs.map → acorex-platform-module-auth-client-change-password.command-DN0yaJ9l.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-DFS8TE__.mjs → acorex-platform-module-auth-client-change-photo.command-CWeeauFw.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-DFS8TE__.mjs.map → acorex-platform-module-auth-client-change-photo.command-CWeeauFw.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-ZTJMfhir.mjs → acorex-platform-module-auth-client-get-user-activity.query-DI0JR1cS.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-ZTJMfhir.mjs.map → acorex-platform-module-auth-client-get-user-activity.query-DI0JR1cS.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CUs7Q6yh.mjs → acorex-platform-module-auth-client-lock-screen.command-BnS3p6z3.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CUs7Q6yh.mjs.map → acorex-platform-module-auth-client-lock-screen.command-BnS3p6z3.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-auth-client-login.module-DFWtA7S3.mjs → acorex-platform-module-auth-client-login.module-DVbaukL7.mjs} +3 -3
  14. package/fesm2022/{acorex-platform-module-auth-client-login.module-DFWtA7S3.mjs.map → acorex-platform-module-auth-client-login.module-DVbaukL7.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BXK7Lvpw.mjs → acorex-platform-module-auth-client-manage-two-factor.command-7e4HVcyU.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BXK7Lvpw.mjs.map → acorex-platform-module-auth-client-manage-two-factor.command-7e4HVcyU.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-DToDT9eb.mjs → acorex-platform-module-auth-client-open-sessions.command-CMNlOr22.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-DToDT9eb.mjs.map → acorex-platform-module-auth-client-open-sessions.command-CMNlOr22.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-auth-client-password.component-DAp_-zko.mjs → acorex-platform-module-auth-client-password.component-DekdMba0.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-module-auth-client-password.component-DAp_-zko.mjs.map → acorex-platform-module-auth-client-password.component-DekdMba0.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-CLW52NUu.mjs → acorex-platform-module-auth-client-profile-activity-chart.component-DUpEusRs.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-CLW52NUu.mjs.map → acorex-platform-module-auth-client-profile-activity-chart.component-DUpEusRs.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-D5xhGDPH.mjs → acorex-platform-module-auth-client-profile-page-component.provider-DaFESP6l.mjs} +3 -3
  24. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-D5xhGDPH.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-DaFESP6l.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-Dc7gRTQD.mjs → acorex-platform-module-auth-client-profile-page.component-ClNuHd7p.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-Dc7gRTQD.mjs.map → acorex-platform-module-auth-client-profile-page.component-ClNuHd7p.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-C4zu5hpL.mjs → acorex-platform-module-auth-client-register-password.component-Cu_R4Y5F.mjs} +2 -2
  28. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-C4zu5hpL.mjs.map → acorex-platform-module-auth-client-register-password.component-Cu_R4Y5F.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-auth-client-register.module-Dz-SOKXN.mjs → acorex-platform-module-auth-client-register.module-DwbrjF2b.mjs} +3 -3
  30. package/fesm2022/{acorex-platform-module-auth-client-register.module-Dz-SOKXN.mjs.map → acorex-platform-module-auth-client-register.module-DwbrjF2b.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-LKjypQTk.mjs → acorex-platform-module-auth-client-remove-pin-code.command-CC5IWpwS.mjs} +2 -2
  32. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-LKjypQTk.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-CC5IWpwS.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-PQ91EQjh.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-8Bj33U4_.mjs} +2 -2
  34. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-PQ91EQjh.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-8Bj33U4_.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-BdtPwfLH.mjs → acorex-platform-module-auth-client-set-pin-code.command-BEyXf2XA.mjs} +3 -3
  36. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-BdtPwfLH.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-BEyXf2XA.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-L3DlTawo.mjs → acorex-platform-module-auth-client-set-pin-code.component-CRft8IKd.mjs} +2 -2
  38. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-L3DlTawo.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-CRft8IKd.mjs.map} +1 -1
  39. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-cRTVB-7T.mjs → acorex-platform-module-auth-client-tenant-chooser.component-B0kWYel9.mjs} +2 -2
  40. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-cRTVB-7T.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-B0kWYel9.mjs.map} +1 -1
  41. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-DDzjCHid.mjs → acorex-platform-module-auth-client-two-factor-code.component-DkIXfsXi.mjs} +2 -2
  42. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-DDzjCHid.mjs.map → acorex-platform-module-auth-client-two-factor-code.component-DkIXfsXi.mjs.map} +1 -1
  43. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-BC8AJTp4.mjs → acorex-platform-module-auth-client-two-factor.module-DMlxcFuT.mjs} +2 -2
  44. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-BC8AJTp4.mjs.map → acorex-platform-module-auth-client-two-factor.module-DMlxcFuT.mjs.map} +1 -1
  45. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-EHXTmZtV.mjs → acorex-platform-module-auth-client-view-login-history.command-BHbkWOO3.mjs} +2 -2
  46. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-EHXTmZtV.mjs.map → acorex-platform-module-auth-client-view-login-history.command-BHbkWOO3.mjs.map} +1 -1
  47. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-CQUpjsZw.mjs → acorex-platform-module-auth-client-welcome-onboarding-page.component-DcVVR1Zp.mjs} +2 -2
  48. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-CQUpjsZw.mjs.map → acorex-platform-module-auth-client-welcome-onboarding-page.component-DcVVR1Zp.mjs.map} +1 -1
  49. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-D8cyXb5q.mjs → acorex-platform-module-auth-client-welcome-onboarding.command-BpZt3m22.mjs} +2 -2
  50. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-D8cyXb5q.mjs.map → acorex-platform-module-auth-client-welcome-onboarding.command-BpZt3m22.mjs.map} +1 -1
  51. package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
  52. package/i18n/en-AU/auth.json +2 -1
  53. package/i18n/en-US/auth.json +2 -1
  54. package/i18n/fa-IR/auth.json +2 -1
  55. package/package.json +3 -3
  56. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-Dgo6MzxI.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding-page.component-CQUpjsZw.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-palette-scope.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-confetti.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-typography-preview.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-page.component.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-page.component.html"],"sourcesContent":["//#region ----- Scoped palette CSS -----\n\nconst WELCOME_PALETTE_SCOPE = '.axp-welcome-onboarding';\n\nfunction normalizeHexColor(value: string): string | undefined {\n const raw = value.trim();\n const withoutHash = raw.startsWith('#') ? raw.slice(1) : raw;\n if (/^[0-9a-fA-F]{3}$/.test(withoutHash)) {\n return withoutHash\n .split('')\n .map((char) => char + char)\n .join('')\n .toLowerCase();\n }\n if (/^[0-9a-fA-F]{6}$/.test(withoutHash)) {\n return withoutHash.toLowerCase();\n }\n return undefined;\n}\n\nfunction hexToRgb(hex: string): [number, number, number] {\n return [\n Number.parseInt(hex.slice(0, 2), 16),\n Number.parseInt(hex.slice(2, 4), 16),\n Number.parseInt(hex.slice(4, 6), 16),\n ];\n}\n\nfunction rgbChannels([r, g, b]: [number, number, number]): string {\n return `${r}, ${g}, ${b}`;\n}\n\nfunction mixTowardWhite(hex: string, amount: number): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n return [\n Math.round(r + (255 - r) * amount),\n Math.round(g + (255 - g) * amount),\n Math.round(b + (255 - b) * amount),\n ];\n}\n\nfunction mixTowardBlack(hex: string, amount: number): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n const keep = 1 - amount;\n return [Math.round(r * keep), Math.round(g * keep), Math.round(b * keep)];\n}\n\nfunction relativeLuminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex).map((channel) => {\n const scaled = channel / 255;\n return scaled <= 0.03928 ? scaled / 12.92 : Math.pow((scaled + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\nfunction rgbToHex([r, g, b]: [number, number, number]): string {\n const toByte = (channel: number) =>\n Math.max(0, Math.min(255, Math.round(channel)))\n .toString(16)\n .padStart(2, '0');\n return `${toByte(r)}${toByte(g)}${toByte(b)}`;\n}\n\nfunction contrastForegroundHex(backgroundHex: string): string {\n return relativeLuminance(backgroundHex) > 0.55 ? '171717' : 'ffffff';\n}\n\n/**\n * Maps palette primary hex to ax-sys primary tokens so ax-button and theme choosers\n * inside the welcome host follow the preview palette (not the global app theme).\n */\nexport function buildWelcomePaletteSysColorVars(primaryHex: string): Record<string, string> {\n const hex = normalizeHexColor(primaryHex);\n if (!hex) {\n return {};\n }\n\n const base = hexToRgb(hex);\n const lighter = mixTowardWhite(hex, 0.78);\n const lightest = mixTowardWhite(hex, 0.9);\n const darker = mixTowardBlack(hex, 0.14);\n const border = mixTowardBlack(hex, 0.1);\n const onPrimary = hexToRgb(contrastForegroundHex(hex));\n const onLighter = hexToRgb(contrastForegroundHex(rgbToHex(lighter)));\n\n const sys = {\n '--ax-sys-color-primary-500': rgbChannels(base),\n '--ax-sys-color-primary-600': rgbChannels(darker),\n '--ax-sys-color-primary-50': rgbChannels(lightest),\n '--ax-sys-color-primary-100': rgbChannels(lighter),\n '--ax-sys-color-primary-lighter-surface': rgbChannels(lighter),\n '--ax-sys-color-primary-surface': rgbChannels(base),\n '--ax-sys-color-on-primary-surface': rgbChannels(onPrimary),\n '--ax-sys-color-on-primary-lighter-surface': rgbChannels(onLighter),\n '--ax-sys-color-border-primary-surface': rgbChannels(border),\n '--ax-sys-color-border-primary-lighter-surface': rgbChannels(mixTowardWhite(hex, 0.45)),\n };\n\n /* ax-primary / primary-lighter-surface read --color-* aliases (often bound on :root). */\n const aliases = {\n '--color-primary': 'rgba(var(--ax-sys-color-primary-surface))',\n '--color-on-primary': 'rgba(var(--ax-sys-color-on-primary-surface))',\n '--color-border-primary': 'rgba(var(--ax-sys-color-border-primary-surface))',\n '--color-primary-lighter': 'rgba(var(--ax-sys-color-primary-lighter-surface))',\n '--color-on-primary-lighter': 'rgba(var(--ax-sys-color-on-primary-lighter-surface))',\n '--color-border-primary-lighter': 'rgba(var(--ax-sys-color-border-primary-lighter-surface))',\n };\n\n return { ...sys, ...aliases };\n}\n\n/**\n * Rewrites palette asset selectors so tokens apply under the welcome page host only.\n */\nexport function scopeWelcomePaletteCss(css: string): string {\n return css.replace(/:root/g, WELCOME_PALETTE_SCOPE);\n}\n\nexport function welcomePaletteCssUrl(paletteName: string): string {\n const safeName = paletteName.trim().length > 0 ? paletteName.trim() : 'default';\n return `/assets/themes/palettes/css/${safeName}.css`;\n}\n\n//#endregion\n","//#region ----- Welcome confetti (canvas, no external package) -----\n\ntype ConfettiPiece = {\n x: number;\n y: number;\n w: number;\n h: number;\n vx: number;\n vy: number;\n rotation: number;\n spin: number;\n color: string;\n opacity: number;\n};\n\nconst CONFETTI_COLORS = [\n '#7c3aed',\n '#2563eb',\n '#0d9488',\n '#eab308',\n '#f97316',\n '#ec4899',\n '#22c55e',\n];\n\nconst DURATION_MS = 4200;\n\nfunction prefersReducedMotion(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** Runs a one-shot top-to-bottom confetti burst inside `host`. Returns a cleanup function. */\nexport function runWelcomeOnboardingConfetti(host: HTMLElement): () => void {\n if (prefersReducedMotion()) {\n return () => undefined;\n }\n\n const canvas = document.createElement('canvas');\n canvas.className = 'axp-welcome-onboarding__confetti-canvas';\n canvas.setAttribute('aria-hidden', 'true');\n host.appendChild(canvas);\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n canvas.remove();\n return () => undefined;\n }\n\n let width = 0;\n let height = 0;\n let rafId = 0;\n let running = true;\n const startedAt = performance.now();\n\n const resize = (): void => {\n const rect = host.getBoundingClientRect();\n width = Math.max(1, Math.floor(rect.width));\n height = Math.max(1, Math.floor(rect.height));\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n };\n\n resize();\n const onResize = (): void => resize();\n window.addEventListener('resize', onResize);\n\n const pieces: ConfettiPiece[] = [];\n const count = Math.min(160, Math.max(80, Math.floor(width / 6)));\n for (let i = 0; i < count; i += 1) {\n pieces.push({\n x: Math.random() * width,\n y: -20 - Math.random() * height * 0.35,\n w: 6 + Math.random() * 6,\n h: 10 + Math.random() * 8,\n vx: (Math.random() - 0.5) * 2.4,\n vy: 2.2 + Math.random() * 3.8,\n rotation: Math.random() * Math.PI * 2,\n spin: (Math.random() - 0.5) * 0.18,\n color: CONFETTI_COLORS[i % CONFETTI_COLORS.length] ?? '#7c3aed',\n opacity: 0.85 + Math.random() * 0.15,\n });\n }\n\n const tick = (now: number): void => {\n if (!running) {\n return;\n }\n\n const elapsed = now - startedAt;\n ctx.clearRect(0, 0, width, height);\n\n for (const piece of pieces) {\n piece.x += piece.vx;\n piece.y += piece.vy;\n piece.vy += 0.06;\n piece.vx *= 0.995;\n piece.rotation += piece.spin;\n\n const fade =\n elapsed > DURATION_MS - 900 ? Math.max(0, (DURATION_MS - elapsed) / 900) : piece.opacity;\n\n ctx.save();\n ctx.globalAlpha = fade * piece.opacity;\n ctx.translate(piece.x, piece.y);\n ctx.rotate(piece.rotation);\n ctx.fillStyle = piece.color;\n ctx.fillRect(-piece.w / 2, -piece.h / 2, piece.w, piece.h);\n ctx.restore();\n }\n\n if (elapsed >= DURATION_MS) {\n running = false;\n cleanup();\n return;\n }\n\n rafId = requestAnimationFrame(tick);\n };\n\n const cleanup = (): void => {\n running = false;\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n window.removeEventListener('resize', onResize);\n canvas.remove();\n };\n\n rafId = requestAnimationFrame(tick);\n return cleanup;\n}\n\n//#endregion\n","import { getRegionalFontStylesheet } from '@acorex-platform/framework-client/themes/shared';\n\n//#region ----- Constants -----\n\nconst FONT_SIZE_KEYWORDS = new Set(['small', 'medium', 'large', 'x-large']);\nconst DEFAULT_FONT_FAMILY = 'system-ui';\nconst DEFAULT_FONT_SIZE = 'medium';\nconst FONT_FALLBACK = 'Tahoma, system-ui, sans-serif';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function resolveWelcomePreviewFontFamily(value: unknown): string {\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : DEFAULT_FONT_FAMILY;\n}\n\nexport function resolveWelcomePreviewFontSize(value: unknown): string {\n return typeof value === 'string' && FONT_SIZE_KEYWORDS.has(value) ? value : DEFAULT_FONT_SIZE;\n}\n\n/** Same CSS family contract as theme.service (`resolveFontCssFamily`). */\nfunction resolveWelcomeFontCssFamily(fontId: string): string {\n if (fontId === 'system-ui') {\n return `system-ui, ${FONT_FALLBACK}`;\n }\n if (fontId === 'tahoma') {\n return 'Tahoma, system-ui, sans-serif';\n }\n return `\"${fontId}\", ${FONT_FALLBACK}`;\n}\n\nfunction resolveWelcomeFontVariationSettings(fontId: string): string | undefined {\n if (fontId === 'iranyekanx') {\n return '\"dots\" 1';\n }\n return undefined;\n}\n\nexport function buildWelcomeTypographyStyle(\n fontId: string,\n fontSize: string,\n): Record<string, string> {\n const variation = resolveWelcomeFontVariationSettings(fontId);\n const style: Record<string, string> = {\n fontFamily: resolveWelcomeFontCssFamily(fontId),\n fontSize,\n };\n if (variation) {\n style['fontVariationSettings'] = variation;\n }\n return style;\n}\n\nexport function ensureWelcomeFontStylesLoaded(fontId: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const href = getRegionalFontStylesheet(fontId);\n if (!href) {\n return;\n }\n\n const selector = `link[data-axp-regional-font=\"${href}\"]`;\n if (document.head.querySelector(selector)) {\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.setAttribute('data-axp-regional-font', href);\n document.head.appendChild(link);\n}\n\nexport function applyWelcomeTypographyToHtml(fontId: string, fontSize: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const html = document.documentElement;\n html.style.fontFamily = resolveWelcomeFontCssFamily(fontId);\n html.style.fontVariationSettings = resolveWelcomeFontVariationSettings(fontId) ?? '';\n html.style.fontSize = fontSize;\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPHomePageService, AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';\nimport { AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPUserAvatarComponent } from '@acorex-platform/framework-client/layout/components';\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_THEME_PALETTE_PROVIDER,\n AXPLayoutThemeService,\n AXPMenuOrientation,\n AXPMenuVerticalMode,\n AXPThemeLayoutSetting,\n AXPThemeMode,\n type AXPThemePalette,\n} from '@acorex-platform/framework-client/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnInit,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n signal,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport type { AXPOnboardingContext, AXPOnboardingStep } from '../../../onboarding/onboarding.types';\nimport { AXPOnboardingProgressService } from '../../../onboarding/onboarding-progress.service';\nimport { AXPWelcomeOnboardingFlowService } from '../../../onboarding/welcome-onboarding-flow.service';\nimport {\n buildWelcomePaletteSysColorVars,\n scopeWelcomePaletteCss,\n welcomePaletteCssUrl,\n} from './welcome-onboarding-palette-scope.util';\nimport { runWelcomeOnboardingConfetti } from './welcome-onboarding-confetti.util';\nimport {\n applyWelcomeTypographyToHtml,\n buildWelcomeTypographyStyle,\n ensureWelcomeFontStylesLoaded,\n resolveWelcomePreviewFontFamily,\n resolveWelcomePreviewFontSize,\n} from './welcome-onboarding-typography-preview.util';\n\n//#region ----- Types -----\n\ntype WelcomeFinishOutcome = 'completed' | 'skipped' | 'deferred' | null;\n\n//#endregion\n\n//#region ----- Welcome onboarding page -----\n\n@Component({\n selector: 'axp-auth-welcome-onboarding-page',\n templateUrl: './welcome-onboarding-page.component.html',\n styleUrls: ['./welcome-onboarding-page.component.css'],\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXPLogoComponent,\n AXPUserAvatarComponent,\n AXPLayoutRendererComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAuthWelcomeOnboardingPageComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly flowService = inject(AXPWelcomeOnboardingFlowService);\n private readonly progressService = inject(AXPOnboardingProgressService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly homePageService = inject(AXPHomePageService);\n private readonly platformBranding = inject(AXPPlatformBrandingService);\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly paletteProvider = inject(AXP_THEME_PALETTE_PROVIDER);\n private readonly themeService = inject(AXPLayoutThemeService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly palettes = signal<AXPThemePalette[]>([]);\n protected readonly systemPrefersDark = signal(false);\n protected readonly loading = signal(true);\n protected readonly platformTitle = signal('ACoreX');\n protected readonly steps = signal<AXPOnboardingStep[]>([]);\n protected readonly stepIndex = signal(0);\n protected readonly formContext = signal<Record<string, unknown>>({});\n protected readonly finishOutcome = signal<WelcomeFinishOutcome>(null);\n protected readonly busy = signal(false);\n protected readonly backdropLayerA = signal<Record<string, string>>({});\n protected readonly backdropLayerB = signal<Record<string, string>>({});\n protected readonly activeBackdropLayer = signal<'a' | 'b'>('a');\n protected readonly previewTaskSkeletonRows = [0, 1, 2];\n\n private readonly formScrollHost = viewChild<ElementRef<HTMLElement>>('formScrollHost');\n private readonly confettiHost = viewChild<ElementRef<HTMLElement>>('confettiHost');\n\n private sessionContext: AXPOnboardingContext | null = null;\n private forcePlan = false;\n private backdropCrossfadeKey = '';\n private paletteStyleEl: HTMLStyleElement | null = null;\n private paletteLoadToken = 0;\n private confettiRanForOutcome: WelcomeFinishOutcome = null;\n private stopConfetti: (() => void) | null = null;\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly currentStep = computed(() => {\n const list = this.steps();\n const index = this.stepIndex();\n return list[index] ?? null;\n });\n\n protected readonly isFirstStep = computed(() => this.stepIndex() === 0);\n\n protected readonly isLastStep = computed(() => {\n const list = this.steps();\n return list.length > 0 && this.stepIndex() === list.length - 1;\n });\n\n protected readonly stepLayout = computed((): AXPWidgetNode | undefined => {\n const step = this.currentStep();\n if (!step || this.finishOutcome()) {\n return undefined;\n }\n return this.flowService.buildStepLayout(step);\n });\n\n protected readonly showAppearancePreview = computed(\n () => this.currentStep()?.id === 'welcome-appearance',\n );\n\n protected readonly showTypographyPreview = computed(\n () => this.currentStep()?.id === 'welcome-typography',\n );\n\n protected readonly showProfileAvatar = computed(() => this.currentStep()?.id === 'profile-basics');\n\n protected readonly previewOrganizationTitle = computed((): string => {\n const tenant = this.sessionService.tenant;\n const locale = this.translationService.getActiveLang();\n const fromTitle = tenant?.title\n ? resolveMultiLanguageString(tenant.title, locale).trim()\n : '';\n if (fromTitle.length > 0) {\n return fromTitle;\n }\n const name = tenant?.name?.trim();\n if (name) {\n return name;\n }\n return this.platformTitle();\n });\n\n protected readonly orbIconClass = computed((): string => {\n switch (this.currentStep()?.id) {\n case 'welcome-intro':\n return 'fa-solid fa-earth-americas';\n case 'welcome-appearance':\n return 'fa-solid fa-palette';\n case 'welcome-navigation':\n return 'fa-solid fa-table-columns';\n case 'welcome-typography':\n return 'fa-solid fa-font';\n case 'profile-basics':\n return 'fa-solid fa-user';\n case 'whs-orientation':\n return 'fa-solid fa-shield-check';\n default:\n return 'fa-solid fa-sparkles';\n }\n });\n\n protected readonly doneOrbIconClass = 'fa-solid fa-check';\n\n protected readonly previewPaletteName = computed(() => {\n const palette = this.formContext()[AXPThemeLayoutSetting.Palette];\n return typeof palette === 'string' && palette.length > 0 ? palette : 'default';\n });\n\n protected readonly previewResolvedDark = computed(() => {\n const mode = this.formContext()[AXPThemeLayoutSetting.Mode];\n if (mode === AXPThemeMode.Dark) {\n return true;\n }\n if (mode === AXPThemeMode.Light) {\n return false;\n }\n return this.systemPrefersDark();\n });\n\n protected readonly previewSurfaceStyle = computed(() => {\n const name = this.previewPaletteName();\n const list = this.palettes();\n const match =\n list.find((item) => item.name === name) ??\n list.find((item) => item.name === 'default') ??\n list[0];\n const colors = match?.colors;\n const isDark = this.previewResolvedDark();\n\n const primary = colors?.primary ?? '#237f6a';\n const secondary = colors?.secondary ?? '#4b9e8f';\n const accent = colors?.accents?.[0] ?? secondary ?? '#7fc6b5';\n const lightSurface = colors?.light ?? '#f2f5f7';\n const darkSurface = colors?.dark ?? '#1a1f1e';\n const surface = isDark ? darkSurface : lightSurface;\n\n return {\n ...buildWelcomePaletteSysColorVars(primary),\n '--axp-welcome-preview-primary': primary,\n '--axp-welcome-preview-secondary': secondary,\n '--axp-welcome-preview-surface': surface,\n '--axp-welcome-preview-accent': accent,\n '--axp-welcome-preview-panel': isDark\n ? `color-mix(in srgb, ${surface} 88%, white 6%)`\n : '#ffffff',\n '--axp-welcome-preview-card': isDark\n ? `color-mix(in srgb, ${surface} 72%, white 12%)`\n : '#ffffff',\n '--axp-welcome-preview-text': isDark ? '#e3eee9' : `color-mix(in srgb, ${primary} 70%, black)`,\n '--axp-welcome-preview-muted': isDark ? '#b5c7bf' : '#64736f',\n '--axp-welcome-preview-border': isDark\n ? `color-mix(in srgb, ${surface} 55%, white 14%)`\n : '#fdfdfd',\n '--axp-welcome-page-glow-start': isDark\n ? `color-mix(in srgb, ${accent} 38%, ${surface} 62%)`\n : `color-mix(in srgb, ${accent} 52%, white 48%)`,\n '--axp-welcome-page-glow-end': isDark\n ? `color-mix(in srgb, ${secondary} 42%, ${surface} 58%)`\n : `color-mix(in srgb, ${secondary} 38%, white 62%)`,\n '--axp-welcome-page-base': isDark\n ? `color-mix(in srgb, ${surface} 94%, black 6%)`\n : `color-mix(in srgb, ${lightSurface} 86%, ${accent} 14%)`,\n };\n });\n\n protected readonly previewFontFamily = computed(() =>\n resolveWelcomePreviewFontFamily(this.formContext()[AXPThemeLayoutSetting.Font]),\n );\n\n protected readonly previewFontSize = computed(() =>\n resolveWelcomePreviewFontSize(this.formContext()[AXPThemeLayoutSetting.FontSize]),\n );\n\n protected readonly previewTypographyStyle = computed(() =>\n buildWelcomeTypographyStyle(this.previewFontFamily(), this.previewFontSize()),\n );\n\n protected readonly previewHostStyle = computed(() => ({\n ...this.previewSurfaceStyle(),\n ...this.previewTypographyStyle(),\n }));\n\n //#region ----- Confetti (completion) -----\n\n private readonly completionConfettiEffect = effect(() => {\n const outcome = this.finishOutcome();\n if (!outcome || outcome !== 'completed') {\n return;\n }\n if (this.confettiRanForOutcome === outcome) {\n return;\n }\n\n queueMicrotask(() => {\n const host = this.confettiHost()?.nativeElement;\n if (!host || this.confettiRanForOutcome === 'completed') {\n return;\n }\n this.confettiRanForOutcome = outcome;\n this.stopConfetti?.();\n this.stopConfetti = runWelcomeOnboardingConfetti(host);\n });\n });\n\n //#endregion\n\n //#region ----- Live typography (font + size) -----\n\n private readonly typographyPreviewEffect = effect(() => {\n if (this.loading()) {\n return;\n }\n\n const family = this.previewFontFamily();\n const size = this.previewFontSize();\n ensureWelcomeFontStylesLoaded(family);\n applyWelcomeTypographyToHtml(family, size);\n });\n\n //#endregion\n\n //#region ----- Scoped palette (buttons + surfaces) -----\n\n private readonly scopedPaletteEffect = effect(() => {\n const name = this.previewPaletteName();\n const token = ++this.paletteLoadToken;\n void this.loadScopedPaletteCss(name, token);\n });\n\n //#endregion\n\n //#region ----- Backdrop crossfade -----\n\n private readonly backdropCrossfadeEffect = effect(() => {\n const style = this.previewSurfaceStyle();\n const key = JSON.stringify(style);\n if (key === this.backdropCrossfadeKey) {\n return;\n }\n\n if (!this.backdropCrossfadeKey) {\n this.backdropCrossfadeKey = key;\n this.backdropLayerA.set(style);\n this.backdropLayerB.set(style);\n this.activeBackdropLayer.set('a');\n return;\n }\n\n this.backdropCrossfadeKey = key;\n if (this.activeBackdropLayer() === 'a') {\n this.backdropLayerB.set(style);\n this.activeBackdropLayer.set('b');\n return;\n }\n\n this.backdropLayerA.set(style);\n this.activeBackdropLayer.set('a');\n });\n\n //#endregion\n\n protected readonly previewMenuHorizontal = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.MenuOrientation];\n return value === AXPMenuOrientation.Horizontal;\n });\n\n protected readonly previewMenuCompact = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.MenuVerticalMode];\n return value === AXPMenuVerticalMode.Compact;\n });\n\n protected readonly previewHeaderColored = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.HeaderAppearance];\n return value !== 'simple';\n });\n\n protected get user() {\n return this.sessionService.user;\n }\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n async ngOnInit(): Promise<void> {\n const title = await this.platformBranding.resolvePlatformTitle().catch(() => '');\n this.platformTitle.set(title || 'ACoreX');\n\n this.forcePlan =\n this.route.snapshot.queryParamMap.get('force') === '1' ||\n this.route.snapshot.queryParamMap.get('force') === 'true';\n\n const provider = await this.paletteProvider;\n this.palettes.set(await provider.getList());\n\n this.bindSystemColorSchemeListener();\n\n this.destroyRef.onDestroy(() => {\n this.paletteStyleEl?.remove();\n this.paletteStyleEl = null;\n this.stopConfetti?.();\n this.stopConfetti = null;\n void this.themeService.loadSettings();\n\n const step = this.currentStep();\n if (step && this.sessionContext && !this.finishOutcome()) {\n this.flowService.setResumeState(this.sessionContext, step.id);\n }\n });\n\n await this.bootstrap();\n }\n\n //#endregion\n\n //#region ----- Palette CSS loading -----\n\n private async loadScopedPaletteCss(paletteName: string, token: number): Promise<void> {\n const candidates = [paletteName, 'default'].filter(\n (name, index, list) => name.trim().length > 0 && list.indexOf(name) === index,\n );\n\n let cssText: string | null = null;\n for (const name of candidates) {\n try {\n const response = await fetch(welcomePaletteCssUrl(name));\n if (response.ok) {\n cssText = await response.text();\n break;\n }\n } catch {\n /* try next candidate */\n }\n }\n\n if (token !== this.paletteLoadToken || !cssText) {\n return;\n }\n\n if (!this.paletteStyleEl) {\n this.paletteStyleEl = document.createElement('style');\n this.paletteStyleEl.setAttribute('data-welcome-onboarding-palette', '');\n document.head.appendChild(this.paletteStyleEl);\n }\n\n this.paletteStyleEl.setAttribute('data-welcome-onboarding-palette', paletteName);\n this.paletteStyleEl.textContent = scopeWelcomePaletteCss(cssText);\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onFormContextChange(next: Record<string, unknown>): void {\n const host = this.formScrollHost()?.nativeElement;\n const scrollTop = host?.scrollTop ?? 0;\n this.formContext.set(next);\n if (!host) {\n return;\n }\n const restoreScroll = (): void => {\n host.scrollTop = scrollTop;\n };\n queueMicrotask(restoreScroll);\n requestAnimationFrame(restoreScroll);\n }\n\n protected async goToStep(index: number): Promise<void> {\n const list = this.steps();\n if (index < 0 || index >= list.length) {\n return;\n }\n this.stepIndex.set(index);\n const step = list[index];\n if (step && this.sessionContext) {\n this.flowService.setResumeState(this.sessionContext, step.id);\n }\n }\n\n protected async previous(): Promise<void> {\n if (this.isFirstStep()) {\n return;\n }\n this.stepIndex.update((i) => i - 1);\n }\n\n protected async next(): Promise<void> {\n const step = this.currentStep();\n if (!step || !this.sessionContext || this.busy()) {\n return;\n }\n\n if (this.isLastStep()) {\n await this.complete('completed');\n return;\n }\n\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.markStep(step, this.sessionContext, 'completed');\n\n const nextIndex = this.stepIndex() + 1;\n this.stepIndex.set(nextIndex);\n\n const nextStep = this.steps()[nextIndex];\n if (nextStep) {\n this.flowService.setResumeState(this.sessionContext, nextStep.id);\n }\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async skipAll(): Promise<void> {\n if (this.busy() || !this.sessionContext) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.markSteps(this.steps(), this.sessionContext, 'skipped');\n this.flowService.clearResumeState();\n await this.enterWorkspace();\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async remindLater(): Promise<void> {\n if (this.busy()) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.setRemindLater();\n await this.enterWorkspace();\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async enterWorkspace(): Promise<void> {\n const urlTree = await this.homePageService.resolveAuthorizedHomeUrlTree();\n await this.router.navigateByUrl(urlTree);\n }\n\n protected async reviewSettings(): Promise<void> {\n this.finishOutcome.set(null);\n this.stepIndex.set(0);\n }\n\n protected stepArtCaptionKey(step: AXPOnboardingStep | null): string {\n if (!step) {\n return '@auth:welcome-onboarding.page.art.default-caption';\n }\n return `@auth:welcome-onboarding.page.art.${step.id}`;\n }\n\n //#endregion\n\n //#region ----- Private logic -----\n\n private bindSystemColorSchemeListener(): void {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n this.systemPrefersDark.set(media.matches);\n\n const onChange = (event: MediaQueryListEvent) => {\n this.systemPrefersDark.set(event.matches);\n };\n\n media.addEventListener('change', onChange);\n this.destroyRef.onDestroy(() => media.removeEventListener('change', onChange));\n }\n\n private async bootstrap(): Promise<void> {\n this.loading.set(true);\n try {\n let pending = await this.flowService.evaluatePending(this.forcePlan);\n if (!pending && this.flowService.hasActiveResumeState()) {\n pending = await this.flowService.evaluatePending(true);\n }\n if (!pending) {\n await this.enterWorkspace();\n return;\n }\n\n this.sessionContext = pending.context;\n this.steps.set(pending.steps);\n const preferences = await this.flowService.loadPreferenceContext();\n this.formContext.set(preferences);\n\n const progress = await this.progressService.getProgress();\n let startIndex = 0;\n if (this.flowService.hasActiveResumeState()) {\n startIndex = this.flowService.resolveResumeStepIndex(pending.context, pending.steps);\n } else if (this.forcePlan) {\n startIndex = 0;\n } else {\n startIndex = this.flowService.resolveFirstIncompleteStepIndex(\n pending.steps,\n pending.context,\n progress,\n );\n }\n\n this.stepIndex.set(startIndex);\n const resumeStep = pending.steps[startIndex];\n if (resumeStep) {\n this.flowService.setResumeState(pending.context, resumeStep.id);\n }\n } finally {\n this.loading.set(false);\n }\n }\n\n private async complete(status: 'completed'): Promise<void> {\n if (this.busy() || !this.sessionContext) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n\n const step = this.currentStep();\n if (step) {\n await this.flowService.markStep(step, this.sessionContext, 'completed');\n }\n\n this.flowService.clearResumeState();\n this.finishOutcome.set(status);\n } finally {\n this.busy.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<div\n class=\"axp-welcome-onboarding\"\n [class.ax-light]=\"!previewResolvedDark()\"\n [class.ax-dark]=\"previewResolvedDark()\"\n [ngStyle]=\"previewHostStyle()\"\n>\n <div class=\"axp-welcome-onboarding__backdrop-stack\" aria-hidden=\"true\">\n <div\n class=\"axp-welcome-onboarding__backdrop\"\n [class.axp-welcome-onboarding__backdrop--active]=\"activeBackdropLayer() === 'a'\"\n [ngStyle]=\"backdropLayerA()\"\n ></div>\n <div\n class=\"axp-welcome-onboarding__backdrop\"\n [class.axp-welcome-onboarding__backdrop--active]=\"activeBackdropLayer() === 'b'\"\n [ngStyle]=\"backdropLayerB()\"\n ></div>\n </div>\n\n <div class=\"axp-welcome-onboarding__content\" #confettiHost>\n <!-- ----- Full-page loading state ----- -->\n @if (loading()) {\n <div class=\"axp-welcome-onboarding__loading\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Main onboarding shell ----- -->\n @else {\n <div\n class=\"axp-welcome-onboarding__shell\"\n [class.axp-welcome-onboarding__shell--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__shell--typography]=\"showTypographyPreview()\"\n [ngStyle]=\"previewHostStyle()\"\n >\n <header class=\"axp-welcome-onboarding__header\">\n <div class=\"axp-welcome-onboarding__brand\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"220\"\n [attr.alt]=\"platformTitle()\"\n ></axp-logo>\n </div>\n <div class=\"axp-welcome-onboarding__step-counter\">\n <!-- ----- Step counter in the header ----- -->\n @if (!finishOutcome() && currentStep(); as step) {\n <span>\n {{\n '@auth:welcome-onboarding.page.step-counter'\n | translate: { params: { current: stepIndex() + 1, total: steps().length } }\n | async\n }}\n · {{ step.title | translate | async }}\n </span>\n }\n <!-- ----- Ready message after completion ----- -->\n @else if (finishOutcome()) {\n {{ '@auth:welcome-onboarding.page.ready-counter' | translate | async }}\n }\n </div>\n </header>\n\n <main class=\"axp-welcome-onboarding__main\">\n <!-- ----- Completion screen ----- -->\n @if (finishOutcome(); as outcome) {\n <section class=\"axp-welcome-onboarding__done axp-welcome-onboarding__animate\">\n <div\n class=\"axp-welcome-onboarding__orb axp-welcome-onboarding__done-orb\"\n [ngStyle]=\"previewSurfaceStyle()\"\n aria-hidden=\"true\"\n >\n <i class=\"axp-welcome-onboarding__orb-icon\" [class]=\"doneOrbIconClass\"></i>\n </div>\n <h1 class=\"axp-welcome-onboarding__title\">\n {{\n ('@auth:welcome-onboarding.page.done.' + outcome + '.title') | translate | async\n }}\n </h1>\n <p class=\"axp-welcome-onboarding__lead\">\n {{\n ('@auth:welcome-onboarding.page.done.' + outcome + '.description') | translate | async\n }}\n </p>\n <div class=\"axp-welcome-onboarding__done-actions\">\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@auth:welcome-onboarding.page.actions.enter-workspace' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"enterWorkspace()\"\n ></ax-button>\n <!-- ----- Review settings after skip or defer ----- -->\n @if (outcome !== 'completed') {\n <ax-button\n look=\"outline\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.page.actions.review-settings' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"reviewSettings()\"\n ></ax-button>\n }\n </div>\n </section>\n }\n <!-- ----- Active step: form + art panel ----- -->\n @else {\n <section\n #formScrollHost\n class=\"axp-welcome-onboarding__form axp-welcome-onboarding__animate\"\n [class.axp-welcome-onboarding__form--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__form--typography]=\"showTypographyPreview()\"\n [class.axp-welcome-onboarding__form--menu-horizontal]=\"\n showAppearancePreview() && previewMenuHorizontal()\n \"\n >\n <!-- ----- Step form content when a step is active ----- -->\n @if (currentStep(); as step) {\n <h1 class=\"axp-welcome-onboarding__title\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.headline') | translate | async }}\n </h1>\n <p class=\"axp-welcome-onboarding__lead\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.lead') | translate | async }}\n </p>\n\n <!-- ----- Profile avatar on profile basics step ----- -->\n @if (showProfileAvatar()) {\n <div class=\"axp-welcome-onboarding__profile-row\">\n <axp-user-avatar\n [size]=\"74\"\n [userId]=\"user?.id!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n }\n\n @if (stepLayout(); as layout) {\n <axp-layout-renderer\n class=\"axp-welcome-onboarding__fields\"\n [layout]=\"layout\"\n [context]=\"formContext()\"\n (contextChange)=\"onFormContextChange($event)\"\n ></axp-layout-renderer>\n }\n\n <p class=\"axp-welcome-onboarding__notice\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.notice') | translate | async }}\n </p>\n }\n </section>\n\n <aside\n class=\"axp-welcome-onboarding__art axp-welcome-onboarding__animate\"\n [class.axp-welcome-onboarding__art--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__art--typography]=\"showTypographyPreview()\"\n [ngStyle]=\"previewHostStyle()\"\n aria-hidden=\"false\"\n >\n <div class=\"axp-welcome-onboarding__art-inner\">\n <div class=\"axp-welcome-onboarding__art-visual\">\n <!-- ----- Theme preview on appearance step ----- -->\n @if (showAppearancePreview()) {\n <div\n class=\"axp-welcome-onboarding__preview\"\n [class.axp-welcome-onboarding__preview--dark]=\"previewResolvedDark()\"\n [ngStyle]=\"previewSurfaceStyle()\"\n >\n <div\n class=\"axp-welcome-onboarding__preview-head\"\n [class.axp-welcome-onboarding__preview-head--colored]=\"previewHeaderColored()\"\n >\n ● ● ● &nbsp;&nbsp; {{ previewOrganizationTitle() }}\n </div>\n <div\n class=\"axp-welcome-onboarding__preview-body\"\n [class.axp-welcome-onboarding__preview-body--horizontal]=\"previewMenuHorizontal()\"\n >\n <!-- ----- Horizontal root menu skeleton ----- -->\n @if (previewMenuHorizontal()) {\n <div class=\"axp-welcome-onboarding__preview-hmenu\">\n <span class=\"axp-welcome-onboarding__preview-hmenu-brand\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item axp-welcome-onboarding__preview-hmenu-item--short\"></span>\n </div>\n }\n <!-- ----- Vertical root menu skeleton ----- -->\n @else {\n <div\n class=\"axp-welcome-onboarding__preview-sidebar\"\n [class.axp-welcome-onboarding__preview-sidebar--compact]=\"previewMenuCompact()\"\n ></div>\n }\n <div class=\"axp-welcome-onboarding__preview-blocks\">\n <strong>{{ previewOrganizationTitle() }}</strong>\n <div class=\"axp-welcome-onboarding__preview-dashboard\">\n <div class=\"axp-welcome-onboarding__preview-widget-row\">\n <div class=\"axp-welcome-onboarding__preview-widget axp-welcome-onboarding__preview-widget--clock\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--clock\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-lg\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-sm\"></span>\n </div>\n <div class=\"axp-welcome-onboarding__preview-mini-cards\">\n <span class=\"axp-welcome-onboarding__preview-mini-card\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--dot\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n <span class=\"axp-welcome-onboarding__preview-mini-card\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--dot\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n <span class=\"axp-welcome-onboarding__preview-mini-card axp-welcome-onboarding__preview-mini-card--wide\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n </div>\n </div>\n <div class=\"axp-welcome-onboarding__preview-tasks\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--title\"></span>\n @for (row of previewTaskSkeletonRows; track row) {\n <div class=\"axp-welcome-onboarding__preview-task-row\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--check\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line\"></span>\n </div>\n }\n </div>\n <div class=\"axp-welcome-onboarding__preview-chart\"></div>\n </div>\n </div>\n </div>\n </div>\n }\n <!-- ----- Live type specimen on typography step ----- -->\n @else if (showTypographyPreview()) {\n <div\n class=\"axp-welcome-onboarding__type-preview\"\n [ngStyle]=\"previewHostStyle()\"\n >\n <span class=\"axp-welcome-onboarding__type-preview-sample\">\n {{ '@auth:welcome-onboarding.page.typography-preview.sample' | translate | async }}\n </span>\n <strong class=\"axp-welcome-onboarding__type-preview-heading\">\n {{ '@auth:welcome-onboarding.page.typography-preview.heading' | translate | async }}\n </strong>\n <p class=\"axp-welcome-onboarding__type-preview-body\">\n {{ '@auth:welcome-onboarding.page.typography-preview.body' | translate | async }}\n </p>\n </div>\n }\n <!-- ----- Decorative orb on other steps ----- -->\n @else {\n <div class=\"axp-welcome-onboarding__orb\" [ngStyle]=\"previewSurfaceStyle()\">\n <i class=\"axp-welcome-onboarding__orb-icon\" [class]=\"orbIconClass()\" aria-hidden=\"true\"></i>\n </div>\n }\n </div>\n\n <div class=\"axp-welcome-onboarding__art-caption\">\n <strong>{{ stepArtCaptionKey(currentStep()) | translate | async }}</strong>\n </div>\n\n <div class=\"axp-welcome-onboarding__dots\" role=\"tablist\">\n @for (step of steps(); track step.id; let i = $index) {\n <button\n type=\"button\"\n class=\"axp-welcome-onboarding__dot\"\n [class.axp-welcome-onboarding__dot--on]=\"stepIndex() === i\"\n [attr.aria-label]=\"step.title | translate | async\"\n [attr.aria-selected]=\"stepIndex() === i\"\n (click)=\"goToStep(i)\"\n ></button>\n }\n </div>\n </div>\n </aside>\n }\n </main>\n\n <!-- ----- Footer actions while steps are active ----- -->\n @if (!finishOutcome()) {\n <footer class=\"axp-welcome-onboarding__footer\">\n <div class=\"axp-welcome-onboarding__footer-start\">\n <ax-button\n look=\"twotone\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.skip-all' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"skipAll()\"\n ></ax-button>\n <ax-button\n look=\"twotone\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.remind-later' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"remindLater()\"\n ></ax-button>\n </div>\n <div class=\"axp-welcome-onboarding__footer-end\">\n <!-- ----- Previous step ----- -->\n @if (!isFirstStep()) {\n <ax-button\n look=\"blank\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.previous' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"previous()\"\n ></ax-button>\n }\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"\n (isLastStep()\n ? '@auth:welcome-onboarding.actions.finish'\n : '@auth:welcome-onboarding.actions.next'\n )\n | translate\n | async\n \"\n [disabled]=\"busy()\"\n (onClick)=\"next()\"\n ></ax-button>\n </div>\n </footer>\n }\n </div>\n }\n </div>\n</div>\n"],"names":["i1","i2","i4"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAEA,MAAM,qBAAqB,GAAG,yBAAyB;AAEvD,SAAS,iBAAiB,CAAC,KAAa,EAAA;AACtC,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE;IACxB,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;AAC5D,IAAA,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACxC,QAAA,OAAO;aACJ,KAAK,CAAC,EAAE;aACR,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI;aACzB,IAAI,CAAC,EAAE;AACP,aAAA,WAAW,EAAE;IAClB;AACA,IAAA,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACxC,QAAA,OAAO,WAAW,CAAC,WAAW,EAAE;IAClC;AACA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,QAAQ,CAAC,GAAW,EAAA;IAC3B,OAAO;AACL,QAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACpC,QAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACpC,QAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;KACrC;AACH;AAEA,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAA2B,EAAA;AACtD,IAAA,OAAO,GAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,EAAE;AAC3B;AAEA,SAAS,cAAc,CAAC,GAAW,EAAE,MAAc,EAAA;AACjD,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;IAC/B,OAAO;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC;KACnC;AACH;AAEA,SAAS,cAAc,CAAC,GAAW,EAAE,MAAc,EAAA;AACjD,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC/B,IAAA,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM;AACvB,IAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3E;AAEA,SAAS,iBAAiB,CAAC,GAAW,EAAA;AACpC,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AAC9C,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG;QAC5B,OAAO,MAAM,IAAI,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC;AACrF,IAAA,CAAC,CAAC;IACF,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC;AAC7C;AAEA,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAA2B,EAAA;IACnD,MAAM,MAAM,GAAG,CAAC,OAAe,KAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC3C,QAAQ,CAAC,EAAE;AACX,SAAA,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACrB,IAAA,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;AAC/C;AAEA,SAAS,qBAAqB,CAAC,aAAqB,EAAA;AAClD,IAAA,OAAO,iBAAiB,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ;AACtE;AAEA;;;AAGG;AACG,SAAU,+BAA+B,CAAC,UAAkB,EAAA;AAChE,IAAA,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC;IAC1B,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;IACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACtD,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpE,IAAA,MAAM,GAAG,GAAG;AACV,QAAA,4BAA4B,EAAE,WAAW,CAAC,IAAI,CAAC;AAC/C,QAAA,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAAC;AACjD,QAAA,2BAA2B,EAAE,WAAW,CAAC,QAAQ,CAAC;AAClD,QAAA,4BAA4B,EAAE,WAAW,CAAC,OAAO,CAAC;AAClD,QAAA,wCAAwC,EAAE,WAAW,CAAC,OAAO,CAAC;AAC9D,QAAA,gCAAgC,EAAE,WAAW,CAAC,IAAI,CAAC;AACnD,QAAA,mCAAmC,EAAE,WAAW,CAAC,SAAS,CAAC;AAC3D,QAAA,2CAA2C,EAAE,WAAW,CAAC,SAAS,CAAC;AACnE,QAAA,uCAAuC,EAAE,WAAW,CAAC,MAAM,CAAC;QAC5D,+CAA+C,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACxF;;AAGD,IAAA,MAAM,OAAO,GAAG;AACd,QAAA,iBAAiB,EAAE,2CAA2C;AAC9D,QAAA,oBAAoB,EAAE,8CAA8C;AACpE,QAAA,wBAAwB,EAAE,kDAAkD;AAC5E,QAAA,yBAAyB,EAAE,mDAAmD;AAC9E,QAAA,4BAA4B,EAAE,sDAAsD;AACpF,QAAA,gCAAgC,EAAE,0DAA0D;KAC7F;AAED,IAAA,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE;AAC/B;AAEA;;AAEG;AACG,SAAU,sBAAsB,CAAC,GAAW,EAAA;IAChD,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACrD;AAEM,SAAU,oBAAoB,CAAC,WAAmB,EAAA;IACtD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,SAAS;IAC/E,OAAO,CAAA,4BAAA,EAA+B,QAAQ,CAAA,IAAA,CAAM;AACtD;AAEA;;AC3HA;AAeA,MAAM,eAAe,GAAG;IACtB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACV;AAED,MAAM,WAAW,GAAG,IAAI;AAExB,SAAS,oBAAoB,GAAA;AAC3B,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAC5E,QAAA,OAAO,KAAK;IACd;IACA,OAAO,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO;AACtE;AAEA;AACM,SAAU,4BAA4B,CAAC,IAAiB,EAAA;IAC5D,IAAI,oBAAoB,EAAE,EAAE;AAC1B,QAAA,OAAO,MAAM,SAAS;IACxB;IAEA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,IAAA,MAAM,CAAC,SAAS,GAAG,yCAAyC;AAC5D,IAAA,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AAC1C,IAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAExB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IACnC,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,CAAC,MAAM,EAAE;AACf,QAAA,OAAO,MAAM,SAAS;IACxB;IAEA,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,OAAO,GAAG,IAAI;AAClB,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;IAEnC,MAAM,MAAM,GAAG,MAAW;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACzC,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK;AACpB,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM;QACtB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,IAAI;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,MAAM,IAAI;AACrC,IAAA,CAAC;AAED,IAAA,MAAM,EAAE;AACR,IAAA,MAAM,QAAQ,GAAG,MAAY,MAAM,EAAE;AACrC,IAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE3C,MAAM,MAAM,GAAoB,EAAE;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;QACjC,MAAM,CAAC,IAAI,CAAC;AACV,YAAA,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK;YACxB,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI;YACtC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YACxB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YACzB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG;YAC/B,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;YAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;YACrC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI;YAClC,KAAK,EAAE,eAAe,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,SAAS;YAC/D,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI;AACrC,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,GAAG,CAAC,GAAW,KAAU;QACjC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,GAAG,GAAG,SAAS;QAC/B,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AAElC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;AACnB,YAAA,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;AACnB,YAAA,KAAK,CAAC,EAAE,IAAI,IAAI;AAChB,YAAA,KAAK,CAAC,EAAE,IAAI,KAAK;AACjB,YAAA,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI;AAE5B,YAAA,MAAM,IAAI,GACR,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO;YAE1F,GAAG,CAAC,IAAI,EAAE;YACV,GAAG,CAAC,WAAW,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO;YACtC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/B,YAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1B,YAAA,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK;YAC3B,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1D,GAAG,CAAC,OAAO,EAAE;QACf;AAEA,QAAA,IAAI,OAAO,IAAI,WAAW,EAAE;YAC1B,OAAO,GAAG,KAAK;AACf,YAAA,OAAO,EAAE;YACT;QACF;AAEA,QAAA,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACrC,IAAA,CAAC;IAED,MAAM,OAAO,GAAG,MAAW;QACzB,OAAO,GAAG,KAAK;QACf,IAAI,KAAK,EAAE;YACT,oBAAoB,CAAC,KAAK,CAAC;QAC7B;AACA,QAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC9C,MAAM,CAAC,MAAM,EAAE;AACjB,IAAA,CAAC;AAED,IAAA,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACnC,IAAA,OAAO,OAAO;AAChB;AAEA;;ACvIA;AAEA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3E,MAAM,mBAAmB,GAAG,WAAW;AACvC,MAAM,iBAAiB,GAAG,QAAQ;AAClC,MAAM,aAAa,GAAG,+BAA+B;AAErD;AAEA;AAEM,SAAU,+BAA+B,CAAC,KAAc,EAAA;IAC5D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,mBAAmB;AAClG;AAEM,SAAU,6BAA6B,CAAC,KAAc,EAAA;AAC1D,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,iBAAiB;AAC/F;AAEA;AACA,SAAS,2BAA2B,CAAC,MAAc,EAAA;AACjD,IAAA,IAAI,MAAM,KAAK,WAAW,EAAE;QAC1B,OAAO,CAAA,WAAA,EAAc,aAAa,CAAA,CAAE;IACtC;AACA,IAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,QAAA,OAAO,+BAA+B;IACxC;AACA,IAAA,OAAO,CAAA,CAAA,EAAI,MAAM,CAAA,GAAA,EAAM,aAAa,EAAE;AACxC;AAEA,SAAS,mCAAmC,CAAC,MAAc,EAAA;AACzD,IAAA,IAAI,MAAM,KAAK,YAAY,EAAE;AAC3B,QAAA,OAAO,UAAU;IACnB;AACA,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,2BAA2B,CACzC,MAAc,EACd,QAAgB,EAAA;AAEhB,IAAA,MAAM,SAAS,GAAG,mCAAmC,CAAC,MAAM,CAAC;AAC7D,IAAA,MAAM,KAAK,GAA2B;AACpC,QAAA,UAAU,EAAE,2BAA2B,CAAC,MAAM,CAAC;QAC/C,QAAQ;KACT;IACD,IAAI,SAAS,EAAE;AACb,QAAA,KAAK,CAAC,uBAAuB,CAAC,GAAG,SAAS;IAC5C;AACA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,6BAA6B,CAAC,MAAc,EAAA;AAC1D,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC;IACF;AAEA,IAAA,MAAM,IAAI,GAAG,yBAAyB,CAAC,MAAM,CAAC;IAC9C,IAAI,CAAC,IAAI,EAAE;QACT;IACF;AAEA,IAAA,MAAM,QAAQ,GAAG,CAAA,6BAAA,EAAgC,IAAI,IAAI;IACzD,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;QACzC;IACF;IAEA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C,IAAA,IAAI,CAAC,GAAG,GAAG,YAAY;AACvB,IAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,IAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC;AACjD,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACjC;AAEM,SAAU,4BAA4B,CAAC,MAAc,EAAE,QAAgB,EAAA;AAC3E,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC;IACF;AAEA,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe;IACrC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,2BAA2B,CAAC,MAAM,CAAC;IAC3D,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,mCAAmC,CAAC,MAAM,CAAC,IAAI,EAAE;AACpF,IAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AAChC;AAEA;;AChCA;AAEA;MAmBa,qCAAqC,CAAA;AAjBlD,IAAA,WAAA,GAAA;;AAoBmB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,+BAA+B,CAAC;AACrD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACpD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;;QAM7B,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAoB,EAAE;qFAAC;QACxC,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK;8FAAC;QACjC,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,IAAI;oFAAC;QACtB,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,QAAQ;0FAAC;QAChC,IAAA,CAAA,KAAK,GAAG,MAAM,CAAsB,EAAE;kFAAC;QACvC,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,CAAC;sFAAC;QACrB,IAAA,CAAA,WAAW,GAAG,MAAM,CAA0B,EAAE;wFAAC;QACjD,IAAA,CAAA,aAAa,GAAG,MAAM,CAAuB,IAAI;0FAAC;QAClD,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,KAAK;iFAAC;QACpB,IAAA,CAAA,cAAc,GAAG,MAAM,CAAyB,EAAE;2FAAC;QACnD,IAAA,CAAA,cAAc,GAAG,MAAM,CAAyB,EAAE;2FAAC;QACnD,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAY,GAAG;gGAAC;QAC5C,IAAA,CAAA,uBAAuB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAErC,IAAA,CAAA,cAAc,GAAG,SAAS,CAA0B,gBAAgB;2FAAC;QACrE,IAAA,CAAA,YAAY,GAAG,SAAS,CAA0B,cAAc;yFAAC;QAE1E,IAAA,CAAA,cAAc,GAAgC,IAAI;QAClD,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,oBAAoB,GAAG,EAAE;QACzB,IAAA,CAAA,cAAc,GAA4B,IAAI;QAC9C,IAAA,CAAA,gBAAgB,GAAG,CAAC;QACpB,IAAA,CAAA,qBAAqB,GAAyB,IAAI;QAClD,IAAA,CAAA,YAAY,GAAwB,IAAI;;;AAM7B,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;QAC5B,CAAC;wFAAC;QAEiB,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;wFAAC;AAEpD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;QAChE,CAAC;uFAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAgC;AACvE,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;YAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACjC,gBAAA,OAAO,SAAS;YAClB;YACA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC;QAC/C,CAAC;uFAAC;AAEiB,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CACjD,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,oBAAoB;kGACtD;AAEkB,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CACjD,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,oBAAoB;kGACtD;AAEkB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,gBAAgB;8FAAC;AAE/E,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAa;AAClE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;AACtD,YAAA,MAAM,SAAS,GAAG,MAAM,EAAE;kBACtB,0BAA0B,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI;kBACrD,EAAE;AACN,YAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,gBAAA,OAAO,SAAS;YAClB;YACA,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YACjC,IAAI,IAAI,EAAE;AACR,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE;QAC7B,CAAC;qGAAC;AAEiB,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAa;AACtD,YAAA,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;AAC5B,gBAAA,KAAK,eAAe;AAClB,oBAAA,OAAO,4BAA4B;AACrC,gBAAA,KAAK,oBAAoB;AACvB,oBAAA,OAAO,qBAAqB;AAC9B,gBAAA,KAAK,oBAAoB;AACvB,oBAAA,OAAO,2BAA2B;AACpC,gBAAA,KAAK,oBAAoB;AACvB,oBAAA,OAAO,kBAAkB;AAC3B,gBAAA,KAAK,gBAAgB;AACnB,oBAAA,OAAO,kBAAkB;AAC3B,gBAAA,KAAK,iBAAiB;AACpB,oBAAA,OAAO,0BAA0B;AACnC,gBAAA;AACE,oBAAA,OAAO,sBAAsB;;QAEnC,CAAC;yFAAC;QAEiB,IAAA,CAAA,gBAAgB,GAAG,mBAAmB;AAEtC,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACjE,YAAA,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,SAAS;QAChF,CAAC;+FAAC;AAEiB,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC3D,YAAA,IAAI,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;AAC9B,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,IAAI,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE;AAC/B,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE;QACjC,CAAC;gGAAC;AAEiB,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACrD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACtC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAA,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;gBAC5C,IAAI,CAAC,CAAC,CAAC;AACT,YAAA,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM;AAC5B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAEzC,YAAA,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,SAAS;AAC5C,YAAA,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,SAAS;AAChD,YAAA,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,SAAS,IAAI,SAAS;AAC7D,YAAA,MAAM,YAAY,GAAG,MAAM,EAAE,KAAK,IAAI,SAAS;AAC/C,YAAA,MAAM,WAAW,GAAG,MAAM,EAAE,IAAI,IAAI,SAAS;YAC7C,MAAM,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,YAAY;YAEnD,OAAO;gBACL,GAAG,+BAA+B,CAAC,OAAO,CAAC;AAC3C,gBAAA,+BAA+B,EAAE,OAAO;AACxC,gBAAA,iCAAiC,EAAE,SAAS;AAC5C,gBAAA,+BAA+B,EAAE,OAAO;AACxC,gBAAA,8BAA8B,EAAE,MAAM;AACtC,gBAAA,6BAA6B,EAAE;sBAC3B,CAAA,mBAAA,EAAsB,OAAO,CAAA,eAAA;AAC/B,sBAAE,SAAS;AACb,gBAAA,4BAA4B,EAAE;sBAC1B,CAAA,mBAAA,EAAsB,OAAO,CAAA,gBAAA;AAC/B,sBAAE,SAAS;gBACb,4BAA4B,EAAE,MAAM,GAAG,SAAS,GAAG,CAAA,mBAAA,EAAsB,OAAO,CAAA,YAAA,CAAc;gBAC9F,6BAA6B,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;AAC7D,gBAAA,8BAA8B,EAAE;sBAC5B,CAAA,mBAAA,EAAsB,OAAO,CAAA,gBAAA;AAC/B,sBAAE,SAAS;AACb,gBAAA,+BAA+B,EAAE;AAC/B,sBAAE,CAAA,mBAAA,EAAsB,MAAM,CAAA,MAAA,EAAS,OAAO,CAAA,KAAA;sBAC5C,CAAA,mBAAA,EAAsB,MAAM,CAAA,gBAAA,CAAkB;AAClD,gBAAA,6BAA6B,EAAE;AAC7B,sBAAE,CAAA,mBAAA,EAAsB,SAAS,CAAA,MAAA,EAAS,OAAO,CAAA,KAAA;sBAC/C,CAAA,mBAAA,EAAsB,SAAS,CAAA,gBAAA,CAAkB;AACrD,gBAAA,yBAAyB,EAAE;sBACvB,CAAA,mBAAA,EAAsB,OAAO,CAAA,eAAA;AAC/B,sBAAE,CAAA,mBAAA,EAAsB,YAAY,CAAA,MAAA,EAAS,MAAM,CAAA,KAAA,CAAO;aAC7D;QACH,CAAC;gGAAC;AAEiB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC9C,+BAA+B,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;8FAChF;AAEkB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAC5C,6BAA6B,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;4FAClF;AAEkB,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MACnD,2BAA2B,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;mGAC9E;AAEkB,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,OAAO;YACpD,GAAG,IAAI,CAAC,mBAAmB,EAAE;YAC7B,GAAG,IAAI,CAAC,sBAAsB,EAAE;SACjC,CAAC;6FAAC;;AAIc,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,MAAK;AACtD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,WAAW,EAAE;gBACvC;YACF;AACA,YAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,OAAO,EAAE;gBAC1C;YACF;YAEA,cAAc,CAAC,MAAK;gBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;gBAC/C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,qBAAqB,KAAK,WAAW,EAAE;oBACvD;gBACF;AACA,gBAAA,IAAI,CAAC,qBAAqB,GAAG,OAAO;AACpC,gBAAA,IAAI,CAAC,YAAY,IAAI;AACrB,gBAAA,IAAI,CAAC,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC;AACxD,YAAA,CAAC,CAAC;QACJ,CAAC;qGAAC;;;AAMe,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,MAAK;AACrD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;YACnC,6BAA6B,CAAC,MAAM,CAAC;AACrC,YAAA,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC;QAC5C,CAAC;oGAAC;;;AAMe,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,MAAK;AACjD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,gBAAgB;YACrC,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC;QAC7C,CAAC;gGAAC;;;AAMe,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,MAAK;AACrD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,oBAAoB,EAAE;gBACrC;YACF;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,gBAAA,IAAI,CAAC,oBAAoB,GAAG,GAAG;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;gBACjC;YACF;AAEA,YAAA,IAAI,CAAC,oBAAoB,GAAG,GAAG;AAC/B,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,EAAE;AACtC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;gBACjC;YACF;AAEA,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;QACnC,CAAC;oGAAC;;AAIiB,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,eAAe,CAAC;AACvE,YAAA,OAAO,KAAK,KAAK,kBAAkB,CAAC,UAAU;QAChD,CAAC;kGAAC;AAEiB,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;AACxE,YAAA,OAAO,KAAK,KAAK,mBAAmB,CAAC,OAAO;QAC9C,CAAC;+FAAC;AAEiB,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;YACxE,OAAO,KAAK,KAAK,QAAQ;QAC3B,CAAC;iGAAC;AA4QH,IAAA;AA1QC,IAAA,IAAc,IAAI,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI;IACjC;;;AAMA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC;AAEzC,QAAA,IAAI,CAAC,SAAS;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG;AACtD,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM;AAE3D,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE3C,IAAI,CAAC,6BAA6B,EAAE;AAEpC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,YAAY,IAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,KAAK,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAErC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACxD,gBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC;YAC/D;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,IAAI,CAAC,SAAS,EAAE;IACxB;;;AAMQ,IAAA,MAAM,oBAAoB,CAAC,WAAmB,EAAE,KAAa,EAAA;AACnE,QAAA,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,MAAM,CAChD,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAC9E;QAED,IAAI,OAAO,GAAkB,IAAI;AACjC,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,YAAA,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACxD,gBAAA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACf,oBAAA,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;oBAC/B;gBACF;YACF;AAAE,YAAA,MAAM;;YAER;QACF;QAEA,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE;YAC/C;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,iCAAiC,EAAE,EAAE,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QAChD;QAEA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,iCAAiC,EAAE,WAAW,CAAC;QAChF,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC;IACnE;;;AAMU,IAAA,mBAAmB,CAAC,IAA6B,EAAA;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa;AACjD,QAAA,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QACA,MAAM,aAAa,GAAG,MAAW;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC5B,QAAA,CAAC;QACD,cAAc,CAAC,aAAa,CAAC;QAC7B,qBAAqB,CAAC,aAAa,CAAC;IACtC;IAEU,MAAM,QAAQ,CAAC,KAAa,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;QACzB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC;QAC/D;IACF;AAEU,IAAA,MAAM,QAAQ,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC;AAEU,IAAA,MAAM,IAAI,GAAA;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YAChD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1D,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;YAEvE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;AACtC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;YAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;YACxC,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;YACnE;QACF;gBAAU;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACF;AAEU,IAAA,MAAM,OAAO,GAAA;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACvC;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1D,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;AAC9E,YAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;AACnC,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE;QAC7B;gBAAU;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACF;AAEU,IAAA,MAAM,WAAW,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACf;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1D,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;AACvC,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE;QAC7B;gBAAU;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACF;AAEU,IAAA,MAAM,cAAc,GAAA;QAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE;QACzE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;IAC1C;AAEU,IAAA,MAAM,cAAc,GAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB;AAEU,IAAA,iBAAiB,CAAC,IAA8B,EAAA;QACxD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,mDAAmD;QAC5D;AACA,QAAA,OAAO,CAAA,kCAAA,EAAqC,IAAI,CAAC,EAAE,EAAE;IACvD;;;IAMQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;YAC5E;QACF;QAEA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC;QAC/D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAEzC,QAAA,MAAM,QAAQ,GAAG,CAAC,KAA0B,KAAI;YAC9C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3C,QAAA,CAAC;AAED,QAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChF;AAEQ,IAAA,MAAM,SAAS,GAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI;AACF,YAAA,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;YACpE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,EAAE;gBACvD,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC;YACxD;YACA,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,IAAI,CAAC,cAAc,EAAE;gBAC3B;YACF;AAEA,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE;AAClE,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;YAEjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;YACzD,IAAI,UAAU,GAAG,CAAC;AAClB,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,EAAE;AAC3C,gBAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;YACtF;AAAO,iBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBACzB,UAAU,GAAG,CAAC;YAChB;iBAAO;AACL,gBAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAC3D,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,EACf,QAAQ,CACT;YACH;AAEA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YAC5C,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YACjE;QACF;gBAAU;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB;IACF;IAEQ,MAAM,QAAQ,CAAC,MAAmB,EAAA;QACxC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACvC;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAE1D,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;YAC/B,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;YACzE;AAEA,YAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;QAChC;gBAAU;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACF;8GAxiBW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,6UC5ElD,kofAwUA,EAAA,MAAA,EAAA,CAAA,wj3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxQI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,eAAe,8KACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,sBAAsB,wIACtB,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKjB,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAjBjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAAA,OAAA,EAGnC;wBACP,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;wBAChB,sBAAsB;wBACtB,0BAA0B;AAC3B,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,kofAAA,EAAA,MAAA,EAAA,CAAA,wj3BAAA,CAAA,EAAA;AAmCgC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,gBAAgB,sEAClB,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;"}
1
+ {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding-page.component-DcVVR1Zp.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-palette-scope.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-confetti.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-typography-preview.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-page.component.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-page.component.html"],"sourcesContent":["//#region ----- Scoped palette CSS -----\n\nconst WELCOME_PALETTE_SCOPE = '.axp-welcome-onboarding';\n\nfunction normalizeHexColor(value: string): string | undefined {\n const raw = value.trim();\n const withoutHash = raw.startsWith('#') ? raw.slice(1) : raw;\n if (/^[0-9a-fA-F]{3}$/.test(withoutHash)) {\n return withoutHash\n .split('')\n .map((char) => char + char)\n .join('')\n .toLowerCase();\n }\n if (/^[0-9a-fA-F]{6}$/.test(withoutHash)) {\n return withoutHash.toLowerCase();\n }\n return undefined;\n}\n\nfunction hexToRgb(hex: string): [number, number, number] {\n return [\n Number.parseInt(hex.slice(0, 2), 16),\n Number.parseInt(hex.slice(2, 4), 16),\n Number.parseInt(hex.slice(4, 6), 16),\n ];\n}\n\nfunction rgbChannels([r, g, b]: [number, number, number]): string {\n return `${r}, ${g}, ${b}`;\n}\n\nfunction mixTowardWhite(hex: string, amount: number): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n return [\n Math.round(r + (255 - r) * amount),\n Math.round(g + (255 - g) * amount),\n Math.round(b + (255 - b) * amount),\n ];\n}\n\nfunction mixTowardBlack(hex: string, amount: number): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n const keep = 1 - amount;\n return [Math.round(r * keep), Math.round(g * keep), Math.round(b * keep)];\n}\n\nfunction relativeLuminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex).map((channel) => {\n const scaled = channel / 255;\n return scaled <= 0.03928 ? scaled / 12.92 : Math.pow((scaled + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\nfunction rgbToHex([r, g, b]: [number, number, number]): string {\n const toByte = (channel: number) =>\n Math.max(0, Math.min(255, Math.round(channel)))\n .toString(16)\n .padStart(2, '0');\n return `${toByte(r)}${toByte(g)}${toByte(b)}`;\n}\n\nfunction contrastForegroundHex(backgroundHex: string): string {\n return relativeLuminance(backgroundHex) > 0.55 ? '171717' : 'ffffff';\n}\n\n/**\n * Maps palette primary hex to ax-sys primary tokens so ax-button and theme choosers\n * inside the welcome host follow the preview palette (not the global app theme).\n */\nexport function buildWelcomePaletteSysColorVars(primaryHex: string): Record<string, string> {\n const hex = normalizeHexColor(primaryHex);\n if (!hex) {\n return {};\n }\n\n const base = hexToRgb(hex);\n const lighter = mixTowardWhite(hex, 0.78);\n const lightest = mixTowardWhite(hex, 0.9);\n const darker = mixTowardBlack(hex, 0.14);\n const border = mixTowardBlack(hex, 0.1);\n const onPrimary = hexToRgb(contrastForegroundHex(hex));\n const onLighter = hexToRgb(contrastForegroundHex(rgbToHex(lighter)));\n\n const sys = {\n '--ax-sys-color-primary-500': rgbChannels(base),\n '--ax-sys-color-primary-600': rgbChannels(darker),\n '--ax-sys-color-primary-50': rgbChannels(lightest),\n '--ax-sys-color-primary-100': rgbChannels(lighter),\n '--ax-sys-color-primary-lighter-surface': rgbChannels(lighter),\n '--ax-sys-color-primary-surface': rgbChannels(base),\n '--ax-sys-color-on-primary-surface': rgbChannels(onPrimary),\n '--ax-sys-color-on-primary-lighter-surface': rgbChannels(onLighter),\n '--ax-sys-color-border-primary-surface': rgbChannels(border),\n '--ax-sys-color-border-primary-lighter-surface': rgbChannels(mixTowardWhite(hex, 0.45)),\n };\n\n /* ax-primary / primary-lighter-surface read --color-* aliases (often bound on :root). */\n const aliases = {\n '--color-primary': 'rgba(var(--ax-sys-color-primary-surface))',\n '--color-on-primary': 'rgba(var(--ax-sys-color-on-primary-surface))',\n '--color-border-primary': 'rgba(var(--ax-sys-color-border-primary-surface))',\n '--color-primary-lighter': 'rgba(var(--ax-sys-color-primary-lighter-surface))',\n '--color-on-primary-lighter': 'rgba(var(--ax-sys-color-on-primary-lighter-surface))',\n '--color-border-primary-lighter': 'rgba(var(--ax-sys-color-border-primary-lighter-surface))',\n };\n\n return { ...sys, ...aliases };\n}\n\n/**\n * Rewrites palette asset selectors so tokens apply under the welcome page host only.\n */\nexport function scopeWelcomePaletteCss(css: string): string {\n return css.replace(/:root/g, WELCOME_PALETTE_SCOPE);\n}\n\nexport function welcomePaletteCssUrl(paletteName: string): string {\n const safeName = paletteName.trim().length > 0 ? paletteName.trim() : 'default';\n return `/assets/themes/palettes/css/${safeName}.css`;\n}\n\n//#endregion\n","//#region ----- Welcome confetti (canvas, no external package) -----\n\ntype ConfettiPiece = {\n x: number;\n y: number;\n w: number;\n h: number;\n vx: number;\n vy: number;\n rotation: number;\n spin: number;\n color: string;\n opacity: number;\n};\n\nconst CONFETTI_COLORS = [\n '#7c3aed',\n '#2563eb',\n '#0d9488',\n '#eab308',\n '#f97316',\n '#ec4899',\n '#22c55e',\n];\n\nconst DURATION_MS = 4200;\n\nfunction prefersReducedMotion(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** Runs a one-shot top-to-bottom confetti burst inside `host`. Returns a cleanup function. */\nexport function runWelcomeOnboardingConfetti(host: HTMLElement): () => void {\n if (prefersReducedMotion()) {\n return () => undefined;\n }\n\n const canvas = document.createElement('canvas');\n canvas.className = 'axp-welcome-onboarding__confetti-canvas';\n canvas.setAttribute('aria-hidden', 'true');\n host.appendChild(canvas);\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n canvas.remove();\n return () => undefined;\n }\n\n let width = 0;\n let height = 0;\n let rafId = 0;\n let running = true;\n const startedAt = performance.now();\n\n const resize = (): void => {\n const rect = host.getBoundingClientRect();\n width = Math.max(1, Math.floor(rect.width));\n height = Math.max(1, Math.floor(rect.height));\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n };\n\n resize();\n const onResize = (): void => resize();\n window.addEventListener('resize', onResize);\n\n const pieces: ConfettiPiece[] = [];\n const count = Math.min(160, Math.max(80, Math.floor(width / 6)));\n for (let i = 0; i < count; i += 1) {\n pieces.push({\n x: Math.random() * width,\n y: -20 - Math.random() * height * 0.35,\n w: 6 + Math.random() * 6,\n h: 10 + Math.random() * 8,\n vx: (Math.random() - 0.5) * 2.4,\n vy: 2.2 + Math.random() * 3.8,\n rotation: Math.random() * Math.PI * 2,\n spin: (Math.random() - 0.5) * 0.18,\n color: CONFETTI_COLORS[i % CONFETTI_COLORS.length] ?? '#7c3aed',\n opacity: 0.85 + Math.random() * 0.15,\n });\n }\n\n const tick = (now: number): void => {\n if (!running) {\n return;\n }\n\n const elapsed = now - startedAt;\n ctx.clearRect(0, 0, width, height);\n\n for (const piece of pieces) {\n piece.x += piece.vx;\n piece.y += piece.vy;\n piece.vy += 0.06;\n piece.vx *= 0.995;\n piece.rotation += piece.spin;\n\n const fade =\n elapsed > DURATION_MS - 900 ? Math.max(0, (DURATION_MS - elapsed) / 900) : piece.opacity;\n\n ctx.save();\n ctx.globalAlpha = fade * piece.opacity;\n ctx.translate(piece.x, piece.y);\n ctx.rotate(piece.rotation);\n ctx.fillStyle = piece.color;\n ctx.fillRect(-piece.w / 2, -piece.h / 2, piece.w, piece.h);\n ctx.restore();\n }\n\n if (elapsed >= DURATION_MS) {\n running = false;\n cleanup();\n return;\n }\n\n rafId = requestAnimationFrame(tick);\n };\n\n const cleanup = (): void => {\n running = false;\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n window.removeEventListener('resize', onResize);\n canvas.remove();\n };\n\n rafId = requestAnimationFrame(tick);\n return cleanup;\n}\n\n//#endregion\n","import { getRegionalFontStylesheet } from '@acorex-platform/framework-client/themes/shared';\n\n//#region ----- Constants -----\n\nconst FONT_SIZE_KEYWORDS = new Set(['small', 'medium', 'large', 'x-large']);\nconst DEFAULT_FONT_FAMILY = 'system-ui';\nconst DEFAULT_FONT_SIZE = 'medium';\nconst FONT_FALLBACK = 'Tahoma, system-ui, sans-serif';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function resolveWelcomePreviewFontFamily(value: unknown): string {\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : DEFAULT_FONT_FAMILY;\n}\n\nexport function resolveWelcomePreviewFontSize(value: unknown): string {\n return typeof value === 'string' && FONT_SIZE_KEYWORDS.has(value) ? value : DEFAULT_FONT_SIZE;\n}\n\n/** Same CSS family contract as theme.service (`resolveFontCssFamily`). */\nfunction resolveWelcomeFontCssFamily(fontId: string): string {\n if (fontId === 'system-ui') {\n return `system-ui, ${FONT_FALLBACK}`;\n }\n if (fontId === 'tahoma') {\n return 'Tahoma, system-ui, sans-serif';\n }\n return `\"${fontId}\", ${FONT_FALLBACK}`;\n}\n\nfunction resolveWelcomeFontVariationSettings(fontId: string): string | undefined {\n if (fontId === 'iranyekanx') {\n return '\"dots\" 1';\n }\n return undefined;\n}\n\nexport function buildWelcomeTypographyStyle(\n fontId: string,\n fontSize: string,\n): Record<string, string> {\n const variation = resolveWelcomeFontVariationSettings(fontId);\n const style: Record<string, string> = {\n fontFamily: resolveWelcomeFontCssFamily(fontId),\n fontSize,\n };\n if (variation) {\n style['fontVariationSettings'] = variation;\n }\n return style;\n}\n\nexport function ensureWelcomeFontStylesLoaded(fontId: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const href = getRegionalFontStylesheet(fontId);\n if (!href) {\n return;\n }\n\n const selector = `link[data-axp-regional-font=\"${href}\"]`;\n if (document.head.querySelector(selector)) {\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.setAttribute('data-axp-regional-font', href);\n document.head.appendChild(link);\n}\n\nexport function applyWelcomeTypographyToHtml(fontId: string, fontSize: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const html = document.documentElement;\n html.style.fontFamily = resolveWelcomeFontCssFamily(fontId);\n html.style.fontVariationSettings = resolveWelcomeFontVariationSettings(fontId) ?? '';\n html.style.fontSize = fontSize;\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPHomePageService, AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';\nimport { AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPUserAvatarComponent } from '@acorex-platform/framework-client/layout/components';\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_THEME_PALETTE_PROVIDER,\n AXPLayoutThemeService,\n AXPMenuOrientation,\n AXPMenuVerticalMode,\n AXPThemeLayoutSetting,\n AXPThemeMode,\n type AXPThemePalette,\n} from '@acorex-platform/framework-client/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnInit,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n signal,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport type { AXPOnboardingContext, AXPOnboardingStep } from '../../../onboarding/onboarding.types';\nimport { AXPOnboardingProgressService } from '../../../onboarding/onboarding-progress.service';\nimport { AXPWelcomeOnboardingFlowService } from '../../../onboarding/welcome-onboarding-flow.service';\nimport {\n buildWelcomePaletteSysColorVars,\n scopeWelcomePaletteCss,\n welcomePaletteCssUrl,\n} from './welcome-onboarding-palette-scope.util';\nimport { runWelcomeOnboardingConfetti } from './welcome-onboarding-confetti.util';\nimport {\n applyWelcomeTypographyToHtml,\n buildWelcomeTypographyStyle,\n ensureWelcomeFontStylesLoaded,\n resolveWelcomePreviewFontFamily,\n resolveWelcomePreviewFontSize,\n} from './welcome-onboarding-typography-preview.util';\n\n//#region ----- Types -----\n\ntype WelcomeFinishOutcome = 'completed' | 'skipped' | 'deferred' | null;\n\n//#endregion\n\n//#region ----- Welcome onboarding page -----\n\n@Component({\n selector: 'axp-auth-welcome-onboarding-page',\n templateUrl: './welcome-onboarding-page.component.html',\n styleUrls: ['./welcome-onboarding-page.component.css'],\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXPLogoComponent,\n AXPUserAvatarComponent,\n AXPLayoutRendererComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAuthWelcomeOnboardingPageComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly flowService = inject(AXPWelcomeOnboardingFlowService);\n private readonly progressService = inject(AXPOnboardingProgressService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly homePageService = inject(AXPHomePageService);\n private readonly platformBranding = inject(AXPPlatformBrandingService);\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly paletteProvider = inject(AXP_THEME_PALETTE_PROVIDER);\n private readonly themeService = inject(AXPLayoutThemeService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly palettes = signal<AXPThemePalette[]>([]);\n protected readonly systemPrefersDark = signal(false);\n protected readonly loading = signal(true);\n protected readonly platformTitle = signal('ACoreX');\n protected readonly steps = signal<AXPOnboardingStep[]>([]);\n protected readonly stepIndex = signal(0);\n protected readonly formContext = signal<Record<string, unknown>>({});\n protected readonly finishOutcome = signal<WelcomeFinishOutcome>(null);\n protected readonly busy = signal(false);\n protected readonly backdropLayerA = signal<Record<string, string>>({});\n protected readonly backdropLayerB = signal<Record<string, string>>({});\n protected readonly activeBackdropLayer = signal<'a' | 'b'>('a');\n protected readonly previewTaskSkeletonRows = [0, 1, 2];\n\n private readonly formScrollHost = viewChild<ElementRef<HTMLElement>>('formScrollHost');\n private readonly confettiHost = viewChild<ElementRef<HTMLElement>>('confettiHost');\n\n private sessionContext: AXPOnboardingContext | null = null;\n private forcePlan = false;\n private backdropCrossfadeKey = '';\n private paletteStyleEl: HTMLStyleElement | null = null;\n private paletteLoadToken = 0;\n private confettiRanForOutcome: WelcomeFinishOutcome = null;\n private stopConfetti: (() => void) | null = null;\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly currentStep = computed(() => {\n const list = this.steps();\n const index = this.stepIndex();\n return list[index] ?? null;\n });\n\n protected readonly isFirstStep = computed(() => this.stepIndex() === 0);\n\n protected readonly isLastStep = computed(() => {\n const list = this.steps();\n return list.length > 0 && this.stepIndex() === list.length - 1;\n });\n\n protected readonly stepLayout = computed((): AXPWidgetNode | undefined => {\n const step = this.currentStep();\n if (!step || this.finishOutcome()) {\n return undefined;\n }\n return this.flowService.buildStepLayout(step);\n });\n\n protected readonly showAppearancePreview = computed(\n () => this.currentStep()?.id === 'welcome-appearance',\n );\n\n protected readonly showTypographyPreview = computed(\n () => this.currentStep()?.id === 'welcome-typography',\n );\n\n protected readonly showProfileAvatar = computed(() => this.currentStep()?.id === 'profile-basics');\n\n protected readonly previewOrganizationTitle = computed((): string => {\n const tenant = this.sessionService.tenant;\n const locale = this.translationService.getActiveLang();\n const fromTitle = tenant?.title\n ? resolveMultiLanguageString(tenant.title, locale).trim()\n : '';\n if (fromTitle.length > 0) {\n return fromTitle;\n }\n const name = tenant?.name?.trim();\n if (name) {\n return name;\n }\n return this.platformTitle();\n });\n\n protected readonly orbIconClass = computed((): string => {\n switch (this.currentStep()?.id) {\n case 'welcome-intro':\n return 'fa-solid fa-earth-americas';\n case 'welcome-appearance':\n return 'fa-solid fa-palette';\n case 'welcome-navigation':\n return 'fa-solid fa-table-columns';\n case 'welcome-typography':\n return 'fa-solid fa-font';\n case 'profile-basics':\n return 'fa-solid fa-user';\n case 'whs-orientation':\n return 'fa-solid fa-shield-check';\n default:\n return 'fa-solid fa-sparkles';\n }\n });\n\n protected readonly doneOrbIconClass = 'fa-solid fa-check';\n\n protected readonly previewPaletteName = computed(() => {\n const palette = this.formContext()[AXPThemeLayoutSetting.Palette];\n return typeof palette === 'string' && palette.length > 0 ? palette : 'default';\n });\n\n protected readonly previewResolvedDark = computed(() => {\n const mode = this.formContext()[AXPThemeLayoutSetting.Mode];\n if (mode === AXPThemeMode.Dark) {\n return true;\n }\n if (mode === AXPThemeMode.Light) {\n return false;\n }\n return this.systemPrefersDark();\n });\n\n protected readonly previewSurfaceStyle = computed(() => {\n const name = this.previewPaletteName();\n const list = this.palettes();\n const match =\n list.find((item) => item.name === name) ??\n list.find((item) => item.name === 'default') ??\n list[0];\n const colors = match?.colors;\n const isDark = this.previewResolvedDark();\n\n const primary = colors?.primary ?? '#237f6a';\n const secondary = colors?.secondary ?? '#4b9e8f';\n const accent = colors?.accents?.[0] ?? secondary ?? '#7fc6b5';\n const lightSurface = colors?.light ?? '#f2f5f7';\n const darkSurface = colors?.dark ?? '#1a1f1e';\n const surface = isDark ? darkSurface : lightSurface;\n\n return {\n ...buildWelcomePaletteSysColorVars(primary),\n '--axp-welcome-preview-primary': primary,\n '--axp-welcome-preview-secondary': secondary,\n '--axp-welcome-preview-surface': surface,\n '--axp-welcome-preview-accent': accent,\n '--axp-welcome-preview-panel': isDark\n ? `color-mix(in srgb, ${surface} 88%, white 6%)`\n : '#ffffff',\n '--axp-welcome-preview-card': isDark\n ? `color-mix(in srgb, ${surface} 72%, white 12%)`\n : '#ffffff',\n '--axp-welcome-preview-text': isDark ? '#e3eee9' : `color-mix(in srgb, ${primary} 70%, black)`,\n '--axp-welcome-preview-muted': isDark ? '#b5c7bf' : '#64736f',\n '--axp-welcome-preview-border': isDark\n ? `color-mix(in srgb, ${surface} 55%, white 14%)`\n : '#fdfdfd',\n '--axp-welcome-page-glow-start': isDark\n ? `color-mix(in srgb, ${accent} 38%, ${surface} 62%)`\n : `color-mix(in srgb, ${accent} 52%, white 48%)`,\n '--axp-welcome-page-glow-end': isDark\n ? `color-mix(in srgb, ${secondary} 42%, ${surface} 58%)`\n : `color-mix(in srgb, ${secondary} 38%, white 62%)`,\n '--axp-welcome-page-base': isDark\n ? `color-mix(in srgb, ${surface} 94%, black 6%)`\n : `color-mix(in srgb, ${lightSurface} 86%, ${accent} 14%)`,\n };\n });\n\n protected readonly previewFontFamily = computed(() =>\n resolveWelcomePreviewFontFamily(this.formContext()[AXPThemeLayoutSetting.Font]),\n );\n\n protected readonly previewFontSize = computed(() =>\n resolveWelcomePreviewFontSize(this.formContext()[AXPThemeLayoutSetting.FontSize]),\n );\n\n protected readonly previewTypographyStyle = computed(() =>\n buildWelcomeTypographyStyle(this.previewFontFamily(), this.previewFontSize()),\n );\n\n protected readonly previewHostStyle = computed(() => ({\n ...this.previewSurfaceStyle(),\n ...this.previewTypographyStyle(),\n }));\n\n //#region ----- Confetti (completion) -----\n\n private readonly completionConfettiEffect = effect(() => {\n const outcome = this.finishOutcome();\n if (!outcome || outcome !== 'completed') {\n return;\n }\n if (this.confettiRanForOutcome === outcome) {\n return;\n }\n\n queueMicrotask(() => {\n const host = this.confettiHost()?.nativeElement;\n if (!host || this.confettiRanForOutcome === 'completed') {\n return;\n }\n this.confettiRanForOutcome = outcome;\n this.stopConfetti?.();\n this.stopConfetti = runWelcomeOnboardingConfetti(host);\n });\n });\n\n //#endregion\n\n //#region ----- Live typography (font + size) -----\n\n private readonly typographyPreviewEffect = effect(() => {\n if (this.loading()) {\n return;\n }\n\n const family = this.previewFontFamily();\n const size = this.previewFontSize();\n ensureWelcomeFontStylesLoaded(family);\n applyWelcomeTypographyToHtml(family, size);\n });\n\n //#endregion\n\n //#region ----- Scoped palette (buttons + surfaces) -----\n\n private readonly scopedPaletteEffect = effect(() => {\n const name = this.previewPaletteName();\n const token = ++this.paletteLoadToken;\n void this.loadScopedPaletteCss(name, token);\n });\n\n //#endregion\n\n //#region ----- Backdrop crossfade -----\n\n private readonly backdropCrossfadeEffect = effect(() => {\n const style = this.previewSurfaceStyle();\n const key = JSON.stringify(style);\n if (key === this.backdropCrossfadeKey) {\n return;\n }\n\n if (!this.backdropCrossfadeKey) {\n this.backdropCrossfadeKey = key;\n this.backdropLayerA.set(style);\n this.backdropLayerB.set(style);\n this.activeBackdropLayer.set('a');\n return;\n }\n\n this.backdropCrossfadeKey = key;\n if (this.activeBackdropLayer() === 'a') {\n this.backdropLayerB.set(style);\n this.activeBackdropLayer.set('b');\n return;\n }\n\n this.backdropLayerA.set(style);\n this.activeBackdropLayer.set('a');\n });\n\n //#endregion\n\n protected readonly previewMenuHorizontal = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.MenuOrientation];\n return value === AXPMenuOrientation.Horizontal;\n });\n\n protected readonly previewMenuCompact = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.MenuVerticalMode];\n return value === AXPMenuVerticalMode.Compact;\n });\n\n protected readonly previewHeaderColored = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.HeaderAppearance];\n return value !== 'simple';\n });\n\n protected get user() {\n return this.sessionService.user;\n }\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n async ngOnInit(): Promise<void> {\n const title = await this.platformBranding.resolvePlatformTitle().catch(() => '');\n this.platformTitle.set(title || 'ACoreX');\n\n this.forcePlan =\n this.route.snapshot.queryParamMap.get('force') === '1' ||\n this.route.snapshot.queryParamMap.get('force') === 'true';\n\n const provider = await this.paletteProvider;\n this.palettes.set(await provider.getList());\n\n this.bindSystemColorSchemeListener();\n\n this.destroyRef.onDestroy(() => {\n this.paletteStyleEl?.remove();\n this.paletteStyleEl = null;\n this.stopConfetti?.();\n this.stopConfetti = null;\n void this.themeService.loadSettings();\n\n const step = this.currentStep();\n if (step && this.sessionContext && !this.finishOutcome()) {\n this.flowService.setResumeState(this.sessionContext, step.id);\n }\n });\n\n await this.bootstrap();\n }\n\n //#endregion\n\n //#region ----- Palette CSS loading -----\n\n private async loadScopedPaletteCss(paletteName: string, token: number): Promise<void> {\n const candidates = [paletteName, 'default'].filter(\n (name, index, list) => name.trim().length > 0 && list.indexOf(name) === index,\n );\n\n let cssText: string | null = null;\n for (const name of candidates) {\n try {\n const response = await fetch(welcomePaletteCssUrl(name));\n if (response.ok) {\n cssText = await response.text();\n break;\n }\n } catch {\n /* try next candidate */\n }\n }\n\n if (token !== this.paletteLoadToken || !cssText) {\n return;\n }\n\n if (!this.paletteStyleEl) {\n this.paletteStyleEl = document.createElement('style');\n this.paletteStyleEl.setAttribute('data-welcome-onboarding-palette', '');\n document.head.appendChild(this.paletteStyleEl);\n }\n\n this.paletteStyleEl.setAttribute('data-welcome-onboarding-palette', paletteName);\n this.paletteStyleEl.textContent = scopeWelcomePaletteCss(cssText);\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onFormContextChange(next: Record<string, unknown>): void {\n const host = this.formScrollHost()?.nativeElement;\n const scrollTop = host?.scrollTop ?? 0;\n this.formContext.set(next);\n if (!host) {\n return;\n }\n const restoreScroll = (): void => {\n host.scrollTop = scrollTop;\n };\n queueMicrotask(restoreScroll);\n requestAnimationFrame(restoreScroll);\n }\n\n protected async goToStep(index: number): Promise<void> {\n const list = this.steps();\n if (index < 0 || index >= list.length) {\n return;\n }\n this.stepIndex.set(index);\n const step = list[index];\n if (step && this.sessionContext) {\n this.flowService.setResumeState(this.sessionContext, step.id);\n }\n }\n\n protected async previous(): Promise<void> {\n if (this.isFirstStep()) {\n return;\n }\n this.stepIndex.update((i) => i - 1);\n }\n\n protected async next(): Promise<void> {\n const step = this.currentStep();\n if (!step || !this.sessionContext || this.busy()) {\n return;\n }\n\n if (this.isLastStep()) {\n await this.complete('completed');\n return;\n }\n\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.markStep(step, this.sessionContext, 'completed');\n\n const nextIndex = this.stepIndex() + 1;\n this.stepIndex.set(nextIndex);\n\n const nextStep = this.steps()[nextIndex];\n if (nextStep) {\n this.flowService.setResumeState(this.sessionContext, nextStep.id);\n }\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async skipAll(): Promise<void> {\n if (this.busy() || !this.sessionContext) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.markSteps(this.steps(), this.sessionContext, 'skipped');\n this.flowService.clearResumeState();\n await this.enterWorkspace();\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async remindLater(): Promise<void> {\n if (this.busy()) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.setRemindLater();\n await this.enterWorkspace();\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async enterWorkspace(): Promise<void> {\n const urlTree = await this.homePageService.resolveAuthorizedHomeUrlTree();\n await this.router.navigateByUrl(urlTree);\n }\n\n protected async reviewSettings(): Promise<void> {\n this.finishOutcome.set(null);\n this.stepIndex.set(0);\n }\n\n protected stepArtCaptionKey(step: AXPOnboardingStep | null): string {\n if (!step) {\n return '@auth:welcome-onboarding.page.art.default-caption';\n }\n return `@auth:welcome-onboarding.page.art.${step.id}`;\n }\n\n //#endregion\n\n //#region ----- Private logic -----\n\n private bindSystemColorSchemeListener(): void {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n this.systemPrefersDark.set(media.matches);\n\n const onChange = (event: MediaQueryListEvent) => {\n this.systemPrefersDark.set(event.matches);\n };\n\n media.addEventListener('change', onChange);\n this.destroyRef.onDestroy(() => media.removeEventListener('change', onChange));\n }\n\n private async bootstrap(): Promise<void> {\n this.loading.set(true);\n try {\n let pending = await this.flowService.evaluatePending(this.forcePlan);\n if (!pending && this.flowService.hasActiveResumeState()) {\n pending = await this.flowService.evaluatePending(true);\n }\n if (!pending) {\n await this.enterWorkspace();\n return;\n }\n\n this.sessionContext = pending.context;\n this.steps.set(pending.steps);\n const preferences = await this.flowService.loadPreferenceContext();\n this.formContext.set(preferences);\n\n const progress = await this.progressService.getProgress();\n let startIndex = 0;\n if (this.flowService.hasActiveResumeState()) {\n startIndex = this.flowService.resolveResumeStepIndex(pending.context, pending.steps);\n } else if (this.forcePlan) {\n startIndex = 0;\n } else {\n startIndex = this.flowService.resolveFirstIncompleteStepIndex(\n pending.steps,\n pending.context,\n progress,\n );\n }\n\n this.stepIndex.set(startIndex);\n const resumeStep = pending.steps[startIndex];\n if (resumeStep) {\n this.flowService.setResumeState(pending.context, resumeStep.id);\n }\n } finally {\n this.loading.set(false);\n }\n }\n\n private async complete(status: 'completed'): Promise<void> {\n if (this.busy() || !this.sessionContext) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n\n const step = this.currentStep();\n if (step) {\n await this.flowService.markStep(step, this.sessionContext, 'completed');\n }\n\n this.flowService.clearResumeState();\n this.finishOutcome.set(status);\n } finally {\n this.busy.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<div\n class=\"axp-welcome-onboarding\"\n [class.ax-light]=\"!previewResolvedDark()\"\n [class.ax-dark]=\"previewResolvedDark()\"\n [ngStyle]=\"previewHostStyle()\"\n>\n <div class=\"axp-welcome-onboarding__backdrop-stack\" aria-hidden=\"true\">\n <div\n class=\"axp-welcome-onboarding__backdrop\"\n [class.axp-welcome-onboarding__backdrop--active]=\"activeBackdropLayer() === 'a'\"\n [ngStyle]=\"backdropLayerA()\"\n ></div>\n <div\n class=\"axp-welcome-onboarding__backdrop\"\n [class.axp-welcome-onboarding__backdrop--active]=\"activeBackdropLayer() === 'b'\"\n [ngStyle]=\"backdropLayerB()\"\n ></div>\n </div>\n\n <div class=\"axp-welcome-onboarding__content\" #confettiHost>\n <!-- ----- Full-page loading state ----- -->\n @if (loading()) {\n <div class=\"axp-welcome-onboarding__loading\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Main onboarding shell ----- -->\n @else {\n <div\n class=\"axp-welcome-onboarding__shell\"\n [class.axp-welcome-onboarding__shell--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__shell--typography]=\"showTypographyPreview()\"\n [ngStyle]=\"previewHostStyle()\"\n >\n <header class=\"axp-welcome-onboarding__header\">\n <div class=\"axp-welcome-onboarding__brand\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"220\"\n [attr.alt]=\"platformTitle()\"\n ></axp-logo>\n </div>\n <div class=\"axp-welcome-onboarding__step-counter\">\n <!-- ----- Step counter in the header ----- -->\n @if (!finishOutcome() && currentStep(); as step) {\n <span>\n {{\n '@auth:welcome-onboarding.page.step-counter'\n | translate: { params: { current: stepIndex() + 1, total: steps().length } }\n | async\n }}\n · {{ step.title | translate | async }}\n </span>\n }\n <!-- ----- Ready message after completion ----- -->\n @else if (finishOutcome()) {\n {{ '@auth:welcome-onboarding.page.ready-counter' | translate | async }}\n }\n </div>\n </header>\n\n <main class=\"axp-welcome-onboarding__main\">\n <!-- ----- Completion screen ----- -->\n @if (finishOutcome(); as outcome) {\n <section class=\"axp-welcome-onboarding__done axp-welcome-onboarding__animate\">\n <div\n class=\"axp-welcome-onboarding__orb axp-welcome-onboarding__done-orb\"\n [ngStyle]=\"previewSurfaceStyle()\"\n aria-hidden=\"true\"\n >\n <i class=\"axp-welcome-onboarding__orb-icon\" [class]=\"doneOrbIconClass\"></i>\n </div>\n <h1 class=\"axp-welcome-onboarding__title\">\n {{\n ('@auth:welcome-onboarding.page.done.' + outcome + '.title') | translate | async\n }}\n </h1>\n <p class=\"axp-welcome-onboarding__lead\">\n {{\n ('@auth:welcome-onboarding.page.done.' + outcome + '.description') | translate | async\n }}\n </p>\n <div class=\"axp-welcome-onboarding__done-actions\">\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@auth:welcome-onboarding.page.actions.enter-workspace' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"enterWorkspace()\"\n ></ax-button>\n <!-- ----- Review settings after skip or defer ----- -->\n @if (outcome !== 'completed') {\n <ax-button\n look=\"outline\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.page.actions.review-settings' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"reviewSettings()\"\n ></ax-button>\n }\n </div>\n </section>\n }\n <!-- ----- Active step: form + art panel ----- -->\n @else {\n <section\n #formScrollHost\n class=\"axp-welcome-onboarding__form axp-welcome-onboarding__animate\"\n [class.axp-welcome-onboarding__form--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__form--typography]=\"showTypographyPreview()\"\n [class.axp-welcome-onboarding__form--menu-horizontal]=\"\n showAppearancePreview() && previewMenuHorizontal()\n \"\n >\n <!-- ----- Step form content when a step is active ----- -->\n @if (currentStep(); as step) {\n <h1 class=\"axp-welcome-onboarding__title\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.headline') | translate | async }}\n </h1>\n <p class=\"axp-welcome-onboarding__lead\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.lead') | translate | async }}\n </p>\n\n <!-- ----- Profile avatar on profile basics step ----- -->\n @if (showProfileAvatar()) {\n <div class=\"axp-welcome-onboarding__profile-row\">\n <axp-user-avatar\n [size]=\"74\"\n [userId]=\"user?.id!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n }\n\n @if (stepLayout(); as layout) {\n <axp-layout-renderer\n class=\"axp-welcome-onboarding__fields\"\n [layout]=\"layout\"\n [context]=\"formContext()\"\n (contextChange)=\"onFormContextChange($event)\"\n ></axp-layout-renderer>\n }\n\n <p class=\"axp-welcome-onboarding__notice\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.notice') | translate | async }}\n </p>\n }\n </section>\n\n <aside\n class=\"axp-welcome-onboarding__art axp-welcome-onboarding__animate\"\n [class.axp-welcome-onboarding__art--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__art--typography]=\"showTypographyPreview()\"\n [ngStyle]=\"previewHostStyle()\"\n aria-hidden=\"false\"\n >\n <div class=\"axp-welcome-onboarding__art-inner\">\n <div class=\"axp-welcome-onboarding__art-visual\">\n <!-- ----- Theme preview on appearance step ----- -->\n @if (showAppearancePreview()) {\n <div\n class=\"axp-welcome-onboarding__preview\"\n [class.axp-welcome-onboarding__preview--dark]=\"previewResolvedDark()\"\n [ngStyle]=\"previewSurfaceStyle()\"\n >\n <div\n class=\"axp-welcome-onboarding__preview-head\"\n [class.axp-welcome-onboarding__preview-head--colored]=\"previewHeaderColored()\"\n >\n ● ● ● &nbsp;&nbsp; {{ previewOrganizationTitle() }}\n </div>\n <div\n class=\"axp-welcome-onboarding__preview-body\"\n [class.axp-welcome-onboarding__preview-body--horizontal]=\"previewMenuHorizontal()\"\n >\n <!-- ----- Horizontal root menu skeleton ----- -->\n @if (previewMenuHorizontal()) {\n <div class=\"axp-welcome-onboarding__preview-hmenu\">\n <span class=\"axp-welcome-onboarding__preview-hmenu-brand\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item axp-welcome-onboarding__preview-hmenu-item--short\"></span>\n </div>\n }\n <!-- ----- Vertical root menu skeleton ----- -->\n @else {\n <div\n class=\"axp-welcome-onboarding__preview-sidebar\"\n [class.axp-welcome-onboarding__preview-sidebar--compact]=\"previewMenuCompact()\"\n ></div>\n }\n <div class=\"axp-welcome-onboarding__preview-blocks\">\n <strong>{{ previewOrganizationTitle() }}</strong>\n <div class=\"axp-welcome-onboarding__preview-dashboard\">\n <div class=\"axp-welcome-onboarding__preview-widget-row\">\n <div class=\"axp-welcome-onboarding__preview-widget axp-welcome-onboarding__preview-widget--clock\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--clock\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-lg\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-sm\"></span>\n </div>\n <div class=\"axp-welcome-onboarding__preview-mini-cards\">\n <span class=\"axp-welcome-onboarding__preview-mini-card\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--dot\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n <span class=\"axp-welcome-onboarding__preview-mini-card\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--dot\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n <span class=\"axp-welcome-onboarding__preview-mini-card axp-welcome-onboarding__preview-mini-card--wide\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n </div>\n </div>\n <div class=\"axp-welcome-onboarding__preview-tasks\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--title\"></span>\n @for (row of previewTaskSkeletonRows; track row) {\n <div class=\"axp-welcome-onboarding__preview-task-row\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--check\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line\"></span>\n </div>\n }\n </div>\n <div class=\"axp-welcome-onboarding__preview-chart\"></div>\n </div>\n </div>\n </div>\n </div>\n }\n <!-- ----- Live type specimen on typography step ----- -->\n @else if (showTypographyPreview()) {\n <div\n class=\"axp-welcome-onboarding__type-preview\"\n [ngStyle]=\"previewHostStyle()\"\n >\n <span class=\"axp-welcome-onboarding__type-preview-sample\">\n {{ '@auth:welcome-onboarding.page.typography-preview.sample' | translate | async }}\n </span>\n <strong class=\"axp-welcome-onboarding__type-preview-heading\">\n {{ '@auth:welcome-onboarding.page.typography-preview.heading' | translate | async }}\n </strong>\n <p class=\"axp-welcome-onboarding__type-preview-body\">\n {{ '@auth:welcome-onboarding.page.typography-preview.body' | translate | async }}\n </p>\n </div>\n }\n <!-- ----- Decorative orb on other steps ----- -->\n @else {\n <div class=\"axp-welcome-onboarding__orb\" [ngStyle]=\"previewSurfaceStyle()\">\n <i class=\"axp-welcome-onboarding__orb-icon\" [class]=\"orbIconClass()\" aria-hidden=\"true\"></i>\n </div>\n }\n </div>\n\n <div class=\"axp-welcome-onboarding__art-caption\">\n <strong>{{ stepArtCaptionKey(currentStep()) | translate | async }}</strong>\n </div>\n\n <div class=\"axp-welcome-onboarding__dots\" role=\"tablist\">\n @for (step of steps(); track step.id; let i = $index) {\n <button\n type=\"button\"\n class=\"axp-welcome-onboarding__dot\"\n [class.axp-welcome-onboarding__dot--on]=\"stepIndex() === i\"\n [attr.aria-label]=\"step.title | translate | async\"\n [attr.aria-selected]=\"stepIndex() === i\"\n (click)=\"goToStep(i)\"\n ></button>\n }\n </div>\n </div>\n </aside>\n }\n </main>\n\n <!-- ----- Footer actions while steps are active ----- -->\n @if (!finishOutcome()) {\n <footer class=\"axp-welcome-onboarding__footer\">\n <div class=\"axp-welcome-onboarding__footer-start\">\n <ax-button\n look=\"twotone\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.skip-all' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"skipAll()\"\n ></ax-button>\n <ax-button\n look=\"twotone\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.remind-later' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"remindLater()\"\n ></ax-button>\n </div>\n <div class=\"axp-welcome-onboarding__footer-end\">\n <!-- ----- Previous step ----- -->\n @if (!isFirstStep()) {\n <ax-button\n look=\"blank\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.previous' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"previous()\"\n ></ax-button>\n }\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"\n (isLastStep()\n ? '@auth:welcome-onboarding.actions.finish'\n : '@auth:welcome-onboarding.actions.next'\n )\n | translate\n | async\n \"\n [disabled]=\"busy()\"\n (onClick)=\"next()\"\n ></ax-button>\n </div>\n </footer>\n }\n </div>\n }\n </div>\n</div>\n"],"names":["i1","i2","i4"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { AXTranslationService } from '@acorex/core/translation';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, Injectable } from '@angular/core';
6
6
  import { Router } from '@angular/router';
7
- import { u as AXPWelcomeOnboardingFlowService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-Dgo6MzxI.mjs';
7
+ import { u as AXPWelcomeOnboardingFlowService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-CWE43xt1.mjs';
8
8
 
9
9
  //#endregion
10
10
  //#region ----- Welcome onboarding command -----
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
56
56
  }] });
57
57
 
58
58
  export { AXPWelcomeOnboardingCommand };
59
- //# sourceMappingURL=acorex-platform-module-auth-client-welcome-onboarding.command-D8cyXb5q.mjs.map
59
+ //# sourceMappingURL=acorex-platform-module-auth-client-welcome-onboarding.command-BpZt3m22.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding.command-D8cyXb5q.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/welcome-onboarding.command.ts"],"sourcesContent":["import { AXPHomePageService } from '@acorex-platform/framework-client/common';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AXPWelcomeOnboardingFlowService } from '../onboarding/welcome-onboarding-flow.service';\n\n//#region ----- Types -----\n\ntype WelcomeOnboardingCommandOptions = {\n force?: boolean;\n};\n\ntype WelcomeDialogOutcome = {\n outcome: 'finished' | 'skipped' | 'snoozed' | 'cancelled' | 'all-set' | 'navigated';\n};\n\n//#endregion\n\n//#region ----- Welcome onboarding command -----\n\n/** Navigates to the full-page welcome onboarding flow (replaces the legacy dialog). */\n@Injectable({ providedIn: 'root' })\nexport class AXPWelcomeOnboardingCommand\n implements AXPCommand<WelcomeOnboardingCommandOptions | undefined, WelcomeDialogOutcome>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly router = inject(Router);\n private readonly flowService = inject(AXPWelcomeOnboardingFlowService);\n private readonly homePageService = inject(AXPHomePageService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Command -----\n\n async execute(\n options?: WelcomeOnboardingCommandOptions,\n ): AXPCommandExecuteResultPromise<WelcomeDialogOutcome> {\n if (!this.flowService.resolveContext()) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.not-ready',\n ),\n },\n };\n }\n\n const force = options?.force === true;\n const pending = await this.flowService.evaluatePending(force);\n\n if (!pending) {\n if (force) {\n const title = await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.all-set.title',\n );\n const content = await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.all-set.description',\n );\n this.toastService.show({ color: 'success', title, content });\n return { success: true, kind: 'object', data: { outcome: 'all-set' } };\n }\n\n const urlTree = await this.homePageService.resolveAuthorizedHomeUrlTree();\n await this.router.navigateByUrl(urlTree);\n return { success: true, kind: 'object', data: { outcome: 'navigated' } };\n }\n\n await this.router.navigate(['/auth/account/welcome-onboarding'], {\n queryParams: force ? { force: '1' } : {},\n });\n\n return { success: true, kind: 'object', data: { outcome: 'navigated' } };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;;AAkBA;AAEA;AAEA;MAEa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,+BAA+B,CAAC;AACrD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAgDjE,IAAA;;;IA1CC,MAAM,OAAO,CACX,OAAyC,EAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE;YACtC,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC9C,6CAA6C,CAC9C;AACF,iBAAA;aACF;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,KAAK,IAAI;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC;QAE7D,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,KAAK,EAAE;gBACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACtD,iDAAiD,CAClD;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACxD,uDAAuD,CACxD;AACD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5D,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YACxE;YAEA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE;YACzE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AACxC,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;QAC1E;QAEA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kCAAkC,CAAC,EAAE;AAC/D,YAAA,WAAW,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AACzC,SAAA,CAAC;AAEF,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC1E;8GAtDW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
1
+ {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding.command-BpZt3m22.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/welcome-onboarding.command.ts"],"sourcesContent":["import { AXPHomePageService } from '@acorex-platform/framework-client/common';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AXPWelcomeOnboardingFlowService } from '../onboarding/welcome-onboarding-flow.service';\n\n//#region ----- Types -----\n\ntype WelcomeOnboardingCommandOptions = {\n force?: boolean;\n};\n\ntype WelcomeDialogOutcome = {\n outcome: 'finished' | 'skipped' | 'snoozed' | 'cancelled' | 'all-set' | 'navigated';\n};\n\n//#endregion\n\n//#region ----- Welcome onboarding command -----\n\n/** Navigates to the full-page welcome onboarding flow (replaces the legacy dialog). */\n@Injectable({ providedIn: 'root' })\nexport class AXPWelcomeOnboardingCommand\n implements AXPCommand<WelcomeOnboardingCommandOptions | undefined, WelcomeDialogOutcome>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly router = inject(Router);\n private readonly flowService = inject(AXPWelcomeOnboardingFlowService);\n private readonly homePageService = inject(AXPHomePageService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Command -----\n\n async execute(\n options?: WelcomeOnboardingCommandOptions,\n ): AXPCommandExecuteResultPromise<WelcomeDialogOutcome> {\n if (!this.flowService.resolveContext()) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.not-ready',\n ),\n },\n };\n }\n\n const force = options?.force === true;\n const pending = await this.flowService.evaluatePending(force);\n\n if (!pending) {\n if (force) {\n const title = await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.all-set.title',\n );\n const content = await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.all-set.description',\n );\n this.toastService.show({ color: 'success', title, content });\n return { success: true, kind: 'object', data: { outcome: 'all-set' } };\n }\n\n const urlTree = await this.homePageService.resolveAuthorizedHomeUrlTree();\n await this.router.navigateByUrl(urlTree);\n return { success: true, kind: 'object', data: { outcome: 'navigated' } };\n }\n\n await this.router.navigate(['/auth/account/welcome-onboarding'], {\n queryParams: force ? { force: '1' } : {},\n });\n\n return { success: true, kind: 'object', data: { outcome: 'navigated' } };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;;AAkBA;AAEA;AAEA;MAEa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,+BAA+B,CAAC;AACrD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAgDjE,IAAA;;;IA1CC,MAAM,OAAO,CACX,OAAyC,EAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE;YACtC,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC9C,6CAA6C,CAC9C;AACF,iBAAA;aACF;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,KAAK,IAAI;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC;QAE7D,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,KAAK,EAAE;gBACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACtD,iDAAiD,CAClD;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACxD,uDAAuD,CACxD;AACD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5D,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YACxE;YAEA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE;YACzE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AACxC,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;QAC1E;QAEA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kCAAkC,CAAC,EAAE;AAC/D,YAAA,WAAW,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AACzC,SAAA,CAAC;AAEF,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC1E;8GAtDW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -1,2 +1,2 @@
1
- export { H as AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, I as AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS, J as AUTH_USER_ACTIVITY_DEFAULT_WEEKS, K as AUTH_USER_ACTIVITY_WEEK_PRESETS, L as AXMAuthErrorHandler, M as AXMAuthModule, x as AXMAuthPlatformSettingsService, G as AXMAuthenticationTypes, N as AXMDefaultAuthConfigs, O as AXM_AUTH_CONFIG_TOKEN, w as AXM_LOGIN_GUARD_TOKEN, Q as AXPAuthMasterLayoutComponent, m as AXPAuthPasswordChangeTrackingService, j as AXPIdleLockService, F as AXPLoginExternalProvidersComponent, t as AXPLoginHistoryService, k as AXPUserAvatarSyncService, R as ONBOARDING_STEPS_HOOK, S as ONBOARDING_WELCOME_SETTING_KEY, P as PROFILE_PAGE_GROUPS_HOOK, b as PROFILE_PAGE_HEADER_META_HOOK, a as PROFILE_PAGE_SECTIONS_HOOK, U as PROFILE_SLOT_MENU_ITEMS_HOOK, V as aggregateDailySessionCounts, W as aggregateHourlySessionCounts, i as buildUserActivityDataSourceItem, X as buildUserActivityHours, Y as buildUserActivityWeeks, Z as canActivateLogin, _ as computeUserActivityStats, $ as configAuthModule, a0 as countToActivityLevel, a1 as extractUserActivityEndDate, a2 as extractUserActivityStartDate, a3 as extractUserActivityUserId, E as formatCompactActivityCount, a4 as hasProfileSlotMenuBreakAfter, a5 as hasProfileSlotMenuBreakBefore, a6 as isUserProfileGroupComponent, a7 as isUserProfileSectionsGroupRequested, a8 as parseAuthCredentialType, a9 as resolveDayDateRange, g as resolveDefaultUserActivityDateRange, r as resolveDefaultUserProfileSectionAction, h as resolveSmartUserActivityDateRange, aa as resolveUserActivityHeatmapLayout, c as resolveUserProfileSectionContent, v as visibleUserProfileSectionActions } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-Dgo6MzxI.mjs';
1
+ export { H as AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, I as AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS, J as AUTH_USER_ACTIVITY_DEFAULT_WEEKS, K as AUTH_USER_ACTIVITY_WEEK_PRESETS, L as AXMAuthErrorHandler, M as AXMAuthModule, x as AXMAuthPlatformSettingsService, G as AXMAuthenticationTypes, N as AXMDefaultAuthConfigs, O as AXM_AUTH_CONFIG_TOKEN, w as AXM_LOGIN_GUARD_TOKEN, Q as AXPAuthMasterLayoutComponent, m as AXPAuthPasswordChangeTrackingService, j as AXPIdleLockService, F as AXPLoginExternalProvidersComponent, t as AXPLoginHistoryService, k as AXPUserAvatarSyncService, R as ONBOARDING_STEPS_HOOK, S as ONBOARDING_WELCOME_SETTING_KEY, P as PROFILE_PAGE_GROUPS_HOOK, b as PROFILE_PAGE_HEADER_META_HOOK, a as PROFILE_PAGE_SECTIONS_HOOK, U as PROFILE_SLOT_MENU_ITEMS_HOOK, V as aggregateDailySessionCounts, W as aggregateHourlySessionCounts, i as buildUserActivityDataSourceItem, X as buildUserActivityHours, Y as buildUserActivityWeeks, Z as canActivateLogin, _ as computeUserActivityStats, $ as configAuthModule, a0 as countToActivityLevel, a1 as extractUserActivityEndDate, a2 as extractUserActivityStartDate, a3 as extractUserActivityUserId, E as formatCompactActivityCount, a4 as hasProfileSlotMenuBreakAfter, a5 as hasProfileSlotMenuBreakBefore, a6 as isUserProfileGroupComponent, a7 as isUserProfileSectionsGroupRequested, a8 as parseAuthCredentialType, a9 as resolveDayDateRange, g as resolveDefaultUserActivityDateRange, r as resolveDefaultUserProfileSectionAction, h as resolveSmartUserActivityDateRange, aa as resolveUserActivityHeatmapLayout, c as resolveUserProfileSectionContent, v as visibleUserProfileSectionActions } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-CWE43xt1.mjs';
2
2
  //# sourceMappingURL=acorex-platform-module-auth-client.mjs.map
@@ -775,7 +775,8 @@
775
775
  "description": "Please select your application and continue",
776
776
  "footer": "Did you change your mind?",
777
777
  "backCompany": "Choose another Company",
778
- "select-placeholder": "Select an application"
778
+ "select-placeholder": "Select an application",
779
+ "open-failed": "Could not open this application. Please try again."
779
780
  },
780
781
  "twofactor": {
781
782
  "title": "Two-Factor Verification",
@@ -775,7 +775,8 @@
775
775
  "description": "Please select your application and continue",
776
776
  "footer": "Did you change your mind?",
777
777
  "backCompany": "Choose another Company",
778
- "select-placeholder": "Select an application"
778
+ "select-placeholder": "Select an application",
779
+ "open-failed": "Could not open this application. Please try again."
779
780
  },
780
781
  "twofactor": {
781
782
  "title": "Two-Factor Verification",
@@ -775,7 +775,8 @@
775
775
  "description": "لطفاً برنامه خود را انتخاب کنید و ادامه دهید",
776
776
  "footer": "نظرتان تغییر کرد؟",
777
777
  "backCompany": "انتخاب شرکت دیگر",
778
- "select-placeholder": "انتخاب برنامه"
778
+ "select-placeholder": "انتخاب برنامه",
779
+ "open-failed": "باز کردن این برنامه ممکن نشد. لطفاً دوباره تلاش کنید."
779
780
  },
780
781
  "twofactor": {
781
782
  "title": "تأیید دو مرحله‌ای",
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-auth-client",
3
- "version": "2.0.0-next.0",
3
+ "version": "2.0.0-next.1",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@acorex-platform/module-security-management-client": "2.0.0-next.0",
7
- "@acorex-platform/module-tenant-management-client": "2.0.0-next.0",
6
+ "@acorex-platform/module-security-management-client": "2.0.0-next.1",
7
+ "@acorex-platform/module-tenant-management-client": "2.0.0-next.1",
8
8
  "@angular/common": "^21.0.0 || ^22.0.0",
9
9
  "@angular/core": "^21.0.0 || ^22.0.0"
10
10
  },