import React, { cloneElement, HTMLAttributes, isValidElement, MutableRefObject, ReactElement, ReactNode, } from 'react'; import { NestedTableDragAndDropState } from './NestedTableDragAndDropState'; import { NestedTableDragAndDropOverlayPopover } from './NestedTableDragAndDropOverlayPopover'; import { MultipleDragOverlayEffect } from './MultipleDragOverlayEffect'; import { observer } from 'mobx-react-lite'; export interface NestedTableDragAndDropOverlayProps extends HTMLAttributes { children?: ReactNode; state: NestedTableDragAndDropState; innerRef?: | ((instance: HTMLDivElement | null) => void) | MutableRefObject | null; } function _NestedTableDragAndDropOverlay( props: NestedTableDragAndDropOverlayProps, ) { const { state, children, innerRef, style, ...rest } = props; const { activeNode } = state; return (
{activeNode && !activeNode.collection.result.isEmpty && ( )} {isValidElement(children) ? cloneElement( children as ReactElement>, { style: { ...children.props.style, opacity: style?.opacity, }, }, ) : children}
); } export const NestedTableDragAndDropOverlay = observer( _NestedTableDragAndDropOverlay, );