@flowuent-org/diagramming-core 1.0.5 → 1.0.7

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 (28) hide show
  1. package/TRANSLATION_FIX_SUMMARY.md +118 -0
  2. package/apps/diagramming/src/DiagramTabs.tsx +205 -205
  3. package/apps/diagramming/src/sample-workflow-content.ts +55 -54
  4. package/package.json +116 -116
  5. package/packages/diagrams/I18N_SETUP.md +126 -0
  6. package/packages/diagrams/NODE_DATA_UPDATE_API.md +430 -430
  7. package/packages/diagrams/README.md +443 -3
  8. package/packages/diagrams/UNDO_REDO_API.md +306 -306
  9. package/packages/diagrams/locales/en/translation.json +713 -0
  10. package/packages/diagrams/package.json +5 -23
  11. package/packages/diagrams/pnpm-lock.yaml +2606 -0
  12. package/packages/diagrams/project.json +42 -38
  13. package/packages/diagrams/rollup.config.js +5 -10
  14. package/packages/diagrams/src/index.ts +116 -113
  15. package/packages/diagrams/src/lib/atoms/CardEditableTitle.tsx +76 -76
  16. package/packages/diagrams/src/lib/components/automation/AutomationApiNode.tsx +24 -3
  17. package/packages/diagrams/src/lib/components/automation/AutomationEndNode.tsx +23 -2
  18. package/packages/diagrams/src/lib/components/automation/AutomationFormattingNode.tsx +24 -3
  19. package/packages/diagrams/src/lib/components/automation/AutomationStartNode.tsx +24 -3
  20. package/packages/diagrams/src/lib/contexts/onWorkflowNodeDelete.ts +1 -1
  21. package/packages/diagrams/src/lib/i18n.ts +42 -0
  22. package/packages/diagrams/src/lib/organisms/CustomEdge/useCreateBendPoint.tsx +121 -119
  23. package/packages/diagrams/src/lib/organisms/WorkFlowNode/NodeActionButtons.tsx +1 -1
  24. package/packages/diagrams/src/lib/templates/node-forms/CallForm.tsx +370 -370
  25. package/packages/diagrams/src/lib/types/node-types.ts +29 -29
  26. package/packages/diagrams/src/lib/utils/AutomationExecutionEngine.ts +1168 -1162
  27. package/packages/diagrams/tsconfig.lib.json +1 -3
  28. package/tsconfig.base.json +1 -1
@@ -1,38 +1,42 @@
1
- {
2
- "name": "diagrams",
3
- "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
- "sourceRoot": "packages/diagrams/src",
5
- "projectType": "library",
6
- "tags": [],
7
- "targets": {
8
- "build": {
9
- "executor": "@nx/rollup:rollup",
10
- "outputs": ["{options.outputPath}"],
11
- "options": {
12
- "outputPath": "dist/packages/diagrams",
13
- "tsConfig": "packages/diagrams/tsconfig.lib.json",
14
- "project": "packages/diagrams/package.json",
15
- "entryFile": "packages/diagrams/src/index.ts",
16
- "external": ["react", "react-dom", "react/jsx-runtime"],
17
- "rollupConfig": "packages/diagrams/rollup.config.js",
18
- "compiler": "swc",
19
- "skipTypeCheck": false,
20
- "assets": [
21
- {
22
- "glob": "packages/diagrams/README.md",
23
- "input": ".",
24
- "output": "."
25
- }
26
- ],
27
- "buildableProjectDepsInPackageJsonType": "peerDependencies"
28
- },
29
- "configurations": {
30
- "production": {
31
- "optimization": true,
32
- "extractLicenses": true,
33
- "inspect": false
34
- }
35
- }
36
- }
37
- }
38
- }
1
+ {
2
+ "name": "diagrams",
3
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
4
+ "sourceRoot": "packages/diagrams/src",
5
+ "projectType": "library",
6
+ "tags": [],
7
+ "targets": {
8
+ "build": {
9
+ "executor": "@nx/rollup:rollup",
10
+ "outputs": ["{options.outputPath}"],
11
+ "options": {
12
+ "outputPath": "dist/packages/diagrams",
13
+ "tsConfig": "packages/diagrams/tsconfig.lib.json",
14
+ "project": "packages/diagrams/package.json",
15
+ "entryFile": "packages/diagrams/src/index.ts",
16
+ "external": ["react", "react-dom", "react/jsx-runtime"],
17
+ "rollupConfig": "packages/diagrams/rollup.config.js",
18
+ "compiler": "babel",
19
+ "assets": [
20
+ {
21
+ "glob": "packages/diagrams/README.md",
22
+ "input": ".",
23
+ "output": "."
24
+ },
25
+ {
26
+ "glob": "**/*",
27
+ "input": "packages/diagrams/locales",
28
+ "output": "locales"
29
+ }
30
+ ],
31
+ "buildableProjectDepsInPackageJsonType": "peerDependencies"
32
+ },
33
+ "configurations": {
34
+ "production": {
35
+ "optimization": true,
36
+ "extractLicenses": true,
37
+ "inspect": false
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
@@ -8,16 +8,11 @@ module.exports = (options) => {
8
8
  // Enable tree shaking
9
9
  nxRollupOptions.treeshake = true; // Explicitly enable tree shaking
10
10
 
11
- // Filter out rollup-plugin-typescript2 (rpt2) which has path issues on Windows
12
- // But keep @rollup/plugin-typescript if it exists
13
- nxRollupOptions.plugins = (Array.isArray(nxRollupOptions.plugins) ? nxRollupOptions.plugins : [])
14
- .filter(plugin => {
15
- // Remove rollup-plugin-typescript2 (rpt2) - it has cross-platform path issues
16
- return !(plugin && plugin.name === 'rpt2');
17
- });
18
-
19
- // Add the preserveDirectives plugin
20
- nxRollupOptions.plugins.push(preserveDirectives());
11
+ // Add the preserveDirectives plugin to the existing plugins
12
+ nxRollupOptions.plugins = [
13
+ ...(Array.isArray(nxRollupOptions.plugins) ? nxRollupOptions.plugins : []),
14
+ preserveDirectives(),
15
+ ];
21
16
 
22
17
  // Externalize MUI packages
23
18
  nxRollupOptions.external = [
@@ -1,113 +1,116 @@
1
- export * from './lib/externals';
2
- export * from './lib/templates/systemFlow';
3
- export * from './lib/theme';
4
- export * from './lib/atoms/AddNodeAnchor';
5
- export * from './lib/atoms/AddParallelColButton';
6
- export * from './lib/atoms/BendpointNode';
7
- export * from './lib/atoms/CardBlockTypeSelector';
8
- export * from './lib/atoms/CardMainContent';
9
- export * from './lib/atoms/FloatingConnectionLine';
10
- export * from './lib/atoms/MarkerSelector';
11
- export * from './lib/atoms/PropertyInput';
12
- export * from './lib/atoms/StyledBox';
13
- export * from './lib/contexts/CardDataProvider';
14
- export * from './lib/contexts/DiagramProvider';
15
- export * from './lib/contexts/diagramStoreTypes';
16
- export * from './lib/contexts/onConnect';
17
- export * from './lib/contexts/onDragStart';
18
- export * from './lib/contexts/onNodeDragEnd';
19
- export * from './lib/contexts/onNodesChange';
20
- export * from './lib/contexts/setContentHeight';
21
- export * from './lib/contexts/setDiagramType';
22
- export * from './lib/contexts/setEdges';
23
- export * from './lib/contexts/setEdgeShapeType';
24
- export * from './lib/contexts/setNodes';
25
- export * from './lib/contexts/setNodeSetting';
26
- export * from './lib/contexts/setPannable';
27
- export * from './lib/contexts/setSelectedEdge';
28
- export * from './lib/contexts/setSelectedNode';
29
- export * from './lib/contexts/undo';
30
- export * from './lib/contexts/updateNodeSetting';
31
- export * from './lib/hooks/customUseReactFlow';
32
- export * from './lib/hooks/updateNodes';
33
- export * from './lib/hooks/useDragCallbacks';
34
- export * from './lib/hooks/useModalControls';
35
- export * from './lib/hooks/useWorkflowNodeActiont';
36
- export * from './lib/hooks/useAutoRegisterFunctions';
37
- export * from './lib/molecules/AddingBlock';
38
- export * from './lib/molecules/animated-add-button';
39
- export * from './lib/molecules/Block';
40
- export * from './lib/molecules/BlockProvider';
41
- export * from './lib/molecules/BlockWrapper';
42
- export * from './lib/molecules/DraggablePane';
43
- export * from './lib/molecules/EntityNodeBlocks';
44
- export * from './lib/molecules/json-viewer';
45
- export * from './lib/molecules/SideHandles';
46
- export * from './lib/molecules/StencilItem';
47
- export * from './lib/molecules/WorkflowNodeActionButtons';
48
- export * from './lib/organisms/AddNodeView';
49
- export * from './lib/organisms/DownloadPanel';
50
- export * from './lib/organisms/EdgeModal';
51
- export * from './lib/organisms/NodeContextMenu';
52
- export * from './lib/organisms/SmartDynamicForm';
53
- export * from './lib/organisms/Stencil';
54
- export * from './lib/organisms/UseDiagramStore';
55
- export * from './lib/organisms/ConditionRuleGroup';
56
- export * from './lib/organisms/WorkflowNode';
57
- export * from './lib/templates/DiagramContainer';
58
- export * from './lib/templates/DiagramContent';
59
- export * from './lib/templates/Diagramming';
60
- export type { DiagrammingPageRef } from './lib/templates/Diagramming';
61
- export * from './lib/templates/PageLinks';
62
- export * from './lib/types/card-node';
63
- export * from './lib/types/collaboration-types';
64
- export * from './lib/types/colors';
65
- export * from './lib/types/edge-types';
66
- export * from './lib/types/hooks.types';
67
- export * from './lib/types/node-types';
68
- export * from './lib/types/SmartDynamicFormField';
69
- export * from './lib/types/stencil-item';
70
- export * from './lib/types/structures';
71
- export * from './lib/types/workflow-content-dynamic-form-type';
72
- export * from './lib/types/FunctionSignature';
73
- export * from './lib/utils/add-new-block';
74
- export * from './lib/utils/add-new-node';
75
- export * from './lib/utils/addToHistory';
76
- export * from './lib/utils/closestPoint';
77
- export * from './lib/utils/color-options';
78
- export * from './lib/utils/compress-img';
79
- export * from './lib/utils/constant-lengths';
80
- export * from './lib/utils/create-updated';
81
- export * from './lib/utils/createHistoryChange';
82
- export * from './lib/utils/edge-hooks';
83
- export * from './lib/utils/elkLayout';
84
- export * from './lib/utils/event-hooks';
85
- export * from './lib/utils/event-store';
86
- export * from './lib/utils/flow-node-hooks';
87
- export * from './lib/utils/flow-to-js';
88
- export * from './lib/utils/helpers.types';
89
- export * from './lib/utils/logger';
90
- export * from './lib/utils/model-hooks';
91
- export * from './lib/utils/node-hooks';
92
- export { useHistory, useHistoryIndex } from './lib/contexts/DiagramProvider';
93
- export * from './lib/utils/object';
94
- export * from './lib/utils/nodeutils';
95
- export * from './lib/utils/utilities';
96
- export * from './lib/utils/vhToPixels';
97
- export * from './lib/assets/markers/markers.param';
98
- export * from './lib/assets/markers/markers.type';
99
- export * from './lib/organisms/Card/card.params';
100
- export * from './lib/organisms/Card/card.types';
101
- export * from './lib/organisms/Card/EntityNode';
102
- export * from './lib/organisms/CustomEdge/custom-edge-generator';
103
- export * from './lib/organisms/CustomEdge/custom-edge.params';
104
- export * from './lib/organisms/CustomEdge/custom-edge.type';
105
- export * from './lib/organisms/PropertiesPane';
106
- export * from './lib/organisms/HistoryPane';
107
- //export * from './lib/types/workflow-node-data-types';
108
- export * from './lib/templates/node-forms/NodeForm';
109
- export { AutomationExecutionEngine } from './lib/utils/AutomationExecutionEngine';
110
- export type {
111
- AutomationLog,
112
- AutomationResult,
113
- } from './lib/utils/AutomationExecutionEngine';
1
+ export * from './lib/externals';
2
+ export * from './lib/i18n';
3
+ export * from './lib/templates/systemFlow';
4
+ export * from './lib/theme';
5
+ export * from './lib/atoms/AddNodeAnchor';
6
+ export * from './lib/atoms/AddParallelColButton';
7
+ export * from './lib/atoms/BendpointNode';
8
+ export * from './lib/atoms/CardBlockTypeSelector';
9
+ export * from './lib/atoms/CardMainContent';
10
+ export * from './lib/atoms/FloatingConnectionLine';
11
+ export * from './lib/atoms/MarkerSelector';
12
+ export * from './lib/atoms/PropertyInput';
13
+ export * from './lib/atoms/StyledBox';
14
+ export * from './lib/contexts/CardDataProvider';
15
+ export * from './lib/contexts/DiagramProvider';
16
+ export * from './lib/contexts/diagramStoreTypes';
17
+ export * from './lib/contexts/onConnect';
18
+ export * from './lib/contexts/onDragStart';
19
+ export * from './lib/contexts/onNodeDragEnd';
20
+ export * from './lib/contexts/onNodesChange';
21
+ export * from './lib/contexts/setContentHeight';
22
+ export * from './lib/contexts/setDiagramType';
23
+ export * from './lib/contexts/setEdges';
24
+ export * from './lib/contexts/setEdgeShapeType';
25
+ export * from './lib/contexts/setNodes';
26
+ export * from './lib/contexts/setNodeSetting';
27
+ export * from './lib/contexts/setPannable';
28
+ export * from './lib/contexts/setSelectedEdge';
29
+ export * from './lib/contexts/setSelectedNode';
30
+ export * from './lib/contexts/undo';
31
+ export * from './lib/contexts/updateNodeSetting';
32
+ export * from './lib/hooks/customUseReactFlow';
33
+ export * from './lib/hooks/updateNodes';
34
+ export * from './lib/hooks/useDragCallbacks';
35
+ export * from './lib/hooks/useModalControls';
36
+ export * from './lib/hooks/useWorkflowNodeActiont';
37
+ export * from './lib/hooks/useAutoRegisterFunctions';
38
+ export * from './lib/molecules/AddingBlock';
39
+ export * from './lib/molecules/animated-add-button';
40
+ export * from './lib/molecules/Block';
41
+ export * from './lib/molecules/BlockProvider';
42
+ export * from './lib/molecules/BlockWrapper';
43
+ export * from './lib/molecules/DraggablePane';
44
+ export * from './lib/molecules/EntityNodeBlocks';
45
+ export * from './lib/molecules/json-viewer';
46
+ export * from './lib/molecules/SideHandles';
47
+ export * from './lib/molecules/StencilItem';
48
+ export * from './lib/molecules/WorkflowNodeActionButtons';
49
+ export * from './lib/organisms/AddNodeView';
50
+ export * from './lib/organisms/DownloadPanel';
51
+ export * from './lib/organisms/EdgeModal';
52
+ export * from './lib/organisms/NodeContextMenu';
53
+ export * from './lib/organisms/SmartDynamicForm';
54
+ export * from './lib/organisms/Stencil';
55
+ export * from './lib/organisms/UseDiagramStore';
56
+ export * from './lib/organisms/ConditionRuleGroup';
57
+ export * from './lib/organisms/WorkflowNode';
58
+ export * from './lib/templates/DiagramContainer';
59
+ export * from './lib/templates/DiagramContent';
60
+ export * from './lib/templates/Diagramming';
61
+ export type { DiagrammingPageRef } from './lib/templates/Diagramming';
62
+ export * from './lib/templates/PageLinks';
63
+ export * from './lib/types/card-node';
64
+ export * from './lib/types/collaboration-types';
65
+ export * from './lib/types/colors';
66
+ export * from './lib/types/edge-types';
67
+ export * from './lib/types/hooks.types';
68
+ export * from './lib/types/node-types';
69
+ export * from './lib/types/SmartDynamicFormField';
70
+ export * from './lib/types/stencil-item';
71
+ export * from './lib/types/structures';
72
+ export * from './lib/types/workflow-content-dynamic-form-type';
73
+ export * from './lib/types/FunctionSignature';
74
+ export * from './lib/utils/add-new-block';
75
+ export * from './lib/utils/add-new-node';
76
+ export * from './lib/utils/addToHistory';
77
+ export * from './lib/utils/closestPoint';
78
+ export * from './lib/utils/color-options';
79
+ export * from './lib/utils/compress-img';
80
+ export * from './lib/utils/constant-lengths';
81
+ export * from './lib/utils/create-updated';
82
+ export * from './lib/utils/createHistoryChange';
83
+ export * from './lib/utils/edge-hooks';
84
+ export * from './lib/utils/elkLayout';
85
+ export * from './lib/utils/event-hooks';
86
+ export * from './lib/utils/event-store';
87
+ export * from './lib/utils/flow-node-hooks';
88
+ export * from './lib/utils/flow-to-js';
89
+ export * from './lib/utils/helpers.types';
90
+ export * from './lib/utils/logger';
91
+ export * from './lib/utils/model-hooks';
92
+ export * from './lib/utils/node-hooks';
93
+ export { useHistory, useHistoryIndex } from './lib/contexts/DiagramProvider';
94
+ export * from './lib/utils/object';
95
+ export * from './lib/utils/nodeutils';
96
+ export * from './lib/utils/utilities';
97
+ export * from './lib/utils/vhToPixels';
98
+ export * from './lib/assets/markers/markers.param';
99
+ export * from './lib/assets/markers/markers.type';
100
+ export * from './lib/organisms/Card/card.params';
101
+ export * from './lib/organisms/Card/card.types';
102
+ export * from './lib/organisms/Card/EntityNode';
103
+ export * from './lib/organisms/CustomEdge/custom-edge-generator';
104
+ export * from './lib/organisms/CustomEdge/custom-edge.params';
105
+ export * from './lib/organisms/CustomEdge/custom-edge.type';
106
+ export * from './lib/organisms/PropertiesPane';
107
+ export * from './lib/organisms/HistoryPane';
108
+ //export * from './lib/types/workflow-node-data-types';
109
+ export * from './lib/templates/node-forms/NodeForm';
110
+ export { AutomationExecutionEngine } from './lib/utils/AutomationExecutionEngine';
111
+ export type {
112
+ AutomationLog,
113
+ AutomationResult,
114
+ } from './lib/utils/AutomationExecutionEngine';
115
+ export * from './lib/components/automation';
116
+ export * from './lib/types/automation-node-data-types';
@@ -1,76 +1,76 @@
1
- import React, { useCallback, useEffect, useRef, useState } from 'react';
2
- import { Box, TextField } from '@mui/material';
3
- import { ICardNode } from '../types/card-node';
4
- import { useCustomReactFlow } from '../hooks/customUseReactFlow';
5
- import { useNodeId, useNodeTitle } from '../contexts/CardDataProvider';
6
-
7
- export const CardEditableTitle = React.memo(() => {
8
- const title = useNodeTitle()
9
- const nodeId = useNodeId()
10
- const { getNodes, setNodes } = useCustomReactFlow();
11
- const [text, setText] = useState(title);
12
- const inputRef = useRef<HTMLInputElement>(null);
13
-
14
- useEffect(() => {
15
- if (title !== text) setText(title);
16
- }, [title]);
17
-
18
- const changeTitle = useCallback(
19
- (val: string) => {
20
- const prevNodes = [...getNodes()] as ICardNode[];
21
- const newNodes: ICardNode[] = prevNodes.map((node) => {
22
- if (node.id === nodeId) {
23
- return {
24
- ...node,
25
- data: { ...node.data, title: val },
26
- };
27
- } else return node;
28
- });
29
- setNodes(newNodes);
30
- },
31
- [getNodes, setNodes, nodeId],
32
- );
33
-
34
- const handleSave = useCallback(() => {
35
- changeTitle(text ?? '');
36
- }, [text, changeTitle]);
37
-
38
- const handleKeyDown = useCallback(
39
- (e: React.KeyboardEvent<HTMLInputElement>) => {
40
- if (e.key === 'Enter') {
41
- handleSave();
42
- } else if (e.key === 'Escape') {
43
- setText(title);
44
- }
45
- },
46
- [handleSave, title],
47
- );
48
-
49
- return (
50
- <Box
51
- sx={{
52
- display: 'flex',
53
- justifyContent: 'center',
54
- width: '100%',
55
- my: 1,
56
- backgroundColor: '#6B04F1',
57
- borderRadius: '3px',
58
- }}
59
- >
60
- <TextField
61
- size={'small'}
62
- inputProps={{
63
- style: { fontSize: '18px', fontWeight: 'bold', textAlign: 'center', color: '#fff' },
64
- }}
65
- variant="outlined"
66
- value={text}
67
- onChange={(e) => setText(e.target.value)}
68
- onKeyDown={handleKeyDown}
69
- inputRef={inputRef}
70
- fullWidth
71
- />
72
- </Box>
73
- );
74
- });
75
-
76
- export default CardEditableTitle;
1
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { Box, TextField } from '@mui/material';
3
+ import { ICardNode } from '../types/card-node';
4
+ import { useCustomReactFlow } from '../hooks/customUseReactFlow';
5
+ import { useNodeId, useNodeTitle } from '@flowuent-labs/diagrams';
6
+
7
+ export const CardEditableTitle = React.memo(() => {
8
+ const title = useNodeTitle()
9
+ const nodeId = useNodeId()
10
+ const { getNodes, setNodes } = useCustomReactFlow();
11
+ const [text, setText] = useState(title);
12
+ const inputRef = useRef<HTMLInputElement>(null);
13
+
14
+ useEffect(() => {
15
+ if (title !== text) setText(title);
16
+ }, [title]);
17
+
18
+ const changeTitle = useCallback(
19
+ (val: string) => {
20
+ const prevNodes = [...getNodes()] as ICardNode[];
21
+ const newNodes: ICardNode[] = prevNodes.map((node) => {
22
+ if (node.id === nodeId) {
23
+ return {
24
+ ...node,
25
+ data: { ...node.data, title: val },
26
+ };
27
+ } else return node;
28
+ });
29
+ setNodes(newNodes);
30
+ },
31
+ [getNodes, setNodes, nodeId],
32
+ );
33
+
34
+ const handleSave = useCallback(() => {
35
+ changeTitle(text ?? '');
36
+ }, [text, changeTitle]);
37
+
38
+ const handleKeyDown = useCallback(
39
+ (e: React.KeyboardEvent<HTMLInputElement>) => {
40
+ if (e.key === 'Enter') {
41
+ handleSave();
42
+ } else if (e.key === 'Escape') {
43
+ setText(title);
44
+ }
45
+ },
46
+ [handleSave, title],
47
+ );
48
+
49
+ return (
50
+ <Box
51
+ sx={{
52
+ display: 'flex',
53
+ justifyContent: 'center',
54
+ width: '100%',
55
+ my: 1,
56
+ backgroundColor: '#6B04F1',
57
+ borderRadius: '3px',
58
+ }}
59
+ >
60
+ <TextField
61
+ size={'small'}
62
+ inputProps={{
63
+ style: { fontSize: '18px', fontWeight: 'bold', textAlign: 'center', color: '#fff' },
64
+ }}
65
+ variant="outlined"
66
+ value={text}
67
+ onChange={(e) => setText(e.target.value)}
68
+ onKeyDown={handleKeyDown}
69
+ inputRef={inputRef}
70
+ fullWidth
71
+ />
72
+ </Box>
73
+ );
74
+ });
75
+
76
+ export default CardEditableTitle;
@@ -278,6 +278,19 @@ export const AutomationApiNode: React.FC<AutomationApiNodeProps> = ({ data, sele
278
278
  transition: 'all 0.2s ease',
279
279
  cursor: 'pointer',
280
280
  overflow: 'hidden',
281
+ ...(data.status === 'Running' && {
282
+ animation: 'pulse-glow 2s ease-in-out infinite',
283
+ '@keyframes pulse-glow': {
284
+ '0%, 100%': {
285
+ boxShadow: '0 0 20px rgba(251, 191, 36, 0.4), 0 0 40px rgba(251, 191, 36, 0.2)',
286
+ borderColor: 'rgba(251, 191, 36, 0.6)',
287
+ },
288
+ '50%': {
289
+ boxShadow: '0 0 30px rgba(251, 191, 36, 0.6), 0 0 60px rgba(251, 191, 36, 0.3)',
290
+ borderColor: 'rgba(251, 191, 36, 0.9)',
291
+ },
292
+ },
293
+ }),
281
294
  }}
282
295
  onClick={handleJsonClick}
283
296
  >
@@ -322,8 +335,16 @@ export const AutomationApiNode: React.FC<AutomationApiNodeProps> = ({ data, sele
322
335
  label={data.status}
323
336
  size="small"
324
337
  sx={{
325
- backgroundColor: 'rgba(16, 185, 129, 0.1)',
326
- color: '#86EFAC',
338
+ backgroundColor: data.status === 'Completed'
339
+ ? 'rgba(37, 99, 235, 0.1)'
340
+ : data.status === 'Running'
341
+ ? 'rgba(251, 191, 36, 0.1)'
342
+ : 'rgba(16, 185, 129, 0.1)',
343
+ color: data.status === 'Completed'
344
+ ? '#93C5FD'
345
+ : data.status === 'Running'
346
+ ? '#FCD34D'
347
+ : '#86EFAC',
327
348
  fontWeight: 500,
328
349
  fontSize: '12px',
329
350
  height: '24px',
@@ -370,7 +391,7 @@ export const AutomationApiNode: React.FC<AutomationApiNodeProps> = ({ data, sele
370
391
  {t('automation.apiNode.additionalInfo')}
371
392
  </Typography>
372
393
 
373
- {(data.formData?.executionResult || data.formData?.schemaMatch) && (
394
+ {data.status === 'Completed' && (data.formData?.executionResult || data.formData?.schemaMatch) && (
374
395
  <>
375
396
  {/* Schema Row */}
376
397
  <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 2 }}>
@@ -207,6 +207,19 @@ export const AutomationEndNode: React.FC<AutomationEndNodeProps> = ({ data, sele
207
207
  transition: 'all 0.2s ease',
208
208
  cursor: 'pointer',
209
209
  overflow: 'hidden',
210
+ ...(data.status === 'Running' && {
211
+ animation: 'pulse-glow 2s ease-in-out infinite',
212
+ '@keyframes pulse-glow': {
213
+ '0%, 100%': {
214
+ boxShadow: '0 0 20px rgba(251, 191, 36, 0.4), 0 0 40px rgba(251, 191, 36, 0.2)',
215
+ borderColor: 'rgba(251, 191, 36, 0.6)',
216
+ },
217
+ '50%': {
218
+ boxShadow: '0 0 30px rgba(251, 191, 36, 0.6), 0 0 60px rgba(251, 191, 36, 0.3)',
219
+ borderColor: 'rgba(251, 191, 36, 0.9)',
220
+ },
221
+ },
222
+ }),
210
223
  }}
211
224
  onClick={handleJsonClick}
212
225
  >
@@ -251,8 +264,16 @@ export const AutomationEndNode: React.FC<AutomationEndNodeProps> = ({ data, sele
251
264
  label={data.status}
252
265
  size="small"
253
266
  sx={{
254
- backgroundColor: 'rgba(16, 185, 129, 0.1)',
255
- color: '#86EFAC',
267
+ backgroundColor: data.status === 'Completed'
268
+ ? 'rgba(37, 99, 235, 0.1)'
269
+ : data.status === 'Running'
270
+ ? 'rgba(251, 191, 36, 0.1)'
271
+ : 'rgba(16, 185, 129, 0.1)',
272
+ color: data.status === 'Completed'
273
+ ? '#93C5FD'
274
+ : data.status === 'Running'
275
+ ? '#FCD34D'
276
+ : '#86EFAC',
256
277
  fontWeight: 500,
257
278
  fontSize: '12px',
258
279
  height: '24px',
@@ -282,6 +282,19 @@ export const AutomationFormattingNode: React.FC<AutomationFormattingNodeProps> =
282
282
  transition: 'all 0.2s ease',
283
283
  cursor: 'pointer',
284
284
  overflow: 'hidden',
285
+ ...(data.status === 'Running' && {
286
+ animation: 'pulse-glow 2s ease-in-out infinite',
287
+ '@keyframes pulse-glow': {
288
+ '0%, 100%': {
289
+ boxShadow: '0 0 20px rgba(251, 191, 36, 0.4), 0 0 40px rgba(251, 191, 36, 0.2)',
290
+ borderColor: 'rgba(251, 191, 36, 0.6)',
291
+ },
292
+ '50%': {
293
+ boxShadow: '0 0 30px rgba(251, 191, 36, 0.6), 0 0 60px rgba(251, 191, 36, 0.3)',
294
+ borderColor: 'rgba(251, 191, 36, 0.9)',
295
+ },
296
+ },
297
+ }),
285
298
  }}
286
299
  onClick={handleJsonClick}
287
300
  >
@@ -326,8 +339,16 @@ export const AutomationFormattingNode: React.FC<AutomationFormattingNodeProps> =
326
339
  label={data.status}
327
340
  size="small"
328
341
  sx={{
329
- backgroundColor: 'rgba(16, 185, 129, 0.1)',
330
- color: '#86EFAC',
342
+ backgroundColor: data.status === 'Completed'
343
+ ? 'rgba(37, 99, 235, 0.1)'
344
+ : data.status === 'Running'
345
+ ? 'rgba(251, 191, 36, 0.1)'
346
+ : 'rgba(16, 185, 129, 0.1)',
347
+ color: data.status === 'Completed'
348
+ ? '#93C5FD'
349
+ : data.status === 'Running'
350
+ ? '#FCD34D'
351
+ : '#86EFAC',
331
352
  fontWeight: 500,
332
353
  fontSize: '12px',
333
354
  height: '24px',
@@ -408,7 +429,7 @@ export const AutomationFormattingNode: React.FC<AutomationFormattingNodeProps> =
408
429
  </Box>
409
430
  </Box>
410
431
 
411
- {(data.formData?.executionResult || data.formData?.schemaMatch) && (
432
+ {data.status === 'Completed' && (data.formData?.executionResult || data.formData?.schemaMatch) && (
412
433
  <>
413
434
  {/* Schema Row */}
414
435
  <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 2 }}>