'use strict';

require('../../../utils/index.cjs');
var vueTypes = require('../../../utils/vue/vueTypes.cjs');

const treeNodeProps = {
  eventKey: [String, Number],
  // Pass by parent `cloneElement`
  prefixCls: String,
  // By parent
  // expanded: { type: Boolean, default: undefined },
  // selected: { type: Boolean, default: undefined },
  // checked: { type: Boolean, default: undefined },
  // loaded: { type: Boolean, default: undefined },
  // loading: { type: Boolean, default: undefined },
  // halfChecked: { type: Boolean, default: undefined },
  // dragOver: { type: Boolean, default: undefined },
  // dragOverGapTop: { type: Boolean, default: undefined },
  // dragOverGapBottom: { type: Boolean, default: undefined },
  // pos: String,
  title: vueTypes.default.any,
  /** New added in Tree for easy data access */
  data: { type: Object, default: void 0 },
  parent: { type: Object, default: void 0 },
  isStart: { type: Array },
  isEnd: { type: Array },
  active: { type: Boolean, default: void 0 },
  onMousemove: { type: Function },
  // By user
  isLeaf: { type: Boolean, default: void 0 },
  checkable: { type: Boolean, default: void 0 },
  selectable: { type: Boolean, default: void 0 },
  disabled: { type: Boolean, default: void 0 },
  disableCheckbox: { type: Boolean, default: void 0 },
  icon: vueTypes.default.any,
  switcherIcon: vueTypes.default.any,
  domRef: { type: Function }
};
const nodeListProps = {
  prefixCls: { type: String },
  // data: { type: Array as PropType<FlattenNode[]> },
  motion: { type: Object },
  focusable: { type: Boolean },
  activeItem: { type: Object },
  focused: { type: Boolean },
  tabindex: { type: Number },
  checkable: { type: Boolean },
  selectable: { type: Boolean },
  disabled: { type: Boolean },
  // expandedKeys: { type: Array as PropType<Key[]> },
  // selectedKeys: { type: Array as PropType<Key[]> },
  // checkedKeys: { type: Array as PropType<Key[]> },
  // loadedKeys: { type: Array as PropType<Key[]> },
  // loadingKeys: { type: Array as PropType<Key[]> },
  // halfCheckedKeys: { type: Array as PropType<Key[]> },
  // keyEntities: { type: Object as PropType<Record<Key, DataEntity<DataNode>>> },
  // dragging: { type: Boolean as PropType<boolean> },
  // dragOverNodeKey: { type: [String, Number] as PropType<Key> },
  // dropPosition: { type: Number as PropType<number> },
  // Virtual list
  height: { type: Number },
  itemHeight: { type: Number },
  virtual: { type: Boolean },
  onScroll: { type: Function },
  onKeydown: { type: Function },
  onFocus: { type: Function },
  onBlur: { type: Function },
  onActiveChange: { type: Function },
  onContextmenu: { type: Function },
  onListChangeStart: { type: Function },
  onListChangeEnd: { type: Function }
};
function treeProps() {
  return {
    prefixCls: String,
    focusable: { type: Boolean, default: void 0 },
    activeKey: [Number, String],
    tabindex: Number,
    children: vueTypes.default.any,
    treeData: { type: Array },
    // Generate treeNode by children
    fieldNames: { type: Object },
    showLine: {
      type: [Boolean, Object],
      default: void 0
    },
    showIcon: { type: Boolean, default: void 0 },
    icon: vueTypes.default.any,
    selectable: { type: Boolean, default: void 0 },
    expandAction: [String, Boolean],
    disabled: { type: Boolean, default: void 0 },
    multiple: { type: Boolean, default: void 0 },
    checkable: { type: Boolean, default: void 0 },
    checkStrictly: { type: Boolean, default: void 0 },
    draggable: { type: [Function, Boolean] },
    defaultExpandParent: { type: Boolean, default: void 0 },
    autoExpandParent: { type: Boolean, default: void 0 },
    defaultExpandAll: { type: Boolean, default: void 0 },
    defaultExpandedKeys: { type: Array },
    expandedKeys: { type: Array },
    defaultCheckedKeys: { type: Array },
    checkedKeys: {
      type: [Object, Array]
    },
    defaultSelectedKeys: { type: Array },
    selectedKeys: { type: Array },
    allowDrop: { type: Function },
    dropIndicatorRender: {
      type: Function
    },
    onFocus: { type: Function },
    onBlur: { type: Function },
    onKeydown: { type: Function },
    onContextmenu: { type: Function },
    onClick: { type: Function },
    onDblclick: { type: Function },
    onScroll: { type: Function },
    onExpand: {
      type: Function
    },
    onCheck: {
      type: Function
    },
    onSelect: {
      type: Function
    },
    onLoad: {
      type: Function
    },
    loadData: { type: Function },
    loadedKeys: { type: Array },
    onMouseenter: { type: Function },
    onMouseleave: { type: Function },
    onRightClick: {
      type: Function
    },
    onDragstart: { type: Function },
    onDragenter: {
      type: Function
    },
    onDragover: { type: Function },
    onDragleave: { type: Function },
    onDragend: { type: Function },
    onDrop: {
      type: Function
    },
    /**
     * Used for `rc-tree-select` only.
     * Do not use in your production code directly since this will be refactor.
     */
    onActiveChange: { type: Function },
    filterTreeNode: { type: Function },
    motion: vueTypes.default.any,
    switcherIcon: vueTypes.default.any,
    // Virtual List
    height: Number,
    itemHeight: Number,
    virtual: { type: Boolean, default: void 0 },
    // direction for drag logic
    direction: { type: String },
    rootClassName: String,
    rootStyle: Object
  };
}

exports.nodeListProps = nodeListProps;
exports.treeNodeProps = treeNodeProps;
exports.treeProps = treeProps;
//# sourceMappingURL=props.cjs.map
