angular-feather
Version:
Feather Icons components library for your Angular Applications
52 lines • 7.2 kB
JavaScript
import { Component, ElementRef, Input, Inject, ChangeDetectorRef, SecurityContext, } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { Icons } from './icons.provider';
import { uppercamelcase } from './utils';
import * as i0 from "@angular/core";
import * as i1 from "./icons.provider";
import * as i2 from "@angular/platform-browser";
export class FeatherComponent {
constructor(elem, changeDetector, icons, sanitizer) {
this.elem = elem;
this.changeDetector = changeDetector;
this.icons = icons;
this.sanitizer = sanitizer;
}
ngOnChanges(changes) {
// icons are provided as an array of objects because of "multi: true"
const icons = Object.assign({}, ...this.icons);
const svg = icons[uppercamelcase(changes.name.currentValue)] || '';
if (!svg) {
console.warn(`Icon not found: ${changes.name.currentValue}\n` +
`Refer to documentation on https://github.com/michaelbazos/angular-feather`);
}
// Since the icons are precompiled we can trust them as safe html.
this.elem.nativeElement.innerHTML = this.sanitizer.sanitize(SecurityContext.HTML, this.sanitizer.bypassSecurityTrustHtml(svg));
this.changeDetector.markForCheck();
}
}
FeatherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FeatherComponent, deps: [{ token: ElementRef }, { token: ChangeDetectorRef }, { token: Icons }, { token: DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
FeatherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FeatherComponent, selector: "i-feather, feather-icon", inputs: { name: "name" }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:inline-block;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}\n"] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FeatherComponent, decorators: [{
type: Component,
args: [{
selector: 'i-feather, feather-icon',
templateUrl: './feather.component.html',
styleUrls: ['./feather.component.scss'],
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef, decorators: [{
type: Inject,
args: [ElementRef]
}] }, { type: i0.ChangeDetectorRef, decorators: [{
type: Inject,
args: [ChangeDetectorRef]
}] }, { type: i1.Icons, decorators: [{
type: Inject,
args: [Icons]
}] }, { type: i2.DomSanitizer, decorators: [{
type: Inject,
args: [DomSanitizer]
}] }]; }, propDecorators: { name: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdGhlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWZlYXRoZXIvc3JjL2xpYi9mZWF0aGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZmVhdGhlci9zcmMvbGliL2ZlYXRoZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFHakIsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7QUFPekMsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUM4QixJQUFnQixFQUNULGNBQWlDLEVBQzdDLEtBQVksRUFDTCxTQUF1QjtRQUh6QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ1QsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQzdDLFVBQUssR0FBTCxLQUFLLENBQU87UUFDTCxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQ3BELENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMscUVBQXFFO1FBQ3JFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUksSUFBSSxDQUFDLEtBQXlCLENBQUMsQ0FBQztRQUNwRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbkUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE9BQU8sQ0FBQyxJQUFJLENBQ1YsbUJBQW1CLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJO2dCQUM5QywyRUFBMkUsQ0FDOUUsQ0FBQztTQUNIO1FBRUQsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUvSCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7OzhHQTFCVSxnQkFBZ0Isa0JBSWpCLFVBQVUsYUFDVixpQkFBaUIsYUFDakIsS0FBSyxhQUNMLFlBQVk7a0dBUFgsZ0JBQWdCLDhHQ25CN0IsNkJBQ0E7NEZEa0JhLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDeEM7OzBCQUtJLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxLQUFLOzswQkFDWixNQUFNOzJCQUFDLFlBQVk7NENBTmIsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgSW5qZWN0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBTZWN1cml0eUNvbnRleHQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4vaWNvbnMucHJvdmlkZXInO1xuaW1wb3J0IHsgdXBwZXJjYW1lbGNhc2UgfSBmcm9tICcuL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaS1mZWF0aGVyLCBmZWF0aGVyLWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVhdGhlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZlYXRoZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmVhdGhlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG5hbWUhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIGVsZW06IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChJY29ucykgcHJpdmF0ZSBpY29uczogSWNvbnMsXG4gICAgQEluamVjdChEb21TYW5pdGl6ZXIpIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgLy8gaWNvbnMgYXJlIHByb3ZpZGVkIGFzIGFuIGFycmF5IG9mIG9iamVjdHMgYmVjYXVzZSBvZiBcIm11bHRpOiB0cnVlXCJcbiAgICBjb25zdCBpY29ucyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLih0aGlzLmljb25zIGFzIGFueSBhcyBvYmplY3RbXSkpO1xuICAgIGNvbnN0IHN2ZyA9IGljb25zW3VwcGVyY2FtZWxjYXNlKGNoYW5nZXMubmFtZS5jdXJyZW50VmFsdWUpXSB8fCAnJztcblxuICAgIGlmICghc3ZnKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBJY29uIG5vdCBmb3VuZDogJHtjaGFuZ2VzLm5hbWUuY3VycmVudFZhbHVlfVxcbmAgK1xuICAgICAgICAgIGBSZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNoYWVsYmF6b3MvYW5ndWxhci1mZWF0aGVyYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB0aGUgaWNvbnMgYXJlIHByZWNvbXBpbGVkIHdlIGNhbiB0cnVzdCB0aGVtIGFzIHNhZmUgaHRtbC5cbiAgICB0aGlzLmVsZW0ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLnNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnKSk7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=