import * as React from 'react'; import { ComponentType } from 'react'; import { TS_Object } from '@nu-art/ts-common'; import { _BaseNodeRenderer, NodeRendererProps } from './BaseRenderer.js'; export type TreeNode = { propKey: string; item: any; adapter: Adapter; path: string; expandToggler: (e: React.MouseEvent, expand?: boolean) => void; expandFromNode: (exapnd?: boolean) => void; expanded: boolean; }; export type ListData = I[]; export type ListItem = { item: I; _children?: ListItem[]; }; export type NestedListItem = { item: I; _children?: NestedListData[]; }; export type NestedListData = I | NestedListItem; export type TreeData = { [k: string]: I | TreeData; }; type TreeItem = { [K in keyof TreeMap]: { type: K; item: TreeMap[K]; _children?: TreeItem[]; alwaysExpanded?: boolean; }; }[keyof TreeMap]; export type TreeType = { map: TreeMap; action: { [K in keyof TreeMap]: (item: TreeMap[K]) => Promise | any; }; nodeRenderer: { [K in keyof TreeMap]: React.ComponentType>; }; renderer: { [K in keyof TreeMap]: React.ComponentType<{ item: TreeMap[K]; }>; }; rendererV3: { [K in keyof TreeMap]: React.ComponentType; }; nodeTypesMap: { [K in keyof TreeMap]: { type: K; item: TreeMap[K]; _children?: TreeItem[]; }; }; nodeType: TreeItem; }; type AdapterData = D | (() => D); export declare class BaseAdapter { data: any; childrenKey?: string; constructor(data: any); setData(data: object): this; filter: (obj: K, key: keyof K) => boolean; isParent: (obj: any) => boolean; hadChildren: (obj: any) => boolean; getFilteredChildren(obj: K): (keyof K)[] | []; adjust: ((obj: any) => { data: any; deltaPath: string; }); clone(baseAdapter: this): this; } export declare class Adapter = NodeRendererProps> extends BaseAdapter { hideRoot: boolean; treeNodeRenderer: _BaseNodeRenderer; setTreeNodeRenderer(renderer: any): this; resolveRenderer(propKey: string): _BaseNodeRenderer; } declare abstract class BaseAdapterBuilder { data: Data; treeNodeRenderer: ComponentType; multiRenderer: boolean; expandCollapseRenderer: ComponentType; protected filter: (obj: K, key: keyof K) => boolean; childrenKey?: string; constructor(); setData(data: Data): this; setNodeRenderer(treeNodeRenderer: ComponentType): this; setExpandCollapseRenderer(expandCollapseRenderer: ComponentType): this; setChildrenKey: (childrenKey: string) => this; setFilter(filter: (obj: K, key: keyof K) => boolean): void; protected defaultExpandCollapseRenderer: (props: NodeRendererProps) => import("react/jsx-runtime").JSX.Element; protected defaultTreeNodeRenderer: (props: NodeRendererProps) => import("react/jsx-runtime").JSX.Element; protected abstract resolveRenderer(type: string): _BaseNodeRenderer; } declare class ListSingleAdapterBuilder extends BaseAdapterBuilder>> { readonly renderer: _BaseNodeRenderer; constructor(renderer: _BaseNodeRenderer); protected resolveRenderer(type?: string): _BaseNodeRenderer; nested(): ListSingleAdapterBuilder>; build(): Adapter>; } declare class MultiTypeAdapterBuilder> extends BaseAdapterBuilder { readonly rendererMap: TreeMap['nodeRenderer']; private _hideRoot; constructor(rendererMap: TreeMap['nodeRenderer']); protected resolveRenderer: (type?: string) => _BaseNodeRenderer; tree(): MultiTypeAdapterBuilder; hideRoot(): this; build(): Adapter>; } declare class TreeSingleAdapterBuilder extends BaseAdapterBuilder>> { readonly renderer: _BaseNodeRenderer; private _hideRoot; constructor(renderer: _BaseNodeRenderer); protected resolveRenderer(type?: string): _BaseNodeRenderer; hideRoot(): this; build(): Adapter>; } declare class ListAdapterBuilder { singleRender(renderer: _BaseNodeRenderer): ListSingleAdapterBuilder; multiRender>(rendererMap: TreeMap['nodeRenderer']): MultiTypeAdapterBuilder; multiRenderV3>(rendererMap: TreeMap['nodeRenderer']): MultiTypeAdapterBuilder; } declare class TreeAdapterBuilder { singleRender(renderer: _BaseNodeRenderer): TreeSingleAdapterBuilder; multiRender>(rendererMap: TreeMap['nodeRenderer']): MultiTypeAdapterBuilder; } declare class _AdapterBuilder { list(): ListAdapterBuilder; tree(): TreeAdapterBuilder; } export declare function AdapterBuilder(): _AdapterBuilder; export declare function SimpleTreeAdapter(options: TreeData, renderer: (node: NodeRendererProps) => React.ReactElement): Adapter>; export declare function SimpleListAdapter(options: T[], renderer: (node: NodeRendererProps) => React.ReactElement): Adapter>; export {};