{"version":3,"file":"vijhhh2-angular-fittext.mjs","sources":["../../src/angular-fittext.directive.ts","../../src/angular-fittext.module.ts","../../vijhhh2-angular-fittext.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\n\n@Directive({\n  selector: '[fittext]'\n})\nexport class AngularFittextDirective implements AfterViewInit, OnInit, OnChanges {\n\n  @Input() fittext?= true;\n  @Input() compression?= 1;\n  @Input() activateOnResize?= true;\n  @Input() minFontSize?: number | 'inherit' = 0;\n  @Input() maxFontSize?: number | 'inherit' = Number.POSITIVE_INFINITY;\n  @Input() delay?= 100;\n  @Input() innerHTML;\n  @Input() fontUnit?: 'px' | 'em' | string = 'px';\n\n  private fittextParent: HTMLElement;\n  private fittextElement: HTMLElement;\n  private fittextMinFontSize: number;\n  private fittextMaxFontSize: number;\n  private computed: CSSStyleDeclaration;\n  private newlines: number;\n  private lineHeight: string;\n  private display: string;\n  private calcSize = 10;\n  private resizeTimeout: any;\n\n  constructor(\n    private el: ElementRef,\n    private renderer: Renderer2\n  ) {\n    this.fittextElement = el.nativeElement;\n    this.fittextParent = this.fittextElement.parentElement;\n    this.computed = window.getComputedStyle(this.fittextElement);\n    this.newlines = this.fittextElement.childElementCount > 0 ? this.fittextElement.childElementCount : 1;\n    this.lineHeight = this.computed['line-height'];\n    this.display = this.computed['display'];\n  }\n\n  @HostListener('window:resize')\n  public onWindowResize = (): void => {\n    if (this.activateOnResize) {\n      this.setFontSize();\n    }\n  };\n\n  public ngOnInit() {\n    this.fittextMinFontSize = this.minFontSize === 'inherit' ? this.computed['font-size'] : this.minFontSize;\n    this.fittextMaxFontSize = this.maxFontSize === 'inherit' ? this.computed['font-size'] : this.maxFontSize;\n  }\n\n  public ngAfterViewInit() {\n    this.setFontSize(0);\n  }\n\n  public ngOnChanges(changes: SimpleChanges) {\n    if (changes['compression'] && !changes['compression'].firstChange) {\n      this.setFontSize(0);\n    }\n    if (changes['innerHTML']) {\n      this.fittextElement.innerHTML = this.innerHTML;\n      if (!changes['innerHTML'].firstChange) {\n        this.setFontSize(0);\n      }\n    }\n  }\n\n  private setFontSize = (delay = this.delay): void => {\n    this.resizeTimeout = setTimeout(\n      (() => {\n        if (this.fittextElement.offsetHeight * this.fittextElement.offsetWidth !== 0) {\n          // reset to default\n          this.setStyles(this.calcSize, 1, 'inline-block');\n          // set new\n          this.setStyles(this.calculateNewFontSize(), this.lineHeight, this.display);\n        }\n      }).bind(this),\n      delay\n    );\n  };\n\n  private calculateNewFontSize = (): number => {\n    const ratio = (this.calcSize * this.newlines) / this.fittextElement.offsetWidth / this.newlines;\n\n    return Math.max(\n      Math.min(\n        (this.fittextParent.offsetWidth -\n          (parseFloat(getComputedStyle(this.fittextParent).paddingLeft) +\n            parseFloat(getComputedStyle(this.fittextParent).paddingRight)) -\n          6) *\n        ratio *\n        this.compression,\n        this.fittextMaxFontSize\n      ),\n      this.fittextMinFontSize\n    );\n  };\n\n  private setStyles = (fontSize: number, lineHeight: number | string, display: string): void => {\n    this.renderer.setStyle(this.fittextElement, 'fontSize', fontSize.toString() + this.fontUnit);\n    this.renderer.setStyle(this.fittextElement, 'lineHeight', lineHeight.toString());\n    this.renderer.setStyle(this.fittextElement, 'display', display);\n  };\n}\n","import {NgModule} from '@angular/core';\nimport {AngularFittextDirective} from './angular-fittext.directive';\n\n\n@NgModule({\n  declarations: [\n    AngularFittextDirective\n  ],\n  exports: [\n    AngularFittextDirective\n  ]\n})\n\nexport class AngularFittextModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}