@ng-icons/core 26.0.0 → 26.2.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 +4 -2
- package/esm2022/lib/icon-name.mjs +1 -1
- package/esm2022/lib/icon.component.mjs +24 -10
- package/esm2022/lib/providers/icon-loader.provider.mjs +1 -1
- package/fesm2022/ng-icons-core.mjs +23 -9
- package/fesm2022/ng-icons-core.mjs.map +1 -1
- package/lib/icon-name.d.ts +1 -1
- package/lib/icon.component.d.ts +1 -1
- package/lib/providers/icon-loader.provider.d.ts +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ export class NgIcon {
|
|
|
13
13
|
this.icons = injectNgIcons();
|
|
14
14
|
/** Access the icon loader if defined */
|
|
15
15
|
this.loader = injectNgIconLoader();
|
|
16
|
-
/** Access the icon
|
|
16
|
+
/** Access the icon cache if defined */
|
|
17
17
|
this.cache = injectNgIconLoaderCache();
|
|
18
18
|
/** Access the injector */
|
|
19
19
|
this.injector = inject(Injector);
|
|
@@ -41,18 +41,11 @@ export class NgIcon {
|
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
// if we have a cache check if the icon is already loaded
|
|
45
|
-
if (this.cache?.has(name)) {
|
|
46
|
-
this.elementRef.nativeElement.innerHTML = this.cache.get(name);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
44
|
// if there is a loader defined, use it to load the icon
|
|
50
45
|
if (this.loader) {
|
|
51
46
|
const result = await this.requestIconFromLoader(name);
|
|
52
47
|
// if the result is a string, insert the SVG into the template
|
|
53
48
|
if (result !== null) {
|
|
54
|
-
// if we have a cache, store the result
|
|
55
|
-
this.cache?.set(name, result);
|
|
56
49
|
this.elementRef.nativeElement.innerHTML = result;
|
|
57
50
|
return;
|
|
58
51
|
}
|
|
@@ -68,7 +61,28 @@ export class NgIcon {
|
|
|
68
61
|
requestIconFromLoader(name) {
|
|
69
62
|
return new Promise(resolve => {
|
|
70
63
|
runInInjectionContext(this.injector, async () => {
|
|
71
|
-
|
|
64
|
+
// if we have a cache, check if the icon is already loaded (i.e, it is a string)
|
|
65
|
+
if (this.cache) {
|
|
66
|
+
const cachedResult = this.cache.get(name);
|
|
67
|
+
if (typeof cachedResult === 'string') {
|
|
68
|
+
resolve(cachedResult);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// it may be a promise, so we need to await it
|
|
72
|
+
if (cachedResult instanceof Promise) {
|
|
73
|
+
const result = await cachedResult;
|
|
74
|
+
resolve(result);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const promise = coerceLoaderResult(this.loader(name));
|
|
79
|
+
// store the promise in the cache so if we get repeated calls (e.g. in a loop) before the loader has resolved
|
|
80
|
+
// then don't call the loader function multiple times
|
|
81
|
+
this.cache?.set(name, promise);
|
|
82
|
+
// await the result of the promise
|
|
83
|
+
const result = await promise;
|
|
84
|
+
// if we have a cache, store the result
|
|
85
|
+
this.cache?.set(name, result);
|
|
72
86
|
resolve(result);
|
|
73
87
|
});
|
|
74
88
|
});
|
|
@@ -101,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
101
115
|
function coerceCssPixelValue(value) {
|
|
102
116
|
return value == null ? '' : /^\d+$/.test(value) ? `${value}px` : value;
|
|
103
117
|
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQix1QkFBdUIsR0FDeEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFhaEQsTUFBTSxPQUFPLE1BQU07SUFQbkI7UUFRRSxvQ0FBb0M7UUFDbkIsV0FBTSxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFFL0MsdUJBQXVCO1FBQ04sVUFBSyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBRXpDLHdDQUF3QztRQUN2QixXQUFNLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUUvQyw4Q0FBOEM7UUFDN0IsVUFBSyxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFFbkQsMEJBQTBCO1FBQ1QsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3Qyw2QkFBNkI7UUFDWixlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQU8xRSxrQ0FBa0M7UUFHbEMsU0FBSSxHQUFxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQU8xQyxtQ0FBbUM7UUFHbkMsVUFBSyxHQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0tBc0RwQztJQXhFQyw2Q0FBNkM7SUFDN0MsSUFBYSxJQUFJLENBQUMsSUFBYztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFpQkQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFjO1FBQ2xDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ3ZCLG1DQUFtQztnQkFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDOUQsT0FBTzthQUNSO1NBQ0Y7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7WUFDaEUsT0FBTztTQUNSO1FBRUQsd0RBQXdEO1FBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRELDhEQUE4RDtZQUM5RCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ25CLHVDQUF1QztnQkFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO2dCQUNqRCxPQUFPO2FBQ1I7U0FDRjtRQUVELHdGQUF3RjtRQUN4RixPQUFPLENBQUMsSUFBSSxDQUNWLGlCQUFpQixJQUFJLHFFQUFxRSxDQUMzRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQkFBcUIsQ0FBQyxJQUFZO1FBQ3hDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0IscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzVELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0ExRlUsTUFBTTtrR0FBTixNQUFNLDBGQTZGVixtQkFBbUIsMk5BbEdoQixFQUFFOzsyRkFLRCxNQUFNO2tCQVBsQixTQUFTOytCQUNFLFNBQVMsWUFDVCxFQUFFLGNBQ0EsSUFBSSxtQkFFQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQXNCbEMsSUFBSTtzQkFBaEIsS0FBSztnQkFPTixJQUFJO3NCQUZILFdBQVc7dUJBQUMsdUJBQXVCOztzQkFDbkMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRTtnQkFNekMsV0FBVztzQkFGVixXQUFXO3VCQUFDLCtCQUErQjs7c0JBQzNDLEtBQUs7Z0JBTU4sS0FBSztzQkFGSixXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixLQUFLOztBQXlEUixTQUFTLG1CQUFtQixDQUFDLEtBQWE7SUFDeEMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gJy4vaWNvbi1uYW1lJztcbmltcG9ydCB7IGluamVjdE5nSWNvbkNvbmZpZyB9IGZyb20gJy4vcHJvdmlkZXJzL2ljb24tY29uZmlnLnByb3ZpZGVyJztcbmltcG9ydCB7XG4gIGluamVjdE5nSWNvbkxvYWRlcixcbiAgaW5qZWN0TmdJY29uTG9hZGVyQ2FjaGUsXG59IGZyb20gJy4vcHJvdmlkZXJzL2ljb24tbG9hZGVyLnByb3ZpZGVyJztcbmltcG9ydCB7IGluamVjdE5nSWNvbnMgfSBmcm9tICcuL3Byb3ZpZGVycy9pY29uLnByb3ZpZGVyJztcbmltcG9ydCB7IGNvZXJjZUxvYWRlclJlc3VsdCB9IGZyb20gJy4vdXRpbHMvYXN5bmMnO1xuaW1wb3J0IHsgdG9Qcm9wZXJ0eU5hbWUgfSBmcm9tICcuL3V0aWxzL2Zvcm1hdCc7XG5cbi8vIFRoaXMgaXMgYSB0eXBlc2NyaXB0IHR5cGUgdG8gcHJldmVudCBpbmZlcmVuY2UgZnJvbSBjb2xsYXBzaW5nIHRoZSB1bmlvbiB0eXBlIHRvIGEgc3RyaW5nIHRvIGltcHJvdmUgdHlwZSBzYWZldHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG5leHBvcnQgdHlwZSBJY29uVHlwZSA9IEljb25OYW1lIHwgKHN0cmluZyAmIHt9KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctaWNvbicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdJY29uIHtcbiAgLyoqIEFjY2VzcyB0aGUgZ2xvYmFsIGljb24gY29uZmlnICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0TmdJY29uQ29uZmlnKCk7XG5cbiAgLyoqIEFjY2VzcyB0aGUgaWNvbnMgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpY29ucyA9IGluamVjdE5nSWNvbnMoKTtcblxuICAvKiogQWNjZXNzIHRoZSBpY29uIGxvYWRlciBpZiBkZWZpbmVkICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVyID0gaW5qZWN0TmdJY29uTG9hZGVyKCk7XG5cbiAgLyoqIEFjY2VzcyB0aGUgaWNvbiBsb2FkZXIgY2FjaGUgaWYgZGVmaW5lZCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlID0gaW5qZWN0TmdJY29uTG9hZGVyQ2FjaGUoKTtcblxuICAvKiogQWNjZXNzIHRoZSBpbmplY3RvciAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAvKiogQWNjZXNzIHRoZSBlbGVtZW50IHJlZiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIC8qKiBEZWZpbmUgdGhlIG5hbWUgb2YgdGhlIGljb24gdG8gZGlzcGxheSAqL1xuICBASW5wdXQoKSBzZXQgbmFtZShuYW1lOiBJY29uVHlwZSkge1xuICAgIHRoaXMuc2V0SWNvbihuYW1lKTtcbiAgfVxuXG4gIC8qKiBEZWZpbmUgdGhlIHNpemUgb2YgdGhlIGljb24gKi9cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLW5nLWljb25fX3NpemUnKVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUNzc1BpeGVsVmFsdWUgfSlcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlciA9IHRoaXMuY29uZmlnLnNpemU7XG5cbiAgLyoqIERlZmluZSB0aGUgc3Ryb2tlLXdpZHRoIG9mIHRoZSBpY29uICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1uZy1pY29uX19zdHJva2Utd2lkdGgnKVxuICBASW5wdXQoKVxuICBzdHJva2VXaWR0aD86IHN0cmluZyB8IG51bWJlcjtcblxuICAvKiogRGVmaW5lIHRoZSBjb2xvciBvZiB0aGUgaWNvbiAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmNvbG9yJylcbiAgQElucHV0KClcbiAgY29sb3I/OiBzdHJpbmcgPSB0aGlzLmNvbmZpZy5jb2xvcjtcblxuICAvKipcbiAgICogTG9hZCB0aGUgaWNvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBpbnNlcnQgaXQgaW50byB0aGUgdGVtcGxhdGUuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGxvYWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNldEljb24obmFtZTogSWNvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSB0b1Byb3BlcnR5TmFtZShuYW1lKTtcbiAgICBmb3IgKGNvbnN0IGljb25zIG9mIFsuLi50aGlzLmljb25zXS5yZXZlcnNlKCkpIHtcbiAgICAgIGlmIChpY29uc1twcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgIC8vIGluc2VydCB0aGUgU1ZHIGludG8gdGhlIHRlbXBsYXRlXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGljb25zW3Byb3BlcnR5TmFtZV07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBoYXZlIGEgY2FjaGUgY2hlY2sgaWYgdGhlIGljb24gaXMgYWxyZWFkeSBsb2FkZWRcbiAgICBpZiAodGhpcy5jYWNoZT8uaGFzKG5hbWUpKSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLmNhY2hlLmdldChuYW1lKSE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgYSBsb2FkZXIgZGVmaW5lZCwgdXNlIGl0IHRvIGxvYWQgdGhlIGljb25cbiAgICBpZiAodGhpcy5sb2FkZXIpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdEljb25Gcm9tTG9hZGVyKG5hbWUpO1xuXG4gICAgICAvLyBpZiB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nLCBpbnNlcnQgdGhlIFNWRyBpbnRvIHRoZSB0ZW1wbGF0ZVxuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgY2FjaGUsIHN0b3JlIHRoZSByZXN1bHRcbiAgICAgICAgdGhpcy5jYWNoZT8uc2V0KG5hbWUsIHJlc3VsdCk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIHRoZXJlIGlzIG5vIGljb24gd2l0aCB0aGlzIG5hbWUgd2FybiB0aGUgdXNlciBhcyB0aGV5IHByb2JhYmx5IGZvcmdvdCB0byBpbXBvcnQgaXRcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgTm8gaWNvbiBuYW1lZCAke25hbWV9IHdhcyBmb3VuZC4gWW91IG1heSBuZWVkIHRvIGltcG9ydCBpdCB1c2luZyB0aGUgd2l0aEljb25zIGZ1bmN0aW9uLmAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IHRoZSBpY29uIGZyb20gdGhlIGxvYWRlci5cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gbG9hZC5cbiAgICogQHJldHVybnMgVGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAgICovXG4gIHByaXZhdGUgcmVxdWVzdEljb25Gcm9tTG9hZGVyKG5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29lcmNlTG9hZGVyUmVzdWx0KHRoaXMubG9hZGVyIShuYW1lKSk7XG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvZXJjZUNzc1BpeGVsVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiAvXlxcZCskLy50ZXN0KHZhbHVlKSA/IGAke3ZhbHVlfXB4YCA6IHZhbHVlO1xufVxuIl19
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQix1QkFBdUIsR0FDeEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFhaEQsTUFBTSxPQUFPLE1BQU07SUFQbkI7UUFRRSxvQ0FBb0M7UUFDbkIsV0FBTSxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFFL0MsdUJBQXVCO1FBQ04sVUFBSyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBRXpDLHdDQUF3QztRQUN2QixXQUFNLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUUvQyx1Q0FBdUM7UUFDdEIsVUFBSyxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFFbkQsMEJBQTBCO1FBQ1QsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3Qyw2QkFBNkI7UUFDWixlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQU8xRSxrQ0FBa0M7UUFHbEMsU0FBSSxHQUFxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQU8xQyxtQ0FBbUM7UUFHbkMsVUFBSyxHQUFZ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RUFBRSxtQkFBbUIsRUFBRTtnQkFNekMsV0FBVztzQkFGVixXQUFXO3VCQUFDLCtCQUErQjs7c0JBQzNDLEtBQUs7Z0JBTU4sS0FBSztzQkFGSixXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixLQUFLOztBQThFUixTQUFTLG1CQUFtQixDQUFDLEtBQWE7SUFDeEMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBJY29uTmFtZSB9IGZyb20gJy4vaWNvbi1uYW1lJztcbmltcG9ydCB7IGluamVjdE5nSWNvbkNvbmZpZyB9IGZyb20gJy4vcHJvdmlkZXJzL2ljb24tY29uZmlnLnByb3ZpZGVyJztcbmltcG9ydCB7XG4gIGluamVjdE5nSWNvbkxvYWRlcixcbiAgaW5qZWN0TmdJY29uTG9hZGVyQ2FjaGUsXG59IGZyb20gJy4vcHJvdmlkZXJzL2ljb24tbG9hZGVyLnByb3ZpZGVyJztcbmltcG9ydCB7IGluamVjdE5nSWNvbnMgfSBmcm9tICcuL3Byb3ZpZGVycy9pY29uLnByb3ZpZGVyJztcbmltcG9ydCB7IGNvZXJjZUxvYWRlclJlc3VsdCB9IGZyb20gJy4vdXRpbHMvYXN5bmMnO1xuaW1wb3J0IHsgdG9Qcm9wZXJ0eU5hbWUgfSBmcm9tICcuL3V0aWxzL2Zvcm1hdCc7XG5cbi8vIFRoaXMgaXMgYSB0eXBlc2NyaXB0IHR5cGUgdG8gcHJldmVudCBpbmZlcmVuY2UgZnJvbSBjb2xsYXBzaW5nIHRoZSB1bmlvbiB0eXBlIHRvIGEgc3RyaW5nIHRvIGltcHJvdmUgdHlwZSBzYWZldHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG5leHBvcnQgdHlwZSBJY29uVHlwZSA9IEljb25OYW1lIHwgKHN0cmluZyAmIHt9KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctaWNvbicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdJY29uIHtcbiAgLyoqIEFjY2VzcyB0aGUgZ2xvYmFsIGljb24gY29uZmlnICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0TmdJY29uQ29uZmlnKCk7XG5cbiAgLyoqIEFjY2VzcyB0aGUgaWNvbnMgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpY29ucyA9IGluamVjdE5nSWNvbnMoKTtcblxuICAvKiogQWNjZXNzIHRoZSBpY29uIGxvYWRlciBpZiBkZWZpbmVkICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVyID0gaW5qZWN0TmdJY29uTG9hZGVyKCk7XG5cbiAgLyoqIEFjY2VzcyB0aGUgaWNvbiBjYWNoZSBpZiBkZWZpbmVkICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBpbmplY3ROZ0ljb25Mb2FkZXJDYWNoZSgpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGluamVjdG9yICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIC8qKiBBY2Nlc3MgdGhlIGVsZW1lbnQgcmVmICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgLyoqIERlZmluZSB0aGUgbmFtZSBvZiB0aGUgaWNvbiB0byBkaXNwbGF5ICovXG4gIEBJbnB1dCgpIHNldCBuYW1lKG5hbWU6IEljb25UeXBlKSB7XG4gICAgdGhpcy5zZXRJY29uKG5hbWUpO1xuICB9XG5cbiAgLyoqIERlZmluZSB0aGUgc2l6ZSBvZiB0aGUgaWNvbiAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tbmctaWNvbl9fc2l6ZScpXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQ3NzUGl4ZWxWYWx1ZSB9KVxuICBzaXplPzogc3RyaW5nIHwgbnVtYmVyID0gdGhpcy5jb25maWcuc2l6ZTtcblxuICAvKiogRGVmaW5lIHRoZSBzdHJva2Utd2lkdGggb2YgdGhlIGljb24gKi9cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLW5nLWljb25fX3N0cm9rZS13aWR0aCcpXG4gIEBJbnB1dCgpXG4gIHN0cm9rZVdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKiBEZWZpbmUgdGhlIGNvbG9yIG9mIHRoZSBpY29uICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUuY29sb3InKVxuICBASW5wdXQoKVxuICBjb2xvcj86IHN0cmluZyA9IHRoaXMuY29uZmlnLmNvbG9yO1xuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBpY29uIHdpdGggdGhlIGdpdmVuIG5hbWUgYW5kIGluc2VydCBpdCBpbnRvIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gbG9hZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2V0SWNvbihuYW1lOiBJY29uVHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IHRvUHJvcGVydHlOYW1lKG5hbWUpO1xuXG4gICAgZm9yIChjb25zdCBpY29ucyBvZiBbLi4udGhpcy5pY29uc10ucmV2ZXJzZSgpKSB7XG4gICAgICBpZiAoaWNvbnNbcHJvcGVydHlOYW1lXSkge1xuICAgICAgICAvLyBpbnNlcnQgdGhlIFNWRyBpbnRvIHRoZSB0ZW1wbGF0ZVxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBpY29uc1twcm9wZXJ0eU5hbWVdO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgYSBsb2FkZXIgZGVmaW5lZCwgdXNlIGl0IHRvIGxvYWQgdGhlIGljb25cbiAgICBpZiAodGhpcy5sb2FkZXIpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdEljb25Gcm9tTG9hZGVyKG5hbWUpO1xuXG4gICAgICAvLyBpZiB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nLCBpbnNlcnQgdGhlIFNWRyBpbnRvIHRoZSB0ZW1wbGF0ZVxuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSByZXN1bHQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB0aGVyZSBpcyBubyBpY29uIHdpdGggdGhpcyBuYW1lIHdhcm4gdGhlIHVzZXIgYXMgdGhleSBwcm9iYWJseSBmb3Jnb3QgdG8gaW1wb3J0IGl0XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYE5vIGljb24gbmFtZWQgJHtuYW1lfSB3YXMgZm91bmQuIFlvdSBtYXkgbmVlZCB0byBpbXBvcnQgaXQgdXNpbmcgdGhlIHdpdGhJY29ucyBmdW5jdGlvbi5gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCB0aGUgaWNvbiBmcm9tIHRoZSBsb2FkZXIuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGxvYWQuXG4gICAqIEByZXR1cm5zIFRoZSBTVkcgY29udGVudCBmb3IgYSBnaXZlbiBpY29uIG5hbWUuXG4gICAqL1xuICBwcml2YXRlIHJlcXVlc3RJY29uRnJvbUxvYWRlcihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSBjYWNoZSwgY2hlY2sgaWYgdGhlIGljb24gaXMgYWxyZWFkeSBsb2FkZWQgKGkuZSwgaXQgaXMgYSBzdHJpbmcpXG4gICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gdGhpcy5jYWNoZS5nZXQobmFtZSk7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlZFJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJlc29sdmUoY2FjaGVkUmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBpdCBtYXkgYmUgYSBwcm9taXNlLCBzbyB3ZSBuZWVkIHRvIGF3YWl0IGl0XG4gICAgICAgICAgaWYgKGNhY2hlZFJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhY2hlZFJlc3VsdDtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9taXNlID0gY29lcmNlTG9hZGVyUmVzdWx0KHRoaXMubG9hZGVyIShuYW1lKSk7XG5cbiAgICAgICAgLy8gc3RvcmUgdGhlIHByb21pc2UgaW4gdGhlIGNhY2hlIHNvIGlmIHdlIGdldCByZXBlYXRlZCBjYWxscyAoZS5nLiBpbiBhIGxvb3ApIGJlZm9yZSB0aGUgbG9hZGVyIGhhcyByZXNvbHZlZFxuICAgICAgICAvLyB0aGVuIGRvbid0IGNhbGwgdGhlIGxvYWRlciBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lc1xuICAgICAgICB0aGlzLmNhY2hlPy5zZXQobmFtZSwgcHJvbWlzZSk7XG5cbiAgICAgICAgLy8gYXdhaXQgdGhlIHJlc3VsdCBvZiB0aGUgcHJvbWlzZVxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9taXNlO1xuXG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSBjYWNoZSwgc3RvcmUgdGhlIHJlc3VsdFxuICAgICAgICB0aGlzLmNhY2hlPy5zZXQobmFtZSwgcmVzdWx0KTtcblxuICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2VyY2VDc3NQaXhlbFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogL15cXGQrJC8udGVzdCh2YWx1ZSkgPyBgJHt2YWx1ZX1weGAgOiB2YWx1ZTtcbn1cbiJdfQ==
|
|
@@ -39,4 +39,4 @@ export function injectNgIconLoader() {
|
|
|
39
39
|
export function injectNgIconLoaderCache() {
|
|
40
40
|
return inject(NgIconCacheToken, { optional: true });
|
|
41
41
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1sb2FkZXIucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcHJvdmlkZXJzL2ljb24tbG9hZGVyLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBT2pFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FBQztBQWNGOztHQUVHO0FBQ0gsU0FBUyxhQUFhLENBQ3BCLElBQWlCLEVBQ2pCLFNBQXFCO0lBRXJCLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUM5QyxDQUFDO0FBU0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQ2hELHFCQUFxQixDQUN0QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLGFBQWEsaURBQXlDO1FBQzNELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsRUFBa0IsRUFBRTtLQUNuRSxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE1BQW9CLEVBQ3BCLEdBQUcsUUFBZ0M7SUFFbkMsT0FBTztRQUNMLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7UUFDaEQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FDM0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgTmdJY29uTG9hZGVyID0gKFxuICBuYW1lOiBzdHJpbmcsXG4pID0+IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPiB8IHN0cmluZztcblxuZXhwb3J0IGNvbnN0IE5nSWNvbkxvYWRlclRva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5nSWNvbkxvYWRlcj4oXG4gICdOZyBJY29uIExvYWRlciBUb2tlbicsXG4pO1xuXG4vKipcbiAqIFRoZSBsaXN0IG9mIGZlYXR1cmVzIGFzIGFuIGVudW0gdG8gdW5pcXVlbHkgdHlwZSBlYWNoIGZlYXR1cmUuXG4gKi9cbmNvbnN0IGVudW0gTmdJY29uTG9hZGVyRmVhdHVyZUtpbmQge1xuICBDYWNoaW5nRmVhdHVyZSxcbn1cblxuaW50ZXJmYWNlIE5nSWNvbkxvYWRlckZlYXR1cmU8RmVhdHVyZUtpbmQgZXh0ZW5kcyBOZ0ljb25Mb2FkZXJGZWF0dXJlS2luZD4ge1xuICBraW5kOiBGZWF0dXJlS2luZDtcbiAgcHJvdmlkZXJzOiBQcm92aWRlcltdO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIExvYWRlciBmZWF0dXJlLlxuICovXG5mdW5jdGlvbiBsb2FkZXJGZWF0dXJlPEZlYXR1cmVLaW5kIGV4dGVuZHMgTmdJY29uTG9hZGVyRmVhdHVyZUtpbmQ+
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1sb2FkZXIucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvcHJvdmlkZXJzL2ljb24tbG9hZGVyLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBT2pFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FBQztBQWNGOztHQUVHO0FBQ0gsU0FBUyxhQUFhLENBQ3BCLElBQWlCLEVBQ2pCLFNBQXFCO0lBRXJCLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUM5QyxDQUFDO0FBU0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQ2hELHFCQUFxQixDQUN0QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLGFBQWEsaURBQXlDO1FBQzNELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsRUFBa0IsRUFBRTtLQUNuRSxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE1BQW9CLEVBQ3BCLEdBQUcsUUFBZ0M7SUFFbkMsT0FBTztRQUNMLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7UUFDaEQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7S0FDM0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgTmdJY29uTG9hZGVyID0gKFxuICBuYW1lOiBzdHJpbmcsXG4pID0+IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPiB8IHN0cmluZztcblxuZXhwb3J0IGNvbnN0IE5nSWNvbkxvYWRlclRva2VuID0gbmV3IEluamVjdGlvblRva2VuPE5nSWNvbkxvYWRlcj4oXG4gICdOZyBJY29uIExvYWRlciBUb2tlbicsXG4pO1xuXG4vKipcbiAqIFRoZSBsaXN0IG9mIGZlYXR1cmVzIGFzIGFuIGVudW0gdG8gdW5pcXVlbHkgdHlwZSBlYWNoIGZlYXR1cmUuXG4gKi9cbmNvbnN0IGVudW0gTmdJY29uTG9hZGVyRmVhdHVyZUtpbmQge1xuICBDYWNoaW5nRmVhdHVyZSxcbn1cblxuaW50ZXJmYWNlIE5nSWNvbkxvYWRlckZlYXR1cmU8RmVhdHVyZUtpbmQgZXh0ZW5kcyBOZ0ljb25Mb2FkZXJGZWF0dXJlS2luZD4ge1xuICBraW5kOiBGZWF0dXJlS2luZDtcbiAgcHJvdmlkZXJzOiBQcm92aWRlcltdO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIExvYWRlciBmZWF0dXJlLlxuICovXG5mdW5jdGlvbiBsb2FkZXJGZWF0dXJlPEZlYXR1cmVLaW5kIGV4dGVuZHMgTmdJY29uTG9hZGVyRmVhdHVyZUtpbmQ+KFxuICBraW5kOiBGZWF0dXJlS2luZCxcbiAgcHJvdmlkZXJzOiBQcm92aWRlcltdLFxuKTogTmdJY29uTG9hZGVyRmVhdHVyZTxGZWF0dXJlS2luZD4ge1xuICByZXR1cm4geyBraW5kOiBraW5kLCBwcm92aWRlcnM6IHByb3ZpZGVycyB9O1xufVxuXG50eXBlIENhY2hpbmdGZWF0dXJlID1cbiAgTmdJY29uTG9hZGVyRmVhdHVyZTxOZ0ljb25Mb2FkZXJGZWF0dXJlS2luZC5DYWNoaW5nRmVhdHVyZT47XG5cbnR5cGUgTmdJY29uTG9hZGVyRmVhdHVyZXMgPSBDYWNoaW5nRmVhdHVyZTtcblxuZXhwb3J0IHR5cGUgTmdJY29uTG9hZGVyQ2FjaGUgPSBNYXA8c3RyaW5nLCBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4+O1xuXG5leHBvcnQgY29uc3QgTmdJY29uQ2FjaGVUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ0ljb25Mb2FkZXJDYWNoZT4oXG4gICdOZyBJY29uIENhY2hlIFRva2VuJyxcbik7XG5cbi8qKlxuICogQWRkIGNhY2hpbmcgdG8gdGhlIGxvYWRlci4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIGxvYWRlciBmcm9tIGJlaW5nIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3IgdGhlIHNhbWUgaWNvbiBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aENhY2hpbmcoKTogQ2FjaGluZ0ZlYXR1cmUge1xuICByZXR1cm4gbG9hZGVyRmVhdHVyZShOZ0ljb25Mb2FkZXJGZWF0dXJlS2luZC5DYWNoaW5nRmVhdHVyZSwgW1xuICAgIHsgcHJvdmlkZTogTmdJY29uQ2FjaGVUb2tlbiwgdXNlVmFsdWU6IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkgfSxcbiAgXSk7XG59XG5cbi8qKlxuICogUHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAqIEBwYXJhbSBsb2FkZXIgVGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAqIEBwYXJhbSBmZWF0dXJlcyBUaGUgbGlzdCBvZiBmZWF0dXJlcyB0byBhcHBseSB0byB0aGUgbG9hZGVyLlxuICogQHJldHVybnMgVGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ0ljb25Mb2FkZXIoXG4gIGxvYWRlcjogTmdJY29uTG9hZGVyLFxuICAuLi5mZWF0dXJlczogTmdJY29uTG9hZGVyRmVhdHVyZXNbXVxuKSB7XG4gIHJldHVybiBbXG4gICAgeyBwcm92aWRlOiBOZ0ljb25Mb2FkZXJUb2tlbiwgdXNlVmFsdWU6IGxvYWRlciB9LFxuICAgIGZlYXR1cmVzLm1hcChmZWF0dXJlID0+IGZlYXR1cmUucHJvdmlkZXJzKSxcbiAgXTtcbn1cblxuLyoqXG4gKiBJbmplY3QgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIFNWRyBjb250ZW50IGZvciBhIGdpdmVuIGljb24gbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5nSWNvbkxvYWRlcigpOiBOZ0ljb25Mb2FkZXIgfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChOZ0ljb25Mb2FkZXJUb2tlbiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBJbmplY3QgdGhlIGNhY2hlIHRoYXQgd2lsbCBzdG9yZSB0aGUgU1ZHIGNvbnRlbnQgZm9yIGEgZ2l2ZW4gaWNvbiBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TmdJY29uTG9hZGVyQ2FjaGUoKTogTmdJY29uTG9hZGVyQ2FjaGUgfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChOZ0ljb25DYWNoZVRva2VuLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xufVxuIl19
|
|
@@ -125,7 +125,7 @@ class NgIcon {
|
|
|
125
125
|
this.icons = injectNgIcons();
|
|
126
126
|
/** Access the icon loader if defined */
|
|
127
127
|
this.loader = injectNgIconLoader();
|
|
128
|
-
/** Access the icon
|
|
128
|
+
/** Access the icon cache if defined */
|
|
129
129
|
this.cache = injectNgIconLoaderCache();
|
|
130
130
|
/** Access the injector */
|
|
131
131
|
this.injector = inject(Injector);
|
|
@@ -153,18 +153,11 @@ class NgIcon {
|
|
|
153
153
|
return;
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
|
-
// if we have a cache check if the icon is already loaded
|
|
157
|
-
if (this.cache?.has(name)) {
|
|
158
|
-
this.elementRef.nativeElement.innerHTML = this.cache.get(name);
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
156
|
// if there is a loader defined, use it to load the icon
|
|
162
157
|
if (this.loader) {
|
|
163
158
|
const result = await this.requestIconFromLoader(name);
|
|
164
159
|
// if the result is a string, insert the SVG into the template
|
|
165
160
|
if (result !== null) {
|
|
166
|
-
// if we have a cache, store the result
|
|
167
|
-
this.cache?.set(name, result);
|
|
168
161
|
this.elementRef.nativeElement.innerHTML = result;
|
|
169
162
|
return;
|
|
170
163
|
}
|
|
@@ -180,7 +173,28 @@ class NgIcon {
|
|
|
180
173
|
requestIconFromLoader(name) {
|
|
181
174
|
return new Promise(resolve => {
|
|
182
175
|
runInInjectionContext(this.injector, async () => {
|
|
183
|
-
|
|
176
|
+
// if we have a cache, check if the icon is already loaded (i.e, it is a string)
|
|
177
|
+
if (this.cache) {
|
|
178
|
+
const cachedResult = this.cache.get(name);
|
|
179
|
+
if (typeof cachedResult === 'string') {
|
|
180
|
+
resolve(cachedResult);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// it may be a promise, so we need to await it
|
|
184
|
+
if (cachedResult instanceof Promise) {
|
|
185
|
+
const result = await cachedResult;
|
|
186
|
+
resolve(result);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const promise = coerceLoaderResult(this.loader(name));
|
|
191
|
+
// store the promise in the cache so if we get repeated calls (e.g. in a loop) before the loader has resolved
|
|
192
|
+
// then don't call the loader function multiple times
|
|
193
|
+
this.cache?.set(name, promise);
|
|
194
|
+
// await the result of the promise
|
|
195
|
+
const result = await promise;
|
|
196
|
+
// if we have a cache, store the result
|
|
197
|
+
this.cache?.set(name, result);
|
|
184
198
|
resolve(result);
|
|
185
199
|
});
|
|
186
200
|
});
|
|
@@ -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>;\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 loader 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 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 we have a cache check if the icon is already loaded\n if (this.cache?.has(name)) {\n this.elementRef.nativeElement.innerHTML = this.cache.get(name)!;\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\n // if the result is a string, insert the SVG into the template\n if (result !== null) {\n // if we have a cache, store the result\n this.cache?.set(name, result);\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 const result = await coerceLoaderResult(this.loader!(name));\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":"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"}
|
|
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":"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"}
|