import { useDraggable } from '@dnd-kit/core'; import { useMemo } from 'react'; import { StyledCollapse, StyledTreeNodeContainer, StyledTreeNodeWrapper, } from './styles'; import { NodeLine, TreeNodeItem, TreeNodeItemWithDnd } from './tree-node-inner'; import type { TreeNodeProps } from './types'; export const TreeNodeWithDnd = ( props: TreeNodeProps ) => { const { draggingId, node, allowDrop } = props; const { attributes, listeners, setNodeRef } = useDraggable({ id: props.node.id, }); const isDragging = useMemo( () => draggingId === node.id, [draggingId, node.id] ); return ( ); }; export const TreeNode = ({ node, index, allowDrop = true, ...otherProps }: TreeNodeProps) => { const { indent, enableDnd, collapsedIds } = otherProps; const collapsed = collapsedIds.includes(node.id); const { renderTopLine = true, renderBottomLine = true } = node; return ( <> {enableDnd && renderTopLine && index === 0 && ( )} {enableDnd ? ( ) : ( )} {enableDnd && renderBottomLine && (!node.children?.length || collapsed) && ( )} {node.children && node.children.map((childNode, index) => enableDnd ? ( ) : ( ) )} ); };