@acorex-platform/module-workflow-management-client 0.0.33 → 0.0.37

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 (37) hide show
  1. package/fesm2022/{acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-CggaQgAl.mjs → acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-CKudtLpx.mjs} +14 -14
  2. package/fesm2022/{acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-CggaQgAl.mjs.map → acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-CKudtLpx.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-module-workflow-management-client-activity-command-configurator-widget-column.component-BPa0Sh6Z.mjs.map +1 -1
  4. package/fesm2022/acorex-platform-module-workflow-management-client-activity-command-configurator-widget-edit.component-DuYGXzAL.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entities-activity-category.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entities-activity-definition.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entities-automation.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entities-workflow-definition.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entities-workflow-instance.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entity-catalog-acorex-platform-module-workflow-management-client-contracts-entity-catalog-DKDogTU7.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entity-catalog-activity-category.entity-1EWdojoP.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entity-catalog-activity-definition.entity-DYoF3vVe.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entity-catalog-automation.entity-DbJeeZpQ.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entity-catalog-workflow-definition.entity-BVSAGT0z.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-module-workflow-management-client-contracts-entity-catalog-workflow-instance.entity-BEA4WQX2.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-module-workflow-management-client-contracts.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-module-workflow-management-client-execute-workflow-with-input.command-BFdyJ4rC.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-module-workflow-management-client-execute-workflow.command-Cfdm1QAy.mjs.map +1 -1
  19. package/fesm2022/{acorex-platform-module-workflow-management-client-index-DnhR9-16.mjs → acorex-platform-module-workflow-management-client-index-BKMDbQ8Z.mjs} +3 -3
  20. package/fesm2022/{acorex-platform-module-workflow-management-client-index-DnhR9-16.mjs.map → acorex-platform-module-workflow-management-client-index-BKMDbQ8Z.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-workflow-management-client-index--u_GkETW.mjs → acorex-platform-module-workflow-management-client-index-C3pkrctS.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-workflow-management-client-index--u_GkETW.mjs.map → acorex-platform-module-workflow-management-client-index-C3pkrctS.mjs.map} +1 -1
  23. package/fesm2022/acorex-platform-module-workflow-management-client-index-C8nsbDAw.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-module-workflow-management-client-local-entities.mjs.map +1 -1
  25. package/fesm2022/acorex-platform-module-workflow-management-client-save-workflow-definition-activities.command-spFF77AO.mjs.map +1 -1
  26. package/fesm2022/acorex-platform-module-workflow-management-client-workflow-activity-instance-rows.utils-CMVZYS4y.mjs.map +1 -1
  27. package/fesm2022/acorex-platform-module-workflow-management-client-workflow-configurator-widget-column.component-D0E2zjIA.mjs.map +1 -1
  28. package/fesm2022/acorex-platform-module-workflow-management-client-workflow-configurator-widget-edit.component-CVTeOv-q.mjs.map +1 -1
  29. package/fesm2022/acorex-platform-module-workflow-management-client-workflow-live-dashboard.queries--9NtYkau.mjs.map +1 -1
  30. package/fesm2022/{acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-B8YZ5wW8.mjs → acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-DbeueT-X.mjs} +3 -3
  31. package/fesm2022/{acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-B8YZ5wW8.mjs.map → acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-DbeueT-X.mjs.map} +1 -1
  32. package/fesm2022/acorex-platform-module-workflow-management-client-workflow-run-history-timeline-tab.component-AnJ-Pywf.mjs.map +1 -1
  33. package/fesm2022/acorex-platform-module-workflow-management-client-workflow-run-history-visual-tab.component-Bw68Jwcb.mjs.map +1 -1
  34. package/fesm2022/{acorex-platform-module-workflow-management-client-workflow-task-popover.component-BqpO8PFn.mjs → acorex-platform-module-workflow-management-client-workflow-task-popover.component-Y9rWe3O6.mjs} +3 -3
  35. package/fesm2022/{acorex-platform-module-workflow-management-client-workflow-task-popover.component-BqpO8PFn.mjs.map → acorex-platform-module-workflow-management-client-workflow-task-popover.component-Y9rWe3O6.mjs.map} +1 -1
  36. package/fesm2022/acorex-platform-module-workflow-management-client.mjs +1 -1
  37. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-workflow-management-client-index-C8nsbDAw.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page-component.provider.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page.component.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page.component.html"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY } from '@acorex-platform/module-workflow-management-client/contracts';\n//#region ---- Workflow Instance Activity Instances Page Component Provider ----\n\n@Injectable()\nexport class AXMWorkflowInstanceActivityInstancesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-instance-activity-instances-page.component').then(\n (m) => m.AXMWorkflowInstanceActivityInstancesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, untracked } from '@angular/core';\nimport { AXJsonViewerModule } from '@acorex/components/json-viewer';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\nimport type { AXPWorkflowDefinition, AXPWorkflowInstance } from '@acorex-platform/framework-shared/core';\nimport { AXPWorkflowDefinitionService } from '@acorex-platform/framework-client/workflow';\nimport {\n buildWorkflowActivityInstanceRows,\n workflowActivityStatusChipModifier,\n workflowActivityToViewerRoot,\n} from './workflow-activity-instance-rows.utils';\n\nexport type { AXMWorkflowActivityInstanceViewRow } from './workflow-activity-instance-rows.utils';\n\n//#region ---- Component ----\n\n/**\n * Readonly entity detail page: lists activity execution contexts for a workflow instance.\n * Data: `rootContext.workflowInstance` + definition loaded by `definitionId`, plus audit keys on\n * `workflowState.properties` (`_outcome`, `_activityOutput`, `_completedByUserId` / `_completedByLabel`).\n */\n@Component({\n selector: 'axm-workflow-instance-activity-instances-page',\n standalone: true,\n imports: [\n CommonModule,\n AXJsonViewerModule,\n AXDecoratorModule,\n AXLabelModule,\n AXLoadingModule,\n AXTranslationModule,\n ],\n templateUrl: './workflow-instance-activity-instances-page.component.html',\n styleUrl: './workflow-instance-activity-instances-page.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMWorkflowInstanceActivityInstancesPageComponent,\n },\n ],\n})\nexport class AXMWorkflowInstanceActivityInstancesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly workflowDefinitionService = inject(AXPWorkflowDefinitionService);\n\n //#endregion\n\n //#region ---- Definition load ----\n\n private readonly definition = signal<AXPWorkflowDefinition | null>(null);\n protected readonly definitionLoading = signal(false);\n private loadSeq = 0;\n\n //#endregion\n\n constructor() {\n super();\n effect(() => {\n const ctx = this.rootContext();\n const defId =\n ctx && typeof ctx === 'object' && typeof (ctx as Record<string, unknown>)['definitionId'] === 'string'\n ? ((ctx as Record<string, unknown>)['definitionId'] as string)\n : undefined;\n if (!defId) {\n untracked(() => {\n this.definition.set(null);\n this.definitionLoading.set(false);\n });\n return;\n }\n const seq = ++this.loadSeq;\n void (async () => {\n this.definitionLoading.set(true);\n try {\n const def = await this.workflowDefinitionService.getWorkflowByName(defId);\n if (seq !== this.loadSeq) {\n return;\n }\n untracked(() => this.definition.set(def ?? null));\n } finally {\n if (seq === this.loadSeq) {\n this.definitionLoading.set(false);\n }\n }\n })();\n });\n }\n\n /**\n * Maps activity execution status to `status-chips.css` modifier classes (uses theme `--ax-sys-color-*` tokens).\n */\n statusChipModifier(status: string): 'primary' | 'success' | 'warning' | 'danger' | 'neutral' | 'secondary' {\n return workflowActivityStatusChipModifier(status);\n }\n\n /**\n * Normalizes a value for `ax-json-viewer` (expects a root object; primitives/arrays are wrapped like the platform json-viewer widget).\n */\n toViewerRoot(value: unknown): Record<string, unknown> {\n return workflowActivityToViewerRoot(value);\n }\n\n //#region ---- View rows ----\n\n protected readonly rows = computed(() => {\n const ctx = this.rootContext();\n const wi = ctx?.['workflowInstance'] as AXPWorkflowInstance | undefined;\n const def = this.definition();\n return buildWorkflowActivityInstanceRows(wi, def ?? null, '—', '—');\n });\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-workflow-activity-instances-page block p-4 min-h-[30vh] overflow-y-auto\">\n @if (definitionLoading()) {\n <div class=\"axm-workflow-activity-instances-page__state\">\n <ax-loading></ax-loading>\n </div>\n } @else {\n @if (rows().length === 0) {\n <p class=\"axm-workflow-activity-instances-page__state typo-caption\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.empty' | translate | async }}\n </p>\n } @else {\n <div class=\"axm-workflow-activity-instances-page__list\">\n @for (row of rows(); track row.contextId) {\n <div class=\"axm-workflow-activity-instances-page__card block\">\n <div class=\"axm-workflow-activity-instances-page__header\">\n <h3 [textContent]=\"row.activityTitle\" class=\"axm-workflow-activity-instances-page__title\"></h3>\n <div class=\"axm-workflow-activity-instances-page__header-status\">\n <span class=\"axm-workflow-activity-instances-page__status-label\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.status' | translate | async }}\n </span>\n <span\n class=\"inline-flex items-center rounded-md px-2.5 py-1 text-xs font-semibold leading-none axp-status-chip\"\n [ngClass]=\"'axp-status-chip--' + statusChipModifier(row.status)\"\n >\n {{ row.status }}\n </span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__meta-grid\" role=\"list\">\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.activity-type' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.activityTypeName\"\n [textContent]=\"row.activityTypeName\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.node-id' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v axm-workflow-activity-instances-page__meta-v--code\"\n [attr.title]=\"row.nodeId\"\n [textContent]=\"row.nodeId\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.outcome' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.outcomeDisplay\"\n [textContent]=\"row.outcomeDisplay\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.started-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.startedAt || '—'\"\n [textContent]=\"row.startedAt || '—'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.completed-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.completedAt || '—'\"\n [textContent]=\"row.completedAt || '—'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.performed-by' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.performedByDisplay\"\n [textContent]=\"row.performedByDisplay\"\n ></span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__json-row\">\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.input' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.inputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.output' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.outputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n </div>\n\n @if (row.isHumanTask) {\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.human-assignees' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__value\" [textContent]=\"row.humanAssigneesDisplay\"></div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\n"],"names":["i4","i5"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-workflow-management-client-index-C8nsbDAw.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page-component.provider.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page.component.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page.component.html"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY } from '@acorex-platform/module-workflow-management-client/contracts';\n//#region ---- Workflow Instance Activity Instances Page Component Provider ----\n\n@Injectable()\nexport class AXMWorkflowInstanceActivityInstancesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-instance-activity-instances-page.component').then(\n (m) => m.AXMWorkflowInstanceActivityInstancesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, untracked } from '@angular/core';\nimport { AXJsonViewerModule } from '@acorex/components/json-viewer';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\nimport type { AXPWorkflowDefinition, AXPWorkflowInstance } from '@acorex-platform/framework-shared/core';\nimport { AXPWorkflowDefinitionService } from '@acorex-platform/framework-client/workflow';\nimport {\n buildWorkflowActivityInstanceRows,\n workflowActivityStatusChipModifier,\n workflowActivityToViewerRoot,\n} from './workflow-activity-instance-rows.utils';\n\nexport type { AXMWorkflowActivityInstanceViewRow } from './workflow-activity-instance-rows.utils';\n\n//#region ---- Component ----\n\n/**\n * Readonly entity detail page: lists activity execution contexts for a workflow instance.\n * Data: `rootContext.workflowInstance` + definition loaded by `definitionId`, plus audit keys on\n * `workflowState.properties` (`_outcome`, `_activityOutput`, `_completedByUserId` / `_completedByLabel`).\n */\n@Component({\n selector: 'axm-workflow-instance-activity-instances-page',\n standalone: true,\n imports: [\n CommonModule,\n AXJsonViewerModule,\n AXDecoratorModule,\n AXLabelModule,\n AXLoadingModule,\n AXTranslationModule,\n ],\n templateUrl: './workflow-instance-activity-instances-page.component.html',\n styleUrl: './workflow-instance-activity-instances-page.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMWorkflowInstanceActivityInstancesPageComponent,\n },\n ],\n})\nexport class AXMWorkflowInstanceActivityInstancesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly workflowDefinitionService = inject(AXPWorkflowDefinitionService);\n\n //#endregion\n\n //#region ---- Definition load ----\n\n private readonly definition = signal<AXPWorkflowDefinition | null>(null);\n protected readonly definitionLoading = signal(false);\n private loadSeq = 0;\n\n //#endregion\n\n constructor() {\n super();\n effect(() => {\n const ctx = this.rootContext();\n const defId =\n ctx && typeof ctx === 'object' && typeof (ctx as Record<string, unknown>)['definitionId'] === 'string'\n ? ((ctx as Record<string, unknown>)['definitionId'] as string)\n : undefined;\n if (!defId) {\n untracked(() => {\n this.definition.set(null);\n this.definitionLoading.set(false);\n });\n return;\n }\n const seq = ++this.loadSeq;\n void (async () => {\n this.definitionLoading.set(true);\n try {\n const def = await this.workflowDefinitionService.getWorkflowByName(defId);\n if (seq !== this.loadSeq) {\n return;\n }\n untracked(() => this.definition.set(def ?? null));\n } finally {\n if (seq === this.loadSeq) {\n this.definitionLoading.set(false);\n }\n }\n })();\n });\n }\n\n /**\n * Maps activity execution status to `status-chips.css` modifier classes (uses theme `--ax-sys-color-*` tokens).\n */\n statusChipModifier(status: string): 'primary' | 'success' | 'warning' | 'danger' | 'neutral' | 'secondary' {\n return workflowActivityStatusChipModifier(status);\n }\n\n /**\n * Normalizes a value for `ax-json-viewer` (expects a root object; primitives/arrays are wrapped like the platform json-viewer widget).\n */\n toViewerRoot(value: unknown): Record<string, unknown> {\n return workflowActivityToViewerRoot(value);\n }\n\n //#region ---- View rows ----\n\n protected readonly rows = computed(() => {\n const ctx = this.rootContext();\n const wi = ctx?.['workflowInstance'] as AXPWorkflowInstance | undefined;\n const def = this.definition();\n return buildWorkflowActivityInstanceRows(wi, def ?? null, '—', '—');\n });\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-workflow-activity-instances-page block p-4 min-h-[30vh] overflow-y-auto\">\n @if (definitionLoading()) {\n <div class=\"axm-workflow-activity-instances-page__state\">\n <ax-loading></ax-loading>\n </div>\n } @else {\n @if (rows().length === 0) {\n <p class=\"axm-workflow-activity-instances-page__state typo-caption\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.empty' | translate | async }}\n </p>\n } @else {\n <div class=\"axm-workflow-activity-instances-page__list\">\n @for (row of rows(); track row.contextId) {\n <div class=\"axm-workflow-activity-instances-page__card block\">\n <div class=\"axm-workflow-activity-instances-page__header\">\n <h3 [textContent]=\"row.activityTitle\" class=\"axm-workflow-activity-instances-page__title\"></h3>\n <div class=\"axm-workflow-activity-instances-page__header-status\">\n <span class=\"axm-workflow-activity-instances-page__status-label\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.status' | translate | async }}\n </span>\n <span\n class=\"inline-flex items-center rounded-md px-2.5 py-1 text-xs font-semibold leading-none axp-status-chip\"\n [ngClass]=\"'axp-status-chip--' + statusChipModifier(row.status)\"\n >\n {{ row.status }}\n </span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__meta-grid\" role=\"list\">\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.activity-type' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.activityTypeName\"\n [textContent]=\"row.activityTypeName\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.node-id' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v axm-workflow-activity-instances-page__meta-v--code\"\n [attr.title]=\"row.nodeId\"\n [textContent]=\"row.nodeId\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.outcome' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.outcomeDisplay\"\n [textContent]=\"row.outcomeDisplay\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.started-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.startedAt || '—'\"\n [textContent]=\"row.startedAt || '—'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.completed-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.completedAt || '—'\"\n [textContent]=\"row.completedAt || '—'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.performed-by' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.performedByDisplay\"\n [textContent]=\"row.performedByDisplay\"\n ></span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__json-row\">\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.input' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.inputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.output' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.outputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n </div>\n\n @if (row.isHumanTask) {\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.human-assignees' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__value\" [textContent]=\"row.humanAssigneesDisplay\"></div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\n"],"names":["i4","i5"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-workflow-management-client-local-entities.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/workflow-management/client/src/lib/acorex-platform-module-workflow-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-workflow-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers workflow-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideWorkflowManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n 'activity-category': () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/activity-category').then((m) => m.factoryActivityCategory()),\n [RootConfig.entities.activityDefinition.name]: () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/activity-definition').then((m) => m.factoryActivityDefinition()),\n [RootConfig.entities.automation.name]: () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/automation').then((m) => m.factoryAutomation()),\n [RootConfig.entities.workflowDefinition.name]: () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/workflow-definition').then((m) => m.factoryWorkflowDefinition()),\n [RootConfig.entities.workflowInstance.name]: () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/workflow-instance').then((m) => m.factoryWorkflowInstance()),\n },\n });\n}\n\nexport { workflowManagementLocalEntityCatalog } from '@acorex-platform/module-workflow-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,sCAAsC,GAAA;AACpD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;YACP,mBAAmB,EAAE,MACnB,OAAO,yFAAyF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,CAAC;AAC5I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,MAC7C,OAAO,2FAA2F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,EAAE,CAAC;AAChJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,MACrC,OAAO,kFAAkF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAC/H,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,MAC7C,OAAO,2FAA2F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,EAAE,CAAC;AAChJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,GAAG,MAC3C,OAAO,yFAAyF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,CAAC;AAC7I,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;ACnCA;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-workflow-management-client-local-entities.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/workflow-management/client/src/lib/acorex-platform-module-workflow-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-workflow-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers workflow-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideWorkflowManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n 'activity-category': () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/activity-category').then((m) => m.factoryActivityCategory()),\n [RootConfig.entities.activityDefinition.name]: () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/activity-definition').then((m) => m.factoryActivityDefinition()),\n [RootConfig.entities.automation.name]: () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/automation').then((m) => m.factoryAutomation()),\n [RootConfig.entities.workflowDefinition.name]: () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/workflow-definition').then((m) => m.factoryWorkflowDefinition()),\n [RootConfig.entities.workflowInstance.name]: () =>\n import('@acorex-platform/module-workflow-management-client/contracts/entities/workflow-instance').then((m) => m.factoryWorkflowInstance()),\n },\n });\n}\n\nexport { workflowManagementLocalEntityCatalog } from '@acorex-platform/module-workflow-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,sCAAsC,GAAA;AACpD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;YACP,mBAAmB,EAAE,MACnB,OAAO,yFAAyF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,CAAC;AAC5I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,MAC7C,OAAO,2FAA2F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,EAAE,CAAC;AAChJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,MACrC,OAAO,kFAAkF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAC/H,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,MAC7C,OAAO,2FAA2F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,EAAE,CAAC;AAChJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,GAAG,MAC3C,OAAO,yFAAyF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,CAAC;AAC7I,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;ACnCA;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-workflow-management-client-save-workflow-definition-activities.command-spFF77AO.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/entities/workflow-definition/commands/save-workflow-definition-activities.command.ts"],"sourcesContent":["\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPWorkflowGraph } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-workflow-management-client/contracts';\n\nexport const WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:Save';\n\nexport interface SaveWorkflowDefinitionActivitiesInput {\n id: string;\n graph: AXPWorkflowGraph;\n /** When true, suppresses success toast (used by background auto-save). */\n silent?: boolean;\n}\n\n/**\n * Persists the workflow definition graph edited from the Activities custom page.\n */\n@Injectable()\nexport class SaveWorkflowDefinitionActivitiesCommand\n implements AXPCommand<SaveWorkflowDefinitionActivitiesInput, unknown>\n{\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: SaveWorkflowDefinitionActivitiesInput): AXPCommandExecuteResultPromise<unknown> {\n const { id, graph, silent } = input;\n\n if (!id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const entityRef = `${RootConfig.module.name}.${RootConfig.entities.workflowDefinition.name}`;\n const dataAccessor = this.entityService.withEntity(entityRef).data<any, any>();\n\n await dataAccessor.update(id, { graph });\n\n return { success: true, kind: 'object',\n data: { id, graph },\n metadata: { refresh: false },\n ...(silent\n ? {}\n : {\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.success.description'),\n },\n }),\n };\n } catch (error: unknown) {\n const message =\n error instanceof Error\n ? error.message\n : await this.translationService.translateAsync('@general:messages.generic.error.description');\n\n return {\n success: false,\n message: { text: message },\n };\n }\n }\n}\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,2CAA2C,GAAG;AAS3D;;AAEG;MAEU,uCAAuC,CAAA;AADpD,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AA2CnE,IAAA;IAzCC,MAAM,OAAO,CAAC,KAA4C,EAAA;QACxD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK;QAEnC,IAAI,CAAC,EAAE,EAAE;YACP,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,uCAAuC,CAAC;AAC5F,iBAAA;aACF;QACH;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAC5F,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAY;YAE9E,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAExC,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;AACpC,gBAAA,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;AACnB,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC5B,gBAAA,IAAI;AACF,sBAAE;AACF,sBAAE;AACE,wBAAA,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,+CAA+C,CAAC;AACpG,yBAAA;qBACF,CAAC;aACP;QACH;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GACX,KAAK,YAAY;kBACb,KAAK,CAAC;kBACN,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,6CAA6C,CAAC;YAEjG,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC3B;QACH;IACF;8GA9CW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvC,uCAAuC,EAAA,CAAA,CAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-workflow-management-client-save-workflow-definition-activities.command-spFF77AO.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/entities/workflow-definition/commands/save-workflow-definition-activities.command.ts"],"sourcesContent":["\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPWorkflowGraph } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-workflow-management-client/contracts';\n\nexport const WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:Save';\n\nexport interface SaveWorkflowDefinitionActivitiesInput {\n id: string;\n graph: AXPWorkflowGraph;\n /** When true, suppresses success toast (used by background auto-save). */\n silent?: boolean;\n}\n\n/**\n * Persists the workflow definition graph edited from the Activities custom page.\n */\n@Injectable()\nexport class SaveWorkflowDefinitionActivitiesCommand\n implements AXPCommand<SaveWorkflowDefinitionActivitiesInput, unknown>\n{\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: SaveWorkflowDefinitionActivitiesInput): AXPCommandExecuteResultPromise<unknown> {\n const { id, graph, silent } = input;\n\n if (!id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const entityRef = `${RootConfig.module.name}.${RootConfig.entities.workflowDefinition.name}`;\n const dataAccessor = this.entityService.withEntity(entityRef).data<any, any>();\n\n await dataAccessor.update(id, { graph });\n\n return { success: true, kind: 'object',\n data: { id, graph },\n metadata: { refresh: false },\n ...(silent\n ? {}\n : {\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.success.description'),\n },\n }),\n };\n } catch (error: unknown) {\n const message =\n error instanceof Error\n ? error.message\n : await this.translationService.translateAsync('@general:messages.generic.error.description');\n\n return {\n success: false,\n message: { text: message },\n };\n }\n }\n}\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,2CAA2C,GAAG;AAS3D;;AAEG;MAEU,uCAAuC,CAAA;AADpD,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AA2CnE,IAAA;IAzCC,MAAM,OAAO,CAAC,KAA4C,EAAA;QACxD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK;QAEnC,IAAI,CAAC,EAAE,EAAE;YACP,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,uCAAuC,CAAC;AAC5F,iBAAA;aACF;QACH;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAC5F,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAY;YAE9E,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAExC,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;AACpC,gBAAA,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;AACnB,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC5B,gBAAA,IAAI;AACF,sBAAE;AACF,sBAAE;AACE,wBAAA,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,+CAA+C,CAAC;AACpG,yBAAA;qBACF,CAAC;aACP;QACH;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GACX,KAAK,YAAY;kBACb,KAAK,CAAC;kBACN,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,6CAA6C,CAAC;YAEjG,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC3B;QACH;IACF;8GA9CW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvC,uCAAuC,EAAA,CAAA,CAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-activity-instance-rows.utils-CMVZYS4y.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-instance-activity-instances-page/workflow-activity-instance-rows.utils.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport type { AXPActivityExecutionContextState, AXPWorkflowActivityInstance, AXPWorkflowDefinition, AXPWorkflowInstance } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Types ----\n\n/** One row in a workflow activity timeline (engine state, definition graph, persisted audit keys). */\nexport interface AXMWorkflowActivityInstanceViewRow {\n contextId: string;\n nodeId: string;\n activityTitle: string;\n activityTypeName: string;\n isHumanTask: boolean;\n status: string;\n startedAt: string;\n completedAt: string | null;\n /** Connection port / outcome that was taken after this step (from workflow state variables). */\n outcomeDisplay: string;\n /** Input from graph definition — passed to `ax-json-viewer`. */\n inputForViewer: unknown;\n /** Captured output for this step — passed to `ax-json-viewer`. */\n outputForViewer: unknown;\n humanAssigneesDisplay: string;\n /** Who performed the step (from persisted `completedByLabel` / `completedByUserId` when available). */\n performedByDisplay: string;\n}\n\n//#endregion\n\n//#region ---- Helpers (display only) ----\n\nexport function formatReadableActivityName(value: string): string {\n return value\n .replace(/^workflow-activity:/, '')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/[-_]/g, ' ')\n .split(' ')\n .filter((token) => token.length > 0)\n .map((token) => token.charAt(0).toUpperCase() + token.slice(1))\n .join(' ');\n}\n\nfunction normalizeUserIds(value: unknown): string[] {\n if (value == null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.filter((v): v is string => typeof v === 'string' && v.trim().length > 0);\n }\n if (typeof value === 'string' && value.trim().length > 0) {\n return [value.trim()];\n }\n return [];\n}\n\nfunction formatHumanAssigneesFromPayload(payload: Record<string, unknown> | null | undefined): string {\n if (!payload) {\n return '';\n }\n const assigned = normalizeUserIds(payload['assignedUserIds']);\n const candidateUsers = normalizeUserIds(payload['candidateUserIds']);\n const candidateRoles = normalizeUserIds(payload['candidateRoleIds']);\n const labels = [\n ...assigned.map((id) => `User:${id}`),\n ...candidateUsers.map((id) => `Candidate:${id}`),\n ...candidateRoles.map((id) => `Role:${id}`),\n ];\n const unique = [...new Set(labels)];\n return unique.length > 0 ? unique.join(', ') : '';\n}\n\nfunction formatPerformedBy(label: unknown, id: unknown, empty: string): string {\n const ls = label != null && String(label).trim() !== '' ? String(label).trim() : '';\n const idStr = id != null && String(id).trim() !== '' ? String(id).trim() : '';\n if (ls && idStr) {\n return `${ls} (${idStr})`;\n }\n if (ls) {\n return ls;\n }\n if (idStr) {\n return idStr;\n }\n return empty;\n}\n\nfunction resolveActivityTitle(graphActivity: AXPWorkflowActivityInstance | undefined, nodeId: string): string {\n const rawTitle = graphActivity?.inputs?.['title'];\n if (typeof rawTitle === 'string' && rawTitle.trim().length > 0) {\n return rawTitle.trim();\n }\n if (graphActivity?.name) {\n return formatReadableActivityName(graphActivity.name);\n }\n return formatReadableActivityName(nodeId);\n}\n\nfunction resolveOutputForViewer(\n props: Record<string, unknown>,\n nodeId: string,\n ctx: AXPActivityExecutionContextState,\n): unknown {\n const key = `${nodeId}_activityOutput`;\n if (key in props && props[key] !== undefined) {\n return props[key];\n }\n if (ctx.activityState != null) {\n return ctx.activityState;\n }\n const p = ctx.properties;\n if (p && typeof p === 'object' && Object.keys(p as object).length > 0) {\n return p;\n }\n return null;\n}\n\n/**\n * Maps activity execution status to `status-chips.css` modifier classes.\n */\nexport function workflowActivityStatusChipModifier(\n status: string,\n): 'primary' | 'success' | 'warning' | 'danger' | 'neutral' | 'secondary' {\n const s = (status ?? '').trim().toLowerCase();\n if (s === 'running' || s === 'pending' || s === 'executing') {\n return 'primary';\n }\n if (s === 'completed' || s === 'succeeded' || s === 'success') {\n return 'success';\n }\n if (s === 'canceled' || s === 'cancelled') {\n return 'neutral';\n }\n if (s === 'faulted' || s === 'failed' || s === 'error') {\n return 'danger';\n }\n if (s === 'suspended' || s === 'waiting') {\n return 'warning';\n }\n return 'secondary';\n}\n\n/**\n * Normalizes a value for `ax-json-viewer` (expects a root object).\n */\nexport function workflowActivityToViewerRoot(value: unknown): Record<string, unknown> {\n if (value === null || value === undefined) {\n return {};\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n return value as Record<string, unknown>;\n }\n return { value };\n}\n\nexport function buildWorkflowActivityInstanceRows(\n instance: AXPWorkflowInstance | null | undefined,\n definition: AXPWorkflowDefinition | null | undefined,\n emptyAssigneesLabel: string,\n notAvailableLabel: string,\n): AXMWorkflowActivityInstanceViewRow[] {\n if (!instance?.workflowState) {\n return [];\n }\n const props = (instance.workflowState.properties ?? {}) as Record<string, unknown>;\n const contexts = instance.workflowState.activityExecutionContexts ?? [];\n const activities = definition?.graph?.activities ?? [];\n const findActivity = (nodeId: string) => activities.find((a) => a.id === nodeId);\n const extended = instance as AXPWorkflowInstance & {\n bookmarks?: Array<{\n activityId?: string;\n payload?: Record<string, unknown> | null;\n isConsumed?: boolean;\n consumed?: boolean;\n }>;\n };\n const bookmarks = extended.bookmarks ?? [];\n\n const rows: AXMWorkflowActivityInstanceViewRow[] = contexts.map((ctx: AXPActivityExecutionContextState) => {\n const nodeId = ctx.scheduledActivityNodeId;\n const graphActivity = findActivity(nodeId);\n const isHumanTask =\n graphActivity?.name === 'workflow-activity:human-task' || graphActivity?.name === 'workflow-activity:cartable';\n const bookmark = bookmarks.find((b) => b.activityId === nodeId);\n const payload = bookmark?.payload && typeof bookmark.payload === 'object' ? bookmark.payload : null;\n let humanAssignees = isHumanTask ? formatHumanAssigneesFromPayload(payload) : '';\n if (isHumanTask && !humanAssignees) {\n humanAssignees = emptyAssigneesLabel;\n }\n\n const outKey = `${nodeId}_outcome`;\n const outcomeRaw = props[outKey];\n const outcomeDisplay =\n outcomeRaw !== undefined && outcomeRaw !== null && String(outcomeRaw).length > 0\n ? String(outcomeRaw)\n : notAvailableLabel;\n\n const inputForViewer: unknown = graphActivity?.inputs ?? null;\n const outputForViewer = resolveOutputForViewer(props, nodeId, ctx);\n\n const labelKey = `${nodeId}_completedByLabel`;\n const idKey = `${nodeId}_completedByUserId`;\n const performedByDisplay = formatPerformedBy(props[labelKey], props[idKey], notAvailableLabel);\n\n return {\n contextId: ctx.id,\n nodeId,\n activityTitle: resolveActivityTitle(graphActivity, nodeId),\n activityTypeName: graphActivity?.name ?? notAvailableLabel,\n isHumanTask,\n status: String(ctx.status ?? ''),\n startedAt: ctx.startedAt ?? '',\n completedAt: ctx.completedAt ?? null,\n outcomeDisplay,\n inputForViewer,\n outputForViewer,\n humanAssigneesDisplay: isHumanTask ? humanAssignees : notAvailableLabel,\n performedByDisplay,\n };\n });\n\n rows.sort((a, b) => {\n const ta = new Date(a.startedAt).getTime();\n const tb = new Date(b.startedAt).getTime();\n if (ta !== tb) {\n return ta - tb;\n }\n return a.contextId.localeCompare(b.contextId);\n });\n\n return rows;\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-activity-instance-rows.utils-CMVZYS4y.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-instance-activity-instances-page/workflow-activity-instance-rows.utils.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport type { AXPActivityExecutionContextState, AXPWorkflowActivityInstance, AXPWorkflowDefinition, AXPWorkflowInstance } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Types ----\n\n/** One row in a workflow activity timeline (engine state, definition graph, persisted audit keys). */\nexport interface AXMWorkflowActivityInstanceViewRow {\n contextId: string;\n nodeId: string;\n activityTitle: string;\n activityTypeName: string;\n isHumanTask: boolean;\n status: string;\n startedAt: string;\n completedAt: string | null;\n /** Connection port / outcome that was taken after this step (from workflow state variables). */\n outcomeDisplay: string;\n /** Input from graph definition — passed to `ax-json-viewer`. */\n inputForViewer: unknown;\n /** Captured output for this step — passed to `ax-json-viewer`. */\n outputForViewer: unknown;\n humanAssigneesDisplay: string;\n /** Who performed the step (from persisted `completedByLabel` / `completedByUserId` when available). */\n performedByDisplay: string;\n}\n\n//#endregion\n\n//#region ---- Helpers (display only) ----\n\nexport function formatReadableActivityName(value: string): string {\n return value\n .replace(/^workflow-activity:/, '')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/[-_]/g, ' ')\n .split(' ')\n .filter((token) => token.length > 0)\n .map((token) => token.charAt(0).toUpperCase() + token.slice(1))\n .join(' ');\n}\n\nfunction normalizeUserIds(value: unknown): string[] {\n if (value == null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.filter((v): v is string => typeof v === 'string' && v.trim().length > 0);\n }\n if (typeof value === 'string' && value.trim().length > 0) {\n return [value.trim()];\n }\n return [];\n}\n\nfunction formatHumanAssigneesFromPayload(payload: Record<string, unknown> | null | undefined): string {\n if (!payload) {\n return '';\n }\n const assigned = normalizeUserIds(payload['assignedUserIds']);\n const candidateUsers = normalizeUserIds(payload['candidateUserIds']);\n const candidateRoles = normalizeUserIds(payload['candidateRoleIds']);\n const labels = [\n ...assigned.map((id) => `User:${id}`),\n ...candidateUsers.map((id) => `Candidate:${id}`),\n ...candidateRoles.map((id) => `Role:${id}`),\n ];\n const unique = [...new Set(labels)];\n return unique.length > 0 ? unique.join(', ') : '';\n}\n\nfunction formatPerformedBy(label: unknown, id: unknown, empty: string): string {\n const ls = label != null && String(label).trim() !== '' ? String(label).trim() : '';\n const idStr = id != null && String(id).trim() !== '' ? String(id).trim() : '';\n if (ls && idStr) {\n return `${ls} (${idStr})`;\n }\n if (ls) {\n return ls;\n }\n if (idStr) {\n return idStr;\n }\n return empty;\n}\n\nfunction resolveActivityTitle(graphActivity: AXPWorkflowActivityInstance | undefined, nodeId: string): string {\n const rawTitle = graphActivity?.inputs?.['title'];\n if (typeof rawTitle === 'string' && rawTitle.trim().length > 0) {\n return rawTitle.trim();\n }\n if (graphActivity?.name) {\n return formatReadableActivityName(graphActivity.name);\n }\n return formatReadableActivityName(nodeId);\n}\n\nfunction resolveOutputForViewer(\n props: Record<string, unknown>,\n nodeId: string,\n ctx: AXPActivityExecutionContextState,\n): unknown {\n const key = `${nodeId}_activityOutput`;\n if (key in props && props[key] !== undefined) {\n return props[key];\n }\n if (ctx.activityState != null) {\n return ctx.activityState;\n }\n const p = ctx.properties;\n if (p && typeof p === 'object' && Object.keys(p as object).length > 0) {\n return p;\n }\n return null;\n}\n\n/**\n * Maps activity execution status to `status-chips.css` modifier classes.\n */\nexport function workflowActivityStatusChipModifier(\n status: string,\n): 'primary' | 'success' | 'warning' | 'danger' | 'neutral' | 'secondary' {\n const s = (status ?? '').trim().toLowerCase();\n if (s === 'running' || s === 'pending' || s === 'executing') {\n return 'primary';\n }\n if (s === 'completed' || s === 'succeeded' || s === 'success') {\n return 'success';\n }\n if (s === 'canceled' || s === 'cancelled') {\n return 'neutral';\n }\n if (s === 'faulted' || s === 'failed' || s === 'error') {\n return 'danger';\n }\n if (s === 'suspended' || s === 'waiting') {\n return 'warning';\n }\n return 'secondary';\n}\n\n/**\n * Normalizes a value for `ax-json-viewer` (expects a root object).\n */\nexport function workflowActivityToViewerRoot(value: unknown): Record<string, unknown> {\n if (value === null || value === undefined) {\n return {};\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n return value as Record<string, unknown>;\n }\n return { value };\n}\n\nexport function buildWorkflowActivityInstanceRows(\n instance: AXPWorkflowInstance | null | undefined,\n definition: AXPWorkflowDefinition | null | undefined,\n emptyAssigneesLabel: string,\n notAvailableLabel: string,\n): AXMWorkflowActivityInstanceViewRow[] {\n if (!instance?.workflowState) {\n return [];\n }\n const props = (instance.workflowState.properties ?? {}) as Record<string, unknown>;\n const contexts = instance.workflowState.activityExecutionContexts ?? [];\n const activities = definition?.graph?.activities ?? [];\n const findActivity = (nodeId: string) => activities.find((a) => a.id === nodeId);\n const extended = instance as AXPWorkflowInstance & {\n bookmarks?: Array<{\n activityId?: string;\n payload?: Record<string, unknown> | null;\n isConsumed?: boolean;\n consumed?: boolean;\n }>;\n };\n const bookmarks = extended.bookmarks ?? [];\n\n const rows: AXMWorkflowActivityInstanceViewRow[] = contexts.map((ctx: AXPActivityExecutionContextState) => {\n const nodeId = ctx.scheduledActivityNodeId;\n const graphActivity = findActivity(nodeId);\n const isHumanTask =\n graphActivity?.name === 'workflow-activity:human-task' || graphActivity?.name === 'workflow-activity:cartable';\n const bookmark = bookmarks.find((b) => b.activityId === nodeId);\n const payload = bookmark?.payload && typeof bookmark.payload === 'object' ? bookmark.payload : null;\n let humanAssignees = isHumanTask ? formatHumanAssigneesFromPayload(payload) : '';\n if (isHumanTask && !humanAssignees) {\n humanAssignees = emptyAssigneesLabel;\n }\n\n const outKey = `${nodeId}_outcome`;\n const outcomeRaw = props[outKey];\n const outcomeDisplay =\n outcomeRaw !== undefined && outcomeRaw !== null && String(outcomeRaw).length > 0\n ? String(outcomeRaw)\n : notAvailableLabel;\n\n const inputForViewer: unknown = graphActivity?.inputs ?? null;\n const outputForViewer = resolveOutputForViewer(props, nodeId, ctx);\n\n const labelKey = `${nodeId}_completedByLabel`;\n const idKey = `${nodeId}_completedByUserId`;\n const performedByDisplay = formatPerformedBy(props[labelKey], props[idKey], notAvailableLabel);\n\n return {\n contextId: ctx.id,\n nodeId,\n activityTitle: resolveActivityTitle(graphActivity, nodeId),\n activityTypeName: graphActivity?.name ?? notAvailableLabel,\n isHumanTask,\n status: String(ctx.status ?? ''),\n startedAt: ctx.startedAt ?? '',\n completedAt: ctx.completedAt ?? null,\n outcomeDisplay,\n inputForViewer,\n outputForViewer,\n humanAssigneesDisplay: isHumanTask ? humanAssignees : notAvailableLabel,\n performedByDisplay,\n };\n });\n\n rows.sort((a, b) => {\n const ta = new Date(a.startedAt).getTime();\n const tb = new Date(b.startedAt).getTime();\n if (ta !== tb) {\n return ta - tb;\n }\n return a.contextId.localeCompare(b.contextId);\n });\n\n return rows;\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-configurator-widget-column.component-D0E2zjIA.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-configurator/workflow-configurator-widget-column.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport type { AXMWorkflowManagementWorkflowDefinitionEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-workflow-management-client/contracts';\nimport type { WorkflowConfiguratorValue } from './workflow-configurator.types';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-configurator-widget-column',\n template: `\n @if (displayTitle()) {\n <i class=\"fa-light fa-diagram-project fa-fw\"></i>&nbsp;\n <span [title]=\"displayTitle()\" class=\"text-xs font-medium\">{{ displayTitle() }}</span>\n } @else if (workflowName()) {\n <span [title]=\"workflowName()\" class=\"text-xs font-medium\">{{ workflowName() }}</span>\n } @else {\n <span class=\"text-muted\">---</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMWorkflowConfiguratorWidgetColumnComponent extends AXPColumnWidgetComponent<WorkflowConfiguratorValue> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- State Signals ----\n\n protected displayTitle = signal('');\n\n protected workflowName = signal('');\n\n //#endregion\n\n //#region ---- Effects ----\n\n constructor() {\n super();\n effect(() => {\n const config = this.rawValue as WorkflowConfiguratorValue | undefined;\n const name = config?.workflowName?.trim() ?? '';\n this.workflowName.set(name);\n\n const definitionId = config?.workflowDefinitionId?.trim() ?? '';\n if (!definitionId) {\n this.displayTitle.set(name);\n return;\n }\n\n void this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workflowDefinition.name)\n .data()\n .byKey(definitionId)\n .then((row) => {\n const entity = row as AXMWorkflowManagementWorkflowDefinitionEntityModel;\n const title = this.translation.resolve(entity.title).trim();\n this.displayTitle.set(title || name);\n })\n .catch(() => {\n this.displayTitle.set(name);\n });\n });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;AAAA;AAUA;AAEA;AAkBM,MAAO,4CAA6C,SAAQ,wBAAmD,CAAA;;;AAkBnH,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;AAhBQ,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;;;QAMjD,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,EAAE;yFAAC;QAEzB,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,EAAE;yFAAC;QAQjC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAiD;YACrE,MAAM,IAAI,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAE3B,MAAM,YAAY,GAAG,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE;YAC/D,IAAI,CAAC,YAAY,EAAE;AACjB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B;YACF;YAEA,KAAK,IAAI,CAAC;AACP,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI;AAC9E,iBAAA,IAAI;iBACJ,KAAK,CAAC,YAAY;AAClB,iBAAA,IAAI,CAAC,CAAC,GAAG,KAAI;gBACZ,MAAM,MAAM,GAAG,GAAyD;AACxE,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;AACtC,YAAA,CAAC;iBACA,KAAK,CAAC,MAAK;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;8GA5CW,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4CAA4C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAd7C;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAhBxD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,QAAQ,EAAE;;;;;;;;;AAST,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;AAChC,iBAAA;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-configurator-widget-column.component-D0E2zjIA.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-configurator/workflow-configurator-widget-column.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport type { AXMWorkflowManagementWorkflowDefinitionEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-workflow-management-client/contracts';\nimport type { WorkflowConfiguratorValue } from './workflow-configurator.types';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-configurator-widget-column',\n template: `\n @if (displayTitle()) {\n <i class=\"fa-light fa-diagram-project fa-fw\"></i>&nbsp;\n <span [title]=\"displayTitle()\" class=\"text-xs font-medium\">{{ displayTitle() }}</span>\n } @else if (workflowName()) {\n <span [title]=\"workflowName()\" class=\"text-xs font-medium\">{{ workflowName() }}</span>\n } @else {\n <span class=\"text-muted\">---</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMWorkflowConfiguratorWidgetColumnComponent extends AXPColumnWidgetComponent<WorkflowConfiguratorValue> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- State Signals ----\n\n protected displayTitle = signal('');\n\n protected workflowName = signal('');\n\n //#endregion\n\n //#region ---- Effects ----\n\n constructor() {\n super();\n effect(() => {\n const config = this.rawValue as WorkflowConfiguratorValue | undefined;\n const name = config?.workflowName?.trim() ?? '';\n this.workflowName.set(name);\n\n const definitionId = config?.workflowDefinitionId?.trim() ?? '';\n if (!definitionId) {\n this.displayTitle.set(name);\n return;\n }\n\n void this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workflowDefinition.name)\n .data()\n .byKey(definitionId)\n .then((row) => {\n const entity = row as AXMWorkflowManagementWorkflowDefinitionEntityModel;\n const title = this.translation.resolve(entity.title).trim();\n this.displayTitle.set(title || name);\n })\n .catch(() => {\n this.displayTitle.set(name);\n });\n });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;AAAA;AAUA;AAEA;AAkBM,MAAO,4CAA6C,SAAQ,wBAAmD,CAAA;;;AAkBnH,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;AAhBQ,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;;;QAMjD,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,EAAE;yFAAC;QAEzB,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,EAAE;yFAAC;QAQjC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAiD;YACrE,MAAM,IAAI,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAE3B,MAAM,YAAY,GAAG,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE;YAC/D,IAAI,CAAC,YAAY,EAAE;AACjB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC3B;YACF;YAEA,KAAK,IAAI,CAAC;AACP,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI;AAC9E,iBAAA,IAAI;iBACJ,KAAK,CAAC,YAAY;AAClB,iBAAA,IAAI,CAAC,CAAC,GAAG,KAAI;gBACZ,MAAM,MAAM,GAAG,GAAyD;AACxE,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;AACtC,YAAA,CAAC;iBACA,KAAK,CAAC,MAAK;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;8GA5CW,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4CAA4C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAd7C;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAhBxD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,QAAQ,EAAE;;;;;;;;;AAST,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;AAChC,iBAAA;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-configurator-widget-edit.component-CVTeOv-q.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-configurator/workflow-configurator.utils.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-configurator/workflow-configurator.component.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-configurator/workflow-configurator-widget-edit.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport type { AXPWidgetProperty, AXPWidgetPropertyGroup } from '@acorex-platform/framework-shared/widget-core';\nimport { type AXPProperty, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { mapAXPPropertyToWidgetProperty } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\n\nimport { castArray, get, isString } from 'lodash';\nimport type {\n WorkflowConfiguratorCatalogScopeFilter,\n WorkflowConfiguratorTemplateInputFilter,\n} from './workflow-configurator.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Workflow inputs normally supplied when a run is started from runtime context, not on the template. */\nexport const WORKFLOW_CONFIGURATOR_RUNTIME_INPUT_NAMES = new Set([\n 'employeeId',\n 'employeeDisplayName',\n 'eventTypeId',\n 'eventTypeTitle',\n 'recordTypeId',\n 'recordTypeTitle',\n 'effectiveDate',\n 'assessmentCaseTitle',\n 'targetEmployeeStatusId',\n]);\n\n//#endregion\n\n//#region ---- Catalog scope matching ----\n\nexport interface WorkflowConfiguratorCatalogScopeRow {\n name?: string;\n catalogScopeKeys?: string[];\n catalogScopes?: Array<{ name?: string }>;\n}\n\n/**\n * Resolves catalog scope keys from persisted row shape (keys or enriched scopes).\n */\nexport function resolveWorkflowCatalogScopeKeys(row: WorkflowConfiguratorCatalogScopeRow): string[] {\n const keys = new Set<string>();\n\n for (const key of row.catalogScopeKeys ?? []) {\n if (isString(key) && key.trim()) {\n keys.add(key.trim());\n }\n }\n\n for (const scope of row.catalogScopes ?? []) {\n const name = scope?.name?.trim();\n if (name) {\n keys.add(name);\n }\n }\n\n return [...keys];\n}\n\n/**\n * Builds a workflow list filter from registered scope key names.\n */\nexport function workflowConfiguratorCatalogScopeFilterFromKeys(\n catalogScopeKeys: string | string[] | undefined,\n): WorkflowConfiguratorCatalogScopeFilter | undefined {\n const anyOf = castArray(catalogScopeKeys ?? [])\n .filter((k) => isString(k) && k.trim().length > 0)\n .map((k) => k.trim());\n\n return anyOf.length > 0 ? { anyOf } : undefined;\n}\n\n/**\n * Query filter for published workflow definitions, optionally restricted by catalog scope keys.\n */\nexport function buildWorkflowConfiguratorListQueryFilter(\n scopeFilter: WorkflowConfiguratorCatalogScopeFilter | undefined,\n): AXDataSourceFilterOption {\n const publishedFilter: AXDataSourceFilterOption = {\n field: 'statusId',\n operator: { type: 'equal' },\n value: AXPSystemStatusType.Published,\n };\n\n const anyOf = scopeFilter?.anyOf?.map((k) => k.trim()).filter(Boolean) ?? [];\n if (anyOf.length === 0) {\n return publishedFilter;\n }\n\n return {\n logic: 'and',\n filters: [\n publishedFilter,\n {\n logic: 'or',\n filters: anyOf.map((scopeKey) => ({\n field: 'catalogScopeKeys',\n operator: { type: 'contains' },\n value: scopeKey,\n })),\n },\n ],\n };\n}\n\n/**\n * Returns true when the row's catalog scope keys satisfy the configurator filter.\n */\nexport function matchesWorkflowConfiguratorCatalogScopeFilter(\n catalogScopeKeys: string[] | undefined,\n filter: WorkflowConfiguratorCatalogScopeFilter | undefined,\n): boolean {\n if (!filter) {\n return true;\n }\n\n const keys = (catalogScopeKeys ?? []).filter((k) => isString(k) && k.trim().length > 0);\n if (filter.keyPrefix?.trim()) {\n const prefix = filter.keyPrefix.trim();\n if (!keys.some((k) => k.startsWith(prefix))) {\n return false;\n }\n }\n\n const anyOf = filter.anyOf?.map((k) => k.trim()).filter(Boolean) ?? [];\n if (anyOf.length > 0 && !anyOf.some((scope) => keys.includes(scope))) {\n return false;\n }\n\n const allOf = filter.allOf?.map((k) => k.trim()).filter(Boolean) ?? [];\n if (allOf.length > 0 && !allOf.every((scope) => keys.includes(scope))) {\n return false;\n }\n\n return true;\n}\n\nfunction mergeTemplateInputCatalogScopeFilter(\n property: AXPProperty,\n templateInputFilters?: Record<string, WorkflowConfiguratorTemplateInputFilter>,\n): AXPProperty {\n const name = property.name?.trim();\n if (!name || !templateInputFilters) {\n return property;\n }\n\n const scopeFilter = templateInputFilters[name]?.catalogScopeKeys;\n if (!scopeFilter) {\n return property;\n }\n\n const values = castArray(scopeFilter).filter((v) => isString(v) && v.trim().length > 0);\n if (values.length === 0) {\n return property;\n }\n\n const iface = property.interface;\n if (!iface?.options) {\n return property;\n }\n\n const existingFilter = get(iface.options, 'filter');\n const scopeConditions = values.map((value) => ({\n field: 'catalogScopeKeys',\n operator: { type: 'contains' as const },\n value,\n }));\n\n const mergedFilter =\n scopeConditions.length === 1\n ? scopeConditions[0]\n : { logic: 'or' as const, filters: scopeConditions };\n\n return {\n ...property,\n interface: {\n ...iface,\n options: {\n ...iface.options,\n filter: existingFilter\n ? { logic: 'and', filters: [existingFilter, mergedFilter] }\n : mergedFilter,\n },\n },\n };\n}\n\n//#endregion\n\n//#region ---- Mapping ----\n\n/**\n * Maps workflow definition `inputs` to property viewer rows for {@link AXPItemConfiguratorComponent}.\n */\nexport function mapWorkflowInputsToWidgetProperties(\n inputs: AXPProperty[] | undefined,\n translation: AXTranslationService,\n templateInputNames?: string[],\n templateInputFilters?: Record<string, WorkflowConfiguratorTemplateInputFilter>,\n): AXPWidgetProperty[] {\n const list = inputs ?? [];\n const allowSet =\n templateInputNames && templateInputNames.length > 0\n ? new Set(templateInputNames)\n : null;\n\n const group: AXPWidgetPropertyGroup = {\n name: 'workflow-template-inputs',\n title: '@workflow-management:workflow-configurator.configure.group-title',\n order: 0,\n };\n\n const filtered = list.filter((property) => {\n const name = property.name?.trim();\n if (!name) {\n return false;\n }\n if (allowSet) {\n return allowSet.has(name);\n }\n return !WORKFLOW_CONFIGURATOR_RUNTIME_INPUT_NAMES.has(name);\n });\n\n return filtered.map((property, index) =>\n mapAXPPropertyToWidgetProperty(\n mergeTemplateInputCatalogScopeFilter(property, templateInputFilters),\n {\n group,\n order: index,\n valuePathPrefix: 'options',\n resolveTitle: (prop) =>\n typeof prop.title === 'string'\n ? prop.title\n : (translation.resolve(prop.title) ?? prop.name),\n resolveDescription: (prop) =>\n prop.description === undefined\n ? undefined\n : typeof prop.description === 'string'\n ? prop.description\n : translation.resolve(prop.description),\n },\n ),\n );\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPItemConfiguratorComponent, ItemConfiguratorListItem } from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport { isEqual } from 'lodash';\nimport type { AXMWorkflowManagementWorkflowDefinitionEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-workflow-management-client/contracts';\nimport type {\n WorkflowConfiguratorCatalogScopeFilter,\n WorkflowConfiguratorTemplateInputFilter,\n WorkflowConfiguratorValue,\n} from './workflow-configurator.types';\nimport {\n buildWorkflowConfiguratorListQueryFilter,\n mapWorkflowInputsToWidgetProperties,\n matchesWorkflowConfiguratorCatalogScopeFilter,\n resolveWorkflowCatalogScopeKeys,\n type WorkflowConfiguratorCatalogScopeRow,\n} from './workflow-configurator.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype WorkflowDefinitionListRow = Pick<\n AXMWorkflowManagementWorkflowDefinitionEntityModel,\n 'id' | 'name' | 'title' | 'description' | 'inputs' | 'catalogScopeKeys' | 'catalogScopes'\n>;\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Select a workflow definition and configure template-time inputs via {@link AXPItemConfiguratorComponent}.\n */\n@Component({\n selector: 'axm-workflow-configurator',\n template: `\n <axp-item-configurator\n [(selectedItemId)]=\"selectedWorkflowIdModel\"\n [(values)]=\"defaultInputModel\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n [items]=\"configuratorItems()\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col',\n '[attr.readonly]': 'readonly() ? \"\" : null',\n },\n styles: [\n `@reference '@acorex/styles/themes/default.css';\n\n :host([readonly]) {\n pointer-events: none;\n opacity: 0.7;\n }\n `,\n ],\n imports: [AXPItemConfiguratorComponent],\n})\nexport class AXMWorkflowConfiguratorComponent {\n //#region ---- Inputs ----\n\n value = model<WorkflowConfiguratorValue>({\n workflowDefinitionId: '',\n workflowName: '',\n defaultInput: {},\n });\n\n label = input<string>('@workflow-management:workflow-configurator.label');\n\n readonly = input<boolean>(false);\n\n /**\n * When set, only these workflow input names are configurable; otherwise runtime inputs are excluded by default.\n */\n templateInputNames = input<string[] | undefined>(undefined);\n\n /**\n * Limits workflow definitions to rows whose {@link catalogScopeKeys} match (e.g. HR lifecycle).\n */\n catalogScopeFilter = input<WorkflowConfiguratorCatalogScopeFilter | undefined>(undefined);\n\n /**\n * Per template input lookup filters (e.g. `questionnaireId` → HR catalog scopes).\n */\n templateInputFilters = input<Record<string, WorkflowConfiguratorTemplateInputFilter> | undefined>(\n undefined,\n );\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n protected selectedWorkflowIdModel = model<string>('');\n\n protected defaultInputModel = model<Record<string, unknown>>({});\n\n protected workflows = signal<WorkflowDefinitionListRow[]>([]);\n\n protected configuratorItems = computed<ItemConfiguratorListItem[]>(() => {\n const names = this.templateInputNames();\n const inputFilters = this.templateInputFilters();\n return this.workflows().map((row) => ({\n id: row.id,\n title: (row.title ?? row.name) as ItemConfiguratorListItem['title'],\n icon: 'fa-light fa-diagram-project',\n description: row.description as ItemConfiguratorListItem['description'],\n propertyDefinitions: mapWorkflowInputsToWidgetProperties(\n row.inputs,\n this.translation,\n names,\n inputFilters,\n ),\n }));\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n effect(() => {\n this.catalogScopeFilter();\n untracked(() => {\n void this.loadWorkflowDefinitions();\n });\n });\n\n /** Sync inner models from bound `value` only (context/discard); never from model edits. */\n effect(() => {\n const v = this.value();\n const id = v?.workflowDefinitionId?.trim() ?? '';\n const defaults = v?.defaultInput ?? {};\n\n untracked(() => {\n if (this.selectedWorkflowIdModel() !== id) {\n this.selectedWorkflowIdModel.set(id);\n }\n if (!isEqual(this.defaultInputModel(), defaults)) {\n this.defaultInputModel.set({ ...defaults });\n }\n });\n });\n\n effect(() => {\n const id = this.selectedWorkflowIdModel();\n const defaults = this.defaultInputModel();\n const row = this.workflows().find((w) => w.id === id);\n const current = untracked(() => this.value());\n\n const next: WorkflowConfiguratorValue = {\n workflowDefinitionId: id,\n workflowName:\n row?.name?.trim() ??\n (current.workflowDefinitionId === id ? (current.workflowName?.trim() ?? '') : ''),\n defaultInput: { ...defaults },\n };\n\n const normalizedCurrent: WorkflowConfiguratorValue = {\n workflowDefinitionId: current.workflowDefinitionId?.trim() ?? '',\n workflowName: current.workflowName?.trim() ?? '',\n defaultInput: current.defaultInput ?? {},\n };\n\n if (!isEqual(next, normalizedCurrent)) {\n untracked(() => this.value.set(next));\n }\n });\n }\n\n //#endregion\n\n //#region ---- Data loading ----\n\n /**\n * List queries may omit heavy fields; template input definitions require full `inputs`.\n */\n private async hydrateWorkflowDefinitionRow(\n row: WorkflowDefinitionListRow,\n ): Promise<WorkflowDefinitionListRow> {\n if ((row.inputs?.length ?? 0) > 0) {\n return row;\n }\n\n const id = row.id?.trim();\n if (!id) {\n return row;\n }\n\n try {\n const full = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workflowDefinition.name)\n .data()\n .byKey(id)) as WorkflowDefinitionListRow | null;\n\n if (!full?.id) {\n return row;\n }\n\n return {\n ...row,\n ...full,\n inputs: full.inputs ?? row.inputs,\n };\n } catch {\n return row;\n }\n }\n\n private async loadWorkflowDefinitions(): Promise<void> {\n try {\n const scopeFilter = this.catalogScopeFilter();\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workflowDefinition.name)\n .data()\n .query({\n skip: 0,\n take: 500,\n filter: buildWorkflowConfiguratorListQueryFilter(scopeFilter),\n });\n\n const rows = (page.items ?? []) as WorkflowDefinitionListRow[];\n const pinnedId = this.value()?.workflowDefinitionId?.trim();\n\n const filtered = rows\n .filter((r) => !!r.id?.trim() && !!r.name?.trim())\n .filter((r) => {\n if (!scopeFilter) {\n return true;\n }\n if (pinnedId && r.id === pinnedId) {\n return true;\n }\n const keys = resolveWorkflowCatalogScopeKeys(r as WorkflowConfiguratorCatalogScopeRow);\n return matchesWorkflowConfiguratorCatalogScopeFilter(keys, scopeFilter);\n })\n .sort((a, b) => {\n const ta = this.translation.resolve(a.title).trim() || a.name;\n const tb = this.translation.resolve(b.title).trim() || b.name;\n return ta.localeCompare(tb, this.translation.getActiveLang(), { sensitivity: 'base' });\n });\n\n const hydrated = await Promise.all(filtered.map((row) => this.hydrateWorkflowDefinitionRow(row)));\n\n if (pinnedId && !hydrated.some((r) => r.id === pinnedId)) {\n try {\n const pinned = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workflowDefinition.name)\n .data()\n .byKey(pinnedId)) as WorkflowDefinitionListRow | null;\n if (pinned?.id) {\n hydrated.unshift(await this.hydrateWorkflowDefinitionRow(pinned));\n }\n } catch {\n /* keep list as filtered */\n }\n }\n\n this.workflows.set(hydrated);\n } catch {\n this.workflows.set([]);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { isFormValueEqual } from '@acorex-platform/framework-shared/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { AXMWorkflowConfiguratorComponent } from './workflow-configurator.component';\nimport type {\n WorkflowConfiguratorCatalogScopeFilter,\n WorkflowConfiguratorTemplateInputFilter,\n WorkflowConfiguratorValue,\n} from './workflow-configurator.types';\nimport { workflowConfiguratorCatalogScopeFilterFromKeys } from './workflow-configurator.utils';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-configurator-widget-edit',\n template: `\n @if (isInitialized()) {\n <axm-workflow-configurator\n [(value)]=\"valueModel\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n [templateInputNames]=\"templateInputNames()\"\n [catalogScopeFilter]=\"catalogScopeFilter()\"\n [templateInputFilters]=\"templateInputFilters()\"\n />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMWorkflowConfiguratorComponent],\n})\nexport class AXMWorkflowConfiguratorWidgetEditComponent extends AXPValueWidgetComponent<WorkflowConfiguratorValue> {\n //#region ---- Computed Properties ----\n\n protected readonly readonly = computed<boolean>(() => (this.options()['readonly'] as boolean) ?? false);\n\n protected label = computed<string>(\n () => (this.options()['label'] as string) || '@workflow-management:workflow-configurator.label',\n );\n\n protected templateInputNames = computed<string[] | undefined>(() => {\n const raw = this.options()['templateInputNames'];\n return Array.isArray(raw) ? (raw as string[]) : undefined;\n });\n\n protected catalogScopeFilter = computed<WorkflowConfiguratorCatalogScopeFilter | undefined>(() => {\n const fromKeys = workflowConfiguratorCatalogScopeFilterFromKeys(\n this.options()['catalogScopeKeys'] as string | string[] | undefined,\n );\n if (fromKeys) {\n return fromKeys;\n }\n\n const raw = this.options()['catalogScopeFilter'];\n return raw && typeof raw === 'object' ? (raw as WorkflowConfiguratorCatalogScopeFilter) : undefined;\n });\n\n protected templateInputFilters = computed<\n Record<string, WorkflowConfiguratorTemplateInputFilter> | undefined\n >(() => {\n const raw = this.options()['templateInputFilters'];\n return raw && typeof raw === 'object'\n ? (raw as Record<string, WorkflowConfiguratorTemplateInputFilter>)\n : undefined;\n });\n\n //#endregion\n\n //#region ---- State Signals ----\n\n protected isInitialized = signal(false);\n\n //#endregion\n\n //#region ---- Models ----\n\n protected valueModel = model<WorkflowConfiguratorValue>({\n workflowDefinitionId: '',\n workflowName: '',\n defaultInput: {},\n });\n\n //#endregion\n\n //#region ---- Effects ----\n\n private syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n\n const normalized = normalizeWorkflowConfiguratorValue(value);\n const currentModel = untracked(() => this.valueModel());\n\n if (!isEqual(normalized, currentModel)) {\n untracked(() => {\n this.valueModel.set(normalized);\n });\n }\n\n untracked(() => {\n if (!this.isInitialized()) {\n this.isInitialized.set(true);\n }\n });\n });\n\n private syncConfiguratorToValue = effect(() => {\n const modelValue = this.valueModel();\n\n if (!untracked(() => this.isInitialized())) {\n return;\n }\n\n const normalized = normalizeWorkflowConfiguratorValue(modelValue);\n const payload = isEmptyWorkflowConfiguratorValue(normalized)\n ? null\n : {\n workflowDefinitionId: normalized.workflowDefinitionId.trim(),\n workflowName: normalized.workflowName.trim(),\n defaultInput: cloneDeep(normalized.defaultInput ?? {}),\n };\n\n const currentValue = untracked(() => this.getValue());\n if (!isFormValueEqual(payload, currentValue)) {\n untracked(() => {\n this.setValue(payload);\n });\n }\n });\n\n //#endregion\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeWorkflowConfiguratorValue(value: unknown): WorkflowConfiguratorValue {\n if (value && typeof value === 'object' && 'workflowDefinitionId' in value) {\n const v = value as WorkflowConfiguratorValue;\n return {\n workflowDefinitionId: v.workflowDefinitionId ?? '',\n workflowName: v.workflowName ?? '',\n defaultInput: v.defaultInput ?? {},\n };\n }\n\n return { workflowDefinitionId: '', workflowName: '', defaultInput: {} };\n}\n\nfunction isEmptyWorkflowConfiguratorValue(value: WorkflowConfiguratorValue): boolean {\n const id = value.workflowDefinitionId?.trim() ?? '';\n const name = value.workflowName?.trim() ?? '';\n const defaults = value.defaultInput ?? {};\n const hasDefaults = Object.keys(defaults).some((key) => {\n const entry = defaults[key];\n return entry !== null && entry !== undefined && entry !== '';\n });\n return !id && !name && !hasDefaults;\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-configurator-widget-edit.component-CVTeOv-q.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/workflow-configurator/workflow-configurator.utils.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-configurator/workflow-configurator.component.ts","../../../../libs/modules/workflow-management/client/src/lib/features/workflow-configurator/workflow-configurator-widget-edit.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport type { AXPWidgetProperty, AXPWidgetPropertyGroup } from '@acorex-platform/framework-shared/widget-core';\nimport { type AXPProperty, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { mapAXPPropertyToWidgetProperty } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\n\nimport { castArray, get, isString } from 'lodash';\nimport type {\n WorkflowConfiguratorCatalogScopeFilter,\n WorkflowConfiguratorTemplateInputFilter,\n} from './workflow-configurator.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Workflow inputs normally supplied when a run is started from runtime context, not on the template. */\nexport const WORKFLOW_CONFIGURATOR_RUNTIME_INPUT_NAMES = new Set([\n 'employeeId',\n 'employeeDisplayName',\n 'eventTypeId',\n 'eventTypeTitle',\n 'recordTypeId',\n 'recordTypeTitle',\n 'effectiveDate',\n 'assessmentCaseTitle',\n 'targetEmployeeStatusId',\n]);\n\n//#endregion\n\n//#region ---- Catalog scope matching ----\n\nexport interface WorkflowConfiguratorCatalogScopeRow {\n name?: string;\n catalogScopeKeys?: string[];\n catalogScopes?: Array<{ name?: string }>;\n}\n\n/**\n * Resolves catalog scope keys from persisted row shape (keys or enriched scopes).\n */\nexport function resolveWorkflowCatalogScopeKeys(row: WorkflowConfiguratorCatalogScopeRow): string[] {\n const keys = new Set<string>();\n\n for (const key of row.catalogScopeKeys ?? []) {\n if (isString(key) && key.trim()) {\n keys.add(key.trim());\n }\n }\n\n for (const scope of row.catalogScopes ?? []) {\n const name = scope?.name?.trim();\n if (name) {\n keys.add(name);\n }\n }\n\n return [...keys];\n}\n\n/**\n * Builds a workflow list filter from registered scope key names.\n */\nexport function workflowConfiguratorCatalogScopeFilterFromKeys(\n catalogScopeKeys: string | string[] | undefined,\n): WorkflowConfiguratorCatalogScopeFilter | undefined {\n const anyOf = castArray(catalogScopeKeys ?? [])\n .filter((k) => isString(k) && k.trim().length > 0)\n .map((k) => k.trim());\n\n return anyOf.length > 0 ? { anyOf } : undefined;\n}\n\n/**\n * Query filter for published workflow definitions, optionally restricted by catalog scope keys.\n */\nexport function buildWorkflowConfiguratorListQueryFilter(\n scopeFilter: WorkflowConfiguratorCatalogScopeFilter | undefined,\n): AXDataSourceFilterOption {\n const publishedFilter: AXDataSourceFilterOption = {\n field: 'statusId',\n operator: { type: 'equal' },\n value: AXPSystemStatusType.Published,\n };\n\n const anyOf = scopeFilter?.anyOf?.map((k) => k.trim()).filter(Boolean) ?? [];\n if (anyOf.length === 0) {\n return publishedFilter;\n }\n\n return {\n logic: 'and',\n filters: [\n publishedFilter,\n {\n logic: 'or',\n filters: anyOf.map((scopeKey) => ({\n field: 'catalogScopeKeys',\n operator: { type: 'contains' },\n value: scopeKey,\n })),\n },\n ],\n };\n}\n\n/**\n * Returns true when the row's catalog scope keys satisfy the configurator filter.\n */\nexport function matchesWorkflowConfiguratorCatalogScopeFilter(\n catalogScopeKeys: string[] | undefined,\n filter: WorkflowConfiguratorCatalogScopeFilter | undefined,\n): boolean {\n if (!filter) {\n return true;\n }\n\n const keys = (catalogScopeKeys ?? []).filter((k) => isString(k) && k.trim().length > 0);\n if (filter.keyPrefix?.trim()) {\n const prefix = filter.keyPrefix.trim();\n if (!keys.some((k) => k.startsWith(prefix))) {\n return false;\n }\n }\n\n const anyOf = filter.anyOf?.map((k) => k.trim()).filter(Boolean) ?? [];\n if (anyOf.length > 0 && !anyOf.some((scope) => keys.includes(scope))) {\n return false;\n }\n\n const allOf = filter.allOf?.map((k) => k.trim()).filter(Boolean) ?? [];\n if (allOf.length > 0 && !allOf.every((scope) => keys.includes(scope))) {\n return false;\n }\n\n return true;\n}\n\nfunction mergeTemplateInputCatalogScopeFilter(\n property: AXPProperty,\n templateInputFilters?: Record<string, WorkflowConfiguratorTemplateInputFilter>,\n): AXPProperty {\n const name = property.name?.trim();\n if (!name || !templateInputFilters) {\n return property;\n }\n\n const scopeFilter = templateInputFilters[name]?.catalogScopeKeys;\n if (!scopeFilter) {\n return property;\n }\n\n const values = castArray(scopeFilter).filter((v) => isString(v) && v.trim().length > 0);\n if (values.length === 0) {\n return property;\n }\n\n const iface = property.interface;\n if (!iface?.options) {\n return property;\n }\n\n const existingFilter = get(iface.options, 'filter');\n const scopeConditions = values.map((value) => ({\n field: 'catalogScopeKeys',\n operator: { type: 'contains' as const },\n value,\n }));\n\n const mergedFilter =\n scopeConditions.length === 1\n ? scopeConditions[0]\n : { logic: 'or' as const, filters: scopeConditions };\n\n return {\n ...property,\n interface: {\n ...iface,\n options: {\n ...iface.options,\n filter: existingFilter\n ? { logic: 'and', filters: [existingFilter, mergedFilter] }\n : mergedFilter,\n },\n },\n };\n}\n\n//#endregion\n\n//#region ---- Mapping ----\n\n/**\n * Maps workflow definition `inputs` to property viewer rows for {@link AXPItemConfiguratorComponent}.\n */\nexport function mapWorkflowInputsToWidgetProperties(\n inputs: AXPProperty[] | undefined,\n translation: AXTranslationService,\n templateInputNames?: string[],\n templateInputFilters?: Record<string, WorkflowConfiguratorTemplateInputFilter>,\n): AXPWidgetProperty[] {\n const list = inputs ?? [];\n const allowSet =\n templateInputNames && templateInputNames.length > 0\n ? new Set(templateInputNames)\n : null;\n\n const group: AXPWidgetPropertyGroup = {\n name: 'workflow-template-inputs',\n title: '@workflow-management:workflow-configurator.configure.group-title',\n order: 0,\n };\n\n const filtered = list.filter((property) => {\n const name = property.name?.trim();\n if (!name) {\n return false;\n }\n if (allowSet) {\n return allowSet.has(name);\n }\n return !WORKFLOW_CONFIGURATOR_RUNTIME_INPUT_NAMES.has(name);\n });\n\n return filtered.map((property, index) =>\n mapAXPPropertyToWidgetProperty(\n mergeTemplateInputCatalogScopeFilter(property, templateInputFilters),\n {\n group,\n order: index,\n valuePathPrefix: 'options',\n resolveTitle: (prop) =>\n typeof prop.title === 'string'\n ? prop.title\n : (translation.resolve(prop.title) ?? prop.name),\n resolveDescription: (prop) =>\n prop.description === undefined\n ? undefined\n : typeof prop.description === 'string'\n ? prop.description\n : translation.resolve(prop.description),\n },\n ),\n );\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPItemConfiguratorComponent, ItemConfiguratorListItem } from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport { isEqual } from 'lodash';\nimport type { AXMWorkflowManagementWorkflowDefinitionEntityModel } from '@acorex-platform/module-workflow-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-workflow-management-client/contracts';\nimport type {\n WorkflowConfiguratorCatalogScopeFilter,\n WorkflowConfiguratorTemplateInputFilter,\n WorkflowConfiguratorValue,\n} from './workflow-configurator.types';\nimport {\n buildWorkflowConfiguratorListQueryFilter,\n mapWorkflowInputsToWidgetProperties,\n matchesWorkflowConfiguratorCatalogScopeFilter,\n resolveWorkflowCatalogScopeKeys,\n type WorkflowConfiguratorCatalogScopeRow,\n} from './workflow-configurator.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype WorkflowDefinitionListRow = Pick<\n AXMWorkflowManagementWorkflowDefinitionEntityModel,\n 'id' | 'name' | 'title' | 'description' | 'inputs' | 'catalogScopeKeys' | 'catalogScopes'\n>;\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Select a workflow definition and configure template-time inputs via {@link AXPItemConfiguratorComponent}.\n */\n@Component({\n selector: 'axm-workflow-configurator',\n template: `\n <axp-item-configurator\n [(selectedItemId)]=\"selectedWorkflowIdModel\"\n [(values)]=\"defaultInputModel\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n [items]=\"configuratorItems()\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex flex-col',\n '[attr.readonly]': 'readonly() ? \"\" : null',\n },\n styles: [\n `@reference '@acorex/styles/themes/default.css';\n\n :host([readonly]) {\n pointer-events: none;\n opacity: 0.7;\n }\n `,\n ],\n imports: [AXPItemConfiguratorComponent],\n})\nexport class AXMWorkflowConfiguratorComponent {\n //#region ---- Inputs ----\n\n value = model<WorkflowConfiguratorValue>({\n workflowDefinitionId: '',\n workflowName: '',\n defaultInput: {},\n });\n\n label = input<string>('@workflow-management:workflow-configurator.label');\n\n readonly = input<boolean>(false);\n\n /**\n * When set, only these workflow input names are configurable; otherwise runtime inputs are excluded by default.\n */\n templateInputNames = input<string[] | undefined>(undefined);\n\n /**\n * Limits workflow definitions to rows whose {@link catalogScopeKeys} match (e.g. HR lifecycle).\n */\n catalogScopeFilter = input<WorkflowConfiguratorCatalogScopeFilter | undefined>(undefined);\n\n /**\n * Per template input lookup filters (e.g. `questionnaireId` → HR catalog scopes).\n */\n templateInputFilters = input<Record<string, WorkflowConfiguratorTemplateInputFilter> | undefined>(\n undefined,\n );\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n protected selectedWorkflowIdModel = model<string>('');\n\n protected defaultInputModel = model<Record<string, unknown>>({});\n\n protected workflows = signal<WorkflowDefinitionListRow[]>([]);\n\n protected configuratorItems = computed<ItemConfiguratorListItem[]>(() => {\n const names = this.templateInputNames();\n const inputFilters = this.templateInputFilters();\n return this.workflows().map((row) => ({\n id: row.id,\n title: (row.title ?? row.name) as ItemConfiguratorListItem['title'],\n icon: 'fa-light fa-diagram-project',\n description: row.description as ItemConfiguratorListItem['description'],\n propertyDefinitions: mapWorkflowInputsToWidgetProperties(\n row.inputs,\n this.translation,\n names,\n inputFilters,\n ),\n }));\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n effect(() => {\n this.catalogScopeFilter();\n untracked(() => {\n void this.loadWorkflowDefinitions();\n });\n });\n\n /** Sync inner models from bound `value` only (context/discard); never from model edits. */\n effect(() => {\n const v = this.value();\n const id = v?.workflowDefinitionId?.trim() ?? '';\n const defaults = v?.defaultInput ?? {};\n\n untracked(() => {\n if (this.selectedWorkflowIdModel() !== id) {\n this.selectedWorkflowIdModel.set(id);\n }\n if (!isEqual(this.defaultInputModel(), defaults)) {\n this.defaultInputModel.set({ ...defaults });\n }\n });\n });\n\n effect(() => {\n const id = this.selectedWorkflowIdModel();\n const defaults = this.defaultInputModel();\n const row = this.workflows().find((w) => w.id === id);\n const current = untracked(() => this.value());\n\n const next: WorkflowConfiguratorValue = {\n workflowDefinitionId: id,\n workflowName:\n row?.name?.trim() ??\n (current.workflowDefinitionId === id ? (current.workflowName?.trim() ?? '') : ''),\n defaultInput: { ...defaults },\n };\n\n const normalizedCurrent: WorkflowConfiguratorValue = {\n workflowDefinitionId: current.workflowDefinitionId?.trim() ?? '',\n workflowName: current.workflowName?.trim() ?? '',\n defaultInput: current.defaultInput ?? {},\n };\n\n if (!isEqual(next, normalizedCurrent)) {\n untracked(() => this.value.set(next));\n }\n });\n }\n\n //#endregion\n\n //#region ---- Data loading ----\n\n /**\n * List queries may omit heavy fields; template input definitions require full `inputs`.\n */\n private async hydrateWorkflowDefinitionRow(\n row: WorkflowDefinitionListRow,\n ): Promise<WorkflowDefinitionListRow> {\n if ((row.inputs?.length ?? 0) > 0) {\n return row;\n }\n\n const id = row.id?.trim();\n if (!id) {\n return row;\n }\n\n try {\n const full = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workflowDefinition.name)\n .data()\n .byKey(id)) as WorkflowDefinitionListRow | null;\n\n if (!full?.id) {\n return row;\n }\n\n return {\n ...row,\n ...full,\n inputs: full.inputs ?? row.inputs,\n };\n } catch {\n return row;\n }\n }\n\n private async loadWorkflowDefinitions(): Promise<void> {\n try {\n const scopeFilter = this.catalogScopeFilter();\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workflowDefinition.name)\n .data()\n .query({\n skip: 0,\n take: 500,\n filter: buildWorkflowConfiguratorListQueryFilter(scopeFilter),\n });\n\n const rows = (page.items ?? []) as WorkflowDefinitionListRow[];\n const pinnedId = this.value()?.workflowDefinitionId?.trim();\n\n const filtered = rows\n .filter((r) => !!r.id?.trim() && !!r.name?.trim())\n .filter((r) => {\n if (!scopeFilter) {\n return true;\n }\n if (pinnedId && r.id === pinnedId) {\n return true;\n }\n const keys = resolveWorkflowCatalogScopeKeys(r as WorkflowConfiguratorCatalogScopeRow);\n return matchesWorkflowConfiguratorCatalogScopeFilter(keys, scopeFilter);\n })\n .sort((a, b) => {\n const ta = this.translation.resolve(a.title).trim() || a.name;\n const tb = this.translation.resolve(b.title).trim() || b.name;\n return ta.localeCompare(tb, this.translation.getActiveLang(), { sensitivity: 'base' });\n });\n\n const hydrated = await Promise.all(filtered.map((row) => this.hydrateWorkflowDefinitionRow(row)));\n\n if (pinnedId && !hydrated.some((r) => r.id === pinnedId)) {\n try {\n const pinned = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workflowDefinition.name)\n .data()\n .byKey(pinnedId)) as WorkflowDefinitionListRow | null;\n if (pinned?.id) {\n hydrated.unshift(await this.hydrateWorkflowDefinitionRow(pinned));\n }\n } catch {\n /* keep list as filtered */\n }\n }\n\n this.workflows.set(hydrated);\n } catch {\n this.workflows.set([]);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { isFormValueEqual } from '@acorex-platform/framework-shared/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { AXMWorkflowConfiguratorComponent } from './workflow-configurator.component';\nimport type {\n WorkflowConfiguratorCatalogScopeFilter,\n WorkflowConfiguratorTemplateInputFilter,\n WorkflowConfiguratorValue,\n} from './workflow-configurator.types';\nimport { workflowConfiguratorCatalogScopeFilterFromKeys } from './workflow-configurator.utils';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-configurator-widget-edit',\n template: `\n @if (isInitialized()) {\n <axm-workflow-configurator\n [(value)]=\"valueModel\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n [templateInputNames]=\"templateInputNames()\"\n [catalogScopeFilter]=\"catalogScopeFilter()\"\n [templateInputFilters]=\"templateInputFilters()\"\n />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMWorkflowConfiguratorComponent],\n})\nexport class AXMWorkflowConfiguratorWidgetEditComponent extends AXPValueWidgetComponent<WorkflowConfiguratorValue> {\n //#region ---- Computed Properties ----\n\n protected readonly readonly = computed<boolean>(() => (this.options()['readonly'] as boolean) ?? false);\n\n protected label = computed<string>(\n () => (this.options()['label'] as string) || '@workflow-management:workflow-configurator.label',\n );\n\n protected templateInputNames = computed<string[] | undefined>(() => {\n const raw = this.options()['templateInputNames'];\n return Array.isArray(raw) ? (raw as string[]) : undefined;\n });\n\n protected catalogScopeFilter = computed<WorkflowConfiguratorCatalogScopeFilter | undefined>(() => {\n const fromKeys = workflowConfiguratorCatalogScopeFilterFromKeys(\n this.options()['catalogScopeKeys'] as string | string[] | undefined,\n );\n if (fromKeys) {\n return fromKeys;\n }\n\n const raw = this.options()['catalogScopeFilter'];\n return raw && typeof raw === 'object' ? (raw as WorkflowConfiguratorCatalogScopeFilter) : undefined;\n });\n\n protected templateInputFilters = computed<\n Record<string, WorkflowConfiguratorTemplateInputFilter> | undefined\n >(() => {\n const raw = this.options()['templateInputFilters'];\n return raw && typeof raw === 'object'\n ? (raw as Record<string, WorkflowConfiguratorTemplateInputFilter>)\n : undefined;\n });\n\n //#endregion\n\n //#region ---- State Signals ----\n\n protected isInitialized = signal(false);\n\n //#endregion\n\n //#region ---- Models ----\n\n protected valueModel = model<WorkflowConfiguratorValue>({\n workflowDefinitionId: '',\n workflowName: '',\n defaultInput: {},\n });\n\n //#endregion\n\n //#region ---- Effects ----\n\n private syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n\n const normalized = normalizeWorkflowConfiguratorValue(value);\n const currentModel = untracked(() => this.valueModel());\n\n if (!isEqual(normalized, currentModel)) {\n untracked(() => {\n this.valueModel.set(normalized);\n });\n }\n\n untracked(() => {\n if (!this.isInitialized()) {\n this.isInitialized.set(true);\n }\n });\n });\n\n private syncConfiguratorToValue = effect(() => {\n const modelValue = this.valueModel();\n\n if (!untracked(() => this.isInitialized())) {\n return;\n }\n\n const normalized = normalizeWorkflowConfiguratorValue(modelValue);\n const payload = isEmptyWorkflowConfiguratorValue(normalized)\n ? null\n : {\n workflowDefinitionId: normalized.workflowDefinitionId.trim(),\n workflowName: normalized.workflowName.trim(),\n defaultInput: cloneDeep(normalized.defaultInput ?? {}),\n };\n\n const currentValue = untracked(() => this.getValue());\n if (!isFormValueEqual(payload, currentValue)) {\n untracked(() => {\n this.setValue(payload);\n });\n }\n });\n\n //#endregion\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeWorkflowConfiguratorValue(value: unknown): WorkflowConfiguratorValue {\n if (value && typeof value === 'object' && 'workflowDefinitionId' in value) {\n const v = value as WorkflowConfiguratorValue;\n return {\n workflowDefinitionId: v.workflowDefinitionId ?? '',\n workflowName: v.workflowName ?? '',\n defaultInput: v.defaultInput ?? {},\n };\n }\n\n return { workflowDefinitionId: '', workflowName: '', defaultInput: {} };\n}\n\nfunction isEmptyWorkflowConfiguratorValue(value: WorkflowConfiguratorValue): boolean {\n const id = value.workflowDefinitionId?.trim() ?? '';\n const name = value.workflowName?.trim() ?? '';\n const defaults = value.defaultInput ?? {};\n const hasDefaults = Object.keys(defaults).some((key) => {\n const entry = defaults[key];\n return entry !== null && entry !== undefined && entry !== '';\n });\n return !id && !name && !hasDefaults;\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-live-dashboard.queries--9NtYkau.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/dashboard-queries/workflow-dashboard-data.util.ts","../../../../libs/modules/workflow-management/client/src/lib/features/dashboard-queries/workflow-live-dashboard.queries.ts"],"sourcesContent":["/**\n * Shared helpers for live WorkflowManagement dashboard queries.\n */\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\n//#region ----- Constants -----\n\nexport const WORKFLOW_DASHBOARD_CHART_COLORS = [\n '#43b57f',\n '#3b82f6',\n '#f59e0b',\n '#ef4444',\n '#8b5cf6',\n '#0ea5e9',\n '#64748b',\n] as const;\n\n//#endregion\n\n//#region ----- Entity helpers -----\n\nexport async function queryEntityTotal(\n entityService: AXPEntityService,\n moduleName: string,\n entityName: string,\n): Promise<number> {\n const data = entityService.withEntity(moduleName, entityName).data();\n const result = await data.query({ skip: 0, take: 1 });\n return typeof result.total === 'number' ? result.total : (result.items?.length ?? 0);\n}\n\nexport async function queryEntityItems(\n entityService: AXPEntityService,\n moduleName: string,\n entityName: string,\n take = 5000,\n): Promise<Record<string, unknown>[]> {\n const data = entityService.withEntity(moduleName, entityName).data();\n const result = await data.query({ skip: 0, take });\n return (result.items ?? []) as unknown as Record<string, unknown>[];\n}\n\nexport function resolveDisplayTitle(value: unknown): string {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n const map = value as Record<string, string>;\n return map['en-US'] || map['fa-IR'] || Object.values(map).find((v) => typeof v === 'string' && v) || '';\n }\n return String(value);\n}\n\nexport function titleCaseToken(value: string): string {\n if (!value) {\n return 'Unknown';\n }\n return value\n .split(/[-_]/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n\nexport function countByKey(\n items: Record<string, unknown>[],\n keyFn: (item: Record<string, unknown>) => string,\n): Map<string, number> {\n const counts = new Map<string, number>();\n for (const item of items) {\n const key = keyFn(item) || 'unknown';\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n return counts;\n}\n\nexport function mapCountsToSeries(\n counts: Map<string, number>,\n labelFn: (key: string) => string = titleCaseToken,\n): Array<{ id: string; label: string; value: number; color: string }> {\n return [...counts.entries()]\n .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))\n .map(([key, value], index) => ({\n id: key,\n label: labelFn(key),\n value,\n color: WORKFLOW_DASHBOARD_CHART_COLORS[index % WORKFLOW_DASHBOARD_CHART_COLORS.length],\n }));\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type {\n AXPBarChartQueryResult,\n AXPDonutChartQueryResult,\n AXPGaugeChartQueryResult,\n AXPKpiStatCardQueryResult,\n} from '@acorex-platform/module-dashboard-management-client/contracts';\nimport { Injectable, inject } from '@angular/core';\n\nimport {\n countByKey,\n mapCountsToSeries,\n queryEntityItems,\n queryEntityTotal,\n resolveDisplayTitle,\n titleCaseToken,\n} from './workflow-dashboard-data.util';\n\n//#endregion\n\n//#region ----- KPI -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowDefinitionsKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'WorkflowManagement', 'WorkflowDefinition');\n return runtimeQuerySuccessObject({\n title: 'Workflow Definitions',\n value,\n icon: 'fa-light fa-diagram-project',\n iconTone: 'primary',\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load workflow definitions KPI',\n );\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowActivitiesKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'WorkflowManagement', 'ActivityDefinition');\n return runtimeQuerySuccessObject({\n title: 'Activity Definitions',\n value,\n icon: 'fa-light fa-puzzle-piece',\n iconTone: 'info',\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load activity definitions KPI',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Charts -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowDefinitionsByStatusBarQuery implements AXPQuery<void, AXPBarChartQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPBarChartQueryResult> {\n try {\n const definitions = await queryEntityItems(\n this.entityService,\n 'WorkflowManagement',\n 'WorkflowDefinition',\n );\n const counts = countByKey(definitions, (row) =>\n String(row['statusId'] ?? row['status'] ?? 'unknown'),\n );\n return runtimeQuerySuccessObject({ items: mapCountsToSeries(counts) });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load definitions by status',\n );\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowActivitiesByCategoryDonutQuery\n implements AXPQuery<void, AXPDonutChartQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPDonutChartQueryResult> {\n try {\n const activities = await queryEntityItems(\n this.entityService,\n 'WorkflowManagement',\n 'ActivityDefinition',\n );\n const counts = countByKey(activities, (row) => {\n const category = row['category'];\n if (typeof category === 'object' && category) {\n const cat = category as { id?: string; name?: string; title?: unknown };\n const title = resolveDisplayTitle(cat.title);\n if (title) {\n return title;\n }\n if (cat.name) {\n return titleCaseToken(String(cat.name));\n }\n if (cat.id) {\n return String(cat.id);\n }\n }\n return String(row['categoryId'] ?? 'Uncategorized');\n });\n return runtimeQuerySuccessObject({ items: mapCountsToSeries(counts, (k) => k) });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load activities by category',\n );\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowPublishedDefinitionsGaugeQuery\n implements AXPQuery<void, AXPGaugeChartQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPGaugeChartQueryResult> {\n try {\n const definitions = await queryEntityItems(\n this.entityService,\n 'WorkflowManagement',\n 'WorkflowDefinition',\n );\n if (definitions.length === 0) {\n return runtimeQuerySuccessObject({ value: 0 });\n }\n const published = definitions.filter((row) => {\n const status = String(row['statusId'] ?? row['status'] ?? '').toLowerCase();\n return status === 'published';\n }).length;\n return runtimeQuerySuccessObject({\n value: Math.round((published / definitions.length) * 100),\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load published definitions gauge',\n );\n }\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-workflow-management-client-workflow-live-dashboard.queries--9NtYkau.mjs","sources":["../../../../libs/modules/workflow-management/client/src/lib/features/dashboard-queries/workflow-dashboard-data.util.ts","../../../../libs/modules/workflow-management/client/src/lib/features/dashboard-queries/workflow-live-dashboard.queries.ts"],"sourcesContent":["/**\n * Shared helpers for live WorkflowManagement dashboard queries.\n */\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\n//#region ----- Constants -----\n\nexport const WORKFLOW_DASHBOARD_CHART_COLORS = [\n '#43b57f',\n '#3b82f6',\n '#f59e0b',\n '#ef4444',\n '#8b5cf6',\n '#0ea5e9',\n '#64748b',\n] as const;\n\n//#endregion\n\n//#region ----- Entity helpers -----\n\nexport async function queryEntityTotal(\n entityService: AXPEntityService,\n moduleName: string,\n entityName: string,\n): Promise<number> {\n const data = entityService.withEntity(moduleName, entityName).data();\n const result = await data.query({ skip: 0, take: 1 });\n return typeof result.total === 'number' ? result.total : (result.items?.length ?? 0);\n}\n\nexport async function queryEntityItems(\n entityService: AXPEntityService,\n moduleName: string,\n entityName: string,\n take = 5000,\n): Promise<Record<string, unknown>[]> {\n const data = entityService.withEntity(moduleName, entityName).data();\n const result = await data.query({ skip: 0, take });\n return (result.items ?? []) as unknown as Record<string, unknown>[];\n}\n\nexport function resolveDisplayTitle(value: unknown): string {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n const map = value as Record<string, string>;\n return map['en-US'] || map['fa-IR'] || Object.values(map).find((v) => typeof v === 'string' && v) || '';\n }\n return String(value);\n}\n\nexport function titleCaseToken(value: string): string {\n if (!value) {\n return 'Unknown';\n }\n return value\n .split(/[-_]/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n\nexport function countByKey(\n items: Record<string, unknown>[],\n keyFn: (item: Record<string, unknown>) => string,\n): Map<string, number> {\n const counts = new Map<string, number>();\n for (const item of items) {\n const key = keyFn(item) || 'unknown';\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n return counts;\n}\n\nexport function mapCountsToSeries(\n counts: Map<string, number>,\n labelFn: (key: string) => string = titleCaseToken,\n): Array<{ id: string; label: string; value: number; color: string }> {\n return [...counts.entries()]\n .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))\n .map(([key, value], index) => ({\n id: key,\n label: labelFn(key),\n value,\n color: WORKFLOW_DASHBOARD_CHART_COLORS[index % WORKFLOW_DASHBOARD_CHART_COLORS.length],\n }));\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type {\n AXPBarChartQueryResult,\n AXPDonutChartQueryResult,\n AXPGaugeChartQueryResult,\n AXPKpiStatCardQueryResult,\n} from '@acorex-platform/module-dashboard-management-client/contracts';\nimport { Injectable, inject } from '@angular/core';\n\nimport {\n countByKey,\n mapCountsToSeries,\n queryEntityItems,\n queryEntityTotal,\n resolveDisplayTitle,\n titleCaseToken,\n} from './workflow-dashboard-data.util';\n\n//#endregion\n\n//#region ----- KPI -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowDefinitionsKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'WorkflowManagement', 'WorkflowDefinition');\n return runtimeQuerySuccessObject({\n title: 'Workflow Definitions',\n value,\n icon: 'fa-light fa-diagram-project',\n iconTone: 'primary',\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load workflow definitions KPI',\n );\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowActivitiesKpiQuery implements AXPQuery<void, AXPKpiStatCardQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPKpiStatCardQueryResult> {\n try {\n const value = await queryEntityTotal(this.entityService, 'WorkflowManagement', 'ActivityDefinition');\n return runtimeQuerySuccessObject({\n title: 'Activity Definitions',\n value,\n icon: 'fa-light fa-puzzle-piece',\n iconTone: 'info',\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load activity definitions KPI',\n );\n }\n }\n}\n\n//#endregion\n\n//#region ----- Charts -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowDefinitionsByStatusBarQuery implements AXPQuery<void, AXPBarChartQueryResult> {\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPBarChartQueryResult> {\n try {\n const definitions = await queryEntityItems(\n this.entityService,\n 'WorkflowManagement',\n 'WorkflowDefinition',\n );\n const counts = countByKey(definitions, (row) =>\n String(row['statusId'] ?? row['status'] ?? 'unknown'),\n );\n return runtimeQuerySuccessObject({ items: mapCountsToSeries(counts) });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load definitions by status',\n );\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowActivitiesByCategoryDonutQuery\n implements AXPQuery<void, AXPDonutChartQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPDonutChartQueryResult> {\n try {\n const activities = await queryEntityItems(\n this.entityService,\n 'WorkflowManagement',\n 'ActivityDefinition',\n );\n const counts = countByKey(activities, (row) => {\n const category = row['category'];\n if (typeof category === 'object' && category) {\n const cat = category as { id?: string; name?: string; title?: unknown };\n const title = resolveDisplayTitle(cat.title);\n if (title) {\n return title;\n }\n if (cat.name) {\n return titleCaseToken(String(cat.name));\n }\n if (cat.id) {\n return String(cat.id);\n }\n }\n return String(row['categoryId'] ?? 'Uncategorized');\n });\n return runtimeQuerySuccessObject({ items: mapCountsToSeries(counts, (k) => k) });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load activities by category',\n );\n }\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMWorkflowPublishedDefinitionsGaugeQuery\n implements AXPQuery<void, AXPGaugeChartQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(): AXPQueryFetchResultPromise<AXPGaugeChartQueryResult> {\n try {\n const definitions = await queryEntityItems(\n this.entityService,\n 'WorkflowManagement',\n 'WorkflowDefinition',\n );\n if (definitions.length === 0) {\n return runtimeQuerySuccessObject({ value: 0 });\n }\n const published = definitions.filter((row) => {\n const status = String(row['statusId'] ?? row['status'] ?? '').toLowerCase();\n return status === 'published';\n }).length;\n return runtimeQuerySuccessObject({\n value: Math.round((published / definitions.length) * 100),\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load published definitions gauge',\n );\n }\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;AAAA;;AAEG;AAIH;AAEO,MAAM,+BAA+B,GAAG;IAC7C,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACD;AAEV;AAEA;AAEO,eAAe,gBAAgB,CACpC,aAA+B,EAC/B,UAAkB,EAClB,UAAkB,EAAA;AAElB,IAAA,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;AACpE,IAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACrD,OAAO,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;AACtF;AAEO,eAAe,gBAAgB,CACpC,aAA+B,EAC/B,UAAkB,EAClB,UAAkB,EAClB,IAAI,GAAG,IAAI,EAAA;AAEX,IAAA,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;AACpE,IAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAClD,IAAA,QAAQ,MAAM,CAAC,KAAK,IAAI,EAAE;AAC5B;AAEM,SAAU,mBAAmB,CAAC,KAAc,EAAA;AAChD,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE;IACX;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACtD,MAAM,GAAG,GAAG,KAA+B;AAC3C,QAAA,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;IACzG;AACA,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;AAEM,SAAU,cAAc,CAAC,KAAa,EAAA;IAC1C,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,OAAO;SACJ,KAAK,CAAC,MAAM;SACZ,MAAM,CAAC,OAAO;SACd,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC1D,IAAI,CAAC,GAAG,CAAC;AACd;AAEM,SAAU,UAAU,CACxB,KAAgC,EAChC,KAAgD,EAAA;AAEhD,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB;AACxC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS;AACpC,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C;AACA,IAAA,OAAO,MAAM;AACf;SAEgB,iBAAiB,CAC/B,MAA2B,EAC3B,UAAmC,cAAc,EAAA;AAEjD,IAAA,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE;AACxB,SAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,SAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,MAAM;AAC7B,QAAA,EAAE,EAAE,GAAG;AACP,QAAA,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;QACnB,KAAK;QACL,KAAK,EAAE,+BAA+B,CAAC,KAAK,GAAG,+BAA+B,CAAC,MAAM,CAAC;AACvF,KAAA,CAAC,CAAC;AACP;AAEA;;AC9FA;AAyBA;AAEA;MAGa,8BAA8B,CAAA;AAD3C,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAiB1D,IAAA;AAfC,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;AACpG,YAAA,OAAO,yBAAyB,CAAC;AAC/B,gBAAA,KAAK,EAAE,sBAAsB;gBAC7B,KAAK;AACL,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,QAAQ,EAAE,SAAS;AACpB,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,yCAAyC,CACnF;QACH;IACF;8GAjBW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cADjB,MAAM,EAAA,CAAA,CAAA;;2FACnB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;MAsBrB,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAiB1D,IAAA;AAfC,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI;AACF,YAAA,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;AACpG,YAAA,OAAO,yBAAyB,CAAC;AAC/B,gBAAA,KAAK,EAAE,sBAAsB;gBAC7B,KAAK;AACL,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,QAAQ,EAAE,MAAM;AACjB,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,yCAAyC,CACnF;QACH;IACF;8GAjBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cADhB,MAAM,EAAA,CAAA,CAAA;;2FACnB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AAqBlC;AAEA;MAGa,sCAAsC,CAAA;AADnD,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAmB1D,IAAA;AAjBC,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI;AACF,YAAA,MAAM,WAAW,GAAG,MAAM,gBAAgB,CACxC,IAAI,CAAC,aAAa,EAClB,oBAAoB,EACpB,oBAAoB,CACrB;YACD,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,GAAG,KACzC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CACtD;YACD,OAAO,yBAAyB,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QACxE;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,sCAAsC,CAChF;QACH;IACF;8GAnBW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sCAAsC,cADzB,MAAM,EAAA,CAAA,CAAA;;2FACnB,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBADlD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;MAwBrB,yCAAyC,CAAA;AADtD,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAiC1D,IAAA;AA/BC,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,MAAM,gBAAgB,CACvC,IAAI,CAAC,aAAa,EAClB,oBAAoB,EACpB,oBAAoB,CACrB;YACD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,KAAI;AAC5C,gBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC;AAChC,gBAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,EAAE;oBAC5C,MAAM,GAAG,GAAG,QAA2D;oBACvE,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC5C,IAAI,KAAK,EAAE;AACT,wBAAA,OAAO,KAAK;oBACd;AACA,oBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;wBACZ,OAAO,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACzC;AACA,oBAAA,IAAI,GAAG,CAAC,EAAE,EAAE;AACV,wBAAA,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB;gBACF;gBACA,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,eAAe,CAAC;AACrD,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,yBAAyB,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,uCAAuC,CACjF;QACH;IACF;8GAnCW,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yCAAyC,cAD5B,MAAM,EAAA,CAAA,CAAA;;2FACnB,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBADrD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;MAwCrB,yCAAyC,CAAA;AADtD,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAyB1D,IAAA;AAvBC,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI;AACF,YAAA,MAAM,WAAW,GAAG,MAAM,gBAAgB,CACxC,IAAI,CAAC,aAAa,EAClB,oBAAoB,EACpB,oBAAoB,CACrB;AACD,YAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5B,OAAO,yBAAyB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAChD;YACA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAC3C,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;gBAC3E,OAAO,MAAM,KAAK,WAAW;YAC/B,CAAC,CAAC,CAAC,MAAM;AACT,YAAA,OAAO,yBAAyB,CAAC;AAC/B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,IAAI,GAAG,CAAC;AAC1D,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,4CAA4C,CACtF;QACH;IACF;8GA3BW,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yCAAyC,cAD5B,MAAM,EAAA,CAAA,CAAA;;2FACnB,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBADrD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -18,7 +18,7 @@ import { AXPExpressionEvaluatorService } from '@acorex-platform/framework-client
18
18
  import { AXPEntityService, AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';
19
19
  import { AXPActivityDefinitionService, AXPWorkflowDefinitionService, WorkflowExpressionScopeService } from '@acorex-platform/framework-client/workflow';
20
20
  import { toString, get } from 'lodash';
21
- import { b as buildWorkflowTaskDisplayParamsFromWorkflowState, d as buildWorkflowTaskDisplayParams, r as rehydrateWorkflowStateInputTitles } from './acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-CggaQgAl.mjs';
21
+ import { b as buildWorkflowTaskDisplayParamsFromWorkflowState, d as buildWorkflowTaskDisplayParams, r as rehydrateWorkflowStateInputTitles } from './acorex-platform-module-workflow-management-client-acorex-platform-module-workflow-management-client-CKudtLpx.mjs';
22
22
  import { f as formatReadableActivityName } from './acorex-platform-module-workflow-management-client-workflow-activity-instance-rows.utils-CMVZYS4y.mjs';
23
23
 
24
24
  //#region ---- Imports ----
@@ -563,7 +563,7 @@ class AXMWorkflowRunHistoryPopupComponent extends AXBasePageComponent {
563
563
  }
564
564
  }
565
565
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMWorkflowRunHistoryPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
566
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMWorkflowRunHistoryPopupComponent, isStandalone: true, selector: "axm-workflow-run-history-popup", inputs: { __popup__: { classPropertyName: "__popup__", publicName: "__popup__", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<ax-content>\n <div class=\"axm-workflow-run-history-popup\">\n <div class=\"axm-workflow-run-history-popup__sticky\">\n <div class=\"axm-workflow-run-history-popup__sticky-bar\">\n @if (summary().reporter || summary().startedAt) {\n <div class=\"axm-workflow-run-history-popup__overview\" role=\"list\">\n @if (summary().reporter) {\n <div class=\"axm-workflow-run-history-popup__overview-item\" role=\"listitem\">\n <span class=\"axm-workflow-run-history-popup__overview-k\">\n {{ '@workflow-management:workflow-run.history.field.reporter' | translate | async }}\n </span>\n <span class=\"axm-workflow-run-history-popup__overview-v\" [textContent]=\"summary().reporter\"></span>\n </div>\n }\n @if (summary().startedAt) {\n <div class=\"axm-workflow-run-history-popup__overview-item\" role=\"listitem\">\n <span class=\"axm-workflow-run-history-popup__overview-k\">\n {{ '@workflow-management:workflow-run.history.field.started-at' | translate | async }}\n </span>\n <span class=\"axm-workflow-run-history-popup__overview-v\">\n {{ summary().startedAt | format: 'datetime' : 'short' | async }}\n </span>\n </div>\n }\n </div>\n }\n\n <ax-tabs\n class=\"axm-workflow-run-history-popup__tabs\"\n [look]=\"'with-line'\"\n (onActiveTabChanged)=\"handleTabChange($event)\"\n >\n <ax-tab-item\n [key]=\"'timeline'\"\n [text]=\"('@workflow-management:workflow-run.history.tabs.timeline.title' | translate | async)!\"\n [active]=\"activeTabIndex() === 0\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-list-timeline\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n <ax-tab-item\n [key]=\"'visual'\"\n [text]=\"('@workflow-management:workflow-run.history.tabs.visual.title' | translate | async)!\"\n [active]=\"activeTabIndex() === 1\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-diagram-project\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n </ax-tabs>\n </div>\n </div>\n\n <div class=\"axm-workflow-run-history-popup__panel\">\n @if (activeTabIndex() === 0) {\n @defer (on viewport) {\n <axm-workflow-run-history-timeline-tab [rows]=\"rows()\" [isBusy]=\"isBusy()\" />\n } @placeholder {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n } @loading {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n }\n }\n\n @if (activeTabIndex() === 1) {\n @defer (on viewport) {\n <axm-workflow-run-history-visual-tab\n [definition]=\"definition()\"\n [rows]=\"rows()\"\n [isBusy]=\"isBusy()\"\n />\n } @placeholder {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n } @loading {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n }\n }\n </div>\n </div>\n</ax-content>\n", styles: ["@layer properties;.axm-workflow-run-history-popup{box-sizing:border-box;display:flex;height:100%;min-height:30vh;flex-direction:column;max-height:min(70vh,40rem)}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__sticky{position:sticky;top:0;z-index:2;flex-shrink:0;padding-inline:calc(var(--spacing, .25rem) * 6);background:rgb(var(--ax-sys-color-surface));border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__sticky-bar{display:flex;min-height:calc(var(--spacing, .25rem) * 12);flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.5rem 1.5rem}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__overview{display:flex;min-width:0px;flex-wrap:wrap;align-items:center;padding-block:calc(var(--spacing, .25rem) * 3);gap:.5rem 1.25rem}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__overview-item{display:flex;min-width:0px;align-items:baseline;gap:.375rem}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__overview-k{flex-shrink:0;font-size:.6875rem;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);text-transform:uppercase;line-height:1.2;letter-spacing:.04em;color:rgb(var(--ax-sys-color-on-light-surface))}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__overview-v{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);line-height:1.35;color:rgb(var(--ax-sys-color-on-surface))}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__tabs{min-width:0px;flex:auto;min-width:min(100%,12rem);margin-inline-start:auto}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__panel{min-height:0px;flex:auto;overflow-y:auto;padding-inline:calc(var(--spacing, .25rem) * 6);padding-top:calc(var(--spacing, .25rem) * 4);padding-bottom:calc(var(--spacing, .25rem) * 6)}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__defer-placeholder{display:flex;min-height:calc(var(--spacing, .25rem) * 32);align-items:center;justify-content:center}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i3.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i3.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXFormatPipe, name: "format" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [/* @ts-ignore */
566
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMWorkflowRunHistoryPopupComponent, isStandalone: true, selector: "axm-workflow-run-history-popup", inputs: { __popup__: { classPropertyName: "__popup__", publicName: "__popup__", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<ax-content>\n <div class=\"axm-workflow-run-history-popup\">\n <div class=\"axm-workflow-run-history-popup__sticky\">\n <div class=\"axm-workflow-run-history-popup__sticky-bar\">\n @if (summary().reporter || summary().startedAt) {\n <div class=\"axm-workflow-run-history-popup__overview\" role=\"list\">\n @if (summary().reporter) {\n <div class=\"axm-workflow-run-history-popup__overview-item\" role=\"listitem\">\n <span class=\"axm-workflow-run-history-popup__overview-k\">\n {{ '@workflow-management:workflow-run.history.field.reporter' | translate | async }}\n </span>\n <span class=\"axm-workflow-run-history-popup__overview-v\" [textContent]=\"summary().reporter\"></span>\n </div>\n }\n @if (summary().startedAt) {\n <div class=\"axm-workflow-run-history-popup__overview-item\" role=\"listitem\">\n <span class=\"axm-workflow-run-history-popup__overview-k\">\n {{ '@workflow-management:workflow-run.history.field.started-at' | translate | async }}\n </span>\n <span class=\"axm-workflow-run-history-popup__overview-v\">\n {{ summary().startedAt | format: 'datetime' : 'short' | async }}\n </span>\n </div>\n }\n </div>\n }\n\n <ax-tabs\n class=\"axm-workflow-run-history-popup__tabs\"\n [look]=\"'with-line'\"\n (onActiveTabChanged)=\"handleTabChange($event)\"\n >\n <ax-tab-item\n [key]=\"'timeline'\"\n [text]=\"('@workflow-management:workflow-run.history.tabs.timeline.title' | translate | async)!\"\n [active]=\"activeTabIndex() === 0\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-list-timeline\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n <ax-tab-item\n [key]=\"'visual'\"\n [text]=\"('@workflow-management:workflow-run.history.tabs.visual.title' | translate | async)!\"\n [active]=\"activeTabIndex() === 1\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-diagram-project\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n </ax-tabs>\n </div>\n </div>\n\n <div class=\"axm-workflow-run-history-popup__panel\">\n @if (activeTabIndex() === 0) {\n @defer (on viewport) {\n <axm-workflow-run-history-timeline-tab [rows]=\"rows()\" [isBusy]=\"isBusy()\" />\n } @placeholder {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n } @loading {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n }\n }\n\n @if (activeTabIndex() === 1) {\n @defer (on viewport) {\n <axm-workflow-run-history-visual-tab\n [definition]=\"definition()\"\n [rows]=\"rows()\"\n [isBusy]=\"isBusy()\"\n />\n } @placeholder {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n } @loading {\n <div class=\"axm-workflow-run-history-popup__defer-placeholder\" aria-busy=\"true\">\n <ax-loading></ax-loading>\n </div>\n }\n }\n </div>\n </div>\n</ax-content>\n", styles: ["@layer properties;.axm-workflow-run-history-popup{box-sizing:border-box;display:flex;height:100%;min-height:30vh;flex-direction:column;max-height:min(70vh,40rem)}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__sticky{position:sticky;top:0;z-index:2;flex-shrink:0;padding-inline:calc(var(--spacing, .25rem) * 6);background:rgb(var(--ax-sys-color-surface));border-bottom:1px solid rgb(var(--ax-sys-color-border-light-surface))}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__sticky-bar{display:flex;min-height:calc(var(--spacing, .25rem) * 12);flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.5rem 1.5rem}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__overview{display:flex;min-width:0px;flex-wrap:wrap;align-items:center;padding-block:calc(var(--spacing, .25rem) * 3);gap:.5rem 1.25rem}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__overview-item{display:flex;min-width:0px;align-items:baseline;gap:.375rem}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__overview-k{flex-shrink:0;font-size:.6875rem;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);text-transform:uppercase;line-height:1.2;letter-spacing:.04em;color:rgb(var(--ax-sys-color-on-light-surface))}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__overview-v{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);line-height:1.35;color:rgb(var(--ax-sys-color-on-surface))}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__tabs{min-width:0px;flex:auto;min-width:min(100%,12rem);margin-inline-start:auto}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__panel{min-height:0px;flex:auto;overflow-y:auto;padding-inline:calc(var(--spacing, .25rem) * 6);padding-top:calc(var(--spacing, .25rem) * 4);padding-bottom:calc(var(--spacing, .25rem) * 6)}.axm-workflow-run-history-popup .axm-workflow-run-history-popup__defer-placeholder{display:flex;min-height:calc(var(--spacing, .25rem) * 32);align-items:center;justify-content:center}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i3.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "reorderable", "reorderDelay", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged", "onTabsReordered"] }, { kind: "component", type: i3.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXFormatPipe, name: "format" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [/* @ts-ignore */
567
567
  import('./acorex-platform-module-workflow-management-client-workflow-run-history-timeline-tab.component-AnJ-Pywf.mjs').then(m => m.AXMWorkflowRunHistoryTimelineTabComponent)], () => [/* @ts-ignore */
568
568
  import('./acorex-platform-module-workflow-management-client-workflow-run-history-visual-tab.component-Bw68Jwcb.mjs').then(m => m.AXMWorkflowRunHistoryVisualTabComponent)]] }); }
569
569
  }
@@ -585,4 +585,4 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.0.8", ng
585
585
  }], ctorParameters: () => [], propDecorators: { __popup__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__popup__", required: false }] }] } }) });
586
586
 
587
587
  export { AXMWorkflowRunHistoryPopupComponent };
588
- //# sourceMappingURL=acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-B8YZ5wW8.mjs.map
588
+ //# sourceMappingURL=acorex-platform-module-workflow-management-client-workflow-run-history-popup.component-DbeueT-X.mjs.map