UNPKG

umbot

Version:

Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф

193 lines (192 loc) 7.21 kB
import { Buttons, TButton } from '../button'; import { AppContext } from '../../core'; /** * @interface IImageParams * Интерфейс параметров изображения для настройки отображения в различных платформах. * * Особенности: * - Поддерживает настройку стилей текста * - Позволяет задавать цвета и отступы * - Контролирует количество строк текста * - Расширяется дополнительными параметрами * * @example * ```ts * // Базовые параметры * const params: IImageParams = { * titleTypeface: 'headline2', * titleText_color: 'default', * descTypeface: 'body3', * descText_color: 'secondary' * }; * * // Расширенные параметры * const extendedParams: IImageParams = { * titleTypeface: 'headline2', * titleText_color: 'default', * titleMargins: { top: '4x', left: '8x', right: '8x' }, * titleMax_lines: 2, * descTypeface: 'body3', * descText_color: 'secondary', * descMargins: { top: '2x', left: '8x', right: '8x' }, * descMax_lines: 3, * customParam: 'value' * }; * ``` */ export interface IImageParams { /** * Дополнительные параметры изображения. * Позволяет расширять интерфейс специфичными параметрами. * * @example * ```ts * // Добавление пользовательских параметров * const params: IImageParams = { * titleTypeface: 'headline2', * customWidth: '100%', * customHeight: '200px', * customStyle: { borderRadius: '8px' } * }; * ``` */ [name: string]: unknown; } /** * Инициализация кнопки. * @param button * @param buttonInst */ export declare function initButton(button: TButton, buttonInst: Buttons): void; /** * Интерфейс для обработки и отображения изображений в различных платформах. * * Основные возможности: * - Управление изображениями и их метаданными * - Поддержка различных источников изображений (URL, файлы, токены) * - Настройка отображения текста (заголовок и описание) * - Добавление кнопок и действий * - Гибкая настройка параметров отображения */ export interface IImageType<TImageParams extends IImageParams = IImageParams> { /** * Кнопки для обработки действий с изображением. * Зависит от типа приложения и платформы. * * @see Buttons * @example * ```ts * const image = getImage(...); * image.button.addBtn('Нажми меня', 'http://localhost'); * image.button.addBtn('Другая кнопка', null, { action: 'custom' }); * ``` */ button?: Buttons; /** * Заголовок изображения. * Отображается над изображением. * * @example * ```ts * const image = getImage(...); * image.title = 'Название товара'; * ``` */ title: string; /** * Описание изображения. * Отображается под изображением. * * @example * ```ts * const image = getImage(...); * image.desc = 'Подробное описание товара'; * ``` */ desc: string; /** * Идентификатор изображения. * Используется для платформ, поддерживающих токены. * * @example * ```ts * const image = getImage(...); * image.imageToken = 'image_token_123'; * ``` */ imageToken: string | null; /** * Путь к изображению. * Может быть URL или путь к файлу. * * @example * ```ts * const image = getImage(...); * image.imageDir = '/image.jpg'; * // или * image.imageDir = '/path/to/image.jpg'; * ``` */ imageDir: string | null; /** * Дополнительные параметры изображения. * Настройки отображения для разных платформ. * * @example * ```ts * const image = getImage(...); * image.params = { * titleTypeface: 'headline2', * titleText_color: 'default', * descTypeface: 'body3', * descText_color: 'secondary' * }; * ``` */ params: TImageParams; } /** * Инициализация изображения. * Устанавливает основные параметры изображения и проверяет их корректность. * * Процесс работы: * 1. Проверяет тип изображения (токен или путь): * - Если isToken=true, использует image как токен * - Иначе проверяет валидность URL или файла * 2. Устанавливает заголовок и описание: * - Если заголовок пустой, возвращает false * - Если описание пустое, устанавливает пробел * 3. Добавляет кнопки, если они есть: * - Поддерживает строковые кнопки * - Поддерживает объекты кнопок * * @param {AppContext} [appContext] - Контекст приложения * @param {string | null} image - Путь к изображению или токен * @param {string} title - Заголовок изображения * @param {string} [desc=' '] - Описание изображения * @param {TButton | null} [button=null] - Кнопки для изображения * @param {boolean} isToken - Флаг, говорящий о том, что явно передается токен * @returns {IImageType | null} объект если инициализация успешна, null в противном случае * * @example * ```ts * // Инициализация с URL * getImage( * 'http://localhost/image.jpg', * 'Заголовок', * 'Описание', * { title: 'Кнопка', url: 'http://localhost' }, * appContext * ); * * // Инициализация с простой кнопкой * getImage( * 'http://localhost/image.jpg', * 'Заголовок', * 'Описание', * 'Текст кнопки', * appContext * ); * ``` */ export declare function getImage(appContext: AppContext, image: string | null, title: string, desc?: string, button?: TButton | null, isToken?: boolean): IImageType | null;