import { WindowActionsEvent as KendoWindowActionsEvent } from "@progress/kendo-react-dialogs";

export interface WindowProps {
  dataTestId?: string;
  children?: React.ReactNode;
  appendTo?: null | HTMLElement;
  className?: string;
  closeButton?: React.ComponentType<any>;
  doubleClickStageChange?: boolean;
  draggable?: boolean;
  height?: number;
  initialHeight?: number;
  initialLeft?: number;
  initialTop?: number;
  initialWidth?: number;
  left?: number;
  maximizeButton?: React.ComponentType<any>;
  minHeight?: number;
  minimizeButton?: React.ComponentType<any>;
  minWidth?: number;
  modal?: boolean;
  overlayStyle?: React.CSSProperties;
  resizable?: boolean;
  restoreButton?: React.ComponentType<any>;
  shouldUpdateOnDrag?: boolean;
  stage?: "DEFAULT" | "MINIMIZED" | "FULLSCREEN";
  style?: React.CSSProperties;
  themeColor?: "dark" | "light" | "primary";
  title?: React.ReactNode;
  top?: number;
  width?: number;
  onClose?: (event: KendoWindowActionsEvent) => void;
  onMove?: (event: WindowMoveEvent) => void;
  onResize?: (event: WindowMoveEvent) => void;
  onStageChange?: (event: KendoWindowActionsEvent) => void;
}

interface WindowActionsEvent {
  nativeEvent: any;
  state?: "DEFAULT" | "MINIMIZED" | "FULLSCREEN";
  syntheticEvent: React.SyntheticEvent<any>;
  target: WindowHandle;
}

interface WindowHandle {
  draggable: "null" | DraggableHandle;
  element?: "null" | HTMLDivElement;
  props: Readonly<WindowProps>;
  windowElement?: "null" | HTMLDivElement;
}

interface DraggableHandle {}

interface WindowMoveEvent {}
