@ng-icons/core 32.2.0 → 32.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,7 +22,7 @@ Currently, we support the following libraries:
22
22
  - [Feather Icons](https://feathericons.com/)
23
23
  - [Jam Icons](https://jam-icons.com/)
24
24
  - [Octicons](https://github.com/primer/octicons)
25
- - [Radix UI Icons](https://icons.modulz.app/)
25
+ - [Radix UI Icons](https://www.radix-ui.com/icons)
26
26
  - [Tabler Icons](https://tabler-icons.io/)
27
27
  - [Akar Icons](https://akaricons.com/)
28
28
  - [Iconoir](https://iconoir.com/)
@@ -48,6 +48,7 @@ Currently, we support the following libraries:
48
48
  - [MynaUI](https://mynaui.com/icons)
49
49
  - [Boxicons](https://boxicons.com/)
50
50
  - [Mono Icons](https://icons.mono.company/)
51
+ - [Lucide Icons](https://lucide.dev/)
51
52
 
52
53
  Got suggestions for additional iconsets? Create an issue and we can consider adding them!
53
54
 
@@ -131,6 +132,7 @@ The following packages are available:
131
132
  | `@ng-icons/mynaui` | MIT |
132
133
  | `@ng-icons/boxicons` | MIT |
133
134
  | `@ng-icons/mono-icons` | MIT |
135
+ | `@ng-icons/lucide` | MIT |
134
136
 
135
137
  ## Usage
136
138
 
@@ -1 +1 @@
1
- {"version":3,"file":"ng-icons-core.mjs","sources":["../tmp-esm2022/lib/providers/glyph-config.provider.js","../tmp-esm2022/lib/providers/glyph.provider.js","../tmp-esm2022/lib/utils/coercion.js","../tmp-esm2022/lib/components/glyph/glyph.component.js","../tmp-esm2022/lib/providers/features/features.js","../tmp-esm2022/lib/providers/features/csp.js","../tmp-esm2022/lib/providers/features/logger.js","../tmp-esm2022/lib/providers/icon-config.provider.js","../tmp-esm2022/lib/providers/icon-loader.provider.js","../tmp-esm2022/lib/providers/icon.provider.js","../tmp-esm2022/lib/utils/async.js","../tmp-esm2022/lib/utils/format.js","../tmp-esm2022/lib/components/icon/icon.component.js","../tmp-esm2022/lib/icon.module.js","../tmp-esm2022/lib/components/icon-stack/icon-stack.component.js","../tmp-esm2022/ng-icons-core.js"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nexport const NgGlyphConfigToken = new InjectionToken('Ng Glyph Config');\nconst defaultConfig = {\n size: '1em',\n opticalSize: 20,\n weight: 400,\n grade: 0,\n fill: false,\n};\n/**\n * Provide the configuration for the glyph\n * @param config The configuration to use\n */\nexport function provideNgGlyphsConfig(config) {\n return {\n provide: NgGlyphConfigToken,\n useValue: { ...defaultConfig, ...config },\n };\n}\n/**\n * Inject the configuration for the glyphs\n * @returns The configuration to use\n * @internal\n */\nexport function injectNgGlyphsConfig() {\n return (inject(NgGlyphConfigToken, { optional: true }) ??\n defaultConfig);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x5cGgtY29uZmlnLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3ZpZGVycy9nbHlwaC1jb25maWcucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFpQmpFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNsRCxpQkFBaUIsQ0FDbEIsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFrQjtJQUNuQyxJQUFJLEVBQUUsS0FBSztJQUNYLFdBQVcsRUFBRSxFQUFFO0lBQ2YsTUFBTSxFQUFFLEdBQUc7SUFDWCxLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxLQUFLO0NBQ1osQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsTUFBOEI7SUFFOUIsT0FBTztRQUNMLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsUUFBUSxFQUFFLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxNQUFNLEVBQUU7S0FDMUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3BELGFBQWEsQ0FBNEIsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ0dseXBoQ29uZmlnIHtcbiAgLyoqIERlZmluZSB0aGUgZGVmYXVsdCBzaXplIG9mIGdseXBoICovXG4gIHNpemU6IHN0cmluZyB8IG51bWJlcjtcbiAgLyoqIERlZmluZSB0aGUgb3B0aWNhbCBzaXplIG9mIHRoZSBnbHlwaCAqL1xuICBvcHRpY2FsU2l6ZT86IG51bWJlcjtcbiAgLyoqIERlZmluZSB0aGUgZGVmYXVsdCBjb2xvciBvZiBnbHlwaCAqL1xuICBjb2xvcj86IHN0cmluZztcbiAgLyoqIERlZmluZSB0aGUgZGVmYXVsdCB3ZWlnaHQgb2YgZ2x5cGggKi9cbiAgd2VpZ2h0PzogbnVtYmVyO1xuICAvKiogRGVmaW5lIHRoZSBkZWZhdWx0IGdyYWRlIG9mIGdseXBoICovXG4gIGdyYWRlPzogbnVtYmVyO1xuICAvKiogRGVmaW5lIHRoZSBkZWZhdWx0IGZpbGwgb2YgZ2x5cGggKi9cbiAgZmlsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBOZ0dseXBoQ29uZmlnVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVxdWlyZWQ8TmdHbHlwaENvbmZpZz4+KFxuICAnTmcgR2x5cGggQ29uZmlnJyxcbik7XG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IE5nR2x5cGhDb25maWcgPSB7XG4gIHNpemU6ICcxZW0nLFxuICBvcHRpY2FsU2l6ZTogMjAsXG4gIHdlaWdodDogNDAwLFxuICBncmFkZTogMCxcbiAgZmlsbDogZmFsc2UsXG59O1xuXG4vKipcbiAqIFByb3ZpZGUgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnbHlwaFxuICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbiB0byB1c2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ0dseXBoc0NvbmZpZyhcbiAgY29uZmlnOiBQYXJ0aWFsPE5nR2x5cGhDb25maWc+LFxuKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IE5nR2x5cGhDb25maWdUb2tlbixcbiAgICB1c2VWYWx1ZTogeyAuLi5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBJbmplY3QgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnbHlwaHNcbiAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIHRvIHVzZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ0dseXBoc0NvbmZpZygpOiBSZXF1aXJlZDxOZ0dseXBoQ29uZmlnPiB7XG4gIHJldHVybiAoaW5qZWN0KE5nR2x5cGhDb25maWdUb2tlbiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/P1xuICAgIGRlZmF1bHRDb25maWcpIGFzIFJlcXVpcmVkPE5nR2x5cGhDb25maWc+O1xufVxuIl19","import { InjectionToken, inject } from '@angular/core';\nexport const NgGlyphsToken = new InjectionToken('NgGlyphsToken');\nexport function provideNgGlyphs(...glyphsets) {\n // if there are no glyphsets, throw an error\n if (!glyphsets.length) {\n throw new Error('Please provide at least one glyphset.');\n }\n // the default glyphset is the first one\n const defaultGlyphset = glyphsets[0].name;\n return [{ provide: NgGlyphsToken, useValue: { defaultGlyphset, glyphsets } }];\n}\nexport function injectNgGlyphs() {\n const glyphs = inject(NgGlyphsToken, { optional: true });\n if (!glyphs) {\n throw new Error('Please provide the glyphs using the provideNgGlyphs() function.');\n }\n return glyphs;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x5cGgucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcHJvdmlkZXJzL2dseXBoLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQVcsZUFBZSxDQUFDLENBQUM7QUFFM0UsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFHLFNBQXVCO0lBQ3hELDRDQUE0QztJQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFMUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYztJQUM1QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFekQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYixpRUFBaUUsQ0FDbEUsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFZhbHVlUHJvdmlkZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgTmdHbHlwaHNUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ0dseXBocz4oJ05nR2x5cGhzVG9rZW4nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ0dseXBocyguLi5nbHlwaHNldHM6IE5nR2x5cGhzZXRbXSk6IFZhbHVlUHJvdmlkZXJbXSB7XG4gIC8vIGlmIHRoZXJlIGFyZSBubyBnbHlwaHNldHMsIHRocm93IGFuIGVycm9yXG4gIGlmICghZ2x5cGhzZXRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHByb3ZpZGUgYXQgbGVhc3Qgb25lIGdseXBoc2V0LicpO1xuICB9XG5cbiAgLy8gdGhlIGRlZmF1bHQgZ2x5cGhzZXQgaXMgdGhlIGZpcnN0IG9uZVxuICBjb25zdCBkZWZhdWx0R2x5cGhzZXQgPSBnbHlwaHNldHNbMF0ubmFtZTtcblxuICByZXR1cm4gW3sgcHJvdmlkZTogTmdHbHlwaHNUb2tlbiwgdXNlVmFsdWU6IHsgZGVmYXVsdEdseXBoc2V0LCBnbHlwaHNldHMgfSB9XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5nR2x5cGhzKCk6IE5nR2x5cGhzIHtcbiAgY29uc3QgZ2x5cGhzID0gaW5qZWN0KE5nR2x5cGhzVG9rZW4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgaWYgKCFnbHlwaHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnUGxlYXNlIHByb3ZpZGUgdGhlIGdseXBocyB1c2luZyB0aGUgcHJvdmlkZU5nR2x5cGhzKCkgZnVuY3Rpb24uJyxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGdseXBocztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ0dseXBoc2V0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYXNlQ2xhc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ0dseXBocyB7XG4gIGRlZmF1bHRHbHlwaHNldDogc3RyaW5nO1xuICBnbHlwaHNldHM6IE5nR2x5cGhzZXRbXTtcbn1cbiJdfQ==","export function coerceCssPixelValue(value) {\n return value == null ? '' : /^\\d+$/.test(value) ? `${value}px` : value;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvY29lcmNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWE7SUFDL0MsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUNzc1BpeGVsVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiAvXlxcZCskLy50ZXN0KHZhbHVlKSA/IGAke3ZhbHVlfXB4YCA6IHZhbHVlO1xufVxuIl19","import { ChangeDetectionStrategy, Component, booleanAttribute, computed, input, numberAttribute, } from '@angular/core';\nimport { injectNgGlyphsConfig } from '../../providers/glyph-config.provider';\nimport { injectNgGlyphs } from '../../providers/glyph.provider';\nimport { coerceCssPixelValue } from '../../utils/coercion';\nimport * as i0 from \"@angular/core\";\nexport class NgGlyph {\n constructor() {\n /**\n * Access the available glyphsets\n */\n this.glyphsets = injectNgGlyphs();\n /**\n * Access the default configuration\n */\n this.config = injectNgGlyphsConfig();\n /**\n * Define the name of the glyph to display\n */\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n /**\n * Define the glyphset to use\n */\n this.glyphset = input(this.glyphsets.defaultGlyphset, ...(ngDevMode ? [{ debugName: \"glyphset\" }] : []));\n /**\n * Define the optical size of the glyph\n */\n this.opticalSize = input(this.config.opticalSize, ...(ngDevMode ? [{ debugName: \"opticalSize\", transform: numberAttribute }] : [{\n transform: numberAttribute,\n }]));\n /**\n * Define the weight of the glyph\n */\n this.weight = input(this.config.weight, ...(ngDevMode ? [{ debugName: \"weight\", transform: numberAttribute }] : [{ transform: numberAttribute }]));\n /**\n * Define the grade of the glyph\n */\n this.grade = input(this.config.grade, ...(ngDevMode ? [{ debugName: \"grade\", transform: numberAttribute }] : [{ transform: numberAttribute }]));\n /**\n * Define the fill of the glyph\n */\n this.fill = input(this.config.fill, ...(ngDevMode ? [{ debugName: \"fill\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * Define the size of the glyph\n */\n this.size = input(this.config.size, ...(ngDevMode ? [{ debugName: \"size\", transform: coerceCssPixelValue }] : [{ transform: coerceCssPixelValue }]));\n /**\n * Define the color of the glyph\n */\n this.color = input(this.config.color, ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n /**\n * Derive the glyphset class from the glyphset name\n */\n this.glyphsetClass = computed(() => {\n const glyphset = this.glyphsets.glyphsets.find(glyphset => glyphset.name === this.glyphset());\n if (!glyphset) {\n throw new Error(`The glyphset \"${this.glyphset()}\" does not exist. Please provide a valid glyphset.`);\n }\n return glyphset.baseClass;\n }, ...(ngDevMode ? [{ debugName: \"glyphsetClass\" }] : []));\n /**\n * Define the font variation settings of the glyph\n */\n this.fontVariationSettings = computed(() => {\n return `'FILL' ${this.fill() ? 1 : 0}, 'wght' ${this.weight()}, 'GRAD' ${this.grade()}, 'opsz' ${this.opticalSize()}`;\n }, ...(ngDevMode ? [{ debugName: \"fontVariationSettings\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgGlyph, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: NgGlyph, isStandalone: true, selector: \"ng-glyph\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null }, glyphset: { classPropertyName: \"glyphset\", publicName: \"glyphset\", isSignal: true, isRequired: false, transformFunction: null }, opticalSize: { classPropertyName: \"opticalSize\", publicName: \"opticalSize\", isSignal: true, isRequired: false, transformFunction: null }, weight: { classPropertyName: \"weight\", publicName: \"weight\", isSignal: true, isRequired: false, transformFunction: null }, grade: { classPropertyName: \"grade\", publicName: \"grade\", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: \"fill\", publicName: \"fill\", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { \"class\": \"glyphsetClass()\", \"textContent\": \"name()\", \"style.--ng-glyph__size\": \"size()\", \"style.color\": \"color()\", \"style.font-variation-settings\": \"fontVariationSettings()\" } }, ngImport: i0, template: ``, isInline: true, styles: [\":host{display:inline-block;width:var(--ng-glyph__size);height:var(--ng-glyph__size);font-size:var(--ng-glyph__size);overflow:hidden}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgGlyph, decorators: [{\n type: Component,\n args: [{ selector: 'ng-glyph', standalone: true, template: ``, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n '[class]': 'glyphsetClass()',\n '[textContent]': 'name()',\n '[style.--ng-glyph__size]': 'size()',\n '[style.color]': 'color()',\n '[style.font-variation-settings]': 'fontVariationSettings()',\n }, styles: [\":host{display:inline-block;width:var(--ng-glyph__size);height:var(--ng-glyph__size);font-size:var(--ng-glyph__size);overflow:hidden}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x5cGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvZ2x5cGgvZ2x5cGguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsS0FBSyxFQUNMLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQWdCM0QsTUFBTSxPQUFPLE9BQU87SUFkcEI7UUFlRTs7V0FFRztRQUNjLGNBQVMsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUU5Qzs7V0FFRztRQUNjLFdBQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBRWpEOztXQUVHO1FBQ00sU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLCtDQUFVLENBQUM7UUFFekM7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxvREFBQyxDQUFDO1FBRTFEOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLCtDQUNsRCxTQUFTLEVBQUUsZUFBZSxPQUQwQjtnQkFDcEQsU0FBUyxFQUFFLGVBQWU7YUFDM0IsR0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDTSxXQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSwwQ0FBSSxTQUFTLEVBQUUsZUFBZSxPQUE1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsR0FBQyxDQUFDO1FBRTVFOztXQUVHO1FBQ00sVUFBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUsseUNBQUksU0FBUyxFQUFFLGVBQWUsT0FBNUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEdBQUMsQ0FBQztRQUUxRTs7V0FFRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLHdDQUFJLFNBQVMsRUFBRSxnQkFBZ0IsT0FBN0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsR0FBQyxDQUFDO1FBRXpFOztXQUVHO1FBQ00sU0FBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksd0NBQUksU0FBUyxFQUFFLG1CQUFtQixPQUFoQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxHQUFDLENBQUM7UUFFNUU7O1dBRUc7UUFDTSxVQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxpREFBQyxDQUFDO1FBRTFDOztXQUVHO1FBQ2dCLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQzVDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQzlDLENBQUM7WUFFRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FDYixpQkFBaUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxvREFBb0QsQ0FDckYsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDNUIsQ0FBQyx5REFBQyxDQUFDO1FBRUg7O1dBRUc7UUFDZ0IsMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2RCxPQUFPLFVBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3BCLFlBQVksSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNwRixDQUFDLGlFQUFDLENBQUM7S0FDSjs4R0E5RVksT0FBTztrR0FBUCxPQUFPLDZ1Q0FYUixFQUFFOzsyRkFXRCxPQUFPO2tCQWRuQixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFlBQ04sRUFBRSxtQkFFSyx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLFNBQVMsRUFBRSxpQkFBaUI7d0JBQzVCLGVBQWUsRUFBRSxRQUFRO3dCQUN6QiwwQkFBMEIsRUFBRSxRQUFRO3dCQUNwQyxlQUFlLEVBQUUsU0FBUzt3QkFDMUIsaUNBQWlDLEVBQUUseUJBQXlCO3FCQUM3RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBpbnB1dCxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdE5nR2x5cGhzQ29uZmlnIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2dseXBoLWNvbmZpZy5wcm92aWRlcic7XG5pbXBvcnQgeyBpbmplY3ROZ0dseXBocyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9nbHlwaC5wcm92aWRlcic7XG5pbXBvcnQgeyBjb2VyY2VDc3NQaXhlbFZhbHVlIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1nbHlwaCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgYCxcbiAgc3R5bGVVcmw6ICcuL2dseXBoLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICdnbHlwaHNldENsYXNzKCknLFxuICAgICdbdGV4dENvbnRlbnRdJzogJ25hbWUoKScsXG4gICAgJ1tzdHlsZS4tLW5nLWdseXBoX19zaXplXSc6ICdzaXplKCknLFxuICAgICdbc3R5bGUuY29sb3JdJzogJ2NvbG9yKCknLFxuICAgICdbc3R5bGUuZm9udC12YXJpYXRpb24tc2V0dGluZ3NdJzogJ2ZvbnRWYXJpYXRpb25TZXR0aW5ncygpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdHbHlwaCB7XG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGF2YWlsYWJsZSBnbHlwaHNldHNcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZ2x5cGhzZXRzID0gaW5qZWN0TmdHbHlwaHMoKTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0TmdHbHlwaHNDb25maWcoKTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBuYW1lIG9mIHRoZSBnbHlwaCB0byBkaXNwbGF5XG4gICAqL1xuICByZWFkb25seSBuYW1lID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIGdseXBoc2V0IHRvIHVzZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2x5cGhzZXQgPSBpbnB1dCh0aGlzLmdseXBoc2V0cy5kZWZhdWx0R2x5cGhzZXQpO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIG9wdGljYWwgc2l6ZSBvZiB0aGUgZ2x5cGhcbiAgICovXG4gIHJlYWRvbmx5IG9wdGljYWxTaXplID0gaW5wdXQodGhpcy5jb25maWcub3B0aWNhbFNpemUsIHtcbiAgICB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgd2VpZ2h0IG9mIHRoZSBnbHlwaFxuICAgKi9cbiAgcmVhZG9ubHkgd2VpZ2h0ID0gaW5wdXQodGhpcy5jb25maWcud2VpZ2h0LCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIGdyYWRlIG9mIHRoZSBnbHlwaFxuICAgKi9cbiAgcmVhZG9ubHkgZ3JhZGUgPSBpbnB1dCh0aGlzLmNvbmZpZy5ncmFkZSwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBmaWxsIG9mIHRoZSBnbHlwaFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsbCA9IGlucHV0KHRoaXMuY29uZmlnLmZpbGwsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHNpemUgb2YgdGhlIGdseXBoXG4gICAqL1xuICByZWFkb25seSBzaXplID0gaW5wdXQodGhpcy5jb25maWcuc2l6ZSwgeyB0cmFuc2Zvcm06IGNvZXJjZUNzc1BpeGVsVmFsdWUgfSk7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgY29sb3Igb2YgdGhlIGdseXBoXG4gICAqL1xuICByZWFkb25seSBjb2xvciA9IGlucHV0KHRoaXMuY29uZmlnLmNvbG9yKTtcblxuICAvKipcbiAgICogRGVyaXZlIHRoZSBnbHlwaHNldCBjbGFzcyBmcm9tIHRoZSBnbHlwaHNldCBuYW1lXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2x5cGhzZXRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnbHlwaHNldCA9IHRoaXMuZ2x5cGhzZXRzLmdseXBoc2V0cy5maW5kKFxuICAgICAgZ2x5cGhzZXQgPT4gZ2x5cGhzZXQubmFtZSA9PT0gdGhpcy5nbHlwaHNldCgpLFxuICAgICk7XG5cbiAgICBpZiAoIWdseXBoc2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUaGUgZ2x5cGhzZXQgXCIke3RoaXMuZ2x5cGhzZXQoKX1cIiBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBnbHlwaHNldC5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2x5cGhzZXQuYmFzZUNsYXNzO1xuICB9KTtcblxuICAvKipcbiAgICogRGVmaW5lIHRoZSBmb250IHZhcmlhdGlvbiBzZXR0aW5ncyBvZiB0aGUgZ2x5cGhcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBmb250VmFyaWF0aW9uU2V0dGluZ3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGAnRklMTCcgJHtcbiAgICAgIHRoaXMuZmlsbCgpID8gMSA6IDBcbiAgICB9LCAnd2dodCcgJHt0aGlzLndlaWdodCgpfSwgJ0dSQUQnICR7dGhpcy5ncmFkZSgpfSwgJ29wc3onICR7dGhpcy5vcHRpY2FsU2l6ZSgpfWA7XG4gIH0pO1xufVxuIl19","/**\n * Helper function to create an object that represents a feature.\n */\nexport function createFeature(kind, providers) {\n return { ɵkind: kind, ɵproviders: providers };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcHJvdmlkZXJzL2ZlYXR1cmVzL2ZlYXR1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQTs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLElBQWlCLEVBQ2pCLFNBQXFCO0lBRXJCLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZSA9XG4gIE5nSWNvbkZlYXR1cmU8TmdJY29uRmVhdHVyZUtpbmQuQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZT47XG5cbmV4cG9ydCB0eXBlIEV4Y2VwdGlvbkxvZ2dlckZlYXR1cmUgPVxuICBOZ0ljb25GZWF0dXJlPE5nSWNvbkZlYXR1cmVLaW5kLkV4Y2VwdGlvbkxvZ2dlckZlYXR1cmU+O1xuXG5leHBvcnQgdHlwZSBOZ0ljb25GZWF0dXJlcyA9XG4gIHwgQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZVxuICB8IEV4Y2VwdGlvbkxvZ2dlckZlYXR1cmU7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2YgZmVhdHVyZXMgYXMgYW4gZW51bSB0byB1bmlxdWVseSB0eXBlIGVhY2ggZmVhdHVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gTmdJY29uRmVhdHVyZUtpbmQge1xuICBDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlLFxuICBFeGNlcHRpb25Mb2dnZXJGZWF0dXJlLFxufVxuXG4vKipcbiAqIEhlbHBlciB0eXBlIHRvIHJlcHJlc2VudCBhIGZlYXR1cmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdJY29uRmVhdHVyZTxGZWF0dXJlS2luZCBleHRlbmRzIE5nSWNvbkZlYXR1cmVLaW5kPiB7XG4gIMm1a2luZDogRmVhdHVyZUtpbmQ7XG4gIMm1cHJvdmlkZXJzOiBQcm92aWRlcltdO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIGZlYXR1cmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGZWF0dXJlPEZlYXR1cmVLaW5kIGV4dGVuZHMgTmdJY29uRmVhdHVyZUtpbmQ+KFxuICBraW5kOiBGZWF0dXJlS2luZCxcbiAgcHJvdmlkZXJzOiBQcm92aWRlcltdLFxuKTogTmdJY29uRmVhdHVyZTxGZWF0dXJlS2luZD4ge1xuICByZXR1cm4geyDJtWtpbmQ6IGtpbmQsIMm1cHJvdmlkZXJzOiBwcm92aWRlcnMgfTtcbn1cbiJdfQ==","import { InjectionToken, inject } from '@angular/core';\nimport { createFeature, } from './features';\nexport const NgIconPreProcessorToken = new InjectionToken('Ng Icon Pre Processor');\nexport const NgIconPostProcessorToken = new InjectionToken('Ng Icon Post Processor');\nexport function injectNgIconPreProcessor() {\n return inject(NgIconPreProcessorToken, { optional: true }) ?? (icon => icon);\n}\nexport function injectNgIconPostProcessor() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return inject(NgIconPostProcessorToken, { optional: true }) ?? (() => { });\n}\nfunction preprocessIcon(icon) {\n // rename all style attributes to data-style to avoid being blocked by the CSP\n return icon.replace(/style\\s*=/g, 'data-style=');\n}\nfunction postprocessIcon(element) {\n // find all elements with a data-style attribute and get the styles from it\n // and apply them to the element using the style property and remove the data-style attribute\n const elements = element.querySelectorAll('[data-style]');\n for (const element of Array.from(elements)) {\n const styles = element.getAttribute('data-style');\n styles?.split(';').forEach(style => {\n const [property, value] = style.split(':');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element.style[property.trim()] = value.trim();\n });\n element.removeAttribute('data-style');\n }\n}\n/**\n * Process icons in a way that is compliant with the content security policy\n */\nexport function withContentSecurityPolicy() {\n return createFeature(0 /* NgIconFeatureKind.ContentSecurityPolicyFeature */, [\n { provide: NgIconPreProcessorToken, useValue: preprocessIcon },\n { provide: NgIconPostProcessorToken, useValue: postprocessIcon },\n ]);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3ZpZGVycy9mZWF0dXJlcy9jc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLFlBQVksQ0FBQztBQUtwQixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FDdkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDeEQsd0JBQXdCLENBQ3pCLENBQUM7QUFFRixNQUFNLFVBQVUsd0JBQXdCO0lBQ3RDLE9BQU8sTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLGdFQUFnRTtJQUNoRSxPQUFPLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQVk7SUFDbEMsOEVBQThFO0lBQzlFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE9BQWlDO0lBQ3hELDJFQUEyRTtJQUMzRSw2RkFBNkY7SUFDN0YsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUN2QyxjQUFjLENBQ2YsQ0FBQztJQUVGLEtBQUssTUFBTSxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEQsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLDhEQUE4RDtZQUM5RCxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTyxhQUFhLHlEQUFpRDtRQUNuRSxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFO1FBQzlELEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUU7S0FDakUsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmUsXG4gIE5nSWNvbkZlYXR1cmVLaW5kLFxuICBjcmVhdGVGZWF0dXJlLFxufSBmcm9tICcuL2ZlYXR1cmVzJztcblxuZXhwb3J0IHR5cGUgTmdJY29uUHJlUHJvY2Vzc29yID0gKGljb246IHN0cmluZykgPT4gc3RyaW5nO1xuZXhwb3J0IHR5cGUgTmdJY29uUG9zdFByb2Nlc3NvciA9IChlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBOZ0ljb25QcmVQcm9jZXNzb3JUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ0ljb25QcmVQcm9jZXNzb3I+KFxuICAnTmcgSWNvbiBQcmUgUHJvY2Vzc29yJyxcbik7XG5cbmV4cG9ydCBjb25zdCBOZ0ljb25Qb3N0UHJvY2Vzc29yVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdJY29uUG9zdFByb2Nlc3Nvcj4oXG4gICdOZyBJY29uIFBvc3QgUHJvY2Vzc29yJyxcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ0ljb25QcmVQcm9jZXNzb3IoKTogTmdJY29uUHJlUHJvY2Vzc29yIHtcbiAgcmV0dXJuIGluamVjdChOZ0ljb25QcmVQcm9jZXNzb3JUb2tlbiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyAoaWNvbiA9PiBpY29uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5nSWNvblBvc3RQcm9jZXNzb3IoKTogTmdJY29uUG9zdFByb2Nlc3NvciB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcmV0dXJuIGluamVjdChOZ0ljb25Qb3N0UHJvY2Vzc29yVG9rZW4sIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gKCgpID0+IHt9KTtcbn1cblxuZnVuY3Rpb24gcHJlcHJvY2Vzc0ljb24oaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gcmVuYW1lIGFsbCBzdHlsZSBhdHRyaWJ1dGVzIHRvIGRhdGEtc3R5bGUgdG8gYXZvaWQgYmVpbmcgYmxvY2tlZCBieSB0aGUgQ1NQXG4gIHJldHVybiBpY29uLnJlcGxhY2UoL3N0eWxlXFxzKj0vZywgJ2RhdGEtc3R5bGU9Jyk7XG59XG5cbmZ1bmN0aW9uIHBvc3Rwcm9jZXNzSWNvbihlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQpOiB2b2lkIHtcbiAgLy8gZmluZCBhbGwgZWxlbWVudHMgd2l0aCBhIGRhdGEtc3R5bGUgYXR0cmlidXRlIGFuZCBnZXQgdGhlIHN0eWxlcyBmcm9tIGl0XG4gIC8vIGFuZCBhcHBseSB0aGVtIHRvIHRoZSBlbGVtZW50IHVzaW5nIHRoZSBzdHlsZSBwcm9wZXJ0eSBhbmQgcmVtb3ZlIHRoZSBkYXRhLXN0eWxlIGF0dHJpYnV0ZVxuICBjb25zdCBlbGVtZW50cyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQ+KFxuICAgICdbZGF0YS1zdHlsZV0nLFxuICApO1xuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBBcnJheS5mcm9tKGVsZW1lbnRzKSkge1xuICAgIGNvbnN0IHN0eWxlcyA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXN0eWxlJyk7XG5cbiAgICBzdHlsZXM/LnNwbGl0KCc7JykuZm9yRWFjaChzdHlsZSA9PiB7XG4gICAgICBjb25zdCBbcHJvcGVydHksIHZhbHVlXSA9IHN0eWxlLnNwbGl0KCc6Jyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eS50cmltKCkgYXMgYW55XSA9IHZhbHVlLnRyaW0oKTtcbiAgICB9KTtcblxuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXN0eWxlJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9jZXNzIGljb25zIGluIGEgd2F5IHRoYXQgaXMgY29tcGxpYW50IHdpdGggdGhlIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ29udGVudFNlY3VyaXR5UG9saWN5KCk6IENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmUge1xuICByZXR1cm4gY3JlYXRlRmVhdHVyZShOZ0ljb25GZWF0dXJlS2luZC5Db250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlLCBbXG4gICAgeyBwcm92aWRlOiBOZ0ljb25QcmVQcm9jZXNzb3JUb2tlbiwgdXNlVmFsdWU6IHByZXByb2Nlc3NJY29uIH0sXG4gICAgeyBwcm92aWRlOiBOZ0ljb25Qb3N0UHJvY2Vzc29yVG9rZW4sIHVzZVZhbHVlOiBwb3N0cHJvY2Vzc0ljb24gfSxcbiAgXSk7XG59XG4iXX0=","import { InjectionToken, inject } from '@angular/core';\nimport { createFeature, } from './features';\nexport const LoggerToken = new InjectionToken('Ng Icon Logger');\n/**\n * The default logger implementation that logs to the console\n */\nexport class DefaultLogger {\n log(message) {\n console.log(message);\n }\n warn(message) {\n console.warn(message);\n }\n error(message) {\n console.error(message);\n }\n}\n/**\n * A logger implementation that throws an error on warnings and errors\n */\nexport class ExceptionLogger {\n log(message) {\n console.log(message);\n }\n warn(message) {\n throw new Error(message);\n }\n error(message) {\n throw new Error(message);\n }\n}\nexport function injectLogger() {\n return inject(LoggerToken, { optional: true }) ?? new DefaultLogger();\n}\n/**\n * Throw exceptions on warnings and errors\n */\nexport function withExceptionLogger() {\n return createFeature(1 /* NgIconFeatureKind.ExceptionLoggerFeature */, [\n { provide: LoggerToken, useClass: ExceptionLogger },\n ]);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3ZpZGVycy9mZWF0dXJlcy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLFlBQVksQ0FBQztBQVFwQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQVMsZ0JBQWdCLENBQUMsQ0FBQztBQUV4RTs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLEdBQUcsQ0FBQyxPQUFlO1FBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFlO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNELEtBQUssQ0FBQyxPQUFlO1FBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixHQUFHLENBQUMsT0FBZTtRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZTtRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZTtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxZQUFZO0lBQzFCLE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7QUFDeEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLGFBQWEsbURBQTJDO1FBQzdELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFO0tBQ3BELENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFeGNlcHRpb25Mb2dnZXJGZWF0dXJlLFxuICBOZ0ljb25GZWF0dXJlS2luZCxcbiAgY3JlYXRlRmVhdHVyZSxcbn0gZnJvbSAnLi9mZWF0dXJlcyc7XG5cbmludGVyZmFjZSBMb2dnZXIge1xuICBsb2cobWVzc2FnZTogc3RyaW5nKTogdm9pZDtcbiAgd2FybihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgTG9nZ2VyVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9nZ2VyPignTmcgSWNvbiBMb2dnZXInKTtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBsb2dnZXIgaW1wbGVtZW50YXRpb24gdGhhdCBsb2dzIHRvIHRoZSBjb25zb2xlXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0TG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VyIHtcbiAgbG9nKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICB9XG4gIHdhcm4obWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICB9XG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGxvZ2dlciBpbXBsZW1lbnRhdGlvbiB0aGF0IHRocm93cyBhbiBlcnJvciBvbiB3YXJuaW5ncyBhbmQgZXJyb3JzXG4gKi9cbmV4cG9ydCBjbGFzcyBFeGNlcHRpb25Mb2dnZXIgaW1wbGVtZW50cyBMb2dnZXIge1xuICBsb2cobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TG9nZ2VyKCk6IExvZ2dlciB7XG4gIHJldHVybiBpbmplY3QoTG9nZ2VyVG9rZW4sIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gbmV3IERlZmF1bHRMb2dnZXIoKTtcbn1cblxuLyoqXG4gKiBUaHJvdyBleGNlcHRpb25zIG9uIHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhFeGNlcHRpb25Mb2dnZXIoKTogRXhjZXB0aW9uTG9nZ2VyRmVhdHVyZSB7XG4gIHJldHVybiBjcmVhdGVGZWF0dXJlKE5nSWNvbkZlYXR1cmVLaW5kLkV4Y2VwdGlvbkxvZ2dlckZlYXR1cmUsIFtcbiAgICB7IHByb3ZpZGU6IExvZ2dlclRva2VuLCB1c2VDbGFzczogRXhjZXB0aW9uTG9nZ2VyIH0sXG4gIF0pO1xufVxuIl19","import { InjectionToken, inject } from '@angular/core';\nexport const NgIconConfigToken = new InjectionToken('Ng Icon Config');\n/**\n * Provide the configuration for the icons\n * @param config The configuration to use\n */\nexport function provideNgIconsConfig(config, ...features) {\n return [\n {\n provide: NgIconConfigToken,\n useValue: config,\n },\n features.map(feature => feature.ɵproviders),\n ];\n}\n/**\n * Inject the configuration for the icons\n * @returns The configuration to use\n * @internal\n */\nexport function injectNgIconConfig() {\n return inject(NgIconConfigToken, { optional: true }) ?? {};\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1jb25maWcucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcHJvdmlkZXJzL2ljb24tY29uZmlnLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBWWpFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxnQkFBZ0IsQ0FDakIsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsTUFBNkIsRUFDN0IsR0FBRyxRQUEwQjtJQUU3QixPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFFBQVEsRUFBRSxNQUFNO1NBQ2pCO1FBQ0QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7S0FDNUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nSWNvbkZlYXR1cmVzIH0gZnJvbSAnLi9mZWF0dXJlcy9mZWF0dXJlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdJY29uQ29uZmlnIHtcbiAgLyoqIERlZmluZSB0aGUgZGVmYXVsdCBzaXplIG9mIGljb25zICovXG4gIHNpemU/OiBzdHJpbmc7XG4gIC8qKiBEZWZpbmUgdGhlIGRlZmF1bHQgY29sb3Igb2YgaWNvbnMgKi9cbiAgY29sb3I/OiBzdHJpbmc7XG4gIC8qKiBEZWZpbmUgdGhlIGRlZmF1bHQgc3Ryb2tlIHdpZHRoIG9mIGljb25zICovXG4gIHN0cm9rZVdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgTmdJY29uQ29uZmlnVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdJY29uQ29uZmlnPihcbiAgJ05nIEljb24gQ29uZmlnJyxcbik7XG5cbi8qKlxuICogUHJvdmlkZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGljb25zXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uIHRvIHVzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZU5nSWNvbnNDb25maWcoXG4gIGNvbmZpZzogUGFydGlhbDxOZ0ljb25Db25maWc+LFxuICAuLi5mZWF0dXJlczogTmdJY29uRmVhdHVyZXNbXVxuKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTmdJY29uQ29uZmlnVG9rZW4sXG4gICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgIH0sXG4gICAgZmVhdHVyZXMubWFwKGZlYXR1cmUgPT4gZmVhdHVyZS7JtXByb3ZpZGVycyksXG4gIF07XG59XG5cbi8qKlxuICogSW5qZWN0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgaWNvbnNcbiAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIHRvIHVzZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ0ljb25Db25maWcoKTogTmdJY29uQ29uZmlnIHtcbiAgcmV0dXJuIGluamVjdChOZ0ljb25Db25maWdUb2tlbiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyB7fTtcbn1cbiJdfQ==","import { inject, InjectionToken } from '@angular/core';\nexport const NgIconLoaderToken = new InjectionToken('Ng Icon Loader Token');\n/**\n * Helper function to create an object that represents a Loader feature.\n */\nfunction loaderFeature(kind, providers) {\n return { kind: kind, providers: providers };\n}\nexport const NgIconCacheToken = new InjectionToken('Ng Icon Cache Token');\n/**\n * Add caching to the loader. This will prevent the loader from being called multiple times for the same icon name.\n */\nexport function withCaching() {\n return loaderFeature(0 /* NgIconLoaderFeatureKind.CachingFeature */, [\n { provide: NgIconCacheToken, useValue: new Map() },\n ]);\n}\n/**\n * Provide a function that will return the SVG content for a given icon name.\n * @param loader The function that will return the SVG content for a given icon name.\n * @param features The list of features to apply to the loader.\n * @returns The SVG content for a given icon name.\n */\nexport function provideNgIconLoader(loader, ...features) {\n return [\n { provide: NgIconLoaderToken, useValue: loader },\n features.map(feature => feature.providers),\n ];\n}\n/**\n * Inject the function that will return the SVG content for a given icon name.\n */\nexport function injectNgIconLoader() {\n return inject(NgIconLoaderToken, { optional: true });\n}\n/**\n * Inject the cache that will store the SVG content for a given icon name.\n */\nexport function injectNgIconLoaderCache() {\n return inject(NgIconCacheToken, { optional: true });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1sb2FkZXIucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcHJvdmlkZXJzL2ljb24tbG9hZGVyLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBT2pFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FBQztBQWNGOztHQUVHO0FBQ0gsU0FBUyxhQUFhLENBQ3BCLElBQWlCLEVBQ2pCLFNBQXFCO0lBRXJCLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUM5QyxDQUFDO0FBU0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQ2hELHFCQUFxQixDQUN0QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLGFBQWEsaURBQXlDO1FBQzNELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsRUFBa0IsRUFBRTtLQUNuRSxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE1BQW9CLEVBQ3BCLEdBQUcsUUFBZ0M7SUFFbkMsT0FBTztRQUNMLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7UUFDaEQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FDM0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgTmdJY29uTG9hZGVyID0gKFxuICBuYW1lOiBzdHJpbmcsXG4pID0+IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPiB8IHN0cmluZztcblxuZXhwb3J0IGNvbnN0IE5nSWNvbkxvYWRlclRva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5nSWNvbkxvYWRlcj4oXG4gICdOZyBJY29uIExvYWRlciBUb2tlbicsXG4pO1xuXG4vKipcbiAqIFRoZSBsaXN0IG9mIGZlYXR1cmVzIGFzIGFuIGVudW0gdG8gdW5pcXVlbHkgdHlwZSBlYWNoIGZlYXR1cmUuXG4gKi9cbmNvbnN0IGVudW0gTmdJY29uTG9hZGVyRmVhdHVyZUtpbmQge1xuICBDYWNoaW5nRmVhdHVyZSxcbn1cblxuaW50ZXJmYWNlIE5nSWNvbkxvYWRlckZlYXR1cmU8RmVhdHVyZUtpbmQgZXh0ZW5kcyBOZ0ljb25Mb2FkZXJGZWF0dXJlS2luZD4ge1xuICBraW5kOiBGZWF0dXJlS2luZDtcbiAgcHJvdmlkZXJzOiBQcm92aWRlcltdO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIExvYWRlciBmZWF0dXJlLlxuICovXG5mdW5jdGlvbiBsb2FkZXJGZWF0dXJlPEZlYXR1cmVLaW5kIGV4dGVuZHMgTmdJY29uTG9hZGVyRmVhdHVyZUtpbmQ+KFxuICBraW5kOiBGZWF0dXJlS2luZCxcbiAgcHJvdmlkZXJzOiBQcm92aWRlcltdLFxuKTogTmdJY29uTG9hZGVyRmVhdHVyZTxGZWF0dXJlS2luZD4ge1xuICByZXR1cm4geyBraW5kOiBraW5kLCBwcm92aWRlcnM6IHByb3ZpZGVycyB9O1xufVxuXG50eXBlIENhY2hpbmdGZWF0dXJlID1cbiAgTmdJY29uTG9hZGVyRmVhdHVyZTxOZ0ljb25Mb2FkZXJGZWF0dXJlS2luZC5DYWNoaW5nRmVhdHVyZT47XG5cbnR5cGUgTmdJY29uTG9hZGVyRmVhdHVyZXMgPSBDYWNoaW5nRmVhdHVyZTtcblxuZXhwb3J0IHR5cGUgTmdJY29uTG9hZGVyQ2FjaGUgPSBNYXA8c3RyaW5nLCBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4+O1xuXG5leHBvcnQgY29uc3QgTmdJY29uQ2FjaGVUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ0ljb25Mb2FkZXJDYWNoZT4oXG4gICdOZyBJY29uIENhY2hlIFRva2VuJyxcbik7XG5cbi8qKlxuICogQWRkIGNhY2hpbmcgdG8gdGhlIGxvYWRlci4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIGxvYWRlciBmcm9tIGJlaW5nIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3IgdGhlIHNhbWUgaWNvbiBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aENhY2hpbmcoKTogQ2FjaGluZ0ZlYXR1cmUge1xuICByZXR1cm4gbG9hZGVyRmVhdHVyZShOZ0ljb25Mb2FkZXJGZWF0dXJlS2luZC5DYWNoaW5nRmVhdHVyZSwgW1xuICAgIHsgcHJvdmlkZTogTmdJY29uQ2FjaGVUb2tlbiwgdXNlVmFsdWU6IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkgfSxcbiAgXSk7XG59XG5cbi8qKlxuICogUHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAqIEBwYXJhbSBsb2FkZXIgVGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAqIEBwYXJhbSBmZWF0dXJlcyBUaGUgbGlzdCBvZiBmZWF0dXJlcyB0byBhcHBseSB0byB0aGUgbG9hZGVyLlxuICogQHJldHVybnMgVGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ0ljb25Mb2FkZXIoXG4gIGxvYWRlcjogTmdJY29uTG9hZGVyLFxuICAuLi5mZWF0dXJlczogTmdJY29uTG9hZGVyRmVhdHVyZXNbXVxuKSB7XG4gIHJldHVybiBbXG4gICAgeyBwcm92aWRlOiBOZ0ljb25Mb2FkZXJUb2tlbiwgdXNlVmFsdWU6IGxvYWRlciB9LFxuICAgIGZlYXR1cmVzLm1hcChmZWF0dXJlID0+IGZlYXR1cmUucHJvdmlkZXJzKSxcbiAgXTtcbn1cblxuLyoqXG4gKiBJbmplY3QgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5nSWNvbkxvYWRlcigpOiBOZ0ljb25Mb2FkZXIgfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChOZ0ljb25Mb2FkZXJUb2tlbiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBJbmplY3QgdGhlIGNhY2hlIHRoYXQgd2lsbCBzdG9yZSB0aGUgU1ZHIGNvbnRlbnQgZm9yIGEgZ2l2ZW4gaWNvbiBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TmdJY29uTG9hZGVyQ2FjaGUoKTogTmdJY29uTG9hZGVyQ2FjaGUgfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChOZ0ljb25DYWNoZVRva2VuLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xufVxuIl19","import { InjectionToken, inject } from '@angular/core';\n/**\n * Define the icons to use\n * @param icons The icons to provide\n */\nexport function provideIcons(icons) {\n return [\n {\n provide: NgIconsToken,\n useFactory: (parentIcons = inject(NgIconsToken, {\n optional: true,\n skipSelf: true,\n })) => ({\n ...parentIcons?.reduce((acc, icons) => ({ ...acc, ...icons }), {}),\n ...icons,\n }),\n multi: true,\n },\n ];\n}\nexport const NgIconsToken = new InjectionToken('Icons Token');\n/**\n * Inject the icons to use\n * @returns The icons to use\n * @internal\n */\nexport function injectNgIcons() {\n return inject(NgIconsToken, { optional: true }) ?? [];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9wcm92aWRlcnMvaWNvbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQTZCO0lBQ3hELE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFVBQVUsRUFBRSxDQUNWLGNBQWMsTUFBTSxDQUEyQixZQUFZLEVBQUU7Z0JBQzNELFFBQVEsRUFBRSxJQUFJO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxFQUNGLEVBQUUsQ0FBQyxDQUFDO2dCQUNKLEdBQUcsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNsRSxHQUFHLEtBQUs7YUFDVCxDQUFDO1lBQ0YsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUM1QyxhQUFhLENBQ2QsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGVmaW5lIHRoZSBpY29ucyB0byB1c2VcbiAqIEBwYXJhbSBpY29ucyBUaGUgaWNvbnMgdG8gcHJvdmlkZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUljb25zKGljb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTmdJY29uc1Rva2VuLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBwYXJlbnRJY29ucyA9IGluamVjdDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W10+KE5nSWNvbnNUb2tlbiwge1xuICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICAgIHNraXBTZWxmOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgICkgPT4gKHtcbiAgICAgICAgLi4ucGFyZW50SWNvbnM/LnJlZHVjZSgoYWNjLCBpY29ucykgPT4gKHsgLi4uYWNjLCAuLi5pY29ucyB9KSwge30pLFxuICAgICAgICAuLi5pY29ucyxcbiAgICAgIH0pLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXTtcbn1cblxuZXhwb3J0IGNvbnN0IE5nSWNvbnNUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W10+KFxuICAnSWNvbnMgVG9rZW4nLFxuKTtcblxuLyoqXG4gKiBJbmplY3QgdGhlIGljb25zIHRvIHVzZVxuICogQHJldHVybnMgVGhlIGljb25zIHRvIHVzZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ0ljb25zKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXSB7XG4gIHJldHVybiBpbmplY3QoTmdJY29uc1Rva2VuLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IFtdO1xufVxuIl19","import { isObservable } from 'rxjs';\n/**\n * A loader may return a promise, an observable or a string. This function will coerce the result into a promise.\n * @returns\n */\nexport function coerceLoaderResult(result) {\n if (typeof result === 'string') {\n return Promise.resolve(result);\n }\n if (isObservable(result)) {\n // toPromise is deprecated, but we can't use lastValueFrom because it's not available in RxJS 6\n // so for now we'll just use toPromise\n return result.toPromise();\n }\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvYXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQXFEO0lBRXJELElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3pCLCtGQUErRjtRQUMvRixzQ0FBc0M7UUFDdEMsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFxQixDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgaXNPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQSBsb2FkZXIgbWF5IHJldHVybiBhIHByb21pc2UsIGFuIG9ic2VydmFibGUgb3IgYSBzdHJpbmcuIFRoaXMgZnVuY3Rpb24gd2lsbCBjb2VyY2UgdGhlIHJlc3VsdCBpbnRvIGEgcHJvbWlzZS5cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VMb2FkZXJSZXN1bHQoXG4gIHJlc3VsdDogUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+IHwgc3RyaW5nLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICB9XG5cbiAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XG4gICAgLy8gdG9Qcm9taXNlIGlzIGRlcHJlY2F0ZWQsIGJ1dCB3ZSBjYW4ndCB1c2UgbGFzdFZhbHVlRnJvbSBiZWNhdXNlIGl0J3Mgbm90IGF2YWlsYWJsZSBpbiBSeEpTIDZcbiAgICAvLyBzbyBmb3Igbm93IHdlJ2xsIGp1c3QgdXNlIHRvUHJvbWlzZVxuICAgIHJldHVybiByZXN1bHQudG9Qcm9taXNlKCkgYXMgUHJvbWlzZTxzdHJpbmc+O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==","/**\n * Hyphenated to lowerCamelCase\n */\nexport function toPropertyName(str) {\n return str\n .replace(/([^a-zA-Z0-9])+(.)?/g, (_, __, chr) => chr ? chr.toUpperCase() : '')\n .replace(/[^a-zA-Z\\d]/g, '')\n .replace(/^([A-Z])/, m => m.toLowerCase());\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3V0aWxzL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBVztJQUN4QyxPQUFPLEdBQUc7U0FDUCxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQzlDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzdCO1NBQ0EsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7U0FDM0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEh5cGhlbmF0ZWQgdG8gbG93ZXJDYW1lbENhc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUHJvcGVydHlOYW1lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKC8oW15hLXpBLVowLTldKSsoLik/L2csIChfLCBfXywgY2hyKSA9PlxuICAgICAgY2hyID8gY2hyLnRvVXBwZXJDYXNlKCkgOiAnJyxcbiAgICApXG4gICAgLnJlcGxhY2UoL1teYS16QS1aXFxkXS9nLCAnJylcbiAgICAucmVwbGFjZSgvXihbQS1aXSkvLCBtID0+IG0udG9Mb3dlckNhc2UoKSk7XG59XG4iXX0=","import { isPlatformServer } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, ElementRef, HostAttributeToken, inject, Injector, input, PLATFORM_ID, Renderer2, runInInjectionContext, } from '@angular/core';\nimport { injectNgIconPostProcessor, injectNgIconPreProcessor, } from '../../providers/features/csp';\nimport { injectLogger } from '../../providers/features/logger';\nimport { injectNgIconConfig } from '../../providers/icon-config.provider';\nimport { injectNgIconLoader, injectNgIconLoaderCache, } from '../../providers/icon-loader.provider';\nimport { injectNgIcons } from '../../providers/icon.provider';\nimport { coerceLoaderResult } from '../../utils/async';\nimport { coerceCssPixelValue } from '../../utils/coercion';\nimport { toPropertyName } from '../../utils/format';\nimport * as i0 from \"@angular/core\";\nlet uniqueId = 0;\nexport class NgIcon {\n constructor() {\n /** Access the global icon config */\n this.config = injectNgIconConfig();\n /** Access the icons */\n this.icons = injectNgIcons();\n /** Access the icon loader if defined */\n this.loader = injectNgIconLoader();\n /** Access the icon cache if defined */\n this.cache = injectNgIconLoaderCache();\n /** Access the pre-processor */\n this.preProcessor = injectNgIconPreProcessor();\n /** Access the post-processor */\n this.postProcessor = injectNgIconPostProcessor();\n /** Access the injector */\n this.injector = inject(Injector);\n /** Access the renderer */\n this.renderer = inject(Renderer2);\n /** Determine the platform we are rendering on */\n this.platform = inject(PLATFORM_ID);\n /** Access the element ref */\n this.elementRef = inject(ElementRef);\n /** A unique id for this instance */\n this.uniqueId = uniqueId++;\n /** Access the logger */\n this.logger = injectLogger();\n /** Define the name of the icon to display */\n this.name = input(...(ngDevMode ? [undefined, { debugName: \"name\" }] : []));\n /** Define the svg of the icon to display */\n this.svg = input(...(ngDevMode ? [undefined, { debugName: \"svg\" }] : []));\n /** Define the size of the icon */\n this.size = input(this.config.size, ...(ngDevMode ? [{ debugName: \"size\", transform: coerceCssPixelValue }] : [{ transform: coerceCssPixelValue }]));\n /** Define the stroke-width of the icon */\n this.strokeWidth = input(this.config.strokeWidth, ...(ngDevMode ? [{ debugName: \"strokeWidth\" }] : []));\n /** Define the color of the icon */\n this.color = input(this.config.color, ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n // update the icon anytime the name or svg changes\n effect(() => this.updateIcon());\n const ariaHidden = inject(new HostAttributeToken('aria-hidden'), {\n optional: true,\n });\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n this.elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n ngOnDestroy() {\n this.svgElement = undefined;\n }\n async updateIcon() {\n const name = this.name();\n const svg = this.svg();\n // if the svg is defined, insert it into the template\n if (svg !== undefined) {\n this.setSvg(svg);\n return;\n }\n if (name === undefined) {\n return;\n }\n const propertyName = toPropertyName(name);\n for (const icons of [...this.icons].reverse()) {\n if (icons[propertyName]) {\n // insert the SVG into the template\n this.setSvg(icons[propertyName]);\n return;\n }\n }\n // if there is a loader defined, use it to load the icon\n if (this.loader) {\n const result = await this.requestIconFromLoader(name);\n // if the result is a string, insert the SVG into the template\n if (result !== null) {\n this.setSvg(result);\n return;\n }\n }\n // if there is no icon with this name warn the user as they probably forgot to import it\n this.logger.warn(`No icon named ${name} was found. You may need to import it using the withIcons function.`);\n }\n setSvg(svg) {\n // if we are on the server, simply innerHTML the svg as we don't have the\n // level of control over the DOM that we do on the client, in otherwords\n // the approach we take to insert the svg on the client will not work on the server\n if (isPlatformServer(this.platform)) {\n this.elementRef.nativeElement.innerHTML = svg;\n // mark this component as server side rendered\n this.elementRef.nativeElement.setAttribute('data-ng-icon-ssr', '');\n return;\n }\n // if this was previously server side rendered, we should check if the svg is the same\n // if it is, we don't need to do anything\n if (this.elementRef.nativeElement.hasAttribute('data-ng-icon-ssr')) {\n // if it is different, we need to remove the server side rendered flag\n this.elementRef.nativeElement.removeAttribute('data-ng-icon-ssr');\n // retrieve the svg element\n this.svgElement =\n this.elementRef.nativeElement.querySelector('svg') ??\n undefined;\n if (this.elementRef.nativeElement.innerHTML === svg) {\n return;\n }\n }\n // remove the old element\n if (this.svgElement) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.svgElement);\n }\n // if the svg is empty, don't insert anything\n if (svg === '') {\n return;\n }\n const template = this.renderer.createElement('template');\n svg = this.replaceIds(svg);\n this.renderer.setProperty(template, 'innerHTML', this.preProcessor(svg));\n this.svgElement = template.content.firstElementChild;\n this.postProcessor(this.svgElement);\n // insert the element into the dom\n this.renderer.appendChild(this.elementRef.nativeElement, this.svgElement);\n }\n replaceIds(svg) {\n // ids are defined like ID_PLACEHOLDER_0, ID_PLACEHOLDER_1, etc.\n // we need to replace these with the actual ids e.g. ng-icon-0-0, ng-icon-0-1, etc.\n // if there are no ids, we don't need to do anything\n if (!svg.includes('ID_PLACEHOLDER_')) {\n return svg;\n }\n // we can just retain the trailing number as the prefix is always the same\n const regex = /ID_PLACEHOLDER_(\\d+)/g;\n // we need to keep track of the ids we have replaced\n const idMap = new Map();\n // find all the matches\n const matches = new Set(svg.match(regex));\n if (matches === null) {\n return svg;\n }\n // replace the ids\n for (const match of matches) {\n const id = match.replace('ID_PLACEHOLDER_', '');\n const placeholder = `ng-icon-${this.uniqueId}-${idMap.size}`;\n idMap.set(id, placeholder);\n svg = svg.replace(new RegExp(match, 'g'), placeholder);\n }\n return svg;\n }\n /**\n * Request the icon from the loader.\n * @param name The name of the icon to load.\n * @returns The SVG content for a given icon name.\n */\n requestIconFromLoader(name) {\n return new Promise(resolve => {\n runInInjectionContext(this.injector, async () => {\n // if we have a cache, check if the icon is already loaded (i.e, it is a string)\n if (this.cache) {\n const cachedResult = this.cache.get(name);\n if (typeof cachedResult === 'string') {\n resolve(cachedResult);\n return;\n }\n // it may be a promise, so we need to await it\n if (cachedResult instanceof Promise) {\n const result = await cachedResult;\n resolve(result);\n return;\n }\n }\n const promise = coerceLoaderResult(this.loader(name));\n // store the promise in the cache so if we get repeated calls (e.g. in a loop) before the loader has resolved\n // then don't call the loader function multiple times\n this.cache?.set(name, promise);\n // await the result of the promise\n const result = await promise;\n // if we have a cache, store the result\n this.cache?.set(name, result);\n resolve(result);\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: NgIcon, isStandalone: true, selector: \"ng-icon\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: false, transformFunction: null }, svg: { classPropertyName: \"svg\", publicName: \"svg\", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: \"strokeWidth\", publicName: \"strokeWidth\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { \"role\": \"img\" }, properties: { \"style.--ng-icon__stroke-width\": \"strokeWidth()\", \"style.--ng-icon__size\": \"size()\", \"style.--ng-icon__color\": \"color()\" } }, ngImport: i0, template: '', isInline: true, styles: [\":host{display:inline-block;width:var(--ng-icon__size, 1em);height:var(--ng-icon__size, 1em);line-height:initial;vertical-align:initial;overflow:hidden}:host ::ng-deep svg{width:inherit;height:inherit;vertical-align:inherit}@layer ng-icon{:host{color:var(--ng-icon__color, currentColor)}}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgIcon, decorators: [{\n type: Component,\n args: [{ selector: 'ng-icon', template: '', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n role: 'img',\n '[style.--ng-icon__stroke-width]': 'strokeWidth()',\n '[style.--ng-icon__size]': 'size()',\n '[style.--ng-icon__color]': 'color()',\n }, styles: [\":host{display:inline-block;width:var(--ng-icon__size, 1em);height:var(--ng-icon__size, 1em);line-height:initial;vertical-align:initial;overflow:hidden}:host ::ng-deep svg{width:inherit;height:inherit;vertical-align:inherit}@layer ng-icon{:host{color:var(--ng-icon__color, currentColor)}}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1QscUJBQXFCLEdBQ3RCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsd0JBQXdCLEdBQ3pCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEdBQ3hCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFLcEQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBZWpCLE1BQU0sT0FBTyxNQUFNO0lBeURqQjtRQXhEQSxvQ0FBb0M7UUFDbkIsV0FBTSxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFFL0MsdUJBQXVCO1FBQ04sVUFBSyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBRXpD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LENBQUM7d0JBQ3RCLE9BQU87b0JBQ1QsQ0FBQztvQkFFRCw4Q0FBOEM7b0JBQzlDLElBQUksWUFBWSxZQUFZLE9BQU8sRUFBRSxDQUFDO3dCQUNwQyxNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQzt3QkFDbEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNoQixPQUFPO29CQUNULENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBRXZELDZHQUE2RztnQkFDN0cscURBQXFEO2dCQUNyRCxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRS9CLGtDQUFrQztnQkFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUM7Z0JBRTdCLHVDQUF1QztnQkFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUU5QixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL09VLE1BQU07a0dBQU4sTUFBTSxnMkJBWFAsRUFBRTs7MkZBV0QsTUFBTTtrQkFibEIsU0FBUzsrQkFDRSxTQUFTLFlBQ1QsRUFBRSxjQUNBLElBQUksbUJBRUMsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixJQUFJLEVBQUUsS0FBSzt3QkFDWCxpQ0FBaUMsRUFBRSxlQUFlO3dCQUNsRCx5QkFBeUIsRUFBRSxRQUFRO3dCQUNuQywwQkFBMEIsRUFBRSxTQUFTO3FCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QXR0cmlidXRlVG9rZW4sXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIGlucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pY29uL2ljb24tbmFtZSc7XG5pbXBvcnQge1xuICBpbmplY3ROZ0ljb25Qb3N0UHJvY2Vzc29yLFxuICBpbmplY3ROZ0ljb25QcmVQcm9jZXNzb3IsXG59IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9mZWF0dXJlcy9jc3AnO1xuaW1wb3J0IHsgaW5qZWN0TG9nZ2VyIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2ZlYXR1cmVzL2xvZ2dlcic7XG5pbXBvcnQgeyBpbmplY3ROZ0ljb25Db25maWcgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvaWNvbi1jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgaW5qZWN0TmdJY29uTG9hZGVyLFxuICBpbmplY3ROZ0ljb25Mb2FkZXJDYWNoZSxcbn0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2ljb24tbG9hZGVyLnByb3ZpZGVyJztcbmltcG9ydCB7IGluamVjdE5nSWNvbnMgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvaWNvbi5wcm92aWRlcic7XG5pbXBvcnQgeyBjb2VyY2VMb2FkZXJSZXN1bHQgfSBmcm9tICcuLi8uLi91dGlscy9hc3luYyc7XG5pbXBvcnQgeyBjb2VyY2VDc3NQaXhlbFZhbHVlIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuaW1wb3J0IHsgdG9Qcm9wZXJ0eU5hbWUgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXQnO1xuXG4vLyBUaGlzIGlzIGEgdHlwZXNjcmlwdCB0eXBlIHRvIHByZXZlbnQgaW5mZXJlbmNlIGZyb20gY29sbGFwc2luZyB0aGUgdW5pb24gdHlwZSB0byBhIHN0cmluZyB0byBpbXByb3ZlIHR5cGUgc2FmZXR5XG5leHBvcnQgdHlwZSBJY29uVHlwZSA9IEljb25OYW1lIHwgKHN0cmluZyAmIHt9KTtcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctaWNvbicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIHJvbGU6ICdpbWcnLFxuICAgICdbc3R5bGUuLS1uZy1pY29uX19zdHJva2Utd2lkdGhdJzogJ3N0cm9rZVdpZHRoKCknLFxuICAgICdbc3R5bGUuLS1uZy1pY29uX19zaXplXSc6ICdzaXplKCknLFxuICAgICdbc3R5bGUuLS1uZy1pY29uX19jb2xvcl0nOiAnY29sb3IoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5nSWNvbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBBY2Nlc3MgdGhlIGdsb2JhbCBpY29uIGNvbmZpZyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdE5nSWNvbkNvbmZpZygpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGljb25zICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3ROZ0ljb25zKCk7XG5cbiAgLyoqIEFjY2VzcyB0aGUgaWNvbiBsb2FkZXIgaWYgZGVmaW5lZCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlciA9IGluamVjdE5nSWNvbkxvYWRlcigpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGljb24gY2FjaGUgaWYgZGVmaW5lZCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlID0gaW5qZWN0TmdJY29uTG9hZGVyQ2FjaGUoKTtcblxuICAvKiogQWNjZXNzIHRoZSBwcmUtcHJvY2Vzc29yICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlUHJvY2Vzc29yID0gaW5qZWN0TmdJY29uUHJlUHJvY2Vzc29yKCk7XG5cbiAgLyoqIEFjY2VzcyB0aGUgcG9zdC1wcm9jZXNzb3IgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwb3N0UHJvY2Vzc29yID0gaW5qZWN0TmdJY29uUG9zdFByb2Nlc3NvcigpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGluamVjdG9yICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIHJlbmRlcmVyICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAvKiogRGV0ZXJtaW5lIHRoZSBwbGF0Zm9ybSB3ZSBhcmUgcmVuZGVyaW5nIG9uICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm0gPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGVsZW1lbnQgcmVmICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgLyoqIEEgdW5pcXVlIGlkIGZvciB0aGlzIGluc3RhbmNlICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdW5pcXVlSWQgPSB1bmlxdWVJZCsrO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGxvZ2dlciAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGluamVjdExvZ2dlcigpO1xuXG4gIC8qKiBEZWZpbmUgdGhlIG5hbWUgb2YgdGhlIGljb24gdG8gZGlzcGxheSAqL1xuICByZWFkb25seSBuYW1lID0gaW5wdXQ8SWNvblR5cGU+KCk7XG5cbiAgLyoqIERlZmluZSB0aGUgc3ZnIG9mIHRoZSBpY29uIHRvIGRpc3BsYXkgKi9cbiAgcmVhZG9ubHkgc3ZnID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIC8qKiBEZWZpbmUgdGhlIHNpemUgb2YgdGhlIGljb24gKi9cbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0KHRoaXMuY29uZmlnLnNpemUsIHsgdHJhbnNmb3JtOiBjb2VyY2VDc3NQaXhlbFZhbHVlIH0pO1xuXG4gIC8qKiBEZWZpbmUgdGhlIHN0cm9rZS13aWR0aCBvZiB0aGUgaWNvbiAqL1xuICByZWFkb25seSBzdHJva2VXaWR0aCA9IGlucHV0PHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZD4oXG4gICAgdGhpcy5jb25maWcuc3Ryb2tlV2lkdGgsXG4gICk7XG5cbiAgLyoqIERlZmluZSB0aGUgY29sb3Igb2YgdGhlIGljb24gKi9cbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dCh0aGlzLmNvbmZpZy5jb2xvcik7XG5cbiAgLyoqIFN0b3JlIHRoZSBpbnNlcnRlZCBTVkcgKi9cbiAgcHJpdmF0ZSBzdmdFbGVtZW50PzogU1ZHRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyB1cGRhdGUgdGhlIGljb24gYW55dGltZSB0aGUgbmFtZSBvciBzdmcgY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnVwZGF0ZUljb24oKSk7XG5cbiAgICBjb25zdCBhcmlhSGlkZGVuID0gaW5qZWN0KG5ldyBIb3N0QXR0cmlidXRlVG9rZW4oJ2FyaWEtaGlkZGVuJyksIHtcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0pO1xuICAgIC8vIElmIHRoZSB1c2VyIGhhcyBub3QgZXhwbGljaXRseSBzZXQgYXJpYS1oaWRkZW4sIG1hcmsgdGhlIGljb24gYXMgaGlkZGVuLCBhcyB0aGlzIGlzXG4gICAgLy8gdGhlIHJpZ2h0IHRoaW5nIHRvIGRvIGZvciB0aGUgbWFqb3JpdHkgb2YgaWNvbiB1c2UtY2FzZXMuXG4gICAgaWYgKCFhcmlhSGlkZGVuKSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN2Z0VsZW1lbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUljb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubmFtZSgpO1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnKCk7XG5cbiAgICAvLyBpZiB0aGUgc3ZnIGlzIGRlZmluZWQsIGluc2VydCBpdCBpbnRvIHRoZSB0ZW1wbGF0ZVxuICAgIGlmIChzdmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZXRTdmcoc3ZnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHlOYW1lID0gdG9Qcm9wZXJ0eU5hbWUobmFtZSk7XG5cbiAgICBmb3IgKGNvbnN0IGljb25zIG9mIFsuLi50aGlzLmljb25zXS5yZXZlcnNlKCkpIHtcbiAgICAgIGlmIChpY29uc1twcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgIC8vIGluc2VydCB0aGUgU1ZHIGludG8gdGhlIHRlbXBsYXRlXG4gICAgICAgIHRoaXMuc2V0U3ZnKGljb25zW3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgYSBsb2FkZXIgZGVmaW5lZCwgdXNlIGl0IHRvIGxvYWQgdGhlIGljb25cbiAgICBpZiAodGhpcy5sb2FkZXIpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdEljb25Gcm9tTG9hZGVyKG5hbWUpO1xuXG4gICAgICAvLyBpZiB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nLCBpbnNlcnQgdGhlIFNWRyBpbnRvIHRoZSB0ZW1wbGF0ZVxuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNldFN2ZyhyZXN1bHQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gaWNvbiB3aXRoIHRoaXMgbmFtZSB3YXJuIHRoZSB1c2VyIGFzIHRoZXkgcHJvYmFibHkgZm9yZ290IHRvIGltcG9ydCBpdFxuICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICBgTm8gaWNvbiBuYW1lZCAke25hbWV9IHdhcyBmb3VuZC4gWW91IG1heSBuZWVkIHRvIGltcG9ydCBpdCB1c2luZyB0aGUgd2l0aEljb25zIGZ1bmN0aW9uLmAsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3ZnKHN2Zzogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gaWYgd2UgYXJlIG9uIHRoZSBzZXJ2ZXIsIHNpbXBseSBpbm5lckhUTUwgdGhlIHN2ZyBhcyB3ZSBkb24ndCBoYXZlIHRoZVxuICAgIC8vIGxldmVsIG9mIGNvbnRyb2wgb3ZlciB0aGUgRE9NIHRoYXQgd2UgZG8gb24gdGhlIGNsaWVudCwgaW4gb3RoZXJ3b3Jkc1xuICAgIC8vIHRoZSBhcHByb2FjaCB3ZSB0YWtlIHRvIGluc2VydCB0aGUgc3ZnIG9uIHRoZSBjbGllbnQgd2lsbCBub3Qgd29yayBvbiB0aGUgc2VydmVyXG4gICAgaWYgKGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybSkpIHtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHN2ZztcbiAgICAgIC8vIG1hcmsgdGhpcyBjb21wb25lbnQgYXMgc2VydmVyIHNpZGUgcmVuZGVyZWRcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1uZy1pY29uLXNzcicsICcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGlzIHdhcyBwcmV2aW91c2x5IHNlcnZlciBzaWRlIHJlbmRlcmVkLCB3ZSBzaG91bGQgY2hlY2sgaWYgdGhlIHN2ZyBpcyB0aGUgc2FtZVxuICAgIC8vIGlmIGl0IGlzLCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1uZy1pY29uLXNzcicpKSB7XG4gICAgICAvLyBpZiBpdCBpcyBkaWZmZXJlbnQsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBzZXJ2ZXIgc2lkZSByZW5kZXJlZCBmbGFnXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtbmctaWNvbi1zc3InKTtcblxuICAgICAgLy8gcmV0cmlldmUgdGhlIHN2ZyBlbGVtZW50XG4gICAgICB0aGlzLnN2Z0VsZW1lbnQgPVxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPFNWR0VsZW1lbnQ+KCdzdmcnKSA/P1xuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPT09IHN2Zykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIHRoZSBvbGQgZWxlbWVudFxuICAgIGlmICh0aGlzLnN2Z0VsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3ZnRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHN2ZyBpcyBlbXB0eSwgZG9uJ3QgaW5zZXJ0IGFueXRoaW5nXG4gICAgaWYgKHN2ZyA9PT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTogSFRNTFRlbXBsYXRlRWxlbWVudCA9XG4gICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XG5cbiAgICBzdmcgPSB0aGlzLnJlcGxhY2VJZHMoc3ZnKTtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGVtcGxhdGUsICdpbm5lckhUTUwnLCB0aGlzLnByZVByb2Nlc3NvcihzdmcpKTtcblxuICAgIHRoaXMuc3ZnRWxlbWVudCA9IHRlbXBsYXRlLmNvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgU1ZHRWxlbWVudDtcbiAgICB0aGlzLnBvc3RQcm9jZXNzb3IodGhpcy5zdmdFbGVtZW50KTtcblxuICAgIC8vIGluc2VydCB0aGUgZWxlbWVudCBpbnRvIHRoZSBkb21cbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnN2Z0VsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlSWRzKHN2Zzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBpZHMgYXJlIGRlZmluZWQgbGlrZSBJRF9QTEFDRUhPTERFUl8wLCBJRF9QTEFDRUhPTERFUl8xLCBldGMuXG4gICAgLy8gd2UgbmVlZCB0byByZXBsYWNlIHRoZXNlIHdpdGggdGhlIGFjdHVhbCBpZHMgZS5nLiBuZy1pY29uLTAtMCwgbmctaWNvbi0wLTEsIGV0Yy5cbiAgICAvLyBpZiB0aGVyZSBhcmUgbm8gaWRzLCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nXG4gICAgaWYgKCFzdmcuaW5jbHVkZXMoJ0lEX1BMQUNFSE9MREVSXycpKSB7XG4gICAgICByZXR1cm4gc3ZnO1xuICAgIH1cblxuICAgIC8vIHdlIGNhbiBqdXN0IHJldGFpbiB0aGUgdHJhaWxpbmcgbnVtYmVyIGFzIHRoZSBwcmVmaXggaXMgYWx3YXlzIHRoZSBzYW1lXG4gICAgY29uc3QgcmVnZXggPSAvSURfUExBQ0VIT0xERVJfKFxcZCspL2c7XG5cbiAgICAvLyB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGlkcyB3ZSBoYXZlIHJlcGxhY2VkXG4gICAgY29uc3QgaWRNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgLy8gZmluZCBhbGwgdGhlIG1hdGNoZXNcbiAgICBjb25zdCBtYXRjaGVzID0gbmV3IFNldChzdmcubWF0Y2gocmVnZXgpKTtcblxuICAgIGlmIChtYXRjaGVzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gc3ZnO1xuICAgIH1cblxuICAgIC8vIHJlcGxhY2UgdGhlIGlkc1xuICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgICAgY29uc3QgaWQgPSBtYXRjaC5yZXBsYWNlKCdJRF9QTEFDRUhPTERFUl8nLCAnJyk7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBuZy1pY29uLSR7dGhpcy51bmlxdWVJZH0tJHtpZE1hcC5zaXplfWA7XG4gICAgICBpZE1hcC5zZXQoaWQsIHBsYWNlaG9sZGVyKTtcbiAgICAgIHN2ZyA9IHN2Zy5yZXBsYWNlKG5ldyBSZWdFeHAobWF0Y2gsICdnJyksIHBsYWNlaG9sZGVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ZnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgdGhlIGljb24gZnJvbSB0aGUgbG9hZGVyLlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaWNvbiB0byBsb2FkLlxuICAgKiBAcmV0dXJucyBUaGUgU1ZHIGNvbnRlbnQgZm9yIGEgZ2l2ZW4gaWNvbiBuYW1lLlxuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0SWNvbkZyb21Mb2FkZXIobmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgY2FjaGUsIGNoZWNrIGlmIHRoZSBpY29uIGlzIGFscmVhZHkgbG9hZGVkIChpLmUsIGl0IGlzIGEgc3RyaW5nKVxuICAgICAgICBpZiAodGhpcy5jYWNoZSkge1xuICAgICAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IHRoaXMuY2FjaGUuZ2V0KG5hbWUpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBjYWNoZWRSZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXNvbHZlKGNhY2hlZFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaXQgbWF5IGJlIGEgcHJvbWlzZSwgc28gd2UgbmVlZCB0byBhd2FpdCBpdFxuICAgICAgICAgIGlmIChjYWNoZWRSZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZWRSZXN1bHQ7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvZXJjZUxvYWRlclJlc3VsdCh0aGlzLmxvYWRlciEobmFtZSkpO1xuXG4gICAgICAgIC8vIHN0b3JlIHRoZSBwcm9taXNlIGluIHRoZSBjYWNoZSBzbyBpZiB3ZSBnZXQgcmVwZWF0ZWQgY2FsbHMgKGUuZy4gaW4gYSBsb29wKSBiZWZvcmUgdGhlIGxvYWRlciBoYXMgcmVzb2x2ZWRcbiAgICAgICAgLy8gdGhlbiBkb24ndCBjYWxsIHRoZSBsb2FkZXIgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXNcbiAgICAgICAgdGhpcy5jYWNoZT8uc2V0KG5hbWUsIHByb21pc2UpO1xuXG4gICAgICAgIC8vIGF3YWl0IHRoZSByZXN1bHQgb2YgdGhlIHByb21pc2VcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbWlzZTtcblxuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgY2FjaGUsIHN0b3JlIHRoZSByZXN1bHRcbiAgICAgICAgdGhpcy5jYWNoZT8uc2V0KG5hbWUsIHJlc3VsdCk7XG5cbiAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { Inject, NgModule } from '@angular/core';\nimport { NgIcon } from './components/icon/icon.component';\nimport { NgIconsToken, provideIcons } from './providers/icon.provider';\nimport * as i0 from \"@angular/core\";\nexport class NgIconsModule {\n constructor(icons) {\n if (Object.keys(icons).length === 0) {\n throw new Error('No icons have been provided. Ensure to include some icons by importing them using NgIconsModule.withIcons({ ... }).');\n }\n }\n /**\n * Define the icons that will be included in the application. This allows unused icons to\n * be tree-shaken away to reduce bundle size\n * @param icons The object containing the required icons\n */\n static withIcons(icons) {\n return { ngModule: NgIconsModule, providers: provideIcons(icons) };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgIconsModule, deps: [{ token: NgIconsToken }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.2\", ngImport: i0, type: NgIconsModule, imports: [NgIcon], exports: [NgIcon] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgIconsModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgIconsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NgIcon],\n exports: [NgIcon],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [NgIconsToken]\n }] }] });\nexport const NG_ICON_DIRECTIVES = [NgIcon];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvaWNvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU12RSxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFrQyxLQUE2QjtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQ2IscUhBQXFILENBQ3RILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUNkLEtBQTZCO1FBRTdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDOzhHQWxCVSxhQUFhLGtCQUNKLFlBQVk7K0dBRHJCLGFBQWEsWUFIZCxNQUFNLGFBQ04sTUFBTTsrR0FFTCxhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztvQkFDakIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO2lCQUNsQjs7MEJBRWMsTUFBTTsyQkFBQyxZQUFZOztBQW9CbEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLENBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nSWNvbiB9IGZyb20gJy4vY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWNvbnNUb2tlbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnLi9wcm92aWRlcnMvaWNvbi5wcm92aWRlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtOZ0ljb25dLFxuICBleHBvcnRzOiBbTmdJY29uXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdJY29uc01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTmdJY29uc1Rva2VuKSBpY29uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIGlmIChPYmplY3Qua2V5cyhpY29ucykubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdObyBpY29ucyBoYXZlIGJlZW4gcHJvdmlkZWQuIEVuc3VyZSB0byBpbmNsdWRlIHNvbWUgaWNvbnMgYnkgaW1wb3J0aW5nIHRoZW0gdXNpbmcgTmdJY29uc01vZHVsZS53aXRoSWNvbnMoeyAuLi4gfSkuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgaWNvbnMgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBhbGxvd3MgdW51c2VkIGljb25zIHRvXG4gICAqIGJlIHRyZWUtc2hha2VuIGF3YXkgdG8gcmVkdWNlIGJ1bmRsZSBzaXplXG4gICAqIEBwYXJhbSBpY29ucyBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlcXVpcmVkIGljb25zXG4gICAqL1xuICBzdGF0aWMgd2l0aEljb25zKFxuICAgIGljb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5nSWNvbnNNb2R1bGU+IHtcbiAgICByZXR1cm4geyBuZ01vZHVsZTogTmdJY29uc01vZHVsZSwgcHJvdmlkZXJzOiBwcm92aWRlSWNvbnMoaWNvbnMpIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IE5HX0lDT05fRElSRUNUSVZFUyA9IFtOZ0ljb25dIGFzIGNvbnN0O1xuIl19","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NgIconStack {\n constructor() {\n /** The size of the child icons */\n this.size = input.required(...(ngDevMode ? [{ debugName: \"size\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgIconStack, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.2\", type: NgIconStack, isStandalone: true, selector: \"ng-icon-stack\", inputs: { size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { \"style.--ng-icon__size\": \"size()\" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [\":host{display:inline-flex;justify-content:center;align-items:center;position:relative;width:var(--ng-icon__size);height:var(--ng-icon__size)}:host ::ng-deep ng-icon{position:absolute}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: NgIconStack, decorators: [{\n type: Component,\n args: [{ selector: 'ng-icon-stack', standalone: true, template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, host: {\n '[style.--ng-icon__size]': 'size()',\n }, styles: [\":host{display:inline-flex;justify-content:center;align-items:center;position:relative;width:var(--ng-icon__size);height:var(--ng-icon__size)}:host ::ng-deep ng-icon{position:absolute}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29tcG9uZW50cy9pY29uLXN0YWNrL2ljb24tc3RhY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVkxRSxNQUFNLE9BQU8sV0FBVztJQVZ4QjtRQVdFLGtDQUFrQztRQUN6QixTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsK0NBQVUsQ0FBQztLQUMxQzs4R0FIWSxXQUFXO2tHQUFYLFdBQVcsc1FBUFosZ0JBQWdCOzsyRkFPZixXQUFXO2tCQVZ2QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFlBQ04sZ0JBQWdCLG1CQUVULHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0oseUJBQXlCLEVBQUUsUUFBUTtxQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1pY29uLXN0YWNrJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudCAvPicsXG4gIHN0eWxlVXJsOiAnLi9pY29uLXN0YWNrLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW3N0eWxlLi0tbmctaWNvbl9fc2l6ZV0nOiAnc2l6ZSgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdJY29uU3RhY2sge1xuICAvKiogVGhlIHNpemUgb2YgdGhlIGNoaWxkIGljb25zICovXG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctaWNvbnMtY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL25nLWljb25zLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-icons-core.mjs","sources":["../../../../packages/core/src/lib/providers/glyph-config.provider.ts","../../../../packages/core/src/lib/providers/glyph.provider.ts","../../../../packages/core/src/lib/utils/coercion.ts","../../../../packages/core/src/lib/components/glyph/glyph.component.ts","../../../../packages/core/src/lib/providers/features/features.ts","../../../../packages/core/src/lib/providers/features/csp.ts","../../../../packages/core/src/lib/providers/features/logger.ts","../../../../packages/core/src/lib/providers/icon-config.provider.ts","../../../../packages/core/src/lib/providers/icon-loader.provider.ts","../../../../packages/core/src/lib/providers/icon.provider.ts","../../../../packages/core/src/lib/utils/async.ts","../../../../packages/core/src/lib/utils/format.ts","../../../../packages/core/src/lib/components/icon/icon.component.ts","../../../../packages/core/src/lib/icon.module.ts","../../../../packages/core/src/lib/components/icon-stack/icon-stack.component.ts","../../../../packages/core/src/ng-icons-core.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\n\nexport interface NgGlyphConfig {\n /** Define the default size of glyph */\n size: string | number;\n /** Define the optical size of the glyph */\n opticalSize?: number;\n /** Define the default color of glyph */\n color?: string;\n /** Define the default weight of glyph */\n weight?: number;\n /** Define the default grade of glyph */\n grade?: number;\n /** Define the default fill of glyph */\n fill?: boolean;\n}\n\nexport const NgGlyphConfigToken = new InjectionToken<Required<NgGlyphConfig>>(\n 'Ng Glyph Config',\n);\n\nconst defaultConfig: NgGlyphConfig = {\n size: '1em',\n opticalSize: 20,\n weight: 400,\n grade: 0,\n fill: false,\n};\n\n/**\n * Provide the configuration for the glyph\n * @param config The configuration to use\n */\nexport function provideNgGlyphsConfig(\n config: Partial<NgGlyphConfig>,\n): Provider {\n return {\n provide: NgGlyphConfigToken,\n useValue: { ...defaultConfig, ...config },\n };\n}\n\n/**\n * Inject the configuration for the glyphs\n * @returns The configuration to use\n * @internal\n */\nexport function injectNgGlyphsConfig(): Required<NgGlyphConfig> {\n return (inject(NgGlyphConfigToken, { optional: true }) ??\n defaultConfig) as Required<NgGlyphConfig>;\n}\n","import { InjectionToken, ValueProvider, inject } from '@angular/core';\n\nexport const NgGlyphsToken = new InjectionToken<NgGlyphs>('NgGlyphsToken');\n\nexport function provideNgGlyphs(...glyphsets: NgGlyphset[]): ValueProvider[] {\n // if there are no glyphsets, throw an error\n if (!glyphsets.length) {\n throw new Error('Please provide at least one glyphset.');\n }\n\n // the default glyphset is the first one\n const defaultGlyphset = glyphsets[0].name;\n\n return [{ provide: NgGlyphsToken, useValue: { defaultGlyphset, glyphsets } }];\n}\n\nexport function injectNgGlyphs(): NgGlyphs {\n const glyphs = inject(NgGlyphsToken, { optional: true });\n\n if (!glyphs) {\n throw new Error(\n 'Please provide the glyphs using the provideNgGlyphs() function.',\n );\n }\n\n return glyphs;\n}\n\nexport interface NgGlyphset {\n name: string;\n baseClass: string;\n}\n\nexport interface NgGlyphs {\n defaultGlyphset: string;\n glyphsets: NgGlyphset[];\n}\n","export function coerceCssPixelValue(value: string): string {\n return value == null ? '' : /^\\d+$/.test(value) ? `${value}px` : value;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n} from '@angular/core';\nimport { injectNgGlyphsConfig } from '../../providers/glyph-config.provider';\nimport { injectNgGlyphs } from '../../providers/glyph.provider';\nimport { coerceCssPixelValue } from '../../utils/coercion';\n\n@Component({\n selector: 'ng-glyph',\n standalone: true,\n template: ``,\n styleUrl: './glyph.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'glyphsetClass()',\n '[textContent]': 'name()',\n '[style.--ng-glyph__size]': 'size()',\n '[style.color]': 'color()',\n '[style.font-variation-settings]': 'fontVariationSettings()',\n },\n})\nexport class NgGlyph {\n /**\n * Access the available glyphsets\n */\n private readonly glyphsets = injectNgGlyphs();\n\n /**\n * Access the default configuration\n */\n private readonly config = injectNgGlyphsConfig();\n\n /**\n * Define the name of the glyph to display\n */\n readonly name = input.required<string>();\n\n /**\n * Define the glyphset to use\n */\n readonly glyphset = input(this.glyphsets.defaultGlyphset);\n\n /**\n * Define the optical size of the glyph\n */\n readonly opticalSize = input(this.config.opticalSize, {\n transform: numberAttribute,\n });\n\n /**\n * Define the weight of the glyph\n */\n readonly weight = input(this.config.weight, { transform: numberAttribute });\n\n /**\n * Define the grade of the glyph\n */\n readonly grade = input(this.config.grade, { transform: numberAttribute });\n\n /**\n * Define the fill of the glyph\n */\n readonly fill = input(this.config.fill, { transform: booleanAttribute });\n\n /**\n * Define the size of the glyph\n */\n readonly size = input(this.config.size, { transform: coerceCssPixelValue });\n\n /**\n * Define the color of the glyph\n */\n readonly color = input(this.config.color);\n\n /**\n * Derive the glyphset class from the glyphset name\n */\n protected readonly glyphsetClass = computed(() => {\n const glyphset = this.glyphsets.glyphsets.find(\n glyphset => glyphset.name === this.glyphset(),\n );\n\n if (!glyphset) {\n throw new Error(\n `The glyphset \"${this.glyphset()}\" does not exist. Please provide a valid glyphset.`,\n );\n }\n\n return glyphset.baseClass;\n });\n\n /**\n * Define the font variation settings of the glyph\n */\n protected readonly fontVariationSettings = computed(() => {\n return `'FILL' ${\n this.fill() ? 1 : 0\n }, 'wght' ${this.weight()}, 'GRAD' ${this.grade()}, 'opsz' ${this.opticalSize()}`;\n });\n}\n","import { Provider } from '@angular/core';\n\nexport type ContentSecurityPolicyFeature =\n NgIconFeature<NgIconFeatureKind.ContentSecurityPolicyFeature>;\n\nexport type ExceptionLoggerFeature =\n NgIconFeature<NgIconFeatureKind.ExceptionLoggerFeature>;\n\nexport type NgIconFeatures =\n | ContentSecurityPolicyFeature\n | ExceptionLoggerFeature;\n\n/**\n * The list of features as an enum to uniquely type each feature.\n */\nexport const enum NgIconFeatureKind {\n ContentSecurityPolicyFeature,\n ExceptionLoggerFeature,\n}\n\n/**\n * Helper type to represent a feature.\n */\nexport interface NgIconFeature<FeatureKind extends NgIconFeatureKind> {\n ɵkind: FeatureKind;\n ɵproviders: Provider[];\n}\n\n/**\n * Helper function to create an object that represents a feature.\n */\nexport function createFeature<FeatureKind extends NgIconFeatureKind>(\n kind: FeatureKind,\n providers: Provider[],\n): NgIconFeature<FeatureKind> {\n return { ɵkind: kind, ɵproviders: providers };\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport {\n ContentSecurityPolicyFeature,\n NgIconFeatureKind,\n createFeature,\n} from './features';\n\nexport type NgIconPreProcessor = (icon: string) => string;\nexport type NgIconPostProcessor = (element: HTMLElement | SVGElement) => void;\n\nexport const NgIconPreProcessorToken = new InjectionToken<NgIconPreProcessor>(\n 'Ng Icon Pre Processor',\n);\n\nexport const NgIconPostProcessorToken = new InjectionToken<NgIconPostProcessor>(\n 'Ng Icon Post Processor',\n);\n\nexport function injectNgIconPreProcessor(): NgIconPreProcessor {\n return inject(NgIconPreProcessorToken, { optional: true }) ?? (icon => icon);\n}\n\nexport function injectNgIconPostProcessor(): NgIconPostProcessor {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return inject(NgIconPostProcessorToken, { optional: true }) ?? (() => {});\n}\n\nfunction preprocessIcon(icon: string): string {\n // rename all style attributes to data-style to avoid being blocked by the CSP\n return icon.replace(/style\\s*=/g, 'data-style=');\n}\n\nfunction postprocessIcon(element: HTMLElement | SVGElement): void {\n // find all elements with a data-style attribute and get the styles from it\n // and apply them to the element using the style property and remove the data-style attribute\n const elements = element.querySelectorAll<HTMLElement | SVGElement>(\n '[data-style]',\n );\n\n for (const element of Array.from(elements)) {\n const styles = element.getAttribute('data-style');\n\n styles?.split(';').forEach(style => {\n const [property, value] = style.split(':');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element.style[property.trim() as any] = value.trim();\n });\n\n element.removeAttribute('data-style');\n }\n}\n\n/**\n * Process icons in a way that is compliant with the content security policy\n */\nexport function withContentSecurityPolicy(): ContentSecurityPolicyFeature {\n return createFeature(NgIconFeatureKind.ContentSecurityPolicyFeature, [\n { provide: NgIconPreProcessorToken, useValue: preprocessIcon },\n { provide: NgIconPostProcessorToken, useValue: postprocessIcon },\n ]);\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport {\n ExceptionLoggerFeature,\n NgIconFeatureKind,\n createFeature,\n} from './features';\n\ninterface Logger {\n log(message: string): void;\n warn(message: string): void;\n error(message: string): void;\n}\n\nexport const LoggerToken = new InjectionToken<Logger>('Ng Icon Logger');\n\n/**\n * The default logger implementation that logs to the console\n */\nexport class DefaultLogger implements Logger {\n log(message: string): void {\n console.log(message);\n }\n warn(message: string): void {\n console.warn(message);\n }\n error(message: string): void {\n console.error(message);\n }\n}\n\n/**\n * A logger implementation that throws an error on warnings and errors\n */\nexport class ExceptionLogger implements Logger {\n log(message: string): void {\n console.log(message);\n }\n\n warn(message: string): void {\n throw new Error(message);\n }\n\n error(message: string): void {\n throw new Error(message);\n }\n}\n\nexport function injectLogger(): Logger {\n return inject(LoggerToken, { optional: true }) ?? new DefaultLogger();\n}\n\n/**\n * Throw exceptions on warnings and errors\n */\nexport function withExceptionLogger(): ExceptionLoggerFeature {\n return createFeature(NgIconFeatureKind.ExceptionLoggerFeature, [\n { provide: LoggerToken, useClass: ExceptionLogger },\n ]);\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport { NgIconFeatures } from './features/features';\n\nexport interface NgIconConfig {\n /** Define the default size of icons */\n size?: string;\n /** Define the default color of icons */\n color?: string;\n /** Define the default stroke width of icons */\n strokeWidth?: string | number;\n}\n\nexport const NgIconConfigToken = new InjectionToken<NgIconConfig>(\n 'Ng Icon Config',\n);\n\n/**\n * Provide the configuration for the icons\n * @param config The configuration to use\n */\nexport function provideNgIconsConfig(\n config: Partial<NgIconConfig>,\n ...features: NgIconFeatures[]\n): Provider[] {\n return [\n {\n provide: NgIconConfigToken,\n useValue: config,\n },\n features.map(feature => feature.ɵproviders),\n ];\n}\n\n/**\n * Inject the configuration for the icons\n * @returns The configuration to use\n * @internal\n */\nexport function injectNgIconConfig(): NgIconConfig {\n return inject(NgIconConfigToken, { optional: true }) ?? {};\n}\n","import { inject, InjectionToken, Provider } from '@angular/core';\nimport type { Observable } from 'rxjs';\n\nexport type NgIconLoader = (\n name: string,\n) => Promise<string> | Observable<string> | string;\n\nexport const NgIconLoaderToken = new InjectionToken<NgIconLoader>(\n 'Ng Icon Loader Token',\n);\n\n/**\n * The list of features as an enum to uniquely type each feature.\n */\nconst enum NgIconLoaderFeatureKind {\n CachingFeature,\n}\n\ninterface NgIconLoaderFeature<FeatureKind extends NgIconLoaderFeatureKind> {\n kind: FeatureKind;\n providers: Provider[];\n}\n\n/**\n * Helper function to create an object that represents a Loader feature.\n */\nfunction loaderFeature<FeatureKind extends NgIconLoaderFeatureKind>(\n kind: FeatureKind,\n providers: Provider[],\n): NgIconLoaderFeature<FeatureKind> {\n return { kind: kind, providers: providers };\n}\n\ntype CachingFeature =\n NgIconLoaderFeature<NgIconLoaderFeatureKind.CachingFeature>;\n\ntype NgIconLoaderFeatures = CachingFeature;\n\nexport type NgIconLoaderCache = Map<string, string | Promise<string>>;\n\nexport const NgIconCacheToken = new InjectionToken<NgIconLoaderCache>(\n 'Ng Icon Cache Token',\n);\n\n/**\n * Add caching to the loader. This will prevent the loader from being called multiple times for the same icon name.\n */\nexport function withCaching(): CachingFeature {\n return loaderFeature(NgIconLoaderFeatureKind.CachingFeature, [\n { provide: NgIconCacheToken, useValue: new Map<string, string>() },\n ]);\n}\n\n/**\n * Provide a function that will return the SVG content for a given icon name.\n * @param loader The function that will return the SVG content for a given icon name.\n * @param features The list of features to apply to the loader.\n * @returns The SVG content for a given icon name.\n */\nexport function provideNgIconLoader(\n loader: NgIconLoader,\n ...features: NgIconLoaderFeatures[]\n) {\n return [\n { provide: NgIconLoaderToken, useValue: loader },\n features.map(feature => feature.providers),\n ];\n}\n\n/**\n * Inject the function that will return the SVG content for a given icon name.\n */\nexport function injectNgIconLoader(): NgIconLoader | null {\n return inject(NgIconLoaderToken, { optional: true });\n}\n\n/**\n * Inject the cache that will store the SVG content for a given icon name.\n */\nexport function injectNgIconLoaderCache(): NgIconLoaderCache | null {\n return inject(NgIconCacheToken, { optional: true });\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\n\n/**\n * Define the icons to use\n * @param icons The icons to provide\n */\nexport function provideIcons(icons: Record<string, string>): Provider[] {\n return [\n {\n provide: NgIconsToken,\n useFactory: (\n parentIcons = inject<Record<string, string>[]>(NgIconsToken, {\n optional: true,\n skipSelf: true,\n }),\n ) => ({\n ...parentIcons?.reduce((acc, icons) => ({ ...acc, ...icons }), {}),\n ...icons,\n }),\n multi: true,\n },\n ];\n}\n\nexport const NgIconsToken = new InjectionToken<Record<string, string>[]>(\n 'Icons Token',\n);\n\n/**\n * Inject the icons to use\n * @returns The icons to use\n * @internal\n */\nexport function injectNgIcons(): Record<string, string>[] {\n return inject(NgIconsToken, { optional: true }) ?? [];\n}\n","import { Observable, isObservable } from 'rxjs';\n\n/**\n * A loader may return a promise, an observable or a string. This function will coerce the result into a promise.\n * @returns\n */\nexport function coerceLoaderResult(\n result: Promise<string> | Observable<string> | string,\n): Promise<string> {\n if (typeof result === 'string') {\n return Promise.resolve(result);\n }\n\n if (isObservable(result)) {\n // toPromise is deprecated, but we can't use lastValueFrom because it's not available in RxJS 6\n // so for now we'll just use toPromise\n return result.toPromise() as Promise<string>;\n }\n\n return result;\n}\n","/**\n * Hyphenated to lowerCamelCase\n */\nexport function toPropertyName(str: string): string {\n return str\n .replace(/([^a-zA-Z0-9])+(.)?/g, (_, __, chr) =>\n chr ? chr.toUpperCase() : '',\n )\n .replace(/[^a-zA-Z\\d]/g, '')\n .replace(/^([A-Z])/, m => m.toLowerCase());\n}\n","import { isPlatformServer } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n runInInjectionContext,\n} from '@angular/core';\nimport type { IconName } from '../../components/icon/icon-name';\nimport {\n injectNgIconPostProcessor,\n injectNgIconPreProcessor,\n} from '../../providers/features/csp';\nimport { injectLogger } from '../../providers/features/logger';\nimport { injectNgIconConfig } from '../../providers/icon-config.provider';\nimport {\n injectNgIconLoader,\n injectNgIconLoaderCache,\n} from '../../providers/icon-loader.provider';\nimport { injectNgIcons } from '../../providers/icon.provider';\nimport { coerceLoaderResult } from '../../utils/async';\nimport { coerceCssPixelValue } from '../../utils/coercion';\nimport { toPropertyName } from '../../utils/format';\n\n// This is a typescript type to prevent inference from collapsing the union type to a string to improve type safety\nexport type IconType = IconName | (string & {});\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'ng-icon',\n template: '',\n standalone: true,\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'img',\n '[style.--ng-icon__stroke-width]': 'strokeWidth()',\n '[style.--ng-icon__size]': 'size()',\n '[style.--ng-icon__color]': 'color()',\n },\n})\nexport class NgIcon implements OnDestroy {\n /** Access the global icon config */\n private readonly config = injectNgIconConfig();\n\n /** Access the icons */\n private readonly icons = injectNgIcons();\n\n /** Access the icon loader if defined */\n private readonly loader = injectNgIconLoader();\n\n /** Access the icon cache if defined */\n private readonly cache = injectNgIconLoaderCache();\n\n /** Access the pre-processor */\n private readonly preProcessor = injectNgIconPreProcessor();\n\n /** Access the post-processor */\n private readonly postProcessor = injectNgIconPostProcessor();\n\n /** Access the injector */\n private readonly injector = inject(Injector);\n\n /** Access the renderer */\n private readonly renderer = inject(Renderer2);\n\n /** Determine the platform we are rendering on */\n private readonly platform = inject(PLATFORM_ID);\n\n /** Access the element ref */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** A unique id for this instance */\n private readonly uniqueId = uniqueId++;\n\n /** Access the logger */\n private readonly logger = injectLogger();\n\n /** Define the name of the icon to display */\n readonly name = input<IconType>();\n\n /** Define the svg of the icon to display */\n readonly svg = input<string>();\n\n /** Define the size of the icon */\n readonly size = input(this.config.size, { transform: coerceCssPixelValue });\n\n /** Define the stroke-width of the icon */\n readonly strokeWidth = input<string | number | undefined>(\n this.config.strokeWidth,\n );\n\n /** Define the color of the icon */\n readonly color = input(this.config.color);\n\n /** Store the inserted SVG */\n private svgElement?: SVGElement;\n\n constructor() {\n // update the icon anytime the name or svg changes\n effect(() => this.updateIcon());\n\n const ariaHidden = inject(new HostAttributeToken('aria-hidden'), {\n optional: true,\n });\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n this.elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n\n ngOnDestroy(): void {\n this.svgElement = undefined;\n }\n\n private async updateIcon(): Promise<void> {\n const name = this.name();\n const svg = this.svg();\n\n // if the svg is defined, insert it into the template\n if (svg !== undefined) {\n this.setSvg(svg);\n return;\n }\n\n if (name === undefined) {\n return;\n }\n\n const propertyName = toPropertyName(name);\n\n for (const icons of [...this.icons].reverse()) {\n if (icons[propertyName]) {\n // insert the SVG into the template\n this.setSvg(icons[propertyName]);\n return;\n }\n }\n\n // if there is a loader defined, use it to load the icon\n if (this.loader) {\n const result = await this.requestIconFromLoader(name);\n\n // if the result is a string, insert the SVG into the template\n if (result !== null) {\n this.setSvg(result);\n return;\n }\n }\n\n // if there is no icon with this name warn the user as they probably forgot to import it\n this.logger.warn(\n `No icon named ${name} was found. You may need to import it using the withIcons function.`,\n );\n }\n\n private setSvg(svg: string): void {\n // if we are on the server, simply innerHTML the svg as we don't have the\n // level of control over the DOM that we do on the client, in otherwords\n // the approach we take to insert the svg on the client will not work on the server\n if (isPlatformServer(this.platform)) {\n this.elementRef.nativeElement.innerHTML = svg;\n // mark this component as server side rendered\n this.elementRef.nativeElement.setAttribute('data-ng-icon-ssr', '');\n return;\n }\n\n // if this was previously server side rendered, we should check if the svg is the same\n // if it is, we don't need to do anything\n if (this.elementRef.nativeElement.hasAttribute('data-ng-icon-ssr')) {\n // if it is different, we need to remove the server side rendered flag\n this.elementRef.nativeElement.removeAttribute('data-ng-icon-ssr');\n\n // retrieve the svg element\n this.svgElement =\n this.elementRef.nativeElement.querySelector<SVGElement>('svg') ??\n undefined;\n\n if (this.elementRef.nativeElement.innerHTML === svg) {\n return;\n }\n }\n\n // remove the old element\n if (this.svgElement) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.svgElement);\n }\n\n // if the svg is empty, don't insert anything\n if (svg === '') {\n return;\n }\n\n const template: HTMLTemplateElement =\n this.renderer.createElement('template');\n\n svg = this.replaceIds(svg);\n\n this.renderer.setProperty(template, 'innerHTML', this.preProcessor(svg));\n\n this.svgElement = template.content.firstElementChild as SVGElement;\n this.postProcessor(this.svgElement);\n\n // insert the element into the dom\n this.renderer.appendChild(this.elementRef.nativeElement, this.svgElement);\n }\n\n private replaceIds(svg: string): string {\n // ids are defined like ID_PLACEHOLDER_0, ID_PLACEHOLDER_1, etc.\n // we need to replace these with the actual ids e.g. ng-icon-0-0, ng-icon-0-1, etc.\n // if there are no ids, we don't need to do anything\n if (!svg.includes('ID_PLACEHOLDER_')) {\n return svg;\n }\n\n // we can just retain the trailing number as the prefix is always the same\n const regex = /ID_PLACEHOLDER_(\\d+)/g;\n\n // we need to keep track of the ids we have replaced\n const idMap = new Map<string, string>();\n\n // find all the matches\n const matches = new Set(svg.match(regex));\n\n if (matches === null) {\n return svg;\n }\n\n // replace the ids\n for (const match of matches) {\n const id = match.replace('ID_PLACEHOLDER_', '');\n const placeholder = `ng-icon-${this.uniqueId}-${idMap.size}`;\n idMap.set(id, placeholder);\n svg = svg.replace(new RegExp(match, 'g'), placeholder);\n }\n\n return svg;\n }\n\n /**\n * Request the icon from the loader.\n * @param name The name of the icon to load.\n * @returns The SVG content for a given icon name.\n */\n private requestIconFromLoader(name: string): Promise<string> {\n return new Promise(resolve => {\n runInInjectionContext(this.injector, async () => {\n // if we have a cache, check if the icon is already loaded (i.e, it is a string)\n if (this.cache) {\n const cachedResult = this.cache.get(name);\n\n if (typeof cachedResult === 'string') {\n resolve(cachedResult);\n return;\n }\n\n // it may be a promise, so we need to await it\n if (cachedResult instanceof Promise) {\n const result = await cachedResult;\n resolve(result);\n return;\n }\n }\n\n const promise = coerceLoaderResult(this.loader!(name));\n\n // store the promise in the cache so if we get repeated calls (e.g. in a loop) before the loader has resolved\n // then don't call the loader function multiple times\n this.cache?.set(name, promise);\n\n // await the result of the promise\n const result = await promise;\n\n // if we have a cache, store the result\n this.cache?.set(name, result);\n\n resolve(result);\n });\n });\n }\n}\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgIcon } from './components/icon/icon.component';\nimport { NgIconsToken, provideIcons } from './providers/icon.provider';\n\n@NgModule({\n imports: [NgIcon],\n exports: [NgIcon],\n})\nexport class NgIconsModule {\n constructor(@Inject(NgIconsToken) icons: Record<string, string>) {\n if (Object.keys(icons).length === 0) {\n throw new Error(\n 'No icons have been provided. Ensure to include some icons by importing them using NgIconsModule.withIcons({ ... }).',\n );\n }\n }\n\n /**\n * Define the icons that will be included in the application. This allows unused icons to\n * be tree-shaken away to reduce bundle size\n * @param icons The object containing the required icons\n */\n static withIcons(\n icons: Record<string, string>,\n ): ModuleWithProviders<NgIconsModule> {\n return { ngModule: NgIconsModule, providers: provideIcons(icons) };\n }\n}\n\nexport const NG_ICON_DIRECTIVES = [NgIcon] as const;\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ng-icon-stack',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './icon-stack.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--ng-icon__size]': 'size()',\n },\n})\nexport class NgIconStack {\n /** The size of the child icons */\n readonly size = input.required<string>();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-icons/core",
3
- "version": "32.2.0",
3
+ "version": "32.4.0",
4
4
  "license": "MIT",
5
5
  "keywords": [
6
6
  "angular",