// SPDX-License-Identifier: MIT // Copyright contributors to the openassistant project import { Button } from '@heroui/button'; import { useDraggable } from '@heroui/use-draggable'; import { Popover, PopoverContent, PopoverTrigger } from '@heroui/popover'; import { cloneElement, DragEventHandler, useRef, useState } from 'react'; import { Icon } from '@iconify/react'; import { EChartsSkeleton } from './echarts-skeleton'; export const ExpandableContainer = ({ children, isHovered, draggable = false, onDragStart, onExpanded, }: { children: JSX.Element; isHovered?: boolean; draggable?: boolean; onDragStart?: DragEventHandler; onExpanded?: (isExpanded: boolean) => void; }) => { const targetRef = useRef(null); const [isExpanded, setIsExpanded] = useState(false); const { moveProps } = useDraggable({ targetRef, isDisabled: !isExpanded }); const onExpandComponent = () => { const newExpandedState = !isExpanded; setIsExpanded(newExpandedState); onExpanded?.(newExpandedState); }; return (
{!isExpanded ? ( cloneElement(children, { isExpanded: false, setIsExpanded: setIsExpanded, }) ) : ( )}
{draggable && ( )} {isExpanded && (
{cloneElement(children, { isExpanded: true, isHovered: true, })}
)}
); };