@acorex/modules 21.0.0-next.89 → 21.0.0-next.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-modules-common.mjs +9 -9
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-B_JcAHvL.mjs → acorex-modules-conversation-acorex-modules-conversation-Dc8te-PO.mjs} +364 -237
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-Dc8te-PO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-after-message-sent.command-DcrS7_vV.mjs → acorex-modules-conversation-after-message-sent.command-DxDe6o9N.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-after-message-sent.command-DcrS7_vV.mjs.map → acorex-modules-conversation-after-message-sent.command-DxDe6o9N.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BCkJEAmX.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Dyx_n0bi.mjs} +3 -3
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BCkJEAmX.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Dyx_n0bi.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-comments-page.component-B6TJhe4T.mjs → acorex-modules-conversation-comments-page.component--g4ugC_L.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-comments-page.component-B6TJhe4T.mjs.map → acorex-modules-conversation-comments-page.component--g4ugC_L.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-emit-typing-indicator.command-CWRdPl-S.mjs → acorex-modules-conversation-emit-typing-indicator.command-BOldPLQ0.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-emit-typing-indicator.command-CWRdPl-S.mjs.map → acorex-modules-conversation-emit-typing-indicator.command-BOldPLQ0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-mark-conversation-unread.command-CZlsLAsb.mjs → acorex-modules-conversation-mark-conversation-unread.command-O_zPrBQ0.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-mark-conversation-unread.command-CZlsLAsb.mjs.map → acorex-modules-conversation-mark-conversation-unread.command-O_zPrBQ0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-retry-assist-response.command-Cly1-RKt.mjs → acorex-modules-conversation-retry-assist-response.command-DsB-CP3R.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-retry-assist-response.command-Cly1-RKt.mjs.map → acorex-modules-conversation-retry-assist-response.command-DsB-CP3R.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-D5QWTKqh.mjs → acorex-modules-conversation-send-assist-chat-message.command-g_NgPuxP.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-D5QWTKqh.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-g_NgPuxP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-DkSZj8fj.mjs → acorex-modules-conversation-start-assist-chat.command-DeMmJdd6.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-DkSZj8fj.mjs.map → acorex-modules-conversation-start-assist-chat.command-DeMmJdd6.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-sync-read-state.command-jiEsdxUB.mjs → acorex-modules-conversation-sync-read-state.command-4YxdwLaE.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-sync-read-state.command-jiEsdxUB.mjs.map → acorex-modules-conversation-sync-read-state.command-4YxdwLaE.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-DLuhOPFz.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-kph3UxDu.mjs} +94 -41
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-kph3UxDu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-dashboard-management-index-gjCiELmH.mjs → acorex-modules-dashboard-management-index-rp9dgARq.mjs} +2 -2
- package/fesm2022/{acorex-modules-dashboard-management-index-gjCiELmH.mjs.map → acorex-modules-dashboard-management-index-rp9dgARq.mjs.map} +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DyJoXajP.mjs → acorex-modules-document-management-drive-choose.component-Dx1slMSA.mjs} +3 -3
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DyJoXajP.mjs.map → acorex-modules-document-management-drive-choose.component-Dx1slMSA.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +268 -351
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-VJ2NUSm1.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BZwLfZkb.mjs} +42 -21
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-BZwLfZkb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-FgXkyZR_.mjs → acorex-modules-human-capital-management-approve-leave-request.command-B_EBDijL.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-FgXkyZR_.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-B_EBDijL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-D2yCvifI.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-ZzWBeTv1.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-D2yCvifI.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-ZzWBeTv1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DnmsVNwU.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-Bd3RvlNm.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DnmsVNwU.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-Bd3RvlNm.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-edit-personal-info.command-B0ZUfbqn.mjs → acorex-modules-human-capital-management-edit-personal-info.command-Drbi1WMd.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-edit-personal-info.command-B0ZUfbqn.mjs.map → acorex-modules-human-capital-management-edit-personal-info.command-Drbi1WMd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-edit-signature.command-h2kTqSg0.mjs → acorex-modules-human-capital-management-edit-signature.command-CRPqnXIj.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-edit-signature.command-h2kTqSg0.mjs.map → acorex-modules-human-capital-management-edit-signature.command-CRPqnXIj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-BdrdgvbN.mjs → acorex-modules-human-capital-management-reject-leave-request.command-BC-1Kixd.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-BdrdgvbN.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-BC-1Kixd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-S7Px6Y4B.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-Caylq9Rv.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-S7Px6Y4B.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-Caylq9Rv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-start-leave-request-flow.command-C_tE-D_Y.mjs → acorex-modules-human-capital-management-start-leave-request-flow.command-BsEwA1VM.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-start-leave-request-flow.command-C_tE-D_Y.mjs.map → acorex-modules-human-capital-management-start-leave-request-flow.command-BsEwA1VM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-mMP3Yy01.mjs → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-B8xK2iTn.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-mMP3Yy01.mjs.map → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-B8xK2iTn.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-platform-dev-tools.mjs +2 -2
- package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +707 -424
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-task-management-start-task-flow.command-HYdQOWDe.mjs +115 -0
- package/fesm2022/acorex-modules-task-management-start-task-flow.command-HYdQOWDe.mjs.map +1 -0
- package/fesm2022/{acorex-modules-task-management-task-board.page-DTWxd_vG.mjs → acorex-modules-task-management-task-board.page-BMTjJlry.mjs} +3 -3
- package/fesm2022/{acorex-modules-task-management-task-board.page-DTWxd_vG.mjs.map → acorex-modules-task-management-task-board.page-BMTjJlry.mjs.map} +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +433 -460
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-timesheet-management-report-hours-by-project.query-z38wZLKJ.mjs → acorex-modules-timesheet-management-report-hours-by-project.query-CGc1Q6aB.mjs} +2 -2
- package/fesm2022/acorex-modules-timesheet-management-report-hours-by-project.query-CGc1Q6aB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-timesheet-management-resolve-work-item-from-jira-issue.command-BDfvz6fH.mjs → acorex-modules-timesheet-management-resolve-work-item-from-jira-issue.command-AIcAUd3s.mjs} +2 -2
- package/fesm2022/{acorex-modules-timesheet-management-resolve-work-item-from-jira-issue.command-BDfvz6fH.mjs.map → acorex-modules-timesheet-management-resolve-work-item-from-jira-issue.command-AIcAUd3s.mjs.map} +1 -1
- package/fesm2022/acorex-modules-timesheet-management.mjs +8 -8
- package/fesm2022/acorex-modules-timesheet-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workplacesafety-management-control-hierarchy-diagram-widget-edit.component-CFF7X1MO.mjs +70 -0
- package/fesm2022/acorex-modules-workplacesafety-management-control-hierarchy-diagram-widget-edit.component-CFF7X1MO.mjs.map +1 -0
- package/fesm2022/acorex-modules-workplacesafety-management-control-hierarchy-diagram-widget-view.component-DwC2aHVt.mjs +70 -0
- package/fesm2022/acorex-modules-workplacesafety-management-control-hierarchy-diagram-widget-view.component-DwC2aHVt.mjs.map +1 -0
- package/fesm2022/acorex-modules-workplacesafety-management-control-hierarchy-diagram.types-DmzV305e.mjs +195 -0
- package/fesm2022/acorex-modules-workplacesafety-management-control-hierarchy-diagram.types-DmzV305e.mjs.map +1 -0
- package/fesm2022/acorex-modules-workplacesafety-management.mjs +139 -16
- package/fesm2022/acorex-modules-workplacesafety-management.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-modules-dashboard-management.d.ts +30 -11
- package/types/acorex-modules-document-management.d.ts +21 -5
- package/types/acorex-modules-human-capital-management.d.ts +4 -0
- package/types/acorex-modules-project-management.d.ts +46 -23
- package/types/acorex-modules-task-management.d.ts +80 -11
- package/types/acorex-modules-timesheet-management.d.ts +2 -2
- package/types/acorex-modules-workplacesafety-management.d.ts +7 -2
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-B_JcAHvL.mjs.map +0 -1
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DLuhOPFz.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-VJ2NUSm1.mjs.map +0 -1
- package/fesm2022/acorex-modules-timesheet-management-report-hours-by-project.query-z38wZLKJ.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-human-capital-management-start-lifecycle-event-flow.command-mMP3Yy01.mjs","sources":["../../../../libs/modules/human-capital-management/src/lib/features/lifecycle-event/commands/start-lifecycle-event-flow.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString, type AXMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSystemStatusType } from '@acorex/platform/contracts';\nimport { AXPExecuteCommandResult } from '@acorex/platform/contracts';\nimport {\n AXPEntityStorageService,\n AXPEntityService,\n getRecordWorkflowInstanceId,\n} from '@acorex/platform/layout/entity';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport {\n AXP_WORKFLOW_ENGINE,\n AXPWorkflowEngine,\n AXPWorkflowManager,\n} from '@acorex/platform/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '../../../contracts';\nimport {\n AXMLifecycleEventOpenStatusIds,\n} from '../../../contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface StartLifecycleEventFlowInput {\n __context__?: {\n options?: StartLifecycleEventFlowOptions;\n };\n workflowId?: string;\n employeeId?: string;\n employeeDisplayName?: string;\n eventTypeId?: string;\n eventTypeTitle?: AXMultiLanguageString | string;\n questionnaireId?: string;\n targetEmployeeStatusId?: string;\n effectiveDate?: string;\n}\n\nexport interface StartLifecycleEventFlowOptions {\n workflowId: string;\n input: {\n employeeId: string;\n employeeDisplayName: string;\n eventTypeId: string;\n eventTypeTitle?: AXMultiLanguageString | string;\n questionnaireId: string;\n effectiveDate?: string;\n /** Precomposed case/popup title; computed by StartFlow when omitted. */\n assessmentCaseTitle?: string;\n };\n}\n\ninterface OpenLifecycleEventRow {\n id: string;\n workflowInfo?: { instanceId?: string | null; correlationId?: string | null };\n eventType?: { title?: unknown };\n}\n\n//#endregion\n\n/**\n * Starts the guided lifecycle workflow after ensuring at most one in-progress event per employee and event type.\n */\n@Injectable({ providedIn: 'root' })\nexport class StartLifecycleEventFlowCommand implements AXPCommand<StartLifecycleEventFlowInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly entityService = inject(AXPEntityService);\n private readonly entityStorageService = inject(AXPEntityStorageService);\n private readonly workflowManager = inject(AXPWorkflowManager);\n private readonly workflowEngine = inject(AXP_WORKFLOW_ENGINE, { optional: true });\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: StartLifecycleEventFlowInput): Promise<AXPExecuteCommandResult<void>> {\n const options = (input?.__context__?.options ?? input) as StartLifecycleEventFlowOptions;\n const flowInput = options.input;\n const workflowId = options.workflowId?.trim();\n const employeeId = this.resolveFlowText(flowInput?.employeeId);\n const eventTypeId = flowInput?.eventTypeId?.trim();\n const employeeDisplayName = this.resolveFlowText(flowInput?.employeeDisplayName);\n const eventTypeTitleForWorkflow = this.coerceEventTypeTitleForWorkflow(flowInput?.eventTypeTitle);\n const eventTypeTitleDisplay = this.resolveFlowText(flowInput?.eventTypeTitle);\n const assessmentCaseTitle =\n this.resolveFlowText(flowInput?.assessmentCaseTitle) ||\n this.buildAssessmentCaseTitle(eventTypeTitleDisplay, employeeDisplayName);\n\n if (!workflowId || !employeeId || !eventTypeId) {\n return { success: false, message: { text: 'Missing workflow or employee context.' } };\n }\n\n try {\n const openEvents = await this.findOpenLifecycleEvents(employeeId, eventTypeId);\n const orphanInstanceIds = await this.findOrphanRunningWorkflowInstanceIds(\n employeeId,\n eventTypeId,\n workflowId,\n openEvents,\n );\n\n if (openEvents.length > 0 || orphanInstanceIds.length > 0) {\n const confirmed = await this.confirmReplace(eventTypeTitleDisplay);\n if (!confirmed) {\n return { success: false };\n }\n await this.closeOpenRuns(openEvents, orphanInstanceIds);\n }\n\n const startResult = await this.workflowManager.start(workflowId, {\n employeeId,\n employeeDisplayName,\n eventTypeId: flowInput.eventTypeId,\n ...(eventTypeTitleForWorkflow != null ? { eventTypeTitle: eventTypeTitleForWorkflow } : {}),\n assessmentCaseTitle,\n questionnaireId: flowInput.questionnaireId,\n ...(flowInput.effectiveDate ? { effectiveDate: flowInput.effectiveDate } : {}),\n refId: employeeId,\n refType: `${RootConfig.module.name}.Employee`,\n correlationId: this.buildCorrelationId(employeeId, eventTypeId, workflowId),\n });\n\n if (!startResult.success) {\n this.toastService.show({\n color: 'danger',\n title: 'Workflow Execution Failed',\n content: startResult.error ?? 'Unknown error',\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: startResult.error ?? 'Unknown error' } };\n }\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n console.error('[StartLifecycleEventFlowCommand]', error);\n this.toastService.show({\n color: 'danger',\n title: 'Workflow Execution Error',\n content: message,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Open-run detection ----\n\n private async findOpenLifecycleEvents(\n employeeId: string,\n eventTypeId: string,\n ): Promise<OpenLifecycleEventRow[]> {\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.lifecycleEvent.name)\n .data()\n .query({\n skip: 0,\n take: 10,\n filter: {\n logic: 'and',\n filters: [\n { field: 'employeeId', operator: { type: 'equal' }, value: employeeId },\n { field: 'eventTypeId', operator: { type: 'equal' }, value: eventTypeId },\n {\n field: 'statusId',\n operator: { type: 'in' },\n value: [...AXMLifecycleEventOpenStatusIds],\n },\n ],\n },\n });\n\n return (page.items ?? []) as OpenLifecycleEventRow[];\n }\n\n private async findOrphanRunningWorkflowInstanceIds(\n employeeId: string,\n eventTypeId: string,\n workflowId: string,\n openEvents: OpenLifecycleEventRow[],\n ): Promise<string[]> {\n const linkedInstanceIds = new Set(\n openEvents\n .map((row) => getRecordWorkflowInstanceId(row))\n .filter((id): id is string => !!id),\n );\n\n try {\n const page = await this.entityStorageService.query('WorkflowManagement.WorkflowInstance', {\n skip: 0,\n take: 50,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'definitionId',\n operator: { type: 'equal' },\n value: workflowId,\n },\n { field: 'status', operator: { type: 'equal' }, value: 'Running' },\n ],\n },\n });\n\n const items = (page.items ?? []) as Array<{\n id?: string;\n workflowInstance?: { workflowState?: { input?: Record<string, unknown> } };\n }>;\n\n return items\n .filter((row) => {\n const id = row.id?.trim();\n if (!id || linkedInstanceIds.has(id)) {\n return false;\n }\n const runInput = row.workflowInstance?.workflowState?.input ?? {};\n return runInput['employeeId'] === employeeId && runInput['eventTypeId'] === eventTypeId;\n })\n .map((row) => row.id as string);\n } catch {\n return [];\n }\n }\n\n //#endregion\n\n //#region ---- Close and replace ----\n\n private async confirmReplace(eventTypeTitle: string | undefined): Promise<boolean> {\n const title = await this.translationService.translateAsync(\n '@human-capital-management:lifecycle-events.messages.replace-open.confirm.title',\n );\n const message = await this.translationService.translateAsync(\n '@human-capital-management:lifecycle-events.messages.replace-open.confirm.message',\n {\n params: {\n eventTypeTitle: String(eventTypeTitle ?? '').trim() || '—',\n },\n },\n );\n const result = await this.dialogService.confirm(title, message, 'warning', 'horizontal', false, 'cancel');\n return result.result === true;\n }\n\n private async closeOpenRuns(\n openEvents: OpenLifecycleEventRow[],\n orphanInstanceIds: string[],\n ): Promise<void> {\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.lifecycleEvent.name)\n .data();\n\n const supersedeNote = 'Closed to start a new lifecycle run.';\n\n for (const event of openEvents) {\n await data.update(event.id, {\n statusId: AXPSystemStatusType.Cancelled,\n notes: supersedeNote,\n } as never);\n\n const instanceId = getRecordWorkflowInstanceId(event);\n if (instanceId) {\n await this.cancelWorkflowInstance(instanceId);\n }\n }\n\n for (const instanceId of orphanInstanceIds) {\n await this.cancelWorkflowInstance(instanceId);\n }\n }\n\n private async cancelWorkflowInstance(instanceId: string): Promise<void> {\n const engine = this.workflowEngine as AXPWorkflowEngine | null;\n if (engine?.cancelInstance) {\n await engine.cancelInstance(instanceId, 'superseded');\n return;\n }\n\n const now = new Date().toISOString();\n try {\n await this.entityStorageService.updateOne('WorkflowManagement.WorkflowInstance', instanceId, {\n status: 'Finished',\n subStatus: 'Cancelled',\n finishedAt: now,\n updatedAt: now,\n });\n } catch (error: unknown) {\n console.warn('[StartLifecycleEventFlowCommand] Failed to cancel workflow instance:', instanceId, error);\n }\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n /** Normalizes workflow start input that may be plain text, ML, or a failed expression (`false`). */\n private resolveFlowText(value: unknown): string {\n if (value == null || value === false) {\n return '';\n }\n if (typeof value === 'string') {\n return value.trim();\n }\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value).trim();\n }\n return resolveMultiLanguageString(value as never, this.translationService.getActiveLang()).trim();\n }\n\n /** Preserves multi-language event type titles on the workflow instance for locale-aware task labels. */\n private coerceEventTypeTitleForWorkflow(\n value: AXMultiLanguageString | string | undefined,\n ): AXMultiLanguageString | string | undefined {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'object') {\n return value;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n\n private buildAssessmentCaseTitle(eventTypeTitle: string, employeeDisplayName: string): string {\n if (eventTypeTitle && employeeDisplayName) {\n return `${eventTypeTitle} — ${employeeDisplayName}`;\n }\n return eventTypeTitle || employeeDisplayName;\n }\n\n private buildCorrelationId(employeeId: string, eventTypeId: string, workflowId: string): string {\n return `${RootConfig.module.name}.Employee:${employeeId}:${eventTypeId}:${workflowId}`;\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-human-capital-management-start-lifecycle-event-flow.command-B8xK2iTn.mjs","sources":["../../../../libs/modules/human-capital-management/src/lib/features/lifecycle-event/commands/start-lifecycle-event-flow.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString, type AXMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSystemStatusType } from '@acorex/platform/contracts';\nimport { AXPExecuteCommandResult } from '@acorex/platform/contracts';\nimport {\n AXPEntityStorageService,\n AXPEntityService,\n getRecordWorkflowInstanceId,\n} from '@acorex/platform/layout/entity';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport {\n AXP_WORKFLOW_ENGINE,\n AXPWorkflowEngine,\n AXPWorkflowManager,\n} from '@acorex/platform/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '../../../contracts';\nimport {\n AXMLifecycleEventOpenStatusIds,\n} from '../../../contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface StartLifecycleEventFlowInput {\n __context__?: {\n options?: StartLifecycleEventFlowOptions;\n };\n workflowId?: string;\n employeeId?: string;\n employeeDisplayName?: string;\n eventTypeId?: string;\n eventTypeTitle?: AXMultiLanguageString | string;\n questionnaireId?: string;\n targetEmployeeStatusId?: string;\n effectiveDate?: string;\n}\n\nexport interface StartLifecycleEventFlowOptions {\n workflowId: string;\n input: {\n employeeId: string;\n employeeDisplayName: string;\n eventTypeId: string;\n eventTypeTitle?: AXMultiLanguageString | string;\n questionnaireId: string;\n effectiveDate?: string;\n /** Precomposed case/popup title; computed by StartFlow when omitted. */\n assessmentCaseTitle?: string;\n };\n}\n\ninterface OpenLifecycleEventRow {\n id: string;\n workflowInfo?: { instanceId?: string | null; correlationId?: string | null };\n eventType?: { title?: unknown };\n}\n\n//#endregion\n\n/**\n * Starts the guided lifecycle workflow after ensuring at most one in-progress event per employee and event type.\n */\n@Injectable({ providedIn: 'root' })\nexport class StartLifecycleEventFlowCommand implements AXPCommand<StartLifecycleEventFlowInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly entityService = inject(AXPEntityService);\n private readonly entityStorageService = inject(AXPEntityStorageService);\n private readonly workflowManager = inject(AXPWorkflowManager);\n private readonly workflowEngine = inject(AXP_WORKFLOW_ENGINE, { optional: true });\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: StartLifecycleEventFlowInput): Promise<AXPExecuteCommandResult<void>> {\n const options = (input?.__context__?.options ?? input) as StartLifecycleEventFlowOptions;\n const flowInput = options.input;\n const workflowId = options.workflowId?.trim();\n const employeeId = this.resolveFlowText(flowInput?.employeeId);\n const eventTypeId = flowInput?.eventTypeId?.trim();\n const employeeDisplayName = this.resolveFlowText(flowInput?.employeeDisplayName);\n const eventTypeTitleForWorkflow = this.coerceEventTypeTitleForWorkflow(flowInput?.eventTypeTitle);\n const eventTypeTitleDisplay = this.resolveFlowText(flowInput?.eventTypeTitle);\n const assessmentCaseTitle =\n this.resolveFlowText(flowInput?.assessmentCaseTitle) ||\n this.buildAssessmentCaseTitle(eventTypeTitleDisplay, employeeDisplayName);\n\n if (!workflowId || !employeeId || !eventTypeId) {\n return { success: false, message: { text: 'Missing workflow or employee context.' } };\n }\n\n try {\n const openEvents = await this.findOpenLifecycleEvents(employeeId, eventTypeId);\n const orphanInstanceIds = await this.findOrphanRunningWorkflowInstanceIds(\n employeeId,\n eventTypeId,\n workflowId,\n openEvents,\n );\n\n if (openEvents.length > 0 || orphanInstanceIds.length > 0) {\n const confirmed = await this.confirmReplace(eventTypeTitleDisplay);\n if (!confirmed) {\n return { success: false };\n }\n await this.closeOpenRuns(openEvents, orphanInstanceIds);\n }\n\n const startResult = await this.workflowManager.start(workflowId, {\n employeeId,\n employeeDisplayName,\n eventTypeId: flowInput.eventTypeId,\n ...(eventTypeTitleForWorkflow != null ? { eventTypeTitle: eventTypeTitleForWorkflow } : {}),\n assessmentCaseTitle,\n questionnaireId: flowInput.questionnaireId,\n ...(flowInput.effectiveDate ? { effectiveDate: flowInput.effectiveDate } : {}),\n refId: employeeId,\n refType: `${RootConfig.module.name}.Employee`,\n correlationId: this.buildCorrelationId(employeeId, eventTypeId, workflowId),\n });\n\n if (!startResult.success) {\n this.toastService.show({\n color: 'danger',\n title: 'Workflow Execution Failed',\n content: startResult.error ?? 'Unknown error',\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: startResult.error ?? 'Unknown error' } };\n }\n\n return { success: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n console.error('[StartLifecycleEventFlowCommand]', error);\n this.toastService.show({\n color: 'danger',\n title: 'Workflow Execution Error',\n content: message,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Open-run detection ----\n\n private async findOpenLifecycleEvents(\n employeeId: string,\n eventTypeId: string,\n ): Promise<OpenLifecycleEventRow[]> {\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.lifecycleEvent.name)\n .data()\n .query({\n skip: 0,\n take: 10,\n filter: {\n logic: 'and',\n filters: [\n { field: 'employeeId', operator: { type: 'equal' }, value: employeeId },\n { field: 'eventTypeId', operator: { type: 'equal' }, value: eventTypeId },\n {\n field: 'statusId',\n operator: { type: 'in' },\n value: [...AXMLifecycleEventOpenStatusIds],\n },\n ],\n },\n });\n\n return (page.items ?? []) as OpenLifecycleEventRow[];\n }\n\n private async findOrphanRunningWorkflowInstanceIds(\n employeeId: string,\n eventTypeId: string,\n workflowId: string,\n openEvents: OpenLifecycleEventRow[],\n ): Promise<string[]> {\n const linkedInstanceIds = new Set(\n openEvents\n .map((row) => getRecordWorkflowInstanceId(row))\n .filter((id): id is string => !!id),\n );\n\n try {\n const page = await this.entityStorageService.query('WorkflowManagement.WorkflowInstance', {\n skip: 0,\n take: 50,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'definitionId',\n operator: { type: 'equal' },\n value: workflowId,\n },\n { field: 'status', operator: { type: 'equal' }, value: 'Running' },\n ],\n },\n });\n\n const items = (page.items ?? []) as Array<{\n id?: string;\n workflowInstance?: { workflowState?: { input?: Record<string, unknown> } };\n }>;\n\n return items\n .filter((row) => {\n const id = row.id?.trim();\n if (!id || linkedInstanceIds.has(id)) {\n return false;\n }\n const runInput = row.workflowInstance?.workflowState?.input ?? {};\n return runInput['employeeId'] === employeeId && runInput['eventTypeId'] === eventTypeId;\n })\n .map((row) => row.id as string);\n } catch {\n return [];\n }\n }\n\n //#endregion\n\n //#region ---- Close and replace ----\n\n private async confirmReplace(eventTypeTitle: string | undefined): Promise<boolean> {\n const title = await this.translationService.translateAsync(\n '@human-capital-management:lifecycle-events.messages.replace-open.confirm.title',\n );\n const message = await this.translationService.translateAsync(\n '@human-capital-management:lifecycle-events.messages.replace-open.confirm.message',\n {\n params: {\n eventTypeTitle: String(eventTypeTitle ?? '').trim() || '—',\n },\n },\n );\n const result = await this.dialogService.confirm(title, message, 'warning', 'horizontal', false, 'cancel');\n return result.result === true;\n }\n\n private async closeOpenRuns(\n openEvents: OpenLifecycleEventRow[],\n orphanInstanceIds: string[],\n ): Promise<void> {\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.lifecycleEvent.name)\n .data();\n\n const supersedeNote = 'Closed to start a new lifecycle run.';\n\n for (const event of openEvents) {\n await data.update(event.id, {\n statusId: AXPSystemStatusType.Cancelled,\n notes: supersedeNote,\n } as never);\n\n const instanceId = getRecordWorkflowInstanceId(event);\n if (instanceId) {\n await this.cancelWorkflowInstance(instanceId);\n }\n }\n\n for (const instanceId of orphanInstanceIds) {\n await this.cancelWorkflowInstance(instanceId);\n }\n }\n\n private async cancelWorkflowInstance(instanceId: string): Promise<void> {\n const engine = this.workflowEngine as AXPWorkflowEngine | null;\n if (engine?.cancelInstance) {\n await engine.cancelInstance(instanceId, 'superseded');\n return;\n }\n\n const now = new Date().toISOString();\n try {\n await this.entityStorageService.updateOne('WorkflowManagement.WorkflowInstance', instanceId, {\n status: 'Finished',\n subStatus: 'Cancelled',\n finishedAt: now,\n updatedAt: now,\n });\n } catch (error: unknown) {\n console.warn('[StartLifecycleEventFlowCommand] Failed to cancel workflow instance:', instanceId, error);\n }\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n /** Normalizes workflow start input that may be plain text, ML, or a failed expression (`false`). */\n private resolveFlowText(value: unknown): string {\n if (value == null || value === false) {\n return '';\n }\n if (typeof value === 'string') {\n return value.trim();\n }\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value).trim();\n }\n return resolveMultiLanguageString(value as never, this.translationService.getActiveLang()).trim();\n }\n\n /** Preserves multi-language event type titles on the workflow instance for locale-aware task labels. */\n private coerceEventTypeTitleForWorkflow(\n value: AXMultiLanguageString | string | undefined,\n ): AXMultiLanguageString | string | undefined {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'object') {\n return value;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n\n private buildAssessmentCaseTitle(eventTypeTitle: string, employeeDisplayName: string): string {\n if (eventTypeTitle && employeeDisplayName) {\n return `${eventTypeTitle} — ${employeeDisplayName}`;\n }\n return eventTypeTitle || employeeDisplayName;\n }\n\n private buildCorrelationId(employeeId: string, eventTypeId: string, workflowId: string): string {\n return `${RootConfig.module.name}.Employee:${employeeId}:${eventTypeId}:${workflowId}`;\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { e as AXMHumanCapitalManagementDataSourceKeys, f as AXMHumanCapitalManagementModule, g as AXMLeaveRequestBadgeProvider, d as AXMLeaveRequestOpenStatusIds, h as AXMLeaveRequestResourceAppointmentProvider, i as AXMLeaveRequestTaskPopoverComponent, c as AXMLifecycleEventOpenStatusIds, j as AXMPermissionsKeys, a as AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS, A as AXM_POSITION_ASSIGNMENT_STATUS, k as AXPHumanCapitalManagementCommandKeys, l as AXPHumanCapitalManagementFeatureDefinitionProvider, m as AXPHumanCapitalManagementFeatureKeys, n as AXPHumanCapitalManagementMenuKeys, o as AXPLeaveRequestDialogService, H as HCM_CATALOG_SCOPE_HR, p as HumanCapitalManagementManifest, R as RootConfig, q as factoryEmployee, r as factoryEmploymentType, s as factoryLeaveRequest, t as factoryLeaveType, u as factoryLifecycleEvent, v as factoryLifecycleEventType, w as factoryPositionAssignment } from './acorex-modules-human-capital-management-acorex-modules-human-capital-management-
|
|
1
|
+
export { e as AXMHumanCapitalManagementDataSourceKeys, f as AXMHumanCapitalManagementModule, g as AXMLeaveRequestBadgeProvider, d as AXMLeaveRequestOpenStatusIds, h as AXMLeaveRequestResourceAppointmentProvider, i as AXMLeaveRequestTaskPopoverComponent, c as AXMLifecycleEventOpenStatusIds, j as AXMPermissionsKeys, a as AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS, A as AXM_POSITION_ASSIGNMENT_STATUS, k as AXPHumanCapitalManagementCommandKeys, l as AXPHumanCapitalManagementFeatureDefinitionProvider, m as AXPHumanCapitalManagementFeatureKeys, n as AXPHumanCapitalManagementMenuKeys, o as AXPLeaveRequestDialogService, H as HCM_CATALOG_SCOPE_HR, p as HumanCapitalManagementManifest, R as RootConfig, q as factoryEmployee, r as factoryEmploymentType, s as factoryLeaveRequest, t as factoryLeaveType, u as factoryLifecycleEvent, v as factoryLifecycleEventType, w as factoryPositionAssignment } from './acorex-modules-human-capital-management-acorex-modules-human-capital-management-BZwLfZkb.mjs';
|
|
2
2
|
//# sourceMappingURL=acorex-modules-human-capital-management.mjs.map
|
|
@@ -516,7 +516,7 @@ class AXPlatformExplorerPermissionsListDetailComponent {
|
|
|
516
516
|
<ng-template #descTpl let-item>
|
|
517
517
|
@if (item.data?.description) { {{ item.data.description | translate | async }} } @else { – }
|
|
518
518
|
</ng-template>
|
|
519
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "
|
|
519
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$1.AXDataTableTextColumnComponent, selector: "ax-text-column", inputs: ["width", "caption", "allowSorting", "allowResizing", "fixed", "hasTitle", "customExpandIcon", "customCollapseIcon", "dataField", "expandHandler", "wrapText", "cellTemplate", "footerTemplate", "headerTemplate", "format", "formatOptions"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
520
520
|
}
|
|
521
521
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPlatformExplorerPermissionsListDetailComponent, decorators: [{
|
|
522
522
|
type: Component,
|
|
@@ -593,7 +593,7 @@ class AXPlatformExplorerFeaturesListDetailComponent {
|
|
|
593
593
|
<ng-template #titleTpl let-item>{{ item.data?.title | translate | async }}</ng-template>
|
|
594
594
|
<ng-template #typeTpl let-item>{{ item.data?.type ?? '–' }}</ng-template>
|
|
595
595
|
<ng-template #descTpl let-item>@if (item.data?.description) { {{ item.data.description | translate | async }} } @else { – }</ng-template>
|
|
596
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "
|
|
596
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$1.AXDataTableTextColumnComponent, selector: "ax-text-column", inputs: ["width", "caption", "allowSorting", "allowResizing", "fixed", "hasTitle", "customExpandIcon", "customCollapseIcon", "dataField", "expandHandler", "wrapText", "cellTemplate", "footerTemplate", "headerTemplate", "format", "formatOptions"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
597
597
|
}
|
|
598
598
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPlatformExplorerFeaturesListDetailComponent, decorators: [{
|
|
599
599
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-platform-dev-tools.mjs","sources":["../../../../libs/modules/platform-dev-tools/src/lib/contracts/menu.keys.ts","../../../../libs/modules/platform-dev-tools/src/lib/contracts/permission.keys.ts","../../../../libs/modules/platform-dev-tools/src/lib/contracts/settings.keys.ts","../../../../libs/modules/platform-dev-tools/src/lib/contracts/root.config.ts","../../../../libs/modules/platform-dev-tools/src/lib/contracts/index.ts","../../../../libs/modules/platform-dev-tools/src/lib/manifest.ts","../../../../libs/modules/platform-dev-tools/src/lib/permission-definition.provider.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-tree.model.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-data.service.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/detail/platform-explorer-module-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/detail/platform-explorer-entity-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/detail/platform-explorer-permissions-list-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/detail/platform-explorer-features-list-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-page.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-page.component.html","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-tree-node.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/platform-dev-tools.module.ts","../../../../libs/modules/platform-dev-tools/src/acorex-modules-platform-dev-tools.ts"],"sourcesContent":["//#region ---- Menu Keys ----\n\nexport const AXPPlatformDevToolsMenuKeys = {\n Root: 'platform-dev-tools.root',\n PlatformExplorer: 'platform-dev-tools.platform-explorer',\n} as const;\n\n//#endregion\n","export const AXMPermissionsKeys = {\n PlatformDevTools: {\n PlatformExplorer: {\n View: 'PlatformDevTools:Permission:PlatformExplorer.View',\n },\n },\n} as const;\n","//#region ---- Developer Settings ----\n\n/** Setting keys for the Platform Dev Tools module. */\nexport enum AXPPlatformDevToolsSettings {\n /** When enabled, exposes additional diagnostic behavior for developers (debug mode). */\n DebugMode = 'PlatformDevTools:Setting:Developer.DebugMode',\n}\n\n//#endregion\n","//#region ---- Config ----\n\nconst config = {\n i18n: 'platform-dev-tools',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'dev',\n module: 'platform-dev-tools',\n name: 'PlatformDevTools',\n title: '@platform-dev-tools:module.title',\n icon: 'fa-light fa-wrench',\n },\n};\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\nexport * from './root.config';\n\n//#endregion","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex/platform/core';\nimport { RootConfig } from './contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Platform Dev Tools Module Manifest.\n * Development-only module for exploring platform structure (modules, entities, permissions, features).\n */\nexport const PlatformDevToolsManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n description: '@platform-dev-tools:module.description',\n required: false,\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from './contracts';\nimport { AXMPermissionsKeys } from './contracts/permission.keys';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXMPermissionsKeys.PlatformDevTools;\n const modulePermissions = '@platform-dev-tools:module.permissions';\n\n context\n .addGroup(\n RootConfig.module.name,\n `${modulePermissions}.title`,\n `${modulePermissions}.description`,\n )\n .addPermission(\n keys.PlatformExplorer.View,\n `${modulePermissions}.platform-explorer.view.title`,\n `${modulePermissions}.platform-explorer.view.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Tree node types ----\n\nexport type PlatformExplorerNodeKind =\n | 'module'\n | 'entities'\n | 'entity'\n | 'permissions'\n | 'permission'\n | 'features'\n | 'feature';\n\nexport interface PlatformExplorerTreeNode {\n id: string;\n kind: PlatformExplorerNodeKind;\n label: string;\n moduleName?: string;\n /** i18n key for the module title (used for page title and breadcrumbs) */\n moduleTitle?: string;\n children?: PlatformExplorerTreeNode[];\n /** Optional payload for detail view */\n payload?: unknown;\n /** Item count for badge (e.g. entities count, permissions count, features count) */\n itemCount?: number;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPEntityResolver } from '@acorex/platform/layout/entity';\nimport { AXPModuleManifestRegistry } from '@acorex/platform/core';\nimport { AXPPermissionDefinitionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\nimport {\n PlatformExplorerTreeNode,\n} from './platform-explorer-tree.model';\nimport type { AXPFeatureDefinition } from '@acorex/platform/core';\nimport type { AXPPermissionDefinition, AXPPermissionGroupDefinition } from '@acorex/platform/auth';\n\n//#endregion\n\n//#region ---- Service ----\n\n@Injectable()\nexport class PlatformExplorerDataService {\n private readonly manifestRegistry = inject(AXPModuleManifestRegistry);\n private readonly entityResolver = inject(AXPEntityResolver);\n private readonly permissionService = inject(AXPPermissionDefinitionService);\n\n /**\n * Build only root-level module nodes (no children). Children are loaded on expand via getModuleChildren.\n * Includes all modules; use buildModulesOnlyFiltered() to exclude modules with no entities/permissions/features.\n */\n async buildModulesOnly(): Promise<PlatformExplorerTreeNode[]> {\n await this.manifestRegistry.initialize();\n const modules = this.manifestRegistry.getAll();\n const tree: PlatformExplorerTreeNode[] = modules.map((mod) => ({\n id: `module-${mod.name}`,\n kind: 'module' as const,\n label: mod.title,\n moduleName: mod.name,\n moduleTitle: mod.title,\n payload: mod,\n children: [],\n }));\n tree.sort((a, b) => {\n const nameA = (a.payload as { name?: string })?.name ?? a.moduleName ?? '';\n const nameB = (b.payload as { name?: string })?.name ?? b.moduleName ?? '';\n return nameA.localeCompare(nameB, undefined, { sensitivity: 'base' });\n });\n return tree;\n }\n\n /**\n * Build root-level module nodes, excluding modules that have no entities, permissions, or features.\n * Each module node gets itemCount = number of non-empty subcategories (for badge).\n */\n async buildModulesOnlyFiltered(): Promise<PlatformExplorerTreeNode[]> {\n const all = await this.buildModulesOnly();\n const filtered: PlatformExplorerTreeNode[] = [];\n for (const modNode of all) {\n const children = await this.getModuleChildren(modNode.id);\n if (children.length > 0) {\n filtered.push({\n ...modNode,\n itemCount: children.length,\n });\n }\n }\n return filtered;\n }\n\n /**\n * Load entities, permissions, and features for a module (called when module node is expanded or clicked).\n * Only includes subcategories that have at least one item. Returns empty array if module has no items.\n */\n async getModuleChildren(moduleId: string): Promise<PlatformExplorerTreeNode[]> {\n const moduleName = moduleId.startsWith('module-') ? moduleId.slice(7) : moduleId;\n const mod = this.manifestRegistry.get(moduleName);\n if (!mod) return [];\n const moduleTitle = mod.title;\n const [allEntries, permissions, features] = await Promise.all([\n this.entityResolver.listAll(),\n this.getPermissionsForModule(moduleName),\n Promise.resolve(this.getFeaturesForModule(moduleName)),\n ]);\n const moduleEntities = allEntries.filter((e) => e.module === moduleName);\n const permissionsCount = permissions.length;\n const featuresCount = features.length;\n const nodes: PlatformExplorerTreeNode[] = [];\n if (moduleEntities.length > 0) {\n nodes.push({\n id: `module-${moduleName}-entities`,\n kind: 'entities',\n label: '@platform-dev-tools:module.terms.entities',\n moduleName,\n moduleTitle,\n itemCount: moduleEntities.length,\n children: moduleEntities.map((e) => ({\n id: `entity-${moduleName}-${e.name}`,\n kind: 'entity' as const,\n label: e.name,\n moduleName,\n moduleTitle,\n payload: e,\n })),\n });\n }\n if (permissionsCount > 0) {\n nodes.push({\n id: `module-${moduleName}-permissions`,\n kind: 'permissions',\n label: '@platform-dev-tools:module.terms.permissions',\n moduleName,\n moduleTitle,\n itemCount: permissionsCount,\n });\n }\n if (featuresCount > 0) {\n nodes.push({\n id: `module-${moduleName}-features`,\n kind: 'features',\n label: '@platform-dev-tools:module.terms.features',\n moduleName,\n moduleTitle,\n itemCount: featuresCount,\n });\n }\n return nodes;\n }\n\n /**\n * Get all permissions for a module (for display in module detail).\n */\n async getPermissionsForModule(moduleName: string): Promise<AXPPermissionDefinition[]> {\n const groups = await this.permissionService.getGroups();\n return this.collectPermissionsForModule(groups, moduleName);\n }\n\n /**\n * Get all features for a module (for display in module detail).\n */\n getFeaturesForModule(moduleName: string): AXPFeatureDefinition[] {\n return this.manifestRegistry.getModuleFeatures(moduleName);\n }\n\n private collectPermissionsForModule(\n groups: AXPPermissionGroupDefinition[],\n moduleName: string\n ): AXPPermissionDefinition[] {\n const prefix = `${moduleName}:`;\n const out: AXPPermissionDefinition[] = [];\n const collect = (items: AXPPermissionDefinition[]) => {\n for (const p of items) {\n if (p.name.startsWith(prefix)) out.push(p);\n if (p.children?.length) collect(p.children);\n }\n };\n for (const g of groups) {\n if (g.name === moduleName) collect(g.permissions);\n }\n return out;\n }\n}\n\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPModuleManifest } from '@acorex/platform/core';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-module-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n template: `\n @if (payload()) {\n <section class=\"axp-module-detail\">\n <h3 class=\"axp-module-detail__section-title\">\n {{ '@platform-dev-tools:module.terms.module-info' | translate | async }}\n </h3>\n <dl class=\"axp-detail-dl\">\n <dt>\n {{ '@platform-dev-tools:module.terms.name' | translate | async }}\n </dt>\n <dd>{{ payload()!.name }}</dd>\n\n <dt>\n {{ '@platform-dev-tools:module.terms.version' | translate | async }}\n </dt>\n <dd>{{ payload()!.version }}</dd>\n\n <dt>\n {{ '@platform-dev-tools:module.terms.title' | translate | async }}\n </dt>\n <dd>{{ payload()!.title }}</dd>\n\n @if (payload()!.description) {\n <dt>\n {{ '@platform-dev-tools:module.terms.description' | translate | async }}\n </dt>\n <dd>{{ payload()!.description }}</dd>\n }\n\n @if (payload()!.i18n) {\n <dt>i18n</dt>\n <dd>{{ payload()!.i18n }}</dd>\n }\n\n @if (payload()!.required !== undefined) {\n <dt>\n {{ '@platform-dev-tools:module.terms.required' | translate | async }}\n </dt>\n <dd>{{ payload()!.required }}</dd>\n }\n </dl>\n </section>\n }\n `,\n styles: [\n `\n .axp-module-detail { margin-bottom: 24px; }\n .axp-module-detail__section-title { margin: 0 0 12px 0; font-size: 15px; font-weight: 600; }\n .axp-detail-dl { display: grid; grid-template-columns: auto 1fr; gap: 4px 16px; margin: 0; }\n .axp-detail-dl dt { font-weight: 600; color: var(--ax-neutral-text-secondary, #666); }\n .axp-detail-dl dd { margin: 0; }\n `,\n ],\n})\nexport class AXPlatformExplorerModuleDetailComponent {\n payload = input<AXPModuleManifest | undefined>();\n}\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport type { AXPEntity } from '@acorex/platform/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPEntityResolver } from '@acorex/platform/layout/entity';\nimport type { AXPEntityListEntry } from '@acorex/platform/layout/entity';\n\n//#endregion\n\nfunction isListEntry(p: AXPEntity | AXPEntityListEntry): p is AXPEntityListEntry {\n return p != null && 'fullName' in p && !('properties' in p);\n}\n\n@Component({\n selector: 'axp-platform-explorer-entity-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n host: { class: 'ax-flex ax-flex-col ax-flex-1 ax-min-h-0' },\n template: `\n <div class=\"ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-pt-0 ax-overflow-auto\">\n @if (entity(); as e) {\n <dl class=\"ax-grid ax-grid-cols-[auto_1fr] ax-gap-x-4 ax-gap-y-1 ax-mb-3 ax-m-0\">\n <dt class=\"ax-font-semibold ax-text-muted\">{{ '@platform-dev-tools:module.terms.module' | translate | async }}</dt><dd class=\"ax-m-0\">{{ e.module }}</dd>\n <dt class=\"ax-font-semibold ax-text-muted\">{{ '@platform-dev-tools:module.terms.name' | translate | async }}</dt><dd class=\"ax-m-0\">{{ e.name }}</dd>\n @if (e.title) {\n <dt class=\"ax-font-semibold ax-text-muted\">{{ '@platform-dev-tools:module.terms.title' | translate | async }}</dt><dd class=\"ax-m-0\">{{ e.title | translate | async}}</dd>\n }\n @if (e.formats.plural) {\n <dt class=\"ax-font-semibold ax-text-muted\">{{ '@platform-dev-tools:module.terms.plural' | translate | async }}</dt><dd class=\"ax-m-0\">{{ e.formats.plural | translate | async}}</dd>\n }\n </dl>\n @if (e.properties && e.properties.length > 0) {\n <p class=\"ax-mb-2 ax-mt-3 ax-font-bold\">{{ '@platform-dev-tools:module.terms.properties' | translate | async }} ({{ e.properties.length }})</p>\n <div class=\"ax-flex-1 ax-min-h-0 ax-overflow-auto ax-border ax-border-lightest ax-rounded-md\">\n <table class=\"ax-w-full ax-border-collapse ax-text-[13px]\">\n <thead>\n <tr>\n <th class=\"ax-text-start ax-p-2 ax-px-3 ax-bg-lighter ax-font-semibold ax-border-b ax-border-lightest\">{{ '@platform-dev-tools:module.terms.name' | translate | async }}</th>\n <th class=\"ax-text-start ax-p-2 ax-px-3 ax-bg-lighter ax-font-semibold ax-border-b ax-border-lightest\">{{ '@platform-dev-tools:module.terms.title' | translate | async }}</th>\n <th class=\"ax-text-start ax-p-2 ax-px-3 ax-bg-lighter ax-font-semibold ax-border-b ax-border-lightest\">{{ '@platform-dev-tools:module.terms.type' | translate | async }}</th>\n <th class=\"ax-text-start ax-p-2 ax-px-3 ax-bg-lighter ax-font-semibold ax-border-b ax-border-lightest\">{{ '@platform-dev-tools:module.terms.description' | translate | async }}</th>\n </tr>\n </thead>\n <tbody class=\"axp-entity-detail-tbody\">\n @for (p of e.properties; track p.name) {\n <tr>\n <td class=\"ax-p-2 ax-px-3 ax-border-b ax-border-lightest\"><code class=\"ax-text-xs ax-bg-lighter ax-px-1.5 ax-py-0.5 ax-rounded\">{{ p.name }}</code></td>\n <td class=\"ax-p-2 ax-px-3 ax-border-b ax-border-lightest\">{{ p.title | translate | async }}</td>\n <td class=\"ax-p-2 ax-px-3 ax-border-b ax-border-lightest\">{{ p.schema.dataType }}</td>\n <td class=\"ax-p-2 ax-px-3 ax-border-b ax-border-lightest\">@if (p.description) { {{ p.description | translate | async }} } @else { – }</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n } @else if (loading()) {\n <p class=\"ax-m-0 ax-text-muted\">{{ '@platform-dev-tools:module.terms.loading-entity' | translate | async }}</p>\n }\n </div>\n `,\n styles: [\n `\n .axp-entity-detail-tbody tr:last-child td { border-bottom: none; }\n `,\n ],\n})\nexport class AXPlatformExplorerEntityDetailComponent {\n payload = input<AXPEntity | AXPEntityListEntry | undefined>();\n\n protected readonly entity = signal<AXPEntity | null>(null);\n protected readonly loading = signal(false);\n\n private readonly entityResolver = inject(AXPEntityResolver);\n\n constructor() {\n effect(() => {\n const p = this.payload();\n if (!p) {\n this.entity.set(null);\n this.loading.set(false);\n return;\n }\n if (isListEntry(p)) {\n this.loading.set(true);\n this.entity.set(null);\n this.entityResolver.get(p.module, p.name).then((e) => {\n if (this.payload() === p) {\n this.entity.set(e ?? null);\n }\n this.loading.set(false);\n });\n } else {\n this.entity.set(p);\n this.loading.set(false);\n }\n });\n }\n}\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPPermissionDefinition } from '@acorex/platform/auth';\nimport { PlatformExplorerDataService } from '../platform-explorer-data.service';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-permissions-list-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDataTableModule, AXTranslationModule],\n host: { class: 'ax-flex ax-flex-col ax-flex-1 ax-min-h-0' },\n template: `\n <div class=\"ax-flex ax-flex-1 ax-min-h-0 ax-pt-0 ax-overflow-auto\">\n <ax-data-table\n class=\"ax-flex-1 ax-border ax-border-lightest ax-rounded-md ax-overflow-hidden\"\n [paging]=\"true\"\n [allowReordering]=\"true\"\n [dataSource]=\"dataSource\"\n >\n <ax-text-column [dataField]=\"'name'\" [caption]=\"'@platform-dev-tools:module.terms.name' | translate | async\" [width]=\"'420px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column [dataField]=\"'title'\" [caption]=\"'@platform-dev-tools:module.terms.title' | translate | async\" [cellTemplate]=\"titleTpl\" [width]=\"'260px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column [dataField]=\"'description'\" [caption]=\"'@platform-dev-tools:module.terms.description' | translate | async\" [cellTemplate]=\"descTpl\" [width]=\"'380px'\" [allowResizing]=\"true\"></ax-text-column>\n </ax-data-table>\n </div>\n <ng-template #titleTpl let-item>\n {{ item.data?.title | translate | async }}</ng-template>\n <ng-template #descTpl let-item>\n @if (item.data?.description) { {{ item.data.description | translate | async }} } @else { – }\n </ng-template>\n `,\n})\nexport class AXPlatformExplorerPermissionsListDetailComponent {\n moduleName = input.required<string>();\n private readonly dataService = inject(PlatformExplorerDataService);\n\n readonly dataSource = new AXDataSource<AXPPermissionDefinition>({\n key: 'name',\n pageSize: 20,\n load: async (e: AXDataSourceQuery) => {\n const name = this.moduleName();\n if (!name) return { items: [], total: 0 };\n const list = await this.dataService.getPermissionsForModule(name);\n const skip = e?.skip ?? 0;\n const take = e?.take ?? 20;\n const items = list.slice(skip, skip + take);\n return { items, total: list.length };\n },\n });\n\n constructor() {\n effect(() => {\n this.moduleName();\n this.dataSource.refresh();\n });\n }\n}\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPFeatureDefinition } from '@acorex/platform/core';\nimport { PlatformExplorerDataService } from '../platform-explorer-data.service';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-features-list-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDataTableModule, AXTranslationModule],\n host: { class: 'ax-flex ax-flex-col ax-flex-1 ax-min-h-0' },\n template: `\n <div class=\"ax-flex ax-flex-1 ax-min-h-0 ax-pt-0 ax-overflow-auto\">\n <ax-data-table\n class=\"ax-flex-1 ax-border ax-border-lightest ax-rounded-md ax-overflow-hidden\"\n [paging]=\"true\"\n [allowReordering]=\"true\"\n [dataSource]=\"dataSource\"\n >\n <ax-text-column dataField=\"key\" [caption]=\"'@platform-dev-tools:module.terms.key' | translate | async\" [width]=\"'240px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"title\" [caption]=\"'@platform-dev-tools:module.terms.title' | translate | async\" [cellTemplate]=\"titleTpl\" [width]=\"'280px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"type\" caption=\"Type\" [width]=\"'100px'\" [cellTemplate]=\"typeTpl\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"description\" [caption]=\"'@platform-dev-tools:module.terms.description' | translate | async\" [cellTemplate]=\"descTpl\" [width]=\"'340px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"defaultValue\" [caption]=\"'@platform-dev-tools:module.terms.default-value' | translate | async\" [width]=\"'140px'\" [allowResizing]=\"true\"></ax-text-column>\n </ax-data-table>\n </div>\n <ng-template #titleTpl let-item>{{ item.data?.title | translate | async }}</ng-template>\n <ng-template #typeTpl let-item>{{ item.data?.type ?? '–' }}</ng-template>\n <ng-template #descTpl let-item>@if (item.data?.description) { {{ item.data.description | translate | async }} } @else { – }</ng-template>\n `,\n})\nexport class AXPlatformExplorerFeaturesListDetailComponent {\n moduleName = input.required<string>();\n private readonly dataService = inject(PlatformExplorerDataService);\n\n readonly dataSource = new AXDataSource<AXPFeatureDefinition>({\n key: 'name',\n pageSize: 20,\n load: (e: AXDataSourceQuery) => {\n const name = this.moduleName();\n if (!name) return Promise.resolve({ items: [], total: 0 });\n const list = this.dataService.getFeaturesForModule(name);\n const skip = e?.skip ?? 0;\n const take = e?.take ?? 20;\n const items = list.slice(skip, skip + take);\n return Promise.resolve({ items, total: list.length });\n },\n });\n\n constructor() {\n effect(() => {\n this.moduleName();\n this.dataSource.refresh();\n });\n }\n}\n","//#region ---- Imports ----\n\n\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\nimport { AXPlatformExplorerModuleDetailComponent } from './detail/platform-explorer-module-detail.component';\nimport { AXPlatformExplorerEntityDetailComponent } from './detail/platform-explorer-entity-detail.component';\nimport { AXPlatformExplorerPermissionsListDetailComponent } from './detail/platform-explorer-permissions-list-detail.component';\nimport { AXPlatformExplorerFeaturesListDetailComponent } from './detail/platform-explorer-features-list-detail.component';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'ax-flex ax-flex-col ax-flex-1 ax-min-h-0' },\n imports: [\n AXTranslationModule,\n AXPlatformExplorerModuleDetailComponent,\n AXPlatformExplorerEntityDetailComponent,\n AXPlatformExplorerPermissionsListDetailComponent,\n AXPlatformExplorerFeaturesListDetailComponent\n],\n template: `\n <div class=\"ax-flex ax-flex-col ax-flex-1 ax-min-h-0\">\n @switch (node().kind) {\n @case ('module') {\n <axp-platform-explorer-module-detail [payload]=\"$any(node().payload)\" />\n }\n @case ('entity') {\n <axp-platform-explorer-entity-detail [payload]=\"$any(node().payload)\" />\n }\n @case ('permissions') {\n <axp-platform-explorer-permissions-list-detail [moduleName]=\"node().moduleName!\" />\n }\n @case ('features') {\n <axp-platform-explorer-features-list-detail [moduleName]=\"node().moduleName!\" />\n }\n @default {\n <p class=\"axp-detail__hint\">{{ node().children?.length ?? 0 }} items.</p>\n }\n }\n </div>\n `,\n styles: [\n `\n .axp-detail__hint { margin: 0; color: var(--ax-neutral-text-secondary, #666); }\n `,\n ],\n})\nexport class AXPlatformExplorerDetailComponent {\n node = input.required<PlatformExplorerTreeNode>();\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AXTreeViewComponent,\n AXTreeViewNode,\n AXTreeViewNodeSelectEvent,\n AXTreeViewNodeToggleEvent,\n} from '@acorex/components/tree-view';\nimport { AXPBreadcrumbItem } from '@acorex/platform/contracts';\n\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n AXPPageLayoutComponent,\n} from '@acorex/platform/layout/views';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutStartSideComponent,\n} from '@acorex/platform/layout/components';\nimport { PlatformExplorerDataService } from './platform-explorer-data.service';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\nimport { AXPlatformExplorerDetailComponent } from './platform-explorer-detail.component';\n\n//#endregion\n\n//#region ---- Convert tree to AXTreeViewNode ----\n\nfunction toTreeViewNodes(\n nodes: PlatformExplorerTreeNode[],\n markModuleExpandable = false\n): AXTreeViewNode[] {\n return nodes.map((n) => {\n const children = n.children ?? [];\n const hasChildren = children.length > 0;\n const axNode: AXTreeViewNode = {\n id: n.id,\n title: n.label,\n children: hasChildren ? toTreeViewNodes(children, false) : undefined,\n data: { treeNode: n },\n };\n if (markModuleExpandable && n.kind === 'module' && !hasChildren) {\n (axNode as Record<string, unknown>)['childrenCount'] = 3;\n }\n return axNode;\n });\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-page',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTranslationModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutBlockComponent,\n AXTreeViewComponent,\n AXPlatformExplorerDetailComponent,\n ],\n providers: [\n PlatformExplorerDataService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPlatformExplorerPageComponent,\n },\n ],\n templateUrl: './platform-explorer-page.component.html',\n styleUrl: './platform-explorer-page.component.scss',\n})\nexport class AXPlatformExplorerPageComponent extends AXPPageLayoutBaseComponent {\n protected readonly dataService = inject(PlatformExplorerDataService);\n\n readonly loading = signal(true);\n readonly selectedNode = signal<PlatformExplorerTreeNode | null>(null);\n protected readonly moduleNodes = signal<PlatformExplorerTreeNode[]>([]);\n protected readonly tree = viewChild<AXTreeViewComponent>('tree');\n\n constructor() {\n super();\n this.initializeModules();\n }\n\n /** Datasource for tree: root = modules only; children loaded when module is expanded. */\n protected datasource = async (parentId?: string): Promise<AXTreeViewNode[]> => {\n if (!parentId) {\n const nodes = this.moduleNodes();\n return toTreeViewNodes(nodes, true);\n }\n const children = await this.dataService.getModuleChildren(parentId);\n return toTreeViewNodes(children, false);\n };\n\n private async initializeModules(): Promise<void> {\n this.loading.set(true);\n try {\n const nodes = await this.dataService.buildModulesOnlyFiltered();\n this.moduleNodes.set(nodes);\n } finally {\n this.loading.set(false);\n }\n }\n\n override async getPageTitle(): Promise<string> {\n const node = this.selectedNode();\n if (!node) {\n return this.translateService.translateAsync('@platform-dev-tools:module.title');\n }\n const moduleTitleKey = node.moduleTitle ?? node.label;\n const moduleTitle = await this.translateService.translateAsync(moduleTitleKey);\n const contextParts: string[] = [];\n switch (node.kind) {\n case 'module':\n return moduleTitle;\n case 'entities':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.entities'));\n break;\n case 'entity':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.entities'));\n contextParts.push(node.label);\n break;\n case 'permissions':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.permissions'));\n break;\n case 'features':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.features'));\n break;\n default:\n return moduleTitle;\n }\n return [moduleTitle, ...contextParts].join(' - ');\n }\n\n override getPageDescription(): string | null | Promise<string | null> {\n const node = this.selectedNode();\n if (!node) return null;\n const key = this.descriptionKeyForKind(node.kind);\n return key ? this.translateService.translateAsync(key) : null;\n }\n\n override getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]> {\n const node = this.selectedNode();\n const items: AXPBreadcrumbItem[] = [\n { title: '@platform-dev-tools:module.menus.platform-explorer.title' },\n ];\n if (node?.moduleTitle) {\n items.push({ title: node.moduleTitle });\n }\n return items;\n }\n\n private descriptionKeyForKind(kind: PlatformExplorerTreeNode['kind']): string | null {\n switch (kind) {\n case 'module':\n return '@platform-dev-tools:module.descriptions.module';\n case 'entities':\n return '@platform-dev-tools:module.descriptions.entities';\n case 'entity':\n return '@platform-dev-tools:module.descriptions.entity';\n case 'permissions':\n return '@platform-dev-tools:module.descriptions.permissions';\n case 'features':\n return '@platform-dev-tools:module.descriptions.features';\n default:\n return null;\n }\n }\n\n protected onNodeClick(event: AXTreeViewNodeSelectEvent): void {\n const node = event.node;\n const data = node?.['data'] as { treeNode?: PlatformExplorerTreeNode } | undefined;\n const treeNode = data?.treeNode;\n if (treeNode) {\n this.selectedNode.set(treeNode);\n this.recompute();\n // When a module node is clicked, expand it so the tree loads its children (entities, permissions, features)\n if (treeNode.kind === 'module') {\n const treeRef = this.tree();\n if (treeRef && typeof (treeRef as unknown as { expandNode?: (id: string) => void }).expandNode === 'function') {\n (treeRef as unknown as { expandNode: (id: string) => void }).expandNode(treeNode.id);\n }\n }\n }\n }\n\n protected onNodeToggle(_event: AXTreeViewNodeToggleEvent): void {\n // Tree loads children via datasource(parentId) when a node is expanded; no extra work needed.\n }\n}\n\n//#endregion\n","<axp-page-layout>\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>{{ '@platform-dev-tools:module.menus.platform-explorer.title' | translate | async\n }}</axp-layout-title>\n </axp-layout-header>\n <axp-layout-content class=\"axp-platform-explorer__tree-wrap\">\n @if (loading()) {\n <p class=\"axp-platform-explorer__loading\">Loading...</p>\n } @else if (moduleNodes().length === 0) {\n <p class=\"axp-platform-explorer__empty\">{{ '@platform-dev-tools:module.messages.no-modules' | translate | async }}\n </p>\n } @else {\n <ax-tree-view #tree [datasource]=\"datasource\" [selectMode]=\"'single'\" [showIcons]=\"false\"\n [showChildrenBadge]=\"true\" [dragBehavior]=\"'none'\" look=\"default\" [nodeTemplate]=\"nodeTemplate\"\n (onNodeClick)=\"onNodeClick($event)\" (onNodeToggle)=\"onNodeToggle($event)\" />\n }\n </axp-layout-content>\n </axp-layout-start-side>\n\n <axp-page-content class=\"ax-min-h-0 ax-pt-0\">\n @if (selectedNode()) {\n <axp-platform-explorer-detail [node]=\"selectedNode()!\" />\n } @else {\n <p class=\"axp-platform-explorer__hint\">{{ '@platform-dev-tools:module.messages.select-node' | translate | async }}\n </p>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Node template: icon per kind (with color) + label (translated) + badge -->\n<ng-template #nodeTemplate let-node=\"node\">\n @let data = node['data'];\n @let treeNode = data?.treeNode;\n @let kind = treeNode?.kind;\n @let count = node['childrenCount'] ?? treeNode?.itemCount;\n <span class=\"axp-platform-explorer__node\">\n @switch (kind) {\n @case ('module') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--module fa-light fa-cube\"\n aria-hidden=\"true\"></i>\n }\n @case ('entities') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--entities fa-light fa-table-list\"\n aria-hidden=\"true\"></i>\n }\n @case ('entity') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--entity fa-light fa-table\"\n aria-hidden=\"true\"></i>\n }\n @case ('permissions') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--permissions fa-light fa-shield-halved\"\n aria-hidden=\"true\"></i>\n }\n @case ('features') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--features fa-light fa-sliders\"\n aria-hidden=\"true\"></i>\n }\n @default {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--default fa-light fa-circle-dot\"\n aria-hidden=\"true\"></i>\n }\n }\n <span class=\"axp-platform-explorer__node-label\">{{ node['title'] | translate | async }}</span>\n @if (count != null && count > 0) {\n <span class=\"axp-platform-explorer__node-badge\">{{ count }}</span>\n }\n </span>\n</ng-template>","//#region ---- Imports ----\n\n\nimport {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-tree-node',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPlatformExplorerTreeNodeComponent],\n template: `\n <div class=\"axp-tree-node\" [class.axp-tree-node--selected]=\"isSelected()\">\n <button\n type=\"button\"\n class=\"axp-tree-node__toggler\"\n [class.axp-tree-node__toggler--open]=\"expanded()\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n @if (hasChildren()) {\n <span class=\"axp-tree-node__icon\" aria-hidden=\"true\">{{ expanded() ? '▼' : '▶' }}</span>\n } @else {\n <span class=\"axp-tree-node__icon axp-tree-node__icon--empty\"></span>\n }\n </button>\n <button\n type=\"button\"\n class=\"axp-tree-node__label\"\n (click)=\"select()\"\n >\n {{ node().label }}\n @if (childrenLength() > 0) {\n <span class=\"axp-tree-node__badge\">({{ childrenLength() }})</span>\n }\n </button>\n </div>\n @if (hasChildren() && expanded()) {\n <div class=\"axp-tree-node__children\">\n @for (child of node().children ?? []; track child.id) {\n <axp-platform-explorer-tree-node\n [node]=\"child\"\n [selectedId]=\"selectedId()\"\n (nodeSelect)=\"nodeSelect.emit($event)\"\n />\n }\n </div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n .axp-tree-node {\n display: flex;\n align-items: center;\n min-height: 28px;\n }\n .axp-tree-node--selected .axp-tree-node__label {\n font-weight: 600;\n background: var(--ax-neutral-surface-hover, rgba(0, 0, 0, 0.04));\n }\n .axp-tree-node__toggler {\n width: 24px;\n height: 28px;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--ax-neutral-text-secondary, #666);\n flex-shrink: 0;\n }\n .axp-tree-node__toggler--open .axp-tree-node__icon {\n transform: rotate(0);\n }\n .axp-tree-node__icon {\n font-size: 10px;\n display: inline-block;\n }\n .axp-tree-node__icon--empty {\n width: 10px;\n }\n .axp-tree-node__label {\n flex: 1;\n text-align: start;\n padding: 4px 8px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n border-radius: 4px;\n }\n .axp-tree-node__label:hover {\n background: var(--ax-neutral-surface-hover, rgba(0, 0, 0, 0.04));\n }\n .axp-tree-node__badge {\n margin-inline-start: 4px;\n font-size: 11px;\n color: var(--ax-neutral-text-secondary, #666);\n font-weight: normal;\n }\n .axp-tree-node__children {\n padding-inline-start: 16px;\n }\n `,\n ],\n})\nexport class AXPlatformExplorerTreeNodeComponent {\n node = input.required<PlatformExplorerTreeNode>();\n selectedId = input<string | null>(null);\n nodeSelect = output<PlatformExplorerTreeNode>();\n\n readonly expanded = signal(true);\n\n childrenLength(): number {\n return this.node().children?.length ?? 0;\n }\n\n hasChildren(): boolean {\n const children = this.node().children;\n return !!children && children.length > 0;\n }\n\n isSelected(): boolean {\n return this.selectedId() === this.node().id;\n }\n\n toggle(): void {\n if (this.hasChildren()) {\n this.expanded.update((v) => !v);\n }\n }\n\n select(): void {\n this.nodeSelect.emit(this.node());\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider } from '@acorex/platform/core';\nimport { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\nimport { PlatformDevToolsManifest } from './manifest';\nimport { AXMPlatformDevToolsMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXPPlatformDevToolsSettingProvider } from './settings.provider';\nimport { AXPlatformExplorerPageComponent } from './features/platform-explorer';\n\n//#endregion\n\n//#region ---- Routes ----\n\nfunction routesFactory(): Routes {\n return [\n {\n path: ':app/dev/platform-explorer',\n canActivate: [AXPAuthGuard],\n data: { rootLayout: true },\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => AXPlatformExplorerPageComponent,\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: PlatformDevToolsManifest,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then(m => m.AXMPlatformDevToolsMenuProvider)\n ),\n provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () =>\n import('./settings.provider').then(m => m.AXPPlatformDevToolsSettingProvider)\n ),\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n ],\n})\nexport class AXMPlatformDevToolsModule { }\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-platform-dev-tools.mjs","sources":["../../../../libs/modules/platform-dev-tools/src/lib/contracts/menu.keys.ts","../../../../libs/modules/platform-dev-tools/src/lib/contracts/permission.keys.ts","../../../../libs/modules/platform-dev-tools/src/lib/contracts/settings.keys.ts","../../../../libs/modules/platform-dev-tools/src/lib/contracts/root.config.ts","../../../../libs/modules/platform-dev-tools/src/lib/contracts/index.ts","../../../../libs/modules/platform-dev-tools/src/lib/manifest.ts","../../../../libs/modules/platform-dev-tools/src/lib/permission-definition.provider.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-tree.model.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-data.service.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/detail/platform-explorer-module-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/detail/platform-explorer-entity-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/detail/platform-explorer-permissions-list-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/detail/platform-explorer-features-list-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-detail.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-page.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-page.component.html","../../../../libs/modules/platform-dev-tools/src/lib/features/platform-explorer/platform-explorer-tree-node.component.ts","../../../../libs/modules/platform-dev-tools/src/lib/platform-dev-tools.module.ts","../../../../libs/modules/platform-dev-tools/src/acorex-modules-platform-dev-tools.ts"],"sourcesContent":["//#region ---- Menu Keys ----\n\nexport const AXPPlatformDevToolsMenuKeys = {\n Root: 'platform-dev-tools.root',\n PlatformExplorer: 'platform-dev-tools.platform-explorer',\n} as const;\n\n//#endregion\n","export const AXMPermissionsKeys = {\n PlatformDevTools: {\n PlatformExplorer: {\n View: 'PlatformDevTools:Permission:PlatformExplorer.View',\n },\n },\n} as const;\n","//#region ---- Developer Settings ----\n\n/** Setting keys for the Platform Dev Tools module. */\nexport enum AXPPlatformDevToolsSettings {\n /** When enabled, exposes additional diagnostic behavior for developers (debug mode). */\n DebugMode = 'PlatformDevTools:Setting:Developer.DebugMode',\n}\n\n//#endregion\n","//#region ---- Config ----\n\nconst config = {\n i18n: 'platform-dev-tools',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'dev',\n module: 'platform-dev-tools',\n name: 'PlatformDevTools',\n title: '@platform-dev-tools:module.title',\n icon: 'fa-light fa-wrench',\n },\n};\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\nexport * from './root.config';\n\n//#endregion","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex/platform/core';\nimport { RootConfig } from './contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Platform Dev Tools Module Manifest.\n * Development-only module for exploring platform structure (modules, entities, permissions, features).\n */\nexport const PlatformDevToolsManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n description: '@platform-dev-tools:module.description',\n required: false,\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from './contracts';\nimport { AXMPermissionsKeys } from './contracts/permission.keys';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXMPermissionsKeys.PlatformDevTools;\n const modulePermissions = '@platform-dev-tools:module.permissions';\n\n context\n .addGroup(\n RootConfig.module.name,\n `${modulePermissions}.title`,\n `${modulePermissions}.description`,\n )\n .addPermission(\n keys.PlatformExplorer.View,\n `${modulePermissions}.platform-explorer.view.title`,\n `${modulePermissions}.platform-explorer.view.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Tree node types ----\n\nexport type PlatformExplorerNodeKind =\n | 'module'\n | 'entities'\n | 'entity'\n | 'permissions'\n | 'permission'\n | 'features'\n | 'feature';\n\nexport interface PlatformExplorerTreeNode {\n id: string;\n kind: PlatformExplorerNodeKind;\n label: string;\n moduleName?: string;\n /** i18n key for the module title (used for page title and breadcrumbs) */\n moduleTitle?: string;\n children?: PlatformExplorerTreeNode[];\n /** Optional payload for detail view */\n payload?: unknown;\n /** Item count for badge (e.g. entities count, permissions count, features count) */\n itemCount?: number;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPEntityResolver } from '@acorex/platform/layout/entity';\nimport { AXPModuleManifestRegistry } from '@acorex/platform/core';\nimport { AXPPermissionDefinitionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\nimport {\n PlatformExplorerTreeNode,\n} from './platform-explorer-tree.model';\nimport type { AXPFeatureDefinition } from '@acorex/platform/core';\nimport type { AXPPermissionDefinition, AXPPermissionGroupDefinition } from '@acorex/platform/auth';\n\n//#endregion\n\n//#region ---- Service ----\n\n@Injectable()\nexport class PlatformExplorerDataService {\n private readonly manifestRegistry = inject(AXPModuleManifestRegistry);\n private readonly entityResolver = inject(AXPEntityResolver);\n private readonly permissionService = inject(AXPPermissionDefinitionService);\n\n /**\n * Build only root-level module nodes (no children). Children are loaded on expand via getModuleChildren.\n * Includes all modules; use buildModulesOnlyFiltered() to exclude modules with no entities/permissions/features.\n */\n async buildModulesOnly(): Promise<PlatformExplorerTreeNode[]> {\n await this.manifestRegistry.initialize();\n const modules = this.manifestRegistry.getAll();\n const tree: PlatformExplorerTreeNode[] = modules.map((mod) => ({\n id: `module-${mod.name}`,\n kind: 'module' as const,\n label: mod.title,\n moduleName: mod.name,\n moduleTitle: mod.title,\n payload: mod,\n children: [],\n }));\n tree.sort((a, b) => {\n const nameA = (a.payload as { name?: string })?.name ?? a.moduleName ?? '';\n const nameB = (b.payload as { name?: string })?.name ?? b.moduleName ?? '';\n return nameA.localeCompare(nameB, undefined, { sensitivity: 'base' });\n });\n return tree;\n }\n\n /**\n * Build root-level module nodes, excluding modules that have no entities, permissions, or features.\n * Each module node gets itemCount = number of non-empty subcategories (for badge).\n */\n async buildModulesOnlyFiltered(): Promise<PlatformExplorerTreeNode[]> {\n const all = await this.buildModulesOnly();\n const filtered: PlatformExplorerTreeNode[] = [];\n for (const modNode of all) {\n const children = await this.getModuleChildren(modNode.id);\n if (children.length > 0) {\n filtered.push({\n ...modNode,\n itemCount: children.length,\n });\n }\n }\n return filtered;\n }\n\n /**\n * Load entities, permissions, and features for a module (called when module node is expanded or clicked).\n * Only includes subcategories that have at least one item. Returns empty array if module has no items.\n */\n async getModuleChildren(moduleId: string): Promise<PlatformExplorerTreeNode[]> {\n const moduleName = moduleId.startsWith('module-') ? moduleId.slice(7) : moduleId;\n const mod = this.manifestRegistry.get(moduleName);\n if (!mod) return [];\n const moduleTitle = mod.title;\n const [allEntries, permissions, features] = await Promise.all([\n this.entityResolver.listAll(),\n this.getPermissionsForModule(moduleName),\n Promise.resolve(this.getFeaturesForModule(moduleName)),\n ]);\n const moduleEntities = allEntries.filter((e) => e.module === moduleName);\n const permissionsCount = permissions.length;\n const featuresCount = features.length;\n const nodes: PlatformExplorerTreeNode[] = [];\n if (moduleEntities.length > 0) {\n nodes.push({\n id: `module-${moduleName}-entities`,\n kind: 'entities',\n label: '@platform-dev-tools:module.terms.entities',\n moduleName,\n moduleTitle,\n itemCount: moduleEntities.length,\n children: moduleEntities.map((e) => ({\n id: `entity-${moduleName}-${e.name}`,\n kind: 'entity' as const,\n label: e.name,\n moduleName,\n moduleTitle,\n payload: e,\n })),\n });\n }\n if (permissionsCount > 0) {\n nodes.push({\n id: `module-${moduleName}-permissions`,\n kind: 'permissions',\n label: '@platform-dev-tools:module.terms.permissions',\n moduleName,\n moduleTitle,\n itemCount: permissionsCount,\n });\n }\n if (featuresCount > 0) {\n nodes.push({\n id: `module-${moduleName}-features`,\n kind: 'features',\n label: '@platform-dev-tools:module.terms.features',\n moduleName,\n moduleTitle,\n itemCount: featuresCount,\n });\n }\n return nodes;\n }\n\n /**\n * Get all permissions for a module (for display in module detail).\n */\n async getPermissionsForModule(moduleName: string): Promise<AXPPermissionDefinition[]> {\n const groups = await this.permissionService.getGroups();\n return this.collectPermissionsForModule(groups, moduleName);\n }\n\n /**\n * Get all features for a module (for display in module detail).\n */\n getFeaturesForModule(moduleName: string): AXPFeatureDefinition[] {\n return this.manifestRegistry.getModuleFeatures(moduleName);\n }\n\n private collectPermissionsForModule(\n groups: AXPPermissionGroupDefinition[],\n moduleName: string\n ): AXPPermissionDefinition[] {\n const prefix = `${moduleName}:`;\n const out: AXPPermissionDefinition[] = [];\n const collect = (items: AXPPermissionDefinition[]) => {\n for (const p of items) {\n if (p.name.startsWith(prefix)) out.push(p);\n if (p.children?.length) collect(p.children);\n }\n };\n for (const g of groups) {\n if (g.name === moduleName) collect(g.permissions);\n }\n return out;\n }\n}\n\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPModuleManifest } from '@acorex/platform/core';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-module-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n template: `\n @if (payload()) {\n <section class=\"axp-module-detail\">\n <h3 class=\"axp-module-detail__section-title\">\n {{ '@platform-dev-tools:module.terms.module-info' | translate | async }}\n </h3>\n <dl class=\"axp-detail-dl\">\n <dt>\n {{ '@platform-dev-tools:module.terms.name' | translate | async }}\n </dt>\n <dd>{{ payload()!.name }}</dd>\n\n <dt>\n {{ '@platform-dev-tools:module.terms.version' | translate | async }}\n </dt>\n <dd>{{ payload()!.version }}</dd>\n\n <dt>\n {{ '@platform-dev-tools:module.terms.title' | translate | async }}\n </dt>\n <dd>{{ payload()!.title }}</dd>\n\n @if (payload()!.description) {\n <dt>\n {{ '@platform-dev-tools:module.terms.description' | translate | async }}\n </dt>\n <dd>{{ payload()!.description }}</dd>\n }\n\n @if (payload()!.i18n) {\n <dt>i18n</dt>\n <dd>{{ payload()!.i18n }}</dd>\n }\n\n @if (payload()!.required !== undefined) {\n <dt>\n {{ '@platform-dev-tools:module.terms.required' | translate | async }}\n </dt>\n <dd>{{ payload()!.required }}</dd>\n }\n </dl>\n </section>\n }\n `,\n styles: [\n `\n .axp-module-detail { margin-bottom: 24px; }\n .axp-module-detail__section-title { margin: 0 0 12px 0; font-size: 15px; font-weight: 600; }\n .axp-detail-dl { display: grid; grid-template-columns: auto 1fr; gap: 4px 16px; margin: 0; }\n .axp-detail-dl dt { font-weight: 600; color: var(--ax-neutral-text-secondary, #666); }\n .axp-detail-dl dd { margin: 0; }\n `,\n ],\n})\nexport class AXPlatformExplorerModuleDetailComponent {\n payload = input<AXPModuleManifest | undefined>();\n}\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport type { AXPEntity } from '@acorex/platform/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPEntityResolver } from '@acorex/platform/layout/entity';\nimport type { AXPEntityListEntry } from '@acorex/platform/layout/entity';\n\n//#endregion\n\nfunction isListEntry(p: AXPEntity | AXPEntityListEntry): p is AXPEntityListEntry {\n return p != null && 'fullName' in p && !('properties' in p);\n}\n\n@Component({\n selector: 'axp-platform-explorer-entity-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n host: { class: 'ax-flex ax-flex-col ax-flex-1 ax-min-h-0' },\n template: `\n <div class=\"ax-flex ax-flex-col ax-flex-1 ax-min-h-0 ax-pt-0 ax-overflow-auto\">\n @if (entity(); as e) {\n <dl class=\"ax-grid ax-grid-cols-[auto_1fr] ax-gap-x-4 ax-gap-y-1 ax-mb-3 ax-m-0\">\n <dt class=\"ax-font-semibold ax-text-muted\">{{ '@platform-dev-tools:module.terms.module' | translate | async }}</dt><dd class=\"ax-m-0\">{{ e.module }}</dd>\n <dt class=\"ax-font-semibold ax-text-muted\">{{ '@platform-dev-tools:module.terms.name' | translate | async }}</dt><dd class=\"ax-m-0\">{{ e.name }}</dd>\n @if (e.title) {\n <dt class=\"ax-font-semibold ax-text-muted\">{{ '@platform-dev-tools:module.terms.title' | translate | async }}</dt><dd class=\"ax-m-0\">{{ e.title | translate | async}}</dd>\n }\n @if (e.formats.plural) {\n <dt class=\"ax-font-semibold ax-text-muted\">{{ '@platform-dev-tools:module.terms.plural' | translate | async }}</dt><dd class=\"ax-m-0\">{{ e.formats.plural | translate | async}}</dd>\n }\n </dl>\n @if (e.properties && e.properties.length > 0) {\n <p class=\"ax-mb-2 ax-mt-3 ax-font-bold\">{{ '@platform-dev-tools:module.terms.properties' | translate | async }} ({{ e.properties.length }})</p>\n <div class=\"ax-flex-1 ax-min-h-0 ax-overflow-auto ax-border ax-border-lightest ax-rounded-md\">\n <table class=\"ax-w-full ax-border-collapse ax-text-[13px]\">\n <thead>\n <tr>\n <th class=\"ax-text-start ax-p-2 ax-px-3 ax-bg-lighter ax-font-semibold ax-border-b ax-border-lightest\">{{ '@platform-dev-tools:module.terms.name' | translate | async }}</th>\n <th class=\"ax-text-start ax-p-2 ax-px-3 ax-bg-lighter ax-font-semibold ax-border-b ax-border-lightest\">{{ '@platform-dev-tools:module.terms.title' | translate | async }}</th>\n <th class=\"ax-text-start ax-p-2 ax-px-3 ax-bg-lighter ax-font-semibold ax-border-b ax-border-lightest\">{{ '@platform-dev-tools:module.terms.type' | translate | async }}</th>\n <th class=\"ax-text-start ax-p-2 ax-px-3 ax-bg-lighter ax-font-semibold ax-border-b ax-border-lightest\">{{ '@platform-dev-tools:module.terms.description' | translate | async }}</th>\n </tr>\n </thead>\n <tbody class=\"axp-entity-detail-tbody\">\n @for (p of e.properties; track p.name) {\n <tr>\n <td class=\"ax-p-2 ax-px-3 ax-border-b ax-border-lightest\"><code class=\"ax-text-xs ax-bg-lighter ax-px-1.5 ax-py-0.5 ax-rounded\">{{ p.name }}</code></td>\n <td class=\"ax-p-2 ax-px-3 ax-border-b ax-border-lightest\">{{ p.title | translate | async }}</td>\n <td class=\"ax-p-2 ax-px-3 ax-border-b ax-border-lightest\">{{ p.schema.dataType }}</td>\n <td class=\"ax-p-2 ax-px-3 ax-border-b ax-border-lightest\">@if (p.description) { {{ p.description | translate | async }} } @else { – }</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n } @else if (loading()) {\n <p class=\"ax-m-0 ax-text-muted\">{{ '@platform-dev-tools:module.terms.loading-entity' | translate | async }}</p>\n }\n </div>\n `,\n styles: [\n `\n .axp-entity-detail-tbody tr:last-child td { border-bottom: none; }\n `,\n ],\n})\nexport class AXPlatformExplorerEntityDetailComponent {\n payload = input<AXPEntity | AXPEntityListEntry | undefined>();\n\n protected readonly entity = signal<AXPEntity | null>(null);\n protected readonly loading = signal(false);\n\n private readonly entityResolver = inject(AXPEntityResolver);\n\n constructor() {\n effect(() => {\n const p = this.payload();\n if (!p) {\n this.entity.set(null);\n this.loading.set(false);\n return;\n }\n if (isListEntry(p)) {\n this.loading.set(true);\n this.entity.set(null);\n this.entityResolver.get(p.module, p.name).then((e) => {\n if (this.payload() === p) {\n this.entity.set(e ?? null);\n }\n this.loading.set(false);\n });\n } else {\n this.entity.set(p);\n this.loading.set(false);\n }\n });\n }\n}\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPPermissionDefinition } from '@acorex/platform/auth';\nimport { PlatformExplorerDataService } from '../platform-explorer-data.service';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-permissions-list-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDataTableModule, AXTranslationModule],\n host: { class: 'ax-flex ax-flex-col ax-flex-1 ax-min-h-0' },\n template: `\n <div class=\"ax-flex ax-flex-1 ax-min-h-0 ax-pt-0 ax-overflow-auto\">\n <ax-data-table\n class=\"ax-flex-1 ax-border ax-border-lightest ax-rounded-md ax-overflow-hidden\"\n [paging]=\"true\"\n [allowReordering]=\"true\"\n [dataSource]=\"dataSource\"\n >\n <ax-text-column [dataField]=\"'name'\" [caption]=\"'@platform-dev-tools:module.terms.name' | translate | async\" [width]=\"'420px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column [dataField]=\"'title'\" [caption]=\"'@platform-dev-tools:module.terms.title' | translate | async\" [cellTemplate]=\"titleTpl\" [width]=\"'260px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column [dataField]=\"'description'\" [caption]=\"'@platform-dev-tools:module.terms.description' | translate | async\" [cellTemplate]=\"descTpl\" [width]=\"'380px'\" [allowResizing]=\"true\"></ax-text-column>\n </ax-data-table>\n </div>\n <ng-template #titleTpl let-item>\n {{ item.data?.title | translate | async }}</ng-template>\n <ng-template #descTpl let-item>\n @if (item.data?.description) { {{ item.data.description | translate | async }} } @else { – }\n </ng-template>\n `,\n})\nexport class AXPlatformExplorerPermissionsListDetailComponent {\n moduleName = input.required<string>();\n private readonly dataService = inject(PlatformExplorerDataService);\n\n readonly dataSource = new AXDataSource<AXPPermissionDefinition>({\n key: 'name',\n pageSize: 20,\n load: async (e: AXDataSourceQuery) => {\n const name = this.moduleName();\n if (!name) return { items: [], total: 0 };\n const list = await this.dataService.getPermissionsForModule(name);\n const skip = e?.skip ?? 0;\n const take = e?.take ?? 20;\n const items = list.slice(skip, skip + take);\n return { items, total: list.length };\n },\n });\n\n constructor() {\n effect(() => {\n this.moduleName();\n this.dataSource.refresh();\n });\n }\n}\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPFeatureDefinition } from '@acorex/platform/core';\nimport { PlatformExplorerDataService } from '../platform-explorer-data.service';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-features-list-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDataTableModule, AXTranslationModule],\n host: { class: 'ax-flex ax-flex-col ax-flex-1 ax-min-h-0' },\n template: `\n <div class=\"ax-flex ax-flex-1 ax-min-h-0 ax-pt-0 ax-overflow-auto\">\n <ax-data-table\n class=\"ax-flex-1 ax-border ax-border-lightest ax-rounded-md ax-overflow-hidden\"\n [paging]=\"true\"\n [allowReordering]=\"true\"\n [dataSource]=\"dataSource\"\n >\n <ax-text-column dataField=\"key\" [caption]=\"'@platform-dev-tools:module.terms.key' | translate | async\" [width]=\"'240px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"title\" [caption]=\"'@platform-dev-tools:module.terms.title' | translate | async\" [cellTemplate]=\"titleTpl\" [width]=\"'280px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"type\" caption=\"Type\" [width]=\"'100px'\" [cellTemplate]=\"typeTpl\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"description\" [caption]=\"'@platform-dev-tools:module.terms.description' | translate | async\" [cellTemplate]=\"descTpl\" [width]=\"'340px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"defaultValue\" [caption]=\"'@platform-dev-tools:module.terms.default-value' | translate | async\" [width]=\"'140px'\" [allowResizing]=\"true\"></ax-text-column>\n </ax-data-table>\n </div>\n <ng-template #titleTpl let-item>{{ item.data?.title | translate | async }}</ng-template>\n <ng-template #typeTpl let-item>{{ item.data?.type ?? '–' }}</ng-template>\n <ng-template #descTpl let-item>@if (item.data?.description) { {{ item.data.description | translate | async }} } @else { – }</ng-template>\n `,\n})\nexport class AXPlatformExplorerFeaturesListDetailComponent {\n moduleName = input.required<string>();\n private readonly dataService = inject(PlatformExplorerDataService);\n\n readonly dataSource = new AXDataSource<AXPFeatureDefinition>({\n key: 'name',\n pageSize: 20,\n load: (e: AXDataSourceQuery) => {\n const name = this.moduleName();\n if (!name) return Promise.resolve({ items: [], total: 0 });\n const list = this.dataService.getFeaturesForModule(name);\n const skip = e?.skip ?? 0;\n const take = e?.take ?? 20;\n const items = list.slice(skip, skip + take);\n return Promise.resolve({ items, total: list.length });\n },\n });\n\n constructor() {\n effect(() => {\n this.moduleName();\n this.dataSource.refresh();\n });\n }\n}\n","//#region ---- Imports ----\n\n\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\nimport { AXPlatformExplorerModuleDetailComponent } from './detail/platform-explorer-module-detail.component';\nimport { AXPlatformExplorerEntityDetailComponent } from './detail/platform-explorer-entity-detail.component';\nimport { AXPlatformExplorerPermissionsListDetailComponent } from './detail/platform-explorer-permissions-list-detail.component';\nimport { AXPlatformExplorerFeaturesListDetailComponent } from './detail/platform-explorer-features-list-detail.component';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'ax-flex ax-flex-col ax-flex-1 ax-min-h-0' },\n imports: [\n AXTranslationModule,\n AXPlatformExplorerModuleDetailComponent,\n AXPlatformExplorerEntityDetailComponent,\n AXPlatformExplorerPermissionsListDetailComponent,\n AXPlatformExplorerFeaturesListDetailComponent\n],\n template: `\n <div class=\"ax-flex ax-flex-col ax-flex-1 ax-min-h-0\">\n @switch (node().kind) {\n @case ('module') {\n <axp-platform-explorer-module-detail [payload]=\"$any(node().payload)\" />\n }\n @case ('entity') {\n <axp-platform-explorer-entity-detail [payload]=\"$any(node().payload)\" />\n }\n @case ('permissions') {\n <axp-platform-explorer-permissions-list-detail [moduleName]=\"node().moduleName!\" />\n }\n @case ('features') {\n <axp-platform-explorer-features-list-detail [moduleName]=\"node().moduleName!\" />\n }\n @default {\n <p class=\"axp-detail__hint\">{{ node().children?.length ?? 0 }} items.</p>\n }\n }\n </div>\n `,\n styles: [\n `\n .axp-detail__hint { margin: 0; color: var(--ax-neutral-text-secondary, #666); }\n `,\n ],\n})\nexport class AXPlatformExplorerDetailComponent {\n node = input.required<PlatformExplorerTreeNode>();\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AXTreeViewComponent,\n AXTreeViewNode,\n AXTreeViewNodeSelectEvent,\n AXTreeViewNodeToggleEvent,\n} from '@acorex/components/tree-view';\nimport { AXPBreadcrumbItem } from '@acorex/platform/contracts';\n\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n AXPPageLayoutComponent,\n} from '@acorex/platform/layout/views';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutStartSideComponent,\n} from '@acorex/platform/layout/components';\nimport { PlatformExplorerDataService } from './platform-explorer-data.service';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\nimport { AXPlatformExplorerDetailComponent } from './platform-explorer-detail.component';\n\n//#endregion\n\n//#region ---- Convert tree to AXTreeViewNode ----\n\nfunction toTreeViewNodes(\n nodes: PlatformExplorerTreeNode[],\n markModuleExpandable = false\n): AXTreeViewNode[] {\n return nodes.map((n) => {\n const children = n.children ?? [];\n const hasChildren = children.length > 0;\n const axNode: AXTreeViewNode = {\n id: n.id,\n title: n.label,\n children: hasChildren ? toTreeViewNodes(children, false) : undefined,\n data: { treeNode: n },\n };\n if (markModuleExpandable && n.kind === 'module' && !hasChildren) {\n (axNode as Record<string, unknown>)['childrenCount'] = 3;\n }\n return axNode;\n });\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-page',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTranslationModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutBlockComponent,\n AXTreeViewComponent,\n AXPlatformExplorerDetailComponent,\n ],\n providers: [\n PlatformExplorerDataService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPlatformExplorerPageComponent,\n },\n ],\n templateUrl: './platform-explorer-page.component.html',\n styleUrl: './platform-explorer-page.component.scss',\n})\nexport class AXPlatformExplorerPageComponent extends AXPPageLayoutBaseComponent {\n protected readonly dataService = inject(PlatformExplorerDataService);\n\n readonly loading = signal(true);\n readonly selectedNode = signal<PlatformExplorerTreeNode | null>(null);\n protected readonly moduleNodes = signal<PlatformExplorerTreeNode[]>([]);\n protected readonly tree = viewChild<AXTreeViewComponent>('tree');\n\n constructor() {\n super();\n this.initializeModules();\n }\n\n /** Datasource for tree: root = modules only; children loaded when module is expanded. */\n protected datasource = async (parentId?: string): Promise<AXTreeViewNode[]> => {\n if (!parentId) {\n const nodes = this.moduleNodes();\n return toTreeViewNodes(nodes, true);\n }\n const children = await this.dataService.getModuleChildren(parentId);\n return toTreeViewNodes(children, false);\n };\n\n private async initializeModules(): Promise<void> {\n this.loading.set(true);\n try {\n const nodes = await this.dataService.buildModulesOnlyFiltered();\n this.moduleNodes.set(nodes);\n } finally {\n this.loading.set(false);\n }\n }\n\n override async getPageTitle(): Promise<string> {\n const node = this.selectedNode();\n if (!node) {\n return this.translateService.translateAsync('@platform-dev-tools:module.title');\n }\n const moduleTitleKey = node.moduleTitle ?? node.label;\n const moduleTitle = await this.translateService.translateAsync(moduleTitleKey);\n const contextParts: string[] = [];\n switch (node.kind) {\n case 'module':\n return moduleTitle;\n case 'entities':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.entities'));\n break;\n case 'entity':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.entities'));\n contextParts.push(node.label);\n break;\n case 'permissions':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.permissions'));\n break;\n case 'features':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.features'));\n break;\n default:\n return moduleTitle;\n }\n return [moduleTitle, ...contextParts].join(' - ');\n }\n\n override getPageDescription(): string | null | Promise<string | null> {\n const node = this.selectedNode();\n if (!node) return null;\n const key = this.descriptionKeyForKind(node.kind);\n return key ? this.translateService.translateAsync(key) : null;\n }\n\n override getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]> {\n const node = this.selectedNode();\n const items: AXPBreadcrumbItem[] = [\n { title: '@platform-dev-tools:module.menus.platform-explorer.title' },\n ];\n if (node?.moduleTitle) {\n items.push({ title: node.moduleTitle });\n }\n return items;\n }\n\n private descriptionKeyForKind(kind: PlatformExplorerTreeNode['kind']): string | null {\n switch (kind) {\n case 'module':\n return '@platform-dev-tools:module.descriptions.module';\n case 'entities':\n return '@platform-dev-tools:module.descriptions.entities';\n case 'entity':\n return '@platform-dev-tools:module.descriptions.entity';\n case 'permissions':\n return '@platform-dev-tools:module.descriptions.permissions';\n case 'features':\n return '@platform-dev-tools:module.descriptions.features';\n default:\n return null;\n }\n }\n\n protected onNodeClick(event: AXTreeViewNodeSelectEvent): void {\n const node = event.node;\n const data = node?.['data'] as { treeNode?: PlatformExplorerTreeNode } | undefined;\n const treeNode = data?.treeNode;\n if (treeNode) {\n this.selectedNode.set(treeNode);\n this.recompute();\n // When a module node is clicked, expand it so the tree loads its children (entities, permissions, features)\n if (treeNode.kind === 'module') {\n const treeRef = this.tree();\n if (treeRef && typeof (treeRef as unknown as { expandNode?: (id: string) => void }).expandNode === 'function') {\n (treeRef as unknown as { expandNode: (id: string) => void }).expandNode(treeNode.id);\n }\n }\n }\n }\n\n protected onNodeToggle(_event: AXTreeViewNodeToggleEvent): void {\n // Tree loads children via datasource(parentId) when a node is expanded; no extra work needed.\n }\n}\n\n//#endregion\n","<axp-page-layout>\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>{{ '@platform-dev-tools:module.menus.platform-explorer.title' | translate | async\n }}</axp-layout-title>\n </axp-layout-header>\n <axp-layout-content class=\"axp-platform-explorer__tree-wrap\">\n @if (loading()) {\n <p class=\"axp-platform-explorer__loading\">Loading...</p>\n } @else if (moduleNodes().length === 0) {\n <p class=\"axp-platform-explorer__empty\">{{ '@platform-dev-tools:module.messages.no-modules' | translate | async }}\n </p>\n } @else {\n <ax-tree-view #tree [datasource]=\"datasource\" [selectMode]=\"'single'\" [showIcons]=\"false\"\n [showChildrenBadge]=\"true\" [dragBehavior]=\"'none'\" look=\"default\" [nodeTemplate]=\"nodeTemplate\"\n (onNodeClick)=\"onNodeClick($event)\" (onNodeToggle)=\"onNodeToggle($event)\" />\n }\n </axp-layout-content>\n </axp-layout-start-side>\n\n <axp-page-content class=\"ax-min-h-0 ax-pt-0\">\n @if (selectedNode()) {\n <axp-platform-explorer-detail [node]=\"selectedNode()!\" />\n } @else {\n <p class=\"axp-platform-explorer__hint\">{{ '@platform-dev-tools:module.messages.select-node' | translate | async }}\n </p>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Node template: icon per kind (with color) + label (translated) + badge -->\n<ng-template #nodeTemplate let-node=\"node\">\n @let data = node['data'];\n @let treeNode = data?.treeNode;\n @let kind = treeNode?.kind;\n @let count = node['childrenCount'] ?? treeNode?.itemCount;\n <span class=\"axp-platform-explorer__node\">\n @switch (kind) {\n @case ('module') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--module fa-light fa-cube\"\n aria-hidden=\"true\"></i>\n }\n @case ('entities') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--entities fa-light fa-table-list\"\n aria-hidden=\"true\"></i>\n }\n @case ('entity') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--entity fa-light fa-table\"\n aria-hidden=\"true\"></i>\n }\n @case ('permissions') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--permissions fa-light fa-shield-halved\"\n aria-hidden=\"true\"></i>\n }\n @case ('features') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--features fa-light fa-sliders\"\n aria-hidden=\"true\"></i>\n }\n @default {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--default fa-light fa-circle-dot\"\n aria-hidden=\"true\"></i>\n }\n }\n <span class=\"axp-platform-explorer__node-label\">{{ node['title'] | translate | async }}</span>\n @if (count != null && count > 0) {\n <span class=\"axp-platform-explorer__node-badge\">{{ count }}</span>\n }\n </span>\n</ng-template>","//#region ---- Imports ----\n\n\nimport {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-tree-node',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPlatformExplorerTreeNodeComponent],\n template: `\n <div class=\"axp-tree-node\" [class.axp-tree-node--selected]=\"isSelected()\">\n <button\n type=\"button\"\n class=\"axp-tree-node__toggler\"\n [class.axp-tree-node__toggler--open]=\"expanded()\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n @if (hasChildren()) {\n <span class=\"axp-tree-node__icon\" aria-hidden=\"true\">{{ expanded() ? '▼' : '▶' }}</span>\n } @else {\n <span class=\"axp-tree-node__icon axp-tree-node__icon--empty\"></span>\n }\n </button>\n <button\n type=\"button\"\n class=\"axp-tree-node__label\"\n (click)=\"select()\"\n >\n {{ node().label }}\n @if (childrenLength() > 0) {\n <span class=\"axp-tree-node__badge\">({{ childrenLength() }})</span>\n }\n </button>\n </div>\n @if (hasChildren() && expanded()) {\n <div class=\"axp-tree-node__children\">\n @for (child of node().children ?? []; track child.id) {\n <axp-platform-explorer-tree-node\n [node]=\"child\"\n [selectedId]=\"selectedId()\"\n (nodeSelect)=\"nodeSelect.emit($event)\"\n />\n }\n </div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n .axp-tree-node {\n display: flex;\n align-items: center;\n min-height: 28px;\n }\n .axp-tree-node--selected .axp-tree-node__label {\n font-weight: 600;\n background: var(--ax-neutral-surface-hover, rgba(0, 0, 0, 0.04));\n }\n .axp-tree-node__toggler {\n width: 24px;\n height: 28px;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--ax-neutral-text-secondary, #666);\n flex-shrink: 0;\n }\n .axp-tree-node__toggler--open .axp-tree-node__icon {\n transform: rotate(0);\n }\n .axp-tree-node__icon {\n font-size: 10px;\n display: inline-block;\n }\n .axp-tree-node__icon--empty {\n width: 10px;\n }\n .axp-tree-node__label {\n flex: 1;\n text-align: start;\n padding: 4px 8px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n border-radius: 4px;\n }\n .axp-tree-node__label:hover {\n background: var(--ax-neutral-surface-hover, rgba(0, 0, 0, 0.04));\n }\n .axp-tree-node__badge {\n margin-inline-start: 4px;\n font-size: 11px;\n color: var(--ax-neutral-text-secondary, #666);\n font-weight: normal;\n }\n .axp-tree-node__children {\n padding-inline-start: 16px;\n }\n `,\n ],\n})\nexport class AXPlatformExplorerTreeNodeComponent {\n node = input.required<PlatformExplorerTreeNode>();\n selectedId = input<string | null>(null);\n nodeSelect = output<PlatformExplorerTreeNode>();\n\n readonly expanded = signal(true);\n\n childrenLength(): number {\n return this.node().children?.length ?? 0;\n }\n\n hasChildren(): boolean {\n const children = this.node().children;\n return !!children && children.length > 0;\n }\n\n isSelected(): boolean {\n return this.selectedId() === this.node().id;\n }\n\n toggle(): void {\n if (this.hasChildren()) {\n this.expanded.update((v) => !v);\n }\n }\n\n select(): void {\n this.nodeSelect.emit(this.node());\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider } from '@acorex/platform/core';\nimport { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\nimport { PlatformDevToolsManifest } from './manifest';\nimport { AXMPlatformDevToolsMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXPPlatformDevToolsSettingProvider } from './settings.provider';\nimport { AXPlatformExplorerPageComponent } from './features/platform-explorer';\n\n//#endregion\n\n//#region ---- Routes ----\n\nfunction routesFactory(): Routes {\n return [\n {\n path: ':app/dev/platform-explorer',\n canActivate: [AXPAuthGuard],\n data: { rootLayout: true },\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => AXPlatformExplorerPageComponent,\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: PlatformDevToolsManifest,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then(m => m.AXMPlatformDevToolsMenuProvider)\n ),\n provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () =>\n import('./settings.provider').then(m => m.AXPPlatformDevToolsSettingProvider)\n ),\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n ],\n})\nexport class AXMPlatformDevToolsModule { }\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAEO,MAAM,2BAA2B,GAAG;AACzC,IAAA,IAAI,EAAE,yBAAyB;AAC/B,IAAA,gBAAgB,EAAE,sCAAsC;;AAG1D;;ACPO,MAAM,kBAAkB,GAAG;AAChC,IAAA,gBAAgB,EAAE;AAChB,QAAA,gBAAgB,EAAE;AAChB,YAAA,IAAI,EAAE,mDAAmD;AAC1D,SAAA;AACF,KAAA;;;ACLH;AAEA;IACY;AAAZ,CAAA,UAAY,2BAA2B,EAAA;;AAErC,IAAA,2BAAA,CAAA,WAAA,CAAA,GAAA,8CAA0D;AAC5D,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,GAAA,EAAA,CAAA,CAAA;AAKvC;;ACRA;AAEA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,oBAAoB;CAC3B;AAEM,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,IAAI,EAAE,oBAAoB;AAC3B,KAAA;;AAGH;;ACjBA;AAQA;;ACRA;AAKA;AAEA;AAEA;;;AAGG;AACI,MAAM,wBAAwB,GAAsB;AACzD,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK;AAC9B,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,WAAW,EAAE,wCAAwC;AACrD,IAAA,QAAQ,EAAE,KAAK;;AAGjB;;AChBA;AAEA;MAGa,+BAA+B,CAAA;IAC1C,MAAM,MAAM,CAAC,OAA+C,EAAA;AAC1D,QAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,gBAAgB;QAChD,MAAM,iBAAiB,GAAG,wCAAwC;QAElE;AACG,aAAA,QAAQ,CACP,UAAU,CAAC,MAAM,CAAC,IAAI,EACtB,CAAA,EAAG,iBAAiB,CAAA,MAAA,CAAQ,EAC5B,CAAA,EAAG,iBAAiB,cAAc;AAEnC,aAAA,aAAa,CACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAC1B,CAAA,EAAG,iBAAiB,CAAA,6BAAA,CAA+B,EACnD,CAAA,EAAG,iBAAiB,qCAAqC;AAE1D,aAAA,aAAa;AACb,aAAA,QAAQ,EAAE;IACf;8GAlBW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA/B,+BAA+B,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C;;;ACXD;AAyBA;;ACzBA;AAYA;AAEA;MAGa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACpD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAwI5E,IAAA;AAtIC;;;AAGG;AACH,IAAA,MAAM,gBAAgB,GAAA;AACpB,QAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;QAC9C,MAAM,IAAI,GAA+B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC7D,YAAA,EAAE,EAAE,CAAA,OAAA,EAAU,GAAG,CAAC,IAAI,CAAA,CAAE;AACxB,YAAA,IAAI,EAAE,QAAiB;YACvB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,WAAW,EAAE,GAAG,CAAC,KAAK;AACtB,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACjB,YAAA,MAAM,KAAK,GAAI,CAAC,CAAC,OAA6B,EAAE,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE;AAC1E,YAAA,MAAM,KAAK,GAAI,CAAC,CAAC,OAA6B,EAAE,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE;AAC1E,YAAA,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACvE,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACH,IAAA,MAAM,wBAAwB,GAAA;AAC5B,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE;QACzC,MAAM,QAAQ,GAA+B,EAAE;AAC/C,QAAA,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;AACzD,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,QAAQ,CAAC,IAAI,CAAC;AACZ,oBAAA,GAAG,OAAO;oBACV,SAAS,EAAE,QAAQ,CAAC,MAAM;AAC3B,iBAAA,CAAC;YACJ;QACF;AACA,QAAA,OAAO,QAAQ;IACjB;AAEA;;;AAGG;IACH,MAAM,iBAAiB,CAAC,QAAgB,EAAA;QACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ;QAChF,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;AACjD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE;AACnB,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK;AAC7B,QAAA,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC5D,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACvD,SAAA,CAAC;AACF,QAAA,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;AACxE,QAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM;AAC3C,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM;QACrC,MAAM,KAAK,GAA+B,EAAE;AAC5C,QAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,CAAA,OAAA,EAAU,UAAU,CAAA,SAAA,CAAW;AACnC,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,2CAA2C;gBAClD,UAAU;gBACV,WAAW;gBACX,SAAS,EAAE,cAAc,CAAC,MAAM;gBAChC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACnC,oBAAA,EAAE,EAAE,CAAA,OAAA,EAAU,UAAU,IAAI,CAAC,CAAC,IAAI,CAAA,CAAE;AACpC,oBAAA,IAAI,EAAE,QAAiB;oBACvB,KAAK,EAAE,CAAC,CAAC,IAAI;oBACb,UAAU;oBACV,WAAW;AACX,oBAAA,OAAO,EAAE,CAAC;AACX,iBAAA,CAAC,CAAC;AACJ,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,gBAAgB,GAAG,CAAC,EAAE;YACxB,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,CAAA,OAAA,EAAU,UAAU,CAAA,YAAA,CAAc;AACtC,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,8CAA8C;gBACrD,UAAU;gBACV,WAAW;AACX,gBAAA,SAAS,EAAE,gBAAgB;AAC5B,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;YACrB,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,CAAA,OAAA,EAAU,UAAU,CAAA,SAAA,CAAW;AACnC,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,2CAA2C;gBAClD,UAAU;gBACV,WAAW;AACX,gBAAA,SAAS,EAAE,aAAa;AACzB,aAAA,CAAC;QACJ;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;IACH,MAAM,uBAAuB,CAAC,UAAkB,EAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;QACvD,OAAO,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC;IAC7D;AAEA;;AAEG;AACH,IAAA,oBAAoB,CAAC,UAAkB,EAAA;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC;IAC5D;IAEQ,2BAA2B,CACjC,MAAsC,EACtC,UAAkB,EAAA;AAElB,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,UAAU,GAAG;QAC/B,MAAM,GAAG,GAA8B,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,CAAC,KAAgC,KAAI;AACnD,YAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACrB,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,oBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM;AAAE,oBAAA,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC7C;AACF,QAAA,CAAC;AACD,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;AAAE,gBAAA,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;QACnD;AACA,QAAA,OAAO,GAAG;IACZ;8GA1IW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA3B,2BAA2B,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;;AChBD;AAOA;MA8Da,uCAAuC,CAAA;AA5DpD,IAAA,WAAA,GAAA;QA6DE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiC;AACjD,IAAA;8GAFY,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uCAAuC,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,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtDxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA5CS,YAAY,8BAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAuDhC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBA5DnD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,cACnC,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,WACtC,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sTAAA,CAAA,EAAA;;;AC1DH;AASA;AAEA,SAAS,WAAW,CAAC,CAAiC,EAAA;AACpD,IAAA,OAAO,CAAC,IAAI,IAAI,IAAI,UAAU,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,CAAC;AAC7D;MA0Da,uCAAuC,CAAA;AAQlD,IAAA,WAAA,GAAA;QAPA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA8C;AAE1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAmB,IAAI,6EAAC;AACvC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AAEzB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAGzD,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,CAAC,EAAE;AACN,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACvB;YACF;AACA,YAAA,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AACnD,oBAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;wBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;oBAC5B;AACA,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,CAAC,CAAC;YACJ;iBAAO;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC,CAAC;IACJ;8GA9BW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uCAAuC,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,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjDxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA5CS,YAAY,8BAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAmDhC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAxDnD,SAAS;+BACE,qCAAqC,EAAA,UAAA,EACnC,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,IAAA,EACtC,EAAE,KAAK,EAAE,0CAA0C,EAAE,EAAA,QAAA,EACjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iEAAA,CAAA,EAAA;;;AChEH;AAiBA;MA6Ba,gDAAgD,CAAA;AAkB3D,IAAA,WAAA,GAAA;AAjBA,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAU;AACpB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAEzD,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAA0B;AAC9D,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,IAAI,EAAE,OAAO,CAAoB,KAAI;AACnC,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,gBAAA,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACjE,gBAAA,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;AACzB,gBAAA,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE;AAC1B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;gBAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YACtC,CAAC;AACF,SAAA,CAAC;QAGA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;8GAvBW,gDAAgD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gDAAgD,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBjD;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAsBnD,gDAAgD,EAAA,UAAA,EAAA,CAAA;kBA3B5D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+CAA+C;AACzD,oBAAA,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;AAC/D,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,0CAA0C,EAAE;AAC3D,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA;AACF,iBAAA;;;AC7CD;AAiBA;MA6Ba,6CAA6C,CAAA;AAkBxD,IAAA,WAAA,GAAA;AAjBA,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAU;AACpB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAEzD,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAuB;AAC3D,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,IAAI,EAAE,CAAC,CAAoB,KAAI;AAC7B,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,gBAAA,IAAI,CAAC,IAAI;AAAE,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACxD,gBAAA,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;AACzB,gBAAA,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE;AAC1B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;AAC3C,gBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACvD,CAAC;AACF,SAAA,CAAC;QAGA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;8GAvBW,6CAA6C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6CAA6C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApB9C;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAsBnD,6CAA6C,EAAA,UAAA,EAAA,CAAA;kBA3BzD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;AAC/D,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,0CAA0C,EAAE;AAC3D,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA;AACF,iBAAA;;;AC7CD;AAWA;AAEA;MA0Ca,iCAAiC,CAAA;AAxC9C,IAAA,WAAA,GAAA;AAyCE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAA4B;AAClD,IAAA;8GAFY,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,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,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3BlC;;;;;;;;;;;;;;;;;;;;GAoBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA1BC,mBAAmB,+BACnB,uCAAuC,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvC,uCAAuC,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvC,gDAAgD,kHAChD,6CAA6C,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FA6BpC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAxC7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAC5B,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,QACzC,EAAE,KAAK,EAAE,0CAA0C,EAAE,EAAA,OAAA,EAClD;wBACP,mBAAmB;wBACnB,uCAAuC;wBACvC,uCAAuC;wBACvC,gDAAgD;wBAChD;qBACH,EAAA,QAAA,EACW;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4EAAA,CAAA,EAAA;;;AChDH;AAkCA;AAEA;AAEA,SAAS,eAAe,CACtB,KAAiC,EACjC,oBAAoB,GAAG,KAAK,EAAA;AAE5B,IAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACrB,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE;AACjC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;AACvC,QAAA,MAAM,MAAM,GAAmB;YAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,YAAA,QAAQ,EAAE,WAAW,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,SAAS;AACpE,YAAA,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;SACtB;QACD,IAAI,oBAAoB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC9D,YAAA,MAAkC,CAAC,eAAe,CAAC,GAAG,CAAC;QAC1D;AACA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,CAAC;AACJ;AAEA;AAEA;AA2BM,MAAO,+BAAgC,SAAQ,0BAA0B,CAAA;AAQ7E,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AARU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,2BAA2B,CAAC;AAE3D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,IAAI,8EAAC;AACtB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAkC,IAAI,mFAAC;AAClD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA6B,EAAE,kFAAC;AACpD,QAAA,IAAA,CAAA,IAAI,GAAG,SAAS,CAAsB,MAAM,2EAAC;;AAQtD,QAAA,IAAA,CAAA,UAAU,GAAG,OAAO,QAAiB,KAA+B;YAC5E,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,gBAAA,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;YACrC;YACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AACnE,YAAA,OAAO,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC;AACzC,QAAA,CAAC;QAXC,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAYQ,IAAA,MAAM,iBAAiB,GAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE;AAC/D,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;gBAAU;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB;IACF;AAES,IAAA,MAAM,YAAY,GAAA;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QAChC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,kCAAkC,CAAC;QACjF;QACA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK;QACrD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC;QAC9E,MAAM,YAAY,GAAa,EAAE;AACjC,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,UAAU;AACb,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,2CAA2C,CAAC,CAAC;gBAC1G;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,2CAA2C,CAAC,CAAC;AAC1G,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7B;AACF,YAAA,KAAK,aAAa;AAChB,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,8CAA8C,CAAC,CAAC;gBAC7G;AACF,YAAA,KAAK,UAAU;AACb,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,2CAA2C,CAAC,CAAC;gBAC1G;AACF,YAAA;AACE,gBAAA,OAAO,WAAW;;QAEtB,OAAO,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACnD;IAES,kBAAkB,GAAA;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI;IAC/D;IAES,kBAAkB,GAAA;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,MAAM,KAAK,GAAwB;YACjC,EAAE,KAAK,EAAE,0DAA0D,EAAE;SACtE;AACD,QAAA,IAAI,IAAI,EAAE,WAAW,EAAE;YACrB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC;AACA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,qBAAqB,CAAC,IAAsC,EAAA;QAClE,QAAQ,IAAI;AACV,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,gDAAgD;AACzD,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,kDAAkD;AAC3D,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,gDAAgD;AACzD,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,qDAAqD;AAC9D,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,kDAAkD;AAC3D,YAAA;AACE,gBAAA,OAAO,IAAI;;IAEjB;AAEU,IAAA,WAAW,CAAC,KAAgC,EAAA;AACpD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,MAAM,CAAwD;AAClF,QAAA,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ;QAC/B,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,SAAS,EAAE;;AAEhB,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;gBAC3B,IAAI,OAAO,IAAI,OAAQ,OAA4D,CAAC,UAAU,KAAK,UAAU,EAAE;AAC5G,oBAAA,OAA2D,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtF;YACF;QACF;IACF;AAEU,IAAA,YAAY,CAAC,MAAiC,EAAA;;IAExD;8GArHW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,SAAA,EAV/B;YACT,2BAA2B;AAC3B,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,+BAA+B;AAC7C,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnFH,s7FAoEc,EAAA,MAAA,EAAA,CAAA,60DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,+BACnB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,gCAAgC,EAAA,QAAA,EAAA,mDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,6BAA6B,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,4BAA4B,EAAA,QAAA,EAAA,qfAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,mBAAmB,iwBACnB,iCAAiC,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAYxB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAzB3C,SAAS;+BACE,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,sBAAsB;wBACtB,gCAAgC;wBAChC,6BAA6B;wBAC7B,4BAA4B;wBAC5B,mBAAmB;wBACnB,iCAAiC;qBAClC,EAAA,SAAA,EACU;wBACT,2BAA2B;AAC3B,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,+BAAiC;AAC7C,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,s7FAAA,EAAA,MAAA,EAAA,CAAA,60DAAA,CAAA,EAAA;4FAUwD,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE7FjE;AAaA;AAEA;MAyGa,mCAAmC,CAAA;AAvGhD,IAAA,WAAA,GAAA;AAwGE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAA4B;AACjD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAgB,IAAI,iFAAC;QACvC,IAAA,CAAA,UAAU,GAAG,MAAM,EAA4B;AAEtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,IAAI,+EAAC;AAwBjC,IAAA;IAtBC,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC1C;IAEA,WAAW,GAAA;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ;QACrC,OAAO,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;IAC1C;IAEA,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;IAC7C;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC;IACF;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC;8GA5BW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,66BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA4DU,mCAAmC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAvG/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,UAAA,EAC/B,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAA,mCAAA,CAAqC,EAAA,QAAA,EACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,66BAAA,CAAA,EAAA;;;AC5DH;AAcA;AAEA;AAEA,SAAS,aAAa,GAAA;IACpB,OAAO;AACL,QAAA;AACE,YAAA,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE,CAAC,YAAY,CAAC;AAC3B,YAAA,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC1B,YAAA,aAAa,EAAE,MAAM,sBAAsB;AAC3C,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,aAAa,EAAE,MAAM,+BAA+B;AACpD,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACtB,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AACH;AAEA;AAEA;MA8Ba,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAzB,yBAAyB,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,SAAA,EAxBzB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,QAAQ,EAAE,wBAAwB;AAClC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,kCAAkC;AAC3C,gBAAA,QAAQ,EAAE,+BAA+B;AACzC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;YACD,mBAAmB,CAAC,iBAAiB,EAAE,MACrC,OAAO,gEAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,+BAA+B,CAAC,CACvE;YACD,mBAAmB,CAAC,+BAA+B,EAAE,MACnD,OAAO,oEAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,CAC9E;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA;AACF,SAAA,EAAA,CAAA,CAAA;;2FAEU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA5BrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,QAAQ,EAAE,wBAAwB;AAClC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,kCAAkC;AAC3C,4BAAA,QAAQ,EAAE,+BAA+B;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;wBACD,mBAAmB,CAAC,iBAAiB,EAAE,MACrC,OAAO,gEAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,+BAA+B,CAAC,CACvE;wBACD,mBAAmB,CAAC,+BAA+B,EAAE,MACnD,OAAO,oEAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,CAC9E;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,aAAa;AAC1B,yBAAA;AACF,qBAAA;AACF,iBAAA;;;ACnED;;AAEG;;;;"}
|