import { ModelData, TreeModel, ModelPredicate, WalkCallback, AdditionalDefault } from 'bloko/common/tree/types'; /** * Создание модели для коллекции из набора атрибутов. * Отсекает лишние поля. */ export declare const createModel: (attrs: TreeModel) => TreeModel; /** * Многоцелевая иерархическая коллекция, * свободная от специфического поведения компонентов */ declare class TreeCollection { protected models: TreeModel[]; protected topLevelModels: TreeModel[]; protected modelsById: Record>; protected childrenById: Record; protected parentsById: Record; /** * Создаёт из объекта модель и добавляет в коллекцию. * Не добавляет модель в коллекцию, если модель с таким id уже существует */ addModel(attrs: TreeModel, parentId?: string): void; toList(): TreeModel[]; getTopLevel(): TreeModel[]; /** Возвращает модель по ID или `undefined` */ getModel(id: string): TreeModel | undefined; /** Возвращает существующие в коллекции модели по IDs */ getExistModels(ids: string[]): TreeModel[]; /** Возвращает ID родителя по ID модели или `undefined` */ getParentId(id: string): string | undefined; /** * Возвращает модель первого родителя по ID или `undefined`. */ getParent(id: string): TreeModel | undefined; /** Возвращает массив IDs ближайших родителей по ID модели */ getParentIdsDuplicates(id: string): string[]; /** Возвращает массив ID родителей от ближних к дальним */ getParentIds(id: string, resultIds?: string[]): string[]; /** Возвращает массив моделей родителей от ближнего к дальнему */ getParents(id: string): TreeModel[]; /** Возвращает наличие дочерних моделей по ID родителя */ hasChildren(id: string): boolean; /** Возвращает список ID дочерних по ID родителя */ getChildrenIds(id: string): string[]; /** Возвращает список дочерних моделей по ID родителя */ getChildren(id: string): TreeModel[]; /** * Рекурсивно проходит по списку моделей, применяет к каждой модели переданную функцию. * items Список моделей для обработки. * callback Вызываемая функция. * [parents] Массив моделей родителей от ближнего к дальнему. * Используется в случаях, когда на вход поступают модели из середины дерева, имеющие своих родителей. */ _walk(items: TreeModel[], callback: WalkCallback, parents?: TreeModel[]): void; /** Рекурсивно проходит по дереву, применяет к каждой модели переданную функцию */ walk(callback: WalkCallback): void; /** * Рекурсивно проходит по дочерним элементам указанной модели, применяет к каждому переданную функцию. * id ID модели, с которой начинать обход. * callback Вызываемая функция. */ walkChildren(id: string, callback: WalkCallback): void; /** * Проходит по родителям модели до самого верха, применяет к каждому указанную функцию. * id ID текущей модели. * callback Вызываемая функция. */ walkParents(id: string, callback: WalkCallback): void; /** * Возвращает коллекцию в виде дерева. * filter Функция-фильтр. * Если указана, оставляет в дереве только те элементы, для которых вернулось `true`. */ toTree(filter?: ModelPredicate): ModelData[]; } export default TreeCollection;