import { TreeItem } from "../pisellDraggable/types.js";
import { Props } from "../pisellDraggable/components/TreeItem/TreeItem.js";
import { CSSProperties } from "react";

//#region src/components/pisellDropSort/types.d.ts
interface DropSortItem extends TreeItem {
  [key: string]: any;
}
interface PisellDropSortProps {
  /** value */
  value: DropSortItem[];
  /** 允许拖拽 */
  allowDrag?: boolean;
  /** 允许删除 */
  allowDelete?: boolean;
  /** 允许添加子节点 */
  allowAddChild?: boolean;
  /** 允许添加根节点 */
  allowAddRoot?: boolean;
  /** 是否允许显示隐藏 */
  allowIsShow?: boolean;
  /** 是否禁用 */
  disabled?: boolean;
  /** 节点间距 */
  spacing?: number;
  /** 最大层级数 */
  maxLevel?: number;
  /** 是否显示边框 */
  showBorder?: boolean;
  /** 样式 */
  style?: CSSProperties;
  /** 类名 */
  className?: string;
  /** 数据源变化回调 */
  onChange?: (items: DropSortItem[]) => void;
  /** 删除节点回调 */
  onDelete?: (itemProps: Props) => void;
  /** 添加节点回调 */
  onAdd?: (itemProps: Props) => void;
  /** 自定义渲染节点 */
  renderItem?: (itemProps: Props) => React.ReactNode;
  /** 添加根节点回调 */
  onAddRoot?: () => void;
  /** 左侧自定义内容 */
  leftContent?: React.ReactNode;
  /** 右侧自定义内容 */
  rightContent?: React.ReactNode;
  /** 空状态自定义内容 */
  emptyContent?: React.ReactNode;
  /** 设计模式 */
  __designMode?: string;
  /** 是否自定义操作 */
  isCustomAction?: boolean;
  /** 获取item样式 */
  getItemStyle?: (itemProps: Props) => React.CSSProperties;
  /** 自定义拖拽判断函数，返回false时阻止拖拽 */
  canDrop?: (dragItem: DropSortItem, dropTarget: DropSortItem, parentId: string | number | null) => boolean;
  /** 节点缩进宽度 */
  indentationWidth?: number;
}
//#endregion
export { DropSortItem, PisellDropSortProps };