angular-line-awesome
Version:
Angular Line Awesome is an Angular component to manage Line Awesome icons.
1 lines • 26.1 kB
Source Map (JSON)
{"version":3,"file":"angular-line-awesome.mjs","sources":["../../../projects/angular-line-awesome/src/lib/line-awesome.core.ts","../../../projects/angular-line-awesome/src/lib/services/la-icon-library.service.ts","../../../projects/angular-line-awesome/src/lib/directives/la-stack-item-size/la-stack-item-size.directive.ts","../../../projects/angular-line-awesome/src/lib/components/la-icon/la-icon.component.ts","../../../projects/angular-line-awesome/src/lib/components/la-stack/la-stack.component.ts","../../../projects/angular-line-awesome/src/lib/angular-line-awesome.module.ts","../../../projects/angular-line-awesome/src/public-api.ts","../../../projects/angular-line-awesome/src/angular-line-awesome.ts"],"sourcesContent":["// TYPES\nexport type IconPrefix = 'las' | 'lab' | 'lar';\nexport type FlipProp = 'horizontal' | 'vertical' | 'both';\nexport type PullProp = 'left' | 'right';\nexport type RotateProp = 90 | 180 | 270;\nexport type SizeProp =\n | 'xs'\n | 'lg'\n | 'sm'\n | 'lx'\n | '1x'\n | '2x'\n | '3x'\n | '4x'\n | '5x'\n | '6x'\n | '7x'\n | '8x'\n | '9x'\n | '10x';\nexport type IconProp = IconName | [IconPrefix, IconName] | IconLookup;\nexport type IconName = string;\n\n// INTERFACES\nexport interface Styles {\n [key: string]: string;\n}\nexport interface IconLookup {\n prefix: IconPrefix;\n iconName: IconName;\n}\nexport interface Icon {\n prefix: IconPrefix;\n iconName: IconName;\n}\nexport interface LaProps {\n mask?: IconProp;\n className?: string;\n size?: SizeProp;\n fixedWidth?: boolean;\n rotate?: RotateProp;\n flip?: FlipProp;\n pull?: PullProp;\n spin?: boolean;\n pulse?: boolean;\n border?: boolean;\n counter?: boolean;\n inverse?: boolean;\n transform?: string | Transform;\n style?: Styles;\n stackItemSize?: '1x' | '2x';\n}\n\nexport interface Transform {\n size?: number;\n x?: number;\n y?: number;\n rotate?: number;\n flipX?: boolean;\n flipY?: boolean;\n}\n\nexport interface IconParams {\n title?: string;\n classes?: string[];\n attributes?: Attributes;\n styles?: Styles;\n transform?: Transform;\n}\n\nexport interface Attributes {\n [key: string]: number | string;\n}\n\nexport interface LineAwesomeIcon {\n name: string;\n data: string;\n}\n\n// FUNCTION HANDLERS\nexport const IconNamePrefix = 'la';\nexport const IconDefaultPrefix = 'las';\n\nexport const isIconLookup = (i: IconProp): i is Icon => {\n return (i as Icon).prefix !== undefined && (i as Icon).iconName !== undefined;\n};\n\nexport const faNormalizeIcon = (icon: IconProp): Icon => {\n if (isIconLookup(icon)) {\n return icon;\n }\n\n if (Array.isArray(icon) && (icon as string[]).length === 2) {\n return { prefix: icon[0], iconName: icon[1] };\n }\n\n if (typeof icon === 'string') {\n const iconArray = icon.split(' ');\n if (iconArray.length === 1) {\n iconArray.unshift(IconDefaultPrefix);\n }\n return { prefix: iconArray[0] as IconPrefix, iconName: iconArray[1] as IconName };\n }\n};\n\nexport const laClassList = (props: LaProps): string[] => {\n const classes = {\n 'la-spin': props.spin,\n 'la-pulse': props.pulse,\n 'la-fw': props.fixedWidth,\n 'la-border': props.border,\n 'la-inverse': props.inverse,\n 'la-layers-counter': props.counter,\n 'la-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'la-flip-vertical': props.flip === 'vertical' || props.flip === 'both',\n [`la-${props.size}`]: props.size !== null,\n [`la-rotate-${props.rotate}`]: props.rotate !== null,\n [`la-pull-${props.pull}`]: props.pull !== null,\n [`la-stack-${props.stackItemSize}`]: props.stackItemSize != null\n };\n\n return Object.keys(classes)\n .map(key => (classes[key] ? key : null))\n .filter(key => key);\n};\n\nexport const applyCssTransforms = (transformObj: Transform): string => {\n const transformsHandlers = {\n size: (value: number) => `scale(${1 + value / 10})`,\n rotate: (value: number) => `rotate(${value}deg)`,\n flipY: (value: boolean) => (value ? `scaleY(-1)` : null),\n flipX: (value: boolean) => (value ? `scaleX(-1)` : null),\n y: (value: number) => `translateY(${value}px)`,\n x: (value: number) => `translateX(${value}px)`\n };\n\n return Object.keys(transformObj)\n .map(key => transformsHandlers[key](transformObj[key]))\n .filter(key => key)\n .join(' ');\n};\n\nexport const parseTransformString = (transformString: string): Transform => {\n const transform = {\n size: 0,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n };\n\n if (!transformString) {\n return transform;\n }\n\n return transformString\n .toLowerCase()\n .split(' ')\n .reduce((acc: Transform, n: any) => {\n const parts = n.toLowerCase().split('-');\n const first = parts[0];\n let rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\n","import { Injectable } from '@angular/core';\nimport { Icon, LineAwesomeIcon } from '../line-awesome.core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LaIconLibrary {\n private registry = new Map<string, string>();\n\n public addIcons(icons: LineAwesomeIcon[]): void {\n icons.forEach((icon: LineAwesomeIcon) => {\n this.registry.set(icon.name, icon.data);\n });\n }\n\n public getIcon(icon: Icon): string | undefined {\n const iconName = `${icon.prefix}-${icon.iconName}`;\n\n if (!this.registry.has(iconName)) {\n throw new Error(\n `Could not find icon with prefix=${icon.prefix} and iconName=${icon.iconName} in the icon library.`\n );\n }\n return this.registry.get(iconName);\n }\n}\n","import { Directive, OnChanges, Input, SimpleChanges } from '@angular/core';\nimport { SizeProp } from '../../line-awesome.core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'la-icon[stackItemSize]',\n})\nexport class LaStackItemSizeDirective implements OnChanges {\n /**\n * Specify whether icon inside {@link LaStackComponent} should be rendered in\n * regular size (1x) or as a larger icon (2x).\n */\n @Input() stackItemSize: '1x' | '2x' = '1x';\n\n @Input() size?: SizeProp;\n\n ngOnChanges(changes: SimpleChanges) {\n if ('size' in changes) {\n throw new Error(\n 'la-icon is not allowed to customize size when used inside la-stack. ' +\n 'Set size on the enclosing la-stack instead: <la-stack size=\"4x\">...</la-stack>.',\n );\n }\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n HostBinding,\n Renderer2,\n Optional,\n ChangeDetectionStrategy,\n ViewEncapsulation\n} from '@angular/core';\nimport { SafeHtml, DomSanitizer } from '@angular/platform-browser';\nimport { LaStackItemSizeDirective } from '../../directives/la-stack-item-size/la-stack-item-size.directive';\nimport {\n SizeProp,\n Styles,\n PullProp,\n RotateProp,\n Transform,\n FlipProp,\n LaProps,\n IconParams,\n IconProp,\n Icon,\n parseTransformString,\n applyCssTransforms,\n faNormalizeIcon,\n laClassList,\n IconNamePrefix as prefix\n} from '../../line-awesome.core';\nimport { LaIconLibrary } from '../../services/la-icon-library.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'la-icon',\n template: '',\n styleUrls: ['./la-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class LaIconComponent implements OnChanges {\n @Input() icon: IconProp;\n @Input() size?: SizeProp;\n @Input() fixedWidth?: boolean;\n @Input() rotate?: RotateProp;\n @Input() flip?: FlipProp;\n @Input() pull?: PullProp;\n @Input() spin?: boolean;\n @Input() pulse?: boolean;\n @Input() border?: boolean;\n @Input() inverse?: boolean;\n @Input() styles?: Styles;\n @Input() classes?: string[] = [];\n @Input() transform?: string | Transform;\n @Input() mask?: IconProp;\n @Input() title?: string;\n\n @HostBinding('innerHTML') renderedIconHTML: SafeHtml;\n /**\n * Specify a title for the icon.\n * This text will be displayed in a tooltip on hover and presented to the\n * screen readers.\n */\n @HostBinding('attr.title')\n get titleAttr(): string {\n return this.title;\n }\n\n constructor(\n private sanitizer: DomSanitizer,\n private renderer: Renderer2,\n private iconRegistry: LaIconLibrary,\n @Optional() private stackItem: LaStackItemSizeDirective\n ) {}\n\n /**\n * Programmatically trigger rendering of the icon.\n *\n * This method is useful, when creating dynamically or\n * changing its inputs programmatically as in these cases icon won't be\n * re-rendered automatically.\n */\n render() {\n this.ngOnChanges({});\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.icon) {\n throw new Error('Property `icon` is required for `la-icon` component.');\n }\n\n if (changes) {\n const iconDefinition = faNormalizeIcon(this.icon);\n const params = this.buildParams();\n this.renderIcon(iconDefinition, params);\n }\n }\n\n protected buildParams() {\n const classOpts: LaProps = {\n flip: this.flip,\n spin: this.spin,\n pulse: this.pulse,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: this.fixedWidth,\n stackItemSize: this.stackItem ? this.stackItem.stackItemSize : null\n };\n\n const parsedTransform =\n typeof this.transform === 'string'\n ? parseTransformString(this.transform)\n : this.transform || {};\n\n return {\n title: this.title,\n transform: parsedTransform,\n classes: [...laClassList(classOpts), ...this.classes],\n styles: this.styles != null ? this.styles : {}\n };\n }\n\n private renderIcon(definition: Icon, params: IconParams) {\n const svgData = this.iconRegistry.getIcon(definition);\n const renderedIcon: SVGElement = this.svgElementFromString(svgData);\n const attributes = {\n 'aria-hidden': 'true',\n role: 'img',\n focusable: 'false',\n // Note: prefix and prefix-icon-name classes are helpfully to make the tests\n class: [definition.prefix, `${prefix}-${definition.iconName}`, ...params.classes].join(' ')\n };\n // Apply attributes, note the classes also goes here\n for (const [key, value] of Object.entries(attributes)) {\n this.renderer.setAttribute(renderedIcon, key, value);\n }\n // Apply css transforms\n this.renderer.setStyle(renderedIcon, 'transform', applyCssTransforms(params.transform));\n // Inject svg icon\n this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.outerHTML);\n }\n\n private svgElementFromString(svgContent: string): SVGElement {\n const div: HTMLElement = this.renderer.createElement('div');\n div.innerHTML = svgContent;\n return div.querySelector('svg');\n }\n}\n","import { OnInit, OnChanges, Component, Input, Renderer2, ElementRef, SimpleChanges } from '@angular/core';\nimport { SizeProp, IconNamePrefix } from '../../line-awesome.core';\n\n@Component({\n selector: 'la-stack',\n // TODO: See if it is better to select la-icon and throw if it does not have stackItemSize directive\n template: `\n <ng-content select=\"la-icon[stackItemSize]\"></ng-content>\n `,\n})\nexport class LaStackComponent implements OnInit, OnChanges {\n /**\n * Size of the stacked icon.\n * Note that stacked icon is by default 2 times bigger, than non-stacked icon.\n * You'll need to set size using custom CSS to align stacked icon with a\n * simple one. E.g. `la-stack { font-size: 0.5em; }`.\n */\n @Input() size?: SizeProp;\n\n constructor(private renderer: Renderer2, private elementRef: ElementRef) { }\n\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'la-stack');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `${IconNamePrefix}-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `${IconNamePrefix}-${changes.size.previousValue}`);\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LaIconComponent } from './components/la-icon/la-icon.component';\nimport { LaStackComponent } from './components/la-stack/la-stack.component';\nimport { LaStackItemSizeDirective } from './directives/la-stack-item-size/la-stack-item-size.directive';\n\n@NgModule({\n declarations: [LaIconComponent, LaStackComponent, LaStackItemSizeDirective],\n imports: [],\n exports: [LaIconComponent, LaStackComponent, LaStackItemSizeDirective]\n})\nexport class AngularLineawesomeModule {}\n","/*\n * Public API Surface of angular-line-awesome\n */\n\nexport * from './lib/angular-line-awesome.module';\nexport * from './lib/components/la-icon/la-icon.component';\nexport * from './lib/components/la-stack/la-stack.component';\nexport * from './lib/directives/la-stack-item-size/la-stack-item-size.directive';\nexport * from './lib/services/la-icon-library.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["prefix","i2.LaIconLibrary","i3.LaStackItemSizeDirective"],"mappings":"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"}