{"version":3,"file":"marcura-marcura-text-area.mjs","sources":["../../src/lib/model/text-area-height.enum.ts","../../src/lib/components/text-area/text-area.component.ts","../../src/lib/components/text-area/text-area.component.html","../../src/lib/text-area.module.ts","../../src/marcura-marcura-text-area.ts"],"sourcesContent":["export enum TextAreaHeight {\r\n  Auto = 'auto',\r\n  Fixed = 'fixed',\r\n}\r\n","import {\r\n  forwardRef,\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport {FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {\r\n  AbstractControlComponent,\r\n  ABSTRACT_CONTROL_COMPONENT,\r\n  ControlBlurredEvent,\r\n  ControlChangedEvent,\r\n  ControlState,\r\n  ControlType,\r\n  IStateableControlComponent,\r\n  ITypeableControlComponent,\r\n  STATEABLE_CONTROL_COMPONENT,\r\n  TYPEABLE_CONTROL_COMPONENT,\r\n  WINDOW,\r\n  SIZEABLE_CONTROL_COMPONENT,\r\n  ControlSize,\r\n  Is,\r\n  Nil,\r\n} from '@marcura/marcura-common';\r\nimport {TextAreaHeight} from '../../model/text-area-height.enum';\r\n\r\n@Component({\r\n  selector: 'sg-text-area',\r\n  templateUrl: 'text-area.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => TextAreaComponent),\r\n      multi: true,\r\n    },\r\n    {\r\n      provide: ABSTRACT_CONTROL_COMPONENT,\r\n      useExisting: forwardRef(() => TextAreaComponent),\r\n    },\r\n    {\r\n      provide: STATEABLE_CONTROL_COMPONENT,\r\n      useExisting: forwardRef(() => TextAreaComponent),\r\n    },\r\n    {\r\n      provide: TYPEABLE_CONTROL_COMPONENT,\r\n      useExisting: forwardRef(() => TextAreaComponent),\r\n    },\r\n    {\r\n      provide: SIZEABLE_CONTROL_COMPONENT,\r\n      useExisting: forwardRef(() => TextAreaComponent),\r\n    },\r\n  ],\r\n})\r\nexport class TextAreaComponent extends AbstractControlComponent<string>\r\n  implements IStateableControlComponent, ITypeableControlComponent, AfterViewInit {\r\n  public override readonly defaultValue: string = '';\r\n  private static readonly _smallHeight: number = 24;\r\n  private static readonly _mediumHeight: number = 30;\r\n  private _window: Window;\r\n  private _height: TextAreaHeight = TextAreaHeight.Auto;\r\n  private _placeholder: string = '';\r\n  private _size: ControlSize = ControlSize.Medium;\r\n  private _type: ControlType | Nil = null;\r\n  private _state: ControlState | Nil = null;\r\n  private _isSmallSize: boolean = this._size === ControlSize.Small;\r\n  private _isMediumSize: boolean = this._size === ControlSize.Medium;\r\n  private _isSuccessType: boolean = this._type === ControlType.Success;\r\n  private _isErrorType: boolean = this._type === ControlType.Error;\r\n  private _isWarningType: boolean = this._type === ControlType.Warning;\r\n  private _isHighlightedState: boolean = this._state === ControlState.Highlighted;\r\n  private _minAutoHeight: number =\r\n    this._size === ControlSize.Small ? TextAreaComponent._smallHeight : TextAreaComponent._mediumHeight;\r\n  @ViewChild('valueElement', {static: true})\r\n  public readonly valueElement!: ElementRef;\r\n  @HostBinding('class.sg-text-area')\r\n  public readonly hasCssClass: boolean = true;\r\n  @HostBinding('class.sg-text-area--size-small')\r\n  public get isSmallSize(): boolean {\r\n    return this._isSmallSize;\r\n  }\r\n  @HostBinding('class.sg-text-area--size-medium')\r\n  public get isMediumSize(): boolean {\r\n    return this._isMediumSize;\r\n  }\r\n  @HostBinding('class.sg-text-area--height-auto')\r\n  public get hasAutoHeightCssClass(): boolean {\r\n    return this.height === TextAreaHeight.Auto;\r\n  }\r\n  @HostBinding('class.sg-text-area--height-fixed')\r\n  public get hasFixedHeightCssClass(): boolean {\r\n    return this.height === TextAreaHeight.Fixed;\r\n  }\r\n  @HostBinding('class.sg-text-area--type-success')\r\n  public get isSuccessType(): boolean {\r\n    return this._isSuccessType;\r\n  }\r\n  @HostBinding('class.sg-text-area--type-error')\r\n  public get isErrorType(): boolean {\r\n    return this._isErrorType;\r\n  }\r\n  @HostBinding('class.sg-text-area--type-warning')\r\n  public get isWarningType(): boolean {\r\n    return this._isWarningType;\r\n  }\r\n  @HostBinding('class.sg-text-area--state-highlighted')\r\n  public get isHighlightedState(): boolean {\r\n    return this._isHighlightedState;\r\n  }\r\n  @HostBinding('class.sg-text-area--is-focused')\r\n  public get hasIsFocusedCssClass(): boolean {\r\n    return this.isFocused;\r\n  }\r\n  @HostBinding('class.sg-text-area--is-hovered')\r\n  public get hasIsHoveredCssClass(): boolean {\r\n    return this._isHovered.value;\r\n  }\r\n  @HostBinding('class.sg-text-area--is-disabled')\r\n  public get hasIsDisabledCssClass(): boolean {\r\n    return this.isDisabled;\r\n  }\r\n  @HostBinding('class.sg-text-area--has-value')\r\n  public override get hasValue(): boolean {\r\n    return this.valueFormControl.value && this.valueFormControl.value.toString().trim() !== '' ? true : false;\r\n  }\r\n  @Input()\r\n  public get size(): ControlSize {\r\n    return this._size;\r\n  }\r\n  public set size(size: ControlSize) {\r\n    if (size && this._size !== size) {\r\n      this._size = size;\r\n      this._isSmallSize = size === ControlSize.Small;\r\n      this._isMediumSize = size === ControlSize.Medium;\r\n      this.minAutoHeight =\r\n        size === ControlSize.Small ? TextAreaComponent._smallHeight : TextAreaComponent._mediumHeight;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n  @Input()\r\n  public get minAutoHeight(): number {\r\n    return this._minAutoHeight;\r\n  }\r\n  public set minAutoHeight(minAutoHeight: number) {\r\n    if (Is.number(minAutoHeight) && minAutoHeight > 0 && this._minAutoHeight !== minAutoHeight) {\r\n      this._minAutoHeight = minAutoHeight;\r\n    }\r\n  }\r\n  @Input()\r\n  public id?: string;\r\n  @Input()\r\n  public get height(): TextAreaHeight {\r\n    return this._height;\r\n  }\r\n  public set height(height: TextAreaHeight) {\r\n    this._height = height || TextAreaHeight.Auto;\r\n  }\r\n  @Input()\r\n  public get state(): ControlState | Nil {\r\n    return this._state;\r\n  }\r\n  public set state(state: ControlState | Nil) {\r\n    if (this._state !== state) {\r\n      this._state = state;\r\n      this._isHighlightedState = state === ControlState.Highlighted;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n  @Input()\r\n  public get type(): ControlType | Nil {\r\n    return this._type;\r\n  }\r\n  public set type(type: ControlType | Nil) {\r\n    if (this._type !== type) {\r\n      this._type = type;\r\n      this._isSuccessType = type === ControlType.Success;\r\n      this._isErrorType = type === ControlType.Error;\r\n      this._isWarningType = type === ControlType.Warning;\r\n      this._changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n  @Input()\r\n  public get placeholder(): string {\r\n    return this._placeholder;\r\n  }\r\n  public set placeholder(placeholder: string) {\r\n    this._placeholder = placeholder || '';\r\n  }\r\n  @Input()\r\n  public maxLength: number | Nil = null;\r\n  public get charactersLeft(): number {\r\n    const charactersLeft: number = (this.maxLength ?? 0) - (this.valueFormControl.value || '').length;\r\n    return charactersLeft > 0 ? charactersLeft : 0;\r\n  }\r\n  public readonly valueFormControl: FormControl = new FormControl();\r\n\r\n  public constructor(\r\n    // Use any as type here to make strictMetadataEmit work without an error.\r\n    // See https://github.com/angular/angular/issues/20351.\r\n    @Inject(WINDOW) window: any,\r\n    private readonly _changeDetectorRef: ChangeDetectorRef\r\n  ) {\r\n    super();\r\n    this._window = window;\r\n\r\n    this._observer.listen(this._isDisabled, (isDisabled) => {\r\n      if (isDisabled) {\r\n        this.valueFormControl.disable();\r\n      } else {\r\n        this.valueFormControl.enable();\r\n      }\r\n    });\r\n  }\r\n\r\n  private _doResize(): void {\r\n    const height: number = this._getTextAreaHeight(this.valueElement, this.minAutoHeight);\r\n    this.valueElement.nativeElement.style.height = height + 'px';\r\n  }\r\n\r\n  private _resize(): void {\r\n    if (this.height !== TextAreaHeight.Auto) {\r\n      return;\r\n    }\r\n\r\n    if (this._isTextAreaInitialized(this.valueElement)) {\r\n      this._doResize();\r\n    } else {\r\n      // When inside *ngIf it takes more time for textarea to initialize.\r\n      this._window.setTimeout(() => {\r\n        this._doResize();\r\n      });\r\n    }\r\n  }\r\n\r\n  private _isTextAreaInitialized(textAreaElement: ElementRef): boolean {\r\n    // Check whether textarea style is available, as it's needed for calculations.\r\n    const style: CSSStyleDeclaration = this._window.getComputedStyle(textAreaElement.nativeElement, null);\r\n    return !!style.getPropertyValue('padding-top');\r\n  }\r\n\r\n  private _getTextAreaHeight(textAreaElement: ElementRef, minHeight: number): number {\r\n    // Get textarea styles.\r\n    const body: HTMLBodyElement | null = this._window.document.querySelector('body'),\r\n      style: CSSStyleDeclaration = this._window.getComputedStyle(textAreaElement.nativeElement, null),\r\n      paddingHeight: number =\r\n        parseInt(style.getPropertyValue('padding-top')) + parseInt(style.getPropertyValue('padding-bottom')),\r\n      paddingWidth: number =\r\n        parseInt(style.getPropertyValue('padding-left')) + parseInt(style.getPropertyValue('padding-right')),\r\n      borderHeight: number =\r\n        parseInt(style.getPropertyValue('border-top-width')) + parseInt(style.getPropertyValue('border-bottom-width')),\r\n      width: number = parseInt(style.getPropertyValue('width')) - paddingWidth,\r\n      lineHeight: string = style.getPropertyValue('line-height');\r\n\r\n    // IE and Firefox do not support font property, so we need to get it ourselves.\r\n    const font: string =\r\n      style.getPropertyValue('font-style') +\r\n      ' ' +\r\n      style.getPropertyValue('font-variant') +\r\n      ' ' +\r\n      style.getPropertyValue('font-weight') +\r\n      ' ' +\r\n      style.getPropertyValue('font-size') +\r\n      ' ' +\r\n      style.getPropertyValue('font-height') +\r\n      ' ' +\r\n      style.getPropertyValue('font-family');\r\n\r\n    // Prepare a temporary textarea to determine the height for a real one.\r\n    let newTextAreaElement: HTMLTextAreaElement = <HTMLTextAreaElement>this._window.document.createElement('TEXTAREA');\r\n    const newTextAreaElementId: string = '__sgTextAreaElementId__';\r\n    newTextAreaElement.setAttribute('rows', '1');\r\n    newTextAreaElement.setAttribute('id', newTextAreaElementId);\r\n    newTextAreaElement.style.font = font;\r\n    newTextAreaElement.style.width = `${width}px`;\r\n    newTextAreaElement.style.border = '0';\r\n    newTextAreaElement.style.overflow = 'hidden';\r\n    newTextAreaElement.style.padding = '0';\r\n    newTextAreaElement.style.outline = '0';\r\n    newTextAreaElement.style.resize = 'none';\r\n    newTextAreaElement.style.lineHeight = lineHeight;\r\n\r\n    // To measure sizes we need to add the textarea to DOM.\r\n    body?.insertAdjacentHTML('beforeend', newTextAreaElement.outerHTML);\r\n    newTextAreaElement = <HTMLTextAreaElement>this._window.document.getElementById(newTextAreaElementId);\r\n    newTextAreaElement.value = textAreaElement.nativeElement.value;\r\n\r\n    // Measure the height.\r\n    newTextAreaElement.style.height = 'auto';\r\n    newTextAreaElement.style.height = newTextAreaElement.scrollHeight + 'px';\r\n    let height: number = parseInt(newTextAreaElement.style.height) + paddingHeight + borderHeight;\r\n\r\n    if (height < minHeight) {\r\n      height = minHeight;\r\n    }\r\n\r\n    // Remove a temporary textarea.\r\n    body?.removeChild(newTextAreaElement);\r\n\r\n    return height;\r\n  }\r\n\r\n  private _emitChanged(value: string): void {\r\n    this.changed.emit(new ControlChangedEvent(value));\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n    // Need to resize text area initially as it might have a value.\r\n    this._resize();\r\n  }\r\n\r\n  public onChanged(): void {\r\n    const hasValueChanged: boolean = this.hasValueChanged(this.valueFormControl.value);\r\n    this.value = this.valueFormControl.value;\r\n\r\n    if (hasValueChanged) {\r\n      this._resize();\r\n      this.propagateChanged(this.value);\r\n      this.propagateTouched();\r\n      this._emitChanged(this.value);\r\n    }\r\n  }\r\n\r\n  public onBlurred(): void {\r\n    this.blurred.emit(\r\n      new ControlBlurredEvent(this.value, this._focusedValue, this.hasValueChanged(this._focusedValue))\r\n    );\r\n  }\r\n\r\n  public override focus(): void {\r\n    this.valueElement.nativeElement.focus();\r\n  }\r\n\r\n  public override blur(): void {\r\n    this.valueElement.nativeElement.blur();\r\n  }\r\n\r\n  public override writeValue(value: string): void {\r\n    // HostBindings aren't updated with OnPush change detection strategy.\r\n    this._changeDetectorRef.markForCheck();\r\n    this.valueFormControl.setValue(value);\r\n    super.writeValue(value);\r\n    this._resize();\r\n  }\r\n}\r\n","<textarea\r\n  #valueElement\r\n  class=\"sg-text-area__value\"\r\n  [attr.id]=\"id\"\r\n  [formControl]=\"valueFormControl\"\r\n  [placeholder]=\"placeholder\"\r\n  (input)=\"onChanged()\"\r\n  (focus)=\"focused.emit()\"\r\n  (blur)=\"onBlurred()\"\r\n></textarea>\r\n<div class=\"sg-text-area__counter\" *ngIf=\"maxLength\">\r\n  {{ charactersLeft }} character{{ charactersLeft === 1 ? '' : 's' }} left\r\n</div>\r\n<div class=\"sg-text-area__state-line\"></div>\r\n","import {CommonModule} from '@angular/common';\r\nimport {NgModule} from '@angular/core';\r\nimport {ReactiveFormsModule} from '@angular/forms';\r\nimport {TextAreaComponent} from './components/text-area/text-area.component';\r\n\r\nconst components: any[] = [TextAreaComponent];\r\n\r\n@NgModule({\r\n  declarations: [...components],\r\n  imports: [CommonModule, ReactiveFormsModule],\r\n  exports: [...components],\r\n})\r\nexport class TextAreaModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}