[6a3a178] | 1 | /**
|
---|
| 2 | * @license
|
---|
| 3 | * Copyright Google LLC All Rights Reserved.
|
---|
| 4 | *
|
---|
| 5 | * Use of this source code is governed by an MIT-style license that can be
|
---|
| 6 | * found in the LICENSE file at https://angular.io/license
|
---|
| 7 | */
|
---|
| 8 | import { HttpClient } from '@angular/common/http';
|
---|
| 9 | import { ErrorHandler, Optional, OnDestroy } from '@angular/core';
|
---|
| 10 | import { DomSanitizer, SafeResourceUrl, SafeHtml } from '@angular/platform-browser';
|
---|
| 11 | import { Observable } from 'rxjs';
|
---|
| 12 | /**
|
---|
| 13 | * Returns an exception to be thrown in the case when attempting to
|
---|
| 14 | * load an icon with a name that cannot be found.
|
---|
| 15 | * @docs-private
|
---|
| 16 | */
|
---|
| 17 | import * as ɵngcc0 from '@angular/core';
|
---|
| 18 | export declare function getMatIconNameNotFoundError(iconName: string): Error;
|
---|
| 19 | /**
|
---|
| 20 | * Returns an exception to be thrown when the consumer attempts to use
|
---|
| 21 | * `<mat-icon>` without including @angular/common/http.
|
---|
| 22 | * @docs-private
|
---|
| 23 | */
|
---|
| 24 | export declare function getMatIconNoHttpProviderError(): Error;
|
---|
| 25 | /**
|
---|
| 26 | * Returns an exception to be thrown when a URL couldn't be sanitized.
|
---|
| 27 | * @param url URL that was attempted to be sanitized.
|
---|
| 28 | * @docs-private
|
---|
| 29 | */
|
---|
| 30 | export declare function getMatIconFailedToSanitizeUrlError(url: SafeResourceUrl): Error;
|
---|
| 31 | /**
|
---|
| 32 | * Returns an exception to be thrown when a HTML string couldn't be sanitized.
|
---|
| 33 | * @param literal HTML that was attempted to be sanitized.
|
---|
| 34 | * @docs-private
|
---|
| 35 | */
|
---|
| 36 | export declare function getMatIconFailedToSanitizeLiteralError(literal: SafeHtml): Error;
|
---|
| 37 | /** Options that can be used to configure how an icon or the icons in an icon set are presented. */
|
---|
| 38 | export interface IconOptions {
|
---|
| 39 | /** View box to set on the icon. */
|
---|
| 40 | viewBox?: string;
|
---|
| 41 | /** Whether or not to fetch the icon or icon set using HTTP credentials. */
|
---|
| 42 | withCredentials?: boolean;
|
---|
| 43 | }
|
---|
| 44 | /**
|
---|
| 45 | * Function that will be invoked by the icon registry when trying to resolve the
|
---|
| 46 | * URL from which to fetch an icon. The returned URL will be used to make a request for the icon.
|
---|
| 47 | */
|
---|
| 48 | export declare type IconResolver = (name: string, namespace: string) => (SafeResourceUrl | SafeResourceUrlWithIconOptions | null);
|
---|
| 49 | /** Object that specifies a URL from which to fetch an icon and the options to use for it. */
|
---|
| 50 | export interface SafeResourceUrlWithIconOptions {
|
---|
| 51 | url: SafeResourceUrl;
|
---|
| 52 | options: IconOptions;
|
---|
| 53 | }
|
---|
| 54 | /**
|
---|
| 55 | * Service to register and display icons used by the `<mat-icon>` component.
|
---|
| 56 | * - Registers icon URLs by namespace and name.
|
---|
| 57 | * - Registers icon set URLs by namespace.
|
---|
| 58 | * - Registers aliases for CSS classes, for use with icon fonts.
|
---|
| 59 | * - Loads icons from URLs and extracts individual icons from icon sets.
|
---|
| 60 | */
|
---|
| 61 | export declare class MatIconRegistry implements OnDestroy {
|
---|
| 62 | private _httpClient;
|
---|
| 63 | private _sanitizer;
|
---|
| 64 | private readonly _errorHandler;
|
---|
| 65 | private _document;
|
---|
| 66 | /**
|
---|
| 67 | * URLs and cached SVG elements for individual icons. Keys are of the format "[namespace]:[icon]".
|
---|
| 68 | */
|
---|
| 69 | private _svgIconConfigs;
|
---|
| 70 | /**
|
---|
| 71 | * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.
|
---|
| 72 | * Multiple icon sets can be registered under the same namespace.
|
---|
| 73 | */
|
---|
| 74 | private _iconSetConfigs;
|
---|
| 75 | /** Cache for icons loaded by direct URLs. */
|
---|
| 76 | private _cachedIconsByUrl;
|
---|
| 77 | /** In-progress icon fetches. Used to coalesce multiple requests to the same URL. */
|
---|
| 78 | private _inProgressUrlFetches;
|
---|
| 79 | /** Map from font identifiers to their CSS class names. Used for icon fonts. */
|
---|
| 80 | private _fontCssClassesByAlias;
|
---|
| 81 | /** Registered icon resolver functions. */
|
---|
| 82 | private _resolvers;
|
---|
| 83 | /**
|
---|
| 84 | * The CSS class to apply when an `<mat-icon>` component has no icon name, url, or font specified.
|
---|
| 85 | * The default 'material-icons' value assumes that the material icon font has been loaded as
|
---|
| 86 | * described at http://google.github.io/material-design-icons/#icon-font-for-the-web
|
---|
| 87 | */
|
---|
| 88 | private _defaultFontSetClass;
|
---|
| 89 | constructor(_httpClient: HttpClient, _sanitizer: DomSanitizer, document: any, _errorHandler: ErrorHandler);
|
---|
| 90 | /**
|
---|
| 91 | * Registers an icon by URL in the default namespace.
|
---|
| 92 | * @param iconName Name under which the icon should be registered.
|
---|
| 93 | * @param url
|
---|
| 94 | */
|
---|
| 95 | addSvgIcon(iconName: string, url: SafeResourceUrl, options?: IconOptions): this;
|
---|
| 96 | /**
|
---|
| 97 | * Registers an icon using an HTML string in the default namespace.
|
---|
| 98 | * @param iconName Name under which the icon should be registered.
|
---|
| 99 | * @param literal SVG source of the icon.
|
---|
| 100 | */
|
---|
| 101 | addSvgIconLiteral(iconName: string, literal: SafeHtml, options?: IconOptions): this;
|
---|
| 102 | /**
|
---|
| 103 | * Registers an icon by URL in the specified namespace.
|
---|
| 104 | * @param namespace Namespace in which the icon should be registered.
|
---|
| 105 | * @param iconName Name under which the icon should be registered.
|
---|
| 106 | * @param url
|
---|
| 107 | */
|
---|
| 108 | addSvgIconInNamespace(namespace: string, iconName: string, url: SafeResourceUrl, options?: IconOptions): this;
|
---|
| 109 | /**
|
---|
| 110 | * Registers an icon resolver function with the registry. The function will be invoked with the
|
---|
| 111 | * name and namespace of an icon when the registry tries to resolve the URL from which to fetch
|
---|
| 112 | * the icon. The resolver is expected to return a `SafeResourceUrl` that points to the icon,
|
---|
| 113 | * an object with the icon URL and icon options, or `null` if the icon is not supported. Resolvers
|
---|
| 114 | * will be invoked in the order in which they have been registered.
|
---|
| 115 | * @param resolver Resolver function to be registered.
|
---|
| 116 | */
|
---|
| 117 | addSvgIconResolver(resolver: IconResolver): this;
|
---|
| 118 | /**
|
---|
| 119 | * Registers an icon using an HTML string in the specified namespace.
|
---|
| 120 | * @param namespace Namespace in which the icon should be registered.
|
---|
| 121 | * @param iconName Name under which the icon should be registered.
|
---|
| 122 | * @param literal SVG source of the icon.
|
---|
| 123 | */
|
---|
| 124 | addSvgIconLiteralInNamespace(namespace: string, iconName: string, literal: SafeHtml, options?: IconOptions): this;
|
---|
| 125 | /**
|
---|
| 126 | * Registers an icon set by URL in the default namespace.
|
---|
| 127 | * @param url
|
---|
| 128 | */
|
---|
| 129 | addSvgIconSet(url: SafeResourceUrl, options?: IconOptions): this;
|
---|
| 130 | /**
|
---|
| 131 | * Registers an icon set using an HTML string in the default namespace.
|
---|
| 132 | * @param literal SVG source of the icon set.
|
---|
| 133 | */
|
---|
| 134 | addSvgIconSetLiteral(literal: SafeHtml, options?: IconOptions): this;
|
---|
| 135 | /**
|
---|
| 136 | * Registers an icon set by URL in the specified namespace.
|
---|
| 137 | * @param namespace Namespace in which to register the icon set.
|
---|
| 138 | * @param url
|
---|
| 139 | */
|
---|
| 140 | addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: IconOptions): this;
|
---|
| 141 | /**
|
---|
| 142 | * Registers an icon set using an HTML string in the specified namespace.
|
---|
| 143 | * @param namespace Namespace in which to register the icon set.
|
---|
| 144 | * @param literal SVG source of the icon set.
|
---|
| 145 | */
|
---|
| 146 | addSvgIconSetLiteralInNamespace(namespace: string, literal: SafeHtml, options?: IconOptions): this;
|
---|
| 147 | /**
|
---|
| 148 | * Defines an alias for a CSS class name to be used for icon fonts. Creating an matIcon
|
---|
| 149 | * component with the alias as the fontSet input will cause the class name to be applied
|
---|
| 150 | * to the `<mat-icon>` element.
|
---|
| 151 | *
|
---|
| 152 | * @param alias Alias for the font.
|
---|
| 153 | * @param className Class name override to be used instead of the alias.
|
---|
| 154 | */
|
---|
| 155 | registerFontClassAlias(alias: string, className?: string): this;
|
---|
| 156 | /**
|
---|
| 157 | * Returns the CSS class name associated with the alias by a previous call to
|
---|
| 158 | * registerFontClassAlias. If no CSS class has been associated, returns the alias unmodified.
|
---|
| 159 | */
|
---|
| 160 | classNameForFontAlias(alias: string): string;
|
---|
| 161 | /**
|
---|
| 162 | * Sets the CSS class name to be used for icon fonts when an `<mat-icon>` component does not
|
---|
| 163 | * have a fontSet input value, and is not loading an icon by name or URL.
|
---|
| 164 | *
|
---|
| 165 | * @param className
|
---|
| 166 | */
|
---|
| 167 | setDefaultFontSetClass(className: string): this;
|
---|
| 168 | /**
|
---|
| 169 | * Returns the CSS class name to be used for icon fonts when an `<mat-icon>` component does not
|
---|
| 170 | * have a fontSet input value, and is not loading an icon by name or URL.
|
---|
| 171 | */
|
---|
| 172 | getDefaultFontSetClass(): string;
|
---|
| 173 | /**
|
---|
| 174 | * Returns an Observable that produces the icon (as an `<svg>` DOM element) from the given URL.
|
---|
| 175 | * The response from the URL may be cached so this will not always cause an HTTP request, but
|
---|
| 176 | * the produced element will always be a new copy of the originally fetched icon. (That is,
|
---|
| 177 | * it will not contain any modifications made to elements previously returned).
|
---|
| 178 | *
|
---|
| 179 | * @param safeUrl URL from which to fetch the SVG icon.
|
---|
| 180 | */
|
---|
| 181 | getSvgIconFromUrl(safeUrl: SafeResourceUrl): Observable<SVGElement>;
|
---|
| 182 | /**
|
---|
| 183 | * Returns an Observable that produces the icon (as an `<svg>` DOM element) with the given name
|
---|
| 184 | * and namespace. The icon must have been previously registered with addIcon or addIconSet;
|
---|
| 185 | * if not, the Observable will throw an error.
|
---|
| 186 | *
|
---|
| 187 | * @param name Name of the icon to be retrieved.
|
---|
| 188 | * @param namespace Namespace in which to look for the icon.
|
---|
| 189 | */
|
---|
| 190 | getNamedSvgIcon(name: string, namespace?: string): Observable<SVGElement>;
|
---|
| 191 | ngOnDestroy(): void;
|
---|
| 192 | /**
|
---|
| 193 | * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.
|
---|
| 194 | */
|
---|
| 195 | private _getSvgFromConfig;
|
---|
| 196 | /**
|
---|
| 197 | * Attempts to find an icon with the specified name in any of the SVG icon sets.
|
---|
| 198 | * First searches the available cached icons for a nested element with a matching name, and
|
---|
| 199 | * if found copies the element to a new `<svg>` element. If not found, fetches all icon sets
|
---|
| 200 | * that have not been cached, and searches again after all fetches are completed.
|
---|
| 201 | * The returned Observable produces the SVG element if possible, and throws
|
---|
| 202 | * an error if no icon with the specified name can be found.
|
---|
| 203 | */
|
---|
| 204 | private _getSvgFromIconSetConfigs;
|
---|
| 205 | /**
|
---|
| 206 | * Searches the cached SVG elements for the given icon sets for a nested icon element whose "id"
|
---|
| 207 | * tag matches the specified name. If found, copies the nested element to a new SVG element and
|
---|
| 208 | * returns it. Returns null if no matching element is found.
|
---|
| 209 | */
|
---|
| 210 | private _extractIconWithNameFromAnySet;
|
---|
| 211 | /**
|
---|
| 212 | * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element
|
---|
| 213 | * from it.
|
---|
| 214 | */
|
---|
| 215 | private _loadSvgIconFromConfig;
|
---|
| 216 | /**
|
---|
| 217 | * Loads the content of the icon set URL specified in the
|
---|
| 218 | * SvgIconConfig and attaches it to the config.
|
---|
| 219 | */
|
---|
| 220 | private _loadSvgIconSetFromConfig;
|
---|
| 221 | /**
|
---|
| 222 | * Searches the cached element of the given SvgIconConfig for a nested icon element whose "id"
|
---|
| 223 | * tag matches the specified name. If found, copies the nested element to a new SVG element and
|
---|
| 224 | * returns it. Returns null if no matching element is found.
|
---|
| 225 | */
|
---|
| 226 | private _extractSvgIconFromSet;
|
---|
| 227 | /**
|
---|
| 228 | * Creates a DOM element from the given SVG string.
|
---|
| 229 | */
|
---|
| 230 | private _svgElementFromString;
|
---|
| 231 | /**
|
---|
| 232 | * Converts an element into an SVG node by cloning all of its children.
|
---|
| 233 | */
|
---|
| 234 | private _toSvgElement;
|
---|
| 235 | /**
|
---|
| 236 | * Sets the default attributes for an SVG element to be used as an icon.
|
---|
| 237 | */
|
---|
| 238 | private _setSvgAttributes;
|
---|
| 239 | /**
|
---|
| 240 | * Returns an Observable which produces the string contents of the given icon. Results may be
|
---|
| 241 | * cached, so future calls with the same URL may not cause another HTTP request.
|
---|
| 242 | */
|
---|
| 243 | private _fetchIcon;
|
---|
| 244 | /**
|
---|
| 245 | * Registers an icon config by name in the specified namespace.
|
---|
| 246 | * @param namespace Namespace in which to register the icon config.
|
---|
| 247 | * @param iconName Name under which to register the config.
|
---|
| 248 | * @param config Config to be registered.
|
---|
| 249 | */
|
---|
| 250 | private _addSvgIconConfig;
|
---|
| 251 | /**
|
---|
| 252 | * Registers an icon set config in the specified namespace.
|
---|
| 253 | * @param namespace Namespace in which to register the icon config.
|
---|
| 254 | * @param config Config to be registered.
|
---|
| 255 | */
|
---|
| 256 | private _addSvgIconSetConfig;
|
---|
| 257 | /** Parses a config's text into an SVG element. */
|
---|
| 258 | private _svgElementFromConfig;
|
---|
| 259 | /** Tries to create an icon config through the registered resolver functions. */
|
---|
| 260 | private _getIconConfigFromResolvers;
|
---|
| 261 | static ɵfac: ɵngcc0.ɵɵFactoryDeclaration<MatIconRegistry, [{ optional: true; }, null, { optional: true; }, null]>;
|
---|
| 262 | }
|
---|
| 263 | /** @docs-private */
|
---|
| 264 | export declare function ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry: MatIconRegistry, httpClient: HttpClient, sanitizer: DomSanitizer, errorHandler: ErrorHandler, document?: any): MatIconRegistry;
|
---|
| 265 | /** @docs-private */
|
---|
| 266 | export declare const ICON_REGISTRY_PROVIDER: {
|
---|
| 267 | provide: typeof MatIconRegistry;
|
---|
| 268 | deps: (Optional[] | typeof DomSanitizer | typeof ErrorHandler)[];
|
---|
| 269 | useFactory: typeof ICON_REGISTRY_PROVIDER_FACTORY;
|
---|
| 270 | };
|
---|
| 271 |
|
---|
| 272 | //# sourceMappingURL=icon-registry.d.ts.map |
---|