/** * SPDX-FileCopyrightText: © 2021 Liferay, Inc. * SPDX-License-Identifier: BSD-3-Clause */ import React, { Key } from 'react'; import type { ChildrenFunction } from './Collection'; import type { ITreeState } from './useTree'; export declare type Icons = { open: React.ReactElement; close: React.ReactElement; }; declare type LoadMoreCursor = { cursor: unknown; items: Array; }; export declare type OnLoadMore = (item: T, cursor?: any) => Promise | undefined> | Promise; export declare type MoveItemIndex = { next: number; previous: number; }; export interface ITreeViewContext> extends ITreeState { childrenRoot: React.MutableRefObject | null>; dragAndDrop?: boolean; expandDoubleClick?: boolean; expandOnCheck?: boolean; expanderClassName?: string; expanderIcons?: Icons; nestedKey?: string; onItemMove?: (item: T, parentItem: T, index: MoveItemIndex) => boolean; onItemHover?: (item: T, parentItem: T, index: MoveItemIndex) => boolean; onLoadMore?: OnLoadMore; onSelect?: (item: T) => void; onRenameItem?: (item: T) => Promise; rootRef: React.RefObject; selectionMode?: 'single' | 'multiple' | 'multiple-recursive' | null; showExpanderOnHover?: boolean; } export declare const TreeViewContext: React.Context>; export declare function useTreeViewContext(): ITreeViewContext>; declare type SelectionToggleOptions = { selectionMode?: 'single' | 'multiple' | 'multiple-recursive' | null; parentSelection?: boolean; }; export declare type Selection = { toggle: (key: Key, options?: SelectionToggleOptions) => void; has: (key: Key) => boolean; }; export declare type Expand = { toggle: (key: Key) => void; has: (key: Key) => boolean; }; export declare type LoadMore = { get: (key: Key) => any; loadMore: >(id: React.Key, item: T, willToggle?: boolean) => Promise | undefined; }; export declare function useAPI(): [Selection, Expand, LoadMore]; export {};