import { ReactNode, RefObject } from 'react'; import TreeCollection from 'bloko/common/tree/treeCollection'; import { ModelData, TreeModel, AdditionalDefault } from 'bloko/common/tree/types'; import { UseRenderInputHook } from 'bloko/blocks/compositeSelection/hooks/useRenderInput'; export interface TagModel extends ModelData { collapsed?: boolean; items?: TagModel[]; } export interface CompositeSelectionTagListProps { value?: string[]; crossedOutValue?: string[]; collection?: TreeCollection; nested?: boolean; stretched?: boolean; removable?: boolean; removeItems: (items: string[]) => void; renderNestedTag?: (props: { id: string; item: TreeModel; }) => ReactNode; renderNestedTagHeader?: (props: { id: string; text: string; }) => ReactNode; crossedOutValueNameTransformation?: (text: string) => string; renderAfterTags?: () => ReactNode; renderAfterTagsRef?: RefObject; } interface ChildrenProps { renderTagList: (props?: Partial>) => ReactNode; renderExcludedTagList: (props?: Partial>) => ReactNode; renderInput: ReturnType; showTreeSelectorPopup: () => void; selectedTree: TreeModel[]; } export interface Children { (props: ChildrenProps): ReactNode; } interface FooterExtraProps { hideTreeSelectorPopup: () => void; submitTreeSelectorPopup: (selected: string[]) => void; } export interface FooterExtra { (props: FooterExtraProps): ReactNode; } export {};