{"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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"}