import { HttpClient } from '@angular/common/http'; import { ErrorHandler, OnDestroy } from '@angular/core'; import { DomSanitizer, SafeHtml, SafeResourceUrl, SafeUrl } from '@angular/platform-browser'; import { SafeAny } from '@ngx-simple/core/types'; import { Observable } from 'rxjs'; /** 可用于配置图标或图标集中的图标的显示方式的选项 */ export interface IconOptions { /** 要在图标上设置的svg的viewBox属性。 */ viewBox?: string; /** 是否获取图标或使用HTTP credentials设置的图标 */ withCredentials?: boolean; } export declare class SimIconService implements OnDestroy { private _httpClient; private _sanitizer; private readonly _errorHandler?; private _document; /** svgIcon的文件夹目录地址 */ private _svgIconAssets; /** svgIcon的文件夹目录地址默认别名 */ private _defaultAssetsByAlias; /** 如果用户使用图标字体集,需要设置一个图标字体集 */ private _defaultFontSetClass; /** 将字体标识符映射到它们的CSS类名。用于图标字体。 */ private _fontCssClassesByAlias; /** url和缓存的SVG元素用于单个图标。以"[namespace]:[icon]"格式为key */ private _svgIconConfigs; /** 用于图标集的SvgIconConfig对象和缓存的SVG元素,以名称空间为key。可以在同一个名称空间下注册多个图标集。 */ private _iconSetConfigs; /** 通过url直接缓存加载的图标‘’DOM元素 */ private _cachedIconsByUrl; /** 存储正在进行的图标获取。用于将多个请求合并到同一个URL。以url为key */ private _inProgressUrlFetches; constructor(_httpClient: HttpClient, _sanitizer: DomSanitizer, document: SafeAny, _errorHandler?: ErrorHandler); ngOnDestroy(): void; /** * 将普通url使用Angular的DomSanitizer服务设置为信任资源URL */ toSafeUrl(url: string): SafeUrl; /** * 将普通html使用Angular的DomSanitizer服务设置为信任安全的HTML */ toSafeHtml(html: string): SafeHtml; /** * 在默认名称空间中通过URL注册一个图标 * iconName 注册图标的名称 */ addSvgIcon(iconName: string, url: SafeResourceUrl, options?: IconOptions): ThisType; /** * 通过URL在指定的名称空间中注册一个图标。 */ addSvgIconInNamespace(namespace: string, iconName: string, url: SafeResourceUrl, options?: IconOptions): ThisType; /** * 在默认名称空间中使用HTML字符串注册一个图标。 */ addSvgIconLiteral(iconName: string, literal: SafeHtml, options?: IconOptions): ThisType; /** * 使用指定名称空间中的HTML字符串注册图标。 */ addSvgIconLiteralInNamespace(namespace: string, iconName: string, literal: SafeHtml, options?: IconOptions): ThisType; /** * 在默认名称空间中注册由URL设置的图标 */ addSvgIconSet(url: SafeResourceUrl, options?: IconOptions): ThisType; /** * 在默认名称空间中注册使用HTML字符串设置的图标。 * @param literal SVG source of the icon set. */ addSvgIconSetLiteral(literal: SafeHtml, options?: IconOptions): ThisType; /** * 在指定的名称空间中注册由URL设置的图标 */ addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: IconOptions): ThisType; /** * 在指定的名称空间中注册使用HTML字符串设置的图标。 */ addSvgIconSetLiteralInNamespace(namespace: string, literal: SafeHtml, options?: IconOptions): ThisType; /** * 提供可以添加svgIcon的目录 */ addSvgIconAssets(path: string, options?: IconOptions): ThisType; /** * 定义用于svgIcon的目录地址的别名 * 注意:使用别名映射 默认会使用别名为命名空间 */ registerSvgIconAssetsAlias(alias: string, path: string, options?: IconOptions): ThisType; /** * 定义用于图标字体的CSS class名称的别名。创建一个别名为@Input() fontSet作为css class应用于''。 */ registerFontClassAlias(alias: string, className?: string): ThisType; /** * 通过别名获取指定的图标字体集的class * 如果找不到直接返回别名作为图标字体集的class */ classNameForFontAlias(alias: string): string; /** * 添加一个默认的图标字体集 */ setDefaultFontSetClass(className: string): ThisType; /** * 获取默认图标字体集 */ getDefaultFontSetClass(): string; /** * 返回生成指定名称和名称空间的图标(作为''DOM元素)的观察对象。 * 该图标必须是以前在addIcon或addIconSet上注册过的; * 如果不是,观察将抛出一个错误。 */ getNamedBySvgIcon(name: string, namespace?: string): Observable; /** * 返回一个从给定URL生成图标(作为‘’DOM元素)的观察对象。 * 来自URL的响应可能会被缓存,因此这不会总是导致HTTP请求, * 生成的元素总是原始获取的图标的新副本(也就是说,它将不包含对先前返回的元素所做的任何修改)。 */ getSvgIconFromUrl(safeUrl: SafeResourceUrl): Observable; /** * 如果SvgIconConfig可用,则返回它的缓存图标;如果不可用,则从它的URL获取它。 */ private _getSvgFromConfig; /** * 按名称在指定的名称空间中注册图标配置。 */ private _addSvgIconConfig; /** * 在指定的名称空间中注册设置的图标。 */ private _addSvgIconSetConfig; /** * 尝试在任何SVG图标集中查找具有指定名称的图标。 * 首先搜索具有匹配名称的嵌套元素的可用缓存图标,如果找到,则将该元素复制到新的''元素。 * 如果没有找到,则获取所有未缓存的图标集,并在所有获取完成后再次搜索。 * 如果可能,返回的Observable将生成的SVGElement,如果找不到指定名称的图标,则抛出一个错误。 */ private _getSvgFromIconSetConfigs; /** * 通过“id”为指定名称匹配查询搜索嵌套图标元素的给定图标集缓存的SVG元素。 * 如果找到,则将嵌套的元素复制到新的SVG元素并返回它。如果没有找到匹配的元素,则返回null。 */ private _extractIconWithNameFromAnySet; /** * 通过“id”为指定名称匹配查询搜索嵌套图标元素的给定图标集缓存的SVG元素。 * 如果找到,则将嵌套的元素复制到新的SVG元素并返回它。如果没有找到匹配的元素,则返回null。 */ private _extractSvgIconFromSet; /** * 通过克隆元素的所有子元素将元素转换为SVG节点。 */ private _toSvgElement; /** * 加载在SvgIconConfig中指定的图标集URL的内容,并从中创建一个SVG元素。 */ private _loadSvgIconSetFromConfig; /** * 加载在SvgIconConfig中指定的图标URL的内容,并从中创建一个SVG元素。 */ private _loadSvgIconFromConfig; /** 验证svg资源url合法性 */ private _sanitizeUrl; /** 验证安全html合法性 */ private _sanitizeHtml; /** * 返回一个可观察对象,该对象生成给定图标的字符串内容。结果会被缓存,因此使用相同URL的调用不会重复发送HTTP请求 */ private _fetchIcon; /** * 根据给定的SVG字符串创建SVGElement元素,并为其添加默认属性。 */ private _createSvgElementForSingleIcon; /** * 从给定的SVG字符串创建一个DOM元素。 */ private _svgElementFromString; /** * 设置要用作图标的SVG元素的默认属性。 */ private _setSvgAttributes; }