From 0ae2d2b63117e7a4befdd96809a06b3379f957cf Mon Sep 17 00:00:00 2001 From: hjlarry Date: Fri, 7 Nov 2025 09:27:49 +0800 Subject: [PATCH] can't zoomOnPinch when mouse over comment preview --- web/app/components/workflow/comment/comment-preview.tsx | 9 ++++++++- web/app/components/workflow/index.tsx | 3 ++- .../components/workflow/store/workflow/workflow-slice.ts | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/web/app/components/workflow/comment/comment-preview.tsx b/web/app/components/workflow/comment/comment-preview.tsx index 3e5f0a0834..be43434dd5 100644 --- a/web/app/components/workflow/comment/comment-preview.tsx +++ b/web/app/components/workflow/comment/comment-preview.tsx @@ -1,10 +1,11 @@ 'use client' import type { FC } from 'react' -import { memo, useMemo } from 'react' +import { memo, useEffect, useMemo } from 'react' import { UserAvatarList } from '@/app/components/base/user-avatar-list' import type { WorkflowCommentList } from '@/service/workflow-comment' import { useFormatTimeFromNow } from '@/hooks/use-format-time-from-now' +import { useStore } from '../store' type CommentPreviewProps = { comment: WorkflowCommentList @@ -13,6 +14,7 @@ type CommentPreviewProps = { const CommentPreview: FC = ({ comment, onClick }) => { const { formatTimeFromNow } = useFormatTimeFromNow() + const setCommentPreviewHovering = useStore(s => s.setCommentPreviewHovering) const participants = useMemo(() => { const list = comment.participants ?? [] const author = comment.created_by_account @@ -21,11 +23,16 @@ const CommentPreview: FC = ({ comment, onClick }) => { const rest = list.filter(user => user.id !== author.id) return [author, ...rest] }, [comment.created_by_account, comment.participants]) + useEffect(() => () => { + setCommentPreviewHovering(false) + }, [setCommentPreviewHovering]) return (
setCommentPreviewHovering(true)} + onMouseLeave={() => setCommentPreviewHovering(false)} >
= memo(({ } = useWorkflowComment() const showUserComments = useStore(s => s.showUserComments) const showUserCursors = useStore(s => s.showUserCursors) + const isCommentPreviewHovering = useStore(s => s.isCommentPreviewHovering) const { t } = useTranslation() eventEmitter?.useSubscription((v: any) => { @@ -535,7 +536,7 @@ export const Workflow: FC = memo(({ edgesFocusable={!nodesReadOnly} panOnScroll={false} panOnDrag={controlMode === ControlMode.Hand} - zoomOnPinch={true} + zoomOnPinch={!isCommentPreviewHovering} zoomOnScroll={true} zoomOnDoubleClick={true} isValidConnection={isValidConnection} diff --git a/web/app/components/workflow/store/workflow/workflow-slice.ts b/web/app/components/workflow/store/workflow/workflow-slice.ts index e0463bb8cc..e206756f0c 100644 --- a/web/app/components/workflow/store/workflow/workflow-slice.ts +++ b/web/app/components/workflow/store/workflow/workflow-slice.ts @@ -32,6 +32,8 @@ export type WorkflowSliceShape = { setPendingComment: (pendingComment: WorkflowSliceShape['pendingComment']) => void mousePosition: MousePosition setMousePosition: (mousePosition: WorkflowSliceShape['mousePosition']) => void + isCommentPreviewHovering: boolean + setCommentPreviewHovering: (hovering: boolean) => void showConfirm?: { title: string; desc?: string; onConfirm: () => void } setShowConfirm: (showConfirm: WorkflowSliceShape['showConfirm']) => void controlPromptEditorRerenderKey: number @@ -66,6 +68,8 @@ export const createWorkflowSlice: StateCreator = set => ({ setPendingComment: pendingComment => set(() => ({ pendingComment })), mousePosition: { pageX: 0, pageY: 0, elementX: 0, elementY: 0 }, setMousePosition: mousePosition => set(() => ({ mousePosition })), + isCommentPreviewHovering: false, + setCommentPreviewHovering: hovering => set(() => ({ isCommentPreviewHovering: hovering })), showConfirm: undefined, setShowConfirm: showConfirm => set(() => ({ showConfirm })), controlPromptEditorRerenderKey: 0,