@masterteam/work-center 0.0.24 → 0.0.25
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-work-center.mjs","sources":["../../../../packages/masterteam/work-center/src/lib/work-center-client-form-modal/work-center-client-form-modal.ts","../../../../packages/masterteam/work-center/src/lib/work-center-client-form-modal/work-center-client-form-modal.html","../../../../packages/masterteam/work-center/src/store/work-center/work-center.actions.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.model.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.helpers.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.facade.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-types.helpers.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-module-type/work-center-module-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-module-type/work-center-module-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview/work-center-process-preview.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview/work-center-process-preview.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-request-type/work-center-process-request-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-request-type/work-center-process-request-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-step-type/work-center-process-step-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-step-type/work-center-process-step-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-item-modal.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-item-modal.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-footer-actions/work-center-item-modal-footer-actions.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-footer-actions/work-center-item-modal-footer-actions.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-route.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-route.html","../../../../packages/masterteam/work-center/src/store/app.state.ts","../../../../packages/masterteam/work-center/src/masterteam-work-center.ts"],"sourcesContent":["import {\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { DrawerController } from '@masterteam/components/dynamic-drawer';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport {\r\n ClientForm,\r\n ClientLookup,\r\n ProcessFormSubmitResponse,\r\n} from '@masterteam/forms/client-form';\r\n\r\nimport { WorkCenterClientFormModalData } from '../../store/work-center/work-center.model';\r\n\r\n@Component({\r\n selector: 'mt-work-center-client-form-modal',\r\n standalone: true,\r\n imports: [Button, TranslocoDirective, ClientForm],\r\n templateUrl: './work-center-client-form-modal.html',\r\n})\r\nexport class WorkCenterClientFormModal {\r\n readonly modal = inject(ModalService);\r\n readonly ref = inject(ModalRef);\r\n readonly drawerController = inject(DrawerController, { optional: true });\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly processForm = viewChild.required(ClientForm);\r\n readonly data = input.required<WorkCenterClientFormModalData>();\r\n readonly operationKey = input<string>('Create');\r\n readonly lookups = input<ClientLookup[]>([]);\r\n\r\n readonly moduleKey = computed(() => this.data().moduleKey);\r\n readonly moduleId = computed(() => this.toNumber(this.data().moduleId));\r\n readonly levelId = computed(() => this.toNumber(this.data().levelId));\r\n readonly levelDataId = computed(() => this.toNumber(this.data().levelDataId));\r\n readonly moduleDataId = computed(() =>\r\n this.toNumber(this.data().moduleDataId),\r\n );\r\n readonly formMode = computed<'create' | 'edit'>(() =>\r\n this.moduleDataId() != null ||\r\n this.operationKey().trim().toLowerCase() === 'update'\r\n ? 'edit'\r\n : 'create',\r\n );\r\n\r\n readonly validationMessage = signal<string | null>(null);\r\n readonly submitError = signal<string | null>(null);\r\n readonly isSubmitting = signal(false);\r\n readonly submitStatus = signal<'pending' | 'executed' | null>(null);\r\n\r\n onSubmit(): void {\r\n this.validationMessage.set(null);\r\n this.submitError.set(null);\r\n this.submitStatus.set(null);\r\n\r\n if (!this.processForm().isValid()) {\r\n this.validationMessage.set(\r\n this.transloco.translate<string>(\r\n 'workCenter.validation.fillRequiredFields',\r\n ),\r\n );\r\n return;\r\n }\r\n\r\n this.isSubmitting.set(true);\r\n this.processForm().submit();\r\n }\r\n\r\n onSubmitted(response: ProcessFormSubmitResponse): void {\r\n this.isSubmitting.set(false);\r\n this.submitError.set(null);\r\n\r\n const status =\r\n response.status === 'PendingApproval' ? 'pending' : 'executed';\r\n this.submitStatus.set(status);\r\n\r\n if (status === 'executed') {\r\n this.ref.close(true);\r\n }\r\n }\r\n\r\n onErrored(error: string): void {\r\n this.isSubmitting.set(false);\r\n this.submitError.set(\r\n error ??\r\n this.transloco.translate<string>('workCenter.error.failedSubmit'),\r\n );\r\n }\r\n\r\n private toNumber(value: unknown): number | undefined {\r\n if (typeof value === 'number' && Number.isFinite(value)) {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim() !== '') {\r\n const parsed = Number(value);\r\n if (Number.isFinite(parsed)) {\r\n return parsed;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n <div [class]=\"modal.contentClass + ' p-5 flex flex-col gap-4'\">\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [operationKey]=\"operationKey()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [formMode]=\"formMode()\"\r\n [autoLoad]=\"true\"\r\n [lookups]=\"lookups()\"\r\n (submitted)=\"onSubmitted($event)\"\r\n (errored)=\"onErrored($event)\"\r\n />\r\n\r\n @if (isSubmitting()) {\r\n <div class=\"text-sm text-muted-color\">{{ t(\"modal.submitting\") }}</div>\r\n }\r\n\r\n @if (validationMessage()) {\r\n <div\r\n class=\"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3 text-sm text-amber-700\"\r\n role=\"alert\"\r\n >\r\n {{ validationMessage() }}\r\n </div>\r\n }\r\n\r\n @if (submitError()) {\r\n <div\r\n class=\"mt-2 rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700\"\r\n role=\"alert\"\r\n >\r\n {{ submitError() }}\r\n </div>\r\n }\r\n\r\n @if (submitStatus(); as status) {\r\n <div\r\n class=\"mt-2 rounded-lg border p-3 text-sm\"\r\n [class]=\"\r\n status === 'pending'\r\n ? 'border-amber-200 bg-amber-50 text-amber-700'\r\n : 'border-emerald-200 bg-emerald-50 text-emerald-700'\r\n \"\r\n >\r\n @if (status === \"pending\") {\r\n {{ t(\"modal.requestSubmitted\") }}\r\n } @else {\r\n {{ t(\"modal.operationExecuted\") }}\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"t('modal.submit')\"\r\n icon=\"general.check\"\r\n [disabled]=\"isSubmitting()\"\r\n (onClick)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import {\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\r\n WorkCenterLookups,\r\n} from './work-center.model';\r\n\r\nexport class EnterArea {\r\n static readonly type = '[WorkCenter] Enter Area';\r\n\r\n constructor(public area: WorkCenterArea) {}\r\n}\r\n\r\nexport class HydrateFromContext {\r\n static readonly type = '[WorkCenter] Hydrate From Context';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public patch: WorkCenterHydratePatch,\r\n ) {}\r\n}\r\n\r\nexport class SetParams {\r\n static readonly type = '[WorkCenter] Set Params';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public inputs: WorkCenterBootstrapInputs,\r\n ) {}\r\n}\r\n\r\nexport class SetLookups {\r\n static readonly type = '[WorkCenter] Set Lookups';\r\n\r\n constructor(public lookups: WorkCenterLookups) {}\r\n}\r\n\r\nexport class LoadRuntime {\r\n static readonly type = '[WorkCenter] Load Runtime';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public reason: WorkCenterLoadReason = 'manual',\r\n ) {}\r\n}\r\n","import type { LoadingStateShape } from '@masterteam/components';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport type { ClientLookup } from '@masterteam/forms/client-form';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\nimport { Type } from '@angular/core';\r\n\r\nexport type WorkCenterArea = 'MyInbox' | 'TasksCenter';\r\nexport type WorkCenterItemContextKey = string;\r\nexport type WorkCenterLookups = ClientLookup[];\r\n\r\nexport enum WorkCenterActionKey {\r\n LoadRuntime = 'loadRuntime',\r\n}\r\n\r\nexport const WORK_CENTER_QUERY_VERSION = 1;\r\nexport const WORK_CENTER_MAX_PAGE_SIZE = 100;\r\nexport const WORK_CENTER_MAX_FILTERS = 20;\r\nexport const WORK_CENTER_MAX_SORT = 5;\r\n\r\nexport interface ApiEnvelope<T> {\r\n endpoint: string | null;\r\n status: number;\r\n code: 1 | 2;\r\n locale: string | null;\r\n message: string | null;\r\n errors: unknown;\r\n data: T;\r\n cacheSession: string | null;\r\n}\r\n\r\nexport interface TranslatableDto {\r\n display: string;\r\n en: string;\r\n ar: string;\r\n}\r\n\r\nexport interface WorkCenterSortRule {\r\n field: string;\r\n dir: 'asc' | 'desc';\r\n}\r\n\r\nexport type WorkCenterFilterOperator =\r\n | 'Eq'\r\n | 'Neq'\r\n | 'In'\r\n | 'Contains'\r\n | 'StartsWith'\r\n | 'Gt'\r\n | 'Gte'\r\n | 'Lt'\r\n | 'Lte'\r\n | 'Between'\r\n | 'IsNull'\r\n | 'IsNotNull';\r\n\r\nexport interface WorkCenterFilterRule {\r\n field: string;\r\n op: WorkCenterFilterOperator;\r\n value?: unknown;\r\n values?: unknown[];\r\n from?: unknown;\r\n to?: unknown;\r\n}\r\n\r\nexport interface WorkCenterRuntimeProperty {\r\n id?: number;\r\n key: string;\r\n normalizedKey?: string;\r\n name?: TranslatableDto;\r\n description?: TranslatableDto;\r\n viewType?: string;\r\n}\r\n\r\nexport interface WorkCenterRuntimeOperatorOption {\r\n value: WorkCenterFilterOperator;\r\n display?: TranslatableDto;\r\n}\r\n\r\nexport interface WorkCenterRuntimeFilterSchema {\r\n properties?: WorkCenterRuntimeProperty[];\r\n allowedFields?: string[];\r\n allowedOperators: Array<\r\n WorkCenterFilterOperator | WorkCenterRuntimeOperatorOption\r\n >;\r\n}\r\n\r\nexport interface WorkCenterColumnsConfig {\r\n columns?: string[];\r\n properties?: WorkCenterRuntimeProperty[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeRequest {\r\n area: WorkCenterArea;\r\n templateId?: number | null;\r\n selectedCardKey?: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeCard {\r\n key: string;\r\n name: TranslatableDto;\r\n icon: string | null;\r\n urlTemplate?: string | null;\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n count: number;\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeStatsItem {\r\n key: string;\r\n label: TranslatableDto;\r\n count: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimePagination {\r\n page: number;\r\n pageSize: number;\r\n totalCount: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimeSelectedCard {\r\n key: string;\r\n pagination: WorkCenterRuntimePagination;\r\n stats: WorkCenterRuntimeStatsItem[];\r\n items: Record<string, unknown>[];\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeWarningDto {\r\n code: string;\r\n message: string;\r\n cardKey: string | null;\r\n source: string | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeResponseData {\r\n area: WorkCenterArea;\r\n cards: WorkCenterRuntimeCard[];\r\n selectedCard: WorkCenterRuntimeSelectedCard | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterItemBasicInfoData {\r\n cardKey: string | null;\r\n sourceType: string | null;\r\n type: string | null;\r\n item: Record<string, unknown> | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeItemAction {\r\n actionKey: string;\r\n actionName?: TranslatableDto | null;\r\n httpMethod?: string | null;\r\n url?: string | null;\r\n isAvailable?: boolean;\r\n afterSuccess?: WorkCenterItemActionAfterSuccess | null;\r\n stepIds?: Array<number | string>;\r\n needConfirmation?: boolean;\r\n payloadKeys?: string[];\r\n requiredPayloadKeys?: string[];\r\n payloadTemplate?: Record<string, unknown> | null;\r\n formId?: string | number | null;\r\n}\r\n\r\nexport type WorkCenterItemActionAfterSuccess = 'refresh' | 'close';\r\n\r\nexport interface WorkCenterItemActionExecutionResult {\r\n actionKey: string;\r\n afterSuccess: WorkCenterItemActionAfterSuccess;\r\n}\r\n\r\nexport interface WorkCenterItemActionsData {\r\n cardKey: string | null;\r\n sourceType: string | null;\r\n type: string | null;\r\n context: Record<string, unknown> | null;\r\n actions: WorkCenterRuntimeItemAction[];\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterContext {\r\n area: WorkCenterArea;\r\n templateId: number | null;\r\n selectedCardKey: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterAreaState {\r\n context: WorkCenterContext;\r\n menuItems: ClientPageMenuItem[];\r\n rows: Record<string, unknown>[];\r\n columns: ColumnDef[];\r\n kpis: StatisticCardData[];\r\n runtimeFilterSchema: WorkCenterRuntimeFilterSchema | null;\r\n totalCount: number;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n lastLoadedAt: string | null;\r\n}\r\n\r\nexport interface WorkCenterStateModel extends LoadingStateShape<WorkCenterActionKey> {\r\n activeArea: WorkCenterArea;\r\n byArea: Record<WorkCenterArea, WorkCenterAreaState>;\r\n lookups: WorkCenterLookups;\r\n}\r\n\r\nexport interface WorkCenterHydratePatch {\r\n selectedCardKey?: string | null;\r\n page?: number;\r\n pageSize?: number;\r\n templateId?: number | null;\r\n sort?: WorkCenterSortRule[];\r\n runtimeFilters?: WorkCenterFilterRule[];\r\n}\r\n\r\nexport interface WorkCenterBootstrapInputs {\r\n card?: unknown;\r\n page?: unknown;\r\n pageSize?: unknown;\r\n templateId?: unknown;\r\n sort?: unknown;\r\n filters?: unknown;\r\n}\r\n\r\nexport interface WorkCenterItemModalComponentInput {\r\n contextKey: WorkCenterItemContextKey;\r\n}\r\n\r\nexport interface WorkCenterItemModalOptions {\r\n component?: Type<unknown> | null;\r\n header?: string;\r\n styleClass?: string;\r\n appendTo?: string | HTMLElement | null;\r\n position?: 'start' | 'end' | 'left' | 'right';\r\n}\r\n\r\nexport interface WorkCenterClientFormModalData {\r\n moduleKey: string;\r\n moduleId?: number | string;\r\n levelId?: number | string;\r\n levelDataId?: number | string;\r\n moduleDataId?: number | string;\r\n}\r\n\r\nexport interface WorkCenterClientFormModalOptions {\r\n data?: Partial<WorkCenterClientFormModalData>;\r\n operationKey?: string;\r\n header?: string;\r\n styleClass?: string;\r\n buttonLabel?: string;\r\n buttonIcon?: string;\r\n lookups?: ClientLookup[];\r\n}\r\n\r\nexport type WorkCenterLoadReason =\r\n | 'route-enter'\r\n | 'menu-change'\r\n | 'filters-change'\r\n | 'table-lazy'\r\n | 'refresh'\r\n | 'manual';\r\n","import { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\n\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterColumnsConfig,\r\n WorkCenterContext,\r\n WorkCenterFilterOperator,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeProperty,\r\n WorkCenterRuntimeCard,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterRuntimeStatsItem,\r\n WorkCenterSortRule,\r\n WorkCenterStateModel,\r\n WORK_CENTER_MAX_FILTERS,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n WORK_CENTER_MAX_SORT,\r\n} from './work-center.model';\r\n\r\nconst AREA_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\nconst KPI_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\nconst WORK_CENTER_LOCAL_FETCH_SIZE = WORK_CENTER_MAX_PAGE_SIZE;\r\n\r\ntype WorkCenterTableColumn = WorkCenterRuntimeProperty &\r\n ColumnDef & {\r\n key: string;\r\n label: string;\r\n type: 'entity';\r\n };\r\n\r\nconst FILTER_OPERATORS: Set<WorkCenterFilterOperator> = new Set([\r\n 'Eq',\r\n 'Neq',\r\n 'In',\r\n 'Contains',\r\n 'StartsWith',\r\n 'Gt',\r\n 'Gte',\r\n 'Lt',\r\n 'Lte',\r\n 'Between',\r\n 'IsNull',\r\n 'IsNotNull',\r\n]);\r\n\r\nfunction clampPage(value: number | undefined, fallback = 1): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n return Math.max(1, Math.floor(value as number));\r\n}\r\n\r\nfunction clampPageSize(\r\n value: number | undefined,\r\n fallback = WORK_CENTER_LOCAL_FETCH_SIZE,\r\n): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n const parsed = Math.floor(value as number);\r\n return Math.min(WORK_CENTER_MAX_PAGE_SIZE, Math.max(1, parsed));\r\n}\r\n\r\nfunction sanitizeSort(\r\n rules: WorkCenterSortRule[] | undefined,\r\n): WorkCenterSortRule[] {\r\n if (!Array.isArray(rules)) return [];\r\n return rules\r\n .filter(\r\n (rule): rule is WorkCenterSortRule =>\r\n typeof rule?.field === 'string' &&\r\n rule.field.length > 0 &&\r\n (rule.dir === 'asc' || rule.dir === 'desc'),\r\n )\r\n .slice(0, WORK_CENTER_MAX_SORT);\r\n}\r\n\r\nfunction sanitizeFilters(\r\n filters: WorkCenterFilterRule[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n if (!Array.isArray(filters)) return [];\r\n\r\n return filters\r\n .filter(\r\n (filter): filter is WorkCenterFilterRule =>\r\n typeof filter?.field === 'string' &&\r\n filter.field.length > 0 &&\r\n typeof filter?.op === 'string' &&\r\n FILTER_OPERATORS.has(filter.op),\r\n )\r\n .slice(0, WORK_CENTER_MAX_FILTERS);\r\n}\r\n\r\nfunction parseJson(value: unknown): unknown {\r\n if (typeof value !== 'string') return value;\r\n if (!value.trim()) return null;\r\n\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction toOptionalInt(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') return null;\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? Math.floor(parsed) : null;\r\n}\r\n\r\nfunction toSelectedCardKey(value: unknown): string | null {\r\n if (typeof value !== 'string') return null;\r\n const parsed = value.trim();\r\n return parsed.length ? parsed : null;\r\n}\r\n\r\nfunction parseSortInput(value: unknown): WorkCenterSortRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeSort(parsed as WorkCenterSortRule[])\r\n : [];\r\n}\r\n\r\nfunction parseFiltersInput(value: unknown): WorkCenterFilterRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeFilters(parsed as WorkCenterFilterRule[])\r\n : [];\r\n}\r\n\r\nfunction hasParamValue(value: unknown): boolean {\r\n return value !== null && value !== undefined && value !== '';\r\n}\r\n\r\nfunction toLabel(value: string): string {\r\n const segment = value.split('.').pop() ?? value;\r\n return segment\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/\\s+/g, ' ')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction toViewType(viewType: string | undefined, key: string): string {\r\n if (viewType?.trim()) {\r\n return viewType;\r\n }\r\n\r\n return key.toLowerCase().includes('date') ? 'Date' : 'Text';\r\n}\r\n\r\nfunction normalizeColumnKey(key: string): string {\r\n return key\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[\\s._-]+/g, '');\r\n}\r\n\r\nfunction resolveColumnWeight(key: string): number {\r\n const normalizedKey = normalizeColumnKey(key);\r\n\r\n if (normalizedKey.includes('title')) return 26;\r\n if (\r\n normalizedKey.includes('subtitle') ||\r\n normalizedKey.includes('description')\r\n ) {\r\n return 20;\r\n }\r\n if (normalizedKey.includes('status')) return 14;\r\n if (normalizedKey.includes('progress')) return 17;\r\n if (\r\n normalizedKey.includes('createdby') ||\r\n normalizedKey.includes('assignedto') ||\r\n normalizedKey.includes('owner') ||\r\n normalizedKey.includes('user')\r\n ) {\r\n return 20;\r\n }\r\n if (\r\n normalizedKey.includes('duedate') ||\r\n normalizedKey.includes('createdat') ||\r\n normalizedKey.includes('updatedat') ||\r\n normalizedKey.endsWith('date')\r\n ) {\r\n return 15;\r\n }\r\n if (normalizedKey.includes('priority')) return 12;\r\n\r\n return 16;\r\n}\r\n\r\nfunction applySmartColumnWidths(\r\n columns: WorkCenterTableColumn[],\r\n): WorkCenterTableColumn[] {\r\n const dynamicWeightTotal = columns.reduce((total, column) => {\r\n return column.width?.trim()\r\n ? total\r\n : total + resolveColumnWeight(column.key);\r\n }, 0);\r\n\r\n if (!dynamicWeightTotal) {\r\n return columns;\r\n }\r\n\r\n return columns.map((column) => {\r\n if (column.width?.trim()) {\r\n return column;\r\n }\r\n\r\n const width = (\r\n (resolveColumnWeight(column.key) / dynamicWeightTotal) *\r\n 100\r\n ).toFixed(2);\r\n\r\n return {\r\n ...column,\r\n width: `${width}%`,\r\n };\r\n });\r\n}\r\n\r\nfunction getValue(record: Record<string, unknown>, key: string): unknown {\r\n return key.split('.').reduce<unknown>((current, part) => {\r\n if (!current || typeof current !== 'object') {\r\n return undefined;\r\n }\r\n\r\n return (current as Record<string, unknown>)[part];\r\n }, record);\r\n}\r\n\r\nfunction flattenRuntimeRow(\r\n row: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n const extra = row['extra'];\r\n\r\n if (!extra || typeof extra !== 'object' || Array.isArray(extra)) {\r\n return row;\r\n }\r\n\r\n return {\r\n ...(extra as Record<string, unknown>),\r\n ...row,\r\n };\r\n}\r\n\r\nfunction toDisplayValue(\r\n value: unknown,\r\n column: WorkCenterTableColumn,\r\n): unknown {\r\n if (column.viewType !== 'Text') {\r\n return value;\r\n }\r\n\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n\r\n const display = (value as Record<string, unknown>)['display'];\r\n return typeof display === 'string' ? display : value;\r\n}\r\n\r\nfunction buildColumnsFromProperties(\r\n properties: WorkCenterRuntimeProperty[],\r\n): WorkCenterTableColumn[] {\r\n return properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n ...property,\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n type: 'entity' as const,\r\n viewType: toViewType(property.viewType, property.key),\r\n }));\r\n}\r\n\r\nfunction buildColumns(\r\n columnsConfig: WorkCenterColumnsConfig | null | undefined,\r\n): WorkCenterTableColumn[] {\r\n const propertyColumns = buildColumnsFromProperties(\r\n columnsConfig?.properties ?? [],\r\n );\r\n if (propertyColumns.length) {\r\n return applySmartColumnWidths(propertyColumns);\r\n }\r\n\r\n const keys = columnsConfig?.columns?.length ? columnsConfig.columns : [];\r\n return applySmartColumnWidths(\r\n keys.map((key) => ({\r\n key,\r\n label: toLabel(key),\r\n type: 'entity' as const,\r\n viewType: toViewType(undefined, key),\r\n })),\r\n );\r\n}\r\n\r\nfunction toDisplayRows(\r\n rows: Record<string, unknown>[],\r\n columns: WorkCenterTableColumn[],\r\n): Record<string, unknown>[] {\r\n return rows.map((row) => {\r\n const sourceRow = flattenRuntimeRow(row);\r\n const displayRow = { ...sourceRow };\r\n\r\n for (const column of columns) {\r\n const value = getValue(sourceRow, column.key);\r\n displayRow[column.key] = {\r\n ...column,\r\n value: toDisplayValue(value, column),\r\n };\r\n }\r\n\r\n return displayRow;\r\n });\r\n}\r\n\r\nfunction buildMenuItems(cards: WorkCenterRuntimeCard[]): ClientPageMenuItem[] {\r\n const mapped = cards.map((card, index) => ({\r\n key: card.key,\r\n title:\r\n card.name?.display || card.name?.en || card.name?.ar || toLabel(card.key),\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: AREA_COLORS[index % AREA_COLORS.length],\r\n icon: card.icon ?? 'custom.task',\r\n isAvailable: card.isAvailable !== false,\r\n }));\r\n\r\n const available = mapped.filter((card) => card.isAvailable);\r\n const source = available.length ? available : mapped;\r\n\r\n return source.map((card) => ({\r\n key: card.key,\r\n title: card.title,\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: card.color,\r\n icon: card.icon ?? 'custom.task',\r\n }));\r\n}\r\n\r\nfunction buildKpis(\r\n stats: WorkCenterRuntimeStatsItem[],\r\n fallbackIcon: string | null,\r\n): StatisticCardData[] {\r\n return stats.map((stat, index) => ({\r\n title: String(stat.count ?? 0),\r\n subTitle: stat.label.display,\r\n icon: (fallbackIcon ?? 'custom.task') as any,\r\n color: KPI_COLORS[index % KPI_COLORS.length],\r\n }));\r\n}\r\n\r\nfunction createDefaultContext(area: WorkCenterArea): WorkCenterContext {\r\n return {\r\n area,\r\n templateId: null,\r\n selectedCardKey: null,\r\n page: 1,\r\n pageSize: WORK_CENTER_LOCAL_FETCH_SIZE,\r\n sort: [],\r\n runtimeFilters: [],\r\n includeStats: true,\r\n };\r\n}\r\n\r\nfunction createDefaultAreaState(area: WorkCenterArea): WorkCenterAreaState {\r\n return {\r\n context: createDefaultContext(area),\r\n menuItems: [],\r\n rows: [],\r\n columns: [],\r\n kpis: [],\r\n runtimeFilterSchema: null,\r\n totalCount: 0,\r\n warnings: [],\r\n lastLoadedAt: null,\r\n };\r\n}\r\n\r\nexport const WORK_CENTER_DEFAULT_STATE: WorkCenterStateModel = {\r\n activeArea: 'MyInbox',\r\n byArea: {\r\n MyInbox: createDefaultAreaState('MyInbox'),\r\n TasksCenter: createDefaultAreaState('TasksCenter'),\r\n },\r\n lookups: [],\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\nexport function normalizeContext(\r\n context: WorkCenterContext,\r\n): WorkCenterContext {\r\n return {\r\n ...context,\r\n page: clampPage(context.page, 1),\r\n pageSize: clampPageSize(context.pageSize, WORK_CENTER_LOCAL_FETCH_SIZE),\r\n sort: sanitizeSort(context.sort),\r\n runtimeFilters: sanitizeFilters(context.runtimeFilters),\r\n };\r\n}\r\n\r\nexport function buildContextFromInputs(\r\n currentContext: WorkCenterContext,\r\n area: WorkCenterArea,\r\n inputs: WorkCenterBootstrapInputs = {},\r\n): WorkCenterContext {\r\n const parsedCardKey = toSelectedCardKey(inputs.card);\r\n const parsedTemplateId = toOptionalInt(inputs.templateId);\r\n const parsedPage = toOptionalInt(inputs.page);\r\n const parsedPageSize = toOptionalInt(inputs.pageSize);\r\n\r\n return normalizeContext({\r\n ...currentContext,\r\n area,\r\n selectedCardKey: parsedCardKey ?? currentContext.selectedCardKey,\r\n page: parsedPage ?? currentContext.page,\r\n pageSize: parsedPageSize ?? currentContext.pageSize,\r\n templateId: parsedTemplateId ?? currentContext.templateId,\r\n sort: hasParamValue(inputs.sort)\r\n ? parseSortInput(inputs.sort)\r\n : inputs.sort === null\r\n ? []\r\n : currentContext.sort,\r\n runtimeFilters: hasParamValue(inputs.filters)\r\n ? parseFiltersInput(inputs.filters)\r\n : inputs.filters === null\r\n ? []\r\n : currentContext.runtimeFilters,\r\n });\r\n}\r\n\r\nexport function isSameContext(\r\n left: WorkCenterContext,\r\n right: WorkCenterContext,\r\n): boolean {\r\n return (\r\n left.area === right.area &&\r\n left.templateId === right.templateId &&\r\n left.selectedCardKey === right.selectedCardKey &&\r\n left.page === right.page &&\r\n left.pageSize === right.pageSize &&\r\n left.includeStats === right.includeStats &&\r\n JSON.stringify(left.sort) === JSON.stringify(right.sort) &&\r\n JSON.stringify(left.runtimeFilters) === JSON.stringify(right.runtimeFilters)\r\n );\r\n}\r\n\r\nexport function mapRuntimeResponse(\r\n current: WorkCenterAreaState,\r\n response: WorkCenterRuntimeResponseData,\r\n): WorkCenterAreaState {\r\n const selectedCard = response.selectedCard;\r\n const menuItems = buildMenuItems(response.cards);\r\n const requestedCardKey =\r\n selectedCard?.key ?? current.context.selectedCardKey ?? null;\r\n const selectedCardKey =\r\n requestedCardKey &&\r\n response.cards.some((card) => card.key === requestedCardKey)\r\n ? requestedCardKey\r\n : (menuItems[0]?.key ?? response.cards[0]?.key ?? null);\r\n const selectedCardFromList = selectedCardKey\r\n ? (response.cards.find((card) => card.key === selectedCardKey) ?? null)\r\n : null;\r\n const selectedMenuItem = menuItems.find(\r\n (item) => item.key === selectedCardKey,\r\n );\r\n const columns = buildColumns(\r\n selectedCard?.columnsConfig ?? selectedCardFromList?.columnsConfig,\r\n );\r\n const rows = toDisplayRows(selectedCard?.items ?? [], columns);\r\n const kpis = buildKpis(\r\n selectedCard?.stats ?? [],\r\n selectedMenuItem?.icon ?? null,\r\n );\r\n\r\n return {\r\n ...current,\r\n menuItems,\r\n rows,\r\n columns,\r\n kpis,\r\n runtimeFilterSchema:\r\n selectedCard?.runtimeFilterSchema ??\r\n selectedCardFromList?.runtimeFilterSchema ??\r\n null,\r\n totalCount: selectedCard?.pagination.totalCount ?? 0,\r\n warnings: response.warnings ?? [],\r\n lastLoadedAt: new Date().toISOString(),\r\n context: {\r\n ...current.context,\r\n selectedCardKey,\r\n page: selectedCard?.pagination.page ?? current.context.page,\r\n pageSize: selectedCard?.pagination.pageSize ?? current.context.pageSize,\r\n },\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { handleApiRequest } from '@masterteam/components';\r\nimport { EMPTY, catchError, map } from 'rxjs';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n SetLookups,\r\n} from './work-center.actions';\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterRuntimeFilterSchema,\r\n WorkCenterRuntimeRequest,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterStateModel,\r\n} from './work-center.model';\r\nimport {\r\n buildContextFromInputs,\r\n isSameContext,\r\n mapRuntimeResponse,\r\n normalizeContext,\r\n WORK_CENTER_DEFAULT_STATE,\r\n} from './work-center.state.helpers';\r\n\r\n@State<WorkCenterStateModel>({\r\n name: 'workCenter',\r\n defaults: WORK_CENTER_DEFAULT_STATE,\r\n})\r\n@Injectable()\r\nexport class WorkCenterState {\r\n private readonly http = inject(HttpClient);\r\n\r\n @Selector()\r\n static getState(state: WorkCenterStateModel): WorkCenterStateModel {\r\n return state;\r\n }\r\n\r\n @Selector()\r\n static activeArea(state: WorkCenterStateModel): WorkCenterArea {\r\n return state.activeArea;\r\n }\r\n\r\n @Selector([WorkCenterState.activeArea, WorkCenterState.getState])\r\n static activeSnapshot(\r\n activeArea: WorkCenterArea,\r\n state: WorkCenterStateModel,\r\n ): WorkCenterAreaState {\r\n return state.byArea[activeArea];\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static context(snapshot: WorkCenterAreaState) {\r\n return snapshot.context;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static menuItems(snapshot: WorkCenterAreaState) {\r\n return snapshot.menuItems;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static rows(snapshot: WorkCenterAreaState) {\r\n return snapshot.rows;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static columns(snapshot: WorkCenterAreaState) {\r\n return snapshot.columns;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static kpis(snapshot: WorkCenterAreaState) {\r\n return snapshot.kpis;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static runtimeFilterSchema(\r\n snapshot: WorkCenterAreaState,\r\n ): WorkCenterRuntimeFilterSchema | null {\r\n return snapshot.runtimeFilterSchema;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static totalCount(snapshot: WorkCenterAreaState): number {\r\n return snapshot.totalCount;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static warnings(snapshot: WorkCenterAreaState) {\r\n return snapshot.warnings;\r\n }\r\n\r\n @Selector()\r\n static lookups(state: WorkCenterStateModel) {\r\n return state.lookups;\r\n }\r\n\r\n @Selector()\r\n static getLoadingActive(state: WorkCenterStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: WorkCenterStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n @Action(EnterArea)\r\n enterArea(ctx: StateContext<WorkCenterStateModel>, action: EnterArea): void {\r\n if (ctx.getState().activeArea === action.area) return;\r\n ctx.patchState({ activeArea: action.area });\r\n }\r\n\r\n @Action(HydrateFromContext)\r\n hydrateFromContext(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: HydrateFromContext,\r\n ): void {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = normalizeContext({\r\n ...current.context,\r\n ...action.patch,\r\n area: action.area,\r\n });\r\n\r\n if (\r\n state.activeArea === action.area &&\r\n isSameContext(current.context, nextContext)\r\n ) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\r\n },\r\n });\r\n }\r\n\r\n @Action(SetParams)\r\n setParams(ctx: StateContext<WorkCenterStateModel>, action: SetParams) {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = buildContextFromInputs(\r\n current.context,\r\n action.area,\r\n action.inputs,\r\n );\r\n\r\n const areaChanged = state.activeArea !== action.area;\r\n const contextChanged = !isSameContext(current.context, nextContext);\r\n const runtimeLoading = state.loadingActive.includes(\r\n WorkCenterActionKey.LoadRuntime,\r\n );\r\n const shouldLoad =\r\n areaChanged ||\r\n contextChanged ||\r\n (!current.lastLoadedAt && !runtimeLoading);\r\n\r\n if (areaChanged || contextChanged) {\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\r\n },\r\n });\r\n }\r\n\r\n if (!shouldLoad) return;\r\n return ctx.dispatch(new LoadRuntime(action.area, 'route-enter'));\r\n }\r\n\r\n @Action(SetLookups)\r\n setLookups(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: SetLookups,\r\n ): void {\r\n if (ctx.getState().lookups === action.lookups) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n lookups: Array.isArray(action.lookups) ? action.lookups : [],\r\n });\r\n }\r\n\r\n @Action(LoadRuntime)\r\n loadRuntime(ctx: StateContext<WorkCenterStateModel>, action: LoadRuntime) {\r\n const state = ctx.getState();\r\n const areaState = state.byArea[action.area];\r\n const request = normalizeContext(areaState.context);\r\n const nextAreaState = {\r\n ...areaState,\r\n rows: [],\r\n kpis: [],\r\n totalCount: 0,\r\n };\r\n\r\n ctx.patchState({\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: nextAreaState,\r\n },\r\n });\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: WorkCenterActionKey.LoadRuntime,\r\n request$: this.getRuntime(request),\r\n onSuccess: (response, latestState) => {\r\n const current = latestState.byArea[action.area];\r\n return {\r\n byArea: {\r\n ...latestState.byArea,\r\n [action.area]: mapRuntimeResponse(current, response),\r\n },\r\n };\r\n },\r\n errorMessage: 'Failed to load Work Center runtime.',\r\n }).pipe(catchError(() => EMPTY));\r\n }\r\n\r\n private getRuntime(request: WorkCenterRuntimeRequest) {\r\n return this.http\r\n .post<\r\n ApiEnvelope<WorkCenterRuntimeResponseData>\r\n >('workcenter/runtime', request)\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) return response.data;\r\n\r\n const fallbackError = 'Failed to load Work Center runtime.';\r\n const message =\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError;\r\n\r\n throw new Error(message);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n SetLookups,\r\n} from './work-center.actions';\r\nimport {\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\r\n WorkCenterLookups,\r\n WorkCenterLoadReason,\r\n WorkCenterSortRule,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n} from './work-center.model';\r\nimport { WorkCenterState } from './work-center.state';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WorkCenterFacade {\r\n private readonly store = inject(Store);\r\n\r\n readonly activeArea = select(WorkCenterState.activeArea);\r\n readonly context = select(WorkCenterState.context);\r\n readonly menuItems = select(WorkCenterState.menuItems);\r\n readonly rows = select(WorkCenterState.rows);\r\n readonly columns = select(WorkCenterState.columns);\r\n readonly kpis = select(WorkCenterState.kpis);\r\n readonly lookups = select(WorkCenterState.lookups);\r\n readonly runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);\r\n readonly totalCount = select(WorkCenterState.totalCount);\r\n readonly warnings = select(WorkCenterState.warnings);\r\n\r\n private readonly loadingActive = select(WorkCenterState.getLoadingActive);\r\n private readonly errors = select(WorkCenterState.getErrors);\r\n\r\n readonly loading = computed(() =>\r\n this.loadingActive().includes(WorkCenterActionKey.LoadRuntime),\r\n );\r\n readonly error = computed(\r\n () => this.errors()[WorkCenterActionKey.LoadRuntime] ?? null,\r\n );\r\n\r\n enterArea(area: WorkCenterArea) {\r\n return this.store.dispatch(new EnterArea(area));\r\n }\r\n\r\n hydrateContext(area: WorkCenterArea, patch: WorkCenterHydratePatch) {\r\n return this.store.dispatch(new HydrateFromContext(area, patch));\r\n }\r\n\r\n setParams(area: WorkCenterArea, inputs: WorkCenterBootstrapInputs) {\r\n return this.store.dispatch(new SetParams(area, inputs));\r\n }\r\n\r\n setLookups(lookups: WorkCenterLookups) {\r\n return this.store.dispatch(new SetLookups(lookups));\r\n }\r\n\r\n selectCardAndLoad(area: WorkCenterArea, selectedCardKey: string) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { selectedCardKey, page: 1 }),\r\n new LoadRuntime(area, 'menu-change'),\r\n ]);\r\n }\r\n\r\n applyTableLazyLoadAndLoad(area: WorkCenterArea, event: any) {\r\n const context = this.store.selectSnapshot(WorkCenterState.context);\r\n const patch: WorkCenterHydratePatch = {};\r\n let changed = false;\r\n\r\n const page = this.toPositiveInt(event?.currentPage);\r\n if (page !== null && page !== context.page) {\r\n patch.page = page;\r\n changed = true;\r\n }\r\n\r\n const pageSize = this.toPositiveInt(event?.pageSize);\r\n if (pageSize !== null) {\r\n const normalizedPageSize = Math.min(\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n Math.max(1, pageSize),\r\n );\r\n if (normalizedPageSize !== context.pageSize) {\r\n patch.pageSize = normalizedPageSize;\r\n changed = true;\r\n }\r\n }\r\n\r\n const sort = this.toSortFromLazyEvent(event);\r\n if (sort && !this.isSameSort(sort, context.sort)) {\r\n patch.sort = sort;\r\n changed = true;\r\n }\r\n\r\n if (!changed) {\r\n return;\r\n }\r\n\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, patch),\r\n new LoadRuntime(area, 'table-lazy'),\r\n ]);\r\n }\r\n\r\n applyRuntimeFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { runtimeFilters, page: 1 }),\r\n new LoadRuntime(area, 'filters-change'),\r\n ]);\r\n }\r\n\r\n loadRuntime(area: WorkCenterArea, reason: WorkCenterLoadReason = 'manual') {\r\n return this.store.dispatch(new LoadRuntime(area, reason));\r\n }\r\n\r\n private toPositiveInt(value: unknown): number | null {\r\n const parsed = Number(value);\r\n if (!Number.isFinite(parsed)) {\r\n return null;\r\n }\r\n return Math.max(1, Math.floor(parsed));\r\n }\r\n\r\n private toSortFromLazyEvent(event: any): WorkCenterSortRule[] | null {\r\n const sortField = event?.sortField;\r\n if (typeof sortField !== 'string' || !sortField.length) {\r\n return null;\r\n }\r\n\r\n return [\r\n {\r\n field: sortField,\r\n dir: event?.sortOrder === -1 ? 'desc' : 'asc',\r\n },\r\n ];\r\n }\r\n\r\n private isSameSort(\r\n left: WorkCenterSortRule[] | undefined,\r\n right: WorkCenterSortRule[] | undefined,\r\n ): boolean {\r\n const leftValue = left ?? [];\r\n const rightValue = right ?? [];\r\n\r\n if (leftValue.length !== rightValue.length) {\r\n return false;\r\n }\r\n\r\n return leftValue.every(\r\n (rule, index) =>\r\n rule.field === rightValue[index]?.field &&\r\n rule.dir === rightValue[index]?.dir,\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { ClientPage } from '@masterteam/components/client-page';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport {\r\n PropertyFilterBuilder,\r\n PropertyFilterBuilderRule,\r\n PropertyFilterBuilderSchema,\r\n} from '@masterteam/components/property-filter-builder';\r\nimport { StatisticCard } from '@masterteam/components/statistic-card';\r\nimport { Table } from '@masterteam/components/table';\r\nimport { ClientLookup } from '@masterteam/forms/client-form';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { take } from 'rxjs';\r\n\r\nimport { WorkCenterClientFormModal } from '../work-center-client-form-modal/work-center-client-form-modal';\r\nimport { WorkCenterFacade } from '../../store/work-center/work-center.facade';\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterClientFormModalOptions,\r\n WorkCenterFilterRule,\r\n WorkCenterItemModalOptions,\r\n WorkCenterItemContextKey,\r\n WorkCenterItemModalComponentInput,\r\n WorkCenterRuntimeFilterSchema,\r\n} from '../../store/work-center/work-center.model';\r\n\r\nconst OPERATOR_LABELS: Record<string, string> = {\r\n Eq: 'Equals',\r\n Neq: 'Not equal',\r\n In: 'In',\r\n Contains: 'Contains',\r\n StartsWith: 'Starts with',\r\n Gt: 'Greater than',\r\n Gte: 'Greater than or equal',\r\n Lt: 'Less than',\r\n Lte: 'Less than or equal',\r\n Between: 'Between',\r\n IsNull: 'Is empty',\r\n IsNotNull: 'Is not empty',\r\n};\r\n\r\nconst OPERATOR_VALUE_MODE: Record<\r\n string,\r\n 'single' | 'multi' | 'range' | 'none'\r\n> = {\r\n In: 'multi',\r\n Between: 'range',\r\n IsNull: 'none',\r\n IsNotNull: 'none',\r\n};\r\nconst GENERAL_TASK_CARD_KEYS = new Set([\r\n 'mygeneraltasks',\r\n 'generaltask',\r\n 'generaltasks',\r\n]);\r\n\r\nfunction toLabel(value: string): string {\r\n const normalized = value.split('.').pop() ?? value;\r\n return normalized\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction columnTypeToViewType(type: string | undefined): string | undefined {\r\n if (type === 'date') return 'Date';\r\n return undefined;\r\n}\r\n\r\nfunction normalizeCardKey(value: string | null | undefined): string {\r\n if (typeof value !== 'string') {\r\n return '';\r\n }\r\n\r\n return value\r\n .trim()\r\n .replace(/[\\s_-]/g, '')\r\n .toLowerCase();\r\n}\r\n\r\nfunction mapAllowedFields(schema: WorkCenterRuntimeFilterSchema) {\r\n const properties = schema.properties ?? [];\r\n const fromProperties = properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n viewType: property.viewType,\r\n }));\r\n\r\n if (fromProperties.length) {\r\n return fromProperties;\r\n }\r\n\r\n return (schema.allowedFields ?? []).map((field) => ({\r\n key: field,\r\n label: toLabel(field),\r\n }));\r\n}\r\n\r\nfunction mapAllowedOperators(\r\n schema: WorkCenterRuntimeFilterSchema,\r\n getLabel: (key: string) => string,\r\n) {\r\n const options: Array<{\r\n key: string;\r\n label: string;\r\n valueMode: 'single' | 'multi' | 'range' | 'none';\r\n }> = [];\r\n\r\n for (const operator of schema.allowedOperators ?? []) {\r\n if (typeof operator === 'string') {\r\n options.push({\r\n key: operator,\r\n label: getLabel(operator),\r\n valueMode: OPERATOR_VALUE_MODE[operator] ?? 'single',\r\n });\r\n continue;\r\n }\r\n\r\n const key = operator?.value;\r\n if (!key) {\r\n continue;\r\n }\r\n\r\n options.push({\r\n key,\r\n label:\r\n operator.display?.display ||\r\n operator.display?.en ||\r\n operator.display?.ar ||\r\n getLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n });\r\n }\r\n\r\n return options;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-page',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n ClientPage,\r\n PropertyFilterBuilder,\r\n StatisticCard,\r\n Table,\r\n SkeletonModule,\r\n ],\r\n templateUrl: './work-center-page.html',\r\n})\r\nexport class WorkCenterPage {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly modal = inject(ModalService);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n\r\n readonly area = input<WorkCenterArea>('MyInbox');\r\n readonly pageTitle = input<string>('');\r\n readonly menuIcon = input<string>('communication.inbox-01');\r\n readonly lookups = input<ClientLookup[]>([]);\r\n readonly openItemsInModal = input(true);\r\n readonly itemModal = input<WorkCenterItemModalOptions | null>(null);\r\n readonly generalTaskModal = input<WorkCenterClientFormModalOptions | null>(\r\n null,\r\n );\r\n\r\n readonly runtimeFiltersChanged = output<WorkCenterFilterRule[]>();\r\n readonly itemClicked = output<WorkCenterItemContextKey>();\r\n\r\n protected readonly context = this.facade.context;\r\n private readonly _menuItems = this.facade.menuItems;\r\n protected readonly menuItems = computed(() => {\r\n this.activeLang();\r\n\r\n return this._menuItems().map((item) => ({\r\n ...item,\r\n subtitle: `${item.count} ${item.title}`,\r\n }));\r\n });\r\n protected readonly rows = this.facade.rows;\r\n protected readonly columns = this.facade.columns;\r\n protected readonly kpis = this.facade.kpis;\r\n protected readonly runtimeFilterSchema = this.facade.runtimeFilterSchema;\r\n protected readonly loading = this.facade.loading;\r\n protected readonly tableColumns = computed(() =>\r\n this.columns().map((column) => ({\r\n ...column,\r\n sortable: true,\r\n })),\r\n );\r\n\r\n protected readonly propertyFilterSchema =\r\n computed<PropertyFilterBuilderSchema | null>(() => {\r\n this.activeLang();\r\n const schema = this.runtimeFilterSchema();\r\n if (schema) {\r\n const allowedFields = mapAllowedFields(schema);\r\n const allowedOperators = mapAllowedOperators(schema, (key) =>\r\n this.getOpLabel(key),\r\n );\r\n if (allowedFields.length && allowedOperators.length) {\r\n return { allowedFields, allowedOperators };\r\n }\r\n }\r\n\r\n const fallbackFields = this.columns()\r\n .filter(\r\n (column) => typeof column?.key === 'string' && column.key.length > 0,\r\n )\r\n .map((column) => ({\r\n key: column.key,\r\n label: column.label || toLabel(column.key),\r\n viewType: columnTypeToViewType(column.type),\r\n }));\r\n\r\n if (!fallbackFields.length) {\r\n return null;\r\n }\r\n\r\n const fallbackOperators = Object.keys(OPERATOR_LABELS).map((key) => ({\r\n key,\r\n label: this.getOpLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n }));\r\n\r\n return {\r\n allowedFields: fallbackFields,\r\n allowedOperators: fallbackOperators,\r\n };\r\n });\r\n protected readonly showGeneralTaskCreateButton = computed(() =>\r\n GENERAL_TASK_CARD_KEYS.has(\r\n normalizeCardKey(this.context().selectedCardKey),\r\n ),\r\n );\r\n protected readonly generalTaskButtonLabel = computed(() => {\r\n this.activeLang();\r\n return (\r\n this.generalTaskModal()?.buttonLabel?.trim() ||\r\n this.transloco.translate<string>('workCenter.page.new')\r\n );\r\n });\r\n protected readonly resolvedPageTitle = computed(() => {\r\n this.activeLang();\r\n return (\r\n this.pageTitle() ||\r\n this.transloco.translate<string>('workCenter.page.title')\r\n );\r\n });\r\n protected readonly generalTaskButtonIcon = computed(\r\n () => this.generalTaskModal()?.buttonIcon?.trim() || 'general.plus',\r\n );\r\n private readonly defaultModalStyleClass =\r\n '!w-[96vw] md:!w-[84vw] xl:!w-[70vw] !shadow-none';\r\n private readonly defaultGeneralTaskModalStyleClass = '!w-[70vw] !h-[90vh]';\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.facade.setLookups(this.lookups());\r\n });\r\n }\r\n\r\n onMenuItemClick(item: ClientPageMenuItem): void {\r\n if (item.key === this.context().selectedCardKey) {\r\n return;\r\n }\r\n\r\n this.facade.selectCardAndLoad(this.area(), item.key);\r\n }\r\n\r\n onRuntimeFiltersApplied(filters: PropertyFilterBuilderRule[]): void {\r\n const mappedFilters = filters.map((filter) => ({\r\n field: filter.field,\r\n op: filter.op as WorkCenterFilterRule['op'],\r\n value: filter.value,\r\n values: filter.values,\r\n from: filter.from,\r\n to: filter.to,\r\n }));\r\n\r\n this.facade.applyRuntimeFiltersAndLoad(this.area(), mappedFilters);\r\n this.runtimeFiltersChanged.emit(mappedFilters);\r\n }\r\n\r\n onRuntimeFiltersCleared(): void {\r\n this.facade.applyRuntimeFiltersAndLoad(this.area(), []);\r\n this.runtimeFiltersChanged.emit([]);\r\n }\r\n\r\n onGeneralTaskCreateClick(): void {\r\n const modalOptions = this.generalTaskModal();\r\n const modalData = {\r\n moduleKey: 'GeneralTask',\r\n ...(modalOptions?.data ?? {}),\r\n };\r\n const modalHeader =\r\n modalOptions?.header ??\r\n this.transloco.translate<string>('workCenter.page.create');\r\n const modalStyleClass =\r\n modalOptions?.styleClass ?? this.defaultGeneralTaskModalStyleClass;\r\n const operationKey = modalOptions?.operationKey ?? 'Create';\r\n const lookups = modalOptions?.lookups ?? this.lookups();\r\n\r\n const ref = this.modal.openModal(WorkCenterClientFormModal, 'dialog', {\r\n header: modalHeader,\r\n styleClass: modalStyleClass,\r\n position: 'end',\r\n dismissableMask: true,\r\n inputValues: {\r\n data: modalData,\r\n operationKey,\r\n lookups,\r\n },\r\n });\r\n\r\n ref.onClose.pipe(take(1)).subscribe((result: unknown) => {\r\n if (result) {\r\n this.facade.loadRuntime(this.area(), 'refresh');\r\n }\r\n });\r\n }\r\n\r\n onRowClick(row: Record<string, unknown>): void {\r\n const contextKey = this.resolveRowContextKey(row);\r\n console.log('[work-center-debug] page row click', {\r\n contextKey,\r\n row,\r\n openItemsInModal: this.openItemsInModal(),\r\n hasModalComponent: !!this.itemModal()?.component,\r\n });\r\n\r\n if (!contextKey) {\r\n return;\r\n }\r\n\r\n this.itemClicked.emit(contextKey);\r\n\r\n if (!this.openItemsInModal()) {\r\n return;\r\n }\r\n\r\n const modalOptions = this.itemModal();\r\n if (!modalOptions?.component) {\r\n return;\r\n }\r\n\r\n this.modal.openModal(modalOptions.component, 'drawer', {\r\n header:\r\n modalOptions?.header ??\r\n this.transloco.translate<string>('workCenter.page.itemDetails'),\r\n styleClass: modalOptions?.styleClass ?? this.defaultModalStyleClass,\r\n position: modalOptions?.position ?? 'end',\r\n dismissible: true,\r\n modal: true,\r\n ...(modalOptions?.appendTo ? { appendTo: modalOptions.appendTo } : {}),\r\n inputValues: { contextKey } satisfies WorkCenterItemModalComponentInput,\r\n });\r\n }\r\n\r\n protected readonly rowsClickable = computed(() => this.openItemsInModal());\r\n\r\n private getOpLabel(key: string): string {\r\n return (\r\n this.transloco.translate<string>('workCenter.operator.' + key) ||\r\n OPERATOR_LABELS[key] ||\r\n toLabel(key)\r\n );\r\n }\r\n\r\n private resolveRowContextKey(\r\n row: Record<string, unknown>,\r\n ): WorkCenterItemContextKey | null {\r\n const value = row['contextKey'];\r\n if (typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n const normalized = value.trim();\r\n return normalized.length ? normalized : null;\r\n }\r\n}\r\n","<mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"resolvedPageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n storageKey=\"work-center-client-page\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n>\r\n <ng-template #headerClientPageEnd>\r\n <div class=\"flex flex-wrap items-center justify-end gap-2\">\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"context().runtimeFilters\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n\r\n @if (showGeneralTaskCreateButton()) {\r\n <mt-button\r\n [label]=\"generalTaskButtonLabel()\"\r\n [icon]=\"generalTaskButtonIcon()\"\r\n size=\"small\"\r\n (onClick)=\"onGeneralTaskCreateClick()\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"flex flex-col gap-8\">\r\n @if (loading()) {\r\n <div\r\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 gap-3\"\r\n >\r\n @for (_ of [1, 2, 3, 4, 5]; track $index) {\r\n <p-skeleton height=\"6.5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"gap-3 flex flex-wrap\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" class=\"min-w-1/5\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n noCard\r\n [data]=\"rows()\"\r\n [columns]=\"tableColumns()\"\r\n tableLayout=\"auto\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"true\"\r\n [exportable]=\"true\"\r\n [pageSize]=\"5\"\r\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\r\n storageKey=\"work-center-page-table\"\r\n (rowClick)=\"onRowClick($event)\"\r\n />\r\n </div>\r\n</mt-client-page>\r\n","import { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\n\r\nexport function readItemContext(\r\n details: WorkCenterItemBasicInfoData,\r\n): Record<string, unknown> | null {\r\n const item = details.item;\r\n if (!item || typeof item !== 'object') {\r\n return null;\r\n }\r\n\r\n const context = item['context'];\r\n return context && typeof context === 'object'\r\n ? (context as Record<string, unknown>)\r\n : null;\r\n}\r\n\r\nexport function readNumber(\r\n source: Record<string, unknown> | null,\r\n key: string,\r\n): number | undefined {\r\n const value = source?.[key];\r\n if (typeof value === 'number') {\r\n return Number.isFinite(value) ? value : undefined;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim().length) {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : undefined;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nexport function readString(\n source: Record<string, unknown> | null,\n key: string,\n): string | undefined {\n const value = source?.[key];\n return typeof value === 'string' && value.trim().length ? value : undefined;\n}\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport {\r\n EntityAttachmentValue,\r\n EntitiesPreview,\r\n EntityData,\r\n EntityUserValue,\r\n} from '@masterteam/components/entities';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport {\r\n Connection,\r\n Node,\r\n StructureBuilder,\r\n} from '@masterteam/structure-builder';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { readItemContext, readNumber } from '../work-center-types.helpers';\r\n\r\ninterface EscalationPreviewResponse {\r\n message?: string | null;\r\n data: EscalationPreviewData;\r\n}\r\n\r\ninterface TranslatableValue {\r\n display?: string;\r\n en?: string;\r\n ar?: string;\r\n}\r\n\r\ninterface EscalationSchemaStep {\r\n id: number | string;\r\n name?: TranslatableValue;\r\n isInitial?: boolean;\r\n isFinal?: boolean;\r\n}\r\n\r\ninterface EscalationSchemaConnection {\r\n id?: number | string;\r\n source: number | string;\r\n target: number | string;\r\n}\r\n\r\ninterface EscalationPreviewData {\r\n initiatedBy?: Record<string, unknown>;\r\n startedAt?: Record<string, unknown>;\r\n reason?: string;\r\n attachments?: string[];\r\n schema?: {\r\n stepsSchema?: EscalationSchemaStep[];\r\n connections?: EscalationSchemaConnection[];\r\n };\r\n schemaSteps?: EscalationSchemaStep[];\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-escalation-instance-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n DiscussionThread,\r\n EntitiesPreview,\r\n StructureBuilder,\r\n ],\r\n templateUrl: './work-center-escalation-instance-type.html',\r\n})\r\nexport class WorkCenterEscalationInstanceType implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private loadSub?: Subscription;\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n\r\n protected readonly activeTab = signal('escalationDetails');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>(\r\n 'workCenter.tabs.escalationDetails',\r\n ),\r\n value: 'escalationDetails',\r\n icon: 'alert.notification-message',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.schema'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly preview = signal<EscalationPreviewData | null>(null);\r\n protected readonly detailEntities = computed<EntityData[]>(() => {\r\n this.activeLang();\r\n const preview = this.preview();\r\n if (!preview) {\r\n return [];\r\n }\r\n\r\n return [\r\n {\r\n key: 'initiatedBy',\r\n name: this.transloco.translate<string>('workCenter.entity.initiatedBy'),\r\n value: mapUserValue(preview.initiatedBy),\r\n viewType: 'User',\r\n order: 1,\r\n configuration: { size: 12 },\r\n },\r\n {\r\n key: 'startedAt',\r\n name: this.transloco.translate<string>('workCenter.entity.startedAt'),\r\n value: resolveDisplayValue(preview.startedAt),\r\n rawValue: resolveRawValue(preview.startedAt),\r\n viewType: 'DateTime',\r\n order: 2,\r\n configuration: { size: 12 },\r\n },\r\n {\r\n key: 'reason',\r\n name: this.transloco.translate<string>('workCenter.entity.reason'),\r\n value: preview.reason ?? '',\r\n viewType: 'LongText',\r\n order: 3,\r\n configuration: { size: 24 },\r\n },\r\n {\r\n key: 'attachments',\r\n name: this.transloco.translate<string>('workCenter.entity.attachments'),\r\n value: mapAttachments(preview.attachments),\r\n viewType: 'Attachment',\r\n order: 4,\r\n configuration: { size: 24 },\r\n },\r\n ];\r\n });\r\n protected readonly schemaNodes = computed<Node[]>(() => {\r\n this.activeLang();\r\n return resolveSchemaSteps(this.preview()).map((step) => ({\r\n id: String(step.id),\r\n name:\r\n resolveTranslatable(step.name) ||\r\n `${this.transloco.translate<string>('workCenter.entity.step')} ${step.id}`,\r\n color: step.isFinal ? '#059669' : step.isInitial ? '#2563eb' : '#0f172a',\r\n }));\r\n });\r\n protected readonly schemaConnections = computed<Connection[]>(() =>\r\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\r\n id: String(\r\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\r\n ),\r\n from: String(connection.source),\r\n to: String(connection.target),\r\n })),\r\n );\r\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\r\n\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly instanceId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'escalationInstanceId') ??\r\n readNumber(this.itemContext(), 'instanceId'),\r\n );\r\n protected readonly resolvedInstanceId = computed(\r\n () => this.instanceId() ?? 0,\r\n );\r\n protected readonly canRenderDetails = computed(\r\n () => this.resolvedInstanceId() > 0,\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.resolvedInstanceId() > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n const instanceId = this.resolvedInstanceId();\r\n\r\n if (instanceId > 0) {\r\n untracked(() => this.loadPreview(instanceId));\r\n return;\r\n }\r\n\r\n this.preview.set(null);\r\n this.error.set(null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n }\r\n\r\n private loadPreview(instanceId: number): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n this.loadSub = this.http\r\n .get<EscalationPreviewResponse>(`escalations/${instanceId}/preview`)\r\n .subscribe({\r\n next: (response) => {\r\n this.loading.set(false);\r\n this.preview.set(response.data ?? null);\r\n },\r\n error: (error) => {\r\n this.loading.set(false);\r\n this.preview.set(null);\r\n this.error.set(\r\n error?.error?.message ??\r\n error?.message ??\r\n this.transloco.translate<string>(\r\n 'workCenter.error.failedLoadEscalation',\r\n ),\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction mapUserValue(value: unknown): EntityUserValue {\r\n if (!value || typeof value !== 'object') {\r\n return {\r\n displayName: '',\r\n userName: '',\r\n };\r\n }\r\n\r\n return {\r\n id: readString(value, 'id'),\r\n userName: readString(value, 'userName'),\r\n displayName:\r\n readString(value, 'displayName') ??\r\n readString(value, 'fullName') ??\r\n readString(value, 'userName') ??\r\n '',\r\n photoUrl: readString(value, 'photoUrl'),\r\n phoneNumber:\r\n readString(value, 'phoneNumber') ?? readString(value, 'mobileNumber'),\r\n email: readString(value, 'email') ?? readString(value, 'emailAddress'),\r\n };\r\n}\r\n\r\nfunction mapAttachments(value: string[] | undefined): EntityAttachmentValue {\r\n return (value ?? []) as EntityAttachmentValue;\r\n}\r\n\r\nfunction resolveSchemaSteps(\r\n preview: EscalationPreviewData | null,\r\n): EscalationSchemaStep[] {\r\n return preview?.schema?.stepsSchema ?? preview?.schemaSteps ?? [];\r\n}\r\n\r\nfunction resolveTranslatable(value: TranslatableValue | undefined): string {\r\n if (!value || typeof value !== 'object') {\r\n return '';\r\n }\r\n\r\n return value.display ?? value.en ?? value.ar ?? '';\r\n}\r\n\r\nfunction resolveDisplayValue(value: unknown): string {\r\n if (!value || typeof value !== 'object') {\r\n return typeof value === 'string' ? value : '';\r\n }\r\n\r\n return (\r\n readString(value, 'displayValue') ??\r\n readString(value, 'display') ??\r\n readString(value, 'actualValue') ??\r\n ''\r\n );\r\n}\r\n\r\nfunction resolveRawValue(value: unknown): string | undefined {\r\n if (!value || typeof value !== 'object') {\r\n return typeof value === 'string' ? value : undefined;\r\n }\r\n\r\n return (\r\n readString(value, 'actualValue') ??\r\n readString(value, 'displayValue') ??\r\n undefined\r\n );\r\n}\r\n\r\nfunction readString(value: unknown, key: string): string | undefined {\r\n if (!value || typeof value !== 'object') {\r\n return undefined;\r\n }\r\n\r\n const result = (value as Record<string, unknown>)[key];\r\n return typeof result === 'string' && result.length ? result : undefined;\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'escalationDetails'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderDetails()) {\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.escalationDetails\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as error) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ error }}\r\n </p>\r\n </div>\r\n } @else if (preview()) {\r\n <mt-entities-preview [entities]=\"detailEntities()\" />\r\n }\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationDetailsUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderDetails()) {\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.escalationSchema\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as error) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ error }}\r\n </p>\r\n </div>\r\n } @else if (hasSchema()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg lg:h-full lg:min-h-0\"\r\n >\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [readonly]=\"true\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationSchemaUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationSchemaContextUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'EscalationInstance'\"\r\n [recordId]=\"resolvedInstanceId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-module-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n ],\r\n templateUrl: './work-center-module-type.html',\r\n})\r\nexport class WorkCenterModuleType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('details');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.details'),\r\n value: 'details',\r\n icon: 'file.folder',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly instanceId = computed(() =>\r\n readNumber(this.itemContext(), 'instanceId'),\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly moduleKey = computed(() => 'ModuleData');\r\n protected readonly operationKey = computed(() => 'Update');\r\n protected readonly resolvedInstanceId = computed(\r\n () => this.instanceId() ?? 0,\r\n );\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly discussionModuleType = computed(\r\n () =>\r\n readString(this.itemContext(), 'moduleKey') ??\r\n this.details().sourceType ??\r\n this.details().type ??\r\n '',\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () =>\r\n this.resolvedInstanceId() > 0 &&\r\n this.discussionModuleType().trim().length > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'details'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [readonly]=\"true\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.moduleFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"discussionModuleType()\"\r\n [recordId]=\"resolvedInstanceId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.moduleDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { EntityData } from '@masterteam/components/entities';\r\nimport { Table } from '@masterteam/components/table';\r\nimport {\r\n Connection,\r\n Node,\r\n StructureBuilder,\r\n} from '@masterteam/structure-builder';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ApiEnvelope } from '../../../store/work-center/work-center.model';\r\n\r\ninterface ProcessPreviewStep {\r\n stepId?: number | string;\r\n stepName?: unknown;\r\n status?: unknown;\r\n targetUser?: Record<string, unknown> | null;\r\n actionUserInfo?: Record<string, unknown> | null;\r\n createdAt?: string | null;\r\n actionDate?: string | null;\r\n}\r\n\r\ninterface ProcessPreviewSchemaStep {\r\n id: number | string;\r\n name?: unknown;\r\n isInitial?: boolean;\r\n isFinal?: boolean;\r\n}\r\n\r\ninterface ProcessPreviewSchemaConnection {\r\n id?: number | string;\r\n source: number | string;\r\n target: number | string;\r\n}\r\n\r\ninterface ProcessPreviewData {\r\n steps?: ProcessPreviewStep[];\r\n schema?: {\r\n stepsSchema?: ProcessPreviewSchemaStep[];\r\n connections?: ProcessPreviewSchemaConnection[];\r\n } | null;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-preview',\r\n standalone: true,\r\n imports: [CommonModule, Table, StructureBuilder],\r\n templateUrl: './work-center-process-preview.html',\r\n})\r\nexport class WorkCenterProcessPreview implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private loadSub?: Subscription;\r\n\r\n readonly requestId = input<number | null | undefined>(null);\r\n readonly view = input<'approvals' | 'schema'>('approvals');\r\n\r\n protected readonly approvalColumns = [\r\n { key: 'stepName', label: 'Name' },\r\n { key: 'status', label: 'Status' },\r\n { key: 'user', label: 'User', type: 'entity' as const },\r\n { key: 'createdAt', label: 'Initiation Date', type: 'entity' as const },\r\n { key: 'actionDate', label: 'Action Date', type: 'entity' as const },\r\n ];\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly preview = signal<ProcessPreviewData | null>(null);\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n protected readonly approvalRows = computed(() =>\r\n (this.preview()?.steps ?? []).map((step) => ({\r\n stepName: display(step.stepName) || String(step.stepId ?? '--'),\r\n status: display(step.status) || '--',\r\n user: buildEntity(\r\n 'User',\r\n 'User',\r\n (step.actionUserInfo ?? step.targetUser ?? null) as any,\r\n ),\r\n createdAt: buildEntity(\r\n 'Initiation Date',\r\n 'DateTime',\r\n step.createdAt ?? '',\r\n ),\r\n actionDate: buildEntity('Action Date', 'DateTime', step.actionDate ?? ''),\r\n })),\r\n );\r\n protected readonly hasApprovals = computed(\r\n () => this.approvalRows().length > 0,\r\n );\r\n protected readonly schemaNodes = computed<Node[]>(() =>\r\n (this.preview()?.schema?.stepsSchema ?? []).map((step) => ({\r\n id: String(step.id),\r\n name: display(step.name) || String(step.id),\r\n color: step.isFinal ? '#059669' : step.isInitial ? '#2563eb' : '#0f172a',\r\n })),\r\n );\r\n protected readonly schemaConnections = computed<Connection[]>(() =>\r\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\r\n id: String(\r\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\r\n ),\r\n from: String(connection.source),\r\n to: String(connection.target),\r\n })),\r\n );\r\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\r\n\r\n constructor() {\r\n effect(() => {\r\n const requestId = this.requestId() ?? 0;\r\n\r\n if (requestId > 0) {\r\n untracked(() => this.loadPreview(requestId));\r\n return;\r\n }\r\n\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(false);\r\n this.error.set(null);\r\n this.preview.set(null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n }\r\n\r\n private loadPreview(requestId: number): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n this.loadSub = this.http\r\n .get<ApiEnvelope<ProcessPreviewData>>(`processes/${requestId}/preview`)\r\n .subscribe({\r\n next: (response) => {\r\n this.loading.set(false);\r\n this.preview.set(response.data ?? null);\r\n },\r\n error: (error) => {\r\n this.loading.set(false);\r\n this.preview.set(null);\r\n this.error.set(\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load process preview',\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction buildEntity(\r\n name: string,\r\n viewType: 'User' | 'DateTime',\r\n value: unknown,\r\n): EntityData {\r\n return {\r\n name,\r\n viewType,\r\n value: (value as any) ?? '',\r\n configuration: {\r\n hideName: true,\r\n },\r\n };\r\n}\r\n\r\nfunction display(value: unknown): string {\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'number' || typeof value === 'boolean') {\r\n return String(value);\r\n }\r\n\r\n if (!value || typeof value !== 'object') {\r\n return '';\r\n }\r\n\r\n const resolved = (value as { display?: unknown }).display;\r\n if (typeof resolved === 'string') {\r\n return resolved;\r\n }\r\n\r\n if (typeof resolved === 'number' || typeof resolved === 'boolean') {\r\n return String(resolved);\r\n }\r\n\r\n return '';\r\n}\r\n","@if (!canRenderPreview()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process preview is not available for this item yet.\r\n </p>\r\n </div>\r\n} @else if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"text-sm text-surface-500\">Loading process preview...</p>\r\n </div>\r\n} @else if (error()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">{{ error() }}</p>\r\n </div>\r\n} @else {\r\n @if (view() === \"schema\") {\r\n @if (hasSchema()) {\r\n <div class=\"h-[70vh] overflow-hidden rounded-lg\">\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [layoutDirection]=\"'LR'\"\r\n [readonly]=\"true\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process steps are not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n } @else if (hasApprovals()) {\r\n <mt-table\r\n [data]=\"approvalRows()\"\r\n [columns]=\"approvalColumns\"\r\n storageKey=\"work-center-process-preview-table\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [clickableRows]=\"false\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process approvals data is not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { WorkCenterProcessPreview } from '../../work-center-item-modal/work-center-process-preview/work-center-process-preview';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-request-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n WorkCenterProcessPreview,\r\n ],\r\n templateUrl: './work-center-process-request-type.html',\r\n})\r\nexport class WorkCenterProcessRequestType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('requestDetails');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>(\r\n 'workCenter.tabs.requestDetails',\r\n ),\r\n value: 'requestDetails',\r\n icon: 'file.file-03',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.approvals'),\r\n value: 'approvals',\r\n icon: 'custom.document-approval',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.steps'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly requestId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'requestId') ??\r\n readNumber(this.itemContext(), 'draftProcessId'),\r\n );\r\n protected readonly moduleKey = computed(\r\n () => readString(this.itemContext(), 'moduleKey') ?? '',\r\n );\r\n protected readonly operationKey = computed(\r\n () => readString(this.itemContext(), 'operationKey') ?? '',\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly requestSchemaId = computed(() =>\r\n readNumber(this.itemContext(), 'requestSchemaId'),\r\n );\r\n protected readonly draftProcessId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'draftProcessId') ??\r\n readNumber(this.itemContext(), 'requestId'),\r\n );\r\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.discussionRecordId() > 0,\r\n );\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'requestDetails'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [requestSchemaId]=\"requestSchemaId()\"\r\n [draftProcessId]=\"draftProcessId()\"\r\n [readonly]=\"true\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'approvals'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'approvals'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"discussionRecordId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { WorkCenterProcessPreview } from '../../work-center-item-modal/work-center-process-preview/work-center-process-preview';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-step-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n WorkCenterProcessPreview,\r\n ],\r\n templateUrl: './work-center-process-step-type.html',\r\n})\r\nexport class WorkCenterProcessStepType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('form');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.form'),\r\n value: 'form',\r\n icon: 'file.file-03',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.approvals'),\r\n value: 'approvals',\r\n icon: 'custom.document-approval',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.steps'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly requestId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'requestId') ??\r\n readNumber(this.itemContext(), 'draftProcessId'),\r\n );\r\n protected readonly moduleKey = computed(\r\n () => readString(this.itemContext(), 'moduleKey') ?? '',\r\n );\r\n protected readonly operationKey = computed(\r\n () => readString(this.itemContext(), 'operationKey') ?? '',\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly requestSchemaId = computed(() =>\r\n readNumber(this.itemContext(), 'requestSchemaId'),\r\n );\r\n protected readonly draftProcessId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'draftProcessId') ??\r\n readNumber(this.itemContext(), 'requestId'),\r\n );\r\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.discussionRecordId() > 0,\r\n );\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'form'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [requestSchemaId]=\"requestSchemaId()\"\r\n [draftProcessId]=\"draftProcessId()\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'approvals'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'approvals'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"discussionRecordId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, input } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\r\nimport { WorkCenterEscalationInstanceType } from '../work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type';\r\nimport { WorkCenterModuleType } from '../work-center-types/work-center-module-type/work-center-module-type';\r\nimport { WorkCenterProcessRequestType } from '../work-center-types/work-center-process-request-type/work-center-process-request-type';\r\nimport { WorkCenterProcessStepType } from '../work-center-types/work-center-process-step-type/work-center-process-step-type';\r\n\r\n@Component({\r\n selector: 'mt-work-center-item-modal',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n WorkCenterProcessStepType,\r\n WorkCenterProcessRequestType,\r\n WorkCenterEscalationInstanceType,\r\n WorkCenterModuleType,\r\n ],\r\n templateUrl: './work-center-item-modal.html',\r\n host: {\r\n class: 'block h-full min-h-0',\r\n },\r\n})\r\nexport class WorkCenterItemModal {\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (details().type === \"ProcessStep\") {\r\n <mt-work-center-process-step-type [details]=\"details()\" />\r\n } @else if (details().type === \"ProcessRequest\") {\r\n <mt-work-center-process-request-type [details]=\"details()\" />\r\n } @else if (details().type === \"EscalationInstance\") {\r\n <mt-work-center-escalation-instance-type [details]=\"details()\" />\r\n } @else if (details().type === \"Module\") {\r\n <mt-work-center-module-type [details]=\"details()\" />\r\n } @else {\r\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\r\n <p class=\"text-sm text-surface-500\">{{ t(\"modal.unsupportedType\") }}</p>\r\n </div>\r\n }\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Component,\n OnDestroy,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { Button } from '@masterteam/components/button';\nimport {\n RuntimeActionContextStore,\n RuntimeActionRunner,\n resolveActionLabel,\n} from '@masterteam/components/runtime-action';\nimport { Subscription, map } from 'rxjs';\n\nimport {\n ApiEnvelope,\n WorkCenterItemActionExecutionResult,\n WorkCenterItemActionsData,\n WorkCenterItemContextKey,\n WorkCenterRuntimeItemAction,\n} from '../../../store/work-center/work-center.model';\n\ntype FooterActionSeverity = 'primary' | 'secondary' | 'success' | 'danger';\ntype FooterActionVariant = 'outlined' | undefined;\n\ninterface ModalFooterAction extends WorkCenterRuntimeItemAction {\n label: string;\n severity: FooterActionSeverity;\n variant: FooterActionVariant;\n}\n\n@Component({\n selector: 'mt-work-center-item-modal-footer-actions',\n standalone: true,\n imports: [CommonModule, TranslocoDirective, Button],\n templateUrl: './work-center-item-modal-footer-actions.html',\n host: {\n class: 'flex w-full flex-1 flex-wrap items-center justify-end gap-2',\n },\n})\nexport class WorkCenterItemModalFooterActions implements OnDestroy {\n private readonly http = inject(HttpClient);\n private readonly runner = inject(RuntimeActionRunner);\n private readonly actionContext = inject(RuntimeActionContextStore);\n\n private loadSub?: Subscription;\n private lastContextKey: WorkCenterItemContextKey | null = null;\n private currentExecution: { actionKey: string; cancelled: boolean } | null =\n null;\n\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\n readonly actionExecuted = output<WorkCenterItemActionExecutionResult>();\n readonly visibilityChange = output<boolean>();\n\n private readonly reloadTick = signal(0);\n private readonly hasResolvedLoad = signal(false);\n protected readonly loading = signal(false);\n protected readonly error = signal<string | null>(null);\n protected readonly actions = signal<WorkCenterRuntimeItemAction[]>([]);\n protected readonly pendingActionKey = signal<string | null>(null);\n protected readonly displayActions = computed<ModalFooterAction[]>(() =>\n this.actions()\n .filter(\n (action) =>\n action.isAvailable !== false &&\n !!action.url &&\n !!normalizeMethod(action.httpMethod),\n )\n .map((action, index) => ({\n ...action,\n label: resolveActionLabel(action),\n severity: resolveActionSeverity(action.actionKey, index),\n variant: resolveActionVariant(action.actionKey, index),\n })),\n );\n protected readonly shouldRender = computed(\n () =>\n !!this.contextKey() &&\n (!this.hasResolvedLoad() ||\n this.loading() ||\n !!this.error() ||\n this.displayActions().length > 0 ||\n !!this.pendingActionKey()),\n );\n\n constructor() {\n effect(() => {\n const contextKey = this.contextKey();\n this.reloadTick();\n this.error.set(null);\n\n if (!contextKey) {\n this.lastContextKey = null;\n this.actions.set([]);\n this.loading.set(false);\n this.hasResolvedLoad.set(false);\n return;\n }\n\n if (contextKey !== this.lastContextKey) {\n this.actions.set([]);\n this.lastContextKey = contextKey;\n }\n\n untracked(() => this.loadActions(contextKey));\n });\n\n effect(() => {\n this.visibilityChange.emit(this.shouldRender());\n });\n }\n\n ngOnDestroy(): void {\n this.loadSub?.unsubscribe();\n if (this.currentExecution) {\n this.currentExecution.cancelled = true;\n }\n }\n\n protected async executeAction(action: ModalFooterAction): Promise<void> {\n if (this.pendingActionKey()) {\n return;\n }\n\n this.error.set(null);\n this.pendingActionKey.set(action.actionKey);\n const execution = { actionKey: action.actionKey, cancelled: false };\n this.currentExecution = execution;\n\n const result = await this.runner.execute(action, {\n defaultAfterSuccess: 'refresh',\n externalPayloadResolvers: {\n values: () => this.actionContext.resolveFormValues(),\n },\n });\n\n if (execution.cancelled) {\n return;\n }\n\n this.pendingActionKey.set(null);\n this.currentExecution = null;\n\n if (result.status === 'cancelled') {\n return;\n }\n\n if (result.status === 'error') {\n const message =\n result.error instanceof Error\n ? result.error.message\n : `Failed to execute ${action.label}.`;\n this.error.set(message);\n return;\n }\n\n const afterSuccess = result.afterSuccess ?? 'refresh';\n\n if (afterSuccess === 'refresh') {\n this.reloadTick.update((value) => value + 1);\n }\n\n this.actionExecuted.emit({\n actionKey: result.actionKey,\n afterSuccess,\n });\n }\n\n private loadActions(contextKey: WorkCenterItemContextKey): void {\n this.loadSub?.unsubscribe();\n this.loading.set(true);\n this.hasResolvedLoad.set(false);\n\n this.loadSub = this.http\n .get<ApiEnvelope<WorkCenterItemActionsData>>(\n 'workcenter/runtime/item-actions',\n {\n params: { contextKey },\n },\n )\n .pipe(\n map((response) => {\n if (response.code === 1) {\n return response.data.actions ?? [];\n }\n\n throw new Error(\n resolveEnvelopeErrorMessage(\n response,\n 'Failed to load item actions.',\n ),\n );\n }),\n )\n .subscribe({\n next: (actions) => {\n this.actions.set(actions);\n this.loading.set(false);\n this.hasResolvedLoad.set(true);\n },\n error: (error: unknown) => {\n this.actions.set([]);\n this.loading.set(false);\n this.hasResolvedLoad.set(true);\n this.error.set(\n resolveHttpErrorMessage(error, 'Failed to load item actions.'),\n );\n },\n });\n }\n}\n\nfunction normalizeMethod(value: string | null | undefined): string | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const method = value.trim().toUpperCase();\n return method.length ? method : null;\n}\n\nfunction resolveActionSeverity(\n actionKey: string,\n index: number,\n): FooterActionSeverity {\n const normalized = actionKey.trim().toLowerCase();\n if (normalized === 'approve') {\n return 'success';\n }\n\n if (\n normalized === 'close' ||\n normalized === 'delete' ||\n normalized === 'reject' ||\n normalized === 'cancel'\n ) {\n return 'danger';\n }\n\n return index === 0 ? 'primary' : 'secondary';\n}\n\nfunction resolveActionVariant(\n actionKey: string,\n index: number,\n): FooterActionVariant {\n const severity = resolveActionSeverity(actionKey, index);\n return severity === 'primary' || severity === 'success'\n ? undefined\n : 'outlined';\n}\n\nfunction resolveEnvelopeErrorMessage(\n response: { message?: string | null; errors?: unknown } | null | undefined,\n fallback: string,\n): string {\n return (\n (response?.errors as { message?: string } | null)?.message ??\n response?.message ??\n fallback\n );\n}\n\nfunction resolveHttpErrorMessage(error: unknown, fallback: string): string {\n if (!error || typeof error !== 'object') {\n return fallback;\n }\n\n const httpError = error as {\n message?: string;\n error?: { message?: string | null } | null;\n };\n\n return httpError.error?.message ?? httpError.message ?? fallback;\n}\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (shouldRender()) {\r\n @if (error(); as error) {\r\n <span class=\"me-auto max-w-md text-sm text-red-600\">\r\n {{ error }}\r\n </span>\r\n } @else if (loading() && !displayActions().length) {\r\n <span class=\"me-auto text-sm text-surface-500\">{{\r\n t(\"modal.loadingActions\")\r\n }}</span>\r\n }\r\n\r\n @for (action of displayActions(); track action.actionKey + action.url) {\r\n <mt-button\r\n [label]=\"action.label\"\r\n [severity]=\"action.severity\"\r\n [variant]=\"action.variant\"\r\n [disabled]=\"loading() || !!pendingActionKey()\"\r\n [loading]=\"pendingActionKey() === action.actionKey\"\r\n (onClick)=\"executeAction(action)\"\r\n />\r\n }\r\n }\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Drawer } from '@masterteam/components/drawer';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { map } from 'rxjs';\r\n\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterItemActionExecutionResult,\r\n WorkCenterItemBasicInfoData,\r\n WorkCenterItemContextKey,\r\n} from '../../store/work-center/work-center.model';\r\nimport { WorkCenterItemModal } from '../work-center-item-modal/work-center-item-modal';\r\nimport { WorkCenterItemModalFooterActions } from './work-center-item-modal-footer-actions/work-center-item-modal-footer-actions';\r\n\r\n@Component({\r\n selector: 'mt-work-center-item-modal-route',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Drawer,\r\n SkeletonModule,\r\n WorkCenterItemModal,\r\n WorkCenterItemModalFooterActions,\r\n ],\r\n providers: [RuntimeActionContextStore],\r\n templateUrl: './work-center-item-modal-route.html',\r\n})\r\nexport class WorkCenterItemModalRoute {\r\n private readonly http = inject(HttpClient);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly modal = inject(ModalService);\r\n\r\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\r\n protected readonly drawerVisible = signal(true);\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly details = signal<WorkCenterItemBasicInfoData | null>(null);\r\n protected readonly detailsReloadTick = signal(0);\r\n protected readonly footerActionsMounted = signal(false);\r\n protected readonly resolvedContextKey = computed(() =>\r\n this.decodeContextKey(this.contextKey()),\r\n );\r\n protected readonly drawerTitle = computed(\r\n () =>\r\n this.readDisplayField(this.details()?.item, 'title') ||\r\n this.transloco.translate<string>('workCenter.page.itemDetails'),\r\n );\r\n protected readonly drawerSubtitle = computed(\r\n () => this.readDisplayField(this.details()?.item, 'subtitle') ?? '',\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n this.footerActionsMounted.set(!!this.resolvedContextKey());\r\n });\r\n\r\n effect((onCleanup) => {\r\n const contextKey = this.resolvedContextKey();\r\n const reloadTick = this.detailsReloadTick();\r\n\r\n console.log('[work-center-debug] modal route load effect', {\r\n contextKey,\r\n reloadTick,\r\n });\r\n\r\n this.error.set(null);\r\n this.details.set(null);\r\n\r\n if (!contextKey) {\r\n this.loading.set(false);\r\n console.log(\r\n '[work-center-debug] modal route load skipped, no context key',\r\n );\r\n return;\r\n }\r\n\r\n this.loading.set(true);\r\n console.log('[work-center-debug] modal route fetch start', {\r\n endpoint: 'workcenter/runtime/item-basic-info',\r\n contextKey,\r\n });\r\n\r\n const subscription = this.http\r\n .get<ApiEnvelope<WorkCenterItemBasicInfoData>>(\r\n 'workcenter/runtime/item-basic-info',\r\n {\r\n params: { contextKey },\r\n },\r\n )\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) {\r\n return response.data;\r\n }\r\n\r\n throw new Error(this.resolveErrorMessage(response));\r\n }),\r\n )\r\n .subscribe({\r\n next: (details) => {\r\n console.log('[work-center-debug] modal route fetch success', {\r\n contextKey,\r\n details,\r\n });\r\n this.details.set(details);\r\n this.loading.set(false);\r\n },\r\n error: (error: unknown) => {\r\n console.error('[work-center-debug] modal route fetch failed', {\r\n contextKey,\r\n error,\r\n });\r\n this.error.set(\r\n error instanceof Error\r\n ? error.message\r\n : this.transloco.translate<string>(\r\n 'workCenter.error.failedLoadDetails',\r\n ),\r\n );\r\n this.loading.set(false);\r\n },\r\n });\r\n\r\n onCleanup(() => subscription.unsubscribe());\r\n });\r\n }\r\n\r\n protected onActionExecuted(\r\n result: WorkCenterItemActionExecutionResult,\r\n ): void {\r\n if (result.afterSuccess === 'close') {\r\n void this.closeRouteOutlet();\r\n return;\r\n }\r\n\r\n this.detailsReloadTick.update((value) => value + 1);\r\n }\r\n\r\n protected onFooterVisibilityChange(visible: boolean): void {\r\n this.footerActionsMounted.set(visible);\r\n }\r\n\r\n async onVisibleChange(visible: boolean): Promise<void> {\r\n this.drawerVisible.set(visible);\r\n\r\n console.log('[work-center-debug] modal route visible change', { visible });\r\n\r\n if (visible) {\r\n return;\r\n }\r\n\r\n await this.closeRouteOutlet();\r\n }\r\n\r\n private closeRouteOutlet(): Promise<boolean> {\r\n console.log('[work-center-debug] modal route closing', {\r\n outlet: this.route.outlet || 'sidebar',\r\n parentUrl: this.route.parent?.snapshot.url.map((segment) => segment.path),\r\n });\r\n\r\n return this.router\r\n .navigate([{ outlets: { [this.route.outlet || 'sidebar']: null } }], {\r\n relativeTo: this.route.parent,\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n })\r\n .then((success) => {\r\n console.log('[work-center-debug] modal route close navigate result', {\r\n success,\r\n currentUrl: this.router.url,\r\n });\r\n return success;\r\n });\r\n }\r\n\r\n private decodeContextKey(\r\n value: WorkCenterItemContextKey | null,\r\n ): WorkCenterItemContextKey | null {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n try {\r\n return decodeURIComponent(value);\r\n } catch {\r\n return value;\r\n }\r\n }\r\n\r\n private resolveErrorMessage(\r\n response: ApiEnvelope<WorkCenterItemBasicInfoData>,\r\n ): string {\r\n const fallbackError = 'Failed to load item details.';\r\n return (\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError\r\n );\r\n }\r\n\r\n private readDisplayField(\r\n item: Record<string, unknown> | null | undefined,\r\n key: string,\r\n ): string | null {\r\n const field = item?.[key];\r\n if (typeof field === 'string' && field.trim().length) {\r\n return field;\r\n }\r\n\r\n if (!field || typeof field !== 'object') {\r\n return null;\r\n }\r\n\r\n const display = (field as { display?: unknown }).display;\r\n return typeof display === 'string' && display.trim().length\r\n ? display\r\n : null;\r\n }\r\n}\r\n","<mt-drawer\r\n [visible]=\"drawerVisible()\"\r\n [loadingHeader]=\"loading()\"\r\n [title]=\"drawerTitle()\"\r\n [subtitle]=\"drawerSubtitle()\"\r\n styleClass=\"mt-work-center-item-drawer !absolute !w-[96vw] md:!w-[84vw] xl:!w-[70vw]\"\r\n position=\"right\"\r\n [modal]=\"true\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <ng-container content>\r\n @if (loading()) {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] flex-col gap-5\">\r\n <div class=\"flex items-center gap-3\">\r\n <p-skeleton shape=\"circle\" size=\"3rem\" />\r\n <div class=\"flex flex-1 flex-col gap-2\">\r\n <p-skeleton width=\"12rem\" height=\"1rem\" />\r\n <p-skeleton width=\"8rem\" height=\"0.875rem\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid gap-3 md:grid-cols-2\">\r\n @for (_ of [1, 2, 3, 4]; track $index) {\r\n <p-skeleton height=\"5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n\r\n <p-skeleton height=\"16rem\" class=\"rounded-lg\" />\r\n </div>\r\n </div>\r\n } @else if (error(); as errorMessage) {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] items-center justify-center\">\r\n <p class=\"max-w-xl text-sm font-medium text-red-600\">\r\n {{ errorMessage }}\r\n </p>\r\n </div>\r\n </div>\r\n } @else if (details(); as details) {\r\n <div [class]=\"modal.contentClass + ' h-full min-h-0'\">\r\n <mt-work-center-item-modal [details]=\"details\" />\r\n </div>\r\n } @else {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] items-center justify-center\">\r\n <p class=\"text-sm font-medium text-surface-500\">\r\n {{ t(\"modal.noItemSelected\") }}\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n @if (footerActionsMounted()) {\r\n <div footer [class]=\"modal.footerClass\">\r\n <mt-work-center-item-modal-footer-actions\r\n [contextKey]=\"resolvedContextKey()\"\r\n (actionExecuted)=\"onActionExecuted($event)\"\r\n (visibilityChange)=\"onFooterVisibilityChange($event)\"\r\n />\r\n </div>\r\n }\r\n</mt-drawer>\r\n","import { WorkCenterState } from './work-center';\r\n\r\nexport const APP_STATES = [WorkCenterState];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["toLabel","readString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2Ba,yBAAyB,CAAA;AAC3B,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;IACtB,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACvD,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE5C,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAiC;AACtD,IAAA,YAAY,GAAG,KAAK,CAAS,QAAQ,mFAAC;AACtC,IAAA,OAAO,GAAG,KAAK,CAAiB,EAAE,8EAAC;AAEnC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,gFAAC;AACjD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,+EAAC;AAC9D,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,8EAAC;AAC5D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,kFAAC;AACpE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,mFACxC;IACQ,QAAQ,GAAG,QAAQ,CAAoB,MAC9C,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK;AAC3C,UAAE;UACA,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACb;AAEQ,IAAA,iBAAiB,GAAG,MAAM,CAAgB,IAAI,wFAAC;AAC/C,IAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,kFAAC;AACzC,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AAC5B,IAAA,YAAY,GAAG,MAAM,CAAgC,IAAI,mFAAC;IAEnE,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE;AACjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACxB,IAAI,CAAC,SAAS,CAAC,SAAS,CACtB,0CAA0C,CAC3C,CACF;YACD;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;IAC7B;AAEA,IAAA,WAAW,CAAC,QAAmC,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,QAAA,MAAM,MAAM,GACV,QAAQ,CAAC,MAAM,KAAK,iBAAiB,GAAG,SAAS,GAAG,UAAU;AAChE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAE7B,QAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACtB;IACF;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,KAAK;YACH,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,+BAA+B,CAAC,CACpE;IACH;AAEQ,IAAA,QAAQ,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvD,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACpD,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,OAAO,MAAM;YACf;QACF;AAEA,QAAA,OAAO,SAAS;IAClB;uGAlFW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMM,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCtD,g8DAiEA,4CDzCY,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGrC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACE,kCAAkC,EAAA,UAAA,EAChC,IAAI,EAAA,OAAA,EACP,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,g8DAAA,EAAA;6FASP,UAAU,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEzBzC,SAAS,CAAA;AAGD,IAAA,IAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,yBAAyB;AAEhD,IAAA,WAAA,CAAmB,IAAoB,EAAA;QAApB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAmB;;MAG/B,kBAAkB,CAAA;AAIpB,IAAA,IAAA;AACA,IAAA,KAAA;AAJT,IAAA,OAAgB,IAAI,GAAG,mCAAmC;IAE1D,WAAA,CACS,IAAoB,EACpB,KAA6B,EAAA;QAD7B,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,KAAK,GAAL,KAAK;IACX;;MAGQ,SAAS,CAAA;AAIX,IAAA,IAAA;AACA,IAAA,MAAA;AAJT,IAAA,OAAgB,IAAI,GAAG,yBAAyB;IAEhD,WAAA,CACS,IAAoB,EACpB,MAAiC,EAAA;QADjC,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,MAAM,GAAN,MAAM;IACZ;;MAGQ,UAAU,CAAA;AAGF,IAAA,OAAA;AAFnB,IAAA,OAAgB,IAAI,GAAG,0BAA0B;AAEjD,IAAA,WAAA,CAAmB,OAA0B,EAAA;QAA1B,IAAA,CAAA,OAAO,GAAP,OAAO;IAAsB;;MAGrC,WAAW,CAAA;AAIb,IAAA,IAAA;AACA,IAAA,MAAA;AAJT,IAAA,OAAgB,IAAI,GAAG,2BAA2B;IAElD,WAAA,CACS,IAAoB,EACpB,MAAA,GAA+B,QAAQ,EAAA;QADvC,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,MAAM,GAAN,MAAM;IACZ;;;ICjCO;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAFW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;AAIxB,MAAM,yBAAyB,GAAG;AAClC,MAAM,yBAAyB,GAAG;AAClC,MAAM,uBAAuB,GAAG;AAChC,MAAM,oBAAoB,GAAG;;ACKpC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAClE,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AACjE,MAAM,4BAA4B,GAAG,yBAAyB;AAS9D,MAAM,gBAAgB,GAAkC,IAAI,GAAG,CAAC;IAC9D,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,UAAU;IACV,YAAY;IACZ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,SAAS;IACT,QAAQ;IACR,WAAW;AACZ,CAAA,CAAC;AAEF,SAAS,SAAS,CAAC,KAAyB,EAAE,QAAQ,GAAG,CAAC,EAAA;AACxD,IAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,QAAQ;AAC5C,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;AACjD;AAEA,SAAS,aAAa,CACpB,KAAyB,EACzB,QAAQ,GAAG,4BAA4B,EAAA;AAEvC,IAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,QAAQ;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC;AAC1C,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE;AAEA,SAAS,YAAY,CACnB,KAAuC,EAAA;AAEvC,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;AACpC,IAAA,OAAO;SACJ,MAAM,CACL,CAAC,IAAI,KACH,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AACrB,SAAC,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC;AAE9C,SAAA,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACnC;AAEA,SAAS,eAAe,CACtB,OAA2C,EAAA;AAE3C,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,EAAE;AAEtC,IAAA,OAAO;SACJ,MAAM,CACL,CAAC,MAAM,KACL,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ;AACjC,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AACvB,QAAA,OAAO,MAAM,EAAE,EAAE,KAAK,QAAQ;AAC9B,QAAA,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AAElC,SAAA,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC;AACtC;AAEA,SAAS,SAAS,CAAC,KAAc,EAAA;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK;AAC3C,IAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAAE,QAAA,OAAO,IAAI;AAE9B,IAAA,IAAI;AACF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAAE,QAAA,OAAO,IAAI;AACtE,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;AAC5D;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI;AAC1C,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE;IAC3B,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI;AACtC;AAEA,SAAS,cAAc,CAAC,KAAc,EAAA;AACpC,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;AAC/B,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;AACzB,UAAE,YAAY,CAAC,MAA8B;UAC3C,EAAE;AACR;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;AAC/B,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;AACzB,UAAE,eAAe,CAAC,MAAgC;UAChD,EAAE;AACR;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAC9D;AAEA,SAASA,SAAO,CAAC,KAAa,EAAA;AAC5B,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;AAC/C,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,OAAO,EAAE,GAAG;AACpB,SAAA,OAAO,CAAC,iBAAiB,EAAE,OAAO;AAClC,SAAA,OAAO,CAAC,MAAM,EAAE,GAAG;AACnB,SAAA,IAAI;AACJ,SAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACnD;AAEA,SAAS,UAAU,CAAC,QAA4B,EAAE,GAAW,EAAA;AAC3D,IAAA,IAAI,QAAQ,EAAE,IAAI,EAAE,EAAE;AACpB,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM;AAC7D;AAEA,SAAS,kBAAkB,CAAC,GAAW,EAAA;AACrC,IAAA,OAAO;AACJ,SAAA,IAAI;AACJ,SAAA,WAAW;AACX,SAAA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7B;AAEA,SAAS,mBAAmB,CAAC,GAAW,EAAA;AACtC,IAAA,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC;AAE7C,IAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,EAAE;AAC9C,IAAA,IACE,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;AAClC,QAAA,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EACrC;AACA,QAAA,OAAO,EAAE;IACX;AACA,IAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAAE,QAAA,OAAO,EAAE;AAC/C,IAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;AAAE,QAAA,OAAO,EAAE;AACjD,IAAA,IACE,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;AACnC,QAAA,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;AACpC,QAAA,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/B,QAAA,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC9B;AACA,QAAA,OAAO,EAAE;IACX;AACA,IAAA,IACE,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;AACjC,QAAA,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;AACnC,QAAA,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;AACnC,QAAA,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC9B;AACA,QAAA,OAAO,EAAE;IACX;AACA,IAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;AAAE,QAAA,OAAO,EAAE;AAEjD,IAAA,OAAO,EAAE;AACX;AAEA,SAAS,sBAAsB,CAC7B,OAAgC,EAAA;IAEhC,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,KAAI;AAC1D,QAAA,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI;AACvB,cAAE;cACA,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7C,CAAC,EAAE,CAAC,CAAC;IAEL,IAAI,CAAC,kBAAkB,EAAE;AACvB,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAC5B,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;AACxB,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,MAAM,KAAK,GAAG,CACZ,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB;AACrD,YAAA,GAAG,EACH,OAAO,CAAC,CAAC,CAAC;QAEZ,OAAO;AACL,YAAA,GAAG,MAAM;YACT,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG;SACnB;AACH,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,QAAQ,CAAC,MAA+B,EAAE,GAAW,EAAA;AAC5D,IAAA,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAU,CAAC,OAAO,EAAE,IAAI,KAAI;QACtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC3C,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,OAAQ,OAAmC,CAAC,IAAI,CAAC;IACnD,CAAC,EAAE,MAAM,CAAC;AACZ;AAEA,SAAS,iBAAiB,CACxB,GAA4B,EAAA;AAE5B,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC;AAE1B,IAAA,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/D,QAAA,OAAO,GAAG;IACZ;IAEA,OAAO;AACL,QAAA,GAAI,KAAiC;AACrC,QAAA,GAAG,GAAG;KACP;AACH;AAEA,SAAS,cAAc,CACrB,KAAc,EACd,MAA6B,EAAA;AAE7B,IAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC9B,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,OAAO,GAAI,KAAiC,CAAC,SAAS,CAAC;AAC7D,IAAA,OAAO,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAK;AACtD;AAEA,SAAS,0BAA0B,CACjC,UAAuC,EAAA;AAEvC,IAAA,OAAO;SACJ,MAAM,CACL,CAAC,QAAQ,KACP,OAAO,QAAQ,EAAE,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;AAE/D,SAAA,GAAG,CAAC,CAAC,QAAQ,MAAM;AAClB,QAAA,GAAG,QAAQ;QACX,GAAG,EAAE,QAAQ,CAAC,GAAG;AACjB,QAAA,KAAK,EACH,QAAQ,CAAC,IAAI,EAAE,OAAO;YACtB,QAAQ,CAAC,IAAI,EAAE,EAAE;YACjB,QAAQ,CAAC,IAAI,EAAE,EAAE;AACjB,YAAAA,SAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,EAAE,QAAiB;QACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC;AACtD,KAAA,CAAC,CAAC;AACP;AAEA,SAAS,YAAY,CACnB,aAAyD,EAAA;IAEzD,MAAM,eAAe,GAAG,0BAA0B,CAChD,aAAa,EAAE,UAAU,IAAI,EAAE,CAChC;AACD,IAAA,IAAI,eAAe,CAAC,MAAM,EAAE;AAC1B,QAAA,OAAO,sBAAsB,CAAC,eAAe,CAAC;IAChD;AAEA,IAAA,MAAM,IAAI,GAAG,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,GAAG,EAAE;IACxE,OAAO,sBAAsB,CAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;QACjB,GAAG;AACH,QAAA,KAAK,EAAEA,SAAO,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,EAAE,QAAiB;AACvB,QAAA,QAAQ,EAAE,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC;KACrC,CAAC,CAAC,CACJ;AACH;AAEA,SAAS,aAAa,CACpB,IAA+B,EAC/B,OAAgC,EAAA;AAEhC,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACtB,QAAA,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,UAAU,GAAG,EAAE,GAAG,SAAS,EAAE;AAEnC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC;AAC7C,YAAA,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;AACvB,gBAAA,GAAG,MAAM;AACT,gBAAA,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;aACrC;QACH;AAEA,QAAA,OAAO,UAAU;AACnB,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,cAAc,CAAC,KAA8B,EAAA;AACpD,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;QACzC,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EACH,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,IAAIA,SAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3E,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;QACtB,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAChC,QAAA,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,KAAK;AACxC,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC;AAC3D,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM;IAEpD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;QAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;QACtB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AACjC,KAAA,CAAC,CAAC;AACL;AAEA,SAAS,SAAS,CAChB,KAAmC,EACnC,YAA2B,EAAA;IAE3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;QACjC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC9B,QAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;AAC5B,QAAA,IAAI,GAAG,YAAY,IAAI,aAAa,CAAQ;QAC5C,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;AAC7C,KAAA,CAAC,CAAC;AACL;AAEA,SAAS,oBAAoB,CAAC,IAAoB,EAAA;IAChD,OAAO;QACL,IAAI;AACJ,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,QAAQ,EAAE,4BAA4B;AACtC,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,YAAY,EAAE,IAAI;KACnB;AACH;AAEA,SAAS,sBAAsB,CAAC,IAAoB,EAAA;IAClD,OAAO;AACL,QAAA,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC;AACnC,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,mBAAmB,EAAE,IAAI;AACzB,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,YAAY,EAAE,IAAI;KACnB;AACH;AAEO,MAAM,yBAAyB,GAAyB;AAC7D,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC;AAC1C,QAAA,WAAW,EAAE,sBAAsB,CAAC,aAAa,CAAC;AACnD,KAAA;AACD,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,MAAM,EAAE,EAAE;CACX;AAEK,SAAU,gBAAgB,CAC9B,OAA0B,EAAA;IAE1B,OAAO;AACL,QAAA,GAAG,OAAO;QACV,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,4BAA4B,CAAC;AACvE,QAAA,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,QAAA,cAAc,EAAE,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC;KACxD;AACH;AAEM,SAAU,sBAAsB,CACpC,cAAiC,EACjC,IAAoB,EACpB,SAAoC,EAAE,EAAA;IAEtC,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;IACpD,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;IACzD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7C,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;AAErD,IAAA,OAAO,gBAAgB,CAAC;AACtB,QAAA,GAAG,cAAc;QACjB,IAAI;AACJ,QAAA,eAAe,EAAE,aAAa,IAAI,cAAc,CAAC,eAAe;AAChE,QAAA,IAAI,EAAE,UAAU,IAAI,cAAc,CAAC,IAAI;AACvC,QAAA,QAAQ,EAAE,cAAc,IAAI,cAAc,CAAC,QAAQ;AACnD,QAAA,UAAU,EAAE,gBAAgB,IAAI,cAAc,CAAC,UAAU;AACzD,QAAA,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI;AAC7B,cAAE,cAAc,CAAC,MAAM,CAAC,IAAI;AAC5B,cAAE,MAAM,CAAC,IAAI,KAAK;AAChB,kBAAE;kBACA,cAAc,CAAC,IAAI;AACzB,QAAA,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO;AAC1C,cAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO;AAClC,cAAE,MAAM,CAAC,OAAO,KAAK;AACnB,kBAAE;kBACA,cAAc,CAAC,cAAc;AACpC,KAAA,CAAC;AACJ;AAEM,SAAU,aAAa,CAC3B,IAAuB,EACvB,KAAwB,EAAA;AAExB,IAAA,QACE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;AACpC,QAAA,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;AAC9C,QAAA,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;AAChC,QAAA,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AACxD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC;AAEhF;AAEM,SAAU,kBAAkB,CAChC,OAA4B,EAC5B,QAAuC,EAAA;AAEvC,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY;IAC1C,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChD,IAAA,MAAM,gBAAgB,GACpB,YAAY,EAAE,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI;IAC9D,MAAM,eAAe,GACnB,gBAAgB;AAChB,QAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,gBAAgB;AACzD,UAAE;WACC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;IAC3D,MAAM,oBAAoB,GAAG;WACxB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,eAAe,CAAC,IAAI,IAAI;UACpE,IAAI;AACR,IAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CACrC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,eAAe,CACvC;AACD,IAAA,MAAM,OAAO,GAAG,YAAY,CAC1B,YAAY,EAAE,aAAa,IAAI,oBAAoB,EAAE,aAAa,CACnE;AACD,IAAA,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC;AAC9D,IAAA,MAAM,IAAI,GAAG,SAAS,CACpB,YAAY,EAAE,KAAK,IAAI,EAAE,EACzB,gBAAgB,EAAE,IAAI,IAAI,IAAI,CAC/B;IAED,OAAO;AACL,QAAA,GAAG,OAAO;QACV,SAAS;QACT,IAAI;QACJ,OAAO;QACP,IAAI;QACJ,mBAAmB,EACjB,YAAY,EAAE,mBAAmB;AACjC,YAAA,oBAAoB,EAAE,mBAAmB;YACzC,IAAI;AACN,QAAA,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,IAAI,CAAC;AACpD,QAAA,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;AACjC,QAAA,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACtC,QAAA,OAAO,EAAE;YACP,GAAG,OAAO,CAAC,OAAO;YAClB,eAAe;YACf,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI;YAC3D,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ;AACxE,SAAA;KACF;AACH;;;;;;;;ACtdO,IAAM,eAAe,GAArB,MAAM,eAAe,CAAA;AACT,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAGnC,IAAP,OAAO,QAAQ,CAAC,KAA2B,EAAA;AACzC,QAAA,OAAO,KAAK;IACd;AAGO,IAAP,OAAO,UAAU,CAAC,KAA2B,EAAA;QAC3C,OAAO,KAAK,CAAC,UAAU;IACzB;AAGO,IAAP,OAAO,cAAc,CACnB,UAA0B,EAC1B,KAA2B,EAAA;AAE3B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;IACjC;AAGO,IAAP,OAAO,OAAO,CAAC,QAA6B,EAAA;QAC1C,OAAO,QAAQ,CAAC,OAAO;IACzB;AAGO,IAAP,OAAO,SAAS,CAAC,QAA6B,EAAA;QAC5C,OAAO,QAAQ,CAAC,SAAS;IAC3B;AAGO,IAAP,OAAO,IAAI,CAAC,QAA6B,EAAA;QACvC,OAAO,QAAQ,CAAC,IAAI;IACtB;AAGO,IAAP,OAAO,OAAO,CAAC,QAA6B,EAAA;QAC1C,OAAO,QAAQ,CAAC,OAAO;IACzB;AAGO,IAAP,OAAO,IAAI,CAAC,QAA6B,EAAA;QACvC,OAAO,QAAQ,CAAC,IAAI;IACtB;AAGO,IAAP,OAAO,mBAAmB,CACxB,QAA6B,EAAA;QAE7B,OAAO,QAAQ,CAAC,mBAAmB;IACrC;AAGO,IAAP,OAAO,UAAU,CAAC,QAA6B,EAAA;QAC7C,OAAO,QAAQ,CAAC,UAAU;IAC5B;AAGO,IAAP,OAAO,QAAQ,CAAC,QAA6B,EAAA;QAC3C,OAAO,QAAQ,CAAC,QAAQ;IAC1B;AAGO,IAAP,OAAO,OAAO,CAAC,KAA2B,EAAA;QACxC,OAAO,KAAK,CAAC,OAAO;IACtB;AAGO,IAAP,OAAO,gBAAgB,CAAC,KAA2B,EAAA;QACjD,OAAO,KAAK,CAAC,aAAa;IAC5B;AAGO,IAAP,OAAO,SAAS,CAAC,KAA2B,EAAA;QAC1C,OAAO,KAAK,CAAC,MAAM;IACrB;IAGA,SAAS,CAAC,GAAuC,EAAE,MAAiB,EAAA;QAClE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;YAAE;QAC/C,GAAG,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7C;IAGA,kBAAkB,CAChB,GAAuC,EACvC,MAA0B,EAAA;AAE1B,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACzC,MAAM,WAAW,GAAG,gBAAgB,CAAC;YACnC,GAAG,OAAO,CAAC,OAAO;YAClB,GAAG,MAAM,CAAC,KAAK;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;AAClB,SAAA,CAAC;AAEF,QAAA,IACE,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;YAChC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,EAC3C;YACA;QACF;QAEA,GAAG,CAAC,UAAU,CAAC;YACb,UAAU,EAAE,MAAM,CAAC,IAAI;AACvB,YAAA,MAAM,EAAE;gBACN,GAAG,KAAK,CAAC,MAAM;AACf,gBAAA,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE;AACpD,aAAA;AACF,SAAA,CAAC;IACJ;IAGA,SAAS,CAAC,GAAuC,EAAE,MAAiB,EAAA;AAClE,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,QAAA,MAAM,WAAW,GAAG,sBAAsB,CACxC,OAAO,CAAC,OAAO,EACf,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,MAAM,CACd;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;QACpD,MAAM,cAAc,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;AACnE,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,CACjD,mBAAmB,CAAC,WAAW,CAChC;QACD,MAAM,UAAU,GACd,WAAW;YACX,cAAc;aACb,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC;AAE5C,QAAA,IAAI,WAAW,IAAI,cAAc,EAAE;YACjC,GAAG,CAAC,UAAU,CAAC;gBACb,UAAU,EAAE,MAAM,CAAC,IAAI;AACvB,gBAAA,MAAM,EAAE;oBACN,GAAG,KAAK,CAAC,MAAM;AACf,oBAAA,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE;AACpD,iBAAA;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,UAAU;YAAE;AACjB,QAAA,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAClE;IAGA,UAAU,CACR,GAAuC,EACvC,MAAkB,EAAA;QAElB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE;YAC7C;QACF;QAEA,GAAG,CAAC,UAAU,CAAC;AACb,YAAA,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE;AAC7D,SAAA,CAAC;IACJ;IAGA,WAAW,CAAC,GAAuC,EAAE,MAAmB,EAAA;AACtE,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC;AACnD,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,GAAG,SAAS;AACZ,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,UAAU,EAAE,CAAC;SACd;QAED,GAAG,CAAC,UAAU,CAAC;AACb,YAAA,MAAM,EAAE;gBACN,GAAG,KAAK,CAAC,MAAM;AACf,gBAAA,CAAC,MAAM,CAAC,IAAI,GAAG,aAAa;AAC7B,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,OAAO,gBAAgB,CAAC;YACtB,GAAG;YACH,GAAG,EAAE,mBAAmB,CAAC,WAAW;AACpC,YAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAClC,YAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAI;gBACnC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC/C,OAAO;AACL,oBAAA,MAAM,EAAE;wBACN,GAAG,WAAW,CAAC,MAAM;wBACrB,CAAC,MAAM,CAAC,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC;AACrD,qBAAA;iBACF;YACH,CAAC;AACD,YAAA,YAAY,EAAE,qCAAqC;SACpD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC;AAEQ,IAAA,UAAU,CAAC,OAAiC,EAAA;QAClD,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAEH,oBAAoB,EAAE,OAAO;AAC9B,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,QAAQ,CAAC,IAAI;YAE7C,MAAM,aAAa,GAAG,qCAAqC;AAC3D,YAAA,MAAM,OAAO,GACV,QAAQ,CAAC,MAAsC,EAAE,OAAO;AACzD,gBAAA,QAAQ,CAAC,OAAO;AAChB,gBAAA,aAAa;AAEf,YAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC,CAAC,CACH;IACL;uGAvNW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAf,eAAe,EAAA,CAAA;;AA+E1B,UAAA,CAAA;IADC,MAAM,CAAC,SAAS;AAIhB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,kBAAkB;AA2BzB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,SAAS;AAgChB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,UAAU;AAYjB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,WAAW;AAkClB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA;AA/LM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;IADN,QAAQ,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC;AAM/D,CAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;AAGzC,CAAA,EAAA,eAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;AAGzC,CAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;AAGzC,CAAA,EAAA,eAAA,EAAA,MAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;AAGzC,CAAA,EAAA,eAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;AAGzC,CAAA,EAAA,eAAA,EAAA,MAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;AAKzC,CAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;AAGzC,CAAA,EAAA,eAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;AAGzC,CAAA,EAAA,eAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,CAAA;AA5EU,eAAe,GAAA,UAAA,CAAA;AAL3B,IAAA,KAAK,CAAuB;AAC3B,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,QAAQ,EAAE,yBAAyB;KACpC;AAEY,CAAA,EAAA,eAAe,CAwN3B;2FAxNY,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;MCTY,gBAAgB,CAAA;AACV,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAE7B,IAAA,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAC/C,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;AACzC,IAAA,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;AAC7C,IAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;AACzC,IAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;AACzC,IAAA,mBAAmB,GAAG,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC;AACjE,IAAA,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAC/C,IAAA,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AAEnC,IAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC;AACxD,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;AAElD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,8EAC/D;AACQ,IAAA,KAAK,GAAG,QAAQ,CACvB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,IAAI,4EAC7D;AAED,IAAA,SAAS,CAAC,IAAoB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IACjD;IAEA,cAAc,CAAC,IAAoB,EAAE,KAA6B,EAAA;AAChE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjE;IAEA,SAAS,CAAC,IAAoB,EAAE,MAAiC,EAAA;AAC/D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD;AAEA,IAAA,UAAU,CAAC,OAA0B,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACrD;IAEA,iBAAiB,CAAC,IAAoB,EAAE,eAAuB,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACzB,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC1D,YAAA,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC;AACrC,SAAA,CAAC;IACJ;IAEA,yBAAyB,CAAC,IAAoB,EAAE,KAAU,EAAA;AACxD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC;QAClE,MAAM,KAAK,GAA2B,EAAE;QACxC,IAAI,OAAO,GAAG,KAAK;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC;QACnD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AAC1C,YAAA,KAAK,CAAC,IAAI,GAAG,IAAI;YACjB,OAAO,GAAG,IAAI;QAChB;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;AACpD,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CACjC,yBAAyB,EACzB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CACtB;AACD,YAAA,IAAI,kBAAkB,KAAK,OAAO,CAAC,QAAQ,EAAE;AAC3C,gBAAA,KAAK,CAAC,QAAQ,GAAG,kBAAkB;gBACnC,OAAO,GAAG,IAAI;YAChB;QACF;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;AAChD,YAAA,KAAK,CAAC,IAAI,GAAG,IAAI;YACjB,OAAO,GAAG,IAAI;QAChB;QAEA,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzB,YAAA,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;AACnC,YAAA,IAAI,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC;AACpC,SAAA,CAAC;IACJ;IAEA,0BAA0B,CACxB,IAAoB,EACpB,cAAsC,EAAA;AAEtC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACzB,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACzD,YAAA,IAAI,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC;AACxC,SAAA,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,IAAoB,EAAE,MAAA,GAA+B,QAAQ,EAAA;AACvE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D;AAEQ,IAAA,aAAa,CAAC,KAAc,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC;AAEQ,IAAA,mBAAmB,CAAC,KAAU,EAAA;AACpC,QAAA,MAAM,SAAS,GAAG,KAAK,EAAE,SAAS;QAClC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACtD,YAAA,OAAO,IAAI;QACb;QAEA,OAAO;AACL,YAAA;AACE,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,GAAG,EAAE,KAAK,EAAE,SAAS,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK;AAC9C,aAAA;SACF;IACH;IAEQ,UAAU,CAChB,IAAsC,EACtC,KAAuC,EAAA;AAEvC,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE;AAC5B,QAAA,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAE9B,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;AAC1C,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,SAAS,CAAC,KAAK,CACpB,CAAC,IAAI,EAAE,KAAK,KACV,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK;YACvC,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CACtC;IACH;uGA1IW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACeD,MAAM,eAAe,GAA2B;AAC9C,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,EAAE,EAAE,cAAc;AAClB,IAAA,GAAG,EAAE,uBAAuB;AAC5B,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,GAAG,EAAE,oBAAoB;AACzB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,SAAS,EAAE,cAAc;CAC1B;AAED,MAAM,mBAAmB,GAGrB;AACF,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,SAAS,EAAE,MAAM;CAClB;AACD,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,gBAAgB;IAChB,aAAa;IACb,cAAc;AACf,CAAA,CAAC;AAEF,SAAS,OAAO,CAAC,KAAa,EAAA;AAC5B,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;AAClD,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,OAAO,EAAE,GAAG;AACpB,SAAA,OAAO,CAAC,iBAAiB,EAAE,OAAO;AAClC,SAAA,IAAI;AACJ,SAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACnD;AAEA,SAAS,oBAAoB,CAAC,IAAwB,EAAA;IACpD,IAAI,IAAI,KAAK,MAAM;AAAE,QAAA,OAAO,MAAM;AAClC,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,gBAAgB,CAAC,KAAgC,EAAA;AACxD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO;AACJ,SAAA,IAAI;AACJ,SAAA,OAAO,CAAC,SAAS,EAAE,EAAE;AACrB,SAAA,WAAW,EAAE;AAClB;AAEA,SAAS,gBAAgB,CAAC,MAAqC,EAAA;AAC7D,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE;IAC1C,MAAM,cAAc,GAAG;SACpB,MAAM,CACL,CAAC,QAAQ,KACP,OAAO,QAAQ,EAAE,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;AAE/D,SAAA,GAAG,CAAC,CAAC,QAAQ,MAAM;QAClB,GAAG,EAAE,QAAQ,CAAC,GAAG;AACjB,QAAA,KAAK,EACH,QAAQ,CAAC,IAAI,EAAE,OAAO;YACtB,QAAQ,CAAC,IAAI,EAAE,EAAE;YACjB,QAAQ,CAAC,IAAI,EAAE,EAAE;AACjB,YAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC5B,KAAA,CAAC,CAAC;AAEL,IAAA,IAAI,cAAc,CAAC,MAAM,EAAE;AACzB,QAAA,OAAO,cAAc;IACvB;AAEA,IAAA,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM;AAClD,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;AACtB,KAAA,CAAC,CAAC;AACL;AAEA,SAAS,mBAAmB,CAC1B,MAAqC,EACrC,QAAiC,EAAA;IAEjC,MAAM,OAAO,GAIR,EAAE;IAEP,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,gBAAgB,IAAI,EAAE,EAAE;AACpD,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC;AACzB,gBAAA,SAAS,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,QAAQ;AACrD,aAAA,CAAC;YACF;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,QAAQ,EAAE,KAAK;QAC3B,IAAI,CAAC,GAAG,EAAE;YACR;QACF;QAEA,OAAO,CAAC,IAAI,CAAC;YACX,GAAG;AACH,YAAA,KAAK,EACH,QAAQ,CAAC,OAAO,EAAE,OAAO;gBACzB,QAAQ,CAAC,OAAO,EAAE,EAAE;gBACpB,QAAQ,CAAC,OAAO,EAAE,EAAE;gBACpB,QAAQ,CAAC,GAAG,CAAC;AACf,YAAA,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,QAAQ;AAChD,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,OAAO;AAChB;MAgBa,cAAc,CAAA;AACR,IAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3D,IAAA,IAAI,GAAG,KAAK,CAAiB,SAAS,2EAAC;AACvC,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAS,wBAAwB,+EAAC;AAClD,IAAA,OAAO,GAAG,KAAK,CAAiB,EAAE,8EAAC;AACnC,IAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,uFAAC;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAoC,IAAI,gFAAC;AAC1D,IAAA,gBAAgB,GAAG,KAAK,CAC/B,IAAI,uFACL;IAEQ,qBAAqB,GAAG,MAAM,EAA0B;IACxD,WAAW,GAAG,MAAM,EAA4B;AAEtC,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAC/B,IAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;AAChC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAC3C,IAAI,CAAC,UAAU,EAAE;AAEjB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACtC,YAAA,GAAG,IAAI;YACP,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE;AACxC,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,gFAAC;AACiB,IAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AACvB,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAC7B,IAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AACvB,IAAA,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB;AACrD,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAC7B,IAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AAC9B,QAAA,GAAG,MAAM;AACT,QAAA,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC,mFACJ;AAEkB,IAAA,oBAAoB,GACrC,QAAQ,CAAqC,MAAK;QAChD,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACzC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC9C,YAAA,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,GAAG,KACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CACrB;YACD,IAAI,aAAa,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACnD,gBAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE;YAC5C;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO;aAChC,MAAM,CACL,CAAC,MAAM,KAAK,OAAO,MAAM,EAAE,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;AAErE,aAAA,GAAG,CAAC,CAAC,MAAM,MAAM;YAChB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,YAAA,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5C,SAAA,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;YACnE,GAAG;AACH,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAC3B,YAAA,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,QAAQ;AAChD,SAAA,CAAC,CAAC;QAEH,OAAO;AACL,YAAA,aAAa,EAAE,cAAc;AAC7B,YAAA,gBAAgB,EAAE,iBAAiB;SACpC;AACH,IAAA,CAAC,2FAAC;IACe,2BAA2B,GAAG,QAAQ,CAAC,MACxD,sBAAsB,CAAC,GAAG,CACxB,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CACjD,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACF;AACkB,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;QACxD,IAAI,CAAC,UAAU,EAAE;QACjB,QACE,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC5C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,qBAAqB,CAAC;AAE3D,IAAA,CAAC,6FAAC;AACiB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QACnD,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,QACE,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,uBAAuB,CAAC;AAE7D,IAAA,CAAC,wFAAC;AACiB,IAAA,qBAAqB,GAAG,QAAQ,CACjD,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,cAAc,4FACpE;IACgB,sBAAsB,GACrC,kDAAkD;IACnC,iCAAiC,GAAG,qBAAqB;AAE1E,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,IAAwB,EAAA;QACtC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE;YAC/C;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;IACtD;AAEA,IAAA,uBAAuB,CAAC,OAAoC,EAAA;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;YAC7C,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,EAAE,EAAE,MAAM,CAAC,EAAgC;YAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;AACd,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC;AAClE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC;IAChD;IAEA,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;IACrC;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC5C,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA,SAAS,EAAE,aAAa;AACxB,YAAA,IAAI,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC;SAC9B;AACD,QAAA,MAAM,WAAW,GACf,YAAY,EAAE,MAAM;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,wBAAwB,CAAC;QAC5D,MAAM,eAAe,GACnB,YAAY,EAAE,UAAU,IAAI,IAAI,CAAC,iCAAiC;AACpE,QAAA,MAAM,YAAY,GAAG,YAAY,EAAE,YAAY,IAAI,QAAQ;QAC3D,MAAM,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;QAEvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,yBAAyB,EAAE,QAAQ,EAAE;AACpE,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,UAAU,EAAE,eAAe;AAC3B,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,SAAS;gBACf,YAAY;gBACZ,OAAO;AACR,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAe,KAAI;YACtD,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC;YACjD;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,GAA4B,EAAA;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACjD,QAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE;YAChD,UAAU;YACV,GAAG;AACH,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACzC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS;AACjD,SAAA,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE;YACf;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC5B;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE;AACrC,QAAA,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE;YAC5B;QACF;QAEA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE;YACrD,MAAM,EACJ,YAAY,EAAE,MAAM;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,6BAA6B,CAAC;AACjE,YAAA,UAAU,EAAE,YAAY,EAAE,UAAU,IAAI,IAAI,CAAC,sBAAsB;AACnE,YAAA,QAAQ,EAAE,YAAY,EAAE,QAAQ,IAAI,KAAK;AACzC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,YAAY,EAAE,QAAQ,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;YACtE,WAAW,EAAE,EAAE,UAAU,EAA8C;AACxE,SAAA,CAAC;IACJ;IAEmB,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAElE,IAAA,UAAU,CAAC,GAAW,EAAA;QAC5B,QACE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,sBAAsB,GAAG,GAAG,CAAC;YAC9D,eAAe,CAAC,GAAG,CAAC;AACpB,YAAA,OAAO,CAAC,GAAG,CAAC;IAEhB;AAEQ,IAAA,oBAAoB,CAC1B,GAA4B,EAAA;AAE5B,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC;AAC/B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE;QAC/B,OAAO,UAAU,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI;IAC9C;uGA1OW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/K3B,+jEA+DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDsGI,YAAY,+BACZ,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,UAAU,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,qBAAqB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,aAAa,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,KAAK,q9BACL,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIL,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,MAAM;wBACN,UAAU;wBACV,qBAAqB;wBACrB,aAAa;wBACb,KAAK;wBACL,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,+jEAAA,EAAA;;;AE1KG,SAAU,eAAe,CAC7B,OAAoC,EAAA;AAEpC,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;IACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,IAAA,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK;AACnC,UAAG;UACD,IAAI;AACV;AAEM,SAAU,UAAU,CACxB,MAAsC,EACtC,GAAW,EAAA;AAEX,IAAA,MAAM,KAAK,GAAG,MAAM,GAAG,GAAG,CAAC;AAC3B,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;IACnD;AAEA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AACpD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS;IACrD;AAEA,IAAA,OAAO,SAAS;AAClB;AAEM,SAAUC,YAAU,CACxB,MAAsC,EACtC,GAAW,EAAA;AAEX,IAAA,MAAM,KAAK,GAAG,MAAM,GAAG,GAAG,CAAC;AAC3B,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS;AAC7E;;MC2Ca,gCAAgC,CAAA;AAC1B,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACxC,IAAA,OAAO;AAEN,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAA+B;AAE7C,IAAA,SAAS,GAAG,MAAM,CAAC,mBAAmB,gFAAC;IACzC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACjD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAC5C,IAAI,CAAC,UAAU,EAAE;QACjB,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAC7B,mCAAmC,CACpC;AACD,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,IAAI,EAAE,4BAA4B;AACnC,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,wBAAwB,CAAC;AACjE,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,IAAI,EAAE,mBAAmB;AAC1B,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,4BAA4B,CAAC;AACrE,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,IAAI,EAAE,wBAAwB;AAC/B,aAAA;SACF;AACH,IAAA,CAAC,iFAAC;AACiB,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,4EAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAA+B,IAAI,8EAAC;AACpD,IAAA,cAAc,GAAG,QAAQ,CAAe,MAAK;QAC9D,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,EAAE;QACX;QAEA,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;gBAClB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,+BAA+B,CAAC;AACvE,gBAAA,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;AACxC,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,6BAA6B,CAAC;AACrE,gBAAA,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7C,gBAAA,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;AAC5C,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,0BAA0B,CAAC;AAClE,gBAAA,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;AAC3B,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,aAAa;gBAClB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,+BAA+B,CAAC;AACvE,gBAAA,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;AAC1C,gBAAA,QAAQ,EAAE,YAAY;AACtB,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AAC5B,aAAA;SACF;AACH,IAAA,CAAC,qFAAC;AACiB,IAAA,WAAW,GAAG,QAAQ,CAAS,MAAK;QACrD,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACvD,YAAA,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACnB,YAAA,IAAI,EACF,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,gBAAA,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,wBAAwB,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,CAAA,CAAE;YAC5E,KAAK,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS;AACzE,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,kFAAC;AACiB,IAAA,iBAAiB,GAAG,QAAQ,CAAe,MAC5D,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,MAAM;AACtE,QAAA,EAAE,EAAE,MAAM,CACR,UAAU,CAAC,EAAE,IAAI,CAAA,EAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,EAAE,CACtE;AACD,QAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AAC/B,QAAA,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;KAC9B,CAAC,CAAC,wFACJ;AACkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,gFAAC;AAEzD,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,kFAChC;AACkB,IAAA,UAAU,GAAG,QAAQ,CACtC,MACE,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,sBAAsB,CAAC;QACtD,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC/C;AACkB,IAAA,kBAAkB,GAAG,QAAQ,CAC9C,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,yFAC7B;AACkB,IAAA,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,uFACpC;AACkB,IAAA,mBAAmB,GAAG,QAAQ,CAC/C,MAAM,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,0FACpC;AAED,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAE5C,YAAA,IAAI,UAAU,GAAG,CAAC,EAAE;gBAClB,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC7C;YACF;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;IAC7B;AAEQ,IAAA,WAAW,CAAC,UAAkB,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACjB,aAAA,GAAG,CAA4B,CAAA,YAAA,EAAe,UAAU,CAAA,QAAA,CAAU;AAClE,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;YACzC,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,KAAK,EAAE,KAAK,EAAE,OAAO;AACnB,oBAAA,KAAK,EAAE,OAAO;oBACd,IAAI,CAAC,SAAS,CAAC,SAAS,CACtB,uCAAuC,CACxC,CACJ;YACH,CAAC;AACF,SAAA,CAAC;IACN;uGAnKW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClF7C,+qLA+IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtEI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,eAAe,uMACf,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIP,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAb5C,SAAS;+BACE,yCAAyC,EAAA,UAAA,EACvC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,IAAI;wBACJ,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,+qLAAA,EAAA;;AAyKH,SAAS,YAAY,CAAC,KAAc,EAAA;IAClC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACvC,OAAO;AACL,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,QAAQ,EAAE,EAAE;SACb;IACH;IAEA,OAAO;AACL,QAAA,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;AAC3B,QAAA,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;AACvC,QAAA,WAAW,EACT,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;AAChC,YAAA,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;AAC7B,YAAA,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;YAC7B,EAAE;AACJ,QAAA,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;AACvC,QAAA,WAAW,EACT,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC;AACvE,QAAA,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC;KACvE;AACH;AAEA,SAAS,cAAc,CAAC,KAA2B,EAAA;AACjD,IAAA,QAAQ,KAAK,IAAI,EAAE;AACrB;AAEA,SAAS,kBAAkB,CACzB,OAAqC,EAAA;IAErC,OAAO,OAAO,EAAE,MAAM,EAAE,WAAW,IAAI,OAAO,EAAE,WAAW,IAAI,EAAE;AACnE;AAEA,SAAS,mBAAmB,CAAC,KAAoC,EAAA;IAC/D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE;AACpD;AAEA,SAAS,mBAAmB,CAAC,KAAc,EAAA;IACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,EAAE;IAC/C;AAEA,IAAA,QACE,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC;AACjC,QAAA,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;AAC5B,QAAA,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;AAChC,QAAA,EAAE;AAEN;AAEA,SAAS,eAAe,CAAC,KAAc,EAAA;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,SAAS;IACtD;AAEA,IAAA,QACE,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;AAChC,QAAA,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC;AACjC,QAAA,SAAS;AAEb;AAEA,SAAS,UAAU,CAAC,KAAc,EAAE,GAAW,EAAA;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,MAAM,MAAM,GAAI,KAAiC,CAAC,GAAG,CAAC;AACtD,IAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS;AACzE;;MEzRa,oBAAoB,CAAA;AACd,IAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,IAAA,aAAa,GAAG,MAAM,CAAC,yBAAyB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACe,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAA+B;AAC/C,IAAA,UAAU,GAAG,SAAS,CAAC,UAAU,iFAAC;AAChC,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAE7B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,gFAAC;IAC/B,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACjD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAC5C,IAAI,CAAC,UAAU,EAAE;QACjB,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,yBAAyB,CAAC;AAClE,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,aAAa;AACpB,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,4BAA4B,CAAC;AACrE,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,IAAI,EAAE,wBAAwB;AAC/B,aAAA;SACF;AACH,IAAA,CAAC,iFAAC;AACiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,kFAChC;AACkB,IAAA,UAAU,GAAG,QAAQ,CAAC,MACvC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,iFAC7C;AACkB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MACrC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,+EAC3C;AACkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,8EAC1C;AACkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,kFAC9C;AACkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,mFAC/C;IACkB,SAAS,GAAG,QAAQ,CAAC,MAAM,YAAY,gFAAC;IACxC,YAAY,GAAG,QAAQ,CAAC,MAAM,QAAQ,mFAAC;AACvC,IAAA,kBAAkB,GAAG,QAAQ,CAC9C,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,yFAC7B;IACkB,aAAa,GAAG,QAAQ,CACzC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,oFAClD;AACkB,IAAA,oBAAoB,GAAG,QAAQ,CAChD,MACEA,YAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU;AACzB,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI;AACnB,QAAA,EAAE,2FACL;IACkB,mBAAmB,GAAG,QAAQ,CAC/C,MACE,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAChD;AAED,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC;AAC9D,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC;IACzC;uGAhFW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASS,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjDpD,4hGAkFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,UAAU,4gBACV,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,SAAS;+BACE,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,IAAI;wBACJ,UAAU;wBACV,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,4hGAAA,EAAA;mNAYuC,UAAU,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEWvC,wBAAwB,CAAA;AAClB,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAClC,IAAA,OAAO;AAEN,IAAA,SAAS,GAAG,KAAK,CAA4B,IAAI,gFAAC;AAClD,IAAA,IAAI,GAAG,KAAK,CAAyB,WAAW,2EAAC;AAEvC,IAAA,eAAe,GAAG;AACnC,QAAA,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;AAClC,QAAA,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QAClC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAiB,EAAE;QACvD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAiB,EAAE;QACvE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAiB,EAAE;KACrE;AACkB,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,4EAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAA4B,IAAI,8EAAC;AACjD,IAAA,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,uFAClC;IACkB,YAAY,GAAG,QAAQ,CAAC,MACzC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;AAC3C,QAAA,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QAC/D,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI;AACpC,QAAA,IAAI,EAAE,WAAW,CACf,MAAM,EACN,MAAM,GACL,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAChD;AACD,QAAA,SAAS,EAAE,WAAW,CACpB,iBAAiB,EACjB,UAAU,EACV,IAAI,CAAC,SAAS,IAAI,EAAE,CACrB;AACD,QAAA,UAAU,EAAE,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;KAC1E,CAAC,CAAC,mFACJ;AACkB,IAAA,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,mFACrC;IACkB,WAAW,GAAG,QAAQ,CAAS,MAChD,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;AACzD,QAAA,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,KAAK,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS;KACzE,CAAC,CAAC,kFACJ;AACkB,IAAA,iBAAiB,GAAG,QAAQ,CAAe,MAC5D,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,MAAM;AACtE,QAAA,EAAE,EAAE,MAAM,CACR,UAAU,CAAC,EAAE,IAAI,CAAA,EAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,EAAE,CACtE;AACD,QAAA,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AAC/B,QAAA,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;KAC9B,CAAC,CAAC,wFACJ;AACkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,gFAAC;AAE5E,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AAEvC,YAAA,IAAI,SAAS,GAAG,CAAC,EAAE;gBACjB,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC5C;YACF;AAEA,YAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;IAC7B;AAEQ,IAAA,WAAW,CAAC,SAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACjB,aAAA,GAAG,CAAkC,CAAA,UAAA,EAAa,SAAS,CAAA,QAAA,CAAU;AACrE,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;YACzC,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,KAAK,EAAE,KAAK,EAAE,OAAO;AACnB,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,gCAAgC,CACnC;YACH,CAAC;AACF,SAAA,CAAC;IACN;uGApGW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,+VC5DrC,+sEA4DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,s9BAAE,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGpC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,gCAAgC,EAAA,UAAA,EAC9B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,+sEAAA,EAAA;;AA0GlD,SAAS,WAAW,CAClB,IAAY,EACZ,QAA6B,EAC7B,KAAc,EAAA;IAEd,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,KAAK,EAAG,KAAa,IAAI,EAAE;AAC3B,QAAA,aAAa,EAAE;AACb,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;KACF;AACH;AAEA,SAAS,OAAO,CAAC,KAAc,EAAA;AAC7B,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC3D,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;IAEA,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,QAAQ,GAAI,KAA+B,CAAC,OAAO;AACzD,IAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,QAAA,OAAO,QAAQ;IACjB;IAEA,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE;AACjE,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB;AAEA,IAAA,OAAO,EAAE;AACX;;ME/Ja,4BAA4B,CAAA;AACtB,IAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,IAAA,aAAa,GAAG,MAAM,CAAC,yBAAyB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACe,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAA+B;AAC/C,IAAA,UAAU,GAAG,SAAS,CAAC,UAAU,iFAAC;AAChC,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAE7B,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,gFAAC;IACtC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACjD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAC5C,IAAI,CAAC,UAAU,EAAE;QACjB,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAC7B,gCAAgC,CACjC;AACD,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,IAAI,EAAE,cAAc;AACrB,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,2BAA2B,CAAC;AACpE,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,IAAI,EAAE,0BAA0B;AACjC,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,uBAAuB,CAAC;AAChE,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,IAAI,EAAE,mBAAmB;AAC1B,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,4BAA4B,CAAC;AACrE,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,IAAI,EAAE,wBAAwB;AAC/B,aAAA;SACF;AACH,IAAA,CAAC,iFAAC;AACiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,kFAChC;AACkB,IAAA,SAAS,GAAG,QAAQ,CACrC,MACE,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC;QAC3C,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,gBAAgB,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACnD;AACkB,IAAA,SAAS,GAAG,QAAQ,CACrC,MAAMA,YAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,gFACxD;AACkB,IAAA,YAAY,GAAG,QAAQ,CACxC,MAAMA,YAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,mFAC3D;AACkB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MACrC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,+EAC3C;AACkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,8EAC1C;AACkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,kFAC9C;AACkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,mFAC/C;AACkB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAC5C,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,iBAAiB,CAAC,sFAClD;AACkB,IAAA,cAAc,GAAG,QAAQ,CAC1C,MACE,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,gBAAgB,CAAC;QAChD,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC9C;AACkB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,yFAAC;IAC1D,aAAa,GAAG,QAAQ,CACzC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,oFAClD;AACkB,IAAA,mBAAmB,GAAG,QAAQ,CAC/C,MAAM,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,0FACpC;AACkB,IAAA,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,uFAClC;AAED,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC;AAC9D,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC;IACzC;uGAlGW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASC,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDpD,6hJA4HA,2CD3FI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,UAAU,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,qhBAChB,wBAAwB,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIf,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAbxC,SAAS;+BACE,qCAAqC,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,IAAI;wBACJ,UAAU;wBACV,gBAAgB;wBAChB,wBAAwB;AACzB,qBAAA,EAAA,QAAA,EAAA,6hJAAA,EAAA;mNAYuC,UAAU,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;METvC,yBAAyB,CAAA;AACnB,IAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,IAAA,aAAa,GAAG,MAAM,CAAC,yBAAyB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACe,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAA+B;AAC/C,IAAA,UAAU,GAAG,SAAS,CAAC,UAAU,iFAAC;AAChC,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAE7B,IAAA,SAAS,GAAG,MAAM,CAAC,MAAM,gFAAC;IAC5B,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACjD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAC5C,IAAI,CAAC,UAAU,EAAE;QACjB,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,sBAAsB,CAAC;AAC/D,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,cAAc;AACrB,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,2BAA2B,CAAC;AACpE,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,IAAI,EAAE,0BAA0B;AACjC,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,uBAAuB,CAAC;AAChE,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,IAAI,EAAE,mBAAmB;AAC1B,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,4BAA4B,CAAC;AACrE,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,IAAI,EAAE,wBAAwB;AAC/B,aAAA;SACF;AACH,IAAA,CAAC,iFAAC;AACiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,kFAChC;AACkB,IAAA,SAAS,GAAG,QAAQ,CACrC,MACE,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC;QAC3C,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,gBAAgB,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACnD;AACkB,IAAA,SAAS,GAAG,QAAQ,CACrC,MAAMA,YAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,gFACxD;AACkB,IAAA,YAAY,GAAG,QAAQ,CACxC,MAAMA,YAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,mFAC3D;AACkB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MACrC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,+EAC3C;AACkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,8EAC1C;AACkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,kFAC9C;AACkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,mFAC/C;AACkB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAC5C,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,iBAAiB,CAAC,sFAClD;AACkB,IAAA,cAAc,GAAG,QAAQ,CAC1C,MACE,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,gBAAgB,CAAC;QAChD,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC9C;AACkB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,yFAAC;IAC1D,aAAa,GAAG,QAAQ,CACzC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,oFAClD;AACkB,IAAA,mBAAmB,GAAG,QAAQ,CAC/C,MAAM,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,0FACpC;AACkB,IAAA,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,uFAClC;AAED,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC;AAC9D,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC;IACzC;uGAhGW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASI,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDpD,8+IA2HA,2CD1FI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,UAAU,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,qhBAChB,wBAAwB,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;+BACE,kCAAkC,EAAA,UAAA,EAChC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,IAAI;wBACJ,UAAU;wBACV,gBAAgB;wBAChB,wBAAwB;AACzB,qBAAA,EAAA,QAAA,EAAA,8+IAAA,EAAA;mNAYuC,UAAU,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEzBvC,mBAAmB,CAAA;AACrB,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAA+B;uGADrD,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BhC,8wBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,yBAAyB,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,4BAA4B,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,gCAAgC,yGAChC,oBAAoB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAOX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhB/B,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,yBAAyB;wBACzB,4BAA4B;wBAC5B,gCAAgC;wBAChC,oBAAoB;qBACrB,EAAA,IAAA,EAEK;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA,EAAA,QAAA,EAAA,8wBAAA,EAAA;;;MEwBU,gCAAgC,CAAA;AAC1B,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACpC,IAAA,aAAa,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAE1D,IAAA,OAAO;IACP,cAAc,GAAoC,IAAI;IACtD,gBAAgB,GACtB,IAAI;AAEG,IAAA,UAAU,GAAG,KAAK,CAAkC,IAAI,iFAAC;IACzD,cAAc,GAAG,MAAM,EAAuC;IAC9D,gBAAgB,GAAG,MAAM,EAAW;AAE5B,IAAA,UAAU,GAAG,MAAM,CAAC,CAAC,iFAAC;AACtB,IAAA,eAAe,GAAG,MAAM,CAAC,KAAK,sFAAC;AAC7B,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,4EAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAgC,EAAE,8EAAC;AACnD,IAAA,gBAAgB,GAAG,MAAM,CAAgB,IAAI,uFAAC;IAC9C,cAAc,GAAG,QAAQ,CAAsB,MAChE,IAAI,CAAC,OAAO;SACT,MAAM,CACL,CAAC,MAAM,KACL,MAAM,CAAC,WAAW,KAAK,KAAK;QAC5B,CAAC,CAAC,MAAM,CAAC,GAAG;AACZ,QAAA,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;SAEvC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAAM;AACvB,QAAA,GAAG,MAAM;AACT,QAAA,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC;QACjC,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;QACxD,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;KACvD,CAAC,CAAC,qFACN;IACkB,YAAY,GAAG,QAAQ,CACxC,MACE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;AACnB,SAAC,CAAC,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;AAChC,YAAA,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,mFAC/B;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAEpB,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC/B;YACF;AAEA,YAAA,IAAI,UAAU,KAAK,IAAI,CAAC,cAAc,EAAE;AACtC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpB,gBAAA,IAAI,CAAC,cAAc,GAAG,UAAU;YAClC;YAEA,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AACjD,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI;QACxC;IACF;IAEU,MAAM,aAAa,CAAC,MAAyB,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC3C,QAAA,MAAM,SAAS,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE;AACnE,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;AAC/C,YAAA,mBAAmB,EAAE,SAAS;AAC9B,YAAA,wBAAwB,EAAE;gBACxB,MAAM,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE;AACrD,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAE5B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;YACjC;QACF;AAEA,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;AAC7B,YAAA,MAAM,OAAO,GACX,MAAM,CAAC,KAAK,YAAY;AACtB,kBAAE,MAAM,CAAC,KAAK,CAAC;AACf,kBAAE,CAAA,kBAAA,EAAqB,MAAM,CAAC,KAAK,GAAG;AAC1C,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YACvB;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,SAAS;AAErD,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;QAC9C;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY;AACb,SAAA,CAAC;IACJ;AAEQ,IAAA,WAAW,CAAC,UAAoC,EAAA;AACtD,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAE/B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACjB,GAAG,CACF,iCAAiC,EACjC;YACE,MAAM,EAAE,EAAE,UAAU,EAAE;SACvB;AAEF,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AACvB,gBAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;YACpC;YAEA,MAAM,IAAI,KAAK,CACb,2BAA2B,CACzB,QAAQ,EACR,8BAA8B,CAC/B,CACF;AACH,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,OAAO,KAAI;AAChB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAChC,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,uBAAuB,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAC/D;YACH,CAAC;AACF,SAAA,CAAC;IACN;uGAzKW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,qaChD7C,y1BAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDkBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,gMAAE,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAMvC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAT5C,SAAS;+BACE,0CAA0C,EAAA,UAAA,EACxC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAA,IAAA,EAE7C;AACJ,wBAAA,KAAK,EAAE,6DAA6D;AACrE,qBAAA,EAAA,QAAA,EAAA,y1BAAA,EAAA;;AA8KH,SAAS,eAAe,CAAC,KAAgC,EAAA;IACvD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;IACzC,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI;AACtC;AAEA,SAAS,qBAAqB,CAC5B,SAAiB,EACjB,KAAa,EAAA;IAEb,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACjD,IAAA,IAAI,UAAU,KAAK,SAAS,EAAE;AAC5B,QAAA,OAAO,SAAS;IAClB;IAEA,IACE,UAAU,KAAK,OAAO;AACtB,QAAA,UAAU,KAAK,QAAQ;AACvB,QAAA,UAAU,KAAK,QAAQ;QACvB,UAAU,KAAK,QAAQ,EACvB;AACA,QAAA,OAAO,QAAQ;IACjB;IAEA,OAAO,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,WAAW;AAC9C;AAEA,SAAS,oBAAoB,CAC3B,SAAiB,EACjB,KAAa,EAAA;IAEb,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC;AACxD,IAAA,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK;AAC5C,UAAE;UACA,UAAU;AAChB;AAEA,SAAS,2BAA2B,CAClC,QAA0E,EAC1E,QAAgB,EAAA;AAEhB,IAAA,QACG,QAAQ,EAAE,MAAsC,EAAE,OAAO;AAC1D,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ;AAEZ;AAEA,SAAS,uBAAuB,CAAC,KAAc,EAAE,QAAgB,EAAA;IAC/D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,QAAQ;IACjB;IAEA,MAAM,SAAS,GAAG,KAGjB;IAED,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO,IAAI,QAAQ;AAClE;;MEjPa,wBAAwB,CAAA;AAClB,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,IAAA,UAAU,GAAG,KAAK,CAAkC,IAAI,iFAAC;AAC/C,IAAA,aAAa,GAAG,MAAM,CAAC,IAAI,oFAAC;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,4EAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAqC,IAAI,8EAAC;AAC1D,IAAA,iBAAiB,GAAG,MAAM,CAAC,CAAC,wFAAC;AAC7B,IAAA,oBAAoB,GAAG,MAAM,CAAC,KAAK,2FAAC;AACpC,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,yFACzC;AACkB,IAAA,WAAW,GAAG,QAAQ,CACvC,MACE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAS,6BAA6B,CAAC,kFAClE;IACkB,cAAc,GAAG,QAAQ,CAC1C,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACpE;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5D,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC5C,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAE3C,YAAA,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE;gBACzD,UAAU;gBACV,UAAU;AACX,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAEtB,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,OAAO,CAAC,GAAG,CACT,8DAA8D,CAC/D;gBACD;YACF;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,YAAA,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE;AACzD,gBAAA,QAAQ,EAAE,oCAAoC;gBAC9C,UAAU;AACX,aAAA,CAAC;AAEF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;iBACvB,GAAG,CACF,oCAAoC,EACpC;gBACE,MAAM,EAAE,EAAE,UAAU,EAAE;aACvB;AAEF,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;oBACvB,OAAO,QAAQ,CAAC,IAAI;gBACtB;gBAEA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACrD,YAAA,CAAC,CAAC;AAEH,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,OAAO,KAAI;AAChB,oBAAA,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE;wBAC3D,UAAU;wBACV,OAAO;AACR,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAc,KAAI;AACxB,oBAAA,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE;wBAC5D,UAAU;wBACV,KAAK;AACN,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,KAAK,YAAY;0BACb,KAAK,CAAC;0BACN,IAAI,CAAC,SAAS,CAAC,SAAS,CACtB,oCAAoC,CACrC,CACN;AACD,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB,CAAC;AACF,aAAA,CAAC;YAEJ,SAAS,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;AAC7C,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,gBAAgB,CACxB,MAA2C,EAAA;AAE3C,QAAA,IAAI,MAAM,CAAC,YAAY,KAAK,OAAO,EAAE;AACnC,YAAA,KAAK,IAAI,CAAC,gBAAgB,EAAE;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;IACrD;AAEU,IAAA,wBAAwB,CAAC,OAAgB,EAAA;AACjD,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC;IACxC;IAEA,MAAM,eAAe,CAAC,OAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,EAAE,OAAO,EAAE,CAAC;QAE1E,IAAI,OAAO,EAAE;YACX;QACF;AAEA,QAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE;IAC/B;IAEQ,gBAAgB,GAAA;AACtB,QAAA,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE;AACrD,YAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS;YACtC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC;AAC1E,SAAA,CAAC;QAEF,OAAO,IAAI,CAAC;aACT,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;AACnE,YAAA,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;AAC7B,YAAA,mBAAmB,EAAE,OAAO;AAC5B,YAAA,UAAU,EAAE,IAAI;SACjB;AACA,aAAA,IAAI,CAAC,CAAC,OAAO,KAAI;AAChB,YAAA,OAAO,CAAC,GAAG,CAAC,uDAAuD,EAAE;gBACnE,OAAO;AACP,gBAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;AAC5B,aAAA,CAAC;AACF,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,gBAAgB,CACtB,KAAsC,EAAA;QAEtC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI;AACF,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;QAClC;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,KAAK;QACd;IACF;AAEQ,IAAA,mBAAmB,CACzB,QAAkD,EAAA;QAElD,MAAM,aAAa,GAAG,8BAA8B;AACpD,QAAA,QACG,QAAQ,CAAC,MAAsC,EAAE,OAAO;AACzD,YAAA,QAAQ,CAAC,OAAO;AAChB,YAAA,aAAa;IAEjB;IAEQ,gBAAgB,CACtB,IAAgD,EAChD,GAAW,EAAA;AAEX,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACzB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AACpD,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,OAAO,GAAI,KAA+B,CAAC,OAAO;QACxD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AACnD,cAAE;cACA,IAAI;IACV;uGAhMW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,iOAHxB,CAAC,yBAAyB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCxC,y6EAiEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,gMAClB,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACN,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,mBAAmB,2FACnB,gCAAgC,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKvB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;+BACE,iCAAiC,EAAA,UAAA,EAC/B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,MAAM;wBACN,cAAc;wBACd,mBAAmB;wBACnB,gCAAgC;qBACjC,EAAA,SAAA,EACU,CAAC,yBAAyB,CAAC,EAAA,QAAA,EAAA,y6EAAA,EAAA;;;AEpCjC,MAAM,UAAU,GAAG,CAAC,eAAe;;ACF1C;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"masterteam-work-center.mjs","sources":["../../../../packages/masterteam/work-center/src/lib/work-center-client-form-modal/work-center-client-form-modal.ts","../../../../packages/masterteam/work-center/src/lib/work-center-client-form-modal/work-center-client-form-modal.html","../../../../packages/masterteam/work-center/src/store/work-center/work-center.actions.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.model.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.helpers.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.facade.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-types.helpers.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-module-type/work-center-module-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-module-type/work-center-module-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview/work-center-process-preview.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-process-preview/work-center-process-preview.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-request-type/work-center-process-request-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-request-type/work-center-process-request-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-step-type/work-center-process-step-type.ts","../../../../packages/masterteam/work-center/src/lib/work-center-types/work-center-process-step-type/work-center-process-step-type.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-item-modal.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal/work-center-item-modal.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-footer-actions/work-center-item-modal-footer-actions.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-footer-actions/work-center-item-modal-footer-actions.html","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-route.ts","../../../../packages/masterteam/work-center/src/lib/work-center-item-modal-route/work-center-item-modal-route.html","../../../../packages/masterteam/work-center/src/store/app.state.ts","../../../../packages/masterteam/work-center/src/masterteam-work-center.ts"],"sourcesContent":["import {\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { DrawerController } from '@masterteam/components/dynamic-drawer';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport {\r\n ClientForm,\r\n ClientLookup,\r\n ProcessFormSubmitResponse,\r\n} from '@masterteam/forms/client-form';\r\n\r\nimport { WorkCenterClientFormModalData } from '../../store/work-center/work-center.model';\r\n\r\n@Component({\r\n selector: 'mt-work-center-client-form-modal',\r\n standalone: true,\r\n imports: [Button, TranslocoDirective, ClientForm],\r\n templateUrl: './work-center-client-form-modal.html',\r\n})\r\nexport class WorkCenterClientFormModal {\r\n readonly modal = inject(ModalService);\r\n readonly ref = inject(ModalRef);\r\n readonly drawerController = inject(DrawerController, { optional: true });\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly processForm = viewChild.required(ClientForm);\r\n readonly data = input.required<WorkCenterClientFormModalData>();\r\n readonly operationKey = input<string>('Create');\r\n readonly lookups = input<ClientLookup[]>([]);\r\n\r\n readonly moduleKey = computed(() => this.data().moduleKey);\r\n readonly moduleId = computed(() => this.toNumber(this.data().moduleId));\r\n readonly levelId = computed(() => this.toNumber(this.data().levelId));\r\n readonly levelDataId = computed(() => this.toNumber(this.data().levelDataId));\r\n readonly moduleDataId = computed(() =>\r\n this.toNumber(this.data().moduleDataId),\r\n );\r\n readonly formMode = computed<'create' | 'edit'>(() =>\r\n this.moduleDataId() != null ||\r\n this.operationKey().trim().toLowerCase() === 'update'\r\n ? 'edit'\r\n : 'create',\r\n );\r\n\r\n readonly validationMessage = signal<string | null>(null);\r\n readonly submitError = signal<string | null>(null);\r\n readonly isSubmitting = signal(false);\r\n readonly submitStatus = signal<'pending' | 'executed' | null>(null);\r\n\r\n onSubmit(): void {\r\n this.validationMessage.set(null);\r\n this.submitError.set(null);\r\n this.submitStatus.set(null);\r\n\r\n if (!this.processForm().isValid()) {\r\n this.validationMessage.set(\r\n this.transloco.translate<string>(\r\n 'workCenter.validation.fillRequiredFields',\r\n ),\r\n );\r\n return;\r\n }\r\n\r\n this.isSubmitting.set(true);\r\n this.processForm().submit();\r\n }\r\n\r\n onSubmitted(response: ProcessFormSubmitResponse): void {\r\n this.isSubmitting.set(false);\r\n this.submitError.set(null);\r\n\r\n const status =\r\n response.status === 'PendingApproval' ? 'pending' : 'executed';\r\n this.submitStatus.set(status);\r\n\r\n if (status === 'executed') {\r\n this.ref.close(true);\r\n }\r\n }\r\n\r\n onErrored(error: string): void {\r\n this.isSubmitting.set(false);\r\n this.submitError.set(\r\n error ??\r\n this.transloco.translate<string>('workCenter.error.failedSubmit'),\r\n );\r\n }\r\n\r\n private toNumber(value: unknown): number | undefined {\r\n if (typeof value === 'number' && Number.isFinite(value)) {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim() !== '') {\r\n const parsed = Number(value);\r\n if (Number.isFinite(parsed)) {\r\n return parsed;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n <div [class]=\"modal.contentClass + ' p-5 flex flex-col gap-4'\">\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [operationKey]=\"operationKey()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [formMode]=\"formMode()\"\r\n [autoLoad]=\"true\"\r\n [lookups]=\"lookups()\"\r\n (submitted)=\"onSubmitted($event)\"\r\n (errored)=\"onErrored($event)\"\r\n />\r\n\r\n @if (isSubmitting()) {\r\n <div class=\"text-sm text-muted-color\">{{ t(\"modal.submitting\") }}</div>\r\n }\r\n\r\n @if (validationMessage()) {\r\n <div\r\n class=\"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3 text-sm text-amber-700\"\r\n role=\"alert\"\r\n >\r\n {{ validationMessage() }}\r\n </div>\r\n }\r\n\r\n @if (submitError()) {\r\n <div\r\n class=\"mt-2 rounded-lg border border-red-200 bg-red-50 p-3 text-sm text-red-700\"\r\n role=\"alert\"\r\n >\r\n {{ submitError() }}\r\n </div>\r\n }\r\n\r\n @if (submitStatus(); as status) {\r\n <div\r\n class=\"mt-2 rounded-lg border p-3 text-sm\"\r\n [class]=\"\r\n status === 'pending'\r\n ? 'border-amber-200 bg-amber-50 text-amber-700'\r\n : 'border-emerald-200 bg-emerald-50 text-emerald-700'\r\n \"\r\n >\r\n @if (status === \"pending\") {\r\n {{ t(\"modal.requestSubmitted\") }}\r\n } @else {\r\n {{ t(\"modal.operationExecuted\") }}\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"t('modal.submit')\"\r\n icon=\"general.check\"\r\n [disabled]=\"isSubmitting()\"\r\n (onClick)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import {\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\r\n WorkCenterLookups,\r\n} from './work-center.model';\r\n\r\nexport class EnterArea {\r\n static readonly type = '[WorkCenter] Enter Area';\r\n\r\n constructor(public area: WorkCenterArea) {}\r\n}\r\n\r\nexport class HydrateFromContext {\r\n static readonly type = '[WorkCenter] Hydrate From Context';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public patch: WorkCenterHydratePatch,\r\n ) {}\r\n}\r\n\r\nexport class SetParams {\r\n static readonly type = '[WorkCenter] Set Params';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public inputs: WorkCenterBootstrapInputs,\r\n ) {}\r\n}\r\n\r\nexport class SetLookups {\r\n static readonly type = '[WorkCenter] Set Lookups';\r\n\r\n constructor(public lookups: WorkCenterLookups) {}\r\n}\r\n\r\nexport class LoadRuntime {\r\n static readonly type = '[WorkCenter] Load Runtime';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public reason: WorkCenterLoadReason = 'manual',\r\n ) {}\r\n}\r\n","import type { LoadingStateShape } from '@masterteam/components';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport type { ClientLookup } from '@masterteam/forms/client-form';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\nimport { Type } from '@angular/core';\r\n\r\nexport type WorkCenterArea = 'MyInbox' | 'TasksCenter';\r\nexport type WorkCenterItemContextKey = string;\r\nexport type WorkCenterLookups = ClientLookup[];\r\n\r\nexport enum WorkCenterActionKey {\r\n LoadRuntime = 'loadRuntime',\r\n}\r\n\r\nexport const WORK_CENTER_QUERY_VERSION = 1;\r\nexport const WORK_CENTER_MAX_PAGE_SIZE = 100;\r\nexport const WORK_CENTER_MAX_FILTERS = 20;\r\nexport const WORK_CENTER_MAX_SORT = 5;\r\n\r\nexport interface ApiEnvelope<T> {\r\n endpoint: string | null;\r\n status: number;\r\n code: 1 | 2;\r\n locale: string | null;\r\n message: string | null;\r\n errors: unknown;\r\n data: T;\r\n cacheSession: string | null;\r\n}\r\n\r\nexport interface TranslatableDto {\r\n display: string;\r\n en: string;\r\n ar: string;\r\n}\r\n\r\nexport interface WorkCenterSortRule {\r\n field: string;\r\n dir: 'asc' | 'desc';\r\n}\r\n\r\nexport type WorkCenterFilterOperator =\r\n | 'Eq'\r\n | 'Neq'\r\n | 'In'\r\n | 'Contains'\r\n | 'StartsWith'\r\n | 'Gt'\r\n | 'Gte'\r\n | 'Lt'\r\n | 'Lte'\r\n | 'Between'\r\n | 'IsNull'\r\n | 'IsNotNull';\r\n\r\nexport interface WorkCenterFilterRule {\r\n field: string;\r\n op: WorkCenterFilterOperator;\r\n value?: unknown;\r\n values?: unknown[];\r\n from?: unknown;\r\n to?: unknown;\r\n}\r\n\r\nexport interface WorkCenterRuntimeProperty {\r\n id?: number;\r\n key: string;\r\n normalizedKey?: string;\r\n name?: TranslatableDto;\r\n description?: TranslatableDto;\r\n viewType?: string;\r\n}\r\n\r\nexport interface WorkCenterRuntimeOperatorOption {\r\n value: WorkCenterFilterOperator;\r\n display?: TranslatableDto;\r\n}\r\n\r\nexport interface WorkCenterRuntimeFilterSchema {\r\n properties?: WorkCenterRuntimeProperty[];\r\n allowedFields?: string[];\r\n allowedOperators: Array<\r\n WorkCenterFilterOperator | WorkCenterRuntimeOperatorOption\r\n >;\r\n}\r\n\r\nexport interface WorkCenterColumnsConfig {\r\n columns?: string[];\r\n properties?: WorkCenterRuntimeProperty[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeRequest {\r\n area: WorkCenterArea;\r\n templateId?: number | null;\r\n selectedCardKey?: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeCard {\r\n key: string;\r\n name: TranslatableDto;\r\n icon: string | null;\r\n urlTemplate?: string | null;\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n count: number;\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeStatsItem {\r\n key: string;\r\n label: TranslatableDto;\r\n count: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimePagination {\r\n page: number;\r\n pageSize: number;\r\n totalCount: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimeSelectedCard {\r\n key: string;\r\n pagination: WorkCenterRuntimePagination;\r\n stats: WorkCenterRuntimeStatsItem[];\r\n items: Record<string, unknown>[];\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeWarningDto {\r\n code: string;\r\n message: string;\r\n cardKey: string | null;\r\n source: string | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeResponseData {\r\n area: WorkCenterArea;\r\n cards: WorkCenterRuntimeCard[];\r\n selectedCard: WorkCenterRuntimeSelectedCard | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterItemBasicInfoData {\r\n cardKey: string | null;\r\n sourceType: string | null;\r\n type: string | null;\r\n item: Record<string, unknown> | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeItemAction {\r\n actionKey: string;\r\n actionName?: TranslatableDto | null;\r\n httpMethod?: string | null;\r\n url?: string | null;\r\n isAvailable?: boolean;\r\n afterSuccess?: WorkCenterItemActionAfterSuccess | null;\r\n stepIds?: Array<number | string>;\r\n needConfirmation?: boolean;\r\n payloadKeys?: string[];\r\n requiredPayloadKeys?: string[];\r\n payloadTemplate?: Record<string, unknown> | null;\r\n formId?: string | number | null;\r\n}\r\n\r\nexport type WorkCenterItemActionAfterSuccess = 'refresh' | 'close';\r\n\r\nexport interface WorkCenterItemActionExecutionResult {\r\n actionKey: string;\r\n afterSuccess: WorkCenterItemActionAfterSuccess;\r\n}\r\n\r\nexport interface WorkCenterItemActionsData {\r\n cardKey: string | null;\r\n sourceType: string | null;\r\n type: string | null;\r\n context: Record<string, unknown> | null;\r\n actions: WorkCenterRuntimeItemAction[];\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterContext {\r\n area: WorkCenterArea;\r\n templateId: number | null;\r\n selectedCardKey: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterAreaState {\r\n context: WorkCenterContext;\r\n menuItems: ClientPageMenuItem[];\r\n rows: Record<string, unknown>[];\r\n columns: ColumnDef[];\r\n kpis: StatisticCardData[];\r\n runtimeFilterSchema: WorkCenterRuntimeFilterSchema | null;\r\n totalCount: number;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n lastLoadedAt: string | null;\r\n}\r\n\r\nexport interface WorkCenterStateModel extends LoadingStateShape<WorkCenterActionKey> {\r\n activeArea: WorkCenterArea;\r\n byArea: Record<WorkCenterArea, WorkCenterAreaState>;\r\n lookups: WorkCenterLookups;\r\n}\r\n\r\nexport interface WorkCenterHydratePatch {\r\n selectedCardKey?: string | null;\r\n page?: number;\r\n pageSize?: number;\r\n templateId?: number | null;\r\n sort?: WorkCenterSortRule[];\r\n runtimeFilters?: WorkCenterFilterRule[];\r\n}\r\n\r\nexport interface WorkCenterBootstrapInputs {\r\n card?: unknown;\r\n page?: unknown;\r\n pageSize?: unknown;\r\n templateId?: unknown;\r\n sort?: unknown;\r\n filters?: unknown;\r\n}\r\n\r\nexport interface WorkCenterItemModalComponentInput {\r\n contextKey: WorkCenterItemContextKey;\r\n}\r\n\r\nexport interface WorkCenterItemModalOptions {\r\n component?: Type<unknown> | null;\r\n header?: string;\r\n styleClass?: string;\r\n appendTo?: string | HTMLElement | null;\r\n position?: 'start' | 'end' | 'left' | 'right';\r\n}\r\n\r\nexport interface WorkCenterClientFormModalData {\r\n moduleKey: string;\r\n moduleId?: number | string;\r\n levelId?: number | string;\r\n levelDataId?: number | string;\r\n moduleDataId?: number | string;\r\n}\r\n\r\nexport interface WorkCenterClientFormModalOptions {\r\n data?: Partial<WorkCenterClientFormModalData>;\r\n operationKey?: string;\r\n header?: string;\r\n styleClass?: string;\r\n buttonLabel?: string;\r\n buttonIcon?: string;\r\n lookups?: ClientLookup[];\r\n}\r\n\r\nexport type WorkCenterLoadReason =\r\n | 'route-enter'\r\n | 'menu-change'\r\n | 'filters-change'\r\n | 'table-lazy'\r\n | 'refresh'\r\n | 'manual';\r\n","import { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\n\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterColumnsConfig,\r\n WorkCenterContext,\r\n WorkCenterFilterOperator,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeProperty,\r\n WorkCenterRuntimeCard,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterRuntimeStatsItem,\r\n WorkCenterSortRule,\r\n WorkCenterStateModel,\r\n WORK_CENTER_MAX_FILTERS,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n WORK_CENTER_MAX_SORT,\r\n} from './work-center.model';\r\n\r\nconst AREA_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\nconst KPI_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\nconst WORK_CENTER_LOCAL_FETCH_SIZE = WORK_CENTER_MAX_PAGE_SIZE;\r\n\r\ntype WorkCenterTableColumn = WorkCenterRuntimeProperty &\r\n ColumnDef & {\r\n key: string;\r\n label: string;\r\n type: 'entity';\r\n };\r\n\r\nconst FILTER_OPERATORS: Set<WorkCenterFilterOperator> = new Set([\r\n 'Eq',\r\n 'Neq',\r\n 'In',\r\n 'Contains',\r\n 'StartsWith',\r\n 'Gt',\r\n 'Gte',\r\n 'Lt',\r\n 'Lte',\r\n 'Between',\r\n 'IsNull',\r\n 'IsNotNull',\r\n]);\r\n\r\nfunction clampPage(value: number | undefined, fallback = 1): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n return Math.max(1, Math.floor(value as number));\r\n}\r\n\r\nfunction clampPageSize(\r\n value: number | undefined,\r\n fallback = WORK_CENTER_LOCAL_FETCH_SIZE,\r\n): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n const parsed = Math.floor(value as number);\r\n return Math.min(WORK_CENTER_MAX_PAGE_SIZE, Math.max(1, parsed));\r\n}\r\n\r\nfunction sanitizeSort(\r\n rules: WorkCenterSortRule[] | undefined,\r\n): WorkCenterSortRule[] {\r\n if (!Array.isArray(rules)) return [];\r\n return rules\r\n .filter(\r\n (rule): rule is WorkCenterSortRule =>\r\n typeof rule?.field === 'string' &&\r\n rule.field.length > 0 &&\r\n (rule.dir === 'asc' || rule.dir === 'desc'),\r\n )\r\n .slice(0, WORK_CENTER_MAX_SORT);\r\n}\r\n\r\nfunction sanitizeFilters(\r\n filters: WorkCenterFilterRule[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n if (!Array.isArray(filters)) return [];\r\n\r\n return filters\r\n .filter(\r\n (filter): filter is WorkCenterFilterRule =>\r\n typeof filter?.field === 'string' &&\r\n filter.field.length > 0 &&\r\n typeof filter?.op === 'string' &&\r\n FILTER_OPERATORS.has(filter.op),\r\n )\r\n .slice(0, WORK_CENTER_MAX_FILTERS);\r\n}\r\n\r\nfunction parseJson(value: unknown): unknown {\r\n if (typeof value !== 'string') return value;\r\n if (!value.trim()) return null;\r\n\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction toOptionalInt(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') return null;\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? Math.floor(parsed) : null;\r\n}\r\n\r\nfunction toSelectedCardKey(value: unknown): string | null {\r\n if (typeof value !== 'string') return null;\r\n const parsed = value.trim();\r\n return parsed.length ? parsed : null;\r\n}\r\n\r\nfunction parseSortInput(value: unknown): WorkCenterSortRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeSort(parsed as WorkCenterSortRule[])\r\n : [];\r\n}\r\n\r\nfunction parseFiltersInput(value: unknown): WorkCenterFilterRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeFilters(parsed as WorkCenterFilterRule[])\r\n : [];\r\n}\r\n\r\nfunction hasParamValue(value: unknown): boolean {\r\n return value !== null && value !== undefined && value !== '';\r\n}\r\n\r\nfunction toLabel(value: string): string {\r\n const segment = value.split('.').pop() ?? value;\r\n return segment\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/\\s+/g, ' ')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction toViewType(viewType: string | undefined, key: string): string {\r\n if (viewType?.trim()) {\r\n return viewType;\r\n }\r\n\r\n return key.toLowerCase().includes('date') ? 'Date' : 'Text';\r\n}\r\n\r\nfunction normalizeColumnKey(key: string): string {\r\n return key\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[\\s._-]+/g, '');\r\n}\r\n\r\nfunction resolveColumnWeight(key: string): number {\r\n const normalizedKey = normalizeColumnKey(key);\r\n\r\n if (normalizedKey.includes('title')) return 26;\r\n if (\r\n normalizedKey.includes('subtitle') ||\r\n normalizedKey.includes('description')\r\n ) {\r\n return 20;\r\n }\r\n if (normalizedKey.includes('status')) return 14;\r\n if (normalizedKey.includes('progress')) return 17;\r\n if (\r\n normalizedKey.includes('createdby') ||\r\n normalizedKey.includes('assignedto') ||\r\n normalizedKey.includes('owner') ||\r\n normalizedKey.includes('user')\r\n ) {\r\n return 20;\r\n }\r\n if (\r\n normalizedKey.includes('duedate') ||\r\n normalizedKey.includes('createdat') ||\r\n normalizedKey.includes('updatedat') ||\r\n normalizedKey.endsWith('date')\r\n ) {\r\n return 15;\r\n }\r\n if (normalizedKey.includes('priority')) return 12;\r\n\r\n return 16;\r\n}\r\n\r\nfunction applySmartColumnWidths(\r\n columns: WorkCenterTableColumn[],\r\n): WorkCenterTableColumn[] {\r\n const dynamicWeightTotal = columns.reduce((total, column) => {\r\n return column.width?.trim()\r\n ? total\r\n : total + resolveColumnWeight(column.key);\r\n }, 0);\r\n\r\n if (!dynamicWeightTotal) {\r\n return columns;\r\n }\r\n\r\n return columns.map((column) => {\r\n if (column.width?.trim()) {\r\n return column;\r\n }\r\n\r\n const width = (\r\n (resolveColumnWeight(column.key) / dynamicWeightTotal) *\r\n 100\r\n ).toFixed(2);\r\n\r\n return {\r\n ...column,\r\n width: `${width}%`,\r\n };\r\n });\r\n}\r\n\r\nfunction getValue(record: Record<string, unknown>, key: string): unknown {\r\n return key.split('.').reduce<unknown>((current, part) => {\r\n if (!current || typeof current !== 'object') {\r\n return undefined;\r\n }\r\n\r\n return (current as Record<string, unknown>)[part];\r\n }, record);\r\n}\r\n\r\nfunction flattenRuntimeRow(\r\n row: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n const extra = row['extra'];\r\n\r\n if (!extra || typeof extra !== 'object' || Array.isArray(extra)) {\r\n return row;\r\n }\r\n\r\n return {\r\n ...(extra as Record<string, unknown>),\r\n ...row,\r\n };\r\n}\r\n\r\nfunction toDisplayValue(\r\n value: unknown,\r\n column: WorkCenterTableColumn,\r\n): unknown {\r\n if (column.viewType !== 'Text') {\r\n return value;\r\n }\r\n\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n\r\n const display = (value as Record<string, unknown>)['display'];\r\n return typeof display === 'string' ? display : value;\r\n}\r\n\r\nfunction buildColumnsFromProperties(\r\n properties: WorkCenterRuntimeProperty[],\r\n): WorkCenterTableColumn[] {\r\n return properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n ...property,\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n type: 'entity' as const,\r\n viewType: toViewType(property.viewType, property.key),\r\n }));\r\n}\r\n\r\nfunction buildColumns(\r\n columnsConfig: WorkCenterColumnsConfig | null | undefined,\r\n): WorkCenterTableColumn[] {\r\n const propertyColumns = buildColumnsFromProperties(\r\n columnsConfig?.properties ?? [],\r\n );\r\n if (propertyColumns.length) {\r\n return applySmartColumnWidths(propertyColumns);\r\n }\r\n\r\n const keys = columnsConfig?.columns?.length ? columnsConfig.columns : [];\r\n return applySmartColumnWidths(\r\n keys.map((key) => ({\r\n key,\r\n label: toLabel(key),\r\n type: 'entity' as const,\r\n viewType: toViewType(undefined, key),\r\n })),\r\n );\r\n}\r\n\r\nfunction toDisplayRows(\r\n rows: Record<string, unknown>[],\r\n columns: WorkCenterTableColumn[],\r\n): Record<string, unknown>[] {\r\n return rows.map((row) => {\r\n const sourceRow = flattenRuntimeRow(row);\r\n const displayRow = { ...sourceRow };\r\n\r\n for (const column of columns) {\r\n const value = getValue(sourceRow, column.key);\r\n displayRow[column.key] = {\r\n ...column,\r\n value: toDisplayValue(value, column),\r\n };\r\n }\r\n\r\n return displayRow;\r\n });\r\n}\r\n\r\nfunction buildMenuItems(cards: WorkCenterRuntimeCard[]): ClientPageMenuItem[] {\r\n const mapped = cards.map((card, index) => ({\r\n key: card.key,\r\n title:\r\n card.name?.display || card.name?.en || card.name?.ar || toLabel(card.key),\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: AREA_COLORS[index % AREA_COLORS.length],\r\n icon: card.icon ?? 'custom.task',\r\n isAvailable: card.isAvailable !== false,\r\n }));\r\n\r\n const available = mapped.filter((card) => card.isAvailable);\r\n const source = available.length ? available : mapped;\r\n\r\n return source.map((card) => ({\r\n key: card.key,\r\n title: card.title,\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: card.color,\r\n icon: card.icon ?? 'custom.task',\r\n }));\r\n}\r\n\r\nfunction buildKpis(\r\n stats: WorkCenterRuntimeStatsItem[],\r\n fallbackIcon: string | null,\r\n): StatisticCardData[] {\r\n return stats.map((stat, index) => ({\r\n title: String(stat.count ?? 0),\r\n subTitle: stat.label.display,\r\n icon: (fallbackIcon ?? 'custom.task') as any,\r\n color: KPI_COLORS[index % KPI_COLORS.length],\r\n }));\r\n}\r\n\r\nfunction createDefaultContext(area: WorkCenterArea): WorkCenterContext {\r\n return {\r\n area,\r\n templateId: null,\r\n selectedCardKey: null,\r\n page: 1,\r\n pageSize: WORK_CENTER_LOCAL_FETCH_SIZE,\r\n sort: [],\r\n runtimeFilters: [],\r\n includeStats: true,\r\n };\r\n}\r\n\r\nfunction createDefaultAreaState(area: WorkCenterArea): WorkCenterAreaState {\r\n return {\r\n context: createDefaultContext(area),\r\n menuItems: [],\r\n rows: [],\r\n columns: [],\r\n kpis: [],\r\n runtimeFilterSchema: null,\r\n totalCount: 0,\r\n warnings: [],\r\n lastLoadedAt: null,\r\n };\r\n}\r\n\r\nexport const WORK_CENTER_DEFAULT_STATE: WorkCenterStateModel = {\r\n activeArea: 'MyInbox',\r\n byArea: {\r\n MyInbox: createDefaultAreaState('MyInbox'),\r\n TasksCenter: createDefaultAreaState('TasksCenter'),\r\n },\r\n lookups: [],\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\nexport function normalizeContext(\r\n context: WorkCenterContext,\r\n): WorkCenterContext {\r\n return {\r\n ...context,\r\n page: clampPage(context.page, 1),\r\n pageSize: clampPageSize(context.pageSize, WORK_CENTER_LOCAL_FETCH_SIZE),\r\n sort: sanitizeSort(context.sort),\r\n runtimeFilters: sanitizeFilters(context.runtimeFilters),\r\n };\r\n}\r\n\r\nexport function buildContextFromInputs(\r\n currentContext: WorkCenterContext,\r\n area: WorkCenterArea,\r\n inputs: WorkCenterBootstrapInputs = {},\r\n): WorkCenterContext {\r\n const parsedCardKey = toSelectedCardKey(inputs.card);\r\n const parsedTemplateId = toOptionalInt(inputs.templateId);\r\n const parsedPage = toOptionalInt(inputs.page);\r\n const parsedPageSize = toOptionalInt(inputs.pageSize);\r\n\r\n return normalizeContext({\r\n ...currentContext,\r\n area,\r\n selectedCardKey: parsedCardKey ?? currentContext.selectedCardKey,\r\n page: parsedPage ?? currentContext.page,\r\n pageSize: parsedPageSize ?? currentContext.pageSize,\r\n templateId: parsedTemplateId ?? currentContext.templateId,\r\n sort: hasParamValue(inputs.sort)\r\n ? parseSortInput(inputs.sort)\r\n : inputs.sort === null\r\n ? []\r\n : currentContext.sort,\r\n runtimeFilters: hasParamValue(inputs.filters)\r\n ? parseFiltersInput(inputs.filters)\r\n : inputs.filters === null\r\n ? []\r\n : currentContext.runtimeFilters,\r\n });\r\n}\r\n\r\nexport function isSameContext(\r\n left: WorkCenterContext,\r\n right: WorkCenterContext,\r\n): boolean {\r\n return (\r\n left.area === right.area &&\r\n left.templateId === right.templateId &&\r\n left.selectedCardKey === right.selectedCardKey &&\r\n left.page === right.page &&\r\n left.pageSize === right.pageSize &&\r\n left.includeStats === right.includeStats &&\r\n JSON.stringify(left.sort) === JSON.stringify(right.sort) &&\r\n JSON.stringify(left.runtimeFilters) === JSON.stringify(right.runtimeFilters)\r\n );\r\n}\r\n\r\nexport function mapRuntimeResponse(\r\n current: WorkCenterAreaState,\r\n response: WorkCenterRuntimeResponseData,\r\n): WorkCenterAreaState {\r\n const selectedCard = response.selectedCard;\r\n const menuItems = buildMenuItems(response.cards);\r\n const requestedCardKey =\r\n selectedCard?.key ?? current.context.selectedCardKey ?? null;\r\n const selectedCardKey =\r\n requestedCardKey &&\r\n response.cards.some((card) => card.key === requestedCardKey)\r\n ? requestedCardKey\r\n : (menuItems[0]?.key ?? response.cards[0]?.key ?? null);\r\n const selectedCardFromList = selectedCardKey\r\n ? (response.cards.find((card) => card.key === selectedCardKey) ?? null)\r\n : null;\r\n const selectedMenuItem = menuItems.find(\r\n (item) => item.key === selectedCardKey,\r\n );\r\n const columns = buildColumns(\r\n selectedCard?.columnsConfig ?? selectedCardFromList?.columnsConfig,\r\n );\r\n const rows = toDisplayRows(selectedCard?.items ?? [], columns);\r\n const kpis = buildKpis(\r\n selectedCard?.stats ?? [],\r\n selectedMenuItem?.icon ?? null,\r\n );\r\n\r\n return {\r\n ...current,\r\n menuItems,\r\n rows,\r\n columns,\r\n kpis,\r\n runtimeFilterSchema:\r\n selectedCard?.runtimeFilterSchema ??\r\n selectedCardFromList?.runtimeFilterSchema ??\r\n null,\r\n totalCount: selectedCard?.pagination.totalCount ?? 0,\r\n warnings: response.warnings ?? [],\r\n lastLoadedAt: new Date().toISOString(),\r\n context: {\r\n ...current.context,\r\n selectedCardKey,\r\n page: selectedCard?.pagination.page ?? current.context.page,\r\n pageSize: selectedCard?.pagination.pageSize ?? current.context.pageSize,\r\n },\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { handleApiRequest } from '@masterteam/components';\r\nimport { EMPTY, catchError, map } from 'rxjs';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n SetLookups,\r\n} from './work-center.actions';\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterRuntimeFilterSchema,\r\n WorkCenterRuntimeRequest,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterStateModel,\r\n} from './work-center.model';\r\nimport {\r\n buildContextFromInputs,\r\n isSameContext,\r\n mapRuntimeResponse,\r\n normalizeContext,\r\n WORK_CENTER_DEFAULT_STATE,\r\n} from './work-center.state.helpers';\r\n\r\n@State<WorkCenterStateModel>({\r\n name: 'workCenter',\r\n defaults: WORK_CENTER_DEFAULT_STATE,\r\n})\r\n@Injectable()\r\nexport class WorkCenterState {\r\n private readonly http = inject(HttpClient);\r\n\r\n @Selector()\r\n static getState(state: WorkCenterStateModel): WorkCenterStateModel {\r\n return state;\r\n }\r\n\r\n @Selector()\r\n static activeArea(state: WorkCenterStateModel): WorkCenterArea {\r\n return state.activeArea;\r\n }\r\n\r\n @Selector([WorkCenterState.activeArea, WorkCenterState.getState])\r\n static activeSnapshot(\r\n activeArea: WorkCenterArea,\r\n state: WorkCenterStateModel,\r\n ): WorkCenterAreaState {\r\n return state.byArea[activeArea];\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static context(snapshot: WorkCenterAreaState) {\r\n return snapshot.context;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static menuItems(snapshot: WorkCenterAreaState) {\r\n return snapshot.menuItems;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static rows(snapshot: WorkCenterAreaState) {\r\n return snapshot.rows;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static columns(snapshot: WorkCenterAreaState) {\r\n return snapshot.columns;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static kpis(snapshot: WorkCenterAreaState) {\r\n return snapshot.kpis;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static runtimeFilterSchema(\r\n snapshot: WorkCenterAreaState,\r\n ): WorkCenterRuntimeFilterSchema | null {\r\n return snapshot.runtimeFilterSchema;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static totalCount(snapshot: WorkCenterAreaState): number {\r\n return snapshot.totalCount;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static warnings(snapshot: WorkCenterAreaState) {\r\n return snapshot.warnings;\r\n }\r\n\r\n @Selector()\r\n static lookups(state: WorkCenterStateModel) {\r\n return state.lookups;\r\n }\r\n\r\n @Selector()\r\n static getLoadingActive(state: WorkCenterStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: WorkCenterStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n @Action(EnterArea)\r\n enterArea(ctx: StateContext<WorkCenterStateModel>, action: EnterArea): void {\r\n if (ctx.getState().activeArea === action.area) return;\r\n ctx.patchState({ activeArea: action.area });\r\n }\r\n\r\n @Action(HydrateFromContext)\r\n hydrateFromContext(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: HydrateFromContext,\r\n ): void {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = normalizeContext({\r\n ...current.context,\r\n ...action.patch,\r\n area: action.area,\r\n });\r\n\r\n if (\r\n state.activeArea === action.area &&\r\n isSameContext(current.context, nextContext)\r\n ) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\r\n },\r\n });\r\n }\r\n\r\n @Action(SetParams)\r\n setParams(ctx: StateContext<WorkCenterStateModel>, action: SetParams) {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = buildContextFromInputs(\r\n current.context,\r\n action.area,\r\n action.inputs,\r\n );\r\n\r\n const areaChanged = state.activeArea !== action.area;\r\n const contextChanged = !isSameContext(current.context, nextContext);\r\n const runtimeLoading = state.loadingActive.includes(\r\n WorkCenterActionKey.LoadRuntime,\r\n );\r\n const shouldLoad =\r\n areaChanged ||\r\n contextChanged ||\r\n (!current.lastLoadedAt && !runtimeLoading);\r\n\r\n if (areaChanged || contextChanged) {\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\r\n },\r\n });\r\n }\r\n\r\n if (!shouldLoad) return;\r\n return ctx.dispatch(new LoadRuntime(action.area, 'route-enter'));\r\n }\r\n\r\n @Action(SetLookups)\r\n setLookups(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: SetLookups,\r\n ): void {\r\n if (ctx.getState().lookups === action.lookups) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n lookups: Array.isArray(action.lookups) ? action.lookups : [],\r\n });\r\n }\r\n\r\n @Action(LoadRuntime)\r\n loadRuntime(ctx: StateContext<WorkCenterStateModel>, action: LoadRuntime) {\r\n const state = ctx.getState();\r\n const areaState = state.byArea[action.area];\r\n const request = normalizeContext(areaState.context);\r\n const nextAreaState = {\r\n ...areaState,\r\n rows: [],\r\n kpis: [],\r\n totalCount: 0,\r\n };\r\n\r\n ctx.patchState({\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: nextAreaState,\r\n },\r\n });\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: WorkCenterActionKey.LoadRuntime,\r\n request$: this.getRuntime(request),\r\n onSuccess: (response, latestState) => {\r\n const current = latestState.byArea[action.area];\r\n return {\r\n byArea: {\r\n ...latestState.byArea,\r\n [action.area]: mapRuntimeResponse(current, response),\r\n },\r\n };\r\n },\r\n errorMessage: 'Failed to load Work Center runtime.',\r\n }).pipe(catchError(() => EMPTY));\r\n }\r\n\r\n private getRuntime(request: WorkCenterRuntimeRequest) {\r\n return this.http\r\n .post<\r\n ApiEnvelope<WorkCenterRuntimeResponseData>\r\n >('workcenter/runtime', request)\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) return response.data;\r\n\r\n const fallbackError = 'Failed to load Work Center runtime.';\r\n const message =\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError;\r\n\r\n throw new Error(message);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n SetLookups,\r\n} from './work-center.actions';\r\nimport {\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\r\n WorkCenterLookups,\r\n WorkCenterLoadReason,\r\n WorkCenterSortRule,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n} from './work-center.model';\r\nimport { WorkCenterState } from './work-center.state';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WorkCenterFacade {\r\n private readonly store = inject(Store);\r\n\r\n readonly activeArea = select(WorkCenterState.activeArea);\r\n readonly context = select(WorkCenterState.context);\r\n readonly menuItems = select(WorkCenterState.menuItems);\r\n readonly rows = select(WorkCenterState.rows);\r\n readonly columns = select(WorkCenterState.columns);\r\n readonly kpis = select(WorkCenterState.kpis);\r\n readonly lookups = select(WorkCenterState.lookups);\r\n readonly runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);\r\n readonly totalCount = select(WorkCenterState.totalCount);\r\n readonly warnings = select(WorkCenterState.warnings);\r\n\r\n private readonly loadingActive = select(WorkCenterState.getLoadingActive);\r\n private readonly errors = select(WorkCenterState.getErrors);\r\n\r\n readonly loading = computed(() =>\r\n this.loadingActive().includes(WorkCenterActionKey.LoadRuntime),\r\n );\r\n readonly error = computed(\r\n () => this.errors()[WorkCenterActionKey.LoadRuntime] ?? null,\r\n );\r\n\r\n enterArea(area: WorkCenterArea) {\r\n return this.store.dispatch(new EnterArea(area));\r\n }\r\n\r\n hydrateContext(area: WorkCenterArea, patch: WorkCenterHydratePatch) {\r\n return this.store.dispatch(new HydrateFromContext(area, patch));\r\n }\r\n\r\n setParams(area: WorkCenterArea, inputs: WorkCenterBootstrapInputs) {\r\n return this.store.dispatch(new SetParams(area, inputs));\r\n }\r\n\r\n setLookups(lookups: WorkCenterLookups) {\r\n return this.store.dispatch(new SetLookups(lookups));\r\n }\r\n\r\n selectCardAndLoad(area: WorkCenterArea, selectedCardKey: string) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { selectedCardKey, page: 1 }),\r\n new LoadRuntime(area, 'menu-change'),\r\n ]);\r\n }\r\n\r\n applyTableLazyLoadAndLoad(area: WorkCenterArea, event: any) {\r\n const context = this.store.selectSnapshot(WorkCenterState.context);\r\n const patch: WorkCenterHydratePatch = {};\r\n let changed = false;\r\n\r\n const page = this.toPositiveInt(event?.currentPage);\r\n if (page !== null && page !== context.page) {\r\n patch.page = page;\r\n changed = true;\r\n }\r\n\r\n const pageSize = this.toPositiveInt(event?.pageSize);\r\n if (pageSize !== null) {\r\n const normalizedPageSize = Math.min(\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n Math.max(1, pageSize),\r\n );\r\n if (normalizedPageSize !== context.pageSize) {\r\n patch.pageSize = normalizedPageSize;\r\n changed = true;\r\n }\r\n }\r\n\r\n const sort = this.toSortFromLazyEvent(event);\r\n if (sort && !this.isSameSort(sort, context.sort)) {\r\n patch.sort = sort;\r\n changed = true;\r\n }\r\n\r\n if (!changed) {\r\n return;\r\n }\r\n\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, patch),\r\n new LoadRuntime(area, 'table-lazy'),\r\n ]);\r\n }\r\n\r\n applyRuntimeFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { runtimeFilters, page: 1 }),\r\n new LoadRuntime(area, 'filters-change'),\r\n ]);\r\n }\r\n\r\n loadRuntime(area: WorkCenterArea, reason: WorkCenterLoadReason = 'manual') {\r\n return this.store.dispatch(new LoadRuntime(area, reason));\r\n }\r\n\r\n private toPositiveInt(value: unknown): number | null {\r\n const parsed = Number(value);\r\n if (!Number.isFinite(parsed)) {\r\n return null;\r\n }\r\n return Math.max(1, Math.floor(parsed));\r\n }\r\n\r\n private toSortFromLazyEvent(event: any): WorkCenterSortRule[] | null {\r\n const sortField = event?.sortField;\r\n if (typeof sortField !== 'string' || !sortField.length) {\r\n return null;\r\n }\r\n\r\n return [\r\n {\r\n field: sortField,\r\n dir: event?.sortOrder === -1 ? 'desc' : 'asc',\r\n },\r\n ];\r\n }\r\n\r\n private isSameSort(\r\n left: WorkCenterSortRule[] | undefined,\r\n right: WorkCenterSortRule[] | undefined,\r\n ): boolean {\r\n const leftValue = left ?? [];\r\n const rightValue = right ?? [];\r\n\r\n if (leftValue.length !== rightValue.length) {\r\n return false;\r\n }\r\n\r\n return leftValue.every(\r\n (rule, index) =>\r\n rule.field === rightValue[index]?.field &&\r\n rule.dir === rightValue[index]?.dir,\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { ClientPage } from '@masterteam/components/client-page';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport {\r\n PropertyFilterBuilder,\r\n PropertyFilterBuilderRule,\r\n PropertyFilterBuilderSchema,\r\n} from '@masterteam/components/property-filter-builder';\r\nimport { StatisticCard } from '@masterteam/components/statistic-card';\r\nimport { Table } from '@masterteam/components/table';\r\nimport { ClientLookup } from '@masterteam/forms/client-form';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { take } from 'rxjs';\r\n\r\nimport { WorkCenterClientFormModal } from '../work-center-client-form-modal/work-center-client-form-modal';\r\nimport { WorkCenterFacade } from '../../store/work-center/work-center.facade';\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterClientFormModalOptions,\r\n WorkCenterFilterRule,\r\n WorkCenterItemModalOptions,\r\n WorkCenterItemContextKey,\r\n WorkCenterItemModalComponentInput,\r\n WorkCenterRuntimeFilterSchema,\r\n} from '../../store/work-center/work-center.model';\r\n\r\nconst OPERATOR_LABELS: Record<string, string> = {\r\n Eq: 'Equals',\r\n Neq: 'Not equal',\r\n In: 'In',\r\n Contains: 'Contains',\r\n StartsWith: 'Starts with',\r\n Gt: 'Greater than',\r\n Gte: 'Greater than or equal',\r\n Lt: 'Less than',\r\n Lte: 'Less than or equal',\r\n Between: 'Between',\r\n IsNull: 'Is empty',\r\n IsNotNull: 'Is not empty',\r\n};\r\n\r\nconst OPERATOR_VALUE_MODE: Record<\r\n string,\r\n 'single' | 'multi' | 'range' | 'none'\r\n> = {\r\n In: 'multi',\r\n Between: 'range',\r\n IsNull: 'none',\r\n IsNotNull: 'none',\r\n};\r\nconst GENERAL_TASK_CARD_KEYS = new Set([\r\n 'mygeneraltasks',\r\n 'generaltask',\r\n 'generaltasks',\r\n]);\r\n\r\nfunction toLabel(value: string): string {\r\n const normalized = value.split('.').pop() ?? value;\r\n return normalized\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction columnTypeToViewType(type: string | undefined): string | undefined {\r\n if (type === 'date') return 'Date';\r\n return undefined;\r\n}\r\n\r\nfunction normalizeCardKey(value: string | null | undefined): string {\r\n if (typeof value !== 'string') {\r\n return '';\r\n }\r\n\r\n return value\r\n .trim()\r\n .replace(/[\\s_-]/g, '')\r\n .toLowerCase();\r\n}\r\n\r\nfunction mapAllowedFields(schema: WorkCenterRuntimeFilterSchema) {\r\n const properties = schema.properties ?? [];\r\n const fromProperties = properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n viewType: property.viewType,\r\n }));\r\n\r\n if (fromProperties.length) {\r\n return fromProperties;\r\n }\r\n\r\n return (schema.allowedFields ?? []).map((field) => ({\r\n key: field,\r\n label: toLabel(field),\r\n }));\r\n}\r\n\r\nfunction mapAllowedOperators(\r\n schema: WorkCenterRuntimeFilterSchema,\r\n getLabel: (key: string) => string,\r\n) {\r\n const options: Array<{\r\n key: string;\r\n label: string;\r\n valueMode: 'single' | 'multi' | 'range' | 'none';\r\n }> = [];\r\n\r\n for (const operator of schema.allowedOperators ?? []) {\r\n if (typeof operator === 'string') {\r\n options.push({\r\n key: operator,\r\n label: getLabel(operator),\r\n valueMode: OPERATOR_VALUE_MODE[operator] ?? 'single',\r\n });\r\n continue;\r\n }\r\n\r\n const key = operator?.value;\r\n if (!key) {\r\n continue;\r\n }\r\n\r\n options.push({\r\n key,\r\n label:\r\n operator.display?.display ||\r\n operator.display?.en ||\r\n operator.display?.ar ||\r\n getLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n });\r\n }\r\n\r\n return options;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-page',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n ClientPage,\r\n PropertyFilterBuilder,\r\n StatisticCard,\r\n Table,\r\n SkeletonModule,\r\n ],\r\n templateUrl: './work-center-page.html',\r\n})\r\nexport class WorkCenterPage {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly modal = inject(ModalService);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n\r\n readonly area = input<WorkCenterArea>('MyInbox');\r\n readonly pageTitle = input<string>('');\r\n readonly menuIcon = input<string>('communication.inbox-01');\r\n readonly lookups = input<ClientLookup[]>([]);\r\n readonly openItemsInModal = input(true);\r\n readonly itemModal = input<WorkCenterItemModalOptions | null>(null);\r\n readonly generalTaskModal = input<WorkCenterClientFormModalOptions | null>(\r\n null,\r\n );\r\n\r\n readonly runtimeFiltersChanged = output<WorkCenterFilterRule[]>();\r\n readonly itemClicked = output<WorkCenterItemContextKey>();\r\n\r\n protected readonly context = this.facade.context;\r\n private readonly _menuItems = this.facade.menuItems;\r\n protected readonly menuItems = computed(() => {\r\n this.activeLang();\r\n\r\n return this._menuItems().map((item) => ({\r\n ...item,\r\n subtitle: `${item.count} ${item.title}`,\r\n }));\r\n });\r\n protected readonly rows = this.facade.rows;\r\n protected readonly columns = this.facade.columns;\r\n protected readonly kpis = this.facade.kpis;\r\n protected readonly runtimeFilterSchema = this.facade.runtimeFilterSchema;\r\n protected readonly loading = this.facade.loading;\r\n protected readonly tableColumns = computed(() =>\r\n this.columns().map((column) => ({\r\n ...column,\r\n sortable: true,\r\n })),\r\n );\r\n\r\n protected readonly propertyFilterSchema =\r\n computed<PropertyFilterBuilderSchema | null>(() => {\r\n this.activeLang();\r\n const schema = this.runtimeFilterSchema();\r\n if (schema) {\r\n const allowedFields = mapAllowedFields(schema);\r\n const allowedOperators = mapAllowedOperators(schema, (key) =>\r\n this.getOpLabel(key),\r\n );\r\n if (allowedFields.length && allowedOperators.length) {\r\n return { allowedFields, allowedOperators };\r\n }\r\n }\r\n\r\n const fallbackFields = this.columns()\r\n .filter(\r\n (column) => typeof column?.key === 'string' && column.key.length > 0,\r\n )\r\n .map((column) => ({\r\n key: column.key,\r\n label: column.label || toLabel(column.key),\r\n viewType: columnTypeToViewType(column.type),\r\n }));\r\n\r\n if (!fallbackFields.length) {\r\n return null;\r\n }\r\n\r\n const fallbackOperators = Object.keys(OPERATOR_LABELS).map((key) => ({\r\n key,\r\n label: this.getOpLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n }));\r\n\r\n return {\r\n allowedFields: fallbackFields,\r\n allowedOperators: fallbackOperators,\r\n };\r\n });\r\n protected readonly showGeneralTaskCreateButton = computed(() =>\r\n GENERAL_TASK_CARD_KEYS.has(\r\n normalizeCardKey(this.context().selectedCardKey),\r\n ),\r\n );\r\n protected readonly generalTaskButtonLabel = computed(() => {\r\n this.activeLang();\r\n return (\r\n this.generalTaskModal()?.buttonLabel?.trim() ||\r\n this.transloco.translate<string>('workCenter.page.new')\r\n );\r\n });\r\n protected readonly resolvedPageTitle = computed(() => {\r\n this.activeLang();\r\n return (\r\n this.pageTitle() ||\r\n this.transloco.translate<string>('workCenter.page.title')\r\n );\r\n });\r\n protected readonly generalTaskButtonIcon = computed(\r\n () => this.generalTaskModal()?.buttonIcon?.trim() || 'general.plus',\r\n );\r\n private readonly defaultModalStyleClass =\r\n '!w-[96vw] md:!w-[84vw] xl:!w-[70vw] !shadow-none';\r\n private readonly defaultGeneralTaskModalStyleClass = '!w-[70vw] !h-[90vh]';\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.facade.setLookups(this.lookups());\r\n });\r\n }\r\n\r\n onMenuItemClick(item: ClientPageMenuItem): void {\r\n if (item.key === this.context().selectedCardKey) {\r\n return;\r\n }\r\n\r\n this.facade.selectCardAndLoad(this.area(), item.key);\r\n }\r\n\r\n onRuntimeFiltersApplied(filters: PropertyFilterBuilderRule[]): void {\r\n const mappedFilters = filters.map((filter) => ({\r\n field: filter.field,\r\n op: filter.op as WorkCenterFilterRule['op'],\r\n value: filter.value,\r\n values: filter.values,\r\n from: filter.from,\r\n to: filter.to,\r\n }));\r\n\r\n this.facade.applyRuntimeFiltersAndLoad(this.area(), mappedFilters);\r\n this.runtimeFiltersChanged.emit(mappedFilters);\r\n }\r\n\r\n onRuntimeFiltersCleared(): void {\r\n this.facade.applyRuntimeFiltersAndLoad(this.area(), []);\r\n this.runtimeFiltersChanged.emit([]);\r\n }\r\n\r\n onGeneralTaskCreateClick(): void {\r\n const modalOptions = this.generalTaskModal();\r\n const modalData = {\r\n moduleKey: 'GeneralTask',\r\n ...(modalOptions?.data ?? {}),\r\n };\r\n const modalHeader =\r\n modalOptions?.header ??\r\n this.transloco.translate<string>('workCenter.page.create');\r\n const modalStyleClass =\r\n modalOptions?.styleClass ?? this.defaultGeneralTaskModalStyleClass;\r\n const operationKey = modalOptions?.operationKey ?? 'Create';\r\n const lookups = modalOptions?.lookups ?? this.lookups();\r\n\r\n const ref = this.modal.openModal(WorkCenterClientFormModal, 'dialog', {\r\n header: modalHeader,\r\n styleClass: modalStyleClass,\r\n position: 'end',\r\n dismissableMask: true,\r\n inputValues: {\r\n data: modalData,\r\n operationKey,\r\n lookups,\r\n },\r\n });\r\n\r\n ref.onClose.pipe(take(1)).subscribe((result: unknown) => {\r\n if (result) {\r\n this.facade.loadRuntime(this.area(), 'refresh');\r\n }\r\n });\r\n }\r\n\r\n onRowClick(row: Record<string, unknown>): void {\r\n const contextKey = this.resolveRowContextKey(row);\r\n console.log('[work-center-debug] page row click', {\r\n contextKey,\r\n row,\r\n openItemsInModal: this.openItemsInModal(),\r\n hasModalComponent: !!this.itemModal()?.component,\r\n });\r\n\r\n if (!contextKey) {\r\n return;\r\n }\r\n\r\n this.itemClicked.emit(contextKey);\r\n\r\n if (!this.openItemsInModal()) {\r\n return;\r\n }\r\n\r\n const modalOptions = this.itemModal();\r\n if (!modalOptions?.component) {\r\n return;\r\n }\r\n\r\n this.modal.openModal(modalOptions.component, 'drawer', {\r\n header:\r\n modalOptions?.header ??\r\n this.transloco.translate<string>('workCenter.page.itemDetails'),\r\n styleClass: modalOptions?.styleClass ?? this.defaultModalStyleClass,\r\n position: modalOptions?.position ?? 'end',\r\n dismissible: true,\r\n modal: true,\r\n ...(modalOptions?.appendTo ? { appendTo: modalOptions.appendTo } : {}),\r\n inputValues: { contextKey } satisfies WorkCenterItemModalComponentInput,\r\n });\r\n }\r\n\r\n protected readonly rowsClickable = computed(() => this.openItemsInModal());\r\n\r\n private getOpLabel(key: string): string {\r\n return (\r\n this.transloco.translate<string>('workCenter.operator.' + key) ||\r\n OPERATOR_LABELS[key] ||\r\n toLabel(key)\r\n );\r\n }\r\n\r\n private resolveRowContextKey(\r\n row: Record<string, unknown>,\r\n ): WorkCenterItemContextKey | null {\r\n const value = row['contextKey'];\r\n if (typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n const normalized = value.trim();\r\n return normalized.length ? normalized : null;\r\n }\r\n}\r\n","<mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"resolvedPageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n storageKey=\"work-center-client-page\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n>\r\n <ng-template #headerClientPageEnd>\r\n <div class=\"flex flex-wrap items-center justify-end gap-2\">\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"context().runtimeFilters\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n\r\n @if (showGeneralTaskCreateButton()) {\r\n <mt-button\r\n [label]=\"generalTaskButtonLabel()\"\r\n [icon]=\"generalTaskButtonIcon()\"\r\n size=\"small\"\r\n (onClick)=\"onGeneralTaskCreateClick()\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"flex flex-col gap-8\">\r\n @if (loading()) {\r\n <div\r\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 gap-3\"\r\n >\r\n @for (_ of [1, 2, 3, 4, 5]; track $index) {\r\n <p-skeleton height=\"6.5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"gap-3 flex flex-wrap\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" class=\"min-w-1/5\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n noCard\r\n [data]=\"rows()\"\r\n [columns]=\"tableColumns()\"\r\n tableLayout=\"auto\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"true\"\r\n [exportable]=\"true\"\r\n [pageSize]=\"5\"\r\n [rowsPerPageOptions]=\"[5, 10, 20, 50]\"\r\n storageKey=\"work-center-page-table\"\r\n (rowClick)=\"onRowClick($event)\"\r\n />\r\n </div>\r\n</mt-client-page>\r\n","import { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\n\r\nexport function readItemContext(\r\n details: WorkCenterItemBasicInfoData,\r\n): Record<string, unknown> | null {\r\n const item = details.item;\r\n if (!item || typeof item !== 'object') {\r\n return null;\r\n }\r\n\r\n const context = item['context'];\r\n return context && typeof context === 'object'\r\n ? (context as Record<string, unknown>)\r\n : null;\r\n}\r\n\r\nexport function readNumber(\r\n source: Record<string, unknown> | null,\r\n key: string,\r\n): number | undefined {\r\n const value = source?.[key];\r\n if (typeof value === 'number') {\r\n return Number.isFinite(value) ? value : undefined;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim().length) {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : undefined;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nexport function readString(\n source: Record<string, unknown> | null,\n key: string,\n): string | undefined {\n const value = source?.[key];\n return typeof value === 'string' && value.trim().length ? value : undefined;\n}\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport {\r\n EntityAttachmentValue,\r\n EntitiesPreview,\r\n EntityData,\r\n EntityUserValue,\r\n} from '@masterteam/components/entities';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport {\r\n Connection,\r\n Node,\r\n StructureBuilder,\r\n} from '@masterteam/structure-builder';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { readItemContext, readNumber } from '../work-center-types.helpers';\r\n\r\ninterface EscalationPreviewResponse {\r\n message?: string | null;\r\n data: EscalationPreviewData;\r\n}\r\n\r\ninterface TranslatableValue {\r\n display?: string;\r\n en?: string;\r\n ar?: string;\r\n}\r\n\r\ninterface EscalationSchemaStep {\r\n id: number | string;\r\n name?: TranslatableValue;\r\n isInitial?: boolean;\r\n isFinal?: boolean;\r\n}\r\n\r\ninterface EscalationSchemaConnection {\r\n id?: number | string;\r\n source: number | string;\r\n target: number | string;\r\n}\r\n\r\ninterface EscalationPreviewData {\r\n initiatedBy?: Record<string, unknown>;\r\n startedAt?: Record<string, unknown>;\r\n reason?: string;\r\n attachments?: string[];\r\n schema?: {\r\n stepsSchema?: EscalationSchemaStep[];\r\n connections?: EscalationSchemaConnection[];\r\n };\r\n schemaSteps?: EscalationSchemaStep[];\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-escalation-instance-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n DiscussionThread,\r\n EntitiesPreview,\r\n StructureBuilder,\r\n ],\r\n templateUrl: './work-center-escalation-instance-type.html',\r\n})\r\nexport class WorkCenterEscalationInstanceType implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private loadSub?: Subscription;\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n\r\n protected readonly activeTab = signal('escalationDetails');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>(\r\n 'workCenter.tabs.escalationDetails',\r\n ),\r\n value: 'escalationDetails',\r\n icon: 'alert.notification-message',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.schema'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly preview = signal<EscalationPreviewData | null>(null);\r\n protected readonly detailEntities = computed<EntityData[]>(() => {\r\n this.activeLang();\r\n const preview = this.preview();\r\n if (!preview) {\r\n return [];\r\n }\r\n\r\n return [\r\n {\r\n key: 'initiatedBy',\r\n name: this.transloco.translate<string>('workCenter.entity.initiatedBy'),\r\n value: mapUserValue(preview.initiatedBy),\r\n viewType: 'User',\r\n order: 1,\r\n configuration: { size: 12 },\r\n },\r\n {\r\n key: 'startedAt',\r\n name: this.transloco.translate<string>('workCenter.entity.startedAt'),\r\n value: resolveDisplayValue(preview.startedAt),\r\n rawValue: resolveRawValue(preview.startedAt),\r\n viewType: 'DateTime',\r\n order: 2,\r\n configuration: { size: 12 },\r\n },\r\n {\r\n key: 'reason',\r\n name: this.transloco.translate<string>('workCenter.entity.reason'),\r\n value: preview.reason ?? '',\r\n viewType: 'LongText',\r\n order: 3,\r\n configuration: { size: 24 },\r\n },\r\n {\r\n key: 'attachments',\r\n name: this.transloco.translate<string>('workCenter.entity.attachments'),\r\n value: mapAttachments(preview.attachments),\r\n viewType: 'Attachment',\r\n order: 4,\r\n configuration: { size: 24 },\r\n },\r\n ];\r\n });\r\n protected readonly schemaNodes = computed<Node[]>(() => {\r\n this.activeLang();\r\n return resolveSchemaSteps(this.preview()).map((step) => ({\r\n id: String(step.id),\r\n name:\r\n resolveTranslatable(step.name) ||\r\n `${this.transloco.translate<string>('workCenter.entity.step')} ${step.id}`,\r\n color: step.isFinal ? '#059669' : step.isInitial ? '#2563eb' : '#0f172a',\r\n }));\r\n });\r\n protected readonly schemaConnections = computed<Connection[]>(() =>\r\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\r\n id: String(\r\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\r\n ),\r\n from: String(connection.source),\r\n to: String(connection.target),\r\n })),\r\n );\r\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\r\n\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly instanceId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'escalationInstanceId') ??\r\n readNumber(this.itemContext(), 'instanceId'),\r\n );\r\n protected readonly resolvedInstanceId = computed(\r\n () => this.instanceId() ?? 0,\r\n );\r\n protected readonly canRenderDetails = computed(\r\n () => this.resolvedInstanceId() > 0,\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.resolvedInstanceId() > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n const instanceId = this.resolvedInstanceId();\r\n\r\n if (instanceId > 0) {\r\n untracked(() => this.loadPreview(instanceId));\r\n return;\r\n }\r\n\r\n this.preview.set(null);\r\n this.error.set(null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n }\r\n\r\n private loadPreview(instanceId: number): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n this.loadSub = this.http\r\n .get<EscalationPreviewResponse>(`escalations/${instanceId}/preview`)\r\n .subscribe({\r\n next: (response) => {\r\n this.loading.set(false);\r\n this.preview.set(response.data ?? null);\r\n },\r\n error: (error) => {\r\n this.loading.set(false);\r\n this.preview.set(null);\r\n this.error.set(\r\n error?.error?.message ??\r\n error?.message ??\r\n this.transloco.translate<string>(\r\n 'workCenter.error.failedLoadEscalation',\r\n ),\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction mapUserValue(value: unknown): EntityUserValue {\r\n if (!value || typeof value !== 'object') {\r\n return {\r\n displayName: '',\r\n userName: '',\r\n };\r\n }\r\n\r\n return {\r\n id: readString(value, 'id'),\r\n userName: readString(value, 'userName'),\r\n displayName:\r\n readString(value, 'displayName') ??\r\n readString(value, 'fullName') ??\r\n readString(value, 'userName') ??\r\n '',\r\n photoUrl: readString(value, 'photoUrl'),\r\n phoneNumber:\r\n readString(value, 'phoneNumber') ?? readString(value, 'mobileNumber'),\r\n email: readString(value, 'email') ?? readString(value, 'emailAddress'),\r\n };\r\n}\r\n\r\nfunction mapAttachments(value: string[] | undefined): EntityAttachmentValue {\r\n return (value ?? []) as EntityAttachmentValue;\r\n}\r\n\r\nfunction resolveSchemaSteps(\r\n preview: EscalationPreviewData | null,\r\n): EscalationSchemaStep[] {\r\n return preview?.schema?.stepsSchema ?? preview?.schemaSteps ?? [];\r\n}\r\n\r\nfunction resolveTranslatable(value: TranslatableValue | undefined): string {\r\n if (!value || typeof value !== 'object') {\r\n return '';\r\n }\r\n\r\n return value.display ?? value.en ?? value.ar ?? '';\r\n}\r\n\r\nfunction resolveDisplayValue(value: unknown): string {\r\n if (!value || typeof value !== 'object') {\r\n return typeof value === 'string' ? value : '';\r\n }\r\n\r\n return (\r\n readString(value, 'displayValue') ??\r\n readString(value, 'display') ??\r\n readString(value, 'actualValue') ??\r\n ''\r\n );\r\n}\r\n\r\nfunction resolveRawValue(value: unknown): string | undefined {\r\n if (!value || typeof value !== 'object') {\r\n return typeof value === 'string' ? value : undefined;\r\n }\r\n\r\n return (\r\n readString(value, 'actualValue') ??\r\n readString(value, 'displayValue') ??\r\n undefined\r\n );\r\n}\r\n\r\nfunction readString(value: unknown, key: string): string | undefined {\r\n if (!value || typeof value !== 'object') {\r\n return undefined;\r\n }\r\n\r\n const result = (value as Record<string, unknown>)[key];\r\n return typeof result === 'string' && result.length ? result : undefined;\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'escalationDetails'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderDetails()) {\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.escalationDetails\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as error) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ error }}\r\n </p>\r\n </div>\r\n } @else if (preview()) {\r\n <mt-entities-preview [entities]=\"detailEntities()\" />\r\n }\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationDetailsUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderDetails()) {\r\n @if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"loading.escalationSchema\") }}\r\n </p>\r\n </div>\r\n } @else if (error(); as error) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">\r\n {{ error }}\r\n </p>\r\n </div>\r\n } @else if (hasSchema()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg lg:h-full lg:min-h-0\"\r\n >\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [readonly]=\"true\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationSchemaUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationSchemaContextUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'EscalationInstance'\"\r\n [recordId]=\"resolvedInstanceId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.escalationDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-module-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n ],\r\n templateUrl: './work-center-module-type.html',\r\n})\r\nexport class WorkCenterModuleType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('details');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.details'),\r\n value: 'details',\r\n icon: 'file.folder',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly instanceId = computed(() =>\r\n readNumber(this.itemContext(), 'instanceId'),\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly moduleKey = computed(() => 'ModuleData');\r\n protected readonly operationKey = computed(() => 'Update');\r\n protected readonly resolvedInstanceId = computed(\r\n () => this.instanceId() ?? 0,\r\n );\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly discussionModuleType = computed(\r\n () =>\r\n readString(this.itemContext(), 'moduleKey') ??\r\n this.details().sourceType ??\r\n this.details().type ??\r\n '',\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () =>\r\n this.resolvedInstanceId() > 0 &&\r\n this.discussionModuleType().trim().length > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'details'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [readonly]=\"true\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.moduleFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"discussionModuleType()\"\r\n [recordId]=\"resolvedInstanceId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.moduleDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { EntityData } from '@masterteam/components/entities';\r\nimport { Table } from '@masterteam/components/table';\r\nimport {\r\n Connection,\r\n Node,\r\n StructureBuilder,\r\n} from '@masterteam/structure-builder';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ApiEnvelope } from '../../../store/work-center/work-center.model';\r\n\r\ninterface ProcessPreviewStep {\r\n stepId?: number | string;\r\n stepName?: unknown;\r\n status?: unknown;\r\n targetUser?: Record<string, unknown> | null;\r\n actionUserInfo?: Record<string, unknown> | null;\r\n createdAt?: string | null;\r\n actionDate?: string | null;\r\n}\r\n\r\ninterface ProcessPreviewSchemaStep {\r\n id: number | string;\r\n name?: unknown;\r\n type?: string;\r\n isInitial?: boolean;\r\n isFinal?: boolean;\r\n status?: string;\r\n}\r\n\r\ninterface ProcessPreviewSchemaConnection {\r\n id?: number | string;\r\n source: number | string;\r\n target: number | string;\r\n state?: 'idle' | 'active' | 'success' | 'error';\r\n}\r\n\r\ninterface ProcessPreviewData {\r\n steps?: ProcessPreviewStep[];\r\n schema?: {\r\n stepsSchema?: ProcessPreviewSchemaStep[];\r\n connections?: ProcessPreviewSchemaConnection[];\r\n } | null;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-preview',\r\n standalone: true,\r\n imports: [CommonModule, Table, StructureBuilder],\r\n templateUrl: './work-center-process-preview.html',\r\n})\r\nexport class WorkCenterProcessPreview implements OnDestroy {\r\n private readonly http = inject(HttpClient);\r\n private loadSub?: Subscription;\r\n\r\n readonly requestId = input<number | null | undefined>(null);\r\n readonly view = input<'approvals' | 'schema'>('approvals');\r\n\r\n protected readonly approvalColumns = [\r\n { key: 'stepName', label: 'Name' },\r\n { key: 'status', label: 'Status' },\r\n { key: 'user', label: 'User', type: 'entity' as const },\r\n { key: 'createdAt', label: 'Initiation Date', type: 'entity' as const },\r\n { key: 'actionDate', label: 'Action Date', type: 'entity' as const },\r\n ];\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly preview = signal<ProcessPreviewData | null>(null);\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n protected readonly approvalRows = computed(() =>\r\n (this.preview()?.steps ?? []).map((step) => ({\r\n stepName: display(step.stepName) || String(step.stepId ?? '--'),\r\n status: display(step.status) || '--',\r\n user: buildEntity(\r\n 'User',\r\n 'User',\r\n (step.actionUserInfo ?? step.targetUser ?? null) as any,\r\n ),\r\n createdAt: buildEntity(\r\n 'Initiation Date',\r\n 'DateTime',\r\n step.createdAt ?? '',\r\n ),\r\n actionDate: buildEntity('Action Date', 'DateTime', step.actionDate ?? ''),\r\n })),\r\n );\r\n protected readonly hasApprovals = computed(\r\n () => this.approvalRows().length > 0,\r\n );\r\n protected readonly schemaNodes = computed<Node[]>(() =>\r\n (this.preview()?.schema?.stepsSchema ?? []).map((step) => {\r\n const isAppAction = step.type === 'AppAction';\r\n const color = step.isFinal\r\n ? '#059669'\r\n : step.isInitial\r\n ? '#2563eb'\r\n : isAppAction\r\n ? '#B45309'\r\n : '#0369A1';\r\n return {\r\n id: String(step.id),\r\n name: display(step.name) || String(step.id),\r\n color,\r\n icon: isAppAction\r\n ? 'general.zap'\r\n : step.isFinal\r\n ? 'map.flag-04'\r\n : step.isInitial\r\n ? 'map.flag-04'\r\n : 'file.clipboard-check',\r\n subtitle: step.isInitial\r\n ? 'Start'\r\n : step.isFinal\r\n ? 'End'\r\n : isAppAction\r\n ? 'App Action'\r\n : 'Form Step',\r\n badge: step.isInitial ? 'Initial' : step.isFinal ? 'Final' : null,\r\n status: step.status ?? null,\r\n style: isAppAction ? 'icon' : 'detail',\r\n };\r\n }),\r\n );\r\n protected readonly schemaConnections = computed<Connection[]>(() =>\r\n (this.preview()?.schema?.connections ?? []).map((connection, index) => ({\r\n id: String(\r\n connection.id ?? `${connection.source}-${connection.target}-${index}`,\r\n ),\r\n from: String(connection.source),\r\n to: String(connection.target),\r\n state: connection.state,\r\n })),\r\n );\r\n protected readonly hasSchema = computed(() => this.schemaNodes().length > 0);\r\n protected readonly previewNodeFields = {\r\n id: 'id',\r\n name: 'name',\r\n icon: 'icon',\r\n color: 'color',\r\n subtitle: 'subtitle',\r\n badge: 'badge',\r\n status: 'status',\r\n style: 'style',\r\n };\r\n\r\n constructor() {\r\n effect(() => {\r\n const requestId = this.requestId() ?? 0;\r\n\r\n if (requestId > 0) {\r\n untracked(() => this.loadPreview(requestId));\r\n return;\r\n }\r\n\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(false);\r\n this.error.set(null);\r\n this.preview.set(null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadSub?.unsubscribe();\r\n }\r\n\r\n private loadPreview(requestId: number): void {\r\n this.loadSub?.unsubscribe();\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n this.loadSub = this.http\r\n .get<ApiEnvelope<ProcessPreviewData>>(`processes/${requestId}/preview`)\r\n .subscribe({\r\n next: (response) => {\r\n this.loading.set(false);\r\n this.preview.set(response.data ?? null);\r\n },\r\n error: (error) => {\r\n this.loading.set(false);\r\n this.preview.set(null);\r\n this.error.set(\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load process preview',\r\n );\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction buildEntity(\r\n name: string,\r\n viewType: 'User' | 'DateTime',\r\n value: unknown,\r\n): EntityData {\r\n return {\r\n name,\r\n viewType,\r\n value: (value as any) ?? '',\r\n configuration: {\r\n hideName: true,\r\n },\r\n };\r\n}\r\n\r\nfunction display(value: unknown): string {\r\n if (typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'number' || typeof value === 'boolean') {\r\n return String(value);\r\n }\r\n\r\n if (!value || typeof value !== 'object') {\r\n return '';\r\n }\r\n\r\n const resolved = (value as { display?: unknown }).display;\r\n if (typeof resolved === 'string') {\r\n return resolved;\r\n }\r\n\r\n if (typeof resolved === 'number' || typeof resolved === 'boolean') {\r\n return String(resolved);\r\n }\r\n\r\n return '';\r\n}\r\n","@if (!canRenderPreview()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process preview is not available for this item yet.\r\n </p>\r\n </div>\r\n} @else if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"text-sm text-surface-500\">Loading process preview...</p>\r\n </div>\r\n} @else if (error()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">{{ error() }}</p>\r\n </div>\r\n} @else {\r\n @if (view() === \"schema\") {\r\n @if (hasSchema()) {\r\n <div class=\"h-[70vh] overflow-hidden\">\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [layoutDirection]=\"'LR'\"\r\n [readonly]=\"true\"\r\n [nodeFields]=\"previewNodeFields\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process steps are not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n } @else if (hasApprovals()) {\r\n <mt-table\r\n [data]=\"approvalRows()\"\r\n [columns]=\"approvalColumns\"\r\n storageKey=\"work-center-process-preview-table\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [clickableRows]=\"false\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process approvals data is not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { WorkCenterProcessPreview } from '../../work-center-item-modal/work-center-process-preview/work-center-process-preview';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-request-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n WorkCenterProcessPreview,\r\n ],\r\n templateUrl: './work-center-process-request-type.html',\r\n})\r\nexport class WorkCenterProcessRequestType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('requestDetails');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>(\r\n 'workCenter.tabs.requestDetails',\r\n ),\r\n value: 'requestDetails',\r\n icon: 'file.file-03',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.approvals'),\r\n value: 'approvals',\r\n icon: 'custom.document-approval',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.steps'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly requestId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'requestId') ??\r\n readNumber(this.itemContext(), 'draftProcessId'),\r\n );\r\n protected readonly moduleKey = computed(\r\n () => readString(this.itemContext(), 'moduleKey') ?? '',\r\n );\r\n protected readonly operationKey = computed(\r\n () => readString(this.itemContext(), 'operationKey') ?? '',\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly requestSchemaId = computed(() =>\r\n readNumber(this.itemContext(), 'requestSchemaId'),\r\n );\r\n protected readonly draftProcessId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'draftProcessId') ??\r\n readNumber(this.itemContext(), 'requestId'),\r\n );\r\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.discussionRecordId() > 0,\r\n );\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'requestDetails'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [requestSchemaId]=\"requestSchemaId()\"\r\n [draftProcessId]=\"draftProcessId()\"\r\n [readonly]=\"true\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'approvals'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'approvals'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"discussionRecordId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.requestDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n DestroyRef,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { DiscussionThread } from '@masterteam/discussion';\r\nimport { ClientForm } from '@masterteam/forms/client-form';\r\n\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\n\r\nimport { WorkCenterFacade } from '../../../store/work-center/work-center.facade';\r\nimport { WorkCenterItemBasicInfoData } from '../../../store/work-center/work-center.model';\r\nimport { WorkCenterProcessPreview } from '../../work-center-item-modal/work-center-process-preview/work-center-process-preview';\r\nimport {\r\n readItemContext,\r\n readNumber,\r\n readString,\r\n} from '../work-center-types.helpers';\r\n\r\n@Component({\r\n selector: 'mt-work-center-process-step-type',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Tabs,\r\n ClientForm,\r\n DiscussionThread,\r\n WorkCenterProcessPreview,\r\n ],\r\n templateUrl: './work-center-process-step-type.html',\r\n})\r\nexport class WorkCenterProcessStepType implements OnDestroy {\r\n private readonly facade = inject(WorkCenterFacade);\r\n private readonly actionContext = inject(RuntimeActionContextStore, {\r\n optional: true,\r\n });\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n private readonly clientForm = viewChild(ClientForm);\r\n protected readonly lookups = this.facade.lookups;\r\n\r\n protected readonly activeTab = signal('form');\r\n private readonly activeLang = signal(this.transloco.getActiveLang());\r\n protected readonly tabOptions = computed(() => {\r\n this.activeLang();\r\n return [\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.form'),\r\n value: 'form',\r\n icon: 'file.file-03',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.approvals'),\r\n value: 'approvals',\r\n icon: 'custom.document-approval',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.steps'),\r\n value: 'schema',\r\n icon: 'custom.flow-chart',\r\n },\r\n {\r\n label: this.transloco.translate<string>('workCenter.tabs.discussion'),\r\n value: 'discussion',\r\n icon: 'custom.discussion-area',\r\n },\r\n ];\r\n });\r\n protected readonly itemContext = computed(() =>\r\n readItemContext(this.details()),\r\n );\r\n protected readonly requestId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'requestId') ??\r\n readNumber(this.itemContext(), 'draftProcessId'),\r\n );\r\n protected readonly moduleKey = computed(\r\n () => readString(this.itemContext(), 'moduleKey') ?? '',\r\n );\r\n protected readonly operationKey = computed(\r\n () => readString(this.itemContext(), 'operationKey') ?? '',\r\n );\r\n protected readonly moduleId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleId'),\r\n );\r\n protected readonly levelId = computed(() =>\r\n readNumber(this.itemContext(), 'levelId'),\r\n );\r\n protected readonly levelDataId = computed(() =>\r\n readNumber(this.itemContext(), 'levelDataId'),\r\n );\r\n protected readonly moduleDataId = computed(() =>\r\n readNumber(this.itemContext(), 'moduleDataId'),\r\n );\r\n protected readonly requestSchemaId = computed(() =>\r\n readNumber(this.itemContext(), 'requestSchemaId'),\r\n );\r\n protected readonly draftProcessId = computed(\r\n () =>\r\n readNumber(this.itemContext(), 'draftProcessId') ??\r\n readNumber(this.itemContext(), 'requestId'),\r\n );\r\n protected readonly discussionRecordId = computed(() => this.requestId() ?? 0);\r\n protected readonly canRenderForm = computed(\r\n () => !!this.moduleKey() && !!this.operationKey(),\r\n );\r\n protected readonly canRenderDiscussion = computed(\r\n () => this.discussionRecordId() > 0,\r\n );\r\n protected readonly canRenderPreview = computed(\r\n () => (this.requestId() ?? 0) > 0,\r\n );\r\n\r\n constructor() {\r\n this.transloco.langChanges$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((lang) => this.activeLang.set(lang));\r\n\r\n effect(() => {\r\n this.actionContext?.setFormSource(this.clientForm() ?? null);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.actionContext?.setFormSource(null);\r\n }\r\n}\r\n","<div\r\n class=\"mt-modal-content flex h-full min-h-0 flex-col gap-4 p-4 lg:overflow-hidden\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <div\r\n class=\"flex flex-1 min-h-0 flex-col gap-4 lg:grid lg:grid-cols-[13rem_minmax(0,1fr)] lg:gap-6\"\r\n >\r\n @if (tabOptions().length > 1) {\r\n <mt-tabs\r\n [(active)]=\"activeTab\"\r\n [options]=\"tabOptions()\"\r\n mode=\"vertical\"\r\n size=\"small\"\r\n />\r\n }\r\n\r\n <div class=\"min-w-0 flex-1 min-h-0 lg:overflow-hidden\">\r\n <div\r\n class=\"h-full min-h-0 lg:overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'form'\"\r\n >\r\n <div\r\n class=\"min-w-0 h-full min-h-0 lg:overflow-y-auto lg:overscroll-contain lg:pr-2\"\r\n >\r\n @if (canRenderForm()) {\r\n <mt-client-form\r\n [moduleKey]=\"moduleKey()\"\r\n [operationKey]=\"operationKey()\"\r\n [moduleId]=\"moduleId()\"\r\n [levelId]=\"levelId()\"\r\n [levelDataId]=\"levelDataId()\"\r\n [moduleDataId]=\"moduleDataId()\"\r\n [requestSchemaId]=\"requestSchemaId()\"\r\n [draftProcessId]=\"draftProcessId()\"\r\n [lookups]=\"lookups()\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processFormUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'approvals'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'approvals'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex-1 min-h-0 overflow-auto\"\r\n [hidden]=\"activeTab() !== 'schema'\"\r\n >\r\n @if (canRenderPreview()) {\r\n <mt-work-center-process-preview\r\n [requestId]=\"requestId()\"\r\n [view]=\"'schema'\"\r\n />\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processPreviewUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"h-full min-h-0 overflow-hidden\"\r\n [hidden]=\"activeTab() !== 'discussion'\"\r\n >\r\n @if (canRenderDiscussion()) {\r\n <div\r\n class=\"h-[32rem] min-h-[22rem] overflow-hidden rounded-lg border border-surface-200 bg-surface-50 lg:h-full lg:min-h-0\"\r\n >\r\n <mt-discussion-thread\r\n [moduleType]=\"'ProcessRequest'\"\r\n [recordId]=\"discussionRecordId()\"\r\n [mentionSearchEndpoint]=\"'Identity/users'\"\r\n [mentionSearchParam]=\"'query'\"\r\n [mentionSearchDataPath]=\"'data'\"\r\n [uploadEndpoint]=\"'uploader'\"\r\n [attachmentDownloadEndpoint]=\"'uploader'\"\r\n [showParticipants]=\"true\"\r\n [autoMarkRead]=\"true\"\r\n [refreshIntervalMs]=\"0\"\r\n [styleClass]=\"'h-full'\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n {{ t(\"context.processDiscussionUnavailable\") }}\r\n </p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, input } from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\n\r\nimport { WorkCenterItemBasicInfoData } from '../../store/work-center/work-center.model';\r\nimport { WorkCenterEscalationInstanceType } from '../work-center-types/work-center-escalation-instance-type/work-center-escalation-instance-type';\r\nimport { WorkCenterModuleType } from '../work-center-types/work-center-module-type/work-center-module-type';\r\nimport { WorkCenterProcessRequestType } from '../work-center-types/work-center-process-request-type/work-center-process-request-type';\r\nimport { WorkCenterProcessStepType } from '../work-center-types/work-center-process-step-type/work-center-process-step-type';\r\n\r\n@Component({\r\n selector: 'mt-work-center-item-modal',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n WorkCenterProcessStepType,\r\n WorkCenterProcessRequestType,\r\n WorkCenterEscalationInstanceType,\r\n WorkCenterModuleType,\r\n ],\r\n templateUrl: './work-center-item-modal.html',\r\n host: {\r\n class: 'block h-full min-h-0',\r\n },\r\n})\r\nexport class WorkCenterItemModal {\r\n readonly details = input.required<WorkCenterItemBasicInfoData>();\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (details().type === \"ProcessStep\") {\r\n <mt-work-center-process-step-type [details]=\"details()\" />\r\n } @else if (details().type === \"ProcessRequest\") {\r\n <mt-work-center-process-request-type [details]=\"details()\" />\r\n } @else if (details().type === \"EscalationInstance\") {\r\n <mt-work-center-escalation-instance-type [details]=\"details()\" />\r\n } @else if (details().type === \"Module\") {\r\n <mt-work-center-module-type [details]=\"details()\" />\r\n } @else {\r\n <div class=\"mt-modal-content flex h-full items-center justify-center p-4\">\r\n <p class=\"text-sm text-surface-500\">{{ t(\"modal.unsupportedType\") }}</p>\r\n </div>\r\n }\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Component,\n OnDestroy,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { Button } from '@masterteam/components/button';\nimport {\n RuntimeActionContextStore,\n RuntimeActionRunner,\n resolveActionLabel,\n} from '@masterteam/components/runtime-action';\nimport { Subscription, map } from 'rxjs';\n\nimport {\n ApiEnvelope,\n WorkCenterItemActionExecutionResult,\n WorkCenterItemActionsData,\n WorkCenterItemContextKey,\n WorkCenterRuntimeItemAction,\n} from '../../../store/work-center/work-center.model';\n\ntype FooterActionSeverity = 'primary' | 'secondary' | 'success' | 'danger';\ntype FooterActionVariant = 'outlined' | undefined;\n\ninterface ModalFooterAction extends WorkCenterRuntimeItemAction {\n label: string;\n severity: FooterActionSeverity;\n variant: FooterActionVariant;\n}\n\n@Component({\n selector: 'mt-work-center-item-modal-footer-actions',\n standalone: true,\n imports: [CommonModule, TranslocoDirective, Button],\n templateUrl: './work-center-item-modal-footer-actions.html',\n host: {\n class: 'flex w-full flex-1 flex-wrap items-center justify-end gap-2',\n },\n})\nexport class WorkCenterItemModalFooterActions implements OnDestroy {\n private readonly http = inject(HttpClient);\n private readonly runner = inject(RuntimeActionRunner);\n private readonly actionContext = inject(RuntimeActionContextStore);\n\n private loadSub?: Subscription;\n private lastContextKey: WorkCenterItemContextKey | null = null;\n private currentExecution: { actionKey: string; cancelled: boolean } | null =\n null;\n\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\n readonly actionExecuted = output<WorkCenterItemActionExecutionResult>();\n readonly visibilityChange = output<boolean>();\n\n private readonly reloadTick = signal(0);\n private readonly hasResolvedLoad = signal(false);\n protected readonly loading = signal(false);\n protected readonly error = signal<string | null>(null);\n protected readonly actions = signal<WorkCenterRuntimeItemAction[]>([]);\n protected readonly pendingActionKey = signal<string | null>(null);\n protected readonly displayActions = computed<ModalFooterAction[]>(() =>\n this.actions()\n .filter(\n (action) =>\n action.isAvailable !== false &&\n !!action.url &&\n !!normalizeMethod(action.httpMethod),\n )\n .map((action, index) => ({\n ...action,\n label: resolveActionLabel(action),\n severity: resolveActionSeverity(action.actionKey, index),\n variant: resolveActionVariant(action.actionKey, index),\n })),\n );\n protected readonly shouldRender = computed(\n () =>\n !!this.contextKey() &&\n (!this.hasResolvedLoad() ||\n this.loading() ||\n !!this.error() ||\n this.displayActions().length > 0 ||\n !!this.pendingActionKey()),\n );\n\n constructor() {\n effect(() => {\n const contextKey = this.contextKey();\n this.reloadTick();\n this.error.set(null);\n\n if (!contextKey) {\n this.lastContextKey = null;\n this.actions.set([]);\n this.loading.set(false);\n this.hasResolvedLoad.set(false);\n return;\n }\n\n if (contextKey !== this.lastContextKey) {\n this.actions.set([]);\n this.lastContextKey = contextKey;\n }\n\n untracked(() => this.loadActions(contextKey));\n });\n\n effect(() => {\n this.visibilityChange.emit(this.shouldRender());\n });\n }\n\n ngOnDestroy(): void {\n this.loadSub?.unsubscribe();\n if (this.currentExecution) {\n this.currentExecution.cancelled = true;\n }\n }\n\n protected async executeAction(action: ModalFooterAction): Promise<void> {\n if (this.pendingActionKey()) {\n return;\n }\n\n this.error.set(null);\n this.pendingActionKey.set(action.actionKey);\n const execution = { actionKey: action.actionKey, cancelled: false };\n this.currentExecution = execution;\n\n const result = await this.runner.execute(action, {\n defaultAfterSuccess: 'refresh',\n externalPayloadResolvers: {\n values: () => this.actionContext.resolveFormValues(),\n },\n });\n\n if (execution.cancelled) {\n return;\n }\n\n this.pendingActionKey.set(null);\n this.currentExecution = null;\n\n if (result.status === 'cancelled') {\n return;\n }\n\n if (result.status === 'error') {\n const message =\n result.error instanceof Error\n ? result.error.message\n : `Failed to execute ${action.label}.`;\n this.error.set(message);\n return;\n }\n\n const afterSuccess = result.afterSuccess ?? 'refresh';\n\n if (afterSuccess === 'refresh') {\n this.reloadTick.update((value) => value + 1);\n }\n\n this.actionExecuted.emit({\n actionKey: result.actionKey,\n afterSuccess,\n });\n }\n\n private loadActions(contextKey: WorkCenterItemContextKey): void {\n this.loadSub?.unsubscribe();\n this.loading.set(true);\n this.hasResolvedLoad.set(false);\n\n this.loadSub = this.http\n .get<ApiEnvelope<WorkCenterItemActionsData>>(\n 'workcenter/runtime/item-actions',\n {\n params: { contextKey },\n },\n )\n .pipe(\n map((response) => {\n if (response.code === 1) {\n return response.data.actions ?? [];\n }\n\n throw new Error(\n resolveEnvelopeErrorMessage(\n response,\n 'Failed to load item actions.',\n ),\n );\n }),\n )\n .subscribe({\n next: (actions) => {\n this.actions.set(actions);\n this.loading.set(false);\n this.hasResolvedLoad.set(true);\n },\n error: (error: unknown) => {\n this.actions.set([]);\n this.loading.set(false);\n this.hasResolvedLoad.set(true);\n this.error.set(\n resolveHttpErrorMessage(error, 'Failed to load item actions.'),\n );\n },\n });\n }\n}\n\nfunction normalizeMethod(value: string | null | undefined): string | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const method = value.trim().toUpperCase();\n return method.length ? method : null;\n}\n\nfunction resolveActionSeverity(\n actionKey: string,\n index: number,\n): FooterActionSeverity {\n const normalized = actionKey.trim().toLowerCase();\n if (normalized === 'approve') {\n return 'success';\n }\n\n if (\n normalized === 'close' ||\n normalized === 'delete' ||\n normalized === 'reject' ||\n normalized === 'cancel'\n ) {\n return 'danger';\n }\n\n return index === 0 ? 'primary' : 'secondary';\n}\n\nfunction resolveActionVariant(\n actionKey: string,\n index: number,\n): FooterActionVariant {\n const severity = resolveActionSeverity(actionKey, index);\n return severity === 'primary' || severity === 'success'\n ? undefined\n : 'outlined';\n}\n\nfunction resolveEnvelopeErrorMessage(\n response: { message?: string | null; errors?: unknown } | null | undefined,\n fallback: string,\n): string {\n return (\n (response?.errors as { message?: string } | null)?.message ??\n response?.message ??\n fallback\n );\n}\n\nfunction resolveHttpErrorMessage(error: unknown, fallback: string): string {\n if (!error || typeof error !== 'object') {\n return fallback;\n }\n\n const httpError = error as {\n message?: string;\n error?: { message?: string | null } | null;\n };\n\n return httpError.error?.message ?? httpError.message ?? fallback;\n}\n","<ng-container *transloco=\"let t; prefix: 'workCenter'\">\r\n @if (shouldRender()) {\r\n @if (error(); as error) {\r\n <span class=\"me-auto max-w-md text-sm text-red-600\">\r\n {{ error }}\r\n </span>\r\n } @else if (loading() && !displayActions().length) {\r\n <span class=\"me-auto text-sm text-surface-500\">{{\r\n t(\"modal.loadingActions\")\r\n }}</span>\r\n }\r\n\r\n @for (action of displayActions(); track action.actionKey + action.url) {\r\n <mt-button\r\n [label]=\"action.label\"\r\n [severity]=\"action.severity\"\r\n [variant]=\"action.variant\"\r\n [disabled]=\"loading() || !!pendingActionKey()\"\r\n [loading]=\"pendingActionKey() === action.actionKey\"\r\n (onClick)=\"executeAction(action)\"\r\n />\r\n }\r\n }\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Drawer } from '@masterteam/components/drawer';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { RuntimeActionContextStore } from '@masterteam/components/runtime-action';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { map } from 'rxjs';\r\n\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterItemActionExecutionResult,\r\n WorkCenterItemBasicInfoData,\r\n WorkCenterItemContextKey,\r\n} from '../../store/work-center/work-center.model';\r\nimport { WorkCenterItemModal } from '../work-center-item-modal/work-center-item-modal';\r\nimport { WorkCenterItemModalFooterActions } from './work-center-item-modal-footer-actions/work-center-item-modal-footer-actions';\r\n\r\n@Component({\r\n selector: 'mt-work-center-item-modal-route',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Drawer,\r\n SkeletonModule,\r\n WorkCenterItemModal,\r\n WorkCenterItemModalFooterActions,\r\n ],\r\n providers: [RuntimeActionContextStore],\r\n templateUrl: './work-center-item-modal-route.html',\r\n})\r\nexport class WorkCenterItemModalRoute {\r\n private readonly http = inject(HttpClient);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly modal = inject(ModalService);\r\n\r\n readonly contextKey = input<WorkCenterItemContextKey | null>(null);\r\n protected readonly drawerVisible = signal(true);\r\n protected readonly loading = signal(false);\r\n protected readonly error = signal<string | null>(null);\r\n protected readonly details = signal<WorkCenterItemBasicInfoData | null>(null);\r\n protected readonly detailsReloadTick = signal(0);\r\n protected readonly footerActionsMounted = signal(false);\r\n protected readonly resolvedContextKey = computed(() =>\r\n this.decodeContextKey(this.contextKey()),\r\n );\r\n protected readonly drawerTitle = computed(\r\n () =>\r\n this.readDisplayField(this.details()?.item, 'title') ||\r\n this.transloco.translate<string>('workCenter.page.itemDetails'),\r\n );\r\n protected readonly drawerSubtitle = computed(\r\n () => this.readDisplayField(this.details()?.item, 'subtitle') ?? '',\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n this.footerActionsMounted.set(!!this.resolvedContextKey());\r\n });\r\n\r\n effect((onCleanup) => {\r\n const contextKey = this.resolvedContextKey();\r\n const reloadTick = this.detailsReloadTick();\r\n\r\n console.log('[work-center-debug] modal route load effect', {\r\n contextKey,\r\n reloadTick,\r\n });\r\n\r\n this.error.set(null);\r\n this.details.set(null);\r\n\r\n if (!contextKey) {\r\n this.loading.set(false);\r\n console.log(\r\n '[work-center-debug] modal route load skipped, no context key',\r\n );\r\n return;\r\n }\r\n\r\n this.loading.set(true);\r\n console.log('[work-center-debug] modal route fetch start', {\r\n endpoint: 'workcenter/runtime/item-basic-info',\r\n contextKey,\r\n });\r\n\r\n const subscription = this.http\r\n .get<ApiEnvelope<WorkCenterItemBasicInfoData>>(\r\n 'workcenter/runtime/item-basic-info',\r\n {\r\n params: { contextKey },\r\n },\r\n )\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) {\r\n return response.data;\r\n }\r\n\r\n throw new Error(this.resolveErrorMessage(response));\r\n }),\r\n )\r\n .subscribe({\r\n next: (details) => {\r\n console.log('[work-center-debug] modal route fetch success', {\r\n contextKey,\r\n details,\r\n });\r\n this.details.set(details);\r\n this.loading.set(false);\r\n },\r\n error: (error: unknown) => {\r\n console.error('[work-center-debug] modal route fetch failed', {\r\n contextKey,\r\n error,\r\n });\r\n this.error.set(\r\n error instanceof Error\r\n ? error.message\r\n : this.transloco.translate<string>(\r\n 'workCenter.error.failedLoadDetails',\r\n ),\r\n );\r\n this.loading.set(false);\r\n },\r\n });\r\n\r\n onCleanup(() => subscription.unsubscribe());\r\n });\r\n }\r\n\r\n protected onActionExecuted(\r\n result: WorkCenterItemActionExecutionResult,\r\n ): void {\r\n if (result.afterSuccess === 'close') {\r\n void this.closeRouteOutlet();\r\n return;\r\n }\r\n\r\n this.detailsReloadTick.update((value) => value + 1);\r\n }\r\n\r\n protected onFooterVisibilityChange(visible: boolean): void {\r\n this.footerActionsMounted.set(visible);\r\n }\r\n\r\n async onVisibleChange(visible: boolean): Promise<void> {\r\n this.drawerVisible.set(visible);\r\n\r\n console.log('[work-center-debug] modal route visible change', { visible });\r\n\r\n if (visible) {\r\n return;\r\n }\r\n\r\n await this.closeRouteOutlet();\r\n }\r\n\r\n private closeRouteOutlet(): Promise<boolean> {\r\n console.log('[work-center-debug] modal route closing', {\r\n outlet: this.route.outlet || 'sidebar',\r\n parentUrl: this.route.parent?.snapshot.url.map((segment) => segment.path),\r\n });\r\n\r\n return this.router\r\n .navigate([{ outlets: { [this.route.outlet || 'sidebar']: null } }], {\r\n relativeTo: this.route.parent,\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n })\r\n .then((success) => {\r\n console.log('[work-center-debug] modal route close navigate result', {\r\n success,\r\n currentUrl: this.router.url,\r\n });\r\n return success;\r\n });\r\n }\r\n\r\n private decodeContextKey(\r\n value: WorkCenterItemContextKey | null,\r\n ): WorkCenterItemContextKey | null {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n try {\r\n return decodeURIComponent(value);\r\n } catch {\r\n return value;\r\n }\r\n }\r\n\r\n private resolveErrorMessage(\r\n response: ApiEnvelope<WorkCenterItemBasicInfoData>,\r\n ): string {\r\n const fallbackError = 'Failed to load item details.';\r\n return (\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError\r\n );\r\n }\r\n\r\n private readDisplayField(\r\n item: Record<string, unknown> | null | undefined,\r\n key: string,\r\n ): string | null {\r\n const field = item?.[key];\r\n if (typeof field === 'string' && field.trim().length) {\r\n return field;\r\n }\r\n\r\n if (!field || typeof field !== 'object') {\r\n return null;\r\n }\r\n\r\n const display = (field as { display?: unknown }).display;\r\n return typeof display === 'string' && display.trim().length\r\n ? display\r\n : null;\r\n }\r\n}\r\n","<mt-drawer\r\n [visible]=\"drawerVisible()\"\r\n [loadingHeader]=\"loading()\"\r\n [title]=\"drawerTitle()\"\r\n [subtitle]=\"drawerSubtitle()\"\r\n styleClass=\"mt-work-center-item-drawer !absolute !w-[96vw] md:!w-[84vw] xl:!w-[70vw]\"\r\n position=\"right\"\r\n [modal]=\"true\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n *transloco=\"let t; prefix: 'workCenter'\"\r\n>\r\n <ng-container content>\r\n @if (loading()) {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] flex-col gap-5\">\r\n <div class=\"flex items-center gap-3\">\r\n <p-skeleton shape=\"circle\" size=\"3rem\" />\r\n <div class=\"flex flex-1 flex-col gap-2\">\r\n <p-skeleton width=\"12rem\" height=\"1rem\" />\r\n <p-skeleton width=\"8rem\" height=\"0.875rem\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid gap-3 md:grid-cols-2\">\r\n @for (_ of [1, 2, 3, 4]; track $index) {\r\n <p-skeleton height=\"5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n\r\n <p-skeleton height=\"16rem\" class=\"rounded-lg\" />\r\n </div>\r\n </div>\r\n } @else if (error(); as errorMessage) {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] items-center justify-center\">\r\n <p class=\"max-w-xl text-sm font-medium text-red-600\">\r\n {{ errorMessage }}\r\n </p>\r\n </div>\r\n </div>\r\n } @else if (details(); as details) {\r\n <div [class]=\"modal.contentClass + ' h-full min-h-0'\">\r\n <mt-work-center-item-modal [details]=\"details\" />\r\n </div>\r\n } @else {\r\n <div class=\"p-4\" [class]=\"modal.contentClass\">\r\n <div class=\"flex min-h-[22rem] items-center justify-center\">\r\n <p class=\"text-sm font-medium text-surface-500\">\r\n {{ t(\"modal.noItemSelected\") }}\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n @if (footerActionsMounted()) {\r\n <div footer [class]=\"modal.footerClass\">\r\n <mt-work-center-item-modal-footer-actions\r\n [contextKey]=\"resolvedContextKey()\"\r\n (actionExecuted)=\"onActionExecuted($event)\"\r\n (visibilityChange)=\"onFooterVisibilityChange($event)\"\r\n />\r\n </div>\r\n }\r\n</mt-drawer>\r\n","import { WorkCenterState } from './work-center';\r\n\r\nexport const APP_STATES = [WorkCenterState];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["toLabel","readString"],"mappings":"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"}
|