@acorex/modules 21.0.0-next.67 → 21.0.0-next.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-DHM3xrMh.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-IHgQ8RVH.mjs} +91 -38
  2. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-IHgQ8RVH.mjs.map +1 -0
  3. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DLO1sfD4.mjs → acorex-modules-assessment-management-assessment-case.entity-B95yBXgi.mjs} +2 -2
  4. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DLO1sfD4.mjs.map → acorex-modules-assessment-management-assessment-case.entity-B95yBXgi.mjs.map} +1 -1
  5. package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-CDAdDXDl.mjs → acorex-modules-assessment-management-assessment-session-answers-view.util-Jhy94fgV.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-CDAdDXDl.mjs.map → acorex-modules-assessment-management-assessment-session-answers-view.util-Jhy94fgV.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-FDgQPy0O.mjs → acorex-modules-assessment-management-assessment-session.entity-DBhBxqh1.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-FDgQPy0O.mjs.map → acorex-modules-assessment-management-assessment-session.entity-DBhBxqh1.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-CfcHl3L_.mjs → acorex-modules-assessment-management-fill-assessment-session.command-nkFpnKE2.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-CfcHl3L_.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-nkFpnKE2.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-DsQ_LTMn.mjs → acorex-modules-assessment-management-preview-question.command-B29oj3WB.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-DsQ_LTMn.mjs.map → acorex-modules-assessment-management-preview-question.command-B29oj3WB.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BKxRn8Ha.mjs → acorex-modules-assessment-management-preview-questionnaire.command-Sd4gRHo5.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BKxRn8Ha.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-Sd4gRHo5.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-Dxhk9mD4.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BCtQO_j7.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-Dxhk9mD4.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BCtQO_j7.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-6H5NiAwi.mjs → acorex-modules-assessment-management-question-bank-item.entity-RLIfWCzq.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-6H5NiAwi.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-RLIfWCzq.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-B0ZKyWy5.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-B8LMKqVO.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-B0ZKyWy5.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-B8LMKqVO.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-BS1ohT8P.mjs → acorex-modules-assessment-management-questionnaire.entity-CZBnfCYE.mjs} +4 -2
  22. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-CZBnfCYE.mjs.map +1 -0
  23. package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-Dcopsdi4.mjs → acorex-modules-assessment-management-review-assessment-session.command-hB_LFUSE.mjs} +3 -3
  24. package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-Dcopsdi4.mjs.map → acorex-modules-assessment-management-review-assessment-session.command-hB_LFUSE.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-3UWzJPH6.mjs → acorex-modules-assessment-management-view-session-answers.command-BN-nYHha.mjs} +3 -3
  26. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-3UWzJPH6.mjs.map → acorex-modules-assessment-management-view-session-answers.command-BN-nYHha.mjs.map} +1 -1
  27. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  28. package/fesm2022/{acorex-modules-data-management-index-DdExF8qX.mjs → acorex-modules-data-management-index-DEm_BsbE.mjs} +7 -5
  29. package/fesm2022/acorex-modules-data-management-index-DEm_BsbE.mjs.map +1 -0
  30. package/fesm2022/acorex-modules-data-management.mjs +2 -2
  31. package/fesm2022/{acorex-modules-workflow-management-index-CdaVEEgn.mjs → acorex-modules-workflow-management-index-1B7oRAKX.mjs} +2 -2
  32. package/fesm2022/acorex-modules-workflow-management-index-1B7oRAKX.mjs.map +1 -0
  33. package/fesm2022/acorex-modules-workflow-management.mjs +2 -2
  34. package/package.json +2 -2
  35. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DHM3xrMh.mjs.map +0 -1
  36. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-BS1ohT8P.mjs.map +0 -1
  37. package/fesm2022/acorex-modules-data-management-index-DdExF8qX.mjs.map +0 -1
  38. package/fesm2022/acorex-modules-workflow-management-index-CdaVEEgn.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-assessment-management-view-session-answers.command-3UWzJPH6.mjs","sources":["../../../../libs/modules/assessment-management/src/lib/features/questionnaire-viewer/commands/view-session-answers.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { defaultTo, first, get, isEmpty, isString, toString } from 'lodash-es';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '../../../entities/assessment-case/assessment-case.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '../../../entities/assessment-session/assessment-session.types';\nimport { RootConfig } from '../../../const';\nimport { openAssessmentSessionAnswersView, type OpenAssessmentSessionAnswersInitialStep } from '../utils/assessment-session-answers-view.util';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\n/**\n * Input for ViewSessionAnswers command.\n */\nexport interface ViewSessionAnswersCommandInput {\n /**\n * Assessment Case ID. Required when `sessionId` is omitted; used to resolve the latest session.\n */\n caseId?: string;\n\n /**\n * Assessment Session ID to view answers for. When omitted, the latest session for `caseId` is used.\n */\n sessionId?: string;\n\n /**\n * When `results`, opens the readonly viewer on the outcome results step (requires stored session outcomes).\n */\n initialStep?: OpenAssessmentSessionAnswersInitialStep;\n}\n\n/** Entity list passes evaluated action options on `__context__.options` / row `data`. */\ntype ViewSessionAnswersCommandInvocation = ViewSessionAnswersCommandInput & {\n options?: Partial<ViewSessionAnswersCommandInput>;\n __context__?: {\n options?: Partial<ViewSessionAnswersCommandInput>;\n data?: Record<string, unknown>;\n };\n};\n\n//#endregion\n\n//#region ---- View Session Answers Command ----\n\n/**\n * Command that opens a readonly view of assessment session answers in a dialog.\n */\n@Injectable()\nexport class ViewSessionAnswersCommand implements AXPCommand<ViewSessionAnswersCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n /**\n * Returns a non-empty string or undefined.\n */\n private asNonEmptyString(value: unknown): string | undefined {\n if (isString(value) && !isEmpty(value)) {\n return value;\n }\n if (value != null && !isString(value)) {\n const normalized = toString(value).trim();\n return isEmpty(normalized) ? undefined : normalized;\n }\n return undefined;\n }\n\n /**\n * Resolves session id from root input, action options, or related-list row data.\n */\n private resolveSessionId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'sessionId'),\n get(input, 'options.sessionId'),\n get(input, '__context__.options.sessionId'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n const row = get(input, '__context__.data') as Record<string, unknown> | undefined;\n if (row && this.asNonEmptyString(get(row, 'caseId'))) {\n return this.asNonEmptyString(get(row, 'id')) ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolves case id from root input, action options, or list row data.\n */\n private resolveCaseId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'caseId'),\n get(input, 'options.caseId'),\n get(input, '__context__.options.caseId'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n const row = get(input, '__context__.data') as Record<string, unknown> | undefined;\n if (row && !this.asNonEmptyString(get(row, 'caseId'))) {\n return this.asNonEmptyString(get(row, 'id')) ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolves initial viewer step from root input or action options.\n */\n private resolveInitialStep(input: ViewSessionAnswersCommandInvocation): OpenAssessmentSessionAnswersInitialStep {\n const candidates = [\n get(input, 'initialStep'),\n get(input, 'options.initialStep'),\n get(input, '__context__.options.initialStep'),\n ];\n\n for (const candidate of candidates) {\n const normalized = this.asNonEmptyString(candidate);\n if (normalized === 'results') {\n return 'results';\n }\n }\n\n return 'answers';\n }\n\n /**\n * Loads session from related-list row data, list query, or byKey (in that order).\n */\n private async loadSession(\n sessionId: string,\n input: ViewSessionAnswersCommandInvocation,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const row = get(input, '__context__.data') as Record<string, unknown> | undefined;\n const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));\n\n if (row && rowCaseId) {\n return {\n ...(row as unknown as AXMAssessmentManagementAssessmentSessionEntityModel),\n id: sessionId,\n answers: defaultTo(get(row, 'answers') as Record<string, unknown> | undefined, {}),\n };\n }\n\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: sessionId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await sessionAccessor.byKey(sessionId), null);\n }\n\n /**\n * Loads case by id using query first, then byKey.\n */\n private async loadCase(caseId: string): Promise<AXMAssessmentManagementAssessmentCaseEntityModel | null> {\n const caseAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)\n .data<string, AXMAssessmentManagementAssessmentCaseEntityModel>();\n\n const listMatch = await caseAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await caseAccessor.byKey(caseId), null);\n }\n\n /**\n * Finds the latest session record for a case (by lastSavedAt, then createdAt).\n */\n private async findLatestSession(\n caseId: string,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n sort: [\n { field: 'lastSavedAt', dir: 'desc' },\n { field: 'createdAt', dir: 'desc' },\n ],\n filter: {\n field: 'caseId',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n return first(listMatch.items) ?? null;\n }\n\n async execute(input: ViewSessionAnswersCommandInvocation): Promise<AXPExecuteCommandResult<void>> {\n try {\n const sessionId = this.resolveSessionId(input);\n const caseId = this.resolveCaseId(input);\n\n if (!sessionId && !caseId) {\n return {\n success: false,\n message: {\n text: 'Assessment case ID or session ID is required',\n },\n };\n }\n\n let session: AXMAssessmentManagementAssessmentSessionEntityModel | null = null;\n let assessmentCase: AXMAssessmentManagementAssessmentCaseEntityModel | null = null;\n\n if (sessionId) {\n session = await this.loadSession(sessionId, input);\n if (!session) {\n return {\n success: false,\n message: {\n text: `Assessment session with ID ${sessionId} not found`,\n },\n };\n }\n\n const resolvedCaseId = this.asNonEmptyString(get(session, 'caseId')) ?? caseId;\n if (!resolvedCaseId) {\n return {\n success: false,\n message: {\n text: 'Assessment session is missing caseId',\n },\n };\n }\n\n assessmentCase = await this.loadCase(resolvedCaseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${resolvedCaseId} not found`,\n },\n };\n }\n } else if (caseId) {\n assessmentCase = await this.loadCase(caseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${caseId} not found`,\n },\n };\n }\n\n session = await this.findLatestSession(caseId);\n if (!session) {\n const messageKey = '@assessment-management:cases.actions.view-last-session-answers.no-session';\n const messageText =\n (await this.translationService.translateAsync(messageKey)) ||\n 'No assessment session found for this case';\n return {\n success: false,\n message: {\n text: messageText,\n },\n };\n }\n }\n\n if (!session || !assessmentCase) {\n return {\n success: false,\n message: {\n text: 'Unable to resolve assessment session answers',\n },\n };\n }\n\n const initialStep = this.resolveInitialStep(input);\n if (initialStep === 'results' && isEmpty(get(session, 'outcomes'))) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.view-outcomes.empty',\n ),\n },\n };\n }\n\n await openAssessmentSessionAnswersView(\n {\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n translationService: this.translationService,\n },\n session,\n assessmentCase,\n { initialStep },\n );\n\n return {\n success: true,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n success: false,\n message: {\n text: `Error viewing session answers: ${message}`,\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-assessment-management-view-session-answers.command-BN-nYHha.mjs","sources":["../../../../libs/modules/assessment-management/src/lib/features/questionnaire-viewer/commands/view-session-answers.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { defaultTo, first, get, isEmpty, isString, toString } from 'lodash-es';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '../../../entities/assessment-case/assessment-case.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '../../../entities/assessment-session/assessment-session.types';\nimport { RootConfig } from '../../../const';\nimport { openAssessmentSessionAnswersView, type OpenAssessmentSessionAnswersInitialStep } from '../utils/assessment-session-answers-view.util';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\n/**\n * Input for ViewSessionAnswers command.\n */\nexport interface ViewSessionAnswersCommandInput {\n /**\n * Assessment Case ID. Required when `sessionId` is omitted; used to resolve the latest session.\n */\n caseId?: string;\n\n /**\n * Assessment Session ID to view answers for. When omitted, the latest session for `caseId` is used.\n */\n sessionId?: string;\n\n /**\n * When `results`, opens the readonly viewer on the outcome results step (requires stored session outcomes).\n */\n initialStep?: OpenAssessmentSessionAnswersInitialStep;\n}\n\n/** Entity list passes evaluated action options on `__context__.options` / row `data`. */\ntype ViewSessionAnswersCommandInvocation = ViewSessionAnswersCommandInput & {\n options?: Partial<ViewSessionAnswersCommandInput>;\n __context__?: {\n options?: Partial<ViewSessionAnswersCommandInput>;\n data?: Record<string, unknown>;\n };\n};\n\n//#endregion\n\n//#region ---- View Session Answers Command ----\n\n/**\n * Command that opens a readonly view of assessment session answers in a dialog.\n */\n@Injectable()\nexport class ViewSessionAnswersCommand implements AXPCommand<ViewSessionAnswersCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n /**\n * Returns a non-empty string or undefined.\n */\n private asNonEmptyString(value: unknown): string | undefined {\n if (isString(value) && !isEmpty(value)) {\n return value;\n }\n if (value != null && !isString(value)) {\n const normalized = toString(value).trim();\n return isEmpty(normalized) ? undefined : normalized;\n }\n return undefined;\n }\n\n /**\n * Resolves session id from root input, action options, or related-list row data.\n */\n private resolveSessionId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'sessionId'),\n get(input, 'options.sessionId'),\n get(input, '__context__.options.sessionId'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n const row = get(input, '__context__.data') as Record<string, unknown> | undefined;\n if (row && this.asNonEmptyString(get(row, 'caseId'))) {\n return this.asNonEmptyString(get(row, 'id')) ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolves case id from root input, action options, or list row data.\n */\n private resolveCaseId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'caseId'),\n get(input, 'options.caseId'),\n get(input, '__context__.options.caseId'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n const row = get(input, '__context__.data') as Record<string, unknown> | undefined;\n if (row && !this.asNonEmptyString(get(row, 'caseId'))) {\n return this.asNonEmptyString(get(row, 'id')) ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolves initial viewer step from root input or action options.\n */\n private resolveInitialStep(input: ViewSessionAnswersCommandInvocation): OpenAssessmentSessionAnswersInitialStep {\n const candidates = [\n get(input, 'initialStep'),\n get(input, 'options.initialStep'),\n get(input, '__context__.options.initialStep'),\n ];\n\n for (const candidate of candidates) {\n const normalized = this.asNonEmptyString(candidate);\n if (normalized === 'results') {\n return 'results';\n }\n }\n\n return 'answers';\n }\n\n /**\n * Loads session from related-list row data, list query, or byKey (in that order).\n */\n private async loadSession(\n sessionId: string,\n input: ViewSessionAnswersCommandInvocation,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const row = get(input, '__context__.data') as Record<string, unknown> | undefined;\n const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));\n\n if (row && rowCaseId) {\n return {\n ...(row as unknown as AXMAssessmentManagementAssessmentSessionEntityModel),\n id: sessionId,\n answers: defaultTo(get(row, 'answers') as Record<string, unknown> | undefined, {}),\n };\n }\n\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: sessionId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await sessionAccessor.byKey(sessionId), null);\n }\n\n /**\n * Loads case by id using query first, then byKey.\n */\n private async loadCase(caseId: string): Promise<AXMAssessmentManagementAssessmentCaseEntityModel | null> {\n const caseAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)\n .data<string, AXMAssessmentManagementAssessmentCaseEntityModel>();\n\n const listMatch = await caseAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await caseAccessor.byKey(caseId), null);\n }\n\n /**\n * Finds the latest session record for a case (by lastSavedAt, then createdAt).\n */\n private async findLatestSession(\n caseId: string,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n sort: [\n { field: 'lastSavedAt', dir: 'desc' },\n { field: 'createdAt', dir: 'desc' },\n ],\n filter: {\n field: 'caseId',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n return first(listMatch.items) ?? null;\n }\n\n async execute(input: ViewSessionAnswersCommandInvocation): Promise<AXPExecuteCommandResult<void>> {\n try {\n const sessionId = this.resolveSessionId(input);\n const caseId = this.resolveCaseId(input);\n\n if (!sessionId && !caseId) {\n return {\n success: false,\n message: {\n text: 'Assessment case ID or session ID is required',\n },\n };\n }\n\n let session: AXMAssessmentManagementAssessmentSessionEntityModel | null = null;\n let assessmentCase: AXMAssessmentManagementAssessmentCaseEntityModel | null = null;\n\n if (sessionId) {\n session = await this.loadSession(sessionId, input);\n if (!session) {\n return {\n success: false,\n message: {\n text: `Assessment session with ID ${sessionId} not found`,\n },\n };\n }\n\n const resolvedCaseId = this.asNonEmptyString(get(session, 'caseId')) ?? caseId;\n if (!resolvedCaseId) {\n return {\n success: false,\n message: {\n text: 'Assessment session is missing caseId',\n },\n };\n }\n\n assessmentCase = await this.loadCase(resolvedCaseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${resolvedCaseId} not found`,\n },\n };\n }\n } else if (caseId) {\n assessmentCase = await this.loadCase(caseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${caseId} not found`,\n },\n };\n }\n\n session = await this.findLatestSession(caseId);\n if (!session) {\n const messageKey = '@assessment-management:cases.actions.view-last-session-answers.no-session';\n const messageText =\n (await this.translationService.translateAsync(messageKey)) ||\n 'No assessment session found for this case';\n return {\n success: false,\n message: {\n text: messageText,\n },\n };\n }\n }\n\n if (!session || !assessmentCase) {\n return {\n success: false,\n message: {\n text: 'Unable to resolve assessment session answers',\n },\n };\n }\n\n const initialStep = this.resolveInitialStep(input);\n if (initialStep === 'results' && isEmpty(get(session, 'outcomes'))) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.view-outcomes.empty',\n ),\n },\n };\n }\n\n await openAssessmentSessionAnswersView(\n {\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n translationService: this.translationService,\n },\n session,\n assessmentCase,\n { initialStep },\n );\n\n return {\n success: true,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n success: false,\n message: {\n text: `Error viewing session answers: ${message}`,\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { f as AXMAssessmentManagementEntityProvider, g as AXMAssessmentManagementFeatureDefinitionProvider, h as AXMAssessmentManagementFeatureKeys, i as AXMAssessmentManagementMenuProvider, j as AXMAssessmentManagementModule, k as AXMAssessmentManagementPermissionDefinitionProvider, l as AXMAssessmentManagementPermissionKeys, m as AXMAssessmentManagementSearchCommandProvider, o as AXMQuestionnaireViewerPageComponent, A as AXMQuestionnaireViewerService, q as AXMQuestionnaireViewerStandalonePageComponent, u as AXPAssessmentManagementMenuKeys, D as DEFAULT_POST_QUESTIONNAIRE_CONFIG, v as DEFAULT_PRE_QUESTIONNAIRE_CONFIG, w as DEFAULT_QUESTIONNAIRE_ENTITY_DISPLAY, x as DEFAULT_QUESTIONNAIRE_OUTCOMES, y as DEFAULT_QUESTION_COMMENT_CONFIG, z as DEFAULT_QUESTION_HINT_CONFIG, R as RootConfig, B as diffQuestionCommentOverride, C as diffQuestionHintOverride, E as findDuplicateOutcomeNames, F as flattenQuestionnaireOutcomeItems, G as getQuestionAnswerCommentStoragePath, H as isQuestionnaireOutcomeDisplayColorHex, I as matchesQuestionnaireOutcomeDisplayRule, J as mergeQuestionCommentConfig, K as mergeQuestionHintForViewer, n as normalizeCompletionMode, L as normalizeQuestionCommentConfig, M as normalizeQuestionHintConfig, N as normalizeQuestionHintFromEntityRow, O as normalizeQuestionHintMode, P as normalizeQuestionnaireOutcomeDisplayRules, S as normalizeQuestionnaireOutcomesValue, T as normalizeValidationStrategy, U as normalizeViewMode, V as parseQuestionHintPartialFromRecord, W as parseQuestionnaireOutcomeDisplayColor, X as readHintFieldsFromRecord, r as resolveWidgetNodeFromMetaDataDefinitionInterface, s as stripQuestionBankInterfaceMetadata, e as toDisplaySettings, t as toPrePostConfig } from './acorex-modules-assessment-management-acorex-modules-assessment-management-DHM3xrMh.mjs';
1
+ export { f as AXMAssessmentManagementEntityProvider, g as AXMAssessmentManagementFeatureDefinitionProvider, h as AXMAssessmentManagementFeatureKeys, i as AXMAssessmentManagementMenuProvider, j as AXMAssessmentManagementModule, k as AXMAssessmentManagementPermissionDefinitionProvider, l as AXMAssessmentManagementPermissionKeys, m as AXMAssessmentManagementSearchCommandProvider, o as AXMQuestionnaireViewerPageComponent, A as AXMQuestionnaireViewerService, q as AXMQuestionnaireViewerStandalonePageComponent, u as AXPAssessmentManagementMenuKeys, D as DEFAULT_POST_QUESTIONNAIRE_CONFIG, v as DEFAULT_PRE_QUESTIONNAIRE_CONFIG, w as DEFAULT_QUESTIONNAIRE_ENTITY_DISPLAY, x as DEFAULT_QUESTIONNAIRE_OUTCOMES, y as DEFAULT_QUESTION_COMMENT_CONFIG, z as DEFAULT_QUESTION_HINT_CONFIG, R as RootConfig, B as diffQuestionCommentOverride, C as diffQuestionHintOverride, E as findDuplicateOutcomeNames, F as flattenQuestionnaireOutcomeItems, G as getQuestionAnswerCommentStoragePath, H as isQuestionnaireOutcomeDisplayColorHex, I as matchesQuestionnaireOutcomeDisplayRule, J as mergeQuestionCommentConfig, K as mergeQuestionHintForViewer, n as normalizeCompletionMode, L as normalizeQuestionCommentConfig, M as normalizeQuestionHintConfig, N as normalizeQuestionHintFromEntityRow, O as normalizeQuestionHintMode, P as normalizeQuestionnaireOutcomeDisplayRules, S as normalizeQuestionnaireOutcomesValue, T as normalizeValidationStrategy, U as normalizeViewMode, V as parseQuestionHintPartialFromRecord, W as parseQuestionnaireOutcomeDisplayColor, X as readHintFieldsFromRecord, r as resolveWidgetNodeFromMetaDataDefinitionInterface, s as stripQuestionBankInterfaceMetadata, e as toDisplaySettings, t as toPrePostConfig } from './acorex-modules-assessment-management-acorex-modules-assessment-management-IHgQ8RVH.mjs';
2
2
  //# sourceMappingURL=acorex-modules-assessment-management.mjs.map
@@ -1,9 +1,9 @@
1
1
  import { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';
2
2
  import { AXPPageLayoutBaseComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
3
- import { isEqual, get } from 'lodash-es';
4
3
  import * as i0 from '@angular/core';
5
4
  import { input, viewChild, inject, signal, computed, effect, untracked, ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
6
5
  import { ActivatedRoute } from '@angular/router';
6
+ import { isEqual, get } from 'lodash-es';
7
7
  import { AXMMetaDataBuilderRecordService, AXPMetaDataBuilderGroupsComponent, META_DATA_BUILDER_PAGE_COMPONENT_KEY } from './acorex-modules-data-management.mjs';
8
8
 
9
9
  /** Command names used by the meta-data-builder page toolbar actions. */
@@ -84,8 +84,10 @@ class AXPMetaDataBuilderPageComponent extends AXPPageLayoutBaseComponent {
84
84
  this.recompute();
85
85
  }
86
86
  async getPrimaryMenuItems() {
87
- const addSectionTitle = (await this.translateService.translateAsync('@data-management:metadata-definitions.actions.add-group.title')) || 'Add section';
88
- const previewTitle = (await this.translateService.translateAsync('@data-management:metadata-definitions.actions.preview.title')) || 'Preview';
87
+ const addSectionTitle = (await this.translateService.translateAsync('@data-management:metadata-definitions.actions.add-group.title')) ||
88
+ 'Add section';
89
+ const previewTitle = (await this.translateService.translateAsync('@data-management:metadata-definitions.actions.preview.title')) ||
90
+ 'Preview';
89
91
  const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';
90
92
  const discardTitle = (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';
91
93
  return [
@@ -189,7 +191,7 @@ class AXPMetaDataBuilderPageComponent extends AXPPageLayoutBaseComponent {
189
191
  recompute() {
190
192
  super.recompute();
191
193
  const maybeLayout = this.hostPageLayout;
192
- maybeLayout.recompute?.();
194
+ maybeLayout?.recompute?.();
193
195
  }
194
196
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMetaDataBuilderPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
195
197
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.9", type: AXPMetaDataBuilderPageComponent, isStandalone: true, selector: "axp-meta-data-builder-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: true, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.axp-page-layout-base": "true" } }, providers: [
@@ -255,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
255
257
  }] });
256
258
 
257
259
  export { AXMMetaDataBuilderPageComponentProvider, AXPMetaDataBuilderPageComponent, META_DATA_BUILDER_ADD_SECTION_COMMAND, META_DATA_BUILDER_DISCARD_COMMAND, META_DATA_BUILDER_PREVIEW_COMMAND, META_DATA_BUILDER_SAVE_COMMAND };
258
- //# sourceMappingURL=acorex-modules-data-management-index-DdExF8qX.mjs.map
260
+ //# sourceMappingURL=acorex-modules-data-management-index-DEm_BsbE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-data-management-index-DEm_BsbE.mjs","sources":["../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-page/meta-data-builder-page.commands.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-page/meta-data-builder-page.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-page/meta-data-builder-page-component.provider.ts"],"sourcesContent":["/** Command names used by the meta-data-builder page toolbar actions. */\nexport const META_DATA_BUILDER_ADD_SECTION_COMMAND = 'MetaDataBuilder:AddSection';\nexport const META_DATA_BUILDER_PREVIEW_COMMAND = 'MetaDataBuilder:Preview';\nexport const META_DATA_BUILDER_SAVE_COMMAND = 'MetaDataBuilder:Save';\nexport const META_DATA_BUILDER_DISCARD_COMMAND = 'MetaDataBuilder:Discard';\n","import { AXPEntity } from '@acorex/platform/common';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport type { AXPLayoutDetailsViewAction } from '@acorex/platform/layout/views';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { get, isEqual } from 'lodash-es';\nimport { AXPMetaDataBuilderGroupsComponent } from '../meta-data-builder-groups.component';\nimport { AXMMetaDataBuilderRecordService } from '../meta-data-builder-record.service';\nimport type { AXMMetaDataBuilderValue } from '../meta-data-builder.types';\nimport {\n META_DATA_BUILDER_ADD_SECTION_COMMAND,\n META_DATA_BUILDER_DISCARD_COMMAND,\n META_DATA_BUILDER_PREVIEW_COMMAND,\n META_DATA_BUILDER_SAVE_COMMAND,\n} from './meta-data-builder-page.commands';\n\n/**\n * Page component that renders the meta-data builder with hideHeaderActions,\n * and exposes Add section, Preview, Save, and Discard as page action commands.\n */\n@Component({\n selector: 'axp-meta-data-builder-page',\n standalone: true,\n imports: [AXPMetaDataBuilderGroupsComponent],\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPMetaDataBuilderPageComponent,\n },\n ],\n template: `\n <axp-meta-data-builder-groups\n #groupsRef\n [value]=\"committedValue()\"\n [options]=\"groupsOptions()\"\n (valueChange)=\"onValueChange($event)\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.axp-page-layout-base]': 'true',\n },\n})\nexport class AXPMetaDataBuilderPageComponent extends AXPPageLayoutBaseComponent {\n rootContext = input.required<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n protected groupsRef = viewChild<AXPMetaDataBuilderGroupsComponent>('groupsRef');\n\n private route = inject(ActivatedRoute);\n private entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private recordService = inject(AXMMetaDataBuilderRecordService);\n private hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n private entityDef = signal<AXPEntity | null>(null);\n\n private baselineValue = signal<AXMMetaDataBuilderValue | null | undefined>(null);\n protected committedValue = signal<AXMMetaDataBuilderValue | null | undefined>(null);\n\n /** True when committed meta-data differs from last saved / loaded baseline (same pattern as questionnaire questions page). */\n protected isDirty = computed(() => {\n const committed = this.committedValue();\n const baseline = this.baselineValue();\n return !isEqual(committed ?? null, baseline ?? null);\n });\n\n constructor() {\n super();\n effect((onCleanup) => {\n const moduleName = this.route.snapshot.parent?.paramMap.get('module');\n const entityName = this.route.snapshot.paramMap.get('entity');\n if (!moduleName || !entityName) {\n this.entityDef.set(null);\n return;\n }\n let cancelled = false;\n this.entityRegistry.resolve(moduleName, entityName).then((entity) => {\n if (!cancelled) this.entityDef.set(entity);\n });\n onCleanup(() => {\n cancelled = true;\n });\n });\n }\n\n protected context = computed(() => this.rootContext() ?? {});\n\n protected fieldName = computed(() => {\n const config = this.pageConfig();\n return config && typeof (config as { field?: string }).field === 'string'\n ? (config as { field: string }).field\n : 'metaDataList';\n });\n\n protected entityKey = computed(() => {\n const moduleName = this.route.snapshot.parent?.paramMap.get('module');\n const entityName = this.route.snapshot.paramMap.get('entity');\n return moduleName && entityName ? `${moduleName}.${entityName}` : '';\n });\n\n protected recordId = computed(() => {\n const ctx = this.context();\n const id = get(ctx, 'id');\n return id != null ? String(id) : '';\n });\n\n #syncFromContext = effect(() => {\n const ctx = this.context();\n const field = this.fieldName();\n const value = field ? (get(ctx, field) as AXMMetaDataBuilderValue) : undefined;\n this.baselineValue.set(value ?? null);\n this.committedValue.set(value ?? null);\n untracked(() => this.recompute());\n });\n\n protected groupsOptions = computed(() => ({ hideHeaderActions: true }));\n\n protected onValueChange(value: AXMMetaDataBuilderValue): void {\n this.committedValue.set(value);\n this.recompute();\n }\n\n override async getPrimaryMenuItems(): Promise<AXPLayoutDetailsViewAction[]> {\n const addSectionTitle =\n (await this.translateService.translateAsync('@data-management:metadata-definitions.actions.add-group.title')) ||\n 'Add section';\n const previewTitle =\n (await this.translateService.translateAsync('@data-management:metadata-definitions.actions.preview.title')) ||\n 'Preview';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n const discardTitle = (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n\n return [\n {\n title: addSectionTitle,\n icon: 'fa-light fa-layer-group',\n zone: 'header',\n priority: 'primary',\n color: 'primary',\n command: { name: META_DATA_BUILDER_ADD_SECTION_COMMAND, options: {} },\n },\n {\n title: previewTitle,\n icon: 'fa-light fa-eye',\n zone: 'header',\n priority: 'primary',\n color: 'default',\n command: { name: META_DATA_BUILDER_PREVIEW_COMMAND, options: {} },\n },\n {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: { name: META_DATA_BUILDER_DISCARD_COMMAND, options: {} },\n },\n {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: { name: META_DATA_BUILDER_SAVE_COMMAND, options: {} },\n },\n ];\n }\n\n override async execute(command: { name: string; options?: unknown }): Promise<void> {\n const groups = this.groupsRef();\n if (command.name === META_DATA_BUILDER_ADD_SECTION_COMMAND) {\n await groups?.addSection();\n return;\n }\n if (command.name === META_DATA_BUILDER_PREVIEW_COMMAND) {\n await groups?.handlePreviewClick();\n return;\n }\n if (command.name === META_DATA_BUILDER_SAVE_COMMAND) {\n await this.handleSave();\n return;\n }\n if (command.name === META_DATA_BUILDER_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n }\n\n private async handleSave(): Promise<void> {\n const entity = this.entityKey();\n const id = this.recordId();\n const field = this.fieldName();\n const value = this.committedValue();\n if (!entity || !id || !field) {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.error.title'),\n content: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n });\n return;\n }\n try {\n await this.recordService.updateRecord(entity, id, { [field]: value ?? { groups: [] } });\n const saved = value ?? { groups: [] };\n this.baselineValue.set(saved);\n this.committedValue.set(saved);\n this.recompute();\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translateService.translateAsync('@general:messages.generic.success.description'),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n } catch {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.error.title'),\n content: await this.translateService.translateAsync('@general:messages.entity.update-failed'),\n });\n }\n }\n\n private handleDiscard(): void {\n const baseline = this.baselineValue();\n this.committedValue.set(baseline ?? null);\n this.recompute();\n }\n\n protected override recompute(): void {\n super.recompute();\n const maybeLayout = this.hostPageLayout as unknown as { recompute?: () => void };\n maybeLayout?.recompute?.();\n }\n}\n","import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { META_DATA_BUILDER_PAGE_COMPONENT_KEY } from '../meta-data-builder.plugin';\n\n@Injectable()\nexport class AXMMetaDataBuilderPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: META_DATA_BUILDER_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./meta-data-builder-page.component').then((m) => m.AXPMetaDataBuilderPageComponent),\n },\n ];\n }\n}\n"],"names":[],"mappings":"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"}
@@ -10837,7 +10837,7 @@ class AXMDataManagementModule {
10837
10837
  useClass: AXMDataManagementWidgetsProvider,
10838
10838
  multi: true,
10839
10839
  },
10840
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-data-management-index-DdExF8qX.mjs').then((m) => m.AXMMetaDataBuilderPageComponentProvider)),
10840
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-data-management-index-DEm_BsbE.mjs').then((m) => m.AXMMetaDataBuilderPageComponentProvider)),
10841
10841
  ], imports: [AXPWidgetCoreModule,
10842
10842
  // Entity Modules
10843
10843
  AXMQueryEntityModule,
@@ -10941,7 +10941,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
10941
10941
  useClass: AXMDataManagementWidgetsProvider,
10942
10942
  multi: true,
10943
10943
  },
10944
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-data-management-index-DdExF8qX.mjs').then((m) => m.AXMMetaDataBuilderPageComponentProvider)),
10944
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-data-management-index-DEm_BsbE.mjs').then((m) => m.AXMMetaDataBuilderPageComponentProvider)),
10945
10945
  ]
10946
10946
  }]
10947
10947
  }] });
@@ -1251,7 +1251,7 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
1251
1251
  recompute() {
1252
1252
  super.recompute();
1253
1253
  const maybeLayout = this.hostPageLayout;
1254
- maybeLayout.recompute?.();
1254
+ maybeLayout?.recompute?.();
1255
1255
  }
1256
1256
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1257
1257
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMWorkflowDefinitionActivitiesPageComponent, isStandalone: true, selector: "axm-workflow-definition-activities-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: false, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block; width: 100%; height: 100%;" }, providers: [{ provide: AXPPageLayoutBase, useExisting: AXMWorkflowDefinitionActivitiesPageComponent }], viewQueries: [{ propertyName: "propertyViewerRef", first: true, predicate: AXPPropertyViewerComponent, descendants: true, isSignal: true }, { propertyName: "workflowDesignerRef", first: true, predicate: AXPWorkflowDesignerComponent, descendants: true, isSignal: true }, { propertyName: "contextMenu", first: true, predicate: AXContextMenuComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- <axp-page-toolbar>\n <axp-layout-suffix>\n <div class=\"axm-workflow-definition-activities__toolbar-group\">\n <ax-button>\n <ax-icon icon=\"fa-light fa-sliders\"></ax-icon>\n <ax-dropdown-panel>\n <div class=\"axm-workflow-definition-activities__appearance-panel\">\n <label class=\"axm-workflow-definition-activities__pattern-label\" for=\"background-pattern-select\"\n >Background Pattern</label\n >\n <select\n id=\"background-pattern-select\"\n class=\"axm-workflow-definition-activities__pattern-select\"\n [value]=\"backgroundPattern()\"\n (change)=\"onBackgroundPatternChange($event)\"\n >\n <option value=\"dots\">Dots</option>\n <option value=\"line\">Lines</option>\n </select>\n </div>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button (onClick)=\"toggleFullscreen()\">\n <ax-icon>\n <i class=\"fa-solid\" [class]=\"isFullscreen() ? 'fa-compress' : 'fa-expand'\"></i>\n </ax-icon>\n </ax-button>\n <ax-button (onClick)=\"toggleInfoPanel()\">\n <ax-icon [icon]=\"isInfoPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info'\"></ax-icon>\n </ax-button>\n </div>\n </axp-layout-suffix>\n </axp-page-toolbar> -->\n\n<div\n class=\"axm-workflow-definition-activities\"\n [class.axm-workflow-definition-activities--with-palette]=\"isPaletteOpen()\"\n [class.axm-workflow-definition-activities--with-info]=\"isInfoPanelOpen()\"\n>\n @if (isPaletteOpen()) {\n <aside class=\"axm-workflow-definition-activities__palette\">\n <div class=\"axm-workflow-definition-activities__palette-head\">\n <div class=\"axm-workflow-definition-activities__palette-head-row\">\n <h3 class=\"axm-workflow-definition-activities__title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step'\n | translate\n | async) ?? 'Activities'\n }}\n </h3>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"closePalette()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <p class=\"axm-workflow-definition-activities__palette-sub\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.hint'\n | translate\n | async) ?? ''\n }}\n </p>\n <ax-search-box\n class=\"axm-workflow-definition-activities__palette-search ax-sm\"\n [value]=\"paletteSearchTerm()\"\n (onValueChanged)=\"onPaletteSearchChange($event)\"\n [placeholder]=\"'@general:search.title' | translate | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"axm-workflow-definition-activities__palette-list\">\n <div class=\"axm-workflow-definition-activities__accordion-group\" axAccordionGroup [accordion]=\"false\">\n @for (group of filteredPaletteGroups(); track group.id) {\n @if (group.items.length > 0) {\n <section\n class=\"axm-workflow-definition-activities__accordion-item\"\n axAccordionItem\n [isCollapsed]=\"false\"\n #acc=\"axAccordionItem\"\n >\n <header\n class=\"axm-workflow-definition-activities__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n >\n <div class=\"axm-workflow-definition-activities__accordion-header-main\">\n <span class=\"axm-workflow-definition-activities__accordion-title\">{{ group.title }}</span>\n </div>\n <span class=\"axm-workflow-definition-activities__accordion-chevron\">\n <i [class]=\"acc.isCollapsed() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-up'\"></i>\n </span>\n </header>\n <div class=\"axm-workflow-definition-activities__accordion-content\" axAccordionItemContent>\n @for (item of group.items; track item.type) {\n <button\n type=\"button\"\n class=\"axm-workflow-definition-activities__palette-item\"\n [axpWorkflowPaletteItem]=\"item\"\n >\n <span class=\"axm-workflow-definition-activities__palette-item-icon\" aria-hidden=\"true\">\n <i [class]=\"'fa-light ' + item.icon\"></i>\n </span>\n <span class=\"axm-workflow-definition-activities__palette-item-body\">\n <span class=\"axm-workflow-definition-activities__palette-item-title\">{{ item.title }}</span>\n <span class=\"axm-workflow-definition-activities__palette-item-meta\">{{\n item.description\n }}</span>\n </span>\n </button>\n }\n </div>\n </section>\n }\n }\n </div>\n </div>\n </aside>\n }\n\n <div class=\"axm-workflow-definition-activities__main\">\n <section class=\"axm-workflow-definition-activities__canvas\" (contextmenu)=\"onDesignerSurfaceContextMenu($event)\">\n <axp-workflow-designer\n [model]=\"designerModel()\"\n [backgroundPattern]=\"backgroundPattern()\"\n (zoomChange)=\"onDesignerZoomChange($event)\"\n (modelChange)=\"onDesignerModelChange($event)\"\n (activationChange)=\"onDesignerActivationChange($event)\"\n (nodeContextMenu)=\"onDesignerNodeContextMenu($event)\"\n ></axp-workflow-designer>\n <ax-context-menu\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleWorkflowContextMenuItemClick($event)\"\n />\n <axp-layout-floating-zoom-bar\n [zoomLevel]=\"zoomLevel()\"\n (zoomIn)=\"zoomIn()\"\n (zoomOut)=\"zoomOut()\"\n (zoomReset)=\"zoomReset()\"\n />\n </section>\n </div>\n @if (isInfoPanelOpen()) {\n <axp-layout-side-detail-panel\n class=\"axm-workflow-definition-activities__info ax-sticky ax-top-0 ax-z-10 ax-max-h-full ax-flex-none\"\n [header]=\"workflowDetailPanelHeader()\"\n [rows]=\"workflowDetailPanelRows()\"\n [emptyState]=\"workflowDetailPanelEmptyState()\"\n (panelClose)=\"toggleInfoPanel()\"\n />\n }\n</div>\n", styles: [".axm-workflow-definition-activities{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;height:100%;gap:.75rem}.axm-workflow-definition-activities--with-palette{grid-template-columns:minmax(260px,300px) minmax(0,1fr)}.axm-workflow-definition-activities--with-info:not(.axm-workflow-definition-activities--with-palette){grid-template-columns:minmax(0,1fr) minmax(260px,320px)}.axm-workflow-definition-activities--with-palette.axm-workflow-definition-activities--with-info{grid-template-columns:minmax(260px,300px) minmax(0,1fr) minmax(260px,320px)}.axm-workflow-definition-activities--fullscreen{position:fixed;inset:0;z-index:400;height:100vh;background:rgb(var(--ax-sys-color-lightest-surface));padding:.75rem}.axm-workflow-definition-activities__palette{display:flex;flex-direction:column;gap:.75rem;min-height:0;padding:.5rem;border-radius:16px}.axm-workflow-definition-activities__palette-head{display:flex;flex-direction:column;gap:.5rem}.axm-workflow-definition-activities__palette-head-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.axm-workflow-definition-activities__palette-sub{margin:0;font-size:.75rem;line-height:1.35;color:var(--ax-sys-color-on-light-surface)}.axm-workflow-definition-activities__palette-search{width:100%}.axm-workflow-definition-activities__main{display:flex;flex-direction:column;gap:.75rem;min-height:0;min-width:0}.axm-workflow-definition-activities__toolbar{display:flex;justify-content:flex-end}.axm-workflow-definition-activities__toolbar-group{display:inline-flex;align-items:center;gap:.5rem}.axm-workflow-definition-activities__appearance-panel{display:flex;flex-direction:column;gap:.75rem;min-width:220px;padding:.35rem}.axm-workflow-definition-activities__zoom-actions{display:flex;align-items:center;gap:.4rem}.axm-workflow-definition-activities__pattern-label{font-size:.75rem;color:var(--ax-sys-color-on-light-surface)}.axm-workflow-definition-activities__pattern-select{border-radius:8px;min-height:34px;border:1px solid rgb(var(--ax-sys-color-border-surface));background:rgb(var(--ax-sys-color-surface));color:var(--ax-sys-color-on-surface);padding:0 .5rem}.axm-workflow-definition-activities__canvas{position:relative;flex:1 1 auto;min-height:min(70vh,720px);border-radius:16px;overflow:hidden;background:var(--ax-sys-color-surface)}.axm-workflow-definition-activities__canvas axp-workflow-designer{display:block;width:100%;height:100%;min-height:inherit}.axm-workflow-definition-activities__title{margin:0;font-size:.9375rem;font-weight:700;letter-spacing:-.01em;color:var(--ax-sys-color-on-surface)}.axm-workflow-definition-activities__palette-list{display:flex;flex-direction:column;gap:.45rem;overflow:auto;padding-inline-end:2px;margin-inline-end:-2px}.axm-workflow-definition-activities__accordion-group{display:flex;flex-direction:column;gap:.45rem}.axm-workflow-definition-activities__accordion-item{border-radius:12px;overflow:hidden;transition:border-color .15s ease}.axm-workflow-definition-activities__accordion-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.62rem .7rem;cursor:pointer;-webkit-user-select:none;user-select:none}.axm-workflow-definition-activities__accordion-header-main{display:inline-flex;align-items:center;gap:.45rem;min-width:0}.axm-workflow-definition-activities__accordion-title{font-size:.8125rem;font-weight:700;line-height:1.25;color:var(--ax-sys-color-on-surface)}.axm-workflow-definition-activities__accordion-content{display:flex;flex-direction:column;gap:.4rem}.axm-workflow-definition-activities__accordion-chevron{color:var(--ax-sys-color-on-light-surface);font-size:.8rem;line-height:1}.axm-workflow-definition-activities__palette-item{position:relative;display:flex;align-items:center;gap:.65rem;width:100%;padding:.4rem .55rem;border-radius:12px;color:var(--ax-sys-color-on-surface);cursor:grab;text-align:left;font:inherit;transition:border-color .15s ease}.axm-workflow-definition-activities__palette-item:hover{background-color:rgb(var(--ax-sys-color-primary-50))}.axm-workflow-definition-activities__palette-item:active{cursor:grabbing;background-color:rgb(var(--ax-sys-color-primary-100))}.axm-workflow-definition-activities__palette-item-icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;flex-shrink:0;border-radius:10px;color:rgb(var(--ax-sys-color-primary-600));font-size:1rem}.axm-workflow-definition-activities__palette-item-body{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1}.axm-workflow-definition-activities__palette-item-title{font-size:.8125rem;font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.axm-workflow-definition-activities__palette-item-meta{font-size:.6875rem;font-family:ui-monospace,monospace;color:var(--ax-sys-color-on-light-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.axm-workflow-definition-activities__palette-item-grip{flex-shrink:0;font-size:.85rem;opacity:.35;color:var(--ax-sys-color-on-light-surface)}.axm-workflow-definition-activities__info{min-height:0}@media(max-width:1100px){.axm-workflow-definition-activities{grid-template-columns:1fr;min-height:auto}.axm-workflow-definition-activities__palette{max-height:280px}.axm-workflow-definition-activities__canvas{min-height:480px}.axm-workflow-definition-activities__info{max-height:280px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXAccordionCdkModule }, { kind: "directive", type: i1.AXAccordionGroupDirective, selector: "[axAccordionGroup]", inputs: ["accordion", "activeIndex", "collapsedOnItemClick"], exportAs: ["axAccordionGroup"] }, { kind: "directive", type: i1.AXAccordionItemContentDirective, selector: "[axAccordionItemContent]", inputs: ["transition"], exportAs: ["axAccordionItemContent"] }, { kind: "directive", type: i1.AXAccordionItemHeaderDirective, selector: "[axAccordionItemHeader]", exportAs: ["axAccordionItemHeader"] }, { kind: "directive", type: i1.AXAccordionItemDirective, selector: "[axAccordionItem]", inputs: ["isCollapsed"], outputs: ["isCollapsedChange", "onClick"], exportAs: ["axAccordionItem"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i3.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "closeOnRouteChange", "items", "target"], outputs: ["onItemClick", "onOpening", "onClose"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLayoutFloatingZoomBarComponent, selector: "axp-layout-floating-zoom-bar", inputs: ["zoomLevel"], outputs: ["zoomIn", "zoomOut", "zoomReset"] }, { kind: "component", type: AXPLayoutSideDetailPanelComponent, selector: "axp-layout-side-detail-panel", inputs: ["multiSelectLabel", "header", "sections", "rows", "rowsSectionTitle", "noRowsMessage", "emptyState"], outputs: ["panelClose"] }, { kind: "component", type: AXPWorkflowDesignerComponent, selector: "axp-workflow-designer", inputs: ["model", "readonly", "gridSize", "snapToGrid", "connectionPreviewStyle", "backgroundPattern", "canConnect", "paletteItems", "showPortLabels", "nodeBodyTemplate"], outputs: ["modelChange", "zoomChange", "designerPointerDown", "designerClick", "designerDoubleClick", "nodePointerDown", "nodeClick", "nodeDoubleClick", "nodeContextMenu", "nodeDragStart", "nodeDragEnd", "portPointerDown", "linkDragStart", "linkDragMove", "linkDragEnd", "connectorClick", "connectorDoubleClick", "connectionCreated", "connectionRejected", "activationChange"] }, { kind: "directive", type: AXPWorkflowPaletteItemDragDirective, selector: "[axpWorkflowPaletteItem]", inputs: ["axpWorkflowPaletteItem", "axpWorkflowPaletteDragDisabled"], outputs: ["axpWorkflowPaletteDragStart", "axpWorkflowPaletteDragEnd"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -1285,4 +1285,4 @@ var workflowDefinitionActivitiesPage_component = /*#__PURE__*/Object.freeze({
1285
1285
  });
1286
1286
 
1287
1287
  export { AXMWorkflowDefinitionActivitiesPageComponent, AXMWorkflowDefinitionActivitiesPageComponentProvider, WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY, graphHasPersistedDesignerLayout, isDesignerLayoutArranged };
1288
- //# sourceMappingURL=acorex-modules-workflow-management-index-CdaVEEgn.mjs.map
1288
+ //# sourceMappingURL=acorex-modules-workflow-management-index-1B7oRAKX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-workflow-management-index-1B7oRAKX.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page-component.provider.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.types.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.html"],"sourcesContent":["import { AXPPageComponentDefinition, AXPPageComponentProvider } from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY } from './WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY';\n\n//#region ---- Workflow Definition Activities Page Provider ----\n\n@Injectable()\nexport class AXMWorkflowDefinitionActivitiesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-definition-activities-page.component').then(\n (m) => m.AXMWorkflowDefinitionActivitiesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Types ----\n\nimport type { AXPWorkflowActivityPaletteItem } from '@acorex/modules/platform-management';\nimport type { AXPActivityDefinition, AXPWorkflowGraph } from '@acorex/platform/workflow';\n\nexport interface AXMWorkflowActivityEditorRow {\n id: string;\n name: string;\n /** Resolved instance display title (persisted on graph activity `title`). */\n title?: string;\n inputs: Record<string, unknown>;\n extensions?: Record<string, unknown>;\n}\n\nexport interface AXMWorkflowActivitySelectItem {\n value: string;\n text: string;\n description: string;\n icon: string;\n categoryId: string;\n categoryTitle: string;\n}\n\nexport interface AXMWorkflowActivityPaletteGroup {\n id: string;\n title: string;\n items: AXPWorkflowActivityPaletteItem[];\n}\n\nexport interface AXMWorkflowActivityCatalogRow extends AXPActivityDefinition {\n id: string;\n}\n\nexport interface AXMWorkflowOutcomePortRow {\n port: string;\n label: string;\n}\n\nexport interface AXMWorkflowActivityNodeInfoRow {\n title: string;\n content: string;\n}\n\n/** Persisted coordinates for workflow designer nodes (see {@link AXPWorkflowGraph.designer}). */\nexport interface AXMWorkflowDesignerNodeLayout {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n//#endregion\n\n//#region ---- Designer layout helpers ----\n\nexport function isDesignerLayoutArranged(graph: AXPWorkflowGraph | null | undefined): boolean {\n return graph?.designer?.layoutArranged === true;\n}\n\n/** True when every activity has persisted designer node coordinates. */\nexport function graphHasPersistedDesignerLayout(graph: AXPWorkflowGraph | null | undefined): boolean {\n const activities = graph?.activities ?? [];\n if (activities.length === 0) {\n return false;\n }\n const nodes = graph?.designer?.nodes;\n if (nodes == null || Object.keys(nodes).length === 0) {\n return false;\n }\n return activities.every((a) => {\n const n = nodes[a.id];\n return n != null && typeof n.x === 'number' && typeof n.y === 'number';\n });\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXAccordionCdkModule } from '@acorex/cdk/accordion';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuItem,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n arrangeWorkflowDiagram,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n type AXPWorkflowActivityPaletteItem,\n type AXPWorkflowDesignerActivation,\n type AXPWorkflowDiagramModel,\n type AXPWorkflowNode,\n} from '@acorex/modules/platform-management';\nimport {\n AXPActionMenuItem,\n AXPDataGenerator,\n AXPExecuteCommand,\n AXPExecuteCommandResult,\n type AXPMultiLanguageString,\n type AXPProperty,\n} from '@acorex/platform/core';\nimport {\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPPropertyViewerChangedEvent,\n AXPPropertyViewerComponent,\n AXPPropertyViewerTab,\n buildPropertyViewerTabsFromProperties,\n type AXPLayoutSideDetailPanelEmptyState,\n type AXPLayoutSideDetailPanelHeader,\n type AXPLayoutSideDetailPanelRow,\n} from '@acorex/platform/layout/components';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';\nimport { mapAXPPropertyToWidgetProperty, type AXPWidgetPropertyGroup } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport {\n AXPActivityDefinitionService,\n type AXPActivityDefinition,\n type AXPActivityDefinitionCategoryRef,\n type AXPActivityDefinitionQueryResult,\n type AXPConnection,\n type AXPWorkflowActivityInstance,\n type AXPWorkflowGraph,\n} from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n NgZone,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { RootConfig } from '../../const';\nimport {\n SaveWorkflowDefinitionActivitiesInput,\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n} from '../../entities/workflow-definition/commands/save-workflow-definition-activities.command';\nimport {\n graphHasPersistedDesignerLayout,\n isDesignerLayoutArranged,\n type AXMWorkflowActivityCatalogRow,\n type AXMWorkflowActivityEditorRow,\n type AXMWorkflowActivityNodeInfoRow,\n type AXMWorkflowActivityPaletteGroup,\n type AXMWorkflowActivitySelectItem,\n type AXMWorkflowDesignerNodeLayout,\n type AXMWorkflowOutcomePortRow,\n} from './workflow-definition-activities-page.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst DEFAULT_NODE_W = 240;\nconst DEFAULT_NODE_H = 96;\nconst DESIGNER_GRID_SIZE = 20;\n/** Debounce window before persisting designer edits (drag emits many modelChange events). */\nconst AUTO_SAVE_DEBOUNCE_MS = 500;\n\nconst DISCARD_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:Discard';\nconst ADD_STEP_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:AddStep';\nconst ARRANGE_LAYOUT_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:ArrangeLayout';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_ID = 'workflow-management.activities.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_ID = 'workflow-management.activities.add-activity';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.add-activity';\n\nconst ARRANGE_LAYOUT_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.arrange-layout';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeActivityDefinitionInputs(raw: unknown): AXPProperty[] {\n if (Array.isArray(raw)) {\n return raw as AXPProperty[];\n }\n if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n return Array.isArray(parsed) ? (parsed as AXPProperty[]) : [];\n } catch {\n return [];\n }\n }\n return [];\n}\n\nfunction portKey(port: string | null | undefined): string {\n return port == null || port === '' ? 'Done' : port;\n}\n\nfunction rowFromInstance(a: AXPWorkflowActivityInstance): AXMWorkflowActivityEditorRow {\n const inputs =\n a.inputs != null && typeof a.inputs === 'object' && !Array.isArray(a.inputs)\n ? { ...(a.inputs as Record<string, unknown>) }\n : {};\n const extRaw = a.extensions;\n const extensions =\n extRaw != null && typeof extRaw === 'object' && !Array.isArray(extRaw)\n ? { ...(extRaw as Record<string, unknown>) }\n : undefined;\n return {\n id: a.id,\n name: typeof a.name === 'string' ? a.name : '',\n inputs,\n ...(extensions != null && Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n}\n\nfunction instanceFromRow(r: AXMWorkflowActivityEditorRow): AXPWorkflowActivityInstance {\n const out: AXPWorkflowActivityInstance = { id: r.id, name: r.name, inputs: { ...r.inputs } };\n if (r.extensions != null && Object.keys(r.extensions).length > 0) {\n out.extensions = { ...r.extensions };\n }\n return out;\n}\n\nfunction emptyGraph(): AXPWorkflowGraph {\n return { startActivityId: '', activities: [], connections: [] };\n}\n\nfunction graphFingerprint(g: AXPWorkflowGraph | null): unknown {\n if (g == null) {\n return null;\n }\n return {\n startActivityId: g.startActivityId,\n activities: g.activities,\n connections: g.connections,\n designer: g.designer,\n };\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-definition-activities-page',\n imports: [\n CommonModule,\n FormsModule,\n AXAccordionCdkModule,\n AXButtonModule,\n AXMenuModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSearchBoxModule,\n AXSelectBoxModule,\n AXTranslationModule,\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n ],\n host: {\n style: 'display: block; width: 100%; height: 100%;',\n },\n templateUrl: './workflow-definition-activities-page.component.html',\n styleUrl: './workflow-definition-activities-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXPPageLayoutBase, useExisting: AXMWorkflowDefinitionActivitiesPageComponent }],\n})\nexport class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly commandService = inject(AXPCommandService);\n private readonly entityService = inject(AXPEntityService);\n private readonly activityDefService = inject(AXPActivityDefinitionService);\n private readonly mlResolver = inject(AXTranslationService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- Auto-save ----\n\n private autoSaveTimer: ReturnType<typeof setTimeout> | null = null;\n private autoSaveInFlight = false;\n private autoSavePending = false;\n private suppressAutoSave = false;\n\n //#region ---- View refs ----\n\n private readonly propertyViewerRef = viewChild(AXPPropertyViewerComponent);\n private readonly workflowDesignerRef = viewChild(AXPWorkflowDesignerComponent);\n private readonly contextMenu = viewChild(AXContextMenuComponent);\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly baselineGraph = signal<AXPWorkflowGraph | null>(null);\n /** Persisted on `graph.designer.layoutArranged` after the first auto-arrange (or layout migration). */\n private readonly layoutArrangedFlag = signal(false);\n private initialLayoutArrangeInFlight = false;\n private readonly activityCatalogLoaded = signal(false);\n private readonly activityDefCache = signal<Record<string, AXPActivityDefinition>>({});\n\n protected readonly activitySelectItems = signal<AXMWorkflowActivitySelectItem[]>([]);\n protected readonly activities = signal<AXMWorkflowActivityEditorRow[]>([]);\n protected readonly connections = signal<AXPConnection[]>([]);\n protected readonly startActivityId = signal('');\n protected readonly selectedRowId = signal<string | null>(null);\n protected readonly viewerTabs = signal<AXPPropertyViewerTab[]>([]);\n protected readonly selectedActivityOutcomeRows = signal<AXMWorkflowOutcomePortRow[]>([]);\n protected readonly isDirty = signal(false);\n protected readonly backgroundPattern = signal<'line' | 'dots'>('dots');\n protected readonly zoomLevel = signal(100);\n protected readonly isFullscreen = signal(false);\n protected readonly isInfoPanelOpen = signal(false);\n protected readonly isPaletteOpen = signal(false);\n protected readonly paletteSearchTerm = signal('');\n\n /** Canvas layout keyed by activity instance id; kept in sync with designer `modelChange` and saved on `graph.designer`. */\n private readonly designerLayout = signal<Record<string, AXMWorkflowDesignerNodeLayout>>({});\n\n //#endregion\n\n //#region ---- Computed ----\n\n private readonly context = computed(() => this.rootContext() ?? {});\n\n protected readonly selectedRow = computed(() => this.activities().find((x) => x.id === this.selectedRowId()) ?? null);\n\n protected readonly startActivityItems = computed(() =>\n this.activities().map((r) => ({ value: r.id, text: this.formatActivityStepLabel(r) })),\n );\n\n protected readonly activitySelectOptions = computed<AXMWorkflowActivitySelectItem[]>(() => {\n const graphTitleByName = new Map<string, string>();\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n) {\n continue;\n }\n const ext = r.extensions;\n const dt = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (dt) {\n graphTitleByName.set(n, dt);\n }\n }\n const byValue = new Map<string, AXMWorkflowActivitySelectItem>();\n for (const x of this.activitySelectItems()) {\n byValue.set(x.value, {\n value: x.value,\n description: x.description,\n icon: x.icon,\n text: graphTitleByName.get(x.value) ?? x.text,\n categoryId: x.categoryId,\n categoryTitle: x.categoryTitle,\n });\n }\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n || byValue.has(n)) {\n continue;\n }\n byValue.set(n, {\n value: n,\n description: '',\n icon: '',\n text: graphTitleByName.get(n) ?? n,\n categoryId: 'uncategorized',\n categoryTitle: 'Uncategorized',\n });\n }\n return [...byValue.values()].sort((a, b) => a.text.localeCompare(b.text));\n });\n\n protected readonly paletteItems = computed<AXPWorkflowActivityPaletteItem[]>(() =>\n this.activitySelectOptions().map((x) => ({\n type: x.value,\n title: x.text,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n })),\n );\n\n protected readonly paletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const groupsById = new Map<string, AXMWorkflowActivityPaletteGroup>();\n for (const item of this.activitySelectOptions()) {\n const groupId = item.categoryId.trim() || 'uncategorized';\n const groupTitle = item.categoryTitle.trim() || 'Uncategorized';\n const existing = groupsById.get(groupId);\n const paletteItem: AXPWorkflowActivityPaletteItem = {\n type: item.value,\n title: item.text,\n description: item.description,\n icon: item.icon,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n };\n if (existing) {\n existing.items.push(paletteItem);\n continue;\n }\n groupsById.set(groupId, { id: groupId, title: groupTitle, items: [paletteItem] });\n }\n return [...groupsById.values()]\n .map((group) => ({\n ...group,\n items: [...group.items].sort((a, b) => a.title.localeCompare(b.title)),\n }))\n .sort((a, b) => a.title.localeCompare(b.title));\n });\n\n protected readonly filteredPaletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const searchTerm = this.paletteSearchTerm().trim().toLowerCase();\n const groups = this.paletteGroups();\n if (!searchTerm) {\n return groups;\n }\n return groups\n .map((group) => {\n const items = group.items.filter((item) => {\n const title = item.title?.toLowerCase() ?? '';\n const description = item.description?.toLowerCase() ?? '';\n return title.includes(searchTerm) || description.includes(searchTerm);\n });\n return { ...group, items };\n })\n .filter((group) => group.items.length > 0);\n });\n\n protected readonly designerModel = computed<AXPWorkflowDiagramModel>(() => {\n const rows = this.activities();\n const conns = this.connections();\n const cache = this.activityDefCache();\n const layout = this.designerLayout();\n const nodes = rows.map((r, i) => {\n const def = r.name ? cache[r.name] : undefined;\n const outcomes = this.buildOutcomeRows(r.id, r, def);\n const L = layout[r.id];\n const pos = L ? { x: L.x, y: L.y } : this.gridFallbackPosition(i);\n const size = L ? { width: L.width, height: L.height } : { width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n return {\n id: r.id,\n type: r.name,\n title: this.resolveNodeTitle(r),\n shape: 'rounded-rectangle' as const,\n size,\n position: pos,\n color: this.startActivityId() === r.id ? ('success' as const) : ('secondary' as const),\n inboundPorts: [\n { id: `${r.id}:in`, kind: 'inbound' as const, side: 'left' as const, ratio: 0.5, key: 'in', label: 'in' },\n ],\n outboundPorts: outcomes.map((o, oi, arr) => ({\n id: `${r.id}:out:${o.port}`,\n kind: 'outbound' as const,\n side: 'right' as const,\n ratio: arr.length === 1 ? 0.5 : (oi + 1) / (arr.length + 1),\n key: o.port,\n label: o.label,\n })),\n };\n });\n const outPortByKey = new Map<string, string>();\n for (const n of nodes) {\n for (const p of n.outboundPorts) {\n outPortByKey.set(`${n.id}:${portKey(p.key)}`, p.id);\n }\n }\n const connectors = conns\n .map((c, i) => {\n const sourcePortKey = portKey(c.source.port);\n const sourcePortId = outPortByKey.get(`${c.source.activtyName}:${sourcePortKey}`);\n if (!sourcePortId) {\n return null;\n }\n return {\n id: `c-${i}-${c.source.activtyName}-${c.target.activtyName}-${sourcePortKey}`,\n sourceNodeId: c.source.activtyName,\n sourcePortId,\n targetNodeId: c.target.activtyName,\n targetPortId: `${c.target.activtyName}:in`,\n };\n })\n .filter((x): x is NonNullable<typeof x> => x != null);\n return { nodes, connectors };\n });\n\n protected readonly selectedNodeInfoRows = computed<AXMWorkflowActivityNodeInfoRow[]>(() => {\n const selected = this.selectedRow();\n if (!selected) {\n return [];\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n return [\n { title: 'Title', content: this.resolveNodeTitle(selected) || '---' },\n { title: 'Type', content: selected.name || '---' },\n { title: 'Id', content: selected.id || '---' },\n { title: 'Category', content: selectOption?.categoryTitle || '---' },\n { title: 'Inputs', content: `${Object.keys(selected.inputs ?? {}).length}` },\n { title: 'Outcomes', content: `${this.selectedActivityOutcomeRows().length}` },\n ];\n });\n\n protected readonly workflowDetailPanelCopy = signal({\n panelTitle: 'Activity details',\n emptyMessage: 'Select a node to see details.',\n });\n\n protected readonly workflowDetailPanelHeader = computed((): AXPLayoutSideDetailPanelHeader | null => {\n const selected = this.selectedRow();\n if (selected == null) {\n return null;\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n const iconGlyph = selectOption?.icon?.trim();\n return {\n primaryTitle: this.resolveNodeTitle(selected) || '---',\n icon: iconGlyph ? { iconClass: `fa-light fa-lg fa-fw ${iconGlyph}` } : undefined,\n };\n });\n\n protected readonly workflowDetailPanelRows = computed((): AXPLayoutSideDetailPanelRow[] => {\n if (this.selectedRow() == null) {\n return [];\n }\n return this.selectedNodeInfoRows().map((row) => ({\n label: row.title,\n value: row.content,\n }));\n });\n\n protected readonly workflowDetailPanelEmptyState = computed((): AXPLayoutSideDetailPanelEmptyState | null => {\n if (this.selectedRow() != null) {\n return null;\n }\n const copy = this.workflowDetailPanelCopy();\n return {\n primaryTitle: copy.panelTitle,\n message: copy.emptyMessage,\n icon: { iconClass: 'fa-solid fa-lg fa-fw fa-diagram-project' },\n };\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n untracked(() => this.hydrateFromServerContext(ctx as Record<string, unknown> | undefined));\n }\n });\n effect(() => {\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n const arranged = this.layoutArrangedFlag();\n const activityCount = this.activities().length;\n if (!id || arranged || activityCount === 0) {\n return;\n }\n untracked(() => void this.maybeApplyInitialArrangedLayout());\n });\n this.destroyRef.onDestroy(() => this.clearAutoSaveTimer());\n }\n\n //#endregion\n\n //#region ---- Page chrome / commands ----\n\n // override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n // const addTitle =\n // (await this.translateService.translateAsync(\n // '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step',\n // )) || 'Add step';\n // const discardTitle = (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n // const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n // const addAction: AXPLayoutDetailsViewAction = {\n // title: addTitle,\n // icon: 'fa-light fa-plus',\n // zone: 'header',\n // priority: 'primary',\n // color: 'primary',\n // command: { name: ADD_STEP_COMMAND, options: {} },\n // };\n // const discardAction: AXPLayoutDetailsViewAction = {\n // title: discardTitle,\n // icon: 'fa-light fa-rotate-left',\n // zone: 'footer',\n // priority: 'secondary',\n // color: 'default',\n // visible: this.isDirty(),\n // command: { name: DISCARD_COMMAND, options: {} },\n // };\n // const saveAction: AXPLayoutDetailsViewAction = {\n // title: saveTitle,\n // icon: 'fa-light fa-floppy-disk',\n // zone: 'footer',\n // priority: 'primary',\n // color: 'primary',\n // visible: this.isDirty(),\n // command: { name: WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND, options: {} },\n // };\n // return [addAction, discardAction, saveAction];\n // }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const title = await this.mlResolver.translateAsync(ARRANGE_LAYOUT_ACTION_TITLE_KEY);\n return [\n {\n title,\n icon: 'fa-light fa-sitemap',\n command: { name: ARRANGE_LAYOUT_COMMAND, options: {} },\n disabled: this.activities().length === 0,\n },\n ];\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === DISCARD_COMMAND) {\n this.applyBaselineGraph();\n return;\n }\n if (command.name === ADD_STEP_COMMAND) {\n this.addStep();\n return;\n }\n if (command.name === ARRANGE_LAYOUT_COMMAND) {\n this.applyArrangedLayout();\n return;\n }\n if (command.name === WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND) {\n return this.handleSaveExecute() as unknown as Promise<void>;\n }\n }\n\n //#endregion\n\n //#region ---- Designer handlers ----\n\n protected onDesignerModelChange(model: AXPWorkflowDiagramModel): void {\n const previousNodeCount = this.activities().length;\n const oldById = new Map(this.activities().map((x) => [x.id, x]));\n const nextRows: AXMWorkflowActivityEditorRow[] = model.nodes.map((n) => {\n const prev = oldById.get(n.id);\n const title = n.title?.trim();\n const extensions = { ...(prev?.extensions ?? {}) };\n if (title) {\n extensions['displayTitle'] = title;\n } else {\n delete extensions['displayTitle'];\n }\n return {\n id: n.id,\n name: n.type?.trim() ? n.type : (prev?.name ?? ''),\n inputs: { ...(prev?.inputs ?? {}) },\n ...(Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n });\n const outgoingByPortId = new Map<string, string>();\n for (const n of model.nodes) {\n for (const p of n.outboundPorts) {\n outgoingByPortId.set(p.id, portKey(p.key));\n }\n }\n const nextConnections: AXPConnection[] = [];\n for (const c of model.connectors) {\n const pk = outgoingByPortId.get(c.sourcePortId);\n if (!pk) {\n continue;\n }\n nextConnections.push({\n source: { activtyName: c.sourceNodeId, port: pk === 'Done' ? null : pk },\n target: { activtyName: c.targetNodeId, port: null },\n });\n }\n this.activities.set(nextRows);\n this.connections.set(nextConnections);\n if (!nextRows.some((x) => x.id === this.startActivityId())) {\n this.startActivityId.set(nextRows[0]?.id ?? '');\n }\n if (!nextRows.some((x) => x.id === this.selectedRowId())) {\n this.selectedRowId.set(nextRows[0]?.id ?? null);\n }\n for (const r of nextRows) {\n void this.ensureDefinition(r.name);\n }\n this.syncDesignerLayoutFromModel(model);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n if (nextRows.length > previousNodeCount) {\n this.closePalette();\n }\n }\n\n protected onDesignerActivationChange(a: AXPWorkflowDesignerActivation | null): void {\n if (a?.kind !== 'node') {\n return;\n }\n this.selectedRowId.set(a.id);\n void this.refreshPropertyViewer();\n }\n\n //#region ---- Context Menu ----\n\n protected onDesignerNodeContextMenu(payload: { node: AXPWorkflowNode; event: MouseEvent }): void {\n const anchor =\n payload.event.currentTarget instanceof HTMLElement\n ? payload.event.currentTarget\n : payload.event.target instanceof HTMLElement\n ? payload.event.target.closest('.axp-workflow-designer__node')\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(payload.event.clientX, payload.event.clientY, anchor, [\n ADD_ACTIVITY_ACTION_ID,\n TOGGLE_DETAIL_PANEL_ACTION_ID,\n ]);\n }\n\n protected onDesignerSurfaceContextMenu(event: MouseEvent): void {\n if (event.target instanceof HTMLElement && event.target.closest('.axp-workflow-designer__node')) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const anchor =\n event.target instanceof HTMLElement\n ? (event.target.closest('.axp-workflow-designer__surface') ?? event.target)\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(event.clientX, event.clientY, anchor, [ADD_ACTIVITY_ACTION_ID]);\n }\n\n protected handleWorkflowContextMenuItemClick(e: AXContextMenuItemsClickEvent): void {\n if (e.item.name === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n this.toggleInfoPanel();\n return;\n }\n if (e.item.name === ADD_ACTIVITY_ACTION_ID) {\n this.openPalette();\n }\n }\n\n protected openPalette(): void {\n this.isPaletteOpen.set(true);\n this.paletteSearchTerm.set('');\n }\n\n protected closePalette(): void {\n this.isPaletteOpen.set(false);\n }\n\n private async openWorkflowContextMenuAt(\n clientX: number,\n clientY: number,\n targetElement: HTMLElement,\n actionIds: string[],\n ): Promise<void> {\n const items: AXMenuItem[] = [];\n for (const actionId of actionIds) {\n const item = await this.buildWorkflowContextMenuItem(actionId);\n if (item != null) {\n items.push(item);\n }\n }\n if (items.length === 0) {\n return;\n }\n const menu = this.contextMenu();\n if (menu == null) {\n return;\n }\n this.ngZone.run(() => {\n const openingEvent = {\n sender: menu,\n canceled: false,\n targetElement,\n items,\n } as AXContextMenuOpeningEvent;\n menu.showAt({ x: clientX, y: clientY }, targetElement, openingEvent);\n });\n }\n\n private async buildWorkflowContextMenuItem(actionId: string): Promise<AXMenuItem | null> {\n if (actionId === ADD_ACTIVITY_ACTION_ID) {\n return {\n name: ADD_ACTIVITY_ACTION_ID,\n text: (await this.translateService.translateAsync(ADD_ACTIVITY_ACTION_TITLE_KEY)) ?? 'Add Activity',\n icon: 'fa-light fa-plus',\n };\n }\n if (actionId === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n return {\n name: TOGGLE_DETAIL_PANEL_ACTION_ID,\n text:\n (await this.translateService.translateAsync(TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY)) ?? 'Toggle Details Panel',\n icon: 'fa-light fa-sidebar',\n };\n }\n return null;\n }\n\n //#endregion\n\n protected onBackgroundPatternChange(event: Event): void {\n const value = (event.target as HTMLSelectElement).value;\n if (value === 'line' || value === 'dots') {\n this.backgroundPattern.set(value);\n }\n }\n\n protected onDesignerZoomChange(value: number): void {\n this.zoomLevel.set(this.clampZoomLevel(value));\n }\n\n protected onPaletteSearchChange(event: { value?: string | null } | null): void {\n this.paletteSearchTerm.set(event?.value ?? '');\n }\n\n protected zoomIn(): void {\n this.workflowDesignerRef()?.zoomIn();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomOut(): void {\n this.workflowDesignerRef()?.zoomOut();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomReset(): void {\n this.workflowDesignerRef()?.zoomReset();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? 100));\n }\n\n protected toggleFullscreen(): void {\n const next = !this.isFullscreen();\n this.isFullscreen.set(next);\n const doc = globalThis.document;\n if (!doc) {\n return;\n }\n if (next) {\n void doc.documentElement.requestFullscreen?.();\n return;\n }\n void doc.exitFullscreen?.();\n }\n\n protected toggleInfoPanel(): void {\n this.isInfoPanelOpen.update((open) => !open);\n }\n\n protected onStartActivityChange(event: { value?: string | null }): void {\n this.startActivityId.set(event.value != null ? String(event.value) : '');\n this.recomputeDirty();\n }\n\n protected onSelectedActivityTypeChange(event: { value?: string | null }): void {\n const row = this.selectedRow();\n if (!row) {\n return;\n }\n const name = event.value != null ? String(event.value) : '';\n const rowId = row.id;\n this.activities.update((rows) =>\n rows.map((r) => (r.id !== rowId ? r : { ...r, name, inputs: {}, extensions: undefined })),\n );\n void this.ensureDefinition(name);\n void this.activityDefService.getActivityByName(name).then((def) => {\n const rowNow = this.activities().find((r) => r.id === rowId) ?? null;\n const allowed = new Set(this.buildOutcomeRows(rowId, rowNow, def).map((o) => o.port));\n this.pruneOutgoingConnections(rowId, allowed);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n });\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n protected onViewerChanged(ev: AXPPropertyViewerChangedEvent): void {\n if (ev.mode === 'init') {\n return;\n }\n const id = this.selectedRowId();\n if (id == null || ev.values == null) {\n return;\n }\n const inputs = (ev.values as { inputs?: Record<string, unknown> }).inputs ?? {};\n this.activities.update((rows) => rows.map((r) => (r.id === id ? { ...r, inputs: { ...inputs } } : r)));\n const sel = this.activities().find((r) => r.id === id);\n if (sel?.name?.trim()) {\n void this.activityDefService.getActivityByName(sel.name).then((def) => {\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(sel.id, sel, def));\n });\n }\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Graph persistence ----\n\n private gridFallbackPosition(index: number): { x: number; y: number } {\n return { x: 80 + (index % 4) * 320, y: 80 + Math.floor(index / 4) * 190 };\n }\n\n private clampZoomLevel(value: number): number {\n if (Number.isNaN(value)) {\n return 100;\n }\n return Math.max(20, Math.min(300, Math.round(value)));\n }\n\n private initDesignerLayoutFromGraph(graph: AXPWorkflowGraph | null | undefined): void {\n const activities = graph?.activities ?? [];\n const raw = graph?.designer?.nodes;\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n if (raw != null) {\n for (const [id, v] of Object.entries(raw)) {\n if (v != null && typeof v.x === 'number' && typeof v.y === 'number') {\n next[id] = {\n x: v.x,\n y: v.y,\n width: typeof v.width === 'number' && v.width > 0 ? v.width : DEFAULT_NODE_W,\n height: typeof v.height === 'number' && v.height > 0 ? v.height : DEFAULT_NODE_H,\n };\n }\n }\n }\n activities.forEach((a, i) => {\n if (!next[a.id]) {\n const p = this.gridFallbackPosition(i);\n next[a.id] = { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n }\n });\n this.designerLayout.set(next);\n }\n\n private syncDesignerLayoutFromModel(model: AXPWorkflowDiagramModel): void {\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n for (const n of model.nodes) {\n next[n.id] = {\n x: n.position.x,\n y: n.position.y,\n width: n.size.width > 0 ? n.size.width : DEFAULT_NODE_W,\n height: n.size.height > 0 ? n.size.height : DEFAULT_NODE_H,\n };\n }\n this.designerLayout.set(next);\n }\n\n /** Updates persisted node coordinates only (no activity/connection graph rewrite). */\n private applyArrangedLayout(): void {\n if (this.activities().length === 0) {\n return;\n }\n const startId = this.startActivityId().trim();\n const arranged = arrangeWorkflowDiagram(this.designerModel(), {\n startNodeId: startId.length > 0 ? startId : undefined,\n gridSize: DESIGNER_GRID_SIZE,\n });\n this.syncDesignerLayoutFromModel(arranged);\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n }\n\n private buildDesignerNodesForSave(): NonNullable<AXPWorkflowGraph['designer']>['nodes'] {\n const layout = this.designerLayout();\n const out: NonNullable<AXPWorkflowGraph['designer']>['nodes'] = {};\n for (const [id, L] of Object.entries(layout)) {\n out[id] = {\n x: L.x,\n y: L.y,\n nodeId: id,\n width: L.width,\n height: L.height,\n };\n }\n return out;\n }\n\n private buildCurrentGraph(): AXPWorkflowGraph {\n const base = this.baselineGraph();\n const layoutArranged = this.layoutArrangedFlag() || isDesignerLayoutArranged(base ?? undefined);\n return {\n startActivityId: this.startActivityId(),\n activities: this.activities().map((r) => instanceFromRow(r)),\n connections: cloneDeep(this.connections()),\n designer: {\n ...base?.designer,\n layoutArranged: layoutArranged ? true : undefined,\n nodes: this.buildDesignerNodesForSave(),\n },\n };\n }\n\n private recomputeDirty(): void {\n this.isDirty.set(!isEqual(graphFingerprint(this.buildCurrentGraph()), graphFingerprint(this.baselineGraph())));\n this.recompute();\n this.scheduleAutoSave();\n }\n\n private clearAutoSaveTimer(): void {\n if (this.autoSaveTimer != null) {\n clearTimeout(this.autoSaveTimer);\n this.autoSaveTimer = null;\n }\n }\n\n /** Debounced persist for designer moves, connections, arrange, and property edits. */\n private scheduleAutoSave(): void {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n this.clearAutoSaveTimer();\n this.autoSaveTimer = setTimeout(() => {\n this.autoSaveTimer = null;\n void this.runAutoSave();\n }, AUTO_SAVE_DEBOUNCE_MS);\n }\n\n private async runAutoSave(): Promise<void> {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n if (this.autoSaveInFlight) {\n this.autoSavePending = true;\n return;\n }\n this.autoSaveInFlight = true;\n try {\n await this.handleSaveExecute({ silent: true });\n } finally {\n this.autoSaveInFlight = false;\n if (this.autoSavePending) {\n this.autoSavePending = false;\n if (this.isDirty()) {\n this.scheduleAutoSave();\n }\n }\n }\n }\n\n private async handleSaveExecute(options?: { silent?: boolean }): Promise<AXPExecuteCommandResult> {\n this.clearAutoSaveTimer();\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return {\n success: false,\n message: { text: await this.translateService.translateAsync('@general:messages.entity.invalid-data') },\n };\n }\n const graph = this.buildCurrentGraph();\n const result = await this.commandService.execute<SaveWorkflowDefinitionActivitiesInput, unknown>(\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n { id, graph, silent: options?.silent },\n );\n const execResult = (result ?? { success: false }) as AXPExecuteCommandResult;\n if (execResult.success) {\n this.baselineGraph.set(cloneDeep(graph));\n this.isDirty.set(false);\n if (!options?.silent) {\n this.recompute();\n }\n }\n return execResult;\n }\n\n private hydrateFromServerContext(ctx: Record<string, unknown> | undefined): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const graph = (ctx?.['graph'] as AXPWorkflowGraph | undefined) ?? emptyGraph();\n this.baselineGraph.set(cloneDeep(graph));\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(graph));\n this.initDesignerLayoutFromGraph(graph);\n this.activities.set((graph.activities ?? []).map((a) => rowFromInstance(a)));\n this.connections.set(cloneDeep(graph.connections ?? []));\n let start = graph.startActivityId ?? '';\n const rows = this.activities();\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n void this.ensureActivityCatalogLoaded();\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n /**\n * Runs auto-arrange once per workflow definition, then persists `graph.designer.layoutArranged`.\n * Definitions that already have saved node positions are marked arranged without moving nodes.\n */\n private async maybeApplyInitialArrangedLayout(): Promise<void> {\n if (this.layoutArrangedFlag() || this.initialLayoutArrangeInFlight) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n if (this.activities().length === 0) {\n return;\n }\n\n this.initialLayoutArrangeInFlight = true;\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n if (graphHasPersistedDesignerLayout(base ?? undefined)) {\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n return;\n }\n\n this.applyArrangedLayout();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n } finally {\n this.suppressAutoSave = false;\n this.initialLayoutArrangeInFlight = false;\n }\n }\n\n private applyBaselineGraph(): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(base ?? undefined));\n this.initDesignerLayoutFromGraph(base ?? undefined);\n const rows = (base?.activities ?? []).map((a) => rowFromInstance(a));\n this.activities.set(rows);\n this.connections.set(cloneDeep(base?.connections ?? []));\n let start = base?.startActivityId ?? '';\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n this.recompute();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n private addStep(): void {\n const catalog = this.activitySelectOptions();\n const defaultName = catalog[0]?.value ?? '';\n const row: AXMWorkflowActivityEditorRow = { id: AXPDataGenerator.uuid(), name: defaultName, inputs: {} };\n this.activities.update((list) => [...list, row]);\n const idx = this.activities().length - 1;\n const p = this.gridFallbackPosition(idx);\n this.designerLayout.update((L) => ({\n ...L,\n [row.id]: { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H },\n }));\n this.selectedRowId.set(row.id);\n if (!this.startActivityId() && row.id) {\n this.startActivityId.set(row.id);\n }\n void this.ensureDefinition(row.name);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Outcomes & labels ----\n\n private formatActivityStepLabel(r: AXMWorkflowActivityEditorRow): string {\n const shortId = r.id.length >= 8 ? r.id.slice(0, 8) : r.id;\n const typePart = r.name?.trim() ? r.name : '…';\n return `${typePart} (${shortId})`;\n }\n\n protected resolveNodeTitle(r: AXMWorkflowActivityEditorRow): string {\n const ext = r.extensions;\n const display = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (display) {\n return display;\n }\n return this.activitySelectOptions().find((x) => x.value === r.name)?.text ?? r.name;\n }\n\n private outcomeRowsFromRawDefinition(raw: unknown): AXMWorkflowOutcomePortRow[] {\n if (raw == null) {\n return [];\n }\n let items: unknown[] = [];\n if (Array.isArray(raw)) {\n items = raw;\n } else if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n items = Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n } else {\n return [];\n }\n const rows: AXMWorkflowOutcomePortRow[] = [];\n for (const item of items) {\n if (typeof item === 'string' && item.trim()) {\n rows.push({ port: item, label: item });\n continue;\n }\n if (item != null && typeof item === 'object' && !Array.isArray(item)) {\n const o = item as Record<string, unknown>;\n const portVal = o['name'] ?? o['value'] ?? o['outcome'] ?? o['port'];\n if (typeof portVal !== 'string' || !portVal.trim()) {\n continue;\n }\n const titleRaw = o['title'];\n let label = portVal;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n label = titleRaw;\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n label = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? portVal;\n }\n rows.push({ port: portVal, label });\n }\n }\n return rows;\n }\n\n private outcomePortsFromConnections(activityId: string): string[] {\n const ports = new Set<string>();\n for (const c of this.connections()) {\n if (c.source.activtyName === activityId) {\n ports.add(portKey(c.source.port));\n }\n }\n return [...ports];\n }\n\n private outcomePortsFromTaskActions(inputs: Record<string, unknown>): string[] {\n const actions = inputs['actions'];\n if (actions == null) {\n return [];\n }\n let root: unknown = actions;\n if (typeof actions === 'string' && actions.trim().length > 0) {\n try {\n root = JSON.parse(actions) as unknown;\n } catch {\n return [];\n }\n }\n if (typeof root !== 'object' || root === null) {\n return [];\n }\n const names: string[] = [];\n const obj = root as Record<string, unknown>;\n for (const key of ['suffix', 'prefix'] as const) {\n const list = obj[key];\n if (!Array.isArray(list)) {\n continue;\n }\n for (const entry of list) {\n if (!entry || typeof entry !== 'object') {\n continue;\n }\n const cmd = (entry as Record<string, unknown>)['command'];\n if (cmd && typeof cmd === 'object') {\n const n = (cmd as Record<string, unknown>)['name'];\n if (typeof n === 'string' && n.trim()) {\n names.push(n);\n }\n }\n }\n }\n return names;\n }\n\n private buildOutcomeRows(\n activityId: string,\n row: AXMWorkflowActivityEditorRow | null,\n def?: AXPActivityDefinition,\n ): AXMWorkflowOutcomePortRow[] {\n const map = new Map<string, AXMWorkflowOutcomePortRow>();\n for (const o of this.outcomeRowsFromRawDefinition(def?.outcomes)) {\n map.set(o.port, o);\n }\n for (const p of this.outcomePortsFromConnections(activityId)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n if (row) {\n for (const p of this.outcomePortsFromTaskActions(row.inputs)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n }\n if (map.size === 0) {\n map.set('Done', { port: 'Done', label: 'Done' });\n }\n return [...map.values()].sort((a, b) => a.port.localeCompare(b.port));\n }\n\n private pruneOutgoingConnections(sourceActivityId: string, allowedPorts: Set<string>): void {\n this.connections.update((list) =>\n list.filter((c) => {\n if (c.source.activtyName !== sourceActivityId) {\n return true;\n }\n return allowedPorts.has(portKey(c.source.port));\n }),\n );\n }\n\n //#endregion\n\n //#region ---- Catalog & property viewer ----\n\n private async ensureActivityCatalogLoaded(): Promise<void> {\n if (this.activityCatalogLoaded()) {\n return;\n }\n try {\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.activityDefinition.name)\n .data<string, AXMWorkflowActivityCatalogRow>();\n const res = (await data.query({ skip: 0, take: 1000 })) as unknown as AXPActivityDefinitionQueryResult;\n const items = (res.items ?? [])\n .map((row) => {\n const n = row.name;\n const typeFallback = row.type;\n const valueKey =\n typeof n === 'string' && n.trim()\n ? n.trim()\n : typeof n === 'number'\n ? String(n)\n : typeof typeFallback === 'string' && typeFallback.trim()\n ? typeFallback.trim()\n : typeof typeFallback === 'number'\n ? String(typeFallback)\n : '';\n if (!valueKey) {\n return null;\n }\n const titleRaw = row.title;\n let text = valueKey;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n text = titleRaw.trim();\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n text = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? valueKey;\n }\n\n const descriptionRaw = row.description;\n let description = descriptionRaw;\n if (typeof descriptionRaw === 'string' && descriptionRaw.trim()) {\n description = descriptionRaw.trim();\n } else if (descriptionRaw != null && typeof descriptionRaw === 'object') {\n description = this.mlResolver.resolve(descriptionRaw as AXPMultiLanguageString) ?? descriptionRaw;\n }\n const categoryRaw = row.category as AXPActivityDefinitionCategoryRef | undefined;\n const categoryTitleResolved =\n categoryRaw?.title != null\n ? (this.mlResolver.resolve(categoryRaw.title) ?? categoryRaw.name)\n : 'Uncategorized';\n const icon = row.icon;\n return {\n value: valueKey,\n text: String(text).trim() || valueKey,\n description: description,\n categoryId: categoryRaw?.id ?? 'uncategorized',\n categoryTitle: categoryTitleResolved,\n icon: icon,\n };\n })\n .filter((x): x is AXMWorkflowActivitySelectItem => x != null);\n items.sort((a, b) => a.text.localeCompare(b.text));\n this.activitySelectItems.set(items);\n } catch {\n this.activitySelectItems.set([]);\n } finally {\n this.activityCatalogLoaded.set(true);\n }\n }\n\n private async ensureDefinition(name: string): Promise<void> {\n if (!name?.trim()) {\n return;\n }\n if (this.activityDefCache()[name]) {\n return;\n }\n const def = await this.activityDefService.getActivityByName(name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [name]: def }));\n }\n }\n\n private async refreshPropertyViewer(): Promise<void> {\n const row = this.selectedRow();\n if (row == null || row.name.trim() === '') {\n this.viewerTabs.set([]);\n this.selectedActivityOutcomeRows.set([]);\n setTimeout(() => this.propertyViewerRef()?.initializeContext({ inputs: {} }), 0);\n return;\n }\n const def = await this.activityDefService.getActivityByName(row.name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [row.name]: def }));\n }\n const rowLatest = this.activities().find((r) => r.id === row.id) ?? row;\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(row.id, rowLatest, def));\n const inputProps = normalizeActivityDefinitionInputs(def?.inputs);\n const group: AXPWidgetPropertyGroup = { name: 'activity-inputs', title: 'Inputs', order: 0 };\n const widgetProps = inputProps.map((p, index) =>\n mapAXPPropertyToWidgetProperty(p, {\n group,\n order: index,\n valuePathPrefix: 'inputs',\n resolveTitle: (prop) =>\n typeof prop.title === 'string' ? prop.title : (this.mlResolver.resolve(prop.title) ?? prop.name),\n resolveDescription: (prop) =>\n prop.description === undefined\n ? undefined\n : typeof prop.description === 'string'\n ? prop.description\n : this.mlResolver.resolve(prop.description),\n }),\n );\n this.viewerTabs.set(buildPropertyViewerTabsFromProperties(widgetProps));\n setTimeout(() => {\n const current = this.activities().find((r) => r.id === row.id);\n this.propertyViewerRef()?.initializeContext({ inputs: cloneDeep(current?.inputs ?? {}) });\n }, 0);\n }\n\n //#endregion\n\n //#region ---- Utilities ----\n\n protected override recompute(): void {\n super.recompute();\n const maybeLayout = this.hostPageLayout as unknown as { recompute?: () => void };\n maybeLayout?.recompute?.();\n }\n\n //#endregion\n}\n","<!-- <axp-page-toolbar>\n <axp-layout-suffix>\n <div class=\"axm-workflow-definition-activities__toolbar-group\">\n <ax-button>\n <ax-icon icon=\"fa-light fa-sliders\"></ax-icon>\n <ax-dropdown-panel>\n <div class=\"axm-workflow-definition-activities__appearance-panel\">\n <label class=\"axm-workflow-definition-activities__pattern-label\" for=\"background-pattern-select\"\n >Background Pattern</label\n >\n <select\n id=\"background-pattern-select\"\n class=\"axm-workflow-definition-activities__pattern-select\"\n [value]=\"backgroundPattern()\"\n (change)=\"onBackgroundPatternChange($event)\"\n >\n <option value=\"dots\">Dots</option>\n <option value=\"line\">Lines</option>\n </select>\n </div>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button (onClick)=\"toggleFullscreen()\">\n <ax-icon>\n <i class=\"fa-solid\" [class]=\"isFullscreen() ? 'fa-compress' : 'fa-expand'\"></i>\n </ax-icon>\n </ax-button>\n <ax-button (onClick)=\"toggleInfoPanel()\">\n <ax-icon [icon]=\"isInfoPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info'\"></ax-icon>\n </ax-button>\n </div>\n </axp-layout-suffix>\n </axp-page-toolbar> -->\n\n<div\n class=\"axm-workflow-definition-activities\"\n [class.axm-workflow-definition-activities--with-palette]=\"isPaletteOpen()\"\n [class.axm-workflow-definition-activities--with-info]=\"isInfoPanelOpen()\"\n>\n @if (isPaletteOpen()) {\n <aside class=\"axm-workflow-definition-activities__palette\">\n <div class=\"axm-workflow-definition-activities__palette-head\">\n <div class=\"axm-workflow-definition-activities__palette-head-row\">\n <h3 class=\"axm-workflow-definition-activities__title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step'\n | translate\n | async) ?? 'Activities'\n }}\n </h3>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"closePalette()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <p class=\"axm-workflow-definition-activities__palette-sub\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.hint'\n | translate\n | async) ?? ''\n }}\n </p>\n <ax-search-box\n class=\"axm-workflow-definition-activities__palette-search ax-sm\"\n [value]=\"paletteSearchTerm()\"\n (onValueChanged)=\"onPaletteSearchChange($event)\"\n [placeholder]=\"'@general:search.title' | translate | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"axm-workflow-definition-activities__palette-list\">\n <div class=\"axm-workflow-definition-activities__accordion-group\" axAccordionGroup [accordion]=\"false\">\n @for (group of filteredPaletteGroups(); track group.id) {\n @if (group.items.length > 0) {\n <section\n class=\"axm-workflow-definition-activities__accordion-item\"\n axAccordionItem\n [isCollapsed]=\"false\"\n #acc=\"axAccordionItem\"\n >\n <header\n class=\"axm-workflow-definition-activities__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n >\n <div class=\"axm-workflow-definition-activities__accordion-header-main\">\n <span class=\"axm-workflow-definition-activities__accordion-title\">{{ group.title }}</span>\n </div>\n <span class=\"axm-workflow-definition-activities__accordion-chevron\">\n <i [class]=\"acc.isCollapsed() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-up'\"></i>\n </span>\n </header>\n <div class=\"axm-workflow-definition-activities__accordion-content\" axAccordionItemContent>\n @for (item of group.items; track item.type) {\n <button\n type=\"button\"\n class=\"axm-workflow-definition-activities__palette-item\"\n [axpWorkflowPaletteItem]=\"item\"\n >\n <span class=\"axm-workflow-definition-activities__palette-item-icon\" aria-hidden=\"true\">\n <i [class]=\"'fa-light ' + item.icon\"></i>\n </span>\n <span class=\"axm-workflow-definition-activities__palette-item-body\">\n <span class=\"axm-workflow-definition-activities__palette-item-title\">{{ item.title }}</span>\n <span class=\"axm-workflow-definition-activities__palette-item-meta\">{{\n item.description\n }}</span>\n </span>\n </button>\n }\n </div>\n </section>\n }\n }\n </div>\n </div>\n </aside>\n }\n\n <div class=\"axm-workflow-definition-activities__main\">\n <section class=\"axm-workflow-definition-activities__canvas\" (contextmenu)=\"onDesignerSurfaceContextMenu($event)\">\n <axp-workflow-designer\n [model]=\"designerModel()\"\n [backgroundPattern]=\"backgroundPattern()\"\n (zoomChange)=\"onDesignerZoomChange($event)\"\n (modelChange)=\"onDesignerModelChange($event)\"\n (activationChange)=\"onDesignerActivationChange($event)\"\n (nodeContextMenu)=\"onDesignerNodeContextMenu($event)\"\n ></axp-workflow-designer>\n <ax-context-menu\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleWorkflowContextMenuItemClick($event)\"\n />\n <axp-layout-floating-zoom-bar\n [zoomLevel]=\"zoomLevel()\"\n (zoomIn)=\"zoomIn()\"\n (zoomOut)=\"zoomOut()\"\n (zoomReset)=\"zoomReset()\"\n />\n </section>\n </div>\n @if (isInfoPanelOpen()) {\n <axp-layout-side-detail-panel\n class=\"axm-workflow-definition-activities__info ax-sticky ax-top-0 ax-z-10 ax-max-h-full ax-flex-none\"\n [header]=\"workflowDetailPanelHeader()\"\n [rows]=\"workflowDetailPanelRows()\"\n [emptyState]=\"workflowDetailPanelEmptyState()\"\n (panelClose)=\"toggleInfoPanel()\"\n />\n }\n</div>\n"],"names":["i5","i6"],"mappings":"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"}
@@ -3709,7 +3709,7 @@ class AXMWorkflowManagementModule {
3709
3709
  multi: true,
3710
3710
  },
3711
3711
  provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-DC_9M9dk.mjs').then((m) => m.AXMWorkflowInstanceActivityInstancesPageComponentProvider)),
3712
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-CdaVEEgn.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
3712
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-1B7oRAKX.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
3713
3713
  // Automation condition builder: default automation.rules(refType, refId); modules override for their refTypes
3714
3714
  {
3715
3715
  provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
@@ -3868,7 +3868,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3868
3868
  multi: true,
3869
3869
  },
3870
3870
  provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-DC_9M9dk.mjs').then((m) => m.AXMWorkflowInstanceActivityInstancesPageComponentProvider)),
3871
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-CdaVEEgn.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
3871
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-1B7oRAKX.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
3872
3872
  // Automation condition builder: default automation.rules(refType, refId); modules override for their refTypes
3873
3873
  {
3874
3874
  provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@acorex/modules",
3
- "version": "21.0.0-next.67",
3
+ "version": "21.0.0-next.70",
4
4
  "peerDependencies": {
5
- "@acorex/platform": "21.0.0-next.67",
5
+ "@acorex/platform": "21.0.0-next.70",
6
6
  "@angular/service-worker": "^20.0.0",
7
7
  "d3": "^7.0.0",
8
8
  "html2canvas": "^1.0.0",