umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
144 lines (143 loc) • 6.44 kB
TypeScript
/**
* Компоненты представляют собой модульную систему для работы с различными аспектами приложения.
* Они разделяются на две основные категории:
*
* 1. **Системные компоненты** - отвечают за базовую функциональность приложения:
* - Отображение карточек
* - Работа с изображениями
* - Управление кнопками
* - Воспроизведение звуков
* - Обработка NLU (Natural Language Understanding)
*
* 2. **Дополнительные компоненты** - предоставляют расширенную функциональность:
* - Навигация по меню
* - Управление состоянием
* - Работа с данными
*
* > **Важно**: Системные компоненты рекомендуется использовать только через BotController.
*
* ## Дополнительные компоненты
*
* Дополнительные компоненты разработаны для упрощения разработки и расширения возможностей вашего приложения.
*
* ### Navigation
*
* Класс для управления навигацией по элементам меню. Особенно полезен при работе с большими списками элементов,
* где требуется постраничная навигация и обработка выбора пользователя.
*
* #### Основные возможности:
* - Постраничная навигация по элементам
* - Определение выбранного элемента
* - Поддержка различных типов данных через дженерики
* - Гибкая настройка количества отображаемых элементов
*
* #### Примеры использования
*
* 1. **Стандартная навигация**
* ```ts
* import { Navigation } from './standard/Navigation';
*
* const elements: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
* const maxVisibleElements: number = 5;
* const nav = new Navigation<number>(maxVisibleElements);
*
* // Получение элементов для первой страницы
* const showElements: number[] = nav.getPageElements(elements);
* console.log(showElements); // -> [1, 2, 3, 4, 5]
* ```
*
* 2. **Навигация с командами**
* ```ts
* import { Navigation } from './standard/Navigation';
*
* const elements: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
* const maxVisibleElements: number = 5;
* const nav = new Navigation<number>(maxVisibleElements);
*
* // Навигация вперед
* let showElements = nav.getPageElements(elements, 'Дальше');
* console.log(showElements); // -> [6, 7, 8, 9, 0]
*
* // Навигация назад
* showElements = nav.getPageElements(elements, 'Назад');
* console.log(showElements); // -> [1, 2, 3, 4, 5]
* ```
*
* 3. **Управление текущей страницей**
* ```ts
* import { Navigation } from './standard/Navigation';
*
* const elements = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
* const maxVisibleElements = 5;
* const nav = new Navigation<number>(maxVisibleElements);
*
* // Установка текущей страницы
* nav.thisPage = 1;
*
* // Проверка границ навигации
* let showElements = nav.getPageElements(elements, 'Дальше');
* console.log(nav.thisPage); // -> 1 (не выходит за пределы)
*
* showElements = nav.getPageElements(elements, 'Назад');
* console.log(nav.thisPage); // -> 0
* ```
*
* 4. **Выбор элемента из списка**
* ```ts
* import { Navigation } from './standard/Navigation';
*
* const elements = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
* const maxVisibleElements = 5;
* const nav = new Navigation<number>(maxVisibleElements);
*
* // Выбор элемента на текущей странице
* nav.thisPage = 1;
* let selectedElement = nav.selectedElement(elements, '1');
* console.log(selectedElement); // -> 6
* ```
*
* 5. **Работа с объектами**
* ```ts
* import { Navigation } from './standard/Navigation';
*
* interface MenuItem {
* title: string;
* desc: string;
* }
*
* const elements: MenuItem[] = [
* { title: 'title 1', desc: 'desc 1' },
* { title: 'title 2', desc: 'desc 2' },
* { title: 'title 3', desc: 'desc 3' },
* { title: 'title 4', desc: 'desc 4' }
* ];
*
* const maxVisibleElements = 2;
* const nav = new Navigation<MenuItem>(maxVisibleElements);
*
* // Поиск по свойству объекта
* let selectedElement = nav.selectedElement(elements, 'title 1', 'title');
* console.log(selectedElement); // -> { title: 'title 1', desc: 'desc 1' }
* ```
*
* ## Системные компоненты
*
* Системные компоненты обеспечивают базовую функциональность приложения и доступны через BotController.
*
* ### Доступные компоненты:
*
* - **Кнопки** (`./button`) - управление интерактивными элементами
* - **Карточки** (`./card`) - отображение структурированной информации
* - **Изображения** (`./image`) - работа с графическим контентом
* - **NLU** (`./nlu`) - обработка естественного языка
* - **Звуки** (`./sound`) - управление аудио контентом
*
* > **Примечание**: Для использования системных компонентов рекомендуется обращаться к соответствующим
* > методам BotController, которые обеспечивают правильную интеграцию с платформами.
*/
export * from './button';
export * from './card';
export * from './image/Image';
export * from './nlu';
export * from './sound';
export * from './standard';