import type { CheckStrategy, TreeNode } from 'treemate'; import type { HTMLAttributes, Ref, VNodeChild } from 'vue'; import type { VirtualListScrollTo } from 'vueuc'; import type { MergedTheme } from '../../_mixins'; import type { TreeTheme } from '../styles'; export type Key = string | number; export type OnLoad = (node: TreeOption) => Promise; export interface TreeOptionBase { key?: Key; label?: string; checkboxDisabled?: boolean; disabled?: boolean; isLeaf?: boolean; children?: TreeOption[]; prefix?: () => VNodeChild; suffix?: () => VNodeChild; } export type TreeOption = TreeOptionBase & Record; export type TreeOptions = TreeOption[]; export interface TreeRenderProps { option: TreeOption; checked: boolean; selected: boolean; } type RenderTreePart = ({ option, checked, selected }: TreeRenderProps) => VNodeChild; export type RenderLabel = RenderTreePart; export type RenderPrefix = RenderTreePart; export type RenderSuffix = RenderTreePart; export type TreeOverrideNodeClickBehaviorReturn = 'toggleSelect' | 'toggleExpand' | 'toggleCheck' | 'default' | 'none'; export type TreeOverrideNodeClickBehavior = (info: { option: TreeOption; }) => TreeOverrideNodeClickBehaviorReturn; export type TreeNodeProps = (info: { option: TreeOption; }) => HTMLAttributes & Record; export interface TreeDragInfo { event: DragEvent; node: TreeOption; } export interface TreeDropInfo { event: DragEvent; node: TreeOption; dragNode: TreeOption; dropPosition: 'before' | 'inside' | 'after'; } export interface InternalDragInfo { event: DragEvent; node: TmNode; } export type DropPosition = 'before' | 'inside' | 'after'; export type AllowDrop = (info: { dropPosition: DropPosition; node: TreeOption; phase: 'drag' | 'drop'; }) => boolean; export interface InternalDropInfo { event: DragEvent; node: TmNode; dropPosition: DropPosition; } export type RenderSwitcherIcon = (props: { expanded: boolean; selected: boolean; option: TreeOption; }) => VNodeChild; export type CheckOnClick = (option: TreeOption) => boolean; export interface TreeInjection { loadingKeysRef: Ref>; highlightKeySetRef: Ref | null>; displayedCheckedKeysRef: Ref; displayedIndeterminateKeysRef: Ref; mergedSelectedKeysRef: Ref; mergedExpandedKeysRef: Ref; fNodesRef: Ref>>; draggableRef: Ref; mergedThemeRef: Ref>; onLoadRef: Ref; blockLineRef: Ref; indentRef: Ref; draggingNodeRef: Ref; droppingMouseNodeRef: Ref; droppingNodeParentRef: Ref; droppingPositionRef: Ref; droppingOffsetLevelRef: Ref; disabledRef: Ref; checkableRef: Ref; cascadeRef: Ref; mergedCheckStrategyRef: Ref; selectableRef: Ref; expandOnClickRef: Ref; pendingNodeKeyRef: Ref; internalScrollableRef: Ref; internalCheckboxFocusableRef: Ref; renderLabelRef: Ref; renderPrefixRef: Ref; renderSuffixRef: Ref; renderSwitcherIconRef: Ref; labelFieldRef: Ref; nodePropsRef: Ref; multipleRef: Ref; checkboxPlacementRef: 'left' | 'right'; internalTreeSelect: boolean; checkOnClickRef: Ref; disabledFieldRef: Ref; showLineRef: Ref; overrideDefaultNodeClickBehaviorRef: Ref; handleSwitcherClick: (node: TreeNode) => void; handleSelect: (node: TreeNode) => void; handleCheck: (node: TreeNode, checked: boolean) => void; handleDragStart: (info: InternalDragInfo) => void; handleDragEnter: (info: InternalDragInfo) => void; handleDragLeave: (info: InternalDragInfo) => void; handleDragEnd: (info: InternalDragInfo) => void; handleDragOver: (info: InternalDragInfo) => void; handleDrop: (info: InternalDropInfo) => void; } export declare const treeInjectionKey: import("vue").InjectionKey; export type TmNode = TreeNode; export interface MotionData { __motion: true; height: number | undefined; mode: 'expand' | 'collapse'; nodes: TmNode[]; } export interface InternalTreeInst { handleKeydown: (e: KeyboardEvent) => { enterBehavior: TreeOverrideNodeClickBehaviorReturn | null; }; } export interface TreeInst { scrollTo: VirtualListScrollTo; getCheckedData: () => { keys: Key[]; options: Array; }; getIndeterminateData: () => { keys: Key[]; options: Array; }; } export type GetChildren = (option: any) => unknown; export {};