import { FC, ReactNode } from 'react';

import { findModule } from '../webpack';
import { DialogCommonProps } from './Dialog';
import { FooterLegendProps } from './FooterLegend';

export interface DialogCheckboxProps extends DialogCommonProps, FooterLegendProps {
  onChange?(checked: boolean): void;
  label?: ReactNode;
  description?: ReactNode;
  disabled?: boolean;
  tooltip?: string;
  color?: string;
  highlightColor?: string;
  bottomSeparator?: 'standard' | 'thick' | 'none';
  controlled?: boolean;
  checked?: boolean;
  onClick?(evt: Event): void;
}

export const DialogCheckbox = Object.values(findModule((m: any) => {
  if (typeof m !== 'object') return false;
  for (const prop in m) {
    if (m[prop]?.prototype?.GetPanelElementProps) return true;
  }
  return false;
})).find((m: any) =>
  m.contextType &&
  m.prototype?.render.toString().includes('fallback:') &&
  m?.prototype?.SetChecked &&
  m?.prototype?.Toggle &&
  m?.prototype?.GetPanelElementProps
) as FC<DialogCheckboxProps>;
