import type { TGetFromServerArgs } from "@web3r/flowerkit/net"; type TGetSpriteUrlParams = { fileName?: string; svgSpriteRevision?: number; revision?: number; filePath?: string; env?: string; }; /** * Singleton. Плагин отвечает за загрузку SVG-спрайта и встраивание иконок на страницу. Принимает в себя объект с параметрами. * В случае если SVG спрайт успешно загрузился на клиенте, то плагин помещает содержимое файла в локальное хранилище с ключом, указанным в `storageInlineSVGDataName`. Временная метка `storageInlineSVGDataName` служит для валидации кеша и должна задаваться с backend как один из ключей глобальных параметров приложения — `svgSpriteRevision` в формате числа, конвертируемого в дату. * Предупреждение `[IconSprite] Sprite was found in cache without stamp. Please, provide prop 'svgSpriteRevision' to plugins config` возникает, когда глобальная временная метка не была присвоена, но содержимое спрайта было добавлено в кеш. По факту это делает кеш иконок бесконечным. * @module IconSprite * @param cfg{Object=} = объект конфигурации * @param cfg.filePath{String=} путь к файлу спрайта (до папки /build/) * @param cfg.fileName{String=} название файла со спрайтом (по умолчанию icons.svg) * @param cfg.requestCfg{Object=} параметры запроса к спрайту * @param cfg.svgSpriteRevision{Number=} временная метка даты последнего изменения файла * @param cfg.getSpriteUrl{Function=} функция получения полного адреса спрайта * @param cfg.idSprite{String=} уникальный ID генерируемого блока со спрайтом * @param cfg.env{String=} название переменной текущего окружения (process.env.NODE_ENV) * @param cfg.storageInlineSVGDataName{String=} название ключа в localStorage для содержимого спрайта * @param cfg.storageInlineSVGRevisionName{String=} название ключа в localStorage для временной метки спрайта * */ export declare class IconSprite { #private; filePath: string; fileName: string; requestCfg: Record; timeStamp: number; svgSpriteRevision: number; getSpriteUrl: (params: TGetSpriteUrlParams) => string; env: string; idSprite: string; data: string | null; storageInlineSVGDataName: string; storageInlineSVGRevisionName: string; isCached: boolean; /** * Стандартная конфигурация плагина иконок. * Используется как базовый набор параметров при инициализации. * @type {{ * filePath: string, * fileName: string, * idSprite: string, * svgSpriteRevision: number, * env: string | undefined, * storageInlineSVGDataName: string, * storageInlineSVGRevisionName: string, * getSpriteUrl: (params: {filePath?: string, env?: string, fileName?: string, svgSpriteRevision?: number, revision?: number}) => string, * requestCfg: {type: string, mode: string, isBubble: boolean} * }} */ static defaultCfg: { filePath: string; fileName: string; idSprite: string; svgSpriteRevision: number; env: string | undefined; storageInlineSVGDataName: string; storageInlineSVGRevisionName: string; /** * Получает ссылку на спрайт * @param filePath{String=} путь к спрайту * @param fileName{String=} название файла спрайта * @param svgSpriteRevision{Number=} дата последнего обновления спрайта * @param revision{Number=} устаревший алиас даты последнего обновления спрайта * @param env{String=} название переменной текущего окружения (process.env.NODE_ENV) * @returns {string} */ getSpriteUrl: ({ filePath, env, fileName, svgSpriteRevision, revision, }: TGetSpriteUrlParams) => string; requestCfg: { type: string; mode: string; isBubble: boolean; }; }; constructor(cfg?: Partial<{ filePath: string; fileName: string; requestCfg: TGetFromServerArgs; svgSpriteRevision: number; getSpriteUrl: (params: TGetSpriteUrlParams) => string; idSprite: string; env: string; storageInlineSVGDataName: string; storageInlineSVGRevisionName: string; }>); /** * Загружает спрайт с указанного URL * @param url{String} адрес спрайта * @returns {Promise} промис с содержимым спрайта */ getSprite(url: string): Promise; /** * Проверяет, устарел ли спрайт в кеше * @returns {Boolean} true, если спрайт устарел или отсутствует */ isExpired(): boolean; /** * Инициализирует плагин, загружая спрайт из кеша или с сервера */ init(): void; } export {};