import { useDroppable } from '@dnd-kit/core'; import { StyledNodeLine } from './styles'; import type { NodeLIneProps, TreeNodeItemProps } from './types'; export const NodeLine = ({ node, allowDrop = true, isTop = false, }: NodeLIneProps) => { const { isOver, setNodeRef } = useDroppable({ id: `${node.id}-${isTop ? 'top' : 'bottom'}-line`, disabled: !allowDrop, data: { node, position: { topLine: isTop, bottomLine: !isTop, internal: false, }, }, }); return ( ); }; export const TreeNodeItemWithDnd = ({ node, allowDrop, setCollapsed, ...otherProps }: TreeNodeItemProps) => { const { onAdd, onDelete } = otherProps; const { isOver, setNodeRef } = useDroppable({ id: node.id, disabled: !allowDrop, data: { node, position: { topLine: false, bottomLine: false, internal: true, }, }, }); return (
); }; export const TreeNodeItem = ({ node, collapsed, setCollapsed, selectedId, isOver = false, onAdd, onDelete, disableCollapse, allowDrop = true, }: TreeNodeItemProps) => { return ( <> {node.render?.(node, { isOver: isOver && allowDrop, onAdd: () => onAdd?.(node.id), onDelete: () => onDelete?.(node.id), collapsed, setCollapsed, isSelected: selectedId === node.id, disableCollapse, })} ); };