You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2023/08/24 23:26:16 UTC

[camel-karavan] 02/06: Fix connections issues #836

This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch feature-836
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 64a8c66a2da57cabbeab525aa048814b1b703e02
Author: Marat Gubaidullin <ma...@Marats-MacBook-Pro.local>
AuthorDate: Wed Aug 23 18:36:22 2023 -0400

    Fix connections issues #836
---
 karavan-designer/public/example/demo.camel.yaml    | 1706 ++++++++++----------
 .../src/designer/route/DslConnections.tsx          |    2 -
 karavan-designer/src/designer/route/DslElement.tsx |  100 +-
 .../src/designer/route/RouteDesigner.tsx           |   22 +-
 .../src/designer/route/useRouteDesignerHook.tsx    |   24 +-
 5 files changed, 935 insertions(+), 919 deletions(-)

diff --git a/karavan-designer/public/example/demo.camel.yaml b/karavan-designer/public/example/demo.camel.yaml
index f7df5980..14003ed0 100644
--- a/karavan-designer/public/example/demo.camel.yaml
+++ b/karavan-designer/public/example/demo.camel.yaml
@@ -10,859 +10,7 @@
                 id: when-064f
                 steps:
                   - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
-                      steps:
-                        - bean:
-                            id: bean-3b8e
-                        - log:
-                            message: ${body}
-                            id: log-546f
-                        - loop:
-                            expression: {}
-                            id: loop-4635
-                            steps:
-                              - convertBodyTo:
-                                  id: convertBodyTo-1cae
-            otherwise:
-              id: otherwise-0b09
-              steps:
-                - filter:
-                    expression: {}
-                    id: filter-a02b
-            id: choice-c53c
-        - doTry:
-            id: doTry-8fd5
-            doCatch:
-              - id: doCatch-1071
-              - id: doCatch-c38e
-            steps:
-              - routingSlip:
-                  expression: {}
-                  id: routingSlip-a85a
-- route:
-    id: route-178a
-    from:
-      uri: kamelet:aws-cloudtrail-source
-      id: from-3e7d
-      steps:
-        - multicast:
-            id: multicast-eef7
-            steps:
-              - bean:
-                  id: bean-a5ef
-              - aggregate:
-                  id: aggregate-f5d8
-              - aggregate:
-                  id: aggregate-b9e7
-              - aggregate:
-                  id: aggregate-5eb8
-              - aggregate:
-                  id: aggregate-c57e
-              - aggregate:
-                  id: aggregate-1cd4
-              - bean:
-                  id: bean-72a1
-              - choice:
-                  when:
-                    - expression: {}
-                      id: when-a56b
-                  otherwise:
-                    id: otherwise-9f31
-                  id: choice-1905
-- route:
-    id: route-f435
-    from:
-      uri: kamelet:timer-source
-      id: from-e52c
-      steps:
-        - choice:
-            when:
-              - expression: {}
-                id: when-064f
-                steps:
-                  - multicast:
-                      id: multicast-38ce
+                      id: multicast-38cea
                       steps:
                         - bean:
                             id: bean-3b8e
@@ -921,3 +69,855 @@
                   otherwise:
                     id: otherwise-9f31
                   id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
+#- route:
+#    id: route-f435
+#    from:
+#      uri: kamelet:timer-source
+#      id: from-e52c
+#      steps:
+#        - choice:
+#            when:
+#              - expression: {}
+#                id: when-064f
+#                steps:
+#                  - multicast:
+#                      id: multicast-38ce
+#                      steps:
+#                        - bean:
+#                            id: bean-3b8e
+#                        - log:
+#                            message: ${body}
+#                            id: log-546f
+#                        - loop:
+#                            expression: {}
+#                            id: loop-4635
+#                            steps:
+#                              - convertBodyTo:
+#                                  id: convertBodyTo-1cae
+#            otherwise:
+#              id: otherwise-0b09
+#              steps:
+#                - filter:
+#                    expression: {}
+#                    id: filter-a02b
+#            id: choice-c53c
+#        - doTry:
+#            id: doTry-8fd5
+#            doCatch:
+#              - id: doCatch-1071
+#              - id: doCatch-c38e
+#            steps:
+#              - routingSlip:
+#                  expression: {}
+#                  id: routingSlip-a85a
+#- route:
+#    id: route-178a
+#    from:
+#      uri: kamelet:aws-cloudtrail-source
+#      id: from-3e7d
+#      steps:
+#        - multicast:
+#            id: multicast-eef7
+#            steps:
+#              - bean:
+#                  id: bean-a5ef
+#              - aggregate:
+#                  id: aggregate-f5d8
+#              - aggregate:
+#                  id: aggregate-b9e7
+#              - aggregate:
+#                  id: aggregate-5eb8
+#              - aggregate:
+#                  id: aggregate-c57e
+#              - aggregate:
+#                  id: aggregate-1cd4
+#              - bean:
+#                  id: bean-72a1
+#              - choice:
+#                  when:
+#                    - expression: {}
+#                      id: when-a56b
+#                  otherwise:
+#                    id: otherwise-9f31
+#                  id: choice-1905
diff --git a/karavan-designer/src/designer/route/DslConnections.tsx b/karavan-designer/src/designer/route/DslConnections.tsx
index 7a58e30f..a2505f4f 100644
--- a/karavan-designer/src/designer/route/DslConnections.tsx
+++ b/karavan-designer/src/designer/route/DslConnections.tsx
@@ -81,8 +81,6 @@ export const DslConnections = () => {
             const lineX2 = fromX - r * 2 + 7;
             const lineY2 = fromY;
 
-            const imageX = incomingX - r + 5;
-            const imageY = fromY - r + 5;
             return (
                 <g key={pos.step.uuid + "-incoming"}>
                     <circle cx={incomingX} cy={fromY} r={r} className="circle-incoming"/>
diff --git a/karavan-designer/src/designer/route/DslElement.tsx b/karavan-designer/src/designer/route/DslElement.tsx
index 19554e03..5cdfabf5 100644
--- a/karavan-designer/src/designer/route/DslElement.tsx
+++ b/karavan-designer/src/designer/route/DslElement.tsx
@@ -45,22 +45,22 @@ interface Props {
 export const DslElement = (props: Props) => {
 
     const ref = React.createRef();
-    const { deleteElement, selectElement, moveElement, onShowDeleteConfirmation, openSelector } = useRouteDesignerHook();
+    const {deleteElement, selectElement, moveElement, onShowDeleteConfirmation, openSelector} = useRouteDesignerHook();
 
     const [integration, setIntegration] = useIntegrationStore((s) => [s.integration, s.setIntegration], shallow)
 
-    const [showDeleteConfirmation, propertyOnly,deleteMessage, selectedUuids,clipboardSteps,selectedStep,showMoveConfirmation,
-        setShowDeleteConfirmation,setPropertyOnly,setDeleteMessage, setSelectedUuids, setClipboardSteps,setPosition,setShowMoveConfirmation,
+    const [showDeleteConfirmation, propertyOnly, deleteMessage, selectedUuids, clipboardSteps, selectedStep, showMoveConfirmation,
+        setShowDeleteConfirmation, setPropertyOnly, setDeleteMessage, setSelectedUuids, setClipboardSteps, setPosition, setShowMoveConfirmation,
         width, height, top, left] = useDesignerStore((s) =>
-        [s.showDeleteConfirmation, s.propertyOnly,s.deleteMessage, s.selectedUuids,s.clipboardSteps, s.selectedStep, s.showMoveConfirmation,
-            s.setShowDeleteConfirmation,s.setPropertyOnly,s.setDeleteMessage, s.setSelectedUuids, s.setClipboardSteps, s.setPosition, s.setShowMoveConfirmation,
+        [s.showDeleteConfirmation, s.propertyOnly, s.deleteMessage, s.selectedUuids, s.clipboardSteps, s.selectedStep, s.showMoveConfirmation,
+            s.setShowDeleteConfirmation, s.setPropertyOnly, s.setDeleteMessage, s.setSelectedUuids, s.setClipboardSteps, s.setPosition, s.setShowMoveConfirmation,
             s.width, s.height, s.top, s.left], shallow)
     const [isDragging, setIsDragging] = useState<boolean>(false);
 
     const [isDraggedOver, setIsDraggedOver] = useState<boolean>(false);
     const [moveElements, setMoveElements] = useState<[string | undefined, string | undefined]>([undefined, undefined]);
 
-    function onOpenSelector (evt: React.MouseEvent, showSteps: boolean = true, isInsert: boolean = false) {
+    function onOpenSelector(evt: React.MouseEvent, showSteps: boolean = true, isInsert: boolean = false) {
         evt.stopPropagation();
         if (isInsert && props.parent) {
             openSelector(props.parent.uuid, props.parent.dslName, showSteps, props.position);
@@ -69,24 +69,24 @@ export const DslElement = (props: Props) => {
         }
     }
 
-    function onDeleteElement (evt: React.MouseEvent) {
+    function onDeleteElement(evt: React.MouseEvent) {
         evt.stopPropagation();
         onShowDeleteConfirmation(props.step.uuid);
     }
 
-    function onSelectElement (evt: React.MouseEvent) {
+    function onSelectElement(evt: React.MouseEvent) {
         evt.stopPropagation();
         selectElement(props.step);
     }
 
-    function dragElement (event: React.DragEvent<HTMLDivElement>, element: CamelElement) {
+    function dragElement(event: React.DragEvent<HTMLDivElement>, element: CamelElement) {
         event.preventDefault();
         event.stopPropagation();
         setIsDraggedOver(false);
         const sourceUuid = event.dataTransfer.getData("text/plain");
         const targetUuid = element.uuid;
         if (sourceUuid !== targetUuid) {
-            if (element.hasSteps()){
+            if (element.hasSteps()) {
                 setShowMoveConfirmation(true);
                 setMoveElements([sourceUuid, targetUuid])
             } else {
@@ -95,7 +95,7 @@ export const DslElement = (props: Props) => {
         }
     }
 
-    function confirmMove (asChild: boolean) {
+    function confirmMove(asChild: boolean) {
         const sourceUuid = moveElements[0];
         const targetUuid = moveElements[1];
         if (sourceUuid && targetUuid && sourceUuid !== targetUuid) {
@@ -104,16 +104,16 @@ export const DslElement = (props: Props) => {
         }
     }
 
-    function cancelMove () {
+    function cancelMove() {
         setShowMoveConfirmation(false);
         setMoveElements([undefined, undefined]);
     }
 
-    function isSelected (): boolean {
+    function isSelected(): boolean {
         return selectedUuids.includes(props.step.uuid);
     }
 
-    function hasBorder (): boolean {
+    function hasBorder(): boolean {
         return (props.step?.hasSteps() && !['FromDefinition'].includes(props.step.dslName))
             || ['RouteConfigurationDefinition',
                 'RouteDefinition',
@@ -122,35 +122,35 @@ export const DslElement = (props: Props) => {
                 'SwitchDefinition'].includes(props.step.dslName);
     }
 
-    function isNotDraggable (): boolean {
+    function isNotDraggable(): boolean {
         return ['FromDefinition', 'RouteConfigurationDefinition', 'RouteDefinition', 'WhenDefinition', 'OtherwiseDefinition'].includes(props.step.dslName);
     }
 
-    function isWide (): boolean {
+    function isWide(): boolean {
         return ['RouteConfigurationDefinition', 'RouteDefinition', 'ChoiceDefinition', 'SwitchDefinition', 'MulticastDefinition', 'TryDefinition', 'CircuitBreakerDefinition']
             .includes(props.step.dslName);
     }
 
-    function isAddStepButtonLeft (): boolean {
+    function isAddStepButtonLeft(): boolean {
         return ['MulticastDefinition']
             .includes(props.step.dslName);
     }
 
-    function isHorizontal (): boolean {
+    function isHorizontal(): boolean {
         return ['MulticastDefinition'].includes(props.step.dslName);
     }
 
-    function isRoot (): boolean {
+    function isRoot(): boolean {
         return ['RouteConfigurationDefinition', 'RouteDefinition'].includes(props.step?.dslName);
     }
 
-    function isInStepWithChildren () {
+    function isInStepWithChildren() {
         const step: CamelElement = props.step;
         const children = CamelDefinitionApiExt.getElementChildrenDefinition(step.dslName);
         return children.filter((c: ChildElement) => c.name === 'steps' || c.multiple).length > 0 && props.inSteps;
     }
 
-    function getChildrenInfo (step: CamelElement): [boolean, number, boolean, number, number] {
+    function getChildrenInfo(step: CamelElement): [boolean, number, boolean, number, number] {
         const children = CamelDefinitionApiExt.getElementChildrenDefinition(step.dslName);
         const hasStepsField = children.filter((c: ChildElement) => c.name === 'steps').length === 1;
         const stepsChildrenCount = children
@@ -170,7 +170,7 @@ export const DslElement = (props: Props) => {
         return [hasStepsField, stepsChildrenCount, hasNonStepsFields, nonStepChildrenCount, childrenCount]
     }
 
-    function hasWideChildrenElement  ()  {
+    function hasWideChildrenElement() {
         const [hasStepsField, stepsChildrenCount, hasNonStepsFields, nonStepChildrenCount, childrenCount] = getChildrenInfo(props.step);
         if (isHorizontal() && stepsChildrenCount > 1) return true;
         else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields && nonStepChildrenCount > 0) return true;
@@ -179,13 +179,13 @@ export const DslElement = (props: Props) => {
         else return false;
     }
 
-    function hasBorderOverSteps  (step: CamelElement)  {
+    function hasBorderOverSteps(step: CamelElement) {
         const [hasStepsField, stepsChildrenCount, hasNonStepsFields, nonStepChildrenCount] = getChildrenInfo(step);
         if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields && nonStepChildrenCount > 0) return true;
         else return false;
     }
 
-    function getHeaderStyle () {
+    function getHeaderStyle() {
         const style: CSSProperties = {
             width: isWide() ? "100%" : "",
             fontWeight: isSelected() ? "bold" : "normal",
@@ -193,7 +193,7 @@ export const DslElement = (props: Props) => {
         return style;
     }
 
-    function sendPosition (el: HTMLDivElement | null, isSelected: boolean) {
+    function sendPosition(el: HTMLDivElement | null, isSelected: boolean) {
         const node = el;
         if (node && el) {
             const header = Array.from(node.childNodes.values()).filter((n: any) => n.classList.contains("header"))[0];
@@ -201,7 +201,6 @@ export const DslElement = (props: Props) => {
                 const headerIcon: any = Array.from(header.childNodes.values()).filter((n: any) => n.classList.contains("header-icon"))[0];
                 const headerRect = headerIcon.getBoundingClientRect();
                 const rect = el.getBoundingClientRect();
-                // if ()
                 if (props.step.show) {
                     EventBus.sendPosition("add", props.step, props.parent, rect, headerRect, props.position, props.inSteps, isSelected);
                 } else {
@@ -211,7 +210,7 @@ export const DslElement = (props: Props) => {
         }
     }
 
-    function getAvailableModels () { // TODO: make static list-of-values instead
+    function getAvailableModels() { // TODO: make static list-of-values instead
         const step: CamelElement = props.step
         return CamelUi.getSelectorModelsForParent(step.dslName, false);
     }
@@ -222,7 +221,7 @@ export const DslElement = (props: Props) => {
     );
 
 
-    function getHeader () {
+    function getHeader() {
         const step: CamelElement = props.step;
         const parent = props.parent;
         const inRouteConfiguration = parent !== undefined && parent.dslName === 'RouteConfigurationDefinition';
@@ -236,9 +235,9 @@ export const DslElement = (props: Props) => {
             <div className={headerClasses} style={getHeaderStyle()}>
                 {!['RouteConfigurationDefinition', 'RouteDefinition'].includes(props.step.dslName) &&
                     <div
-                        // ref={el => sendPosition(el, isSelected())}
-                         className={"header-icon"}
-                         style={isWide() ? {width: ""} : {}}>
+                        ref={el => sendPosition(el, isSelected())}
+                        className={"header-icon"}
+                        style={isWide() ? {width: ""} : {}}>
                         {CamelUi.getIconForElement(step)}
                     </div>
                 }
@@ -253,7 +252,7 @@ export const DslElement = (props: Props) => {
         )
     }
 
-    function getHeaderTextWithTooltip (step: CamelElement) {
+    function getHeaderTextWithTooltip(step: CamelElement) {
         const checkRequired = CamelUtil.checkRequired(step);
         const title = (step as any).description ? (step as any).description : CamelUi.getElementTitle(props.step);
         let className = hasWideChildrenElement() ? "text text-right" : "text text-bottom";
@@ -261,13 +260,13 @@ export const DslElement = (props: Props) => {
         if (checkRequired[0]) return <Text className={className}>{title}</Text>
         else return (
             <Tooltip position={"right"} className="tooltip-required-field"
-                     content={checkRequired[1].map((text, i) =>(<div key={i}>{text}</div>))}>
+                     content={checkRequired[1].map((text, i) => (<div key={i}>{text}</div>))}>
                 <Text className={className}>{title}</Text>
             </Tooltip>
         )
     }
 
-    function getHeaderWithTooltip (tooltip: string | undefined) {
+    function getHeaderWithTooltip(tooltip: string | undefined) {
         return (
             <Tooltip position={"left"}
                      content={<div>{tooltip}</div>}>
@@ -276,13 +275,13 @@ export const DslElement = (props: Props) => {
         )
     }
 
-    function getHeaderTooltip (): string | undefined {
+    function getHeaderTooltip(): string | undefined {
         if (CamelUi.isShowExpressionTooltip(props.step)) return CamelUi.getExpressionTooltip(props.step);
         if (CamelUi.isShowUriTooltip(props.step)) return CamelUi.getUriTooltip(props.step);
         return undefined;
     }
 
-    function getElementHeader () {
+    function getElementHeader() {
         const tooltip = getHeaderTooltip();
         if (tooltip !== undefined && !isDragging) {
             return getHeaderWithTooltip(tooltip);
@@ -290,7 +289,7 @@ export const DslElement = (props: Props) => {
         return getHeader();
     }
 
-    function getChildrenStyle ()  {
+    function getChildrenStyle() {
         const style: CSSProperties = {
             display: "flex",
             flexDirection: "row",
@@ -298,7 +297,7 @@ export const DslElement = (props: Props) => {
         return style;
     }
 
-    function getChildrenElementsStyle (child: ChildElement, notOnlySteps: boolean)  {
+    function getChildrenElementsStyle(child: ChildElement, notOnlySteps: boolean) {
         const step = props.step;
         const isBorder = child.name === 'steps' && hasBorderOverSteps(step);
         const style: CSSProperties = {
@@ -312,7 +311,7 @@ export const DslElement = (props: Props) => {
         return style;
     }
 
-    function getChildElements () {
+    function getChildElements() {
         const step: CamelElement = props.step;
         let children: ChildElement[] = CamelDefinitionApiExt.getElementChildrenDefinition(step.dslName);
         const notOnlySteps = children.filter(c => c.name === 'steps').length === 1
@@ -334,12 +333,13 @@ export const DslElement = (props: Props) => {
         )
     }
 
-    function getChildDslElements (child: ChildElement, index: number, notOnlySteps: boolean) {
+    function getChildDslElements(child: ChildElement, index: number, notOnlySteps: boolean) {
         const step = props.step;
         const children: CamelElement[] = CamelDefinitionApiExt.getElementChildren(step, child);
         if (children.length > 0) {
             return (
-                <div className={child.name + " has-child"} style={getChildrenElementsStyle(child, notOnlySteps)} key={step.uuid + "-child-" + index}>
+                <div className={child.name + " has-child"} style={getChildrenElementsStyle(child, notOnlySteps)}
+                     key={step.uuid + "-child-" + index}>
                     {children.map((element, index) => (
                         <div key={step.uuid + child.className + index}>
                             <DslElement
@@ -354,7 +354,8 @@ export const DslElement = (props: Props) => {
             )
         } else if (child.name === 'steps') {
             return (
-                <div className={child.name + " has-child"} style={getChildrenElementsStyle(child, notOnlySteps)} key={step.uuid + "-child-" + index}>
+                <div className={child.name + " has-child"} style={getChildrenElementsStyle(child, notOnlySteps)}
+                     key={step.uuid + "-child-" + index}>
                     {getAddStepButton()}
                 </div>
             )
@@ -362,7 +363,7 @@ export const DslElement = (props: Props) => {
     }
 
     function getAddStepButton() {
-        const { step} = props;
+        const {step} = props;
         const hideAddButton = step.dslName === 'StepDefinition' && !CamelDisplayUtil.isStepDefinitionExpanded(integration, step.uuid, selectedUuids.at(0));
         if (hideAddButton) return (<></>)
         else return (
@@ -370,7 +371,7 @@ export const DslElement = (props: Props) => {
                      content={<div>{"Add step to " + CamelUi.getTitle(step)}</div>}>
                 <button type="button" aria-label="Add" onClick={e => onOpenSelector(e)}
                         className={isAddStepButtonLeft() ? "add-button add-button-left" : "add-button add-button-bottom"}>
-                    <AddIcon />
+                    <AddIcon/>
                 </button>
             </Tooltip>
         )
@@ -384,7 +385,7 @@ export const DslElement = (props: Props) => {
                     aria-label="Add"
                     onClick={e => onOpenSelector(e, false)}
                     className={"add-element-button"}>
-                    <AddIcon />
+                    <AddIcon/>
                 </button>
             </Tooltip>
         )
@@ -393,7 +394,8 @@ export const DslElement = (props: Props) => {
     function getInsertElementButton() {
         return (
             <Tooltip position={"left"} content={<div>{"Insert element before"}</div>}>
-                <button type="button" aria-label="Insert" onClick={e => onOpenSelector(e, true, true)} className={"insert-element-button"}><InsertIcon />
+                <button type="button" aria-label="Insert" onClick={e => onOpenSelector(e, true, true)}
+                        className={"insert-element-button"}><InsertIcon/>
                 </button>
             </Tooltip>
         )
@@ -402,7 +404,8 @@ export const DslElement = (props: Props) => {
     function getDeleteButton() {
         return (
             <Tooltip position={"right"} content={<div>{"Delete element"}</div>}>
-                <button type="button" aria-label="Delete" onClick={e => onDeleteElement(e)} className="delete-button"><DeleteIcon /></button>
+                <button type="button" aria-label="Delete" onClick={e => onDeleteElement(e)} className="delete-button">
+                    <DeleteIcon/></button>
             </Tooltip>
         )
     }
@@ -417,7 +420,8 @@ export const DslElement = (props: Props) => {
             ><Flex direction={{default: "column"}}>
                 <div>Select move type:</div>
                 <Button key="place" variant="primary" onClick={event => confirmMove(false)}>Shift (target down)</Button>
-                <Button key="child" variant="secondary" onClick={event => confirmMove(true)}>Move as target step</Button>
+                <Button key="child" variant="secondary" onClick={event => confirmMove(true)}>Move as target
+                    step</Button>
                 <Button key="cancel" variant="tertiary" onClick={event => cancelMove()}>Cancel</Button>
             </Flex>
 
diff --git a/karavan-designer/src/designer/route/RouteDesigner.tsx b/karavan-designer/src/designer/route/RouteDesigner.tsx
index d605044a..5e373f0d 100644
--- a/karavan-designer/src/designer/route/RouteDesigner.tsx
+++ b/karavan-designer/src/designer/route/RouteDesigner.tsx
@@ -64,10 +64,17 @@ export const RouteDesigner = () => {
     }, [])
 
     function changeGraphSize ()  {
+        console.log("changeGraphSize")
         if (flowRef && flowRef.current) {
-            const el = flowRef.current.getBoundingClientRect();
-            if (width !== el.width || height !== el.height || top !== el.top || left !== el.left) {
-                setPosition(el.width, el.height, el.top, el.left)
+            const el = flowRef.current;
+            const rect = el.getBoundingClientRect();
+            // if (width !== el.scrollWidth || height !== el.scrollHeight || top !== rect.top || left !== rect.left) {
+            if (width !== rect.width || height !== rect?.height || top !== rect.top || left !== rect.left) {
+                console.log("State", width, height, top, left)
+                console.log("Graph", rect.width, rect.height, rect.top, rect.left)
+                setPosition(rect.width, rect.height, rect.top, rect.left)
+                // setPosition(el?.scrollWidth, el?.scrollHeight, el?.scrollTop, el?.scrollLeft)
+                // setPosition(el?.scrollWidth, el?.scrollHeight, rect.top, rect.left)
             }
         }
     }
@@ -76,10 +83,12 @@ export const RouteDesigner = () => {
     const secondRef = useMutationsObserver(onChangeGraphSize);
     const printerRef = useRef<HTMLDivElement | null>(null);
     const flowRef = useRef<HTMLDivElement | null>(null);
-    const contentRef: React.RefObject<HTMLDivElement> = useRef(null);
 
     useEffect(()=>{
-        window.addEventListener('resize', changeGraphSize);
+        // window.addEventListener('resize', changeGraphSize);
+        const interval = setInterval(() => {
+            changeGraphSize();
+        }, 500);
         window.addEventListener('keydown', handleKeyDown);
         window.addEventListener('keyup', handleKeyUp);
         const commandSub = EventBus.onCommand()?.subscribe((command: Command) => onCommand(command, printerRef));
@@ -89,7 +98,8 @@ export const RouteDesigner = () => {
             changeGraphSize();
         }
         return ()=> {
-            window.removeEventListener('resize', changeGraphSize);
+            clearInterval(interval)
+            // window.removeEventListener('resize', changeGraphSize);
             window.removeEventListener('keydown', handleKeyDown);
             window.removeEventListener('keyup', handleKeyUp);
             commandSub?.unsubscribe();
diff --git a/karavan-designer/src/designer/route/useRouteDesignerHook.tsx b/karavan-designer/src/designer/route/useRouteDesignerHook.tsx
index 4a69a10d..993e45ef 100644
--- a/karavan-designer/src/designer/route/useRouteDesignerHook.tsx
+++ b/karavan-designer/src/designer/route/useRouteDesignerHook.tsx
@@ -107,6 +107,7 @@ export const useRouteDesignerHook = () => {
     }
 
     function copyToClipboard  (): void {
+        console.log("copyToClipboard1", selectedUuids)
         const steps: CamelElement[] = []
         selectedUuids.forEach(selectedUuid => {
             const selectedElement = CamelDefinitionApiExt.findElementInIntegration(integration, selectedUuid);
@@ -115,10 +116,12 @@ export const useRouteDesignerHook = () => {
             }
         })
         if (steps.length > 0) {
+            console.log("copyToClipboard2", steps)
             setClipboardSteps(steps);
         }
     }
     function pasteFromClipboard (): void {
+        console.log("pasteFromClipboard")
         if (clipboardSteps.length === 1 && clipboardSteps[0]?.dslName === 'FromDefinition') {
             const clone = CamelUtil.cloneStep(clipboardSteps[0], true);
             const route = CamelDefinitionApi.createRouteDefinition({from: clone});
@@ -212,29 +215,30 @@ export const useRouteDesignerHook = () => {
     }
 
     const selectElement = (element: CamelElement) =>  {
-        // const {shiftKeyPressed, selectedUuids, integration} = this.routeDesigner.state;
+        // console.log("selectElement", element, selectedUuids)
+        const uuids = [...selectedUuids];
         let canNotAdd: boolean = false;
         if (shiftKeyPressed) {
-            const hasFrom = selectedUuids.map(e => CamelDefinitionApiExt.findElementInIntegration(integration, e)?.dslName === 'FromDefinition').filter(r => r).length > 0;
-            canNotAdd = hasFrom || (selectedUuids.length > 0 && element.dslName === 'FromDefinition');
+            const hasFrom = uuids.map(e => CamelDefinitionApiExt.findElementInIntegration(integration, e)?.dslName === 'FromDefinition').filter(r => r).length > 0;
+            canNotAdd = hasFrom || (uuids.length > 0 && element.dslName === 'FromDefinition');
         }
-        const add = shiftKeyPressed && !selectedUuids.includes(element.uuid);
-        const remove = shiftKeyPressed && selectedUuids.includes(element.uuid);
+        const add = shiftKeyPressed && !uuids.includes(element.uuid);
+        const remove = shiftKeyPressed && uuids.includes(element.uuid);
         // TODO: do we need to change Intgration just for select????
         const i = CamelDisplayUtil.setIntegrationVisibility(integration, element.uuid);
 
         if (remove) {
-            const index = selectedUuids.indexOf(element.uuid);
-            selectedUuids.splice(index, 1);
+            const index = uuids.indexOf(element.uuid);
+            uuids.splice(index, 1);
         } else if (add && !canNotAdd) {
-            selectedUuids.push(element.uuid);
+            uuids.push(element.uuid);
         }
-        const uuid: string = selectedUuids.includes(element.uuid) ? element.uuid : selectedUuids.at(0) || '';
+        const uuid: string = uuids.includes(element.uuid) ? element.uuid : uuids.at(0) || '';
         const selectedElement = shiftKeyPressed ? CamelDefinitionApiExt.findElementInIntegration(integration, uuid) : element;
 
         setIntegration(i);
         setSelectedStep(selectedElement);
-        setSelectedUuids(shiftKeyPressed ? [...selectedUuids] : [element.uuid])
+        setSelectedUuids(shiftKeyPressed ? [...uuids] : [element.uuid])
     }
     //
     // function unselectElement = (evt: React.MouseEvent<HTMLDivElement, MouseEvent>) => {