denwa-react-shared
Version:
194 lines (193 loc) • 9.25 kB
TypeScript
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[];
}[]>;