+ {
+ setViewport({
+ x: (clientWidth - 400 - nodeWidth * zoom) / 2 - nodePosition.x * zoom,
+ y: (clientHeight - nodeHeight * zoom) / 2 - nodePosition.y * zoom,
+ zoom: transform[2],
+ })
+ doSyncWorkflowDraft()
+ }}
+ >
+
+
+
+ )
+}
+
+export default memo(NodePosition)
diff --git a/web/app/components/workflow/nodes/_base/panel.tsx b/web/app/components/workflow/nodes/_base/panel.tsx
index 2ee39a3b06..49c61b3416 100644
--- a/web/app/components/workflow/nodes/_base/panel.tsx
+++ b/web/app/components/workflow/nodes/_base/panel.tsx
@@ -16,6 +16,7 @@ import { useTranslation } from 'react-i18next'
import NextStep from './components/next-step'
import PanelOperator from './components/panel-operator'
import HelpLink from './components/help-link'
+import NodePosition from './components/node-position'
import {
DescriptionInput,
TitleInput,
@@ -55,6 +56,9 @@ const BasePanel: FC