import Thorium, { Components, Controller } from "thoriumjs"; import { DropZoneInitOptions } from "../dropzone/dropzone"; import { LineControlInitOptions } from "../../elements/linecontrols/linecontrols"; import { IconInitOptions } from "../../elements/icon/icon"; export interface FileOptionsInit { name: string; id?: string; controls?: LineControlInitOptions['controls']; onLineMouseDown?: LineControlInitOptions['onLineMouseDown']; prop?: LineControlInitOptions['prop']; proto?: LineControlInitOptions['proto'] | any; icon?: LineControlInitOptions['icon']; } export interface FolderOptionsInit { name: string; id?: string; files?: FileOptionsInit[]; folders?: FolderOptionsInit[]; content?: DropZoneInitOptions['content']; onHeaderMouseDown?: DropZoneInitOptions['onHeaderMouseDown']; controls?: DropZoneInitOptions['controls']; icon?: IconInitOptions; icon_open?: IconInitOptions; prop?: Thorium.TemplateInterface['prop']; proto?: Partial['proto']> | any; } export type TreeOptionsInit = FolderOptionsInit[]; type TreeEventTypes = 'addFolder' | 'removeFile' | 'addFile' | 'removeFolder'; export interface TreeController extends Controller { _EventStack: Record void; }>>; addEvent: (eventName: string, callback: (treeMutation: TreeMutation) => void) => string; removeEvent: (eventId: string) => void; addFolder: (options: FolderOptionsInit) => void; addFile: (options: FileOptionsInit) => void; map: (searchTemplate?: Record) => Record; findById: (serachId: string) => void; findByName: (findName: string) => void; searchByName: (searchName: string) => void; onTreeChange?: (mutation: TreeMutation) => void; sort?: (filter: string) => void; } export interface TreeMutation { type: 'folder' | 'file'; target: TreeController | Controller; method: 'add' | 'remove'; } export default class Tree extends Components.Div { constructor(tree: TreeOptionsInit, options?: { prop?: Thorium.ElementInterface['prop']; proto?: Thorium.ElementInterface>['proto']; }); } export {};