@ng-icons/core 26.2.1 → 26.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.
@@ -0,0 +1,116 @@
1
+ import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, inject, Injector, Input, runInInjectionContext, } from '@angular/core';
2
+ import { injectNgIconConfig } from '../../providers/icon-config.provider';
3
+ import { injectNgIconLoader, injectNgIconLoaderCache, } from '../../providers/icon-loader.provider';
4
+ import { injectNgIcons } from '../../providers/icon.provider';
5
+ import { coerceLoaderResult } from '../../utils/async';
6
+ import { coerceCssPixelValue } from '../../utils/coercion';
7
+ import { toPropertyName } from '../../utils/format';
8
+ import * as i0 from "@angular/core";
9
+ export class NgIcon {
10
+ constructor() {
11
+ /** Access the global icon config */
12
+ this.config = injectNgIconConfig();
13
+ /** Access the icons */
14
+ this.icons = injectNgIcons();
15
+ /** Access the icon loader if defined */
16
+ this.loader = injectNgIconLoader();
17
+ /** Access the icon cache if defined */
18
+ this.cache = injectNgIconLoaderCache();
19
+ /** Access the injector */
20
+ this.injector = inject(Injector);
21
+ /** Access the element ref */
22
+ this.elementRef = inject(ElementRef);
23
+ /** Define the size of the icon */
24
+ this.size = this.config.size;
25
+ /** Define the color of the icon */
26
+ this.color = this.config.color;
27
+ }
28
+ /** Define the name of the icon to display */
29
+ set name(name) {
30
+ this.setIcon(name);
31
+ }
32
+ /**
33
+ * Load the icon with the given name and insert it into the template.
34
+ * @param name The name of the icon to load.
35
+ */
36
+ async setIcon(name) {
37
+ const propertyName = toPropertyName(name);
38
+ for (const icons of [...this.icons].reverse()) {
39
+ if (icons[propertyName]) {
40
+ // insert the SVG into the template
41
+ this.elementRef.nativeElement.innerHTML = icons[propertyName];
42
+ return;
43
+ }
44
+ }
45
+ // if there is a loader defined, use it to load the icon
46
+ if (this.loader) {
47
+ const result = await this.requestIconFromLoader(name);
48
+ // if the result is a string, insert the SVG into the template
49
+ if (result !== null) {
50
+ this.elementRef.nativeElement.innerHTML = result;
51
+ return;
52
+ }
53
+ }
54
+ // if there is no icon with this name warn the user as they probably forgot to import it
55
+ console.warn(`No icon named ${name} was found. You may need to import it using the withIcons function.`);
56
+ }
57
+ /**
58
+ * Request the icon from the loader.
59
+ * @param name The name of the icon to load.
60
+ * @returns The SVG content for a given icon name.
61
+ */
62
+ requestIconFromLoader(name) {
63
+ return new Promise(resolve => {
64
+ runInInjectionContext(this.injector, async () => {
65
+ // if we have a cache, check if the icon is already loaded (i.e, it is a string)
66
+ if (this.cache) {
67
+ const cachedResult = this.cache.get(name);
68
+ if (typeof cachedResult === 'string') {
69
+ resolve(cachedResult);
70
+ return;
71
+ }
72
+ // it may be a promise, so we need to await it
73
+ if (cachedResult instanceof Promise) {
74
+ const result = await cachedResult;
75
+ resolve(result);
76
+ return;
77
+ }
78
+ }
79
+ const promise = coerceLoaderResult(this.loader(name));
80
+ // store the promise in the cache so if we get repeated calls (e.g. in a loop) before the loader has resolved
81
+ // then don't call the loader function multiple times
82
+ this.cache?.set(name, promise);
83
+ // await the result of the promise
84
+ const result = await promise;
85
+ // if we have a cache, store the result
86
+ this.cache?.set(name, result);
87
+ resolve(result);
88
+ });
89
+ });
90
+ }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.3", type: NgIcon, isStandalone: true, selector: "ng-icon", inputs: { name: "name", size: ["size", "size", coerceCssPixelValue], strokeWidth: "strokeWidth", color: "color" }, host: { properties: { "style.--ng-icon__size": "this.size", "style.--ng-icon__stroke-width": "this.strokeWidth", "style.color": "this.color" } }, ngImport: i0, template: '', isInline: true, styles: [":host{display:inline-block;width:var(--ng-icon__size);height:var(--ng-icon__size);overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
93
+ }
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIcon, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: 'ng-icon', template: '', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-block;width:var(--ng-icon__size);height:var(--ng-icon__size);overflow:hidden}\n"] }]
97
+ }], propDecorators: { name: [{
98
+ type: Input
99
+ }], size: [{
100
+ type: HostBinding,
101
+ args: ['style.--ng-icon__size']
102
+ }, {
103
+ type: Input,
104
+ args: [{ transform: coerceCssPixelValue }]
105
+ }], strokeWidth: [{
106
+ type: HostBinding,
107
+ args: ['style.--ng-icon__stroke-width']
108
+ }, {
109
+ type: Input
110
+ }], color: [{
111
+ type: HostBinding,
112
+ args: ['style.color']
113
+ }, {
114
+ type: Input
115
+ }] } });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wscUJBQXFCLEdBQ3RCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEdBQ3hCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFhcEQsTUFBTSxPQUFPLE1BQU07SUFQbkI7UUFRRSxvQ0FBb0M7UUFDbkIsV0FBTSxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFFL0MsdUJBQXVCO1FBQ04sVUFBSyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBRXpDLHdDQUF3QztRQUN2QixXQUFNLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUUvQyx1Q0FBdUM7UUFDdEIsVUFBSyxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFFbkQsMEJBQTBCO1FBQ1QsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3Qyw2QkFBNkI7UUFDWixlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQU8xRSxrQ0FBa0M7UUFHbEMs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Q0UsU0FBUyxZQUNULEVBQUUsY0FDQSxJQUFJLG1CQUVDLHVCQUF1QixDQUFDLE1BQU07OEJBc0JsQyxJQUFJO3NCQUFoQixLQUFLO2dCQU9OLElBQUk7c0JBRkgsV0FBVzt1QkFBQyx1QkFBdUI7O3NCQUNuQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFO2dCQU16QyxXQUFXO3NCQUZWLFdBQVc7dUJBQUMsK0JBQStCOztzQkFDM0MsS0FBSztnQkFNTixLQUFLO3NCQUZKLFdBQVc7dUJBQUMsYUFBYTs7c0JBQ3pCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pY29uL2ljb24tbmFtZSc7XG5pbXBvcnQgeyBpbmplY3ROZ0ljb25Db25maWcgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvaWNvbi1jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgaW5qZWN0TmdJY29uTG9hZGVyLFxuICBpbmplY3ROZ0ljb25Mb2FkZXJDYWNoZSxcbn0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2ljb24tbG9hZGVyLnByb3ZpZGVyJztcbmltcG9ydCB7IGluamVjdE5nSWNvbnMgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvaWNvbi5wcm92aWRlcic7XG5pbXBvcnQgeyBjb2VyY2VMb2FkZXJSZXN1bHQgfSBmcm9tICcuLi8uLi91dGlscy9hc3luYyc7XG5pbXBvcnQgeyBjb2VyY2VDc3NQaXhlbFZhbHVlIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuaW1wb3J0IHsgdG9Qcm9wZXJ0eU5hbWUgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXQnO1xuXG4vLyBUaGlzIGlzIGEgdHlwZXNjcmlwdCB0eXBlIHRvIHByZXZlbnQgaW5mZXJlbmNlIGZyb20gY29sbGFwc2luZyB0aGUgdW5pb24gdHlwZSB0byBhIHN0cmluZyB0byBpbXByb3ZlIHR5cGUgc2FmZXR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuZXhwb3J0IHR5cGUgSWNvblR5cGUgPSBJY29uTmFtZSB8IChzdHJpbmcgJiB7fSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLWljb24nLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5nSWNvbiB7XG4gIC8qKiBBY2Nlc3MgdGhlIGdsb2JhbCBpY29uIGNvbmZpZyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdE5nSWNvbkNvbmZpZygpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGljb25zICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3ROZ0ljb25zKCk7XG5cbiAgLyoqIEFjY2VzcyB0aGUgaWNvbiBsb2FkZXIgaWYgZGVmaW5lZCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlciA9IGluamVjdE5nSWNvbkxvYWRlcigpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGljb24gY2FjaGUgaWYgZGVmaW5lZCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlID0gaW5qZWN0TmdJY29uTG9hZGVyQ2FjaGUoKTtcblxuICAvKiogQWNjZXNzIHRoZSBpbmplY3RvciAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAvKiogQWNjZXNzIHRoZSBlbGVtZW50IHJlZiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIC8qKiBEZWZpbmUgdGhlIG5hbWUgb2YgdGhlIGljb24gdG8gZGlzcGxheSAqL1xuICBASW5wdXQoKSBzZXQgbmFtZShuYW1lOiBJY29uVHlwZSkge1xuICAgIHRoaXMuc2V0SWNvbihuYW1lKTtcbiAgfVxuXG4gIC8qKiBEZWZpbmUgdGhlIHNpemUgb2YgdGhlIGljb24gKi9cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLW5nLWljb25fX3NpemUnKVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUNzc1BpeGVsVmFsdWUgfSlcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlciA9IHRoaXMuY29uZmlnLnNpemU7XG5cbiAgLyoqIERlZmluZSB0aGUgc3Ryb2tlLXdpZHRoIG9mIHRoZSBpY29uICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1uZy1pY29uX19zdHJva2Utd2lkdGgnKVxuICBASW5wdXQoKVxuICBzdHJva2VXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcblxuICAvKiogRGVmaW5lIHRoZSBjb2xvciBvZiB0aGUgaWNvbiAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmNvbG9yJylcbiAgQElucHV0KClcbiAgY29sb3I/OiBzdHJpbmcgPSB0aGlzLmNvbmZpZy5jb2xvcjtcblxuICAvKipcbiAgICogTG9hZCB0aGUgaWNvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBpbnNlcnQgaXQgaW50byB0aGUgdGVtcGxhdGUuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGxvYWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNldEljb24obmFtZTogSWNvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSB0b1Byb3BlcnR5TmFtZShuYW1lKTtcblxuICAgIGZvciAoY29uc3QgaWNvbnMgb2YgWy4uLnRoaXMuaWNvbnNdLnJldmVyc2UoKSkge1xuICAgICAgaWYgKGljb25zW3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgLy8gaW5zZXJ0IHRoZSBTVkcgaW50byB0aGUgdGVtcGxhdGVcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gaWNvbnNbcHJvcGVydHlOYW1lXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIHRoZXJlIGlzIGEgbG9hZGVyIGRlZmluZWQsIHVzZSBpdCB0byBsb2FkIHRoZSBpY29uXG4gICAgaWYgKHRoaXMubG9hZGVyKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3RJY29uRnJvbUxvYWRlcihuYW1lKTtcblxuICAgICAgLy8gaWYgdGhlIHJlc3VsdCBpcyBhIHN0cmluZywgaW5zZXJ0IHRoZSBTVkcgaW50byB0aGUgdGVtcGxhdGVcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gcmVzdWx0O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gaWNvbiB3aXRoIHRoaXMgbmFtZSB3YXJuIHRoZSB1c2VyIGFzIHRoZXkgcHJvYmFibHkgZm9yZ290IHRvIGltcG9ydCBpdFxuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBObyBpY29uIG5hbWVkICR7bmFtZX0gd2FzIGZvdW5kLiBZb3UgbWF5IG5lZWQgdG8gaW1wb3J0IGl0IHVzaW5nIHRoZSB3aXRoSWNvbnMgZnVuY3Rpb24uYCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgdGhlIGljb24gZnJvbSB0aGUgbG9hZGVyLlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaWNvbiB0byBsb2FkLlxuICAgKiBAcmV0dXJucyBUaGUgU1ZHIGNvbnRlbnQgZm9yIGEgZ2l2ZW4gaWNvbiBuYW1lLlxuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0SWNvbkZyb21Mb2FkZXIobmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgY2FjaGUsIGNoZWNrIGlmIHRoZSBpY29uIGlzIGFscmVhZHkgbG9hZGVkIChpLmUsIGl0IGlzIGEgc3RyaW5nKVxuICAgICAgICBpZiAodGhpcy5jYWNoZSkge1xuICAgICAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IHRoaXMuY2FjaGUuZ2V0KG5hbWUpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBjYWNoZWRSZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXNvbHZlKGNhY2hlZFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaXQgbWF5IGJlIGEgcHJvbWlzZSwgc28gd2UgbmVlZCB0byBhd2FpdCBpdFxuICAgICAgICAgIGlmIChjYWNoZWRSZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZWRSZXN1bHQ7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvZXJjZUxvYWRlclJlc3VsdCh0aGlzLmxvYWRlciEobmFtZSkpO1xuXG4gICAgICAgIC8vIHN0b3JlIHRoZSBwcm9taXNlIGluIHRoZSBjYWNoZSBzbyBpZiB3ZSBnZXQgcmVwZWF0ZWQgY2FsbHMgKGUuZy4gaW4gYSBsb29wKSBiZWZvcmUgdGhlIGxvYWRlciBoYXMgcmVzb2x2ZWRcbiAgICAgICAgLy8gdGhlbiBkb24ndCBjYWxsIHRoZSBsb2FkZXIgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXNcbiAgICAgICAgdGhpcy5jYWNoZT8uc2V0KG5hbWUsIHByb21pc2UpO1xuXG4gICAgICAgIC8vIGF3YWl0IHRoZSByZXN1bHQgb2YgdGhlIHByb21pc2VcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbWlzZTtcblxuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgY2FjaGUsIHN0b3JlIHRoZSByZXN1bHRcbiAgICAgICAgdGhpcy5jYWNoZT8uc2V0KG5hbWUsIHJlc3VsdCk7XG5cbiAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Inject, NgModule } from '@angular/core';
2
- import { NgIcon } from './icon.component';
2
+ import { NgIcon } from './components/icon/icon.component';
3
3
  import { NgIconsToken, provideIcons } from './providers/icon.provider';
4
4
  import * as i0 from "@angular/core";
5
5
  export class NgIconsModule {
@@ -16,11 +16,11 @@ export class NgIconsModule {
16
16
  static withIcons(icons) {
17
17
  return { ngModule: NgIconsModule, providers: provideIcons(icons) };
18
18
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: NgIconsModule, deps: [{ token: NgIconsToken }], target: i0.ɵɵFactoryTarget.NgModule }); }
20
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: NgIconsModule, imports: [NgIcon], exports: [NgIcon] }); }
21
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: NgIconsModule }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIconsModule, deps: [{ token: NgIconsToken }], target: i0.ɵɵFactoryTarget.NgModule }); }
20
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: NgIconsModule, imports: [NgIcon], exports: [NgIcon] }); }
21
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIconsModule }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: NgIconsModule, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIconsModule, decorators: [{
24
24
  type: NgModule,
25
25
  args: [{
26
26
  imports: [NgIcon],
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
31
31
  args: [NgIconsToken]
32
32
  }] }] });
33
33
  export const NG_ICON_DIRECTIVES = [NgIcon];
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvaWNvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU12RSxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFrQyxLQUE2QjtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLHFIQUFxSCxDQUN0SCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQ2QsS0FBNkI7UUFFN0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3JFLENBQUM7OEdBbEJVLGFBQWEsa0JBQ0osWUFBWTsrR0FEckIsYUFBYSxZQUhkLE1BQU0sYUFDTixNQUFNOytHQUVMLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO29CQUNqQixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ2xCOzswQkFFYyxNQUFNOzJCQUFDLFlBQVk7O0FBb0JsQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQU0sQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdJY29uIH0gZnJvbSAnLi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0ljb25zVG9rZW4sIHByb3ZpZGVJY29ucyB9IGZyb20gJy4vcHJvdmlkZXJzL2ljb24ucHJvdmlkZXInO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbTmdJY29uXSxcbiAgZXhwb3J0czogW05nSWNvbl0sXG59KVxuZXhwb3J0IGNsYXNzIE5nSWNvbnNNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KE5nSWNvbnNUb2tlbikgaWNvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoaWNvbnMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnTm8gaWNvbnMgaGF2ZSBiZWVuIHByb3ZpZGVkLiBFbnN1cmUgdG8gaW5jbHVkZSBzb21lIGljb25zIGJ5IGltcG9ydGluZyB0aGVtIHVzaW5nIE5nSWNvbnNNb2R1bGUud2l0aEljb25zKHsgLi4uIH0pLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIGljb25zIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgYXBwbGljYXRpb24uIFRoaXMgYWxsb3dzIHVudXNlZCBpY29ucyB0b1xuICAgKiBiZSB0cmVlLXNoYWtlbiBhd2F5IHRvIHJlZHVjZSBidW5kbGUgc2l6ZVxuICAgKiBAcGFyYW0gaWNvbnMgVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1aXJlZCBpY29uc1xuICAgKi9cbiAgc3RhdGljIHdpdGhJY29ucyhcbiAgICBpY29uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ0ljb25zTW9kdWxlPiB7XG4gICAgcmV0dXJuIHsgbmdNb2R1bGU6IE5nSWNvbnNNb2R1bGUsIHByb3ZpZGVyczogcHJvdmlkZUljb25zKGljb25zKSB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBOR19JQ09OX0RJUkVDVElWRVMgPSBbTmdJY29uXSBhcyBjb25zdDtcbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvaWNvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU12RSxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFrQyxLQUE2QjtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQ2IscUhBQXFILENBQ3RILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUNkLEtBQTZCO1FBRTdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDOzhHQWxCVSxhQUFhLGtCQUNKLFlBQVk7K0dBRHJCLGFBQWEsWUFIZCxNQUFNLGFBQ04sTUFBTTsrR0FFTCxhQUFhOzsyRkFBYixhQUFhO2tCQUp6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztvQkFDakIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO2lCQUNsQjs7MEJBRWMsTUFBTTsyQkFBQyxZQUFZOztBQW9CbEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLENBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nSWNvbiB9IGZyb20gJy4vY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWNvbnNUb2tlbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnLi9wcm92aWRlcnMvaWNvbi5wcm92aWRlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtOZ0ljb25dLFxuICBleHBvcnRzOiBbTmdJY29uXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdJY29uc01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTmdJY29uc1Rva2VuKSBpY29uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIGlmIChPYmplY3Qua2V5cyhpY29ucykubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdObyBpY29ucyBoYXZlIGJlZW4gcHJvdmlkZWQuIEVuc3VyZSB0byBpbmNsdWRlIHNvbWUgaWNvbnMgYnkgaW1wb3J0aW5nIHRoZW0gdXNpbmcgTmdJY29uc01vZHVsZS53aXRoSWNvbnMoeyAuLi4gfSkuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgaWNvbnMgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBhbGxvd3MgdW51c2VkIGljb25zIHRvXG4gICAqIGJlIHRyZWUtc2hha2VuIGF3YXkgdG8gcmVkdWNlIGJ1bmRsZSBzaXplXG4gICAqIEBwYXJhbSBpY29ucyBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlcXVpcmVkIGljb25zXG4gICAqL1xuICBzdGF0aWMgd2l0aEljb25zKFxuICAgIGljb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5nSWNvbnNNb2R1bGU+IHtcbiAgICByZXR1cm4geyBuZ01vZHVsZTogTmdJY29uc01vZHVsZSwgcHJvdmlkZXJzOiBwcm92aWRlSWNvbnMoaWNvbnMpIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IE5HX0lDT05fRElSRUNUSVZFUyA9IFtOZ0ljb25dIGFzIGNvbnN0O1xuIl19
@@ -0,0 +1,29 @@
1
+ import { InjectionToken, inject } from '@angular/core';
2
+ export const NgGlyphConfigToken = new InjectionToken('Ng Glyph Config');
3
+ const defaultConfig = {
4
+ size: '1em',
5
+ opticalSize: 20,
6
+ weight: 400,
7
+ grade: 0,
8
+ fill: false,
9
+ };
10
+ /**
11
+ * Provide the configuration for the glyph
12
+ * @param config The configuration to use
13
+ */
14
+ export function provideNgGlyphsConfig(config) {
15
+ return {
16
+ provide: NgGlyphConfigToken,
17
+ useValue: { ...defaultConfig, ...config },
18
+ };
19
+ }
20
+ /**
21
+ * Inject the configuration for the glyphs
22
+ * @returns The configuration to use
23
+ * @internal
24
+ */
25
+ export function injectNgGlyphsConfig() {
26
+ return (inject(NgGlyphConfigToken, { optional: true }) ??
27
+ defaultConfig);
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x5cGgtY29uZmlnLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3Byb3ZpZGVycy9nbHlwaC1jb25maWcucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFpQmpFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNsRCxpQkFBaUIsQ0FDbEIsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFrQjtJQUNuQyxJQUFJLEVBQUUsS0FBSztJQUNYLFdBQVcsRUFBRSxFQUFFO0lBQ2YsTUFBTSxFQUFFLEdBQUc7SUFDWCxLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxLQUFLO0NBQ1osQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsTUFBOEI7SUFFOUIsT0FBTztRQUNMLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsUUFBUSxFQUFFLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxNQUFNLEVBQUU7S0FDMUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3BELGFBQWEsQ0FBNEIsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ0dseXBoQ29uZmlnIHtcbiAgLyoqIERlZmluZSB0aGUgZGVmYXVsdCBzaXplIG9mIGdseXBoICovXG4gIHNpemU6IHN0cmluZyB8IG51bWJlcjtcbiAgLyoqIERlZmluZSB0aGUgb3B0aWNhbCBzaXplIG9mIHRoZSBnbHlwaCAqL1xuICBvcHRpY2FsU2l6ZT86IG51bWJlcjtcbiAgLyoqIERlZmluZSB0aGUgZGVmYXVsdCBjb2xvciBvZiBnbHlwaCAqL1xuICBjb2xvcj86IHN0cmluZztcbiAgLyoqIERlZmluZSB0aGUgZGVmYXVsdCB3ZWlnaHQgb2YgZ2x5cGggKi9cbiAgd2VpZ2h0PzogbnVtYmVyO1xuICAvKiogRGVmaW5lIHRoZSBkZWZhdWx0IGdyYWRlIG9mIGdseXBoICovXG4gIGdyYWRlPzogbnVtYmVyO1xuICAvKiogRGVmaW5lIHRoZSBkZWZhdWx0IGZpbGwgb2YgZ2x5cGggKi9cbiAgZmlsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBOZ0dseXBoQ29uZmlnVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVxdWlyZWQ8TmdHbHlwaENvbmZpZz4+KFxuICAnTmcgR2x5cGggQ29uZmlnJyxcbik7XG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IE5nR2x5cGhDb25maWcgPSB7XG4gIHNpemU6ICcxZW0nLFxuICBvcHRpY2FsU2l6ZTogMjAsXG4gIHdlaWdodDogNDAwLFxuICBncmFkZTogMCxcbiAgZmlsbDogZmFsc2UsXG59O1xuXG4vKipcbiAqIFByb3ZpZGUgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnbHlwaFxuICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbiB0byB1c2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ0dseXBoc0NvbmZpZyhcbiAgY29uZmlnOiBQYXJ0aWFsPE5nR2x5cGhDb25maWc+LFxuKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IE5nR2x5cGhDb25maWdUb2tlbixcbiAgICB1c2VWYWx1ZTogeyAuLi5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBJbmplY3QgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnbHlwaHNcbiAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIHRvIHVzZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ0dseXBoc0NvbmZpZygpOiBSZXF1aXJlZDxOZ0dseXBoQ29uZmlnPiB7XG4gIHJldHVybiAoaW5qZWN0KE5nR2x5cGhDb25maWdUb2tlbiwgeyBvcHRpb25hbDogdHJ1ZSB9KSA/P1xuICAgIGRlZmF1bHRDb25maWcpIGFzIFJlcXVpcmVkPE5nR2x5cGhDb25maWc+O1xufVxuIl19
@@ -0,0 +1,21 @@
1
+ import { InjectionToken, inject, makeEnvironmentProviders, } from '@angular/core';
2
+ export const NgGlyphsToken = new InjectionToken('NgGlyphsToken');
3
+ export function provideNgGlyphs(...glyphsets) {
4
+ // if there are no glyphsets, throw an error
5
+ if (!glyphsets.length) {
6
+ throw new Error('Please provide at least one glyphset.');
7
+ }
8
+ // the default glyphset is the first one
9
+ const defaultGlyphset = glyphsets[0].name;
10
+ return makeEnvironmentProviders([
11
+ { provide: NgGlyphsToken, useValue: { defaultGlyphset, glyphsets } },
12
+ ]);
13
+ }
14
+ export function injectNgGlyphs() {
15
+ const glyphs = inject(NgGlyphsToken, { optional: true });
16
+ if (!glyphs) {
17
+ throw new Error('Please provide the glyphs using the provideNgGlyphs() function.');
18
+ }
19
+ return glyphs;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x5cGgucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcHJvdmlkZXJzL2dseXBoLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxjQUFjLEVBQ2QsTUFBTSxFQUNOLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQVcsZUFBZSxDQUFDLENBQUM7QUFFM0UsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsR0FBRyxTQUF1QjtJQUUxQiw0Q0FBNEM7SUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRTFDLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsRUFBRTtLQUNyRSxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWM7SUFDNUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXpELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsaUVBQWlFLENBQ2xFLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgaW5qZWN0LFxuICBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgTmdHbHlwaHNUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ0dseXBocz4oJ05nR2x5cGhzVG9rZW4nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ0dseXBocyhcbiAgLi4uZ2x5cGhzZXRzOiBOZ0dseXBoc2V0W11cbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgLy8gaWYgdGhlcmUgYXJlIG5vIGdseXBoc2V0cywgdGhyb3cgYW4gZXJyb3JcbiAgaWYgKCFnbHlwaHNldHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhdCBsZWFzdCBvbmUgZ2x5cGhzZXQuJyk7XG4gIH1cblxuICAvLyB0aGUgZGVmYXVsdCBnbHlwaHNldCBpcyB0aGUgZmlyc3Qgb25lXG4gIGNvbnN0IGRlZmF1bHRHbHlwaHNldCA9IGdseXBoc2V0c1swXS5uYW1lO1xuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHsgcHJvdmlkZTogTmdHbHlwaHNUb2tlbiwgdXNlVmFsdWU6IHsgZGVmYXVsdEdseXBoc2V0LCBnbHlwaHNldHMgfSB9LFxuICBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5nR2x5cGhzKCk6IE5nR2x5cGhzIHtcbiAgY29uc3QgZ2x5cGhzID0gaW5qZWN0KE5nR2x5cGhzVG9rZW4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgaWYgKCFnbHlwaHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnUGxlYXNlIHByb3ZpZGUgdGhlIGdseXBocyB1c2luZyB0aGUgcHJvdmlkZU5nR2x5cGhzKCkgZnVuY3Rpb24uJyxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGdseXBocztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ0dseXBoc2V0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBiYXNlQ2xhc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ0dseXBocyB7XG4gIGRlZmF1bHRHbHlwaHNldDogc3RyaW5nO1xuICBnbHlwaHNldHM6IE5nR2x5cGhzZXRbXTtcbn1cbiJdfQ==
@@ -12,4 +12,4 @@ export function coerceLoaderResult(result) {
12
12
  }
13
13
  return result;
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvYXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxNQUFxRDtJQUVyRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtRQUM5QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDaEM7SUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN4QixPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMvQjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSwgaXNPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQSBsb2FkZXIgbWF5IHJldHVybiBhIHByb21pc2UsIGFuIG9ic2VydmFibGUgb3IgYSBzdHJpbmcuIFRoaXMgZnVuY3Rpb24gd2lsbCBjb2VyY2UgdGhlIHJlc3VsdCBpbnRvIGEgcHJvbWlzZS5cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VMb2FkZXJSZXN1bHQoXG4gIHJlc3VsdDogUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+IHwgc3RyaW5nLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICB9XG5cbiAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHJlc3VsdCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvYXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxNQUFxRDtJQUVyRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGZpcnN0VmFsdWVGcm9tLCBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBIGxvYWRlciBtYXkgcmV0dXJuIGEgcHJvbWlzZSwgYW4gb2JzZXJ2YWJsZSBvciBhIHN0cmluZy4gVGhpcyBmdW5jdGlvbiB3aWxsIGNvZXJjZSB0aGUgcmVzdWx0IGludG8gYSBwcm9taXNlLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUxvYWRlclJlc3VsdChcbiAgcmVzdWx0OiBQcm9taXNlPHN0cmluZz4gfCBPYnNlcnZhYmxlPHN0cmluZz4gfCBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4gIH1cblxuICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20ocmVzdWx0KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export function coerceCssPixelValue(value) {
2
+ return value == null ? '' : /^\d+$/.test(value) ? `${value}px` : value;
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvdXRpbHMvY29lcmNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWE7SUFDL0MsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUNzc1BpeGVsVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiAvXlxcZCskLy50ZXN0KHZhbHVlKSA/IGAke3ZhbHVlfXB4YCA6IHZhbHVlO1xufVxuIl19
@@ -1,7 +1,159 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Optional, SkipSelf, Injector, ElementRef, runInInjectionContext, Component, ChangeDetectionStrategy, Input, HostBinding, NgModule, Inject } from '@angular/core';
2
+ import { InjectionToken, inject, makeEnvironmentProviders, numberAttribute, booleanAttribute, Component, ChangeDetectionStrategy, HostBinding, Input, Optional, SkipSelf, Injector, ElementRef, runInInjectionContext, NgModule, Inject } from '@angular/core';
3
3
  import { isObservable, firstValueFrom } from 'rxjs';
4
4
 
5
+ const NgGlyphConfigToken = new InjectionToken('Ng Glyph Config');
6
+ const defaultConfig$1 = {
7
+ size: '1em',
8
+ opticalSize: 20,
9
+ weight: 400,
10
+ grade: 0,
11
+ fill: false,
12
+ };
13
+ /**
14
+ * Provide the configuration for the glyph
15
+ * @param config The configuration to use
16
+ */
17
+ function provideNgGlyphsConfig(config) {
18
+ return {
19
+ provide: NgGlyphConfigToken,
20
+ useValue: { ...defaultConfig$1, ...config },
21
+ };
22
+ }
23
+ /**
24
+ * Inject the configuration for the glyphs
25
+ * @returns The configuration to use
26
+ * @internal
27
+ */
28
+ function injectNgGlyphsConfig() {
29
+ return (inject(NgGlyphConfigToken, { optional: true }) ??
30
+ defaultConfig$1);
31
+ }
32
+
33
+ const NgGlyphsToken = new InjectionToken('NgGlyphsToken');
34
+ function provideNgGlyphs(...glyphsets) {
35
+ // if there are no glyphsets, throw an error
36
+ if (!glyphsets.length) {
37
+ throw new Error('Please provide at least one glyphset.');
38
+ }
39
+ // the default glyphset is the first one
40
+ const defaultGlyphset = glyphsets[0].name;
41
+ return makeEnvironmentProviders([
42
+ { provide: NgGlyphsToken, useValue: { defaultGlyphset, glyphsets } },
43
+ ]);
44
+ }
45
+ function injectNgGlyphs() {
46
+ const glyphs = inject(NgGlyphsToken, { optional: true });
47
+ if (!glyphs) {
48
+ throw new Error('Please provide the glyphs using the provideNgGlyphs() function.');
49
+ }
50
+ return glyphs;
51
+ }
52
+
53
+ function coerceCssPixelValue(value) {
54
+ return value == null ? '' : /^\d+$/.test(value) ? `${value}px` : value;
55
+ }
56
+
57
+ class NgGlyph {
58
+ constructor() {
59
+ /**
60
+ * Access the available glyphsets
61
+ */
62
+ this.glyphsets = injectNgGlyphs();
63
+ /**
64
+ * Access the default configuration
65
+ */
66
+ this.config = injectNgGlyphsConfig();
67
+ /**
68
+ * Define the glyphset to use
69
+ */
70
+ this.glyphset = this.glyphsets.defaultGlyphset;
71
+ /**
72
+ * Define the optical size of the glyph
73
+ */
74
+ this.opticalSize = this.config.opticalSize;
75
+ /**
76
+ * Define the weight of the glyph
77
+ */
78
+ this.weight = this.config.weight;
79
+ /**
80
+ * Define the grade of the glyph
81
+ */
82
+ this.grade = this.config.grade;
83
+ /**
84
+ * Define the fill of the glyph
85
+ */
86
+ this.fill = this.config.fill;
87
+ /**
88
+ * Define the size of the glyph
89
+ */
90
+ this.size = this.config.size;
91
+ /**
92
+ * Define the color of the glyph
93
+ */
94
+ this.color = this.config.color;
95
+ }
96
+ /**
97
+ * Derive the glyphset class from the glyphset name
98
+ */
99
+ get glyphsetClass() {
100
+ const glyphset = this.glyphsets.glyphsets.find(glyphset => glyphset.name === this.glyphset);
101
+ if (!glyphset) {
102
+ throw new Error(`The glyphset "${this.glyphset}" does not exist. Please provide a valid glyphset.`);
103
+ }
104
+ return glyphset.baseClass;
105
+ }
106
+ /**
107
+ * Define the font variation settings of the glyph
108
+ */
109
+ get fontVariationSettings() {
110
+ return `'FILL' ${this.fill ? 1 : 0}, 'wght' ${this.weight}, 'GRAD' ${this.grade}, 'opsz' ${this.opticalSize}`;
111
+ }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgGlyph, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.3", type: NgGlyph, isStandalone: true, selector: "ng-glyph", inputs: { name: "name", glyphset: "glyphset", opticalSize: ["opticalSize", "opticalSize", numberAttribute], weight: ["weight", "weight", numberAttribute], grade: ["grade", "grade", numberAttribute], fill: ["fill", "fill", booleanAttribute], size: ["size", "size", coerceCssPixelValue], color: "color" }, host: { properties: { "textContent": "this.name", "style.--ng-glyph__size": "this.size", "style.color": "this.color", "class": "this.glyphsetClass", "style.font-variation-settings": "this.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 }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgGlyph, decorators: [{
116
+ type: Component,
117
+ args: [{ selector: 'ng-glyph', standalone: true, template: ``, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-block;width:var(--ng-glyph__size);height:var(--ng-glyph__size);font-size:var(--ng-glyph__size);overflow:hidden}\n"] }]
118
+ }], propDecorators: { name: [{
119
+ type: HostBinding,
120
+ args: ['textContent']
121
+ }, {
122
+ type: Input,
123
+ args: [{ required: true }]
124
+ }], glyphset: [{
125
+ type: Input
126
+ }], opticalSize: [{
127
+ type: Input,
128
+ args: [{ transform: numberAttribute }]
129
+ }], weight: [{
130
+ type: Input,
131
+ args: [{ transform: numberAttribute }]
132
+ }], grade: [{
133
+ type: Input,
134
+ args: [{ transform: numberAttribute }]
135
+ }], fill: [{
136
+ type: Input,
137
+ args: [{ transform: booleanAttribute }]
138
+ }], size: [{
139
+ type: HostBinding,
140
+ args: ['style.--ng-glyph__size']
141
+ }, {
142
+ type: Input,
143
+ args: [{ transform: coerceCssPixelValue }]
144
+ }], color: [{
145
+ type: HostBinding,
146
+ args: ['style.color']
147
+ }, {
148
+ type: Input
149
+ }], glyphsetClass: [{
150
+ type: HostBinding,
151
+ args: ['class']
152
+ }], fontVariationSettings: [{
153
+ type: HostBinding,
154
+ args: ['style.font-variation-settings']
155
+ }] } });
156
+
5
157
  const NgIconConfigToken = new InjectionToken('Ng Icon Config');
6
158
  const defaultConfig = {
7
159
  size: '1em',
@@ -199,12 +351,12 @@ class NgIcon {
199
351
  });
200
352
  });
201
353
  }
202
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: NgIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
203
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.1", type: NgIcon, isStandalone: true, selector: "ng-icon", inputs: { name: "name", size: ["size", "size", coerceCssPixelValue], strokeWidth: "strokeWidth", color: "color" }, host: { properties: { "style.--ng-icon__size": "this.size", "style.--ng-icon__stroke-width": "this.strokeWidth", "style.color": "this.color" } }, ngImport: i0, template: '', isInline: true, styles: [":host{display:inline-block;width:var(--ng-icon__size);height:var(--ng-icon__size)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
355
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.1.3", type: NgIcon, isStandalone: true, selector: "ng-icon", inputs: { name: "name", size: ["size", "size", coerceCssPixelValue], strokeWidth: "strokeWidth", color: "color" }, host: { properties: { "style.--ng-icon__size": "this.size", "style.--ng-icon__stroke-width": "this.strokeWidth", "style.color": "this.color" } }, ngImport: i0, template: '', isInline: true, styles: [":host{display:inline-block;width:var(--ng-icon__size);height:var(--ng-icon__size);overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
204
356
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: NgIcon, decorators: [{
357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIcon, decorators: [{
206
358
  type: Component,
207
- args: [{ selector: 'ng-icon', template: '', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-block;width:var(--ng-icon__size);height:var(--ng-icon__size)}\n"] }]
359
+ args: [{ selector: 'ng-icon', template: '', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-block;width:var(--ng-icon__size);height:var(--ng-icon__size);overflow:hidden}\n"] }]
208
360
  }], propDecorators: { name: [{
209
361
  type: Input
210
362
  }], size: [{
@@ -224,9 +376,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
224
376
  }, {
225
377
  type: Input
226
378
  }] } });
227
- function coerceCssPixelValue(value) {
228
- return value == null ? '' : /^\d+$/.test(value) ? `${value}px` : value;
229
- }
230
379
 
231
380
  class NgIconsModule {
232
381
  constructor(icons) {
@@ -242,11 +391,11 @@ class NgIconsModule {
242
391
  static withIcons(icons) {
243
392
  return { ngModule: NgIconsModule, providers: provideIcons(icons) };
244
393
  }
245
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: NgIconsModule, deps: [{ token: NgIconsToken }], target: i0.ɵɵFactoryTarget.NgModule }); }
246
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: NgIconsModule, imports: [NgIcon], exports: [NgIcon] }); }
247
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: NgIconsModule }); }
394
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIconsModule, deps: [{ token: NgIconsToken }], target: i0.ɵɵFactoryTarget.NgModule }); }
395
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: NgIconsModule, imports: [NgIcon], exports: [NgIcon] }); }
396
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIconsModule }); }
248
397
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: NgIconsModule, decorators: [{
398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NgIconsModule, decorators: [{
250
399
  type: NgModule,
251
400
  args: [{
252
401
  imports: [NgIcon],
@@ -262,5 +411,5 @@ const NG_ICON_DIRECTIVES = [NgIcon];
262
411
  * Generated bundle index. Do not edit.
263
412
  */
264
413
 
265
- export { NG_ICON_DIRECTIVES, NgIcon, NgIconCacheToken, NgIcon as NgIconComponent, NgIconConfigToken, NgIconLoaderToken, NgIconsModule, NgIconsToken, injectNgIconConfig, injectNgIconLoader, injectNgIconLoaderCache, injectNgIcons, provideIcons, provideNgIconLoader, provideNgIconsConfig, withCaching };
414
+ export { NG_ICON_DIRECTIVES, NgGlyph, NgGlyphConfigToken, NgIcon, NgIconCacheToken, NgIcon as NgIconComponent, NgIconConfigToken, NgIconLoaderToken, NgIconsModule, NgIconsToken, injectNgGlyphsConfig, injectNgIconConfig, injectNgIconLoader, injectNgIconLoaderCache, injectNgIcons, provideIcons, provideNgGlyphs, provideNgGlyphsConfig, provideNgIconLoader, provideNgIconsConfig, withCaching };
266
415
  //# sourceMappingURL=ng-icons-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-icons-core.mjs","sources":["../../../../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/icon.component.ts","../../../../packages/core/src/lib/icon.module.ts","../../../../packages/core/src/ng-icons-core.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\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}\n\nexport const NgIconConfigToken = new InjectionToken<NgIconConfig>(\n 'Ng Icon Config',\n);\n\nconst defaultConfig: NgIconConfig = {\n size: '1em',\n};\n\n/**\n * Provide the configuration for the icons\n * @param config The configuration to use\n */\nexport function provideNgIconsConfig(config: Partial<NgIconConfig>): Provider {\n return {\n provide: NgIconConfigToken,\n useValue: { ...defaultConfig, ...config },\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 }) ?? defaultConfig;\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 {\n InjectionToken,\n Optional,\n Provider,\n SkipSelf,\n inject,\n} 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: (parentIcons?: Record<string, string>[]) => ({\n ...parentIcons?.reduce((acc, icons) => ({ ...acc, ...icons }), {}),\n ...icons,\n }),\n deps: [[NgIconsToken, new Optional(), new SkipSelf()]],\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, firstValueFrom, 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 return firstValueFrom(result);\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 {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n inject,\n Injector,\n Input,\n runInInjectionContext,\n} from '@angular/core';\nimport type { IconName } from './icon-name';\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 { 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\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type IconType = IconName | (string & {});\n\n@Component({\n selector: 'ng-icon',\n template: '',\n standalone: true,\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgIcon {\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 injector */\n private readonly injector = inject(Injector);\n\n /** Access the element ref */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Define the name of the icon to display */\n @Input() set name(name: IconType) {\n this.setIcon(name);\n }\n\n /** Define the size of the icon */\n @HostBinding('style.--ng-icon__size')\n @Input({ transform: coerceCssPixelValue })\n size?: string | number = this.config.size;\n\n /** Define the stroke-width of the icon */\n @HostBinding('style.--ng-icon__stroke-width')\n @Input()\n strokeWidth?: string | number;\n\n /** Define the color of the icon */\n @HostBinding('style.color')\n @Input()\n color?: string = this.config.color;\n\n /**\n * Load the icon with the given name and insert it into the template.\n * @param name The name of the icon to load.\n */\n private async setIcon(name: IconType): Promise<void> {\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.elementRef.nativeElement.innerHTML = 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.elementRef.nativeElement.innerHTML = 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 console.warn(\n `No icon named ${name} was found. You may need to import it using the withIcons function.`,\n );\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\nfunction coerceCssPixelValue(value: string): string {\n return value == null ? '' : /^\\d+$/.test(value) ? `${value}px` : value;\n}\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgIcon } from './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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MASa,iBAAiB,GAAG,IAAI,cAAc,CACjD,gBAAgB,EAChB;AAEF,MAAM,aAAa,GAAiB;AAClC,IAAA,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF;;;AAGG;AACG,SAAU,oBAAoB,CAAC,MAA6B,EAAA;IAChE,OAAO;AACL,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,QAAQ,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED;;;;AAIG;SACa,kBAAkB,GAAA;AAChC,IAAA,OAAO,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,aAAa,CAAC;AACxE;;MC5Ba,iBAAiB,GAAG,IAAI,cAAc,CACjD,sBAAsB,EACtB;AAcF;;AAEG;AACH,SAAS,aAAa,CACpB,IAAiB,EACjB,SAAqB,EAAA;IAErB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC9C,CAAC;MASY,gBAAgB,GAAG,IAAI,cAAc,CAChD,qBAAqB,EACrB;AAEF;;AAEG;SACa,WAAW,GAAA;AACzB,IAAA,OAAO,aAAa,CAAyC,CAAA,+CAAA;QAC3D,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAkB,EAAE;AACnE,KAAA,CAAC,CAAC;AACL,CAAC;AAED;;;;;AAKG;SACa,mBAAmB,CACjC,MAAoB,EACpB,GAAG,QAAgC,EAAA;IAEnC,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE;QAChD,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;AAEG;SACa,kBAAkB,GAAA;IAChC,OAAO,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;AAEG;SACa,uBAAuB,GAAA;IACrC,OAAO,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD;;ACzEA;;;AAGG;AACG,SAAU,YAAY,CAAC,KAA6B,EAAA;IACxD,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,UAAU,EAAE,CAAC,WAAsC,MAAM;gBACvD,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAClE,gBAAA,GAAG,KAAK;aACT,CAAC;AACF,YAAA,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;AACtD,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;KACF,CAAC;AACJ,CAAC;MAEY,YAAY,GAAG,IAAI,cAAc,CAC5C,aAAa,EACb;AAEF;;;;AAIG;SACa,aAAa,GAAA;AAC3B,IAAA,OAAO,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AACxD;;ACnCA;;;AAGG;AACG,SAAU,kBAAkB,CAChC,MAAqD,EAAA;AAErD,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChC,KAAA;AAED,IAAA,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/B,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAChB;;AClBA;;AAEG;AACG,SAAU,cAAc,CAAC,GAAW,EAAA;AACxC,IAAA,OAAO,GAAG;SACP,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAC1C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAC7B;AACA,SAAA,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;AAC3B,SAAA,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/C;;MCqBa,MAAM,CAAA;AAPnB,IAAA,WAAA,GAAA;;QASmB,IAAM,CAAA,MAAA,GAAG,kBAAkB,EAAE,CAAC;;QAG9B,IAAK,CAAA,KAAA,GAAG,aAAa,EAAE,CAAC;;QAGxB,IAAM,CAAA,MAAA,GAAG,kBAAkB,EAAE,CAAC;;QAG9B,IAAK,CAAA,KAAA,GAAG,uBAAuB,EAAE,CAAC;;AAGlC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;;AAG5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;;AAU1E,QAAA,IAAA,CAAA,IAAI,GAAqB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAU1C,QAAA,IAAA,CAAA,KAAK,GAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AA2EpC,KAAA;;IA5FC,IAAa,IAAI,CAAC,IAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACpB;AAiBD;;;AAGG;IACK,MAAM,OAAO,CAAC,IAAc,EAAA;AAClC,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAE1C,QAAA,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE;AAC7C,YAAA,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;;gBAEvB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC9D,OAAO;AACR,aAAA;AACF,SAAA;;QAGD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;;YAGtD,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC;gBACjD,OAAO;AACR,aAAA;AACF,SAAA;;AAGD,QAAA,OAAO,CAAC,IAAI,CACV,iBAAiB,IAAI,CAAA,mEAAA,CAAqE,CAC3F,CAAC;KACH;AAED;;;;AAIG;AACK,IAAA,qBAAqB,CAAC,IAAY,EAAA;AACxC,QAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAG;AAC3B,YAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAW;;gBAE9C,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE1C,oBAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;wBACpC,OAAO,CAAC,YAAY,CAAC,CAAC;wBACtB,OAAO;AACR,qBAAA;;oBAGD,IAAI,YAAY,YAAY,OAAO,EAAE;AACnC,wBAAA,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAChB,OAAO;AACR,qBAAA;AACF,iBAAA;gBAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;;gBAIvD,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;AAG/B,gBAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;;gBAG7B,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAE9B,OAAO,CAAC,MAAM,CAAC,CAAC;AAClB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;8GA/GU,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAkHV,mBAAmB,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvHhB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKD,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,YACT,EAAE,EAAA,UAAA,EACA,IAAI,EAEC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;8BAsBlC,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAON,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,uBAAuB,CAAA;;sBACnC,KAAK;uBAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAA;gBAMzC,WAAW,EAAA,CAAA;sBAFV,WAAW;uBAAC,+BAA+B,CAAA;;sBAC3C,KAAK;gBAMN,KAAK,EAAA,CAAA;sBAFJ,WAAW;uBAAC,aAAa,CAAA;;sBACzB,KAAK;;AA8ER,SAAS,mBAAmB,CAAC,KAAa,EAAA;IACxC,OAAO,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,KAAK,CAAC;AACzE;;MC3Ia,aAAa,CAAA;AACxB,IAAA,WAAA,CAAkC,KAA6B,EAAA;QAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAA,MAAM,IAAI,KAAK,CACb,qHAAqH,CACtH,CAAC;AACH,SAAA;KACF;AAED;;;;AAIG;IACH,OAAO,SAAS,CACd,KAA6B,EAAA;AAE7B,QAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;KACpE;AAlBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBACJ,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GADrB,aAAa,EAAA,OAAA,EAAA,CAHd,MAAM,CAAA,EAAA,OAAA,EAAA,CACN,MAAM,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEL,aAAa,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,MAAM,CAAC;oBACjB,OAAO,EAAE,CAAC,MAAM,CAAC;AAClB,iBAAA,CAAA;;0BAEc,MAAM;2BAAC,YAAY,CAAA;;AAoBrB,MAAA,kBAAkB,GAAG,CAAC,MAAM;;AC7BzC;;AAEG;;;;"}
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/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/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 {\n EnvironmentProviders,\n InjectionToken,\n inject,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nexport const NgGlyphsToken = new InjectionToken<NgGlyphs>('NgGlyphsToken');\n\nexport function provideNgGlyphs(\n ...glyphsets: NgGlyphset[]\n): EnvironmentProviders {\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 makeEnvironmentProviders([\n { provide: NgGlyphsToken, useValue: { defaultGlyphset, glyphsets } },\n ]);\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 HostBinding,\n Input,\n booleanAttribute,\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})\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 @HostBinding('textContent')\n @Input({ required: true })\n name!: string;\n\n /**\n * Define the glyphset to use\n */\n @Input()\n glyphset: string = this.glyphsets.defaultGlyphset;\n\n /**\n * Define the optical size of the glyph\n */\n @Input({ transform: numberAttribute }) opticalSize: number =\n this.config.opticalSize;\n\n /**\n * Define the weight of the glyph\n */\n @Input({ transform: numberAttribute }) weight: number = this.config.weight;\n\n /**\n * Define the grade of the glyph\n */\n @Input({ transform: numberAttribute }) grade: number = this.config.grade;\n\n /**\n * Define the fill of the glyph\n */\n @Input({ transform: booleanAttribute }) fill: boolean = this.config.fill;\n\n /**\n * Define the size of the glyph\n */\n @HostBinding('style.--ng-glyph__size')\n @Input({ transform: coerceCssPixelValue })\n size?: string | number = this.config.size;\n\n /**\n * Define the color of the glyph\n */\n @HostBinding('style.color')\n @Input()\n color?: string = this.config.color;\n\n /**\n * Derive the glyphset class from the glyphset name\n */\n @HostBinding('class')\n get glyphsetClass(): string {\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 @HostBinding('style.font-variation-settings')\n get fontVariationSettings(): string {\n return `'FILL' ${this.fill ? 1 : 0}, 'wght' ${this.weight}, 'GRAD' ${\n this.grade\n }, 'opsz' ${this.opticalSize}`;\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\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}\n\nexport const NgIconConfigToken = new InjectionToken<NgIconConfig>(\n 'Ng Icon Config',\n);\n\nconst defaultConfig: NgIconConfig = {\n size: '1em',\n};\n\n/**\n * Provide the configuration for the icons\n * @param config The configuration to use\n */\nexport function provideNgIconsConfig(config: Partial<NgIconConfig>): Provider {\n return {\n provide: NgIconConfigToken,\n useValue: { ...defaultConfig, ...config },\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 }) ?? defaultConfig;\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 {\n InjectionToken,\n Optional,\n Provider,\n SkipSelf,\n inject,\n} 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: (parentIcons?: Record<string, string>[]) => ({\n ...parentIcons?.reduce((acc, icons) => ({ ...acc, ...icons }), {}),\n ...icons,\n }),\n deps: [[NgIconsToken, new Optional(), new SkipSelf()]],\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, firstValueFrom, 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 return firstValueFrom(result);\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 {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n inject,\n Injector,\n Input,\n runInInjectionContext,\n} from '@angular/core';\nimport type { IconName } from '../../components/icon/icon-name';\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\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type IconType = IconName | (string & {});\n\n@Component({\n selector: 'ng-icon',\n template: '',\n standalone: true,\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgIcon {\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 injector */\n private readonly injector = inject(Injector);\n\n /** Access the element ref */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Define the name of the icon to display */\n @Input() set name(name: IconType) {\n this.setIcon(name);\n }\n\n /** Define the size of the icon */\n @HostBinding('style.--ng-icon__size')\n @Input({ transform: coerceCssPixelValue })\n size?: string | number = this.config.size;\n\n /** Define the stroke-width of the icon */\n @HostBinding('style.--ng-icon__stroke-width')\n @Input()\n strokeWidth?: string | number;\n\n /** Define the color of the icon */\n @HostBinding('style.color')\n @Input()\n color?: string = this.config.color;\n\n /**\n * Load the icon with the given name and insert it into the template.\n * @param name The name of the icon to load.\n */\n private async setIcon(name: IconType): Promise<void> {\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.elementRef.nativeElement.innerHTML = 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.elementRef.nativeElement.innerHTML = 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 console.warn(\n `No icon named ${name} was found. You may need to import it using the withIcons function.`,\n );\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultConfig"],"mappings":";;;;MAiBa,kBAAkB,GAAG,IAAI,cAAc,CAClD,iBAAiB,EACjB;AAEF,MAAMA,eAAa,GAAkB;AACnC,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF;;;AAGG;AACG,SAAU,qBAAqB,CACnC,MAA8B,EAAA;IAE9B,OAAO;AACL,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,QAAQ,EAAE,EAAE,GAAGA,eAAa,EAAE,GAAG,MAAM,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED;;;;AAIG;SACa,oBAAoB,GAAA;IAClC,QAAQ,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpD,QAAAA,eAAa,EAA6B;AAC9C;;AC3CO,MAAM,aAAa,GAAG,IAAI,cAAc,CAAW,eAAe,CAAC,CAAC;AAE3D,SAAA,eAAe,CAC7B,GAAG,SAAuB,EAAA;;AAG1B,IAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACrB,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC1D;;IAGD,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE1C,IAAA,OAAO,wBAAwB,CAAC;QAC9B,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE;AACrE,KAAA,CAAC,CAAC;AACL,CAAC;SAEe,cAAc,GAAA;AAC5B,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;KACH;AAED,IAAA,OAAO,MAAM,CAAC;AAChB;;ACnCM,SAAU,mBAAmB,CAAC,KAAa,EAAA;IAC/C,OAAO,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,KAAK,CAAC;AACzE;;MCiBa,OAAO,CAAA;AAPpB,IAAA,WAAA,GAAA;AAQE;;AAEG;QACc,IAAS,CAAA,SAAA,GAAG,cAAc,EAAE,CAAC;AAE9C;;AAEG;QACc,IAAM,CAAA,MAAA,GAAG,oBAAoB,EAAE,CAAC;AASjD;;AAEG;AAEH,QAAA,IAAA,CAAA,QAAQ,GAAW,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAElD;;AAEG;AACoC,QAAA,IAAA,CAAA,WAAW,GAChD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAE1B;;AAEG;AACoC,QAAA,IAAA,CAAA,MAAM,GAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAE3E;;AAEG;AACoC,QAAA,IAAA,CAAA,KAAK,GAAW,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAEzE;;AAEG;AACqC,QAAA,IAAA,CAAA,IAAI,GAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAEzE;;AAEG;AAGH,QAAA,IAAA,CAAA,IAAI,GAAqB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAE1C;;AAEG;AAGH,QAAA,IAAA,CAAA,KAAK,GAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AA6BpC,KAAA;AA3BC;;AAEG;AACH,IAAA,IACI,aAAa,GAAA;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAC5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAC5C,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CACb,CAAA,cAAA,EAAiB,IAAI,CAAC,QAAQ,CAAoD,kDAAA,CAAA,CACnF,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,SAAS,CAAC;KAC3B;AAED;;AAEG;AACH,IAAA,IACI,qBAAqB,GAAA;QACvB,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAA,SAAA,EACvD,IAAI,CAAC,KACP,CAAA,SAAA,EAAY,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;KAChC;8GArFU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EA2BE,eAAe,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAMf,eAAe,CAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAKf,eAAe,CAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAKf,gBAAgB,CAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAMhB,mBAAmB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArD7B,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAID,OAAO,EAAA,UAAA,EAAA,CAAA;kBAPnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,QAAA,EACN,EAAE,EAEK,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,wIAAA,CAAA,EAAA,CAAA;8BAkB/C,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,aAAa,CAAA;;sBACzB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAOzB,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAMiC,WAAW,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;gBAME,MAAM,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;gBAKE,KAAK,EAAA,CAAA;sBAA3C,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;gBAKG,IAAI,EAAA,CAAA;sBAA3C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAOtC,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,wBAAwB,CAAA;;sBACpC,KAAK;uBAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAA;gBAQzC,KAAK,EAAA,CAAA;sBAFJ,WAAW;uBAAC,aAAa,CAAA;;sBACzB,KAAK;gBAOF,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,OAAO,CAAA;gBAmBhB,qBAAqB,EAAA,CAAA;sBADxB,WAAW;uBAAC,+BAA+B,CAAA;;;MC1FjC,iBAAiB,GAAG,IAAI,cAAc,CACjD,gBAAgB,EAChB;AAEF,MAAM,aAAa,GAAiB;AAClC,IAAA,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF;;;AAGG;AACG,SAAU,oBAAoB,CAAC,MAA6B,EAAA;IAChE,OAAO;AACL,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,QAAQ,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED;;;;AAIG;SACa,kBAAkB,GAAA;AAChC,IAAA,OAAO,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,aAAa,CAAC;AACxE;;MC5Ba,iBAAiB,GAAG,IAAI,cAAc,CACjD,sBAAsB,EACtB;AAcF;;AAEG;AACH,SAAS,aAAa,CACpB,IAAiB,EACjB,SAAqB,EAAA;IAErB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC9C,CAAC;MASY,gBAAgB,GAAG,IAAI,cAAc,CAChD,qBAAqB,EACrB;AAEF;;AAEG;SACa,WAAW,GAAA;AACzB,IAAA,OAAO,aAAa,CAAyC,CAAA,+CAAA;QAC3D,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAkB,EAAE;AACnE,KAAA,CAAC,CAAC;AACL,CAAC;AAED;;;;;AAKG;SACa,mBAAmB,CACjC,MAAoB,EACpB,GAAG,QAAgC,EAAA;IAEnC,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE;QAChD,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;AAEG;SACa,kBAAkB,GAAA;IAChC,OAAO,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;AAEG;SACa,uBAAuB,GAAA;IACrC,OAAO,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD;;ACzEA;;;AAGG;AACG,SAAU,YAAY,CAAC,KAA6B,EAAA;IACxD,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,UAAU,EAAE,CAAC,WAAsC,MAAM;gBACvD,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAClE,gBAAA,GAAG,KAAK;aACT,CAAC;AACF,YAAA,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;AACtD,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;KACF,CAAC;AACJ,CAAC;MAEY,YAAY,GAAG,IAAI,cAAc,CAC5C,aAAa,EACb;AAEF;;;;AAIG;SACa,aAAa,GAAA;AAC3B,IAAA,OAAO,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AACxD;;ACnCA;;;AAGG;AACG,SAAU,kBAAkB,CAChC,MAAqD,EAAA;AAErD,IAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAChC;AAED,IAAA,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;KAC/B;AAED,IAAA,OAAO,MAAM,CAAC;AAChB;;AClBA;;AAEG;AACG,SAAU,cAAc,CAAC,GAAW,EAAA;AACxC,IAAA,OAAO,GAAG;SACP,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,KAC1C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAC7B;AACA,SAAA,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;AAC3B,SAAA,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/C;;MCsBa,MAAM,CAAA;AAPnB,IAAA,WAAA,GAAA;;QASmB,IAAM,CAAA,MAAA,GAAG,kBAAkB,EAAE,CAAC;;QAG9B,IAAK,CAAA,KAAA,GAAG,aAAa,EAAE,CAAC;;QAGxB,IAAM,CAAA,MAAA,GAAG,kBAAkB,EAAE,CAAC;;QAG9B,IAAK,CAAA,KAAA,GAAG,uBAAuB,EAAE,CAAC;;AAGlC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;;AAG5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;;AAU1E,QAAA,IAAA,CAAA,IAAI,GAAqB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAU1C,QAAA,IAAA,CAAA,KAAK,GAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AA2EpC,KAAA;;IA5FC,IAAa,IAAI,CAAC,IAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACpB;AAiBD;;;AAGG;IACK,MAAM,OAAO,CAAC,IAAc,EAAA;AAClC,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAE1C,QAAA,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE;AAC7C,YAAA,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;;gBAEvB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC9D,OAAO;aACR;SACF;;AAGD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;;AAGtD,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC;gBACjD,OAAO;aACR;SACF;;AAGD,QAAA,OAAO,CAAC,IAAI,CACV,iBAAiB,IAAI,CAAA,mEAAA,CAAqE,CAC3F,CAAC;KACH;AAED;;;;AAIG;AACK,IAAA,qBAAqB,CAAC,IAAY,EAAA;AACxC,QAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAG;AAC3B,YAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAW;;AAE9C,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE1C,oBAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;wBACpC,OAAO,CAAC,YAAY,CAAC,CAAC;wBACtB,OAAO;qBACR;;AAGD,oBAAA,IAAI,YAAY,YAAY,OAAO,EAAE;AACnC,wBAAA,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAChB,OAAO;qBACR;iBACF;gBAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;;gBAIvD,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;AAG/B,gBAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;;gBAG7B,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAE9B,OAAO,CAAC,MAAM,CAAC,CAAC;AAClB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;8GA/GU,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EA0BG,mBAAmB,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/B7B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKD,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,YACT,EAAE,EAAA,UAAA,EACA,IAAI,EAEC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,sGAAA,CAAA,EAAA,CAAA;8BAsBlC,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBAON,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,uBAAuB,CAAA;;sBACnC,KAAK;uBAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAA;gBAMzC,WAAW,EAAA,CAAA;sBAFV,WAAW;uBAAC,+BAA+B,CAAA;;sBAC3C,KAAK;gBAMN,KAAK,EAAA,CAAA;sBAFJ,WAAW;uBAAC,aAAa,CAAA;;sBACzB,KAAK;;;MC5DK,aAAa,CAAA;AACxB,IAAA,WAAA,CAAkC,KAA6B,EAAA;QAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAA,MAAM,IAAI,KAAK,CACb,qHAAqH,CACtH,CAAC;SACH;KACF;AAED;;;;AAIG;IACH,OAAO,SAAS,CACd,KAA6B,EAAA;AAE7B,QAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;KACpE;AAlBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBACJ,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GADrB,aAAa,EAAA,OAAA,EAAA,CAHd,MAAM,CAAA,EAAA,OAAA,EAAA,CACN,MAAM,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEL,aAAa,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,MAAM,CAAC;oBACjB,OAAO,EAAE,CAAC,MAAM,CAAC;AAClB,iBAAA,CAAA;;0BAEc,MAAM;2BAAC,YAAY,CAAA;;AAoBrB,MAAA,kBAAkB,GAAG,CAAC,MAAM;;AC7BzC;;AAEG;;;;"}
package/index.d.ts CHANGED
@@ -1,7 +1,10 @@
1
- export * from './lib/icon-name';
2
- export * from './lib/icon.component';
1
+ export * from './lib/components/glyph/glyph.component';
2
+ export * from './lib/components/icon/icon-name';
3
+ export * from './lib/components/icon/icon.component';
3
4
  export * from './lib/icon.module';
5
+ export * from './lib/providers/glyph-config.provider';
6
+ export { NgGlyphs, NgGlyphset, provideNgGlyphs, } from './lib/providers/glyph.provider';
4
7
  export * from './lib/providers/icon-config.provider';
5
8
  export * from './lib/providers/icon-loader.provider';
6
9
  export * from './lib/providers/icon.provider';
7
- export { NgIcon as NgIconComponent } from './lib/icon.component';
10
+ export { NgIcon as NgIconComponent } from './lib/components/icon/icon.component';