UNPKG

denwa-react-shared

Version:
194 lines (193 loc) 9.25 kB
import { FileType, IAllFiles, IAllImages, IFormFile, IServerFileForm, IServerImageForm, ITempFiles, ITempImages, IUploadImage, IUploadImagesStore, Languages, LanguagesTypes } from '../types'; import { TranslateTextType } from './types'; import { ITranslateContentNode } from '../ui/text-editor'; /** * @description Преобразует value у инпута в поле маски телефона * @param eventValue - исходное значение инпута * @response Возвращает либо обработанную строку, либо пустую строку * @example * 79881234567 -> +79881234567 * 89881234567 -> +79881234567 * 19881234567 -> +19881234567 * 8 (988) 505-42-19 -> +79885054219 */ export declare const convertPhoneMask: (eventValue: string) => string; /** * @description Форматирует номер телефона из интернационального в обычный * @param {string} phone - Номер телефона * @return {string} Возвращает либо пустую строку, либо отформатированный номер телефона * @example * const phone = formatPhone(+7 988 505 42 19) * phone === "+79885054219" */ export declare const formatPhoneToNumber: (phone: string) => string; /** * @description Конвертация файла в base64 * @param {FileType} parameter - Файл * @return {string} Возвращает строку base64 */ export declare const fileToBase64: (file: FileType) => Promise<string>; /** * @description Создать upload image store для zustand * @return {IUploadImagesStore} Возвращает структуру store */ export declare const createUploadImagesStore: (set: { (partial: IUploadImagesStore | Partial<IUploadImagesStore> | ((state: IUploadImagesStore) => IUploadImagesStore | Partial<IUploadImagesStore>), replace?: false): void; (state: IUploadImagesStore | ((state: IUploadImagesStore) => IUploadImagesStore), replace: true): void; }) => IUploadImagesStore; /** * @description Переводит массив с данными в объект для select * @param {object[]} array - Исходный массив * @param {string} label - Название ключа с данными для label * @param {string} value - Название ключа с данными для label */ export declare const objectArrayToOptions: (array: object[], label: string, value: string) => { label: string; value: string; }[]; /** * @description Подготавливает фотографии к отправке * @param newImages- Новые фотографии * @param serverImages- Фотографии с сервера * @param imagesOrder - Порядок фотографий * @param imagesData - Фотографии из стейта * @param limit - Лимит фотографий */ export declare const prepareImagesToSubmit: ({ newImages, serverImages, imagesOrder, imagesData, limit, }: { newImages: IFormFile[]; serverImages: IServerImageForm[]; imagesOrder: string[]; imagesData: IUploadImage[]; limit?: number; }) => { tempImages: ITempImages[]; allImages: IAllImages[]; }; /** * @description Подготавливает файлы к отправке * @param newFiles- Новые файлы * @param serverFiles- Файлы с сервера * @param filesOrder - Порядок файлов * @param limit - Лимит фотографий */ export declare const prepareFilesToSubmit: ({ newFiles, serverFiles, filesOrder, limit, }: { newFiles: IFormFile[]; serverFiles: IServerFileForm[]; filesOrder: string[]; limit?: number; }) => { tempFiles: ITempFiles[]; allFiles: IAllFiles[]; }; /** * @description Проверка валидности url * @param {string} string - строка * @return {boolean} */ export declare const isUrl: (string: string) => boolean; /** * @description Форматирует номер телефона в интернациональный вид * @param {string} phone - Номер телефона * @return {string} Возвращает либо пустую строку, либо отформатированный номер телефона * @example * const phone = formatPhone(+7 988 505 42 19) * phone === "+7 988 505 42 19" */ export declare const formatPhoneToInternational: (phone: string) => string; /** * @description Формирует label из имени, телефона и почты * @param {object} object - Объект с данными * @param {string} object.fullName - ФИО * @param {string} object.phone - Телефон * @param {string} object.email - Email */ export declare const createProfileLabel: ({ fullName, phone, email, }: { fullName?: string | null; phone?: string | null; email?: string | null; }) => string; /** * @description Переводит текст поля на с русского на остальные языки * @param {string} name - Название поля без языкового кода. К примеру name * @param {Languages} lang - Код языка * @param {LanguagesTypes[]} langsList - Массив языков для перевода * @param {string | undefined} value - Значение, которое было на исходном языке * @param translateText - Функция перевода на другой язык */ export declare const translateField: ({ name, lang, langsList, value, translateText, }: { name: string; lang: Languages; langsList: LanguagesTypes[]; value: string | undefined; translateText: TranslateTextType; }) => Promise<{ [key: string]: string; }[]>; /** * @description Переводит alt описание картинок * @param data - Массив с объектами с информацией о картинках * @param mainLang - Основной язык * @param langsList - Языки для перевода * @param translateText - Функция перевода */ export declare const translateImagesAlt: ({ data, mainLang, langsList, translateText, }: { data: IUploadImage[]; mainLang: Languages; langsList: LanguagesTypes[]; translateText: TranslateTextType; }) => Promise<IUploadImage[]>; /** * @description Переводит контент на другой язык * @param {object} nodes - упрощенный объект Descendant с поля children и text * @param {Languages} sourceLanguage - с какого языка перевести * @param {Languages} targetLanguage - на какой язык перевести * @param {TranslateTextType} translateText - функция перевода * @return {object} Возвращает структуру для slate, но с другими языками */ export declare const translateContent: ({ nodes, sourceLanguage, targetLanguage, translateText, }: { nodes: ITranslateContentNode[]; sourceLanguage: Languages; targetLanguage: Languages; translateText: TranslateTextType; }) => Promise<ITranslateContentNode[]>; /** * @description Сравнивает два массива ролей между собой на то, какой пользователь имеет приоритет * @param userRoles - Массив с ролями пользователя * @param comparedUserRoles - Массив с ролями пользователя, с которым сравниваем * @param rolePriority - Объект ключ - значение, с приоритетностью ролей */ export declare const compareRolesPriority: ({ userRoles, comparedUserRoles, rolePriority, }: { userRoles: string[]; comparedUserRoles: string[]; rolePriority: Record<string, number>; }) => { maxUserRolePriority: number; maxComparedUserRolePriority: number; isPriorityHigher: boolean; isPriorityEqual: boolean; isPriorityLower: boolean; }; /** * @description Делает поиск для Select по полю label * @param input - вводимое значение * @param option - объект с option */ export declare const onFilterSelectOptionsByLabel: (input: string, option: { label: string; } | undefined) => boolean; /** * @description Переводит контент на другой язык * @param nodes - упрощенный объект Descendant с поля children и text * @param sourceLanguage - с какого языка перевести * @param langsList - список языков * @param { TranslateTextType } translateText - функция перевода * @return Возвращает массив с объетами, в котором ключ это поле языка, а значение переведенный контент для текстового редактора */ export declare const translateContentToLanguages: ({ nodes, sourceLanguage, langsList, translateText, }: { nodes: ITranslateContentNode[]; sourceLanguage: Languages; langsList: LanguagesTypes[]; translateText: TranslateTextType; }) => Promise<{ [x: string]: ITranslateContentNode[]; }[]>;