UNPKG

dnd-kit-tree

Version:
82 lines (77 loc) 3.49 kB
import { UniqueIdentifier } from '@dnd-kit/core'; import { RefObject, CSSProperties, ForwardedRef, HTMLAttributes, ReactNode } from 'react'; import * as react_jsx_runtime from 'react/jsx-runtime'; type TreeItem<T = unknown> = { data?: T; id: UniqueIdentifier; children: TreeItem<T>[]; collapsed?: boolean; }; type TreeItems<T = unknown> = TreeItem<T>[]; interface FlattenedItem<T> extends TreeItem<T> { parentId: UniqueIdentifier | null; depth: number; index: number; } type SensorContext = RefObject<{ items: FlattenedItem<unknown>[]; offset: number; }>; interface RenderItemProps<T> { node: FlattenedItem<T>; depth: number; clone: boolean; childCount: number; isSorting: boolean; isDragging: boolean; isRemovable: boolean; isCollapsible: boolean; containerStyle?: CSSProperties; wrapperRef?: (node: HTMLDivElement) => void; containerRef: ForwardedRef<HTMLDivElement>; handleProps?: HTMLAttributes<HTMLButtonElement>; onRemove: () => void; onCollapse: () => void; } declare const isSafari: boolean; declare function getProjection(items: FlattenedItem<unknown>[], activeId: UniqueIdentifier, overId: UniqueIdentifier, dragOffset: number, indentationWidth: number, depthLimit?: number): { depth: number; maxDepth: number; minDepth: number; parentId: UniqueIdentifier | null; }; declare function flattenTree<T>(items: TreeItems<T>): FlattenedItem<T>[]; declare function buildTree(flattenedItems: FlattenedItem<unknown>[]): TreeItems<unknown>; declare function findItem(items: TreeItem[], itemId: UniqueIdentifier): TreeItem | undefined; declare function findItemDeep(items: TreeItems<unknown>, itemId: UniqueIdentifier): TreeItem | undefined; declare function removeItem(items: TreeItems<unknown>, id: UniqueIdentifier): TreeItem<unknown>[]; declare function setProperty<T extends keyof TreeItem>(items: TreeItems<unknown>, id: UniqueIdentifier, property: T, setter: (value: TreeItem[T]) => TreeItem[T]): TreeItem<unknown>[]; declare function getChildCount(items: TreeItems<unknown>, id: UniqueIdentifier): number; declare function removeChildrenOf(items: FlattenedItem<unknown>[], ids: UniqueIdentifier[]): FlattenedItem<unknown>[]; interface SortableTreeVirtualProps { height: number; itemSize: number; hideScrollbar?: boolean; } interface SortableTreeMove { id: string; afterId?: string; parentId?: string; } interface SortableTreeProps<T> { maxDepth?: number; removable?: boolean; value: TreeItems<T>; collapsible?: boolean; adjustTranslateY?: number; indentationWidth?: number; virtual?: SortableTreeVirtualProps; grabbingCursor?: CSSProperties["cursor"]; onMove?: (action: SortableTreeMove) => void; onChange?: (items: TreeItems<T>) => void; renderItem?: (props: RenderItemProps<T>) => ReactNode; renderItemContent?: (item: FlattenedItem<T>) => ReactNode; } declare function SortableTree<T>({ value, virtual, maxDepth, removable, collapsible, onMove, onChange, renderItem, indentationWidth, adjustTranslateY, grabbingCursor, renderItemContent, }: SortableTreeProps<T>): react_jsx_runtime.JSX.Element; export { SortableTree, buildTree, findItem, findItemDeep, flattenTree, getChildCount, getProjection, isSafari, removeChildrenOf, removeItem, setProperty }; export type { FlattenedItem, RenderItemProps, SensorContext, SortableTreeMove, SortableTreeProps, SortableTreeVirtualProps, TreeItem, TreeItems };