/** * SPDX-FileCopyrightText: (c) 2026 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */ import React, { Key } from 'react'; import { Position } from './DragAndDrop'; import type { ChildrenFunction } from './Collection'; import type { ITreeState } from './useTree'; export declare type Icons = { close: React.ReactElement; open: 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; dragAndDropMode: 'single' | 'multiple'; dragHandlerVisibility?: 'visible' | 'keyboard'; expandDoubleClick?: boolean; expandOnCheck?: boolean; expanderClassName?: string; expanderIcons?: Icons; itemNameKey?: string; nestedKey?: string; onItemHover?: (items: T | Set, parentItem: T, index: MoveItemIndex, position: Position) => boolean; onItemInvalidMove?: () => void; onItemMove?: (items: T | Set, parentItem: T, index: MoveItemIndex) => boolean; onLoadMore?: OnLoadMore; onRenameItem?: (item: T) => Promise; onSelect?: (item: T) => void; rootRef: React.RefObject; selectionMode?: 'single' | 'multiple' | 'multiple-recursive' | null; showExpanderOnHover?: boolean; spritemap?: string; } export declare const TreeViewContext: React.Context>; export declare function useTreeViewContext(): ITreeViewContext>; declare type SelectionToggleOptions = { parentSelection?: boolean; selectionMode?: 'single' | 'multiple' | 'multiple-recursive' | null; }; export declare type Selection = { has: (key: Key) => boolean; toggle: (key: Key, options?: SelectionToggleOptions) => void; }; export declare type Expand = { has: (key: Key) => boolean; toggle: (key: Key) => void; }; 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 {};