@memberjunction/ng-core-entity-forms 2.87.0 → 2.88.0

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 (91) hide show
  1. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.d.ts.map +1 -1
  2. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +7 -7
  3. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  4. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.d.ts +29 -0
  5. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.d.ts.map +1 -0
  6. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js +198 -0
  7. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js.map +1 -0
  8. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.d.ts +14 -0
  9. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
  10. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js +98 -0
  11. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js.map +1 -0
  12. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.d.ts +44 -0
  13. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.d.ts.map +1 -0
  14. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js +282 -0
  15. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js.map +1 -0
  16. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.d.ts +35 -0
  17. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.d.ts.map +1 -0
  18. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js +287 -0
  19. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js.map +1 -0
  20. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.d.ts +106 -0
  21. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.d.ts.map +1 -0
  22. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js +951 -0
  23. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js.map +1 -0
  24. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.d.ts +30 -0
  25. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.d.ts.map +1 -0
  26. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js +450 -0
  27. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js.map +1 -0
  28. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.d.ts +25 -0
  29. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.d.ts.map +1 -0
  30. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js +423 -0
  31. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js.map +1 -0
  32. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.d.ts +21 -0
  33. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.d.ts.map +1 -0
  34. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js +182 -0
  35. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js.map +1 -0
  36. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.d.ts +34 -0
  37. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.d.ts.map +1 -0
  38. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js +171 -0
  39. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js.map +1 -0
  40. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.d.ts +17 -0
  41. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.d.ts.map +1 -0
  42. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js +78 -0
  43. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js.map +1 -0
  44. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.d.ts +17 -0
  45. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.d.ts.map +1 -0
  46. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.js +11 -0
  47. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/connection.model.js.map +1 -0
  48. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.d.ts +21 -0
  49. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.d.ts.map +1 -0
  50. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.js +2 -0
  51. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/mj-extended.model.js.map +1 -0
  52. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.d.ts +33 -0
  53. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.d.ts.map +1 -0
  54. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.js +2 -0
  55. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/module.model.js.map +1 -0
  56. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.d.ts +44 -0
  57. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.d.ts.map +1 -0
  58. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.js +166 -0
  59. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/models/step.model.js.map +1 -0
  60. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.d.ts +14 -0
  61. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.d.ts.map +1 -0
  62. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js +31 -0
  63. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js.map +1 -0
  64. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.d.ts +63 -0
  65. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.d.ts.map +1 -0
  66. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js +294 -0
  67. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js.map +1 -0
  68. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.d.ts +77 -0
  69. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.d.ts.map +1 -0
  70. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js +408 -0
  71. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js.map +1 -0
  72. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.d.ts +19 -0
  73. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.d.ts.map +1 -0
  74. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js +116 -0
  75. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js.map +1 -0
  76. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.d.ts +25 -0
  77. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.d.ts.map +1 -0
  78. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js +90 -0
  79. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js.map +1 -0
  80. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.d.ts +52 -0
  81. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.d.ts.map +1 -0
  82. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js +500 -0
  83. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js.map +1 -0
  84. package/dist/lib/custom/custom-forms.module.d.ts +2 -1
  85. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  86. package/dist/lib/custom/custom-forms.module.js +10 -4
  87. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  88. package/dist/lib/generated/Entities/Component/sections/details.component.d.ts.map +1 -1
  89. package/dist/lib/generated/Entities/Component/sections/details.component.js +40 -4
  90. package/dist/lib/generated/Entities/Component/sections/details.component.js.map +1 -1
  91. package/package.json +16 -16
@@ -0,0 +1,287 @@
1
+ import { Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { Subject, takeUntil } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/flow-executor.service";
6
+ import * as i2 from "@angular/common";
7
+ const _c0 = (a0, a1, a2, a3, a4) => ({ "fa-circle": a0, "fa-spinner fa-spin": a1, "fa-pause-circle": a2, "fa-check-circle": a3, "fa-exclamation-circle": a4 });
8
+ const _c1 = (a0, a1, a2, a3) => ({ "fa-spinner fa-spin": a0, "fa-pause-circle": a1, "fa-check-circle": a2, "fa-exclamation-circle": a3 });
9
+ function ExecutionPanelComponent_div_1_Template(rf, ctx) { if (rf & 1) {
10
+ const _r1 = i0.ɵɵgetCurrentView();
11
+ i0.ɵɵelementStart(0, "div", 24);
12
+ i0.ɵɵlistener("mousedown", function ExecutionPanelComponent_div_1_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResizeStart($event)); });
13
+ i0.ɵɵelement(1, "div", 25);
14
+ i0.ɵɵelementEnd();
15
+ } }
16
+ function ExecutionPanelComponent_div_25_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelementStart(0, "div", 26);
18
+ i0.ɵɵelement(1, "i", 27);
19
+ i0.ɵɵelementStart(2, "p");
20
+ i0.ɵɵtext(3, "No execution logs yet. Click \"Run Flow\" to start.");
21
+ i0.ɵɵelementEnd()();
22
+ } }
23
+ function ExecutionPanelComponent_div_26_div_6_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵelementStart(0, "div", 35)(1, "strong");
25
+ i0.ɵɵtext(2);
26
+ i0.ɵɵelementEnd()();
27
+ } if (rf & 2) {
28
+ const log_r3 = i0.ɵɵnextContext().$implicit;
29
+ i0.ɵɵadvance(2);
30
+ i0.ɵɵtextInterpolate(log_r3.stepName);
31
+ } }
32
+ function ExecutionPanelComponent_div_26_div_9_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "div", 36)(1, "pre");
34
+ i0.ɵɵtext(2);
35
+ i0.ɵɵpipe(3, "json");
36
+ i0.ɵɵelementEnd()();
37
+ } if (rf & 2) {
38
+ const log_r3 = i0.ɵɵnextContext().$implicit;
39
+ i0.ɵɵadvance(2);
40
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, log_r3.data));
41
+ } }
42
+ function ExecutionPanelComponent_div_26_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "div", 28)(1, "div", 29);
44
+ i0.ɵɵtext(2);
45
+ i0.ɵɵelementEnd();
46
+ i0.ɵɵelementStart(3, "div", 30);
47
+ i0.ɵɵelement(4, "i", 12);
48
+ i0.ɵɵelementEnd();
49
+ i0.ɵɵelementStart(5, "div", 31);
50
+ i0.ɵɵtemplate(6, ExecutionPanelComponent_div_26_div_6_Template, 3, 1, "div", 32);
51
+ i0.ɵɵelementStart(7, "div", 33);
52
+ i0.ɵɵtext(8);
53
+ i0.ɵɵelementEnd();
54
+ i0.ɵɵtemplate(9, ExecutionPanelComponent_div_26_div_9_Template, 4, 3, "div", 34);
55
+ i0.ɵɵelementEnd()();
56
+ } if (rf & 2) {
57
+ const log_r3 = ctx.$implicit;
58
+ const ctx_r1 = i0.ɵɵnextContext();
59
+ i0.ɵɵclassMap(ctx_r1.getLogClass(log_r3.type));
60
+ i0.ɵɵclassProp("current-step", log_r3.stepId === ctx_r1.currentStepId && ctx_r1.currentStepId !== 0);
61
+ i0.ɵɵadvance(2);
62
+ i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(log_r3.timestamp));
63
+ i0.ɵɵadvance(2);
64
+ i0.ɵɵproperty("ngClass", ctx_r1.getLogIcon(log_r3.type));
65
+ i0.ɵɵadvance(2);
66
+ i0.ɵɵproperty("ngIf", log_r3.stepId);
67
+ i0.ɵɵadvance(2);
68
+ i0.ɵɵtextInterpolate(log_r3.message);
69
+ i0.ɵɵadvance();
70
+ i0.ɵɵproperty("ngIf", log_r3.data);
71
+ } }
72
+ function ExecutionPanelComponent_div_27_Template(rf, ctx) { if (rf & 1) {
73
+ const _r4 = i0.ɵɵgetCurrentView();
74
+ i0.ɵɵelementStart(0, "div", 37);
75
+ i0.ɵɵlistener("click", function ExecutionPanelComponent_div_27_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.isPanelClosed = false); });
76
+ i0.ɵɵelement(1, "i", 12);
77
+ i0.ɵɵelementStart(2, "span");
78
+ i0.ɵɵtext(3);
79
+ i0.ɵɵpipe(4, "titlecase");
80
+ i0.ɵɵelementEnd()();
81
+ } if (rf & 2) {
82
+ const ctx_r1 = i0.ɵɵnextContext();
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction4(4, _c1, ctx_r1.executionStatus === "running", ctx_r1.executionStatus === "paused", ctx_r1.executionStatus === "completed", ctx_r1.executionStatus === "error"));
85
+ i0.ɵɵadvance(2);
86
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 2, ctx_r1.executionStatus));
87
+ } }
88
+ export class ExecutionPanelComponent {
89
+ constructor(flowExecutor) {
90
+ this.flowExecutor = flowExecutor;
91
+ this.destroy$ = new Subject();
92
+ this.executionStatus = 'idle';
93
+ this.executionLogs = [];
94
+ this.currentStepId = null;
95
+ // Resize properties
96
+ this.panelHeight = 300; // Default height
97
+ this.minHeight = 150;
98
+ this.maxHeight = 600;
99
+ this.isResizing = false; // Made public for template access
100
+ this.startY = 0;
101
+ this.startHeight = 0;
102
+ // Panel visibility
103
+ this.isPanelClosed = false;
104
+ this.onResizeMove = (event) => {
105
+ if (!this.isResizing)
106
+ return;
107
+ // Calculate new height (inverted because we're dragging from top)
108
+ const deltaY = this.startY - event.clientY;
109
+ const newHeight = this.startHeight + deltaY;
110
+ // Apply constraints
111
+ this.panelHeight = Math.max(this.minHeight, Math.min(this.maxHeight, newHeight));
112
+ };
113
+ this.onResizeEnd = () => {
114
+ this.isResizing = false;
115
+ document.removeEventListener('mousemove', this.onResizeMove);
116
+ document.removeEventListener('mouseup', this.onResizeEnd);
117
+ // Reset body styles
118
+ document.body.style.cursor = '';
119
+ document.body.style.userSelect = '';
120
+ };
121
+ }
122
+ ngOnInit() {
123
+ // Subscribe to execution status
124
+ this.flowExecutor.executionStatus
125
+ .pipe(takeUntil(this.destroy$))
126
+ .subscribe(status => {
127
+ this.executionStatus = status;
128
+ // Reopen panel when a new execution starts
129
+ if (status === 'running' && this.isPanelClosed) {
130
+ this.isPanelClosed = false;
131
+ }
132
+ });
133
+ // Subscribe to execution logs
134
+ this.flowExecutor.executionLogs
135
+ .pipe(takeUntil(this.destroy$))
136
+ .subscribe(logs => {
137
+ this.executionLogs = logs;
138
+ // Auto-scroll to bottom when new logs arrive
139
+ setTimeout(() => this.scrollToBottom(), 0);
140
+ });
141
+ // Subscribe to current step
142
+ this.flowExecutor.currentStepId
143
+ .pipe(takeUntil(this.destroy$))
144
+ .subscribe(stepId => {
145
+ this.currentStepId = stepId;
146
+ });
147
+ }
148
+ ngOnDestroy() {
149
+ this.destroy$.next();
150
+ this.destroy$.complete();
151
+ // Clean up resize listeners
152
+ document.removeEventListener('mousemove', this.onResizeMove);
153
+ document.removeEventListener('mouseup', this.onResizeEnd);
154
+ }
155
+ onPause() {
156
+ this.flowExecutor.pause();
157
+ }
158
+ onResume() {
159
+ this.flowExecutor.resume();
160
+ }
161
+ onStop() {
162
+ this.flowExecutor.stop();
163
+ }
164
+ clearLogs() {
165
+ this.executionLogs = [];
166
+ }
167
+ closePanel() {
168
+ this.isPanelClosed = true;
169
+ }
170
+ getLogIcon(type) {
171
+ switch (type) {
172
+ case 'start': return 'fa-play-circle';
173
+ case 'complete': return 'fa-check-circle';
174
+ case 'error': return 'fa-exclamation-circle';
175
+ case 'log': return 'fa-info-circle';
176
+ default: return 'fa-circle';
177
+ }
178
+ }
179
+ getLogClass(type) {
180
+ switch (type) {
181
+ case 'start': return 'log-start';
182
+ case 'complete': return 'log-success';
183
+ case 'error': return 'log-error';
184
+ case 'log': return 'log-info';
185
+ default: return '';
186
+ }
187
+ }
188
+ formatTimestamp(date) {
189
+ return date.toLocaleTimeString('en-US', {
190
+ hour12: false,
191
+ hour: '2-digit',
192
+ minute: '2-digit',
193
+ second: '2-digit',
194
+ fractionalSecondDigits: 3
195
+ });
196
+ }
197
+ scrollToBottom() {
198
+ const logsContainer = document.querySelector('.logs-container');
199
+ if (logsContainer) {
200
+ logsContainer.scrollTop = logsContainer.scrollHeight;
201
+ }
202
+ }
203
+ // Resize methods
204
+ onResizeStart(event) {
205
+ this.isResizing = true;
206
+ this.startY = event.clientY;
207
+ this.startHeight = this.panelHeight;
208
+ // Add document listeners
209
+ document.addEventListener('mousemove', this.onResizeMove);
210
+ document.addEventListener('mouseup', this.onResizeEnd);
211
+ // Add class to body to change cursor globally
212
+ document.body.style.cursor = 'ns-resize';
213
+ document.body.style.userSelect = 'none';
214
+ // Prevent text selection during resize
215
+ event.preventDefault();
216
+ }
217
+ static { this.ɵfac = function ExecutionPanelComponent_Factory(t) { return new (t || ExecutionPanelComponent)(i0.ɵɵdirectiveInject(i1.FlowExecutorService)); }; }
218
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExecutionPanelComponent, selectors: [["app-execution-panel"]], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 28, vars: 26, consts: [[1, "execution-panel"], ["class", "resize-handle", 3, "mousedown", 4, "ngIf"], [1, "panel-header"], [1, "panel-title"], [1, "fas", "fa-terminal"], [1, "header-actions"], ["title", "Clear logs", 1, "icon-button", 3, "click", "disabled"], [1, "fas", "fa-trash"], ["title", "Close panel", 1, "icon-button", "close", 3, "click"], [1, "fas", "fa-times"], [1, "execution-controls"], [1, "status-indicator"], [1, "fas", 3, "ngClass"], [1, "control-buttons"], ["title", "Pause execution", 1, "control-button", 3, "click", "disabled"], [1, "fas", "fa-pause"], ["title", "Resume execution", 1, "control-button", 3, "click", "disabled"], [1, "fas", "fa-play"], ["title", "Stop execution", 1, "control-button", "stop", 3, "click", "disabled"], [1, "fas", "fa-stop"], [1, "logs-container"], ["class", "empty-logs", 4, "ngIf"], ["class", "log-entry", 3, "class", "current-step", 4, "ngFor", "ngForOf"], ["class", "execution-indicator", "title", "Click to reopen execution panel", 3, "click", 4, "ngIf"], [1, "resize-handle", 3, "mousedown"], [1, "resize-grip"], [1, "empty-logs"], [1, "fas", "fa-info-circle"], [1, "log-entry"], [1, "log-timestamp"], [1, "log-icon"], [1, "log-content"], ["class", "log-step", 4, "ngIf"], [1, "log-message"], ["class", "log-data", 4, "ngIf"], [1, "log-step"], [1, "log-data"], ["title", "Click to reopen execution panel", 1, "execution-indicator", 3, "click"]], template: function ExecutionPanelComponent_Template(rf, ctx) { if (rf & 1) {
219
+ i0.ɵɵelementStart(0, "div", 0);
220
+ i0.ɵɵtemplate(1, ExecutionPanelComponent_div_1_Template, 2, 0, "div", 1);
221
+ i0.ɵɵelementStart(2, "div", 2)(3, "h3", 3);
222
+ i0.ɵɵelement(4, "i", 4);
223
+ i0.ɵɵtext(5, " Flow Execution ");
224
+ i0.ɵɵelementEnd();
225
+ i0.ɵɵelementStart(6, "div", 5)(7, "button", 6);
226
+ i0.ɵɵlistener("click", function ExecutionPanelComponent_Template_button_click_7_listener() { return ctx.clearLogs(); });
227
+ i0.ɵɵelement(8, "i", 7);
228
+ i0.ɵɵelementEnd();
229
+ i0.ɵɵelementStart(9, "button", 8);
230
+ i0.ɵɵlistener("click", function ExecutionPanelComponent_Template_button_click_9_listener() { return ctx.closePanel(); });
231
+ i0.ɵɵelement(10, "i", 9);
232
+ i0.ɵɵelementEnd()()();
233
+ i0.ɵɵelementStart(11, "div", 10)(12, "div", 11);
234
+ i0.ɵɵelement(13, "i", 12);
235
+ i0.ɵɵelementStart(14, "span");
236
+ i0.ɵɵtext(15);
237
+ i0.ɵɵpipe(16, "titlecase");
238
+ i0.ɵɵelementEnd()();
239
+ i0.ɵɵelementStart(17, "div", 13)(18, "button", 14);
240
+ i0.ɵɵlistener("click", function ExecutionPanelComponent_Template_button_click_18_listener() { return ctx.onPause(); });
241
+ i0.ɵɵelement(19, "i", 15);
242
+ i0.ɵɵelementEnd();
243
+ i0.ɵɵelementStart(20, "button", 16);
244
+ i0.ɵɵlistener("click", function ExecutionPanelComponent_Template_button_click_20_listener() { return ctx.onResume(); });
245
+ i0.ɵɵelement(21, "i", 17);
246
+ i0.ɵɵelementEnd();
247
+ i0.ɵɵelementStart(22, "button", 18);
248
+ i0.ɵɵlistener("click", function ExecutionPanelComponent_Template_button_click_22_listener() { return ctx.onStop(); });
249
+ i0.ɵɵelement(23, "i", 19);
250
+ i0.ɵɵelementEnd()()();
251
+ i0.ɵɵelementStart(24, "div", 20);
252
+ i0.ɵɵtemplate(25, ExecutionPanelComponent_div_25_Template, 4, 0, "div", 21)(26, ExecutionPanelComponent_div_26_Template, 10, 9, "div", 22);
253
+ i0.ɵɵelementEnd()();
254
+ i0.ɵɵtemplate(27, ExecutionPanelComponent_div_27_Template, 5, 9, "div", 23);
255
+ } if (rf & 2) {
256
+ i0.ɵɵstyleProp("height", ctx.executionStatus !== "idle" && !ctx.isPanelClosed ? ctx.panelHeight : 0, "px");
257
+ i0.ɵɵclassProp("active", ctx.executionStatus !== "idle" && !ctx.isPanelClosed)("resizing", ctx.isResizing);
258
+ i0.ɵɵadvance();
259
+ i0.ɵɵproperty("ngIf", ctx.executionStatus !== "idle" && !ctx.isPanelClosed);
260
+ i0.ɵɵadvance(6);
261
+ i0.ɵɵproperty("disabled", ctx.executionStatus === "running");
262
+ i0.ɵɵadvance(5);
263
+ i0.ɵɵclassMap("status-" + ctx.executionStatus);
264
+ i0.ɵɵadvance();
265
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction5(20, _c0, ctx.executionStatus === "idle", ctx.executionStatus === "running", ctx.executionStatus === "paused", ctx.executionStatus === "completed", ctx.executionStatus === "error"));
266
+ i0.ɵɵadvance(2);
267
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(16, 18, ctx.executionStatus));
268
+ i0.ɵɵadvance(3);
269
+ i0.ɵɵproperty("disabled", ctx.executionStatus !== "running");
270
+ i0.ɵɵadvance(2);
271
+ i0.ɵɵproperty("disabled", ctx.executionStatus !== "paused");
272
+ i0.ɵɵadvance(2);
273
+ i0.ɵɵproperty("disabled", ctx.executionStatus !== "running" && ctx.executionStatus !== "paused");
274
+ i0.ɵɵadvance(3);
275
+ i0.ɵɵproperty("ngIf", ctx.executionLogs.length === 0);
276
+ i0.ɵɵadvance();
277
+ i0.ɵɵproperty("ngForOf", ctx.executionLogs);
278
+ i0.ɵɵadvance();
279
+ i0.ɵɵproperty("ngIf", ctx.executionStatus !== "idle" && ctx.isPanelClosed);
280
+ } }, dependencies: [CommonModule, i2.NgClass, i2.NgForOf, i2.NgIf, i2.JsonPipe, i2.TitleCasePipe], styles: [".execution-panel[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n height: 0;\n background: var(--white-color);\n border-top: 1px solid var(--gray-700);\n box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);\n transition: height 0.3s ease;\n z-index: 100;\n display: flex;\n flex-direction: column;\n \n &.active {\n transition: none; // Disable transition during resize\n }\n \n &.resizing {\n user-select: none;\n \n .resize-grip {\n opacity: 1 !important;\n }\n }\n}\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n top: -5px;\n left: 0;\n right: 0;\n height: 10px;\n cursor: ns-resize;\n z-index: 10;\n \n &:hover .resize-grip {\n opacity: 1;\n }\n}\n\n.resize-grip[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 50px;\n height: 4px;\n background: var(--gray-800);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.2s;\n \n &::before,\n &::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--gray-700);\n }\n \n &::before {\n top: -2px;\n }\n \n &::after {\n bottom: -2px;\n }\n}\n\n.panel-header[_ngcontent-%COMP%] {\n padding: 1rem 1.5rem;\n border-bottom: 1px solid var(--gray-700);\n background: var(--gray-600);\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 1rem;\n font-weight: 600;\n margin: 0;\n color: var(--gray-900);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n \n i {\n color: var(--mj-blue);\n }\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n\n.icon-button[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: var(--gray-800);\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--transition-time);\n \n &:hover:not(:disabled) {\n background: var(--gray-700);\n color: var(--gray-900);\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n &.close {\n &:hover:not(:disabled) {\n background: #dc3545;\n color: white;\n }\n }\n}\n\n.execution-controls[_ngcontent-%COMP%] {\n padding: 0.75rem 1.5rem;\n background: var(--gray-600);\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--gray-700);\n}\n\n.status-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.875rem;\n font-weight: 600;\n \n &.status-idle {\n color: var(--gray-800);\n }\n \n &.status-running {\n color: var(--mj-blue);\n }\n \n &.status-paused {\n color: #ffc107;\n }\n \n &.status-completed {\n color: #28a745;\n }\n \n &.status-error {\n color: #dc3545;\n }\n}\n\n.control-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n\n.control-button[_ngcontent-%COMP%] {\n padding: 0.375rem 0.75rem;\n border: 1px solid var(--gray-700);\n background: var(--white-color);\n color: var(--gray-900);\n border-radius: var(--border-radius);\n cursor: pointer;\n font-size: 0.875rem;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n transition: all var(--transition-time);\n \n &:hover:not(:disabled) {\n background: var(--gray-700);\n border-color: var(--gray-800);\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n &.stop {\n color: #dc3545;\n border-color: #dc3545;\n \n &:hover:not(:disabled) {\n background: #dc3545;\n color: white;\n }\n }\n}\n\n.logs-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n background: var(--gray-600);\n padding: 1rem;\n}\n\n.empty-logs[_ngcontent-%COMP%] {\n text-align: center;\n color: var(--gray-800);\n padding: 2rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n \n i {\n font-size: 2rem;\n color: var(--mj-blue);\n }\n \n p {\n margin: 0;\n font-size: 0.875rem;\n }\n}\n\n.log-entry[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.75rem;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n background: var(--white-color);\n border-radius: var(--border-radius);\n border-left: 3px solid transparent;\n font-size: 0.875rem;\n transition: all var(--transition-time);\n \n &.log-start {\n border-left-color: var(--mj-blue);\n }\n \n &.log-success {\n border-left-color: #28a745;\n }\n \n &.log-error {\n border-left-color: #dc3545;\n }\n \n &.log-info {\n border-left-color: #17a2b8;\n }\n \n &.current-step {\n background: #e3f2fd;\n box-shadow: 0 2px 4px rgba(0, 118, 182, 0.2);\n }\n}\n\n.log-timestamp[_ngcontent-%COMP%] {\n color: var(--gray-800);\n font-family: monospace;\n font-size: 0.75rem;\n white-space: nowrap;\n padding-top: 0.125rem;\n}\n\n.log-icon[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 20px;\n text-align: center;\n \n .fa-play-circle {\n color: var(--mj-blue);\n }\n \n .fa-check-circle {\n color: #28a745;\n }\n \n .fa-exclamation-circle {\n color: #dc3545;\n }\n \n .fa-info-circle {\n color: #17a2b8;\n }\n}\n\n.log-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.log-step[_ngcontent-%COMP%] {\n margin-bottom: 0.25rem;\n color: var(--gray-900);\n}\n\n.log-message[_ngcontent-%COMP%] {\n color: var(--gray-800);\n word-wrap: break-word;\n}\n\n.log-data[_ngcontent-%COMP%] {\n margin-top: 0.5rem;\n \n pre {\n margin: 0;\n padding: 0.5rem;\n background: var(--gray-600);\n border-radius: var(--border-radius);\n font-size: 0.75rem;\n overflow-x: auto;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n}\n\n//[_ngcontent-%COMP%] Minimized[_ngcontent-%COMP%] execution[_ngcontent-%COMP%] indicator\n.execution-indicator[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--white-color);\n border: 1px solid var(--gray-700);\n border-radius: 30px;\n padding: 0.5rem 1.5rem;\n display: flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transition: all var(--transition-time);\n z-index: 100;\n font-size: 0.875rem;\n font-weight: 600;\n \n &:hover {\n transform: translateX(-50%) translateY(-2px);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);\n }\n \n i {\n font-size: 1rem;\n \n &.fa-spinner {\n color: var(--mj-blue);\n }\n \n &.fa-pause-circle {\n color: #ffc107;\n }\n \n &.fa-check-circle {\n color: #28a745;\n }\n \n &.fa-exclamation-circle {\n color: #dc3545;\n }\n }\n}"] }); }
281
+ }
282
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExecutionPanelComponent, [{
283
+ type: Component,
284
+ args: [{ selector: 'app-execution-panel', standalone: true, imports: [CommonModule], template: "<div class=\"execution-panel\" \n [class.active]=\"executionStatus !== 'idle' && !isPanelClosed\"\n [class.resizing]=\"isResizing\"\n [style.height.px]=\"executionStatus !== 'idle' && !isPanelClosed ? panelHeight : 0\">\n \n <!-- Resize handle -->\n <div class=\"resize-handle\" \n *ngIf=\"executionStatus !== 'idle' && !isPanelClosed\"\n (mousedown)=\"onResizeStart($event)\">\n <div class=\"resize-grip\"></div>\n </div>\n \n <div class=\"panel-header\">\n <h3 class=\"panel-title\">\n <i class=\"fas fa-terminal\"></i> Flow Execution\n </h3>\n <div class=\"header-actions\">\n <button \n class=\"icon-button\"\n (click)=\"clearLogs()\"\n title=\"Clear logs\"\n [disabled]=\"executionStatus === 'running'\">\n <i class=\"fas fa-trash\"></i>\n </button>\n <button \n class=\"icon-button close\"\n (click)=\"closePanel()\"\n title=\"Close panel\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n </div>\n \n <div class=\"execution-controls\">\n <div class=\"status-indicator\" [class]=\"'status-' + executionStatus\">\n <i class=\"fas\" [ngClass]=\"{\n 'fa-circle': executionStatus === 'idle',\n 'fa-spinner fa-spin': executionStatus === 'running',\n 'fa-pause-circle': executionStatus === 'paused',\n 'fa-check-circle': executionStatus === 'completed',\n 'fa-exclamation-circle': executionStatus === 'error'\n }\"></i>\n <span>{{ executionStatus | titlecase }}</span>\n </div>\n \n <div class=\"control-buttons\">\n <button \n class=\"control-button\"\n (click)=\"onPause()\"\n [disabled]=\"executionStatus !== 'running'\"\n title=\"Pause execution\">\n <i class=\"fas fa-pause\"></i>\n </button>\n <button \n class=\"control-button\"\n (click)=\"onResume()\"\n [disabled]=\"executionStatus !== 'paused'\"\n title=\"Resume execution\">\n <i class=\"fas fa-play\"></i>\n </button>\n <button \n class=\"control-button stop\"\n (click)=\"onStop()\"\n [disabled]=\"executionStatus !== 'running' && executionStatus !== 'paused'\"\n title=\"Stop execution\">\n <i class=\"fas fa-stop\"></i>\n </button>\n </div>\n </div>\n \n <div class=\"logs-container\">\n <div *ngIf=\"executionLogs.length === 0\" class=\"empty-logs\">\n <i class=\"fas fa-info-circle\"></i>\n <p>No execution logs yet. Click \"Run Flow\" to start.</p>\n </div>\n \n <div *ngFor=\"let log of executionLogs\" \n class=\"log-entry\" \n [class]=\"getLogClass(log.type)\"\n [class.current-step]=\"log.stepId === currentStepId && currentStepId !== 0\">\n <div class=\"log-timestamp\">{{ formatTimestamp(log.timestamp) }}</div>\n <div class=\"log-icon\">\n <i class=\"fas\" [ngClass]=\"getLogIcon(log.type)\"></i>\n </div>\n <div class=\"log-content\">\n <div class=\"log-step\" *ngIf=\"log.stepId\">\n <strong>{{ log.stepName }}</strong>\n </div>\n <div class=\"log-message\">{{ log.message }}</div>\n <div class=\"log-data\" *ngIf=\"log.data\">\n <pre>{{ log.data | json }}</pre>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<!-- Minimized indicator when panel is closed but execution is active -->\n<div class=\"execution-indicator\" \n *ngIf=\"executionStatus !== 'idle' && isPanelClosed\"\n (click)=\"isPanelClosed = false\"\n title=\"Click to reopen execution panel\">\n <i class=\"fas\" [ngClass]=\"{\n 'fa-spinner fa-spin': executionStatus === 'running',\n 'fa-pause-circle': executionStatus === 'paused',\n 'fa-check-circle': executionStatus === 'completed',\n 'fa-exclamation-circle': executionStatus === 'error'\n }\"></i>\n <span>{{ executionStatus | titlecase }}</span>\n</div>", styles: [".execution-panel {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n height: 0;\n background: var(--white-color);\n border-top: 1px solid var(--gray-700);\n box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);\n transition: height 0.3s ease;\n z-index: 100;\n display: flex;\n flex-direction: column;\n \n &.active {\n transition: none; // Disable transition during resize\n }\n \n &.resizing {\n user-select: none;\n \n .resize-grip {\n opacity: 1 !important;\n }\n }\n}\n\n.resize-handle {\n position: absolute;\n top: -5px;\n left: 0;\n right: 0;\n height: 10px;\n cursor: ns-resize;\n z-index: 10;\n \n &:hover .resize-grip {\n opacity: 1;\n }\n}\n\n.resize-grip {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 50px;\n height: 4px;\n background: var(--gray-800);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.2s;\n \n &::before,\n &::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--gray-700);\n }\n \n &::before {\n top: -2px;\n }\n \n &::after {\n bottom: -2px;\n }\n}\n\n.panel-header {\n padding: 1rem 1.5rem;\n border-bottom: 1px solid var(--gray-700);\n background: var(--gray-600);\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.panel-title {\n font-size: 1rem;\n font-weight: 600;\n margin: 0;\n color: var(--gray-900);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n \n i {\n color: var(--mj-blue);\n }\n}\n\n.header-actions {\n display: flex;\n gap: 0.5rem;\n}\n\n.icon-button {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: var(--gray-800);\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--transition-time);\n \n &:hover:not(:disabled) {\n background: var(--gray-700);\n color: var(--gray-900);\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n &.close {\n &:hover:not(:disabled) {\n background: #dc3545;\n color: white;\n }\n }\n}\n\n.execution-controls {\n padding: 0.75rem 1.5rem;\n background: var(--gray-600);\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--gray-700);\n}\n\n.status-indicator {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.875rem;\n font-weight: 600;\n \n &.status-idle {\n color: var(--gray-800);\n }\n \n &.status-running {\n color: var(--mj-blue);\n }\n \n &.status-paused {\n color: #ffc107;\n }\n \n &.status-completed {\n color: #28a745;\n }\n \n &.status-error {\n color: #dc3545;\n }\n}\n\n.control-buttons {\n display: flex;\n gap: 0.5rem;\n}\n\n.control-button {\n padding: 0.375rem 0.75rem;\n border: 1px solid var(--gray-700);\n background: var(--white-color);\n color: var(--gray-900);\n border-radius: var(--border-radius);\n cursor: pointer;\n font-size: 0.875rem;\n display: flex;\n align-items: center;\n gap: 0.25rem;\n transition: all var(--transition-time);\n \n &:hover:not(:disabled) {\n background: var(--gray-700);\n border-color: var(--gray-800);\n }\n \n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n &.stop {\n color: #dc3545;\n border-color: #dc3545;\n \n &:hover:not(:disabled) {\n background: #dc3545;\n color: white;\n }\n }\n}\n\n.logs-container {\n flex: 1;\n overflow-y: auto;\n background: var(--gray-600);\n padding: 1rem;\n}\n\n.empty-logs {\n text-align: center;\n color: var(--gray-800);\n padding: 2rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n \n i {\n font-size: 2rem;\n color: var(--mj-blue);\n }\n \n p {\n margin: 0;\n font-size: 0.875rem;\n }\n}\n\n.log-entry {\n display: flex;\n gap: 0.75rem;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n background: var(--white-color);\n border-radius: var(--border-radius);\n border-left: 3px solid transparent;\n font-size: 0.875rem;\n transition: all var(--transition-time);\n \n &.log-start {\n border-left-color: var(--mj-blue);\n }\n \n &.log-success {\n border-left-color: #28a745;\n }\n \n &.log-error {\n border-left-color: #dc3545;\n }\n \n &.log-info {\n border-left-color: #17a2b8;\n }\n \n &.current-step {\n background: #e3f2fd;\n box-shadow: 0 2px 4px rgba(0, 118, 182, 0.2);\n }\n}\n\n.log-timestamp {\n color: var(--gray-800);\n font-family: monospace;\n font-size: 0.75rem;\n white-space: nowrap;\n padding-top: 0.125rem;\n}\n\n.log-icon {\n flex-shrink: 0;\n width: 20px;\n text-align: center;\n \n .fa-play-circle {\n color: var(--mj-blue);\n }\n \n .fa-check-circle {\n color: #28a745;\n }\n \n .fa-exclamation-circle {\n color: #dc3545;\n }\n \n .fa-info-circle {\n color: #17a2b8;\n }\n}\n\n.log-content {\n flex: 1;\n min-width: 0;\n}\n\n.log-step {\n margin-bottom: 0.25rem;\n color: var(--gray-900);\n}\n\n.log-message {\n color: var(--gray-800);\n word-wrap: break-word;\n}\n\n.log-data {\n margin-top: 0.5rem;\n \n pre {\n margin: 0;\n padding: 0.5rem;\n background: var(--gray-600);\n border-radius: var(--border-radius);\n font-size: 0.75rem;\n overflow-x: auto;\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n}\n\n// Minimized execution indicator\n.execution-indicator {\n position: fixed;\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--white-color);\n border: 1px solid var(--gray-700);\n border-radius: 30px;\n padding: 0.5rem 1.5rem;\n display: flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transition: all var(--transition-time);\n z-index: 100;\n font-size: 0.875rem;\n font-weight: 600;\n \n &:hover {\n transform: translateX(-50%) translateY(-2px);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);\n }\n \n i {\n font-size: 1rem;\n \n &.fa-spinner {\n color: var(--mj-blue);\n }\n \n &.fa-pause-circle {\n color: #ffc107;\n }\n \n &.fa-check-circle {\n color: #28a745;\n }\n \n &.fa-exclamation-circle {\n color: #dc3545;\n }\n }\n}"] }]
285
+ }], () => [{ type: i1.FlowExecutorService }], null); })();
286
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExecutionPanelComponent, { className: "ExecutionPanelComponent", filePath: "src/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.ts", lineNumber: 13 }); })();
287
+ //# sourceMappingURL=execution-panel.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-panel.component.js","sourceRoot":"","sources":["../../../../../../../../src/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.ts","../../../../../../../../src/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import { OnInit, ElementRef, AfterViewInit, OnDestroy, ChangeDetectorRef, EventEmitter } from '@angular/core';
2
+ import { FlowEditorService } from '../../services/flow-editor.service';
3
+ import { FlowExecutorService } from '../../services/flow-executor.service';
4
+ import { Step, StepType } from '../../models/step.model';
5
+ import { Connection } from '../../models/connection.model';
6
+ import * as i0 from "@angular/core";
7
+ export declare class FlowEditorComponent implements OnInit, AfterViewInit, OnDestroy {
8
+ private flowEditorService;
9
+ private flowExecutor;
10
+ private changeDetector;
11
+ reteEditor: ElementRef<HTMLDivElement>;
12
+ toggleExecution: EventEmitter<void>;
13
+ stepMoved: EventEmitter<Step>;
14
+ steps: Step[];
15
+ connections: Connection[];
16
+ selectedStepId: number | null;
17
+ executingStepId: number | null;
18
+ showExecutionPanel: boolean;
19
+ legendCollapsed: boolean;
20
+ private readonly STEP_WIDTH;
21
+ private readonly STEP_HEIGHT;
22
+ private nextStepId;
23
+ private isDragging;
24
+ private dragOffset;
25
+ currentScale: number;
26
+ canvasOffset: {
27
+ x: number;
28
+ y: number;
29
+ };
30
+ tempConnection: {
31
+ source: Step;
32
+ sourceType: string;
33
+ mouseX: number;
34
+ mouseY: number;
35
+ } | null;
36
+ private isCreatingConnection;
37
+ editingConnection: Connection | null;
38
+ stepToDelete: Step | null;
39
+ connectionToDelete: Connection | null;
40
+ constructor(flowEditorService: FlowEditorService, flowExecutor: FlowExecutorService, changeDetector: ChangeDetectorRef);
41
+ ngOnInit(): void;
42
+ ngAfterViewInit(): void;
43
+ initializeEditor(): void;
44
+ loadFlowData(): void;
45
+ centerOnStartingStep(): void;
46
+ createExampleFlow(): void;
47
+ createStep(type: StepType, position: [number, number]): Step;
48
+ createConnection(sourceId: number, targetId: number): void;
49
+ setupCanvasEvents(): void;
50
+ updateCanvasTransform(): void;
51
+ selectStep(step: Step): void;
52
+ deleteStep(step: Step): void;
53
+ confirmDeleteStep(): void;
54
+ cancelDeleteStep(): void;
55
+ deleteConnection(connection: Connection): void;
56
+ confirmDeleteConnection(): void;
57
+ cancelDeleteConnection(): void;
58
+ onConnectionClick(event: MouseEvent, connection: Connection): void;
59
+ getConnectionMidpoint(connection: Connection): {
60
+ x: number;
61
+ y: number;
62
+ };
63
+ saveConnectionConditions(updatedConnection: Connection): void;
64
+ closeConditionEditor(): void;
65
+ getConditionPreview(connection: Connection): string;
66
+ getConditionLabel(connection: Connection): string;
67
+ getConditionBoxWidth(connection: Connection): number;
68
+ getConnectionColor(connection: Connection): string;
69
+ isBackwardConnection(connection: Connection): boolean;
70
+ getConnectionDashArray(connection: Connection): string;
71
+ getConnectionMarker(connection: Connection): string;
72
+ updateStep(step: Step): void;
73
+ onStepDragStart(event: MouseEvent, step: Step): void;
74
+ private currentDraggedStep;
75
+ private handleMouseMove;
76
+ private handleMouseUp;
77
+ onStepDragEnd(): void;
78
+ getConnectionPath(connection: Connection): string;
79
+ onZoomIn(): void;
80
+ onZoomOut(): void;
81
+ onResetView(): void;
82
+ onAutoArrange(): void;
83
+ private autoArrangeSteps;
84
+ private fitToView;
85
+ toggleExecutionPanel(): void;
86
+ runFlow(): void;
87
+ ngOnDestroy(): void;
88
+ onSocketMouseDown(event: {
89
+ event: MouseEvent;
90
+ step: Step;
91
+ type: string;
92
+ }): void;
93
+ onSocketMouseEnter(event: {
94
+ event: MouseEvent;
95
+ step: Step;
96
+ type: string;
97
+ }): void;
98
+ onSocketMouseLeave(event: MouseEvent): void;
99
+ private handleConnectionMouseMove;
100
+ private handleConnectionMouseUp;
101
+ private canCreateConnection;
102
+ getTempConnectionPath(): string;
103
+ static ɵfac: i0.ɵɵFactoryDeclaration<FlowEditorComponent, never>;
104
+ static ɵcmp: i0.ɵɵComponentDeclaration<FlowEditorComponent, "app-flow-editor", never, {}, { "toggleExecution": "toggleExecution"; "stepMoved": "stepMoved"; }, never, never, true, never>;
105
+ }
106
+ //# sourceMappingURL=flow-editor.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-editor.component.d.ts","sourceRoot":"","sources":["../../../../../../../../src/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.ts"],"names":[],"mappings":"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"}