@acorex/modules 21.0.0-next.56 → 21.0.0-next.57

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 (68) hide show
  1. package/fesm2022/acorex-modules-application-management.mjs +1 -1
  2. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  3. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-NPUjHz-F.mjs → acorex-modules-auth-acorex-modules-auth-wfCSNwXC.mjs} +14 -14
  4. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-NPUjHz-F.mjs.map → acorex-modules-auth-acorex-modules-auth-wfCSNwXC.mjs.map} +1 -1
  5. package/fesm2022/{acorex-modules-auth-app-chooser.component-h61xNtRT.mjs → acorex-modules-auth-app-chooser.component-BY281-Cl.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-auth-app-chooser.component-h61xNtRT.mjs.map → acorex-modules-auth-app-chooser.component-BY281-Cl.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-auth-login.module-DF5AHqYe.mjs → acorex-modules-auth-login.module-CjgYlyOv.mjs} +4 -4
  8. package/fesm2022/{acorex-modules-auth-login.module-DF5AHqYe.mjs.map → acorex-modules-auth-login.module-CjgYlyOv.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-auth-master.layout-00ZTMhc3.mjs → acorex-modules-auth-master.layout-Clx8QDYW.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-auth-master.layout-00ZTMhc3.mjs.map → acorex-modules-auth-master.layout-Clx8QDYW.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-auth-oauth-callback.component-Ce5Fw8Qd.mjs → acorex-modules-auth-oauth-callback.component-CGnGAPJ2.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-auth-oauth-callback.component-Ce5Fw8Qd.mjs.map → acorex-modules-auth-oauth-callback.component-CGnGAPJ2.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-auth-password.component-DQYCm8wg.mjs → acorex-modules-auth-password.component-8eEX0lRP.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-auth-password.component-DQYCm8wg.mjs.map → acorex-modules-auth-password.component-8eEX0lRP.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-auth-password.component-CU0AY-Ia.mjs → acorex-modules-auth-password.component-CUxwThnN.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-auth-password.component-CU0AY-Ia.mjs.map → acorex-modules-auth-password.component-CUxwThnN.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-auth-routes-CM4fRaWb.mjs → acorex-modules-auth-routes-CYLKJm9g.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-auth-routes-CM4fRaWb.mjs.map → acorex-modules-auth-routes-CYLKJm9g.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-BBztdcvq.mjs → acorex-modules-auth-tenant-chooser.component-DDK1KW-8.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-BBztdcvq.mjs.map → acorex-modules-auth-tenant-chooser.component-DDK1KW-8.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-auth-two-factor.module-C9AafF86.mjs → acorex-modules-auth-two-factor.module-Iw2U7Cy5.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-auth-two-factor.module-C9AafF86.mjs.map → acorex-modules-auth-two-factor.module-Iw2U7Cy5.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-auth-user-sessions.component-Qw2sgsEe.mjs → acorex-modules-auth-user-sessions.component-sKDANprs.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-auth-user-sessions.component-Qw2sgsEe.mjs.map → acorex-modules-auth-user-sessions.component-sKDANprs.mjs.map} +1 -1
  25. package/fesm2022/acorex-modules-auth.mjs +1 -1
  26. package/fesm2022/{acorex-modules-common-audit-info-column.component-SiqKcBMQ.mjs → acorex-modules-common-audit-info-column.component-MSYPMPZJ.mjs} +2 -2
  27. package/fesm2022/{acorex-modules-common-audit-info-column.component-SiqKcBMQ.mjs.map → acorex-modules-common-audit-info-column.component-MSYPMPZJ.mjs.map} +1 -1
  28. package/fesm2022/acorex-modules-common.mjs +1 -1
  29. package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-UNhA-qi5.mjs → acorex-modules-conversation-acorex-modules-conversation-DlteA_jC.mjs} +343 -1008
  30. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DlteA_jC.mjs.map +1 -0
  31. package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Be58gcns.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BAgBuxlz.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Be58gcns.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BAgBuxlz.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-conversation-comments-page.component-3XBLeMW8.mjs → acorex-modules-conversation-comments-page.component-BrwP9l7M.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-conversation-comments-page.component-3XBLeMW8.mjs.map → acorex-modules-conversation-comments-page.component-BrwP9l7M.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CSu-lJuu.mjs → acorex-modules-conversation-send-assist-chat-message.command-BzKawEoN.mjs} +2 -2
  36. package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CSu-lJuu.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-BzKawEoN.mjs.map} +1 -1
  37. package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-CyoncQB1.mjs → acorex-modules-conversation-start-assist-chat.command-BUOGUMl0.mjs} +2 -2
  38. package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-CyoncQB1.mjs.map → acorex-modules-conversation-start-assist-chat.command-BUOGUMl0.mjs.map} +1 -1
  39. package/fesm2022/acorex-modules-conversation.mjs +1 -1
  40. package/fesm2022/acorex-modules-locale-management.mjs +27 -22
  41. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  42. package/fesm2022/acorex-modules-notification-management.mjs +1 -1
  43. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  44. package/fesm2022/acorex-modules-platform-dev-tools.mjs +2 -2
  45. package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
  46. package/fesm2022/acorex-modules-report-management.mjs +1 -1
  47. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  48. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Di6Sxtq3.mjs → acorex-modules-settings-management-acorex-modules-settings-management-B4Ee8USF.mjs} +6 -6
  49. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Di6Sxtq3.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-B4Ee8USF.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-Bml5VZUT.mjs → acorex-modules-settings-management-permission-definition.provider-nNhEFyc-.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-Bml5VZUT.mjs.map → acorex-modules-settings-management-permission-definition.provider-nNhEFyc-.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-settings-management-setting-page.component-lN-7sTpD.mjs → acorex-modules-settings-management-setting-page.component-CEvWwS_a.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-settings-management-setting-page.component-lN-7sTpD.mjs.map → acorex-modules-settings-management-setting-page.component-CEvWwS_a.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-settings-management-setting-view.component-D17G4RNQ.mjs → acorex-modules-settings-management-setting-view.component-C6ftmjuK.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-settings-management-setting-view.component-D17G4RNQ.mjs.map → acorex-modules-settings-management-setting-view.component-C6ftmjuK.mjs.map} +1 -1
  56. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  57. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-LQn5gZ6p.mjs → acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs} +2 -2
  58. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-LQn5gZ6p.mjs.map → acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs.map} +1 -1
  59. package/fesm2022/{acorex-modules-task-management-task-board.page-BokG-G6Z.mjs → acorex-modules-task-management-task-board.page-B2xxXscG.mjs} +4 -4
  60. package/fesm2022/{acorex-modules-task-management-task-board.page-BokG-G6Z.mjs.map → acorex-modules-task-management-task-board.page-B2xxXscG.mjs.map} +1 -1
  61. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  62. package/fesm2022/{acorex-modules-workflow-management-index-BxqOP8AA.mjs → acorex-modules-workflow-management-index-RRzkvrNM.mjs} +102 -21
  63. package/fesm2022/acorex-modules-workflow-management-index-RRzkvrNM.mjs.map +1 -0
  64. package/fesm2022/acorex-modules-workflow-management.mjs +2 -2
  65. package/package.json +2 -2
  66. package/types/acorex-modules-conversation.d.ts +35 -198
  67. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-UNhA-qi5.mjs.map +0 -1
  68. package/fesm2022/acorex-modules-workflow-management-index-BxqOP8AA.mjs.map +0 -1
@@ -1,2 +1,2 @@
1
- export { h as AXMPermissionsKeys, i as AXMSearchCommandProvider, j as AXMSettingProvider, k as AXMTaskBoardDefaultTaskPopoverComponent, e as AXMTaskBoardTaskPopoverOverlayService, l as AXMTaskBoardTaskPopoverShellComponent, m as AXMTaskManagementEntityProvider, o as AXMTaskManagementMenuProvider, p as AXMTaskManagementModule, q as AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID, r as AXM_TASK_VIEW_ALL_PERMISSION, s as AXPTaskBoardModule, d as AXPTaskBoardService, t as AXPTaskBoardShortcut, u as AXPTaskBoardShortcutViewComponent, v as AXPTaskBoardWidget, w as AXPTaskBoardWidgetViewComponent, x as AXPTaskPopoverComponent, y as AXPTaskTypeDataSourceDefinition, z as AXPWorkflowTaskProvider, B as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD, C as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT, D as AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY, E as AXP_WORKFLOW_TASK_PROVIDER, R as RootConfig, T as TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH, f as TASK_BOARD_GRID_ROW_ACTION_ITEMS, F as TASK_BOARD_GRID_ROW_VIEW_ACTION, c as canViewAllTaskAssignees, g as filterTasksOverlappingRange, G as isTaskBoardUnassignedAssigneeId, H as matchesTaskBoardAssigneeFilter, I as matchesTaskBoardAssigneeUserIdsFilter, n as normalizeTaskBoardAssigneeIds, J as resolveTaskPopoverComponent, K as taskAssignmentFactory, L as taskChecklistItemFactory, M as taskContextFactory, N as taskDependencyFactory, O as taskFactory, P as taskStatusFactory, Q as taskTemplateFactory, S as taskTypeFactory, U as timeLogFactory } from './acorex-modules-task-management-acorex-modules-task-management-LQn5gZ6p.mjs';
1
+ export { h as AXMPermissionsKeys, i as AXMSearchCommandProvider, j as AXMSettingProvider, k as AXMTaskBoardDefaultTaskPopoverComponent, e as AXMTaskBoardTaskPopoverOverlayService, l as AXMTaskBoardTaskPopoverShellComponent, m as AXMTaskManagementEntityProvider, o as AXMTaskManagementMenuProvider, p as AXMTaskManagementModule, q as AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID, r as AXM_TASK_VIEW_ALL_PERMISSION, s as AXPTaskBoardModule, d as AXPTaskBoardService, t as AXPTaskBoardShortcut, u as AXPTaskBoardShortcutViewComponent, v as AXPTaskBoardWidget, w as AXPTaskBoardWidgetViewComponent, x as AXPTaskPopoverComponent, y as AXPTaskTypeDataSourceDefinition, z as AXPWorkflowTaskProvider, B as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD, C as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT, D as AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY, E as AXP_WORKFLOW_TASK_PROVIDER, R as RootConfig, T as TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH, f as TASK_BOARD_GRID_ROW_ACTION_ITEMS, F as TASK_BOARD_GRID_ROW_VIEW_ACTION, c as canViewAllTaskAssignees, g as filterTasksOverlappingRange, G as isTaskBoardUnassignedAssigneeId, H as matchesTaskBoardAssigneeFilter, I as matchesTaskBoardAssigneeUserIdsFilter, n as normalizeTaskBoardAssigneeIds, J as resolveTaskPopoverComponent, K as taskAssignmentFactory, L as taskChecklistItemFactory, M as taskContextFactory, N as taskDependencyFactory, O as taskFactory, P as taskStatusFactory, Q as taskTemplateFactory, S as taskTypeFactory, U as timeLogFactory } from './acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs';
2
2
  //# sourceMappingURL=acorex-modules-task-management.mjs.map
@@ -1,3 +1,5 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, input, inject, NgZone, DestroyRef, viewChild, signal, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
1
3
  import { W as WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY } from './acorex-modules-workflow-management-WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY-D6q__Ewd.mjs';
2
4
  import * as i1 from '@acorex/cdk/accordion';
3
5
  import { AXAccordionCdkModule } from '@acorex/cdk/accordion';
@@ -24,14 +26,54 @@ import { AXPCommandService } from '@acorex/platform/runtime';
24
26
  import { AXPActivityDefinitionService } from '@acorex/platform/workflow';
25
27
  import * as i1$1 from '@angular/common';
26
28
  import { CommonModule } from '@angular/common';
27
- import * as i0 from '@angular/core';
28
- import { input, inject, NgZone, DestroyRef, viewChild, signal, computed, effect, untracked, ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
29
29
  import { FormsModule } from '@angular/forms';
30
30
  import { cloneDeep, isEqual } from 'lodash-es';
31
31
  import { RootConfig } from './acorex-modules-workflow-management.mjs';
32
32
  import { WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND } from './acorex-modules-workflow-management-save-workflow-definition-activities.command-CGNwslcn.mjs';
33
33
 
34
+ //#region ---- Workflow Definition Activities Page Provider ----
35
+ class AXMWorkflowDefinitionActivitiesPageComponentProvider {
36
+ async components() {
37
+ return [
38
+ {
39
+ key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,
40
+ loader: () => Promise.resolve().then(function () { return workflowDefinitionActivitiesPage_component; }).then((m) => m.AXMWorkflowDefinitionActivitiesPageComponent),
41
+ },
42
+ ];
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
45
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider, decorators: [{
48
+ type: Injectable
49
+ }] });
50
+
51
+ //#region ---- Types ----
52
+ //#endregion
53
+ //#region ---- Designer layout helpers ----
54
+ function isDesignerLayoutArranged(graph) {
55
+ return graph?.designer?.layoutArranged === true;
56
+ }
57
+ /** True when every activity has persisted designer node coordinates. */
58
+ function graphHasPersistedDesignerLayout(graph) {
59
+ const activities = graph?.activities ?? [];
60
+ if (activities.length === 0) {
61
+ return false;
62
+ }
63
+ const nodes = graph?.designer?.nodes;
64
+ if (nodes == null || Object.keys(nodes).length === 0) {
65
+ return false;
66
+ }
67
+ return activities.every((a) => {
68
+ const n = nodes[a.id];
69
+ return n != null && typeof n.x === 'number' && typeof n.y === 'number';
70
+ });
71
+ }
72
+ //#endregion
73
+
34
74
  //#region ---- Imports ----
75
+ //#endregion
76
+ //#region ---- Constants ----
35
77
  const DEFAULT_NODE_W = 240;
36
78
  const DEFAULT_NODE_H = 96;
37
79
  const DESIGNER_GRID_SIZE = 20;
@@ -133,6 +175,9 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
133
175
  //#endregion
134
176
  //#region ---- State ----
135
177
  this.baselineGraph = signal(null, ...(ngDevMode ? [{ debugName: "baselineGraph" }] : /* istanbul ignore next */ []));
178
+ /** Persisted on `graph.designer.layoutArranged` after the first auto-arrange (or layout migration). */
179
+ this.layoutArrangedFlag = signal(false, ...(ngDevMode ? [{ debugName: "layoutArrangedFlag" }] : /* istanbul ignore next */ []));
180
+ this.initialLayoutArrangeInFlight = false;
136
181
  this.activityCatalogLoaded = signal(false, ...(ngDevMode ? [{ debugName: "activityCatalogLoaded" }] : /* istanbul ignore next */ []));
137
182
  this.activityDefCache = signal({}, ...(ngDevMode ? [{ debugName: "activityDefCache" }] : /* istanbul ignore next */ []));
138
183
  this.activitySelectItems = signal([], ...(ngDevMode ? [{ debugName: "activitySelectItems" }] : /* istanbul ignore next */ []));
@@ -368,6 +413,16 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
368
413
  untracked(() => this.hydrateFromServerContext(ctx));
369
414
  }
370
415
  });
416
+ effect(() => {
417
+ const ctx = this.context();
418
+ const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;
419
+ const arranged = this.layoutArrangedFlag();
420
+ const activityCount = this.activities().length;
421
+ if (!id || arranged || activityCount === 0) {
422
+ return;
423
+ }
424
+ untracked(() => void this.maybeApplyInitialArrangedLayout());
425
+ });
371
426
  this.destroyRef.onDestroy(() => this.clearAutoSaveTimer());
372
427
  }
373
428
  //#endregion
@@ -726,6 +781,7 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
726
781
  gridSize: DESIGNER_GRID_SIZE,
727
782
  });
728
783
  this.syncDesignerLayoutFromModel(arranged);
784
+ this.layoutArrangedFlag.set(true);
729
785
  this.recomputeDirty();
730
786
  }
731
787
  buildDesignerNodesForSave() {
@@ -744,12 +800,14 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
744
800
  }
745
801
  buildCurrentGraph() {
746
802
  const base = this.baselineGraph();
803
+ const layoutArranged = this.layoutArrangedFlag() || isDesignerLayoutArranged(base ?? undefined);
747
804
  return {
748
805
  startActivityId: this.startActivityId(),
749
806
  activities: this.activities().map((r) => instanceFromRow(r)),
750
807
  connections: cloneDeep(this.connections()),
751
808
  designer: {
752
809
  ...base?.designer,
810
+ layoutArranged: layoutArranged ? true : undefined,
753
811
  nodes: this.buildDesignerNodesForSave(),
754
812
  },
755
813
  };
@@ -831,6 +889,7 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
831
889
  try {
832
890
  const graph = ctx?.['graph'] ?? emptyGraph();
833
891
  this.baselineGraph.set(cloneDeep(graph));
892
+ this.layoutArrangedFlag.set(isDesignerLayoutArranged(graph));
834
893
  this.initDesignerLayoutFromGraph(graph);
835
894
  this.activities.set((graph.activities ?? []).map((a) => rowFromInstance(a)));
836
895
  this.connections.set(cloneDeep(graph.connections ?? []));
@@ -852,11 +911,50 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
852
911
  this.suppressAutoSave = false;
853
912
  }
854
913
  }
914
+ /**
915
+ * Runs auto-arrange once per workflow definition, then persists `graph.designer.layoutArranged`.
916
+ * Definitions that already have saved node positions are marked arranged without moving nodes.
917
+ */
918
+ async maybeApplyInitialArrangedLayout() {
919
+ if (this.layoutArrangedFlag() || this.initialLayoutArrangeInFlight) {
920
+ return;
921
+ }
922
+ const ctx = this.context();
923
+ const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;
924
+ if (!id) {
925
+ return;
926
+ }
927
+ if (this.activities().length === 0) {
928
+ return;
929
+ }
930
+ this.initialLayoutArrangeInFlight = true;
931
+ this.suppressAutoSave = true;
932
+ try {
933
+ const base = this.baselineGraph();
934
+ if (graphHasPersistedDesignerLayout(base ?? undefined)) {
935
+ this.layoutArrangedFlag.set(true);
936
+ this.recomputeDirty();
937
+ if (this.isDirty()) {
938
+ await this.handleSaveExecute({ silent: true });
939
+ }
940
+ return;
941
+ }
942
+ this.applyArrangedLayout();
943
+ if (this.isDirty()) {
944
+ await this.handleSaveExecute({ silent: true });
945
+ }
946
+ }
947
+ finally {
948
+ this.suppressAutoSave = false;
949
+ this.initialLayoutArrangeInFlight = false;
950
+ }
951
+ }
855
952
  applyBaselineGraph() {
856
953
  this.clearAutoSaveTimer();
857
954
  this.suppressAutoSave = true;
858
955
  try {
859
956
  const base = this.baselineGraph();
957
+ this.layoutArrangedFlag.set(isDesignerLayoutArranged(base ?? undefined));
860
958
  this.initDesignerLayoutFromGraph(base ?? undefined);
861
959
  const rows = (base?.activities ?? []).map((a) => rowFromInstance(a));
862
960
  this.activities.set(rows);
@@ -1186,22 +1284,5 @@ var workflowDefinitionActivitiesPage_component = /*#__PURE__*/Object.freeze({
1186
1284
  AXMWorkflowDefinitionActivitiesPageComponent: AXMWorkflowDefinitionActivitiesPageComponent
1187
1285
  });
1188
1286
 
1189
- //#region ---- Workflow Definition Activities Page Provider ----
1190
- class AXMWorkflowDefinitionActivitiesPageComponentProvider {
1191
- async components() {
1192
- return [
1193
- {
1194
- key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,
1195
- loader: () => Promise.resolve().then(function () { return workflowDefinitionActivitiesPage_component; }).then((m) => m.AXMWorkflowDefinitionActivitiesPageComponent),
1196
- },
1197
- ];
1198
- }
1199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1200
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider }); }
1201
- }
1202
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider, decorators: [{
1203
- type: Injectable
1204
- }] });
1205
-
1206
- export { AXMWorkflowDefinitionActivitiesPageComponent, AXMWorkflowDefinitionActivitiesPageComponentProvider, WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY };
1207
- //# sourceMappingURL=acorex-modules-workflow-management-index-BxqOP8AA.mjs.map
1287
+ export { AXMWorkflowDefinitionActivitiesPageComponent, AXMWorkflowDefinitionActivitiesPageComponentProvider, WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY, graphHasPersistedDesignerLayout, isDesignerLayoutArranged };
1288
+ //# sourceMappingURL=acorex-modules-workflow-management-index-RRzkvrNM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-workflow-management-index-RRzkvrNM.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page-component.provider.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.types.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.html"],"sourcesContent":["import { AXPPageComponentDefinition, AXPPageComponentProvider } from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY } from './WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY';\n\n//#region ---- Workflow Definition Activities Page Provider ----\n\n@Injectable()\nexport class AXMWorkflowDefinitionActivitiesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-definition-activities-page.component').then(\n (m) => m.AXMWorkflowDefinitionActivitiesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Types ----\n\nimport type { AXPWorkflowActivityPaletteItem } from '@acorex/modules/platform-management';\nimport type { AXPActivityDefinition, AXPWorkflowGraph } from '@acorex/platform/workflow';\n\nexport interface AXMWorkflowActivityEditorRow {\n id: string;\n name: string;\n inputs: Record<string, unknown>;\n extensions?: Record<string, unknown>;\n}\n\nexport interface AXMWorkflowActivitySelectItem {\n value: string;\n text: string;\n description: string;\n icon: string;\n categoryId: string;\n categoryTitle: string;\n}\n\nexport interface AXMWorkflowActivityPaletteGroup {\n id: string;\n title: string;\n items: AXPWorkflowActivityPaletteItem[];\n}\n\nexport interface AXMWorkflowActivityCatalogRow extends AXPActivityDefinition {\n id: string;\n}\n\nexport interface AXMWorkflowOutcomePortRow {\n port: string;\n label: string;\n}\n\nexport interface AXMWorkflowActivityNodeInfoRow {\n title: string;\n content: string;\n}\n\n/** Persisted coordinates for workflow designer nodes (see {@link AXPWorkflowGraph.designer}). */\nexport interface AXMWorkflowDesignerNodeLayout {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n//#endregion\n\n//#region ---- Designer layout helpers ----\n\nexport function isDesignerLayoutArranged(graph: AXPWorkflowGraph | null | undefined): boolean {\n return graph?.designer?.layoutArranged === true;\n}\n\n/** True when every activity has persisted designer node coordinates. */\nexport function graphHasPersistedDesignerLayout(graph: AXPWorkflowGraph | null | undefined): boolean {\n const activities = graph?.activities ?? [];\n if (activities.length === 0) {\n return false;\n }\n const nodes = graph?.designer?.nodes;\n if (nodes == null || Object.keys(nodes).length === 0) {\n return false;\n }\n return activities.every((a) => {\n const n = nodes[a.id];\n return n != null && typeof n.x === 'number' && typeof n.y === 'number';\n });\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXAccordionCdkModule } from '@acorex/cdk/accordion';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuItem,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n arrangeWorkflowDiagram,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n type AXPWorkflowActivityPaletteItem,\n type AXPWorkflowDesignerActivation,\n type AXPWorkflowDiagramModel,\n type AXPWorkflowNode,\n} from '@acorex/modules/platform-management';\nimport {\n AXPActionMenuItem,\n AXPDataGenerator,\n AXPExecuteCommand,\n AXPExecuteCommandResult,\n type AXPMultiLanguageString,\n type AXPProperty,\n} from '@acorex/platform/core';\nimport {\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPPropertyViewerChangedEvent,\n AXPPropertyViewerComponent,\n AXPPropertyViewerTab,\n buildPropertyViewerTabsFromProperties,\n type AXPLayoutSideDetailPanelEmptyState,\n type AXPLayoutSideDetailPanelHeader,\n type AXPLayoutSideDetailPanelRow,\n} from '@acorex/platform/layout/components';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';\nimport { mapAXPPropertyToWidgetProperty, type AXPWidgetPropertyGroup } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport {\n AXPActivityDefinitionService,\n type AXPActivityDefinition,\n type AXPActivityDefinitionCategoryRef,\n type AXPActivityDefinitionQueryResult,\n type AXPConnection,\n type AXPWorkflowActivityInstance,\n type AXPWorkflowGraph,\n} from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n NgZone,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { RootConfig } from '../../const';\nimport {\n SaveWorkflowDefinitionActivitiesInput,\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n} from '../../entities/workflow-definition/commands/save-workflow-definition-activities.command';\nimport {\n graphHasPersistedDesignerLayout,\n isDesignerLayoutArranged,\n type AXMWorkflowActivityCatalogRow,\n type AXMWorkflowActivityEditorRow,\n type AXMWorkflowActivityNodeInfoRow,\n type AXMWorkflowActivityPaletteGroup,\n type AXMWorkflowActivitySelectItem,\n type AXMWorkflowDesignerNodeLayout,\n type AXMWorkflowOutcomePortRow,\n} from './workflow-definition-activities-page.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst DEFAULT_NODE_W = 240;\nconst DEFAULT_NODE_H = 96;\nconst DESIGNER_GRID_SIZE = 20;\n/** Debounce window before persisting designer edits (drag emits many modelChange events). */\nconst AUTO_SAVE_DEBOUNCE_MS = 500;\n\nconst DISCARD_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:Discard';\nconst ADD_STEP_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:AddStep';\nconst ARRANGE_LAYOUT_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:ArrangeLayout';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_ID = 'workflow-management.activities.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_ID = 'workflow-management.activities.add-activity';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.add-activity';\n\nconst ARRANGE_LAYOUT_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.arrange-layout';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeActivityDefinitionInputs(raw: unknown): AXPProperty[] {\n if (Array.isArray(raw)) {\n return raw as AXPProperty[];\n }\n if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n return Array.isArray(parsed) ? (parsed as AXPProperty[]) : [];\n } catch {\n return [];\n }\n }\n return [];\n}\n\nfunction portKey(port: string | null | undefined): string {\n return port == null || port === '' ? 'Done' : port;\n}\n\nfunction rowFromInstance(a: AXPWorkflowActivityInstance): AXMWorkflowActivityEditorRow {\n const inputs =\n a.inputs != null && typeof a.inputs === 'object' && !Array.isArray(a.inputs)\n ? { ...(a.inputs as Record<string, unknown>) }\n : {};\n const extRaw = a.extensions;\n const extensions =\n extRaw != null && typeof extRaw === 'object' && !Array.isArray(extRaw)\n ? { ...(extRaw as Record<string, unknown>) }\n : undefined;\n return {\n id: a.id,\n name: typeof a.name === 'string' ? a.name : '',\n inputs,\n ...(extensions != null && Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n}\n\nfunction instanceFromRow(r: AXMWorkflowActivityEditorRow): AXPWorkflowActivityInstance {\n const out: AXPWorkflowActivityInstance = { id: r.id, name: r.name, inputs: { ...r.inputs } };\n if (r.extensions != null && Object.keys(r.extensions).length > 0) {\n out.extensions = { ...r.extensions };\n }\n return out;\n}\n\nfunction emptyGraph(): AXPWorkflowGraph {\n return { startActivityId: '', activities: [], connections: [] };\n}\n\nfunction graphFingerprint(g: AXPWorkflowGraph | null): unknown {\n if (g == null) {\n return null;\n }\n return {\n startActivityId: g.startActivityId,\n activities: g.activities,\n connections: g.connections,\n designer: g.designer,\n };\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-definition-activities-page',\n imports: [\n CommonModule,\n FormsModule,\n AXAccordionCdkModule,\n AXButtonModule,\n AXMenuModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSearchBoxModule,\n AXSelectBoxModule,\n AXTranslationModule,\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n ],\n host: {\n style: 'display: block; width: 100%; height: 100%;',\n },\n templateUrl: './workflow-definition-activities-page.component.html',\n styleUrl: './workflow-definition-activities-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXPPageLayoutBase, useExisting: AXMWorkflowDefinitionActivitiesPageComponent }],\n})\nexport class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly commandService = inject(AXPCommandService);\n private readonly entityService = inject(AXPEntityService);\n private readonly activityDefService = inject(AXPActivityDefinitionService);\n private readonly mlResolver = inject(AXTranslationService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- Auto-save ----\n\n private autoSaveTimer: ReturnType<typeof setTimeout> | null = null;\n private autoSaveInFlight = false;\n private autoSavePending = false;\n private suppressAutoSave = false;\n\n //#region ---- View refs ----\n\n private readonly propertyViewerRef = viewChild(AXPPropertyViewerComponent);\n private readonly workflowDesignerRef = viewChild(AXPWorkflowDesignerComponent);\n private readonly contextMenu = viewChild(AXContextMenuComponent);\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly baselineGraph = signal<AXPWorkflowGraph | null>(null);\n /** Persisted on `graph.designer.layoutArranged` after the first auto-arrange (or layout migration). */\n private readonly layoutArrangedFlag = signal(false);\n private initialLayoutArrangeInFlight = false;\n private readonly activityCatalogLoaded = signal(false);\n private readonly activityDefCache = signal<Record<string, AXPActivityDefinition>>({});\n\n protected readonly activitySelectItems = signal<AXMWorkflowActivitySelectItem[]>([]);\n protected readonly activities = signal<AXMWorkflowActivityEditorRow[]>([]);\n protected readonly connections = signal<AXPConnection[]>([]);\n protected readonly startActivityId = signal('');\n protected readonly selectedRowId = signal<string | null>(null);\n protected readonly viewerTabs = signal<AXPPropertyViewerTab[]>([]);\n protected readonly selectedActivityOutcomeRows = signal<AXMWorkflowOutcomePortRow[]>([]);\n protected readonly isDirty = signal(false);\n protected readonly backgroundPattern = signal<'line' | 'dots'>('dots');\n protected readonly zoomLevel = signal(100);\n protected readonly isFullscreen = signal(false);\n protected readonly isInfoPanelOpen = signal(false);\n protected readonly isPaletteOpen = signal(false);\n protected readonly paletteSearchTerm = signal('');\n\n /** Canvas layout keyed by activity instance id; kept in sync with designer `modelChange` and saved on `graph.designer`. */\n private readonly designerLayout = signal<Record<string, AXMWorkflowDesignerNodeLayout>>({});\n\n //#endregion\n\n //#region ---- Computed ----\n\n private readonly context = computed(() => this.rootContext() ?? {});\n\n protected readonly selectedRow = computed(() => this.activities().find((x) => x.id === this.selectedRowId()) ?? null);\n\n protected readonly startActivityItems = computed(() =>\n this.activities().map((r) => ({ value: r.id, text: this.formatActivityStepLabel(r) })),\n );\n\n protected readonly activitySelectOptions = computed<AXMWorkflowActivitySelectItem[]>(() => {\n const graphTitleByName = new Map<string, string>();\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n) {\n continue;\n }\n const ext = r.extensions;\n const dt = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (dt) {\n graphTitleByName.set(n, dt);\n }\n }\n const byValue = new Map<string, AXMWorkflowActivitySelectItem>();\n for (const x of this.activitySelectItems()) {\n byValue.set(x.value, {\n value: x.value,\n description: x.description,\n icon: x.icon,\n text: graphTitleByName.get(x.value) ?? x.text,\n categoryId: x.categoryId,\n categoryTitle: x.categoryTitle,\n });\n }\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n || byValue.has(n)) {\n continue;\n }\n byValue.set(n, {\n value: n,\n description: '',\n icon: '',\n text: graphTitleByName.get(n) ?? n,\n categoryId: 'uncategorized',\n categoryTitle: 'Uncategorized',\n });\n }\n return [...byValue.values()].sort((a, b) => a.text.localeCompare(b.text));\n });\n\n protected readonly paletteItems = computed<AXPWorkflowActivityPaletteItem[]>(() =>\n this.activitySelectOptions().map((x) => ({\n type: x.value,\n title: x.text,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n })),\n );\n\n protected readonly paletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const groupsById = new Map<string, AXMWorkflowActivityPaletteGroup>();\n for (const item of this.activitySelectOptions()) {\n const groupId = item.categoryId.trim() || 'uncategorized';\n const groupTitle = item.categoryTitle.trim() || 'Uncategorized';\n const existing = groupsById.get(groupId);\n const paletteItem: AXPWorkflowActivityPaletteItem = {\n type: item.value,\n title: item.text,\n description: item.description,\n icon: item.icon,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n };\n if (existing) {\n existing.items.push(paletteItem);\n continue;\n }\n groupsById.set(groupId, { id: groupId, title: groupTitle, items: [paletteItem] });\n }\n return [...groupsById.values()]\n .map((group) => ({\n ...group,\n items: [...group.items].sort((a, b) => a.title.localeCompare(b.title)),\n }))\n .sort((a, b) => a.title.localeCompare(b.title));\n });\n\n protected readonly filteredPaletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const searchTerm = this.paletteSearchTerm().trim().toLowerCase();\n const groups = this.paletteGroups();\n if (!searchTerm) {\n return groups;\n }\n return groups\n .map((group) => {\n const items = group.items.filter((item) => {\n const title = item.title?.toLowerCase() ?? '';\n const description = item.description?.toLowerCase() ?? '';\n return title.includes(searchTerm) || description.includes(searchTerm);\n });\n return { ...group, items };\n })\n .filter((group) => group.items.length > 0);\n });\n\n protected readonly designerModel = computed<AXPWorkflowDiagramModel>(() => {\n const rows = this.activities();\n const conns = this.connections();\n const cache = this.activityDefCache();\n const layout = this.designerLayout();\n const nodes = rows.map((r, i) => {\n const def = r.name ? cache[r.name] : undefined;\n const outcomes = this.buildOutcomeRows(r.id, r, def);\n const L = layout[r.id];\n const pos = L ? { x: L.x, y: L.y } : this.gridFallbackPosition(i);\n const size = L ? { width: L.width, height: L.height } : { width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n return {\n id: r.id,\n type: r.name,\n title: this.resolveNodeTitle(r),\n shape: 'rounded-rectangle' as const,\n size,\n position: pos,\n color: this.startActivityId() === r.id ? ('success' as const) : ('secondary' as const),\n inboundPorts: [\n { id: `${r.id}:in`, kind: 'inbound' as const, side: 'left' as const, ratio: 0.5, key: 'in', label: 'in' },\n ],\n outboundPorts: outcomes.map((o, oi, arr) => ({\n id: `${r.id}:out:${o.port}`,\n kind: 'outbound' as const,\n side: 'right' as const,\n ratio: arr.length === 1 ? 0.5 : (oi + 1) / (arr.length + 1),\n key: o.port,\n label: o.label,\n })),\n };\n });\n const outPortByKey = new Map<string, string>();\n for (const n of nodes) {\n for (const p of n.outboundPorts) {\n outPortByKey.set(`${n.id}:${portKey(p.key)}`, p.id);\n }\n }\n const connectors = conns\n .map((c, i) => {\n const sourcePortKey = portKey(c.source.port);\n const sourcePortId = outPortByKey.get(`${c.source.activtyName}:${sourcePortKey}`);\n if (!sourcePortId) {\n return null;\n }\n return {\n id: `c-${i}-${c.source.activtyName}-${c.target.activtyName}-${sourcePortKey}`,\n sourceNodeId: c.source.activtyName,\n sourcePortId,\n targetNodeId: c.target.activtyName,\n targetPortId: `${c.target.activtyName}:in`,\n };\n })\n .filter((x): x is NonNullable<typeof x> => x != null);\n return { nodes, connectors };\n });\n\n protected readonly selectedNodeInfoRows = computed<AXMWorkflowActivityNodeInfoRow[]>(() => {\n const selected = this.selectedRow();\n if (!selected) {\n return [];\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n return [\n { title: 'Title', content: this.resolveNodeTitle(selected) || '---' },\n { title: 'Type', content: selected.name || '---' },\n { title: 'Id', content: selected.id || '---' },\n { title: 'Category', content: selectOption?.categoryTitle || '---' },\n { title: 'Inputs', content: `${Object.keys(selected.inputs ?? {}).length}` },\n { title: 'Outcomes', content: `${this.selectedActivityOutcomeRows().length}` },\n ];\n });\n\n protected readonly workflowDetailPanelCopy = signal({\n panelTitle: 'Activity details',\n emptyMessage: 'Select a node to see details.',\n });\n\n protected readonly workflowDetailPanelHeader = computed((): AXPLayoutSideDetailPanelHeader | null => {\n const selected = this.selectedRow();\n if (selected == null) {\n return null;\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n const iconGlyph = selectOption?.icon?.trim();\n return {\n primaryTitle: this.resolveNodeTitle(selected) || '---',\n icon: iconGlyph ? { iconClass: `fa-light fa-lg fa-fw ${iconGlyph}` } : undefined,\n };\n });\n\n protected readonly workflowDetailPanelRows = computed((): AXPLayoutSideDetailPanelRow[] => {\n if (this.selectedRow() == null) {\n return [];\n }\n return this.selectedNodeInfoRows().map((row) => ({\n label: row.title,\n value: row.content,\n }));\n });\n\n protected readonly workflowDetailPanelEmptyState = computed((): AXPLayoutSideDetailPanelEmptyState | null => {\n if (this.selectedRow() != null) {\n return null;\n }\n const copy = this.workflowDetailPanelCopy();\n return {\n primaryTitle: copy.panelTitle,\n message: copy.emptyMessage,\n icon: { iconClass: 'fa-solid fa-lg fa-fw fa-diagram-project' },\n };\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n untracked(() => this.hydrateFromServerContext(ctx as Record<string, unknown> | undefined));\n }\n });\n effect(() => {\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n const arranged = this.layoutArrangedFlag();\n const activityCount = this.activities().length;\n if (!id || arranged || activityCount === 0) {\n return;\n }\n untracked(() => void this.maybeApplyInitialArrangedLayout());\n });\n this.destroyRef.onDestroy(() => this.clearAutoSaveTimer());\n }\n\n //#endregion\n\n //#region ---- Page chrome / commands ----\n\n // override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n // const addTitle =\n // (await this.translateService.translateAsync(\n // '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step',\n // )) || 'Add step';\n // const discardTitle = (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n // const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n // const addAction: AXPLayoutDetailsViewAction = {\n // title: addTitle,\n // icon: 'fa-light fa-plus',\n // zone: 'header',\n // priority: 'primary',\n // color: 'primary',\n // command: { name: ADD_STEP_COMMAND, options: {} },\n // };\n // const discardAction: AXPLayoutDetailsViewAction = {\n // title: discardTitle,\n // icon: 'fa-light fa-rotate-left',\n // zone: 'footer',\n // priority: 'secondary',\n // color: 'default',\n // visible: this.isDirty(),\n // command: { name: DISCARD_COMMAND, options: {} },\n // };\n // const saveAction: AXPLayoutDetailsViewAction = {\n // title: saveTitle,\n // icon: 'fa-light fa-floppy-disk',\n // zone: 'footer',\n // priority: 'primary',\n // color: 'primary',\n // visible: this.isDirty(),\n // command: { name: WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND, options: {} },\n // };\n // return [addAction, discardAction, saveAction];\n // }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const title = await this.mlResolver.translateAsync(ARRANGE_LAYOUT_ACTION_TITLE_KEY);\n return [\n {\n title,\n icon: 'fa-light fa-sitemap',\n command: { name: ARRANGE_LAYOUT_COMMAND, options: {} },\n disabled: this.activities().length === 0,\n },\n ];\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === DISCARD_COMMAND) {\n this.applyBaselineGraph();\n return;\n }\n if (command.name === ADD_STEP_COMMAND) {\n this.addStep();\n return;\n }\n if (command.name === ARRANGE_LAYOUT_COMMAND) {\n this.applyArrangedLayout();\n return;\n }\n if (command.name === WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND) {\n return this.handleSaveExecute() as unknown as Promise<void>;\n }\n }\n\n //#endregion\n\n //#region ---- Designer handlers ----\n\n protected onDesignerModelChange(model: AXPWorkflowDiagramModel): void {\n const previousNodeCount = this.activities().length;\n const oldById = new Map(this.activities().map((x) => [x.id, x]));\n const nextRows: AXMWorkflowActivityEditorRow[] = model.nodes.map((n) => {\n const prev = oldById.get(n.id);\n const title = n.title?.trim();\n const extensions = { ...(prev?.extensions ?? {}) };\n if (title) {\n extensions['displayTitle'] = title;\n } else {\n delete extensions['displayTitle'];\n }\n return {\n id: n.id,\n name: n.type?.trim() ? n.type : (prev?.name ?? ''),\n inputs: { ...(prev?.inputs ?? {}) },\n ...(Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n });\n const outgoingByPortId = new Map<string, string>();\n for (const n of model.nodes) {\n for (const p of n.outboundPorts) {\n outgoingByPortId.set(p.id, portKey(p.key));\n }\n }\n const nextConnections: AXPConnection[] = [];\n for (const c of model.connectors) {\n const pk = outgoingByPortId.get(c.sourcePortId);\n if (!pk) {\n continue;\n }\n nextConnections.push({\n source: { activtyName: c.sourceNodeId, port: pk === 'Done' ? null : pk },\n target: { activtyName: c.targetNodeId, port: null },\n });\n }\n this.activities.set(nextRows);\n this.connections.set(nextConnections);\n if (!nextRows.some((x) => x.id === this.startActivityId())) {\n this.startActivityId.set(nextRows[0]?.id ?? '');\n }\n if (!nextRows.some((x) => x.id === this.selectedRowId())) {\n this.selectedRowId.set(nextRows[0]?.id ?? null);\n }\n for (const r of nextRows) {\n void this.ensureDefinition(r.name);\n }\n this.syncDesignerLayoutFromModel(model);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n if (nextRows.length > previousNodeCount) {\n this.closePalette();\n }\n }\n\n protected onDesignerActivationChange(a: AXPWorkflowDesignerActivation | null): void {\n if (a?.kind !== 'node') {\n return;\n }\n this.selectedRowId.set(a.id);\n void this.refreshPropertyViewer();\n }\n\n //#region ---- Context Menu ----\n\n protected onDesignerNodeContextMenu(payload: { node: AXPWorkflowNode; event: MouseEvent }): void {\n const anchor =\n payload.event.currentTarget instanceof HTMLElement\n ? payload.event.currentTarget\n : payload.event.target instanceof HTMLElement\n ? payload.event.target.closest('.axp-workflow-designer__node')\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(payload.event.clientX, payload.event.clientY, anchor, [\n ADD_ACTIVITY_ACTION_ID,\n TOGGLE_DETAIL_PANEL_ACTION_ID,\n ]);\n }\n\n protected onDesignerSurfaceContextMenu(event: MouseEvent): void {\n if (event.target instanceof HTMLElement && event.target.closest('.axp-workflow-designer__node')) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const anchor =\n event.target instanceof HTMLElement\n ? (event.target.closest('.axp-workflow-designer__surface') ?? event.target)\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(event.clientX, event.clientY, anchor, [ADD_ACTIVITY_ACTION_ID]);\n }\n\n protected handleWorkflowContextMenuItemClick(e: AXContextMenuItemsClickEvent): void {\n if (e.item.name === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n this.toggleInfoPanel();\n return;\n }\n if (e.item.name === ADD_ACTIVITY_ACTION_ID) {\n this.openPalette();\n }\n }\n\n protected openPalette(): void {\n this.isPaletteOpen.set(true);\n this.paletteSearchTerm.set('');\n }\n\n protected closePalette(): void {\n this.isPaletteOpen.set(false);\n }\n\n private async openWorkflowContextMenuAt(\n clientX: number,\n clientY: number,\n targetElement: HTMLElement,\n actionIds: string[],\n ): Promise<void> {\n const items: AXMenuItem[] = [];\n for (const actionId of actionIds) {\n const item = await this.buildWorkflowContextMenuItem(actionId);\n if (item != null) {\n items.push(item);\n }\n }\n if (items.length === 0) {\n return;\n }\n const menu = this.contextMenu();\n if (menu == null) {\n return;\n }\n this.ngZone.run(() => {\n const openingEvent = {\n sender: menu,\n canceled: false,\n targetElement,\n items,\n } as AXContextMenuOpeningEvent;\n menu.showAt({ x: clientX, y: clientY }, targetElement, openingEvent);\n });\n }\n\n private async buildWorkflowContextMenuItem(actionId: string): Promise<AXMenuItem | null> {\n if (actionId === ADD_ACTIVITY_ACTION_ID) {\n return {\n name: ADD_ACTIVITY_ACTION_ID,\n text: (await this.translateService.translateAsync(ADD_ACTIVITY_ACTION_TITLE_KEY)) ?? 'Add Activity',\n icon: 'fa-light fa-plus',\n };\n }\n if (actionId === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n return {\n name: TOGGLE_DETAIL_PANEL_ACTION_ID,\n text:\n (await this.translateService.translateAsync(TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY)) ?? 'Toggle Details Panel',\n icon: 'fa-light fa-sidebar',\n };\n }\n return null;\n }\n\n //#endregion\n\n protected onBackgroundPatternChange(event: Event): void {\n const value = (event.target as HTMLSelectElement).value;\n if (value === 'line' || value === 'dots') {\n this.backgroundPattern.set(value);\n }\n }\n\n protected onDesignerZoomChange(value: number): void {\n this.zoomLevel.set(this.clampZoomLevel(value));\n }\n\n protected onPaletteSearchChange(event: { value?: string | null } | null): void {\n this.paletteSearchTerm.set(event?.value ?? '');\n }\n\n protected zoomIn(): void {\n this.workflowDesignerRef()?.zoomIn();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomOut(): void {\n this.workflowDesignerRef()?.zoomOut();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomReset(): void {\n this.workflowDesignerRef()?.zoomReset();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? 100));\n }\n\n protected toggleFullscreen(): void {\n const next = !this.isFullscreen();\n this.isFullscreen.set(next);\n const doc = globalThis.document;\n if (!doc) {\n return;\n }\n if (next) {\n void doc.documentElement.requestFullscreen?.();\n return;\n }\n void doc.exitFullscreen?.();\n }\n\n protected toggleInfoPanel(): void {\n this.isInfoPanelOpen.update((open) => !open);\n }\n\n protected onStartActivityChange(event: { value?: string | null }): void {\n this.startActivityId.set(event.value != null ? String(event.value) : '');\n this.recomputeDirty();\n }\n\n protected onSelectedActivityTypeChange(event: { value?: string | null }): void {\n const row = this.selectedRow();\n if (!row) {\n return;\n }\n const name = event.value != null ? String(event.value) : '';\n const rowId = row.id;\n this.activities.update((rows) =>\n rows.map((r) => (r.id !== rowId ? r : { ...r, name, inputs: {}, extensions: undefined })),\n );\n void this.ensureDefinition(name);\n void this.activityDefService.getActivityByName(name).then((def) => {\n const rowNow = this.activities().find((r) => r.id === rowId) ?? null;\n const allowed = new Set(this.buildOutcomeRows(rowId, rowNow, def).map((o) => o.port));\n this.pruneOutgoingConnections(rowId, allowed);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n });\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n protected onViewerChanged(ev: AXPPropertyViewerChangedEvent): void {\n if (ev.mode === 'init') {\n return;\n }\n const id = this.selectedRowId();\n if (id == null || ev.values == null) {\n return;\n }\n const inputs = (ev.values as { inputs?: Record<string, unknown> }).inputs ?? {};\n this.activities.update((rows) => rows.map((r) => (r.id === id ? { ...r, inputs: { ...inputs } } : r)));\n const sel = this.activities().find((r) => r.id === id);\n if (sel?.name?.trim()) {\n void this.activityDefService.getActivityByName(sel.name).then((def) => {\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(sel.id, sel, def));\n });\n }\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Graph persistence ----\n\n private gridFallbackPosition(index: number): { x: number; y: number } {\n return { x: 80 + (index % 4) * 320, y: 80 + Math.floor(index / 4) * 190 };\n }\n\n private clampZoomLevel(value: number): number {\n if (Number.isNaN(value)) {\n return 100;\n }\n return Math.max(20, Math.min(300, Math.round(value)));\n }\n\n private initDesignerLayoutFromGraph(graph: AXPWorkflowGraph | null | undefined): void {\n const activities = graph?.activities ?? [];\n const raw = graph?.designer?.nodes;\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n if (raw != null) {\n for (const [id, v] of Object.entries(raw)) {\n if (v != null && typeof v.x === 'number' && typeof v.y === 'number') {\n next[id] = {\n x: v.x,\n y: v.y,\n width: typeof v.width === 'number' && v.width > 0 ? v.width : DEFAULT_NODE_W,\n height: typeof v.height === 'number' && v.height > 0 ? v.height : DEFAULT_NODE_H,\n };\n }\n }\n }\n activities.forEach((a, i) => {\n if (!next[a.id]) {\n const p = this.gridFallbackPosition(i);\n next[a.id] = { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n }\n });\n this.designerLayout.set(next);\n }\n\n private syncDesignerLayoutFromModel(model: AXPWorkflowDiagramModel): void {\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n for (const n of model.nodes) {\n next[n.id] = {\n x: n.position.x,\n y: n.position.y,\n width: n.size.width > 0 ? n.size.width : DEFAULT_NODE_W,\n height: n.size.height > 0 ? n.size.height : DEFAULT_NODE_H,\n };\n }\n this.designerLayout.set(next);\n }\n\n /** Updates persisted node coordinates only (no activity/connection graph rewrite). */\n private applyArrangedLayout(): void {\n if (this.activities().length === 0) {\n return;\n }\n const startId = this.startActivityId().trim();\n const arranged = arrangeWorkflowDiagram(this.designerModel(), {\n startNodeId: startId.length > 0 ? startId : undefined,\n gridSize: DESIGNER_GRID_SIZE,\n });\n this.syncDesignerLayoutFromModel(arranged);\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n }\n\n private buildDesignerNodesForSave(): NonNullable<AXPWorkflowGraph['designer']>['nodes'] {\n const layout = this.designerLayout();\n const out: NonNullable<AXPWorkflowGraph['designer']>['nodes'] = {};\n for (const [id, L] of Object.entries(layout)) {\n out[id] = {\n x: L.x,\n y: L.y,\n nodeId: id,\n width: L.width,\n height: L.height,\n };\n }\n return out;\n }\n\n private buildCurrentGraph(): AXPWorkflowGraph {\n const base = this.baselineGraph();\n const layoutArranged = this.layoutArrangedFlag() || isDesignerLayoutArranged(base ?? undefined);\n return {\n startActivityId: this.startActivityId(),\n activities: this.activities().map((r) => instanceFromRow(r)),\n connections: cloneDeep(this.connections()),\n designer: {\n ...base?.designer,\n layoutArranged: layoutArranged ? true : undefined,\n nodes: this.buildDesignerNodesForSave(),\n },\n };\n }\n\n private recomputeDirty(): void {\n this.isDirty.set(!isEqual(graphFingerprint(this.buildCurrentGraph()), graphFingerprint(this.baselineGraph())));\n this.recompute();\n this.scheduleAutoSave();\n }\n\n private clearAutoSaveTimer(): void {\n if (this.autoSaveTimer != null) {\n clearTimeout(this.autoSaveTimer);\n this.autoSaveTimer = null;\n }\n }\n\n /** Debounced persist for designer moves, connections, arrange, and property edits. */\n private scheduleAutoSave(): void {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n this.clearAutoSaveTimer();\n this.autoSaveTimer = setTimeout(() => {\n this.autoSaveTimer = null;\n void this.runAutoSave();\n }, AUTO_SAVE_DEBOUNCE_MS);\n }\n\n private async runAutoSave(): Promise<void> {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n if (this.autoSaveInFlight) {\n this.autoSavePending = true;\n return;\n }\n this.autoSaveInFlight = true;\n try {\n await this.handleSaveExecute({ silent: true });\n } finally {\n this.autoSaveInFlight = false;\n if (this.autoSavePending) {\n this.autoSavePending = false;\n if (this.isDirty()) {\n this.scheduleAutoSave();\n }\n }\n }\n }\n\n private async handleSaveExecute(options?: { silent?: boolean }): Promise<AXPExecuteCommandResult> {\n this.clearAutoSaveTimer();\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return {\n success: false,\n message: { text: await this.translateService.translateAsync('@general:messages.entity.invalid-data') },\n };\n }\n const graph = this.buildCurrentGraph();\n const result = await this.commandService.execute<SaveWorkflowDefinitionActivitiesInput, unknown>(\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n { id, graph, silent: options?.silent },\n );\n const execResult = (result ?? { success: false }) as AXPExecuteCommandResult;\n if (execResult.success) {\n this.baselineGraph.set(cloneDeep(graph));\n this.isDirty.set(false);\n if (!options?.silent) {\n this.recompute();\n }\n }\n return execResult;\n }\n\n private hydrateFromServerContext(ctx: Record<string, unknown> | undefined): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const graph = (ctx?.['graph'] as AXPWorkflowGraph | undefined) ?? emptyGraph();\n this.baselineGraph.set(cloneDeep(graph));\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(graph));\n this.initDesignerLayoutFromGraph(graph);\n this.activities.set((graph.activities ?? []).map((a) => rowFromInstance(a)));\n this.connections.set(cloneDeep(graph.connections ?? []));\n let start = graph.startActivityId ?? '';\n const rows = this.activities();\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n void this.ensureActivityCatalogLoaded();\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n /**\n * Runs auto-arrange once per workflow definition, then persists `graph.designer.layoutArranged`.\n * Definitions that already have saved node positions are marked arranged without moving nodes.\n */\n private async maybeApplyInitialArrangedLayout(): Promise<void> {\n if (this.layoutArrangedFlag() || this.initialLayoutArrangeInFlight) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n if (this.activities().length === 0) {\n return;\n }\n\n this.initialLayoutArrangeInFlight = true;\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n if (graphHasPersistedDesignerLayout(base ?? undefined)) {\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n return;\n }\n\n this.applyArrangedLayout();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n } finally {\n this.suppressAutoSave = false;\n this.initialLayoutArrangeInFlight = false;\n }\n }\n\n private applyBaselineGraph(): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(base ?? undefined));\n this.initDesignerLayoutFromGraph(base ?? undefined);\n const rows = (base?.activities ?? []).map((a) => rowFromInstance(a));\n this.activities.set(rows);\n this.connections.set(cloneDeep(base?.connections ?? []));\n let start = base?.startActivityId ?? '';\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n this.recompute();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n private addStep(): void {\n const catalog = this.activitySelectOptions();\n const defaultName = catalog[0]?.value ?? '';\n const row: AXMWorkflowActivityEditorRow = { id: AXPDataGenerator.uuid(), name: defaultName, inputs: {} };\n this.activities.update((list) => [...list, row]);\n const idx = this.activities().length - 1;\n const p = this.gridFallbackPosition(idx);\n this.designerLayout.update((L) => ({\n ...L,\n [row.id]: { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H },\n }));\n this.selectedRowId.set(row.id);\n if (!this.startActivityId() && row.id) {\n this.startActivityId.set(row.id);\n }\n void this.ensureDefinition(row.name);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Outcomes & labels ----\n\n private formatActivityStepLabel(r: AXMWorkflowActivityEditorRow): string {\n const shortId = r.id.length >= 8 ? r.id.slice(0, 8) : r.id;\n const typePart = r.name?.trim() ? r.name : '…';\n return `${typePart} (${shortId})`;\n }\n\n protected resolveNodeTitle(r: AXMWorkflowActivityEditorRow): string {\n const ext = r.extensions;\n const display = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (display) {\n return display;\n }\n return this.activitySelectOptions().find((x) => x.value === r.name)?.text ?? r.name;\n }\n\n private outcomeRowsFromRawDefinition(raw: unknown): AXMWorkflowOutcomePortRow[] {\n if (raw == null) {\n return [];\n }\n let items: unknown[] = [];\n if (Array.isArray(raw)) {\n items = raw;\n } else if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n items = Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n } else {\n return [];\n }\n const rows: AXMWorkflowOutcomePortRow[] = [];\n for (const item of items) {\n if (typeof item === 'string' && item.trim()) {\n rows.push({ port: item, label: item });\n continue;\n }\n if (item != null && typeof item === 'object' && !Array.isArray(item)) {\n const o = item as Record<string, unknown>;\n const portVal = o['name'] ?? o['value'] ?? o['outcome'] ?? o['port'];\n if (typeof portVal !== 'string' || !portVal.trim()) {\n continue;\n }\n const titleRaw = o['title'];\n let label = portVal;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n label = titleRaw;\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n label = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? portVal;\n }\n rows.push({ port: portVal, label });\n }\n }\n return rows;\n }\n\n private outcomePortsFromConnections(activityId: string): string[] {\n const ports = new Set<string>();\n for (const c of this.connections()) {\n if (c.source.activtyName === activityId) {\n ports.add(portKey(c.source.port));\n }\n }\n return [...ports];\n }\n\n private outcomePortsFromTaskActions(inputs: Record<string, unknown>): string[] {\n const actions = inputs['actions'];\n if (actions == null) {\n return [];\n }\n let root: unknown = actions;\n if (typeof actions === 'string' && actions.trim().length > 0) {\n try {\n root = JSON.parse(actions) as unknown;\n } catch {\n return [];\n }\n }\n if (typeof root !== 'object' || root === null) {\n return [];\n }\n const names: string[] = [];\n const obj = root as Record<string, unknown>;\n for (const key of ['suffix', 'prefix'] as const) {\n const list = obj[key];\n if (!Array.isArray(list)) {\n continue;\n }\n for (const entry of list) {\n if (!entry || typeof entry !== 'object') {\n continue;\n }\n const cmd = (entry as Record<string, unknown>)['command'];\n if (cmd && typeof cmd === 'object') {\n const n = (cmd as Record<string, unknown>)['name'];\n if (typeof n === 'string' && n.trim()) {\n names.push(n);\n }\n }\n }\n }\n return names;\n }\n\n private buildOutcomeRows(\n activityId: string,\n row: AXMWorkflowActivityEditorRow | null,\n def?: AXPActivityDefinition,\n ): AXMWorkflowOutcomePortRow[] {\n const map = new Map<string, AXMWorkflowOutcomePortRow>();\n for (const o of this.outcomeRowsFromRawDefinition(def?.outcomes)) {\n map.set(o.port, o);\n }\n for (const p of this.outcomePortsFromConnections(activityId)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n if (row) {\n for (const p of this.outcomePortsFromTaskActions(row.inputs)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n }\n if (map.size === 0) {\n map.set('Done', { port: 'Done', label: 'Done' });\n }\n return [...map.values()].sort((a, b) => a.port.localeCompare(b.port));\n }\n\n private pruneOutgoingConnections(sourceActivityId: string, allowedPorts: Set<string>): void {\n this.connections.update((list) =>\n list.filter((c) => {\n if (c.source.activtyName !== sourceActivityId) {\n return true;\n }\n return allowedPorts.has(portKey(c.source.port));\n }),\n );\n }\n\n //#endregion\n\n //#region ---- Catalog & property viewer ----\n\n private async ensureActivityCatalogLoaded(): Promise<void> {\n if (this.activityCatalogLoaded()) {\n return;\n }\n try {\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.activityDefinition.name)\n .data<string, AXMWorkflowActivityCatalogRow>();\n const res = (await data.query({ skip: 0, take: 1000 })) as unknown as AXPActivityDefinitionQueryResult;\n const items = (res.items ?? [])\n .map((row) => {\n const n = row.name;\n const typeFallback = row.type;\n const valueKey =\n typeof n === 'string' && n.trim()\n ? n.trim()\n : typeof n === 'number'\n ? String(n)\n : typeof typeFallback === 'string' && typeFallback.trim()\n ? typeFallback.trim()\n : typeof typeFallback === 'number'\n ? String(typeFallback)\n : '';\n if (!valueKey) {\n return null;\n }\n const titleRaw = row.title;\n let text = valueKey;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n text = titleRaw.trim();\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n text = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? valueKey;\n }\n\n const descriptionRaw = row.description;\n let description = descriptionRaw;\n if (typeof descriptionRaw === 'string' && descriptionRaw.trim()) {\n description = descriptionRaw.trim();\n } else if (descriptionRaw != null && typeof descriptionRaw === 'object') {\n description = this.mlResolver.resolve(descriptionRaw as AXPMultiLanguageString) ?? descriptionRaw;\n }\n const categoryRaw = row.category as AXPActivityDefinitionCategoryRef | undefined;\n const categoryTitleResolved =\n categoryRaw?.title != null\n ? (this.mlResolver.resolve(categoryRaw.title) ?? categoryRaw.name)\n : 'Uncategorized';\n const icon = row.icon;\n return {\n value: valueKey,\n text: String(text).trim() || valueKey,\n description: description,\n categoryId: categoryRaw?.id ?? 'uncategorized',\n categoryTitle: categoryTitleResolved,\n icon: icon,\n };\n })\n .filter((x): x is AXMWorkflowActivitySelectItem => x != null);\n items.sort((a, b) => a.text.localeCompare(b.text));\n this.activitySelectItems.set(items);\n } catch {\n this.activitySelectItems.set([]);\n } finally {\n this.activityCatalogLoaded.set(true);\n }\n }\n\n private async ensureDefinition(name: string): Promise<void> {\n if (!name?.trim()) {\n return;\n }\n if (this.activityDefCache()[name]) {\n return;\n }\n const def = await this.activityDefService.getActivityByName(name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [name]: def }));\n }\n }\n\n private async refreshPropertyViewer(): Promise<void> {\n const row = this.selectedRow();\n if (row == null || row.name.trim() === '') {\n this.viewerTabs.set([]);\n this.selectedActivityOutcomeRows.set([]);\n setTimeout(() => this.propertyViewerRef()?.initializeContext({ inputs: {} }), 0);\n return;\n }\n const def = await this.activityDefService.getActivityByName(row.name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [row.name]: def }));\n }\n const rowLatest = this.activities().find((r) => r.id === row.id) ?? row;\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(row.id, rowLatest, def));\n const inputProps = normalizeActivityDefinitionInputs(def?.inputs);\n const group: AXPWidgetPropertyGroup = { name: 'activity-inputs', title: 'Inputs', order: 0 };\n const widgetProps = inputProps.map((p, index) =>\n mapAXPPropertyToWidgetProperty(p, {\n group,\n order: index,\n valuePathPrefix: 'inputs',\n resolveTitle: (prop) =>\n typeof prop.title === 'string' ? prop.title : (this.mlResolver.resolve(prop.title) ?? prop.name),\n resolveDescription: (prop) =>\n prop.description === undefined\n ? undefined\n : typeof prop.description === 'string'\n ? prop.description\n : this.mlResolver.resolve(prop.description),\n }),\n );\n this.viewerTabs.set(buildPropertyViewerTabsFromProperties(widgetProps));\n setTimeout(() => {\n const current = this.activities().find((r) => r.id === row.id);\n this.propertyViewerRef()?.initializeContext({ inputs: cloneDeep(current?.inputs ?? {}) });\n }, 0);\n }\n\n //#endregion\n\n //#region ---- Utilities ----\n\n protected override recompute(): void {\n super.recompute();\n const maybeLayout = this.hostPageLayout as unknown as { recompute?: () => void };\n maybeLayout.recompute?.();\n }\n\n //#endregion\n}\n","<!-- <axp-page-toolbar>\n <axp-layout-suffix>\n <div class=\"axm-workflow-definition-activities__toolbar-group\">\n <ax-button>\n <ax-icon icon=\"fa-light fa-sliders\"></ax-icon>\n <ax-dropdown-panel>\n <div class=\"axm-workflow-definition-activities__appearance-panel\">\n <label class=\"axm-workflow-definition-activities__pattern-label\" for=\"background-pattern-select\"\n >Background Pattern</label\n >\n <select\n id=\"background-pattern-select\"\n class=\"axm-workflow-definition-activities__pattern-select\"\n [value]=\"backgroundPattern()\"\n (change)=\"onBackgroundPatternChange($event)\"\n >\n <option value=\"dots\">Dots</option>\n <option value=\"line\">Lines</option>\n </select>\n </div>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button (onClick)=\"toggleFullscreen()\">\n <ax-icon>\n <i class=\"fa-solid\" [class]=\"isFullscreen() ? 'fa-compress' : 'fa-expand'\"></i>\n </ax-icon>\n </ax-button>\n <ax-button (onClick)=\"toggleInfoPanel()\">\n <ax-icon [icon]=\"isInfoPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info'\"></ax-icon>\n </ax-button>\n </div>\n </axp-layout-suffix>\n </axp-page-toolbar> -->\n\n<div\n class=\"axm-workflow-definition-activities\"\n [class.axm-workflow-definition-activities--with-palette]=\"isPaletteOpen()\"\n [class.axm-workflow-definition-activities--with-info]=\"isInfoPanelOpen()\"\n>\n @if (isPaletteOpen()) {\n <aside class=\"axm-workflow-definition-activities__palette\">\n <div class=\"axm-workflow-definition-activities__palette-head\">\n <div class=\"axm-workflow-definition-activities__palette-head-row\">\n <h3 class=\"axm-workflow-definition-activities__title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step'\n | translate\n | async) ?? 'Activities'\n }}\n </h3>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"closePalette()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <p class=\"axm-workflow-definition-activities__palette-sub\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.hint'\n | translate\n | async) ?? ''\n }}\n </p>\n <ax-search-box\n class=\"axm-workflow-definition-activities__palette-search ax-sm\"\n [value]=\"paletteSearchTerm()\"\n (onValueChanged)=\"onPaletteSearchChange($event)\"\n [placeholder]=\"'@general:search.title' | translate | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"axm-workflow-definition-activities__palette-list\">\n <div class=\"axm-workflow-definition-activities__accordion-group\" axAccordionGroup [accordion]=\"false\">\n @for (group of filteredPaletteGroups(); track group.id) {\n @if (group.items.length > 0) {\n <section\n class=\"axm-workflow-definition-activities__accordion-item\"\n axAccordionItem\n [isCollapsed]=\"false\"\n #acc=\"axAccordionItem\"\n >\n <header\n class=\"axm-workflow-definition-activities__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n >\n <div class=\"axm-workflow-definition-activities__accordion-header-main\">\n <span class=\"axm-workflow-definition-activities__accordion-title\">{{ group.title }}</span>\n </div>\n <span class=\"axm-workflow-definition-activities__accordion-chevron\">\n <i [class]=\"acc.isCollapsed() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-up'\"></i>\n </span>\n </header>\n <div class=\"axm-workflow-definition-activities__accordion-content\" axAccordionItemContent>\n @for (item of group.items; track item.type) {\n <button\n type=\"button\"\n class=\"axm-workflow-definition-activities__palette-item\"\n [axpWorkflowPaletteItem]=\"item\"\n >\n <span class=\"axm-workflow-definition-activities__palette-item-icon\" aria-hidden=\"true\">\n <i [class]=\"'fa-light ' + item.icon\"></i>\n </span>\n <span class=\"axm-workflow-definition-activities__palette-item-body\">\n <span class=\"axm-workflow-definition-activities__palette-item-title\">{{ item.title }}</span>\n <span class=\"axm-workflow-definition-activities__palette-item-meta\">{{\n item.description\n }}</span>\n </span>\n </button>\n }\n </div>\n </section>\n }\n }\n </div>\n </div>\n </aside>\n }\n\n <div class=\"axm-workflow-definition-activities__main\">\n <section class=\"axm-workflow-definition-activities__canvas\" (contextmenu)=\"onDesignerSurfaceContextMenu($event)\">\n <axp-workflow-designer\n [model]=\"designerModel()\"\n [backgroundPattern]=\"backgroundPattern()\"\n (zoomChange)=\"onDesignerZoomChange($event)\"\n (modelChange)=\"onDesignerModelChange($event)\"\n (activationChange)=\"onDesignerActivationChange($event)\"\n (nodeContextMenu)=\"onDesignerNodeContextMenu($event)\"\n ></axp-workflow-designer>\n <ax-context-menu\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleWorkflowContextMenuItemClick($event)\"\n />\n <axp-layout-floating-zoom-bar\n [zoomLevel]=\"zoomLevel()\"\n (zoomIn)=\"zoomIn()\"\n (zoomOut)=\"zoomOut()\"\n (zoomReset)=\"zoomReset()\"\n />\n </section>\n </div>\n @if (isInfoPanelOpen()) {\n <axp-layout-side-detail-panel\n class=\"axm-workflow-definition-activities__info ax-sticky ax-top-0 ax-z-10 ax-max-h-full ax-flex-none\"\n [header]=\"workflowDetailPanelHeader()\"\n [rows]=\"workflowDetailPanelRows()\"\n [emptyState]=\"workflowDetailPanelEmptyState()\"\n (panelClose)=\"toggleInfoPanel()\"\n />\n }\n</div>\n"],"names":["i5","i6","i7"],"mappings":"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"}
@@ -3381,7 +3381,7 @@ class AXMWorkflowManagementModule {
3381
3381
  multi: true,
3382
3382
  },
3383
3383
  provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-Eh5DDK-V.mjs').then((m) => m.AXMWorkflowInstanceActivityInstancesPageComponentProvider)),
3384
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-BxqOP8AA.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
3384
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-RRzkvrNM.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
3385
3385
  // Automation condition builder: default automation.rules(refType, refId); modules override for their refTypes
3386
3386
  {
3387
3387
  provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
@@ -3534,7 +3534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3534
3534
  multi: true,
3535
3535
  },
3536
3536
  provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-Eh5DDK-V.mjs').then((m) => m.AXMWorkflowInstanceActivityInstancesPageComponentProvider)),
3537
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-BxqOP8AA.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
3537
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-RRzkvrNM.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
3538
3538
  // Automation condition builder: default automation.rules(refType, refId); modules override for their refTypes
3539
3539
  {
3540
3540
  provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@acorex/modules",
3
- "version": "21.0.0-next.56",
3
+ "version": "21.0.0-next.57",
4
4
  "peerDependencies": {
5
- "@acorex/platform": "21.0.0-next.56",
5
+ "@acorex/platform": "21.0.0-next.57",
6
6
  "@angular/service-worker": "^20.0.0",
7
7
  "d3": "^7.0.0",
8
8
  "html2canvas": "^1.0.0",