UNPKG

26.9 kBJavaScriptView Raw
1import * as i0 from '@angular/core';
2import { Injectable, Directive, Input, Component, Optional, HostBinding, NgModule } from '@angular/core';
3import { parse, icon, counter, text } from '@fortawesome/fontawesome-svg-core';
4import * as i2 from '@angular/platform-browser';
5
6const faWarnIfIconDefinitionMissing = (iconSpec) => {
7 throw new Error(`Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`);
8};
9
10const faWarnIfIconSpecMissing = () => {
11 throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');
12};
13
14/**
15 * Fontawesome class list.
16 * Returns classes array by props.
17 */
18const faClassList = (props) => {
19 const classes = {
20 'fa-spin': props.spin,
21 'fa-pulse': props.pulse,
22 'fa-fw': props.fixedWidth,
23 'fa-border': props.border,
24 'fa-inverse': props.inverse,
25 'fa-layers-counter': props.counter,
26 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',
27 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',
28 [`fa-${props.size}`]: props.size !== null,
29 [`fa-rotate-${props.rotate}`]: props.rotate !== null,
30 [`fa-pull-${props.pull}`]: props.pull !== null,
31 [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null,
32 };
33 return Object.keys(classes)
34 .map((key) => (classes[key] ? key : null))
35 .filter((key) => key);
36};
37
38/**
39 * Returns if is IconLookup or not.
40 */
41const isIconLookup = (i) => i.prefix !== undefined && i.iconName !== undefined;
42
43/**
44 * Normalizing icon spec.
45 */
46const faNormalizeIconSpec = (iconSpec, defaultPrefix) => {
47 if (isIconLookup(iconSpec)) {
48 return iconSpec;
49 }
50 if (Array.isArray(iconSpec) && iconSpec.length === 2) {
51 return { prefix: iconSpec[0], iconName: iconSpec[1] };
52 }
53 if (typeof iconSpec === 'string') {
54 return { prefix: defaultPrefix, iconName: iconSpec };
55 }
56};
57
58class FaConfig {
59 constructor() {
60 /**
61 * Default prefix to use, when one is not provided with the icon name.
62 *
63 * @default 'fas'
64 */
65 this.defaultPrefix = 'fas';
66 /**
67 * Provides a fallback icon to use whilst main icon is being loaded asynchronously.
68 * When value is null, then fa-icon component will throw an error if icon input is missing.
69 * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.
70 *
71 * @default null
72 */
73 this.fallbackIcon = null;
74 }
75}
76FaConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
77FaConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaConfig, providedIn: 'root' });
78i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaConfig, decorators: [{
79 type: Injectable,
80 args: [{ providedIn: 'root' }]
81 }] });
82
83class FaIconLibrary {
84 constructor() {
85 this.definitions = {};
86 }
87 addIcons(...icons) {
88 for (const icon of icons) {
89 if (!(icon.prefix in this.definitions)) {
90 this.definitions[icon.prefix] = {};
91 }
92 this.definitions[icon.prefix][icon.iconName] = icon;
93 for (const alias of icon.icon[2]) {
94 if (typeof alias === 'string') {
95 this.definitions[icon.prefix][alias] = icon;
96 }
97 }
98 }
99 }
100 addIconPacks(...packs) {
101 for (const pack of packs) {
102 const icons = Object.keys(pack).map((key) => pack[key]);
103 this.addIcons(...icons);
104 }
105 }
106 getIconDefinition(prefix, name) {
107 if (prefix in this.definitions && name in this.definitions[prefix]) {
108 return this.definitions[prefix][name];
109 }
110 return null;
111 }
112}
113FaIconLibrary.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaIconLibrary, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
114FaIconLibrary.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaIconLibrary, providedIn: 'root' });
115i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaIconLibrary, decorators: [{
116 type: Injectable,
117 args: [{ providedIn: 'root' }]
118 }] });
119
120class FaStackItemSizeDirective {
121 constructor() {
122 /**
123 * Specify whether icon inside {@link FaStackComponent} should be rendered in
124 * regular size (1x) or as a larger icon (2x).
125 */
126 this.stackItemSize = '1x';
127 }
128 ngOnChanges(changes) {
129 if ('size' in changes) {
130 throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. ' +
131 'Set size on the enclosing fa-stack instead: <fa-stack size="4x">...</fa-stack>.');
132 }
133 }
134}
135FaStackItemSizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaStackItemSizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
136FaStackItemSizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: FaStackItemSizeDirective, selector: "fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]", inputs: { stackItemSize: "stackItemSize", size: "size" }, usesOnChanges: true, ngImport: i0 });
137i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaStackItemSizeDirective, decorators: [{
138 type: Directive,
139 args: [{
140 // eslint-disable-next-line @angular-eslint/directive-selector
141 selector: 'fa-icon[stackItemSize],fa-duotone-icon[stackItemSize]',
142 }]
143 }], propDecorators: { stackItemSize: [{
144 type: Input
145 }], size: [{
146 type: Input
147 }] } });
148
149class FaStackComponent {
150 constructor(renderer, elementRef) {
151 this.renderer = renderer;
152 this.elementRef = elementRef;
153 }
154 ngOnInit() {
155 this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');
156 }
157 ngOnChanges(changes) {
158 if ('size' in changes) {
159 if (changes.size.currentValue != null) {
160 this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);
161 }
162 if (changes.size.previousValue != null) {
163 this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);
164 }
165 }
166 }
167}
168FaStackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaStackComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
169FaStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FaStackComponent, selector: "fa-stack", inputs: { size: "size" }, usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
170i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaStackComponent, decorators: [{
171 type: Component,
172 args: [{
173 selector: 'fa-stack',
174 template: `<ng-content></ng-content>`,
175 }]
176 }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { size: [{
177 type: Input
178 }] } });
179
180class FaIconComponent {
181 constructor(sanitizer, config, iconLibrary, stackItem, stack) {
182 this.sanitizer = sanitizer;
183 this.config = config;
184 this.iconLibrary = iconLibrary;
185 this.stackItem = stackItem;
186 this.classes = [];
187 if (stack != null && stackItem == null) {
188 console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' +
189 'fa-stack. Example: <fa-icon stackItemSize="2x"></fa-icon>.');
190 }
191 }
192 ngOnChanges(changes) {
193 if (this.icon == null && this.config.fallbackIcon == null) {
194 return faWarnIfIconSpecMissing();
195 }
196 let iconToBeRendered = null;
197 if (this.icon == null) {
198 iconToBeRendered = this.config.fallbackIcon;
199 }
200 else {
201 iconToBeRendered = this.icon;
202 }
203 if (changes) {
204 const iconDefinition = this.findIconDefinition(iconToBeRendered);
205 if (iconDefinition != null) {
206 const params = this.buildParams();
207 this.renderIcon(iconDefinition, params);
208 }
209 }
210 }
211 /**
212 * Programmatically trigger rendering of the icon.
213 *
214 * This method is useful, when creating {@link FaIconComponent} dynamically or
215 * changing its inputs programmatically as in these cases icon won't be
216 * re-rendered automatically.
217 */
218 render() {
219 this.ngOnChanges({});
220 }
221 findIconDefinition(i) {
222 const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);
223 if ('icon' in lookup) {
224 return lookup;
225 }
226 const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);
227 if (definition != null) {
228 return definition;
229 }
230 faWarnIfIconDefinitionMissing(lookup);
231 return null;
232 }
233 buildParams() {
234 const classOpts = {
235 flip: this.flip,
236 spin: this.spin,
237 pulse: this.pulse,
238 border: this.border,
239 inverse: this.inverse,
240 size: this.size || null,
241 pull: this.pull || null,
242 rotate: this.rotate || null,
243 fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,
244 stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null,
245 };
246 const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;
247 return {
248 title: this.title,
249 transform: parsedTransform,
250 classes: [...faClassList(classOpts), ...this.classes],
251 mask: this.mask != null ? this.findIconDefinition(this.mask) : null,
252 styles: this.styles != null ? this.styles : {},
253 symbol: this.symbol,
254 attributes: {
255 role: this.a11yRole,
256 },
257 };
258 }
259 renderIcon(definition, params) {
260 const renderedIcon = icon(definition, params);
261 this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\n'));
262 }
263}
264FaIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaIconComponent, deps: [{ token: i2.DomSanitizer }, { token: FaConfig }, { token: FaIconLibrary }, { token: FaStackItemSizeDirective, optional: true }, { token: FaStackComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
265FaIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FaIconComponent, selector: "fa-icon", inputs: { icon: "icon", title: "title", spin: "spin", pulse: "pulse", mask: "mask", styles: "styles", flip: "flip", size: "size", pull: "pull", border: "border", inverse: "inverse", symbol: "symbol", rotate: "rotate", fixedWidth: "fixedWidth", classes: "classes", transform: "transform", a11yRole: "a11yRole" }, host: { properties: { "attr.title": "title", "innerHTML": "this.renderedIconHTML" }, classAttribute: "ng-fa-icon" }, usesOnChanges: true, ngImport: i0, template: ``, isInline: true });
266i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaIconComponent, decorators: [{
267 type: Component,
268 args: [{
269 selector: 'fa-icon',
270 template: ``,
271 host: {
272 class: 'ng-fa-icon',
273 '[attr.title]': 'title',
274 },
275 }]
276 }], ctorParameters: function () {
277 return [{ type: i2.DomSanitizer }, { type: FaConfig }, { type: FaIconLibrary }, { type: FaStackItemSizeDirective, decorators: [{
278 type: Optional
279 }] }, { type: FaStackComponent, decorators: [{
280 type: Optional
281 }] }];
282 }, propDecorators: { icon: [{
283 type: Input
284 }], title: [{
285 type: Input
286 }], spin: [{
287 type: Input
288 }], pulse: [{
289 type: Input
290 }], mask: [{
291 type: Input
292 }], styles: [{
293 type: Input
294 }], flip: [{
295 type: Input
296 }], size: [{
297 type: Input
298 }], pull: [{
299 type: Input
300 }], border: [{
301 type: Input
302 }], inverse: [{
303 type: Input
304 }], symbol: [{
305 type: Input
306 }], rotate: [{
307 type: Input
308 }], fixedWidth: [{
309 type: Input
310 }], classes: [{
311 type: Input
312 }], transform: [{
313 type: Input
314 }], a11yRole: [{
315 type: Input
316 }], renderedIconHTML: [{
317 type: HostBinding,
318 args: ['innerHTML']
319 }] } });
320
321class FaDuotoneIconComponent extends FaIconComponent {
322 findIconDefinition(i) {
323 const definition = super.findIconDefinition(i);
324 if (definition != null && !Array.isArray(definition.icon[4])) {
325 throw new Error('The specified icon does not appear to be a Duotone icon. ' +
326 'Check that you specified the correct style: ' +
327 `<fa-duotone-icon [icon]="['fad', '${definition.iconName}']"></fa-duotone-icon> ` +
328 `or use: <fa-icon icon="${definition.iconName}"></fa-icon> instead.`);
329 }
330 return definition;
331 }
332 buildParams() {
333 const params = super.buildParams();
334 if (this.swapOpacity === true || this.swapOpacity === 'true') {
335 params.classes.push('fa-swap-opacity');
336 }
337 if (this.primaryOpacity != null) {
338 params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();
339 }
340 if (this.secondaryOpacity != null) {
341 params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();
342 }
343 if (this.primaryColor != null) {
344 params.styles['--fa-primary-color'] = this.primaryColor;
345 }
346 if (this.secondaryColor != null) {
347 params.styles['--fa-secondary-color'] = this.secondaryColor;
348 }
349 return params;
350 }
351}
352FaDuotoneIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaDuotoneIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
353FaDuotoneIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FaDuotoneIconComponent, selector: "fa-duotone-icon", inputs: { swapOpacity: "swapOpacity", primaryOpacity: "primaryOpacity", secondaryOpacity: "secondaryOpacity", primaryColor: "primaryColor", secondaryColor: "secondaryColor" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
354i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaDuotoneIconComponent, decorators: [{
355 type: Component,
356 args: [{
357 selector: 'fa-duotone-icon',
358 template: ``,
359 }]
360 }], propDecorators: { swapOpacity: [{
361 type: Input
362 }], primaryOpacity: [{
363 type: Input
364 }], secondaryOpacity: [{
365 type: Input
366 }], primaryColor: [{
367 type: Input
368 }], secondaryColor: [{
369 type: Input
370 }] } });
371
372/**
373 * Warns if parent component not existing.
374 */
375const faWarnIfParentNotExist = (parent, parentName, childName) => {
376 if (!parent) {
377 throw new Error(`${childName} should be used as child of ${parentName} only.`);
378 }
379};
380
381/**
382 * Fontawesome layers.
383 */
384class FaLayersComponent {
385 constructor(renderer, elementRef, config) {
386 this.renderer = renderer;
387 this.elementRef = elementRef;
388 this.config = config;
389 }
390 ngOnInit() {
391 this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');
392 this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;
393 }
394 ngOnChanges(changes) {
395 if ('size' in changes) {
396 if (changes.size.currentValue != null) {
397 this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);
398 }
399 if (changes.size.previousValue != null) {
400 this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);
401 }
402 }
403 }
404}
405FaLayersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaLayersComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: FaConfig }], target: i0.ɵɵFactoryTarget.Component });
406FaLayersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FaLayersComponent, selector: "fa-layers", inputs: { size: "size", fixedWidth: "fixedWidth" }, host: { properties: { "class.fa-fw": "this.fixedWidth" } }, usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
407i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaLayersComponent, decorators: [{
408 type: Component,
409 args: [{
410 selector: 'fa-layers',
411 template: `<ng-content></ng-content>`,
412 }]
413 }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: FaConfig }]; }, propDecorators: { size: [{
414 type: Input
415 }], fixedWidth: [{
416 type: Input
417 }, {
418 type: HostBinding,
419 args: ['class.fa-fw']
420 }] } });
421
422class FaLayersCounterComponent {
423 constructor(parent, sanitizer) {
424 this.parent = parent;
425 this.sanitizer = sanitizer;
426 this.classes = [];
427 faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);
428 }
429 ngOnChanges(changes) {
430 if (changes) {
431 const params = this.buildParams();
432 this.updateContent(params);
433 }
434 }
435 buildParams() {
436 return {
437 title: this.title,
438 classes: this.classes,
439 styles: this.styles,
440 };
441 }
442 updateContent(params) {
443 this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));
444 }
445}
446FaLayersCounterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaLayersCounterComponent, deps: [{ token: FaLayersComponent, optional: true }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
447FaLayersCounterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FaLayersCounterComponent, selector: "fa-layers-counter", inputs: { content: "content", title: "title", styles: "styles", classes: "classes" }, host: { properties: { "innerHTML": "this.renderedHTML" }, classAttribute: "ng-fa-layers-counter" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
448i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaLayersCounterComponent, decorators: [{
449 type: Component,
450 args: [{
451 selector: 'fa-layers-counter',
452 template: '',
453 host: {
454 class: 'ng-fa-layers-counter',
455 },
456 }]
457 }], ctorParameters: function () {
458 return [{ type: FaLayersComponent, decorators: [{
459 type: Optional
460 }] }, { type: i2.DomSanitizer }];
461 }, propDecorators: { content: [{
462 type: Input
463 }], title: [{
464 type: Input
465 }], styles: [{
466 type: Input
467 }], classes: [{
468 type: Input
469 }], renderedHTML: [{
470 type: HostBinding,
471 args: ['innerHTML']
472 }] } });
473
474class FaLayersTextComponent {
475 constructor(parent, sanitizer) {
476 this.parent = parent;
477 this.sanitizer = sanitizer;
478 this.classes = [];
479 faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);
480 }
481 ngOnChanges(changes) {
482 if (changes) {
483 const params = this.buildParams();
484 this.updateContent(params);
485 }
486 }
487 /**
488 * Updating params by component props.
489 */
490 buildParams() {
491 const classOpts = {
492 flip: this.flip,
493 spin: this.spin,
494 pulse: this.pulse,
495 border: this.border,
496 inverse: this.inverse,
497 size: this.size || null,
498 pull: this.pull || null,
499 rotate: this.rotate || null,
500 fixedWidth: this.fixedWidth,
501 };
502 const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;
503 return {
504 transform: parsedTransform,
505 classes: [...faClassList(classOpts), ...this.classes],
506 title: this.title,
507 styles: this.styles,
508 };
509 }
510 updateContent(params) {
511 this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\n'));
512 }
513}
514FaLayersTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaLayersTextComponent, deps: [{ token: FaLayersComponent, optional: true }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
515FaLayersTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: FaLayersTextComponent, selector: "fa-layers-text", inputs: { content: "content", title: "title", styles: "styles", classes: "classes", spin: "spin", pulse: "pulse", flip: "flip", size: "size", pull: "pull", border: "border", inverse: "inverse", rotate: "rotate", fixedWidth: "fixedWidth", transform: "transform" }, host: { properties: { "innerHTML": "this.renderedHTML" }, classAttribute: "ng-fa-layers-text" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
516i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FaLayersTextComponent, decorators: [{
517 type: Component,
518 args: [{
519 selector: 'fa-layers-text',
520 template: '',
521 host: {
522 class: 'ng-fa-layers-text',
523 },
524 }]
525 }], ctorParameters: function () {
526 return [{ type: FaLayersComponent, decorators: [{
527 type: Optional
528 }] }, { type: i2.DomSanitizer }];
529 }, propDecorators: { content: [{
530 type: Input
531 }], title: [{
532 type: Input
533 }], styles: [{
534 type: Input
535 }], classes: [{
536 type: Input
537 }], spin: [{
538 type: Input
539 }], pulse: [{
540 type: Input
541 }], flip: [{
542 type: Input
543 }], size: [{
544 type: Input
545 }], pull: [{
546 type: Input
547 }], border: [{
548 type: Input
549 }], inverse: [{
550 type: Input
551 }], rotate: [{
552 type: Input
553 }], fixedWidth: [{
554 type: Input
555 }], transform: [{
556 type: Input
557 }], renderedHTML: [{
558 type: HostBinding,
559 args: ['innerHTML']
560 }] } });
561
562class FontAwesomeModule {
563}
564FontAwesomeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FontAwesomeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
565FontAwesomeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FontAwesomeModule, declarations: [FaIconComponent,
566 FaDuotoneIconComponent,
567 FaLayersComponent,
568 FaLayersTextComponent,
569 FaLayersCounterComponent,
570 FaStackComponent,
571 FaStackItemSizeDirective], exports: [FaIconComponent,
572 FaDuotoneIconComponent,
573 FaLayersComponent,
574 FaLayersTextComponent,
575 FaLayersCounterComponent,
576 FaStackComponent,
577 FaStackItemSizeDirective] });
578FontAwesomeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FontAwesomeModule });
579i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: FontAwesomeModule, decorators: [{
580 type: NgModule,
581 args: [{
582 declarations: [
583 FaIconComponent,
584 FaDuotoneIconComponent,
585 FaLayersComponent,
586 FaLayersTextComponent,
587 FaLayersCounterComponent,
588 FaStackComponent,
589 FaStackItemSizeDirective,
590 ],
591 exports: [
592 FaIconComponent,
593 FaDuotoneIconComponent,
594 FaLayersComponent,
595 FaLayersTextComponent,
596 FaLayersCounterComponent,
597 FaStackComponent,
598 FaStackItemSizeDirective,
599 ],
600 }]
601 }] });
602
603/**
604 * Generated bundle index. Do not edit.
605 */
606
607export { FaConfig, FaDuotoneIconComponent, FaIconComponent, FaIconLibrary, FaLayersComponent, FaLayersCounterComponent, FaLayersTextComponent, FaStackComponent, FaStackItemSizeDirective, FontAwesomeModule };
608//# sourceMappingURL=angular-fontawesome.mjs.map