mirror of
https://github.com/langgenius/dify.git
synced 2026-05-06 02:18:08 +08:00
chore: remove sync from left panel tree
This commit is contained in:
@ -13,8 +13,7 @@ import Loading from '@/app/components/base/loading'
|
|||||||
import TreeGuideLines from '@/app/components/workflow/skill/file-tree/tree-guide-lines'
|
import TreeGuideLines from '@/app/components/workflow/skill/file-tree/tree-guide-lines'
|
||||||
import { useSkillAssetTreeData } from '@/app/components/workflow/skill/hooks/use-skill-asset-tree'
|
import { useSkillAssetTreeData } from '@/app/components/workflow/skill/hooks/use-skill-asset-tree'
|
||||||
import { getFileIconType } from '@/app/components/workflow/skill/utils/file-utils'
|
import { getFileIconType } from '@/app/components/workflow/skill/utils/file-utils'
|
||||||
import { findNodeById, getAncestorIds, toOpensObject } from '@/app/components/workflow/skill/utils/tree-utils'
|
import { findNodeById, getAncestorIds } from '@/app/components/workflow/skill/utils/tree-utils'
|
||||||
import { useStore, useWorkflowStore } from '@/app/components/workflow/store'
|
|
||||||
import { cn } from '@/utils/classnames'
|
import { cn } from '@/utils/classnames'
|
||||||
|
|
||||||
type FilePickerTreeNodeProps = NodeRendererProps<TreeNodeData> & {
|
type FilePickerTreeNodeProps = NodeRendererProps<TreeNodeData> & {
|
||||||
@ -110,24 +109,20 @@ FilePickerTreeNode.displayName = 'FilePickerTreeNode'
|
|||||||
type FilePickerPanelProps = {
|
type FilePickerPanelProps = {
|
||||||
onSelectNode: (node: TreeNodeData) => void
|
onSelectNode: (node: TreeNodeData) => void
|
||||||
focusNodeId?: string
|
focusNodeId?: string
|
||||||
syncExpandedState?: boolean
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const FilePickerPanel: FC<FilePickerPanelProps> = ({
|
const FilePickerPanel: FC<FilePickerPanelProps> = ({
|
||||||
onSelectNode,
|
onSelectNode,
|
||||||
focusNodeId,
|
focusNodeId,
|
||||||
syncExpandedState = true,
|
|
||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation('workflow')
|
const { t } = useTranslation('workflow')
|
||||||
const { data: treeData, isLoading, error } = useSkillAssetTreeData()
|
const { data: treeData, isLoading, error } = useSkillAssetTreeData()
|
||||||
const expandedFolderIds = useStore(s => s.expandedFolderIds)
|
|
||||||
const storeApi = useWorkflowStore()
|
|
||||||
const containerRef = useRef<HTMLDivElement>(null)
|
const containerRef = useRef<HTMLDivElement>(null)
|
||||||
const containerSize = useSize(containerRef)
|
const containerSize = useSize(containerRef)
|
||||||
|
|
||||||
const treeNodes = useMemo(() => treeData?.children || [], [treeData?.children])
|
const treeNodes = useMemo(() => treeData?.children || [], [treeData?.children])
|
||||||
const initialOpenState = useMemo(() => {
|
const initialOpenState = useMemo(() => {
|
||||||
const nextState = syncExpandedState ? toOpensObject(expandedFolderIds) : {}
|
const nextState: Record<string, boolean> = {}
|
||||||
if (!focusNodeId || treeNodes.length === 0)
|
if (!focusNodeId || treeNodes.length === 0)
|
||||||
return nextState
|
return nextState
|
||||||
|
|
||||||
@ -138,7 +133,7 @@ const FilePickerPanel: FC<FilePickerPanelProps> = ({
|
|||||||
nextState[focusNode.id] = true
|
nextState[focusNode.id] = true
|
||||||
|
|
||||||
return nextState
|
return nextState
|
||||||
}, [expandedFolderIds, focusNodeId, syncExpandedState, treeNodes])
|
}, [focusNodeId, treeNodes])
|
||||||
|
|
||||||
const renderNode = useCallback((props: NodeRendererProps<TreeNodeData>) => (
|
const renderNode = useCallback((props: NodeRendererProps<TreeNodeData>) => (
|
||||||
<FilePickerTreeNode {...props} onSelectNode={onSelectNode} />
|
<FilePickerTreeNode {...props} onSelectNode={onSelectNode} />
|
||||||
@ -188,10 +183,6 @@ const FilePickerPanel: FC<FilePickerPanelProps> = ({
|
|||||||
overscanCount={5}
|
overscanCount={5}
|
||||||
openByDefault={false}
|
openByDefault={false}
|
||||||
initialOpenState={initialOpenState}
|
initialOpenState={initialOpenState}
|
||||||
onToggle={(id) => {
|
|
||||||
if (syncExpandedState)
|
|
||||||
storeApi.getState().toggleFolder(id)
|
|
||||||
}}
|
|
||||||
disableDrag
|
disableDrag
|
||||||
disableDrop
|
disableDrop
|
||||||
>
|
>
|
||||||
|
|||||||
@ -83,7 +83,6 @@ const FileReferenceBlock: FC<FileReferenceBlockProps> = ({ nodeKey, resourceId }
|
|||||||
<FilePickerPanel
|
<FilePickerPanel
|
||||||
onSelectNode={handleSelect}
|
onSelectNode={handleSelect}
|
||||||
focusNodeId={resourceId}
|
focusNodeId={resourceId}
|
||||||
syncExpandedState={false}
|
|
||||||
/>
|
/>
|
||||||
</PortalToFollowElemContent>
|
</PortalToFollowElemContent>
|
||||||
</PortalToFollowElem>
|
</PortalToFollowElem>
|
||||||
|
|||||||
Reference in New Issue
Block a user